model.commit()和dataset.commit()之间的区别

时间:2012-07-25 21:20:08

标签: transactions jena triplestore

我一直在将我的代码转换为使用没有事务的TDB支持模型,而是使用带有事务的TDB支持模型。没有事务,据我所知(也来自this mailing list post)没有事务,在修改数据集后,有必要调用model.close()以确保数据集正确同步并自动执行{{ 1}}。

我注意到有两套控制事务的方法:
dataset.sync()dataset.begin()
dataset.commit()model.begin()

这两套方法有什么区别?调用model.commit()是否与model.commit()相同,dataset.commit()会自动处理model.close()吗?

我希望这很清楚

1 个答案:

答案 0 :(得分:0)

model.commit()是在使用SPARQL发明RDF数据集之前存储单位的模型时设计的旧界面。

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

TDB交易是完全可序列化的,可在数据集级别工作。

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