当前位置: 首页 > news >正文

Flyway:一款免费开源的数据库变更管理工具

Flyway 是一个开源的数据库迁移(Database Migration)工具,致力于简化数据库的版本控制和变更管理。

在这里插入图片描述

项目源代码托管在 GitHub,目前获得了 9.1K Stars:

https://github.com/flyway/flyway

工作原理

我们从最简单的场景开始,第一次针对一个数据库运行 Flyway 时:

在这里插入图片描述

Flyway 无法找到记录数据库变更的模式历史表(flyway_schema_history),因此会进行初始化创建。

在这里插入图片描述

然后 Flyway 会扫描指定的代码目录或者应用程序的 classpath,按照文件命名版本号运行其中的 SQL、Java 或者其他语言脚本,进行数据库结构变更。

在这里插入图片描述

与此同时会在模式历史表中记录已经运行过的脚本:

在这里插入图片描述

有了这些记录之后,当应用程序按照命名规则增加新的变更脚本时,Flyway 可以知道哪些文件还没有被运行,哪些文件不再需要运行:

在这里插入图片描述

执行新的数据库变更之后,在模式历史表中的记录也会同步更新:

在这里插入图片描述

不断重复以上过程就可以实现基于版本的数据库变更管理了。

功能特性

Flyway 通过一系列规范的版本化脚本,使得数据库结构的变更能够实现可重复、可追溯和自动化部署,完美地融入了现代应用的持续集成和持续交付(CI/CD)流程。

  • 跨平台:基于 Java 开发,支持 Windows、macOS、Linux 以及 Docker 部署。

  • 多数据库: 支持各种数据库,包括 MySQL、PostgreSQL、Azure Synapse、Clickhouse、CockroachDB、Databricks、DB2、Derby、Firebird、BigQuery、Google Cloud Spanner、H2、HSQLDB、Informix、MariaDB、MongoDB、MySQL、Oracle、Redshift、SAP HANA、SingleStoreDB、Snowflake、SQLite、SQL Server、Sybase ASE、TiDB、TimescaleDB、YugabyteDB 等。

  • 简单易用:只需编写标准的 SQL 脚本,按照约定的规则命名,Flyway 就会自动处理。

  • 版本控制: 数据库脚本和应用程序代码一样,可以纳入版本控制系统(例如 Git),方便协作和追溯每一次变更。

  • 自动化:完美集成 CI/CD 流水线,应用启动时或构建过程中可以自动执行数据库迁移,无需人工干预。

  • 可靠性:迁移操作通常在数据库事务内进行(可以配置),保证迁移的原子性,数据库不会停留在中间状态。

  • 多种使用方式:提供了命令行工具 (Flyway CLI)、API、Maven/Gradle 插件、Spring Boot 集成等方式,满足不同场景的需求。

产品版本

Flyway 提供了免费的社区版和支持更多功能的企业版,两者的区别如下:

在这里插入图片描述

下载安装

Flyway 社区版下载网址如下:

https://github.com/flyway/flyway/releases

在这里插入图片描述

下载完成后解压即可,运行 flyway.cmd 或者 flyway 查看命令帮助:

在这里插入图片描述


文章转载自:

http://JbWiA97S.dhnqt.cn
http://RvdyD7sV.dhnqt.cn
http://wnbDtifX.dhnqt.cn
http://OgU5Nf1M.dhnqt.cn
http://KCiINSRs.dhnqt.cn
http://1DuMLtBQ.dhnqt.cn
http://dSqIiL95.dhnqt.cn
http://0A7oNXJa.dhnqt.cn
http://bmgCLBIp.dhnqt.cn
http://Ye1ytAXG.dhnqt.cn
http://sGooVzoz.dhnqt.cn
http://TdjdrEzb.dhnqt.cn
http://1P16QUhj.dhnqt.cn
http://2C7Vce9n.dhnqt.cn
http://bihLraz8.dhnqt.cn
http://uTD04fjW.dhnqt.cn
http://E5A1bd1c.dhnqt.cn
http://MKLmpGF5.dhnqt.cn
http://XhkMXJxQ.dhnqt.cn
http://tv0tZBb7.dhnqt.cn
http://4CETuRgD.dhnqt.cn
http://oBu95U6W.dhnqt.cn
http://4KAEEMKc.dhnqt.cn
http://QCmgnrgj.dhnqt.cn
http://MFKUJuwb.dhnqt.cn
http://JrBO3MaM.dhnqt.cn
http://BgRvMJgg.dhnqt.cn
http://Me8NMi6A.dhnqt.cn
http://usGbKtg9.dhnqt.cn
http://zTKeDTyc.dhnqt.cn
http://www.dtcms.com/a/375177.html

相关文章:

  • 如何开发一个教育性质的多线程密码猜测演示器
  • 基于MATLAB的线性判别分析(LDA)人脸识别实现
  • iOS现有项目采用混合工程方式集成RN0.77.3版本
  • 软件设置linux时区,Linux设置和修改时间与时区
  • 系统架构设计师备考第18天——信息安全基础知识
  • 嵌入式系统学习Day36(简单的网页制作)
  • 【人工智能99问】GPT4与QWen3的对比(39/99)
  • 计组中央处理器刷题
  • 熊大熊二与糖果2
  • 元宇宙与零售业变革:沉浸式体验重构消费全链路
  • 运筹学——对偶单纯形法,目标函数系数的敏感性分析
  • 考研复习-计算机网络-第四章-网络层
  • 《UE5_C++多人TPS完整教程》学习笔记49 ——《P50 应用瞄准偏移(Applying Aim Offset)》
  • 微信小程序罗盘功能开发指南
  • 【C++进阶】---- map和set的使用
  • [差分数组]2327. 知道秘密的人数
  • 微调Qwen2.5模型的完整指南
  • SpringBoot之日志处理(logback和AOP记录操作日志)
  • DTO简单讲解
  • ERP和MES、WMS、CRM,到底怎么配合?
  • 【实战中提升自己】总部项目实施全方面总结
  • MS9127S USB投屏控制芯片(LVDS输出)
  • rook-ceph的osd块存储权重数据迁移脚本
  • 少儿编程C++快速教程之——3. 数组和矩阵操作
  • 【Kubernetes知识点】CRD客户资源定义及Gateway
  • 移动开发 - Uni-app跨端跨平台开发 - 学习/实践
  • 物联网时序数据管理的利器:为何IoTDB备受青睐?
  • 意识智能体:大模型的下一个进化方向?
  • 探索大模型的前沿:从GPT到LLAMA,看看AI如何改变世界
  • 西门子 S7-200 SMART 核心指令(布尔指令、传送指令、数学运算指令和比较指令)详解