自去年开始,中台话题的热度不减,很多公司都投入到中台的建设中,从战略制定、组织架构调整、协作方式变动到技术落地实践,每个环节都可能出现各种各样的问题。技术中台最坏的状况是技术能力太差,不能支撑业务的发展,其次是技术脱离业务,不能服务业务的发展。前者是能力问题,后者是意识问题。在本专题中,伴鱼技术团队分享了从 0 到 1 搭建技术中台的过程及心得。
随着伴鱼业务的快速发展,公司各产品线的业务不断丰富,日常的 SQL 上线也在不断增加。 SQL 审核与执行,作为 DBA 每天工作中相当重要的一环,如何保证 SQL 语句的质量,对于系统的高效运行和长久稳定有着很大的影响。
本文在对开源 SQL 审核平台(例如 Yearning、See 和 Archery 等)进行调研,并结合 DBA 在 SQL 上线实践经验的基础上,设计了伴鱼 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 上线效率和研发使用数据库的水平。系统已稳定运行近半年时间,审核规则也不断完善,更加契合公司内部场景。未来,我们有以下几点需要完善:
领取专属 10元无门槛券
私享最新 技术干货