Modelo de datos en Cassandra - ¿Cómo modelar los datos en Cassandra?

Tabla de contenido:

Anonim

Introducción al modelo de datos en Cassandra

Apache Cassandra se ha convertido en una de las bases de datos NoSQL más potentes. Es la elección correcta cuando desea alta disponibilidad y escalabilidad sin comprometer el rendimiento, especialmente para aplicaciones que no pueden permitirse perder datos. En este tema, vamos a aprender sobre el modelo de datos en Cassandra.

Un hecho rápido, los ingenieros de Cassandra se encuentran hoy entre los profesionales de tecnología mejor pagados. Empresas como Netflix, Instagram y Apple usan Cassandra para proporcionar una experiencia de cliente altamente individualizada. Para obtener el rendimiento correcto, debe diseñar cuidadosamente el esquema específico para el problema empresarial. En este artículo, veremos el modelo de datos de Cassandra, que es significativamente diferente de lo que vemos en RDBMS.

Reglas del modelo de datos de Cassandra

En palabras simples, el modelo de datos es la estructura lógica de una base de datos. Describe cómo se almacenan y acceden los datos, y las relaciones entre los diferentes tipos de datos.

Elegir el modelo de datos correcto puede ser la parte más difícil de usar una base de datos NoSQL como Cassandra. Como mencioné anteriormente, el modelado de datos en Cassandra es diferente de lo que vemos en un RDBMS.

La clave de partición y la clave de agrupamiento son los términos que cualquier persona que trate con Cassandra debe tener en cuenta. Antes de sumergirnos en las reglas básicas del modelado de datos en Cassandra, veamos rápidamente qué significan estos términos,

Dividir

Cassandra es una base de datos distribuida en la que los datos se dividen y almacenan en diferentes nodos en un clúster. Los datos se dividen mediante el uso de una clave de partición, que puede ser uno o más campos de datos. Esta clave de partición se utiliza para crear un mecanismo de hash para distribuir los datos de manera uniforme en todos los nodos.

Racimo

Un clúster es una colección de nodos que representan una única base de datos lógica. Una clave de agrupación se compone de uno o más campos que se utilizan para agrupar datos en una partición.

En esta tabla de restaurantes, los datos se dividirán usando country_code, state_name y city_name, y dentro de esa partición los datos se agruparán y ordenarán en función de opening_data y restaurant_name.

Ahora, echemos un vistazo a las dos reglas para el modelado de datos que deben tenerse en cuenta.

  • Los datos se distribuyen de manera uniforme en todo el clúster
  • Leer de la menor cantidad de particiones posible

Veamos qué intentan transmitir estas reglas

  • Sabemos lo que es un grupo correcto? Un clúster consta de múltiples nodos. Queremos particionar los datos entre estos nodos de modo que cada nodo tenga aproximadamente la misma cantidad de datos. Como sabemos, los datos se dividen en diferentes nodos utilizando un hash de la clave de partición (que es la primera clave de la Clave primaria), por lo que en resumen: "Debe elegir una buena Clave primaria".
  • Cada partición reside en un nodo diferente, por lo que cuando recupera datos, desea asegurarse de que los datos se recuperen de la menor cantidad posible de particiones. Si su consulta requiere datos de diferentes particiones, se emitirá un comando para separar los nodos para obtener esos datos, que serán generales y provocarán latencia.

La clave para un modelo de datos eficiente sería un equilibrio entre estas dos reglas.

Manejar relaciones en Cassandra

Una cosa a tener en cuenta es que el modelado de datos en Cassandra se realiza utilizando un enfoque impulsado por consultas, a diferencia de RDBMS, donde primero identifica entidades, crea tablas y luego forma consultas utilizando JOINS para recuperar datos.

Para ponerlo en palabras simples, no modelamos alrededor de relaciones u objetos, modelamos alrededor de consultas.

1. Relación uno a uno

Considere en una universidad que un estudiante puede registrarse para un solo seminario. Esta es una relación uno a uno. Manteniendo la regla # 1 pensamos en las consultas que queremos. Quiero buscar el seminario al que asiste un estudiante. En este caso, haremos solo una tabla. La tabla debe contener los detalles del alumno y los detalles del seminario.

