数据库系列课程(05)-MyCat分库分表策略

1.MyCat分库分表

数据库分表分库原则遵循 垂直拆分水平拆分

1.1 垂直拆分

垂直拆分就是根据不同的业务,分为不同的数据库,比如会员数据库、订单数据库、支付数据库等,垂直拆分在大型电商系统中用的非常常见。

优点:

  • 拆分后业务清晰,拆分规则明确,系统之间整合或扩展容易。

缺点:

  • 部分业务表无法join,只能通过接口方式解决,提高了系统复杂度。
  • 存在分布式事务问题。

1.2 水平拆分

垂直拆分是把不同的表拆到不同的数据库中,而水平拆分是把同一个表拆到不同的数据库中

相对于垂直拆分,水平拆分不是将表的数据做分类,而是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。

简单来说,我们可以将数据的水平切分理解为是按照数据行的切分,就是将表中 的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中,主要有分表,分库两种模式。水平切分提高了系统的稳定性跟负载能力,但是跨库join性能较差。

2.MyCat实现水平分片策略

MyCat支持10种分片策略

  • 求模算法
  • 分片枚举
  • 范围约定
  • 日期指定
  • 固定分片hash算法
  • 通配取模
  • ASCII码求模通配
  • 编程指定
  • 字符串拆分hash解析

详情参考:http://www.mycat.io/document/mycat-definitive-guide.pdf

2.1 案例

分片枚举这种规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国的省份区县固定的,这类业务使用这一规则。配置如下:

1.案例步骤:

  • 创建数据库userdb_1 、 userdb_2、userdb_3

2.修改partition-hash-int.txt 规则

wuhan=0
shanghai=1
suzhou=2

3.根据地区进行分库 湖北数据库、江苏数据库 山东数据库。

4.求摸法分片,根据id进行十进制求摸运算,运算结果为分区索引 。

注意:数据库节点分片数量无法更改。 和ES集群非常相似的。下图是ES集群原理图,数据库节点分片(求模算法)类似ES的文档分库,详情可以参考之前我写的博客《分布式系列教程(36) -ElasticSearch集群原理》
在这里插入图片描述

发布了2618 篇原创文章 · 获赞 4883 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/qq_20042935/article/details/103660337
今日推荐