博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库变更管理
阅读量:7082 次
发布时间:2019-06-28

本文共 1475 字,大约阅读时间需要 4 分钟。

代码化、版本化的数据库变更管理, 是有效管理数据库的利器, 这样的工具一般称为 database migration tool,是DevOps在数据库领域运用之必备工具。

Database Migration Tool的功能

一个好用的Database Migration Tool通常具有以下功能:

  1. 既支持使用我们拿手的编程语言来编写, 又支持SQL及数据库扩展的SQL语法编写, 还支持将应用开发语言编写的变更翻译成SQL格式的. 从而满足开发, 测试, 运维及数据库管理等多种角色的需要.
  2. 支持升级(upgrade)和降级(undo, downgrade).
  3. 既支持命令行执行, 又有API可以集成到自动化流程中.
  4. 既支持从零开始维护数据库的变更记录, 也支持中途转入使用该工具来管理变更.
  5. 支持预览模式, 方便变更审核.

本文接下来介绍几种常见的此类工具.

常见的Database Migration Tools

Java - Liquibase

Liquibase网址: 

Liquibase以XML格式表达ChangeSets, 以XML, JSON, YAML, SQL等格式描述changelog.

Liquibase的商业化版本为Datical, 其团队的重心转到了Datical上, 因此Liquibase的网站看起来也比较陈旧.

Java - Flyway

Flyway网址: 

Flyway是Boxfuse公司开发的, 以SQL或Java表达每次的migration, 以文件名来表达版本及变更类型(do, undo).

Flyway有免费版, 专业版, 和企业版的区别. 对于开发人员, 免费版基本够用, 对于企业生产环境, 企业版能支持更低版本的Java和数据库环境.

其中undo也需要专业版才支持, 主要是因为Flyway的团队以生产环境为基准, 认为undo是需要非常谨慎处理的事情, 他们更推荐的做法是尽量让DB的变更具有兼容性, 即使不回滚数据库变更, 只回滚应用代码, 也能正常兼容运行.

作为一款具有商业化产品的产品, Flyway所支持的关系数据库种类很多, 这对于大中型企业而言, 非常有吸引力, 因为这样的企业中往往有历史悠久的信息系统, 其数据库往往版本较低.

Python - sqlalchemy-migrate

sqlalchemy-migrate 是Python语言第一个影响广泛的此类工具,但后来缺乏维护。特别是当sqlalchemy的作者(Michael Bayer)开发了alembic以后,Python开发者更多转向使用alembic。

Python - alembic

项目地址:

文档地址:

Alembic依靠SQLAlchemy强大的数据库DDL及DML表达力,能方便地使用Python或SQL来表达数据库变更。

Alembic目前没有商业化产品。

Golang - golang-migrate

项目地址:

该工具支持以SQL格式(或目标数据库所支持的格式)来写变更,以整数来表达变更顺序。它没有提供自己的专有格式来写变更而是依赖于目标数据库,反而变得更加简单有效,避免了很多问题。

目前该项目没有商业化产品。

商业化版本的特点

  1. 理念上对DevOps的支持更好,与DevOps工具的集成支持更好。
  2. 有更好的长期支持, 支持老版本的语言和数据库。
  3. 有更强的操作风险控制能力,比如支持预览模式。
  4. 一般有界面可视化管理. 对变更评审, 变更执行监控与审计,运行报表等运维流程的支持更好。

转载地址:http://pvmml.baihongyu.com/

你可能感兴趣的文章
大数相乘
查看>>
简单计算器 (栈)
查看>>
正则表达式学习网站
查看>>
RabbitMQ消费者消息权重,
查看>>
docker内存和cpu调试
查看>>
避开sql注入过滤的几个方法
查看>>
JQuery
查看>>
html和java的交互,利用jsBridge开源框架
查看>>
【hdu6072】Logical Chain
查看>>
Gartner:2013年SIEM市场分析(MQ)
查看>>
特殊命令eval的用法两例
查看>>
【物联网智能网关-12】以网关为核心,互联网为基础构建物联网平台
查看>>
SQL Server 全文索引
查看>>
Grid Control 10G安装与配置
查看>>
oracle vm的虚拟机windows启动不了的处理方式
查看>>
成长型企业的战略误区
查看>>
Linux 邮件服务器原理介绍,编译安装Postfix实现本地的邮件服务。
查看>>
VMware虚拟设备之虚拟磁盘配置与虚拟磁盘置备类型相关介绍
查看>>
MongoDB 3.0 新增特性一览
查看>>
实战开发经验: 软件系统设计思路
查看>>