Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Universität Karlsruhe (TH) © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel 6 Zugriffsschicht: Satzzugriffsstrukturen.

Ähnliche Präsentationen


Präsentation zum Thema: "Universität Karlsruhe (TH) © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel 6 Zugriffsschicht: Satzzugriffsstrukturen."—  Präsentation transkript:

1 Universität Karlsruhe (TH) © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel 6 Zugriffsschicht: Satzzugriffsstrukturen

2 2 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Gegenstand des Kapitels Mengenorientiertes Datenmodell Datenmodell Dateien Dateiverwaltung Geräteschnittstelle Anfragebearbeitung Satzorientiertes Datenmodell Speicherstruktur Schneller Transport zwischen Haupt- und Hintergrundspeicher Hauptspeicherseiten u. Segmente Segment- u. Pufferverwaltung Bevorratung von Daten im Hauptspeicher (rechtzeitige Bereitstellung vor Benutzung) Transparenter homogener Speicher Datentypen: Seite = feste Anzahl von Bytes Segment = var. Anzahl von Seiten Operatoren: Anforderung/Freigabe von Seiten Segmente anlegen/öffnen/schließen Datentypen: Block = feste Anzahl von Bytes Datei = variable Anzahl v. Blöcken Operatoren: Dateien anlegen/öffnen/schließen Lesen/Schreiben von Blöcken Geräte-E/A Satz- u. Satzmengenverwaltung Satzzugriffsstrukturen Zugriffsschicht Vorschau auf zukünftig benötigte Daten Vermeiden nicht aktuell benötigter Daten Datentypen: Sätze und Satzmengen Operatoren: Operatoren auf Sätzen Datentypen: Satzmengen Operatoren: Operatoren auf Mengen Datentypen: phys. Zugriffsstrukturen auf Sätze Operatoren: seq. Durchlauf, gezielte Suche Optimaler Einsatz der logischen Ressourcen Performanz

3 3 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Anordnung Datensätze auf Seiten: Satzverwaltung Bei Strukturen mit Gemeinsamkeiten Datenmodell Physische DB (satzorientiert) Zugriffs- struktur Kl. Physischer Datensatz enthält enthält Physische DB (seitenorientiert) SegmentSeite repräsentiert durch gespeichert in enthält enthält Derselbe Satz kann mehreren Zugriffstrukturen angehören Performanter Zugriff

4 4 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel 6.1 Zugriffspfade

5 5 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Alle Zugriffsstrukturen müssen mindestens folgende Schnittstellenoperationen anbieten: Einfügen eines Datensatzes in die Zugriffsstruktur, Entfernen eines Datensatzes aus der Zugriffsstruktur. Sequenzieller Zugriff: Iterieren (scan) über alle Datensätze der Zugriffsstruktur (bspw. Operation first für den Zugriff auf den ersten Datensatz und next für den Zugriff auf den folgenden Datensatz). Erlaubt das systematische Aufsuchen/Bearbeiten der Datensätze der Zugriffsstruktur. Operatoren (1)

6 6 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Optional Direkter Zugriff: Jeder Datensatz muss sich anhand eines von anderen Datensätzen unabhängigen Kriteriums bestimmen lassen. Zugriff anhand Position. Zugriff anhand eines Schlüsselfelds. Zusätzlich optional: Sortierung der Datensätze anhand eines Schlüsselfelds und Iteration über die Datensätze in auf- oder absteigender Sortierreihenfolge sequenzieller Zugriff. Überprüfung der Eindeutigkeit von Schlüsselwerten. Zugriff anhand mehrerer Schlüsselfelder. Optional: Reorganisation der Zugriffsstruktur nach Performanzabfall. Operatoren (2)

7 7 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Ziel: Schneller Zugriff auf aktuell benötigte Datensätze möglichst weit gehendes Vermeiden von Zugriffen auf nicht benötigte Datensätze. Anzahl der Zugriffe bis zum Erreichen des oder der gesuchten Datensätze ist nicht oder nur sehr schwach abhängig von der Größe der Satzmenge (Skalierbarkeit). Zugriffspfad: Abstrakter Begriff zur Beschreibung des Kriteriums, nach dem auf benötigte Datensätze einer Satzmenge zugegriffen wird. Zugriffsstruktur: Realisierung einer Satzmenge samt Zugriffspfad. Primärdaten: Auf der Nutzerebene sichtbarer Anteil an den Datensätzen. Sekundärdaten: Daten zu den Zugriffspfaden. Zugriffspfad

8 8 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Lösung: Ballen als Basistechnik. Zugriffspfad als Vorhersagemodell. Erfordert gesteuerte Platzierung der Datensätze. Erreichen des Ziels beurteilt nach mittlerem oder schlechtestem Aufwand = Anzahl der Seitenzugriffe für das Einfügen von Datensätzen, das Entfernen von Datensätzen, das Auffinden von Datensätzen, das Ändern von Datensätzen. Umsetzung und Leistungsbeurteilung

9 9 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiele für Zugriffspfade KriteriumZugriffspfadZugriff Erschöpfendes Aufzählen nach Position ReihenfolgeIterieren (scan) über alle Datensätze: bspw. Operation first für den Zugriff auf den ersten und next für den Zugriff auf den folgenden Datensatz. PositionPositions- bestimmung Direkter Zugriff Einzelner Schlüsselwert Werte der Schlüsselfelder Direkter Zugriff Kombination v. Schlüsselwerten Werte der Schlüsselfelder Direkter Zugriff Erschöpfendes Aufzählen nach Schlüsselwert Reihenfolge nach Werten d. Schlüsselfelder Iteration über die Datensätze in auf- oder absteigender Sortierreihenfolge

10 10 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel 6.2 Ballen

11 11 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Grundgedanke KriteriumZugriffspfadZugriff Erschöpfendes Aufzählen nach Position ReihenfolgeIterieren (scan) über alle Datensätze:. Operation first für den Zugriff auf den ersten, next für den Zugriff auf den folgenden Datensatz. PositionPositionsbestimmungDirekter Zugriff Einzelner SchlüsselwertWerte der SchlüsselfelderDirekter Zugriff Kombinierte SchlüsselwerteWerte der SchlüsselfelderDirekter Zugriff Erschöpfendes Aufzählen nach Schlüsselwert Reihenfolge nach Werten der Schlüsselfelder Iteration über die Datensätze in auf- oder absteigender Sortierreihenfolge Ziel: Minimierung der Zahl der Seitenzugriffe bei erschöpfendem Aufzählen (Iterieren). Ansatz Ballen (auch: Bündeln, engl.: clustering): Ablage von gemeinschaftlich benötigten Datensätzen auf der selben Seite Mehrere Datensätze mit 1 Seitenzugriff. Geballte Seiten werden nicht selbst noch einmal geballt. Eigener Zugriffspfad auf Seitenebene, z.B. Verkettung der Seiten oder Nummern aller Seiten auf der ersten Seite.

12 12 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Geballte Listen P123P204P317 P123 Liste aller Seiten Datensätze dieser Seite Länge des Datensatzes Freispeicher am Ende der Seite P204P Satz 1 12Satz 2 28Satz 3 8 Sa tz 424Satz 5 432Satz 6 64 Satz 7 20 Satz 8 8Satz Satz 10 24Satz 11 8 Sat z 1216Satz 13 8 Satz 14 Speicherung entsprechend geforderter Reihenfolge

13 13 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Einfügen eines Datensatzes: Position beliebig: Es wird die letzte Seite ausgewählt oder die erste Seite, die genügend freien Speicherplatz besitzt. Position nach Eingangsreihenfolge: Es wird die letzte Seite ausgewählt. Sequenzielle Zugriffe auf die Datensätze erfolgen entsprechend ihrer physischen Reihenfolge. Direkte Zugriffe über die Position sind möglich, sofern im Kopf der ersten Seite die Nummern aller Seiten samt Satzanzahl vermerkt sind. Modifikationen mit Satzverlängerung in der Mitte einer Zugriffsstruktur kann u.U. Verschiebungen von Datensätzen zur Folge haben. Diese können bei Position nach Eingangsreihenfolge zahlreiche Seiten betreffen. Unsortierte geballte Listen

