2009-12-03 7 views
1

Je souhaite créer une application de type "google analytics" pour le Web, c'est-à-dire un outil Web pour créer des rapports et des graphiques pour ma base de données. Le problème est que la base de données est ÉNORME, donc je ne peux pas faire les requêtes en temps réel car elles prendront trop de temps et l'outil ne répondra pas. Comment puis-je utiliser un travail cron pour m'aider? Quel est le meilleur moyen de rendre mes graphiques réactifs? Je pense que je devrais dénominer certaines de mes tables de base de données, mais comment faire ces requêtes plus rapidement? Quelles valeurs intermédiaires puis-je stocker dans une autre table de base de données pour le rendre plus rapide?Grande base de données d'analyse réactif (MYSQL)

Merci!

+0

Définir "ÉNORME". De combien de disques parlons-nous? J'ai été surpris de voir à quel point les bases de données fonctionnent sur un grand nombre d'enregistrements, avec une optimisation appropriée, et combien les personnes de SO peuvent aider avec cela. –

+0

Des centaines de millions de millions d'enregistrements par table ~ 300 millions, ayant besoin de rejoindre 5 à 6 de ces tables. – user151975

Répondre

2

Business Intelligence (BI) est une discipline assez mûre - et vous trouverez des réponses à vos questions dans un livre sur les bases de données mise à l'échelle pour les rapports & entreposage de données.

Une liste de haut niveau de la tactique comprendrait:

  • partitionnement (car les index sont peu d'aide pour la plupart des rapports)
  • tableaux de synthèse (générés habituellement par un traitement par lots soumettre via Cron)
  • vous avez besoin d'un bon optimiseur (certaines bases comme mysql ne le font pas - donc prendre de mauvaises décisions de jointure)
  • requête parallélisme (certaines bases de données fourniront des accélérations linéaires en divisant simplement votre requête en plusieurs threads)
  • star-schéma - un bon modèle de données est cruciale à la bonne performance

En rapport dynamique générale bat le pantalon de rapports statiques - donc si vous êtes après des rapports puissants je voudrais simplement essayer de copier des données Dans un modèle approprié, utilisez des agrégats, modifiez éventuellement la base de données pour obtenir un bon optimiseur et les fonctionnalités appropriées plutôt que d'exécuter des rapports par lots.

0

Une manière simple d'aborder cela serait de créer une sélection de tables récapitulatives pour contenir des données pré-agrégées. Ceux-ci pourraient être peuplés sur une base régulière en utilisant crontab.

Alternativement, il peut être intéressant de regarder quelque chose comme http://mondrian.pentaho.org.

0

Je me connaisses avec des « schémas en étoile »

Questions connexes