常見問題

您可以查看 Datastream 和變更資料擷取的常見問題解答。主題包括常見用途、來源和目的地行為、 Google Cloud 整合、安全性、連線能力、監控和定價。

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

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

Datastream 是簡單好用的無伺服器變更資料擷取 (CDC) 與複製服務,Datastream 可將資料從關聯式資料庫來源 (例如 AlloyDB for PostgreSQL、PostgreSQL、MySQL、SQL Server 和 Oracle),以及 Salesforce、Salesforce Marketing Cloud (預先發布版)、ServiceNow (預先發布版) 和 MongoDB,直接複製到 BigQuery。Datastream 提供現代企業所需的規模、速度、安全性和簡易性。Datastream 具備無伺服器且可自動調度資源的架構,讓您能設定 ELT (擷取、載入和轉換) 管道,進行低延遲的資料複製,以便展開近乎即時的深入分析。

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

Datastream 串流資料的方法有哪些? Datastream 會透過下列兩種方法之一,將資料從來源串流至目的地:
  • CDC:即時擷取來源的持續變更。
  • 補充:提供資料表中現有資料的歷來快照。
什麼是 CDC?

CDC 是一種資料整合方法,可讓您以更快的速度整合及分析資料,同時使用較少的系統資源。這種方法只會從資料來源提取最新變更 (更新、插入或刪除),通常是讀取來源為維護內部交易完整性而保留的變更記錄。

將新資料載入作業資料儲存庫和資料倉儲時,CDC 是非常有效率的機制,可限制對來源的影響,並透過將資料變更增量載入或近乎即時串流至資料目的地,消除大量載入更新和不便的批次作業時間。

CDC 可用於許多用途,只要能持續存取發生的資料異動,就能從中獲得價值,例如數據分析、同步處理分散在不同地理位置的系統資料,以及事件導向架構。

什麼是候補廣告?

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

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

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

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

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

  1. 前往 Google Cloud 控制台的「Streams」(串流) 頁面。
  2. 按一下要監控的串流。
  3. 按一下「物件」分頁標籤。

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

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

變更串流和複製有何不同?

變更串流是 Datastream 傳送至目的地的事件序列,用於下游消費。變更串流寫入 Cloud Storage 後,會產生一組檔案,其中包含特定資料表在一段時間內的變更記錄事件。這些事件代表對該資料表執行的插入、更新和刪除作業,可由 Dataflow 等服務在 Cloud Storage 下游取用及處理,用於事件導向架構等用途。

在 Datastream 中,「複製」是指在目的地中,以 1:1 的比例呈現來源資料表的最新狀態。舉例來說,Oracle 資料表的變更會持續複製到 BigQuery 資料表,而 BigQuery 資料表會使用從 Oracle 資料表串流的變更,保持最新狀態。複製作業會使用各項變更事件,並用來更新目的地,藉此運用變更串流。Datastream 可直接將資料複製到 BigQuery,並透過與 Dataflow 整合,支援 Cloud SQL 和 Spanner 等其他目的地。這項整合功能會運用範本,從 Cloud Storage 提取變更串流事件,並據此更新目的地資料表。

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

CDC 可在新資料載入目的地資料儲存庫和資料倉儲時,對來源影響的效率有效。CDC 也能以遞增方式載入資料,或近乎即時地將資料變更串流至目的地,因此不需要大量載入更新,也不必使用不便的批次作業時段。

此外,Datastream 會限制同時執行的補充工作數量,並讓您控制要補充的物件和補充時間,盡可能降低初始補充作業的影響。

可以將記錄檔從來源複製到 Google Cloud嗎? 不會。Datastream 會直接在資料庫伺服器上查詢記錄,且只有指定資料表的變更會寫入目的地。
Datastream 也可以移轉歷來資料嗎? 可以。根據預設,Datastream 會從您指定的來源資料庫資料表,取得所有歷來資料,並與 CDC 串流平行處理。Datastream 可讓您彈性地從來源中的部分或所有資料庫資料表取得歷來資料。此外,設定串流時,您可以選擇停用歷來資料補充。
Datastream 是否保證僅傳送一次? 不會。Datastream 至少會傳送一次。Datastream 寫入每個事件的額外中繼資料,可用於移除重複資料。
Datastream 可以處理加密資料庫嗎? 是。
Datastream 能否從來源串流特定資料表和資料欄? 可以。您可以使用 Datastream 指定資料表和結構定義的納入和排除清單,只將所需資料從來源串流至目的地。對於納入的資料表,您可以排除特定資料欄,進一步精細調整要串流至目的地的資料。不過,materialized view 無法複製。
如何將串流移至其他專案或區域?
  1. 在新區域或專案中建立串流,並採用與現有串流相同的設定,但不要勾選「Backfill historical data」(補充歷來資料) 核取方塊。
  2. 啟動您建立的串流。
  3. 建立的串流狀態顯示為 RUNNING 後,請暫停現有串流。
  4. 您也可以勾選「補充歷來資料」核取方塊,修改新串流。日後新增至串流的資料表中,現有資料會從來源串流至目的地。
