数据库变更管理

简介:

代码化、版本化的数据库变更管理, 是有效管理数据库的利器, 这样的工具一般称为 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. 一般有界面可视化管理. 对变更评审, 变更执行监控与审计,运行报表等运维流程的支持更好。
目录
相关文章
|
2天前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
16 9
|
21天前
|
安全 数据库 数据安全/隐私保护
数据库 变更和版本控制管理工具 --Bytebase 安装部署
数据库 变更和版本控制管理工具 --Bytebase 安装部署
34 0
|
6月前
|
安全 JavaScript Java
智慧图书管理|基于SprinBoot+vue的智慧图书管理系统(源码+数据库+文档)
智慧图书管理|基于SprinBoot+vue的智慧图书管理系统(源码+数据库+文档)
61 0
|
3月前
|
资源调度 关系型数据库 MySQL
【Flink on YARN + CDC 3.0】神操作!看完这篇教程,你也能成为数据流处理高手!从零开始,一步步教会你在Flink on YARN模式下如何配置Debezium CDC 3.0,让你的数据库变更数据瞬间飞起来!
【8月更文挑战第15天】随着Apache Flink的普及,企业广泛采用Flink on YARN部署流处理应用,高效利用集群资源。变更数据捕获(CDC)工具在现代数据栈中至关重要,能实时捕捉数据库变化并转发给下游系统处理。本文以Flink on YARN为例,介绍如何在Debezium CDC 3.0中配置MySQL连接器,实现数据流处理。首先确保YARN上已部署Flink集群,接着安装Debezium MySQL连接器并配置Kafka Connect。最后,创建Flink任务消费变更事件并提交任务到Flink集群。通过这些步骤,可以构建出从数据库变更到实时处理的无缝数据管道。
272 2
|
6月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之从Oracle数据库同步数据时,checkpoint恢复后无法捕获到任务暂停期间的变更日志,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
187 1
|
5月前
|
NoSQL Redis 数据库
docker-compose 自动管理 数据库
docker-compose 自动管理 数据库
129 3
|
4月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用问题之从MySQL数据库中捕获变更数据并进行实时处理如何按天分表同步CDC数据
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
存储 数据可视化 关系型数据库
【MySQL进阶之路 | 基础篇】创建和管理数据库
【MySQL进阶之路 | 基础篇】创建和管理数据库
|
6月前
|
JavaScript 小程序 Java
土家风景文化|基于SSM+vue的土家风景文化管理平台的设计与实现(源码+数据库+文档)
土家风景文化|基于SSM+vue的土家风景文化管理平台的设计与实现(源码+数据库+文档)
46 0