和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).
可以看到,上面插入的數據已被回滾了,所以沒有查詢到相關記錄資訊。