Astyanax는 AnnotatedCompositeSerializer
을 통해 카산드라의 복합 열을 지원합니다. 내가 Astyanax's documentation에서 적응이 예와 유사한 3 필드 복합 열 이름과 열 가족,가 (열이 실제로 sessionId
및 token
을하지를 그들이 인수를 위해서 척) :Astyanax로 여러 개의 복합 열 접두사를 쿼리하는 방법은 무엇입니까?
// Annotated composite class
public class SessionEvent {
@Component(ordinal=0) UUID sessionId;
@Component(ordinal=1) UUID token;
@Component(ordinal=2) UUID timestamp;
public SessionEvent() { }
}
static AnnotatedCompositeSerializer<SessionEvent> eventSerializer
= new AnnotatedCompositeSerializer<>(SessionEvent.class);
static ColumnFamily<String, SessionEvent> CF_SESSION_EVENTS
= new ColumnFamily<>("SessionEvents",
StringSerializer.get(), eventSerializer);
// Querying cassandra for a column slice on one prefix, but we want two!
OperationResult<ColumnList<SessionEvent>> result = keyspace.prepareQuery(CF_SESSION_EVENTS)
.getKey("UserId1")
.withColumnRange(eventSerializer.buildRange()
.withPrefix("SessionId1")
.build())
.execute();
문제는 : 두 개의 복합 열 (이 경우 모두 sessionId
및 token
)이있는 열을 모두 하나의 접두어가 아닌 모든 시간 소인에 대해 쿼리하려고합니다. 이것은 분명히 가능하고 CQL3로하기 쉽습니다. 그러나 Cassandra 1.0.x에 머물렀고 Astyanax가 (withPrefix(UUID)
을 두 번 호출하거나 복합 데이터 구조를 전달하여) 받아 들일 수있는 방법을 찾을 수 없습니다.
Astyanax에서이를 수행 할 수있는 방법이 있습니까? 어떻게 든 기본 RangeBuilder
을 사용하고 수동으로 시작과 끝을 직렬화 할 수 있습니까?
내 실수. 질문의 핵심 부분을 놓쳤습니다. 시작 및 종료 타임 스탬프를 모르고 있으며 모든 것을 얻고 싶습니다. –
그런 다음 startTime과 endTime을 null로 설정하십시오. 이를 반영하기 위해 위 코드를 수정했습니다. – pscuderi
그것은 나를 위해 일하지 않는 것 같습니다; 나는 기둥을 돌려받지 않는다. : ( –