企业级数据库 DevOps 最佳实践,通过 NineData 实现高效安全的数据库开发

news2024/11/14 18:07:29

第15届中国数据库技术大会(DTCC2024)于8月22日-24日在北京隆重召开,本次大会由 IT168 联合旗下 ITPUB、ChinaUnix 两大技术社区主办。玖章算术 NineData 受邀首次参展,并由 NineData 联合创始人周振兴发表了《企业级数据库 DevOps 最佳实践》的主题演讲,帮助开发者和企业更好地使用数据的云。

图丨NineData 联合创始人&技术副总裁周振兴现场演讲

图丨NineData 现场展位

以下内容,来自于周振兴在 DTCC2024 大会的公开分享整理:

获取完整PPT资料,NineData公众号后台回复:DTCC2024


1. “三多” VS “一少”

当前数据库领域面临着 “三多” 和 “一少” 的情况。“三多” 指的是数据库种类和数量多,云 / IDC 环境多,开发人员多。截至 2022 年 10 月,DB - Engines 上共计 397 种数据库,各种分布式数据库技术和产品快速发展,不同厂商的云原生数据库不同,数据库变更发布变得频繁,国产化进展加速,网络方案也会变得复杂,团队和业务多元化,实时分析型数据库和向量化发展迅速。

而 “一少” 则是指 DBA 人数少,这使得变更稳定性管理变得困难,工具平台繁多。

图片

2. 数据库研发协同挑战

周振兴指出,在数据库研发协同过程中,存在着诸多挑战。企业的技术负责人对发布时间有严格要求,同时对稳定性问题非常关注,一旦出现问题可能会导致严重后果。研发人员可能面临权限不足、不了解规范等问题,SQL 开发、审核、性能优化、审计日志等环节也存在诸多困难。需求紧急但流程慢,用户体验差,变更窗口和规范审核等问题也给研发带来了困扰。此外,故障排查和监控告警也需要高效的解决方案。

图片

3. 如何防止 “删库跑路”、“误操作”

在数据库管理中,我们需要防止 “删库跑路” 和 “误操作” 等情况的发生。例如,无意的误操作或 Bug,以及有心的删库跑路行为,都可能给企业带来严重的损失。我们需要知道是谁、什么时候做的操作,以及如何快速恢复,并且要思考以后如何避免这些情况,能否事前阻断。

图片

4. 数据库开发工具的挑战

当前的数据库开发工具存在一些挑战,如直连数据库带来的数据安全隐患与业务稳定性问题;库/表结构定义混乱,影响业务可扩展性。例如:离职与转岗时,权限回收不便捷;字段定义不规范,扩展性较低;执行低效率 SQL 会带来稳定性问题;索引定义混乱,影响性能与业务;数据库账号难以管理,可能导致数据泄露问题。

此外,数据库变更随意也会影响业务稳定性,所有变更都走 DBA 可能影响业务发展效率,生产环境变更在凌晨执行会导致 DBA 效率较低,而且缺乏注释等会影响扩展性。数据库种类、平台多样,无法统一管理,多云、多 IDC 访问管理复杂,RDMBS、NoSQL 工具不一致。

图片

5. 研发数据库 DevOps 平台

为了解决这些问题,玖章算术研发了 NineData 数据库 DevOps 平台,提供端到端的数据库开发与治理解决方案。NineData 平台包括了高效协作、数据安全等方面,实现 SQL 开发规范、审批流程、版本管理、CI/CD 集成等功能,同时进行细粒度权限管控、安全规范约束、敏感数据保护和操作审计。

图片

5.1 高效安全的变更

高效协作是 NineData 数据库 DevOps 平台的重要目标之一。在 SQL 开发规范方面,我们应制定相关标准。在结构规范上,支持字符集默认 utf8mb4,默认自增主键,默认字段定义为 not null,INT 默认带 unsigned;在索引合理上,支持索引命名规范,不过多使用单列索引,字符尽量定义前缀;在SQL高效上,支持尽量使用索引和覆盖索引,避免 WHERE 中的隐式转换等。这样可以提高开发效率,同时保障数据库的稳定性。

