【问题标题】:Stored procedure in Neo4jNeo4j 中的存储过程
【发布时间】:2014-03-13 20:27:49
【问题描述】:

我想知道是否有任何 Neo4j 等效的存储过程? 当我研究这个时,我遇到了events,但我发现它们更像是触发器而不是存储过程。

【问题讨论】:

    标签: nosql neo4j graph-databases


    【解决方案1】:

    基本上有两种技术可以扩展 Neo4j 服务器:

    1. Server plugins 丰富现有的 REST 端点并
    2. unmanaged extensions 允许您创建新的 REST 端点

    这两种技术都需要在 JVM(或其他 JVM 语言)中编写代码,打包一个 jar 文件并将其部署到 Neo4j 服务器。

    【讨论】:

    • 但非托管扩展更通用且更易于使用(恕我直言)。
    • 服务器插件和非托管扩展都没有提供 Jack 正在寻找的存储过程功能。
    • 我不同意,存储过程基本上是在服务器上运行的一些代码——这正是非托管扩展或服务器插件所做的。
    • 谢谢。这些插件似乎与存储过程最接近。
    • 我希望有一天我们可以通过 Cypher 访问这些插件。根据我的经验,neo4j 服务器插件很容易制作。但是,对 REST 的依赖削弱了它们的使用,特别是现在 Cypher 正日益成为在 neo4j 中访问数据的主要方式。
    【解决方案2】:

    自版本 3.0 起,存储过程可作为 Cypher 语言中的 CALLABLE 功能使用

    编辑

    随着 Neo4J 3.0 于 16 年 4 月发布,存储过程成为官方的、获得 Apache 2.0 许可的存储库。

    https://neo4j.com/labs/apoc/

    可用的程序范围从数据操作/导入到空间和复杂图形算法(例如,Page Rank、Dijkstra、社区检测、中介中心性、接近中心性等)

    【讨论】:

      【解决方案3】:

      我在这里的回答并没有直接回答这个问题(Stefan 的回答很好)。话虽如此,如果你们中的任何人正在考虑在项目实际用于生产之前(在撰写本文时是 Neo4j 用户群的绝大多数)之前编写服务器插件(以获得存储过程行为),我强烈建议这样做。

      服务器插件为您的项目增加了架构复杂性。您将需要 JVM 开发人员来维护它们。部署或更新它们可能很棘手,并且相关的源代码控制方法也不直观。 Neo4j 不需要架构迁移,这使您作为开发人员的工作更加轻松。添加服务器插件将不再给您带来这种好处,并且由于它不是 Neo4j 的主流用例,因此您从开发者社区获得的帮助很少,与该功能相关的改进和错误修复将在Neo4j 团队。

      所有这些都可能是为了稍微提高性能,或者根本没有。

      “存储过程”(或使用服务器插件等)是在性能调优方面具有的重要功能,但如果您的团队仍然是车库里的两个人,甚至不要考虑走这条路.

      【讨论】:

        猜你喜欢
        • 2016-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-23
        • 2010-09-15
        • 2017-01-01
        • 2012-06-15
        相关资源
        最近更新 更多