我在学校项目中使用Neo4j。
我的任务包括为图形数据库(Neo4j)编写算法并在服务器模式下执行它们。据我所知,在Neo4j中,你只能在Cypher中做到这一点,这对于编写更复杂的算法来说还不够好。
是否有其他的可能性,插件或框架,提供更复杂的算法编写和运行在服务器模式?
是的,有一个方法。在Neo4j中我们称之为非托管扩展
如果你正在寻找一个框架,这将有助于你写扩展,我建议你看看graphhaware Neo4j框架。
那么,您想要制作一些算法?Neo4j为您提供了工具!
<标题>嵌入模式h1> 入式模式很简单:1)添加neo4j嵌入到您的项目。2)创建你的GraphDatabaseService
3)开始编码
Neo4j提供3个API层。
核心API
大多数是低级别的。它包括GraphDatabaseService::createNode()
、GraphDatabaseService::findNode()
、Node::createRelationshipTo()
等方法。使用这一个是真正的裸机。
这是做任何遍历的好框架。可能这就是你正在寻找的来实现算法。
入口点- GraphDatabaseService::traversalDescription()
.
这是Neo4j的真正强大之处。Cypher可以用来获得相当复杂的图形相关问题的答案。入口点-
GraphDatabaseService::execute()
其他东西
也许你应该看看Neo4j附带的图形算法。Neo4j服务器REST API也有一些可用的图形算法。在这里你可以找到Neo4j资源列表(也许有一些你感兴趣的东西)。
但这并不好玩。什么时候想扩展服务器,让每个人都能访问我们的算法?
在为Neo4j服务器编写扩展时,您还使用GraphDatabaseService
与数据库进行交互。
注意:规则有-如果你创建的库服务与GraphDatabaseService
工作,那么你可以在任何地方重用它(嵌入式模式,插件,扩展等)。
您可以创建服务器插件。也许这是你正在寻找实现算法的东西。此选项可轻松创建REST端点,该端点可根据请求接受某些数据,并可在响应时返回图形数据。
由我开发的服务器插件示例。
非托管扩展其他选项-非托管扩展。这个给你真正的能力。但请记住——力量越大,责任越大。
你将负责处理所有的输入和输出。
由我开发的非托管扩展示例。
GraphAware
graphhaware框架可以为您提供一些很好的工具来开发Neo4j扩展。你应该试一试。
标题>标题>