业务挑战
数据库是企业应用系统的核心,SQL作为数据库查询、更新等操作的标准语言,重要性不言而喻。然而在实际的SQL开发过程中,也面临着诸多挑战:
-
数据库应用开发人员的SQL能力良莠不齐,经常写出不符合标准、执行性能差的SQL,当这些风险SQL流入生产环境,必然会对应用系统造成极大影响。
-
随着应用越来越复杂,对应SQL的规模也越来越大,一个SQL语句动辄数百甚至上千行,这对专家来说也是一个挑战,很难发现潜在的问题。
-
在数据库异构替换场景中,应用开发人员对目标数据库了解不够深入,烂SQL或慢SQL会越来越多,也缺少相关专家对SQL的质量进行审核。
基于以上挑战,华为云数据库和应用迁移UGO提供了SQL审核功能。
特性概览
SQL审核功能基于审核规则管理、性能评估和索引推荐、全面的审核路径、API集成和对接四大特性,帮助应用开发人员深度看护业务代码、提升开发效率、减轻专家手工审核负担,并提前预防由于风险SQL引起的稳定性和性能问题,有效避免风险SQL流入生产环境。
-
审核规则管理:支持规范类、设计类、性能类等数百条SQL审核规则,并支持自定义规则模版、风险等级、阈值和优化建议,帮助用户提升审核效率,满足不同场景的审核需求。
-
性能评估和索引推荐:可以评估PL/SQL中SQL语句的性能问题并输出分析报告,也可以为用户推荐最优索引,帮助用户最大限度地提升SQL运行性能。
-
全面的审核路径:支持对象审核、代码审核、动态SQL审核等多种审核路径,并支持对SQL语句进行智能诊断分析,帮助用户及时发现风险SQL,及早规避风险。
-
API集成和对接:提供审核相关的OpenAPI,帮助开发者完成应用和SQL审核的集成,提升业务开发效率。
该功能目前支持GaussDB、MySQL、PostgreSQL多种引擎,并对GaussDB做了深度适配,在GaussDB数据库领域具有很高的专业度和规则覆盖度,帮助客户解决GaussDB数据库替换场景的SQL审核问题。下文将围绕以上特性详细展开。
特性指引:专业的审核规则,提升审核效率
审核规则
根据内部SQL编程规范和外部客户的实际使用场景,整理出开发规范类、对象设计类、性能类等数百条SQL审核规则,对命名规范、索引设计、SQL性能优化、分布键及算子下推等常见SQL质量问题进行了深入分析和审核。
自定义审核模版
当用户需要根据自己的业务场景制定不同的要求和规范时,SQL审核允许用户自定义SQL审核规则模版,选择和修改适合自身业务场景的审核规则,生成不同的规则模版,并自定义风险级别、阈值及优化建议。
性能评估和索引推荐,提高SQL运行性能
PL/SQL性能评估
在GaussDB数据库替换过程中,用户难以对PL/SQL内的SQL进行完整准确的性能分析,静态分析不准确、工作量大,动态分析无法构造能覆盖全部分支的测试用例。SQL审核提供了PL/SQL性能评估功能,通过对PL/SQL内的逻辑分支进行剪枝和重构,从而保证内部所有的SQL语句被全部执行和分析。同时SQL审核将生产环境数据库的统计信息导入测试库,如此性能评估时将不会对生产环境数据库产生任何影响,同时可以在测试环境完成分析,检查PL/SQL中的SQL语句是否存在性能问题并输出分析报告。
前置索引推荐
索引是数据库优化的重要手段,通过合理的设计可以显著提升数据库性能,同时也需要避免过度使用索引,造成不必要的开销。很多生产环境的性能问题都是由于索引设计不规范或无索引导致的,SQL审核支持对SQL语句进行智能诊断分析,生成冗余索引、不合理索引、推荐索引、风险SQL等分析报告,通过合理的索引推荐和索引设计,帮助用户最大限度地提升数据库的整体性能。
全面的审核路径,全方位审核业务SQL
对象审核
数据库对象是数据库架构的基础,良好的数据库对象设计可以对数据库业务的稳定运行提供坚实的保障。对于数据库对象审核场景,SQL审核会采集数据库对象的定义语句,包括表、索引、约束、存储过程、触发器、函数、package、package body等,从对象设计规范、合理性、性能等角度进行审核,提高系统的可维护性、安全性和规范性。
代码审核
在应用开发阶段,代码审核是确保软件质量和稳定性的重要步骤。对于代码审核场景,SQL审核会采集代码中的SQL语句并进行全面审核,如Java源码、MyBatis XML文件、MyBatis注解、SQL脚本等代码文件,这不仅有助于提升代码质量,减少技术债务,还能促进团队间的技术共享和协作,有效提升软件质量和开发效率。
动态SQL审核
动态SQL是一种在运行时实时生成的SQL语句,无法从代码或数据库中直接获取。对于动态SQL审核场景,SQL审核可以通过JVM探针或流量录制等方式,采集业务运行过程中产生的SQL语句,极大提升SQL获取的完整度,有效降低潜在风险。
API集成和对接,提升业务开发效率
API集成和对接
为了帮助用户完成应用与SQL审核的对接,SQL审核提供了OpenAPI,用户可将SQL审核集成到持续集成/持续交付(CI/CD)流水线中,帮助开发团队在代码提交或合并时自动完成审核,并返回审核结果,方便快速修复问题,有效提高审核效率和SQL代码质量。也可以将SQL审核集成到IntelliJ IDEA或其他IDE插件中,为开发者提供实时的SQL代码检查和反馈,从而提升业务开发效率和代码开发质量。
API安全认证
用户可以登录控制台创建访问密钥,获取AK和SK妥善保存。SQL审核通过AK识别用户的身份,通过SK对请求数据进行签名认证,用于确保请求的机密性、完整性和请求者身份的正确性,保护OpenAPI接口安全性。
应用案例
SQL审核成功帮助某金融大行完成数据库替代,将业务平滑迁移至GaussDB,通过流水线、上传业务代码、扫描业务数据库等方式,自定义特性化审核规则,审核了70多个应用系统,扫描的SQL总数超过60万条,发现的问题SQL数超过31万条,其中严重问题超过8万条,一般问题超过11万条,提示问题超过11万条,应用开发人员根据审核报告提前发现大量不规范SQL,并对代码进行优化,有效避免了风险SQL流入生产环境。
华为云数据库和应用迁移UGO服务的SQL审核功能在数据库管理和开发过程中具有重要的价值,是任何数据库管理和开发过程中都不可或缺的一部分,不仅可以优化数据库和业务系统的性能和可靠性,还能提升代码的可读性和可维护性。在未来,UGO也将借助AI技术持续增强SQL审核和优化改写能力,帮助用户更好地管理数据库和开发数据库相关业务。
华为开发者空间,汇聚鸿蒙、昇腾、鲲鹏、GaussDB、欧拉等各项根技术的开发资源及工具,致力于为每位开发者提供一台云主机、一套开发工具及云上存储空间,让开发者基于华为根生态创新。点击链接,免费领取您的专属云主机