Azure Cosmos DB 中的變更摘要 \(部分機器翻譯\)

適用於:NoSQL MongoDB Cassandra Gremlin

Azure Cosmos DB 中的變更摘要是容器變更發生順序的持續性記錄。 Azure Cosmos DB 中的變更摘支援的運作方式是接聽 Azure Cosmos DB 容器是否有變更。 接著依修改的順序來輸出已變更文件的排序清單。 持續性變更可透過非同步或遞增的方式處理,而輸出可以散發給一或多個取用者進行平行處理。

深入了解變更摘要設計模式

支援的 API 和用戶端 SDK

在下列 Azure Cosmos DB SDK 中,目前支援變更摘要功能。

用戶端驅動程式 NoSQL Apache Cassandra MongoDB Apache Gremlin Table PostgreSQL
.NET 圖示,表示 NoSQL 版 API 的 .NET SDK 支援這項功能。 圖示,指出適用於 Apache Cassandra 之 API 的 .NET SDK 支援這項功能。 圖示,指出適用於 MongoDB 之 API 的 .NET SDK 支援這項功能。 圖示,指出適用於 Apache Gremlin 之 API 的 .NET SDK 支援這項功能。 圖示,表示數據表 API 的 .NET SDK 不支援這項功能。 圖示,指出適用於 PostgreSQL 之 API 的 .NET SDK 不支援這項功能。
Java 圖示,指出 NoSQL 版 API 的 Java SDK 支援這項功能。 圖示,指出適用於 Apache Cassandra 之 API 的 Java SDK 支援這項功能。 圖示,指出適用於 MongoDB 的 Java SDK 支援這項功能。 圖示,表示 Apache Gremlin API 的 Java SDK 支援這項功能。 圖示,表示適用於數據表之 API 的 Java SDK 不支援這項功能。 圖示,表示適用於 PostgreSQL 之 API 的 Java SDK 不支援這項功能。
Python 圖示,指出適用於 NoSQL 的 Python SDK 支援這項功能。 圖示,指出適用於 Apache Cassandra 之 API 的 Python SDK 支援這項功能。 圖示,指出適用於 MongoDB 之 API 的 Python SDK 支援這項功能。 圖示,指出適用於 Apache Gremlin 之 API 的 Python SDK 支援這項功能。 圖示,表示適用於數據表之 API 的 Python SDK 不支援這項功能。 圖示,指出適用於 PostgreSQL 之 API 的 Python SDK 不支援這項功能。
Node/JavaScript 圖示,表示 NoSQL API 的 JavaScript SDK 支援此功能。 圖示,指出適用於 Apache Cassandra 之 API 的 JavaScript SDK 支援這項功能。 圖示,指出適用於 MongoDB 的 API 的 JavaScript SDK 支援這項功能。 圖示,指出 Apache Gremlin API 的 JavaScript SDK 支援此功能。 圖示,表示適用於數據表之 API 的 JavaScript SDK 不支援這項功能。 圖示,表示適用於 PostgreSQL 的 API 的 JavaScript SDK 不支援此功能。

使用變更摘要

您可以搭配變更摘要使用下列選項:

變更摘要適用於 Azure Cosmos DB 容器的分割區索引鍵範圍。 這允許將其配送給一或多個取用者以進行平行處理,如下圖所示。

Azure Cosmos DB 變更摘要的分散式處理

注意

使用變更摘要處理器時,分割區索引鍵範圍會對應至實體分割區,而在使用提取模型時會對應至 FeedRanges

變更摘要的功能

  • 根據預設,所有 Azure Cosmos DB 帳戶都會啟用變更摘要。

  • 有多種變更摘要模式,其中有些需要額外的設定才能啟用。

  • 與任何其他 Azure Cosmos DB 作業一樣,您可以在與您的 Azure Cosmos DB 帳戶相關聯的任何區域中,使用佈建輸送量以從變更摘要進行讀取。

  • 變更摘要包括對容器內項目進行的插入與更新作業。 如果您要使用所有版本和刪除模式 (預覽),則也會從刪除作業和 TTL 到期取得變更。

  • 每個變更都只會在變更摘要中出現一次,而且用戶端必須管理檢查點邏輯。 如果想要避免複雜的檢查點管理作業,變更摘要處理器提供了自動檢查點和「至少一次」語意。 如需詳細資訊,請參閱搭配使用變更摘要與變更摘要處理器文章。

  • Azure Cosmos DB 容器的分割區索引鍵範圍可以平行使用變更。 此功能可讓多個取用者平行處理來自大型容器的變更。

  • 應用程式可以在同一個容器上同時要求多個變更摘要。

  • 您可以自訂變更摘要的起點,而且每個模式都有不同的選項。

