Vistas materializadas con Enfoque práctico en Cassandra

En este artículo, discutiremos un enfoque práctico en Cassandra. En Cassandra , la vista Materializada maneja la desnormalización del lado del servidor y entre la tabla base y la tabla de vista materializada asegura la consistencia final. entendamos con un ejemplo.

Primero definamos la tabla base de tal manera que student_marks sea la tabla base para obtener las calificaciones más altas en la clase. En esta tabla base nombre_sujeto, nombre_estudiante y calificaciones son las columnas. Crearemos una tabla de vista materializada de la tabla base y consultaremos la siguiente consulta que se proporciona a continuación.

Desde la vista materializada encuentra las notas más altas de un alumno en una clase.

Ejemplo: Tabla base – Student_marks

CREATE TABLE student_marks
(
  subject_name text, 
 student_name text,
  marks int,
  PRIMARY KEY (subject_name, marks)
); 

Producción:

Ahora, analicemos la vista materializada de la tabla base anterior en la que crearemos la vista que presenta las calificaciones más altas de un estudiante en una clase.

Para crear la vista materializada (tabla de vista materializada: everytime_high_marks), proporcionamos una declaración de selección simple y la clave principal para usar en esta vista. Especificar el ORDEN DE AGRUPACIÓN POR nos permite ordenar de manera inversa las calificaciones más altas para que podamos obtener las calificaciones más altas simplemente seleccionando el primer elemento en la partición.

Para crear una vista materializada utilizó la siguiente consulta CQL.

CREATE MATERIALIZED VIEW everytime_high_marks AS
SELECT student_name, marks, subject_name 
FROM student_marks 
WHERE student_name IS NOT NULL 
      AND marks IS NOT NULL 
      AND subject_name IS NOT NULL
PRIMARY KEY (subject_name, marks) 
WITH CLUSTERING ORDER BY (marks desc);  

Producción:

Ahora, primero insertamos datos en la tabla base y también reflejará la vista materializada. Después de insertar datos, podemos consultar desde la tabla de vista materializada y obtener el resultado deseado para la consulta CQL. para fines prácticos, estamos utilizando DataStax Studio para ejecutar todas las consultas para verificar la consulta CQL.

Para insertar datos en la tabla base se utilizó la siguiente consulta CQL.

INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Ashish', 'Cassandra DB', 95);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Rana', ' Cassandra DB ', 80);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Amit', ' Cassandra DB ', 85);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Shivang', ' Cassandra DB ',90);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Kartikey', ' Cassandra DB ',92);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Dhruv', 'Cassandra DB',93);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Rahul', 'Cassandra DB',91);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Gaurav', 'Cassandra DB',96); 

Producción:

Figura: insertar datos en la tabla base

SELECT * 
FROM everytime_high_marks 
WHERE subject_name = 'Cassandra DB'; 

Producción:

Figura – Salida MV

Ahora, podemos buscar un estudiante que tenga las calificaciones más altas en una clase para un tema determinado. podemos usar la tabla de vista materializada para obtener el resultado que esperamos. Echemos un vistazo.

SELECT student_name, marks 
FROM everytime_high_marks 
WHERE subject = 'Cassandra DB' limit 1; 

Aquí, podemos usar la columna ‘asunto’ con la cláusula WHERE porque también es la clave principal para la vista materializada.

Producción:

Como se muestra en la tabla de resultados, Gaurav tiene 96 marcas, que son las más altas de su clase.

Publicación traducida automáticamente

Artículo escrito por Ashish_rana y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *