Flyway
- 易于配置——你只需要指定一个文件夹位置,并遵循命名语法,如 V1__file.sql 等等。
- 基于 SQL,但你需要编写符合特定数据库引擎(如 MySQL、DB2 等)的正确语法。
- 基于 Java,因此添加自定义配置(如清理、执行等操作的配置)会更加容易。
Liquibase
- 需要一个主文件“changelog(变更日志)”来跟踪所有已执行的变更集。
- 基于 XML,所以你需要使用特定的 Liquibase 标签来创建 SQL 代码。这对于将代码迁移到不同的数据库引擎来说非常完美:你无需做任何更改,仅需数据库驱动程序告知 Liquibase 如何将 XML 标签转换为正确的 SQL 语法即可。
- 如果你使用 Liquibase 的 sql 标签,那么你将无法利用上述第二点的优势,在这种情况下,使用 Flyway 会更好。
- Liquibase 提供了一个 JAR 文件,可以自动将现有数据库迁移为所有需要的 XML 文件,因此你无需手动处理这些文件,这非常有用。
现在,就需要你根据项目需求来决定使用哪个工具了,比如你是否需要在未来迁移到不同的数据库引擎等等。
梳理总结:
- Flyway:配置简单,基于 SQL 但依赖特定数据库语法,基于 Java 便于自定义配置。
- Liquibase:依赖“changelog”文件跟踪变更,基于 XML 可方便跨数据库引擎迁移(不使用 sql 标签时),有自动将现有数据库转换为 XML 文件的工具,功能较为丰富。选择时需考虑项目未来是否有数据库引擎迁移需求等因素。
评论