我如何在 neo4j 中使用并行事务?

How can i use parallel transactions in neo4j?

我目前正在开发一个使用 Neo4j 作为嵌入式数据库的应用程序。

而且我想知道如何确保单独的线程使用单独的事务。通常,我会将数据库操作分配给事务,但我发现的代码示例不允许确保写操作使用单独的事务:

try (Transaction tx = graphDb.beginTx()) {
    Node node = graphDb.createNode();
    tx.success();
}

由于 graphDB 应用作线程安全的单例,我真的不明白这将如何工作...(例如,对于多个用户在单独的事务中创建购物清单。)

如果能指出我对 Neo4j 中事务概念的误解,我将不胜感激。

致以最诚挚的问候,并在此先致谢, 奥利弗

Neo4j 事务管理

为了充分维护数据完整性并确保良好的事务行为,Neo4j 支持 ACID 属性:

原子性:如果事务的任何部分失败,数据库状态将保持不变。

一致性:任何事务都会使数据库处于一致状态。

隔离:在一个事务中,修改后的数据不能被其他操作访问。

持久性:DBMS 始终可以恢复已提交事务的结果。

具体来说:

-所有访问图形、索引或架构的数据库操作都必须在事务中执行。

以下是了解 Neo4j 事务的一些有用链接 http://neo4j.com/docs/stable/rest-api-transactional.html

http://neo4j.com/docs/stable/query-transactions.html

http://comments.gmane.org/gmane.comp.db.neo4j.user/20442

如果由多个线程执行,您发布的代码 运行 在单独的事务中,每个线程一个事务。

实现这一点的方法(这是一种很常见的模式)是根据 ThreadLocal 存储事务状态(阅读 Javadoc,事情就会变得清晰)。