Modalità del feed di modifiche in Azure Cosmos DB

SI APPLICA A: NoSQL

Azure Cosmos DB offre due modalità di feed di modifiche. Ogni modalità offre la stessa funzionalità di base. Le differenze includono le operazioni acquisite nel feed, i metadati disponibili per ogni modifica e il periodo di conservazione delle modifiche. È possibile usare il feed di modifiche in modalità diverse in più applicazioni per lo stesso contenitore di Azure Cosmos DB per soddisfare i requisiti di ogni carico di lavoro. Ogni singola applicazione del feed di modifiche può essere configurata solo per leggere il feed di modifiche in un'unica modalità. L'utilizzo del feed di modifiche in una modalità non impedisce l'utilizzo del feed di modifiche in un'altra modalità in un'altra applicazione.

Nota

Si desidera inviare commenti e suggerimenti sulle modalità del feed di modifiche? Saremo lieti di riceverli. È possibile condividere i feedback direttamente con il team di progettazione di Azure Cosmos DB: cosmoschangefeed@microsoft.com.

Modalità di feed delle modifiche alla versione più recente

La modalità versione più recente è un record permanente delle modifiche apportate agli elementi da creazione e aggiornamenti. Si ottiene la versione più recente di ogni elemento nel contenitore. Ad esempio, se viene creato un elemento e quindi aggiornato prima di leggere il feed di modifiche, nel feed di modifiche viene visualizzata solo la versione aggiornata. Le eliminazioni non vengono acquisite come modifiche e, quando un elemento viene eliminato, non è più disponibile nel feed. La modalità di feed delle modifiche della versione più recente è abilitata per impostazione predefinita ed è compatibile con tutti gli account Azure Cosmos DB, ad eccezione dell'API per Tabella e DELL'API per PostgreSQL. Questa modalità era in precedenza il modo predefinito per utilizzare il feed di modifiche.

Tutte le versioni ed elimina la modalità feed di modifiche (anteprima)

Tutte le versioni ed eliminazioni modalità (anteprima) è un record permanente di tutte le modifiche apportate agli elementi da operazioni di creazione, aggiornamento ed eliminazione. 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. Ad esempio, se viene creato e aggiornato un elemento prima di leggere il feed di modifiche, nel feed di modifiche vengono visualizzati sia le versioni di creazione che di aggiornamento dell'elemento. Per leggere dal feed di modifiche in tutte le versioni ed eliminazioni, è necessario avere configurato backup continui per l'account Azure Cosmos DB. L'attivazione di backup continui crea tutte le versioni ed elimina il feed di modifiche. È possibile leggere solo le modifiche apportate entro il periodo di backup continuo quando si usa questa modalità feed di modifiche. Questa modalità è compatibile solo con gli account Azure Cosmos DB for NoSQL. Altre informazioni su come iscriversi per l'anteprima.

Casi d'uso del feed di modifiche

La modalità versione più recente offre un modo semplice per elaborare le modifiche in tempo reale e cronologia agli elementi in un contenitore con la possibilità di tornare alle modifiche dall'inizio del contenitore.

Di seguito sono riportati gli scenari più adatti a questa modalità:

  • Migrazioni di un intero contenitore in una posizione secondaria.

  • Possibilità di rielaborare le modifiche dall'inizio del contenitore.

  • Elaborazione in tempo reale delle modifiche apportate agli elementi in un contenitore risultante dalle operazioni di creazione e aggiornamento.

  • Carichi di lavoro che non devono acquisire eliminazioni o modifiche intermedie tra le letture.

Funzionalità di ogni modalità

Oltre alle funzionalità comuni in tutte le modalità del feed di modifiche, ogni modalità feed di modifiche presenta le caratteristiche seguenti:

  • Il feed delle modifiche include operazioni di inserimento e aggiornamento effettuate agli elementi nel contenitore.

  • Questa modalità di feed di modifiche non registra le eliminazioni. È possibile acquisire le eliminazioni impostando un flag di eliminazione temporanea all'interno degli elementi anziché eliminarli direttamente. Ad esempio, è possibile aggiungere un attributo nell'elemento denominato deleted con il valore true e quindi impostare un valore TTL (Time to Live) sull'elemento. Il feed di modifiche lo acquisisce come aggiornamento e l'elemento viene eliminato automaticamente alla scadenza del TTL. In alternativa, è possibile impostare un periodo di scadenza finito per gli elementi usando la funzionalità TTL. Con questa soluzione è necessario elaborare le modifiche in un intervallo di tempo minore rispetto al periodo di scadenza TTL.

  • Solo la modifica più recente di un determinato elemento viene inclusa nel feed di modifiche. Le modifiche intermedie potrebbero non essere disponibili.

  • Quando un elemento viene eliminato, non è più disponibile nel feed di modifiche.

  • Le modifiche possono essere sincronizzate da qualsiasi punto nel tempo e non è previsto un periodo di conservazione dei dati fisso per cui sono disponibili le modifiche.

  • e non è possibile filtrare il feed di modifiche per un tipo specifico di operazione. Una possibile alternativa consiste nell'aggiungere un "marcatore soft" sull'elemento per gli aggiornamenti e filtrare in base al marcatore quando si elaborano gli elementi nel feed di modifiche.

  • Il punto iniziale per leggere il feed di modifiche può essere dall'inizio del contenitore, da un punto nel tempo, da "ora" o da un checkpoint specifico. La precisione dell'ora di inizio è di circa cinque secondi.

Usare il feed di modifiche

Ogni modalità è compatibile con metodi diversi per leggere il feed di modifiche per ogni lingua.

È possibile usare i modi seguenti per usare le modifiche dal feed di modifiche nella modalità versione più recente:

Metodo per leggere il feed di modifiche .NET Java Python Node.JS
Modello di pull del feed di modifiche
Processore dei feed di modifiche No No
Trigger di Funzioni di Azure

Analizzare l'oggetto risposta

Nella modalità versione più recente, l'oggetto risposta predefinito è una matrice di elementi modificati. Ogni elemento contiene i metadati standard per qualsiasi elemento di Azure Cosmos DB, inclusi _etag e _ts, con l'aggiunta di una nuova proprietà _lsn.

Il formato _etag è interno e non deve dipendere da esso perché può cambiare in qualsiasi momento. _ts è una modifica o un timestamp di creazione. È possibile usare _ts per un confronto cronologico. _lsn è un ID batch aggiunto solo per il feed di modifiche che rappresenta l'ID transazione. Molti elementi possono avere lo stesso _lsn.

ETag su FeedResponse è diverso da _etag visualizzato nell'elemento. _etag è un identificatore interno e viene usato per il controllo della concorrenza. La proprietà _etag rappresenta la versione dell'elemento, mentre la proprietà ETag viene usata per sequenziare il feed.

Passaggi successivi

Altre informazioni sul feed di modifiche sono disponibili negli articoli seguenti: