百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

9年积淀SQL审核最佳实践核心观点

ccwgpt 2025-03-01 13:09 52 浏览 0 评论

随着信息技术的高速发展,IT系统由传统的烟囱式架构向平台化、去中心化转变,通过业务模块无状态化改造,结合Docker等容器技术,应用系统可以轻松实现秒级线性扩展以满足业务增长的需求。SQL语句作为应用系统与数据库之间的桥梁,在高并发下,只要质量稍有下降都会导致数据库成为性能瓶颈。虽然BAT等互联网巨头具备较强的核心掌控力以及完备的架构和工具链,能在一定程度上减轻数据库压力,但仍然需要完善的管理流程与规范约束开发人员合理编写SQL。

自2007年起,在中国移动浙江公司信息技术部副总经理、国内首批Oracle 9i OCM王晓征的带领下,浙江移动与新炬网络联合制定了浙江移动首版《IT系统数据库开发规范》,历经9年更新迭代百余次,目前已积淀2万余字,涵盖数据库设计、用户创建、数据同步、应用连接、高可用设计、对象命名、对象设计、SQL编写、数据库安全等规范,并且通过完善的流程管理,达到了对海量数据经营与业务数据访问的管理。经过多年的探索与实践,浙江移动已形成了一套敏捷、高效的SQL审查方案。

浙江移动作为全国首个提出并落地SQL审查方案的运营商,经过多年步道与传播,让众多兄弟公司与互联网企业意识到SQL审查的重要性并推进落地。经浙江移动独家授权,在此分享浙江移动在落地SQL审查方法论时总结得出的三个核心观点:

一、工具是SQL审查手段但不是万能

浙江移动数据平台组于2009年研发出第一代SQL审查工具,并将《IT系统数据库开发规范》中的规范转化成规则,自动审查上线SQL脚本中的违规信息。截至目前,该工具已迭代6个版本,具备SQL规则管理、SQL代码管理、SQL违规报表、SQL自动优化以及按照业务系统、模块、开发商、开发人员等多维度报表的功能。在工具化建设与推进的过程中,工具发挥着方便有效管理、审查、跟进SQL的作用,并且可以随时汇总报表展示SQL审查成果。但是数据库作为操作数据的平台,除了应用之外,还会有诸多客户端接入执行相应的SQL,而工具通常在中间件、数据库中进行部署,因此没有业务层信息带入,工具无法捕获SQL的用途、发起设备、开发商、开发人员等信息,这就对后续整改带来了巨大的工作量。当然,也有部分SQL审核工具通过扫描代码实现,但代码中通常采用动态SQL实现逻辑,因而无法扫描出完整的SQL与相应信息。截至目前,浙江移动只管控了一部分的核心SQL,约调用量的80%。所以说,工具只是SQL审查的一小部分,别把工具当万能。

二、SQL作为企业软资产,需要持续运营

SQL作为企业的软资产时刻伴随着数据的产生、变迁与消亡,与数据一样,SQL资产也需要进行严格管控。如果任由SQL野蛮生长,将会引发严重的系统性能问题、扩展性问题、安全性问题,甚至会导致业务数据不可恢复的破坏。SQL的管控不仅仅局限在SQL运行质量,而应该覆盖SQL全生命周期,包括SQL创建、SQL运行、SQL下线等阶段的相关信息,例如创建人、所属业务、上线时间、执行频率、调用模块、用途以及上线后SQL在各阶段的运行数据等。开发DBA团队应通过持续运营,为SQL打上标签,对SQL进行全生命周期管控。

三、快速转型,这一刻拥抱DevOps

在信息技术快速变革的推动下,数据平台组由ITIL驱动向DevOps转型,浙江移动联合新炬网络建立了直接面向开发人员的开发DBA小组。在开发阶段,开发人员须在审查平台上提交SQL代码,同时可以申请协助服务,开发DBA会提供面对面纠错,并协调开发一起录入SQL相关信息。此举大大提升了SQL代码修复效率,打破了后期在中间件、数据库中扫描代码却找不到SQL开发人员的尴尬局面,为SQL资产运营注入坚实的力量。

广义上的开发DBA与本文所述略有差异,以下内容摘自知乎作为适当补充:

开发DBA分为三种。第一种是源码方向,通过修改源码来解决实际问题,比如提高性能、可用性、安全性等;第二种是自动化方向,在数据库周边提供自动化系统来服务数据库业务。包括但不限于自动运维、监控、日志、备份、高可用,甚至是中间件、消息总线、异构数据同步等等,大部分时间满足运维DBA的需求;第三种是辅助开发人员编写业务SQL、PL/SQL开发。

