據(jù)庫變更管理的核心文件與啟動方式)
Liquibase 快速入門指南一篇文章看懂數(shù)據(jù)庫變更管理的核心文件與啟動方式【免費下載鏈接】liquibaseMain Liquibase Source項目地址: https://gitcode.com/GitHub_Trending/li/liquibaseLiquibase 是一款專注于數(shù)據(jù)庫變更管理的開源工具它的使命很樸素讓數(shù)據(jù)庫結(jié)構(gòu)的每一次改動都像代碼一樣可以被記錄、被審查、被回滾。如果你經(jīng)歷過這個表到底是誰加的字段測試庫和線上庫結(jié)構(gòu)怎么又對不上了這類讓人頭大的時刻這篇文章就是為你準備的。我會從它解決的問題講起帶你認識倉庫里的關(guān)鍵文件、啟動方式和配置要點讓新手也能快速上手。Liquibase 到底在解決什么問題用一句話概括Liquibase 相當于數(shù)據(jù)庫的版本管理工具。想想你平時怎么管理代碼——提交、對比、回滾、協(xié)作Liquibase 把這一整套思路搬到了數(shù)據(jù)庫上把每一次結(jié)構(gòu)變更寫成一條條變更集changeSet誰改的、改了什么、什么時候改的一清二楚自動為所有變更腳本排序在目標數(shù)據(jù)庫上按正確順序執(zhí)行不用自己操心依賴關(guān)系需要反悔時一條命令就能回滾之前的改動可以無縫融入 Maven、Gradle、Spring Boot 以及各種 CI/CD 流程成為團隊協(xié)作的一部分想了解它是怎么做到的最直接的辦法就是打開它的源碼倉庫從頭構(gòu)建一次。從克隆到構(gòu)建用 mvnw 兩步跑起來很多人拿到新項目的第一反應是先裝個 Maven其實完全沒必要。倉庫里帶了兩個特殊的啟動腳本mvnwLinux/macOS 用和mvnw.cmdWindows 用。它們叫Maven Wrapper會自動下載項目指定版本的 Maven 并執(zhí)行命令省去了手動安裝和版本不匹配的煩惱。克隆并構(gòu)建項目git clone https://gitcode.com/GitHub_Trending/li/liquibase cd liquibase ./mvnw compileWindows 用戶把最后一步換成mvnw.cmd compile即可。構(gòu)建成功后你就擁有了一個完整的 Liquibase 社區(qū)版源碼環(huán)境。整個工程由多個模塊組成命令行、核心庫、Maven 插件等而mvnw會按根pom.xml的定義把它們組織起來這也是接下來要說的重點。三份關(guān)鍵文件看懂 Liquibase 的運行邏輯pom.xml項目的中樞神經(jīng)根目錄的pom.xml是 Maven 項目對象模型文件定義了整個工程的依賴、插件和構(gòu)建方式。比如它要求使用 Java 17 和 Maven 3.6 以上版本并把liquibase-standard、liquibase-cli、liquibase-maven-plugin等子模塊串聯(lián)成一個整體。想了解項目用什么語言、依賴了哪些庫、如何打包發(fā)布答案幾乎都在這里。liquibase.properties數(shù)據(jù)庫連接信息都在這里真正運行 Liquibase 時你會頻繁和它打交道。這是一份典型的配置示例changeLogFiledb.changelog-master.xml urljdbc:postgresql://postgres:5432/liquibase_demo usernameliquibase passwordliquibase_password driverorg.postgresql.Driver searchPath/liquibase/changelog字段非常直白url是數(shù)據(jù)庫連接串username和password是賬號密碼changeLogFile指向變更日志入口文件searchPath告訴它去哪里找變更文件。新手照著改前幾項就能連上自己的數(shù)據(jù)庫。changelog 目錄數(shù)據(jù)庫變更的劇本變更日志是 Liquibase 的核心概念。倉庫的示例里一個db.changelog-master.xml作為總?cè)肟谟胕nclude把多個變更文件串起來databaseChangeLog ... include file001-create-users-table.xml relativeToChangelogFiletrue/ include file002-insert-sample-data.xml relativeToChangelogFiletrue/ /databaseChangeLog而每一個變更文件里是一條條帶id和author的 changeSet。比如創(chuàng)建用戶表的變更集長這樣changeSet id1 authordocker-compose-example createTable tableNameusers column nameid typeSERIAL autoIncrementtrue constraints primaryKeytrue nullablefalse/ /column column nameusername typeVARCHAR(50) constraints nullablefalse uniquetrue/ /column /createTable /changeSet 理解這個結(jié)構(gòu)就夠了主文件負責編排變更文件負責描述每一步要做什么。Liquibase 會記住哪些變更集已經(jīng)執(zhí)行過下次只執(zhí)行新增的部分。倉庫全景源碼、示例與自動化流水線除了上面三份關(guān)鍵文件倉庫里還有很多值得新手認識的角落liquibase-standard、liquibase-core核心邏輯所在Java 源碼都放在各模塊的src/main/java下liquibase-cli命令行入口日常用liquibase update之類的命令就靠它liquibase-maven-plugin讓 Maven 構(gòu)建和數(shù)據(jù)庫遷移合二為一docker/examples現(xiàn)成的示例比如docker-compose目錄里配好了一個 PostgreSQL 加 Liquibase 的完整演示環(huán)境.github/workflows項目的 CI/CD 流水線負責自動化測試和發(fā)布scripts一些輔助腳本如 Docker 鏡像矩陣生成腳本README.md、LICENSE.txt、.gitignore說明文檔、許可證和 Git 忽略規(guī)則開項目前先掃一眼總沒錯項目的持續(xù)集成相當規(guī)范每次代碼合并后會自動跑測試還會通過 dry-run 流程模擬發(fā)布再把手里的制品分發(fā)到不同的存儲渠道。下圖就是發(fā)布流程中 dry-run 的可視化界面可以看到整個流程被拆成了清晰的步驟構(gòu)建出來的安裝包、鏡像和 jar 包最終會發(fā)布到各類制品倉庫。例如把.deb、.rpm等格式的安裝文件放到對象存儲桶里供用戶下載對普通使用者來說這些流水線不用深究但它們恰好說明了 Liquibase 生態(tài)的成熟度——每個改動都經(jīng)過自動化驗證才敢放心發(fā)布給全球用戶。給新手的三個避坑提醒別手動改數(shù)據(jù)庫里的DATABASECHANGELOG表。這張表記錄著哪些變更集執(zhí)行過動它會導致 Liquibase 認為變更沒執(zhí)行引發(fā)重復執(zhí)行或校驗失敗。已經(jīng)執(zhí)行過的 changeSet 不要改內(nèi)容。Liquibase 會給每個變更集生成 checksum 校驗值內(nèi)容變了會對不上直接報錯。正確的做法是新增一個 changeSet 來描述新的改動。先預覽再執(zhí)行。正式執(zhí)行前先用updateSql查看將要生成的 SQL確認無誤后再執(zhí)行update。別在生產(chǎn)庫上直接試錯。??下一步可以做什么如果你已經(jīng)把這篇讀到這里說明你離上手只差一步了。建議先去docker/examples/docker-compose目錄跑一遍示例親手改幾個 changelog 文件、執(zhí)行幾次update和rollback很快就能體會到數(shù)據(jù)庫變更也能版本化的爽快感。等熟悉了這套流程再回頭研究源碼里更高級的特性比如上下文contexts、標簽labels和自定義前置條件你的數(shù)據(jù)庫變更管理工作就會越來越順手。【免費下載鏈接】liquibaseMain Liquibase Source項目地址: https://gitcode.com/GitHub_Trending/li/liquibase創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考