Buenas tardes gentes de la internet. Os leo desde hace tiempo en las sombras y aquí se debaten temas muy interesantes y hay mucha variedad de opiniones, por ello os traigo a colación un asunto al que llevamos un tiempo dando vueltas dentro de mi grupo de desarrollo.
Veréis, estamos capturando gran cantidad de datos a través de una aplicación, del orden de 18.000 paquetes a la hora, son paquetes sencillos compuestos por 5 campos en formato JSON, esto lo almacenamos en mongoDB a través de un servicio en nodeJS (guardaos la bilis, es una versión pre-alfa y fue una demo montada en 3 días literalmente).
Sometimos al sistema a una prueba de estrés de gran calibre y llegamos a la conclusión de que a tomar por culo node (está bien para hacer las cosas rápidas y al estilo gitano pero la cosa se ha puesto seria y vamos a migrar a java toda la API). El tema por el que os escribo no es otro que la base de datos.
Como os digo estamos usando MongoDB para almacenar los paquetes, pero va como el puto culo a día de hoy porque tenemos unos 2 millones y medio de documentos almacenados y estamos realizando consultas con rangos de tiempo (los paquetes llevan incluidos un timestamp y lo usamos para dichas consultas), el caso es que mongo se satura cuando le pedimos los paquetes dentro de un rango, tarde más de un minuto en devolver una consulta.
Antes de que me echéis a los perros esto es así en parte porque la definición del modelo es completa basura, está almacenado todo a cascoporro (se hizo para una hackatón y tenemos que rediseñar todo el sistema), mi consulta por lo tanto es;
Queremos agilizar las consultas y que tarden un tiempo razonable, recomendáis alguna base de datos noSQL que esté especialmente pensada para realizar consultas con series temporales?
Últimamente he escuchado hablar mucho de clickhouse https://clickhouse.yandex/ pero soy un pez en esta materia y no se cómo de bueno es aproximar el problema desde ahí, una base de datos orientada a columnas y noSql con soporte para consultas SQL, un batiburrillo del que no me entero la mitad.
Otra duda que me asalta es, puede mongo soportar de buen grado consultas temporales una vez que rediseñemos el modelo? Esto lo digo porque a la hora de hacer índices la ganancia va a ser muy justa puesto que las consultas van desde los meses hasta los minutos.
RPV: recomendáis alguna base de datos NoSQL para realizar consultas por series temporales?
Un saludo y disculpad el tochopost.