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

可以看到,上面插入的資料已被回滾了,所以沒有查詢到相關記錄資訊。