Transacciones ligeras en Cassandra

En este artículo, analizaremos las transacciones ligeras (LWT) en Cassandra , que también ayudan a mejorar el rendimiento.

A veces, las operaciones de inserción o actualización deben ser únicas y requieren una lectura antes de escribir. La lectura antes de la escritura tiene implicaciones en el rendimiento. ¡Úselo sabiamente! Este tipo de problema lo resolvió CQL Lightweight Transactions (LWT) mediante el uso de una cláusula IF en inserciones y actualizaciones.

Por ejemplo:
Crear un espacio de claves:

CREATE KEYSPACE IF NOT EXIST keyspace1 
WITH replication = {'class': 'SimpleStrategy', 
                    'replication_factor' : 2}; 

Creando una tabla:

CREATE TABLE User (
U_email text,
U_password int,      
U_id UUID,
PRIMARY KEY (email)
); 

Para leer utilizó la siguiente consulta CQL.

Select * 
from keyspace1.User 
where U_email = ‘ashish@gmail.com’; 

Producción:

U_correo electrónico U_contraseña U_id

[0 filas]

Para insertar los datos en la tabla, utilizó la siguiente consulta CQL.

Insert into keyspace1.User (U_email, U_password, U_id) 
values (‘ashish@gmail.com’, ‘password_A’, uuid()) 
if not exists; 

Echemos un vistazo.

Figura – LWT en Cassandra

Ahora, LWT creó la fila.

Select * 
from keyspace1.User 
where U_email = ‘ashish@gmail.com’; 

Producción:

U_correo electrónico U_contraseña U_id
ashish@gmail.com contraseña_A 1a2b3c4d5e6789


[1 filas] LWT creó la fila

LWT en fila existente:

Insert into keyspace1.User (U_email, U_password, U_id) 
values (‘ashish@gmail.com’, ‘password_XYZ’, uuid()) 
if not exists;  

Echemos un vistazo,

Figura: LWT en fila existente

Aquí está el resultado de la consulta CQL anterior.

Select * 
from keyspace1.User 
where U_email = ‘ashish@gmail.com’; 

Producción:

Figura: la fila no cambió

Transacciones ligeras (LWT) en la fila de actualización:
consulta CQL para actualizar una fila existente y ahora estamos aplicando LWT en esto. Consulta CQL para actualizar una fila existente.

UPDATE keyspace1.User SET U_password = 'password_XYZ' 
WHERE U_email = 'ashish@gmail.com'
IF U_password = 'password_A' ; 

Los operadores se pueden utilizar para el comando ACTUALIZAR:

=, <,, >=, != and IN 

Echemos un vistazo,

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 *