Azure Cosmos DB è il database multifunzionale di punta offerto dalla piattaforma Microsoft Azure. E' altamente scalabile, affidabile e performante e tra le sue ricche funzionalità dispone anche di un change feed dal quale è possibile leggere tutte le modifiche effettuati ai documenti, nel caso di container SQL, ma sono supportati anche altre tipologie di container.
Per leggere questo feed possiamo sfruttare l'SDK per i rispettivi linguaggi, oppure, data la natura del feed e delle potenziali attività da fare, sfruttare le Azure Function. Gli scenari di utilizzo possono essere molteplici: materializzare delle tabelle sulla base dei documenti modificati, avere uno storico delle modifiche fatte ai documenti, alimentare tabelle a scopi di reportistica, oppure distribuire i cambiamenti su più micro servizi.
Sfruttare il feed con le Azure Function è molto semplice. Basta, se usiamo il wizard online, utilizzare il trigger relativo.
Successivamente dobbiamo indicare le coordinate del Cosmos DB e della collezione da monitorare.
Nella figura possiamo vedere che ci viene chiesto anche il nome della collezione di lease, un container speciale usato per tenere traccia sullo stato del feed e per coordinare il lavoro delle function. Possiamo infatti scalare e consumare il feed contemporaneamente accingendo da più partizioni.
Possiamo a questo punto procedere al codice, il quale riceve come parametro uno o più documenti che sono stati modificati.
#r "Microsoft.Azure.Documents.Client" using System; using System.Collections.Generic; using Microsoft.Azure.Documents; public static void Run(IReadOnlyList<Document> documents, TraceWriter log) { if (documents != null && documents.Count > 0) { log.Verbose("Documents modified " + documents.Count); foreach (var d in documents) { log.Verbose("Id " + d.Id); } } }
Se proviamo ora a modificare uno o più documenti, possiamo vedere nel log la lista degli id cambiati.
Il motore riceve in batch i cambiamenti e riparte sempre dal punto in cui è rimasto, perciò anche in caso di interruzioni della function, non perdiamo i cambiamenti che si sono verificati.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare Tailwind CSS all'interno di React: primi componenti
Code scanning e advanced security con Azure DevOps
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Referenziare un @layer più alto in CSS
Usare le collection expression per inizializzare una lista di oggetti in C#
Utilizzare Azure AI Studio per testare i modelli AI
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Potenziare Azure AI Search con la ricerca vettoriale
Proteggere le risorse Azure con private link e private endpoints
Aggiungere interattività lato server in Blazor 8
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Creazione di componenti personalizzati in React.js con Tailwind CSS