数据库中间件MyCat实战笔记(第二步):MyCat核心概念全面剖析!

一、分片

简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。 数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。

  1. 一种是按照不同的表(或者 Schema)来切分到不同的 数据库(主机) 之上,这种切分可以称之为数据的 垂直(纵向)切分

  1. 另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台 数据库(主机) 上面,这种切分称之为数据的 水平(横向)切分


MyCat 分片策略 :


虚线以上是逻辑结构图, 虚线以下是物理结构图 ;


参考资料:《深入理解JVM & G1 GC》
想要快速获取资料的同学:请添加助理VX:C18173184271,备注一下CSDN+工作年限!免费获取
以便能够充分理解学习!

二、逻辑库(schema)

MyCat 是一个 数据库中间件,通常对实际应用来说,并不需要知道中间件的存在,业务开发人员只需要知道数据库的概念,所以数据库中间件可以被看做是 一个或多个数据库集群构成的逻辑库

三、逻辑表(table)

既然有逻辑库,那么就会有逻辑表,分布式数据库中,对应用来说,读写数据的表就是逻辑表。逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成。

  1. 分片表
    是指那些原有的很大数据的表,需要切分到多个数据库的表,这样,每个分片都有一部分数据,所有分片构成了完整的数据。 总而言之就是需要进行分片的表。如 :tb_order 表 是一个分片表, 数据按照规则被切分到dn1、dn2两个节点。
  2. 非分片表
    一个数据库中并不是所有的表都很大,某些表是可以不用进行切分的,非分片是相对分片表来说的,就是那些不需要进行数据切分的表。如: tb_city非分片表 , 数据只存于其中的一个节点 dn1上。
  3. ER表
    关系型数据库是基于 实体关系模型(Entity Relationship Model) 的, MyCat中的ER表便来源于此。 MyCat提出了基于ER关系的数据分片策略 , 字表的记录与其所关联的父表的记录存放在同一个数据分片中, 通过 表分组(Table Group) 保证数据关联查询不会跨库操作。
  4. 全局表
    在一个大型的项目中,会存在一部分 字典表(码表) , 在其中存储的是项目中的一些基础的数据 , 而这些基础的数据 , 数据量都不大 , 在各个业务表中可能都存在关联 。当业务表由于数据量大而分片后 , 业务表与附属的数据字典表之间的关联查询就变成了比较棘手的问题 , 在MyCat中可以通过数据冗余来解决这类表的关联查询 , 即所有分片都复制这一份 数据(数据字典表),因此可以把这些冗余数据的表定义为全局表。

四、分片节点(dataNode)

数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是 分片节点(dataNode

五、节点主机(dataHost)

数据切分后,每个 分片节点(dataNode 不一定都会独占一台机器,同一机器上面可以有多个分片数据库,这样一个或多个 分片节点(dataNode 所在的机器就是 节点主机(dataHost ,为了规避单节点主机并发数限制,尽量将读写压力高的 分片节点(dataNode 均衡的放在不同的 节点主机(dataHost

六、分片规则(rule)

前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照 某种业务规则把数据分到某个分片的规则就是分片规则 ,数据切分选择 合适的分片规则 非常重要,将极大的避免后续数据处理的难度。


如果你需要这份完整版的《开源数据库中间件MyCat实战笔记》,只需你多多支持我这篇文章。

多多支持,即可免费获取资料——三连之后(承诺:100%免费)

快速入手通道:添加助理VX:C18173184271,备注一下CSDN+工作年限! 免费获取!诚意满满!!!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Java_Caiyo/article/details/113342918