2017-09-26 1 views
0

필드 userid, name, gender, email, status가있는 열 패밀리가 있습니다. userid, email이 기본 키입니다.cassandra에서 자주 업데이트되는 필드에 대한 인덱스 방법

유형이 tinyint 인 보조 색인을 생성했습니다.

CREATE CUSTOM INDEX users_status_idx ON custom.users (status) USING 'org.apache.cassandra.index.sasi.SASIIndex'; 

상태 값은 지속적으로 업데이트됩니다 (매일 2,000 만 레코드).

프로그램을 시작하는 동안 데이터베이스에서 데이터를 검색하는 데 0 초가 걸립니다. 시간이 길어지면 데이터를 검색하는 데 걸리는 시간이 길어집니다.

이러한 유형의 필드 (상태)를 인덱싱하는 가장 좋은 방법은 무엇입니까?

+0

* crore * 10M입니까? – xmas79

답변

1

아마도 가장 좋은 방법은 두 개 이상의 상태 (보유한 상태 수에 따라 다름)를 추가하는 것입니다. 각 상태는 이고 일반적으로을 쿼리하고이 테이블간에 사용자를 이동합니다. . 매일 상태를 변경하는 사용자 수가 매우 많은 경우 삭제 표시와 관련된 문제를 피하기 위해 영리한 파티션 키와 같이 테이블 디자인에 특별한주의를 기울여야합니다.

+0

또한 많은 양의 데이터를 추가하려는 경우 향후 스키마 변경에 대해 생각해야하며 전체 인덱스를 다시 작성해야합니다 (그리고 ull을 변경하면 발생합니다). 이는 제작 과정에서 매우 고통 스러울 것입니다. lucene 기반의 stratio (https://github.com/Stratio/cassandra-lucene-index)와 같은 맞춤 색인을 사용할 수도 있습니다. –

관련 문제