2. Relación de uno a muchos

En el mismo contexto, ¿qué pasaría si quisiera buscar a todos los estudiantes que asisten a un seminario? En lugar de usar la misma tabla e iterar sobre cada fila para obtener el nombre del alumno para ese seminario en particular, puedo hacer otra tabla que particione los datos por nombre del seminario. Entonces, cuando publico la consulta, solo llega a un nodo en lugar de ir a todos los nodos para obtener el nombre del seminario.

3. Relación de muchos a muchos

Ahora, consideremos que un estudiante puede asistir a muchos seminarios, y muchos estudiantes pueden asistir a un seminario. Aquí tenemos una relación de muchos a muchos. En este caso, puede explotar las dos tablas anteriores para realizar consultas sin tener que sobrecargar hacer consultas complejas utilizando combinaciones que normalmente haría en RDBMS.

Importancia de Cassandra

Con la rápida expansión de los datos digitales, se vuelve más importante contar con una base de datos altamente escalable y tolerante a fallas. Permítanme enumerar algunos puntos sobre por qué deberían usar Cassandra

  • Iluminación de operaciones de lectura rápida: discutimos cómo modelar sus datos de la manera correcta puede optimizar las operaciones de lectura a gran escala.
  • Tolerante a fallas: los datos se replican en todos los nodos, por lo que incluso si un nodo se cae, sus datos están seguros.
  • Ajuste personalizado: puede configurar Cassandra para que funcione de acuerdo con su carga de trabajo. Si escribe una gran cantidad de datos, como el registro, puede modificarlos para manejar sistemas de escritura pesada. Hay varias otras opciones de ajuste disponibles.
  • Manejo de grandes volúmenes de datos: según el tamaño del clúster, Cassandra puede manejar grandes volúmenes de datos.

¿Cómo modelar los datos en Cassandra?

Un buen modelado de datos sigue estos pasos

  • Conceptualice las consultas requeridas por su aplicación
  • Crear tablas para satisfacer esas consultas

Antes de aplicar estas reglas, una cosa a tener en cuenta es: "Nos centramos en optimizar nuestras operaciones de lectura, incluso si requiere duplicación de datos". Podemos tener muchas tablas que pueden contener datos casi similares.

Ahora, considere que queremos una base de datos que almacene información sobre restaurantes. Pongamos una restricción de que los nombres de los restaurantes deben ser únicos.

La tabla a continuación se puede usar cuando queremos buscar según el nombre del restaurante:

Ahora, si queremos buscar los restaurantes para una ubicación en particular, escribiríamos una consulta que recorra todas las filas y recupere los nombres de los restaurantes.

En cambio, teniendo en cuenta la regla n. ° 2, podemos crear fácilmente otra tabla que satisfaga nuestras necesidades.

Ahora nuestros datos se dividirán de manera que un nodo en el clúster tendrá restaurantes para una ubicación en particular. Esto optimizará nuestras consultas de lectura, ya que la búsqueda de consultas solo se realizará en un nodo con filas mucho menores que la primera tabla que creamos.

¿Qué pasaría si quisiéramos buscar restaurantes en una ciudad en particular? Podemos hacer otra tabla en lugar de iterar a través de todas las filas en una sola partición de la tabla anterior.

Conclusión

En este artículo, he cubierto algunas de las mejores prácticas que puede seguir para abordar el modelado de datos en Cassandra. Si comprende estos conceptos y puede reconocer eficientemente el tipo de consultas que necesita su aplicación, puede diseñar un modelo de datos excelente para obtener un alto rendimiento de su base de datos.

Artículos recomendados

Esta es una guía para el modelo de datos en Cassandra. Aquí discutimos cómo modelar nuestros datos en Cassandra junto con las reglas y la importancia de los modelos de datos de Cassandra. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. ¿Qué es el modelado de datos?
  2. Modelos de datos en DBMS
  3. Preguntas de la entrevista de modelado de datos
  4. Cassandra Data Modeling