Guten Tag
Es geht um die Entwicklung eines Messdatenerfassungssystems. Zur Zeit erarbeiten wir im Team die Grundlagen und sind auf einige Grundsatzprobleme gestossen. Eines liegt darin, wo wir die Messwerte speichern sollen. Eine Idee bestand darin, alle anfallenden Messwerte mit einem Zeitstempel zu versehen und diese direkt in eine schnelle SQL-Datenbank (z.B. My-SQL oder InterBase) zu speichern. Gleichzeitig sollen die Messwerte (vom Messbeginn bis aktuell) von der Datenbank ausgelesen und visualisiert werden können (auf zwei bis drei Clients gleichzeitig).<br>
Ich versuchte das ganze mit einigen Versuchen in Delphi und My-SQL zu testen und bemerkte rasch, dass das ganze einfach zu langsam ist.<br>
Einige Daten:
- Es sollen 250 Kanäle erfasst werden (Die meisten Messwerte sind 8/16 Bit Integer)<br>
- Alle Kanäle werden mit 1Hz gesampelt<br>
- Eine komplette Messung dauert ca. 45min<br>
- In der Woche finden ca. 3 Messungen statt<br>
- An ca. 40 Wochen im Jahr wird gemessen<br>
- Das System soll 10 Jahre funktionieren können<br>
Damit ergibt sich eine Zahl von 810'000'000 einzelnen Messwerten (mit Zeitstempel, Messungsnummer, Kanalnummer). Es wäre zwar schön, wenn es ginge, aber ich glaube nicht so recht daran, dass es sinnvoll oder gar möglich ist, diese Datenmenge in einer einzelnen Tabelle zu verwalten.<br>
Nun meine Fragen:<br>
Ist es überhaupt empfehlenswert, die Messwerte in einer Datenbank zu speichern?<br>
Kriegt man die Performance in den Griff, falls man einen "vernünftigen" Datenbankserver hat, selbst wenn in einigen Jahren 10GB an Messwerten vorhanden sind?<br>
Sollte man die Messwerte nicht in eine einzelne Tabelle speichern, sondern auf mehrere verteilen?<br>
Ich danke schon jetzt vielmals für die Antworten<br>
John
Es geht um die Entwicklung eines Messdatenerfassungssystems. Zur Zeit erarbeiten wir im Team die Grundlagen und sind auf einige Grundsatzprobleme gestossen. Eines liegt darin, wo wir die Messwerte speichern sollen. Eine Idee bestand darin, alle anfallenden Messwerte mit einem Zeitstempel zu versehen und diese direkt in eine schnelle SQL-Datenbank (z.B. My-SQL oder InterBase) zu speichern. Gleichzeitig sollen die Messwerte (vom Messbeginn bis aktuell) von der Datenbank ausgelesen und visualisiert werden können (auf zwei bis drei Clients gleichzeitig).<br>
Ich versuchte das ganze mit einigen Versuchen in Delphi und My-SQL zu testen und bemerkte rasch, dass das ganze einfach zu langsam ist.<br>
Einige Daten:
- Es sollen 250 Kanäle erfasst werden (Die meisten Messwerte sind 8/16 Bit Integer)<br>
- Alle Kanäle werden mit 1Hz gesampelt<br>
- Eine komplette Messung dauert ca. 45min<br>
- In der Woche finden ca. 3 Messungen statt<br>
- An ca. 40 Wochen im Jahr wird gemessen<br>
- Das System soll 10 Jahre funktionieren können<br>
Damit ergibt sich eine Zahl von 810'000'000 einzelnen Messwerten (mit Zeitstempel, Messungsnummer, Kanalnummer). Es wäre zwar schön, wenn es ginge, aber ich glaube nicht so recht daran, dass es sinnvoll oder gar möglich ist, diese Datenmenge in einer einzelnen Tabelle zu verwalten.<br>
Nun meine Fragen:<br>
Ist es überhaupt empfehlenswert, die Messwerte in einer Datenbank zu speichern?<br>
Kriegt man die Performance in den Griff, falls man einen "vernünftigen" Datenbankserver hat, selbst wenn in einigen Jahren 10GB an Messwerten vorhanden sind?<br>
Sollte man die Messwerte nicht in eine einzelne Tabelle speichern, sondern auf mehrere verteilen?<br>
Ich danke schon jetzt vielmals für die Antworten<br>
John
Comment