Datastream 如何處理資料庫記錄檔中未提交的交易? 如果資料庫記錄檔包含未修訂的交易,且有任何交易復原,資料庫就會在記錄檔中將這項操作反映為「反向」data manipulation language (DML) 作業。例如,復原的 INSERT 作業會有對應的 DELETE 作業。Datastream 會從記錄檔讀取這些作業。
Datastream 適用於哪些區域?

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

一般來源行為和限制

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

Datastream 支援從 Oracle、MySQL、PostgreSQL、AlloyDB for PostgreSQL、SQL Server、Salesforce、Salesforce Marketing Cloud (預先發布版)、ServiceNow (預先發布版) 和 MongoDB 來源串流資料,無論是雲端託管或自行管理的來源皆可。如要瞭解特定來源的版本,請參閱下列頁面:

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

如果是 MySQL,Datastream 會處理 MySQL 二進位記錄,擷取變更事件。

如果是 Oracle,Datastream 會使用 LogMiner 和補充記錄設定,從 Oracle 的重做日誌檔擷取資料。

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

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

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

除了通用限制,也有適用於特定資料庫來源的限制。

一般限制包括:

  • 事件大小:Cloud Storage 目的地資料列大小上限為 100 MB,BigQuery 則為 20 MB。
  • 複製期間不支援某些資料定義語言 (DDL) 作業,包括:
    • 從表格中間捨棄資料欄。這可能會導致資料不一致,因為值與錯誤的資料欄相關聯。
    • 變更資料欄的資料類型。這可能導致資料無法正確對應至 Datastream 統合類型,造成資料不一致,甚至損毀。
    • 系統會忽略串聯刪除。
    • 系統會忽略表格截斷。

如要瞭解特定來源的限制,請參閱下列頁面:

每個由資料串流產生的事件都會包含哪些資料? 每個產生的事件 (插入、更新和刪除) 都包含來源的整列資料,以及各欄的資料類型和值。每個事件也包含事件中繼資料,可用於建立排序,並確保只傳送一次。
資料串流保證一定會排序嗎? 雖然 Datastream 不保證順序,但會為每個事件提供額外的中繼資料。這項中繼資料可用於確保目的地最終一致性。視來源、變更頻率和頻率,以及其他參數而定,最終一致性通常可在 1 小時內達成。
Datastream 是否保證僅傳送一次? 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 CLI 指令:

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 通訊協定,可與 Oracle 來源建立 SSL/TLS 加密連線。

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 唯讀副本執行個體複製資料? 只要按照設定指南設定執行個體,Datastream 就能從 Oracle 唯讀副本執行個體複製資料。
Datastream 是否支援 Oracle SCAN RAC 資料庫? 是的,不過,您無法在 Oracle Real Application Clusters (RAC) 環境中,使用 Datastream 的單一用戶端存取名稱 (SCAN) 功能,直接連線至資料庫。如要克服這項限制,請直接連線至其中一個節點,或使用 Oracle Connection Manager。您也可以使用 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 組織 (也稱為組織) 是您專屬的 Salesforce 部署項目,類似於資料庫執行個體。組織會定義一組授權使用者,並儲存所有客戶資料和應用程式。
什麼是 Salesforce 物件、記錄和欄位?

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

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

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

Datastream 是否支援 Salesforce 計算結果欄位? Datastream 部分支援 Salesforce 計算結果欄位 (公式欄位)。複製這些欄位時須遵守特定限制。詳情請參閱「已知限制」。

Salesforce Marketing Cloud 來源行為和限制

問題 答案
什麼是 Salesforce Marketing Cloud? Salesforce Marketing Cloud 平台可透過電子郵件、行動裝置和社群媒體等多個管道,提供個人化的顧客歷程。與標準 Salesforce 平台完全不同。
Datastream 如何從 Salesforce Marketing Cloud 複製資料? Datastream 會使用 Salesforce Marketing Cloud API,根據設定的輪詢間隔提取資料。這個連接器支援大多數物件的增量同步,以及資料擴充等物件的定期完整重新整理。

BigQuery 目的地行為

問題 答案
Datastream 和 BigQuery 如何搭配運作,複製來源資料庫的變更? Datastream 會持續讀取來源資料庫的變更串流,並使用 Storage Write API,將 upsert 和刪除事件串流至 BigQuery 目的地資料表。接著,BigQuery 會根據資料表過時程度設定,將變更套用至資料表。
在 BigQuery 中,資料操縱語言 (DML) 作業如何套用?
  • 在「僅限附加」模式中,資料會以變更串流的形式附加至 BigQuery,每個 INSERT、UPDATE-INSERT、UPDATE-DELETE 和 DELETE 事件都會有獨立的資料列。
  • 在「合併」模式 (預設) 下,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 (適用於以二進位記錄為基礎的複製作業) 或 binlog_file (適用於以 GTID 為基礎的複製作業),Datastream 會從中提取 CDC 複製作業中的事件。
  • log_position (適用於以二進位記錄為基礎的複製作業) 或 binlog_position (適用於以 GTID 為基礎的複製作業),用於識別 MySQL 二進位記錄中記錄的偏移量。
  • gtid (適用於以 GTID 為基礎的複製作業),可明確識別事件的交易。

PostgreSQL 來源:

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

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

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

用途

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

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

  1. 數據分析:直接將資料複製到 BigQuery,客戶就能在 BigQuery 存取最新的營運資料。客戶可以在 BigQuery 中使用這項持續更新的資料,根據資料建立最新資訊主頁。舉例來說,這項功能可用於監控系統,以及取得有關業務狀態的最新深入分析。
  2. 資料庫複製和同步處理情境:將 Datastream 與 Dataflow 範本整合,將資料載入 Cloud SQL 或 Spanner,即可在這些資料庫中取得來源資料的最新副本。您可以使用目的地資料庫中持續更新的資料,從來源遷移至目的地,縮短資料庫停機時間,或用於混合雲設定,其中來源和目的地位於不同的託管環境。
  3. 事件導向架構:現代微服務架構仰賴中央資料中樞,持續接收來自整個組織的事件更新,以事件為導向。只要持續將事件資料寫入 BigQuery 和 Cloud Storage 等目的地,就能根據這些目的地的事件資料用量,建構事件導向架構。

整合

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

Datastream 提供從來源到各種 Google Cloud 服務的 CDC 資料複製功能,可補充及強化 Google Cloud 資料套件。Datastream 與這些服務完美整合,融入更廣大的 Google Cloud 生態系統。

Datastream 與下列資料服務整合:

  • BigQuery:Datastream 使用 BigQuery Write API 直接與 BigQuery 整合。Datastream 會將變更事件直接寫入 BigQuery 資料集,並持續將變更與現有資料合併 (UPSERT)。
  • Dataflow:Datastream 可透過 Dataflow 範本與 Dataflow 整合。這些範本會從 Cloud Storage 讀取資料,並將資料載入 BigQuery、PostgreSQL 適用的 Cloud SQL 或 Spanner。這些範本的用途是在目的地中,維護最新的複製來源資料表。這些範本可在 Dataflow UI 中使用,專為 Datastream 產生的檔案而建構,可立即處理。
  • Cloud Storage:Datastream 與 Cloud Storage 整合,可將資料寫入 Cloud Storage 做為變更串流目的地。
  • Cloud SQL 和 Spanner:使用 Datastream 和 Dataflow 範本,在資料庫中維護最新的複製資料表。
Dataflow 的 Datastream 到 BigQuery 範本是否限制 data manipulation language (DML) 作業數量? 否。範本會使用串流資料即時插入 API 將資料載入 BigQuery。因此 DML 作業數量沒有限制。不過,仍須遵守部分配額限制。

安全性與連線能力

問題 答案
Datastream 是否能安全處理機密資料? Datastream 支援多種安全的私人連線設定,可保護從來源串流至目的地的傳輸中資料。資料複製後,預設會加密,並採用 BigQuery 或 Cloud Storage 的安全控管機制。Datastream 緩衝的所有資料都會在靜態時加密。
哪些可用的連線選項可讓您連接來源的資料串流?

您可以設定三種連線方式:

  • IP 許可清單:這個方法會在來源上將 Datastream 的區域性 IP 位址加入許可清單,提供公開連線。建立串流時,Datastream 會在使用者介面中顯示這些 IP 位址。
  • 轉送 SSH 通道:這個方法除了將區域 IP 位址加入許可清單,還會使用客戶設定的 SSH 堡壘,透過公用網路提供安全連線。
  • 透過虛擬私有雲對接建立私人連線:使用這個方法,透過 Google Cloud的內部網路連線至 Google Cloud託管的資料庫,或在 Datastream 的私人網路與貴組織的 Google Cloud 虛擬私有雲之間建立虛擬私有雲對接,充分運用現有的 VPN 或互連網路連線。
如何限制資料串流處理機密資料?

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

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

Datastream 如何確保資料庫憑證安全? 無論您是使用 Secret Manager 儲存密碼,還是在建立連線設定檔時手動輸入密碼,所有使用者中繼資料在傳輸和靜態時都會加密,並由 Google 儲存在專屬儲存系統中。系統會追蹤及稽核這類中繼資料的存取情形。
為什麼「建立私人連線設定」頁面指出,您必須將 roles/compute.networkAdmin 角色授予 Datastream 服務帳戶,才能在 Shared VPC 建立私人連線設定? 只有在建立虛擬私有雲對接時,才需要 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 介面做為私人連線設定。Private Service Connect 介面是一種資源,可讓供應商虛擬私有雲網路連線至用戶虛擬私有雲網路中的網路連結,以及接收來自該網路連結的連線。詳情請參閱「設定 Private Service Connect 介面」。

監控 Datastream

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

定價

問題 答案
Datastream 如何計費?

Datastream 的價格是根據從來源處理到目的地的資料量 (GB) 計算。

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

如何計算資料量? 費用是依據 Datastream 處理的資料量計算。Datastream 只會針對串流至目的地的資料收費。
如果搭配 BigQuery 或 Dataflow 使用 Datastream,您需要支付哪些費用? 每項服務的定價和收費方式各不相同。

其他資訊

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

後續步驟