MongoDB:递归数据怎么样?

时间:2014-04-29 17:51:21

标签: sql mongodb neo4j rdbms nosql

编辑:我编辑了问题并将"MongoDB: Replicate data in documents vs. "join"" part into this topic on https://softwareengineering.stackexchange.com/

分开

我已经开始使用mongoDB聚合框架构建一些虚拟查询并看到流水线的潜力,子文档结构以避免传统的SQL JOIN等等。

此外,我已经阅读了when to use a document-oriented data base,已检出some MongoDB production deploymentsuse cases examples,并意识到Oracle嵌套表在性能方面不是MongoDB的真正替代方案

我还检查了the Diaspora MongoDB use case,其中他们解释了递归数据问题,证明图形数据库更适合这种情况: enter image description here

最后,为了在我以前的标准化头脑中构建所有这些信息,我想知道您对以下结论的看法

  1. 如果你有递归数据(比如the Diaspora example),你应该使用像neo4j这样的图形数据库。
  2. 在每个文档中复制数据与“加入”示例:问题分为this one
  3. 谢谢!

1 个答案:

答案 0 :(得分:4)

  

如果你有递归数据(比如在Diaspora示例中),你应该这样做   使用像Neo4j这样的图形数据库。

如果您有连接的数据,这不符合分层模型,那么您正在寻找图表数据库。

看一下建模为Neo4j GraphGist的Diaspora示例。

Social Network Graph Example from Diaspora

Diaspora Data Model

这是一个非常“图形化”的数据结构。 commenteruserfrienduserlikeruser

图表数据库将此数据结构简化为以下内容:

Diaspora Graph Data Model

使用Cypher可以轻松查询。

MATCH (u:User)-[:FRIEND]-(f)-[:POSTED]->(post) 
WHERE u.name = "Rachel Green" 
RETURN f.name AS friend, post.text AS content

当您的数据如下所示:

Neo4j GraphGist Data Model

使用图表数据库可能是个好主意。