事务中的GraphDB读取、检查和更新

事务中的GraphDB读取、检查和更新,graphdb,Graphdb,我最近一直在阅读关于GraphDB的文章,其中提到GraphDB是一种耐酸剂。但是,关于它的进展情况的文档非常有限。我正在开发一个RESTAPI,想知道如何用GraphDB解决更新丢失的问题。对于每个资源,我们的API都返回一个Etag。当客户端想要更新他们需要提供etag的资源时。然后在一个事务中,我想检查客户机提供的etag是否与数据库中的etag匹配,然后再进行更新。在高并发使用情况下,可能有多个客户端可以提供相同的etag,如果etag检查和更新不在同一事务中,则一个事务可以覆盖来自其他

我最近一直在阅读关于GraphDB的文章,其中提到GraphDB是一种耐酸剂。但是,关于它的进展情况的文档非常有限。我正在开发一个RESTAPI,想知道如何用GraphDB解决更新丢失的问题。对于每个资源,我们的API都返回一个Etag。当客户端想要更新他们需要提供etag的资源时。然后在一个事务中,我想检查客户机提供的etag是否与数据库中的etag匹配,然后再进行更新。在高并发使用情况下,可能有多个客户端可以提供相同的etag,如果etag检查和更新不在同一事务中,则一个事务可以覆盖来自其他事务的更改。我的问题是,在GraphDB中,是否可以在执行检查时获取某种读锁,以便没有其他事务可以更新该值

GraphDB完全符合ACID数据库()。您可以安全地拥有多个用户,并且与数据库的单个交互不会对其他交互产生副作用。并发读写没有问题。此外,在GraphDB EE中,当用户执行包含多个“插入where'和/或删除where'表达式,以“;”分隔”在这种情况下,当从同一更新中的先前表达式求值时,每个后续表达式都可以“看到”更改,但范围是相同的复合更新。引擎不支持并发写入,因为我们无法保证数据的一致性,特别是在涉及推断的情况下。

您可以在INSERT WHERE update中添加etag检查。如果etag不匹配,则insert将不插入三元组