MyCat - 架构剖析 - 核心技术之 SQL 路由实现 | 学习笔记

简介: 快速学习 MyCat - 架构剖析 - 核心技术之 SQL 路由实现

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(三):MyCat - 架构剖析 - 核心技术之 SQL 路由实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/757/detail/13302


MyCat - 架构剖析 - 核心技术之 SQL 路由实现

内容介绍

一、 路由的作用

二、 SQL 解析器

 

一、 路由的作用

MyCat 的路由是和 SQL 解析组件息息相关的,SQL 路由模块是 MyCat 数据库中间件最重要的模块之一,使用 MyCat 主要是为了分库分表,而分库分表的核心就是进行 SQL 路由。

image.png

如图所示, MyCat 接收到应用系统发来的查询语句,要将其发送到后端连接的 MySQL 数据库去执行,但是后端由三个数据库服务器,具体要查询哪一台数据库服务器,就是路由需要实现的功能。

前端用户即应用程序链接的是 Mycat,并不直接连接 MySQL,应用程序要想执行 MySQL 语句,应用程序会发送一句 SQL 语句给 Mycat,Mycat 要去执行这句 SQL 语句进行查询,它将到哪一个分线进行查询,这些并不是固定的,这些都是要通过 Mycat 的 SQL 路由模块来进行计算的。

假如操作这张表,在对这张表在进行分片设计的时候,是根据 status 进行枚举分片, status 为 0 存储第一个节点, status 为 1 存储第二个节点, status 为 2 存储第三个节点。

当我们根据 status 字段来进行查询时, Mycat 首先会接收到客户(应用程序)发送的 SQL 语句,然后需要对 SQL 语句进行判定,判定当前条件 status 为0到底在哪个分线当中,确定分线之后,会将 SQL 语句路由到分线当中,然后在分线中执行,最后将分线结果返回回来,并不是每一次都到三个分线当中。

Mycat 在进行 SQL 路由当中既要保证数据的完整性,还要保证不造成资源的浪费,还要保证路由的效率。

例:

若 MyCat 输入的 SQL 语句为 select * from user wherestates in (‘0’,‘1’),根据他的 SQL 路由会到 dn1,dn2 分线中查询,然后把分线中查询的数据返回给 MyCat ,在 MyCat 中进行统计汇总。


二、SQL 解析器

Mycat1.3 版本之前模式使用的是 Fdbparser 的开源  SQL 解析器,在 2015 年被 apple 收购后,从开源变成闭源了。目前版本的 Mycat 采用的是 Druid 的 SQL 解析器,性能比采用 Fdbparser 整体性能提高 20% 以上。

 

相关文章
|
3月前
|
SQL 数据可视化 关系型数据库
MCP与PolarDB集成技术分析:降低SQL门槛与简化数据可视化流程的机制解析
阿里云PolarDB与MCP协议融合,打造“自然语言即分析”的新范式。通过云原生数据库与标准化AI接口协同,实现零代码、分钟级从数据到可视化洞察,打破技术壁垒,提升分析效率99%,推动企业数据能力普惠化。
318 3
|
3月前
|
算法 数据挖掘 数据库
通过 SQL 快速使用 OceanBase 向量检索学习笔记
通过 SQL 快速使用 OceanBase 向量检索学习笔记
|
3月前
|
SQL 数据库
SQL 学习笔记 - 多表关系与多表查询
数据库多表关系包括一对多、多对多和一对一,常用外键关联。多表查询方式有隐式/显式内连接、外连接、子查询等,支持别名和条件筛选。子查询分为标量、列、行、表子查询,常用于复杂查询场景。
|
12月前
|
自然语言处理 JavaScript Java
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍
HarmonyOS采用分层架构设计,从下至上分为内核层、系统服务层、框架层和应用层。内核层支持多内核设计与硬件驱动;系统服务层提供核心能力和服务;框架层支持多语言开发;应用层包括系统及第三方应用,支持跨设备调度,确保一致的用户体验。
1081 81
|
9月前
|
人工智能 前端开发 Java
DDD四层架构和MVC三层架构的个人理解和学习笔记
领域驱动设计(DDD)是一种以业务为核心的设计方法,与传统MVC架构不同,DDD将业务逻辑拆分为应用层和领域层,更关注业务领域而非数据库设计。其四层架构包括:Interface(接口层)、Application(应用层)、Domain(领域层)和Infrastructure(基础层)。各层职责分明,避免跨层调用,确保业务逻辑清晰。代码实现中,通过DTO、Entity、DO等对象的转换,结合ProtoBuf协议,完成请求与响应的处理流程。为提高复用性,实际项目中可增加Common层存放公共依赖。DDD强调从业务出发设计软件,适应复杂业务场景,是微服务架构的重要设计思想。
|
10月前
|
SQL 存储 关系型数据库
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
473 9
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
SQL 存储 算法
比 SQL 快出数量级的大数据计算技术
SQL 是大数据计算中最常用的工具,但在实际应用中,SQL 经常跑得很慢,浪费大量硬件资源。例如,某银行的反洗钱计算在 11 节点的 Vertica 集群上跑了 1.5 小时,而用 SPL 重写后,单机只需 26 秒。类似地,电商漏斗运算和时空碰撞任务在使用 SPL 后,性能也大幅提升。这是因为 SQL 无法写出低复杂度的算法,而 SPL 提供了更强大的数据类型和基础运算,能够实现高效计算。
|
SQL 安全 数据库
sql注入技术
sql注入技术
|
SQL 机器学习/深度学习 自然语言处理
Text-to-SQL技术演进 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法剖析
本文主要介绍了阿里云OpenSearch在Text-to-SQL任务中的最新进展和技术细节。