Elasticsearch en una aplicación nativa de nube
Sugerencia
Este contenido es un extracto del libro electrónico “Architecting Cloud Native .NET Applications for Azure” (Diseño de la arquitectura de aplicaciones .NET nativas en la nube para Azure), disponible en Documentos de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.
Elasticsearch es un sistema de búsqueda y análisis distribuido que permite funcionalidades de búsqueda complejas en diversos tipos de datos. Es código abierto ampliamente conocido. Considere cómo las siguientes empresas integran Elasticsearch en su aplicación:
- Wikipedia para la búsqueda de texto completo e incremental (buscar mientras escribe).
- GitHub para indexar y exponer más de 8 millones de repositorios de código.
- Docker para que su biblioteca de contenedores sea reconocible.
Elasticsearch se basa en el motor de búsqueda de texto completo de Apache Lucene. Lucene proporciona indexación y consulta de documentos de alto rendimiento. Los datos se indexan con un esquema de indexación invertido: en lugar de asignar páginas a palabras clave, asigna palabras clave a páginas igual que un glosario al final de un libro. Lucene presenta eficaces funcionalidades de sintaxis de consulta y puede consultar datos por:
- Término (una palabra completa)
- Prefijo (comienza con una palabra)
- Carácter comodín (mediante filtros "*" o "?")
- Frase (una secuencia de texto en un documento)
- Valor booleano (búsquedas complejas que combinan consultas)
Mientras que Lucene proporciona fontanería de bajo nivel para la búsqueda, Elasticsearch proporciona el servidor que se asienta sobre Lucene. Elasticsearch agrega funcionalidad de nivel superior para simplificar el trabajo de Lucene, incluida una API RESTful para acceder a la funcionalidad de indexación y búsqueda de Lucene. También proporciona una infraestructura distribuida capaz de escalabilidad masiva, tolerancia a errores y alta disponibilidad.
En el caso de aplicaciones nativas de nube más grandes con requisitos de búsqueda complejos, Elasticsearch está disponible como servicio administrado en Azure. Microsoft Azure Marketplace presenta plantillas preconfiguradas que los desarrolladores pueden usar para implementar un clúster de Elasticsearch en Azure.
Desde Microsoft Azure Marketplace, los desarrolladores pueden usar plantillas preconfiguradas creadas para implementar rápidamente un clúster de Elasticsearch en Azure. Con la oferta administrada por Azure, puede implementar hasta 50 nodos de datos, 20 nodos de coordinación y tres nodos maestros dedicados.
Resumen
En este capítulo se ha presentado una visión detallada de los datos en sistemas nativos de la nube. Comenzamos contrastando el almacenamiento de datos en aplicaciones monolíticas con patrones de almacenamiento de datos en sistemas nativos de nube. Hemos examinado los patrones de datos implementados en sistemas nativos de nube, incluidas las consultas entre servicios, las transacciones distribuidas y los patrones para tratar con sistemas de gran volumen. Hemos comparado los datos SQL y NoSQL. Hemos examinado las opciones de almacenamiento de datos disponibles en Azure que incluyen opciones centradas en Microsoft y de código abierto. Por último, hemos analizado el almacenamiento en caché y Elasticsearch en una aplicación nativa de nube.
Referencias
Patrón de segregación de responsabilidades de comandos y consultas (CQRS).
¿Por qué no es tolerante a particiones RDBMS en el teorema CAP y por qué está disponible?
Todo lo que realmente necesita saber sobre las bases de datos de código abierto (blog de IBM)
Patrones Saga | Implementación de transacciones empresariales mediante microservicios
Detrás de la bola 9: explicación de los niveles de coherencia de Cosmos DB
En bases de datos RDBMS, NoSQL y NewSQL. Entrevista con John Ryan
DASH: cuatro propiedades de bases de datos nativas de Kubernetes
Elasticsearch: The Definitive Guide (Elasticsearch: la guía definitiva).