簡體   English   中英

如何實現PostgreSQL數據庫的schema遷移

[英]How to implement schema migration for PostgreSQL database

我需要為 PostgreSQL 實現模式遷移機制。 只是為了消除歧義:使用模式遷移,我的意思是我需要將我的數據庫結構升級到最新版本,而不管它們在特定服務器實例上的當前狀態如何。

例如,在版本一中我創建了一些表,然后在版本二中我重命名了一些列,在版本三中我刪除了一個表並創建了另一個表。 我有多個服務器,在其中一些服務器上我有一些版本三等的版本一。

我的點子:

  • 為產生的輸出生成哈希

pg_dump --schema-only

每次更改數據庫架構之前。 這將是一種可靠的方式來識別將來補丁應該應用到的數據庫版本。

  • 包含一個補丁列表,以及它們應該應用到的相關散列。
  • 當我需要升級我的數據庫時,我將運行一個應用程序,該應用程序將搜索與當前數據庫結構相對應的哈希(通過計算本地數據庫的哈希並將其與我擁有的哈希集進行比較)並應用相關的補丁。
  • 重復直到找不到下一個哈希。

你能指出這種方法的任何弱點嗎?

你聽說過https://pgmodeler.io嗎? 在我工作的公司,我們決定這樣做,因為它甚至可以在本地和遠程之間執行模式差異。 我們對此非常滿意。

否則,如果您更喜歡免費解決方案,您可以開發一個遷移工具,該工具可用於應用您存儲在單個存儲庫中的遷移。 此外,此工具可以依賴於您保存在單獨架構中的migration表,以便您的數據庫始終知道應用了哪些遷移。

這種方法的美妙之處在於遷移既可以是架構更改,也可以是數據更改。

我希望這能給你一些想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM