Autor |
Beitrag |
NOS1971
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: So 02.03.14 20:40
Hallo zusammen,
seit einiger Zeit widme ich mich ja meinem WebsiteSpider und er läuft nun mit Multithreading und Reportgenerator echt gut ...
Nun komme ich bei relativ großen Webseiten an meine Grenzen ... bei der Analyse von Shops etc. bleibt er irgendwann einfach stehen ... nun habe ich bereiche aus der datenstruktur und analyse einfach auskommentiert um festzustellen woran es liegt und es scheint die Datenmenge zu sein ...
bisher ist alles in einem TObjectDictionary gelagert und die Anzeige übernimmt ein TVirtualStringTree .,,, die Daten sind in einer Klasse abgelegt
Was mache ich nun ? Auf eine Datenbank umsteigen oder wie kann ich solche Datenmenge handeln ?
Grüße und vielen Dank,
Andreas
|
|
jaenicke
      
Beiträge: 19325
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 02.03.14 22:49
Wie hoch ist denn die Speicherauslastung?
Prinzipiell macht bei größeren Datenmengen eine Datenbank immer Sinn. Aber das Thema hatten wir ja seinerzeit glaube ich schon.
Für diesen Beitrag haben gedankt: NOS1971
|
|
NOS1971 
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: So 02.03.14 23:54
Hi,
ja .. das hatten wir wohl ... also ich bin bei den 60000 einträgen bei knapp 1,9gb ... dann macht das teil dicht ... und ich habe auch webseiten wo es um mehr als 100000 links geht
Grüße,
Andreas
|
|
jaenicke
      
Beiträge: 19325
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 03.03.14 00:24
Da 32 Bit Anwendungen nur 2 GiB RAM nutzen können (mit Tricks auch 3), wirst du da um eine Änderung nicht herumkommen.
Entweder du kompilierst für 64-Bit, dann hast du genug RAM zur Verfügung.
Oder du lagerst die Daten in eine Datenbank aus, was ohnehin der sinnvollere Weg sein dürfte.
Für diesen Beitrag haben gedankt: NOS1971
|
|
NOS1971 
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Mo 03.03.14 11:02
Ach ja ... 32 Bit ... da war doch was ... an die Grenzen bin ich bisher nie gestoßen in all den Jahren meiner Arbeit mit Delphi
Welche DB meinst Du soll ich nutzen sodass ich später im Installer nichts an Treiber etc. benötige ? Wird das nicht saulangsam wenn ich das noch mit dem VirtuslStringTree kopple ?
Grüßle,
Andreas
|
|
jaenicke
      
Beiträge: 19325
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 03.03.14 11:18
NOS1971 hat folgendes geschrieben : | Welche DB meinst Du soll ich nutzen sodass ich später im Installer nichts an Treiber etc. benötige ? |
Wenn es schnell sein soll, wäre ein echter SQL Server sinnvoller.
Aber es gibt auch Embedded DBs wie SQLite, die recht schnell sind.
NOS1971 hat folgendes geschrieben : | Wird das nicht saulangsam wenn ich das noch mit dem VirtuslStringTree kopple ? |
Bei uns geht das sehr schnell. Denn abgerufen werden müssen ja nur jeweils die wenigen gerade angezeigten Datensätze.
Für diesen Beitrag haben gedankt: NOS1971
|
|
NOS1971 
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Mo 03.03.14 11:42
Dank Sebastian,
wie immer bist Du mit Deinem Wissen und Deinen Infos mein Lichtblick ... ich werde dann mal versuchen das entsprechend umzusetzen
Grüßle,
Andreas
|
|
GuaAck
      
Beiträge: 378
Erhaltene Danke: 32
Windows 8.1
Delphi 10.4 Comm. Edition
|
Verfasst: Mi 05.03.14 23:40
Hallo,
ich bemühte mich mal um ein Projekt zur Auswertung von etwa 500 GB Messdaten. Ohne jede Erfahrung mit Datenbanken habe ich während der Angebotsphase MySQL (Open Source glaube ich) versucht, ein passables Delphi-Interface dazu gefunden und hatte das für mich überraschend alles schnell laufend. (Leider ist das Projekt nichts geworden, die Auswertung (ohne Datenbank) der ersten 30 GB als *.CSV übermittelten Daten haben mehr als ausgereicht, die fraglichen Effekte aufzuklären. Anzumerken ist, dass die 30 GB in diesem Pilotprojekt in ca. 250 Dateien vorlagen und rein sequentiell ausgewertet werden konnten (war ja ausreichend), es gab somit kein Speicherplatzproblem.)
Gruß
GuaAck
|
|
NOS1971 
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Do 06.03.14 18:10
Kleine Frage noch in der Kombination der DB mit dem VST ...
wie binde ich denn die Datensätze einer DB an den VirtualStringTree ?
|
|
jaenicke
      
Beiträge: 19325
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 06.03.14 18:24
Ich würde einfach die RecNo an den jeweiligen Datensatz anhängen. Dann brauchst du im OnGetText nur die wieder setzen und kannst sofort alles aus dem Datensatz auslesen, das sollte eigentlich schnell genug sein. Mit so großen Datenmengen habe ich das nie probiert.
Sollte das nicht reichen, könnte man ja noch ein Caching dazwischen setzen.
Für diesen Beitrag haben gedankt: NOS1971
|
|
NOS1971 
      
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Do 06.03.14 18:29
Ok ... dann versuche ich mal mein Glück 
|
|