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

news2024/10/1 15:16:52

在和数据库打交道中,不管是数据库管理员(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实例的所有功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1406835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA硬件架构——具体型号是xc7k325tffg676-2为例

1.共如下图14个时钟域,XmYn(按坐标理解) 2.IOB(IOB为可编程输入输出单元,当然在普通Bank上的IOB附近还有很多时钟资源,例如PLL,MMCM资源。), 2.1 FPGA的Bank分为HP Bank和HR Bank,二者对电压的要求范围不同,HR支持更大…

亚信安慧AntDB:AntDB-M元数据锁之对象锁(四)

l 对象锁 (per-object locks) 除了IX锁,其他类型都可以用于其他命名空间,这部分是最常用的锁类型。主要用于对数据库的某个具体元数据的并发控制。这类锁对象会比较多,对其有独特的管理,本文不再展开说明。 5.3 两种锁类型 根据…

【Java程序员面试专栏 专业技能篇】计算机网络核心面试指引

关于计算机网络部分的核心知识进行一网打尽,包括计算机的网络模型,各个层的一些重点概念,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 分层基本概念 计算机网络模型的分层及具体作用 计算机网络有哪些分层模型 可以按照应用层到物…

vivado:关联notepad++

网上好多都要下插件,看了野火视频,直接在vivado里面加路径弄好的 2 3(那个fonts and colors也经常用 改字体) 4 5 以下是我的路径 D:/gongjuruanjian/notepad/Notepad/notepad.exe [file name] -n[line number] 把[file name] -…

网关配置快速入门

网关配置快速入门 前端请求统一发送到网关: window.SITE_CONFIG[baseUrl] http://localhost:8088/api;网关服务中配置路由转发: server:port: 8088spring:application:name: gulimall-gateway #服务名称config:import: nacos:bootstrap.yaml #引入…

NAT配置

目录 静态NAT配置配置抓包测试 动态NAT配置配置测试 Easy IP配置配置测试 静态NAT配置 配置 nat static global { global-address} inside {host-address } 命令用于创建静态NAT。 global参数用于配置外部公网地址。 inside参数用于配置内部私有地址。 AR1-NAT <Huawei&g…

新版idea创建spring boot项目

目录 前言 汉化教程 项目模板初始化 1.点击新建项目 2.配置初始化信息 3.初始依赖选择 配置Maven 1.打开maven设置 2.重写maven配置文件 3.选择你创建的配置文件 4.重启项目 spring boot配置并测试 1.修改配置文件后缀 2.启动项目 3.编写测试控制类 4.重启项目…

【深度学习:Collaborative filtering 协同过滤】深入了解协同过滤:技术、应用与示例

此图显示了使用协作筛选预测用户评分的示例。起初&#xff0c;人们会对不同的项目&#xff08;如视频、图像、游戏&#xff09;进行评分。之后&#xff0c;系统将对用户对项目进行评分的预测&#xff0c;而用户尚未评分。这些预测基于其他用户的现有评级&#xff0c;这些用户与…

rsync数据同步和sersync数据实时同步服务器

rsync数据同步和sersync数据实时同步服务器 基于三台服务器&#xff0c;部署数据实时同步服务器&#xff0c;一台作为主服务器sersync&#xff08;推送数据&#xff09;&#xff0c;其余两台作为备用服务器rsync&#xff08;拉取数据&#xff09;。 rsync 数据同步 环境&am…

2月重要外贸节日,可以开始计划营销了

快过年了&#xff0c;外贸小伙伴们终于可以好好休息了。享受2月春节假期的同时&#xff0c;咱们也别忘了客户所在国的节日&#xff0c;在国庆日、纪念日等重要日子&#xff0c;给客户们送上祝福。 2月4日 斯里兰卡-国庆日 National Day 斯里兰卡历史悠久&#xff0c;公元前4…

后台管理系统更新

菜单列表代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜单列表</title> <meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <me…

Python的type()函数

在Python中&#xff0c;type()函数是一个非常有用的工具&#xff0c;它可以查看变量或对象的数据类型。了解如何使用type()函数对于编写高质量的Python代码非常重要&#xff0c;因为它有助于确保程序按预期运行&#xff0c;避免潜在的错误和异常。本文将深入探讨type()函数的用…

【ZYNQ入门】第九篇、双帧缓存的原理

目录 第一部分、基础知识 1、HDMI视频撕裂的原理 2、双帧缓存的原理 第二部分、代码设计原理 1、AXI_HP_WR模块 2、AXI_HP_RD模块 3、Block design设计 第三部分、总结 1、写在最后 2、更多文章 第一部分、基础知识 1、HDMI视频撕裂的原理 在调试摄像头的时候&#xf…

IMS 中的Implicit Registration

IMS Implicit Registration在23.228中有描述,在23.228中搜索关键字“Implicit Registration”直达,简单看下: 当用户具有一个public user ID set,通过该set 中的某个public user ID 进行单个IMS注册来Implicit Registration的public user ID时,它被视为Implicit Registrat…

npm或者pnpm或者yarn安装依赖报错ENOTFOUND解决办法

如果报错说安装依赖报错&#xff0c;大概率是因为npm源没有设置对&#xff0c;比如我这里安装protobufjs的时候报错&#xff1a;ENOTFOUND npm ERR! code ENOTFOUND npm ERR! syscall getaddrinfo npm ERR! errno ENOTFOUND npm ERR! network request to https://registry.cnpm…

时隔78天,个人微信小游戏内容审核终于通过了,这到底是经历了什么...

引言 大家好&#xff0c;就在前天&#xff0c;笔者惊讶地发现&#xff0c;去年提交的微信小游戏内容审核居然过审了&#xff01; 我们一起来看一下笔者都经历了什么&#xff1f; 以及了解下微信小游戏备案的具体流程是怎么样的&#xff1f; 回顾一下 先回顾一下&#xff0c…

Tree-Shaking 作用和实现原理

一、什么是Tree-shaking Tree-shaking 它的名字来源于通过摇晃&#xff08;shake&#xff09;JavaScript代码的抽象语法树&#xff08;AST&#xff09;&#xff0c;是一种用于优化JavaScript代码的技术&#xff0c;主要用于移除未被使用的代码&#xff0c;使得最终生成的代码包…

vue element MessageBox.prompt this.$prompt组件禁止显示右上角关闭按钮,取消按钮,及点击遮罩层关闭

vue element MessageBox.prompt this.$prompt组件禁止或取消显示右上角关闭按钮&#xff0c;取消按钮&#xff0c;及点击遮罩层关闭 实现效果&#xff1a; 实现代码 MessageBox.prompt(请先完成手机号绑定, 系统提示, {confirmButtonText: 提 交,showClose: false,closeOnClic…

解决TCP粘包问题

粘包问题已经在上一篇博客中写到具体可以看----------- 以下是利用分包解决粘包问题的步骤&#xff1a; 消息长度前缀&#xff1a; 在每个数据包前加入消息长度信息。 定义协议格式&#xff1a; 明确定义通信协议的格式&#xff0c;包括消息头和消息体。 封包&#xff1a; 将…

Tensorflow2 GPU版本-极简安装方式

Tensorflow2 GPU版本-极简安装方式&#xff1a; 1、配置conda环境加速 https://wtl4it.blog.csdn.net/article/details/135723095https://wtl4it.blog.csdn.net/article/details/135723095 2、tensorflow-gpu安装 conda create -n STZZWANG_TF2 tensorflow-gpu2.0