常見問題

本頁面提供 Datastream 使用相關常見問題 (FAQ) 的解答。這則常見問題與下列項目相關:

  • 關於 Datastream 和變更資料擷取 (CDC) 的一般問題
  • 一般來源行為和限制
  • MySQL 來源行為和限制
  • Oracle 來源的行為和限制
  • PostgreSQL 來源行為和限制 (包括 PostgreSQL 適用的 AlloyDB)
  • SQL Server 來源的行為和限制
  • Salesforce 來源的行為和限制
  • BigQuery 目的地行為
  • Cloud Storage 目的地行為
  • 使用資料串流的常見用途
  • Datastream 如何整合 Google Cloud 資料服務
  • 安全性和連線
  • 監控資料串流
  • 定價
  • Datastream 的其他資訊

關於 Datastream 和變更資料擷取 (CDC) 的一般問題

問題 回答
什麼是資料串流?

Datastream 是一項無伺服器變更資料擷取 (CDC) 和複製服務,使用起來十分簡單。Datastream 可從關聯資料庫來源 (例如 AlloyDB for PostgreSQL、PostgreSQL、MySQL、SQL Server 和 Oracle) 以及 Salesforce 和 MongoDB 中,將資料順暢複製到 BigQuery。Datastream 提供現代企業所需的規模、速度、安全性和簡易性。Datastream 具備無伺服器且可自動調度資源的架構,讓您能輕鬆設定 ELT (擷取、載入和轉換) pipeline,進行低延遲的資料複製,以展開近乎即時的深入分析。

Datastream 也能夠在不同類型的資料庫和應用程式之間,以可靠的方式同步處理資料串流,並將延遲時間降至最低。這項服務可讓您輕鬆整合 Dataflow 範本,將資料庫複製到 Cloud SQL 或 Spanner 以便同步處理資料庫,或是直接使用 Cloud Storage 中的事件串流,實現事件導向架構。

Datastream 會以哪些方法串流資料? Datastream 會以下列其中一種方法將資料從來源串流至目的地:
  • CDC:即時從來源擷取進行中的變更。
  • 補充作業:提供資料表中資料的歷史快照。
什麼是 CDC?

CDC 是一種資料整合方法,可讓您以更少的系統資源,更快速地整合及分析資料。這是一種方法,可從資料來源中僅擷取最新的變更內容 (更新、插入或刪除),通常會讀取來源為維持自身內部交易完整性而保留的變更記錄。

CDC 可在新資料載入營運資料儲存庫和資料倉儲時,對來源影響的效率有效。此外,CDC 還能夠採用對資料進行大量載入或即時串流資料變更的流程,取代大量載入以及順暢的批次視窗。

在許多情況下,CDC 可讓您持續存取資料變更,進而發揮價值,例如分析、跨地理分散系統同步處理資料,以及事件驅動式架構。

什麼是候補廣告?

除了持續變更的資料外,Datastream 也會使用補充作業從來源擷取所有現有資料,然後將資料串流至目的地。因此,目的地會使用來源的所有歷來資料進行「補充」。後置填充有兩種類型:

  • 增量:資料表的預設填補類型。在增量補充作業期間,Datastream 會從多個批次的資料列範圍擷取資料,並將資料逐批串流至目的地。
  • 完整傾印:在完整傾印補充期間,Datastream 會一次擷取所有資料,並將資料串流至目的地。
執行回填作業時,是否有任何限制需要考量?

如要瞭解補足限制,請參閱各個來源類型的已知限制頁面:

建議的 CDC 和回補作業順序為何? 在大多數情況下,您不需要特別考量這點。在串流中啟用補充功能後,Datastream 會同時執行補充和 CDC。在某些極端情況下,例如複製無法使用 Datastream 回填的超大型資料表時,您可能需要先將資料載入 BigQuery,再啟動串流。
我可以監控 CDC 和補充作業的狀態嗎?

您可以監控每個物件的補充狀態:

  1. 在 Google Cloud 控制台中,前往「Streams」頁面。
  2. 按一下要監控的串流。
  3. 按一下「Objects」分頁標籤。

CDC 狀態實際上是串流狀態。如果 CDC 作業失敗,整個串流也會失敗。

Cloud Monitoring 提供其他物件層級指標。詳情請參閱 Cloud Monitoring 說明文件

變更串流與複製的差異為何?

變更串流是指 Datastream 為了下游使用目的,向目的地發出的事件序列。變更串流寫入 Cloud Storage 的結果,是一組包含特定資料表在一段時間內的變更記錄事件的檔案。這些事件代表該資料表的插入、更新和刪除作業,且可由 Cloud Storage 下游的服務 (例如 Dataflow) 使用及處理,以便用於事件導向架構等用途。

