写点什么

数据库管理工作如何适应 DevOps 实践

  • 2016-01-31
  • 本文字数:2345 字

    阅读完需:约 8 分钟

Agile Consortium International and Unicom 组织即将在 2 月 4 日于比利时布鲁塞尔举办 2016 DevOps 布鲁塞尔峰会。InfoQ 将全程报道此次活动。

在 DevOps 布鲁塞尔峰会上,Dan North 将在演讲中探讨数据库管理工作如何适应 DevOps 这一新的实践。InfoQ 与 North 进行了一次采访,内容包括数据库管理员的日常工作,以及这些工作与开发者和运维人员的工作之间的关联;数据库管理工作是怎样组织的;数据库如何适应 DevOps 或持续交付实践;以及 North 对于实施了 DevOps 的组织数据库管理工作未来的变化有怎样的期待。

InfoQ:数据库管理的日常工作通常是怎样进行的?

North:DBA 这一角色通常会接触多种产品环境、开发团队、技术以及业务干系人。也许他们在上一分钟还在进行数据库调优,下一分钟就要安装某个安全补丁,以及对于生产环境中遇到的问题进行响应,或是回答开发者们的问题。他们需要确保备份与分发的正确配置,系统与用户对于相应的数据库(并且仅限于这些数据库!)有着适当的访问权限,并且还要实际参与异常的系统行为的诊断工作。

DBA 的实际价值体现在对于数据库本身、运行时特性与配置等机制和细节的理解上,并在编写查询功能的开发者与负责各种作业的运行的运维人员之间起到桥梁的作用。熟练的 DBA 能够指出如何加快运行较慢的查询的方法,包括改变查询逻辑、调整数据库 schema、或是更改数据库运行时的参数。例如改变连接的次序、引入索引(有些情况下还需要删除某个索引!)、对数据库的查询执行计划器给出提示、或是更新数据库的启发式特性,这些工作对于性能可能会带来极大的影响。

InfoQ:这些工作与开发者或运维人员的工作有什么联系?

North:这方面有一个不幸的事实,只有极少数的开发者能够真正了解关系型数据库背后的运行机制。Hibernate 或微软的 Entity Framework 这样的框架提供了一种映射层,它向普通的企业开发者掩盖了内部的运行机制,因为对于这些开发者来说最重要的技能在于 C#或 Java 的编程,这种做法显然是一把双刃剑。一方面,这种映射层能够在数据库 schema 与对应的面向对象数据结构之间生成映射关系,从而简化开发普通应用程序的过程。但如果你所期望的领域模型与数据库 schema 之间产生了较大的分歧,或者是对于性能、可用性与可伸缩性有较高需求的情况下,这种方式很快就会让应用变得复杂起来。在这种情况下,如果在开发团队中能够加入一位 DBA 以提供帮助,这种做法的价值是无可估量的。

从运维的角度来说,DBA 通常需要负责实现业务上的分发或可用性的策略。监控系统、诊断问题及“保持系统始终正常运转”等工作属于运维人员的职责,但 DBA 也需要深入参与与数据库相关的监控工作与问题诊断。他们还需要为运维团队定义数据库管理与维护的流程。

InfoQ:你能否举例说明一下数据库管理工作通常来说是如何组织的?这种组织方式有什么益处与缺陷?

North:通常来说,DBA 这一角色的工作主要来自于请求或工单系统,这形成了另一种技术壁垒。这种方式意味着 DBA 往往接触不到宏观的业务或技术方面的需求与限制的上下文,他们往往只能在信息的真空中尽力把工作做好。从我的经验来来看,DBA 经常会扮演一种随时提供支持服务的角色,因此如果某个开发者的查询超过了阀值,那么 DBA 很可能在半夜里被电话吵醒。也正因如此,DBA 对于来自开发者的数据库变更往往选择谨慎的、甚至是非常质疑的态度。

有时候,DBA 可能会分为“生产环境 DBA”与“开发 DBA”这两种不同的角色。前者通常都坐在一起,进行我之前所描述的各种生产环境的维护工作。而后者将帮助开发团队进行 schema 的设计与查询,让他们能够以正确的方式与数据库进行交互。这种方式可以带来很好的效果,尤其是生产环境 DBA 与开发 DBA 之间已经建立了一种信任关系的前提下。生产环境 DBA 知道开发 DBA 会确保 schema 的设计与数据库的查询具有一定程度的质量与合理性,而开发 DBA 也相信生产环境 DBA 会以正确的方式对各种数据库实例进行配置与维护。

InfoQ:数据库如何适应 DevOps 或持续交付实践?

North:在许多组织中,他们之间确实是无法适应的。无论是将数据库变更通过一个独立于应用代码变更的额外流程进行发布,还是将数据库与应用的变更统一发布至生产环境中,两者都面临着很多困难。

某些组织会采取“数据库即代码”的策略,通过某些自动化流程,利用变更脚本将变更部署至数据库中。这些脚本与应用代码一起在源代码控制系统中进行管理,这可以简化变更的追踪与分析工作。这些变更脚本通常叫做迁移脚本,或者就直接叫做迁移,他们已经是最近于“数据库即代码”这种策略的形态了,但仍然包含大量不必要的复杂性。

