开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(二):MyCat - 分片 - 垂直拆分 - 概述及案例场景】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/756/detail/13258
MyCat - 分片 - 垂直拆分 - 概述及案例场景
内容介绍:
一、课程总述
二、垂直拆分
一、课程总述
MyCat 的拆分方式,有垂直拆分也有水平拆分,分为三个层面,第一个方面解释一下 my cat 当中的垂直拆分,第二部分解释 my cat 当中的水平拆分,第三部分关于水平差分当中的分片规则的相关配置以及分片规则到底有哪些。
二、垂直拆分
1.概述
一种是按照不同的表(或者 schema )来切分到不同的数据库(主机)之上,这种切分可以称之为数据的垂直(纵向)切分。
垂直拆分指的是原有的应用系统,只操作了一个数据库,由于这一个数据库的存储容量是有限的,需要进行拆分,就可以把不同业务模块,涉及到的表拆分,到不同的数据库当中,也就是说拆分了三个数据库,第一个数据库来存储用户系统,相关的一些表,第二是数据库存储订单系统,所涉及到的数据库表,第三个数据库当中存储支付系统所涉及到的数据库表。这样也就意味着垂直拆分各个数据库中的存储的表结构是不一样的。
2.案例场景
原有的工作模式是应用程序需要去访问 MySQL 数据库,但是由于 MySQL 的存储容量是有限的,这个时候就需要考虑到扩容,可以对数据库进行拆分,可以把这单个数据库拆分成若干个数据库,这幅示例图当中,就拆分成了三个数据库,分别是user_db,Order_db,还有 goods_db,拆分成三个数据库以后,业务系统在访问的时候,不用直接访问mysql,应用程序在访问的时候,它只需要访问 mycat 当中的逻辑库 ITCAST_DB 就可以。在逻辑库当中,又配置了一定的逻辑表,每个游戏表又规定了它所归属的数据节点。通过 mycat 的垂直拆分,把原有的数据库进行拆分,使得用户为一个模块,订单为一个模块,商品为一个模块。
在业务系统中,有以下表结构,但是由于用户与订单每天都会产生大星的数据,单台服务器的数据存储及处理能力是有限的,可以对数据库表进行拆分,原有的数据库表:
具体的数据库表应该如何划分:原有的数据库表包括了一些用户和地区的数据库表,第二部分是商品相关的数据库表,第三部分是订单相关的数据库表。原来的数据库表所有的都存储在一个数据库当中,因为数据库的容量是有限的,如果数据库量大就要考虑分片。可以把用户及用户关联的地域放在一个数据库当中。可以把商品相关的信息放在一个数据库当中,把订单相关的信息存放在另一个数据库当中,就可以降低单台服务器的负载,并且提高数据库的存储能力,从而达到一个动态扩容。