在 Datastream 脈絡中,複製是指在目的地建立來源資料表的 1:1 最新表示法。舉例來說,Oracle 中的資料表會將變更內容持續複製到 BigQuery 表格,並使用從 Oracle 表格串流傳送的變更內容,讓 BigQuery 表格保持最新狀態。複製功能會利用變更串流,消耗每個變更事件,並用於更新目的地。Datastream 可直接複製至 BigQuery,並透過與 Dataflow 整合,支援 Cloud SQL 和 Spanner 等其他目的地,方法是利用可從 Cloud Storage 提取變更串流事件並相應更新目的地資料表的範本。

資料串流是否需要來源的代理程式? 您不需要在來源上安裝代理程式。Datastream 會使用現有的介面 (例如 Oracle LogMiner) 從來源取得資料。
單一資料流中可以加入多少個資料表? Datastream 可在單一串流中處理最多 10,000 個資料表。從技術層面來說,沒有理由將資料庫分割成多個串流,但基於某些業務考量,您可能會為不同的邏輯流程使用不同的串流,例如複製 來自 PostgreSQL 來源的大型交易。不過,每個串流都會增加來源資料庫的負載。這類負載對 CDC 來說微不足道,但對回填作業來說可能相當重要。
在正式版資料庫中使用 Datastream 會對效能造成什麼影響?

CDC 可在新資料載入目的地資料儲存庫和資料倉儲時,對來源影響的效率有效。此外,CDC 還能夠採用對資料進行大量載入或近乎即時串流資料變更的流程,取代大量載入以及順暢的批次視窗。

此外,Datastream 會限制同時回填工作的數量,並提供控制選項,讓您決定要回填哪些物件,以及何時回填。

您可以將來源中的記錄檔複製到 Google Cloud嗎? 否。Datastream 會直接查詢資料庫伺服器上的記錄,並只將指定資料表的變更內容寫入目的地。
Datastream 是否也能傳輸歷來資料? 可以。根據預設,Datastream 會從您指定的來源資料庫表格取得所有歷來資料,並與 CDC 串流並行。Datastream 可讓您靈活地從來源中的部分或所有資料庫資料表取得歷來資料。此外,設定串流時,您可以選擇停用歷史資料填補功能。
Datastream 是否保證僅傳送一次? 否。Datastream 是至少一次的傳送保證。資料串流寫入每個事件的額外中繼資料,可用於移除重複資料。
Datastream 可以處理加密資料庫嗎? 是。
資料串流是否可以從來源串流特定的資料表和資料欄? 可以。您可以使用 Datastream 指定資料表和結構定義的納入和排除清單,只從來源串流處理所需資料到目的地。對於已納入的資料表,您可以排除資料表的特定欄,進一步精確調整要流式傳送至目的地的資料。不過,具體化檢視表無法複製。
如何將串流移至其他專案或區域?
  1. 在新的區域或專案中建立串流,並使用與現有串流相同的設定,但不要選取「回補歷史資料」核取方塊。
  2. 啟動您建立的串流。
  3. 當你建立的串流狀態為 RUNNING 時,請暫停現有的串流
  4. 您也可以選取修改新串流,方法是勾選「補充歷來資料」核取方塊。日後新增至串流的資料表中現有資料,會從來源傳輸至目的地。
Datastream 如何處理資料庫記錄檔中的未提交交易? 如果資料庫記錄檔案包含未提交的交易,當任何交易回溯時,資料庫會在記錄檔案中反映這項資訊,並以「反向」資料操縱語言 (DML) 作業呈現。舉例來說,已復原的 INSERT 作業會有對應的 DELETE 作業。Datastream 會從記錄檔讀取這些作業。
Datastream 的區域供應情形為何?

如要查看支援 Datastream 的區域清單,請參閱「IP 許可清單和區域」。

一般來源行為和限制

問題 回答
Datastream 支援哪些來源?

Datastream 支援來自 Oracle、MySQL、PostgreSQL、PostgreSQL 適用的 AlloyDB、SQL Server、Salesforce (預先發布版) 和 MongoDB (預先發布版) 來源的串流資料,無論是雲端代管或自行管理的來源皆可。如需來源專屬版本的相關資訊,請參閱下列頁面:

Datastream 可以處理加密資料庫嗎? 是。
Datastream 如何從來源擷取資料?

針對 MySQL,Datastream 會處理 MySQL 二進位記錄檔,擷取變更事件。

針對 Oracle,Datastream 會使用 LogMiner 和額外的記錄設定,從 Oracle 的重做記錄中擷取資料。

