GraphDB читать, проверять и обновлять в транзакции - PullRequest
0 голосов
/ 29 января 2019

Я недавно читал о GraphDB, и в документации упоминается, что GraphDB совместим с ACID.Но есть очень ограниченная документация о том, как далеко это идет.Я занимаюсь разработкой REST API и мне было интересно, как мне решить проблему потерянных обновлений с помощью GraphDB.Для каждого ресурса наш API возвращает Etag.Когда клиенты хотят обновить ресурс, они должны предоставить etag.Затем в транзакции я хочу проверить, совпадает ли etag, предоставленный клиентом, с etag в базе данных, а затем выполнить обновление.При использовании с высокой степенью параллелизма возможно, что более одного клиента могут представлять один и тот же etag, и если проверка и обновление etag находятся не в одной и той же транзакции, тогда одна транзакция может перезаписать изменения из другой транзакции.Мой вопрос заключается в том, возможно ли в GraphDB получить какую-либо блокировку чтения при выполнении проверки, чтобы никакая другая транзакция не могла обновить значение?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Вы можете добавить проверку etag в обновлении INSERT WHERE.Если etag не совпадает, вставка не вставит тройки.

0 голосов
/ 05 февраля 2019

GraphDB - полностью совместимая база данных ACID (http://graphdb.ontotext.com/documentation/free/storage.html#transaction-control).. Вы можете безопасно иметь несколько пользователей, и ни одно отдельное взаимодействие с базой данных не может иметь побочных эффектов для других взаимодействий. Нет проблем с одновременным чтением или записью.добавление в GraphDB EE, когда пользователь выполняет одно обновление, содержащее несколько выражений «вставить где» и / или «удалить где», разделенных знаком «;», в таком случае каждое из последующих выражений может «видеть» изменения при оценке из предыдущихв том же обновлении, но область действия - то же составное обновление. Движок не поддерживает одновременные записи, потому что мы не можем гарантировать согласованность данных, в частности, когда речь идет о логическом выводе.

...