分享

Mycat分库分表全解析 Part 4 Mycat中的概念

 宅必备 2022-05-30 发布于江苏

往期专题请查看www.zhaibibei.cn
这是一个坚持Oracle,Python,MySQL原创内容的公众号

前期回顾

Mycat分库分表全解析 Part 1 数据库切分概述

Mycat分库分表全解析 Part 2 数据库切分方式

Mycat分库分表全解析 Part 3 Mycat的安装

前面我们介绍了MySQL Galera的相关内容

这期开始讲一个数据库分库分表中间件Mycat

该专题的理论内容我会参考官方的文档,最后实践部分会根据自己的环境

这节说一些Mycat的一些概念,方便后续的内容

1. 数据库中间件

前面讲了 Mycat 是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有 存储引擎,所以并不是完全意义的分布式数据库系统。

那么 Mycat 是什么?Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。由于前面讲的对数据进行分片处理之后,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构 成了整个完整的数据库存储。

如上图所表示,数据被分到多个分片数据库后,应用如果需要读取数据,就要需要处理多个数据源的数据。如果没有数据库中间件,那么应用将直接面对分片集群,数据源切换、事务处理、数据聚合都需要应用直接处理, 原本该是专注于业务的应用,将会花大量的工作来处理分片后的问题,最重要的是每个应用处理将是完全的重复 造轮子.

所以有了数据库中间件,应用只需要集中与业务处理,大量的通用的数据聚合,事务,数据源切换都由中间 件来处理,中间件的性能与处理能力将直接决定应用的读写性能,所以一款好的数据库中间件至关重要。

2. Mycat逻辑概念

现在来说下Mycat下的一些概念,首先我们看下图,包含了各种概念的关系图

下面只涉及一些概念介绍,详细配置后续更新

为方便理解我们按照如下的顺序讲解,实际配置是从最后的概念进行配置的

2.1 用户

Mycat中的用户是一个逻辑上的用户,他定义了可以用来连接Mycat中间件的用户密码等信息

具体如下:

  • 用户名

  • 密码

  • 用户可访问的逻辑库

  • 逻辑库是否只读

  • 逻辑库连接服务降级处理

  • 加密

  • 逻辑库表的权限设置

其在server.xml 配置文件中配置中的user标签进行配置

一个用户可配置连接多个逻辑库

2.2 逻辑库(schema)

前面说了通过逻辑的用户可以连接到指定的逻辑库,那么我们事先需要配置逻辑库

我们在schema.xml配置文件的schema标签中进行配置

逻辑库实际上就是用户通过Mycat连接的数据库

逻辑库配置有如下属性

  • 是否检查SQL schema

  • SQL返回最大长度

2.3 逻辑表

我们通过Mycat连接到数据库后访问的表为逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成

逻辑表包含在逻辑库中,所以我们在schema.xml配置文件的schema标签下的table子标签进行配置

对于未配置为逻辑表的表Mycat是无法访问的

逻辑表配置有如下属性

  • 表名称

  • dataNode名称

  • 分片规则

  • 等等

逻辑表有如下种类

  • 分片表,它被分到多个dataNode当中,如上图的2个逻辑表

  • 非分片表,他只被分配到一个dataNode中,即dataNode属性只有一个

  • 全局表,为减少跨库连接带来的性能影响,对不经常变更并且经常访问的表,所有的分片都拥有相同的内容

  • ER表,根据业务进行表分组(Table Group),是解决跨分片数据JOIN的一个思路,后续介绍

2.4 分片节点(dataNode)

上面逻辑表配置中的dataNode即为分片节点的名称,所以我们事先需要配置dataNode

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

他在schema.xml配置文件的dataNode标签下配置

他由dataHost和database唯一指定

dataHost即物理上的数据库实例的地址,可以是IP地址也可以是主机名
database即dataHost上的数据库

2.5 dataHost

该标签在 mycat 逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句

该标签可以包含一个或多个数据库地址

他在schema.xml中的dataHost标签中配置

2.6 分片规则

既然是分库分表的中间件,所以就会有数据切分的规则

在rule.xml文件中配置,和逻辑表配置中的rule对应

2.7  全局序列号(sequence)

数据切分后,原有的关系数据库中的主键约束在分布式条件下将无法使用,因此需要引入外部机制保证数据 唯一性标识,这种保证全局性的数据唯一标识的机制就是全局序列号(sequence)。

2.8 多租户

多租户技术或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的 系统或程序组件,并且仍可确保各用户间数据的隔离性。

在云计算时代,多租户技术在共用的数据中心以单一系 统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离。

目前各种各样的云 计算服务就是这类技术范畴,例如阿里云数据库服务(RDS)、阿里云服务器等等。

3. 参考资料

http://www./document/mycat-definitive-guide.pdf


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多