Actualmente estoy creando una aplicación en la que estoy importando datos estadísticos para (actualmente) alrededor de 15,000 productos. En la actualidad, si tuviera que mantener una tabla de base de datos para cada día de estadísticas de una fuente, se incrementarían en 15,000 filas de datos (digamos 5-10 campos por fila principalmente flotantes, int) por día. Obviamente igualando a más de 5 millones de registros por año en una sola tabla.¿Cuál es la mejor manera de almacenar datos de tendencia?
Eso no me preocupa tanto como la idea de traer datos de otras fuentes (y así aumentar el tamaño de la base de datos en 5 millones de registros para cada fuente nueva).
Ahora los datos son estadísticos/de tendencias basados en datos, y tendrán básicamente 1 escritura por día por registro, y muchas lecturas. A los efectos de informar y graficar sobre la marcha, sin embargo, necesito un acceso rápido a subconjuntos de datos basados en reglas (rangos de fechas, rangos de valores, etc.).
¿Cuál es mi pregunta? ¿Es esta la mejor manera de almacenar los datos (tablas InnoDb de MySQL) o existe una forma mejor de almacenar y manejar datos estadísticos/de tendencias?
Otras opciones que he dado vueltas en este punto: 1. Múltiples bases de datos (una por producto), con tablas separadas para cada fuente de datos dentro. (es decir, base de datos: ProductA, Table (s): Source_A, Source_B, Source_C) 2. Una base de datos, varias tablas (una para cada producto/fuente de datos) (es decir, base de datos: Products, Table (s): ProductA_SourceA, ProductA_SourceB , etc.) 3. Todos factual
o información específica del producto en la base de datos y todos los datos statistical
en csv, xml, json, (archivos planos) en directorios separados.
Hasta el momento, ninguna de estas opciones es muy manejable, cada una tiene sus pros y sus contras. Necesito una solución razonable antes de pasar a la etapa alfa del desarrollo.
Encontré un PDF que habla de MySQL utilizando un motor basado en columnas: http://forge.mysql.com/w/images/5/54/MySQLColumnDatabases.pdf, voy a analizar esta opción un poco más, No había escuchado sobre el almacenamiento basado en columnas antes, esto podría ser lo que estoy buscando. –