使用来自python的neo4J(服务器)进行交易

问题描述 投票:2回答:2

我目前正在使用python / flask构建Web服务,并希望在neo4j之上构建我的数据层,因为我的核心数据结构本质上是一个图形。对于这种情况,我对neo4j提供的不同技术感到困惑。特别是:

  1. i最初计划通过py2neo使用REST Api,但是缺少事务有点问题。

  2. “嵌入式数据库” neo4j似乎不太适合我的情况。我想这在处理批处理和一次性分析时非常有用,并且不需要将数据库存储在Web服务器之外的其他服务器上。

  3. 我偶然发现了neo4django项目,但是我不确定这个项目是否提供交易支持(因为没有针对python的neo4j的本机客户端),如果在django之外使用它会是一个问题。实际上,在查看了项目的文档之后,我觉得它具有完全相同的局限性,也就是没有事务(但是,当您在一次连接超时后就可以破坏模型时,如何构建真实的服务?) 。我什至不了解该项目的用途。

有人可以推荐任何东西吗?我感到完全卡住了。

谢谢

python flask neo4j py2neo
2个回答
5
投票

REST API客户端均无法明确支持(适当)事务,因为该功能无法通过Neo4j REST API界面使用。有一些替代方案,例如Cypher查询和批处理执行,它们都在服务器端的单个原子事务中运行;但是,对于客户应用程序,我的一般方法是尝试构建可以优雅地处理部分完整数据的代码,从而无需显式事务控制。

通常,这种方法会大量使用唯一索引,这就是我在py2neo中提供了大量“ get_or_create”类型方法的原因之一。 Cypher本身非常强大,并且还提供了唯一性功能,特别是通过CREATE UNIQUE子句。使用这些,您可以使写入成为幂等,并且可以知道“不会多次重复”,因此可以安全地“多次执行”错误。

同意,这种方法本身并不能为您提供交易,但是在大多数情况下,它可以为您提供同等的最终结果。挑战一下您在应用程序中的什么位置[]确实值得挑战。希望这会有所帮助

奈杰尔


2
投票
[我认为neo4django使用了neo4j-rest-client,它确实支持Neo4j REST接口中通过batch resource进行的事务。
© www.soinside.com 2019 - 2024. All rights reserved.