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).