暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

探索关系数据库模式更改的范式转换

原创 X丶 2022-10-24
200

关系数据库模型最早是由英国计算机科学家埃德加·弗兰克·科德于1070年在IBM工作时提出的,并已在商业上部署了40多年。在软件开发领域,这是一项罕见的成就,并在今天继续发展。关系数据库通常作为当今世界上最小到最大的应用程序和产品的后端。虽然关系数据库已经针对速度、并发性、延迟和总体性能进行了优化,但它们还没有适应大规模管理元数据更改。具体地说,许多组织在部署模式更改时都在努力保持开发速度、敏捷性和信心。

历史

过去,开发人员会提前几个月计划一个模式更改,并与数据库管理员批准并协调向新模型的过渡。为了应用这些变化,系统将被关闭维护数小时或数天。考虑到其复杂性和所需时间,团队每年只能交付少量更改。

现状

今天,这些维护窗口是完全不可接受的,因为用户希望服务能够在零停机时间内持续可用。此外,今天的开发人员习惯于加速部署流程,并希望连续部署模式更改,有时是每天多次。

但是关系数据库并没有满足开发人员的需求。模式更改对连续部署构成了操作障碍,并且与开发人员的工作流保持陌生。它们进化模式来尝试最小化模式迁移,或者通过以次优的方式修改代码来完全避免模式迁移。因此,大型表的模式部署通常仍然是手动的,被认为是危险的操作。

我相信关系型数据库能够而且应该满足模式部署的现代开发实践,从而允许更多的自动化、控制和速度,并因此在过程中灌输信心。

建议范式

我相信以下核心原则对于模式迁移是必不可少的。

无阻塞
一些关系数据库,以及架构迁移,对迁移的表设置写锁,从而使应用程序无法访问该表。反过来,这通常表现为一个停机场景。大型表的ALTER TABLE迁移可以用小时甚至几天来衡量。这些阻塞迁移对于现代开发流和应用程序来说是不可接受的,数据库必须提供非阻塞迁移,允许在整个操作过程中完全访问迁移的表。

轻量级
架构更改应该能够满足应用程序的需要。即使在可用的情况下,非阻塞模式更改通常在资源消耗方面具有侵略性,并且将尝试利用尽可能多的磁盘IO操作、内存和CPU来运行到完成。这会与应用程序所需的资源竞争,并常常导致应用程序性能下降。

异步
应该能够接收数据库的更改移动以异步运行它。原子迁移或事务迁移是受欢迎的,但它们意味着在迁移期间(以小时或天为单位)保持连接处于活动状态。不应要求部署工具或脚本长时间保持这些连接。连接丢失时的行为通常不是开发人员想要的。

迁移
迁移可能会因为在同一个表上运行而相互冲突,或者仅仅是因为过度消耗了资源。数据库应该提供一种调度迁移的机制。数据库应该确定哪些迁移可以安全地并发运行,哪些迁移不安全。

可中断的
即使是轻量级的,迁移仍然会影响磁盘空间和磁盘I/O操作。应该可以在不立即花费任何代价的情况下中断正在运行的迁移。在最需要资源的时候,页面的回滚或刷新就是不希望的开销的例子。

可追踪
数据库应该能够提供一个长期迁移进度或预计到达时间的估计值。

不可知故障
数据库应该能够恢复由于数据库故障而中断的迁移。例如,操作员应该可以在不影响几天的迁移的情况下重新启动数据库服务器。运营商不应该因为开发者的部署而推迟维护工作,开发者也不应该拒绝部署。

如果数据库提供多节点设计,那么迁移应该不可知论者跨节点故障转移,并且不应绑定到它们开始的特定节点。

可逆的
架构迁移应该被视为一级部署。因此,数据库系统应该能够取消部署迁移,从而恢复迁移前的模式。开发人员应该确信,如果模式部署出了问题,他们可以将其恢复并返回到已知的良好状态。

可重新部署
与代码部署非常相似,模式部署应该是幂等的。开发人员或部署系统应该能够连续提交两次(或更多)相同的迁移请求,并且数据库应该解决过多的请求,以确保迁移像开发人员预期的那样运行一次。

数据库应该潜在地支持声明式模式部署,开发人员提交所需的状态,而不是命令式命令。声明性模式部署本质上是幂等的。

产生的流量
有了这些概述的原则,开发人员将确信他们的模式迁移不会给生产服务器带来很大的负担。它还将确保他们的部署工具在运行更改时不必阻塞数据库数小时。当其他部署就绪时,数据库将无缝地安排迁移,他们将很容易理解,而且他们可以随时跟踪迁移的进度,并在需要时中断迁移。

开发者将不必考虑操作问题。他们不需要担心计划内的维护或计划外的故障转移。

他们会对自己的部署充满信心,因为他们知道他们可以一次又一次地重新部署更改,或者将更改全部恢复到最后一次已知的状态,以防出现意外问题。

这些都表明了一个高效的开发流程,它将使开发人员拥有模式更改的所有权,并有信心可靠地使用velocity进行部署。开发人员最终将使他们的产品能够成功地交付给客户。

原文标题:Exploring a Paradigm Shift for Relational Database Schema Changes
原文作者:Shlomi Noach
原文地址:https://dzone.com/articles/exploring-a-paradigm-shift-for-relational-database-schema

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论