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实例的所有功能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第21课 在Android Native开发中架起java与c++互通的桥梁

在开始本节课,我尝试把项目拷贝到另一台电脑上以便继续工作,但出现了大量的“could not be resolved”问题,尝试包含新的include路径也无法解决该问题,最后删除了项目的Native Support,然后重新添加Native Support才解…

1.19号网络

超时检测 概念 1> 在网络通信中,有很多函数是阻塞函数,会导致进程的阻塞,例如:accept、recv、recvfrom、等等 2> 为了避免进程在阻塞函数处,无休止的等待,我们可以设置一个超时时间,当…

unity学习笔记----游戏练习05

一、阳光的收集和搜集动画开发 1.收集阳光的思路:当鼠标点击到阳光的时候,就可以进行收集了。可以通过为添加一个碰撞器来检测Circle Collider 2D 编写脚本: 在SunManager中写一个增加阳光的方法 //增加阳光 public void AddSubSun(in…

如何利用streamlit 將 gemini pro vision 進行圖片內容介紹

如何利用streamlit 將 gemini pro vision 進行圖片內容介紹 1.安裝pip install google-generativeai 2.至 gemini pro 取 api key 3.撰寫如下文章:(方法一) import json import requests import base64 import streamlit as st 讀取圖片檔案,並轉換成 Base64 編…

51-15 视频理解串讲—TimeSformer论文精读

今天读的论文题目是Is Space-Time Attention All You Need for Video Understanding? Facebook AI提出了一种称为TimeSformer视频理解的新架构,这个架构完全基于transformer,不使用卷积层。它通过分别对视频的时间和空间维度应用自注意力机制&#xff…

SpringBoot 3.1.7 集成Kafka 3.5.0

一、背景 写这边篇文章的目的,是记录我在集成kafka客户端遇到的一些问题,文章会记录整个接入的过程,其中会遇到几个坑,如果需要最终版本,直接看最后一节就行了,感觉Spring-Kafka的文档太少了,如…

linux更新内核

内核介绍 官网链接:https://kernel.org 内核下载库: https://mirrors.edge.kernel.org/pub/linux/kernel/ 更新软件源 rootcary:~# apt-get update rootcary:~# sudo apt-get install libncurses5-dev build-essential kernel-package flex bison libelf-dev libssl-dev 下…

大数据学习之Redis、从零基础到入门(一)

目录 一、Redis入门概述 1. 是什么? 官方解释: 2. 能干嘛? 2.1 主流功能与应用 2.1.1分布式缓存 2.1.2内存存储和持久化(RDBAOF) 2.1.3高可用架构搭建 2.1.4缓存穿透、击穿、雪崩 2.1.5分布式锁 2.1.6队列 2.2 总体功能概括 2.3…

基于Java SSM框架实现在线考试系统项目【项目源码+论文说明】

基于java的SSM框架实现在线考试系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&#…

面试知识点:notify是随机唤醒线程吗(唤醒线程顺序)?

做 Java 开发的小伙伴,对 wait 方法和 notify 方法应该都比较熟悉,这两个方法在线程通讯中使用的频率非常高,但对于 notify 方法的唤醒顺序,有很多小伙伴的理解都是错误的,有很多人会认为 notify 是随机唤醒的&#xf…

Vue实现图片预览,侧边栏懒加载,不用任何插件,简单好用

实现样式 需求 实现PDF上传预览,并且不能下载 第一次实现:用vue-pdf,将上传的文件用base64传给前端展示 问题: 水印第一次加载有后面又没有了。当上传大的pdf文件后,前端获取和渲染又长又慢,甚至不能用 修…

2. figure 常见属性

2. figure 常见属性 一 figsize二 dpi三 facecolor四 edgecolor五 frameon 数据可视化是数据分析中不可或缺的一环,而Matplotlib作为Python中最流行的绘图库之一,扮演着重要的角色。在Matplotlib中,matplotlib.figure.Figure对象是构建图形的…

MyBatis详解(2)-- mybatis配置文件

MyBatis详解&#xff08;2&#xff09; mybatis配置文件 mybatis配置文件 1.构建SqlSessionFactory的依据。 2.MyBatis最为核心的内容&#xff0c;对MyBatis的使用影响很大。 3.配置文件的层次顺序不能颠倒&#xff0c;一旦颠倒会出现异常。 < c o n f i g u r a t i o n…

openresty 安装, nginx与 openresty

openresty VS nginx Nginx 是一款高性能的 Web 服务器和反向代理服务器&#xff0c;具备基础的功能如HTTP服务、负载均衡、反向代理以及动静分离等。它是许多互联网应用的核心组件&#xff0c;因其模块化和可扩展的设计而受到欢迎。1 OpenResty 是基于 Nginx 的 Web 平台&…

C++入门篇章1(C++是如何解决C语言不能解决的问题的)

目录 1.C关键字(以C98为例)2.命名空间2.1 命名空间定义2.2命名空间使用 3.C输入&输出4.缺省参数4.1缺省参数概念4.2 缺省参数分类 5. 函数重载5.1函数重载概念5.2 C支持函数重载的原理--名字修饰(name Mangling) 1.C关键字(以C98为例) C总计63个关键字&#xff0c;C语言32…

【操作系统基础】【CPU访存原理】:寄存 缓存 内存 外存、内存空间分区、虚拟地址转换、虚拟地址的映射

存储器怎么存储数据、内存空间分区、虚拟地址转换 计算机的存储器&#xff1a;寄存 缓存 内存 外存&#xff08;按功能划分&#xff09; 计算机的处理器需要一个存储器来存储大量的指令和数据以便自己不断取指执行和访问数据。 内存&#xff08;内存就是运行内存&#xff0c…

利用git上传本地文件

1、建立仓库 2.然后刷新网站&#xff0c;获取下载链接&#xff0c;备用。 3、接下来在本地创建一个文件夹&#xff0c; 4、把github上面的仓库克隆到本地 git clone https://github.com/xxxxx&#xff08;https://github.com/xxxxx替换成你之前复制的地址&#xff09; 5、把…

简单快速取消AlertDialog的白色背景框,AlertDialog设置圆角背景

问题描述&#xff1a; 产品需求弹出的提示框是圆角&#xff0c;使用shape 设置圆角背景后&#xff0c;弹出的AlertDialog提示框四个角有白色的背景&#xff0c;据分析这个背景是 AlertDialog 父组件的背景色。 解决方法&#xff1a; 将Dialog的背景设置为透明色&#xff0c;代…

生产力工具|卸载并重装Anaconda3

一、Anaconda3卸载 &#xff08;一&#xff09;官方方案一&#xff08;Uninstall-Anaconda3-不能删除配置文件&#xff09; 官方推荐的方案是两种&#xff0c;一种是直接在Anaconda的安装路径下&#xff0c;双击&#xff1a; &#xff08;可以在搜索栏或者使用everything里面搜…

两数之和[中等]

一、题目 给你一个下标从1开始的整数数组numbers&#xff0c;该数组已按非递减顺序排列&#xff0c;请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是numbers[index1]和numbers[index2]&#xff0c;则1 < index1 < index2 < numbers.len…