写点什么

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

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

关注

评论

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

推三返一消费全返模式系统开发指南教程/步骤详细/功能逻辑/源码程序

V\TG【ch3nguang】

ReidsTemplate序列化器

李爽

短剧开发丨短剧系统开发模式讲解丨短剧现成源码

V\TG【ch3nguang】

短剧系统开发

2024年最受欢迎的轻量级项目管理软件推荐

爱吃小舅的鱼

项目管理 轻量项目管理

创新驱动:观测云如何帮助企业在竞争中保持领先

可观测技术

数据分析

一文了解电商大促系统的高可用保障思路-献给技术伙伴们

京东科技开发者

如何使用 Higress 快速构建 AI 应用?

阿里巴巴云原生

阿里云 云原生 Higress

Python多进程日志以及分布式日志的实现方式

我再BUG界嘎嘎乱杀

Python 编程 多线程 日志 分布式日志

解锁未来财富密码:AI自动化副业创收班——终身财富加速器

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

测试

为什么要用云手机进行海外社交营销

Ogcloud

云手机 海外云手机 云手机海外版 海外社媒营销

云手机如何保障TikTok多账号安全运营

Ogcloud

云手机 海外云手机 tiktok云手机 手机群控 tiktok矩阵

微软发布 Phi-3.5 系列模型,涵盖端侧、多模态、MOE;字节 Seed-ASR:自动识别多语言丨 RTE 开发者日报

声网

七牛云 CDN 视频瘦身,为视频分发「减负增效」

七牛云

CDN CDN带宽

成本效益分析:观测云投资的回报

可观测技术

成本优化

python Socket无限发送接收数据方式

我再BUG界嘎嘎乱杀

Python 编程 后端 socket 开发语言

2025第二十四届杭州国际智能楼宇展览会

AIOTE智博会

智能楼宇展 智能楼宇展会 智能楼宇展览会

5款在线PPT工具,一键生成精美的PPT幻灯片!

职场工具箱

效率工具 职场 PPT 办公软件 AI生成PPT

上线一天销售额超15亿!《黑神话:悟空》火爆全网的技术秘诀!

可信AI进展

人工智能

IPQ5018 motherboard: QCN6102-QCN6122 Multi-band integration -DIY customization

wifi6-yiyi

wifi ipq5018 WIFI6E

让程序员欲罢不能的职场工具合集

伤感汤姆布利柏

动态化-鸿蒙跨端方案介绍

京东科技开发者

基于飞桨框架实现PCA的人脸识别算法

百度Geek说

人脸识别 百度飞桨

数据安全审计必备攻略:一文掌握6大核心审计要点(附下载)

极盾科技

快手主站前端工程化探索:Gundam 脚手架在新春除夕项目中的实践与展望

快手技术

前段

Java 流式编程的七个必学技巧

高端章鱼哥

Python开发中,SQLAlchemy 的同步操作和异步操作封装,以及常规CRUD的处理。

不在线第一只蜗牛

Python 数据库 oracle

未来展望:观测云技术的发展与企业业务的融合

可观测技术

业务监控

AIGC应用实战营-毕业总结

王琨琨

一对一语音视频聊天APP系统开发玩法设计/步骤指南/案例源码

V\TG【ch3nguang】

关于Arrays.asList返回List无法新增和删除?

EquatorCoco

数据结构 后端

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