InfoQ:对于实施了 DevOps 的组织,你对数据库管理工作的变化在未来有怎样的期待?数据库管理员将如何为此做好准备?

North:对于 DBA 来说,最理想的模式是让他们成为开发及运维团队这个整体中的一分子。DevOps 的目标是将敏捷开发中的各种技术优势,例如持续集成、自动化以及版本控制整合到一个运维的上下文中,同时依旧保持让系统持续运转的各种严格的纪律。

我希望未来的数据库变更能够像代码变更一样简单。我不希望手动编写迁移脚本,或者不断记录有哪些脚本已经运行过了、哪些还没有运行等等。我应当能够选择在某个开发数据库上进行的任何变更,然后像代码一样进行“签入”。我不需要在版本控制系统中手动进行差异比较操作,而是可以在软件中直接操作,让 VCS 来找出这些变更。

数据库工具应当能够指出自上个“版本”以来,数据库一共产生了哪些变化,并生成相应的迁移脚本。像 Red Gate 等几家软件商在这方面已经取得了一些进展,但前方的路似乎还很漫长。目前大多数的“敏捷型”数据库工具主要作用还是创建、应用以及管理迁移脚本,而不是真正将数据库视为代码进行处理。

查看英文原文: How Database Administration Fits Into DevOps

2016-01-31 18:002261
用户头像

发布了 428 篇内容, 共 186.1 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

云渲染技术的“公”“私”

Finovy Cloud

服务器 云渲染 元宇宙 渲染器

Flink框架中的时间语义和Watermark(数据标记)

百思不得小赵

大数据 flink 6月月更

大数据系统包含哪些组件?需要过等保吗?

行云管家

大数据 数据 过等保

记录那些年 Nacos 的坑

Damon

6月月更

SAP Marketing Cloud 功能概述(一)

汪子熙

云原生 SaaS SAP 6月月更 Marketing Cloud

im即时通讯的简介和趋势

BeeWorks

为什么不建议你用 MongoDB 这类产品替代时序数据库?

TDengine

数据库 tdengine 时序数据库

大数据培训Flink 流怎么来处理 API

@零度

flink 大数据开发

【Python技能树共建】常用标准库

梦想橡皮擦

Python 6月月更

MySQL采用B+树作为索引的原因

龙空白白

索引结构 MySQL 数据库 索引原理

大数据培训Flink 中的 Window理解与分析

@零度

flink 大数据开发

NodeJS 5分钟 连接 Redis 读写操作 👑

德育处主任

redis Node 6月月更

2022年秋季广州美博会-2022年9月份广州美博会

Geek_0b38bb

2022年广州美博会 秋季广州美博会 9月份广州美博会 美博会

Wallys/DR-AP6018-S-OUTDOOR/ IPQ6010/high power Radio AP

wallys-wifi6

IPQ4019 ipq6018

「势说新语」SBOM在企业软件供应链管理中的重要性—安全漏洞篇

安势信息

开源 漏洞 开源软件供应链 软件物料清单 SBOM

如何规避开源安全漏洞风险?新思科技OSSRA报告给出建议

BeeWorks

征文投稿丨基于轻量应用服务器+OSS的中小型应用运维实践

阿里云弹性计算

运维 OSS CI/CD 轻量应用

倒计时2日!基于 Apache DolphinScheduler&TiDB 的交叉开发实践,从编写到调度让你大幅提升效率

白鲸开源

Apache 大数据 开源 Apache DolphinScheduler

云堡垒机单机部署的优缺点讲解-行云管家

行云管家

网络安全 堡垒机 云堡垒机 堡垒机部署

时序数据是如何被压缩的?具体有哪些可选择的压缩算法?

TDengine

数据库 tdengine 时序数据库

洞见科技助力华夏银行「隐私计算数据安全平台」建设,赋能金融业务提质增效

洞见科技

金融科技 隐私计算

Volcano社区v1.6.0版本正式发布

华为云开发者联盟

云计算 云原生 后端

2022年深圳美博会-2022年深圳国际美博会

Geek_0b38bb

美博会 2022年深圳美博会 2022年深圳国际美博会 深圳美博会

软件开发外包的优势,哪些企业适合软件开发外包?

开源直播系统源码

软件开发 直播带货 直播带货源码 视频带货

父亲节,这份孩子科学上网秘籍助你“爸”气全开

最新动态

2022年广州美博会-2022第60届广州国际美博会

Geek_0b38bb

2022年广州美博会 秋季广州美博会 美博会 第60届广州美博会

华为云发布ModelBox AI应用开发框架

华为云开发者联盟

人工智能 华为云

ABAP-调用WebService服务

桥下本有油菜花

abap

uni-app进阶之Weex/nvue【day6】

恒山其若陋兮

6月月更

SAP Field Service Management 和微信集成的案例分享和实现介绍

汪子熙

云原生 SaaS SAP 6月月更 Marketing Cloud

5种在TypeScript中使用的类型保护

华为云开发者联盟

前端 变量 类型

数据库管理工作如何适应DevOps实践_DevOps & 平台工程_Ben Linders_InfoQ精选文章