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 il colore CSS con HWB
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Potenziare la ricerca su Cosmos DB con Full Text Search
Le novità di Angular: i miglioramenti alla CLI
Gestire domini wildcard in Azure Container Apps
Applicare un filtro per recuperare alcune issue di GitHub
Il nuovo controllo Range di Blazor 9
Configurare lo startup di applicazioni server e client con .NET Aspire
Utilizzare un service principal per accedere a Azure Container Registry
Gestione dell'annidamento delle regole dei layer in CSS
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Creare alias per tipi generici e tuple in C#