DB_File: HASH oder BTREE
Maik Görgens
- perl
Hallo!
Ich will mit dem Datenbank-Modul DB_File arbeiten.
Da kann man ja in 3 Modis arbeiten. Für mich kommen BTREE und HASH in Frage. Mich würden jetzt die Vor- und Nachteile interessieren.
Hashing ist ja im allgemeinen schneller als BTREE, und wird bei Kollisionen langsamer. Bei mir werden bis zu ca. 60000 Einträge da sein. Kommt man da in Bereiche, wo Hashing schon ungeeignet wird oder ist das noch in Ordnung.
Bei BTREE werden mir die Daten ja nach key sortiert. Was heißt das? Kann ich da dann besonders schnell auf das erste oder letzte Element zugreifen? Gibt es dann von jedem Element eine Art Next-Funktion, auf das nächste Element?
Mich würde halt interessieren, wann ihr welchen Modus bevorzugen würdet und warum.
Vielen Dank und viele Grüße
Maik
你好 Maik,
Hashing ist ja im allgemeinen schneller als BTREE, und wird bei
Kollisionen langsamer. Bei mir werden bis zu ca. 60000 Einträge da
sein. Kommt man da in Bereiche, wo Hashing schon ungeeignet wird oder
ist das noch in Ordnung.
Das haengt von der Hash-Funktion ab.
Bei BTREE werden mir die Daten ja nach key sortiert.
Naja, das ist eine sehr unzureichende Erklaerung. Lies mal
http://de.wikipedia.org/wiki/B-Baum
Was heißt das? Kann ich da dann besonders schnell auf das erste oder
letzte Element zugreifen?
Nein, das heisst, dass du im schlimmsten Fall einen Aufwand von O(ld n)
hast, also bei 1024 Datensaetzen maximal 10 Vergleiche. Bei 60000
Datensaetzen waeren das dann maximal 16 Vergleiche.
再见,
克里斯蒂安