MyCat-入门-核心概念-相关概念 | 学习笔记

简介: 快速学习 MyCat-入门-核心概念-相关概念

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(一):MyCat-入门-核心概念-相关概念】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/755/detail/13244


MyCat-入门-核心概念-相关概念

内容介绍:

一、逻辑库(schema)

二、逻辑表(table)

三、分片节点(dataNode)

四、节点主机(dataHost)

五、分片规则(rule)

 

一、逻辑库(schema)

1、MyCat  核心概念中的其他概念。逻辑库如图:

image.png

在这一幅图当中,大家会发现 MySQL 数据库是最后一层,是物理结构当中的这部分。原来的应用程序在操作时候直接连接 MySQL ,去操作 my circle 当中的数据。现在大家会发现,我们两张表的数据会分散存储在四台 MySQL 上,现在我们在操作的时候,我们应该去操作哪一台 MySQL 呢?大家会发现我们操作哪一台MySQL 都不是,难道我们要操作四台 MySQL,然后把数据进行汇总分析吗?其实不用,因为这些操作 myCat 已经帮我们做了。我们的应用程序现在在连接我们的数据库时,不需要直接连接底层的 MySQL,而只需要去连接 MyCat,连接  MyCat  当中的 schema 逻辑库。逻辑库中又汇总了 table A 和 table B 中的数据,所以我们的应用程序只需要连接 schema,schema 就是逻辑库。

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

 

二、逻辑表(table)

1、逻辑库的概念大家理解之后逻辑表就很好理解了。在逻辑库当中,他要存放的这些表,实际上就是逻辑表。逻辑表不会存储具体的数据,他只是逻辑上的概念,逻辑表并不会存储具体的数据,具体的数据还是存放在底层的 MySQL 数据库上。

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

3、逻辑表又分为四类

(1)分片表

①是指那些原有的很大数据的表,需要切分到多个数据库的表,这样,每个分片都有一部分数据,所有分片构成了完整的数据。总而言之就是需要进行分片的表。如:tb-order 表是一个分片表,数据按照规则被切分到 dn1、dn2 两个节点。

②分片表指的是参与分片的表,指的是原有的数据量很大的表,比如我们刚才提到的订单表,我们可以将订单表这结构进行切分,切分到多个数据节点中,每一个数据库中都会有 tb_order 这张表,但是他里面的数据不同,所以每一个分片只是存放了这个表当中的一部分数据,而他所有分片的这些数据汇总起来构成了一个完整的数据库。分片表就是需要进行分片的表,举的一个例子就是订单表,因为订单表会分散到多个节点中进行存储。

(2) 非分片表

①一个数据库中并不是所有的表都很大,某些表是可以不用进行切分的,非分片是相对分片表来说的,就是那些不需要进行数据切分的表。如:tb-city 是非分片表,数据只存于其中的一个节点 dn1 上。

②非分片表指的是,有一些表结构数据量并不是特别大,比如城市、国家这样的表,以及汇率这样的表,语言这样的表,这些表数据量不大,我们没有必要进行切分,没有必要进行拆分,就是属于非分片表。我们只需要将这张表结构存储在一个节点上就可以了,不需要分散存储到多个节点中,对数据进行切分。

(3)ER 表

①ER 表代表的是 Entity Relationship Model,关系型数据库是基于实体关系模型(Entity Relationship Model)的, My Cat 中的 ER 表便来源于此。My Cat 提出了基于 ER 关系的数据 分片策略,字表的记录与其所关联的父表的记录存放在同一个数据分片中,通过表分组(Table Group) 保证数据关联查询不会跨库操作。

②字段表的之间是有关联的,字表的记录与关联的父表的记录存放在同一个数据分片中,这就叫 ER 表。我们现在有一张 tb_order 这张表,而在 tb_order 这张表中他关联的有一个数据,这个数据就是 user 这张表。

image.png

在 order 这张表中,他关联的有一个 User ID ,关联的是 user 表的主件。这个时候我们进行分片的时候,会把这两张表关联的数据存放在一个界面当中,从而避免跨库操作。

(4)全局表

①在一个大型的项目中,会存在一部分字典表(码表) ,在其中存储的是项目中的一些基础的数据,而这些基础的数据,数据量都不大,在各个业务表中可能都存在关联。当业务表由于数据量大而分片后,业务表与附属的数据字典表之间的关联查词就变成了比较棘手的问题,在 My Cat 中可以通过数据冗余来解决这类表的关联查询,即所有分片都复制这一份数据(数据字典表),因此可以把这些冗余数据的表定义为全局表。

②数据库表在进行分片可能会分为很多片,有一些数据是通用的数据。比如我们下订单的时候,刚才提到 tb_order 有一个字段叫 user ID,假如在这个里面还有一个字段,就是当前这个订单所归属的产品的类型是什么。产品的类型可以理解为 itemType,产品的类型关联实际上是产品类型表的一个主件。产品类型并不多,没必要进行分片。

image.png

