Uložte změny v PostgreSQL do lakehouse

Note

Funkce Kanálu změn dat Lakebase je ve verzi Public Preview.

Nastavte kanál CDF (Change Data Feed) Lakebase v tabulce Postgres a sledujte, jak se změny na úrovni řádků zobrazí v cílové tabulce Delta.

Kroky:Povolte zachytávání změn → ② Spusťte kanál → ③ Sledujte řádek až do lakehouse → ④ Změňte řádek a sledujte, jak se změna propíše

Note

Toto je rychlý start. Kompletní dokumentaci najdete v tématu Změna datového kanálu Lakebase.

Než začnete

  • Ujistěte se, že jste absolvovali krok Získání databáze Postgres. Potřebujete projekt Lakebase s ukázkovou playing_with_lakebase tabulkou.
  • Katalog Unity a schéma, kde máte CREATE TABLE oprávnění.

Krok 1: Povolení zachytávání změn

Aby CDF fungovalo, Postgres potřebuje ve write-ahead logu úplná data řádků. Nastavení identity repliky na FULL znamená, že Postgres pro každou změnu zaznamená původní i nový stav řádku.

V editoru SQL Lakebase spusťte:

ALTER TABLE playing_with_lakebase REPLICA IDENTITY FULL;

Další informace: Nastavení identity repliky u všech tabulek ve schématu a jeho automatické použití na nové tabulky

Krok 2: Spuštění informačního kanálu

Lakebase CDF se konfiguruje na úrovni schématu. Každá aktuální a budoucí tabulka ve zdrojovém schématu je zahrnuta automaticky, takže nevybíráte jednotlivé tabulky.

Ve své produkční větvi otevřete Přehled větve kliknutím na název větve v horní navigační liště, potom otevřete kartu Lakebase CDF a klikněte na Start. Zvolte public jako zdrojové schéma a poté vyberte cílový katalog a schéma služby Unity Catalog. Počáteční snímek začne okamžitě a lb_playing_with_lakebase_history v cíli se zobrazí jako tabulka Delta.

Dialogové okno Start se zdrojovým a cílovým výběrem

Další informace: Spusťte kanál změn dat

Krok 3: Sledujte řádek do lakehouse

Vyberte řádek z Lakebase. Podívejte se na řádek id=2:

SELECT * FROM playing_with_lakebase WHERE id = 2;

Teď najděte stejný řádek v tabulce historie Delta. Přepněte na Databricks SQL sklad nebo notebook a spusťte:

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

Nahraďte <catalog> a <schema> nahraďte cílem, který jste zvolili v kroku 2. Uvidíte řádek id=2 se stejnými name a value jako v Lakebase a navíc dalšími sloupci. Počáteční snímek zapsal každý existující řádek do Delta jako událost insert, což tento řádek reprezentuje.

Tyto nadbytečné sloupce popisují, jaký druh události každý řádek představuje (_pg_change_type), kdy k ní došlo (_timestamp) a informace o pořadí Postgres (_pg_lsn, _pg_xid).

Další informace: Schéma cílové tabulky | Mapování datových typů

Krok 4: Změňte řádek a sledujte, jak se změna propíše

Zpět v Editoru SQL Lakebase aktualizujte řádek id=2:

UPDATE playing_with_lakebase SET value = 55.5 WHERE id = 2;

Počkejte několik sekund, než se změna zobrazí ve feedu, a pak znovu proveďte dotaz na tabulku historie:

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

Tabulka historie Delta zobrazující tři řádky pro id=2: update_preimage, update_postimage a insert

Řádek id=2 se teď zobrazí třikrát: původní insert, původní update_preimage , stará hodnota a update_postimage nová hodnota. Každá změna řádku vytvoří nový záznam v historii, takže máte vždy k dispozici kompletní auditní stopu. Odstranění fungují stejně, přidáním jednoho řádku s _pg_change_type = 'delete'.

Další informace: Běžné vzory změn | Vytváření následných kanálů

Další kroky