14 14 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Wertbasierter Zugriff auf Datensätze: Suche eines Datensatzes kann durch Binärsuche erfolgen, sofern in der ersten Seite die Nummern der Seiten sortiert vermerkt sind. Ansonsten muss im Mittel die Hälfte der Datensätze besucht werden; aufgrund der Ballung benötigt man hierzu jedoch nur N / (2 B) Seitenzugriffe, wobei N die Anzahl der Datensätze und B die mittlere Anzahl von Datensätzen pro Seite (Blockungsfaktor) ist. Vorteile auch bei relationalen Operatoren, für die es bei Sortierung besonders effiziente Algorithmen gibt: Join-Operation. Filterung einer Datei (Selektion von Datensätzen, die ein Selektionsprädikat erfüllen). Sortierte geballte Listen

15 15 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Einfügen eines Datensatzes: Es wird anhand des Sortierkriteriums die Seite ermittelt, in die der Datensatz eingefügt werden soll. Falls auf der Seite genügend freier Platz ist, wird der Datensatz eingefügt. Falls nicht, wird untersucht, ob die Vorgänger- oder Nachfolgerseite genügend Platz hat. Ist dort auch kein Platz vorhanden, wird eine neue Seite allokiert und in die Liste eingefügt. Die Seiten können entweder soweit wie möglich gefüllt werden, oder beim initialen Anlegen jeder Seite wird ein bestimmter Anteil ( 0 ) freigelassen, um (über eine gewisse Zeit) das Einfügen neuer Datensätze und das Vergrößern der Datensätze auf der Seite zu beschleunigen. Sortierte geballte Listen

16 16 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Einfügen eines Datensatzes: Beispiel mit 0 0,5: Neuverteilung der Sätze auf übergelaufenen und neu allokierten Satz. Bei Seitenverkettung geringer Aufwand, um neue Seite an der richtigen Stelle einzufügen. Sortierte geballte Listen S 1 < S 2 < … < S k S k+1 < … < S neu < … < S 2k alter Knotenneuer Knoten S 1 < S 2 < … < S k < S k+1 < … < S 2k S neu

17 17 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Entfernen eines Datensatzes: Gebe minimalen Füllgrad min ( 0,5) für die Seiten vor. Falls nach Entfernen Füllgrad min fertig. Andernfalls Knoten-Unterlauf: Es wird versucht, Datensätze aus einer der Nachbarseiten in den Knoten mit Unterlauf zu verschieben. Misslingt, wenn für beide Nachbarseiten = min. In diesem Fall wird die Unterlauf-Seite mit einer ihrer Nachbarseiten verschmolzen. Die frei werdende Seite wird an die Seitenverwaltung zurückgegeben. Sortierte geballte Listen

18 18 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Aufgabe: Erschöpfendes Aufzählen nach Position, wenn die physische Satzablage durch Ballen nach einem anderen Zugriffspfad bereits festliegt. Lösung: Eingebetteter Zugriffspfad: Zugriffspfad ist unmittelbarer Bestandteil der Datensätze. Er wird dort durch Stellvertreter für die Datensätze repräsentiert. Datensätze erhalten spezielle Felder mit Verweisen auf die Vorgänger / Nachfolger in der Ordnung. Optionen bei der Verkettung: Einfache Verkettung: Nur ein Zeiger auf Nachfolger. Doppelte Verkettung: Zeiger auf Vorgänger und Nachfolger. Ring: Letzter Datensatz verweist wieder auf den ersten Datensatz, bei doppelter Verkettung verweist Vorgängerzeiger des ersten Datensatzes auf den letzten. Eingebetteter Zugriffspfad

19 19 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Zusätzliche eingebettete Zugriffspfade P123P204P317 Satz 1 Satz 2 Satz 3 Kopf Liste 1 Kopf Liste 2 Aufprägen beliebig vieler zusätzlicher Zugriffspfade n Bei einer Multiliste enthalten die Datensätze eine Kettungsstruktur für jede Ordnung der Datensätze außerhalb der Ballung.

20 20 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel 6.3 Assoziativer Zugriff durch Adressrechnen

21 21 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Grundgedanke KriteriumZugriffspfadZugriff Erschöpfendes Aufzählen nach Position ReihenfolgeIterieren (scan) über alle Datensätze:. Operation first für den Zugriff auf den ersten, next für den Zugriff auf den folgenden Datensatz. PositionPositionsbestimmungDirekter Zugriff Einzelner SchlüsselwertWerte der SchlüsselfelderDirekter Zugriff Kombinierte SchlüsselwerteWerte der SchlüsselfelderDirekter Zugriff Erschöpfendes Aufzählen nach Schlüsselwert Reihenfolge nach Werten der Schlüsselfelder Iteration über die Datensätze in auf- oder absteigender Sortierreihenfolge Ziel: Direktzugriff nach Schlüsselwert unter Vermeiden jeglichen weiteren Zugriffs. Lösung Assoziativer Zugriff Berechnung der Satzadresse aus Inhaltsbeschreibung.

22 22 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel Hash-Funktion

23 23 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Transformation eines kennzeichnenden Wertes (Schlüssel) in eine intern kontrollierte, logische Adresse. Die Transformationsfunktion wird als Hash-Funktion bezeichnet. S: Schlüsselraum (Menge aller möglichen Schlüsselwerte einer Satzmenge). N: Intervall der natürlichen Zahlen von 1 bis n (logischer Adressbereich). h: S N Hash-Funktion total. Hashverfahren: Grundprinzip

24 24 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Mit dem aus dem Schlüssel berechneten Hashwert kann – im Idealfall – direkt ohne weitere Hilfsstrukturen auf den gesuchten Datensatz zugegriffen werden. Abweichung vom Idealfall: Sei K t die Menge der zu einem Zeitpunkt t benutzten Schlüssel K t S, |K t | |S| Wirtschaftlich nur N |K t | Zudem starke Ungleichverteilung von K t in S möglich. Dann ist h nicht injektiv: k, k' K t sind synonym h(k) = h(k') Kollision: Aufeinandertreffen synonymer Schlüssel. Zahlreiche Verfahren unterschiedlicher Leistungsfähigkeit zur Kollisionsbehandlung bekannt. Hashverfahren im Hauptspeicher

25 25 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Gute Speichernutzung: Mehrere Synonyme pro Seite Synonyme werden unsortiert, Position beliebig geballt. Daher: N: Intervall von Seitennummern; h(k): Seite für Datensätze mit Schlüsselwert k. Hier Kollision: k und k' sind synonym, und h(k) ist bereits voll. Ziel: Anzahl der Seitenzugriffe nahe 1. Daher auch hier Kollisionen unerwünscht. Gesucht: Hash-Funktion, die stets eine gute Ausnutzung des Speicherraums N und eine gleichförmige Seitenbelegung garantieren soll. Aus wertbasierter Satzmengensicht: gestreute Satzplatzierung. Hashverfahren bei DBS

26 26 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Divisionsrestverfahren (Restklassenbildung): k S: Bitdarstellung als ganze Zahl interpretiert h(k) = k mod q, q größte Primzahl |N| Es sollte gelten: q a b n c (a, c kleine ganze Zahlen, b Zahlensystem des Rechners), q soll also nicht nahe einer Potenz des Zahlensystems liegen (z.B. q 127), weil sonst die niedrigen Stellen des Schlüssels zu stark ins Gewicht fallen. Faltung: 1. Zerlegung von k in einzelne Bestandteile 2. Deren Verknüpfung additiv, multiplikativ oder logisch 3. Auswahl von t Bitpositionen aus dem Ergebnis, wobei 2 t = |N| Hash-Funktion

27 27 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Empfohlen: Divisionsrestverfahren, evtl. kombiniert mit Faltung. Beispiel: Faltung mit XOR und Divisionsrestverfahren modulo 5 Beispieldatei und Hashwerte für Schlüsselfeld Color: Hash-Funktion Schlechte Wahl von q!

