El procesamiento por lotes es una característica muy importante cuando se trabaja con bases de datos. No solo proporcionan a los desarrolladores una forma de ejecutar una serie de instrucciones de un solo script, sino que también proporcionan atomicidad en el clúster de destino.
En esta publicación, cubriremos los conceptos básicos de trabajar con el procesamiento por lotes en Apache Cassandra. Esto le permite combinar una serie de consultas en un solo contexto de ejecución.
Vamos a sumergirnos.
Sintaxis de procesamiento por lotes de Cassandra
A continuación se muestra la sintaxis de la declaración por lotes en Cassandra:
BEGIN [(no cagado | contador)] lote
[Usando la marca de tiempo [EPOCH_MICROSECONDS]]
dml_statement [usando la marca de tiempo [EPOCH_MICROSECONDS]]];
[DML_STATEMENT [usando la marca de tiempo [Epoch_microseconds]] [; ...]]
Aplicar lote;
Puede usar declaraciones de inserción, actualización o eliminación en una cláusula por lotes.
La instrucción sin renunciar define si el lote está registrado o no. Un lote registrado garantiza la máxima atomicidad al garantizar que todas las declaraciones en el lote se ejecuten con éxito. Si alguna de las declaraciones en un lote registrado falla, todo el lote no se ejecutará.
Las declaraciones de uso de la marca de tiempo se utilizan para establecer el tiempo de escritura para las transacciones que se realizan por las instrucciones en el lote. Puede permitir que el clúster asigne una marca de tiempo única en todas las transacciones realizadas por el lote o puede especificar las declaraciones sobre las que desea aplicar la marca de tiempo.
Un ejemplo es como se muestra:
Comience por lote usando la marca de tiempo [Epoch_Microseconds]
declaración_1;
…
Declaración_n;
Aplicar lote;
En el ejemplo anterior, Cassandra crea una marca de tiempo para todas las transacciones realizadas por las declaraciones especificadas en el lote.
Otro ejemplo es como se muestra:
Comenzar por lote
declaración_1;
Declaración_2 usando TimeStamp [EPOCH_MICROSECONDS];
Declaración_n;
Aplicar lote;
En este caso, Cassandra solo aplica las marcas de tiempo para las transacciones realizadas por la declaración_2.
Ejemplo:
El siguiente ejemplo ilustra cómo usar una instrucción por lotes utilizando una instrucción DML Insertar:
cassandra@cqlsh: prueba> crear usuarios de tabla (
… Yo dint,
... texto de nombre de usuario,
... clave principal (id));
Una vez que tenemos la configuración de la tabla, podemos ejecutar un inserto por lotes de la siguiente manera:
cassandra@cqlsh: prueba> comenzar lote usando la marca de tiempo 1664050149 Insertar en valores de usuarios (ID, nombre de usuario) (1, 'UserName1'); insertar en valores de usuarios (ID, nombre de usuario) (2, 'UserName2'); aplicar lote;
La consulta debe realizar un inserto por lotes en la tabla especificada. Dado que establecemos la marca de tiempo en todas las declaraciones, la consulta debe garantizar que todos los registros compartan una marca de tiempo similar.
Conclusión
En este artículo, cubrimos los conceptos básicos de trabajar con el modo por lotes en Apache Cassandra. Es bueno tener en cuenta que es un tutorial básico. Hay mucho más a tener en cuenta cuando se trabaja con el procesamiento por lotes, como particiones individuales y múltiples, espacios de claves de destino, implicación del rendimiento, declaraciones asíncronas y más. Recomendamos revisar la documentación para obtener una información detallada.