业务挑战

数据库是企业应用系统的核心,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. 东方通TongWeb7部署SuperMap iServer War包

    一.软件版本 操作系统: CentOS 7.5.1804 JDK:1.8_201 东方通:TongWeb7.0.4.2 SuperMap iServer:10.2 二.东方通TongWeb7部署流程 ...

  2. iOS定义常量的两种方式define和FOUNDATION_EXPORT

    FOUNDATION_EXPORT的使用方法: 1.h文件 FOUNDATION_EXPORT NSString * const kTestString; 2.m文件NSString * const ...

  3. C#的函数使用 和参数修饰符 out ref params

    // 函数和方法 // 函数好比对象的动作行为 在定义函数的时候,职责(作用/功能)越单一越好 满足高内聚 低耦合的开发思路 // 变量的命名规则 小驼峰 // 函数的命名规则 大驼峰 动词开头 // ...

  4. 托管服务简介IHostedService接口 继承 BackgroundSerice接口

    1. 场景:代码运行在后台,比如服务器启动的时候在后台预先加载数据到缓存,每天凌晨3 点把数据到处到数据库备份,每隔5秒在两张表之间同步一次数据 : 2. 托管服务实现IHoutedService接口 ...

  5. 技术分享PPT整理(三):网页渲染流程

    在我刚开始学习Web开发的时候,一直有个疑问--我写出的代码究竟是在什么时候发生作用的呢?是不是每次我修改代码网页都随之变化了?当然,现在来看这肯定是一个错误的想法,经过一段时间的工作和学习后,代码到 ...

  6. 云原生爱好者周刊:Grafana 开源 Prometheus 长期存储项目 Mimir

    开源项目推荐 Grafana Mimir Grafana Mimir 是 Grafana Labs 新开源的项目,用来为 Prometheus 提供持久化存储,开源许可协议是 AGPL-3.0.此前 ...

  7. 云原生周刊 | 2023 年热门:云 IDE、Web Assembly 和 SBOM | 2023-02-20

    在 CloudNative SecurityCon 上,云原生计算基金会的首席技术官 Chris Aniszczyk 在 The New Stack Makers 播客的这一集中强调了 2023 年正 ...

  8. Sentinel简单使用(1)

    使用场景 在微服务架构中,服务之间会进行大量的调用.为了防止某个服务被过多的请求压垮,导致整个系统崩溃,就需要对流量进行控制.同时,当某个服务出现故障时,为了防止故障扩散到整个系统,需要进行熔断操作. ...

  9. 相机系统 GLFW OPENGL

    目录 0. 前言 1. 世界坐标系 2. GLFW 窗口坐标系 与 坐标系变换 3. 相机是什么东西 4. 相机的平面位移(上下左右) 5. 相机的聚焦点环绕(球形环绕 ArcBall Orbit) ...

  10. 如何在Spark键值对数据中,对指定的Key进行输出/筛选/模式匹配

    在用键值对RDD进行操作时,经常会遇到不知道如何筛选出想要数据的情况,这里提供了一些解决方法 目录 1.对固定的Key数据进行查询 2.对不固定的Key数据进行模糊查询 1.对固定的Key数据进行查询 ...