Хорошая начальная учебная точка здесь .
Но, наконец, после того, как мне наконец-то понадобилось использовать составной компонент и попытаться написать запросы к данным, я понял несколько вещей, которые яхотел поделиться.
При поиске составных столбцов результаты будут представлять собой непрерывный блок столбцов.
Итак, если предположить, что в качестве составной из 3 строк, и мои столбцы выглядятнапример:
A:A:A
A:B:B
A:B:C
A:C:B
B:A:A
B:B:A
B:B:B
C:A:B
Для поиска от A: A: A до B: B: B, результаты будут
A:A:A
A:B:B
A:B:C
A:C:B
B:A:A
B:B:A
B:B:B
Обратите внимание на компоненты "C"?В терминах начала / конца нет компонентов "C"!что дает?Это все результаты между столбцами A: A: A и B: B: B. Составные поисковые термины не дают результаты, как если бы обработка вложенных циклов (это то, что я изначально думал), а скорее, , поскольку столбцы отсортированы, вы указываетеначальные и конечные термины для непрерывного блока столбцов .
При построении составных записей поиска необходимо указать ComponentEquality
Только последний термин долженбыть GREATER_THAN_EQUAL, все остальные должны быть равными.например для выше
Composite start = new Composite();
start.addComponent(0, "A", Composite.ComponentEquality.EQUAL);
start.addComponent(1, "A", Composite.ComponentEquality.EQUAL);
start.addComponent(2, "A", Composite.ComponentEquality.EQUAL);
Composite end = new Composite();
end.addComponent(0, "B", Composite.ComponentEquality.EQUAL);
end.addComponent(1, "B", Composite.ComponentEquality.EQUAL);
end.addComponent(2, "B", Composite.ComponentEquality.GREATER_THAN_EQUAL);
SliceQuery<String, Composite, String> sliceQuery = HFactory.createSliceQuery(keyspace, se, ce, se);
sliceQuery.setColumnFamily("CF").setKey(myKey);
ColumnSliceIterator<String, Composite, String> csIterator = new ColumnSliceIterator<String, Composite, String>(sliceQuery, start, end, false);
while (csIterator.hasNext()) ....