versiones ventajas tutorial para historia for desventajas descargar capacidades nosql cassandra

nosql - ventajas - Cassandra columna clave auto incremento



historia apache cassandra (3)

A tu primera pregunta:

¿Puedo hacer una clave incremental como en mysql

No, en realidad no, no es nativo de Cassandra. Cómo crear ID de incremento automático en Cassandra : puede consultar aquí para obtener más información: http://srinathsview.blogspot.ch/2012/04/generating-distributed-sequence-number.html

Su segunda pregunta es más acerca de cómo almacena y modela sus datos de Cassandra.

Echa un vistazo a la opción de búsqueda de stackoverflow. Muchas preguntas interesantes!

  1. ¿Cambiar de MySQL a Cassandra - Pros / Cons?
  2. Modelo de datos de Cassandra
  3. Cassandra / NoSQL newbie: ¿la forma correcta de modelar?
  4. Apache Cassandra esquema de diseño
  5. Fuentes de conocimiento para Apache Cassandra

Lo más importante, ¿ Cuándo NO usar Cassandra?

Estoy tratando de entender a Cassandra y cómo estructurar mis familias de columnas (FC), pero es bastante difícil ya que estoy acostumbrado a las bases de datos relacionales.

Por ejemplo, si creo users simples CF e intento insertar una nueva fila, ¿cómo puedo hacer una clave incremental como en MySQL?

Vi muchos ejemplos en los que solo pondrías el nombre de usuario en lugar de una ID única y eso tendría un poco de sentido, pero ¿y si quiero que los usuarios tengan nombres de usuario duplicados?

Además, ¿cómo puedo realizar búsquedas cuando, por lo que entiendo, cassandra no es compatible con operadores, por lo que algo como select * from users where something > something2 no funcionaría?

Y, probablemente, la pregunta más importante ¿qué pasa con la agrupación? ¿Necesitaría recuperar todos los datos y luego filtrarlos con el idioma que esté usando? Creo que eso ralentizaría mucho mi sistema.

Así que básicamente necesito una breve explicación de cómo empezar con Cassanda.


Es posible que desee revisar PlayOrm. Aunque estoy de acuerdo en que necesita salir de RDBMS pensando que a veces tener su clave principal como ID de usuario es simplemente la elección equivocada. A veces es la elección correcta (depende de sus requisitos).

PlayOrm es una mezcla de noSQL y conceptos relacionales, ya que necesita ambos, y puede hacer SQL escalable con uniones y todo. Solo necesita particionar las tablas que cree que crecerán en los billones / trillones de filas y puede consultar en esas particiones. Incluso con CQL, necesitas particionar tus tablas. ¿Por qué puedes particionar? El tiempo es bueno para algunos casos de uso. Otros pueden ser particionados por los clientes, ya que cada cliente es realmente una mini-base de datos en su clúster noSQL.

En lo que respecta a las claves, PlayOrm genera claves de "clúster" únicas que son nombre de host-uniqueidinThatHost, básicamente como un TimeUUID, excepto un poco más corto y más legible, ya que utilizamos los nombres de host en nuestro clúster de a1, a2, a3, etc.


Sus preguntas son bastante generales, pero permítanme intentarlo. Primero, necesita modelar sus datos en términos de sus consultas. Con un RDBMS, usted modela sus datos de forma normalizada y luego los optimiza para sus consultas específicas. No puedes hacer esto con Cassandra; debe escribir sus datos de la forma en que desea leerlos. A menudo esto significa escribirlo de más de una manera. En general, ayuda a deshacerse completamente de su RDBMS si desea trabajar de manera efectiva con Cassandra.

Respecto a las claves:

  • Se utilizan en Cassandra como la unidad de distribución a través del anillo. Por lo tanto, su clave se marcará y se le asignará un "propietario" en el anillo. Utilice el RandomPartitioner para garantizar una distribución uniforme

  • Suponiendo que utilice RandomPartitioner (debería), las claves no están ordenadas. Esto significa que no puede pedir un rango de claves. Sin embargo, puede solicitar una lista de claves en una sola consulta.

  • Las claves son relevantes en algunos modelos y no en otros. Si su modelo requiere consulta por clave, puede usar cualquier valor único que su aplicación tenga en cuenta (como un UUID). Algunas veces las claves son valores de centinela, como una época de Unix que representa el comienzo del día. Esto le permite entregar a Cassandra un montón de claves conocidas y luego obtener un rango de datos ordenados por columna (ver más abajo).

Con respecto a los predicados de consulta:

  • Puede obtener rangos de datos suponiendo que lo modela correctamente para responder a sus consultas.

  • Como las columnas se escriben en orden, puede consultar un rango desde la columna A a la columna n con una consulta de división (que es muy rápida). También puede utilizar columnas compuestas para abstraer un poco este mecanismo.

  • Puede usar índices secundarios en las columnas en las que tiene una cardinalidad baja, lo que le proporciona una funcionalidad de consulta por valor.

  • Puede crear sus propios índices donde los datos se ordenan de la forma que los necesita.

Respecto a la agrupación:

Supongo que te refieres a crear agregados. Si necesita sus datos en tiempo real, querrá usar algún mecanismo externo (como Storm ) para hacer un seguimiento de los datos y actualizar constantemente sus agregados relevantes en un CF. Si está creando agregados como parte de un proceso por lotes, Cassandra tiene una excelente integración con Hadoop, lo que le permite escribir trabajos de mapa / reducción en Pig, Hive o directamente en el idioma que elija.