2016-05-23 286 views
66

我需要为基于Spring Boot/Node.js的应用程序使用数据库迁移工具/框架。在探索了Liquibase和Flyway的功能之后,我对使用哪一个有点困惑。尽管回滚支持,数据库中立变更集等吸引我参与Liquibase,但另一方面,基于简单性(基于SQL),更好的过程和PL/SQL支持正在将我推向Flyway。Liquibase vs Flyway哪一个使用?

需要更多具体的数据点才能最终决定这一点。

+3

您已经创建了一个问题,只有您可以根据您的环境和项目计划进行回答。 Liquibase - 回滚支持,数据库中立变更集等,而Flyway - 简单(基于SQL),更好的过程和PL/SQL支持。 –

+0

罗杰你还有什么想法吗?像其中一个人提供的任何重要功能一样,但不是由其他人提供的? – Tanmoy

+0

它们是不同的工具,因此您需要将它们的功能映射到您在开发期间想要执行的操作。 cralfaro的答案扩大了差异列表,但是你没有列出你想用解决方案实现的目标,所以任何人都难以提供直接的答案。 –

回答

97

我已经使用了这两种工具,所以,鉴于这些是主要的区别。

迁飞

  1. 易于配置 - 你只需要一个文件夹位置,并保持一个名字 语法V1__file.sql,...
  2. 基于SQL的,但你需要编写权您的特定数据库引擎的语法(Mysql,DB2,...)
  3. 是否基于Java,因此添加自定义配置以清理,执行等操作更简单。

Liquibase

  1. 需要一个主文件 “更新日志” 让所有执行 变更的轨道。
  2. 是基于XML的,因此您需要使用特定的liquibase标记创建 SQL代码。这是将代码迁移到不同的 数据库引擎的最佳选择:您不需要更改任何内容,只需数据库驱动程序 就会告诉liquibase如何从XML标记转换为正确的SQL语法。
  3. 如果您使用liquibase中的sql标记,那么您将不会利用第2点,所以最好使用Flyway。
  4. Liquibase提供了一个jar来自动将现有的数据库迁移到所有需要的XML文件,因此您不需要手动对其进行操作。非常有用。现在

它是由你来决定你需要什么你的项目,你是否需要迁移到不同的数据库引擎的未来等

+7

更新版本的Liquibase支持简单的SQL元数据作为SQL注释 –

+2

我认为值得补充的是Liquibase可以为许多DDL更改生成自动回滚命令。 – Kafkaesque

+0

Flyway也支持基于Java的迁移请参阅https://flywaydb.org/getstarted/java –

24

我用Liquibase。对于企业级应用程序(您在不同的团队中进行协作),Liquibase非常适合您。我喜欢回滚功能。

对于小型应用,Flyway将因简单性而变得更好。

相关问题