avatar_dAb

Informatikgedöns

Begonnen von dAb, 05. September 2012, 18:08:40

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

dAb

Auf der Suche nach einer guten Lösung... Ich habe auf der einen Seite rund 100k XML-Dateien. Auf der anderen Seite habe ich rund das zehnfache an Objekten in einer Datenbank und möchte nun prüfen ob in den XML-Dateien ein Eintrag über die Objekte in der Datenbank vorhanden ist. Ganz grob das ganze mal beschrieben.

Was meint ihr ist wohl der beste Weg für solch einen riesen Vergleich?
AJFM:
Meister: 1, 5, 6, 7, 13, 16, 28, 32
Pokal: 23, 32
Supercup: 8, 14, 17, 20, 26

:joint:

merfis

Sind die Objekte auf beiden Seiten gleich? Also, wenn du sie z.B. als Strings serialisierst? Dann könntest du die Hash-Werte von Strings nehmen und gucken, ob du auf der anderen Seite den gleichen Wert findest. Oder halt irgendwelche Unique-Werte vergleichen.

Müssen die Objekte letztendlich in der DB landen? Dann könntest du auch alle XMLs durchgehen und mit den in der DB vergleichen bevor du sie da rein speicherst. Mit gescheiten Indizien geht das auch schnell.

dAb

#2
Ne, das mit Hash wird nicht hinhauen. Erstes Merkmal ist eine ID. Nach der muss geschaut werden und dann soll halt geguckt werden was bei dieser ID noch so dabei steht.

In der DB landet nichts. Es muss nur eine Auswertung entstehen, die die Objekte auflistet bei denen etwas in den XML Dateien zutrifft.
AJFM:
Meister: 1, 5, 6, 7, 13, 16, 28, 32
Pokal: 23, 32
Supercup: 8, 14, 17, 20, 26

:joint:

dAb

XML Dateien einlesen und dann jedem mit jeden vergleichen dauert wohl Tage...

Eventuell die XMLs in eine DB bringen und dann über die ID gehen. Würde das was bringen? 
AJFM:
Meister: 1, 5, 6, 7, 13, 16, 28, 32
Pokal: 23, 32
Supercup: 8, 14, 17, 20, 26

:joint:

merfis

100k hört sich aber nicht nach viel an :D

Kann ein gleiches Objekt in XML und in der DB eine andere ID haben? Wenn nicht, kannst du eine Liste mit den IDs erstellen, die in beiden drin sind (wenn du beide in der DB hast, ist das ziemlich einfach). Und dann nur irgendwas mit den Objekten machen, deren ID in der Liste ist.

Wohlstandsradler

Zitat von: merfis am 05. September 2012, 21:40:41
Sind die Objekte auf beiden Seiten gleich? Also, wenn du sie z.B. als Strings serialisierst?
Geht's um Frauen? Die sind hinten doch eindeutig enger! ^^

dAb

Zitat von: merfis am 06. September 2012, 00:15:18
100k hört sich aber nicht nach viel an :D

Kann ein gleiches Objekt in XML und in der DB eine andere ID haben? Wenn nicht, kannst du eine Liste mit den IDs erstellen, die in beiden drin sind (wenn du beide in der DB hast, ist das ziemlich einfach). Und dann nur irgendwas mit den Objekten machen, deren ID in der Liste ist.

Ich weiß noch nicht wie große die XML-Dateien sind. Habe sie noch nicht gesehen. Wie gesagt... Ist ne Menge.

Ne, die Objekte haben die gleiche ID. Das mit der DB ist aber schwierig. Die DB, die ich meine, da kann nichts reingeladen werden. Also einfach ne neue Tabelle erstellen ist nicht. Deswegen meinte ich damit eher ne zweite DB.
AJFM:
Meister: 1, 5, 6, 7, 13, 16, 28, 32
Pokal: 23, 32
Supercup: 8, 14, 17, 20, 26

:joint:

merfis

Aber eine Menge Objekten aus XML-Dateien in einer DB reinzuladen wird auch dauern und dann muss du das wieder lesen.

Dann eher aus der DB die Informationen, die du auf jedem Fall brauchen wirst, in eine Liste laden, die XMLs durchgehen und mit den Daten in der Liste vergleichen.

BorussenZwerg

Teamweltmeister Saison 5 - Team Cassanova

dAb

#9
Zitat von: merfis am 06. September 2012, 14:58:04
Aber eine Menge Objekten aus XML-Dateien in einer DB reinzuladen wird auch dauern und dann muss du das wieder lesen.

Dann eher aus der DB die Informationen, die du auf jedem Fall brauchen wirst, in eine Liste laden, die XMLs durchgehen und mit den Daten in der Liste vergleichen.

Das Problem ist halt auch, dass man in der DB nicht rauslesen kann, da man in der DB selbst noch verschiedene Prüfungen durchführen muss am Ende. Deswegen wird es wohl momentan darauf hinauslaufen: Aus den XML-Dateien erstmal die wichtigen Infos rausholen und zwischenspeichern. Ich brauche auch nicht alle Objekte aus den XMLs, sondern nur die, auf die was Bestimmtes zutrifft. Die Abfrage auf unserer Datenbank ist dann eher ein Klacks. Nur die blöden XMLs werden viel Zeit kosten. Die Frage, die ich mir nur gerade stelle, ob ich ohne Probleme paar 100k Objekte in Hashtables laden kann.

Eigentlich ists ja egal wie ich es mache, auf deinem Weg ist am Ende auch ein riesen Vergleich vorhanden. Alles blöd irgendwie. Kunde wills aber so, muss das Ding halt paar Tage durchlaufen. :bang:
AJFM:
Meister: 1, 5, 6, 7, 13, 16, 28, 32
Pokal: 23, 32
Supercup: 8, 14, 17, 20, 26

:joint:

merfis

Was heißt verschieden Prüfungen? Muss doch nur irgendwelche Properties mit einander vergleichen oder nicht? Die kannst du doch auch gleich aus der DB ziehen und in ein Array oder eine Map speichern. Ich denke, das ist schneller als jedes Mal die DB abzufragen. Oder ist euere DB riesig?

Wenn du leicht an die IDs von XMLs kommst und sie mit der jeweiligen XML-Datei verknüpfen kannst, dann hole erst mal die alle, dann die IDs aus der DB, erstelle eine Liste mit den IDs, die in beiden sind und dann mach weitere Checks. Dann würdest du zumindest am Anfang nur wenig mit XMLs machen.

Sunlion79

@dAb
Schick das Ding doch merfis, der macht dir das schnell fertig. :D
-"Was magst du nicht an Teamarbeit?"
-"Das Team."

merfis

Zitat von: GM-Sunlion79 am 06. September 2012, 16:06:48
@dAb
Schick das Ding doch merfis, der macht dir das schnell fertig. :D

Ich hab schon genug zu tun :hau:

BorussenZwerg

Soviel wie du hier heute rumhängst wohl eher nicht. :p
Teamweltmeister Saison 5 - Team Cassanova

dAb

Zitat von: merfis am 06. September 2012, 16:03:25
Wenn du leicht an die IDs von XMLs kommst und sie mit der jeweiligen XML-Datei verknüpfen kannst, dann hole erst mal die alle, dann die IDs aus der DB, erstelle eine Liste mit den IDs, die in beiden sind und dann mach weitere Checks. Dann würdest du zumindest am Anfang nur wenig mit XMLs machen.

So habe ich das ja in etwa gemeint. :p

Wenig ist jetzt aber auch die XMLs nach den IDs zu durchsuchen. Und das wird sicher die meiste Zeit kosten...
AJFM:
Meister: 1, 5, 6, 7, 13, 16, 28, 32
Pokal: 23, 32
Supercup: 8, 14, 17, 20, 26

:joint: