¿Cómo puedo manejar grandes cantidades de datos de archivo de registro para la visualización de gráficos dinámicos?
-
29-09-2019 - |
Pregunta
Tengo una gran cantidad de datos de archivo de registro que quiero mostrar gráficos dinámicos de, por períodos de tiempo básicamente arbitrarios, opcionalmente filtrada o agregados por diferentes columnas (que podría pregenerate). Me pregunto cuál es la mejor manera de almacenar los datos en una base de datos y acceder a ella para gráficos que muestran, cuando:
- la resolución de tiempo debe ser variable de un segundo a un año
- hay entradas que abarcan varios bloques de tiempo '', por ejemplo, una conexión podría haber sido abierta durante unos días y quiero contar y mostrar al usuario por cada hora que estaba conectado, no sólo en la hora 'slot' la conexión se crea o se terminó
¿Hay mejores prácticas o herramientas / plugins para los carriles que asa ayuda de este tipo y la cantidad de datos? ¿Hay tal vez los motores de bases de datos adaptados específicamente a este, o que tengan funciones útiles (por ejemplo, los índices de CouchDB)?
EDIT: Estoy en busca de un escalable manera de manejar esto patrón de datos y acceso. Cosas que considerar: Ejecutar una consulta para cada segmento, en aplicación de combinación - probablemente demasiado lento. GRUPO POR marca de tiempo / granularidad - no cuenta las conexiones correctamente. Preprocesamiento de datos en filas por granularidad más pequeña y la disminución de resolución en consulta -. Probablemente la mejor manera
Solución 2
La forma en que lo resolvió al final fue para pre-proceso de los datos en segmentos por minuto, por lo que hay una fila para cada evento y minutos. Eso hace que sea fácil y lo suficientemente rápido para seleccionar los rendimientos y resultados correctos. Para obtener granularidad diferente, que puede hacer aritmética de enteros en las columnas de fecha y hora - seleccione abs (marca de tiempo /) * factor de factor de grupo y por ABS (marca de tiempo / factores) * Factor
.Otros consejos
Creo que se puede utilizar marcas de tiempo MySQL para esto.