對於 PostgreSQL 和 PostgreSQL 適用的 AlloyDB,Datastream 會使用 PostgreSQL 的邏輯解碼功能。邏輯解碼會公開所有已提交至資料庫的變更,並允許使用及處理這些變更。

針對 SQL Server,Datastream 會使用交易記錄追蹤資料操縱語言 (DML) 變更。

您可以直接從來源複製記錄檔案到 Google Cloud嗎? Datastream 不會複製完整的記錄檔,而是直接從資料庫伺服器查詢記錄檔,並只將指定資料表的變更複製到目的地。
Datastream 可處理的資料有哪些限制?

這項功能有一般限制,也有適用於特定資料庫來源的限制。

一般限制包括:

  • 事件大小:Cloud Storage 目的地的資料列大小上限為 100 MB,BigQuery 的資料列大小上限為 20 MB。
  • 複寫期間不支援某些資料定義語言 (DDL) 作業,包括:
    • 從表格中間移除資料欄。由於值與錯誤的資料欄相關聯,因此可能會導致資料出現差異。
    • 變更資料欄的資料類型。這可能會導致資料出現差異,因為資料未正確對應至正確的 Datastream 統一類型,且資料可能會毀損。
    • 系統會忽略連鎖刪除作業。
    • 系統會忽略資料表截斷。

如需來源限制的相關資訊,請參閱下列頁面:

每個由資料串流產生的事件都會包含哪些資料? 每個產生的事件 (插入、更新和刪除) 都包含來源的整個資料列,以及每個資料欄的資料類型和值。每個事件也包含事件中繼資料,可用於建立排序並確保一次只傳送一次。
資料串流保證一定會排序嗎? 雖然資料串流不會保證順序,但會為每個事件提供額外中繼資料。這項中繼資料可用於確保目的地最終的一致性。視來源、變更的速度和頻率,以及其他參數而定,通常可以在 1 小時內達到最終一致性。
Datastream 是否保證僅傳送一次? Datastream 是至少傳送一次的傳送模式。您可以使用資料串流寫入每個事件的額外中繼資料,消除重複資料。
Datastream 如何表示來源的資料類型,以便在下游處理作業中使用?

將資料寫入無結構描述的目的地 (例如 Cloud Storage) 時,Datastream 會將所有來源的資料類型正規化,簡化跨來源資料的下游處理流程。Datastream 會採用原始來源資料類型 (例如 MySQL 或 PostgreSQL NUMERIC 類型或 Oracle NUMBER 類型),並將其標準化為 Datastream 統一類型

統一類型代表所有可能來源類型的無損超集,而正規化則表示可輕鬆處理來自不同來源的資料,並以來源通用的方式在下游進行查詢。

Datastream 如何處理來源中的結構 (結構定義) 變更? Datastream 會定期從來源擷取結構定義。結構定義會儲存在 Datastream 的內部結構定義註冊資料庫中,每個事件都會在產生時參照結構定義。這可讓 Datastream 追蹤結構定義變更,並根據這些變更進行調整,確保所有資料都能正確串流並載入至目的地。不過,在結構定義擷取期間,系統可能會遺漏部分結構定義變更,進而導致資料出現差異。
我已在來源資料庫中刪除 (捨棄) 資料欄,但該欄仍會顯示在目的地中。為什麼? Datastream 不會刪除目的地中的資料欄。您必須手動刪除資料欄。這是有意為之的行為,因為在某些情況下,您可能會希望在目的地保留已刪除的欄位。舉例來說,Datastream 會將來源中資料欄的重新命名動作解讀為刪除資料欄並新增其他資料欄。在這種情況下,您不希望在目的地中遺失原始資料欄。
由於驗證失敗,串流無法啟動,但我認為這是錯誤,或者我想嘗試執行串流。如何通過這項驗證? 您可以使用 API 啟動串流,方法是新增 force=true 標記並略過驗證檢查。請注意,略過驗證並不會保證串流能順利執行,如果資料庫缺少必要的設定或權限,串流仍可能會失敗。
我可以重新啟動失敗的串流嗎?

如要修正狀態為 Failed 的串流,請解決 Datastream 回報的錯誤。詳情請參閱「排解串流問題」。

您也可以復原狀態為 Failed permanently 的串流。詳情請參閱「復原串流」。

Datastream 會鎖定資料庫資料表嗎?

否。Datastream 不需要鎖定資料表。

每個來源的限制頁面都會指定串流最多可包含 10,000 個資料表。這是否表示 Datastream 無法同時並行執行超過 10,000 個表格的 CDC 作業? 否。上述限制是指每個串流。您可以擁有多個串流,且每個串流的資料表總數超過 10,000 個。

MySQL 來源行為和限制