图片

5.2 一次具体的变更流程

在进行一次具体的变更时,我们需要考虑多个因素。首先要判断是否有长时间锁表、删除操作、DROP/TRUNCATE 操作以及大量数据变更等情况。如果存在这些情况,需要提交给DBA审核后再提交到调度。在执行中,进行变更窗口控制、并发控制、间歇执行和数据备份等操作,以确保数据变更的安全和稳定。

图片

5.3 保护数据变更的安全

在进行数据变更时,我们需要保护数据的安全。例如,对于数据备份,要确保备份已完成。在进行数据变更操作时,如 INSERT、DELETE、ALTER TABLE 等,要注意操作的准确性和安全性。同时,要对数据变更进行记录和跟踪,以便在出现问题时能够快速恢复。

图片

5.4 大表,不锁表的 DML 变更

对于大表的 DML 变更,我们需要注意安全删除大量数据的问题。例如,对于数亿的数据,如何安全删除是一个挑战。我们可以采用一些策略,如“开启OnlineDML”,可以避免 “长事务” 影响,有效控制短时系统压力,避免短时日志空间暴增等。

图片

5.5 大表,不锁表的 DDL 变更

大表的 DDL 变更也需要谨慎处理。在源表 DDL 变更方面,我们可以采用创建新表、增量同步、拷贝数据和切换表等步骤,可以实现大表变更对业务的零影响。同时,要通过并发控制,保障稳定,并且进度可观察,无需触发器,无额外压力。

图片

6. 自动化SQL优化

NineData 的慢查询分析功能,可实时监控数据库性能状态,定位慢 SQL 和优化数据库,支持单条SQL与局部SQL(某个时间段内的所有SQL),并提供自动化SQL优化建议,包含索引推荐以及SQL语句优化等,提高 SQL 语句的执行效率。

图片

7. 安全、高效的数据库 DevOps 平台

面向个人,通过 AIGC 助力数据库开发 Copilot 替代传统开发工具(Navicat、Dbeaver等),提供表设计/编辑、智能开发 IDE、智能 AI 辅助等功能,包括全列类型、智能补全、自然语言转 SQL、智能索引推荐、选项支持、智能 SQL 优化等。

面向企业,应定义数据库开发新范式,包括企业数据库开发最佳实践、敏感数据管理、规范流程、变更发布、组织权限等方面。

NineData 数据库 DevOps 平台应致力于实现安全、高效的数据库开发。

图片

8. 首先,它是一个生产力工具

NineData 数据库 DevOps 平台首先是一个生产力工具,具有智能语法补全、支持导航树遍历对象、常用 SQL 保持、查询历史查看、结果集编辑、数据导出、执行计划查看等功能。同时,支持用户、角色与权限管理,全量 SQL 执行审计,敏感数据管理。支持完整字段类型和选项,多种类型索引创建与修改,完整的约束/外键/分区/其他表选项支持。

图片

9. 一个平台,多种数据库

NineData 的数据库 DevOps 平台支持多种数据库,包括 MySQL、Oracle、PostgreSQL、SQLServer、MongoDB、Redis、elasticsearch、Amazon Aurora、DB2、PolarDB、SelectDB、ClickHouse、kafka、Oceanbase、GaussDB、TiDB、TDSQL(腾讯分布式数据库)、Greenplum、Doris等。涵盖丰富的关系型数据库、文档数据库、开源数据库、内存数据库、商业数据库、分析型数据库、分布式数据库、消息队列和云原生数据库等。

图片

10. 规范、流程来保障生产环境的稳定

为了保障生产环境的稳定,需要通过 NineData 制定规范和流程。例如,默认生产环境规范包括表变更必须要 Online 执行、表要有主键、限制 VARCHAR 类型字段长度、限制唯一索引名格式、表需要包含某些列、限制表不能使用外键、限制单个索引包含列的个数、限制主键包含列的个数、字段名不能是关键字、限制自增列为无符号等。这些规范和流程有助于保障企业数据库的安全、稳定与可扩展。

图片

11. NineData 云原生智能数据管理平台

NineData 作为新一代的云原生智能数据管理平台,提供了数据复制、数据库  DevOps、数据备份以及数据对比等多种功能,帮助用户轻松实现混合云、多云数据源的统一管理。通过这些功能,可以轻松完成日常数据库开发、数据安全访问、生产数据库变更与发布、数据库备份恢复、数据迁移、容灾多活、数据仓库及数据湖构建等核心应用场景。

图片

12. 未来展望

展望未来,数据库 DevOps 的技术领域充满希望,NineData 将与所有用户、合作伙伴和数据库从业者不断探索和创新,为企业提供更加高效、安全和可靠的数据库解决方案。相信在未来的发展中,NineData 将为企业的数字化转型提供更强大的支持,助力企业实现更高的业务价值和竞争力。

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

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

相关文章

乾元通渠道商中标湖南省煤业集团公司安全生产预防和应急救援能力建设装备配备采购项目

近日,乾元通渠道商中标湖南省煤业集团安全生产预防和应急救援能力建设装备配备采购项目,乾元通作为聚合通讯保障技术厂家,为项目一标段卫星通讯指挥车提供车载聚合路由器终端及系统。 乾元通经过多年发展,逐步建起车载系列多链路聚…

minio创建用户并访问指定的bucket

目录 bucket的命名规则一、创建权限1、参数含义2、示例,实现读写test, 读test2目录但无下载权限3、自己新建的权限 二、创建用户并关联权限三、用新用户登录四、mc命令1、mc安装用docker容器运行直接安装在操作系统 2、mc配置mc配置文件查看mc配置mc alias list查看…

力扣题/回溯/电话号码的字母组合

电话号码的字母组合 力扣原题 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digi…

iOS/iPadOS18.1Beta3发布,新增通知摘要和AI消除功能

除了iOS/iPadOS18 Beta8,苹果今天一同推送的还有iOS/iPadOS 18.1开发者预览版Beta 3!iOS/iPadOS18.1Beta3的内部版本号为22B5034e,距离上次发布Beta/RC间隔8天。 依旧是仅针对支持Apple Intelligence的iPhone 15 Pro和iPhone 15 Pro Max两款…

Can‘t set custom OpenAI model with langchain on nodejs

题意:"无法在 Node.js 中使用 LangChain 设置自定义 OpenAI 模型" 问题背景: I am trying to set "gpt-3.5-turbo" model in my OpenAI instance using langchain in node.js, but below way sends my requests defaultly as text-…

个人信息保护专业人员(CCRC-PIPP)助力企业数据要素合规有序流通

在当今数字化时代,个人信息作为企业不可或缺的数据资产,其合规管理与高效流通变得尤为重要。 组织须采纳必要措施保护用户信息,同时确保遵循相关法规要求。 为此,中国网络安全审查认证和市场监管大数据中心推出了个人信息保护专…

Java:简述类的加载机制-初始化

