Esta pregunta se trata de hacer una elección de arquitectura antes de profundizar en los detalles de la experimentación y la implementación. Se trata de la idoneidad, en términos de escalabilidad y rendimiento, de elasticsearch v.s. MongoDB, para un propósito algo específico.elasticsearch v.s. MongoDB para la aplicación de filtrado
Hipotéticamente ambos almacenan objetos de datos que tienen campos y valores, y permiten consultar ese cuerpo de objetos. Así que, presumiblemente, filtrar subconjuntos de los objetos de acuerdo con los campos seleccionados ad-hoc, es algo adecuado para ambos.
Mi aplicación girará en torno a la selección de objetos según los criterios. Seleccionaría objetos mediante el filtrado simultáneo de más de un campo individual, puesto de manera diferente, sus criterios de filtrado de consultas típicamente comprenderían entre 1 y 5 campos, tal vez más en algunos casos. Mientras que los campos elegidos como filtros serían un subconjunto de una cantidad mucho mayor de campos. Imagine unos 20 nombres de campo existentes, y cada consulta es un intento de filtrar los objetos por unos pocos campos de esos 20 campos en general (puede haber menos o más de 20 nombres de campo en general existentes, acabo de usar este número para demostrar la proporción de campos a campos usados como filtros en cada consulta discreta). El filtrado puede ser por la existencia de los campos elegidos, así como por los valores de campo, p. filtrando los objetos que tienen el campo A, y su campo B está entre xey, y su campo C es igual a w.
Mi aplicación realizará este tipo de filtrado continuamente, mientras que no habría nada o muy poco constante en términos de qué campos se utilizan para el filtrado en cualquier momento. Tal vez en los índices de búsqueda elástica se deba definir, pero quizás incluso sin índices, la velocidad es similar a la de MongoDB.
Según los datos que entran en la tienda, no hay detalles especiales sobre eso ... los objetos casi nunca se cambiarían después de haber sido insertados. Quizás los objetos antiguos deban descartarse, me gustaría suponer que ambos almacenes de datos soportan la expiración de eliminar cosas internamente o mediante una consulta hecha por la aplicación. (Con menos frecuencia, los objetos que se ajustan a una determinada consulta también deberían descartarse).
¿Qué opinas? Y, ¿has experimentado este aspecto?
Estoy interesado en el rendimiento y la escalabilidad de la misma, de cada uno de los dos almacenes de datos, para este tipo de tarea. Este es el tipo de pregunta de diseño arquitectónico, y los detalles de las opciones específicas de la tienda o las piedras angulares de la consulta que deberían hacerlo bien estructurado son bienvenidos como una demostración de una sugerencia completamente pensada.
Gracias!
No tengo idea de por qué esto sigue recibiendo votos, ¿son opciones tan destacadas después de tanto tiempo? – matanster