本頁說明如何設定 Datastream,以便將資料寫入 BigQuery 資料集。
所需權限
Datastream 會使用 BigQuery 內建的變更資料擷取 (CDC) 更新支援功能。Datastream 會使用 BigQuery Storage Write API 處理及套用串流變更,藉此更新 BigQuery 表格。
使用 API 和將資料擷取至 BigQuery 所需的權限,會授予 Datastream 服務代理角色。
將 BigQuery 設定為目的地
如要設定 Datastream,以便將資料串流至 BigQuery,請完成下列步驟:
- 確認已在專案中啟用 BigQuery API。 Google Cloud
- 如要使用「針對所有結構定義建立單一資料集」選項,請在 BigQuery 中建立資料集。
- 設定串流的目標資料集。
- 設定寫入模式。
- 為串流指定資料過時程度上限。
設定目的地資料集
資料集是頂層容器,可用於整理及控管 BigQuery 資料表的存取權。
使用 Datastream 為 BigQuery 目的地設定資料集時,可以選取下列任一選項:
針對每個結構定義建立資料集:Datastream 會根據來源的結構定義名稱,在指定的 BigQuery 位置選取或自動建立資料集。因此,來源中的每個結構定義在 BigQuery 中都有對應的資料集。舉例來說,如果您有 MySQL 來源,且該來源有
mydb
資料庫和資料庫中的employees
資料表,Datastream 就會在 BigQuery 中建立mydb
資料集和employees
資料表。如果選取這個選項,Datastream 會在包含串流的專案中建立資料集。雖然您不必在與串流相同的區域中建立資料集,但為了獲得最佳成本效益和效能,建議您將串流的所有資源和資料集都放在同一個區域。
針對所有結構定義建立單一資料集:為資料串流選取 BigQuery 資料集。Datastream 會將所有資料串流至這個資料集。針對您選取的資料集,Datastream 會以
<schema>_<table>
的形式建立所有資料表。舉例來說,如果您有 MySQL 來源,且該來源包含資料庫和資料庫中的資料表,Datastream 就會在您選取的資料集中建立資料表。
mydb
employees
mydb_employees
設定寫入模式
您可以透過兩種模式,定義資料寫入 BigQuery 的方式:
合併:這是預設的寫入模式。選取後,BigQuery 會反映資料在來源資料庫中的儲存方式。也就是說,Datastream 會將所有資料變更寫入 BigQuery,而 BigQuery 則會合併變更與現有資料,藉此建立來源資料表的最終副本。在合併模式下,系統不會保留變更事件的歷來記錄。舉例來說,如果您插入資料列,然後更新該資料列,BigQuery 只會保留更新後的資料。如果之後從來源資料表刪除資料列,BigQuery 就不會再保留該資料列的任何記錄。
僅限附加:僅限附加的寫入模式可讓您以變更串流的形式,將資料新增至 BigQuery (
INSERT
、UPDATE-INSERT
、UPDATE-DELETE
和DELETE
事件)。如需保留資料的過往狀態,請使用這個模式。 如要進一步瞭解僅限附加的寫入模式,請參考下列情境:- 初始回填:初始回填後,所有事件都會以
INSERT
類型事件的形式寫入 BigQuery,並具有相同的時間戳記、通用唯一 ID (UUID) 和變更序號。 - 主鍵更新:主鍵變更時,系統會將兩列資料寫入 BigQuery:
- 具有原始主鍵的
UPDATE-DELETE
列 - 含有新主鍵的
UPDATE-INSERT
列
- 具有原始主鍵的
- 資料列更新:更新資料列時,系統會將單一
UPDATE-INSERT
資料列寫入 BigQuery - 刪除資料列:刪除資料列時,系統會將單一
DELETE
資料列寫入 BigQuery
- 初始回填:初始回填後,所有事件都會以
指定資料過時程度限制
BigQuery 會根據設定的資料過時程度限制,以持續的方式或在查詢執行時,在背景中套用來源修改內容。Datastream 在 BigQuery 中建立新資料表時,系統會根據資料串流目前的資料過時程度限制值,設定資料表的 max_staleness
選項。
如要進一步瞭解如何搭配使用 BigQuery 資料表和 max_staleness
選項,請參閱「資料表過時」一文。