Change Data Capture nell'archivio analitico di Azure Cosmos DB
SI APPLICA A: NoSQL MongoDB
Change Data Capture (CDC) nell'archivio analitico di Azure Cosmos DB consente di usare in modo efficiente un feed continuo e incrementale di dati modificati (inseriti, aggiornati ed eliminati) dall'archivio analitico. Perfettamente integrato con Azure Synapse e Azure Data Factory, offre un'esperienza senza codice scalabile per un volume di dati elevato. Poiché la funzionalità Change Data Capture si basa sull'archivio analitico, non utilizza le UR di cui è stato effettuato il provisioning, non influisce sui carichi di lavoro transazionali, offre una latenza inferiore e ha un costo TCO inferiore.
La funzionalità Change Data Capture nell'archivio analitico di Azure Cosmos DB può scrivere in vari sink usando un flusso di dati di Azure Synapse o Azure Data Factory.
Per altre informazioni sui tipi di sink supportati in un flusso di dati di mapping, vedere i tipi di sink supportati dal flusso di dati.
Oltre a fornire feed di dati incrementali dall'archivio analitico a destinazioni diverse, Change Data Capture supporta le funzionalità seguenti:
- Supporta l'acquisizione di eliminazioni e aggiornamenti intermedi
- Possibilità di filtrare il feed di modifiche per un tipo specifico di operazione (Insert | Update | Delete | TTL)
- Supporta l'applicazione di filtri, proiezioni e trasformazioni nel feed di modifiche tramite query di origine
- Più feed di modifiche nello stesso contenitore possono essere usati contemporaneamente
- Ogni modifica nel contenitore viene visualizzata una sola volta nel feed change data capture e i checkpoint vengono gestiti internamente
- Le modifiche possono essere sincronizzate "dall'inizio" o "da un timestamp" specificato o "da ora"
- Non esiste alcuna limitazione per il periodo di conservazione dei dati fisso per il quale sono disponibili modifiche
Acquisizione efficiente dei dati incrementali con checkpoint gestiti internamente
Ogni modifica nel contenitore Cosmos DB viene visualizzata esattamente una volta nel feed CDC e i checkpoint vengono gestiti internamente. Ciò consente di risolvere gli svantaggi seguenti del modello comune di uso di checkpoint personalizzati in base al "valore _ts":
Il "filtro _ts" viene applicato ai file di dati che non garantiscono sempre un'analisi minima dei dati. I checkpoint basati su GLSN gestiti internamente nella nuova funzionalità CDC assicurano che l'identificazione incrementale dei dati venga eseguita solo in base ai metadati e quindi garantisce un'analisi minima dei dati in ogni flusso.
Il processo di sincronizzazione dell'archivio analitico non garantisce "_ts" ordinamento basato, il che significa che potrebbero verificarsi casi in cui il "_ts" di un record incrementale è minore dell'ultimo "_ts" di checkpoint e potrebbe essere perso nel flusso incrementale. Il nuovo CDC non considera "_ts" per identificare i record incrementali e garantisce quindi che nessuno dei record incrementali venga perso.
Funzionalità
Change Data Capture nell'archivio analitico di Azure Cosmos DB supporta le funzionalità principali seguenti.
Acquisizione delle modifiche dall'inizio
Quando l'opzione Start from beginning
è selezionata, il caricamento iniziale include uno snapshot completo dei dati del contenitore nella prima esecuzione e i dati modificati o incrementali vengono acquisiti nelle esecuzioni successive. Ciò è limitato dalla proprietà analytical TTL
e i documenti rimossi dall'archivio analitico non sono inclusi nel feed di modifiche. Esempio: si prenda ad esempio un contenitore con analytical TTL
impostato su 31536000 secondi, equivalente a un anno. Se si crea un processo CDC per questo contenitore, nel caricamento iniziale verranno inclusi solo i documenti più recenti di un anno.
Acquisizione di modifiche da un timestamp specificato
Quando si seleziona l'opzione Start from timestamp
, il caricamento iniziale elabora i dati dal timestamp specificato e i dati incrementali o modificati vengono acquisiti nelle esecuzioni successive. Questo processo è limitato anche dalla proprietà analytical TTL
.
Acquisizione delle modifiche dal momento attuale
Quando l'opzione Start from timestamp
è selezionata, tutte le operazioni precedenti del contenitore non vengono acquisite.
Acquisizione di eliminazioni, aggiornamenti intermedi e TTL
La funzionalità Change Data Capture per l'archivio analitico acquisisce eliminazioni, aggiornamenti intermedi e operazioni TTL. Le eliminazioni acquisite e gli aggiornamenti possono essere applicati ai sink che supportano operazioni di eliminazione e aggiornamento. Il valore {_rid} identifica in modo univoco i record e quindi specificando {_rid} come colonna chiave sul lato Sink, le operazioni di aggiornamento ed eliminazione verranno riflesse nel sink.
Si noti che le operazioni TTL sono considerate eliminazioni. Controllare la sezione Impostazioni di origine per controllare i dettagli della modalità e il supporto per gli aggiornamenti intermedi ed eliminazioni nei sink.
Filtrare il feed di modifiche per un tipo specifico di operazione
È possibile filtrare il feed Change Data Capture per un tipo specifico di operazione. Ad esempio, è possibile acquisire in modo selettivo solo le operazioni di inserimento e aggiornamento, ignorando così le operazioni di eliminazione utente e TTL.
Applicazione di filtri, proiezioni e trasformazioni nel feed di modifiche tramite query di origine
Facoltativamente, è possibile usare una query di origine per specificare filtri, proiezioni e trasformazioni, che verrebbero tutti inseriti nell'archivio analitico a colonne. Di seguito è riportato un esempio di query di origine che acquisisce solo record incrementali con il filtro Category = 'Urban'
. Questa query di esempio proietta solo cinque campi e applica una trasformazione semplice:
SELECT ProductId, Product, Segment, concat(Manufacturer, '-', Category) as ManufacturerCategory
FROM c
WHERE Category = 'Urban'
Più processi CDC
È possibile creare più processi per utilizzare CDC nell'archivio analitico. Questo approccio offre flessibilità per supportare diversi scenari e requisiti. Mentre un processo potrebbe non avere trasformazioni di dati e più sink, un altro può avere dati flat e un sink. Possono anche essere eseguiti in parallelo.
Isolamento della velocità effettiva, bassa latenza e TCO inferiore
Le operazioni nell'archivio analitico di Cosmos DB non usano le UR di cui è stato effettuato il provisioning e quindi non influiscono sui carichi di lavoro transazionali. Change Data Capture con l'archivio analitico ha anche una latenza inferiore e un valore TCO inferiore. La latenza più bassa è attribuita all'archivio analitico consentendo un migliore parallelismo per l'elaborazione dei dati e riduce il TCO complessivo, consentendo di favorire l'efficienza dei costi in queste condizioni economiche in rapida evoluzione.
Scenari
Ecco scenari comuni in cui è possibile usare Change Data Capture e l'archivio analitico.
Utilizzo di dati incrementali da Cosmos DB
È possibile usare l'acquisizione dei dati delle modifiche dell'archivio analitico, se attualmente si usa o si prevede di usare:
- Acquisizione incrementale dei dati con flussi di dati di Azure Data Factory o attività di copia.
- Elaborazione batch una tantum con Azure Data Factory.
- Streaming dei dati di Cosmos DB
- L'archivio analitico ha una latenza massima di due minuti per sincronizzare i dati dell'archivio transazionale. È possibile pianificare i flussi di dati in Azure Data Factory ogni minuto.
- Se è necessario eseguire lo streaming senza la latenza precedente, è consigliabile usare la funzionalità feed di modifiche dell'archivio transazionale.
- Acquisizione di eliminazioni, modifiche incrementali, applicazione di filtri ai dati di Cosmos DB.
- Se si usano trigger di Funzioni di Azure o qualsiasi altra opzione con feed di modifiche e si vuole acquisire eliminazioni, modifiche incrementali, applicare trasformazioni e così via; è consigliabile Change Data Capture sull'archivio analitico.
Feed incrementale alla piattaforma analitica preferita
La funzionalità Change Data Capture consente una soluzione analitica end-to-end che offre la flessibilità necessaria per usare i dati di Azure Cosmos DB con uno dei tipi di sink supportati. Per altre informazioni sui tipi di sink supportati, vedere Tipi di sink supportati dal flusso di dati. Change Data Capture consente anche di inserire i dati di Azure Cosmos DB in un data lake centralizzato e di unire i dati con i dati di altre origini diverse. È possibile rendere flat i dati, partizionarli e applicare altre trasformazioni in Azure Synapse Analytics o Azure Data Factory.
Change Data Capture nei contenitori di Azure Cosmos DB for MongoDB
L'interfaccia del servizio collegato per l'API per MongoDB non è ancora disponibile nei flussi di dati di Azure Data Factory. È possibile usare l'endpoint dell'account dell'API per MongoDB con Azure Cosmos DB for NoSQL l'interfaccia del servizio collegato come soluzione alternativa fino a quando il servizio collegato Mongo non è supportato direttamente.
Nell'interfaccia per un nuovo servizio collegato NoSQL selezionare Immetti manualmente per fornire le informazioni sull'account Azure Cosmos DB. In questo caso, usare l'endpoint del documento NoSQL dell'account (esempio: https://<account-name>.documents.azure.com:443/
) anziché l'endpoint Mongo DB (esempio: mongodb://<account-name>.mongo.cosmos.azure.com:10255/
)