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

 

相关文章
|
7天前
|
设计模式 架构师 数据建模
架构师必备底层逻辑:设计与建模的技术深度探索
【8月更文挑战第13天】在软件开发的浩瀚星海中,架构师如同星辰指引,他们不仅规划着系统的蓝图,更在底层逻辑上精雕细琢,确保系统的稳健与高效。其中,“设计与建模”作为架构师的核心能力之一,是连接业务需求与技术实现的桥梁。本文将深入探讨架构师在设计与建模过程中的关键思维与实践方法,为工作学习中的技术同仁提供一份宝贵的干货分享。
23 3
|
16天前
|
Kubernetes 监控 开发者
探索后端开发的新境界:微服务架构与容器化技术
在数字化时代的浪潮中,后端开发不断演进,涌现出创新的架构与技术。本文深入探讨了微服务架构和容器化技术如何重塑后端开发,提升系统的可维护性、可扩展性和部署效率。通过实际案例分析,我们揭示了这些技术背后的原理,并提供了实施的最佳实践和面临的挑战,为后端开发者提供一条清晰的技术升级路径。
41 3
|
15天前
|
运维 开发者 Docker
深度探索微服务架构中的容器化技术
在现代软件开发中,微服务架构因其模块化和可扩展性而广受欢迎。而容器化技术,尤其是Docker,成为了支持微服务架构的核心工具。本文将探讨容器化在微服务架构中的作用,包括其如何提升开发效率、简化部署过程以及解决传统方法中的问题。通过具体实例和最佳实践的分析,读者将了解如何有效利用容器化技术来优化微服务架构。
|
17天前
|
存储 监控 负载均衡
微服务架构中的服务治理与监控技术
【8月更文挑战第3天】微服务架构中的服务治理与监控是确保系统稳定、高效运行的重要手段。通过构建注册中心实现服务的自动注册和发现,通过部署监控工具实现对服务的全面监控,可以有效地提高系统的可靠性和可用性。未来,随着技术的不断发展,服务治理与监控技术也将不断完善和优化,为微服务架构的广泛应用提供更加坚实的支撑。
|
18天前
|
XML 分布式数据库 数据库
【计算机三级数据库技术】第13章 大规模数据库架构--附思维导图
文章概述了分布式数据库、并行数据库、云计算数据库架构和XML数据库的基本概念、目标、体系结构以及与传统数据库的比较,旨在提供对这些数据库技术的全面理解。
17 1
|
19天前
|
Cloud Native Devops 持续交付
探索云原生架构:未来企业技术演进的必由之路
随着数字化转型的浪潮席卷全球,企业正逐步将目光转向云原生架构,以期实现更高效、灵活且可扩展的IT服务。本文深入探讨了云原生的核心概念,包括容器化、微服务、持续集成与持续部署等,并阐述了这些技术如何共同促进现代企业的快速发展。同时,通过分析具体案例,展示了云原生在实际应用中带来的效益,以及企业在采纳云原生路径时可能面临的挑战和解决策略。
|
4天前
|
Cloud Native 安全 云计算
云原生技术的未来:探索服务网格和无服务器架构
随着企业数字化转型的深入,云计算已成为推动业务创新的核心力量。本文将深入探讨云原生技术的最新发展趋势,重点分析服务网格和无服务器架构如何重塑云计算的未来。通过实际案例和技术解析,揭示这些前沿技术如何解决现代应用部署的复杂性,提高系统的可伸缩性和弹性。文章旨在为读者提供云原生领域的深度见解,并激发对云技术未来发展的思考。
18 0
|
27天前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
45 13
|
24天前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
22天前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
34 6