問題 回答
Datastream 如何從 MySQL 取得資料? Datastream 會使用 MySQL 的二進位記錄檔,從 MySQL 中擷取變更事件
Datastream 是否支援 MySQL 適用的 Cloud SQL 唯讀備用資源?

是,Datastream 支援 MySQL 適用的 Cloud SQL 5.7 和 8.0 版本唯讀備用資源。

您可以在這些執行個體上啟用二進位檔記錄功能。如要執行這項操作,請執行下列 gcloud 指令:

gcloud sql instances patch INSTANCE_NAME -- enable-bin-log

如需詳細資訊,請參閱「在唯讀備用資源上記錄二進位檔」。

Datastream 需要具備哪些最低權限,才能從來源 MySQL 資料庫複製資料?

您必須將下列權限授予 Datastream 使用者,才能複製 MySQL 資料庫中的資料:

  • SELECT
  • REPLICATION SLAVE
  • REPLICATION CLIENT
Datastream 是否支援二進位記錄檔壓縮功能?

否,Datastream 不支援使用二進位記錄檔交易壓縮功能壓縮交易事件。停用二進位記錄檔交易壓縮功能,以便在 Datastream 中使用 MySQL 的變更資料擷取功能。

貴機構不允許在所有資料表和資料庫上授予 SELECT 權限。您還能使用 Datastream 嗎?

您可以將 SELECT 權限授予要複製的特定資料表,或是資料庫中的整個結構定義。如要執行此操作,請執行下列任一指令:

GRANT SELECT ON DATABASE_NAME.TABLE_NAME TO USER_NAME@'%';
GRANT SELECT ON DATABASE_NAME.* TO USER_NAME@'%';

更改下列內容:

  • DATABASE_NAME:MySQL 資料庫名稱。
  • TABLE_NAME:您要授予 SELECT 權限的資料表名稱。
  • USER_NAME:您要授予 SELECT 權限的使用者名稱。

如要將權限限制在特定主機名稱,請將 % 字元替換為特定 IP 位址或位址範圍。

Oracle 來源的行為和限制

問題 回答
Datastream 如何從 Oracle 取得資料? Datastream 會使用 Oracle LogMiner 從 Oracle 的重做記錄中擷取資料。
Datastream 是否需要 Oracle 的 GoldenGate 授權? 否。Datastream 使用 Oracle LogMiner 讀取資料庫的重做記錄,因此不需要 GoldenGate 授權。
停止支援 Oracle LogMiner 後會發生什麼情況? 所有一般可用的 Oracle 版本仍支援 Oracle LogMiner,Datastream 也將在日後的所有版本中繼續支援 LogMiner。Oracle 已停止支援 LogMiner 的 CONTINUOUS_MINE 選項,但 Datastream 並未使用這個選項,因此這個淘汰作業不會對 Datastream 造成影響。
Datastream 是否支援加密從 Oracle 資料庫傳輸的資料?

Datastream 支援根據 Oracle Net Services 加密傳輸中的資料。Datastream 會在 REQUESTED 模式下執行。

Datastream 是否支援安全資料傳輸層 (SSL) 和傳輸層安全標準 (TLS) 加密功能?

是,Datastream 支援 TCPS 通訊協定,可透過 SSL/TLS 加密連線連線至 Oracle 來源。

Datastream 是否支援 Oracle 多租戶架構,特別是容器資料庫 (CDB) 和可插式資料庫 (PDB)? 可以,Datastream 支援 Oracle 多租戶架構 (CDB/PDB),但您只能在串流中複製單一可插入式資料庫。
貴機構不允許授予 GRANT SELECT ANY TABLE 權限。您還能使用 Datastream 嗎?

如果無法授予 GRANT SELECT ANY TABLE 權限,您可以將 SELECT 權限授予下列表格:

  • ALL_COL_COMMENTS
  • ALL_CONS_COLUMNS
  • ALL_CONSTRAINTS
  • ALL_DB_LINKS
  • ALL_EXTERNAL_TABLES
  • ALL_IND_COLUMNS
  • ALL_INDEXES
  • ALL_LOG_GROUPS
  • ALL_MVIEWS
  • ALL_OBJECTS
  • ALL_PART_TABLES
  • ALL_SEQUENCES
  • ALL_SOURCE
  • ALL_SYNONYMS
  • ALL_TAB_COLS
  • ALL_TAB_COLUMNS
  • ALL_TAB_COMMENTS
  • ALL_TABLES
  • ALL_TRIGGERS
  • ALL_TRIGGER_COLS
  • ALL_TYPES
  • ALL_USERS
  • ALL_VIEWS
  • DATABASE_PROPERTIES
  • DBA_ROLE_PRIVS
  • DUAL
  • PRODUCT_COMPONENT_VERSION
  • ROLE_SYS_PRIVS
  • USER_ROLE_PRIVS
  • USER_TAB_PRIVS

