我已经经历了一些关于Bigtable和NOsql的文章。这是非常有趣的,他们避免JOIN操作。
作为一个基本示例,让我们取Employee和Department表,并假定数据分布在多个表/服务器上。
只是想知道,如果数据分布在多个服务器上,我们如何做JOIN或UNION操作?
当你有非常大的数据,你可能想避免连接。这是因为单个键查找的开销相对较大(服务需要找出要查询的节点,并且并行查询它们并等待响应)。通过开销,我的意思是延迟,而不是吞吐量限制。
这使得联接真的很糟糕,因为你需要做很多外键查找,这将结束了许多,许多不同的节点(在很多情况下)。所以你想避免这种模式。
如果它不经常发生,你可能会得到命中,但如果你想要做很多,可能值得“反规范”的数据。
存储在Nosql存储中的东西的类型通常是相当“异常”的。在各种不同的地方复制相同的数据,使查找更容易,这是常见的。
此外,大多数nosql(真的)不支持二级索引,这意味着如果你想通过任何其他标准查询,你必须重复的东西。
如果你存储的数据,如员工和部门,你真的最好的传统数据库。