Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TCLientDataSet SaveToFile performanter gestalten? (https://www.delphipraxis.net/202225-tclientdataset-savetofile-performanter-gestalten.html)

muHAHA 10. Okt 2019 13:18

TCLientDataSet SaveToFile performanter gestalten?
 
Guten Tag, ich bin neu hier und hoffe ich habe jetzt nichts falsch platziert. Folgende Fragestellung: Ich möchte Daten persistent speichern und das nach jedem neuen Eintrag um Datenverlust zu vermeiden. Dabei wird AddEntry relativ häufig aufgerufen.
Bisher nutze ich dafür TClientDataSet, habe dabei aber das Problem, dass durch die wachsende Datenmenge der Vorgang irgendwann recht langsam ist.
Ich hatte schon TMemtable als Ersatz probiert, dies war aber im Vergleich noch langsamer. Nun also die Frage, gibt es Wege, dass ganze perfomanter zu gestalten?
Code:
procedure TDataSetMap.AddEntry(const AUId: string; const ATarget: Integer);
   var EntryExists: boolean;
begin
  EntryExists := GoToUId(AUId, true);

  if not EntryExists then begin

    EntryExists := GoToUId(AUId, false);

    if not EntryExists then begin
      FTmpClientDataSet.Append;
      FTmpClientDataSet.FieldByName('UId').AsString := AUId;
      FTmpClientDataSet.FieldByName('Target').AsInteger := ATarget;
      FTmpClientDataSet.Post;
      FTmpClientDataSet.SaveToFile(FTempPath);
    end;
  end;
end;

freimatz 10. Okt 2019 14:12

AW: TCLientDataSet SaveToFile performanter gestalten?
 
TDataSet verwenden und eine Datenbank.

Rollo62 10. Okt 2019 14:21

AW: TCLientDataSet SaveToFile performanter gestalten?
 
Eventuell das SaveToFile kapseln und im Hintergrund ausführen.
Dann muss das TmpClientDataSet aber gegen doppeltes Schreiben geschützt werden,
ist mit etwas Aufwand verbunden.

Wenn aber nur selten/wenige/von einer Stelle aus Daten geändert werden könnte das eine Option sein.

muHAHA 11. Okt 2019 09:43

AW: TCLientDataSet SaveToFile performanter gestalten?
 
Danke für die schnellen Antworten.

FoxAlight 11. Okt 2019 15:23

AW: TCLientDataSet SaveToFile performanter gestalten?
 
Probier doch mal TDictionary. Hatte schon mal soetwas ähnliches und mit TDictionary ging es relativ fix.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz