日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

數據庫更改是開發過程中一個棘手的部分。我們能否像對待代碼一樣對待數據庫,將其作為 CI/CD 周期的一部分?

數據庫更改是應用程序開發過程中一個棘手的部分:它通常涉及來自不同環境的多個數據庫和跨團隊協作,此外,數據庫是一觸即發的。它讓我們思考:我們可以像對待應用程序代碼一樣對待數據庫嗎?

DORA(DevOps Research & Assessment)指出,將數據庫工作整合到軟件交付過程中,對持續交付有積極的貢獻。是時候讓數據庫成為 CI/CD 周期的一部分了。

但它是如何工作的?

數據庫 CI/CD 的關鍵要素

要回答“如何”,我們首先需要梳理一下典型的數據庫變更工作流程。在 SQL 語句可以安全地應用于數據庫之前,有兩個關鍵步驟:review & change

1. SQL 審查

此步驟是為了確保更改:

 

  1. 準確實現業務邏輯;
  2. 遵循數據庫設計最佳實踐;

 

在這里,開發人員通常負責前者的任務,而 DBA 則負責后者。DevOps 理念旨在通過集成 Ops 和 Devs 來解決這個問題。現實情況是,當組織中存在 DBA 時,很難將兩個團隊直接合并。一種可能的解決方案是保留 DBA 的任務,同時讓開發團隊能夠預審 SQL。這種左移方法可以顯著減少發布延遲的機會。此外,如果組織中沒有 DBA,那么賦予開發團隊以確保 SQL 不會對數據庫造成嚴重破壞的能力就更加重要。

2、SQL變更執行

此步驟是為了確保:

 

  • 語句正確執行。我們不希望出現錯誤的數據庫連接、權限不足、對象名稱沖突或基本語法錯誤。
  • 所有計劃的語句都被執行。當要執行的腳本很多或者有多個目標數據庫要批量執行時,可能會出現遺漏。
  • 變更執行過程不應影響業務。硬件資源耗盡和長時間鎖定表對公司來說并不愉快。

 

為了避免與變更相關的錯誤,減少手動方面也很重要:自動化的事情越多,發生錯誤的機會就越少。預配置管道以自動將 SQL 應用于數據庫?聽起來不錯。為避免對常規業務運營產生負面影響,應采用各種零停機更改技術,尤其是對于具有大型數據集的數據庫。

因此,實施數據庫 CI/CD 的關鍵要素應該使開發團隊能夠執行 SQL 審查簡化 SQL 更改推出

使用 VCS 集成進行 SQL 審查和變更部署

讓我們首先探討如何讓開發團隊自己執行 SQL 審查。

很少有開發人員是審查 SQL 語句“架構正確性”的專家,即使對于高級 DBA,手動檢查也可能非常低效且容易出錯。幸運的是,業界通過集成不同的 SQL 檢查規范創建了各種自動審查工具。

然而,這些工具有一個共同的問題——它們都是為 DBA 設計的。一方面,這些工具往往需要更高的數據庫操作權限,因此不適合開發人員直接使用。另一方面,開發人員擁有自己的 IDE,而單獨的外部仲裁器是他們最不需要的東西。想象一下,當您必須在多個工具之間復制和粘貼代碼時會有多糟糕。

那么開發人員友好的 SQL 審查工具應該是什么樣的呢?

我們通常在版本控制系統 (VCS) 上執行傳統的代碼審查流程,SQL 也應如此。因此,應該將 SQL 審查工具集成到代碼審查工作流程中。啟用后,當您在 GitHub 上提交 PR 時,將觸發GitHub Marketplace 上可用的 SQL Review Action 。


 

讓我們看看如何實現簡化的 SQL 更改推出。

獨立的 SQL 部署工具并不少見。這些工具通常手動上傳 SQL 腳本,通過審批流程繼續部署,然后在部署完成后提供反饋。該模型準確地描述了開發人員和 DBA 如何獨立工作,而分散的流程是延遲發布的最常見原因之一。畢竟,當您在多個系統之間不斷手動移動 SQL 腳本時,誰能保證永遠不會出錯?

我們需要一個更高效和自動化的發布流程。讓我們回顧一下應用程序代碼的經典 CI/CD 工作流程:提交更改 > 代碼審查 > 合并分支 > 自動構建 > 自動部署。既然我們已經在 GitHub Actions 上實現了 SQL 審查,為什么不能包括后續的推出流程呢?

嗯,是的,我們可以!

用于數據庫 CI/CD 的 SQL 更改推出工具應該能夠與 VCS 集成。一旦您的 SQL 腳本經過審查并合并到目標分支中,就會觸發發布過程,并且腳本會自動推送到 Bytebase。當然,DBA 可以在針對目標數據庫執行 SQL 之前執行另一次完整性檢查。


 


 

完整的數據庫 CI/CD 工作流程

在這里,我們展示了一個完整的數據庫 CI/CD 工作流程


 

 

  1. 開發者創建一個包含 SQL 遷移腳本的 Merge Request / Pull Request;
  2. 自動觸發 SQL Review Action 來審查 SQL 并提供建議以協助代碼審查;
  3. 經過幾次可能的迭代后,開發團隊中的團隊領導或其他同事批準更改并將 SQL 腳本合并到一個分支中;
  4. 合并事件自動觸發 Bytebase 中的發布管道,并創建捕獲預期更改的發布票;
  5. (可選)DBA 或指定的審閱者可以通過 Bytebase 的內置 UI 審閱更改腳本;
  6. 批準的腳本會根據配置的上線階段逐步執行;
  7. 應用更改后,最新的數據庫模式會自動寫回代碼存儲庫。這樣一來,開發團隊始終擁有最新架構的副本。此外,他們可以根據最新模式的變化配置下游管道;
  8. 確認遷移并繼續進行相應的應用程序推出。

 

此工作流程非常適合現有的 CI/CD 流程,并且對開發人員來說很自然。敏銳的讀者可能已經發現所描述的步驟是具有里程碑意義的文章Evolutionary Database Design的實現。

分享到:
標簽:GitHub
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定