Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

DB2 – SS 2019 von Baum allgemein bis B*-Baum

Ähnliche Präsentationen


Präsentation zum Thema: "DB2 – SS 2019 von Baum allgemein bis B*-Baum"—  Präsentation transkript:

1 DB2 – SS 2019 von Baum allgemein bis B*-Baum
Dr. Karsten Tolle

2 Graphtheorie … Bäume Definitionen manchmal merkwürdig – man findet den Zusatz „Teil der Graphtheorie“. … oder es wird nicht Baum, sondern eine spezielle Baumart definiert, z.B.: Binärbaum gerichteter Baum geordneter Baum

3 Graphtheorie … Ein Graph G ist ein Paar G=(V,E) aus einer (endlichen) Menge von Knoten V und einer Menge von Kanten E (E⊆VxV). Basiert auf: Dieter Jungnickel „Graphen, Netzwerke und Algorithmen“ 3. Auflage von 1994

4 kreisfrei / zusammenhängend
nicht zusammenhängend nicht kreisfrei kreisfrei (zyklenfrei) nicht zusammenhängend zusammenhängend gdw. alle Knoten verbunden nicht kreisfrei zusammenhängend und kreisfrei

5 Baum und Blatt G sei ein Graph auf n Knoten. Dann implizieren je zwei der folgenden drei Bedingungen die dritte: G ist zusammenhängend. G ist kreisfrei. G hat n-1 Kanten. Ein Graph T, der diesen Bedingungen genügt, heißt ein Baum („tree“). Jeder Knoten vom Grad 1 (Anzahl der Kanten, die den Knoten enthalten) heißt Blatt („leaf“).

6 Baum  Wurzel? zusammenhängend und kreisfrei  Baum

7 Wurzel? zusammenhängend und kreisfrei  Baum ohne Wurzel! Graphentheorie: In einem gerichteten Graphen heißt ein Knoten, von dem aus alle Knoten erreichbar sind, eine Wurzel („root“). Basiert auf: Dieter Jungnickel „Graphen, Netzwerke und Algorithmen“ 3. Auflage von 1994

8 gerichteter Graph (digraph)
„In gerichteten oder auch orientierten Graphen werden Kanten statt durch Linien durch Pfeile gekennzeichnet, wobei der Pfeil vom ersten zum zweiten Knoten zeigt. Dies verdeutlicht, dass jede Kante des Graphen nur in eine Richtung durchlaufen werden kann.“ (Wikipedia)

9 gerichteter Graph (digraph) -> Baum
Ein gerichteter Graph ist ein Baum gdw. der entsprechende ungerichtete Graph ein Baum ist. kein Baum Baum

10 gerichtete Graphen zusammenhängend und kreisfrei  Baum

11 gerichtete Graphen (Wurzel rot)
zusammenhängend und kreisfrei  Baum ohne Wurzel zusammenhängend und kreisfrei  Baum Wikipedia unterscheidet in in-tree und out-tree zusammenhängend und kreisfrei  Baum zusammenhängend und kreisfrei  Baum

12 gewurzelter Baum (Baum mit Wurzel)
C D Darstellung: Wurzel oben A C C ist innerer Knoten B D D und B sind Blätter Wikipedia unterscheidet in in-tree und out-tree

13 Vater, Mutter, Kind A C ist Kind von A C ist Vater von D C B D Wikipedia unterscheidet in in-tree und out-tree Jeder Knoten hat genau einen Vater (außer die Wurzel)! (in einem gewurzeltem Baum)

14 Binärbaum Definition: Ein Binärbaum ist ein gewurzelter Baum, bei dem jeder Knoten höchstens zwei Kindknoten besitzt. A A B C D C B kein Binärbaum D Binärbaum

15 geordneter Baum Bei einem geordneten Baum ist die Reihenfolge der Teilbäume eines Knotens relevant. A A C B C B D D

16 Binärer Suchbaum Ist ein geordneter Binärbaum, bei dem durch die links-rechts Aufteilung eine Ordnung erstellt wird. … z.B. alle kleiner nach links und alle größer oder gleich nach rechts. 85 85 17 und 87 einfügen 12 95 95 12 2 2 17 87

17 B*-Baum (bei uns) mit k und k*
Balancierter Baum (alle Blätter auf einer Ebene) k gibt die minimal erlaubte Anzahl von Kindknoten an (innerer Knoten)  maximal 2k-1 k* gibt die minimal erlaubte Anzahl von Einträgen in Blättern an  maximal 2k*-1 … die Wurzel ist nur nach oben begrenzt!

18 Aus den Folien (S. 22): Wie erstellen?
Reihenfolge der Eingabe relevant? … ja, Reihenfolge ist relevant. Natürlich müssen die Daten in den Blättern sortiert sein, wo aber die Lücken sind bzw. welche Blätter ganz voll sind (hier B7 und B11) hängt von der Reihenfolge der Eingabe ab.

