Azure Cosmos DB 分析存放區的異動資料擷取功能

適用於:NoSQL MongoDB

Azure Cosmos DB 分析存放區的異動資料擷取 (CDC) 功能,可讓您從分析存放區有效率地取用已變更 (已插入、已更新和已刪除) 資料的連續和累加摘要。 此功能與 Azure Synapse Analytics 和 Azure Data Factory 緊密整合,可提供適用於大量資料磁碟區的可調整無程式碼體驗。 由於異動資料擷取功能是以分析存放區為基礎,因此不會取用已佈建的 RU、不會影響您的交易工作負載、提供較低的延遲,且 TCO 更低。

Azure Cosmos DB 分析存放區的異動資料擷取功能,可以使用 Azure Synapse Analytics 或 Azure Data Factory 資料流程寫入各種接收器。

Diagram of the analytical store in Azure Cosmos DB and how it, with change data capture, can write to various first and third-party target services.

如需詳細資訊了解對應資料流支援的接收器類型,請參閱資料流程支援的接收器類型

除了將分析存放區的累加資料摘要提供到各種目標,異動資料擷取還支援下列功能:

  • 支援擷取刪除和中繼更新
  • 能夠篩選特定作業類型的變更摘要 (插入 | 更新 | 刪除 | TTL)
  • 支援透過來源查詢在變更摘要套用篩選、投影和轉換
  • 可同時取用相同容器的多個變更摘要
  • 容器中的每個變更都會在異動資料擷取摘要中顯示一次,而且系統內部會為您管理檢查點
  • 您可依據「從一開始」、「從指定的時間戳記」或「從現在開始」同步變更
  • 資料變更時並沒有修正資料保留期間的相關限制

使用內部管理檢查點有效率的進行累加資料擷取

Cosmos DB 容器中的每個變更都會在 CDC 摘要中顯示一次,而且系統內部會為您管理檢查點。 這有助於解決根據「_ts」值使用自訂檢查點這種常見模式的下列缺點:

  • 「_ts」篩選條件套用至資料檔案,但該資料檔案不一定保證最低限度的資料掃描。 新 CDC 功能中的內部管理 GLSN 型檢查點,只需依據中繼資料即可確保完成累加資料識別,因此能夠保證每個串流進行最低限度的資料掃描。

  • 分析存放區同步流程無法保證以「_ts」為基礎的順序,表示在某些情況下,累加記錄的「_ts」會小於最後一個檢查點的「_ts」,而且可能會在累加串流中遺漏。 新 CDC 不會考慮「_ts」來識別累加記錄,因此保證不會遺漏任何累加記錄。

功能

Azure Cosmos DB 分析存放區的異動資料擷取支援下列主要功能。

擷取從一開始的變更

選取 Start from beginning 選項時,初始載入會在第一次執行中包含容器資料的完整快照集,並在後續執行中擷取已變更或累加資料。 這會受限於 analytical TTL 屬性,此外從分析存放區移除的文件 TTL 不會包含在變更摘要中。 範例:假設容器的 analytical TTL 設定為 31536000 秒 (相當於 1 年)。 如果您為此容器建立 CDC 流程,則初始載入只會包含時間小於 1 年的文件。

從指定的時間戳記擷取變更

選取 Start from timestamp 選項時,初始載入會處理指定時間戳記的資料,並在後續執行中擷取累加或變更的資料。 此流程也會受限於 analytical TTL 屬性。

從現在開始擷取變更

選取 Start from timestamp 選項時,不會擷取容器過去的所有作業。

擷取刪除、中繼更新和 TTL

分析存放區的異動資料擷取功能,會擷取刪除、中繼更新和 TTL 作業。 擷取的刪除和更新可套用於支援刪除和更新作業的接收器。 {_rid} 值可唯一識別記錄,因此將 {_rid} 指定為接收器端的索引鍵資料列,就會讓更新和刪除作業反映在接收器上。

