Colección de citas famosas - Mensajes de felicitación - ¿Por qué mongodb no puede reemplazar a elasticsearch?

¿Por qué mongodb no puede reemplazar a elasticsearch?

MongoDB es una base de datos típica NoSQL (no solo SQL), es un sistema de gestión de bases de datos de código abierto orientado a documentos. Implementa principalmente sistemas de gestión de bases de datos NoSQL y se utiliza para almacenar datos masivos (el nombre Mongo proviene de humongous). .

ElasticSearch es un motor de búsqueda y análisis RESTful en tiempo real basado en Apache Lucene. ES extrae algunos valores basados ​​en datos y proporciona funciones de almacenamiento, indexación, búsqueda y análisis de datos en tiempo real. Estos datos se recopilan de otras fuentes de datos, incluido MongoDB, y se pueden almacenar directamente en el clúster de Elasticsearch.

1. * * *Similitudes:

Orientado al almacenamiento de documentos, sin esquemas, almacenamiento de datos distribuidos, alta disponibilidad, fragmentación y replicación. Si bien es posible utilizar ElasticSearch como almacén de datos principal, normalmente se utiliza como base de datos secundaria de la base de datos principal.

2. Diferencias:

1. Elasticsearch está escrito en java y manipula datos a través de la interfaz RESTFul. MongoDB está escrito en C++ y opera datos a través de controladores.

2. Hay dos formas de fragmentar MongoDB: hash y rango, mientras que Elasticsearch solo tiene un hash.

3. Elasticsearch se distribuye de forma natural y los segmentos primario y secundario se asignan y replican automáticamente de forma inmediata. La distribución de MongoDB consta de "enrutamiento previo a la consulta + servicio de configuración + conjunto de fragmentos", y los servicios de clúster deben configurarse manualmente.

4. La memoria ES es un índice invertido + valor del documento + datos de campo.

5. La recuperación de texto completo de Elasticsearch tiene un potente analizador que se puede combinar de manera flexible y combinar de manera inteligente durante las consultas. La cantidad de campos de búsqueda de texto completo en MongoDB es limitada.

6. Todos los campos en Elasticsearch se indexan automáticamente, mientras que los campos en MongoDB deben indexarse ​​manualmente. Elasticsearch utiliza Apache Lucene para implementar la indexación, mientras que los índices de MongoDB se basan en la estructura de árbol tradicional B+. Elasticsearch utiliza Lucene para implementar funciones de búsqueda e indexación en tiempo real y admite la creación de índices en cada campo del documento de forma predeterminada. Con MongoDB, tenemos que definir un índice para mejorar el rendimiento de las consultas, pero afectará las operaciones de escritura.

7.Elasticsearch tiene una ventana de pérdida de datos en tiempo real. Mongodb no tiene riesgo de pérdida de datos en tiempo real.

8.Document-Elasticsearch almacena documentos JSON y MongoDB los almacena en formato BSON (JSON binario).

9.Interfaz REST: la búsqueda elástica proporciona una interfaz RESTful, pero MongoDB no.

10 y MapReduce-MongoDB admiten operaciones de datos de MapReduce. Elasticsearch no es compatible con MapReduce.

3. Escenarios de uso:

MongoDB es una base de datos NoSQL general no RESTful. Los documentos se almacenan en formato BSON, que se utiliza principalmente para almacenar datos.

Elasticsearch es un motor de búsqueda distribuido de texto completo que puede proporcionar una API Restful en tiempo real para procesar datos masivos orientados a documentos. Este documento utiliza formato JSON y se utiliza principalmente para búsquedas de datos basados ​​en texto.

En aplicaciones prácticas, los dos se suelen utilizar juntos. Elasticsearch generalmente no se usa como base de datos de almacenamiento principal, pero se usa con bases de datos SQL y NoSQL como bases de datos secundarias.

A diferencia de MongoDb, Elasticsearch no proporciona funciones de seguridad como autenticación y autorización de forma predeterminada.

Elasticsearch, log stash y Kibana se denominan colectivamente pila ELK, que se utiliza para consultar datos rápidamente y presentarlos y analizarlos visualmente.

Elasticsearch es muy adecuado para la indexación y recuperación rápidas basadas en texto, y su velocidad de consulta es muy rápida; en la mayoría de los casos, la velocidad es de decenas de milisegundos como máximo.

Por lo tanto, Elasticsearch se utiliza a menudo como repositorio secundario para el almacenamiento de bases de datos primarias. Los sistemas de bases de datos generales prestan más atención a las limitaciones, la precisión y la solidez. Cuando el registro maestro se actualiza en una transacción, también se envía a Elasticsearch.

PostgreSQL y ZooKeeper se suelen utilizar para almacenar datos y proporcionárselos a Elasticsearch para su recuperación en tiempo real.

No existe un producto universal ni una base de datos que pueda satisfacer todas las necesidades. Por tanto, debemos comprender las ventajas y desventajas de las diferentes bases de datos y elegir el producto adecuado según las necesidades específicas.