2011-03-18 6 views
6

Necesito poder realizar búsquedas en índices secundarios usando solo <,>, < =, o> =. Entiendo que Cassandra requiere al menos una cláusula de índice de igualdad porque itera sobre todos los resultados de ese índice de igualdad.¿Cómo buscar índice secundario en Cassandra sin igualdad?

¿Hay algún truco para realizar operaciones utilizando solo <,>, < = o> = (al menos conceptualmente)? ¿Es una mala idea?

Además, ¿alguien sabe si hay algún plan para cambiar esto en Cassandra?

Gracias!

Respuesta

6

Si hubiera una buena manera de hacer esto con 0.7 índices, lo habríamos mencionado en http://www.datastax.com/dev/blog/whats-new-cassandra-07-secondary-indexes en lugar de decir "necesita una expresión de igualdad". No hay un código de trucos secreto doble.

Una alternativa es usar ByteOrderedPartitioner (que le permite hacer> = consultas en la clave de fila). Otro puede ser crear una vista materializada en algún subconjunto de sus datos en el momento de la escritura. Eso es suponiendo que tenga suficientes filas que simplemente hacer un escaneo secuencial no ordenado es demasiado lento.

Los índices de mapa de bits en 0.8 (https://issues.apache.org/jira/browse/CASSANDRA-1472) admitirán operaciones de desigualdad en los índices.

+0

ver también https://issues.apache.org/jira/browse/CASSANDRA-1339. Tenga en cuenta también que a partir de este escrito, 0.8 ha sido lanzado y la función aún no está presente, y en el rastreador de problemas, el último comentario a 1472 fue ~ hace 3 meses y el último parche publicado fue ~ hace 9 meses. (No soy un desarrollador de Cassandra y jbellis es, soy solo un usuario potencial que intenta estimar cuándo esta función estará disponible) – bshanks

Cuestiones relacionadas