2015-01-20 2 views
0

카산드라에서 유효한 /에서 데이터 필터링을 구현하는 가장 좋은 방법은 무엇인지 알아 내려고합니다.카산드라 - valid_from/valid_to 쿼리

특정 시간대에만 유효하고 항상 정의 된 레코드가있는 테이블이 있어야합니다. 이러한 기록은 3 개월을 초과하여 유효하지 않습니다.

나는이 (더 적은 OFC)과 같은 구조를 가지고 싶다 :

사용자 ID BIGINT, validFrom 타임 스탬프를 (또는 어쩌면 같은 열로 분할 : 그 도움이되는지 등 FROM_MONTH FROM_YEAR) validTo 타임 스탬프 (또는 위와 같이) someCollection set

모든 쿼리는 userId, validFrom, validTo에 의해 수행됩니다.

Cassandra (둘 다 PK 및 클러스터링 키)에서 쿼리하는 한계를 알고 있지만 CQL에서 사용할 수있는 트릭이나 영리한 사용법이 누락되었습니다.

도움을 주셨습니다.

답변

1

validTo에 의해 데이터를 선택하고 validTo로 데이터를 TTL하면 앱에서 필터링해야하는 레코드 수가 너무 커지지 않도록 할 수 있습니다. 그러나 사용자 당 레코드 수에 따라 삭제 표시가 많을 수 있습니다.

+0

아주 좋은 생각 같습니다. TTL은 삽입 시간과 유효 기간을 기준으로 계산해야합니다. TTL이 초 단위이기 때문에 충분히 정밀하게 만들 수 있는지 확인해야합니다. –

+1

묘비가 그렇게 많지는 않습니다. 어쩌면 몇 백만/월. 2.1.x에서 DateTiered Compaction Strategy를 사용하면 큰 문제는 아닙니다. –

+0

나는 또한 valid_to (search_date <= valid_to)에 의한 필터링에 대해서 생각하고 있었다. 물론 필터링의 일부는 메모리에서 수행되어야하지만 너무 많은 행이 있어서는 안됩니다. –