gpt4 book ai didi

sql - 数据库联接如何在分布式关系数据库中工作?

转载 作者:行者123 更新时间:2023-12-04 01:35:12 26 4
gpt4 key购买 nike

根据我自己的研究,我了解单个数据库(非分布式)上的 SQL 连接算法背后的基本思想 - 例如。散列连接、合并连接、循环连接。分布式连接算法是否类似于非分布式数据库上的连接算法?

例如,如果我有一个具有以下属性的用户表:
- 用户身份
- 年龄

我有一个带有属性的 Comments 表:
- 用户身份
- Comment_id
- 评论

假设分布式数据库使用User_id对Users表进行分片,使用Comment_id对Comments表进行分片。

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

SELECT * FROM Users INNER JOIN Comments ON Users.User_id = Comments.User_id

?是否将 User 表和 Comment 表整理到一台机器上,然后执行 JOIN?或者,即使它是分布式的,您是否也可以通过某种方式进行 JOIN?

最佳答案

这是一个高级别的答案。

在分布式环境中,有几种方法可以解决 JOIN s。

  • 广播加入。一张表被复制并发送到所有处理节点,每个处理节点都有一个更大表的一部分。规范用例是一个大表和一个小引用表。
  • 哈希联接,其中两个表具有相同的分区键。在这种情况下,连接可以在本地完成,因为所有相关数据已经位于同一位置。
  • 基于一张表的分区键的哈希连接。第二个表经过哈希处理,并将数据发送到适当的节点。这然后恢复到(2)。
  • 一个完整的散列连接,其中两个表的数据被散列并发送到它被并置的节点。

  • 请注意,这里的“哈希”一词是通用的。如果分区基于数据范围,那么这就是散列函数的一个示例。

    一旦数据被发送到特定节点,然后其他一些 JOIN使用算法——可以是基于散列的、基于排序的或基于索引的(如果分布式数据也支持索引;许多不支持)。

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

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

    关于sql - 数据库联接如何在分布式关系数据库中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59811150/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com