28 28 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Einige weitere Verfahren: Tabellentransformation: Schlüssel wird zunächst byteweise mit Hilfe einer Tabelle mit zufälligen Zeichenkombinationen umgesetzt, um Regelmäßigkeiten zu zerstören. Basistransformation: Schlüssel wird zunächst als Ziffernfolge einer anderen Basis dargestellt (bei num. Schlüsseln!). Danach wieder Divisionsrestverfahren. Codierungsmethode: Schlüssel mit n Bits Länge wird aufgefasst als Polynom vom Grad n –1 (die Bits stellen die Koeffizienten dar). Polynom wird durch Polynom vom Grad t geteilt. Der verbleibende Rest (Polynom von Grad t –1) wird als Hashadresse interpretiert. Verfahren kann mit Fehlererkennung kombiniert werden. Zufallsmethode: Erzeugung der Hashadresse über Zufallszahlengenerator, mit Schlüssel als Saat. Hash-Funktion

29 29 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel Statische Hash-Verfahren

30 30 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Hash-Bereich N und damit h liegen fest. Forderungen an h: Gleichförmige Schlüsselverteilung: Jede Seite soll etwa dieselbe Zahl unterschiedlicher Schlüsselwerte als Urbilder besitzen. Gleichförmige Satzverteilung: Jede Seite soll etwa dieselbe Zahl an Sätzen aufnehmen. Operationen: Suche: Berechne h(k), evtl. Suche gemäß Kollisionsauflösung. Einfügen: Berechne h(k), evtl. Kollisionsauflösung. Löschen: Suche, dann Entfernen, evtl. Bereinigung. Statische Reorganisation. Charakterisierung Problem: Man kennt nur S, nicht aber K t. Bei Ungleichverteilung widersprechen sich die Forderungen.

31 31 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Überlaufbehandlung von Seiten: Auflösung innerhalb des Hash-Bereichs: Offene Adressierung: Lineares und quadratisches Sondieren Auflösung durch getrennte Überlaufbereiche: Verkettung mit zusätzlichen Seiten außerhalb Hash-Bereich. Globalen Überlaufbereich vermeiden! Kollisionsminderung nach Löschvorgängen: Dynamische Reorganisation: aufwendig, hält aber Zahl der Seitenzugriffe klein. Setzen von Löschmarken und periodische statische Reorganisation: weniger aufwendig, Zahl der Seitenzugriffe wächst jedoch bis zur Reorganisation. Kollisionsbehandlung

32 32 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 |N|=5, Seitenkapazität = 3 Getrennter lokaler Überlaufbereich Beispiel für Überlaufseiten (1)

33 33 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel für Überlaufseiten (2) 1 black40 white50 green60 yellow10 brown30 rose90 red20 blue Seitennummer gray70

34 34 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Überlaufbehandlung von Seiten: Auflösung innerhalb des Hash-Bereichs: Offene Adressierung: Lineares und nichtlineares Sondieren Auflösung durch getrennte Überlaufbereiche: Verkettung mit zusätzlichen Seiten außerhalb Hash-Bereich. Globalen Überlaufbereich vermeiden! Kollisionsverminderung nach Löschvorgängen: Dynamische Reorganisation: aufwendig, hält aber Zahl der Seitenzugriffe klein. Setzen von Löschmarken und periodische statische Reorganisation: weniger aufwendig, Zahl der Seitenzugriffe wächst jedoch bis zur Reorganisation. Kollisionsbehandlung

35 35 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Sondieren (1) Für einen Schlüssel k wird überprüft, ob die Seite g(k,0) = h(k) noch über Platz verfügt. Ist dies nicht der Fall, so berechnet man Seiten g(k,1), g(k,2),... und untersucht diese. Beim linearen Sondieren ist g(k,i)=(h(k)+i c) mod q, (c eine Konstante, beispielsweise c=1) Bei hoher Kollisionsrate hoher Aufwand bei Platzierung und Suche!

36 36 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Sondieren (2) 1 black40 white50 green60 yellow10 brown30 rose90 red20 blue Seitennummer gray70 Kann Quelle von Sekundärkollisionen werden!

37 37 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Ziel: Auch bei Überlauf nur 1 Seitenzugriff. Skizze des Verfahrens (Härder/Rahm, S ): Satz mit Schlüssel k habe die Sondierungsfolge g(k,0) (=h(k)), g(k,1),..., g(k,n). Erzeuge dazu gleichverteilte Signaturfolge s 0 (k), s 1 (k),..., s n (k). (Signatur: Bitfolge fester Länge). Jeder Seite j ist dynamischer Separator SEP(j) zugeordnet. Suche: Sondiere bis s i (k)

38 38 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Wahl von Hash-Algorithmus und Überlaufbehandlung kritisch: Beeinflusst von konkreter Anwendung (Ladereihenfolge!) und Seitenkapazität Standardverfahren schwierig! Such- oder Einfügeaufwand steigt stark an, sobald |K t | in die Nähe von |N| Seitenkapazität kommt. Jedoch: Zugriffsfaktor < 1.5 von keiner anderen Zugriffstruktur zu schlagen. Abhilfen: Große Wahl von |N| schon von Anfang an (Platzverschwendung zu Beginn oder - bei Nichteintreten des erwarteten Wachstums - auf Dauer). Statische Reorganisation mit völliger Neuverteilung der Adressen (sehr hoher Zeitbedarf, längere Betriebsunterbrechung, Anpassen unzähliger Verweise). Dynamische Verfahren. Bewertung

39 39 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel Dynamische Hash-Verfahren

40 40 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Skalierbarkeit: Zugriffsfaktor 2 unabhängig von |K t |. Zahl der zur Verfügung stehenden Seiten wird kontinuierlich dem aktuellen Bedarf angepasst. Hoher Belegungsfaktor unabhängig vom Wachstum der Schlüsselmenge. Ziele

41 41 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Grundidee: Statt einer einzigen Hash-Funktion h: S N eine Familie von Hash-Funktionen h i : S {0,...,2 i N-1}, i {0,1,2,...}. Bedingungen (h 0 (k) {0,1,2,..., N-1}): h i+1 (k) = h i (k) für etwa die Hälfte der k S. h i+1 (k) = h i (k)+ 2 i N für die andere Hälfte. Beispielsweise erfüllt für h i (k):=k mod(2 i N) Zu jedem Zeitpunkt sind für einen Hash-Bereich höchstens zwei benachbarte Hash-Funktionen zuständig. Parameter für die aktuelle Speicherung: Level lv: unteres i. Split-Zeiger sp auf die nächste zu teilende Seite. Lineares Hashing

42 42 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Lineares Hashing lv=0, N=5, max.Blockung= sp Primärbereich Überlaufseiten h 0 h 0 h 0 h 0 h 0 Vergrößern des Speicherbereiches: Füge neue Seite am Ende an; Verteile Sätze auf Seite sp gemäß h lv+1 auf alte und neue Seite; sp:=sp+1; if sp= 2 lv N then {lv:=lv+1; sp:=0}

43 43 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 h 1 h 0 h 0 h 0 h 0 h 1 sp Lineares Hashing lv=0, N=5, max.Blockung= sp Primärbereich Überlaufseiten h 0 h 0 h 0 h 0 h

44 44 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 h 1 h 0 h 0 h 0 h 0 h 1 sp Lineares Hashing Suchen nach Schlüssel k: s:= h lv (k); if s < sp then s:= h lv+1 (k); // Seite schon gesplittet, daher neue Hash-Funktion anwenden // Beispiel: k=790

45 45 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Da der Reihe nach gesplittet werden muss, werden u.U. Seiten mit niedrigem Füllgrad gesplittet. Überlaufseiten werden nicht vermieden und u.U. zu spät beseitigt. Split-Kriterium liegt nicht fest und belässt Spielräume einschließlich raschem Fortbewegen des Split-Zeigers. Gesucht: Verfahren, das diese Probleme umgeht. Bringt ein Index etwas? Bewertung

46 46 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel 6.4 Index-Verfahren

47 47 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Grundgedanke KriteriumZugriffspfadZugriff Erschöpfendes Aufzählen nach Position ReihenfolgeIterieren (scan) über alle Datensätze:. Operation first für den Zugriff auf den ersten, next für den Zugriff auf den folgenden Datensatz. PositionPositionsbestimmungDirekter Zugriff Einzelner SchlüsselwertWerte der SchlüsselfelderDirekter Zugriff Kombinierte SchlüsselwerteWerte der SchlüsselfelderDirekter Zugriff Erschöpfendes Aufzählen nach Schlüsselwert Reihenfolge nach Werten der Schlüsselfelder Iteration über die Datensätze in auf- oder absteigender Sortierreihenfolge … Indexteil mit Wegweisern Satzmenge physisch gespeichert nach eigenständigem Verfahren (Ballung, Adressrechnung)

