“必须在事务中执行每个变异事务”对于数据库意味着什么?

时间:2012-06-18 18:29:01

标签: database transactions neo4j

在阅读Neo4j手册时发现这一点,特别是here,我发现了这句话:

“所有变异交易都必须在交易中执行。”

显然,变异交易不仅仅是后一类交易。有人可以帮助澄清这些事物与数据库之间的关系吗?

3 个答案:

答案 0 :(得分:2)

应该说所有变异的操作都应该在事务中执行。变异操作就像创建或更新节点/关系,或者向索引添加内容。

如果您直接使用Java API(即不是REST API),则必须在事务中包装每个create或update方法。

这是一个创建和索引节点的示例,包含在事务中:

https://github.com/espeed/bulbs/blob/master/bulbs/neo4jserver/gremlin.groovy#L11

请注意,上面的代码是Neo4j Java API,但它正在Groovy脚本中使用。

您可以通过Neo4j Server Gremlin-Groovy插件执行Groovy脚本。这意味着您可以通过REST访问整个Neo4j Java API。

答案 1 :(得分:1)

我认为这是一个小错字,更好地读作该部分的标题:

  

在事务中包装变异操作

此处的操作意味着对修改模型的模型的任何访问(例如,在链接的示例中添加新节点或关系)。为了保持数据库的一致性,您可以在事务中包装这些修改操作,以便全部成功或不成功,避免使数据库处于不一致状态

答案 2 :(得分:1)

感谢您提出建议,更新了措辞,请参阅https://github.com/neo4j/community/commit/ba94448d495e6d9fec8877bd32bd5edf0936b621

这样更好吗?