首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库如何在分布式关系数据库中工作?

数据库如何在分布式关系数据库中工作?
EN

Stack Overflow用户
提问于 2020-01-19 14:47:32
回答 1查看 2.1K关注 0票数 7

从我自己的研究中,我理解了SQL算法在单个数据库(非分布式)上的基本思想。散列连接,合并连接,循环连接。分布式连接算法是否类似于非分布式数据库上的连接算法?

例如,如果我有一个具有属性:- User_id - Age的User表

我有一个带有属性的注释表:- User_id - Comment_id -注释

假设分布式数据库使用User_id对uses表进行切分,使用Comment_id对注释表进行切分。

那么,当您调用SQL查询时,实际发生了什么:

代码语言:javascript
运行
复制
SELECT * FROM Users INNER JOIN Comments ON Users.User_id = Comments.User_id

?用户表和注释表是否整理到一台机器上,然后执行连接?或者,即使是分布式的,您也可以通过某种方式进行连接吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-19 14:56:58

这是一个高层次的答案。

在分布式环境中,有几种方法可以实现JOIN

  1. 广播连接。一个表被复制并发送到所有处理节点,每个处理节点都有一个较大表的一部分。规范用例是一个大表和一个小引用表。
  2. Hash连接其中两个表都有相同的分区键。在这种情况下,连接可以在本地完成,因为所有相关数据都已经是基于一个表的分区键的co-located.
  3. Hash连接。对第二个表进行散列,并将数据发送到适当的节点。然后恢复到(2).
  4. --一个完整的散列连接,其中两个表的数据都被散列并发送到节点。

请注意,这里的“散列”一词是泛型的。如果分区是基于数据范围的,那么这就是散列函数的一个例子。

一旦数据被发送到特定的节点,那么就会使用其他的JOIN算法--可以是基于哈希的、基于排序的或者基于索引的(如果分布式数据也支持索引;许多不支持索引)。

此外,可能会对算法进行调整,以处理“内存大于内存”的结果和JOIN键中的数据倾斜。

一个更详细的答案可能会填满一本书的多个章节。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59811150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档