48 48 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel Zeigerfelder

49 49 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Zeigerfeld P123P204P317 Satz 1 Satz 2 Satz 3 ØDas Zeigerfeld (Pointer Array) enthält für jeden Datensatz einen Eintrag (Stellvertreter) mit einem Verweis auf den Datensatz. ØDas Zeigerfeld bildet einen eigenen Datensatz. Falls es größer als eine Seite wird, wird es als großer Datensatz verwaltet.

50 50 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Die Anordnung der Stellvertreter kann unabhängig von der Anordnung der Datensätze gewählt werden z.B. Aufprägen einer logischen Ordnung auf eine physische (geballte) Ordnung. Zugriff über Zeigerfeld: Aufwand fest 2 Seitenzugriffe. Sequenzielle Zugriffe: Aufgreifen der Verweise der Reihe nach. Direkte Zugriffe über die Position. Eine (zusätzliche) Sortierung der Datensätze wird durch eine entsprechende Sortierung der Einträge des Zeigerfeldes hergestellt. Suche eines Datensatzes über Binärsuche auf Zeigerfeld, ansonsten sequenzielles Durchsuchen. Suche kann beschleunigt werden, wenn zu jedem Verweis der Schlüssel des entsprechenden Datensatzes in dem Zeigerfeld gespeichert wird. Zeigerfeld

51 51 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Multizeigerfeld n Bei einem Multizeigerfeld existiert ein Zeigerfeld für jeden Zugriffspfad. P123P204P317 Satz 1 Satz 2 Satz 3

52 52 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel Erweiterbares Hashing

53 53 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Grundgedanke … Indexteil mit Wegweisern Platzierung der Sätze gemäß Adressrechnung 1-stufig Gezieltes Splitten an der Bedarfsstelle Untersetzung des Seitenwachstums in Indexwachstum Bestimmung der Einträge mittels Adressrechnung Gruppierung

54 54 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 1. Berechne Hashwerte h(k) (Pseudoschlüssel) für die Schlüssel k. 2. Gruppierung: Fasse diejenigen Pseudoschlüssel zusammen, die in den niedrigsten d' Bits übereinstimmen, derart, dass diese Pseudoschlüssel auf eine Seite passen (lokale Tiefe, für verschiedene Seiten u.U. verschieden). 3. Bestimme d = max(d') über alle Seiten (globale Tiefe). 4. Lege Index mit Einträgen für die Bitfolgen der Länge d an. 5. Läuft eine Seite über, setze deren d' um 1 herauf, verteile alten Seiteninhalt über zwei Seiten. 6. Falls d dadurch um 1 wächst, lege neuen Index mit doppelter Zahl von Einträgen an. Vorgehensweise

55 55 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel

56 56 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Annahme: Seitenkapazität = 3 Datensätze. Beispiel red20 green60 rose90 gray70 yellow10 brown30 blue80 black40 white50 dynamische Grenzlinie *0 *1 *01 *11 *011 *111

57 57 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel red20 green60 rose90 gray70 yellow10 brown30 blue80 black40 white50 dynamische Grenzlinie *0 *1 *01 *11 *011 * seiten- lokale Tiefe *111 *011 *01 *0

58 58 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel red20 green60 rose90 gray70 yellow10 brown30 blue80 black40 white seiten- lokale Tiefe *111 *011 *01 *0 globale Tiefe 3 *000 *001 *010 *100 *101 *110 *111 *011

59 59 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel red20 green60 rose90 gray70 yellow10 brown30 blue80 black40 white seiten- lokale Tiefe *111 *011 *01 *0 globale Tiefe 3 *000 *001 *010 *100 *101 *110 *111 *011 Einfügen des Datensatzes [11, yellow, ]: Seite ist voll, und lokale Tiefe < globale Tiefe normales Spalten der Seite.

60 60 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel red20 green60 rose90 gray70 brown30 blue80 black40 white50 2 *10 2 * *011 *000 *001 *010 *100 *101 *110 *111 globale Tiefe 3 *011 yellow10 yellow11 2 *00 *111 Einfügen des Datensatzes [21, red, ]: Seite ist voll, und lokale Tiefe = globale Tiefe Spalten der Seite + Verdopplung der Zwischentabelle

61 61 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 red20 red21 Beispiel green60 rose90 gray70 brown30 blue80 black40 white50 yellow10 yellow11 *1001 *1000 *1011 *1010 *1101 *1100 *1111 *1110 *0001 *0000 *0011 *0010 *0101 *0100 *0111 * *10 2 * *00 *0011 * *111 globale Tiefe 4

62 62 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel B + -Baum

63 63 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Grundgedanke B-Baum B + -Baum: Kombination der beiden folgenden Strukturen … Sortierte geballte Liste mit Doppelverkettung der Seiten in Sortierordnung Effizienter sequentieller Zugriff in Sortierreihenfolge Effizienter direkter Zugriff nach Schlüssel gleicher Schlüssel vorausgesetzt

64 64 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Ziel: Anzahl der Seitenzugriffe auch bei unbekanntem Zugriffsverhalten gering halten. Vorgehensweise: Schrittweise und zugleich starke Begrenzung des Suchbereichs. Führt auf Baumstruktur. Forderung: Alle für DB-Zugriff relevanten baumstrukturierten Organisationsformen müssen für Seitenstrukturen konzipiert sein. Umsetzung: Jeder Schritt beinhaltet einen Zugriff auf eine Seite, auf der dann eine große Zahl von Suchschritten im Hauptspeicher vollzogen werden (Wiederholte Ballung!). 1:1-Zuordnung von Knoten des Baums und Seite. Baumförmige Anordnungen

65 65 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Sei s Zahl der Wahlmöglichkeiten pro Seite und N die Gesamtzahl der Sätze. Dann ist die Anzahl der Seitenzugriffe beim Fortschreiten in einem ausgewogenen Baum O(log s (N)). Damit bei direktem Zugriff nur auf wenige Seiten zugegriffen werden muss, ist ein sehr hoher Verzweigungsgrad der Wurzel und der internen Knoten anzustreben. s = 2Binärbaum Ziel: s > 100 Mehrwegbaum Wahl von s im Bereich 100 bis 500. Damit lässt sich selbst bei hoher Skalierung die Höhe eines Mehrwegbaums auf 3 bis 4 begrenzen. Eine Höhe über 4 kommt praktisch nie vor. Mehrwegbäume

66 66 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Wähle Separatorschlüssel SS so dass alle Schlüssel SS alle Schlüssel > SS B-Baum (1) B-Baum … Baue Index auf den Separatorschlüsseln auf

67 67 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel (s=6)

68 68 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Anfragearten S S S … S Exact Match Queries (EMQ): select A1,A2,...,An from R where Ai = c Range Queries (RQ): select A1,A2,...,An from R where Ai c2 and Ai c1 B + -Baum deckt beide Arten gleichzeitig sehr gut ab.

69 69 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Interessenskonflikt: Geringer Zugriffsaufwand: Der Baum ist balanciert, um ein ausgewogenes Zugriffsverhalten zu garantieren. Die Datensätze sind möglichst kompakt auf wenigen Seiten gespeichert, d.h. der Füllgrad der Seiten ist möglichst hoch. Geringer Änderungsaufwand: Keine hohen Anforderungen an Balance und/oder Füllgrad. Kompromisslösung erforderlich: Wiederherstellen der Balance und/oder eines hohen Füllgrads sollte auf einen möglichst kleinen Teil des Baums begrenzt bleiben. Leistungsbetrachtung

70 70 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Ein B-Baum vom Typ (k,h) ist ein leerer Baum oder ein Baum mit folgenden Eigenschaften: 1. Jeder Weg von der Wurzel zu einem Blatt hat die gleiche Länge h (Länge = Zahl der Knoten). h daher als Höhe bezeichnet. 2. Jeder Knoten j hat n j +1 Söhne. Ist der Knoten Wurzel so gilt 1 n j 2k, andernfalls k n j 2k. 3. Jeder Knoten mit n j +1 Söhnen ist mit n j sortiert angeordneten (Separator-) Schlüsseln (Wegweisern) belegt. 4. Seien S 1,…,S n die Schlüssel eines Knotens j mit n j +1 Söhnen. Seien Z 0, Z 1, …, Z n die Zeiger auf diese Söhne. a) Z 0 weist auf Teilbaum mit Schlüsseln kleiner oder gleich S 1 b) Z i (i=1, …, n j -1) weist auf Teilbaum, dessen Schlüssel zwischen S i und S i+1 liegen und S i+1 einschließen können. c) Z n weist auf Teilbaum mit Schlüsseln größer S n. B-Baum (2)