浙江移动的开发DBA小组除了SQL审核以外,还需负责数据标准审核、物理模型审核、生命周期审核、数据分布审核、数据安全审核,开发DBA基于《IT系统数据库开发规范》对数据相关的属性进行全生命周期管控。与广义上的开发DBA不同,浙江移动的开发DBA肩负着质检总局的重要使命,为生产系统的可持续发展与安全稳定做出不可替代的贡献。

相关推荐

NET版本众多,傻傻分不清楚

面对.NET众多的版本,尤其还有几个名称的情况下,相信很多初学C#的开发人员都很困惑,搞不清究竟该怎么选择。下面就列举一下.NET的主要版本及其区别:.NETFramework(传统版本,仅适用于W...

.NET Framework 和 .NET Core 有啥区别?如何选择?

.NETFramework和.NETCore都是由Microsoft开发的软件框架,用于创建Windows应用程序和Web应用程序。它们的主要区别在于:支持的操作系统:.NET...

「分享」介绍一款倍受欢迎的.NET 开源UI库

概述今天要带大家了解的是一款WPF的开源控件库MahApps.Metro。MahApps.Metro是用于创建现代WPF应用程序的工具包,它许多开箱即用的好东西。目前支持的NETFramework...

.NET 5.0正式版发布:应用可在ARM64上原生运行

更多:o梵蒂冈图书馆频繁遭黑客攻击oNPM包被发现窃取敏感的Discord和浏览器文件o作者:硬核老王o(本文字数:712,阅读时长大约:1分钟).NET5.0正式版发布:应用可...

盘点8个热门.Net开源项目

一、SmartFormat:轻量级文本模板库,轻松替代string.Format项目地址:https://github.com/axuno/SmartFormatSmartFormat不仅继承了s...

.NET与Java开发:一场从框架到应用实例的深度对决

在软件开发这片广袤的战场上,.NET与Java两大开发平台如同两位身经百战的将军,各自率领着庞大的开发者队伍,在不同的应用场景中大放异彩。今天,我们就来一场从框架到应用实例的深度对决,看看这两大平台究...

TouchSocket:一个功能强大且易于使用的 .NET 网络通信框架

项目介绍TouchSocket是一个功能强大且易于使用的.NET网络通信框架,适用于C#、VB.Net和F#等语言。它提供了多种通信模块,包括TCP、UDP、SSL、WebSocket、Mo...

远离报错烦恼!深入全面掌握.NET Framework

由于Windows系统对.NETFramework这一系统组件有着极为特殊的要求,而部分应用软件及游戏对其的依赖性也近乎达到了驱动级的水准,使用或安装不当会遭遇许多“未知”的问题,因此如何掌握.NE...

想自己搭建.Net Web框架,开源项目太庞大看不懂,可以看这个教程

大家好,我是编程乐趣。一直以来,我都在运营知识星球,这个月也开始全职专心编写教程了。当时编写教程,就是发现很多程序员工作多年了,都没自己搭建过框架,也没接触过公司的框架底层代码。这就导致一些问题,无法...

.NET 8 + React 18 一体化开发框架!苏州码农十年匠心打磨

开篇前言从2014年入行至今,从WebForms到MVC,从JavaScript到React/Vue,从.NETFramework到.NETCore/8,技术栈的变迁伴随了我整个职业生涯。去年,我...

.Net Framework详解

相信有不少小伙伴遇到过这种情况:安装软件时提示.NetFramework未安装导致软件无法打开,或者需要安装.NetFramework4.0以上的组件。那.NetFramework是什么呢?....

系统小技巧:深入全面掌握.NET Framework

由于Windows系统对.NETFramework这一系统组件有着极为特殊的要求,而部分应用软件及游戏对其的依赖性也近乎达到了驱动级的水准,使用或安装不当会遭遇许多“未知”的问题,因此如何掌握.NE...

前端架构师成长之路:如何在 Vue 的计算属性中传递参数

在Vue中,计算属性(computed)是从其他响应式属性派生的属性,是用于自动监听响应式属性的变化,从而动态计算返回值。计算属性(computed)通常是一个没有参数的函数。当然如果需要像调...

Vue2 vs Vue3:核心差异与升级指南

Vue3自2020年发布以来,凭借其革命性的改进迅速成为开发者关注的焦点。本文将从架构设计、API模式、性能优化等多个维度深入对比Vue2和Vue3的核心差异,并提供代码示例帮助开发者...

突发!Vue3 投屏神器引爆程序员朋友圈

【AlarmLevel】重要【AlarmTitle】突发!Vue3投屏神器引爆程序员朋友圈【AlarmOverview】最近GitHub上名为vue-screen-share的仓库突...

取消回复欢迎 发表评论: