Пессимистическая блокировка в OrientDB graph API

#orientdb

#orientdb

Вопрос:

Я создаю систему в OrientDB, у меня есть несколько случаев, когда мне нужно создать систему, в которой несколько потоков добавляют ребра к определенной вершине и обновляют свойство в этой вершине. Мой вопрос в том, есть ли какой-либо метод, с помощью которого я могу блокировать операции над этой вершиной до тех пор, пока другие потоки не завершат блок кода этого блока как для чтения, так и для записи?

В моем случае у меня есть вершина для отеля и количество доступных номеров в качестве объекта недвижимости, любое бронирование, мой код будет работать в следующем порядке

1- Убедитесь, что размер оставшихся комнат больше 1

2- Создайте ребро для клиентской вершины

3- Уменьшите количество доступных комнат на единицу

Ответ №1:

OrientDB имеет оптимистичную систему управления параллелизмом, но при очень высоких одновременных обновлениях нескольких записей может быть более эффективной блокировка записей, чтобы избежать повторных попыток. Вы можете синхронизировать доступ самостоятельно или с помощью API хранилища. Обратите внимание, что это работает только с удаленными базами данных.

 ((OStorageEmbedded)db.getStorage()).acquireWriteLock(final ORID iRid)
((OStorageEmbedded)db.getStorage()).acquireSharedLock(final ORID iRid)
((OStorageEmbedded)db.getStorage()).releaseWriteLock(final ORID iRid)
((OStorageEmbedded)db.getStorage()).releaseSharedLock(final ORID iRid)
  

Источник и примеры использования можно найти в официальной документации.

Комментарии:

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