2016-10-29 2 views
0

커다란 데이터가있는 3 노드 데이터 저장소 cassandra (커뮤니티) 클러스터가 있습니다. 나는 그 안에 3-50 억 개의 레코드가 들어있는 테이블이 거의 없다. 해당 테이블에서 90 일 이상 지난 데이터를 삭제하려고합니다.카산드라 제한 시간 초과 쿼리 선택

문제는 어떻게 시간 제한없이 실행되는 선택 쿼리를 실행합니까입니다. 나는 현재 쿼리 아래 실행하고

NOW = $ (날짜 -d "-3 월"+ "% Y- % M- % D") minute_ts가 < '$ 지금'LIMIT 100000 허용 TABLE_NAME에서
선택 day_ts 필터링;

내가 선택한 쿼리 결과를 제한하더라도 전체 3-5 억 레코드를 구문 분석 한 다음 데이터를 필터링합니다.

효과적인 방법으로 제안 할 수있는 방법을 제안하십시오.

답변

0

이것은 의도적으로 설계된 것입니다. "ALLOW FILTERING"질의는 확장되지 않습니다. 쿼리를 만족 시키려면 데이터 모델을 변경해야합니다. 이 모델을 상속받은 경우 전체 데이터 세트를 읽고 다른 모델로 다시 저장해야합니다. 탈출구가 없습니다 ...

+0

@ xmas79와 동의하면 holw dataserver를 필터링하여 다른 모델로 전송해야합니다. 새 모델에서 TTL (Time to Live)이 제대로 설정되어 있으므로 나중에이 문제가 발생하지 않도록하십시오 –

+0

여기에 제 테이블 구조가 있습니다. –

+0

CLUSTERING ORDER BY (log_datemin ASC, id ASC) 및 캐싱 = '{ "키": "ALL", "rows_per_partition")와 함께 CREATE TABLE table_name (srcip inet, log_datemin timestamp, id uuid, PRIMARY KEY (srcip, log_datemin, id) : "NONE"} 'AND AND ='AND default_time_to_live = 0 AND gc_grace_seconds = 864000 AND read_repair_chance = 0.0 AND speculative_retry = '99 .0PERCENTILE '; –