請注意,TTL 作業視為刪除。 請查看來源設定一節以了解更多詳細資訊,以及接收器內對中繼更新和刪除的支援。

篩選特定作業類型的變更摘要

您可篩選特定作業類型的異動資料擷取摘要。 例如,您可以選擇只擷取插入和更新作業,藉此忽略使用者刪除和 TTL 刪除作業。

透過來源查詢在變更摘要套用篩選、投影和轉換

您可以選擇使用來源查詢來指定篩選條件、投影和轉換,而這一切都可能向下推送至單欄式分析存放區。 以下是只會使用篩選條件 Category = 'Urban' 擷取累加記錄的來源查詢範例。 此範例查詢只會投影五個欄位,並套用簡單的轉換:

SELECT ProductId, Product, Segment, concat(Manufacturer, '-', Category) as ManufacturerCategory
FROM c 
WHERE Category = 'Urban'

多個 CDC 流程

您可以建立多個流程來取用分析存放區的 CDC。 這種方法可彈性地支援不同情節和需求。 雖然某一個流程可能沒有資料轉換和多個接收器,但另一個流程可能會有資料壓平合併和一個接收器。 而這兩個流程可平行執行。

輸送量隔離、減少延遲和降低 TCO

Cosmos DB 分析存放區作業不會取用佈建的 RU,因此不會影響您的交易工作負載。 搭配使用分析存放區的異動資料擷取也可減少延遲及降低 TCO。 減少延遲是因為分析存放區能夠為資料處理提供更理想的平行處理原則,而降低整體 TCO 則可讓您在瞬息萬變的經濟條件下提高成本效益。

案例

以下是您可使用異動資料擷取和分析存放區的常見情節。

從 Cosmos DB 取用累加資料

如果您目前使用或計劃使用下列項目,就可使用分析存放區異動資料擷取:

  • 使用 Azure Data Factory 資料流程或複製活動進行累加資料擷取。
  • 使用 Azure Data Factory 進行一次批次處理。
  • 串流 Cosmos DB 資料
    • 分析存放區最多有 2 分鐘延遲,以同步處理交易存放區資料。 您可以每分鐘排程 Azure Data Factory 中的資料流程。
    • 如果您需要在沒有上述延遲的情況下進行串流,建議您使用交易存放區的變更摘要功能。
  • 擷取刪除、累加變更、在 Cosmos DB 資料上套用篩選條件。
    • 如果您使用 Azure Functions 觸發程序或任何其他選項搭配變更摘要,而且想要擷取刪除、累加變更、套用轉換等,建議您在分析存放區變更資料擷取。

累加摘要至您選擇的分析平台

異動資料擷取功能可實現端對端分析解決方案,讓您享有彈性以任何支援的接收器類型使用 Azure Cosmos DB 資料。 如需詳細資訊了解支援的接收器類型,請參閱資料流程支援的接收器類型。 異動資料擷取也可讓您將 Azure Cosmos DB 資料帶入中央資料湖,並將資料與其他不同來源的資料聯結。 您可以在 Azure Synapse Analytics 或 Azure Data Factory 中壓平合併資料、分割資料,並套用更多轉換。

Azure Cosmos DB for MongoDB 容器的異動資料擷取

Azure Data Factory 資料流程內部尚未提供適用於 MongoDB 的 API 連結服務介面。 您可透過 Azure Cosmos DB for NoSQL 連結服務介面使用適用於 MongoDB 帳戶端點的 API 作為因應措施,直到直接支援 Mongo 連結服務為止。

在新的 NoSQL 連結服務介面中,選取 [手動輸入] 以提供 Azure Cosmos DB 帳戶資訊。 在此請使用帳戶的 NoSQL 文件端點 (範例:https://<account-name>.documents.azure.com:443/),而不是 Mongo DB 端點 (範例: mongodb://<account-name>.mongo.cosmos.azure.com:10255/)

下一步