變更摘要中項目的排序順序

變更摘要項目會按修改時間順序排列。 每個分割區索引鍵可保障依此排序順序,而跨分割區索引鍵值順序不是固定的。

注意

針對 多區域寫入 帳戶,有兩個時間戳:

  • 在本機區域中寫入記錄的伺服器 Epoch 時間。 這會記錄為 _ts
  • 確認沒有衝突的 Epoch 時間,或該記錄的 中樞區域中 已解決衝突。 這會記錄為 crts

變更摘要項目的順序由 crts所記錄。

多重區域 Azure Cosmos DB 帳戶中的變更摘要

在多區域 Azure Cosmos DB 帳戶中,一個區域中的變更適用於所有區域。 如果寫入區域進行容錯移轉,則變更摘要會跨手動容錯移轉作業運作,而且會連續運作。 針對具有多個寫入區域的帳戶,不保證何時可以使用變更。 如果另一個區域中有較新的變更,則會以最新版本模式卸除相同文件的傳入變更,而且將會以所有版本和刪除模式來擷取所有變更。

變更摘要模式

有兩種變更摘要模式可用:最新版本模式以及所有版本和刪除模式。 用來讀取變更摘要的模式可決定從哪些作業擷取變更,以及每個變更可用的中繼資料。 針對相同的 Azure Cosmos DB 容器,可以跨多個應用程式以不同模式取用變更摘要。

最新版本模式

在最新版本的變更摘要模式中,您會看到摘要中所有項目的最新插入或更新變更,而且在容器存留期間都可以使用該摘要。 未指出所給定的變更來自插入還是更新作業,而且不會擷取刪除。 您可以從任何時間點讀取變更,最遠可回到容器的原點。 不過,如果刪除項目,則會將其從變更摘要中移除。 若要深入了解,請參閱最新版本變更摘要模式一文。

所有版本和刪除模式 (預覽)

所有版本和刪除模式可讓您從建立、更新和刪除來查看項目的所有變更。 您可以依發生順序來取得每個項目變更的記錄,包括變更摘要讀取之間的項目中繼變更。 若要從處於所有版本和刪除模式的變更摘要進行讀取,您必須針對 Azure Cosmos DB 帳戶設定連續備份,這會建立 Azure Cosmos DB 所有版本和刪除變更摘要。 在此模式中,您只能讀取針對帳戶所設定的連續備份期間內發生的變更。 若要深入了解,請參閱所有版本和刪除變更摘要模式一文,包括如何在預覽版中註冊。

Cassandra API 和 MongoDB API 中的變更摘要

變更摘要功能會呈現為適用於 MongoDB 的 API 中的變更資料流,並在適用於 Cassandra 的 API 中使用述詞進行查詢。 若要深入了解適用於 MongoDB 的 API 的實作詳細資料,請參閱 Azure Cosmos DB API for MongoDB 中的變更資料流

原生 Apache Cassandra 提供異動資料擷取 (CDC),這是一種標示特定資料表以進行封存的機制,而且會在達到 CDC 記錄的可設定磁碟大小之後,拒絕那些資料表的寫入。 Azure Cosmos DB for Apache Cassandra 中的變更摘要功能可增強透過 CQL 使用述詞查詢變更的能力。 若要深入了解實作詳細資料,請參閱 Azure Cosmos DB for Apache Cassandra 中的變更摘要

測量變更摘要的要求單位耗用量

變更摘要適用於每個容器,不論是否已使用。 變更摘要的唯一成本是每個要求的租用容器佈建輸送量和 RU。 使用 Azure 監視器測量變更摘要的要求單位 (RU) 耗用量。 如需詳細資訊,請參閱 監視 Azure Cosmos DB 中的輸送量或要求單位使用量

下一步

您現在可以在下列文章中繼續深入了解變更摘要: