沒有DBA的敏捷開發管理

前言

??????一家人除了我都去旅游了,我這項請假,請不動啊。既然在家了,閑著也是閑著,就復盤下最近的工作,今天就復盤表結構管理吧,隨系統啟動的,不是flyway,而是另一個liquibase,個人覺得它比fly更優秀。
現在當家了,才知道當小弟的快樂,現在比當核心的時候更累了,不過這也正常。但是實際上米并沒有拿多,這該死的年齡,懷戀啊我們的青春啊。回想這一路走來,因為性格問題,被壓制太久了,其實有些時候并不是你能力不夠,而是上面不愿意讓你發展…


一、Liquibase?

1.Liquibase是什么

  • Liquibase 是一個開源的數據庫版本控制工具,主要用于自動管理數據庫結構(Schema)變更,確保數據庫在不同環境(開發、測試、生產)中的結構一致性。
  • Liquibase 是數據庫的 Git。就像你用 Git 來管理代碼版本一樣,Liquibase 用來管理數據庫結構的變更記錄。

2.它能做什么

  • 自動執行數據庫遷移腳本(建表、加字段、加索引等)

  • 將變更記錄存入數據庫,確保不重復執行

  • 支持回滾數據庫操作

  • 適用于 CI/CD 自動部署流程

  • 多種格式支持:XML、YAML、JSON、SQL

3.基本原理

  • 每次你要對數據庫做結構修改,就寫一個“changelog”文件(變更日志)。

  • Liquibase 執行后會在數據庫中建一個表叫 DATABASECHANGELOG,記錄每次執行過的變更。

  • 之后每次運行時,Liquibase 會比對哪些變更沒有執行過,只執行新的部分。

4.它適合什么場景

  • 使用微服務、多個環境(本地、測試、線上)的團隊

  • 不希望 DBA 手工發 SQL 的項目

  • 想把數據庫腳本版本控制起來的工程化團隊

5.它與 Flyway 有什么區別?

??????Liquibase 和 Flyway 是兩大主流的 數據庫遷移工具,它們都能自動執行數據庫變更,但各有特點。下面是它們之間的核心區別對比:

功能LiquibaseFlyway
支持多種格式YAML / XML / JSON / SQL僅支持 SQL 和 Java
可聲明式(非純 SQL)否(主要是 SQL)
腳本命名規則靈活changelog-xxx.yaml必須 V1__init.sql
順序控制方式id 字段控制順序文件名控制順序
支持數據庫種類更廣泛(幾十種)主流數據庫為主
數據庫記錄執行歷史|DATABASECHANGELOG 表|flyway_schema_history 表|
支持回滾原生支持手動寫 rollback 腳本
自動執行遷移
Spring Boot 默認集成工具非默認默認集成

結論匯總:

  • Liquibase 更靈活,支持聲明式寫法,不用寫原生 SQL。Flyway 更適合 DBA 寫 SQL。
  • Flyway 嚴格依賴文件名排序執行腳本,而 Liquibase 通過 id + author 明確指定每條變更。
  • 兩者都支持 MySQL、PostgreSQL、Oracle、SQL Server 等主流數據庫。
  • Liquibase 原生支持 rollback,而 Flyway 不支持自動回滾,需人工寫反向腳本。
  • Spring Boot 默認集成 Flyway(spring-boot-starter-data-jpa 會自動檢測 Flyway 腳本),Liquibase 需要顯式加依賴。

二、使用步驟

1.引入庫

<dependency><groupId>org.liquibase</groupId><artifactId>liquibase-core</artifactId>
</dependency>

2.建目錄

??????一般是在resources下建db目錄,下面方master.xml,建mysql目錄。當然也可以在resources下建其他名稱的目錄,在xml文件里指定的目錄對得上就行。
master.xml

<databaseChangeLogxmlns="http://www.liquibase.org/xml/ns/dbchangelog"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangeloghttp://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"><!-- <include file="db/mysql/changelog.sql" relativeToChangelogFile="false"/>--><includeAll path="db/mysql"/></databaseChangeLog>

mysql是用來存sql的
這里在mysql目錄下就建一個文件changelog.sql,我是不太愿意一個人建一個文件的,都在一個文件里寫好提交的id注釋就行了。

--liquibase formatted sql-- changeset zw:202506291113
ALTER TABLE enterprise_matters CHANGE is_topic is_topic int(11) NULL COMMENT '是否主題,0否,1是' AFTER applicable_region;
-- comment:修改字段排序

??????一直在這個文件下以-- changeset zw:提交id,-- comment:注釋 結尾就行。
注意,若果是在原始語句上修改,注意提交的id要往后變,當然一般情況是不支持這樣搞的,還是建議再次寫一個語句


總結

  • 就是這么簡單,sql就管理起來了,個人覺得特別適合敏捷開發
  • 領頭、領銜確實難點,需要考慮的事情多,最最重要的的是還要技術支撐,不然頂不住啊
    就寫到這里,加油,uping!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88149.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88149.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88149.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

go-carbon v2.6.10發布,輕量級、語義化、對開發者友好的 golang 時間處理庫

carbon 是一個輕量級、語義化、對開發者友好的 Golang 時間處理庫&#xff0c;提供了對時間穿越、時間差值、時間極值、時間判斷、星座、星座、農歷、儒略日 / 簡化儒略日、波斯歷 / 伊朗歷的支持。 carbon 目前已捐贈給 dromara 開源組織&#xff0c;已被 awesome-go 收錄&am…

【AI News | 20250708】每日AI進展

AI Repos 1、claude-code-templates Claude Code Templates是一款全面的命令行工具&#xff0c;旨在為不同編程語言和框架&#xff08;如JavaScript/TypeScript、Python等&#xff0c;Go和Rust即將推出&#xff09;提供優化的Claude Code配置。它通過交互式設置、自動化鉤子&a…

Nginx源碼安裝+靜態站點部署指南(CentOS 7)

安裝包&#xff1a;可自行前往我的飛書下載 Docs 也可以進入 nginx 官網&#xff0c;下載自己所需適應版本 nginx 開始安裝nginx 1. 創建準備目錄 cd /opt mkdir soft module # 創建軟件包和源碼解壓目錄 2. 安裝依賴環境 yum -y install make zlib zlib-devel gcc-c l…

交換機的核心原理和作用

一、交換機的核心原理交換機是一種用于連接多臺設備的網絡硬件&#xff0c;其核心原理基于二層網絡&#xff08;數據鏈路層&#xff09;的 MAC 地址尋址1. MAC 地址學習與存儲當交換機接收到數據幀時&#xff0c;會讀取幀中的源 MAC 地址&#xff0c;并將該地址與對應的端口號記…

【工具變量】上市公司企業金融強監管數據、資管新規數據(2001-2024年)

數據簡介&#xff1a;參考頂刊《經濟研究》李青原&#xff08;2022&#xff09;老師的做法&#xff0c;Post 為時間虛擬變量&#xff0c;根據資管新規實施的時間&#xff0c;當觀測期為2018 年上半年及之后時&#xff0c;Post 取值1&#xff0c;否則取值0。PreFin 為資管新規實…

CSS Grid與Flexbox布局實戰對比

概述 CSS布局技術在過去幾年經歷了重大變革&#xff0c;從傳統的基于浮動和定位的方法&#xff0c;到現在強大的Flexbox和Grid布局系統。這兩種現代布局方法極大地簡化了復雜界面的開發過程&#xff0c;但它們各自適用于不同的場景。本文將對Flexbox和Grid進行深入比較&#x…

[Pytest][Part 4]多種測試運行方式

實現需求2&#xff1a;有兩種運行測試的方式&#xff1a;通過config配置文件運行&#xff0c;測試只需要修改config配置文件cmdline 運行這里是新建一個config類來存儲所有的測試配置&#xff0c;以后配置有修改的話也只需要修改這個類。根據目前的測試需求&#xff0c;config中…

平衡二叉樹的刪除操作

對于平衡二叉樹的操作應對與考試只需要模擬出過程即可&#xff0c;且他的過程和插入的平衡方法一樣&#xff0c;不一樣的只是對于平衡因子的計算上。接下來我將給出方法①刪除結點&#xff08;方法同“二叉排序樹”&#xff09; ②一路向北找到最小不平衡子樹&#xff0c;找不到…

Spark 4.0的 VariantType 類型優點以及使用分析

背景 本文基于Spark 4.0。 總結 對于半結構化的數據來說&#xff0c;我們一般會有兩種方式進行存儲: 第一種是存儲為JSON String,這種可以保證Schema free&#xff0c;但是在使用的時候得解析為JSON&#xff0c;從而進行運算操作。 第二種是存儲為Struct類型&#xff0c;這種雖…

17-C#封裝,繼承,多態與重載

C#封裝繼承多態 1. 2. 3.多態 public abstract class animal//抽象類 {public abstract void eat();//抽象方法 } public class cat : animal//繼承 {public override void eat()//重寫{messagebox.show("cat eat");} } public class dog: animal//繼承 {public over…

