写点什么

数据库管理工作如何适应 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:002376
用户头像

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

关注

评论

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

发布引发的curator报错:instance must be started before calling this method

林一

dubbo zk 优雅停机

为什么不推荐C++?

实力程序员

外包CRUD3年,被导师一句话点醒,直接涨薪9K(Java岗)

Java架构师迁哥

CompletableFuture 简单与链式的区别?

李尚智

中国数字人民币官方宣传片来袭!DCEP:开启“无现金新时代”!

CECBC

一场“测谎”人机对战背后的故事:度小满的技术进击之路

脑极体

探秘区块链技术在计算机取证过程中的机制与应用

CECBC

V8数据存储(上篇):栈和堆

梁龙先森

大前端 浏览器

【Flutter 专题】118 图解特殊利器 ShaderMask 着色器

阿策小和尚

5月日更 Flutter 小菜 0 基础学习 Flutter Android 小菜鸟

一个月吃透这份阿里高级专家的《Java500道面试手册》成功拿下了腾讯offer!

Java架构之路

Java 程序员 架构 面试 编程语言

关于echarts使用geo制作地图tooltip不显示问题

孤独的西北疯

Spring Boot Devtools Restarter 原理

sN0wpeak

Java spring

Dubbo 服务治理简介

青年IT男

dubbo

五一假期旅游完突然收到(余额宝)面试,四面成功拿下offer

Java架构师迁哥

高德地图只显示一个省的地图

孤独的西北疯

人生算法:做好自己这家公司的CEO

石云升

读书笔记 思维模型 5月日更

5分钟速读之Rust权威指南(十一)

wzx

rust

智慧党建平台搭建,党建干部管理系统,智慧组工平台解决方案

一周信创舆情观察(5.17~5.23)

统小信uos

阿里人是如何设计系统抵挡亿级流量冲击的?(全彩版小册开源)

Java架构师迁哥

微服务注册中心:Consul——服务注册

程序员架构进阶

微服务 Consul API网关 28天写作 5月日更

GitHub连夜封杀!这份阿里 10W 字内部 Java 字面试手册到底有多强?

Java 程序员 架构 面试

week5作业

Geek_2e7dd7

架构实战营

Django 之 Models(Models 模型 & 数据表关系)

若尘

django model Python编程 5月日更

C++ 协程的近况、设计与实现中的细节和决策

Linux服务器开发

c++ 线程 后端 协程 Linux服务器开发

备战 60 天,成功上岸滴滴后,我特地把金三银四备战资源库整理出来了

Java 程序员 架构 面试

区块链如何赋能企业数字化转型?

CECBC

面向WEB开发人员的Docker(六):使用nginx部署静态网站

devpoint

Docker

计算社会科学 - DAY 17

Qien Z.

5月日更

代码精进之路学习笔记

escray

学习 极客时间 5月日更

密码学系列之:SAFER

程序那些事

密码学 程序那些事 SAFER

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