Vistas materializadas en Cassandra

En este artículo discutiremos la descripción general de las vistas materializadas y su importancia. En Cassandra, las vistas materializadas juegan un papel importante, de modo que las vistas materializadas son adecuadas para datos de alta cardinalidad. También discutimos cómo podemos crear, modificar y descartar vistas materializadas. vamos a discutir uno por uno. 

Vistas materializadas: 
la vista materializada funciona como una tabla base y se define como una consulta CQL que se puede consultar como una tabla base. La vista materializada es muy importante para la desnormalización de los datos en Cassandra Query Language y también es buena para una alta cardinalidad y un alto rendimiento. Entendamos con un ejemplo. 

Ahora, primero vamos a definir la tabla base (tabla base – Información_del_usuario) y Usuario1 es el nombre del espacio de claves. User_name es la clave de partición mediante la cual obtendremos el resultado ordenado. Se usará la misma clave principal para la vista materializada y se puede agregar otra columna más en la vista materializada para la clave principal para obtener la información del usuario debido a la restricción para definir la clave principal en la vista materializada. User_name, User_email, User_password y User_address son las columnas de la tabla base. echemos un vistazo. 

Para crear una tabla para la información del usuario, utilizó la siguiente consulta CQL.  

CREATE TABLE User1.User_information (          
User_name text PRIMARY KEY,
User_email text,
User_password text,
User_address text
);

Ahora, consideremos que si queremos encontrar la información del usuario con la ayuda del correo electrónico del usuario, debemos crear una nueva tabla y al definir el correo electrónico como clave de partición podemos obtener la información del usuario, pero tenemos otra opción mejor que se llama vista materializada

entonces, ahora vamos a crear Materializado de la tabla anterior, que también se llama tabla base. Para crear una vista materializada, utilizó la siguiente consulta CQL. 

Sintaxis: creación de una vista materializada:  

CREATE MATERIALIZED VIEW [IF NOT EXISTS] [keyspace_name.] view_name
AS SELECT column_list
FROM [keyspace_name.] base_table_name
WHERE column_name IS NOT NULL 
      [AND column_name IS NOT NULL ...]  
      [AND relation...] 
PRIMARY KEY ( column_list )
[WITH [table_properties]  
[AND CLUSTERING ORDER BY (cluster_column_name order_option )]]

Fuente de sintaxis 

Ejemplo:  

CREATE MATERIALIZED VIEW User1.Users_by_User_email AS
SELECT User_email, User_password, User_address
FROM User_information
WHERE User_name IS NOT NULL AND User_email IS NOT NULL
PRIMARY KEY (User_email, User_name ); 

Para realizar una operación de lectura de datos de la vista materializada, se utilizó la siguiente consulta CQL.  

SELECT * 
FROM Users_by_User_email 
WHERE User_email = ? ;

En vista materializada, hay una restricción siguiente que debe seguir.  

  1. En la vista materializada, lo que sea que la columna principal en la tabla base deba contener en la tabla de vista materializada que asegure que cada fila de MV (vista materializada) se corresponda con la tabla base.
  2. En la vista materializada solo podemos agregar una columna más que no sea una columna principal en la tabla base.

Pongamos un ejemplo para entender el concepto.  

CREATE TABLE base_table
(
Key1 int,
Col1 int,
Col2 int,
Col3 int,
Col4 text,
PRIMARY KEY (key1, Col1, Col2)
); 

Se permite la vista materializada de la tabla base dada arriba . Echemos un vistazo. 

Case-1:
CREATE MATERIALIZED VIEW test_MV1 AS 
SELECT * 
FROM test_MV1 
WHERE key1 IS NOT NULL 
      AND Col1 IS NOT NULL 
      AND Col2 IS NOT NULL 
PRIMARY KEY (Col1, key1, Col2);

Case-2:
CREATE MATERIALIZED VIEW test_MV2 AS 
SELECT * 
FROM test_MV2 
WHERE key1 IS NOT NULL 
      AND Col1 IS NOT NULL 
      AND Col2 IS NOT NULL 
      AND Col3 IS NOT NULL 
PRIMARY KEY (Col3, key1, Col1, Col2); 

NO se permite la vista materializada de la tabla base anterior . Echemos un vistazo. 

Case-1:
CREATE MATERIALIZED VIEW test_MV1 AS 
SELECT * 
FROM test_MV2 
WHERE key1 IS NOT NULL 
      AND Col1 IS NOT NULL 
      AND Col2 IS NOT NULL 
      AND Col3 IS NOT NULL 
PRIMARY KEY (Col3, Col4, key1, Col1, Col2);  
 // * ERROR : it will give an error that Col3 
         and Col4 is not primary key in base table.

Case-2:
CREATE MATERIALIZED VIEW test_MV1 AS 
SELECT * 
FROM test_MV2 
WHERE Col1 IS NOT NULL 
      AND Col2 IS NOT NULL 
PRIMARY KEY (Col1, Col2);
// * ERROR : it will give an error that key1 is primary key 
    in base table that must contain in materialized view. 

Modificar la vista materializada: 
a continuación se muestra la consulta CQL para modificar las propiedades básicas de la vista materializada mediante el comando ALTER. echemos un vistazo. 

Sintaxis:  

ALTER MATERIALIZED VIEW [keyspace_name.] view_name 
[WITH table_options] 

Eliminar vista materializada: 
podemos eliminar la tabla de vista materializada mediante el comando DROP y no habrá ningún efecto en la tabla base. 

Sintaxis:  

DROP MATERIALIZED VIEW [IF EXISTS] [keyspace_name.] view_name 

Por ejemplo, para DROP la vista materializada usó la siguiente consulta CQL. 

DROP MATERIALIZED VIEW User1.Users_by_User_email ; 

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 *