Zakres zapytań w Cassandrze (CQL 3.0)
Jedną z głównych części Cassandry, której nie do końca rozumiem, są zapytania o zasięg. Wiem, że Cassandra kładzie nacisk na środowisko rozproszone i skupia się na wydajności, ale prawdopodobnie z tego powodu obecnie obsługuje tylko kilka typów zapytań o zakresy, które można skutecznie ukończyć, a chciałbym wiedzieć, że: jakie typy zapytań zakresowych są obsługiwane przez Cassandra.
O ile mi wiadomo, Cassandra obsługuje następujące zapytania o zakres:
1: Zapytania zakresu na kluczu podstawowym ze słowem kluczowymTOKEN
, na przykład:
CREATE TABLE only_int (int_key int PRIMARY KEY);
...
select * from only_int where token(int_key) > 500;
2: Zapytania o zakres z jednym warunkiem równości w indeksie dodatkowym ze słowem kluczowymALLOW FILTERING
, na przykład:
CREATE TABLE example (
int_key int PRIMARY KEY,
int_non_key int,
str_2nd_idx ascii
);
CREATE INDEX so_example_str_2nd_idx ON example (str_2nd_idx);
...
select * from example where str_2nd_idx = 'hello' and int_non_key < 5 allow filtering;
Zastanawiam się jednak, czy coś przegapię i szukam kanonicznej odpowiedzi, która zawiera listę wszystkich typów zapytań zasięgowych obsługiwanych przez bieżący CQL (lub jakieś obejście, które pozwala na więcej typów zapytań zakresowych).