來源 PostgreSQL 資料庫

本節包含以下資訊:

  • Datastream 處理從來源 PostgreSQL 資料庫拉取的資料的行為
  • Datastream 支援的 PostgreSQL 資料庫版本
  • 概略說明如何設定來源 PostgreSQL 資料庫,以便將資料從來源串流傳送至目的地
  • 使用 PostgreSQL 資料庫做為來源的已知限制

行為

來源 PostgreSQL 資料庫會使用邏輯解碼功能。邏輯解碼會公開已提交至資料庫的所有變更,並允許使用輸出外掛程式以使用者友好的格式使用及處理這些變更。Datastream 會使用 pgoutput 外掛程式,這是適用於 PostgreSQL 10 以上版本的標準 PostgreSQL 邏輯解碼外掛程式。

  • 您可以選取特定 PostgreSQL 來源中的所有結構定義或特定結構定義,以及結構定義或特定資料表中的所有資料表。
  • 所有歷來資料都會複製。
  • 所有資料操縱語言 (DML) 變更都會複製,例如指定資料庫和資料表的插入、更新和刪除作業。
  • 系統只會複製已提交的變更。
  • 如果您在資料表上定義 REPLICA IDENTITY,Datastream 會將指定的資料欄視為主鍵。

版本

Datastream 支援 PostgreSQL 10 以上版本。

Datastream 支援下列 PostgreSQL 資料庫類型:

  • 自行託管的 PostgreSQL
  • PostgreSQL 適用的 Cloud SQL
  • AlloyDB for PostgreSQL
  • AlloyDB Omni
  • PostgreSQL 適用的 Amazon RDS
  • Amazon Aurora PostgreSQL

已知限制

將 Datastream 與 PostgreSQL 資料庫做為來源時,已知的限制包括:

  • 資料流上限為 10,000 個資料表。
  • 資料表的資料列超過 5 億列時,除非符合下列條件,否則無法回填:
    1. 資料表具有獨特的 B-tree 索引。
    2. 索引不包含下列類型的欄:DOUBLEFLOATMONEYREALJSONJSONBBYTEATXIDXML複合資料類型幾何資料類型
    3. 索引的所有欄均不得為空值。
    4. 索引的所有欄都以遞增或遞減順序排列。
    5. 資料流會納入索引的所有欄。
  • 沒有主鍵的資料表必須有 REPLICA IDENTITY。否則,只有 INSERT 事件會複製到目的地。
  • 含有主鍵的資料表無法將 REPLICA IDENTITY 設為 FULLNOTHING。必須設為 DEFAULT
  • PostgreSQL 不支援在唯讀備用資源中進行邏輯解碼,因此 Datastream 無法從唯讀備用資源執行個體複製資料。
  • 系統無法自動偵測所有來源結構定義的變更,因此可能會發生資料毀損的情況。下列結構定義變更可能導致資料損毀,或無法在下游處理事件:
    • 捨棄資料欄。
    • 在表格中間新增欄。
    • 變更資料欄的資料類型。
    • 重新排序資料欄。
    • 刪除資料表 (如果之後要使用相同的資料表重新建立並新增資料,則這項操作就很重要)。
  • Datastream 不支援 geometric 資料類型的資料欄。
  • Datastream 不支援 range 資料類型的資料欄。
  • Datastream 不支援不支援的資料類型陣列、使用者定義資料類型陣列 (包括 ENUM),或 DATETIMESTAMPTIMESTAMP WITH TIME ZONE 資料類型的陣列。系統會忽略這類資料欄。
  • 在資料表的複本身分中,如果資料欄包含 TOAST 值,Datastream 就無法為包含這些值的資料列複製 UPDATE 事件。系統會捨棄這類事件。
  • Datastream 不支援複製包含 JSONJSONB 值的資料列,其中的巢狀物件不得超過 2950 個。包含這類 JSONJSONB 值的事件不會複製到目的地資料庫。
  • Datastream 不支援在 NUMERIC (precision, scale) 欄中複製包含 NaN 值的資料列。這些資料欄中的值會替換為 NULL 值。
  • Datastream 不支援複製 hstore 資料類型的資料欄。這些資料欄中的值會替換為 NULL 值。
  • Datastream 不支援從以 SQL_ASCII 編碼的來源資料庫複製非 ASCII 記錄。系統會捨棄這類記錄。
  • Datastream 不支援複製已定義資料列層級安全性 (RLS) 政策的資料表。如要瞭解如何略過這項限制,請參閱「PostgreSQL 來源行為和限制」。
  • Datastream 不會擷取對產生的資料欄所做的變更。
  • 在資料庫上執行 PostgreSQL 主要版本升級時,Datastream 可能會停止運作,或無法擷取任何新事件。建議您在升級前先刪除複寫時段,然後升級資料庫,再重新建立複寫時段。如果串流失敗,請指定新的複製運算單元名稱來復原串流,並在需要資料一致性時執行回填作業。

後續步驟