1

我一直在将我的代码从使用没有事务的 TDB 支持的模型转换为使用有事务的 TDB 支持的模型。没有交易,据我所知(也来自这个邮件列表帖子),没有交易,在修改数据集后,有必要调用model.close()以确保数据集正确同步并且自动同步dataset.sync()

我注意到有两组控制事务的方法:
dataset.begin()and dataset.commit(), etc
model.begin()and model.commit(), etc

这两组方法有什么区别?呼叫是否model.commit()以与自动处理dataset.commit()相同的方式执行?model.close()dataset.sync()

我希望这很清楚

4

1 回答 1

0

model.commit()是在 SPARQL 中发明 RDF 数据集之前,当模型存储单元时设计的旧接口。

dataset.begin采用读/写标志。dataset.begin(ReadWrite.READ). 通过知道它是一个读取事务,系统可以更有效地进行(以后没有可能写入的管理员),并且锁定也没有问题(两个事务在对其他视图进行读取时都尝试启动写入操作)。

TDB 事务是完全可序列化的并且在数据集级别工作。

TDB 事务允许写入程序在旧的读取事务仍处于活动状态时启动,因为自从读取事务开始以来新写入程序已提交的任何深度。不同的事务看到数据库的不同状态,每个状态都是一致的。没有脏读。

于 2012-07-31T17:08:10.003 回答