OrientDB - 事務



像關係資料庫管理系統 (RDBMS) 一樣,OrientDB 支援事務的 ACID 屬性。一個**事務**包含在資料庫管理系統中執行的一個工作單元。在資料庫環境中維護事務主要有兩個原因。

  • 允許從故障中併發恢復,即使在系統故障的情況下也能保持資料庫的一致性。

  • 在併發訪問資料庫的程式之間提供隔離。

預設情況下,資料庫事務必須遵循 ACID 屬性,例如原子性、一致性、隔離性和永續性。但是 OrientDB 是一個符合 ACID 的資料庫,這意味著它並不與 ACID 概念相矛盾或否定,而是在處理 NoSQL 資料庫時改變了其理解。讓我們看看 ACID 屬性如何與 NoSQL 資料庫一起工作。

**原子性** - 當你執行更改資料庫的操作時,該更改應該整體成功或整體失敗。

**一致性** - 資料庫應該保持一致。

**隔離性** - 如果其他事務執行正在同時執行,則使用者將無法看到併發執行中的記錄。

**永續性** - 如果系統崩潰(硬體或軟體),資料庫本身應該能夠進行備份。

可以使用 Commit 和 Rollback 命令實現資料庫事務。

Commit

Commit 表示透過將所有更改儲存到資料庫來關閉事務。Rollback 表示將資料庫狀態恢復到開啟事務時的點。

以下語句是 COMMIT 資料庫命令的基本語法。

COMMIT

**注意** - 只有在連線到特定資料庫並在開始事務後才能使用此命令。

示例

在這個示例中,我們將使用我們在本教程前面章節中建立的名為“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 表示將資料庫狀態恢復到開啟事務時的點。

以下語句是 ROLLBACK 資料庫命令的基本語法。

ROLLBACK

**注意** - 只有在連線到特定資料庫並在開始事務後才能使用此命令。

示例

在這個示例中,我們將使用我們在本教程前面章節中建立的名為“demo”的相同資料庫。我們將看到回滾事務並使用事務儲存記錄的操作。

您必須首先使用以下 BEGIN 命令啟動事務。

orientdb {db = demo}> BEGIN

使用以下命令將記錄插入到員工表中,其值為 id = 12 和 name = satish.P。

orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')

您可以使用以下命令檢索 employee 表的記錄。

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

再次檢查 select 查詢以從 Employee 表中檢索相同的記錄。

orientdb> SELECT FROM employee WHERE name LIKE '%.P' 

如果 Rollback 成功執行,您將在輸出中看到 0 條記錄。

0 item(s) found. Query executed in 0.037 sec(s). 
廣告