Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Speicherprobleme und Proggi bleibt stehen


NOS1971 - So 02.03.14 20:40
Titel: Speicherprobleme und Proggi bleibt stehen
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 - 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.


NOS1971 - 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 - 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.


NOS1971 - 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 - Mo 03.03.14 11:18

user profile iconNOS1971 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconNOS1971 hat folgendes geschrieben Zum zitierten Posting springen:
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.


NOS1971 - 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 - 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 - 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 - 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.


NOS1971 - Do 06.03.14 18:29

Ok ... dann versuche ich mal mein Glück :-)