如要使用 Datastream 串流變更,您還需要對串流中包含的所有資料表具備讀取權限。

如要啟動串流,請使用 API 略過驗證程序。詳情請參閱「開始串流」。

Datastream 是否支援從 Oracle 唯讀備用資源執行個體複製資料? 只要 Oracle 唯讀備用資源執行個體已按照設定指南進行設定,Datastream 就會支援從該執行個體複製資料。
Datastream 是否支援 Oracle SCAN RAC 資料庫? 是的。不過,您無法在使用 Datastream 的 Oracle Real Application Cluster (RAC) 環境中,使用單一用戶端存取名稱 (SCAN) 功能建立直接連線至資料庫的連線。如要克服這項限制,請直接連線至其中一個節點,或使用 Oracle 連線管理工具。您也可以使用 HAProxy 等反向 Proxy 解決方案建立私人連線設定。

PostgreSQL 來源行為和限制

問題 回答
Datastream 如何從 PostgreSQL 取得資料? Datastream 會使用 PostgreSQL 的邏輯解碼功能,從 PostgreSQL 中擷取變更事件
Datastream 是否支援從 AlloyDB for PostgreSQL 或 AlloyDB Omni 來源進行複製? 可以。Datastream 支援這兩種來源。如要瞭解如何設定來源 AlloyDB for PostgreSQL 資料庫,請參閱「設定 AlloyDB for PostgreSQL 資料庫」。如要瞭解如何設定來源 AlloyDB Omni 資料庫,請參閱「設定自管 PostgreSQL 資料庫」。
Datastream 是否支援從 PostgreSQL 唯讀備用資源執行個體複製資料? 否,Datastream 不支援從 PostgreSQL 的唯讀備用資源進行複製。
Datastream 是否支援資料列層級安全性 (RLS) Datastream 不支援啟用 RLS 的資料表複製作業。不過,您可以使用 BYPASSRLS 子句來規避這項限制:
ALTER USER USER_NAME BYPASSRLS;

USER_NAME 替換為 Datastream 用來連線至資料庫的使用者名稱,以及您要略過 RLS 政策的使用者名稱。

從 PostgreSQL 來源複製時,Datastream 是否支援並行 CDC 作業?

否。PostgreSQL 複製作業仰賴複製作業運算單元概念,而複製作業運算單元不支援並行連線。一次只能有一個 CDC 工作讀取複製運算單元。舉例來說,如果您從來源資料庫中刪除大量記錄,複製作業時段可能會因刪除事件過載。來源的後續變更會延遲,直到複製運算單元佇列中已排入的刪除事件處理完畢為止。

如要瞭解複製大量交易資料時的建議做法,請參閱「診斷問題」。

Datastream 是否支援安全資料傳輸層 (SSL) 和傳輸層安全標準 (TLS) 加密功能?

是的,Datastream 支援 SSL/TLS 加密連線。

SQL Server 來源的行為和限制

問題 回答
Datastream 支援哪些 SQL Server 版本? Datastream 支援支援變更資料擷取功能的 SQL Server 資料庫版本。如需支援的 SQL Server 版本和版本完整清單,請參閱「版本」。
Datastream CDC 複製功能如何處理 SQL Server 來源? Datastream 資料擷取程序會根據來源設定使用交易記錄或變更資料表。詳情請參閱「來源 SQL Server 資料庫」。
Datastream 需要具備哪些最低權限,才能從來源 SQL Server 資料庫複製資料?

您必須向 Datastream 使用者授予下列角色和權限,才能複製 SQL Server 資料庫中的資料:

針對變更資料表 CDC 方法:

  • db_owner
  • db_denydatawriter

此外,針對交易記錄 CDC 方法:

  • 資料庫和 sys.fn_dblog 函式的 SELECT 權限
  • dbo.sysjobs 資料表的 SELECT 權限
  • VIEW SERVER STATE
  • 如要進一步瞭解如何設定來源,請參閱資料庫類型的相關設定頁面

為什麼在使用交易記錄時,需要進行設定 (例如變更輪詢間隔和設定截斷安全防護措施)? 使用交易記錄複製 SQL Server 來源的資料時,如果記錄在 Datastream 讀取前遭到截斷,就會發生資料遺失的情形。您可以選擇變更輪詢間隔,並設定截斷防護措施,但這只是額外的防護措施,可確保 Datastream 即使在發生停機或連線問題的情況下,也能讀取資料。詳情請參閱「設定來源 SQL Server 資料庫」。
從 SQL Server 來源複製資料時,應選取哪種 CDC 方法?

