ventajas tutorial historia funciona desventajas como caracteristicas capacidades database count cassandra rowcount

database - tutorial - Recuento de filas de una familia de columnas en Cassandra



cassandra windows (6)

Encontré un excelente artículo sobre esto aquí .. http://www.planetcassandra.org/blog/post/counting-keys-in-cassandra

seleccionar conteo (*) desde el límite cf 1000000

La instrucción anterior se puede usar si tenemos un límite superior aproximado conocido de antemano. Lo encontré útil para mi caso.

¿Hay alguna manera de obtener un recuento de filas (recuento de claves) de una sola familia de columnas en Cassandra? get_count solo se puede usar para obtener el conteo de columnas.

Por ejemplo, si tengo una familia de columnas que contiene usuarios y quiero obtener la cantidad de usuarios. ¿Cómo podría hacerlo? Cada usuario es su propia fila.


He estado recibiendo los conteos de esta manera después de convertir los datos en un hash en PHP.


Si está trabajando en un gran conjunto de datos y está bien con una aproximación bastante buena, le recomiendo usar el comando:

nodetool --host <hostname> cfstats

Esto arrojará una lista para cada familia de columnas que se vea así:

Column Family: widgets SSTable count: 11 Space used (live): 4295810363 Space used (total): 4295810363 Number of Keys (estimate): 9709824 Memtable Columns Count: 99008 Memtable Data Size: 150297312 Memtable Switch Count: 434 Read Count: 9716802 Read Latency: 0.036 ms. Write Count: 9716806 Write Latency: 0.024 ms. Pending Tasks: 0 Bloom Filter False Postives: 10428 Bloom Filter False Ratio: 1.00000 Bloom Filter Space Used: 18216448 Compacted row minimum size: 771 Compacted row maximum size: 263210 Compacted row mean size: 1634

La fila "Número de claves (estimación)" es una buena estimación en todo el clúster y el rendimiento es mucho más rápido que el conteo explícito.


Si está utilizando un particionador que preserva la orden, puede hacerlo con get_range_slice o get_key_range.

Si no es así, deberá almacenar sus identificadores de usuario en una fila especial.


Siempre hay un mapa / reducir pero eso es evidente. Si tienes eso con colmena o cerdo, puedes hacerlo para cualquier tabla del clúster, aunque no estoy seguro de que los tracktrackers conozcan la localidad de cassandra, por lo que puede tener que transmitir toda la tabla a través de la red para que tengas rastreadores de tareas en cassandra nodos pero los datos que reciben pueden ser de otro nodo de cassandra :(. Me encantaría saber si alguien lo sabe con certeza.

NOTA: estamos configurando map / reduce en cassandra principalmente porque si queremos un índice más adelante, podemos asignar / reducir uno en cassandra.


[Editar: Esta respuesta está desactualizada a partir de Cassandra 0.8.1 - consulte la entrada de Contadores en la Wiki de Cassandra para conocer la forma correcta de manejar columnas de mostrador en Cassandra.]

Soy nuevo en Cassandra, pero me he metido mucho con App Engine de Google. Si no se presenta ninguna otra solución, puede considerar mantener un contador separado en una plataforma que admita operaciones de incremento atómico como memcached. Sé que Cassandra está trabajando en la funcionalidad de incremento / disminución del contador atómico, pero aún no está lista para el horario de máxima audiencia.

Solo puedo publicar un hipervínculo porque soy nuevo, así que para avanzar en el soporte del contador, vea el enlace en mi comentario a continuación.

Tenga en cuenta que este hilo sugiere ZooKeeper, memcached y redis como posibles soluciones. Mi preferencia personal sería memcached.

http://www.mail-archive.com/[email protected]/msg03965.html