Effizienter Vergleichsalgorithmus

Status
Nicht offen für weitere Antworten.

xquadrat

Mitglied
Hallo,
derzeit entwickele ich an einem Werkzeug, mit dem man Daten in einer Datenbank mit vorher aufgezeichneten Referenzdaten vergleichen kann. Diese Referenzdaten liegen in kommaseparierten Textdateien vor. Die Testdaten liegen auf einer Relationalen Datenbank. Der Vergleich der einzelnen Tabellen untereinander ist recht Einfach. Die Überprüfung der Fremdschlüsselbeziehungen dauert verhältnismäßig lange, da bei meiner jetzigen Implementierung die Textdatei mit der Tabelle, welche über den Fremdschlüssel referenziert ist jedesmal sequenziell durchsucht wird. Die Größe der Tabelle liegt bei ca 500.000 Datensätzen, weshalb eine komplette Verarbeitung im Hauptspeicher nicht in Frage kommt.

Hat jemand eine Idee, wie man über einen performanten Algorithmus auch diese Fremdschlüsselbeziehungen effizient überprüfen kann?
 
S

SlaterB

Gast
ganz allgemein gesprochen: wenn die Daten zu viele sind, dann trenne sie auf in Teilbereiche,
such dir irgendeine Hauptinformation wie Kunde,
und lade in der ersten Runde alle Daten zu Kunden mit Id 1 bis 10000
und in späteren Runden weitere Daten,

dann aus der DB genauso nur die Daten aus diesem Bereich,
und alle benötigten Daten im Speicher vergleichen, mit Maps und sonstigen Hilfsstrukturen,

wenn du beliebig vernetzte Daten hast, dann wirds wohl schwieriger ;)
vielleicht gibts aber auch dort Konzentrationen in bestimmten Bereichen die schnell abgearbeitet werden können,
während einige wenige Informationen für mehrere Durchgänge im speicher gehalten werden müssen

----------

vielleicht hilft es auch, erst nur die einfachen, aber datenintensiven Komplett-Tabellen zu vergleichen
und in einem zweiten Durchgang nur die Fremdschlüssel, wobei du dann nur die Ids pro Eintrag der Tabellen im Speicher brauchst
-> geringere Speicherbelastung?
 

semi

Top Contributor
Wenn es mit dem Abgleich über die Textdateien zu kompliziert ausfällt, kannst du die Daten in temporäre
Tabellen importieren und dann den Abgleich über die Tabellen durchführen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben