Speichern und Sortieren von Strahlen im Optikprogramm
-
Hallo,
ich arbeite mit einem Optikberechnungsprogramm, welches in C++ geschrieben ist. Hierbei kann man 1.000.000 bis 5.000.000 Strahlen nach einer Rechnung speichern. Dann gibt es Filterfunktionen, mit denen man Strahlen mit bestimmten Strahleigenschaften nach dieser Rechnung aussortieren und neu abspeichern kann. Dies dauert sehr lange, manchmal Stunden, wenn der RAM nicht ausreicht und auf Festplatte geschrieben wird. Offensichtlich werden die Strahlen in ihren Eigenschaften sequentiell ausgewertet. Dies wird sicher der Haken sein. Kann jemand sagen, wie sich die Geschwindigkeit bei nichtsequentieller Sortierung, wie es offensichtlich in Datenbanken der Fall ist, steigert? Sind Datenbanken hier die richtige Lösung oder gibt es andere Methoden? Gibt es schnellen Zugriff, auch wenn auf Festplatte geschrieben wird?
Danke im voraus.
Klaus-Dieter
-
Schwer zu sagen, die Informationen sind ein bißchen spärlich.
Prinzipiell sollte eine Datenbank schon das richtige Werkzeug sein. Und 1 bis 5 Millionen Datensätze sollten auch kein Problem darstellen.
-
Was ist aus Sicht der Software ein Strahl?
Kannst du deine Bedingungen für die Abfragen in (Pseudo)SQL fassen?
-
Ich kann nur sagen, dass ein Strahl aus mehreren Strahlsegmenten besteht und ein Strahlsegment 200 Bytes benötigt. Es können dadurch enorme Datenmengen zustande kommen. Z.B. 100000 strahlen x 50 Segmente x 200 Bytes = 1 GB.
Ich möchte die Sache hier auch nicht verteiefen, da ich selbst nicht das Programm schreibe, sondern nur die Verbesserung anstoße. Hier deshalb nur die knappe Frage: Ist eine sequenteille Abarbeitung solcher Datenmengen (Sortierung und danach Neuerstellung eines Datensatzes) in sequentieller Form
(Strahlsegmnent nach Strahlsegment) nicht total unpraktisch? Ist dies nicht genau das richtige für Datenbanken?Besten Dank
Klaus-Dieter
-
Grundsätzlich ja.
Allerdings hängt sehr viel davon ab, wie die Daten in der DB abgelegt werden, damit man auch einen positiven Effekt sehen kann.