Hi,
und, gut rübergekommen alle?
Ich denke Hashtabllen sind ziemlich unschlagbar.
Hash-Tabellen sind bei grossen Datenmengen recht unbrauchbar, weil es zu
viele Dubletten gibt. Je mehr Daten auf einen begrenzten Raum abgebildet
werden muessen, desto mehr Dubletten gibt es.
Ähm ... nein, das ist so nicht ganz korrekt. Ärger mit Doubletten gibt es wenn die Menge der Daten die Menge der (Primär-)Schlüssel überschreitet. Das passiert aufgrund einer schlechten Hashfunktion. Nein, das ist _immer_ wg einer schlechten, oder sollte ich besser sagen: unpassenden Hashfunktion.
Kennst Du alle Daten vorher ist es natürlich ein leichtes eine perfekte Hashfunktion zu basteln, dafür gibt es sogar passende Tools (z.B. gperf(1)). Kennst Du sie nicht, hast Du die von Dir beschriebenen Probleme. Die tauchen aber auch auf, wenn die Hashtabelle eigentlich groß genug ist, die Hashfunktion aber die gegebenen Daten nicht gleichmäßig verteilen kann. Die Kenntnis der Menge der Daten schützt also auch nicht vor Doubletten.
Sind weder Menge noch Art der Daten vorher bekannt[1]: naja, dann sollte man eben andere Methoden als eine Hashtabelle benutzen. In Falle des Selfhtmlarchivs wäre das z.B. ein binärer Baum. Ideal wäre hier ein symmetrischer, niedriger Baum und da die einzelnen Datenstücke auch relativ groß sind würde sich ein B+-Baum empfehlen, noch besser Niemans B++-Baum. Womit wir dann, mein lieber rolf/LanX!, schlußendlich bei einer ausgewachsenen DB wären.
so short
Christoph Zunrieden
[1] natürlich ist die Art der Daten vorher bekannt, nur eben nicht _vollständig_. Knapp daneben ist in diesem Falle eben auch vorbei.