OrientDB事務

和RDBMS一樣,OrientDB支持事務ACID屬性。 事務包括在數據庫管理系統內執行的工作單元。 在數據庫環境中維護事務有兩個主要原因。

  • 即使系統發生故障,也可以從故障中同時進行恢復並保持數據庫的一致性。
  • 在同時訪問數據庫的程序之間提供隔離。

默認情況下,數據庫事務必須遵循ACID屬性,例如Atomic,Consistent,Isolated和Durable屬性。 但OrientDB是一個符合ACID的數據庫,這意味着它不會抵觸或否定ACID的概念,但它在處理NoSQL數據庫時會改變它的看法。 看看ACID屬性如何與NoSQL數據庫一起使用。

  • 原子性 - 當你做一些事情來改變數據庫時,改變應該作爲一個整體來工作或失敗。
  • 一致性 - 數據庫應該保持一致。
  • 隔離性 - 如果其他事務執行同時執行,則用戶將無法在併發執行中查看記錄。
  • 持久性 - 如果系統崩潰(硬件或軟件),數據庫本身應該能夠進行備份。

數據庫事務可以通過使用CommitRollback 命令來實現。

提交

提交意味着通過保存對數據庫的所有更改來關閉事務。 回滾意味着將數據庫狀態恢復到您打開事務的位置。以下語句是COMMIT數據庫命令的基本語法。

COMMIT

注 - 只有在連接到特定數據庫並開始事務後,才能使用此命令。

示例

在本例中,將使用本教程前面章節中創建的名爲demo的相同數據庫。將看到提交事務的操作並使用事務來存儲記錄。

需要使用以下BEGIN命令首先啓動事務。

orientdb {db = demo}> BEGIN

使用以下命令將記錄值爲id = 12name = 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 = 12name = 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).

可以看到,上面插入的數據已被回滾了,所以沒有查詢到相關記錄信息。