架构师·2018 年 6 月刊
15
15
1.0x
00:00/00:00
登录|注册

实现生产级的Migrate操作

前言

在涉及到关系型数据库开发时、我们每次在线上操作数据库都需要找一个叫 DBA 的角色,时光荏苒,就这样过了一年又一年。一群不堪压迫,集 颜值 、智商、动手能力于一身的程序员们发现,明明我们手里有操纵 DB 的能力,为什么要把命运交给别人主宰呢?
这群程序员做了一个伟大的决定!
让数据库的数据结构也能够通过版本追踪,这种操作,就被称为“Database Migrate”。本文将以 Flask-Migrate 作为基础蓝本,讲解如何实现生产级质量的 Migrate。
其实 Migrate 实现并不复杂,只要我们:
支持追踪每一次的数据库结构变更 【构建 commit】
新开发者参与到项目中可以自动的应用变更到最新版本 【生效 commit】
回滚更新 【revert】
一个基础完备且健壮的 Migrate 就算实现了。常见的 Migrate 实现都是直接使用当前数据库来进行构建的。Flask-Migrate 也不例外。
在 Flask-Migrate 中,构建 commit 是通过文件的方式生成的。以一个简单的项目为例:
而生效的 commit,存储在 DB 的 alembic_version 中:
在本例中,当前的 migrate 有两个,但是只生效了一个。当我们再次执行 Migrate 操作时,系统会对比当前目录和数据库中的记录,根据依赖关系顺序生效还未生效的 commit。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部