Mongodb CouchBase NOSQL宣布加入支持。使用它们的缺点是什么?

Mongodb CouchBase NOSQL宣布加入支持。使用它们的缺点是什么?,mongodb,join,couchbase,n1ql,nosql,Mongodb,Join,Couchbase,N1ql,Nosql,我一直认为NoSQL Cassandra、CouchDB、Couchbase、MongoDB等都是面向文档的无连接。典型的一句话:如果需要JOIN,请使用SQL数据库MySQL、PostgreSQL等 但现在,Couchbase发布了N1QL开发者预览4,并提供了加入支持: 在线试用: 所以,我很困惑。Couchbase是第一个支持JOIN的NOSQL数据库?使用它有什么缺点吗?为什么其他NOSQL数据库如mongodb、couchdb、cassandra等没有实现它?是的,一些NOSQL数据库

我一直认为NoSQL Cassandra、CouchDB、Couchbase、MongoDB等都是面向文档的无连接。典型的一句话:如果需要JOIN,请使用SQL数据库MySQL、PostgreSQL等

但现在,Couchbase发布了N1QL开发者预览4,并提供了加入支持:

在线试用:


所以,我很困惑。Couchbase是第一个支持JOIN的NOSQL数据库?使用它有什么缺点吗?为什么其他NOSQL数据库如mongodb、couchdb、cassandra等没有实现它?

是的,一些NOSQL数据库使用JSON文档模型,例如Couchbase、mongodb。然而,面向文档并不一定意味着没有连接。像PostgreSQL和MySQL这样的RDBMS希望您将对象分解成平面表进行写入,并使用连接重新组装对象进行读取。这称为阻抗失配

JSON文档数据库可以直接存储完整的对象,因此没有阻抗不匹配。但是,对象通常与其他对象有关系,您需要跨这些关系进行查询。例如,电影和演员是相关的对象,如果您想列出电影的详细信息以及演员获得了多少奖项,您需要加入

总之,像PostgreSQL和MySQL这样的RDBMS存在阻抗不匹配,所以必须对对象组装和关系使用连接。没有联接的JSON文档数据库不允许跨关系查询,因此必须使用多个查询在应用程序中实现此逻辑。最后,还提供连接的JSON文档数据库为您提供了两个好处:1没有阻抗不匹配,也没有反汇编/组装,2您可以跨对象之间的关系进行查询。这就是Couchbase在N1QL中提供连接的原因


在Couchbase中使用联接时,没有理由存在缺点。连接在用于正确的原因关系时非常有用,Couchbase数据模型JSON允许您避免因阻抗不匹配和组装/拆卸而导致的错误连接。

回答得好。非常感谢@geraldss的解释。