Hallo,
On 14.04.2013 12:04,
Helvetic...@gmx.ch wrote:
> Also wenn ich ja eine h�here Order f�r den B-Tree w�hle, z.B. 100, dann reduziert sich ja die Tiefe und jeder Knoten h�lt eine gr�ssere Anzahl keys.
Das ist so. Aber bedenke dass hier so oder so ein exponentielles
Wachstum vorliegt. Ein B-Baum mit Node-Gr��e 32 kann mit vier
Node-Zugriffen bereits 1082400 Eintr�ge abdecken. Ein Baum mit der
Node-Gr��e 100 br�uchte f�r die selbe Menge ebenfalls 4 Ebenen - wenn
auch gerade so. Kurzum, der Nutzen gr��erer Nodes h�lt sich in Grenzen.
> Trifft es zu, dass bei vielen files im virtual file system die order eher h�her gew�hlt werden sollte und bei wenigen files eher eine kleinere order? Es wird jeder filename indexiert.
Hier setzt Du stillschweigend voraus, dass alle Files in einem einzigen
B-Baum liegen. Lange nicht jedes Dateisystem tut so etwas. Die Redundanz
durch die h�ufig gemeinsamen Pfadnamen w�re doch etwas gro�.
�blicherweise haben die Ordner eine eigene sortierte Struktur. Bei
Dateisystemen, die diese Bezeichnung auch verdienen, sind B-B�ume oder
B+-B�ume hier die Regel. Damit ergibt sich in Summe eher so eine Art
Patricia-Trie, in dem jeder Knoten ein Verzeichnis ist, das selbst
wieder als B-Baum organisiert ist.
> Und was ist genau eine h�here order? Z.B. 100?
Ich nehme an, Du beziehst Dich auf den englischen Wikipedia-Artikel zu
B-B�umen. Damit ist wohl die Gr��e der Nodes gemeint.
> By the way, die order eines B-Baums beschreibt die minimale Anzahl keys in einem Knoten.
Eher die maximale. Die minimale definiert sich �ber den F�llstand. Ohne
weitere Ma�nahmen ist das die H�lfte der Gr��e. Bei B*-B�umen durch
aufwendigeres Rebalancing 2/3.
F�r eine Dateisystemanwendung w�rde ich die Strukturen eher an der Gr��e
der Cluster ausrichten. Nimmt man weniger, ist das einfach nur Unsinn,
weil der verbleibende Platz niemandem nutzt, nimmt man mehr, k�nnte es
vorkommen, dass man um eine Node zu lesen mehrere IOs braucht, weil sie
nicht mehr am St�ck auf dem Datentr�ger stehen. Dann h�tte man auch
gleich mehrere Nodes nehmen k�nnen. Da gibt es nat�rlich je nach
Anwendungsfall einen Break-Even.
Wenn man, wie heute �blich, gen�gend RAM hat, ist die wohl wichtigste
Beschleunigung, m�glichst alle wichtigen Verwaltungsinformationen im
Speicher zu halten. Welche Sortierung dabei zum Einsatz kommt, ist dann
eher zweitrangig. RAM ist eigentlich immer schneller als IO. Wenn man
nat�rlich auf gute Skalierbarkeit aus ist, dann kann man nicht einfach
eine unendliche Menge RAM voraussetzen und sollte zu den klassischen
L�sungen tendieren, wie sie auch Datenbanken nutzen. Eine dynamische
Node-Gr��e ist hier hilfreich.
Marcel