Come posso inserire un intervallo di colonne Composite con CQL3?Iterazione attraverso Cassandra wide row con CQL3
consideri il seguente:
CREATE TABLE Stuff (
a int,
b text,
c text,
d text,
PRIMARY KEY (a,b,c)
);
In Cassandra ciò che fa efficacemente è crea un ColumnFamily con righe interi (valori di a) e CompositeColumns composto dai valori di B e C e la stringa letterale 'd '. Ovviamente tutto questo è coperto da CQL3 in modo tale che si possa pensare a che stiamo inserendo in singole righe del database ... ma sto divagando.
e considerare la seguente serie di ingressi:
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');
Nel mio caso d'uso corrente, voglio leggere tutti i valori di roba, n
valori alla volta. Come faccio a fare questo? Ecco il mio prendere corrente utilizzando n=4
:
SELECT * FROM Stuff WHERE a=1 LIMIT 4;
E come previsto ottengo:
a | b | c | d
---+---+---+-----------
1 | A | P | whatever0
1 | A | Q | whatever1
1 | A | R | whatever2
1 | A | S | whatever3
Il problema che ho incontrato è come faccio a ottenere il prossimo 4? Qui è il mio tentativo:
SELECT * FROM Stuff WHERE a=1 AND b='A' AND c>'S' LIMIT 4;
Questo non funziona perché siamo costretti B alla parità di 'A' - che è una cosa ragionevole da fare! Ma non ho trovato nulla nella sintassi di CQL3 che mi permetta di continuare ad iterare comunque. Vorrei poter fare qualcosa di simile:
SELECT * FROM Stuff WHERE a=1 AND {b,c} > {'A','S'} LIMIT 4;
Come posso raggiungere il mio risultato desiderato. Vale a dire, come faccio a restituire CQL3:
a | b | c | d
---+---+---+-----------
1 | A | T | whatever0
1 | B | P | whatever1
1 | B | Q | whatever2
1 | B | R | whatever3
Nota per sé: [qualcun altro che ha lo stesso problema] (http://stackoverflow.com/q/16951532/348056). – JnBrymn