搭建技术中台之 SQL 1 0 审核平台 到 从 (技术中台构建)

搭建技术中台之 SQL 1 0 审核平台 到 从 (技术中台构建)

背景

随着伴鱼业务的快速发展,公司各产品线的业务不断丰富,日常的 SQL 上线也在不断增加。 SQL 审核与执行,作为 DBA 每天工作中相当重要的一环,如何保证 SQL 语句的质量,对于系统的高效运行和长久稳定有着很大的影响。

本文在对开源 SQL 审核平台(例如 Yearning、See 和 Archery 等)进行调研,并结合 DBA 在 SQL 上线实践经验的基础上,设计了伴鱼 SQL 审核平台。相比其它 SQL 审核平台,新系统主要包括以下核心功能:

下面从整体架构、流程设计等方面详细介绍下伴鱼 SQL 审核平台以及设计背后的一些思考。

整体架构

SQL 审核架构,如下图所示,主要包括 web 前端、 SQL 审核后端和数据存储 TiDB。

流程设计

SQL 语句的质量对于系统的稳定高效运行有很大影响,因此 SQL 审核平台必须加强语句质量的审核。其次, SQL 审核平台在确保数据库平稳运行的同时,尽量提高上线的效率。

规则设计

通过系统约束是践行数据库规范最有效的手段。 SQL 审核规则除了加入业界认可的规则外,我们还根据日常 SQL 上线暴露的一些风险场景,加入我们设计的一些规则。 SQL 审核部分规则列表,如下图所示。

数据的删改关系到数据安全和 SQL 性能,其中 SQL 性能关系到线上服务的稳定性。这里简单介绍下“删改数据规则”,主要包括以下三条规则:

下面对这 3 条规则进行解释:

规则这样配置,一方面系统根据语句条件备份时,保证了快速高效;其次,数据执行权限已经下放给业务负责人,系统尽可能保证 SQL 的执行性能。

任务设计

业务 app 大版本上线,涉及 SQL 上线条数众多,在任务设计上主要做了如下几点考虑:

基于以上两点要求和任务提交的易用性,我们设计了任务检测页面,如下图所示。

其中,对于建表选项,我们要求每个输入框只输入一条建表语句,并备注每个表的查询和更新,这样设计的原因是符合 DBA 审核习惯,方便 DBA 审核索引好坏。

任务检测

研发提交 SQL 任务检测后,后台基于 SQL 审核规则,对语句进行语法和规则进行检查,并将检测结果反馈给研发。在任务检测结果页,从易用性角度做了如下几点考虑:

检测结果页,如下图所示。

其中:

任务审核

任务审核角色有 2 个,一级审核为业务负责人,负责审核任务提交同学的 SQL 质量,二级审核为 DBA ,进一步审核和提高 SQL 质量。审核流程,如下图所示。

目前,任务审核流程如下:

任务执行

任务执行阶段,主要考虑 2 个问题,包括大表添加索引可能导致的性能问题和数据删改可能导致的数据误操作问题。针对这 2 个问题,我们采取的措施如下:

任务待执行列表,如下图所示。任务如果设置了定时调度,后台调度到该设置的时间点执行,当然待调度的任务也可以修改调度时间或者人工调度立即执行。

任务历史

任务历史主要保存 SQL 语句操作记录,便于审计。同时对于删改操作,任务历史提供数据回滚入口,如下图所示。

总结及规划

目前,伴鱼 SQL 审核平台简化了 DBA 的工作,提高了研发 SQL 上线效率和研发使用数据库的水平。系统已稳定运行近半年时间,审核规则也不断完善,更加契合公司内部场景。未来,我们有以下几点需要完善:

预告: 伴鱼的 SQL 审核平台正在进行开源准备,希望能对有同样需求的同行们提供一点点帮助。

相关链接:

《从0到1搭建技术中台实践全解》

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。