2017-12-27 33 views

답변

2

클러스터의 모든 노드에 도달하지 않고 한 요청으로 모든 키를 가져 오는 방법은 없습니다. 그러나 대부분의 카산드라 드라이버에는 페이징 기능이 내장되어 있습니다. Java 드라이버의 예를 들면 다음과 같습니다. https://docs.datastax.com/en/developer/java-driver/3.3/manual/paging/

이렇게하면 요청할 때마다 제한된 양의 데이터 만 가져 오기 때문에 각 노드에 미치는 스트레스가 줄어 듭니다. 이후의 각 요청은 마지막 요청에서 계속됩니다. 즉, 요청한 모든 결과를 터치합니다.

편집 : How can I get the primary keys of all records in Cassandra?

+0

우리는 키만 요청할 수 있습니다. 그러나 모든 행 키 정보가 index.db에서 사용 가능하지만 memTable 및 다중 SStable은 느린 검색이 필요합니다. 그것이 내가 index.db를 얻을 수 있다고 생각한 이유입니다. 또는 cassandra가 index.db에서 직접 정보를 얻을 수있는 메커니즘을 가지고 있는데, 그것은 더 빠른 방법일까요? – Aana

+0

죄송합니다. 먼저 질문을 완전히 이해하지 못했습니다. 편집을 참조하십시오. –

0

한 가지 가능한 옵션은 모든 토큰 범위를 조회 할 수있다 : 이것은 당신이 원하는 아마. 예를 들어 , 위의 쿼리와

SELECT distinct <partn_col_name> FROM <table_name> where token(partn_col_name) >= <from_token_range> and token(partn_col_name) < <to_token_range> 

, 당신은 주어진 토큰 범위 내에서 모든 파티션 키를 사용할 수 있습니다. 실행 시간에 따라 토큰 범위를 조정하십시오.