Cassandra API equivalente di “SELECT ... FROM ... WHERE id IN ( '...', '...', '...');”
Domanda
Si supponga il seguente set di dati:
id age city phone
== === ==== =====
alfred 30 london 3281283
jeff 43 sydney 2342734
joe 29 tokyo 1283881
kelly 54 new york 2394929
molly 20 london 1823881
rob 39 sydney 4928381
Per ottenere il set di risultati seguente ..
id age phone
== === =====
alfred 30 3281283
joe 29 1283881
molly 20 1823881
.. utilizzando SQL uno avrebbe emesso ..
SELECT id, age, phone FROM dataset WHERE id IN ('alfred', 'joe', 'molly');
Qual è la chiamata API Cassandra corrispondente che darebbe lo stesso risultato impostato in un solo comando?
Soluzione
CQL (SQL-like linguaggio di query di Cassandra) supporta ora questa:
SELECT ... WHERE keyalias IN ('key1', 'key2', 'key3', ...);
http://cassandra.apache.org/doc/cql/CQL. html # Filteringrows
Altri suggerimenti
si farebbe un multiget_slice w / chiavi di Alfred, Joe, e Molly, e COLUMN_NAMES SlicePredicate di id, età, telefono
A Cassandra equivalente potrebbe essere modellato come descritto di seguito:
Users = { //this is a ColumnFamily
"alfred": { //this is the key to this Row inside the CF
"age":"30",
"city":"london",
"phone":"3281283"
}, // end row
// more rows...
}
dove "Alfred" è la chiave il vostro (riga) e la riga ha tre colonne; l'età, la città e il telefono. (Omesso il campo timestamp (per semplicità) per le tre colonne)