2012-10-01 1 views
0

저는 Hector를 사용하여 Cassandra 데이터베이스에 액세스하는 응용 프로그램을 작성하고 있습니다. 하나의 열만 쿼리하면되고 여러 번 열을 한꺼번에 쿼리해야하는 경우가 있습니다. SliceQuery를 사용하여 열 이름 배열을 가져와 열 목록을 반환하는 메서드를 작성하는 것은 코드 측면에서 가장 간단하지만 ColumnQuery를 사용하는 것과 비교하여 한 열에 대해 SliceQuery를 사용하는 데 큰 단점이 있는지 궁금합니다.Hector API SliceQuery 대 ColumnQuery 성능

간단히 말해 하나의 열에 대해 SliceQuery보다 ColumnQuery를 사용하면 성능이 향상되어 추가적으로 하나의 열로 된 사례를 별도로 처리 할 가치가 있습니까? 각각 ("GET"또는 "get_slice"- 헥터의 코드를보고

답변

2

는 ColumnQuery (ThriftColumnQuery.java)와 SliceQuery (ThriftSliceQuery.java)를 사용 사이의 차이는 전송되는 다른 중고품 명령입니다).

나는 그 작업의 각 카산드라의 서버에서 구현하는 방법의 정확한 문서를 찾을 수 없습니다,하지만 난이 "수"있다는 인상을 가지고 카산드라의 소스와 CassandraServer.java을 검토 한 후 빠른 살펴 보았다 SliceByNamesReadCommand 인스턴스가 생성 및 실행하는 "GET"요청에 대한

  • : 작업은 성능 향상을 위해 하나의 열을 쿼리 할 때보다 고객의 편의를 위해이 더 많은 것이다.
  • "get_slice"요청 (Hector의 setColumnNames 메서드를 사용하고 있고 setRange이 아니라고 가정 할 경우)은 원하는 각 열에 대해 SliceByNamesReadCommand 인스턴스가 만들어지고 실행됩니다 (행은 한 번만 읽혀집니다).

결론적으로 볼 때, 여러 열을 처리하기위한 일부 컬렉션을 만드는 데 드는 오버 헤드가 그다지 많지 않습니다. 그러나 여전히 걱정이된다면, DAO에서 Hector의 사용을 포장 할 때 두 가지 경우를 다르게 처리하는 것이 너무 어렵지 않아야한다고 생각합니다.

희망을 도왔습니다.