Feed di modifiche in Azure Cosmos DB

SI APPLICA A: NoSQL MongoDB Cassandra Gremlin

Il feed di modifiche in Azure Cosmos DB è un record permanente delle modifiche apportate a un contenitore nell'ordine in cui si verificano. Il supporto del feed di modifiche in Azure Cosmos DB è in ascolto di eventuali modifiche in un contenitore di Azure Cosmos DB. Restituisce quindi l'elenco di documenti cambiati nell'ordine in cui sono stati modificati. Le modifiche permanenti possono essere elaborate in modo asincrono e incrementale e l'output può essere distribuito a uno o più consumer per l'elaborazione parallela.

Altre informazioni sui modelli di progettazione del feed di modifiche.

API e SDK client supportati

La funzionalità feed di modifiche è attualmente supportata negli SDK di Azure Cosmos DB seguenti.

Driver client NoSQL Apache Cassandra MongoDB Apache Gremlin Tabella PostgreSQL
.NET Icona che indica che questa funzionalità è supportata in .NET SDK per l'API per NoSQL. Icona che indica che questa funzionalità è supportata in .NET SDK per l'API per Apache Cassandra. Icona che indica che questa funzionalità è supportata in .NET SDK per l'API per MongoDB. Icona che indica che questa funzionalità è supportata in .NET SDK per l'API per Apache Gremlin. Icona che indica che questa funzionalità non è supportata in .NET SDK per l'API per la tabella. Icona che indica che questa funzionalità non è supportata in .NET SDK per l'API per PostgreSQL.
Java Icona che indica che questa funzionalità è supportata in Java SDK per l'API per NoSQL. Icona che indica che questa funzionalità è supportata in Java SDK per l'API per Apache Cassandra. Icona che indica che questa funzionalità è supportata in Java SDK per l'API per MongoDB. Icona che indica che questa funzionalità è supportata in Java SDK per l'API per Apache Gremlin. Icona che indica che questa funzionalità non è supportata in Java SDK per l'API per la tabella. Icona che indica che questa funzionalità non è supportata in Java SDK per l'API per PostgreSQL.
Python Icona che indica che questa funzionalità è supportata in Python SDK per l'API per NoSQL. Icona che indica che questa funzionalità è supportata in Python SDK per l'API per Apache Cassandra. Icona che indica che questa funzionalità è supportata in Python SDK per l'API per MongoDB. Icona che indica che questa funzionalità è supportata in Python SDK per l'API per Apache Gremlin. Icona che indica che questa funzionalità non è supportata in Python SDK per l'API per la tabella. Icona che indica che questa funzionalità non è supportata in Python SDK per l'API per PostgreSQL.
Node/JavaScript Icona che indica che questa funzionalità è supportata in JavaScript SDK per l'API per NoSQL. Icona che indica che questa funzionalità è supportata in JavaScript SDK per l'API per Apache Cassandra. Icona che indica che questa funzionalità è supportata in JavaScript SDK per l'API per MongoDB. Icona che indica che questa funzionalità è supportata in JavaScript SDK per l'API per Apache Gremlin. Icona che indica che questa funzionalità non è supportata in JavaScript SDK per l'API per la tabella. Icona che indica che questa funzionalità non è supportata in JavaScript SDK per l'API per PostgreSQL.

Utilizzo del feed di modifiche

È possibile utilizzare il feed di modifiche utilizzando le opzioni seguenti:

Il feed di modifiche è disponibile per gli intervalli di chiavi di partizione di un contenitore di Azure Cosmos DB. In questo modo è possibile distribuirlo tra uno o più consumer per l'elaborazione parallela, come illustrato nell'immagine seguente.

Elaborazione distribuita del feed delle modifiche di Azure Cosmos DB

Nota

Gli intervalli di chiavi di partizione vengono mappati alle partizioni fisiche quando si usa il processore del feed di modifiche e FeedRanges quando si usa il modello pull.

Funzionalità del feed di modifiche

  • Il feed di modifiche è abilitato per impostazione predefinita per tutti gli account Azure Cosmos DB.

  • Esistono più modalità di feed di modifiche, alcune delle quali richiedono una configurazione aggiuntiva per l'abilitazione.

  • È possibile usare la velocità effettiva di provisioning per leggere dal feed di modifiche, proprio come ogni altra operazione di Azure Cosmos DB, in ogni area associata all'account Azure Cosmos DB.

  • Il feed di modifiche include operazioni di inserimento e aggiornamento eseguite sugli elementi all'interno del contenitore. Se si usa la modalità tutte le versioni e le eliminazioni (anteprima), si ottengono anche le modifiche dalle operazioni di eliminazione e dalle scadenze della durata TTL.

  • Ogni modifica viene visualizzata esattamente una sola volta nel feed di modifiche e i client devono gestire la logica di checkpoint. Per evitare la complessità del checkpoint di gestione, il processore del feed di modifiche fornisce funzionalità di checkpoint automatiche e semantica di tipo "at least once". Per altre informazioni, vedere l'articolo Utilizzo del feed di modifiche con il processore del feed di modifiche.

  • Le modifiche sono disponibili in parallelo per gli intervalli di chiavi di partizione di un contenitore di Azure Cosmos DB. Questa funzionalità consente a più consumer di elaborare le modifiche da contenitori di grandi dimensioni in parallelo.

  • Le applicazioni possono richiedere più feed di modifiche alla volta nello stesso contenitore.

  • Il punto di partenza per il feed di modifiche può essere personalizzato e sono disponibili diverse opzioni per ogni modalità.

