写点什么

在 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:001645
用户头像

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

关注

评论

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

如何消除excel保存密码?

尚思卓越

网络安全 运维管理 密码保存

电影:从微缩模型到AI纹理

3D建模设计

3D模型 模型纹理

建筑可视化中的 3D 纹理

3D建模设计

渲染 3D纹理 建模模型

Proxifier v3.11注册破解版(socks5客户端)

iMac小白

Scherlokk for Mac(文件搜索软件) 4.5.45005中文版

iMac小白

DTSE Tech Talk | 3招解决时序数据高基数难题,性能多维度提升!

华为云开源

时序数据库 高基数 华为云开源

AdaBoost算法解密:从基础到应用的全面解析

不在线第一只蜗牛

机器学习 算法 集成学习

seller_info-获得淘宝店铺详情api接口有什么作用?

技术冰糖葫芦

API 文档

Charles for Mac(HTTP抓包工具) v5.0b12激活版

iMac小白

Royal TSX for Mac(远程管理软件) v6.0.1完整激活版

mac

苹果mac Windows软件 Royal TSX 远程连接管理工具

3D 纹理渲染如何帮助设计师有效、清晰地表达设计理念

3D建模设计

3D渲染 Stable Diffusion 3D纹理

大数据云原生能力成熟度模型,重磅发布!

腾讯云大数据

云原生

Sam Altman 或回归 OpenAI;格力 1.3 万研发人员没有海归派 & 外国人丨 RTE 开发者日报 Vol.86

声网

Mac电脑版Permute 3中文激活版下载

iMac小白

一书了解国产操作系统openEuler

博文视点Broadview

数据集成实施过程注意点总结

RestCloud

ETL 数据集成

打造自己的3D模型AI 自动纹理工具

3D建模设计

Stable Diffusion 3D纹理

软件测试 | ChatGPT:个性定制的人工智能助手

测吧(北京)科技有限公司

测试

人工智能 | 企业智能化升级:大语言模型、知识图谱与微信机器人的完美结合

测吧(北京)科技有限公司

测试

软件测试/测试开发丨人工智能的与软件测试完美结合

测试人

人工智能 软件测试

软件测试/测试开发/人工智能丨Python类型转换

测试人

人工智能 软件测试

万字长文讲解调用第三方接口,RestTemplate,urlConnection使用详解,java代码模拟postman发送请求

javaNice

Java

HandBrake for Mac中文激活版 支持M1

iMac小白

fcpx视频剪辑:Final Cut Pro v10.6.10中文版

iMac小白

4K Video Downloader Pro 4.27.0中文破解下载

iMac小白

AppLink定时调度操作

RestCloud

定时调度 APPlink

Microsoft Office LTSC 2021 for Mac(office系列全套装)

iMac小白

TDengine Contributor 钟宇讲述 TSZ 压缩算法优化背后的故事

TDengine

tdengine 时序数据库

人工智能助力测试领域:智能化测试框架与平台的崭新未来

测吧(北京)科技有限公司

测试

思科基于 Amoro + Apache Iceberg 构建云原生湖仓实践

Amoro Community

大数据 数据湖 iceberg 思科 湖仓一体

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