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) моей записи? Возможно ли это с помощью оператора SQL OrientDB и / или через API Java OrientDB? Если нет - тогда какова цель свойства @version?


person raisyn    schedule 17.08.2014    source источник


Ответы (1)


Назначение свойства @version - проверить, было ли выполнено какое-либо обновление с момента получения объекта до момента его обновления.

Например, если в вашем коде вы извлекаете product, вы обновляете его свойства, тем временем объект изменился в базе данных (другой фрагмент кода обновил его), затем вы сохраняете его: вы пытаетесь обновить объект до версии 2, но у него есть версия 3 в базе данных.

Это может помочь вам предотвратить одновременный доступ к вашей базе данных.

Я не знаю, будет ли в OrientDB реализована нужная вам функция. Если вам это не нужно, не делайте этого. Если вам это действительно нужно, вы можете сделать это самостоятельно, возможно, создав класс Product_old и заполнив его предыдущими записями при обновлении.

person Jul13nT    schedule 17.08.2014
comment
Вам следует задать новый вопрос с более подробной информацией о вашей проблеме, например, о том, как вы делаете обновления. - person Jul13nT; 26.06.2017