您可以根據來源 SQL Server 資料庫設定,選取下列兩種可用的 CDC 方法之一:

  • 交易記錄:選取這個方法,即可直接從資料庫記錄處理變更。這個方法較有效率、成效最佳,不過需要額外進行設定,您的資料庫可能不支援相關步驟。
  • 變更資料表:選取這個方法,即可處理專用變更資料表中的變更。這個方法的設定程序較為簡單且限制較少,不過處理量較低,且會增加資料庫的負載。

詳情請參閱「SQL Server 做為來源的簡介」。

Salesforce 來源的行為和限制

問題 回答
什麼是 Salesforce 組織? Salesforce 組織 (也稱為org) 是 Salesforce 專屬的部署作業,類似於資料庫執行個體。機構會設有特定的授權使用者,並儲存所有客戶資料和應用程式。
什麼是 Salesforce 物件、記錄和欄位?

物件是類別實體,類似於關聯資料庫命名法中的資料表。可為標準或自訂。根據預設,標準物件會包含在 Salesforce 中,而使用者則會建立自訂物件,用於儲存特定用途的資料。

記錄是物件的特定例項,類似於關聯式資料庫中的資料列。

欄位是物件的特定屬性,類似於關聯式資料庫中的資料欄。

BigQuery 目的地行為

問題 回答
Datastream 和 BigQuery 如何合作,複製來源資料庫的變更? Datastream 會持續讀取來源資料庫的變更串流,並使用 Storage Write API 將更新和刪除事件串流至 BigQuery 目的地資料表。接著,BigQuery 會根據資料表過時程度設定,將變更套用至資料表。
如何在 BigQuery 中套用資料操縱語言 (DML) 作業?
  • 僅附加模式中,資料會以變更串流形式附加至 BigQuery,每個 INSERTUPDATE-INSERTUPDATE-DELETEDELETE 事件都會對應至一個獨立的資料列。
  • 在「Merge」模式 (預設模式) 中,當 Datastream 在 BigQuery 中建立資料表時,會根據來源中定義的主鍵,設定資料表的主鍵。BigQuery 會處理事件,並根據來源資料表主鍵,將變更套用至基礎 BigQuery 資料表。如果來源資料表沒有主鍵,系統會視為使用 僅附加模式。
Datastream 和 BigQuery 如何處理事件排序? BigQuery 會使用事件中繼資料和內部變更序號 (CSN),按照正確順序將事件套用至資料表。如要進一步瞭解事件中繼資料,請參閱「事件和串流」。
搭配 Datastream 使用時,BigQuery 費用如何計算? BigQuery 費用會與 Datastream 費用分開計算及收費。如要瞭解如何控管 BigQuery 費用,請參閱 BigQuery CDC 定價
將資料串流至 BigQuery 時,Datastream 支援的最大資料列大小為何? Datastream 支援的資料列大小上限為 20 MB。
串流至 BigQuery 時,系統會在資料表前面加上 _。您能否變更這項行為,讓 BigQuery 中的資料表採用與來源資料庫相同的結構? 為 BigQuery 目的地設定資料集時,您可以為每個結構定義建立資料集,也可以為所有結構定義建立單一資料集。為每個結構定義建立資料集時,來源中的每個結構定義都會對應至 BigQuery 中的資料集,而來源結構定義中的所有資料表都會對應至資料集中的資料表。選取「為所有結構定義使用單一資料集」選項後,資料表名稱會加上 _ 前置字元,這符合 BigQuery 的資料表命名慣例
CDC 是否能擷取來源結構定義的變更,例如在來源中插入或刪除資料欄?這類變更是否會自動反映在目標 BigQuery 資料集中已填入資料的資料表中? Datastream 會自動偵測新資料欄,並將這些欄新增至新資料列的目的地結構定義,但不會新增已複製至目的地的資料欄。系統會忽略已刪除的資料欄,並在目的地中以 NULL 值填入這些欄。接著,您可以在 BigQuery 中手動刪除這些欄。

Cloud Storage 目的地行為

問題 回答
如何在 Cloud Storage 中建立檔案? Datastream 會為每個資料表建立資料夾。在每個資料夾中,Datastream 會在檔案大小或時間達到使用者定義的門檻時,輪替檔案 (或建立新檔案)。每次偵測到結構定義變更時,Datastream 也會輪替檔案。檔案名稱會由不重複的結構定義鍵 (根據結構定義的雜湊值) 和檔案中第一個事件的時間戳記組成。基於安全考量,這些檔案名稱不應供人閱讀或理解。
如果 Cloud Storage 中的資料沒有排序,那麼在將事件載入目的地之前,如何重新排序事件?

