我正在研究 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/