71 71 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Aufbau eines Knotens: Interne Struktur der Knoten Z0Z0 S1S1 Z1Z1 S2S2 …SnSn ZnZn frei Wegweiser Sohnzeiger In den Blattknoten verweisen die Sohnzeiger auf die Seiten einer außerhalb des Baumes geführten sortierten geballten Liste. Annahme: Die sortierte geballte Liste wird nach dem früher beschriebenen Seitensplit-Verfahren verwaltet. Charakterisierung durch Konstante k*: Jede Seite enthält mindestens k* und höchstens 2k* Datensätze.

72 72 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel: Beispiel Schlüssel (eindeutig) Datensätze (Annahme: gleiche, unveränderliche Länge)

73 73 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Annahme: k=2, k*= Strukturelle Sicht: Separator Zugriffssicht: Wegweiser Höhe h eines B + -Baums mit N Datensätzen: Höhe(B-Baum) = 1) Höhe(B + -Baum) = 2)

74 74 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Ein Knoten wird auf irgendeiner frei wählbaren Seite des Segmentes gespeichert. Folge: h beschreibt maximale Anzahl der Seitenzugriffe bei direktem Zugriff. Niedriges h ist anzustreben, somit hoher Verzweigungsgrad notwendig. Verzweigungsgrad ist von k abhängig, k von der Schlüssellänge! Errechne sich die maximal mögliche Zahl der Einträge pro Seite zu m. Dann ist k = (m/2). Bei gegebenem k ist Verzweigungsgrad vom Füllgrad der Datenseiten und Blattknoten abhängig. Baumhöhe Höhe h eines B + -Baums mit N Datensätzen:

75 75 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Obere Grenze für die Anzahl der Knoten, die schlimmstenfalls in Abhängigkeit von der Knotengröße und der Anzahl der Datensätze zu lesen sind: Abschätzung der Baumhöhe

76 76 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Suche suche (s); seite p := wurzel; do eintrag := 0; while s > eintrag.separator and eintrag < Zahl der Einträge do eintrag+; if eintrag = Zahl der Einträge then p := letzter Zeiger auf Seite else p := eintrag.zeiger; until p verweist auf Seite mit Datensatz; end suche; // p verweist auf Seite mit Satz mit Schlüssel s //

77 77 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Neubalancierung durch Wachstum nach oben Einfügen eines neuen Datensatzes erfordert 2 Phasen: 1. Suche mit dem Schlüssel des neuen Datensatzes. 2. Falls (gefunden und Schlüssel nichteindeutig) oder falls nicht gefunden: Einfügen des neuen Datensatzes in die Ergebnisseite der Suche. Falls die Seite überläuft, wird sie gespalten. Dabei wird ein neuer Separator-Schlüssel bestimmt und in den Indexbaum eingefügt. Hierbei kann es zu einem weiteren Überlauf kommen. Dann wird auch der Indexknoten gespalten, ein Separator-Schlüssel bestimmt, und das Verfahren setzt sich u.U. mehrfach nach oben fort. Wenn sogar die Wurzel überläuft, wird auch sie gespalten mit der Folge: Der Baum wächst in der Höhe um 1. Einfügen eines Datensatzes

78 78 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Einfügen eines Datensatzes mit Schlüssel 74: k=2, k*=1

79 79 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Einfügen eines Datensatzes mit Schlüssel 51: Überlauf k=2, k*=1

80 80 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Einfügen eines Datensatzes mit Schlüssel 51: Neuer Separator: 55 Überlauf k=2, k*=1

81 81 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Einfügen eines Datensatzes mit Schlüssel 51: k=2, k*=1

82 82 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Die Wurzel eines Baums ist der Einstiegspunkt in den Baum. Die Seitennummer des Wurzelknotens ist daher an verschiedenen Stellen der Datenbasis (bspw. in Katalogen, die die Zugriffsstrukturen verwalten) gespeichert. Wie kann man vermeiden, dass beim Spalten der Wurzel sehr viele (unbekannte) Verweise ersetzt werden müssen? Die Seite zur Aufnahme der Wurzel bleibt über die gesamte Lebensdauer eines B + -Baums erhalten. Beim Anlegen eines neuen Wurzelknotens werden die Einträge der bisherigen Wurzel auf zwei neuen Seiten verteilt, und der neue Wurzelknoten wird auf der bisherigen Wurzel- Seite gespeichert. Spalten der Wurzel

83 83 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 P123 Spalten der Wurzel P401 P532 P123

84 84 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Das Entfernen von Datensätzen beginnt immer in der geballten Liste. Entfernen ohne weitere Auswirkung: Index nicht betroffen. Entfernen mit Satzverschiebung (z.B. bei Ausgleich): Wähle neuen Separatorschlüssel. Ersetze alten Separatorschlüssel durch neuen überall wo er im Baum vorkommt. Entfernen mit Verschmelzen von Seiten: Entferne alten Separatorschlüssel aus dem entsprechenden Blattknoten. Gelegentlich kann dies dort einen Unterlauf bewirken. Insbesondere kann sich das Verschmelzen von Knoten bis zur Wurzel fortsetzen. Folge: Der Baum schrumpft in der Höhe um 1. Entfernen von Datensätzen

85 85 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Entfernen eines Datensatzes mit Schlüssel 60: k=2, k*=1, Annahme min 0,5 X Unterlauf

86 86 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Entfernen eines Datensatzes mit Schlüssel 60: k=2, k*=1, Annahme min 0,5 X Unterlauf X

87 87 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Entfernen eines Datensatzes mit Schlüssel 60: k=2, k*=1, Annahme min 0,5

88 88 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 min < 50% kann sinnvoll sein: Da Einfügen gegenüber Entfernen dominiert, belässt man es beim Löschen des Satzes. Spalten mit Vorausschau: Spalte so, dass zukünftige Einfügungen von Datensätzen möglichst gleichmäßig auf die beiden durch den Separatorschlüssel getrennten Teilbäume verteilt werden. Geringere Füllgrade (1)

89 89 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Geringere Füllgrade (2) Einfügen von 19, k=3. Vergleiche: Schlecht falls Gleichverteilung der Schlüssel, da sich sehr viele Datensätze im rechten Teilbaum ansammeln werden, so dass dort sehr viele Spaltungen vorkommen werden. Vorteil: Auf lange Sicht guter Separatorschlüssel, da der Schlüsselraum in zwei gleich große Teile geteilt wird. Nachteil: Kurzfristige Gefahr des Überlaufens der linken Seite, da diese sehr stark gefüllt ist

90 90 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Verallgemeinerung … Physikalisch beliebig gespeicherte Satzmenge B-Baum … Sortierte geballte Stellvertreter-Liste mit Doppelverkettung der Seiten Aufgabe: Aufprägen eines weiteren Schlüssels B * -Baum: Kombination der Strukturen B + -Baum

91 91 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Begriffe: B-, B + - und B*-Baum Vorsicht: Die Begriffe werden in der Literatur sehr uneinheitlich verwendet. Die hier verwendete Terminologie dient der klaren Abgrenzung, weicht aber von einem Teil der Literatur ab.

92 92 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Zur Erinnerung: Höhe h bestimmt Performanz. h hängt von Verzweigungsgrad ab, Verzweigungsgrad ist proportional Füllgrad β. Füllgrad ist bei jeder Seite außer Wurzel: β min, üblich min = 50%. Ungünstigster Fall: Sequenzielles Laden der geballten Liste sortiert nach auf- oder absteigenden Schlüsseln: β = 50%. Mittlerer Füllgrad bei zufälligem Einfügen und Löschen: β = 69%. Verbesserung durch Verzögerung des Spaltens von Seiten: Spalten erst, wenn m um den Einfügepunkt gruppierte Knoten voll sind: β m (m+1). Abändern des Einfügealgorithmus mit Inspektion der Nachbarknoten und Ausgleich der Knotenbelegung. Nachteil: Höhere Einfügekosten, steil ansteigend für m > 3. Beeinflussung der Höhe (1)

