业务挑战

数据库是企业应用系统的核心,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 SQL审核功能4大特性,让业务平滑迁移至GaussDB的更多相关文章

  1. Atitit 数据融合merge功能v3新特性.docx

    Atitit 数据融合merge功能v3新特性.docx 1.1. 版本历史1 1.2. 生成sql结果1 1.3. 使用范例1 1.4. 核心代码1 1.1. 版本历史 V2增加了replace部分 ...

  2. 基于Inception搭建MySQL SQL审核平台Yearing

    基于Inception搭建MySQL SQL审核平台Yearing Inception 1. Inceptionj简介 2. Inception安装 2.1 下载和编译 2.2 启动配置 Yearni ...

  3. SQL审核 Inception 中小团队快速构建SQL自动审核系统

    SQL审核与执行,作为DBA日常工作中相当重要的一环,一直以来我们都是通过人工的方式来处理,效率低且质量没办法保证.为了规范操作,提高效率,我们决定引入目前市面上非常流行的SQL自动审核工具Incep ...

  4. sql审核-避免离线sql导致的db集群故障

    关键词: sql审核.sql审批.sql检查.sql检测.sql执行 离线sql可能会导致的问题 首先,什么是离线sql呢?就是说手动触发执行的这种sql:相对的还有在线sql,位于我们的程序代码中, ...

  5. 天天写SQL,这些神奇的特性你知道吗?

    摘要:不要歪了,我这里说特性它不是 bug,而是故意设计的机制或语法,你有可能天天写语句或许还没发现原来还能这样用,没关系我们一起学下涨姿势. 本文分享自华为云社区<[云驻共创]天天写 SQL, ...

  6. 【原创】SQL审核系统

    前言 应公司dba的需求,做了一个sql审核并可以执行.记录的系统,整个系统有三种角色: DBA(需要管理员手动登记) 运维人员(需要管理员手动登记) 开发人员(默认注册后用户) 权限分配如下: 一些 ...

  7. SQL Server 2014 BI新特性(一)五个关键点带你了解Excel下的Data Explorer

    Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企业中的自助式的商业智能变得更加的灵活,从而也降低了商业智能的门槛. 此文是在微软商业智能官方博客里 ...

  8. Catalyst揭秘 Day7 SQL转为RDD的具体实现

    Catalyst揭秘 Day7 SQL转为RDD的具体实现 从技术角度,越底层和硬件偶尔越高,可动弹的空间越小,而越高层,可动用的智慧是更多.Catalyst就是个高层的智慧. Catalyst已经逐 ...

  9. php 实现购物车功能,以大苹果购物网为例,上图上代码。。。。

    首先是几个简单的登录页面 <body> <form action="chuli.php" method="post"> <div ...

  10. ES6的十大特性和认知

    ---恢复内容开始--- ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率.本文主要针对E ...

随机推荐

  1. Java SE 23 新增特性

    Java SE 23 新增特性 作者:Grey 原文地址: 博客园:Java SE 23 新增特性 CSDN:Java SE 23 新增特性 源码 源仓库: Github:java_new_featu ...

  2. Flutter Web 近期的重要更新

    我们的发布重点优先关注在性能.开发者体验以及 Web 集成上 2021 年 3 月 Flutter Web 支持已进入稳定版,那么,下一步是什么? 我们对用户研究发现,有超过 10% 的 Flutte ...

  3. 系统编程-进程-wait、waitpid和WIFEXITED系列宏 超级详解

    1.  wait.waitpid 函数简介 补充:对于waitpid,如果返回值为0,表示指定去等待的子进程尚未结束. 该系列宏的使用方法展示: PART1 实验思路: 使用wait系统调用让父进程给 ...

  4. llama.cpp推理流程和常用函数介绍

    llama.cpp是一个高性能的CPU/GPU大语言模型推理框架,适用于消费级设备或边缘设备.开发者可以通过工具将各类开源大语言模型转换并量化成gguf格式的文件,然后通过llama.cpp实现本地推 ...

  5. auto` 作为返回值类型的一些限制

    在 C++ 中,auto 作为返回值类型有一些限制,这与类型推导的方式和时机有关. 虽然在很多场景下 auto 可以简化代码,但它不能直接用于函数返回类型,这是因为在编译时类型推导的机制不同于局部变量 ...

  6. Nuxt.js 应用中的 link:prefetch 钩子详解

    title: Nuxt.js 应用中的 link:prefetch 钩子详解 date: 2024/10/7 updated: 2024/10/7 author: cmdragon excerpt: ...

  7. MyBatis的常见面试题

    MyBatis 1.什么是MyBatis MyBatis是一款优秀的半自动化的持久层框架.支持自定义 SQL.存储过程以及高级映射. 2.MyBatis的特点? 简单.灵活.解耦.丰富的标签 3.My ...

  8. OOOPS:零样本实现360度开放全景分割,已开源 | ECCV'24

    全景图像捕捉360°的视场(FoV),包含了对场景理解至关重要的全向空间信息.然而,获取足够的训练用密集标注全景图不仅成本高昂,而且在封闭词汇设置下训练模型时也受到应用限制.为了解决这个问题,论文定义 ...

  9. 活动预告 | 中国数据库联盟(ACDU)中国行第二站定档杭州,邀您探讨数据库技术与实践!

    数据库技术一直是信息时代中不可或缺的核心组成部分,随着信息量的爆炸式增长和数据的多样化,其重要性愈发凸显.作为中国数据库联盟(ACDU)的品牌活动之一,[ACDU 中国行]在线下汇集数据库领域的行业知 ...

  10. Unity 华为快游戏JS桥接 实现写日志等功能

    之前接入微信小游戏本身代码js桥接比较完善,抖音小游戏有缺少但也没缺的这么多,华为这边的API,大残啊!官方转换插件Github仓库上一次提交在3月份.(截至现在)API给的很简略,接入js代码那里说 ...