MyCat 概念
# 30.MyCat 概念
介绍下相关术语
# 单表
没有拆分数据,也没有复制数据到别的库的表。
# 分库
一般指通过多个数据库拆分分片表,每个数据库一个物理分表,物理分库名字相同
解读:分库是个动作,需要多个数据库参与。就像多个数据库是多个盘子,分库就是把一串数据葡萄,分到各个盘子里,而查询数据时,所有盘子的葡萄又通过 Mycat2 组成了完整的一串葡萄。
# 分库分表
分库:一个电商项目,可以用多个数据库来存储数据,例如用户库、订单库。例如后续我们使用微服务,不同模块分别部署到不同的服务器上,然后不同模块用的是自己的数据库
分表:随着数据的增加,一张订单表数据可能会达数千万行,会达到 MySQL 单表瓶颈,查询、更新起来会慢,可以分到多个数据库中的多张表来存储,每个表存储部分数据。
逻辑库:可以理解为是 Mycat 定义的数据库,在逻辑上存在,物理上在 MySQL 里并不存在。这是因为我们可以使用了分库,而该逻辑哭可能是多个 MySQL 数据库共同组成的一个逻辑库。
逻辑表:可以理解为是 Mycat 定义的表,在逻辑上存在,可以映射真实的 MySQL 数据库的表。
物理库:MySQL 真实的数据库
物理表:MySQL 真实的数据库中的真实数据表
拆分键:即分片键,描述拆分逻辑表的数据规则的字段。比如订单表可以按照归属的用户 id 拆分,用户 id 就是拆分键
分片表,水平分片表:按照一定规则把数据拆分成多个分区的表,在分库分表语境下,它属于逻辑表的一种
# 全局表,广播表
每个数据库实例都冗余全量数据的逻辑表.
它通过表数据冗余,使分片表的分区与该表的数据在同一个数据库实例里,达到 join 运算能够直接在该数据库实例里执行。它的数据一致一般是通过数据库代理分发 SQL 实现。也有基于集群日志的实现
解读:例如系统中翻译字段的字典表,每个分片表都需要完整的字典数据翻译字段。
例如有个参数表,然后我们用了 3 个数据库,然后在每个数据库都新建这个参数表(冗余),这样其他数据库就都可以直接使用该表进行 join 查询。
也叫全局表,广播表
# ER 表
狭义指父子表中的子表,它的分片键指向父表的分片键,而且两表的分片算法相同
广义指具有相同数据分布的一组表
解读:订单表是简单的订单信息,然后订单详情表是具体的订单信息,这样订单详情表就得和父表的一样分表,订单详情表就是订单表的 ER 表