作者:孙健
孙健,爱可生研发工程师,负责 SQLE 相关开发;
本文来源:原创投稿
* 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
SQLE 是一款由爱可生开源社区发起,面向数据库开发与管理人员,实现了 SQL 的「开发」-「测试」-「上线」等全流程覆盖,资源与权限精细化管理,兼顾简洁与高效,易维护、易扩展的的开源项目,旨在为用户提供一套的安全可靠、自主可控的 SQL 质量管控方案。
SQLE 的开发阶段 SQL审核主要是通过 SQLE 的功能审核任务来完成的,该功能定位是应对全场景 SQL 质量管控解决方案,能够在应用开发、测试、上线、生产等不同阶段对 SQL 进行质量管控。将 SQL 采集与SQL审核结合对数据库进行长期审核,目前支持Mybatis 扫描,慢日志,库表元数据,TopSQL ,应用程序 SQL 抓取(java应用)的场景审核。应用开发阶段可以通过审核任务的 Mybatis 扫描类型的任务对应用代码做实时审核,Mybatis 扫描的审核任务需要通过 SQLE 提供的 Scanner 工具进行SQL采集并推送到 SQLE 进行SQL审核, 以下是 SQLE 通过 Scanner 采集 SQL 的流程图:
目前开发阶段基本都是使用 CI/CD 平台进行持续集成,例如 Jenkins ,GoCD ,git平台的 CI/CD 等,该阶段主要用来进行代码的检查,单测,打包。好处是标准化开发流程,减少复杂的工作量。因此在开发阶段也可以将SQL审核作为一个检查模块集成进CI流程。将 SQL审核事宜前置到开发阶段能够减少后期SQL审核的压力。目前使用 SQLE 的审核任务能够做到:
SQLE 的 Scanner 与CI/CD的集成方式是通过添加bash类型的任务,一般CI/CD都支持该方式。SQLE Scanner 本质上是一个二进制命令行工具,该工具集成在 SQLE 内,可以在 SQLE 平台安装目录的 bin 下找到,具体的使用方式和命令行参数解释参考:https://actiontech.github.io/sqle-docs-cn/3.modules/3.6_auditplan/scanner_management.html 。
Jenkins 集成后进行SQL审核的效果如下两张图所示:
审核结果会立即通过 Jenkins 的任务返回,当 SQL 不合规触发规则建议,可以看到上图所示的构建失败的结果,此时CI流程会通知开发,开发需要优化完不合规 SQL 后再次提交代码触发CI构建,如果SQL优化成功则SQL审核会构建成功。
开发负责人可以通过SQLE平台查看审核结果和SQL统计,提前了解目前项目中SQL的开发质量和碰到的问题。SQL统计信息和审核结果如下两张图所示:
以上最简单的SQL审核与CI/CD流程集成的试用,大家可以下载安装 SQLE 并结合自己公司CI/CD 试一下,SQLE 的安装参考主页:https://github.com/actiontech/sqle ;
更多使用场景可以参考:https://actiontech.github.io/sqle-docs-cn/3.modules/3.6_auditplan/introduction.html 。
本文关键字:#SQLE# #SQL审核# #事前审核#