对orientDB图API的悲观锁定

时间:2016-10-10 12:14:11

标签: orientdb

我在orientDB中创建一个系统我有一些情况需要让系统中多个线程将边添加到某个顶点并更新该顶点上的属性。 我的问题是,有什么方法可以阻止对这个顶点的操作,直到其他线程为读取和写入完成这个块的代码块?

我的情况我有酒店的顶点和可用房间的数量作为财产,任何预订,我的代码将按以下顺序工作

1-确保剩余房间大小超过1

2-为客户顶点创建边缘

3-减少可用房间数量

1 个答案:

答案 0 :(得分: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上找到使用的来源和示例。