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% 以上。

 

相关文章
|
26天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
1月前
|
SQL 存储 算法
比 SQL 快出数量级的大数据计算技术
SQL 是大数据计算中最常用的工具,但在实际应用中,SQL 经常跑得很慢,浪费大量硬件资源。例如,某银行的反洗钱计算在 11 节点的 Vertica 集群上跑了 1.5 小时,而用 SPL 重写后,单机只需 26 秒。类似地,电商漏斗运算和时空碰撞任务在使用 SPL 后,性能也大幅提升。这是因为 SQL 无法写出低复杂度的算法,而 SPL 提供了更强大的数据类型和基础运算,能够实现高效计算。
|
2月前
|
SQL 安全 数据库
sql注入技术
sql注入技术
|
2月前
|
SQL 存储 分布式计算
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
51 0
|
3月前
|
SQL 机器学习/深度学习 自然语言处理
Text-to-SQL技术演进 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法剖析
本文主要介绍了阿里云OpenSearch在Text-to-SQL任务中的最新进展和技术细节。
|
3月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
180 0
|
4月前
|
测试技术 Java
揭秘Struts 2测试的秘密:如何打造无懈可击的Web应用?
【8月更文挑战第31天】在软件开发中,确保代码质量的关键在于全面测试。对于基于Struts 2框架的应用,结合单元测试与集成测试是一种有效的策略。单元测试聚焦于独立组件的功能验证,如Action类的执行逻辑;而集成测试则关注组件间的交互,确保框架各部分协同工作。使用JUnit进行单元测试,可通过简单示例验证Action类的返回值;利用Struts 2 Testing插件进行集成测试,则可模拟HTTP请求,确保Action方法正确处理请求并返回预期结果。这种结合测试的方法不仅提高了代码质量和可靠性,还保证了系统各部分按需协作。
31 0
|
4月前
|
SQL 数据挖掘 数据库
SQL中的重复行删除:技术与策略
【8月更文挑战第31天】
141 0
|
4月前
|
SQL 数据管理 关系型数据库
SQL分区表技术的奥秘:如何用分区策略让你的大规模数据飞起来?
【8月更文挑战第31天】在现代软件开发中,处理大规模数据是常见挑战,而SQL分区表技术提供了一种高效的解决方案。本文详细介绍了SQL分区表的概念、类型(范围、列表、哈希和键分区)及其创建与维护方法,并通过示例代码展示了如何添加、删除和重组分区。遵循了解查询模式、定期维护分区及使用数据库性能工具等最佳实践,可以帮助开发者更高效地进行数据管理。随着SQL生态的发展,分区表技术将在未来发挥更大作用。
52 0
|
5月前
|
SQL 缓存 测试技术
DeepMind的新论文,长上下文的大语言模型能否取代RAG或者SQL这样的传统技术呢?
DeepMind的LOFT基准测试挑战了长上下文大型语言模型(LCLLMs)的效用,包括Gemini、GPT-4o和Claude 3 Opus。
95 1