Ordinamento degli elementi nel feed di modifiche

Gli elementi nel feed di modifiche sono ordinati in base all'ora di modifica. Questo ordinamento è garantito per ogni chiave di partizione e non esiste un ordine garantito tra i valori delle chiavi di partizione.

Nota

Per gli account di scrittura in più aree, sono disponibili due timestamp:

  • Periodo del server in cui è stato scritto il record nell'area locale. Viene registrato come _ts.
  • Periodo in cui è stata confermata l'assenza di un conflitto o il conflitto è stato risolto nell'area dell'hub per tale record. Viene registrato come crts.

Gli elementi del feed di modifiche vengono inseriti nell'ordine registrato da crts.

Feed di modifiche in account Azure Cosmos DB in più aree

In un account Azure Cosmos DB in più aree, le modifiche in un'area sono disponibili in tutte le aree. Se viene eseguito il failover di un'area di scrittura, il feed di modifiche funziona nell'operazione di failover manuale ed è contiguo. Per gli account con più aree di scrittura, non esiste alcuna garanzia in merito al momento in cui saranno disponibili le modifiche. Le modifiche in ingresso allo stesso documento possono essere eliminate in modalità versione più recente se si è verificata una modifica più recente in un'altra area e tutte le modifiche verranno acquisite nella modalità tutte le versioni e le eliminazioni.

Modalità del feed di modifiche

Sono disponibili due modalità del feed di modifiche: la modalità versione più recente e la modalità tutte le versioni e le eliminazioni. La modalità in cui viene letto il feed di modifiche determina le operazioni da cui vengono acquisite le modifiche e i metadati disponibili per ogni modifica. È possibile utilizzare il feed di modifiche in modalità diverse in più applicazioni per lo stesso contenitore di Azure Cosmos DB.

Modalità versione più recente

Nella modalità versione più recente del feed di modifiche viene visualizzata la modifica più recente di un inserimento o un aggiornamento per tutti gli elementi nel feed e il feed rimane disponibile per la durata del contenitore. Non è possibile stabilire se una determinata modifica proviene da un'operazione di inserimento o aggiornamento e le eliminazioni non vengono acquisite. Le modifiche possono essere lette da qualsiasi momento nel tempo a partire dall'origine del contenitore. Tuttavia, se un elemento viene eliminato, viene rimosso dal feed di modifiche. Per altre informazioni, vedere l'articolo Modalità versione più recente del feed di modifiche.

Modalità tutte le versioni e le eliminazioni (anteprima)

La modalità tutte le versioni e le eliminazioni consente di visualizzare tutte le modifiche apportate agli elementi per creazioni, aggiornamenti ed eliminazioni. Si ottiene un record di ogni modifica agli elementi nell'ordine in cui si è verificata, incluse le modifiche intermedie a un elemento tra le letture del feed di modifiche. Per leggere dal feed di modifiche nella modalità tutte le versioni e le eliminazioni, è necessario che siano configurati i backup continui per l'account Azure Cosmos DB, che crea il feed di modifiche tutte le versioni e le eliminazioni di Azure Cosmos DB. In questa modalità è possibile leggere solo le modifiche che si sono verificate entro il periodo di backup continuo configurato per l'account. Per altre informazioni, vedere l'articolo Modalità tutte le versioni e le eliminazioni del feed di modifiche.

Feed di modifiche nelle API per Cassandra e MongoDB

La funzionalità del feed di modifiche è disponibile come flusso di modifiche nell'API for MongoDB e come query con predicato nell'API for Cassandra. Per altre informazioni sui dettagli di implementazione per l'API for MongoDB, vedere Flussi di modifiche nell'API Azure Cosmos DB per MongoDB.

La versione nativa di Apache Cassandra include Change Data Capture (CDC), un meccanismo per contrassegnare tabelle specifiche per l'archiviazione e rifiutare operazioni di scrittura in tali tabelle quando viene raggiunta una dimensione su disco configurabile per il log di CDC. La funzionalità del feed di modifiche in Azure Cosmos DB for Apache Cassandra consente di eseguire query sulle modifiche con predicato tramite CQL. Per altre informazioni sui dettagli di implementazione, vedere Feed di modifiche in Azure Cosmos DB for Apache Cassandra.

Misurazione del consumo di unità richiesta del feed di modifiche

Il feed di modifiche è disponibile in ogni contenitore indipendentemente dal fatto che venga usato. L'unico costo per il feed di modifiche è la velocità effettiva del contenitore di lease di cui è stato effettuato il provisioning e le UR per ogni richiesta. Usare Monitoraggio di Azure per misurare il consumoo di unità richiesta (UR) del feed di modifiche. Per altre informazioni, vedere Monitorare l'utilizzo della velocità effettiva o delle unità richiesta in Azure Cosmos DB.

Passaggi successivi

È possibile ottenere altre informazioni sul feed di modifiche negli articoli seguenti: