我应该使用 MongoDB 还是 Neo4j

Pat*_*ard 2 mongodb neo4j

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

这是当前的数据库架构: 当前数据库架构

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

用户:

  • 添加/删除/激活用户

订阅:

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

条目:

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

书签:

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

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

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

Ste*_*ter 5

免责声明:由于我为 Neo4j 工作,因此我的观点可能有偏见。

有一个记录良好的活动流图形模型,称为“图形性”。它在此处进行了说明(似乎链接暂时关闭,请使用web.archive 中变体)。它也在Neo4j 手册中被引用。

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