首页 > 数据库 >揭秘UGO SQL审核功能4大特性,让业务平滑迁移至GaussDB

揭秘UGO SQL审核功能4大特性,让业务平滑迁移至GaussDB

时间:2024-12-02 18:34:42浏览次数:9  
标签:代码 UGO GaussDB 性能 索引 SQL 审核 数据库

业务挑战

数据库是企业应用系统的核心,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、欧拉等各项根技术的开发资源及工具,致力于为每位开发者提供一台云主机、一套开发工具及云上存储空间,让开发者基于华为根生态创新。点击链接,免费领取您的专属云主机

标签:代码,UGO,GaussDB,性能,索引,SQL,审核,数据库
From: https://www.cnblogs.com/huaweiyun/p/18582450

相关文章

  • 高效集成:将聚水潭数据导入MySQL的实战案例
    聚水潭数据集成到MySQL:店铺信息查询案例分享在数据驱动的业务环境中,如何高效、准确地实现跨平台的数据集成是每个企业面临的重要挑战。本文将聚焦于一个具体的系统对接集成案例——将聚水潭的店铺信息查询结果集成到MySQL数据库中,以供BI系统进行进一步的数据分析和处理。本次集......
  • mysql 文本函数
    --1、替换回车或换行用char(13)或者char(10)试试--select异议from--(-- selectreplace(replace(异议1s,char(13),""),char(10),"")as"异议"from`语句合并`--)ast1--字符串--字符的链接--selectconcat("ss","sdf")--字符串的位置--sel......
  • 基于SpringBoot的中小企业设备管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
    专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。主要内容:免费功能设计、开题报告、任务书、中......
  • 基于SpringBoot的论坛网站系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
    专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。主要内容:免费功能设计、开题报告、任务书、中......
  • C# 启用数据库通知刷新(SqlDependency)
    ‌SqlDependency‌是一种功能,用于在数据库中的数据发生变化时自动触发事件,通知应用程序更新数据或缓存。它适用于ASP.NET和ASP.NETCore应用程序,特别是在需要实时响应数据变化的场景中非常有用。使用方法1‌.启用数据库的通知服务‌:首先需要在数据库中启用通知服务。对于SQLS......
  • SQL面试题——抖音SQL面试题 共同问题—共同使用ip用户检测问题
    共同使用ip用户检测问题现有用户登录日志表,记录了每个用户登录的IP地址,请查询共同使用过3个及以上IP的用户对;+---+--------------+-------------------+|id|ip|etime|+---+--------------+-------------------+|2|223.104.41.101|2023-08......
  • mysql 之查询条件!=或者<>存在问题,会被轻易忽略而且影响查询结果
    mysql数据库查询,我们再使用sql条件时会经常使用!=(<>),但使用!=之后,这个字段对应的为空的值不会查出来。所以建议!=长春与isnull同时用查询结果测试如下:我们先查询满足条件的数据;id上下相同,同时此id的对应的paln_status查询如图是空的: 咱们再来查询总体满足业务场景的语句!=同时......
  • C#毕业设计下载(全套源码+配套论文)——基于C#+asp.net+sqlserver的报表管理系统设计与
    基于C#+asp.net+sqlserver的报表管理系统设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于C#+asp.net+sqlserver的报表管理系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于C#+asp.net+sqlserver的报表管理系统设计与实现(毕业论文+程序源码)1、项......
  • C#毕业设计下载(全套源码+配套论文)——基于C#+asp.net+sqlserver的城市公交查询系统设
    基于C#+asp.net+sqlserver的城市公交查询系统设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于C#+asp.net+sqlserver的城市公交查询系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于C#+asp.net+sqlserver的城市公交查询系统设计与实现(毕业论文+程......
  • 运维脚本: Mysql数据库备份
    背景介绍在数据库管理和运维中,定期备份数据库是防止数据丢失和灾难恢复的基础。对于MySQL数据库,手动备份可能会导致频繁的操作失误或遗漏,因此,自动化备份脚本的编写变得尤为重要。本文将为你介绍如何编写一个简单且实用的MySQL备份脚本,通过该脚本,用户可以轻松自动化备份过程......