揭秘 UGO SQL 审核功能 4 大特性,让业务平滑迁移至 GaussDB
业务挑战
数据库是企业应用系统的核心,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、欧拉等各项根技术的开发资源及工具,致力于为每位开发者提供一台云主机、一套开发工具及云上存储空间,让开发者基于华为根生态创新。点击链接,免费领取您的专属云主机
评论