Hallo, Zusammen oder auch einzeln!
2000 Datensätze, etwa 2,5 MB werden lokal bearbeitet. Aktenkoffer-Prinzip = werden vor Ort in einem File gespeichert und wieder geladen.
Die Datensätze werden über eine TList mit einem Tree verbunden. Zur Identifizierung gibt es 'SID' = SelfID, 'PID' = ParentID.
Soweit alles fein und rattenschnell - aber! Der User (Im Moment ich, der Esel) legt einen neuen Datensatz an (Append oder Insert ist egal), schiebt diesen im Tree an erste Stelle als ersten Root und hängt den bisherigen Root als FirstChild an FirstRoot. Alle Zeiger werden richtig geändert .(Auch noch prima).
Wird der CDS nun gespeichert und dann wieder geladen, knallt der erste Datensatz als Child auf ein Parent, was noch nicht existiert, denn dieses (bzw. sein Datensatz) steht am Ende oder mittendrin in der Datei. Na schön, denk ich mir, dann speichern wir doch mal beim Save den AbsoluteIndex vom Tree mit (Was ja über die TList-Verbindung KEIN Problem ist) und schon dauert das Speichern 8 Sekunden für popelige 2000 Datensätze, weil die durchiteriert werden müssen.
Nun stell ich mir mal vor, da sind 10000 Datensätze drin - Tests haben ergeben, dass das Problem exponentiell steigt - womit wir dann über 30000 Datensätze mal lieber nicht nachdenken.
Irgendeine Ordnung muss her, die möglichst nur wenige Knoten betrifft, denn laden und indizieren geht rasant, aber alle durch-editieren und posten dauert ewig.
Hat jemand eine Idee - kann auch eine ganz andere Lösung sein - etwas zeitnah wäre auch klasse.
Danke, Bernhard
2000 Datensätze, etwa 2,5 MB werden lokal bearbeitet. Aktenkoffer-Prinzip = werden vor Ort in einem File gespeichert und wieder geladen.
Die Datensätze werden über eine TList mit einem Tree verbunden. Zur Identifizierung gibt es 'SID' = SelfID, 'PID' = ParentID.
Soweit alles fein und rattenschnell - aber! Der User (Im Moment ich, der Esel) legt einen neuen Datensatz an (Append oder Insert ist egal), schiebt diesen im Tree an erste Stelle als ersten Root und hängt den bisherigen Root als FirstChild an FirstRoot. Alle Zeiger werden richtig geändert .(Auch noch prima).
Wird der CDS nun gespeichert und dann wieder geladen, knallt der erste Datensatz als Child auf ein Parent, was noch nicht existiert, denn dieses (bzw. sein Datensatz) steht am Ende oder mittendrin in der Datei. Na schön, denk ich mir, dann speichern wir doch mal beim Save den AbsoluteIndex vom Tree mit (Was ja über die TList-Verbindung KEIN Problem ist) und schon dauert das Speichern 8 Sekunden für popelige 2000 Datensätze, weil die durchiteriert werden müssen.
Nun stell ich mir mal vor, da sind 10000 Datensätze drin - Tests haben ergeben, dass das Problem exponentiell steigt - womit wir dann über 30000 Datensätze mal lieber nicht nachdenken.
Irgendeine Ordnung muss her, die möglichst nur wenige Knoten betrifft, denn laden und indizieren geht rasant, aber alle durch-editieren und posten dauert ewig.
Hat jemand eine Idee - kann auch eine ganz andere Lösung sein - etwas zeitnah wäre auch klasse.
Danke, Bernhard
Comment