Messwerte Datenbank



  • Hi,
    Ich möchte eine Vislualisirung schreiben die Diagramme nach Zeit/Wert erstellt. Dazu benötige ich eine Datenbank, die mir immer einen Datensatz zurückliefert.

    zB.

    Zeit         | Wert
    08:35:12.023 | 12.43
    08:36:13.043 | 12.43
    08:37:12.173 | 12.43
    08:38:12.093 | 12.43
    08:39:12.823 | 12.43
    08:40:12.003 | 12.43
    

    Wenn ich jetzt nach '08:35:12.029' suche bekomme ich den Datesatz für '08:35:12.023' zurück, wenn ich nach '08:38:12.000' suche bekomme ich den für '08:37:12.173' zurück d.h immer den zuletzt gültigen.
    Und das sollte alles bei 1000 suchen nicht mehr als 0.15 Sekunden dauern, da sich sonst der Aufbau des Diagramms sonst zu stark verzögert.
    Ich habe zwar schon testweise einen solchen Algorythmus geschrieben, aber es wäre mir um einiges lieber wenn ich eine fertige Datenbank verwenden könnte.

    lg
    Uphill



  • Du hast das Ganze etwas missverständlich formuliert..
    Machst du dir Sorgen, dass die Abfragezeiten > 0.15 Sek. sind, wenn du eine Datenbank einsetzt?



  • Setz ein "Clustered Index" auf "Zeit"

    Die Abfrage könnte dann so aussehen:

    SELECT TOP 1 wert
    FROM tab
    WHERE zeit <= @zeit
    ORDER BY zeit DESC
    

    Obs schnell genug ist, hängt maßgeblich von der Tabellengröße ab.



  • Das hängt von vielen Faktoren ab. RechnerCPU,Speicherausbau, RDBMS, Festplatte, Betriebssystem, Dateisystem, Anzahl Zugriffe auf RDBMS.
    Also verlasse dich nicht darauf das eine Abfrage <= 0,15 Sekunden dauert.



  • Ja es ist meine Sorge, dass wenn ich eine Datenbank einsetzte zu langsam wird. Als System kann ich einen Intel P 4 mit 3 Ghz, 1 villeicht 2GB Ram und einer WD Raptor als HD anbieten, aber mehr is warscheinlich net drin.

    lg



  • Probier es doch einfach aus.

    Wenn die Hadware eh schon weitgehend feststeht bleibt dir die Möglichkeit die Tabelle(n) kleinzuhalten. Falls du z.B. eine 24-Stunden-Aufzeichnung machst kannst du für jede Stunde eine einzelne Tabelle anlegen. Erhöht natürlich den programmiertechnischen Overhead.



  • du könntest auch die dbverbindung offen halten.
    das spart sehr viel zeit.
    connect dauert oft relativ lange.



  • Also ich habe mit MySql(MyISAM) PostgreSQL und MaxDB getestet
    Tabelle mit 4 Spalten mit fixer Lenge zeit indiziert und 1 000 000 Datensätzen

    PgSql: ~500 msec
    MaxDB: ~650 msec
    MySQL: ~180 msec (mit 10 Millionen 200msec)

    alles mit jdbc treiber über netzwerk


Anmelden zum Antworten