轻松搞定研发,DBA 效率神器再+1

故事的开始我们要从一段 SQL 说起......

css 复制代码
SELECT p.patient_id, p.first_name, p.last_name, d.diagnosis_name   FROM patients p   
JOIN diagnoses d ON p.patient_id = d.patient_id   
WHERE d.diagnosis_name = 'Heart Disease'     
AND d.diagnosis_date BETWEEN '2023-01-01' AND '2023-12-31'   ORDER BY p.last_name, p.first_name;

这是小明在业务中涉及到的常规 SQL 语句,在他看来,这个语句编写工整、逻辑清晰,没有什么问题。但在提交 DBA 审核时,对方给出了诸多优化点:

● 表的diagnosis_name和diagnosis_date字段是否有索引?

● 如果只需要患者 ID 和姓名,但查询中包含了diagnosis_name,这个字段是否是冗余字段?

● join操作是否是最优的?

● 如果last_name和first_name字段没有被索引,并且数据量很大,那么排序操作可能会非常耗时。如果排序不是必需的,能否移除ORDER BY子句?

● 如果预期返回的结果集非常大,能否添加分页逻辑,减少单次查询返回的数据量?

这其实就是我们日常业务的现实缩影。开发者对技术能力良莠不齐,DBA 对数据库知识存在局限性,众多的程序员难免引入一个个或初级或高端的 SQL 隐患,而 SQL 编写不当是引起数据库故障的一个重要原因,轻则影响数据库性能,重则可能直接导致「雪崩」。

因此,在企业内部引入 SQL 审核工具成了一个自然而然的选择,构建一套规范化、流程化的 SQL 审核体系至关重要。

对于 SQL 审核来说,其核心能力主要是两点:

● 成为一种自助服务,让开发同学不再依赖 DBA 的人工审核;

● 专注于 SQL 规范的审核。

让 SQL 审核成为一种自助服务,开发人员可以实时获得关于其 SQL 语句性能的反馈,无需等待 DBA 空闲时间或排队等待审核,大大缩短开发周期,提升整体工作效率。同时,DBA 则能从繁琐重复的审核任务中解放出来,专注于更高级别的数据库优化和管理任务。

专注于 SQL 规范审核则主要体现在确保 SQL 质量、预防安全风险和统一标准这三个方面。确保每一条 SQL 语句都符合最佳实践,包括使用合适的索引、避免全表扫描、优化查询结构等,提升查询效率;预防 SQL 注入等安全风险,防止潜在的数据泄漏或篡改;同时确保团队使用统一的 SQL 编写标准,增强代码可读性和可维护性。

在此基础上,如果把 SQL 审核纳入正式的业务流程中,比如在数据变更流程中加入自动 SQL 审核,这样就能进一步提升数据操作的规范性和安全性,一旦 SQL 语句未通过审核,数据变更将无法提交,直至 SQL 语句修改至符合既定标准和规范。这样就能进一步预防潜在的数据错误和安全风险,达到 1+1>2 的效果。

在 CloudQuery 中加入 SQL 审核功能就能达到这样 1+1>2 的效果。

在权限模块,可以通过「高危操作设置」,将 drop、alter、create 等 DDL 操作纳入权限管控范围,避免一部分人直接进行这种高危操作。而在权限范围内的,可通过规则管理,将这些 SQL 规则直接生效于目标连接。

CloudQuery 的 SQL 审核规则涵盖了 DDL 规范、DML规范、使用建议、索引规范和命名规范五个方面。

DDL 规范是业务最基础的需求,如创建、修改和删除表、视图、触发器等对象。CloudQuery 通过 DDL 规范确保数据库结构的合理性和一致性,避免由于不规范的 DDL 操作导致的数据标准或结构混乱。DML 规范更多的是基于对 SQL 性能和影响范围的考虑。

此外,CloudQuery 还提供了使用建议,这些建议基于最佳实践和性能优化原则,这些建议包括禁止创建自定义函数、子查询不支持 LIMIT 等。

索引规范是 SQL审核规则中的另一个重要方面。索引是数据库性能优化的关键,合理的索引设计可以显著提高查询速度。CloudQuery 通过索引规范确保索引的创建、使用和维护都符合规范,避免过度索引或缺失索引导致的性能问题。

命名规范则是确保数据库对象命名的统一性和可读性。

SQL 审核在 CloudQuery 平台中拥有广泛的应用场景,常见的比如 SQL 编辑窗口和数据变更流程。

这些不同的使用场景,往往需要依据具体需求来灵活调整审核规则。例如,在SQL编辑窗口中,我们可能需要重点关注 SQL 语句的语法正确性、性能优化以及潜在的安全风险;而在数据变更流程中,则可能更加注重数据的一致性和完整性。通过 SQL 审核,我们可以根据实际需求,自定义审核规则的严格程度,以适应不同数据源和场景的需求。

说了这么多,大家可能发现目前的 CloudQuery 还没有搭载以上描述的完整的 SQL 审核功能。

3月26日,CloudQuery 社区版 2.10.0,SQL 审核功即将上线!

SQL 审核作为 CloudQuery 企业版的一大特色功能,自上线以来收获了很多用户的好评。作为一个开放共享的社区,我们决定将此功能推向社区,让更多热爱CloudQuery的小伙伴们都能体验到企业级的高效与便捷,希望SQL审核功能为大家带来新的惊喜与收获。

我们深知,社区是产品茁壮成长的摇篮,是每一个用户心声的汇聚之地。因此,我们也热切期待社区的小伙伴们能够踊跃发言,提出宝贵的建议与意见,与我们携手共建一个更加强大的CloudQuery。

3月26日,我们不见不散~

相关推荐
老华带你飞32 分钟前
旅游|基于Java旅游信息系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·旅游
释怀°Believe36 分钟前
javaweb
数据库·sql·oracle
Clarence Liu38 分钟前
redis学习 (1) 基础入门
数据库·redis·学习
天生励志1231 小时前
Redis 安装部署
数据库·redis·缓存
北半球的夜1 小时前
emoji 表情符号保存问题
数据库·oracle
Xudde.1 小时前
BabyPass靶机渗透
笔记·学习·安全·web安全
清风6666661 小时前
基于单片机的智能家居多参数环境监测与联动报警系统设计
数据库·单片机·毕业设计·智能家居·课程设计·期末大作业
云计算练习生2 小时前
渗透测试行业术语—— 网络攻击方式与漏洞利用
服务器·网络·安全·渗透测试术语·网络安全术语
煎蛋学姐2 小时前
SSM社区医院儿童预防接种管理系统84ui9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·儿童预防接种
锡兰_CC2 小时前
无缝触达,卓越体验:开启openEuler世界的任意门
服务器·网络·数据库·c++·图像处理·qt·nginx