93 93 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Zur Erinnerung: Höhe h bestimmt Performanz. h hängt von Verzweigungsgrad ab, Verzweigungsgrad ist proportional Wert von k. Vergrößerung von k durch Vergrößerung der Seitengröße. Seitengröße selten beeinflussbar. Vergrößerung von k bei unveränderter Seitengröße: Einsatz von Verfahren zur Schlüsselkomprimierung. Beeinflussung der Höhe (2)

94 94 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Separatorschlüssel muss automatisch bestimmt werden können: Übernahme aus den Datensätzen: Üblich ist die Verwendung des höchsten Schlüssels auf der Seite. Systematische Konstruktion von Separatoren minimaler Länge. Kann mit Schlüsselkomprimierung kombiniert werden. Wahl eines Separatorschlüssels

95 95 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Zeichenkomprimierung durch Beseitigen von Redundanzen 1. Maßnahme: Entfernen führender Nullen und abschließender Zwischenräume. 2. Maßnahme: Schlüsselvergleiche mit Weglassen der für die Unterscheidung unerheblichen Teile. Folge: Variable Schlüssellänge k variabel über Knotenmenge und zeitlich schwankend über Knoten. Seiten-Spalten dann nicht mehr über Zahl der Einträge, sondern nach der Speicherbelegung. Schlüsselkomprimierung

96 96 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Die Schlüssel einer Seite werden fortlaufend komprimiert derart, dass nur der Teil des Schlüssels vom Zeichen, in dem er sich vom Vorgänger (Position V) unterscheidet, bis zum Zeichen, in dem er sich vom Nachfolger (Position N) unterscheidet, zu übernehmen ist (front and rear compression). Eintrag enthält Anzahl F = V – 1 der Zeichen des Schlüssels, die mit Vorgänger übereinstimmen (erster Eintrag: F = 0) Länge L = max(N – V, 0) + 1 des komprimierten Schlüssels dazugehörige Zeichenfolge Präfix-Suffix-Komprimierung

97 97 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Aufsuchalgorithmus (mit Kellermechanismus) kann zwar nicht die Schlüssel in ihrer Gänze, aber doch bis zur Eindeutigkeitslänge rekonstruieren.

98 98 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel 6.5 Mehrdimensionale Indexe

99 99 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel Vorüberlegungen

100 100 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Wertbasierter Zugriff auf der Grundlage mehrerer Attribute, dies einzeln oder in beliebigen Kombinationen. 1. Exact Match Query spezifiziert Suchwert für jede Dimension D i 2. Partial Match Query spezifiziert Suchwert für einen Teil der Dimensionen 3. Range Query spezifiziert ein Suchintervall [ug i, og i ] für jede Dimension 4. Partial Range Query spezifiziert ein Suchintervall für einen Teil der Dimensionen Anfragearten relation PERS (PNR, PNAME, ANR, GEBJAHR, ORT) nPartial Match Query: ANR =K55 GEBJAHR = 1945 ORT = KA nPartial Range Query: GEBJAHR 1940 GEBJAHR 1950

101 101 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Lösung mit eindimensionalen Indexen Erfordert Indexe auf Stellvertretersätzen. Konjunktive Zerlegung von Anfragen in Einattributanfragen mit nachfolgender Schnittmengenbildung über den Stellvertretern. Flexible Lösung auf der Grundlage von Standardverfahren. Performanz? Mehrere eindimensionale Indexe

102 102 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Wertebereiche D 0,..., D k-1 : alle D i sind endlich, linear geordnet und besitzen kleinstes (- i ) und größtes ( i ) Element Datenraum D = D 0... D k-1 k-dimensionaler Schlüssel entspricht Punkt im Datenraum, p D Mehrdimensionale Datenstrukturen

103 103 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel Lineare Einbettungen

104 104 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Lineare Einbettungen Bevorzugung von Range Queries: Linearisierung unter Bewahren mehrdimensionaler Nachbarschaftsverhältnisse. Transformation von Mengen mehrdimensionaler Punktobjekte in eindimensionale Folge unter möglichst gutem Erhalten der topologischen Struktur. Anschließend Abbildung auf eindimensionale Struktur, z.B. B*-Baum. Möglichkeiten der Transformation: Partitionieren des Datenraums durch gleichförmiges Raster. Jede Zelle besitzt Nummer, die ihre Position in der linearen Ordnung definiert. Definition der linearen Ordnung mittels eindimensionaler Einbettung (space filling curve).

105 105 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Wichtige Einbettungen z-Ordnung Gray-Code Hilberts Kurve Nummerierung: Kurvennummern gemäß Abfolge auf der Kurve

106 106 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Hilbert-Kurve Index Kurvennummer Seitenadresse Range-Query bzgl. dem Suchintervall [12, 38] x [1,29] Zu lesende Kurvennummern: 2, 3, 4, 5, 6, 7, 8, 9 und 13 Es bieten sich daher folgende Suchschritte an: 1. Einstieg in Seite zu Kurvennummer 2 über Index 2. Dann lineares Lesen der Seiten zu 2 bis 9 über Listenverkettung 3. Einstieg in Seite mit Hilbertkurvennummer 13 über Index

107 107 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Beispiel Z-Kurve Index Kurvennummer Seitenadresse Range-Query bzgl. dem Suchintervall [12, 38] x [1,29] Zu lesende Kurvennummern: 2, 3, 6, 8, 9, 10, 11, 12 und 14 Es bieten sich daher folgende Suchschritte an: 1. Einstieg in Seite mit Z-Kurvennummer 2 über Index 2. Dann lineares Lesen der Seiten zu 2 und 3 über Listenverkettung 3. Einstieg in Seite mit Z-Kurvennummer 6 über Index 4. Dann lineares Lesen der Seiten 6 bis 14 über Listenverkettung

108 108 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel Raumstrukturen

109 109 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Charakterisierung gemäß der Art der Aufteilung des Datenraums in Gebiete: 1. nur atomare Gebiete (beschreibbar durch ein Rechteck) 2. vollständig (die Vereinigung aller Gebiete ergibt den gesamten Datenraum) 3. disjunkt (die Gebiete überlappen nicht) Charakterisierung Grid-File (Gitter-Datei): atomar, vollständig, disjunkt

110 110 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Charakterisierung gemäß der Art der Aufteilung des Datenraums in Gebiete: 1. nur atomare Gebiete (beschreibbar durch ein Rechteck) 2. vollständig (die Vereinigung aller Gebiete ergibt den gesamten Datenraum) 3. disjunkt (die Gebiete überlappen nicht) Charakterisierung K-D-B-Baum: atomar, vollständig, disjunkt

111 111 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Charakterisierung gemäß der Art der Aufteilung des Datenraums in Gebiete: 1. nur atomare Gebiete (beschreibbar durch ein Rechteck) 2. vollständig (die Vereinigung aller Gebiete ergibt den gesamten Datenraum) 3. disjunkt (die Gebiete überlappen nicht) Charakterisierung R + -Baum: atomar, disjunkt

112 112 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Charakterisierung gemäß der Art der Aufteilung des Datenraums in Gebiete: 1. nur atomare Gebiete (beschreibbar durch ein Rechteck) 2. vollständig (die Vereinigung aller Gebiete ergibt den gesamten Datenraum) 3. disjunkt (die Gebiete überlappen nicht) Charakterisierung R-Baum: atomar

113 113 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Charakterisierung gemäß der Art der Aufteilung des Datenraums in Gebiete: 1. nur atomare Gebiete (beschreibbar durch ein Rechteck) 2. vollständig (die Vereinigung aller Gebiete ergibt den gesamten Datenraum) 3. disjunkt (die Gebiete überlappen nicht) Charakterisierung Z-B-Baum: vollständig,disjunkt

114 114 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Varianten Quad-Baum(1974) KdB-Baum(1985) Mehrdimensionaler B-Baum(1982) Z-B-Baum(1982) R + -Baum(1987) Buddy-Hash-Baum(1989) Grid-File(1984) Ausführlicher Überblick bei Härder/Rahm Kap. 9 Indextechniken sind auch heute noch ein intensiv bearbeitetes Gebiet der (Datenbank-)Algorithmik mit anwendungsspezifischer Ausrichtung!

115 115 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel Gitter-Datei (Grid File)

116 116 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Grundgedanke (1) … Indexteil mit Wegweisern Platzierung der Sätze gemäß Raumpunktrechnung 1-stufig Gezieltes Splitten an der Bedarfsstelle Untersetzung des Seitenwachstums in in Breitenwachstum des Index Bestimmung der Einträge mittels Raumpunktrechnung Ansatz: Grundgedanke aus dem Erweiterbaren Hashing: Gleichförmige, dynamische Unterteilung des Schlüsselraums, um Zugriffsfaktor auf 2 zu begrenzen. Datenseiten

117 117 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Gitterbildung durch Einteilung der Achsen in Intervalle. Eine Partitionierung einer Dimension D i ist gegeben durch einen Vektor, der die Einteilung in Intervalle definiert: P i = (d i,0, d i,1,...,d i,k i ) ::= [- i, d i,0 ], (d i,0, d i,1 ],...,(d i,k i, i ] Grundgedanke (2) D1D1 d 1,2 d 1,1 d 1,0 d 0,0 d 0,1 d 0,2 D0D0 Gleichförmige Speicherplatzbelegung durch Anpassung des Gitters an die Dichte des Datenraums D = D 0 … D k-1. Modifikation einer Gitter-Partition erfolgt durch Änderung entlang einer Dimension (Spalten oder Zusammenlegen).

118 118 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Menge von Seiten zur Speicherung von Datensätzen. Jede Seite kann bis zu c Sätze speichern. Grid-File-Struktur Katalogstruktur (Grid Directory): Repräsentation des Gitters. Zentrale Datenstruktur des Grid File. Aufgabe: Definition und Wartung der dynamischen Beziehungen zwischen den Gitter-Gebieten des abstrakten Satzraums und den gespeicherten Sätzen auf den Seiten. Prinzip der zwei Plattenzugriffe: Katalog Seite D1D1 d 1,2 d 1,1 d 1,0 d 0,0 d 0,1 d 0,2 D0D0

119 119 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Zuordnung von Seiten zu Gitter-Gebieten: Für eine gute Seitenbelegung erfolgt wie beim Erweiterbaren Hashing eine n:1-Zuordnung zwischen Gitter-Gebieten und Seiten. Bereich von Seite B: Menge der Gitter-Gebiete, die B zugeordnet sind. Seitenorganisation (1) Seiten Gitter-Gebiete (Gridblöcke)

120 120 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Seitenorganisation (2)

121 121 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Aufgabe des Katalogs: Darstellung und Verwaltung der dynamischen Beziehung zwischen den Gitter-Gebieten und den Seiten mit den gespeicherten Sätzen. Struktur des Katalogs: 1.Grid-Matrix: dynamische, k-dimensionale Matrix, deren Einträge die Beziehung zwischen Gitter-Gebieten, Bereichen und Seiten regeln. 2.k ein-dimensionale Vektoren, die jeweils eine Unterteilung einer Dimension definieren. Katalog-Struktur (1)

122 122 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Katalog-Struktur (2) Grid-Matrix FIND(K55,KL) AA DA FR MK ZZ K00K17K39K52K89K99 Seite D1D1 D0D0 (K55,KL)

123 123 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 AA ZZ K99 K00 A Seite Seitenkapazität: 3 Einträge Alternierende Spaltstrategie Registrieren mittels eines k-dimensionalen Buddy-Systems Einfügen und Löschen (1) I(K54, DA) A Buddy- Anordnung I(K02,AB) I(K87,ST)

124 124 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 AA ZZ K99 K00 A Seitenkapazität: 3 Einträge Alternierende Spaltstrategie Registrieren mittels eines k-dimensionalen Buddy-Baums Einfügen und Löschen (2) I(K54, DA) I(K02,AB) I(K87,ST) I(K75, MO) K60 I(K03,ZO) B A B I(K55,KL) D(K54,DA) I(K15, DA)

125 125 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Einfügen und Löschen (3) K00 I(K15, DA) I(K25,KA) I(K51,FR) AA ZZ A K99 K00 I(K56, DA) AA ZZ A K99 K60 B B D C A C B C A D B C K40 K60 JA

126 126 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 k-dimensionaler Buddy-Baum Erkennung der potenziellen Partner für Verschmelzen. Jede Seite hat einen eindeutigen Zwilling: Ein Zwillingspaar wird erzeugt, wenn sein Bereich geteilt wird. Verschmelzen in umgekehrter Reihenfolge. Verwaltung der Grid-File-Struktur C A D B

127 127 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Grid-Matrix kann sehr groß werden und muss daher auf den Hintergrundspeicher ausgelagert und bei Zugriffen seitenweise eingelagert werden. Erzwingt Linearisierung der Matrix. Die k ein-dimensionalen Vektoren sollten unbedingt im Hauptspeicher gehalten werden. Alle Frageformen lassen sich zu Range Queries vereinheitlichen point query: Untergrenze = Obergrenze partially specified query: Für nicht spezifizierte Attribute: Untergrenze = Minimalwert (Domäne) Obergrenze = Maximalwert (Domäne) Linearisierung führt zu Ungleichbehandlung der Attribute bei Range Queries. Leistungsbetrachtungen

128 128 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel KdB-Baum

129 129 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Grundstruktur (1) KdB-Baum … Indexteil mit Wegweisern Satzmenge physisch gespeichert abhängig vom Index-Verfahren Bessere Gleichbehandlung aller Attribute auch bei der Realisierung.

130 130 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 KdB-Baum besteht aus einer Menge von Seiten und einem Verweis auf die Wurzel-Seite. 2 Arten von Seiten: R-Seiten enthalten eine Menge von Paaren (region, nachf) region: Spezifikation einer Region. nachf: Verweis auf Nachfolger-Seite im Baum. Die R-Seiten definieren die Aufteilung des Datenraums in Regionen. P-Seiten enthalten eine Menge von Paaren (punkt, location) punkt: Spezifikation eines Punktes. location: Verweis auf zugehörigen Datensatz (im Folgenden vereinfachend weggelassen). Die P-Seiten sind die Blätter des Baums. Grundstruktur (2)

131 131 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 D 0 =D 1 =[0,..., 100), Seitenkapazität = 3 Beispiel D1D1 D0D P-Seiten 1 R-Seite ws [0,100) x [50,100) [0,30) x [0,50) [30,100) x [0,50)

132 132 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Definierende Eigenschaften 1. R-Seiten enthalten keine Null-Zeiger und sind nicht leer. 2. Die Länge aller Pfade von der Wurzel zu den Blättern (P- Seiten) ist identisch. 3. Alle Regionen in einer R-Seite sind disjunkt; ihre Vereinigung ergibt wieder eine Region. 4. Falls die Wurzel-Seite eine R-Seite ist, ergibt die Vereinigung ihrer Regionen den gesamten Datenraum. 5. Falls ein Eintrag (region, nachf) in einer R-Seite vorkommt, und a) nachf ist eine R-Seite, dann ist die Vereinigung aller Regionen in nachf gleich region. b) nachf ist eine P-Seite, dann liegen alle Punkte von nachf in region. Grundstruktur (3)

133 133 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Vorbereitende Definitionen Sei x i D i und R = I 0... I k-1 eine Region mit I i = [min i,max i ), 0 i k-1 Falls x i I i, definiere linke Teilregion von R bezüglich x i : leftregion (R, x i ):= I 0... [min i,x i )... I k-1 rechte Teilregion von R bezüglich x i : rightregion (R,x i ):=I 0... [x i,max i )... I k-1 Falls x i I i, dann gilt R liegt links von x i gdw. max i x i R liegt rechts von x i gdw. x i < min i Sei p=(p 0,..., p k-1 ) D ein Punkt. Dann gilt p liegt links von x i gdw. p i < x i p liegt rechts von x i gdw. p i x i

134 134 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Vorbereitende Definitionen Sei x i D i und R = I 0... I k-1 eine Region mit I i = [min i,max i ), 0 i k-1 Falls x i I i, definiere linke Teilregion von R bezüglich x i : leftregion (R, x i ):= I 0... [min i,x i )... I k-1 rechte Teilregion von R bezüglich x i : rightregion (R,x i ):=I 0... [x i,max i )... I k-1 Falls x i I i, dann gilt R liegt links von x i gdw. max i x i R liegt rechts von x i gdw. x i < min i Sei p=(p 0,..., p k-1 ) D ein Punkt. Dann gilt p liegt links von x i gdw. p i < x i p liegt rechts von x i gdw. p i x i R max 1 min 1 max 0 min 0 x0x0 D0D0 D1D1

135 135 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Vorbereitende Definitionen Sei x i D i und R = I 0... I k-1 eine Region mit I i = [min i,max i ), 0 i k-1 Falls x i I i, definiere linke Teilregion von R bezüglich x i : leftregion (R, x i ):= I 0... [min i,x i )... I k-1 rechte Teilregion von R bezüglich x i : rightregion (R,x i ):=I 0... [x i,max i )... I k-1 Falls x i I i, dann gilt R liegt links von x i gdw. max i x i R liegt rechts von x i gdw. x i < min i Sei p= (p 0,..., p k-1 ) D ein Punkt. Dann gilt p liegt links von x i gdw. p i < x i p liegt rechts von x i gdw. p i x i R max 1 min 1 max 0 min 0 x0x0 D0D0 D1D1

136 136 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Split (page, x i ): if page verweist auf eine R-Seite return (R-Split (page x i )); else return (P-Split (page, x i )); Spalten von Seiten (1) P-Split (page, x i ): Erzeuge neue P-Seiten leftpage und rightpage; forall Punkte p in page: if p links von x i : Füge p in leftpage ein; else Füge p in rightpage ein; Lösche page; return (leftpage, rightpage);

137 137 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Spalten von P-Seiten D0D0 D1D1 x0x0 leftpage x0x0 D0D0 D1D1 rightpage x0x0 D0D0 D1D1

138 138 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 R-Split (page, x i ): Erzeuge neue R-Seiten leftpage und rightpage; forall Paare (region, nachf) in page: if region links von x i : Füge (region, nachf) in leftpage ein; else if region rechts von x i : Füge (region, nachf) in rightpage ein; else begin (leftpage', rightpage'):= Split (nachf,x i ); Füge (leftregion(region, x i ), leftpage') in leftpage ein; Füge (rightregion(region, x i ), rightpage') in rightpage ein; end; Lösche page; return (leftpage, rightpage); Spalten von Seiten (2)

139 139 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Spalten von R-Seiten D0D0 D1D1 x0x0 x0x0 leftpage x0x0 D0D0 D1D1 x0x0 rightpage x0x0 D0D0 x0x0 D1D1

140 140 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Insert (ws, p): // ws: Wurzelseite, p: ein Punkt // if ws=Null do begin Erzeuge neue P-Seite page; Füge p in page ein; Setze ws := page; return end; Führe Exact Match Query nach p durch; Ergebnis: Verweis auf Seite page, in die p eingefügt werden soll; if p schon in page do begin Sonderbehandlung; return end; Füge p in page ein; if kein Überlauf von page do return; Einfügen von Datensätzen

141 141 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Marke M1; // Überlauf von page Wähle (erneut) eine Domain D i und einen Wert x i D i so, dass durch das Splitten von page entlang x i zwei nicht volle Seiten entstehen; (leftpage, rightpage) := Split (page, x i ) if page Wurzel-Seite ws do begin Erzeuge neue R-Seite newpage mit den Einträgen (D 0 … [- i,x i ) … D k-1, leftpage) und (D 0 … [x i, i ) … D k-1, rightpage); Setze ws := newpage; return end; Sei parentpage die Vaterseite von page; Ersetze in parentpage(region, page) durch (leftregion(region, x i ),leftpage) und (rightregion(region, x i ), rightpage); if Seitenüberlauf von parentpage do begin Setze page := parentpage; goto M1 end; else return; end Insert ; Einfügen von Datensätzen

142 142 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 D 0 =D 1 =[0,..., 100), Seitenkapazität = 3 Einfügen von Sätzen D1D1 D0D0 100 ws 100 Insert(ws,(75,80)) Insert(ws,(5,15)) Insert(ws,(20,40)) Insert(ws,(80,30)) P-Seiten 50

143 143 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 D 0 =D 1 =[0,..., 100), Seitenkapazität = 3 Einfügen von Sätzen D1D1 D0D0 100 ws [0,100) x [50,100) [0,100) x [0,50) Insert(ws,(20,90)) Insert(ws,(75,80)) Insert(ws,(5,15)) Insert(ws,(20,40)) Insert(ws,(80,30)) P-Seiten R-Seiten Insert(ws,(55,20)) 50 30

144 144 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 D 0 =D 1 =[0,..., 100), Seitenkapazität = 3 Einfügen von Sätzen D1D1 D0D0 100 Insert(ws,(20,90)) Insert(ws,(75,80)) Insert(ws,(5,15)) Insert(ws,(20,40)) Insert(ws,(80,30)) P-Seiten R-Seiten Insert(ws,(55,20)) Insert(ws,(60,60)) Insert(ws,(50,60)) ws [0,100) x [50,100) [0,30) x [0,50) [30,100) x [0,50) 70

145 145 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 D 0 =D 1 =[0,..., 100), Seitenkapazität = 3 Einfügen von Sätzen D1D1 D0D0 100 P-Seiten R-Seiten Insert(ws,(60,60)) 70 ws [0,100) x [70,100) [0,100) x [50,70) [0,30) x [0,50) [30,100) x [0,50)

146 146 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 D 0 =D 1 =[0,..., 100), Seitenkapazität = 3 Einfügen von Sätzen D1D1 D0D0 100 P-Seiten R-Seiten Insert(ws,(60,60)) 70 [0,100) x [70,100) [0,100) x [50,70) [30,100) x [0,50) [0,30) x [0,50) [0,100) x [50,100) [0,100) x [0,50) ws

147 147 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Aufteilung des Datenraums: Strategien für das Spalten D1D1 D0D0 Zyklisches Spalten von Seiten: Wenn Partial Match Queries auf D 0 bevorzugt unterstützt werden sollen: Spalten entlang D 0 wann immer möglich. D1D1 D0D0 Falls Verteilung der Daten in D = D 0 … D k-1 bekannt: Definiere Länge eines Intervalls I i D i als Erwartungswert der Wahrscheinlichkeit, dass Komponente k i eines Schlüssels k D in I i liegt. Wähle beim Splitten einer Region I 0 … I k-1 immer das längste Intervall.

148 148 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Auswahl eines Wertes x i : Wähle x i so, dass in der zu splittenden Seite gleich viele Punkte links und rechts von x i liegen. u.U. muss eine Neuwahl der Spalt-Dimension erfolgen: Strategien für das Spalten x0x0 D0D0 D1D1

149 149 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Bearbeitung von Range Queries: Rekursives Durchlaufen der Äste des Baumes, deren Knoten Regionen enthalten, die geschnitten mit der Anfrage-Region nicht die leere Menge ergeben. Für den Seitenfüllgrad kann im K-D-B-Baum keine untere Grenze garantiert werden. Daher gelegentliche Reorganisation notwendig. Es existieren mehrere mögliche Reorganisations-Maßnahmen. Beispiel: Zusammenlegen benachbarter Seiten. Problem: Die Vereinigung der Regionen der beiden Seiten muss wieder eine Region ergeben. Dies ist nicht immer der Fall! Eigenschaften des K-D-B-Baumes D0D0 D1D1 A B C A kann weder mit B noch mit C zusammengelegt werden.

150 150 © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 KdB-Baum: + Gleichbehandlung der Attribute besser steuerbar - Auslastung der Seiten bei Löschoperationen nicht garantiert, daher: größere Tiefe des Baums 5–6 Seitenzugriffe für Exact Match Queries Vergleich K-D-B-Baum mit Grid-File D0D0 D1D1 Grid-File: + Nur 2 Seitenzugriffe bei Exact Match Query ± Verschmelzen von Seiten einfacher - Ungleichbehandlung der Attribute bei Range Query D1D1 D0D0


Herunterladen ppt "Universität Karlsruhe (TH) © 2008 Univ,Karlsruhe, IPD, Prof. LockemannDBI 6 Kapitel 6 Zugriffsschicht: Satzzugriffsstrukturen."

Ähnliche Präsentationen


Google-Anzeigen