sql >> Base de Datos >  >> NoSQL >> MongoDB

¿MongoDB + Elasticsearch o solo Elasticsearch?

Hablando de argumentos para usar Mongo en lugar de/junto con ES:

  1. Gestión de usuarios/roles.

    • Integrado en MongoDB. Puede que no se adapte a todas sus necesidades, puede ser torpe en alguna parte, pero existe y se implementó hace bastante tiempo.
    • Lo único para la seguridad en ES es shield . Pero solo se envía para la suscripción Gold/Platinum para uso en producción.
  2. Esquema

    • ES no tiene esquemas, pero está construido sobre Lucene y escrito en Java . La idea central de esta herramienta:indexar y buscar documentos, y trabajar de esta manera requiere consistencia en el índice. En la parte trasera, todos los documentos deben ajustarse en lucene plano index, que requiere cierta comprensión sobre cómo ES debe manejar sus documentos y valores anidados, y cómo debe organizar sus índices para mantener el equilibrio entre la velocidad y la integridad/consistencia de los datos. Trabajar con ES requiere que tenga en cuenta constantemente algunas cosas sobre el esquema. Es decir:como puede indexar casi cualquier cosa a ES sin poner el mapeo correspondiente por adelantado, ES puede "adivinar" el mapeo sobre la marcha, pero a veces lo hace mal y, a veces, el mapeo implícito es malo, porque una vez que se coloca, no se puede cambiar w /o reindexación de todo el índice. Por lo tanto, es mejor no tratar a ES como una tienda sin esquemas, porque puede pisar un rastrillo en algún momento (y esto será dolor :)), sino trátelo como un esquema intensivo, al menos cuando trabaja con documentos, que se pueden dividir en campos concretos.
    • Mongo, por otro lado, puede "masticar y no dejar migas" de casi cualquier cosa que le pongas. Y la mayoría de sus consultas funcionarán bien, hasta que recuerde cómo Mongo tratará sus datos desde la perspectiva de JavaScript. Y como JS tiene un tipo débil, puede trabajar con un flujo de trabajo realmente sin esquemas (seguro, si lo necesita)
  3. Manejo de datos que no son de tipo tabla.

    • ES se limita a manejar datos sin ponerlos en el índice de búsqueda. Y esta solución es lo suficientemente buena cuando necesita almacenar y recuperar algunos datos adicionales (en comparación con los datos que desea buscar).
    • MongoDB admite gridFS . Esto le brinda la capacidad de manejar grandes cantidades de datos detrás de la misma interfaz. Es decir, puede almacenar datos binarios en Mongo y recuperarlos dentro de la misma interfaz, desde la perspectiva de su código.