Java:普通代码块,构造代码块,静态代码块区别及其执行顺序 类加载的机制过程分为以下:加载、验证、准备、解析、初始化等。 本文主要分析类的初始化过程。 类的初始化阶段,是真正开始执行类中定义的java程序代码(.cla…

成都电工培训优惠报名在哪里?

如何获取优惠抵扣? 一、关注特殊群体优惠 农民工优惠:部分地区或培训机构会针对农民工群体提供培训费用的减免或优惠,具体政策需咨询当地培训机构或相关部门。 退伍军人优惠:退伍军人作为特殊群体,在参加职业技能培训…

考研系列-408真题数据结构篇(10-17)

写在前面 此文章是本人在备考过程中408真题数据结构部分(2010年-2017年)的易错题及相应的知识点整理,后期复习也尝尝用到,对于知识提炼归纳理解起到了很大的作用,分享出来希望帮助到大家~ # 2010年 1.散列表处理冲突…

CAN Intel格式与Motorola格式的区别

在CAN(Controller Area Network)通信中,CAN报文的编码格式对于数据的有效传输和准确解析至关重要。CAN报文的编码格式主要包括Intel格式和Motorola格式。尽管这两种格式在单个字节内部的数据表示上是一致的,但在处理跨字节数据时&…

uniapp微信小程序开发测试获取手机号码

先申请测试号 注意认证但是没有完全认证不要试测试号解密如下 总结我自己的两大坑 1.官网的WXBizDataCrypt需要导入crypto要提前下载但是试了很多次没有效果重新编写这个。将crypto库换成crypto-js库 2.我一直在尝试用下有下面这个界面的测试号不行获取不到用户的code还是啥忘记…

CSS系列之Float浮动(二)

一、传统网页布局 网页布局的本质:用 CSS 来摆放盒子,把盒子摆放到相应位置。CSS 提供了三种传统布局方式(这里指的只是传统布局,其实还有一些特殊高级的布局方式): 标准流浮动定位 1、所谓的标准流&#…

美团高级测试面试700题汇总:软测+MySQL+Liunx+Python+自动化等

前言 面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责。 今天给大家分享下我整理的BAT软件测试面试专题及答案,其中大部分都是大企业面试常问的面试题,可以对照这查漏补缺,当然了&#xff…

火语言RPA流程组件介绍--清空回收站

🚩【组件功能】:清空windows回收站中的所有文件 配置预览 配置说明 无 无配置项,该组件清空回收站内容后无法撤回。 输入输出 输入类型 万能对象类型(System.Object)输出类型 万能对象类型(System.Object)🏁 上一组件的输出…

任务管理与延时

1、添加任务管理器 任务管理器其实就是一个大的结构体,然后将一些重要的数据结构集中到一起。重点创建了两个队列ready_list和task_list来管理任务 2、进程主动放弃CPU 目前的系统中,CPU总是被用于安排运行处于就绪队列头部的进程的代码,所…

中仕公考怎么样?军队文职技能岗位介绍

军队文职技能岗位有哪些?中仕为大家介绍一下! ①公务员岗 学历要求:大专及以上; 工作内容:在勤务岗位从事服务保障工作; 报考优势:不限专业、对于专业要求不高; ②驾驶员 学历要求:大专及以上; 工作内容:运输物资和保养维护单位机动车辆; 报考优势:每年招考人数比较少…

零基础国产GD32单片机编程入门(七)USART串口485通讯实战含源码

文章目录 一.概要二.USART串口基本介绍三.GD32单片机USART内部结构图四.USART内部信号流向五.USART示波器信号解析六.485通讯基本概念七.配置一个USART数据收发例程进行485通讯实验八.工程源代码下载九.小结 一.概要 USART(Universal Synchronous/Asynchronous Rec…

Python函数(12时间处理正则表达式)

Python基础语法文章导航: Python基础(01初识数据类型&变量)Python基础(02条件&循环语句)Python基础(03字符串格式化&运算符&进制&编码)Python基础(04 基础练习…

深入浅出:模拟实现 C++ STL 中的 unordered_map 和 unordered_set

目录 引言基础知识 散列表哈希函数负载因子模拟实现 unordered_set 数据结构设计哈希函数碰撞解决策略插入操作查找操作删除操作模拟实现 unordered_map 键值对存储插入操作查找操作删除操作代码示例总结 1. 引言 unordered_map 和 unordered_set 是 C 标准模板库 (STL) 中非…

【Python基础】Python运算符

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢! 文章目录 一、前言二、Python 运算符2.1 什么是运算符?2.2 Python算术运算符2.3 Python 比较运算符2.4 Pytho…