• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wie Chronologie von Daten in DB abspeichern -> Design Vorschlag

bonsai81

Neues Mitglied
Hallo,

dies ist mein erster Beitrag auf diesem Board und ich hoffe, dass noch einige hinzukommen und man hier in angenehmer Atmosphäre diskutieren kann.
Aber nun zu meinem Problem.


Eine Anwendung prüft täglich mehrere tausend IP-Adressen auf Erreichbarkeit (True/False).
Die DB-Einträge könnten folgendermaßen aussehen:

IP/Erreichbar/Datum
192.168.1.1/True/01.01.2012 12:00

In einer DB soll nun die Chronolgie der jeweiligen IP-Adresse festgehalten werden. Also am ersten Tag ist die IP erreichbar -> True. Am zweiten Tag nicht -> False. Usw.
Wie bereits gesagt, passiert diese Überprüfung täglich für tausende von Adressen.
Ich möchte jetzt nicht jeden Tag einen neuen Eintrag generieren, da die DB sich sonst zumüllt und ich es auch nicht sehr elegant finde.

Hat jemand eine Idee, wie man so etwas besser lösen könnte?
Wenn eine IP z.B. 10 Tage hintereinander erreichbar ist, dann kann ich natürlich einen Datumsbereich definieren. Aber wie stelle ich dar, dass sie am 11. Tag nicht erreichbar war
und am 12. Tag wieder erreichbar ist?? Und diese Darstellung möglichst "platzsparend" und "elegant". ;-)

Hoffentlich wird deutlich, was ich meine ... Bin für Vorschläge sehr dankbar!

Greetz, Bonsai
 
Was Du willst musst Du nicht groß aufbauschen, da reicht auch folgendes:

Tabelle "server" bestehend aus:
* Spalte serverid (INT, auto_increment!)
* Spalte ip (VARCHAR)

Tabelle serverstatus bestehend aus:
* Spalte serverid (INT)
* Spalte creation (DATETIME)
* Spalte state (TINYINT)

Letztere Tabelle kannst Du dann abrufen, um zu prüfen ob ein einzelner Server über eine bestimmte Zeit mal nicht erreichbar war. Das darzustellen ist Aufgabe des SQL-Statements auf Basis des Datenbankmodells, nicht des Datenbankmodells alleine.
 
da die DB sich sonst zumüllt
Entweder sind die Daten nötig oder sie sind Müll, das weiß ich nicht. Wenn's Müll ist: warum speichern?

Wenn ich davon ausgehe, daß der Normalzustand die Erreichbarkeit ist, dann sollte ein Eintrag bei Nicht-Erreichbarkeit ausreichen. Du mußt dann aber 3 Zustände im Auge behalten:
1) erreichbar
2) nicht erreichbar
3) Test ist ausgefallen (Stromausfall oder Programm kaputt oder wasauchimmer)

Eine andere Möglichkeit wären zusammenfassende Auswertungstabellen, die in irgendwelchen geeigneten Zeitabständen automatisch generiert werden. Die Tabellen mit den detaillierten Daten brauchten dann immer nur für den Zeitraum bis zur Auswertung gespeichert zu werden.

Wenn aber der gesamte "Datenmüll" nur selten abgefragt wird, warum nicht einfach immer weiter speichern. Lass halt eine Abfrage 3 Sekunden dauern.
 
ich würde jede Zeile speichern. Das sind pro 50.000 Seiten vielleicht 1 MB pro Tag. Wo liegt das Problem?
Jep, und da du ein Datum und ein true/false in der Tabelle hast, lassen sich die Daten dann problemlos auswerten.
Nur würde ich einen Timestamp statt eines formatierten Datums wählen.
 
Zurück
Oben