常見問題

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

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

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

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

Datastream 是一項無伺服器且易於使用的變更資料擷取 (CDC) 和複製服務。Datastream 可將關聯式資料庫來源 (例如 PostgreSQL 適用的 AlloyDB、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. 按一下「物件」分頁標籤。

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

如需其他物件層級指標,請前往 Cloud Monitoring。詳情請參閱 Cloud Monitoring 說明文件

什麼是變更串流,與複製有何不同?

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

在 Datastream 脈絡中,「複製」是指目的地中來源資料表的 1:1 最新表示法。舉例來說,Oracle 中的資料表會持續將變更內容複製到 BigQuery 資料表,而 BigQuery 資料表會使用從 Oracle 資料表串流的變更內容,保持最新狀態。複製作業會運用變更串流,方法是取用每個變更事件,並用來更新目的地。Datastream 可直接將資料複製到 BigQuery,並透過與 Dataflow 整合,支援 Cloud SQL 和 Spanner 等其他目的地。方法是運用範本從 Cloud Storage 提取變更串流事件,並據此更新目的地資料表。

Datastream 是否需要在來源上安裝代理程式? 您不必在來源上安裝代理程式。Datastream 會使用現有介面 (例如 Oracle LogMiner) 從來源取得資料。
單一串流中可以包含多少個表格? 單一串流最多可處理 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 不會複製整個記錄檔,而是直接從資料庫伺服器查詢記錄檔,並只將指定資料表的變更複製到目的地。
資料串流可處理的資料有哪些限制?

一般限制和特定資料庫來源適用的限制。

一般限制包括:

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

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

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

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

統一類型代表所有可能來源類型的無損超集,而正規化表示可以來源通用的方式,以最少的工作量處理不同來源的資料,並在下游查詢。

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

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

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

資料串流會鎖定資料庫表格嗎?

不需要。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 資料庫? 是的,不過,您無法使用 Datastream,透過 Oracle Real Application Clusters (RAC) 環境中的單一用戶端存取名稱 (SCAN) 功能,直接連線至資料庫。如要解決這項限制,請直接連線至其中一個節點,或使用 Oracle Connection Manager。您也可以使用 HAProxy 等反向 Proxy 解決方案建立私人連線設定。

PostgreSQL 來源行為和限制

問題 答案
Datastream 如何從 PostgreSQL 擷取資料? Datastream 會使用 PostgreSQL 的邏輯解碼功能,從 PostgreSQL 擷取變更事件
Datastream 是否支援從 PostgreSQL 適用的 AlloyDB 或 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 資料庫複製資料?

如要從 SQL Server 資料庫複製資料,您必須將下列角色和權限授予 Datastream 使用者:

變更資料表 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 預設會納入標準物件,而自訂物件則是由使用者建立,用於儲存特定用途的資料。

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

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

BigQuery 目的地行為

問題 答案
Datastream 和 BigQuery 如何共同運作,從來源資料庫複製變更? Datastream 會持續讀取來源資料庫的變更串流,並使用 Storage Write API 將 upsert 和刪除事件串流至 BigQuery 目的地資料表。然後,BigQuery 會根據資料表過時程度設定,將變更套用至資料表。
BigQuery 如何套用資料操縱語言 (DML) 作業?
  • 在「僅附加」模式中,資料會以變更串流的形式附加至 BigQuery,每個 INSERTUPDATE-INSERTUPDATE-DELETEDELETE 事件各佔一行。
  • 在「合併」模式 (預設) 中,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 來源:

  • ,Datastream 會從中擷取 CDC 複製作業中的事件。log_file
  • 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、PostgreSQL 適用的 Cloud SQL 或 Spanner。這些範本的用途是在目的地中,維護最新複製的來源資料表。這些範本可在 Dataflow 使用者介面中找到,專為 Datastream 產生的檔案而建構,可直接進行處理。
  • Cloud Storage:Datastream 會將資料寫入 Cloud Storage,做為變更串流目的地。
  • Cloud SQL 和 Spanner:使用 Datastream 和 Dataflow 範本,即可在資料庫中維護最新複製的資料表。
Dataflow 中的 Datastream 到 BigQuery 範本是否對資料操縱語言 (DML) 作業數量設有限制? 否。範本會使用串流插入 API,將資料載入 BigQuery。因此 DML 作業次數沒有限制。不過,仍須遵守部分配額限制

安全性與連線

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

你可以設定三種連線方式

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

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 時可能遇到的常見問題。

後續步驟