| Autor |
Beitrag |
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mi 09.01.13 17:44
AScomp hat folgendes geschrieben : | Die Datenmenge lässt sich nicht reduzieren - wenn der Anwender 2 TB an Daten wegsichern möchte und ein Protokoll dazu braucht, dann ist die Datenmenge nunmal nicht kleiner zu bekommen.  |
Dann teile doch die Datenmenge auf, z. B. nach jeweils 10.000 Einträgen die StringListe wegschreiben, die StringListe leeren und wieder bis zum 10.000. Eintrag füllen, in neue Datei wegschreiben, leeren usw.
Für Fehlermeldungen könntest Du ja eine extra StringListe verwenden.
|
|
AScomp 
      
Beiträge: 162
Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
|
Verfasst: Mi 09.01.13 17:48
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 09.01.13 17:54
Gut, bei 10 Millionen Einträgen ist das ja auch schon rechnerisch klar... selbst bei nur 100 Zeichen pro Zeile.
10.000.000 Einträge * 100 Zeichen * 2 Byte = 2.000.000.000 Byte
Und ein 32-Bit Programm kann nun einmal nur 2 GiB RAM nutzen, egal was du machst. Bei einer deratigen Datenmenge kannst du niemals alles im Speicher halten. 
|
|
AScomp 
      
Beiträge: 162
Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
|
Verfasst: Mi 09.01.13 18:03
jaenicke hat folgendes geschrieben : | Gut, bei 10 Millionen Einträgen ist das ja auch schon rechnerisch klar... selbst bei nur 100 Zeichen pro Zeile.
10.000.000 Einträge * 100 Zeichen * 2 Byte = 2.000.000.000 Byte
Und ein 32-Bit Programm kann nun einmal nur 2 GiB RAM nutzen, egal was du machst. Bei einer deratigen Datenmenge kannst du niemals alles im Speicher halten.  |
Ich bin bisher schlicht nicht von so umfangreichen Datenmengen ausgegangen. Aber es kommt jetzt immer häufiger vor, dass ein paar hunderttausend Dateien gesichert werden sollen.
Darum bin ich jetzt auch umgestiegen auf das direkte Wegschreiben in eine Datei. Ist zwar beim Zugriff jetzt etwas schwieriger, da die Daten nicht mehr so leicht zu holen sind wie bisher, aber auf längere Sicht mit Sicherheit von Vorteil.
Danke euch für die Unterstützung! 
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mi 09.01.13 18:15
Ich würde den Logzeilen einen festen Aufbau geben, dann kann man recht einfach und bequem nach Fehlern suchen. Zum Beispiel so:
Quelltext 1:
| lfd. Nummer - Zeitstempel - Fehlercode - Dateiname |
Wenn die Fehlercodes schön untereinander in die Logdatei geschrieben werden, ist es ein leichtes, z. B. mit Readln diese Zeilen zu ermitteln und anzuzeigen.
|
|
AScomp 
      
Beiträge: 162
Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
|
Verfasst: Mi 09.01.13 18:18
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mi 09.01.13 18:23
AScomp hat folgendes geschrieben : | | Es geht hier aber nicht um ein Fehlerlog. |
Ich rede von einem Backup-Log. Wenn Du meinst, daß während der Sicherung keinerlei Probleme auftreten können (Rechteproblem, eklusiv geöffnete Dateien usw.), dann lasse halt die Fehlercodes weg.
|
|
AScomp 
      
Beiträge: 162
Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
|
Verfasst: Mi 09.01.13 18:28
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mi 09.01.13 18:39
AScomp hat folgendes geschrieben : | | Der Punkt ist nur, dass das Lesen aus einer großen Datei deutlich länger braucht als das Lesen aus dem Speicher. |
Da kann man sicherlich einiges optimieren.
Vor ein paar Jahren gab es mal eine Diskussion in einer Newsgroup zum Thema, wie man aus einer Datei größer 100 MB alle Leereichen durch ein anderes Zeichen austauschen kann. Bei den ersten Versuchen dauerte das etwa 20 Minuten. Zum Schluß waren es unter 2 Sekunden, wenn ich die Zahlen noch richtig im Kopf habe.
|
|
|