19 Typische Aufgabentypen zu B*-Baum
Fragen zu Grundlagen (siehe oben) Erstellung/Zeichnen eines Baumes Beschreibung/Zeichnen der Operationen (Lookup, Modify, Insert, Delete) Berechnung von k und k* entsprechend der Vorgaben

20 Gegeben sei ein leerer B
Gegeben sei ein leerer B*-Baum mit 𝑘=3, 𝑘 ∗ =2 und den folgenden Daten: Fügen Sie die Daten aus der Tabelle in den leeren B*-Baum (über die ID) entsprechend der Reihenfolge der Tabelle (von oben nach unten) ein. Zeichnen Sie mindestens jeden Zwischenschritt, bei dem ein neuer Block für den Baum benötigt wird und den fertigen Baum. Daten ID Wert 1 A 3 B 6 C 4 D 7 5 F 2

21 Lösungsvorschlag (bei k=k*=2!):
Daten ID Wert 1 A 3 B 6 C 4 D 7 5 F 2 1,A 3,B 6,C Wurzel als Blatt: Nach dem Eintragen der 4: 4 - 1,A 3,B - 4,D 6,C - Nach dem Eintragen der 5 (hier mit schieben der 4 in den linken Nachbar- Knoten): 5 - 1,A 3,B 4,D 5,F 6,C 7,C

22 (bei k=k*=2!) 3 5 1,A 2,A - 3,B 4,D - 5,F 6,C 7,C 4 6 1,A 2,A 3,B
Nach dem Eintragen der 2: 3 5 1,A 2,A - 3,B 4,D - 5,F 6,C 7,C Alternativ, hätte man beim Eintragen der 5 aufgespaltet, sollte der finale Baum so aussehen: 4 6 1,A 2,A 3,B 4,D 5,F - 6,C 7,C -

23 Gegeben sei folgende Ausgangsbaum B*-Baum mit k=k*=2. Ausgangsbaum:
25, .. Führen Sie folgende Operationen jeweils auf dem Ausgangsbaum aus und zeichnen Sie resultierenden Baum erneut auf. Löschen der 10 Löschen der 7 Einfügen von 18

24 Löschen der 10 25, .. Es gibt zwei Möglichkeiten (hier nur Verschmelzen und Aufteilen der beiden Knoten) Alternative wäre Verschmelzen und Schieben nach rechts, wodurch es ein Blatt weniger wäre: 25, .. 12 20 12,… 15,… ,… 25,… -

25 Löschen der 7 25, .. 15 10 27 1,… 3,… 8,… 10,… 12,… - 15,… 20,… 25,… 27,… 30,… -

26 Einfügen von 18 25, .. Möglichkeiten: 1) Schieben nach links, 2) Schieben nach rechts oder 3) auftrennen Schieben nach links ergibt: 25, .. 18 15,… 18,…

27 Berechnung von k und k* entsprechend der Vorgaben
Bestimmen Sie die Werte k und k* für einen B*-Baum bei gegebener Seitengröße p=4096 Bytes, Schlüsselgröße s=8 Bytes, Satzgröße r=500 Bytes und Verweisgröße v=8 Bytes. Sonstiger Verwaltungsoverhead inkl. Header kann vernachlässigt werden. Wie viele Ebenen benötigt man mindestens/höchstens mit diesen Parametern um 5000, und Datensätze zu speichern?

28 a) Berechnung von k und k*
k*: floor (4096 Byte / 500 Byte) => 8 DS passen maximal in einen Block! 2k*-1 = 8 2k* = 9 k* = floor(4,5) = 4 | k* muss ja ganzzahlig sein! k: floor ((4096 Byte – 8 Byte) / (8 Byte + 8 Byte)) +1 = 256 = passen maximal floor ((größe Block – ganz linker Zeiger) / (Zeiger + Schlüssel)) + 1 (vom Zeiger ganz links) 2k-1 = 256 2k = 257 k = floor (128,5) = | k muss ganzzahlig sein!

29 b) mindestens 50000000 Mindestens gdw. Alle Knoten maximal besetzt:
Also k* = 4 => bis zu 2*4-1 = 7 DS in den Blättern und k = 128 => bis zu 2*128-1 Verweise in den Knoten ceiling( DS / 7) = Blätter ceiling( / 255) = Knoten darüber ceiling(28012 / 255) = 110 Knoten darüber ceiling(110/255) = 1 die Wurzel Also hat der B*-Baum 4 Ebenen! Höchstens genauso, nur mit minimaler Belegung, man rechnet also mit 4 DS in den Blättern und 128 Verweise in den Knoten. … sollte höchstens 5 Ebenen ergeben (hatten wir in der Übung berechnet)! … ist halt logarithmisch.


Herunterladen ppt "DB2 – SS 2019 von Baum allgemein bis B*-Baum"

Ähnliche Präsentationen


Google-Anzeigen