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 domini wildcard in Azure Container Apps
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Creare gruppi di client per Event Grid MQTT
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Utilizzare Copilot con Azure Cosmos DB
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
.NET Conference Italia 2024
Utilizzare Tailwind CSS all'interno di React: primi componenti
Le novità di Angular: i miglioramenti alla CLI
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Miglioramenti nell'accessibilità con Angular CDK
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API