每個事件都包含幾個可明確識別記錄檔中資料列的中繼資料欄位,方便您對事件排序。這些欄位包括:

適用於 Oracle 來源:

  • rs_id (記錄集 ID),實際上是由三個值 (例如 0x0073c9.000a4e4c.01d0) 組成。rs_id 專門識別重做記錄中的記錄。
  • ssn (SQL 序號),當重做記錄太長時會使用這個值。因此,Oracle LogMiner 會將記錄分割為多個資料列。

適用於 MySQL 來源:

  • log_file,Datastream 會從中擷取 CDC 複製事件。
  • log_position,用於識別 MySQL 二進位檔記錄中的偏移量。

適用於 PostgreSQL 來源:

  • source_timestamp,這是記錄在來源上變更時的時間戳記。如果要排序的事件的 source_timestamp 值相同,請比較 lsn 值。
  • lsn (記錄序號),用於識別 WAL 記錄檔中記錄的偏移量。

如要進一步瞭解中繼資料欄位,請參閱「來源專屬中繼資料」。

如果為相同時間戳記建立多個檔案,應以何種順序處理這些檔案? 由於無法保證檔案內和跨檔案的順序,因此決定處理來源檔案順序的最佳方式,就是從所有檔案中取得特定時間戳記的所有事件,然後使用本節前述的方法套用排序。
如何處理主索引鍵更新?事件中是否有「前」和「後」資訊? 當資料列的主鍵發生變更時,Datastream 會針對此變更產生兩個事件:UPDATE-DELETEUPDATE-INSERTUPDATE-DELETE 事件代表更新的資料,UPDATE-INSERT 則代表更新的資料。如要進一步瞭解特定來源的中繼資料,請參閱「事件和串流」。
將資料串流至 Cloud Storage 時,Datastream 支援的資料列大小上限為何? Datastream 支援的資料列大小上限為 100 MB。

用途

問題 回答
使用資料串流的常見用途有哪些?

DataStream 屬於美國疾病管制與預防中心 (CDC) 與複製服務,這代表在各種不同情況下,可以持續使用串流資料變更的長期用途。資料串流最常見的用途如下:

  1. 數據分析:直接將資料複製到 BigQuery,客戶就能在 BigQuery 中存取最新的營運資料。客戶可以使用 BigQuery 中持續更新的資料,根據自己的資料建立最新的資訊主頁。例如,您可以用來監控系統,並取得最新的業務狀態洞察資料。
  2. 資料庫複製和同步處理情境:將 Datastream 與 Dataflow 範本整合,即可將資料載入 Cloud SQL 或 Spanner,並在這些資料庫中取得來源資料的最新複製版本。您可以使用目的地資料庫中的持續更新資料,從來源到目的地進行停機時間短的資料庫遷移,或是設定混合雲端,讓來源和目的地位於不同的代管環境。
  3. 以事件為核心的架構:以微服務為基礎的現代架構會依賴中央資料中心,並持續更新來自貴機構的事件,以便以事件為核心。您可以持續將事件資料寫入 BigQuery 和 Cloud Storage 等目的地,藉此建構事件導向架構,並根據這些目的地的事件資料使用方式進行處理。

整合

問題 回答
Datastream 如何整合 Google Cloud 資料服務?

Datastream 可從來源提供 CDC 資料複製功能,進而補充及強化 Google Cloud 資料套件,並支援各種 Google Cloud 服務。透過與這些服務無縫整合,Datastream 可融入更大的 Google Cloud 生態系統。

Datastream 可整合下列資料服務:

  • BigQuery:Datastream 會使用 BigQuery Write API 直接與 BigQuery 整合。Datastream 會將變更事件直接寫入 BigQuery 資料集,並持續將變更與現有資料合併 (UPSERT)。
  • Dataflow:Datastream 會使用 Dataflow 範本與 Dataflow 整合。這些範本會讀取 Cloud Storage 中的資料,並將資料載入 BigQuery、Cloud SQL for PostgreSQL 或 Spanner。這些範本的目的是在目的地中維持最新的複寫來源資料表。這些範本可在 Dataflow UI 中使用,並針對 Datastream 產生的檔案進行建構,可供即時處理。
  • Cloud Storage:Datastream 會將變更串流寫入 Cloud Storage,以便整合 Cloud Storage。
  • Cloud SQL 和 Spanner:使用 Datastream 和 Dataflow 範本,您可以在資料庫中維護最新的複本資料表。
