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

Version control OrientDB,如何检索以前的记录版本,version-control,versioning,graph-databases,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) v

我正在研究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属性的用途是什么?

属性的用途是检查在获取对象和更新对象之间是否进行了任何更新

例如,如果在您的代码中获取一个
产品
,您更新了它的属性,同时数据库中的对象发生了变化(另一段代码更新了它),那么您保存了它:您正试图用版本2更新对象,但它在数据库中有版本3

这有助于防止并发访问数据库

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

你应该问一个新问题,详细说明你的问题,比如你是如何进行更新的。