version-control - OrientDB,如何检索以前的记录版本

标签 version-control versioning graph-databases orientdb

我正在研究 OrientDB 以评估图形数据库的版本控制功能。

OrientDB 中的每条记录都有一个 @version 属性,每次更新记录时都会增加该属性。这表示支持版本控制。我已经建立了一个简单的例子(使用 OrientDB SQL)来测试这个:

create class Product
create property Product.name string
create property Product.price integer
insert into Product (name, price) values ('Fridge', 449)
update Product set price = 479 where name = 'Fridge'
select from Product

执行上述语句后,得到如下查询结果:
{
    "result": [
        {
            "@type": "d",
            "@rid": "#14:0",
            "@version": 2,
            "@class": "Product",
            "name": "Fridge",
            "price": 479
        }
    ],
    "notification": "Query executed in 0.031 sec. Returned 1 record(s)"
}

在此数据库状态下 - 如何检索我的记录的先前版本(在此简单情况下为版本 1)?这是否可以通过 OrientDB SQL 语句和/或通过 OrientDB Java API 实现?如果不是 - 那么@version 属性的目的是什么?

最佳答案

@version的目的属性是检查在获取对象和更新对象之间是否进行了任何更新。

例如,如果在您的代码中您 获取 product ,你更新 它的属性,同时对象 已更改 在数据库中(另一段代码更新了它),那么你 保存 it :您正在尝试使用 更新对象版本 2 ,但它有 版本 3 数据库中。

这可以帮助您防止对数据库的并发访问。

不知道你要找的功能是否会在OrientDB中实现.
如果你不需要它,那就不要做。如果你真的需要这个,你可以自己做,也许通过创建一个 Product_old 类并在更新时用以前的记录填充它。

关于version-control - OrientDB,如何检索以前的记录版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25350479/

相关文章:

javascript - Neo4J - 返回语句聚合 - 仅返回具有最大值的行

sql - 最佳 OrientDB SQL 查询模拟双方条件的连接

version-control - 软件重构的版本控制

git - 如何在循环中运行 svn update 以将提交导入到 git?

.net - 有什么技巧可以使我的项目每次都以全新的结帐方式进行编译?

continuous-integration - 有哪些工具可以帮助将各种软件元素收集到完整的软件版本中?

java - 更改项目 libgdx 中的版本控制并使用 Application Loader 加载

cluster-computing - Neo4j 和聚类分析

svn - 深层目录结构的稀疏 svn 更新

node.js - Azure 移动应用 API (Node.js) 版本控制