一起使用MongoDB和Neo4j

Mik*_*nes 15 mongodb neo4j nosql

我正在开始一个新项目,我正在寻找使用MongoDB作为文档存储工具和Neo4j作为映射文档之间关系的机制,然后我想通过rest API公开我的查询结果.人们会说这样做的优点和缺点是什么?是否有更好的方法可以使用不同的NoSQL文档存储来实现这一目标?有没有人可以在网上找到有人试图做类似事情的例子?

vik*_*ing 13

我一直在考虑将这两者结合使用一段时间,因为我的数据已经在mongodb中了.但我不想再增加现有架构的DB顶部,因为添加neo4j将需要更多资源,例如内存,磁盘空间,更不用说投入维护2个DB的时间.

我能想到的另一个问题是,当您使用mongodb对数据进行分片时,您还必须使用这些新分片来管理您的neo4j数据.neo4j中的扩展是通过集群完成的,它是商业版的一部分,是商业版.

我做了进一步的研究,发现OrientDB可以将数据存储为文档及其图形数据库.

另一种方法是在MongoDB本身中构建关系,并在此基础上编写逻辑,并通过REST API公开此逻辑.


Axe*_*ner 5

如果你喜欢的Neo4j,你应该看看Structr(https://github.com/structr/structr,http://structr.org).

使用Structr,您可以在Neo4j之上定义自定义模式(在Java中,或者从0.7开始,甚至通过UI),它将为您创建一个(几乎)生产就绪的RESTful JSON API.

JSON"文档"由Structr实时创建,作为Neo4j中子图的任何聚合或映射.这允许您在同一数据上定义任意数量的不同视图.

Structr具有内置功能,如搜索(全文,关键字/精确,具有Neo4j空间的位置范围),分页,排序,约束,用户/组,访问控制,类似cron的后台作业,维护命令和补充用于CRUD操作和基本CMS功能的(beta)UI.

免责声明:我是Structr的创始人.


Wil*_*yon 5

您可能对Mongo ConnectorNeo4j Doc Manager感兴趣.它是Mongo Connector项目的扩展,允许从MongoDB到Neo4j的实时单向同步数据.插入MongoDB的文档将转换为属性图并自动插入到Neo4j中.可以配置从Mongo到Neo4j同步的集合和字段.

这里的想法是促进在单个应用程序中一起使用Neo4j和MongoDB,而无需在应用程序层中编写代码来同步数据.


小智 5

我们最终使用 Neo4j 作为“索引”来进行路由计算(在公共汽车/火车搜索中)。大部分数据存储在 MongoDB 中。我们使用 MongoConnector 作为同步两个数据库的方法。Mongo 在处理原始 JSON 数据方面表现出色。

我们最初尝试在 Neo4j 中存储“所有内容”,但随后查询开始需要 2 分钟,因此之后我们只存储了必要的最少数据。此外,Neo4j 对您可以索引的内容有限制。例如,它们没有“日期”类型,因此日期范围查询很麻烦。当你有一个“超级节点”时,你也会遇到问题,一个具有数千或数十万个链接(关系)的节点。关系在 Neo4j 中存储为链接列表,因此随机访问可能非常慢(用于查找关系)。

你必须对如何使用 Neo4j 很挑剔,最终我们将它用于最短路径计算/搜索,这是 Neo4j 的优势。

有关更多详细信息,请查看我们在 GraphConnect NY 2013 上的发现的视频和演示:https ://vimeo.com/79477603