NOSQL不适合自然加入的数据?

时间:2014-04-23 12:54:13

标签: mongodb rdbms database nosql

刚刚阅读一篇主要关于MongoDB的讲座,其中指出NOSQL不适合自然加入的数据?难道不能理解为什么有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

MongoDB不支持JOIN。原因是MongoDB是为集群构建的,这意味着数据分布在多个独立的服务器上。当JOIN所需的数据分布在网络上的多台机器上时,很难以高效的方式实现它。所以MongoDB开发人员决定不加入连接,这样他们就可以优先考虑可扩展性。

因此,通常通过在子文档中嵌入子文档来建模1:n关系更好。这适用于模拟组合,其中子文档与父文档不可分离(一个发票由多个位置组成),但对于子文档可以切换父项或甚至独立于父文档存在的聚合(一个部门)则非常有效有多名员工)。并且它对n:m关系根本不起作用(一个用户组有多个成员,每个成员可以在多个用户组中)。

当你遇到无法合理嵌入的情况时,你需要模仿应用层的连接,这很慢,因为每个查询都需要多次网络往返。

然而,NoSQL数据库在处理数据之间的关系方面效果更好。 NoSQL的一个子集是像Neo4j这样的图形数据库。在许多情况下,它们处理实体之间的复杂关系甚至比关系数据库更好。