一致性Hash原理

博客地址

分片和分区的差异

分片(Sharding ): (水平切分)-思想来源于分区

  • 水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案
  • 其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题
  • 通过一系列的切分规则将数据水平分布到不同的DB或table中,在通过相应的DB路由 或者 table路由规则找到需要查询的具体的DB或者table,以进行Query操作。
  • 比如日志文章(article)表有如下字段:article_id(int),title(varchar(128)),content(varchar(1024)),user_id(int):
    • “user_id”,是我们分库的依据和规则的基础。我们可以这样做,将user_id为 1~10000的所有的文章信息放入DB1中的article表中,将user_id为10001~20000的所有文章信息放入DB2中的 article表中,以此类推,一直到DBn。 这样一来,文章数据就很自然的被分到了各个数据库中,达到了数据切分的目的。
    • 要想获得目标数据,这时候我们利用DB路由的功能 来查找存储相应的数据在那台服务器上。
  • Sharding 是能够跨数据库,甚至跨越物理机器的。
  • 可分为垂直分区和水平分区
    • 垂直就是把不同的表分散到不同的数据库或主机。适合耦合度低系统
    • 水平分区以行为单位,将同一个表的数据拆分到不同数据库或主机上,适合复杂系统。
  • 还可以分为静态动态分区
    • 静态即分区键是静态分配的。可能数据不均衡
    • 动态则引入一个字典,然后定位在哪个分片。每次查询要2步,且可能存在单点故障

分区(Partitioning)

  • 但数据库分区基本上是数据对象级别的处理,比如表和索引的分区,每个子数据集上能够有不同的物理存储属性,还是单个数据库范围内的操作, 它不能跨越服务器的限制。
  • 如果能够保证数据量很难超过现有数据库服务器的物理承载量,那么只需利用MySQL5.1提供的分区(Partition)功能来改善数据库性能即可;否则,应当考虑应用Sharding理念,spider storage engine就是一个不错的选择。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值