OrientDB - Transacciones

Al igual que RDBMS, OrientDB admite transacciones con propiedades ACID. UNtransactioncomprende una unidad de trabajo realizada dentro de un sistema de gestión de base de datos. Hay dos razones principales para mantener transacciones en un entorno de base de datos.

  • Para permitir la recuperación simultánea de fallas y mantener una base de datos consistente incluso en caso de fallas del sistema.

  • Proporcionar aislamiento entre programas que acceden a una base de datos al mismo tiempo.

De forma predeterminada, la transacción de la base de datos debe seguir las propiedades ACID, como las propiedades atómicas, coherentes, aisladas y duraderas. Pero OrientDB es una base de datos compatible con ACID, lo que significa que no contradice ni niega el concepto ACID, pero cambia su percepción mientras maneja la base de datos NoSQL. Observe cómo funcionan las propiedades ACID junto con la base de datos NoSQL.

Atomic - Cuando haga algo para cambiar la base de datos, el cambio debería funcionar o fallar como un todo.

Consistent - La base de datos debe permanecer coherente.

Isolated - Si se están ejecutando otras ejecuciones de transacciones al mismo tiempo, el usuario no podrá ver los registros en ejecución concurrente.

Durable - Si el sistema falla (hardware o software), la base de datos misma debería poder realizar una copia de seguridad.

La transacción de la base de datos se puede lograr mediante los comandos Commit y Rollback.

Cometer

Confirmar significa cerrar la transacción guardando todos los cambios en la base de datos. Revertir significa recuperar el estado de la base de datos hasta el punto en el que abrió la transacción.

La siguiente declaración es la sintaxis básica del comando de base de datos COMMIT.

COMMIT

Note - Puede usar este comando solo después de conectarse a una base de datos en particular y después de comenzar la transacción.

Ejemplo

En este ejemplo, usaremos la misma base de datos llamada 'demo' que creamos en un capítulo anterior de este tutorial. Veremos el funcionamiento de la transacción de confirmación y almacenaremos un registro utilizando transacciones.

Primero debe iniciar la transacción con el siguiente comando BEGIN.

orientdb {db = demo}> BEGIN

Inserte un registro en una tabla de empleados con los valores id = 12 y name = satish.P usando el siguiente comando.

orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')

Puede usar el siguiente comando para confirmar la transacción.

orientdb> commit

Si esta transacción se comprometió con éxito, obtendrá el siguiente resultado.

Transaction 2 has been committed in 4ms

Retroceder

Revertir significa recuperar el estado de la base de datos hasta el punto en el que abrió la transacción.

La siguiente declaración es la sintaxis básica del comando de base de datos ROLLBACK.

ROLLBACK

Note - Puede usar este comando solo después de conectarse a una base de datos en particular y después de comenzar la transacción.

Ejemplo

En este ejemplo, usaremos la misma base de datos llamada 'demo' que creamos en un capítulo anterior del tutorial. Veremos la operación de retrotracción de transacciones y almacenaremos un registro usando transacciones.

Primero debe iniciar la transacción usando el siguiente comando BEGIN.

orientdb {db = demo}> BEGIN

Inserte un registro en una tabla de empleados con los valores id = 12 y name = satish.P usando el siguiente comando.

orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')

Puede utilizar el siguiente comando para recuperar los registros del empleado de la mesa.

orientdb> SELECT FROM employee WHERE name LIKE '%.P'

Si este comando se ejecuta con éxito, obtendrá el siguiente resultado.

---+-------+-------------------- 
 # | ID   | name 
---+-------+-------------------- 
 0 | 12   | satish.P 
---+-------+-------------------- 
1 item(s) found. Query executed in 0.076 sec(s).

Puede utilizar el siguiente comando para deshacer esta transacción.

orientdb> ROLLBACK

Vuelva a comprobar la consulta de selección para recuperar el mismo registro de la tabla Empleado.

orientdb> SELECT FROM employee WHERE name LIKE '%.P'

Si la reversión se ejecuta correctamente, obtendrá 0 registros encontrados en la salida.

0 item(s) found. Query executed in 0.037 sec(s).