gpt4 book ai didi

mysql - 数据库分片如何工作?

转载 作者:行者123 更新时间:2023-11-29 10:29:49 26 4
gpt4 key购买 nike

高层数据库分片的概念是有意义的,分割数据库节点,这样就没有一个节点负责所有持久数据。然而,我对“碎片”的构成有点困惑。它是跨分片复制整个表,还是通常只复制一个表?

例如,如果我们以 Twitter 为例,在最基本的层面上,我们需要一个用户和一个推文表。如果我们根据用户 ID 进行分片,有 10 个分片,则分片函数为 userID mod 10 === 分片位置。但这对于 tweets 表意味着什么?是单独的(单个数据库表)还是每条推文都根据创建该推文的用户 ID 在 10 个表之间划分?

如果是后者,并且假设我们对用户 ID 以外的内容进行分片,例如推文创建的时间戳,那么我们如何知道在哪里查找与用户相关的信息/em> 如果所有表都根据推文创建时间(用户对此没有概念)进行分片?

最佳答案

分片是将数据分割到多个服务器上。如何拆分的选择非常关键,并且可能是显而易见的。

乍一看,按用户 ID 分割推文听起来是正确的。但还有什么其他的东西呢?是否有任何“分组”或者您关心谁“接收”每条推文?

照片共享网站可能最好根据用户 ID 进行拆分,用户照片的元信息也与用户位于同一服务器上。 (实际照片存放在哪里是另一个讨论。)但是你会如何处理那些设法上传一百万张照片的人呢?希望这不会破坏他所在的分片上的磁盘。

一个困惑的案例是电影。你们应该在电影上分开吗?评论?撰写评论的用户?流派?

当然,“mod 10”可以方便地说明用户位于哪个分片上。也就是说,直到您需要第 11 个碎片为止!我更喜欢“散列”和“字典”之间的折衷。首先执行 mod 4096,然后在“字典”中查找将 4096 个值映射到 10 个分片。然后,编写一个强大的工具将一组用户(均具有相同的 mod-4096 值)从一个分片移动到另一个分片。从长远来看,这个工具将非常方便地处理硬件升级、软件升级、王牌大小的高音扬声器或让其他人让路等。

如果您想进一步讨论分片推文,请提供涉及的主要表。另外,如果您需要的话,我对如何为推文发布唯一的 ID 有强烈的意见。 (有一些失败的方法可以做到这一点。)

关于mysql - 数据库分片如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47613435/

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