数据库变更管理

简介:

代码化、版本化的数据库变更管理, 是有效管理数据库的利器, 这样的工具一般称为 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网址: http://www.liquibase.org/index.html

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

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

Java - Flyway

Flyway网址: https://flywaydb.org/

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

项目地址:https://bitbucket.org/zzzeek/alembic

文档地址:http://alembic.zzzcomputing.com/en/latest/index.html

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

Alembic目前没有商业化产品。

Golang - golang-migrate

项目地址:https://github.com/golang-migrate/migrate

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

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

商业化版本的特点

  1. 理念上对DevOps的支持更好,与DevOps工具的集成支持更好。
  2. 有更好的长期支持, 支持老版本的语言和数据库。
  3. 有更强的操作风险控制能力,比如支持预览模式。
  4. 一般有界面可视化管理. 对变更评审, 变更执行监控与审计,运行报表等运维流程的支持更好。
目录
相关文章
|
13天前
|
存储 SQL 监控
Visual Basic与数据库交互:实现数据访问和管理
【4月更文挑战第27天】本文探讨了使用Visual Basic进行数据库编程的基础,包括数据库基础、连接、数据访问技术如ADO.NET,数据绑定,事务处理,存储过程与视图。还强调了性能优化、安全性、测试与调试,以及持续维护的重要性。通过掌握这些概念和技巧,开发者能构建高效、可靠的数据驱动应用。
|
29天前
|
Oracle 安全 关系型数据库
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
26 10
|
29天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(三):数据库的创建和管理
【Oracle】玩转Oracle数据库(三):数据库的创建和管理
68 5
|
4月前
|
SQL 关系型数据库 MySQL
MySQL| 数据库的管理和操作【操作数据库和操作表】【附练习】
MySQL | 数据库的基本操作和表的基本操作【附练习】
|
4月前
|
弹性计算 关系型数据库 MySQL
快速上手阿里云RDS MySQL实例创建,轻松管理数据库
快速上手阿里云RDS MySQL实例创建,轻松管理数据库 在数字化时代,数据已成为企业的核心资产。如何高效、安全地存储和管理这些数据,成为企业在云计算时代亟待解决的问题。阿里云的RDS(关系型数据库服务)应运而生,为用户提供稳定、可靠的云上数据库解决方案。本文将详细介绍如何通过阿里云RDS管理控制台快速创建RDS MySQL实例,让您轻松上手,快速部署数据库。
179 2
|
3月前
|
监控 Oracle 关系型数据库
Flink CDC(Change Data Capture)是一种用于捕获数据库变更的技术
Flink CDC(Change Data Capture)是一种用于捕获数据库变更的技术
38 8
|
2月前
|
SQL 安全 数据管理
在阿里云数据管理DMS(Data Management Service)中,您可以按照以下步骤来创建和管理数据库
【2月更文挑战第33天】在阿里云数据管理DMS(Data Management Service)中,您可以按照以下步骤来创建和管理数据库
51 7
|
10天前
|
监控 关系型数据库 MySQL
初体验:数据库监控、管理和可观测性工具(PMM)
Percona Monitoring and Management (PMM) 是一个开源工具,用于监控MySQL、PostgreSQL和MongoDB的性能。它提供实时监控、数据可视化、故障排除和管理功能,支持本地和云端数据库。要安装PMM,首先需安装Docker,然后通过提供的脚本部署PMM服务器和客户端。在MySQL服务器上创建PMM用户后,使用`pmm-admin`命令添加数据库。访问PMM的HTTPS网址(默认用户名和密码为admin)进行配置。本文还包含了安装Docker和PMM的命令行步骤。
初体验:数据库监控、管理和可观测性工具(PMM)
|
4月前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(一)
MySQL | 数据库的管理和操作【表的增删改查】
|
4月前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(二)
MySQL | 数据库的管理和操作【表的增删改查】(二)