我已经阅读了一些有关 Bigtable 和 NOSQL 的文章。非常有趣的是,他们避免了 JOIN 操作。
作为一个基本示例,我们以“员工”和“部门”表为例,并假设数据分布在多个表/服务器上。
只是想知道,如果数据分布在多个服务器上,我们如何进行JOIN或UNION操作?
最佳答案
当您拥有非常大的数据时,您可能希望避免连接。这是因为单个键查找的开销比较大(服务需要找出要查询的节点,并并行查询并等待响应)。我所说的开销是指延迟,而不是吞吐量限制。
这使得连接非常糟糕,因为您需要进行大量外键查找,这最终会到达许多不同的节点(在许多情况下)。因此,您希望避免这种模式。
如果这种情况不经常发生,您可能会受到影响,但如果您想要做很多这样的事情,那么可能值得对数据进行“非规范化”。
首先,存储在 NoSQL 存储中的内容通常是相当“异常”的。在各种不同的地方复制相同的数据以使查找更容易的情况并不罕见。
此外,大多数 nosql 也不(真正)支持二级索引,这意味着如果您想按任何其他条件进行查询,则必须重复内容。
如果您要存储员工和部门等数据,那么使用传统数据库确实会更好。
关于sql - 使用 NOSQL 进行连接操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995216/