首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当您超过当前的碎片体系结构时,切分是如何工作的?

当您超过当前的碎片体系结构时,切分是如何工作的?
EN

Software Engineering用户
提问于 2022-01-23 06:59:15
回答 1查看 131关注 0票数 0

看看切分技术,基本上有基于哈希或基于范围的版本。基于哈希的是更随机的,基于范围的是更基于启发式的.假设您最初有两个碎片(单独的数据库实例),那么您就会超过它,并且需要3个碎片。你做什么,现在你的杂凑东西不能再工作了,你基本上需要重新计算每条记录的位置(比如说有100亿条记录)。而且范围分割也不会传输,你必须给新的碎片更多的权重,但这也不是很理想,所以在这种情况下,你也必须重新计算记录位置。

我想得对吗?那么,按照你目前的增长速度,你最好多加2个碎片,总共增加5个,然后再多增加3个,总共增加8个。每次你都得重新分配所有的记录,对吗?

如果是的话,当你需要做这个调整的时候,在实践中会发生什么?我从来没有处理过需要如此复杂程度的数据库。在此期间数据库可用吗?您如何将记录传送到新的切分方案,同时允许您的数据库被读取和写入?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2022-01-23 16:02:44

一种独立于您所使用的切分规则的方法是:在重新分配期间使用双重检查。

添加新节点后,开始重新分配,每次一个节点。节点应该遍历其所有元素并应用新的切分规则。一些元素将被移动到其他碎片中,一些元素将保留下来。在所有节点重新编码之前,当收到请求时,系统应该进行双重检查:首先根据新的分片规则确定节点并将请求发送给它。如果不成功,请根据旧的分片规则确定节点并向其发送请求。

优势:

  • 没有停机时间。当节点包含大量数据并且重新编码需要大量时间时,这一点尤其重要。
  • 它适用于任何切分规则。
  • 它非常健壮。如果由于某种原因进程被中断,您可以从一开始就开始它,而不是假设进程在中断之前有多远。

缺点:

  • 这需要对每个元素进行处理,因此可能不是最快的。
票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/436190

复制
相关文章

相似问题

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