【发布时间】:2014-03-13 20:27:49
【问题描述】:
我想知道是否有任何 Neo4j 等效的存储过程?
当我研究这个时,我遇到了events,但我发现它们更像是触发器而不是存储过程。
【问题讨论】:
标签: nosql neo4j graph-databases
我想知道是否有任何 Neo4j 等效的存储过程?
当我研究这个时,我遇到了events,但我发现它们更像是触发器而不是存储过程。
【问题讨论】:
标签: nosql neo4j graph-databases
基本上有两种技术可以扩展 Neo4j 服务器:
这两种技术都需要在 JVM(或其他 JVM 语言)中编写代码,打包一个 jar 文件并将其部署到 Neo4j 服务器。
【讨论】:
自版本 3.0 起,存储过程可作为 Cypher 语言中的 CALLABLE 功能使用
编辑
随着 Neo4J 3.0 于 16 年 4 月发布,存储过程成为官方的、获得 Apache 2.0 许可的存储库。
可用的程序范围从数据操作/导入到空间和复杂图形算法(例如,Page Rank、Dijkstra、社区检测、中介中心性、接近中心性等)
【讨论】:
我在这里的回答并没有直接回答这个问题(Stefan 的回答很好)。话虽如此,如果你们中的任何人正在考虑在项目实际用于生产之前(在撰写本文时是 Neo4j 用户群的绝大多数)之前编写服务器插件(以获得存储过程行为),我强烈建议不这样做。
服务器插件为您的项目增加了架构复杂性。您将需要 JVM 开发人员来维护它们。部署或更新它们可能很棘手,并且相关的源代码控制方法也不直观。 Neo4j 不需要架构迁移,这使您作为开发人员的工作更加轻松。添加服务器插件将不再给您带来这种好处,并且由于它不是 Neo4j 的主流用例,因此您从开发者社区获得的帮助很少,与该功能相关的改进和错误修复将在Neo4j 团队。
所有这些都可能是为了稍微提高性能,或者根本没有。
“存储过程”(或使用服务器插件等)是在性能调优方面具有的重要功能,但如果您的团队仍然是车库里的两个人,甚至不要考虑走这条路.
【讨论】: