Как и RDBMS, OrientDB поддерживает свойства ACID транзакций. Транзакция состоит из единицы работы, выполняемой в системе управления базой данных. Существует две основные причины для поддержки транзакций в среде базы данных.
-
Для одновременного восстановления после сбоев и поддержания согласованности базы данных даже в случае сбоев системы.
-
Обеспечить изоляцию между программами, обращающимися к базе данных одновременно.
Для одновременного восстановления после сбоев и поддержания согласованности базы данных даже в случае сбоев системы.
Обеспечить изоляцию между программами, обращающимися к базе данных одновременно.
По умолчанию транзакция базы данных должна соответствовать свойствам ACID, таким как свойства Atomic, Consistent, Isolated и Durable. Но OrientDB является ACID-совместимой базой данных, что означает, что она не противоречит и не отрицает концепцию ACID, но меняет свое восприятие при обработке базы данных NoSQL. Посмотрите, как свойства ACID работают вместе с базой данных NoSQL.
Атомная — когда вы делаете что-то, чтобы изменить базу данных, изменение должно работать или потерпеть неудачу в целом.
Согласованный — база данных должна оставаться согласованной.
Изолированный — если одновременно выполняются другие транзакции, пользователь не сможет просматривать записи в параллельном выполнении.
Долговечный. В случае сбоя системы (аппаратной или программной) сама база данных должна быть в состоянии сделать резервную копию.
Транзакция базы данных может быть достигнута с помощью команд Commit и Rollback.
совершить
Фиксация означает закрытие транзакции путем сохранения всех изменений в базе данных. Откат означает восстановление состояния базы данных до точки, в которой вы открыли транзакцию.
Следующий оператор является основным синтаксисом команды базы данных COMMIT.
COMMIT
Примечание. Эту команду можно использовать только после подключения к определенной базе данных и после начала транзакции.
пример
В этом примере мы будем использовать ту же базу данных с именем «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
Примечание. Эту команду можно использовать только после подключения к определенной базе данных и после начала транзакции.
пример
В этом примере мы будем использовать ту же базу данных с именем ‘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 записей, найденных в выходных данных.