OrientDB事务

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 
---+-------+-------------------- 
| 12   | Maxsu
---+-------+-------------------- 
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).

可以看到,上面插入的数据已被回滚了,所以没有查询到相关记录信息。