06 | 分片机制:为什么说Range是更好的分片策略?
该思维导图由 AI 生成,仅供参考
什么是分片
- 深入了解
- 翻译
- 解释
- 总结
分布式数据库的分片机制是解决大规模业务应用下单体数据库性能和存储限制的关键设计。分片是一种水平切分数据表的方式,将数据记录划分为集合,是数据表的组成单位。分片机制主要包括分片策略和分片的调度机制。在分片策略中,Hash和Range是主要的两种方式,而在调度机制中,静态和动态是两种常见方式。Hash分片通过Hash值将数据记录映射到不同的分片中,实现了数据均匀分布和并发写入性能的优势,但对于扩展性和业务热点问题存在挑战。而Range分片则能够更好地加入对业务的预估,实现数据更加平衡的分片,但受限于单体数据库的实现机制,难以随数据变动和负载变化而调整。NewSQL数据库也支持Hash和Range两种分片方式,其中Range动态分片是重点学习对象。总的来说,Range分片在扫描数据记录和适用范围上具有优势,但在动态调整方面仍存在挑战。 Range动态分片是NewSQL的重点学习对象,它具有自动完成分裂与合并、根据访问压力调度分片的优势。此外,NewSQL架构下,分片采用Paxos或Raft算法可以构成复制组,提供了更高的可靠性和更高效的资源使用。与PGXC相比,NewSQL的分片是高可靠的最小单元,而PGXC的分片的高可靠要依附于节点的高可靠。从架构设计角度看,NewSQL的Group比PGXC的Set更具优势,因为Group的高可靠单元更小,出现故障时影响的范围就更小,系统整体的可靠性就更高。Range分片的优势在于动态调度,但客户端需要知道分片的位置,因此元数据的存储和同步也是一个重要问题。 总的来说,本文介绍了分布式数据库分片机制的关键设计和技术特点,以及NewSQL的Range动态分片和其优势。这些内容对于读者快速了解分布式数据库的分片机制和技术特点具有重要参考价值。
《分布式数据库 30 讲》,新⼈⾸单¥59
全部留言(19)
- 最新
- 精选
- 扩散性百万咸面包思考题: 大部分分布式系统都有这么一个存储元数据的东西,比如TiDB的PD,HBase里的ZK,k8s的etcd。也可以把他们看成存储小数据的KV存储系统,一般通过Raft或者Paxos来维持共识,就跟普通分布式系统一样
作者回复: 是的:)
2020-09-09218 - 真名不叫黄金猜测一下,如果是TiDB的话,将元数据存在PD,而PD本身又可部署为多节点高可用的,不过数据最终是落在etcd的,PD只是交互节点。 Spanner如何做的就不太好猜测,但是Spanner也有PD这个角色,也许是差不多的。
作者回复: 是的,基本正确,点赞。另外,TiDB还做了一些优化,详细的内容在第7讲有说明
2020-08-2249 - 扩散性百万咸面包Hash 分片写性能出众,但查询性能差,Range 则相反。 没懂这一句话,文章中哪里有详细阐释为什么Hash分片的写性能更好呢?为什么Range的写性能就不行呢?
作者回复: Hash分片会将数据比较均匀的分散在集群的各个节点上,所以性能更好,而Range的数据分布是根据编码规则(静态)或者主键(动态)的,不以追求平均分布为目标,所以性能会差些。这个性能差异问题,我在第17讲还会再说明。
2020-08-2228 - 开心哥元数据搞个etcd存起来如何?
作者回复: 嗯,说得对,这是方案之一,点赞
2020-08-214 - 旅途多数采用半同步复制,平衡可靠性和性能。这意味着,所有分片的主副本必须运行在 Set 的主节点上。 老师,这句话没懂,为什么使用半同步复制,所有分片的主福本都运行在set主节点呢
作者回复: 这是由单体数据库的主从复制机制决定的,无论哪种策略,都是以节点为单位的,从节点不能提供确保数据一致性的服务。
2020-09-243 - 游弋云端元数据集中存储,特别是能用全内存性能最好,但可靠性不足,一般做HA;或者元数据可以做一致性Hash来分片打散,个人认为Range不适合元数据,变化了数据位置不好计算。
作者回复: Hash分片确实是无主架构常采用的一种方式,不过CockroachDB的Range分片也是一个不错的思路
2020-08-211 - 楚翔stylehash环那里,A(0-3)表示只能放3个hash值吗?这个区间可以随意设置吗?
作者回复: 这里只是举例,数量要由实现的具体算法控制
2020-10-16 - 扩散性百万咸面包老师,PGXC的这种模式,如果按Set来分片的话,那么为什么不能像Multi Raft Group一样,主Set副本分布在不同节点呢?这样就可以把读写压力分摊在不同节点上了。2020-09-2014
- 南国分片数据存在分布式文件系统里,元数据像bigtable一样用一个高可靠的协调中心存,比如Zookeeper,在合并和分裂的时候修改元数据,客户端缓存需要的元数据,修改的时候通知即可2020-08-224
- yanghash--分片,基于hash槽的设计几乎没讲--,比如redis-cluster--事实上这种在大规模应用中反而会更多。2021-04-253