这门课解决什么问题

日常业务开发中,Go后端工程师多数时候只负责写CRUD接口,很少接触数据库底层的网络通信与协议解析。当单表数据量膨胀,需要引入分库分表或成熟中间件时,很多人只能停留在“配置一下”的层面,一旦遇到路由规则失效、跨表聚合异常或底层连接泄漏,往往无从下手。这门课切入的正是这个断层:它不教你写业务代码,而是带你用Go徒手写一个最小化的MySQL代理,从监听端口、接管客户端握手、解析网络层数据包,到拦截SQL并按规则拆分路由。核心目标只有一个,让你搞懂数据库中间件“接管请求、改写SQL、分发执行”这套底层运转机制。理解了这套运作机制,再去排查线上分表中间件的疑难杂症,或者阅读其他开源中间件的源码,就不会有看天书的生涩感。

适合什么基础与建议先看哪几块

这套资料不适合刚学完Go语法的新手。它默认你已经熟悉goroutine、channel与net包的基本网络编程,并且写过至少一两个完整的Web后端项目。资料前半部分聚焦于MySQL代理的构建,这是理解后续逻辑的地基。建议直接从第一讲的代理搭建与Handler处理类切入,重点看懂Go程序如何伪装成数据库服务端来接收客户端连接,并支持查询数据正常返回。随后,课程进入SQL解析与分表拆分环节,这是整套资料的精髓。你需要重点关注如何借助第三方解析库提取From表名、Select字段,以及如何根据分表规则把原始SQL拆分成支持where和Limit的多条子查询。这几讲涉及大量字节流切分与语法树操作,建议跟着视频暂停,自己动手把解析出的结构体打印出来,确认理解了再往下走。

学完能独立做什么与资料怎么配合练习

完整过完这套资料,你能独立写出一个具备基础路由与分表查询能力的Go版数据库代理。虽然它只是教学级的“玩具”,但你能借此掌握如何接管数据库请求、如何改写并分发SQL、以及如何合并多个数据集返回给客户端。这种自底向上的工程能力,在排查线上中间件路由错乱或自研轻量级数据网关时非常实用。练习时,建议在本地起一个真实的MySQL实例作为后端存储,再用Go写一个测试客户端去连你手写的代理服务。每听完一讲,就把对应的代理逻辑补全,用实际的查询语句打日志验证SQL是否被正确拦截和拆分。不要只停留在看懂代码的层面,务必自己敲一遍网络监听与结果集合并的逻辑,只有亲自处理过协议解析的边界情况,这些知识才会真正变成你自己的底层功底。


本课程是一个套路课程。通过本课程学习我们了解mysql中间件的基本实现套路。借助第三方库模拟实现数据库中间件部分(分表功能),懂了原理再学习各种成熟中间件就更丝

课程目录

*   第1讲:开张课、 课程内容、创建一个最简单的mysql代理

*   第2讲:mysql代理(1):初步创建自己的Handler处理类

*   第3讲:mysql代理(2):支持查询数据返回

*   第4讲:数据库中间件、模拟分表、模拟最简单的多表查询

*   第5讲:模拟分表查询:多数据集合并的方式

*   第6讲:Sql解析学习(select):使用第三方库、获取From表名

*   第7讲:Sql解析学习(select): 获取Select字段、字符串形式打印

*   第8讲:Sql解析学习(select): 根据”分表规则”拆分SQL(初步)

*   第9讲:Sql解析学习(select): 根据”分表规则”拆分SQL(支持where、Limit等)

*   第10讲:分表拆分之水平拆分、分表规则、范围分表配置

*   第11讲:按范围分表(1):分析where条件找到ID字段

*   第12讲:按范围分表(2):根据ID范围规则初步拆分SQL

*   第13讲:按范围分表(3): where多个条件处理

*   第14讲:按范围分表:支持多命中条件分表 (上):思路讲解

*   第15讲:按范围分表:支持多命中条件分表 (下):代码实现

*   第16讲:阶段性成果:把SQL解析和代理做初步整合、总结课、新课预告