我今天一直在看 Neo4j,我觉得它令人兴奋。我想知道是否有与 Neo4J 高度集成的 Web 应用程序框架?基本上我想开始尝试 Neo4J,我想也许有明显的 web 框架选择,如果有,我也想尝试一下。你知道任何?
8 回答
编辑:我把它全部收回,在 Neo4j 网站上有一个。:p
EDIT2:我会检查这个页面:
http://www.neo4j.org/develop/drivers
其中有不少,但我不知道其中有多少是“高度”集成的。
您还可以查看 Structr ( https://structr.org )。
(免责声明:我是Structr的项目发起人)
好吧,我认为使用 Cypher,任何框架都非常易于使用,它只是您需要访问的一个 REST 端点。我在使用 Node.js、Neography/Ruby,当然还有 JDBC over REST/Java 方面有很好的经验。
我在众多客户项目中使用 XN 框架 ( http://xnlogic.com/xn-framework ) 取得了巨大的成功。它不是免费的,但是,它的功能集很荒谬,并且有很多我在几乎每个客户参与时都被要求的功能(例如,开箱即用的审计/合规性和细粒度的安全性,有人吗?)。它一直在工作,我从第一手经验知道它得到了极好的支持,这使得企业应用程序开发比传统方式容易得多。作为一个整个职业生涯都在这个领域工作的人,我无法告诉你这让我的生活变得多么轻松,以及我能够为我的客户带来多少附加价值。
此外,如果可以的话,它的速度非常快,而且它的 DSL 简单且具有惊人的表现力。
在开源项目中,我使用了 Michael Hunger 的 Spring Data Neo4j (SDN) 框架,我发现它足以让整个团队开始工作并使用 Neo4j 运行。它还减少了刚接触图形数据库的团队的学习曲线(老实说,除了一些基础知识之外,大多数开发团队甚至不需要了解太多关于图形数据库的知识)。它也处于开发和改进的过程中,下一个版本的 RC 即将发布,新的主要版本也将在不久的将来发布。Michael 显然与 Neo4j 有着密切的联系,所以你知道它的质量和实施得很好。
希望这可以帮助!
Coils 专为构建 Neo4j WebApps 而设计:
我肯定会查看 neo4j gem(免责声明:我是维护者之一)。ActiveNode
它提供了一种非常丰富的方式来使用和ActiveRel
模型访问 neo4j 数据库。您不仅可以使用类似 的库执行许多基本操作,还ActiveRecord
可以轻松执行利用 Neo4j 强大功能的深度查询,如下所示:
# Find all blog posts written by people who have commented on the blog_post in question
blog_post.comments.author.posts
# Find the number of distinct students that the instructor in question
# has in common with other instructors
instructor.lessons.students(:student).lessons.
instructor(:other_instructor).pluck(:other_instructor, 'count(DISTINCT student)')
这不仅是在 Ruby 中编写 cypher 语句的一种非常好的方式,而且您还可以制作查询的一部分并将其传递给不同的地方以不同的方式构建以进行 DRY 查询。
您可能还想查看 ANNE 堆栈: https ://github.com/mchengal/ANNE-stack
它类似于 MEAN 堆栈,但使用的是 Neo4j 而不是 MongoDB。
如果你喜欢 php,你可以试试Yii2框架。Neo4j 没有官方支持,但是 Yii2 在缓存方面做得很好,所以你可以使用 neo4j 的 php 驱动程序,另外你需要做的就是使用 Yii2 的Data Caching缓存你的查询。
你甚至可以创建自己的ActiveRecord类,这样你就可以使用 neo4j 和 Yii2 的原生函数来查询和显示数据。
我过去曾使用此存储库制作过一个项目,但它适用于较旧版本的 neo4j。因此,除非您想使用以前版本的 neo4j,否则最好避免这种情况。
通常,您选择使用的任何框架都可能不支持 neo4j,但您始终可以使用该语言的驱动程序之一。您将面临的唯一问题是缓存,因此您最好选择一个框架,您可以轻松地为您的查询集成数据缓存,并且一切顺利。
我是说缓存是唯一重要的事情,因为即使你找到了一个原生支持 neo4j 的框架,你最终也会创建原始查询。图数据库可以执行如此复杂的查询,而这些查询很难在框架中实现所有功能。