我目前正在进入OrientDB进行研究,以评估图数据库的版本控制功能. OrientDB中的每条记录都有一个@version属性,每次更新记录时都会增加该属性.这为版本控制支持提供了指示.我已经设置了一
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属性的目的是检查在获取对象和更新对象之间是否进行了任何更新.例如,如果在您的代码中获取产品,则更新其属性,同时对象在数据库中已更改(另一段代码已更新),然后保存它:您正在尝试使用版本2,但它在数据库中有版本3.
这可以帮助您防止并发访问您的数据库.
我不知道您正在寻找的功能是否将在OrientDB中实现.如果你不需要它,那就不要这样做.如果你真的需要这个,你可以自己动手,也许是通过创建一个Product_old类并用更新时的先前记录填充它.