MyCat-入门-原理介绍 | 学习笔记

简介: 快速学习 MyCat-入门-原理介绍

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

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


MyCat-入门-原理介绍

MyCat 原理介绍

在 mycat 的原理当中有非常重要的一个动词叫”拦截”,他拦截了用户发送过来的SQL 语句,首先对 SQL 语句做一些特定的分析,如分析、路由分析、读写分析分析、缓存分析等,然后将此 SQL 语句发往后端的真实数据库,并将返回的结果做适当处理,最终再返回给用户,如图所示:

image.png

应用程序 application 发送一条 SQL 语句,它直接操作的是 mycat。注意现在如果使用 mycat,应用程序在操作的时候它操作的是 mycat, 将这个 SQL 语句发送给mycat 之后,mycat 要对这个 SQL 语句进行一系列复杂的处理,其中包含对于SQL 语句的解析,分片的解析,路由的解析,读写分离的解析,以及对于数据的一些解析。

解析完这条 SQL 语句之后,最终来决定当前执行的操作,到底要去查到哪几个数据节点当中来查找数据。已上图为例:实际上是对一张表进行了分片操作,就是user 表分成了三片,dn1,dn2 和 dn3 这三个数据节点。

那么也就是说 user 这张表的数据分散存储在了三个数据节点当中,那么它所使用的分片规则,叫做字符串枚举分片,字符串枚举分片指的是按照某一个特定字段的字符串的值来进行分片。

如果值是 0,那么数据将会存储在第一个节点上,如果 status 值是 1,数据将会存储在第二个节点上,status 值为 2,数据将会存储在第三个节点上。当然 status 取值也就为 0,1,2,只有这三种情况。

再去执行 select from user where status=0 这条 SQL 语句的时候,mycat 会拦截SQL 语句,然后对 SQL 语句进行解析,查询的是哪张表?是根据哪个字段来进行查询的?字段的值是什么?解析完毕之后就得到,当前这个请求要去查询的是第一个数据节点,因为第一个数据节点,它的 status 值是 0,假如用户发送的 SQL 语句不再是 0,而是 0,1。

这个时候经过 mycat 的 SQL 语句的解析,这一次查询要到 dn1 和 dn2 两个节点当中进行查询,它就会分别到两个节点当中进行查询,然后再将查询的结果进行合并,进行排序等相关处理,最终返回给应用程序。

所以在这幅图当中,应用程序在进行编写的时候只需要操作 mycat 就可以了。至于这条 SQL 语句到底要操作底层的哪些数据库的节点,不需要关心,这是 mycat 要做的事情。

那么这就是 mycat 的原理。对于 mycat 的原理,重点理解一下这一幅图。

相关文章
|
Java 开发工具 Docker
最全解决docker配置kibana报错 Kibana server is not ready yet
最全解决docker配置kibana报错 Kibana server is not ready yet
2196 0
|
缓存 Java 数据库连接
深入浅出 MyBatis 的一级、二级缓存机制
深入浅出 MyBatis 的一级、二级缓存机制
727 0
|
机器学习/深度学习 并行计算 安全
北京大学肖臻老师《区块链技术与应用》公开课笔记8——比特币挖矿
北京大学肖臻老师《区块链技术与应用》公开课笔记8——比特币挖矿
1245 0
|
5G 芯片
带你读《无人机网络与通信》之二:空对地与空对空数据链路通信
本书针对无人机系统两个关键问题—通信组网和管控体系做了比较全面和深入的描述和探讨,特别是以大量笔墨分析了现有无线通信解决方案,对比了不同通信协议,得出了很有价值的研究结论。无人机的跨越式发展将涉及公共安全管理的问题,构建管控体系是当务之急,分级管理以及制定相应的适航标准是一件大事情,本书对此也进行了系统的、建设性的讨论。未来,高档无人机和无人机集群将对环境具有更强的感知能力和自适应能力,还有对任务的自规划和学习、调整能力,本书讨论的内容将为它们的发明、部署和监督提供宝贵的信息。
|
存储 监控 安全
大厂案例 - 腾讯万亿级 Elasticsearch 架构实践1
大厂案例 - 腾讯万亿级 Elasticsearch 架构实践
507 0
|
12月前
|
存储 传感器 人工智能
「AI实践派」产品生态伙伴Zilliz联合活动
阿里云与向量搜索领域明星企业Zilliz将在杭州阿里巴巴西溪园区共同举办“中外AI产品应用实践和出海实战”分享沙龙。
|
Linux 网络安全 Python
linux centos上安装python3.11.x详细完整教程
这篇文章提供了在CentOS系统上安装Python 3.11.x版本的详细步骤,包括下载、解压、安装依赖、编译配置、解决常见错误以及版本验证。
10490 3
linux centos上安装python3.11.x详细完整教程
|
人工智能 IDE JavaScript
通义灵码丝滑接入IDE提升效率
全栈开发工程师使用通义灵码插件,显著提升Java和Vue开发效率达60%。通过JetBrains系列软件(如Idea、WebStorm等)安装此插件,可实现智能代码预测、注释转代码、代码优化及错误调试等功能,极大简化开发流程,提高代码质量。此外,该工具还支持用户追问,解答开发中的各种疑问。
299 2
|
JavaScript Java 关系型数据库
基于springboot+vue在线外卖点餐系统(毕业设计,源码+文档)
基于springboot+vue在线外卖点餐系统(毕业设计,源码+文档)