Frage

Ich möchte eine Anwendung vom Typ „Google Analytics“ für das Web erstellen – d. h.ein webbasiertes Tool zum Erstellen von Berichten und grafischen Darstellungen für meine Datenbank.Das Problem ist, dass die Datenbank RIESIG ist, sodass ich die Abfragen nicht in Echtzeit durchführen kann, da sie zu lange dauern und das Tool nicht reagiert.

Wie kann mir ein Cronjob helfen?Wie kann ich meine Diagramme am besten responsiv gestalten?Ich glaube, ich muss einige meiner Datenbanktabellen denomalisieren, aber wie mache ich diese Abfragen schneller?Welche Zwischenwerte kann ich in einer anderen Datenbanktabelle speichern, um es schneller zu machen?

Danke!

War es hilfreich?

Lösung

Business Intelligence (BI) ist eine ziemlich ausgereifte Disziplin – und Antworten auf Ihre Fragen finden Sie in jedem Buch über die Skalierung von Datenbanken für Reporting und Data Warehousing.

Eine allgemeine Liste von Taktiken würde Folgendes umfassen:

  • Partitionierung (da Indizes für die meisten Berichte wenig hilfreich sind)
  • Übersichtstabellen (normalerweise durch einen Batch-Prozess generiert, der per Cron übermittelt wird)
  • Sie benötigen einen guten Optimierer (einige Datenbanken wie MySQL tun dies nicht – treffen Sie also schlechte Join-Entscheidungen)
  • Abfrageparallelität (einige Datenbanken bieten lineare Beschleunigungen, indem sie Ihre Abfrage einfach in mehrere Threads aufteilen)
  • Sternschema - ein gutes Datenmodell ist entscheidend zu guten Leistungen

Im Allgemeinen ist die dynamische Berichterstellung der statischen Berichterstellung weit überlegen. Wenn Sie also eine leistungsstarke Berichterstellung wünschen, würde ich einfach versuchen, Daten in ein geeignetes Modell zu kopieren, Aggregate zu verwenden und möglicherweise die Datenbank zu ändern, um einen guten Optimierer und die entsprechenden Funktionen zu erhalten Berichte im Batch ausführen.

Andere Tipps

Ein einfacher Weg, um diesen Ansatz wäre es, eine Auswahl von Übersichtstabellen erstellen voraggregierten Daten enthalten. Diese könnten auf einer regelmäßigen Basis mit crontab bestückt werden.

Alternativ kann es sich lohnen, den Blick auf etwas wie http://mondrian.pentaho.org .

ich bekommen würde mich mit „Sternschemata“

vertraut gemacht
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top