本文共 1475 字,大约阅读时间需要 4 分钟。
代码化、版本化的数据库变更管理, 是有效管理数据库的利器, 这样的工具一般称为 database migration tool,是DevOps在数据库领域运用之必备工具。
一个好用的Database Migration Tool通常具有以下功能:
本文接下来介绍几种常见的此类工具.
Liquibase网址:
Liquibase以XML格式表达ChangeSets, 以XML, JSON, YAML, SQL等格式描述changelog.
Liquibase的商业化版本为Datical, 其团队的重心转到了Datical上, 因此Liquibase的网站看起来也比较陈旧.
Flyway网址:
Flyway是Boxfuse公司开发的, 以SQL或Java表达每次的migration, 以文件名来表达版本及变更类型(do, undo).
Flyway有免费版, 专业版, 和企业版的区别. 对于开发人员, 免费版基本够用, 对于企业生产环境, 企业版能支持更低版本的Java和数据库环境.
其中undo也需要专业版才支持, 主要是因为Flyway的团队以生产环境为基准, 认为undo是需要非常谨慎处理的事情, 他们更推荐的做法是尽量让DB的变更具有兼容性, 即使不回滚数据库变更, 只回滚应用代码, 也能正常兼容运行.
作为一款具有商业化产品的产品, Flyway所支持的关系数据库种类很多, 这对于大中型企业而言, 非常有吸引力, 因为这样的企业中往往有历史悠久的信息系统, 其数据库往往版本较低.
sqlalchemy-migrate 是Python语言第一个影响广泛的此类工具,但后来缺乏维护。特别是当sqlalchemy的作者(Michael Bayer)开发了alembic以后,Python开发者更多转向使用alembic。
项目地址:
文档地址:
Alembic依靠SQLAlchemy强大的数据库DDL及DML表达力,能方便地使用Python或SQL来表达数据库变更。
Alembic目前没有商业化产品。
项目地址:
该工具支持以SQL格式(或目标数据库所支持的格式)来写变更,以整数来表达变更顺序。它没有提供自己的专有格式来写变更而是依赖于目标数据库,反而变得更加简单有效,避免了很多问题。
目前该项目没有商业化产品。
转载地址:http://pvmml.baihongyu.com/