结合MongoDB和像Neo4J这样的GraphDB

时间:2013-02-03 14:28:10

标签: mongodb graph neo4j

作为我正在开发的CMS的一部分,我已经将MongoDB作为主要数据存储区,它提供给ElasticSearch和Redis。所有这些都是伪装配置的。

我目前正在尝试在JSON(一种DSL)中开发一个声明性api,在实现时,它将使我能够在JSON中编写统一查询,但在后端这些数据存储区协同工作以提出结果。联合搜索,如果你愿意。

现在,在充实了这个Json api支持的查询类型的同时,我遇到了一类查询,我目前的设置并没有(有效地)支持这些查询:基于图形的查询,比如朋友的朋友,RDF - 查询,等等我也想支持的东西。

所以我正在寻找一种方法,将GraphDB引入这个生态系统,并且最合适。我应该说应用程序层位于Node.js.

我遇到过很多比较Neo4J(流行的GraphDB)与MongoDB的文章,但没有那么多的实际用例,其中2是补充的真实场景。

任何指针都非常赞赏。

2 个答案:

答案 0 :(得分:5)

您可能需要查看structr [1],它具有可以使用Java bean配置的RESTful图形数据库后端。在将来的版本中,将只有一个使用REST调用的配置选项,这样您就可以启动一个structr服务器并将其配置并用作一个独立的图形数据库后端。

只需通过推特或电子邮件与我们联系。

(免责声明:我是structr的开发者之一,因此这条评论可能不是100%公正的:))

[1] http://structr.org

答案 1 :(得分:2)

数据库非常互补。

使用MongoDB存储原始数据/记录系统,并将原始数据加载到Neo4j中,以获得更多见解/分析。当您处理非结构化数据时,您希望将信息存储在有助于非结构化数据的数据存储中 - MongoDB符合要求(与其他类似的NOSQL数据库一样)。虽然Neo4j被认为是NOSQL数据库,但它不适合非结构化数据。因为你必须确定什么是关系,什么是节点,以及为每个节点存储了什么属性 - 当你有半结构化数据并且对你想要做的分析类型有所了解时,它更适合。

一个出色的架构是将非结构化数据存储在MongoDB中,并使用作业将它们加载到Neo4j中。如果您发现要在图表中存储新的信息以进行其他分析,则可以重新加载图表。

他们绝对不是彼此的替代品。它们适用于非常不同的用例。