Neo4j and algorithms



我在学校项目中使用Neo4j。

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

是否有其他的可能性,插件或框架,提供更复杂的算法编写和运行在服务器模式?

是的,有一个方法。在Neo4j中我们称之为非托管扩展

如果你正在寻找一个框架,这将有助于你写扩展,我建议你看看graphhaware Neo4j框架。

那么,您想要制作一些算法?Neo4j为您提供了工具!

<标题>嵌入模式h1> 入式模式很简单:

1)添加neo4j嵌入到您的项目。2)创建你的GraphDatabaseService
3)开始编码

API层

Neo4j提供3个API层。

核心API


大多数是低级别的。它包括GraphDatabaseService::createNode()GraphDatabaseService::findNode()Node::createRelationshipTo()等方法。使用这一个是真正的裸机。

遍历API


这是做任何遍历的好框架。可能这就是你正在寻找的来实现算法。
入口点- GraphDatabaseService::traversalDescription() .

<<p> 密码API/strong>
这是Neo4j的真正强大之处。Cypher可以用来获得相当复杂的图形相关问题的答案。入口点- GraphDatabaseService::execute()

其他东西
也许你应该看看Neo4j附带的图形算法。Neo4j服务器REST API也有一些可用的图形算法。在这里你可以找到Neo4j资源列表(也许有一些你感兴趣的东西)。

<标题>服务器

但这并不好玩。什么时候想扩展服务器,让每个人都能访问我们的算法?

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

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

插件

您可以创建服务器插件。也许这是你正在寻找实现算法的东西。此选项可轻松创建REST端点,该端点可根据请求接受某些数据,并可在响应时返回图形数据。

由我开发的服务器插件示例。

非托管扩展

其他选项-非托管扩展。这个给你真正的能力。但请记住——力量越大,责任越大。
你将负责处理所有的输入和输出。

由我开发的非托管扩展示例。

GraphAware

graphhaware框架可以为您提供一些很好的工具来开发Neo4j扩展。你应该试一试。

最新更新