2016-10-10 4 views
0

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

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

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) 

Источник и примеры использования можно найти на official documentation.

+0

Благодарим вас за ответ, но проблема в том, что приведенный выше пример работает только с не удаленными базами данных, и большинство корпоративных приложений используют удаленный DB –

+0

Вы правы, но есть только этот параметр. –

Смежные вопросы