我如何在 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
如果由多个线程执行,您发布的代码 将 运行 在单独的事务中,每个线程一个事务。
实现这一点的方法(这是一种很常见的模式)是根据 ThreadLocal 存储事务状态(阅读 Javadoc,事情就会变得清晰)。
我目前正在开发一个使用 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
如果由多个线程执行,您发布的代码 将 运行 在单独的事务中,每个线程一个事务。
实现这一点的方法(这是一种很常见的模式)是根据 ThreadLocal 存储事务状态(阅读 Javadoc,事情就会变得清晰)。