1.9 KiB
1.9 KiB
Interne Datenorganisation
Index und B-Baum
Dünner Index
- Indexeinträge für jede Page
- Indizierte Daten müssen innerhalb der Page sortiert sein und einmalig vorkommen
- Hat weniger Datensätze als eigentliche Tabelle
- Enthält nur die Page-Nummer und den Schlüsselwert
- Meistens verwendet für Primärschlüssel
Dichter Index
- Indexeinträge für jeden Record
- Indizierte Daten müssen nicht sortiert sein
- Indexeinträge können mehrfach vorkommen
- Hat gleiche Anzahl Datensätze wie die eigentliche Tabelle
- Enthält Page-Nummer, Record-Nummer und den Schlüsselwert
Mehrstufiger Index (Baum)
- Indexeinträge sind in einem Baum organisiert
- Jeder Knoten enthält Schlüsselwerte und Zeiger auf die Kinderknoten
B-Baum
Suchen in B-Bäumen
- Suche beginnt an der Wurzel
- Ist x im Knoten enthalten?
- Ja: Suche beendet
- Nein: Gehe zum Kindknoten, dessen Schlüsselwert am nächsten an x liegt
- Ist Knoten Blattknoten?
- Ja: Suche erfolglos beendet
- Nein: Wiederhole Suche im Kindknoten
- Zwischen welchen Schlüsselwerten liegt x?
- Gehe zum jeweiligen Kindknoten (> → rechts / < → links)
- Zwischen welchen Schlüsselwerten liegt x?
- Ist Knoten Blattknoten?
Einfügen in B-Bäume
- Suche nach der Position, an der x eingefügt werden soll
- Ist der Knoten voll? (Anzahl der Schlüsselwerte = 2m)
- Ja: Knoten teilen
- Mittleren Schlüsselwert in den Elternknoten einfügen
- Falls Elternknoten voll wiederhole Teilung nach oben
- Falls Elternknoten Wurzel ist, wird eine neue Wurzel erstellt
- B-Baum wächst um eine Stufe
- Falls Elternknoten Wurzel ist, wird eine neue Wurzel erstellt
- Nein: Einfügen des Wertes in den Knoten
- Ja: Knoten teilen
Variante B+ Baum
- Keine Daten in den Knoten
- Nur Schlüsselwerte und Zeiger auf die Kinderknoten
- Daten befinden sich in den Blattknoten
- Suche, Einfügen, Löschen immer
O(log n)