2010-02-06 13 views
17

Estamos buscando usar Cassandra para almacenar un flujo de información procedente de diversas fuentes.Datos de series de tiempo de Cassandra

Un problema que estamos enfrentando es la mejor manera de consultar entre dos fechas.

Por ejemplo, tendremos que recuperar un objeto entre datetime dt1 y datetime dt2.

Actualmente estamos considerando la marca de tiempo unix creada como la clave que apunta al objeto real y luego usando get_key_range para consultar para recuperar?

Obviamente, esto no funcionaría si dos elementos tienen la misma marca de tiempo.

¿Es esta la mejor manera de hacer datetime en tiendas NoSQL en general?

+2

¿Tiene curiosidad por saber cómo modeló finalmente sus datos? Estamos viendo algo similar y estoy tratando de recopilar las mejores prácticas, etc. – AlexGad

Respuesta

15

Las filas de Casandra pueden ser muy grandes, así que considere modelarlo como columnas en una fila en lugar de filas en un CF; luego puede usar las operaciones de división de columna, que son más rápidas que las divisiones de fila. Si no hay teclas "naturales" asociadas a esto, puede usar las teclas diarias u horarias como "2010/02/08 13:00".

De lo contrario, sí, utilizando consultas de rango (get_key_range está en desuso en 0.5; use get_range_slice) es su mejor opción.

+1

¿Qué tan grande es muy grande? En la diapositiva 41 de la presentación en http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo dice "Millones de columnas por fila" para 0.5. ¿Siguen siendo las columnas en una fila las mejores series de tiempo? –

+0

Sí, las columnas son el camino a seguir. – z8000

+0

La razón para usar columnas en lugar de filas ¿son particiones? Como RandomPartitioner no conserva el orden, ByteOrderedPartitioner crea zonas activas. Pero, ¿no es la partición basada en las claves de fila? Significa que si almacenamos una gran cantidad de columnas en una sola fila, ¿también sufrirá el problema del punto caliente? –

Cuestiones relacionadas