我已经开始使用mongoDB聚合框架构建一些虚拟查询并看到流水线的潜力,子文档结构以避免传统的SQL JOIN等等。
此外,我已经阅读了when to use a document-oriented data base,已检出some MongoDB production deployments和use cases examples,并意识到Oracle嵌套表在性能方面不是MongoDB的真正替代方案
我还检查了the Diaspora MongoDB use case,其中他们解释了递归数据问题,证明图形数据库更适合这种情况:
最后,为了在我以前的标准化头脑中构建所有这些信息,我想知道您对以下结论的看法:
谢谢!
答案 0 :(得分:4)
如果你有递归数据(比如在Diaspora示例中),你应该这样做 使用像Neo4j这样的图形数据库。
如果您有连接的数据,这不符合分层模型,那么您正在寻找图表数据库。
看一下建模为Neo4j GraphGist的Diaspora示例。
Social Network Graph Example from Diaspora
这是一个非常“图形化”的数据结构。 commenter
为user
,friend
为user
,liker
为user
。
图表数据库将此数据结构简化为以下内容:
使用Cypher可以轻松查询。
MATCH (u:User)-[:FRIEND]-(f)-[:POSTED]->(post)
WHERE u.name = "Rachel Green"
RETURN f.name AS friend, post.text AS content
当您的数据如下所示:
使用图表数据库可能是个好主意。