Sharding | 数据分片策略:分片键和分片算法的选择

本文探讨了如何根据业务需求选择分片键(ShardingKey),推荐考虑共性字段、离散性、唯一性和扩展性,并介绍了Hash、Range和List分片算法的优缺点及其适用场景。针对电商场景,提出了基因法和冗余数据策略。关键在于理解分片策略需结合业务定制。

摘要:规划分片策略的过程需要考虑较多的问题,本文简单地概括了分片键应具有的特性,以及常见分片算法的特点。


Sharding 作为海量存储高并发沙场中的制胜利器,制定合理的 Sharding 策略会为系统提供强有力的性能保障,选择合适的分片键和分片算法,是分片策略规划中的重要工作。由于业务特点各不相同,分片键和分片算法的选择没有绝对统一的模板。

本文聚焦于分片键和分片算法话题,因此这里不再展开 Sharding 的概念,对于多数业务场景,分库分表的规划方案回顾如下:

  • 数据量大,选分表;
  • 并发高,选分库;
  • 海量存储+高并发,分库+分表。

何时去分表?

当潜意识里有要做分表的想法时,您当前或许遇到了单表过大、数据检索慢以及业务抱怨等问题,需要对系统进行优化。业内关于“单表过千万”、“数百 G”则需要分表的说法,其实不完全准确。以 MySQL 为例,生产中单表数千万记录并不是个例,它没有那么脆弱,合理的架构设计也可有效提升数据检索压力,如优化索引、历史数据归档、引入缓存方案以及启用读写分离策略等。

当数据量激增,以上优化方案均不奏效时,那么是时候请“分表”出场了,单片容量无固定限制,结合测试结果,满足效率和预留空间需求即可。分表的时机不取决于经验之谈,而是取决于业务效率

何时去分库?

分表概念外,还有一个概念是分库,也总是有朋友会纠结,我到底是否需要分库。分库的底层逻辑是,通过多台服务器来承接更多的业务流量,给系统提供更多的连接支持

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值