写点什么

在 DevOps 中以 API 看待共享数据库

  • 2017-10-15
  • 本文字数:1223 字

    阅读完需:约 4 分钟

WinOps 2017 大会上,Sabin.io 首席顾问 Simon Sabin 做了一个演讲,介绍如何将数据库更改加入到持续部署模型中。从数据库所有者的角度看,要实现在多个服务或应用间共享数据库,关键之一就是将这些共享数据库看成是API。

Sabin 建议考虑使用视图、触发器和存储过程等机制。它们可以更改数据库的内部结构,并同时保持向后兼容的应用数据操作。他举了一个例子,一个存储信用卡号的数据库表已经从纯文本改为被加密的,但要保证应用依然以纯文本方式检索卡号。例子中是通过查询视图实现的,而实际的数据库表通过触发器实现信息的加密和解密。处理结构如下图所示:

数据库向应用提供隐式的合约和接口,其中数据库的内部更改(通常出于性能、安全和其它一些改进的需要)不应该影响到应用。这一原则可以类比为 API,突破性更改同样遵循最小化原则,并应给出大量的通知信息,保证应用在实际数据更改之前采纳和部署前向兼容更改。对数据库应用消费者驱动合约,这样的方法是可延展的。

按Sabin 的说法,需要这一方法去调和对共享数据库的不同视角。应用开发人员总是将数据库看成是“沉默的存储”,而数据库管理员(DBA)则将数据库看成是关键业务数据的仓储之所。理想情况下,每个应用团队会有自己的数据库,团队中也应具有DBA 角色,但这通常难以达到。

当应用本身就需要模式或其它更改时,Sabin 建议降低批处理的规模(因为在数据库中实现可靠性和一致性是一个复杂的任务),一次应用一个小更改,并更改相应的应用代码。选取何种迁移机制,是金模式(Gold Schema)还是迁移脚本方式,依赖于更改的具体类型。在Sabin 看来,相比于对抗式的,这一机制更多是补充式的。对于模式更改,适用于金模式机制。金模式定义了目标模式(期望状态),并使用类似于 SQLCompare 这类的工具做了当前状态和期望状态间的“差异比较”。迁移脚本包括 DBDeploy Flyway ReadyRoll 等,该机制可能更适用于更复杂的修改。

Sabin 还推荐了其它一些方法,包括:指定数据库去适合自身工具而非其它方法,将部署信息添加到数据库自身中以便于追踪和诊断问题,将数据库更改作为交付流水线一部分看待以提升可审校性和合规性。演讲的最后,Sabin 建议使用区分在“私有”和“公开”的方法极大地改进数据安全(在持续发生关键数据泄漏时)。例如,让一个可访问(“公开”)的小型数据库中提供对较大规模的安全(“私有”)数据库的视图,而“私有”数据库是不应被应用本身直接访问的。

正如 DevSecOps 运动是经过一段时间后才得以确立,将数据库更改加入到集成持续部署过程中的理念业已存在一段时间了,并被冠以各种称法。Sabin 将其称为“Data DevOps”,也有人将其称为“数据库生命周期管理”(DLM,Database Lifecycle Management)。另一位WinOps 2017 大会演讲者 Eduardo Piairo ,指出:

DevOps 并非是要定义一个处理数据库更改的新过程,而是将数据库更改和应用及架构代码一并集成到服务生命周期中。

查看英文原文: Treating Shared Databases Like APIs in a DevOps World

2017-10-15 19:001963
用户头像

发布了 391 篇内容, 共 153.8 次阅读, 收获喜欢 257 次。

关注

评论

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

华为Mate 70的麒麟9020芯片是谁生产的?

博文视点Broadview

Three-Body Technology Lost Soul for mac(三体洞箫软件音源) 激活版

Rose

未来技术路线选择:低代码开发还是传统开发?

秃头小帅oi

PlistEdit Pro for Mac(Plist编辑器)v1.9.7直装版

Rose

探索生成式AI与低代码结合的无限可能

天津汇柏科技有限公司

低代码 生成式AI

音视频互动APP的技术难点

北京木奇移动技术有限公司

音视频开发 软件外包公司 音视频APP

音视频互动APP的成本

北京木奇移动技术有限公司

音视频开发 软件外包公司 音视频APP

火山引擎数据飞轮2.0助力中信银行,用“AI”开启新年新气象

字节跳动数据平台

高效文件查找工具ProFind for Mac中文激活版

小玖_苹果Mac软件

低代码开发中的创新实践

伤感汤姆布利柏

提示词工程的十大认知误区

阿里技术

提示词

Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践

阿里云大数据AI技术

大数据 阿里云 数据集成 Dataworks FFA

阿里云 EMR Serverless Spark 在微财机器学习场景下的应用

阿里云大数据AI技术

大数据 数据采集 分布式训练 EMR

Volcano v1.11 重磅发布!开启AI与大数据的云原生调度新纪元

华为云原生团队

云计算 开源 容器 云原生

2024年最受欢迎的5个Go框架

王中阳Go

后端 go框架

交互式产品原型设计工具 Axure RP 9 mac中文破解版 含永久密钥

Rose

音视频互动APP的开发框架

北京木奇移动技术有限公司

软件外包公司 音视频APP 音视频编解码

综合治理系统(源码+文档+部署+讲解)

深圳亥时科技

Numa初识

天翼云开发者社区

服务器 构架 NUMA

人工智能丨DeepSeek-V3:推理速度飙升,开源模型新王者诞生!

测试人

人工智能 软件测试

谷歌访问助手(谷歌浏览器插件)Mac版

Rose

Type Fu for Mac(打字练习)v4.8.0激活版

Rose

专业级别的视频编辑软件Adobe Premiere Pro 2025 for Mac中文激活

小玖_苹果Mac软件

【YashanDB知识库】对比Oracle和YashanDB对象不一致的方法

YashanDB

数据库 yashandb

DeepSeek 爆火全球,昇腾让DeepSeek上线加速

极客天地

技术干货|Altair HyperWorks 二次开发与 Python 重构仿真新体验

Altair RapidMiner

Python 重构 开发语言 前处理软件

在DevOps中以API看待共享数据库_数据库_Manuel Pais_InfoQ精选文章