내가 이해하는 한, 카산드라 보조 인덱스는 내부 CF로 저장됩니다. 여기서 행 키는 인덱스 내의 값이며, 열은 인덱스 된 원본 CF로 되돌아가는 행키입니다.cassandra 보조 인덱스가 RandomPartitioner에서도 어휘 행 키 순서로 결과를 반환합니까?
색인 열에 원본 CF 행 키 값을 저장할 수 있습니까? 그런 다음 인덱스 행 내의 열이 정렬되기 때문에 인덱스의 특정 값에 대한 쿼리는 이론적으로 정렬 된 값 순서로 행 키를 반환 할 수 있습니다.
내 수동 색인 CF를 수동으로 유지 관리하는 경우 (필자의 수동 색인 CF에서 해당 열을 문자열로 정렬해야합니다), 내장 색인으로 CF를 수행 할 수 있는지 궁금합니다. 보조 색인에서
희망 예를 명확히 ... I 2 열의 각 (identifier
가 birth_date
의 인덱스되고, 쉽게 열을 구별 할 수있다) 5 개 행이,이 경우에는 UTF8 키의 각 행 (하나의 문자 문자열) : 나는 인덱스 쿼리를 할 때
[[email protected]] create column family users with comparator=UTF8Type
... and column_metadata=
... [{column_name: identifier, validation_class: LongType}
... ,{column_name: birth_date, validation_class: LongType, index_type: KEYS}];
86518c00-e9f7-11e0-0000-242d50cf1fde
Waiting for schema agreement...
... schemas agree across the cluster
[[email protected]] set users['a']['identifier'] = 1;
Value inserted.
[[email protected]] set users['a']['birth_date'] = 1975;
Value inserted.
[[email protected]] set users['c']['identifier'] = 3;
Value inserted.
[[email protected]] set users['c']['birth_date'] = 1975;
Value inserted.
[[email protected]] set users['b']['identifier'] = 2;
Value inserted.
[[email protected]] set users['b']['birth_date'] = 1975;
Value inserted.
[[email protected]] set users['x']['identifier'] = 5;
Value inserted.
[[email protected]] set users['x']['birth_date'] = 1975;
Value inserted.
[[email protected]] set users['f']['identifier'] = 4;
Value inserted.
[[email protected]] set users['f']['birth_date'] = 1975;
Value inserted.
지금, 난 다시 자신의 rowkeys 'MD5 해시의 역순으로 보이는에서 사용자의 행을 얻을합니다 (identifier
보고, 결과 순서는 X, B이다 , f, c, a) :
[[email protected]] get users where birth_date = 1975;
-------------------
RowKey: ff
=> (column=birth_date, value=1975, timestamp=1317231030507000)
=> (column=identifier, value=5, timestamp=1317231030504000)
-------------------
RowKey: 0b
=> (column=birth_date, value=1975, timestamp=1317231030502000)
=> (column=identifier, value=2, timestamp=1317231030500000)
-------------------
RowKey: 0f
=> (column=birth_date, value=1975, timestamp=1317231031992000)
=> (column=identifier, value=4, timestamp=1317231030509000)
-------------------
RowKey: 0c
=> (column=birth_date, value=1975, timestamp=1317231030498000)
=> (column=identifier, value=3, timestamp=1317231030494000)
-------------------
RowKey: 0a
=> (column=birth_date, value=1975, timestamp=1317231030491000)
=> (column=identifier, value=1, timestamp=1317231030476000)
5 Rows Returned.
내 질문에, 내부 색인 CF를 'a', 'b', 'c', 'f', 'x'를 열 이름으로 사용하여 인덱스를 만들 때 쿼리, 나는 어휘 rowkey 순서로 사용자의 행을 다시 얻을.
그래서 인덱스의 각 행에 대해 column-name이 정렬에 사용되는 유용한 값이고 열 값이 인덱싱되는 CF의 행 키인 열을 저장 하시겠습니까? '유용한 가치'(열 이름)가 실제로 무엇인지 명확히 할 수 있습니까? 아마도 원래의 행이 인덱싱되었지만 그 행에는 모든 종류의 열이있을 수 있습니다. 실제 예제가 도움이 될 수도 있습니다 ... – DNA
인덱스 열 이름을 원래 행 키 (md5 해시가 아님)로하고 싶습니다. 추가 된 예 - 감사합니다. – lgielgud