1 智能SQL审核平台
1.1 概述
智能SQL审核平台是面向研发和DBA的SQL全生命周期治理平台。主要是为了减少因风险SQL带来的生产故障。
1.2 技术栈
Python+Java+Go
1.3 主要功能
- 事前审核:IDE插件审核、流水线审核
- 事中审核:Java agent采集SQL
- 事后审核:数据库监控,定时采集SQL进行分析统计
- 规则引擎:数百条内置规则,包含了性能、安全、规范等多维度,可配置化的规则及规则集
- 优化建议:通过AI Agent实现对高风险SQL的AI建议,比如索引调整、分库分表策略等,还有对应的语句改写,代码调整。
- 负载预测:通过历史数据预测未来时刻的负载值,如果超过一定的阈值就告警
1.4 技术实现
代码扫描 -> SQL提取 -> SQL解析 -> 元数据&执行计划 -> 规则引擎计算 -> 优化建议。
- 代码扫描:JavaParser解析Java代码,根据代码特性提取SQL
- IDE插件:idea插件和Eclipse插件(定义插件plugin.xml,实现action)
- Java Agent:master+worker架构,通过SpringBoot实现master,master将agent.jar attach到应用进程,agent.jar在其中开启worker组件,实现与master心跳检测,SQL数据提交等,同时响应master指令。
- SQL解析:SLY定义词法分析器和语法分析器,解析出关键信息,包括基本的表、字段、表达式等
- 元数据&执行计划:根据表、SQL信息从数据库获取元数据和执行计划信息
- 规则引擎计算:使用MVEL将数据与规则进行计算
- 优化建议:使用langchain搭建Agent,读取元数据、执行计划,读取规则,通过RAG调取历史风险处理建议,通过middlware对数据安全进行过滤(比如参数替换时如果涉及到敏感信息会先做处理),对风险SQL进行分析,给出优化建议和语句改写建议。(我离开的时候,自动改写实现中,已经规划好,主要是通过HITL人工介入方式去兜底执行)
- 异步审核:Celery提交异步任务进行审核
1.5 主要职责
负责Java模块设计与开发,包括JavaParser代码扫描、Java Agent、SLY SQL解析器,MVEL规则引擎,AI Agent优化建议等,还有IDE插件开发。
1.6 主要业绩
这个系统是属于CI/CD中的一个环节,处于流水线的比较前置的步骤,是全公司各个部门都在使用,代码扫描覆盖了MybatisPlus全部常见的语法,在迭代过程中也覆盖了一些非常特殊的写法(比如insertStrategy /updateStrategy:控制字段是否拼入 SQL)减少了80%的风险代码上线,并且TOPSQL还提高了DBA定位问题的效率。主要将风险提前处理。