Как я могу потянуть в диапазон столбцов Composite с CQL3?
Рассмотрим следующее:
CREATE TABLE Stuff (
a int,
b text,
c text,
d text,
PRIMARY KEY (a,b,c)
);
В Cassandra то, что это эффективно делает, создает ColumnFamily с целыми строками (значениями a) и с CompositeColumns, состоящими из значений b и c и литеральной строки 'd'. Конечно, все это покрывается CQL3, поэтому мы подумаем, что мы вставляем в отдельные строки базы данных... но я отвлекаюсь.
И рассмотрим следующий набор входов:
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','P','whatever0');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','Q','whatever1');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','R','whatever2');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','S','whatever3');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','T','whatever4');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','P','whatever5');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','Q','whatever6');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','R','whatever7');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','S','whatever8');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','T','whatever9');
В моем текущем случае использования я хочу читать все значения Stuff, n
за раз. Как мне это сделать? Здесь мой текущий прием с использованием n=4
:
SELECT * FROM Stuff WHERE a=1 LIMIT 4;
И как и ожидалось, я получаю:
a | b | c | d
---+---+---+-----------
1 | A | P | whatever0
1 | A | Q | whatever1
1 | A | R | whatever2
1 | A | S | whatever3
Проблема, с которой я сталкиваюсь, - это как я могу получить следующие 4? Вот моя попытка:
SELECT * FROM Stuff WHERE a=1 AND b='A' AND c>'S' LIMIT 4;
Это не работает, потому что мы ограничили b равным "A" - это разумная вещь! Но я ничего не нашел в синтаксисе CQL3, который позволяет мне продолжать итерацию в любом случае. Хотел бы я сделать что-то вроде:
SELECT * FROM Stuff WHERE a=1 AND {b,c} > {'A','S'} LIMIT 4;
Как достичь желаемого результата. А именно, как мне вернуть CQL3:
a | b | c | d
---+---+---+-----------
1 | A | T | whatever0
1 | B | P | whatever1
1 | B | Q | whatever2
1 | B | R | whatever3