Dataflow 中的 Datastream 到 BigQuery 範本是否有資料操縱語言 (DML) 作業數量的限制? 否。這個範本會使用串流插入 API 將資料載入 BigQuery。因此,DML 作業數量沒有限制。不過,您必須遵守配額限制

安全性和連線

問題 回答
資料串流是否為機密資料的安全服務? Datastream 支援多種安全的私人連線設定,可保護從來源傳送至目的地的傳輸中資料。資料複製完成後,系統會預設對資料進行加密,並運用 BigQuery 或 Cloud Storage 的安全控管機制。任何由資料串流緩衝的資料都會在靜態時加密。
哪些可用的連線選項可讓您連接來源的資料串流?

您可以設定三種連線方法

  • IP 許可清單:這個方法會在來源上設定 Datastream 的區域 IP 位址許可清單,以便提供公開連線。建立串流時,Datastream 會在 UI 中顯示這些 IP 位址。
  • 轉送安全殼層通道:除了將區域 IP 位址加入許可清單,這個方法還會利用客戶設定的安全殼層,透過公用網路提供安全連線。
  • 透過虛擬私有雲對等互連建立私人連線:使用這項方法,透過 Google Cloud的內部網路連線至 Google Cloud代管的資料庫,或是在 Datastream 私人網路和貴機構的 Google Cloud 虛擬私有雲之間建立虛擬私有雲對等互連,以便利用現有的 VPN 或 Interconnect。
如何限制資料串流處理機密資料?

Datastream 可讓您指定要將來源的哪些特定資料元素 (結構定義、資料表和資料欄) 串流至目的地,以及要排除哪些元素。

資料庫記錄可能包含串流定義中排除的元素變更資料。由於您無法在來源中篩選這些元素,Datastream 會讀取任何與元素相關聯的資料,但會忽略這些資料。

Datastream 如何確保資料庫憑證安全無虞? 無論您是使用 Secret Manager 儲存密碼,還是在建立連線設定檔時手動輸入密碼,所有使用者中繼資料和靜態資料都會在傳輸過程中加密,並由 Google 儲存在自有儲存系統中。系統會追蹤並稽核這類中繼資料的存取權。
為什麼「建立私人連線設定」頁面會指出,您必須將 roles/compute.networkAdmin 角色授予 Datastream 服務帳戶,才能在共用虛擬私有雲中建立私人連線設定? 您只需要具備 networkAdmin 角色,才能建立虛擬私有雲對等互連。建立對等連線後,您就不需要這個角色。如果貴機構不允許將 networkAdmin 角色授予 Datastream 服務帳戶,請建立自訂角色,並授予下列特定權限:

動態選取 IP 範圍

  • compute.routes.get
  • compute.routes.list
  • compute.subnetworks.get
  • compute.subnetworks.list

建立對等網路

  • compute.globalOperations.get
  • compute.networks.addPeering
  • compute.networks.removePeering
  • compute.networks.get

保留 IP 位址

  • compute.globalAddresses.get
  • compute.globalAddresses.create
  • compute.globalAddresses.createInternal
  • compute.globalAddresses.delete
  • compute.globalAddresses.deleteInternal
  • compute.networks.use
  • compute.networks.listPeeringRoutes
我可以使用 Private Service Connect 建立私人連線設定嗎? 否,Datastream 不支援 Private Service Connect。

監控資料串流

問題 回答
如何得知所有歷來資料已複製到目的地? Datastream 會在記錄檔中提供目前狀態的相關資訊。系統會建立記錄項目,指出資料表何時完成回填作業。
延遲時間偶爾會增加,然後隨著時間逐漸減少。這是正常現象嗎? 當來源產生的事件處理量增加時,Datastream 會自動擴充。不過,為保護來源資料庫和資料串流,Datastream 在任何時間點都只能開啟有限的並行連線和程序數量。事件處理量大幅增加時,延遲時間可能會暫時飆升,但隨著事件積壓量處理完畢,延遲時間應會逐漸降低。

定價

問題 回答
Datastream 的定價為何?

Datastream 的價格取決於從來源處理至目的地的資料量 (GB)。

如要進一步瞭解 Datastream 的定價資訊,請參閱「定價」。

如何計算資料大小? 帳單費用會根據 Datastream 處理的資料量計算。Datastream 只會針對串流至目的地的資料收費。
如果您將 Datastream 與 BigQuery 或 Dataflow 搭配使用,則需要支付哪些費用? 每項服務的價格和費用都會個別計算。

其他資訊

問題 回答
如果我在使用「資料流」時有其他問題或問題,該怎麼辦? 如果您在使用 Datastream 時遇到問題,Google 支援團隊可以提供協助。此外,疑難排解指南還會說明使用 Datastream 時可能遇到的常見問題。

後續步驟