Peter Mairhofer: Graphische Auswertung von Daten

Hallo!

Ich suche ein Tool (PHP Klasse, Java o.ä.) mit dem ich automatisch und einfach Daten auswerten kann.

Ein (Perl-) Script überwacht einen Prozess (bzw. mehrere Unterprozesse) und kontrolliert den Status alle 5 Minuten. Hat sich etwas geändert, wird einer mySQL Tabelle eine Zeile mit einem Timestamp und den neuen Werten hinzugefügt. Alle Felder ausser dem Timestamp sind PRIMARY KEY, sodass mittels REPLACE INTO nur Datensätze hinzugefügt werden, wenn sich was ändert.

Jetzt suche ich eben eine PHP-Klasse o.ä., wo ich nur mehr die Query eingeben brauch bzw. Achsenbeschriftungen und es wird für einen Zeitraum ein Diagramm erstellt.

Das Problem ist die Zeitskalierung. Da Daten nur gespeichert werden, wenn sich was ändert, muss es möglich sein, dass die Zeitachse automatisch passend skaliert wird.

Vielen Dank für jegliche Hinweise!

Peter

  1. Hallo Peter,

    Ich suche ein Tool (PHP Klasse, Java o.ä.) mit dem ich automatisch und einfach Daten auswerten kann.

    Du kennst die GD-Bibliothek?

    Ein (Perl-) Script überwacht einen Prozess (bzw. mehrere Unterprozesse) und kontrolliert den Status alle 5 Minuten. Hat sich etwas geändert, wird einer mySQL Tabelle eine Zeile mit einem Timestamp und den neuen Werten hinzugefügt.

    Diese Bibliothek ist problemlos von Perl aus ansprechbar. Die Bibliothek ist übrigens in C geschrieben und ein sehr feines Stück Software.

    Alle Felder ausser dem Timestamp sind PRIMARY KEY, sodass mittels REPLACE INTO nur Datensätze hinzugefügt werden, wenn sich was ändert.

    Verstehe ich Dich richtig: Du hast einen Mehrfelderindex, der über alle Spalten außer dem Timestamp-Feld geht? Was ist, wenn einer der Meßwerte zwischen zwei Werten pendelt und alle anderen gleich bleiben. Können dann nur zwei Werte eingetragen werden?

    Vielleicht verstehe ich Dich auch völlig falsch. Jedenfalls ist es viel besser, eine exakte Beschreibung der Tabellenstruktur mit ein paar Beispielwerten anzugeben als eine solch diffuse Problembeschreibung abzugeben. Die hilft keinem richtig weiter.

    Jetzt suche ich eben eine PHP-Klasse o.ä., wo ich nur mehr die Query eingeben brauch bzw. Achsenbeschriftungen und es wird für einen Zeitraum ein Diagramm erstellt.

    Wo ist das Problem mit der Ansteuerung der GD-Bibliothek?

    Das Problem ist die Zeitskalierung. Da Daten nur gespeichert werden, wenn sich was ändert, muss es möglich sein, dass die Zeitachse automatisch passend skaliert wird.

    Nö, wieso willst Du _jedesmal_ skalieren. Ich würde die Zeitachse stets um ein ordentliches Stück erweitern, z.B. stets um 25% oder einfacher 100%, wenn das Ende der aktuellen Achse erreicht ist. Dann erweitere die bestehende Grafik bei weiteren Einträgen um die neuen Meßwerte oder Linien oder was auch immer (Du hast ja überhaupt nichts dazu gesagt). Wird das Ende der Skala erreicht, so erstelle die Grafik aus den DB-Werten neu.

    Wenn Du ein Liniendiagramm hast, könntest Du die Vorgehensweise vereinfachen, indem Du die Grafik stets aus zwei Bildern zusammensetzt:

    a) das Grunddiagramm mit den Achsen und Achsenbeschriftungen
      b) die Daten

    Bei einer Skalaerweiterung erzeugst Du das Grunddiagramm neu, dazu benötigst Du _keine_ Daten aus der Datenbank, was sehr praktisch ist. Dieses Grunddiagramm bleibt nun unverändert bis zur nächsten Zeitskalaerweiterung.

    Skaliere das Grunddiagramm mit dem notwendigen Faktor in Richtung der Zeitachse und füge die notwendigen neuen Linien hinzu.

    Es mag sein, dass es tatsächlich eine fertige Klasse für Dein doch sehr spezielles Problem gibt, es sollte jedoch nicht allzuviel Aufwand sein, sich selbst etwas zu schreiben. Den Themenbereich DATENBANK fand ich sehr unpassend gewählt. Datenbankmanagementsysteme überlassen die graphische Aufbereitung der in ihren Datenbanken gespeicherten Daten im Normalfall externen Werkzeugen.

    Freundliche Grüße

    Vinzenz