2012-07-21 1 views
2

나는 카산드라를 사용할 때 카산드라 읽기의 성능 병목 현상에 직면 해 있습니다.성능이 더 좋고, 색인이 붙은 십진법 쿼리 또는 hector의 범위 법칙 쿼리입니까?

거대한 행 키인 내 데이터를 읽는 두 가지 방법이 있습니다. 첫 번째는 인덱스 슬라이스 query api로 인덱스와 쿼리를 사용하는 것입니다. 두 번째는 행이 시퀀스이기 때문에 rangeslicequery API를 사용합니다.

인덱스를 사용할 때 항상 timeoutexception을 발생시킵니다. 그렇다면 rangelicequery가 성능이 더 좋은지 궁금합니다.

200k 행 및 3m 열이있는 cf입니다. 20k 개의 행을 검색하는 쿼리입니다.

의 핵심 캐시가 30000

답변

2

나는이 경우에 당신은 아마 range_slice_query를 사용하여 더 나을거야라고 생각합니다. 각 인덱스 항목에 대해 임의의 읽기를 수행하는 대신 데이터를 디스크에서 스트리밍합니다 (get_indexed_slices가 작동하는 방식이라고 생각합니다). 유일한 방법은 둘 다 시도하고 비교하는 것입니다.

시간 초과를 중지하려면 각 쿼리와 함께 반환되는 행 수를 줄이거 나 ("카운트"http://wiki.apache.org/cassandra/API/) 또는 hector와 함께 사용중인 제한 시간 길이를 늘리십시오.

당신이하려는 일을하기 위해 hadoop을 사용 해본 적이 있습니까? 20k 행은 상당히 많으므로 작업에 더 적합 할 것입니다. 사용할 수있는 cassandra 소스 코드와 함께 제공된 InputFormat이 있습니다. 아래 범위 쿼리를 사용하여 토큰의 각 범위를 쿼리 할 노드를 미리 확인합니다. 이것은 아마도 쿼리를 수행하는 가장 빠른 방법 일 것입니다. 그 문서는 http://wiki.apache.org/cassandra/HadoopSupport입니다.

관련 문제