【问题标题】:Neo4j and algorithmsNeo4j 和算法
【发布时间】:2016-01-05 19:10:28
【问题描述】:

我在学校项目中使用 Neo4j。

我的评估包含为图形数据库(Neo4j)编写算法并在服务器模式下执行它们。据我所知,在 Neo4j 中,你只能在 Cypher 中做到这一点,这对于编写更复杂的算法来说是不够的。

是否有任何其他可能性、插件或框架,可以提供更复杂的算法编写并在服务器模式下运行它们?

【问题讨论】:

  • 根据你的项目,你可以开发一个非托管扩展,查看开源模板here

标签: database algorithm graph neo4j


【解决方案1】:

是的,有办法。在 Neo4j 的世界中,我们称之为Unmanaged Extension

如果您正在寻找一个可以帮助您编写该扩展的框架,我建议您查看GraphAware Neo4j Framework

【讨论】:

    【解决方案2】:

    那么,你想制作一些算法吗? Neo4j 有适合你的工具!

    嵌入式模式

    嵌入式模式很简单:

    1) 将neo4j embedded 添加到您的项目中。
    2)Create你的GraphDatabaseService
    3) 开始编码。

    API 层

    Neo4j 提供 3 个 API 层。

    核心 API
    最底层的一种。它包含GraphDatabaseService::createNode()GraphDatabaseService::findNode()Node::createRelationshipTo()等方法。使用这个是真正的裸机。

    遍历 API
    这是一个很好的框架,可以进行任何类型的遍历。可能这就是您正在寻找的来实现算法。
    入口点 - GraphDatabaseService::traversalDescription()

    密码 API
    这是 Neo4j 的真正力量。 Cypher 可用于获取相当复杂的图形相关问题的答案。
    入口点——GraphDatabaseService::execute()

    其他内容
    也许您应该查看 Neo4j 附带的graph alghoritms。 Neo4j 服务器 REST API 也有一些可用的图形算法。而here 你可以找到包含 Neo4j 资源的列表(也许有一些对你来说很有趣的东西)。

    服务器

    但这并不好玩。谁想扩展服务器,让每个人都可以访问我们花哨的算法?

    在为 Neo4j 服务器编写扩展时,您还使用GraphDatabaseService 与数据库进行交互。

    注意: 有规则 - 如果您创建的库具有与 GraphDatabaseService 一起使用的服务,那么您可以在任何地方重用它(嵌入式模式、插件、扩展等)。

    插件

    您可以创建server plugin。可能这是您正在寻找实现算法的东西。此选项可轻松创建 REST 端点,该端点在请求时接受一些数据,并可以在响应时返回图形数据。

    Server plugin example developed by me.

    非托管扩展

    其他选项 - unmanaged extension。这个给你真正的力量。但请记住 - 权力越大,责任越大。
    您将负责处理所有输入和输出。

    Unmanaged extension example developed by me.

    图形感知

    GraphAware framework 可以给你一些很好的工具来开发 Neo4j 扩展。你应该试一试。

    【讨论】:

      猜你喜欢
      • 2018-07-24
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多