什么是liquibase
liquibase是一個(gè)數(shù)據(jù)庫(kù)變更的版本控制工具。項(xiàng)目中通過(guò)liquibase解析用戶(hù)編寫(xiě)的liquibase的配置文件,生成sql語(yǔ)句,并執(zhí)行和記錄。執(zhí)行是根據(jù)記錄確定sql語(yǔ)句是否曾經(jīng)執(zhí)行過(guò),和配置文件里的預(yù)判斷語(yǔ)句確定sql是否執(zhí)行。
liquibase開(kāi)源版使用Apache 2.0協(xié)議。
liquibase的優(yōu)點(diǎn)
1、配置文件支持SQL、XML、JSON 或者 YAML
2、版本控制按序執(zhí)行
3、可以用上下文控制sql在何時(shí)何地如何執(zhí)行。
4、支持schmea的變更
5、根據(jù)配置文件自動(dòng)生成sql語(yǔ)句用于預(yù)覽
6、可重復(fù)執(zhí)行遷移
7、可插件拓展
8、可回滾
9、可兼容14中主流數(shù)據(jù)庫(kù)如oracle,mysql,pg等,支持平滑遷移
10、支持schema方式的多租戶(hù)(multi-tenant)
liquibase的基本概念
1、changeSet 執(zhí)行sql的并記錄、版本控制的最小單元。即每條changeSet生成1條執(zhí)行記錄,版本控制是基于執(zhí)行記錄的。
2、changelog 即執(zhí)行記錄。由changeSet執(zhí)行后產(chǎn)生的記錄。記錄默認(rèn)保存在databasechangelog表中,此表由liquibase自動(dòng)生成。包含id,author,filename,dateexcuted,orderexcuted,exectype,md5sum等字段。
3、databasechangeloglock。liquibase的鎖表。liquibase在執(zhí)行前更新此表的locked為true,執(zhí)行完liquibase的工作,將locked更新為false,適合集群使用。