sql - 使用 NOSQL 进行连接操作

标签 sql join nosql bigtable

我已经阅读了一些有关 Bigtable 和 NOSQL 的文章。非常有趣的是,他们避免了 JOIN 操作。

作为一个基本示例,我们以“员工”和“部门”表为例,并假设数据分布在多个表/服务器上。

只是想知道,如果数据分布在多个服务器上,我们如何进行JOIN或UNION操作?

最佳答案

当您拥有非常大的数据时,您可能希望避免连接。这是因为单个键查找的开销比较大(服务需要找出要查询的节点,并并行查询并等待响应)。我所说的开销是指延迟,而不是吞吐量限制。

这使得连接非常糟糕,因为您需要进行大量外键查找,这最终会到达许多不同的节点(在许多情况下)。因此,您希望避免这种模式。

如果这种情况不经常发生,您可能会受到影响,但如果您想要做很多这样的事情,那么可能值得对数据进行“非规范化”。

首先,存储在 NoSQL 存储中的内容通常是相当“异常”的。在各种不同的地方复制相同的数据以使查找更容易的情况并不罕见。

此外,大多数 nosql 也不(真正)支持二级索引,这意味着如果您想按任何其他条件进行查询,则必须重复内容。

如果您要存储员工和部门等数据,那么使用传统数据库确实会更好。

关于sql - 使用 NOSQL 进行连接操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995216/

相关文章:

mysql - 关于存储分配给用户的约 40 亿 (2^32) 个号码的建议

sql - 如何找到两个值不同且其中一个可以为 NULL 的行?为什么 NULL != 1 是假的?

sql - 拒绝特定字符

python - 在 Python 中使用 Pandas 组合三个 DataFrame

javascript - 如何在 pouchdb 中使用数据库

database - Cloudant 查询错误 : missing search index when trying to sort

java - MYSQL SELECT ... FOR UPDATE 不起作用?

sql - Cursor ..Ques column Data as Column names and resp. 下的相关答案数据。问题专栏

mysql - 什么查询最快?

MySQL总结一些CASE WHEN函数