另外一个分片,它里面的数据也要关联 itemType,当我们在进行关联查询的时候,我们查询这个订单的信息,还需要查询订单所关联的产品的类型信息的时候,这个时候再进行操作的时候,产品类型表在哪存?如果我们要进行关联查询,我们可以考虑把产品类型表设置为一张全局表。

③全局表的概念是,在第一个节点中有,在第二个节点当中也有。这样的话查询第一个节点订单中的信息时要关联查询我们的产品类型表,这个时候有数据,关联查也不会涉及到跨库。查询第二部分订单的时候,关联查询它的产品类型,在这个数据库查询的时候发现,也有产品类型的表,也不会涉及到跨库操作。全局表就是将我们关联的基础的数据,在各个节点当中,都存储一份,从而避免跨库操作。

 

三、分片节点(dataNode)

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

2、分片节点就是大家看到的 dateNode,一张大表它分散的存储到各个分片数据库上面,每一个表分片所在的数据库就是分片节点。如下图:

image.png

每一张表的数据是分散存储到各个节点上,这个节点就叫数据节点。

 

四、节点主机(dataHost)

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

2、dataHost 指的是具体的每一台主机,

image.png

table A 要分别存放在 datanote1 和 dataNote 2 这两个分片节点中,这两个分片节点最终要存储在 MySQL 当中,现在他会去关联一个 MySQL 的数据库。可以关联同一个服务器数据库实例,也就是说 datanote1 可以关联 128,dataNote 2 也可以关联 128,他们关联的是不同的数据库。下面 MySQL 的数据库实例实际上就是节点主机。

 

五、分片规则(rule)

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

2、table A 中的数据要分散存储在 datanote1 和 dataNote 2 上面,我们插入一条数据,插入到 myCat 当中,那么myCat 到底会把这条数据插入 datanote1 对应的数据库表结构,还是 dataNote 2 对应的数据库表结构,这就是由分片规则来决定的。分片规则指的是我们在插入数据时,这个数据到底存放在哪一个分片节点上,就是由分片规则来决定的。MyCat 当中的一些核心概念,这些核心概念不需要记忆,主要需要理解下图,需要根据这幅图,来理解 MyCat 当中的核心概念。

image.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
传感器 芯片
毕业设计 基于51单片机霍尔电机转速测量温度PWM调速设计
毕业设计 基于51单片机霍尔电机转速测量温度PWM调速设计
336 0
01PowerDesigner的安装与破解
01PowerDesigner的安装与破解
451 0
|
OceanBase
解决OceanBase安装问题
解决OceanBase安装问题
449 0
|
算法
【Simulink】极值搜索控制 Extremum Seeking Control(无模型控制)
【Simulink】极值搜索控制 Extremum Seeking Control(无模型控制)
|
11月前
|
存储 运维 NoSQL
【赵渝强老师】Redis的慢查询日志
Redis慢查询日志用于记录执行时间超过预设阈值的命令,帮助开发和运维人员定位性能问题。每条慢查询日志包含标识ID、发生时间戳、命令耗时及详细信息。配置参数包括`slowlog-max-len`(默认128)和`slowlog-log-slower-than`(默认10000微秒)。实战中可通过`slowlog get`获取日志、`slowlog len`查看长度、`slowlog reset`重置日志。建议线上环境将`slowlog-max-len`设为1000以上,并根据并发量调整`slowlog-log-slower-than`。需要注意的是,慢查询只记录命令执行时间。
534 5
|
人工智能 算法 计算机视觉
我的自描外挂制作日志——FPS类游戏的自瞄【构思准备】
我的自描外挂制作日志——FPS类游戏的自瞄【构思准备】
938 0
|
JavaScript Java 测试技术
基于微信小程序的中国各地美食推荐平台的springboot+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的中国各地美食推荐平台的springboot+vue.js附带文章和源代码设计说明文档ppt
275 1
|
安全 算法 开发工具
【C 言专栏】基于 C 语言的嵌入式系统开发
【5月更文挑战第1天】本文探讨了C语言在嵌入式系统开发中的核心作用。嵌入式系统作为专用计算机系统广泛应用于家电、汽车、医疗等领域,具备实时性、低功耗等特点。C语言因其高效性、可移植性和灵活性成为开发首选。文章介绍了开发流程,包括需求分析、硬件选型、软件设计至部署维护,并强调中断处理、内存管理等关键技术。C语言在智能家居、汽车电子和医疗设备等领域的应用实例展示了其广泛影响力。面对硬件限制、实时性要求和安全挑战,开发者需不断优化和适应新技术趋势,以推动嵌入式系统创新发展。
479 0
【C 言专栏】基于 C 语言的嵌入式系统开发
|
存储 网络协议 数据中心
服务注册中心Consul
服务注册中心Consul
400 1
|
数据采集 Web App开发 数据安全/隐私保护
Python爬虫-使用代理伪装IP
介绍代理,设置代理,使用代理伪装IP案例
806 0