我想将多用户提要阅读器从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/
答案 0 :(得分:4)
免责声明:因为我在为Neo4j工作,所以我的观点可能有偏见。
有一个记录良好的活动流图形模型称为“图形”。它是examplained here(似乎链接暂时关闭,使用variant from web.archive)。它也在Neo4j manual中引用。
此模型看起来非常接近您的需求,但可能需要进行一些更改。但这绝对是一个很好的起点。
答案 1 :(得分:2)
这是一个非常主观的问题;在不知道应用程序的查询模式是什么的情况下,很难在这里提供良好的可靠建议。您在这里给出的一些更简单的用例就像添加一两个新对象一样,它可能会让您选择哪一个产生很大的不同。
根据您提供给我们的有限信息,似乎要么做得很好 - 但如果我有更多关于您情况的信息,我可能会有不一样的感受。
我会提出mongo非常弱的建议,因为这个原因 - neo4j真正做的关键事情之一就是路径关联查询(想想"朋友的朋友"风格查询)。这是一个吹嘘竞争的领域,我不会看到对neo4j提供的那种或其他特殊酱汁的迫切需求。这并不是说neo4j不能这样做(它完全可以)只是你的应用程序看起来不像在其特定的强度区域中使用neo4j而不是替代方案。