Greenmask 0.2.0 - 0.2.5 版本發布

發布於 2024-12-12,作者:Greenmask.io
相關開源項目

PostgreSQL 資料庫匿名化和合成資料產生工具

這些版本標誌著重要的里程碑,顯著擴展了 Greenmask 的功能,並將其轉變為一個簡單、可擴展且可靠的資料庫安全性、資料匿名化和日常操作解決方案。我們的目標是建立一個核心系統,作為全面動態預備環境和強大的資料安全性的基礎。

這些更新引入了資料庫子集、pgzip 支援、拓撲順序還原和重構轉換器等新功能,極大地增強了 Greenmask 的靈活性,以滿足多樣化的業務需求。它們還包括許多修復和改進。

Greenmask 概述

Greenmask 是一個強大的開源工具,專為邏輯資料庫備份轉儲、匿名化、合成資料生成和還原而設計。它是無狀態的,不需要對資料庫結構描述進行任何更改。它被設計為高度可客製化,並且與現有的 PostgreSQL 工具向後相容,快速且可靠。

非常適合用於

  • 備份和還原:簡化每日任務,如邏輯備份、截斷後資料表還原,或輕鬆取代 pg_dump 和 pg_restore。
  • 匿名化和資料遮罩:透過匿名化和轉換備份,簡化預備環境設定和分析任務,確保一致、安全的資料,以實現更快的速度

Greenmask 在 GitHub

值得注意的變更

  • PostgreSQL 17 支援 - 修訂了移植庫以支援 PostgreSQL 17

  • 資料庫子集 - 一個新功能,允許您定義資料庫的子集,從而縮小轉儲大小 (#110)。這對於多用途來說非常可靠,尤其適用於測試和開發環境。它支援

    • 具有 NULL 值的參考 - 產生 LEFT JOIN 查詢,以使用 NULL 值的 FK 參考將它們包含在子集中。
    • 支援 虛擬參考(虛擬外鍵)- 在 Greenmask 中建立邏輯 FK,該邏輯 FK 將用於子集依賴關係圖。虛擬參考可以針對欄位或表達式定義,允許您從 JSON 和類似項目中獲取值。
    • 支援 循環參考 - Greenmask 將透過產生遞迴查詢來自動解決子集中的循環依賴性。 查詢的產生包含子集的完整性檢查,以確保從循環依賴性收集的資料一致。
    • 完整的文件涵蓋,包括 疑難排解範例
    • 支援具有多個欄位(或表達式)的 FK 和 PK。
    • 支援一個強連通元件 (SCC) 中的多個循環 - Greenmask 將為 SCC 產生一個遞迴查詢,無論它是一個單一循環還是多個循環,從而使子集系統對於任何資料庫結構描述都是通用的。
    • 支援多態關係 - 您可以使用 polymorphic_exprs 屬性為具有多態參考的資料表定義虛擬參考,並使用 greenmask 為此類資料表產生子集。
  • 轉換條件 - 僅在滿足指定條件時執行已定義的轉換。#133

  • 轉換繼承 - 分割資料表和具有外鍵的資料表的轉換繼承。定義一次並應用於所有。[#229]
  • pgzip 支援更快的壓縮解壓縮 — 設定 --pgzip 可以透過並行壓縮來加速轉儲和還原過程。在某些測試中,它顯示轉儲和還原操作速度最多可提高 5 倍。
  • 拓撲順序還原 - 此標誌可確保在它們所依賴的資料表還原之前,不會還原依賴的資料表。當您希望盡快收到錯誤通知,而無需等待整個資料表還原時,這非常有用。
  • Insert 格式還原 - 為了實現靈活的還原過程,Greenmask 現在支援以 INSERT 格式還原資料。它會根據轉儲中的 COPY 記錄產生 insert 語句。您無需重新轉儲資料即可使用此功能;它可以在 restore 命令中定義。與 INSERT 格式相關的新功能清單

    • 如果設定了標誌 --on-conflict-do-nothing,則產生具有 ON CONFLICT DO NOTHING 子句的 INSERT 語句。
    • 組態中的錯誤排除清單,用於跳過某些錯誤並繼續從轉儲中插入後續列。
    • 使用案例 - 邏輯資料的增量轉儲和還原。例如,如果您有一個資料庫,並且想要定期從另一個來源插入資料,則可以將其與資料庫子集和轉換結合使用來趕上目標資料庫。
  • 還原資料批次處理 (#173) - 預設情況下,COPY 協定僅在事務提交時傳回錯誤。要覆寫此行為,請使用 --batch-size 標誌來指定在 COPY 命令期間於單一批次中插入的列數。當您想要控制事務大小並提交時,這非常有用。

  • RandomPerson 轉換器引入了 keep_null 參數。

  • 在轉換器中引入了動態參數

    • 大多數轉換器現在支援適用的動態參數。
    • 動態參數會被嚴格執行。如果您需要將值轉換為另一種類型,Greenmask 提供了範本和預定義的轉換函數,可透過 cast_to 存取。 這些函數涵蓋了頻繁的操作,例如 UnixTimestampToDateIntToBool
  • 轉換邏輯已得到顯著重構,使轉換器比以前更具可客製化性和靈活性。
  • 引入了轉換引擎

    • random - 根據偽隨機演算法產生轉換器值。
    • hash - 使用雜湊函數產生轉換器值。目前,它使用 sha3 雜湊函數,這些函數很安全但執行速度較慢。在穩定版本中,將可以選擇 sha3SipHash
  • 引入了靜態參數值範本

  • 傾印檔保留管理 - 為 delete 指令引入保留參數 (#201)。 引入了兩個新狀態:failed(失敗)和 in progress(進行中)。 如果傾印檔缺少 "done"(完成)心跳信號,或者最後一個心跳信號時間戳記超過 30 分鐘,則該傾印檔將被視為失敗。 delete 指令現在支援以下保留參數:

    • --dry-run:以測試模式執行刪除操作,並提供詳細輸出,但實際上不刪除任何內容。
    • --before-date 2024-08-27T23:50:54+00:00:刪除早於指定日期的傾印檔。 日期必須以 RFC3339Nano 格式提供,例如:2021-01-01T00:00:00Z
    • --retain-recent 10:保留最近的 N 個傾印檔,其中 N 由使用者指定。
    • --retain-for 1w2d3h4m5s6ms7us8ns:保留指定時長的傾印檔。 格式支援週 (w)、天 (d)、小時 (h)、分鐘 (m)、秒 (s)、毫秒 (ms)、微秒 (us) 和奈秒 (ns)。
    • --prune-failed:修剪(移除)所有已失敗的傾印檔。
    • --prune-unsafe:修剪具有 "unknown-or-failed"(未知或失敗)狀態的傾印檔。 此選項僅與 --prune-failed 結合使用。

發布列表

連結

如果您有任何問題或需要協助,請隨時與我們聯繫