数据库分片策略

分片概念

分片(SHarding)就是用来确定数据在多台存储设备上分布的技术。Shard这个词的意思是“碎片”,如果将一个数据库当做一块大玻璃,将这块玻璃打碎,那么没一小块都成为数据库的碎片(Database Sharding)。将一个数据库打碎成多个的过程就叫做分片,分片是属于横向扩容方案。

数据库扩展方案:

横向扩展:一个库变成多个库,加机器数量

纵向扩展:一个库还是一个库,优化及其性能,加高配CPU或内存

在分布式存储系统中,数据需要分散存储在多台设备上,分片就是把数据库横向扩展到多个数据库服务器上的一种有效方式,器主要作用就是为了突破单节点数据库服务器的IO能力限制,常用规则有以下几种。

基于范围的分片

根据特定字段的范围进行拆分,比如用户ID、订单时间、产品价格等。

优点:新的数据可以落在新的存储节点上,如果数据库扩容,数据无需迁移。

缺点:数据热点分布不均匀,数据冷热不均匀,导致节点符合不均。

哈希取模分片

整形的Key可直接对设备数量取模,其他类型的字段可以进先计算Key的哈细致,然后再对设备数量取模。假设有n台设备,编号为0-n-1,通过Hash(Key)%n就可以确定数据所在的设备编号。该模式也成为离散分片。

有点:实现简单,数据分配比较均匀,不容易出现冷热不均,负荷不均的情况。

缺点:扩容时会产生大量的数据迁移,比如从n台设备扩容到n+1,绝大部分数据需要重新分配和迁移。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值