2012-07-19 8 views
1

두 개의 문자열 Name1, Name2 및 타임 스탬프 (예 : 'Joe : Smith : 123456')로 구성된 복합 기본 키를 사용하고 있습니다. Name1 또는 Name2에 대한 동등 조건이 지정된 타임 스탬프 범위를 쿼리하고 싶습니다. SQL의 예를 들어복합 키의 일부에 대한 카산드라 보조 인덱스?

:

SELECT * FROM testcf WHERE (timestamp > 111111 AND timestamp < 222222 and Name2 = 'Brown');

내 이해에서

SELECT * FROM testcf WHERE (timestamp > 111111 AND timestamp < 222222 and Name1 = 'Charlie);

두 번째 쿼리는 그래서, 복합 키의 첫 번째 부분은 파티션 키입니다 가능하지만 첫 번째 쿼리는 Name2에 일종의 인덱스가 필요합니다.

복합 키의 구성 요소에 별도의 색인을 만들 수 있습니까? 아니면 내가 여기서 뭔가를 오해하고있는 것입니까?

답변

1

스키마를 사용하고 첫 번째 쿼리를 지원하려면 수동으로 인덱스를 만들고 유지 관리해야합니다. 이 요구 사항을 감안할 때 데이터 모델에서 선택한 질문에 의문을 제기합니다. 모델은 읽기 패턴을 염두에두고 설계해야합니다. 나는 당신이 타임 스탬프로 질의하기를 원하는 컬럼 값들도 저장하고 있다고 가정한다. 그렇다면, 아마도 다음과 같은 모델은 더 나은 서비스를 제공합니다 :

"[current_day]:Joe:Smith" { 
    123456:Field1 : value 
    123456:Field2 : value 
    123450:Field1 : value 
    123450:Field2 : value 
} 

을이 모델을 사용하면 다음 센티넬 값으로 현재 날짜 (또는 몇 가지 알려진 일)을 사용하여 이름과 성을 필터링 할 수 있습니다. 복합 열 이름을 사용하여 시간 소인별로 여러 열을 가져올 수도 있습니다.