NineData支持制定安全、可靠的SQL开发规范

在和数据库打交道中,不管是数据库管理员(DBA)还是开发人员,经常会做一些CURD操作。因为每个人对数据库的了解程度不一样,所以在项目上线时,往往还需要专职人员对数据库的CURD操作进行审核,确保CURD的规范,来保障生产数据库的稳定。

在业内,很多数据库产品都有自己的一套"军规",这些"军规"保证了数据库操作的规范和运行的稳定。

安全、可靠的 SQL 开发

NineData 的「SQL 开发」是一个安全、高效、可靠的数据库开发平台,面向数据库使用者和管理者。

除了可以替代Navicat、DBeaver这些工具外,还可以为企业制定SQL开发规范,提供超 100 条 SQL 规范审核,可以更加安全、高效、规范地管理多类数据库实例。

目前支持主流商业和开源数据库:Oracle、MySQL、SQL Server、PostgreSQL、MongoDB、Redis、OceanBase、Doris、DWS、DB2、SelectDB、达梦、人大金仓等等,现在还在持续增加对不同数据库类型的支持。

下面以 MySQL 数据库类型为例,简单的从结构、查询与更新、SQL 任务与窗口三方面来介绍如何为企业制定最合适的SQL开发规范。

结构

生产环境规范-结构

表必须有主键

INNODB表的主键(聚簇索引)保存了索引和数据行,并且二级索引的叶子节点也保存了主键值。如果没有定义主键,则会优先使用非空唯一索引来代替,如果没有唯一索引,则会使用内部隐藏的主键。所以新增表j建议有主键。

表必须包含指定列

随着业务的快速发展,数据表存储的行数破亿后,对该表的DDL和查询可能都会变慢,此时就需要对该表进行冷数据归档,作为归档的条件之一就是时间字段,保证归档可以按照时间进行。所以新增表建议有创建时间字段。

表必须指定引擎和备注

在MySQL 8.0中,默认已经不包含任何MyISAM表,所以在创建表的时,可以限制表的引擎,在高并发和高性能的场景下,推荐使用INNODB(支持事务、行锁),并且也需要设置各个列和表的备注,保证表的可读性。

适配大表OnlineDDL

线上数据库常常面临着持续的、不断变化的表结构修改(DDL),如增加、更改、删除字段和索引等等,其中一些DDL操作会锁表,影响线上服务。

通过「OnlineDDL:大表结构变更风险检测」和「OnlineDDL 配置」的规范,不仅可以提前告知,而且还能对不支持OnlineDDL的DDL语句进行转换,实现了自适应Online DDL的能力。

如果匹配到这些规范后,其中之一会出现如下图所示的说明:

生产环境规范-审核说明

查询与更新

生产环境规范-查询与更新

SELECT 语句不建议使用 *

* 表示所有字段,可能会导致不必要的数据加载和传输,尤其是当表中包含大量字段或大型数据类型时。这样做会降低查询效率,增加内存和网络的负担,并可能包含不需要的数据。建议使用指定的字段来替换*,保证SQL的可读性。

WHERE 条件中检测字段是否存在隐式类型转换

隐式类型转换可能导致索引失效,从而引起全表扫描。增加额外的计算开销,影响查询效率,甚至产生错误的结果,使用该规则可以提前发现并进行干预。

OnlineDML:大表数据变更风险检测

变更大数据量的 DML 语句(Update、Delete、Insert Into Select ),会阻塞其他正常 DML 操作,存在"锁表"风险。

使用 NineData OnlineDML,将单个 SQL 拆分成多个批次执行,以实现"不锁表"的数据变更。使用该规则,可以自动进行"分片"处理,无需关心影响的行数。

如果匹配到这些规范后,其中之一会出现如下图所示的说明:

SQL 任务与窗口

SQL 任务与窗口

SQL窗口单次查询最大返回行数

为了防止恶意刷数据,可以通过该规范限制SQL返回结果的行数,保证数据的安全,并通过限制 SQL 窗口编辑结果集,进一步保证数据的安全。

SQL窗口 DDL/DML/DQL 执行时间窗口

线上业务都有发布窗口,一般都在低峰期进行发布和执行DDL、DML、DQL,非窗口时间不能执行,通过该规范能进一步保障数据库和业务的稳定性。

SQL窗口查询超时时间控制

通过SQL窗口查询线上数据库,如果SQL执行的时间比较长,会影响正常的业务SQL,通过该规范能进一步保障数据库和业务的稳定性。

如果匹配到这些规范后,其中之一会出现如下图所示的说明:

生产环境规范-审核说明

总结

通过本篇文章的介绍说明,可以了解到,NineData的「SQL 开发」可以为企业制定SQL开发规范,提供了企业级管控和安全协作能力,超 100 条 SQL 规范审核,更加高效、规范地管理多类数据库实例。

即使没有专职人员对线上数据库的CURD操作进行审核,通过NineData 的SQL开发规范,也能最大程度的保障数据库的安全和稳定。

此外,作为开箱即用的SQL开发工具,在支持多种数据库、多个云环境的前提下,推出了永久免费的个人版和带有企业级管控、安全协作的企业版,满足企业最高的数据安全合规要求。

目前,SQL 开发企业版和 SQL 开发专业版现提供 90 天的试用,您可以在这期间完整体验规格为20实例的所有功能。

相关推荐
太理摆烂哥6 分钟前
MySQL库的操作
数据库·mysql
Dreamboat-L7 分钟前
日志级别基础 + Spring Boot 日志实践指南
java·服务器·数据库·java-ee·springboot
小枣信安15 分钟前
MCP安全系列之缺乏日志审计
安全·网络安全·ai安全·大模型安全·智能体安全·mcp安全
野生数据人20 分钟前
ES DSL 转 SQL 速查表:20 条子句对照 + 一条能直接跑的改写示例
大数据·数据库
野生数据人21 分钟前
采集链路改投 Doris 速查手册:三条路径对照、output 配置项清单、报错处理表
大数据·数据库
SGS官方22 分钟前
SGS为紫光国芯颁发ISO 26262:2018汽车功能安全ASIL D流程证书
安全·汽车·检测认证机构·sgs
Xudde.27 分钟前
PwnLab: init 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
救救孩子把34 分钟前
AI面试八股文-07_6-向量数据库索引详解
数据库·人工智能·面试·向量数据库·hnsw
李白客1 小时前
国产数据库"实际用户增长"怎么核验?先定口径,再谈第一
数据库
数据工匠老o2 小时前
一张 5 亿行的表按月分区后,清理历史数据从几小时变成了几秒
数据库·sql