数据库自动化管理的六大等级

什么是数据库自动化管理?

数据库自动化管理是指通过使用工具和流程,在尽量减少人为干预的情况下,管理和执行与数据库相关的任务。主要目的当然是提高效率,减少人为错误,确保一致性,并解放 DBA 和开发者,让他们能够专注于更加重要的任务。

file

我们借鉴了自动驾驶的 6 大等级,并定义了数据库自动化管理的 6 个等级。

第 0 级 - 无自动化

在这个级别,所有的数据库任务都是手动处理的,容易引发高风险的人为错误和数据不一致。

  • 手动变更:数据库更改由 DBA 或开发者手动执行。
  • 无版本控制:没有系统化地对数据库 schema 或变更进行版本控制。
  • 高错误率:由于手动执行,容易出现错误和数据不一致。
  • 高数据安全风险:数据访问权限是手动授予的,常常导致权限过期,违反最小权限原则(PoLP)。
  • 无法追溯:难以跟踪数据库操作和维护数据库审计日志。

第 1 级 - 工单系统

在这个级别,数据库操作通过工单系统进行管理,引入了一定程度的流程和监督。许多组织就停留在这个级别。

  • 工单系统:使用如 Jira, ServiceNow 等工单系统来请求、跟踪和批准数据库变更和访问权限。
  • 审批流程:在发布变更和授予权限前需要经过批准,确保一定程度的审核。
  • 手动执行:尽管使用了工单系统,变更仍然需要通过另一个独立的数据库客户端手动执行。
  • 基本审计记录:在工单中捕获基本的审计记录。

第 2 级 - 版本控制

在这个级别,引入了版本控制来管理数据库变更,提高了可追溯性和团队协作性。采用了 DevOps 最佳实践的团队通常会达到这个级别。

  • 版本控制:使用版本控制系统(VCS),例如 Git,来管理数据库 schema 和变更。
  • 变更脚本:使用 SQL 变更脚本来管理数据库变更。
  • 开发协作:通过共享版本历史,团队成员之间可以更好地协作。
  • 手动执行:虽然变更仍然通过独立的数据库客户端手动部署,但具有更好的追踪和回滚能力。

第 3 级 - 流水线化

在这个级别,使用自动化工具来进行部署,减少了手动操作和错误。

  • 自动化部署:使用 CI/CD 自动化部署数据库变更。
  • 库变更工具:使用数据库变更工具(例如 Liquibase, Flyway)来管理和应用变更。
  • 回滚能力:如果部署出现问题,可以自动回滚变更。
  • 环境一致性:确保在开发、预生产和生产环境中进行一致地部署。

第 4 级 - 集成化

第 2 和第 3 级都增强了变更自动化,尤其是计划中的 schema 变更和作为应用发布周期一部分的数据变更。这些变更可以存储在版本控制系统(VCS)中并采用 DevOps 最佳实践。然而,还有一些临时变更,如修改生产数据和临时权限授予,这些一次性的数据库任务不适合存储在 VCS 中。

第 4 级涉及将所有数据库任务一起整合在整个数据库开发生命周期中。

  • 完全集成的变更管理:数据库变更与应用代码一起,无缝集成到 CI/CD 中。
  • 集中的权限控制:一次性的数据访问和导出权限授予遵循相同的数据库变更审批流程。而长期的权限则从外部认证系统(如 Okta, Active Directory 或 LDAP)同步。
  • 安全和合规:所有人工数据库操作都在一个平台内处理,通过这样一种集中的方式,来加强安全性及合规性。

💡 Bytebase 可以实现这个级别。

file

第 5 级 - 完全自动化

在最高级别,整个数据库任务流程实现了完全自动化,几乎无需人为干预。

  • 端到端任务自动化:从任务请求到部署和监控的全程自动化。
  • 自我修复系统:在出现问题时自动回滚。
  • 全面的合规性:自动化的合规审计和安全检查被集成到事前,事中,事后的整个生命周期中。

由于数据库在现代基础设施中扮演着至关重要的角色,我们还很难讲执行数据库任务是否能够完全摆脱人为干预。你说呢?👀


💡 更多资讯,请关注 Bytebase 公号:Bytebase

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

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

相关文章

【Mybatis】映射文件中#{}里的其他属性

#{}里除了可以写接收参数的名称外,还可以设置javaType,jdbcType,mode,numericScale,resultMap,typeHandler,jdbcTypeName这些属性的。 其他的属性除mode(存储过程相关讲到存储过程的时候在讲)外使用方式都…

5-时间、日期与组合框

时间、日期与组合框 1 日期时间1.1 日期时间相关的类1.2 日期、时间和字符串的转换1.3 例子 2、组合框2.1 QComboBox2.2 QPlainTextEdit2.3 案例 3、自定义右键菜单 1 日期时间 1.1 日期时间相关的类 QTime 时间数据类型,仅表示时间,如:15:…

【数据结构与算法 经典例题】返回单链表的倒数第 k 个节点

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:数据结构与算法刷题系列(C语言) 期待您的关注 目录 一、问题描述 二、解题思路 方法一:计数器方式 方法…

Aleth-NeRF: Illumination Adaptive NeRF with Concealing Field Assumption

Abstract Aleth-NeRF: 带有隐蔽场假设的照明自适应 NeRF 照明照明标准的神经辐射场(NeRF)范例采用了一种以观察者为中心的方法,将光照和材料反射的各个方面仅仅从3D 点发射纠缠在一起。这种简化的渲染方法在准确建模在不利光照条件下捕获的图像方面提出了挑战,如弱光或过度曝…

