OrientDB事務
和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 = Maxsu
插入到Employee
表中。
orientdb> INSERT INTO employee (id, name) VALUES (12, 'Maxsu')
可以使用以下命令來提交事務。
orientdb> commit
如果此事務成功提交,將獲得以下輸出。
Transaction 2 has been committed in 4ms
回滾
回滾意味着將數據庫狀態恢復到您打開事務的位置。
以下語句是ROLLBACK
數據庫命令的基本語法。
ROLLBACK
注 - 只有在連接到特定數據庫並開始事務後,才能使用此命令。
示例
在這個例子中,將使用本教程前面章節中創建的名爲demo
的相同數據庫。 將看到回滾事務的操作並使用事務來存儲記錄。
先使用以下BEGIN
命令啓動事務。
orientdb {db = demo}> BEGIN
使用以下命令將記錄值爲id = 12
和name = Maxsu
插入到employee
表中。
orientdb> INSERT INTO employee (id, name) VALUES (12, 'Maxsu')
可以使用以下命令來檢索employee
表中的記錄。
orientdb> SELECT FROM employee WHERE name LIKE '%su'
如果此命令成功執行,您將獲得以下輸出。
---+-------+--------------------
# | ID | name
---+-------+--------------------
0 | 12 | Maxsu
---+-------+--------------------
1 item(s) found. Query executed in 0.076 sec(s).
可以使用以下命令來回滾此事務。
orientdb> ROLLBACK
再次使用select
查詢語句從Employee
表中檢索相同的記錄。
orientdb> SELECT FROM employee WHERE name LIKE '%su'
如果此命令成功執行,您將獲得以下輸出。
0 item(s) found. Query executed in 0.037 sec(s).
可以看到,上面插入的數據已被回滾了,所以沒有查詢到相關記錄信息。