2

作为我正在开发的 CMS 的一部分,我将 MongoDB 作为主要数据存储,它提供给 ElasticSearch 和 Redis。所有这些都是以授权方式配置的。

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

现在,在充实此 Json api 支持的查询类型时,我遇到了当前设置不(有效)支持的一类查询:基于图形的查询,如朋友之友、RDF 查询、等等我也想支持的东西。

所以我正在寻找一种将 GraphDB 引入这个生态系统的最合适的方法。我可能应该说应用层位于 Node.js 中。

我遇到过很多比较 Neo4J(一种流行的 GraphDB)与 MongoDB 的文章,但实际上并没有太多的实际用例,以及两者相辅相成的现实世界场景。

任何指针高度赞赏。

4

2 回答 2

5

您可能想看看 structr[1],它有一个 RESTful 图形数据库后端,您可以使用 Java bean 进行配置。在未来的版本中,将有一个仅使用 REST 调用的配置选项,以便您可以启动 structr 服务器并将其配置和用作独立的图形数据库后端。

只需在 Twitter 上或通过电子邮件联系我们。

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

[1] http://structr.org

于 2013-02-03T15:45:18.507 回答
2

数据库非常互补。

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

一个伟大的架构是将您的非结构化数据存储在 MongoDB 中,并使用作业将它们加载到 Neo4j 中。如果您发现要在图表中存储新信息以进行额外分析,这允许您重新加载图表。

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

于 2013-05-06T18:01:14.253 回答