Comment puis-je gérer de grandes quantités de données de fichier journal pour l'affichage dans les graphiques dynamiques?

StackOverflow https://stackoverflow.com/questions/3516410

Question

J'ai beaucoup de données de fichier journal que je veux afficher des graphiques dynamiques à partir, pour des périodes de temps essentiellement arbitraires, le cas échéant par des colonnes différentes ou agrégées FILTRÉ (que je pourrais pregenerate). Je me demande au sujet de la meilleure façon de stocker les données dans une base de données et l'accès pour afficher les graphiques, les cas suivants:

  • la résolution temporelle devrait être variable d'une seconde à un an
  • il y a des entrées qui couvrent plusieurs « tranches de temps », par exemple une connexion aurait été ouverte pendant quelques jours et je veux compter et afficher l'utilisateur pour chaque heure elle était reliée, non seulement dans le « créneau horaire » heure de la connexion a été créé ou terminé

Y at-il des meilleures pratiques ou outils / plugins pour rails aider à gérer ce genre et la quantité de données? Y at-il des moteurs de base de données peut-être spécifiquement adaptés dans ce sens, ou ayant des fonctions utiles (par exemple, des index CouchDB)?

EDIT: Je cherche un évolutive façon de gérer ce modèle de données et l'accès. Les choses que nous considérés: exécuter une requête pour chaque seau, fusion dans l'application - probablement trop lent. GROUPE horodatage PAR / granularité - ne compte pas correctement les connexions. Prétraiter les données en lignes par la plus petite granularité et sous-échantillonnage sur requête -. Probablement la meilleure façon

Était-ce utile?

La solution 2

La façon dont je l'ai résolu à la fin était de pré-traiter les données dans des seaux par minute, donc il y a une ligne pour chaque événement et minute. Cela le rend facile et assez rapide pour sélectionner et donne des résultats corrects. Pour obtenir différentes granularité, vous pouvez le faire entier arithmétique sur les colonnes d'horodatage - abs select (horodatage / facteur) * facteur et le groupe en ABS (horodatage / facteur) * facteur

.

Autres conseils

Je pense que vous pouvez utiliser timestamp mysql pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top