Azure Cosmos DB è il servizio di Microsoft che fornisce un database documentale e non solo, il tutto interamente gestito e altamente scalabile.
Quando carichiamo i documenti, se non diversamente indicato, essi vengono interamente indicizzati e questo ci permette di cercare in base ad ogni informazione che essi contengono in maniera puntuale e molto veloce, supportando anche di diversi GB di informazioni per partizione.
Anche la ricerca del testo è ovviamente consentita, ma per farlo sono disponibili funzioni diverse a seconda del modo in cui vogliamo cercare. L'operatore di uguaglianza ci permette di cercare la stringa esatta e la ricerca è case-sensitive. In questo script vogliamo invece vedere altre forme di ricerca:
-- Ricerca case sensitive SELECT * FROM Products WHERE Name = 'Prodotto 1' -- Ricerca case insensitive SELECT * FROM Products WHERE StringEquals(Name, 'prodotto 1', true) -- Inizia per case insensitive SELECT * FROM Products WHERE StartsWith(Name, 'prod', true) -- Contiene case insensitive SELECT * FROM Products WHERE Contains(Name, 'dotto', true) -- Finisce per case sensitive SELECT * FROM Products WHERE StartsWith(Name, '1') -- Ricerca con Regex SELECT * FROM Products WHERE RegexMatch(Name, '\w+\s\d+') -- Ricerca con Like case sensitive SELECT * FROM Products WHERE Name Like 'P%o 1'
Come possiamo vedere, le varie funzioni ci permettono di cercare in maniera case sensitive o insensitive. La nuova parola chiave LIKE ci permette di fare ricerca in modo molto simile alla corrispondente chiave sui database relazionali, usando % (percentuale) e _ (underscore).
Da un punto di vista delle prestazioni, cercare una stringa esatta è più veloce e richiede meno RUs. Anche la ricerca case sensitive è sensibilmente migliore rispetto a quella case insensitive. EndsWith e Contains sono più onerose rispetto a StartsWith e a StringEquals. RegexMatch e Like, invece, sono le più onerose ma non vi sono differenze prestazionali tra di loro.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire gli accessi con Token su Azure Container Registry
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Loggare le query più lente con Entity Framework
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Ordinare randomicamente una lista in C#
Creare un webhook in Azure DevOps
Eseguire i worklow di GitHub su runner potenziati
Gestione CSS in Blazor con .NET 9
Migliorare la sicurezza dei prompt con Azure AI Studio
Migliorare l'organizzazione delle risorse con Azure Policy
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Estrarre dati randomici da una lista di oggetti in C#