使NoSQL数据库更具可扩展性的关键因素之一是缺少连接操作,这是RDBMS的重要组成部分。但与此同时,例如,RavenDb包含Multi Maps / Reduce索引功能,看起来与join类似。
为什么连接会限制可伸缩性,但Multi Maps / Reduce索引在解决非常类似的任务时却没有?
答案 0 :(得分:4)
这里有两个值得纠正的错误观念。首先,在NOSQL完全定义任何类型的数据库范例(而不仅仅是流行的软件产品集合的名称)的范围内,不必须意味着非关系型。 NOSQL只是意味着不是SQL而不仅仅是SQL。所以NOSQL数据库很可能是关系型的,可以支持连接。
其次,连接不限制可伸缩性。关系术语的连接是逻辑操作而不是物理操作。它可以通过许多不同的方式实现,包括使用Map / Reduce。
答案 1 :(得分:1)
这取决于您实际执行操作的时间。 加入操作通常是即时执行的,这意味着您在读取时会产生成本。那是昂贵的,因为你的查询频率远高于写作。
RavenDB多地图/减少操作发生在后台,查询它们随身携带,无需计算成本。索引完成后,查询它基本上是免费的,只有在数据发生变化时才会进行任何额外的工作。