Mik*_*nes 15 mongodb neo4j nosql
我正在开始一个新项目,我正在寻找使用MongoDB作为文档存储工具和Neo4j作为映射文档之间关系的机制,然后我想通过rest API公开我的查询结果.人们会说这样做的优点和缺点是什么?是否有更好的方法可以使用不同的NoSQL文档存储来实现这一目标?有没有人可以在网上找到有人试图做类似事情的例子?
如果你喜欢的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的创始人.
您可能对Mongo Connector的Neo4j 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