Come faccio a gestire grandi quantità di dati dei file di log per la visualizzazione in grafici dinamici?
-
29-09-2019 - |
Domanda
Ho un sacco di dati del file di log che voglio visualizzare grafici dinamici, per periodi di tempo sostanzialmente arbitrarie, eventualmente filtrato o aggregati da diverse colonne (che ho potuto pregenerate). Mi chiedo circa il modo migliore per memorizzare i dati in un database e l'accesso per i grafici che mostrano, in cui:
- la risoluzione di tempo dovrebbe essere variabile da un secondo per un anno
- ci sono voci che si estendono su più 'secchi di tempo', ad esempio, una connessione potrebbe essere stato aperto per un paio di giorni e voglio contare e visualizzare l'utente per ogni ora che lei è stato collegato, non solo nelle ore 'fessura' il collegamento è stato creato o finito
Ci sono le migliori pratiche, o strumenti / plugins per guide che aiutano gestire questo tipo e la quantità di dati? ci sono forse motori di database appositamente su misura in questa direzione, o di dover utile funzioni (ad esempio indici CouchDB)?
EDIT: Sto cercando un modo scalabile di gestire questo modello di dati e di accesso. Le cose che ci prese in considerazione: Eseguire una query per ciascun segmento, unione in app - probabilmente troppo lento. GROUP BY timestamp / granularità - non conta correttamente i collegamenti. Pre-elaborazione dei dati in righe da piccola granularità e downsampling su richiesta -. Probabilmente il modo migliore
Soluzione 2
Il modo risolto alla fine è stato pre-elaborare i dati nel benne per minuto, quindi non c'è una riga per ogni evento e minuto. Che lo rende facile e abbastanza veloce per selezionare e produce risultati corretti. Per ottenere granularità diverso, si può fare aritmetica intera sulle colonne timestamp - selezionare abs (timestamp / fattore) * fattore e di gruppo da abs (timestamp / fattore) * fattore
.Altri suggerimenti
Penso che si possa utilizzare timestamp mysql per questo.