Hallo Liste!
Ich glaube mich zu erinnern, dass es hier einige gibt, die sich mit
Datenbanken und im speziellen sogar mit PostgreSQL ziemlich gut auskennen.
Wir verwenden hier in Chemnitz seit einiger Zeit eine Postgres-Datenbank
um unsere Messdaten zu speichern. Eigentlich halte ich die
Anforderungen für sehr moderat, dennoch bin ich mit der
,,Gesamtsituation'' bisher etwas unzufrieden.
Ich versuch mal kurz zu skizzieren was wir machen (wollen) und wo es im
Moment klemmt.
Die Datenbank besteht im Prinzip aus einer Tabelle die pro Datensatz
eine ID, einen Zeitstempel, einen Blob sowie noch drei String Felder
enthält.
Da wir die PostGIS-Erweiterung benutzten ist auch noch eine Feld mit
Koordinaten vorgesehen.
In dem Blob-Feld fügen wir Binärdaten der Größe 100 Byte - 300kb ein,
das ist aber ständig variable.
Insgesamt ist perspektivisch mit eine Datenvolumen von ca. 1 Terrabyte
zu rechnen, also eigentlich nix aufregendes. Wenn ich einen Satz
Messdaten importiere sind das ca. 20GB-Daten, die auf 500.000 Datensätze
verteilt sind.
Die Datenbank läuft auf einem Windows-Server in der 32-Bit Version.
Client-seitig verwenden wir c# mit dotConnect von devart.
Jetzt zu den Problemen:
1) Der Import der Daten gestaltet sich aus meiner Sicht ziemlich
langsam. Der Importer schafft im Moment lediglich eine Datenrate von 8
MB/s wenn er in die Datenbank schreibt. Beschaffen könnte er die Daten
theoretisch mit 50M/s.
2) Ganz blauäugig dachte ich mir, dass man um das INSERT der 500.000
Datensätze, die ja alle logisch zu einem Messdatensatz gehören, mit
einer Transaktion klammern kann. Wenn ich das mache, bekomme ich nach
ca. 5GB importierten Daten eine Exception, die mir mitteilt, dass auf
Serverseite irgendwelcher Speicher alle wäre?
Wenn ich weniger Daten importiere gibt es keine Exception. Dafür bekomme
ich beim finalen Commit der Transaktion ein Timeout.
3) Das löschen von Messdaten (wider 500.000 Zeilen) mit einer Query ala
DELTE FROM measurements WHERE session_id = 34
dauert ewig und kommt meist Client-seitig mit einem Timeout zurück.
Hat jemand vielleicht einen Ansatzpunkt?
Vielen Dank!
Marcus