Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#15

Re: ADO Command mit mehreren Inserts

  Alt 14. Jan 2006, 00:35
Auch, wenn Du das Thema als beantwortet siehst... Vielleicht hilft Dir dieser Denkanstoss dennoch, die Datenmeng zu reduzieren.

Ein Messpunkt liefert Dir im Grunden einen einzigen relevanten Wert: dpvalue

Das aber zu hauf, 31 Millionen Werte.

Welche Genauigkeit ist denn nötig. Wenn deine Werte, sagen wir mal, alle zwischen 0 und 1 liegen (beliebig skalierbar), so hast du bei 31 Millionen Werten eine Auflösung von 1/31.000.000, d.h. eine Auflösung von 1:3*10^-8

Ist diese Genauigkeit wirklich nötig ? Wenn nicht, hier mal meine Idee:

Zitat von Tomektor:
commando := 'INSERT INTO dp1 VALUES (1137061871, 0.568),(1137061872, 0.654),(1137061873, 0.564)';
Wenn ich jetzt mal frech bin, und bei dieser Konstellation davon ausgehen, dass nur eine Genauigkei von 1:1000 ausreicht, so speichere jeden einzelnen möglichen Wert erstmal in einer Tabelle ab, mit deiner gewünschten Genauigkeit, also

Code:
MoeglichenWerte
1 0.000
2 0.001
3 0.002
4 0.003
..
1.000
Deine eigentliche Messreihe referiert auf diese möglichen Werte, und zwar kummulativ.

Code:
Messwerte:
ID int
Datenpunkt int  (referiert auf eine Tabelle Datenpunkte)
Wert int   (referiert auf MoeglichenWerte)
Anzahl int
Wenn für Datenpunkt ein Wert 0.123 reinkommt, so suchst du nach 0.123 in der Moeglichenwertetabelle, und holst Dir dessen ID (=123).
Suche in Messwerte nach dem unique Record mit gewünschtem Datenpunkt und Wert=123. Findest Du keinen, legst Du einen an. Anzahl setzt du auf 1. Ist bereits ein Record enthalten, so inkrementierst du Anzahl um 1.

10 Messwerte (für gleiche Datenpunkt jetzt mal vereinfacht:
Code:
0.100
0.200
0.250
0.250
0.100
0.300
gibt für Dich in der Messwerte:
Code:
ID     Datenpunkt   Wert   Anzahl
1       1             200     1
2       1             250     2
3       1             100     1
4       1             300     1
Durch diese Struktur reduzierst Du dein Datenaufkommen drastisch, und dennoch sind alle Werte gespeichert.

Einziger Wermutstropfen: eine Information geht Dir so dennoch verloren: wann der Messpunkt aufgenommen wurde.

Ein wirklich ernst gemeinter Rat von (wohl jetzt schon zum 3.): Auch wenn diese neue Struktur jetzt dein Problem nicht ganz abdeckt, mach Dir auf jeden Fall mal ein paar neue Gedanken, wie Du diese Datenmenge reduzieren kannst. Eine gescheite Datenstruktur ist das A und O. Lieber hier bischen Hirnschmalz investieren als einfach blind Milliarden Datensätze zu speichern.

Übrigens noch was zu deinem vorgeschlagenem Rechner mit 4 GB RAM. Alles schön und gut, aber dein DBMS muss dieses RAM auch nutzen können. Die MSDE fällt da schon mal weg, ich glaub die ist limitiert auf 1 GB RAM. Willst Du den restlichen Speicher ausnutzen, so muss der grosse Bruder her (MSSQL Server).
  Mit Zitat antworten Zitat