Elasticsearch in un'app nativa del cloud
Suggerimento
Questo contenuto è un estratto dell'eBook, Progettazione di applicazioni .NET native del cloud per Azure, disponibile in .NET Docs o come PDF scaricabile gratuitamente che può essere letto offline.
Elasticsearch è un sistema di ricerca e analisi distribuito che consente funzionalità di ricerca complesse in diversi tipi di dati. È open source e ampiamente diffuso. Si consideri il modo in cui le aziende seguenti integrano Elasticsearch nell'applicazione:
- Wikipedia per la ricerca full-text e incrementale (ricerca durante la digitazione).
- GitHub per indicizzare ed esporre oltre 8 milioni di repository di codice.
- Docker per rendere individuabile la libreria contenitori.
Elasticsearch si basa sul motore di ricerca full-text Apache Lucene. Lucene offre indicizzazione e query di documenti ad alte prestazioni. Indicizza i dati con uno schema di indicizzazione invertito, invece di eseguire il mapping delle pagine alle parole chiave; esegue il mapping delle parole chiave alle pagine esattamente come un glossario alla fine di un libro. Lucene offre potenti funzionalità di sintassi di query e può eseguire query sui dati in base a:
- Termine (parola intera)
- Prefisso (inizia con la parola)
- Carattere jolly (con filtri "*" o "?")
- Frase (sequenza di testo in un documento)
- Valore booleano (ricerche complesse che combinano query)
Mentre Lucene offre un impianto idraulico di basso livello per la ricerca, Elasticsearch fornisce il server che si trova sopra Lucene. Elasticsearch aggiunge funzionalità di livello superiore per semplificare il funzionamento di Lucene, inclusa un'API RESTful per accedere alle funzionalità di indicizzazione e ricerca di Lucene. Offre anche un'infrastruttura distribuita in grado di scalabilità elevata, tolleranza di errore e disponibilità elevata.
Per applicazioni native del cloud di grandi dimensioni con requisiti di ricerca complessi, Elasticsearch è disponibile come servizio gestito in Azure. Microsoft Azure Marketplace include modelli preconfigurati che gli sviluppatori possono usare per distribuire un cluster Elasticsearch in Azure.
Da Microsoft Azure Marketplace gli sviluppatori possono usare modelli preconfigurati creati per distribuire rapidamente un cluster Elasticsearch in Azure. Usando l'offerta gestita da Azure, è possibile distribuire fino a 50 nodi dati, 20 nodi di coordinamento e tre nodi master dedicati.
Riepilogo
Questo capitolo ha presentato un'analisi dettagliata dei dati nei sistemi nativi del cloud. È stata avviata la differenza tra l'archiviazione dei dati nelle applicazioni monolitiche con i modelli di archiviazione dei dati nei sistemi nativi del cloud. Sono stati esaminati i modelli di dati implementati nei sistemi nativi del cloud, incluse query tra servizi, transazioni distribuite e modelli per gestire sistemi con volumi elevati. SQL è stato contrastato con i dati NoSQL. Sono state esaminate le opzioni di archiviazione dei dati disponibili in Azure che includono opzioni basate su Microsoft e open source. Infine, è stata illustrata la memorizzazione nella cache e Elasticsearch in un'applicazione nativa del cloud.
Riferimenti
Criteri di separazione delle responsabilità delle query e dei comandi (CQRS)
Perché il teorema CAP non è tollerante alle partizioni RDBMS e perché è disponibile?
Tutto quello che serve davvero sapere sui database open source (blog IBM)
Modelli saga | Come implementare transazioni aziendali tramite microservizi
Getting Behind the 9-Ball: Spiegazione dei livelli di coerenza di Cosmos DB