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