Actualmente estoy investigando en un back-end para usar en un proyecto con exigentes requerimientos de agregación de datos. Los requisitos principales del proyecto son los siguientes.Agregación de datos mongodb vs mysql
Almacene millones de registros para cada usuario. Los usuarios pueden tener más de 1 millón de entradas por año, por lo que incluso con 100 usuarios estamos hablando de 100 millones de entradas por año.
La agregación de datos en esas entradas debe realizarse sobre la marcha. Los usuarios necesitan poder filtrar las entradas por una tonelada de filtros disponibles y luego presentar resúmenes (totales, promedios e.t.c) y gráficos sobre los resultados. Obviamente, no puedo precalcular ninguno de los resultados de la agregación porque las combinaciones de filtros (y, por lo tanto, los conjuntos de resultados) son enormes.
Los usuarios solo tendrán acceso a sus propios datos, pero sería bueno si se pudieran calcular las estadísticas anónimas para todos los datos.
Los datos van a ser la mayoría de las veces en lote. Por ejemplo, el usuario cargará los datos todos los días y podría recibir 3000 registros. En alguna versión posterior podría haber programas automatizados que suben cada pocos minutos en lotes más pequeños de 100 elementos, por ejemplo.
me hizo una prueba sencilla de crear una tabla con 1 millón de filas y la realización de una simple suma de la columna 1, tanto en mongodb y en mysql y la diferencia de rendimiento era enorme. No recuerdo los números exactos pero era algo así como mysql = 200ms, mongodb = 20 segundos.
También hice la prueba con couchdb y obtuve resultados mucho peores.
Lo que parece una velocidad prometedora es cassandra, que me entusiasmó mucho cuando lo descubrí por primera vez. Sin embargo, la documentación es escasa y no he encontrado ningún ejemplo sólido sobre cómo realizar sumas y otras funciones agregadas en los datos. Es eso posible ?
Como parece de mi prueba (Tal vez han hecho algo mal) con el rendimiento actual es imposible de usar MongoDB para tal proyecto, aunque la funcionalidad sharding automatizado parece ser un ajuste perfecto para ella.
¿Alguien tiene experiencia con la agregación de datos en mongodb o tiene algún conocimiento que podría ser de ayuda para la implementación del proyecto?
Gracias, Dimitris
Gracias. El enlace de greenplum fue muy útil ya que descubrí que hay muchos archivos db como greenplum que están optimizados para lo que tengo que hacer. Análisis masivo de datos. Otro es infobright que se conecta a mysql y parece prometedor. –
Mirando esto, parece perfecto para Infobright – Amala