將 Postgres 變更儲存至湖倉

Note

Lakebase 變更資料饋送功能目前處於 公開預覽階段。

在 Postgres 資料表上設定 Lakebase 變更資料饋送(CDF),然後查看資料列層級的變更如何出現在目標 Delta 資料表中。

步驟: (1) 啟用變更擷取 → (2) 啟動資料串流 → (3) 沿著一列進入湖邊小屋 → (4) 更改該列,看到它流過

Note

這是快速入門。 完整文件請參閱 Lakebase 變更資料饋送

開始之前

  • 務必完成 取得 Postgres 資料庫。 你需要一個帶有 playing_with_lakebase 範例表的 Lakebase 專案。
  • 一個你有 CREATE TABLE 權限的 Unity 目錄和架構。

步驟 1:啟用變更擷取

Postgres 需要在預寫日誌中記錄完整的資料列資料,CDF 才能運作。 將複製身份設定為完整時,Postgres 會記錄每次變更的舊列和新列狀態。

在 Lakebase SQL 編輯器中執行:

ALTER TABLE playing_with_lakebase REPLICA IDENTITY FULL;

了解更多: 在結構中的所有資料表設定複本身份,並自動套用到新的資料表

步驟二:開始餵食

Lakebase CDF 是在結構描述層級進行設定的。 原始結構中所有現有和未來的資料表都會自動包含,所以你不需要選擇單一資料表。

從你的生產分支,點擊頂部麵包屑中的分支名稱,開啟分支 總覽 ,然後開啟 Lakebase CDF 標籤,點選 開始。 選擇 public 作為來源結構,然後選擇目標的 Unity 目錄和結構。 初始快照會立即開始,而 lb_playing_with_lakebase_history 會在你的目的地中顯示為 Delta 資料表。

開始對話時選擇來源和目的地。

了解更多: 啟動變更資料串流

步驟三:沿著一排進入湖邊小屋

從 Lakebase 選取一列資料。 請看這行 id=2

SELECT * FROM playing_with_lakebase WHERE id = 2;

現在在 Delta 歷史表中找到同一列。 切換到 Databricks SQL 倉庫或筆記本並執行:

SELECT * FROM <catalog>.<schema>.lb_playing_with_lakebase_history
WHERE id = 2;

<catalog><schema> 替換為你在步驟 2 中選擇的目的地。 你會看到資料列 id=2,其中包含與 Lakebase 中相同的 namevalue,以及額外的欄位。 初始快照將所有現有的資料列以 insert 事件的形式寫入 Delta,因為這正是該資料列所代表的內容。

這些額外的欄位描述每列代表_pg_change_type的事件類型(),事件發生時間_timestamp(),以及Postgres排序資訊(_pg_lsn_pg_xid)。

了解更多:目的資料表結構 | 資料型態映射

步驟四:換行,看它順暢流過

回到 Lakebase SQL 編輯器,更新欄位 id=2

UPDATE playing_with_lakebase SET value = 55.5 WHERE id = 2;

等幾秒鐘讓變更出現在動態中,然後重新查詢歷史表:

SELECT id, value, _pg_change_type, _timestamp
FROM <catalog>.<schema>.lb_playing_with_lakebase_history
WHERE id = 2
ORDER BY _pg_lsn DESC;

Delta 歷史表顯示 id=2 的三列:update_preimage、update_postimage 和 insert

id=2 列現在會顯示三次:原始的 insert、帶有舊值的 update_preimage,以及帶有新值的 update_postimage。 每一次該資料列的變更都會變成新的歷史紀錄,這樣你就能擁有完整的稽核紀錄。 刪除的運作方式也相同,會附加一個包含 _pg_change_type = 'delete' 的資料列。

了解更多: 常見變更模式 | 建立下游流程

下一步