Ben*_*n G 2 python neo4j flask py2neo
我目前正在使用python/flask构建一个Web服务,并希望在neo4j之上构建我的数据层,因为我的核心数据结构本质上是一个图形.我对neo4j为这种情况提供的不同技术感到有些困惑.特别是:
1/i最初计划使用REST Api到py2neo,但缺少事务是一个问题.
2 /"嵌入式数据库"neo4j似乎不太适合我的情况.我认为当您使用批量和一次性分析时,它非常有用,并且不需要将数据库存储在与Web服务器不同的服务器上.
3 /我偶然发现了neo4django项目,但我不确定这个项目是否提供事务支持(因为没有本地客户端可以使用neo4j for python),如果在django本身之外使用它会有问题.事实上,在查看了项目的文档之后,我觉得它有完全相同的限制,即没有事务(但是,当你在单个连接超时时可以破坏模型时,如何构建实际服务?) .我甚至不明白该项目的用途.
任何人都可以推荐一下吗?我觉得完全卡住了.
谢谢
REST API客户端都不能显式支持(正确)事务,因为通过Neo4j REST API接口无法使用该功能.有一些替代方案,例如Cypher查询和批处理执行,它们都在服务器端的单个原子事务中运行; 但是,我对客户端应用程序的一般方法是尝试构建可以优雅地处理部分完整数据的代码,从而无需显式事务控制.
通常,这种方法会大量使用唯一索引,这也是我在py2neo中提供了大量"get_or_create"类型方法的原因之一.Cypher本身非常强大,并且还提供了唯一性功能,特别是通过CREATE UNIQUE子句.使用这些,您可以使您的写入具有幂等性,并且您可以在"不止一次"这样做的过程中犯错,因为您不会最终获得重复数据.
同意,这种方法本身并不能为您提供交易,但在大多数情况下,它可以为您提供相同的最终结果.对于您的应用程序事务中真正需要的位置来说,当然值得挑战自己.
希望这可以帮助
奈杰尔