恒創科技:香港站群服務器做seo站群優化效果如何

香港站群服務器做 SEO 站群優化效果如何?在當前搜索引擎優化競爭日益激烈的環境下&#xff0c;越來越多的企業開始關注站群策略這一高效的 SEO 手段。作為亞洲重要的網絡樞紐&#xff0c;香港站群服務器因其獨特優勢&#xff0c;正成為實施 SEO 站群優化的熱門選擇。本文將客觀…

Linux-進程管理

Linux-進程管理Linux 進程管理1. 進程的含義2. 進程狀態3. 進程工作模式4. 守護進程5. 進程查看命令5.1 ps 命令5.2 top 命令5.3 pstree 命令6. 終止進程的 kill 命令7. 前后臺運行8. 暫停進程9. 進程文件系統 /proc10. 定時任務管理10.1 at 命令10.2 batch 命令10.3 cron 與 c…

OpenCV圖像增強秘籍:高通濾波與特效藝術

> 在數字圖像處理領域,邊緣是圖像最富信息的區域。掌握高通濾波技術,你就能讓圖像中的隱藏細節"躍然紙上",甚至創造驚艷的藝術效果。 ## 一、圖像增強與高通濾波基礎 ### 1.1 圖像增強的核心目標 圖像增強不是簡單的美化,而是通過技術手段**突出重要特征*…

347. 前K個高頻元素

題目&#xff1a; 給你一個整數數組 nums 和一個整數 k &#xff0c;請你返回其中出現頻率前 k 高的元素。你可以按 任意順序 返回答案。 示例&#xff1a; 輸入: nums [1,1,1,2,2,3], k 2 輸出: [1,2] 解題思路&#xff1a; 要返回出現頻率前k高的元素&#xff0c;那么我們首…

C++面試沖刺筆記1:虛函數的基本工作原理

C面試沖刺筆記1&#xff1a;虛函數的基本工作原理 前言 ? 筆者最近開始投簡歷&#xff0c;出于應對之后快速的面試流程需求&#xff0c;這里準備的是將常見的C八股文進行總結&#xff0c;從而方便自己進行學習&#xff0c;檢查和評估。 什么是虛函數 ? 虛函數&#xff0c;本質…

Spring Boot 事務失效問題詳解:原因、場景與解決方案

在 Spring Boot 開發中&#xff0c;事務管理是保證數據一致性和完整性的核心機制。然而&#xff0c;許多開發者在使用 Transactional 注解時&#xff0c;可能會遇到事務失效的問題&#xff0c;導致數據異常或業務邏輯錯誤。本文將深入分析 Spring Boot 中事務失效的常見原因&am…

Python-文件操作-StringIO和BytesIO-路徑操作-shutil模塊-csv,ini序列化和反序列化-argparse使用-學習筆記

序 欠4年前的一份學習筆記&#xff0c;獻給今后的自己。 文件操作 馮諾依曼體系架構CPU由運算器和控制器組成 運算器&#xff0c;完成各種算數運算、邏輯運算、數據傳輸等數據加工處理 。 控制器&#xff0c;控制程序的執行 存儲器&#xff0c;用于記憶程序和數據&#xff0c;例…

LLM的表征做減法的是什么,自然語言是一個矩陣,怎么進行減法的

LLM的表征做減法的是什么,自然語言是一個矩陣,怎么進行減法的 有個假設:就是最后一個詞語融合了前面詞語的信息 減法操作主要用于提取模型內部表征中的"誠實性"概念向量。具體來說,這是通過對比誠實和不誠實場景下的模型隱藏狀態實現的。 import torch from t…

Java創建型模式---單例模式

單例模式基礎概念單例模式是一種創建型設計模式&#xff0c;其核心思想是確保一個類僅有一個實例&#xff0c;并提供一個全局訪問點來獲取這個實例。在 Java 中實現單例模式主要有以下關鍵點&#xff1a;私有構造函數 - 防止外部通過new關鍵字創建實例靜態實例變量 - 類內部持有…

詳解Kafka重平衡機制詳解

Kafka 的重平衡機制&#xff08;Rebalance&#xff09;是確保消費者組內成員動態變化&#xff08;如新成員加入、現有成員退出或崩潰、訂閱主題分區數變化&#xff09;時&#xff0c;分區所有權能合理、公平地重新分配的核心機制。其目標是保證所有分區都有消費者處理&#xff…