从我自己的研究中,我理解了SQL算法在单个数据库(非分布式)上的基本思想。散列连接,合并连接,循环连接。分布式连接算法是否类似于非分布式数据库上的连接算法?
例如,如果我有一个具有属性:- User_id - Age的User表
我有一个带有属性的注释表:- User_id - Comment_id -注释
假设分布式数据库使用User_id对uses表进行切分,使用Comment_id对注释表进行切分。
那么,当您调用SQL查询时,实际发生了什么:
SELECT * FROM Users INNER JOIN Comments ON Users.User_id = Comments.User_id
?用户表和注释表是否整理到一台机器上,然后执行连接?或者,即使是分布式的,您也可以通过某种方式进行连接吗?
发布于 2020-01-19 14:56:58
这是一个高层次的答案。
在分布式环境中,有几种方法可以实现JOIN
。
。
请注意,这里的“散列”一词是泛型的。如果分区是基于数据范围的,那么这就是散列函数的一个例子。
一旦数据被发送到特定的节点,那么就会使用其他的JOIN
算法--可以是基于哈希的、基于排序的或者基于索引的(如果分布式数据也支持索引;许多不支持索引)。
此外,可能会对算法进行调整,以处理“内存大于内存”的结果和JOIN
键中的数据倾斜。
一个更详细的答案可能会填满一本书的多个章节。
https://stackoverflow.com/questions/59811150
复制相似问题