《操作型关系数据库模式》
关系数据库模型已经存在超过四十年,这是在软件开发领域极为罕见的成就。关系型数据库常作为从小型、中型到世界上最大应用和产品的后端支持。虽然关系型数据库在速度、并发性、延迟以及整体读写性能方面优化良好,但在处理大规模元数据变化方面还未能适应时代的发展需求。尤其是,许多组织在部署数据库模式(Schema)变更时,面临着保持开发速度、灵活性和信心的困难。
三十年前的数据库模式变更
三十年前,开发人员会提前几个月规划模式变更。一年中可能仅进行少数几次修改。开发人员通常需要与数据库管理员协作,审批模式变更并计划转移至新的模式。公司会暂停系统运行进行维护,有时这种维护持续数小时甚至数天,以便应用这些变更。
当前的行业现状
如今,这种长时间的维护窗口对于大多数组织来说是不可接受的。用户期望服务全天候高可用且稳定运行。另一方面,今天的开发人员习惯了快速部署流程,并希望能够持续实施模式变更(也称为模式迁移),甚至一天内多次部署。
然而,关系型数据库却未能很好地满足开发人员的需求。模式变更是实现持续部署的一个运营障碍,并且仍然与开发人员的工作流程格格不入。因此,开发人员对待关系型数据库的方式与其他生产系统有所不同,并探索一些策略试图最小化模式迁移,甚至通过次优的方式修改他们的代码以完全避免模式变更。对于大型表的模式部署通常仍是一个手动操作,并且被认为是具有高风险的操作。
我们认为,这是由于对模式迁移的忽视造成的。我们相信关系型数据库可且应当适应现代的开发实践,从而支持自动化、更好的管控、更快的速度以及更大的信心。
推荐的模式迁移范式
我们认为以下核心原则对于模式迁移至关重要:
1. 无阻塞性(Non-blocking)
某些关系型数据库在执行特定类型的模式迁移时会对迁移表施加写锁,从而使应用无法访问该表。这通常会导致系统宕机的情况。对于大表的 ALTER TABLE
操作迁移可能耗时数小时甚至数天。这种阻塞迁移不适应现代开发流程和应用需求。数据库必须支持无阻塞迁移,确保迁移过程中能够完全访问目标表。
2. 轻量级(Lightweight)
即便在提供无阻塞模式变更的情况下,迁移通常仍会极大消耗资源,包括磁盘 IO 操作、内存以及 CPU。这种资源竞争可能会导致应用性能下降。模式变更应能根据应用需求让出资源。
3. 异步化(Asynchronous)
虽然原子性或事务性迁移能够被接受,但它要求在迁移过程中保持连接活动,而迁移常常耗时数小时甚至数天。部署工具或脚本不应被要求保持如此长时间的连接。连接意外中断时的行为通常也不是开发者想要的。数据库应能够接收模式变更请求并异步执行。
4. 可调度性(Scheduled)
模式迁移可能相互冲突,例如操作同一个表或因资源消耗过多而冲突。数据库应提供一个迁移调度机制,并能够判断有哪些迁移可以安全地同时运行。
5. 可中断性(Interruptible)
即使是轻量级迁移,其运行仍会对系统资源产生影响,特别是磁盘空间和磁盘 I/O。当需要减少影响时,应能随时中断迁移而不会产生额外成本,例如长时间回滚或页面刷新等不理想的操作。
6. 可追踪性(Trackable)
数据库应能够提供长时间迁移的预计完成进度或预计完成时间(ETA)。
7. 故障容忍性(Failure agnostic)
数据库应能够恢复因故障而中断的迁移。例如,操作人员应能够在不中断长时间迁移的情况下重启数据库服务器。同样适用于意外故障。运维团队不应因为开发者部署而推迟维护工作,而开发者也不应因计划运维操作而延迟部署工作。
如果数据库支持多节点设计(如节点群集),则模式迁移应能够跨节点失效转移,无需绑定到启动迁移的特定节点。
8. 可回退性(Revertible)
模式迁移应被视为一流的部署。数据库系统应能够撤销迁移,恢复到迁移前的模式。开发者应有信心,如果模式部署出现问题,可以回滚到已知良好的状态。
9. 可重复部署性(Redeployable)
模式部署应和代码部署一样具备幂等性。开发者或部署系统应该能够重复提交同一个迁移请求,数据库应能够处理重复的请求以确保迁移只执行一次,这是开发人员期望的行为。
数据库应能够支持声明式模式部署,即开发者提交的是期望状态而非命令式指令。声明式部署本身具有幂等特性。
预期的开发流程
基于上述原则,开发者在执行模式迁移时可放心,不会对生产服务器造成大的负载。部署工具无需长时间阻塞等待模式变更。数据库能够合理安排迁移,同时考虑其他部署操作。
开发人员可随时追踪迁移进度,并在必要时中断迁移,且不会产生额外的成本。他们无需担心系统运维维护或意外的节点失效。
开发人员可以放心进行部署,知道他们可以一遍又一遍地重新部署变更,或者干脆回滚恢复至最后的良好状态。
这些原则将支持一种更加轻松的开发流程,赋予开发者对其模式变更的主动权,并帮助他们以更快的速度和更大的信心完成部署工作。
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:https://www.choupangxia.com/2025/05/23/the-operational-relational-schema-paradigm/