OrientDB - Transazioni
Come RDBMS, OrientDB supporta le proprietà ACID delle transazioni. UNtransactioncomprende un'unità di lavoro eseguita all'interno di un sistema di gestione di database. Esistono due motivi principali per mantenere le transazioni in un ambiente di database.
Per consentire il ripristino simultaneo da errori e mantenere un database coerente anche in caso di errori di sistema.
Per fornire isolamento tra i programmi che accedono contemporaneamente a un database.
Per impostazione predefinita, la transazione del database deve seguire le proprietà ACID come le proprietà Atomic, Consistent, Isolated e Durable. Ma OrientDB è un database compatibile con ACID, il che significa che non contraddice o nega il concetto ACID, ma cambia la sua percezione durante la gestione del database NoSQL. Dai un'occhiata a come le proprietà ACID funzionano insieme al database NoSQL.
Atomic - Quando fai qualcosa per cambiare il database, la modifica dovrebbe funzionare o fallire nel suo complesso.
Consistent - Il database dovrebbe rimanere coerente.
Isolated - Se sono in esecuzione altre esecuzioni di transazioni contemporaneamente, l'utente non sarà in grado di vedere i record in esecuzione simultanea.
Durable - Se il sistema si blocca (hardware o software), il database stesso dovrebbe essere in grado di eseguire un backup.
La transazione del database può essere ottenuta utilizzando i comandi Commit e Rollback.
Commettere
Commit significa chiudere la transazione salvando tutte le modifiche al database. Rollback significa ripristinare lo stato del database fino al punto in cui è stata aperta la transazione.
La seguente dichiarazione è la sintassi di base del comando database COMMIT.
COMMIT
Note - È possibile utilizzare questo comando solo dopo essersi connessi a un determinato database e dopo aver iniziato la transazione.
Esempio
In questo esempio, useremo lo stesso database denominato "demo" che abbiamo creato in un capitolo precedente di questo tutorial. Vedremo l'operazione di commit della transazione e memorizzeremo un record utilizzando le transazioni.
È necessario prima avviare la transazione utilizzando il seguente comando BEGIN.
orientdb {db = demo}> BEGIN
Inserisci un record in una tabella dei dipendenti con i valori id = 12 e name = satish.P utilizzando il seguente comando.
orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')
È possibile utilizzare il seguente comando per eseguire il commit della transazione.
orientdb> commit
Se questa transazione viene eseguita correttamente, otterrai il seguente output.
Transaction 2 has been committed in 4ms
Rollback
Rollback significa ripristinare lo stato del database fino al punto in cui è stata aperta la transazione.
La seguente dichiarazione è la sintassi di base del comando database ROLLBACK.
ROLLBACK
Note - È possibile utilizzare questo comando solo dopo essersi connessi a un determinato database e dopo aver iniziato la transazione.
Esempio
In questo esempio, useremo lo stesso database denominato "demo" che abbiamo creato in un capitolo precedente del tutorial. Vedremo l'operazione di rollback della transazione e memorizzeremo un record utilizzando le transazioni.
Devi prima avviare la transazione utilizzando il seguente comando BEGIN.
orientdb {db = demo}> BEGIN
Inserisci un record in una tabella dei dipendenti con i valori id = 12 e name = satish.P utilizzando il seguente comando.
orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')
È possibile utilizzare il seguente comando per recuperare i record del dipendente della tabella.
orientdb> SELECT FROM employee WHERE name LIKE '%.P'
Se questo comando viene eseguito correttamente, otterrai il seguente output.
---+-------+--------------------
# | ID | name
---+-------+--------------------
0 | 12 | satish.P
---+-------+--------------------
1 item(s) found. Query executed in 0.076 sec(s).
È possibile utilizzare il seguente comando per ripristinare questa transazione.
orientdb> ROLLBACK
Controllare di nuovo la query di selezione per recuperare lo stesso record dalla tabella Employee.
orientdb> SELECT FROM employee WHERE name LIKE '%.P'
Se il rollback viene eseguito correttamente, verranno trovati 0 record nell'output.
0 item(s) found. Query executed in 0.037 sec(s).