像RDBMS,OrientDB支持事務(wù)ACID屬性。交易包括在數(shù)據(jù)庫管理系統(tǒng)內(nèi)執(zhí)行的工作單元。在數(shù)據(jù)庫環(huán)境中維護事務(wù)有兩個主要原因。
允許從故障中并發(fā)恢復(fù),并保持數(shù)據(jù)庫一致,即使在系統(tǒng)故障的情況下。
在同時訪問數(shù)據(jù)庫的程序之間提供隔離。
默認情況下,數(shù)據(jù)庫事務(wù)必須遵循ACID屬性,例如Atomic,Consistent,Isolated和Durable屬性。但OrientDB是一個ACID兼容的數(shù)據(jù)庫,這意味著它不矛盾或否定概念A(yù)CID,但它改變了它的感知,同時處理NoSQL數(shù)據(jù)庫。看看ACID屬性如何與NoSQL數(shù)據(jù)庫一起工作。
Atomic? 當你做一些事情來改變數(shù)據(jù)庫時,改變應(yīng)該作為一個整體工作或失敗。
Consistent?數(shù)據(jù)庫應(yīng)保持一致。
Isolated? 如果其他事務(wù)執(zhí)行同時執(zhí)行,則用戶將無法在并發(fā)執(zhí)行中查看記錄。
Durable? 如果系統(tǒng)崩潰(硬件或軟件),數(shù)據(jù)庫本身應(yīng)該能夠進行備份。
數(shù)據(jù)庫事務(wù)可以通過使用提交和回滾命令來實現(xiàn)。
承諾
提交意味著通過將所有更改保存到數(shù)據(jù)庫來關(guān)閉事務(wù)?;貪L意味著將數(shù)據(jù)庫狀態(tài)恢復(fù)到打開事務(wù)的點。
以下語句是COMMIT數(shù)據(jù)庫命令的基本語法。
COMMIT
注意:只有在連接到特定數(shù)據(jù)庫和開始事務(wù)之后,才能使用此命令。
例在本例中,我們將使用我們在本教程前面章節(jié)中創(chuàng)建的名為“demo”的相同數(shù)據(jù)庫。 我們將看到提交事務(wù)的操作,并使用事務(wù)存儲記錄。
您需要首先使用以下BEGIN命令啟動事務(wù)。
orientdb {db = demo}> BEGIN
使用以下命令將記錄插入到值為id = 12和name = satish.P的employee表中。
orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')
您可以使用下面的命令來提交事務(wù)。
orientdb> commit
如果這個交易成功提交,您會得到下面的輸出。
Transaction 2 has been committed in 4ms
回滾
回滾意味著將數(shù)據(jù)庫狀態(tài)恢復(fù)到打開事務(wù)的點。
以下語句是ROLLBACK數(shù)據(jù)庫命令的基本語法。
ROLLBACK
注意:只有在連接到特定數(shù)據(jù)庫和開始事務(wù)之后,才能使用此命令。
例
在本例中,我們將使用我們在本教程前面章節(jié)中創(chuàng)建的名為“demo”的相同數(shù)據(jù)庫。 我們將看到回滾事務(wù)的操作,并使用事務(wù)存儲記錄。
您必須首先使用以下BEGIN命令啟動事務(wù)。
orientdb {db = demo}> BEGIN
使用以下命令將記錄插入到值為id = 12和name = satish.P的employee表中。
orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')
您可以使用以下命令檢索表employee的記錄。
orientdb> SELECT FROM employee WHERE name LIKE '%.P'
如果此命令成功執(zhí)行,您將獲得以下輸出。
---+-------+--------------------
# | ID | name
---+-------+--------------------
0 | 12 | satish.P
---+-------+--------------------
1 item(s) found. Query executed in 0.076 sec(s).
您可以使用下面的命令來回滾該事務(wù)。
orientdb> ROLLBACK
再次檢查選擇查詢以從Employee表中檢索相同的記錄。
orientdb> SELECT FROM employee WHERE name LIKE '%.P'
如果成功執(zhí)行回滾,您將在輸出中找到0條記錄。
0 item(s) found. Query executed in 0.037 sec(s).
更多建議: