mongodb - 我应该使用 MongoDB 还是 Neo4j

标签 mongodb neo4j

<分区>

我想将多用户提要阅读器从 MySQL 迁移到 NoSQL 数据库,但我无法决定 MongoDB 还是 Neo4j 更适合该应用程序。

这是当前的数据库架构: Current database schema

该应用程序具有以下用例:

用户:

  • 添加/删除/激活用户

订阅:

  • 添加订阅(订阅的标题应由用户编辑)
  • 删除一个用户的订阅(以及没有其他用户订阅时的提要)
  • 列出用户的所有订阅(应显示未读条目数)

条目:

  • 列出用户的所有条目(必须可按提要、书签标志和阅读标志过滤)
  • 获取单个条目(将自动标记为已读)

书签:

  • 为条目添加书签
  • 删除书签

您会推荐哪个数据库?我的直觉说 MongoDB 是因为我没有“高度互连”的数据,但我在迁移 user_entries 表时遇到了问题。或许您有一些关于如何与 MongoDB 建立这种关系模型的技巧?

更新:Neo4j 的优势在于我可以将它嵌入到我的 Java 应用程序中。我使用 Spring Data Neo4j/MongoDB 和 QueryDSL 作为数据访问层。据我了解,Spring Data MongoDB 会自动将所有关联 (@DbRef) 映射到一个文档中,这可能会随着条目数量的增加而导致非常巨大的开销。另一方面,我可以使用此处所述的手册引用:http://docs.mongodb.org/manual/reference/database-references/

最佳答案

免责声明:因为我在为 Neo4j 工作,所以我的观点可能有偏见。

有一个记录良好的事件流图模型,称为“graphity”。已说明 here (似乎链接暂时关闭,使用 variant from web.archive )。 Neo4j manual 中也引用了它.

此模型看起来非常接近您的需要,但可能需要进行一些更改。但这绝对是一个很好的起点。

关于mongodb - 我应该使用 MongoDB 还是 Neo4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20898742/

相关文章:

mongodb - 模型结构中的嵌套文档

neo4j - 密码:ThisShouldNotHappenError:此执行计划不应该存在

neo4j - 无法连接到 Neo4j 3.5.14 社区版服务器

javascript - 使用 $or 在 mongoose 中复杂化多个查询

node.js - 升级到最新版本 1.2.1 后启动 meteor 时出错

node.js - 如何阻止数据库重复项目

mongodb - 在生产 MongoDB 上运行 db.stats() 时担心无效的 BSONObj 错误

Neo4j/密码 : Convert string to double

elasticsearch - Docker 中的 Neo4j - 最大堆大小导致硬崩溃 137

Neo4j Cypher,仅返回指定关系