OrientDB - Transações

Como o RDBMS, o OrientDB oferece suporte às propriedades ACID de transações. UMAtransactioncompreende uma unidade de trabalho executada em um sistema de gerenciamento de banco de dados. Existem dois motivos principais para manter as transações em um ambiente de banco de dados.

  • Para permitir a recuperação simultânea de falhas e manter um banco de dados consistente mesmo em caso de falhas do sistema.

  • Para fornecer isolamento entre programas que acessam um banco de dados simultaneamente.

Por padrão, a transação do banco de dados deve seguir as propriedades ACID, como as propriedades Atomic, Consistent, Isolated e Durable. Mas o OrientDB é um banco de dados compatível com ACID, o que significa que ele não contradiz ou nega o conceito ACID, mas muda sua percepção ao lidar com o banco de dados NoSQL. Dê uma olhada em como as propriedades ACID funcionam junto com o banco de dados NoSQL.

Atomic - Quando você faz algo para alterar o banco de dados, a alteração deve funcionar ou falhar como um todo.

Consistent - O banco de dados deve permanecer consistente.

Isolated - Se outras execuções de transação estiverem sendo executadas ao mesmo tempo, o usuário não poderá ver os registros em execução simultânea.

Durable - Se o sistema travar (hardware ou software), o próprio banco de dados deve ser capaz de fazer um backup.

A transação do banco de dados pode ser realizada usando os comandos Commit e Rollback.

Comprometer

Confirmar significa fechar a transação salvando todas as alterações no banco de dados. Rollback significa recuperar o estado do banco de dados até o ponto em que você abriu a transação.

A instrução a seguir é a sintaxe básica do comando de banco de dados COMMIT.

COMMIT

Note - Você pode usar este comando somente após conectar-se a um banco de dados específico e após o início da transação.

Exemplo

Neste exemplo, usaremos o mesmo banco de dados denominado 'demo' que criamos em um capítulo anterior deste tutorial. Veremos a operação de confirmação de transação e armazenaremos um registro usando transações.

Você precisa primeiro iniciar a transação usando o seguinte comando BEGIN.

orientdb {db = demo}> BEGIN

Insira um registro em uma tabela de funcionários com os valores id = 12 e name = satish.P usando o seguinte comando.

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

Você pode usar o seguinte comando para confirmar a transação.

orientdb> commit

Se esta transação for confirmada com sucesso, você obterá a seguinte saída.

Transaction 2 has been committed in 4ms

Rollback

Rollback significa recuperar o estado do banco de dados até o ponto em que você abriu a transação.

A instrução a seguir é a sintaxe básica do comando de banco de dados ROLLBACK.

ROLLBACK

Note - Você pode usar este comando somente após conectar-se a um banco de dados específico e após o início da transação.

Exemplo

Neste exemplo, usaremos o mesmo banco de dados chamado 'demo' que criamos em um capítulo anterior do tutorial. Veremos a operação de transação de rollback e armazenaremos um registro usando transações.

Você deve primeiro iniciar a transação usando o seguinte comando BEGIN.

orientdb {db = demo}> BEGIN

Insira um registro em uma tabela de funcionários com os valores id = 12 e name = satish.P usando o seguinte comando.

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

Você pode usar o seguinte comando para recuperar os registros do funcionário da mesa.

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

Se este comando for executado com sucesso, você obterá a seguinte saída.

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

Você pode usar o seguinte comando para reverter esta transação.

orientdb> ROLLBACK

Verifique a consulta selecionada novamente para recuperar o mesmo registro da tabela Funcionário.

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

Se a reversão for executada com sucesso, você obterá 0 registros encontrados na saída.

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