Cassandra API equivalente de “SELECT ... FROM ... donde id IN ( '...' '...' '...');”
Pregunta
Suponga que el siguiente conjunto de datos:
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
Para obtener el siguiente conjunto de resultados ..
id age phone
== === =====
alfred 30 3281283
joe 29 1283881
molly 20 1823881
.. utilizando uno SQL emitiría ..
SELECT id, age, phone FROM dataset WHERE id IN ('alfred', 'joe', 'molly');
¿Cuál es el correspondiente llamada a la API Cassandra que produciría el mismo resultado en un solo comando?
Solución
CQL (lenguaje de consulta SQL-como de Cassandra) ahora es compatible con lo siguiente:
SELECT ... WHERE keyalias IN ('key1', 'key2', 'key3', ...);
http://cassandra.apache.org/doc/cql/CQL. html # Filteringrows
Otros consejos
lo haría un multiget_slice w / llaves de Alfred, Joe, y Molly, y COLUMN_NAMES SlicePredicate de identificación, edad, teléfono
A equivalente Cassandra podría ser modelada como se describe a continuación:
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...
}
donde "Alfred" su clave (fila) es la fila y tiene tres columnas; edad, ciudad y teléfono. (Se omite el campo de marca de tiempo (por simplicidad) para las tres columnas)