Question

Je veux créer une application de type « Google Analytics » pour le web - à savoir un outil basé sur le Web pour faire des rapports et de 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 ils prennent trop de temps et l'outil ne pas répondre.

Comment puis-je utiliser une tâche cron pour me aider? Quelle est la meilleure façon d'être en mesure de faire mes graphiques sensibles? Je pense que je vais devoir denomalize certains de mes tables de base de données, mais comment puis-je faire ces requêtes plus rapidement? Quelles sont les valeurs intermédiaires puis-je stocker dans une autre table de base de données pour le rendre plus rapide?

Merci!

Était-ce utile?

La solution

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 et l'entreposage des 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 envoyer par Cron)
  • vous avez besoin d'un bon optimiseur (certaines bases de données comme MySQL ne sont pas - donc de prendre des décisions pauvres jonctionnement)
  • parallélisme des requêtes (certaines bases de données fourniront speedups linéaires simplement en divisant votre requête en plusieurs threads)
  • star-schéma - un bon modèle de données est cruciale à la bonne performance

Dans les rapports dynamique générale bat le pantalon de rapports statiques - donc si vous êtes après avoir fait état puissant que je venais essayer de copier des données dans un modèle approprié, utiliser des agrégats, peut-être modifier la base de données pour obtenir un bon optimiseur et approprié caractéristiques plutôt que générer des rapports par lots.

Autres conseils

Une façon simple d'aborder ce serait de créer une sélection de tableaux de synthèse pour contenir des données pré-agrégées. Celles-ci pourraient être remplis sur une base régulière en utilisant crontab.

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

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

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