2012-07-17 3 views
2

다음은 복합 열에 대한 소개를 제공하는 다음 link이며 특히 ComponentEquality.EQUAL 및 ComponentEquality.GREATER_THAN_EQUAL 사용과 관련하여 몇 가지 의문점이있었습니다. 다음 예에서헥터 구성 요소 평등

는 :

Composite start = compositeFrom(startArg, Composite.ComponentEquality.EQUAL); 
Composite end = compositeFrom(startArg, Composite.ComponentEquality.GREATER_THAN_EQUAL); 
start.addComponent(1,"CA",Composite.ComponentEquality.EQUAL); 
end.addComponent(1,"CA",Composite.ComponentEquality.GREATER_THAN_EQUAL); 

나는 마지막 구성 요소는 평등의 구성 요소로 GREATER_THAN_EQUAL 필요한 이유 이해할 수 없어요. 예제를 사용한 설명이 정말 도움이 될 것입니다.

답변

3

cassandra에서 슬라이스 쿼리가 작동하는 방식은 시작 열과 끝 열 (limit/isDescending 플래그도 지정하지만 여기서는 관계가 없습니다)을 지정하는 것입니다. 사용 사례를 쿼리하는 한 가지 방법은 US : CA로 시작하는 첫 번째 복합 열의 전체 (복합) 열 이름과 US : CA로 시작하는 마지막 복합 열을 전달하는 것입니다. 그러나, 당신은 이것을 미리 모릅니다.

슬라이스 쿼리의 장점은 시작 및 끝 열이 실제 열 이름 일 필요가 없다는 것입니다. 열 이름은 항상 정렬되므로 슬라이스 쿼리의 시작 열이없는 경우 cassandra는 제공된 시작 열보다 큰 다음 열에서 시작합니다.

따라서 쿼리의 시작 열과 끝 열을 구성해야합니다. 링크에서 설명한 것처럼 복합 객체에는 e-o-c 비트가 있습니다. 이 비트는 슬라이스 쿼리에 사용됩니다.

복합 열에는 여러 구성 요소가 있습니다. 각 구성 요소에는 e-o-c 비트가 있습니다. 구성 요소가이 비트를 Equal로 설정하면 Cassandra는 다음 구성 요소를 살펴 봅니다. 구성 요소가이 비트를 GREATER_THAN_EQUAL로 설정하면 Cassandra는 찾고있는 구성 요소와 다른 구성 요소를 찾을 때까지 열을 계속 살펴볼 것입니다.

이제 링크의 예를 살펴 보겠습니다. 우리는 세 가지 구성 요소가있는 복합 비교자를 가진 열 패밀리에서 조각 쿼리를 수행하려고합니다. 첫 번째 구성 요소가 US이고 두 번째 구성 요소가 CA 인 모든 열을 가져 오려고합니다.

시작 열과 끝 열을 만들어야합니다. 시작 열은 두 개의 구성 요소 (EQUAL은 모두 e-o-c)를 가지며 끝 열은 첫 번째 구성 요소를 EQUAL로, 두 번째 구성 요소를 GREATER_THAN_EQUAL로 갖습니다. 이것은 첫 번째 구성 요소가 US이고 두 번째 구성 요소가 CA 인 모든 열과 일치합니다.

이 비트를 EQUAL로 설정하면 슬라이스 쿼리가 시작 구성 요소와 일치하는 첫 번째 열이 'CA'와 일치합니다. 이것은 괜찮지 만 Cassandra는 슬라이스 쿼리의 마지막 열을 알아야합니다. 이를 위해 사용자가 제공 한 최종 컴포지트가 표시됩니다.

희망이 도움이되었습니다.

편집 : 설명을 더 잘 보이게하려면

+0

위대한 설명. 고맙습니다! –