OrientDB - Транзакции

Как и СУБД, OrientDB поддерживает свойства ACID транзакций. Аtransactionвключает единицу работы, выполняемую в системе управления базой данных. Есть две основные причины поддерживать транзакции в среде базы данных.

  • Чтобы обеспечить одновременное восстановление после сбоев и сохранить целостность базы данных даже в случае сбоев системы.

  • Обеспечить изоляцию между программами, обращающимися к базе данных одновременно.

По умолчанию транзакция базы данных должна соответствовать таким свойствам ACID, как атомарные, согласованные, изолированные и устойчивые. Но OrientDB - это база данных, совместимая с ACID, что означает, что она не противоречит и не отрицает концепцию ACID, но меняет свое восприятие при работе с базой данных NoSQL. Посмотрите, как свойства ACID работают вместе с базой данных NoSQL.

Atomic - Когда вы что-то делаете для изменения базы данных, это изменение должно работать или не работать в целом.

Consistent - База данных должна оставаться согласованной.

Isolated - Если в то же время выполняются другие транзакции, пользователь не сможет видеть записи в параллельном выполнении.

Durable - В случае сбоя системы (аппаратного или программного) сама база данных должна иметь возможность сделать резервную копию.

Транзакция базы данных может быть достигнута с помощью команд фиксации и отката.

Зафиксировать

Фиксация означает закрытие транзакции путем сохранения всех изменений в базе данных. Откат означает восстановление состояния базы данных до точки, в которой вы открыли транзакцию.

Следующая инструкция является основным синтаксисом команды COMMIT database.

COMMIT

Note - Вы можете использовать эту команду только после подключения к конкретной базе данных и после начала транзакции.

пример

В этом примере мы будем использовать ту же базу данных с именем demo, которую мы создали в предыдущей главе этого руководства. Мы увидим операцию фиксации транзакции и сохраним запись с помощью транзакций.

Вам необходимо сначала запустить транзакцию, используя следующую команду BEGIN.

orientdb {db = demo}> BEGIN

Вставьте запись в таблицу сотрудников со значениями id = 12 и name = satish.P, используя следующую команду.

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

Вы можете использовать следующую команду для фиксации транзакции.

orientdb> commit

Если эта транзакция успешно зафиксирована, вы получите следующий результат.

Transaction 2 has been committed in 4ms

Откат

Откат означает восстановление состояния базы данных до точки, в которой вы открыли транзакцию.

Следующая инструкция является основным синтаксисом команды базы данных ROLLBACK.

ROLLBACK

Note - Вы можете использовать эту команду только после подключения к конкретной базе данных и после начала транзакции.

пример

В этом примере мы будем использовать ту же базу данных с именем demo, которую мы создали в предыдущей главе учебника. Мы увидим операцию отката транзакции и сохраним запись с помощью транзакций.

Сначала вы должны запустить транзакцию, используя следующую команду BEGIN.

orientdb {db = demo}> BEGIN

Вставьте запись в таблицу сотрудников со значениями id = 12 и name = satish.P, используя следующую команду.

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

Вы можете использовать следующую команду для получения записей о сотруднике таблицы.

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

Если эта команда выполнена успешно, вы получите следующий результат.

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

Вы можете использовать следующую команду для отката этой транзакции.

orientdb> ROLLBACK

Еще раз проверьте запрос выбора, чтобы получить ту же запись из таблицы Employee.

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

Если откат выполнен успешно, в выходных данных будет найдено 0 записей.

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