npm install node-sass 安装失败的解决方案:利用国内镜像加速安装

在开发前端项目时,使用Sass作为CSS预处理器是很多开发者的选择。然而,在通过npm安装其Node.js绑定库node-sass时,一些开发者可能会遇到安装失败的问题,尤其是网络原因导致的下载缓慢或中断。本文将指导你如何通过更换为国内镜像源…

The 2022 ICPC Asia Nanjing Regional Contest - External G

题目链接:Problem - D - Codeforces 写在前面:今天的训练赛打的稀碎,一道稍微难一点的签到题就把我难住了,看完题解确实感觉不难,看来题目还是刷太少了。 回归正题 题意: 思路:尽量让分子大,分…

【NumPy】深入了解NumPy的multiply函数:高效矩阵和数组乘法指南

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

HNU-人工智能-作业3

人工智能-作业3 计科210X 甘晴void 202108010XXX 1.贝叶斯网络 根据图所给出的贝叶斯网络,其中:P(A)0.5,P(B|A)1, P(B|A)0.5, P(C|A)1, P(C|A)0.5,P(D|BC)1,P(D|B, C)0.5&#xff…

循环buffer“一写多读“

1.往期回顾 一个简单实用的循环buffer,用于缓冲数据!测试500M数据,耗时1.3秒。 C语言版本的循环buffer比C版本的速度更快!测试500M数据0.5秒,达9.25Gbps左右! C 语言免拷贝版本循环 buffer 比拷贝版本快了…

Golang并发编程-协程goroutine的信道(channel)

文章目录 前言一、信道的定义与使用信道的声明信道的使用二、信道的容量与长度三、缓冲信道与无缓冲信道缓冲信道无缓冲信道四、信道的初体验信道关闭的广播机制总结前言 Goroutine的开发,当遇到生产者消费者场景的时候,离不开 channel(信道)的使用。 信道,就是一个管道,…

Redis介绍及安装配置

1 什么是Redis Redis 的定义:Redis(Remote Dictionary Server 远程字典服务)是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 可见Redis和我们最经常使用的MySQL都…

技术创新加速生态繁荣 | 软通动力子公司鸿湖万联亮相OpenHarmony开发者大会2024

5月25日,由开放原子开源基金会OpenHarmony项目群工作委员会主办的OpenHarmony开发者大会2024在深圳成功举行。本次大会紧扣OpenHarmony 4.1 Release版本发布契机,以“鸿心聚力,智引未来”为主题、通过“1场主论坛6场技术分论坛”承载&#xf…

mysql 8 [HY000][1114] The table ‘/tmp/#sql4c3_3e5a0_2‘ is full

分组有个比较大的表,出现了临时表空间满了的情况; 试用该sql 语句: SHOW GLOBAL VARIABLES LIKE internal_tmp_mem_storage_engine; 可以看到 默认临时结果是用临时表存的,在mysql的my.cnt可以改临时空间的大小 但是磁盘哪有内…

5.28学习总结

java复习总结 hashcode()和equals() hashcode():在Object里这个方法是通过返回地址的整数值来生成哈希值。 equals():在Object里这个方法是通过比较他们的内存地址来确定两个对象是否相同。 运行效率:hashcode的时间复杂度为O(1)(因为只要计算一次哈…

Vue 菜单组件开发教程

在 Vue 项目中&#xff0c;我们常常需要构建各种菜单结构。下面就来详细介绍如何基于给定的代码来开发一个菜单组件。 组件部分 一、模板部分 <template> <template v-for"item in menuTree" :key"item._id"> <el-sub-menu v-if"i…

EtherCAT协议概述

EtherCAT 是由德国 BECKOFF 自动化公司于2003年提出的实时工业以太网技术。它具有高速和高数据有效率的特点&#xff0c;支持多种设备连接拓扑结构。其从站节点使用专用的控制芯片&#xff0c;主站使用标准的以太网控制器。 EtherCAT 的主要特点如下 : ①泛的适用性&#xff0c…

【Pandas】深入解析`pd.read_sql()`函数

【Pandas】深入解析pd.read_sql()函数 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xf…

《KAN》论文笔记

原文出处 KAN: Kolmogorov–Arnold Networks (arxiv.org)https://arxiv.org/html/2404.19756v1 论文笔记 What 《KAN: Kolmogorov–Arnold Networks》——我们提出了 KolmogorovArnold Networks (KANs) 作为多层感知器 (MLP) 的有前途的替代方案。 我们表明&#xff0c;这…

STM32简易音乐播放器(HAL库)

一、设计描述 本设计以STM32MP157A单片机为核心控制器&#xff0c;加上其他的模块一起组成基于单片机的音乐盒的整个系统&#xff0c;通过不同频率的PWM使蜂鸣器播放音乐&#xff0c;通过按键中断实现歌曲切换&#xff0c;音量调节&#xff0c;定时器中断实现播放速度调节&…

kafka-生产者发送消息消费者消费消息

文章目录 1、生产者发送消息&消费者消费消息1.1、获取 kafka-console-producer.sh 的帮助信息1.2、生产者发送消息到某个主题1.3、消费主题数据 1、生产者发送消息&消费者消费消息 1.1、获取 kafka-console-producer.sh 的帮助信息 [rootlocalhost ~]# kafka-console…