GRUNDLAGEN VON INFORMATIONSSYSTEMEN INDEXSTRUKTUREN I: B-BÄUME UND IHRE VARIANTEN

Ähnliche Dokumente
B*-BÄUME. Ein Index ist seinerseits wieder nichts anderes als eine Datei mit unpinned Records.

Datenbanken: Indexe. Motivation und Konzepte

Mehrwegbäume Motivation

Algorithmen und Datenstrukturen 1

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Datenbanken. Interne Datenorganisation:

OPERATIONEN AUF EINER DATENBANK

Nachtrag zu binären Suchbäumen

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Nachtrag zu binären Suchbäumen (nicht (nur) AVL Bäumen: Löschen von Elementen in binären Suchbäumen. 1. Fall: zu löschendes Element ist Blatt: löschen

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write

INDEXDATEIEN ( INDEXED FILES )

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Indizes B+Bäume in Oracle. Jörg Winkler

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

3. Übungsblatt zu Algorithmen I im SoSe 2017

B / B* - Bäume. Guido Hildebrandt Seminar Datenbanksysteme

Datenbanksysteme SS 2013

Logische Datenstrukturen

Vorlesung Datenstrukturen

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

IR Seminar SoSe 2012 Martin Leinberger

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Kapitel Andere dynamische Datenstrukturen

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Informatik II, SS 2014

Literatur: Jeffrey D. Ullman: Principles of Database Systems, 2 nd Edition 1982, Kapitel 2.2

ContainerDatenstrukturen. Große Übung 4

Fibonacci-Heaps und deren Anwendung

Algorithmen und Datenstrukturen I AVL-Bäume

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Algorithmen und Datenstrukturen

14. Rot-Schwarz-Bäume

10. Datenbank Design 1

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Vorlesung Datenstrukturen

Kapitel 12: Induktive

Datenstrukturen. Dortmund, Oktober 1998

Physische Datenorganisation

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14

Verkettete Datenstrukturen: Bäume

Übung: Algorithmen und Datenstrukturen SS 2007

Dynamische Mengen. Realisierungen durch Bäume

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

SÄTZE MIT VARIABLER LÄNGE

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Tutoraufgabe 1 (Listen):

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Datenstrukturen & Algorithmen

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Algorithmen und Datenstrukturen 1

Kapitel 8: Physischer Datenbankentwurf

Indizes. Index. Datenfeld Normale Tabelle. Gesucht wird: Zugriff. 3. Zugriff 1. Zugriff.

Informatik II, SS 2014

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Partitionierungsstrategien für Data Vault

Aufbau Datenbanksysteme

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen Suchbaum

Ziel: Schaffung einer zusätzlichen, schnellen Zugriffsmöglichkeit unabhängig von Primärorganisation der Datei

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

Informatik II, SS 2014

Oracle Database 12c Was Sie immer schon über Indexe wissen wollten

Motivation Binäre Suchbäume

8 Baum in perfekter Komposition

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Vorlesung Datenstrukturen

Datenbanken Kapitel 1

Dateiorganisation und Zugriffsstrukturen. Prof. Dr. T. Kudraß 1

Algorithmen und Datenstrukturen

Grundlagen der Informatik

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 12

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Organisationsformen der Speicherstrukturen

Gleichheitsanfrage vs. Bereichsanfrage

Wünschenswerte Eigenschaft von Suchbäumen mit n Knoten: Suchen, Einfügen, Löschen auch im schlechtesten Fall O(log n)

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Dateiorganisation und Zugriffsstrukturen

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Stream Processing II

Exkurs: Datenstruktur Quad Tree

Rolf Wanka Sommersemester Vorlesung

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Präfx Trie zur Stringverarbeitung. Cheng Ying Sabine Laubichler Vasker Pokhrel

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Copyright, Page 1 of 8 AVL-Baum

6. Sich selbst organisierende Datenstrukturen

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Algorithm Engineering. Alexander Kröller, Abteilung Algorithmik, IBR

Grundlagen von Datenbanken. B-Bäume, B*-Bäume Normalisierung

Informatik II, SS 2014

Seminar Datenbanken Martin Gerstmann

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Transkript:

Informationssysteme - Indexstrukturen I: B-Bäume und ihre Varianten Seite 1 GRUNDLAGEN VON INFORMATIONSSYSTEMEN INDEXSTRUKTUREN I: B-BÄUME UND IHRE VARIANTEN Leiter des Proseminars: Dr.Thomas Bode Verfasser dieses Vortrages: Christoph Tornau Datum: 20.11.2000

Informationssysteme - Indexstrukturen I: B-Bäume und ihre Varianten Seite 2 Inhalt: 1. Einführung: Begriffserklärung, Motivation und Anforderungen an eine Datenstruktur 2. Einfache Datenstrukturen 2.1. Sequentielle Struktur 2.2. Dichter Index (Dense Indices) 2.3. Gestreuter Index (Spares Indices) 2.4. Multilevel Index 2.5. Index nach mehreren Schlüsseln sortiert 3. B + -Bäume 3.1. Aufbau 3.2. Suchen 3.3. Hinzufügen 3.4. Löschen 4. Andere Varianten von B-Bäumen 4.1. Binärer Baum 4.2. B-Baum 5. Quellenverzeichnis

Informationssysteme - Indexstrukturen I: B-Bäume und ihre Varianten Seite 3 1. Einführung In diesem Essay geht es um die Art und Weise, in der Daten im Hintergrundspeicher abgelegt werden. Da es bei großen Datenbanken nicht möglich ist, alle Daten zufällig abgreifbar im Hauptspeicher zu halten, müssen wir den Hintergrundspeicher benutzen. Aus dem Hintergrundspeicher können wir nur in Blöcken übertragen. Wir müssen also später darauf achten, daß nur wenige geschickte Blockübertragungen aus dem Hintergrundspeicher stattfinden, um eine möglichst schnelle Implementierung für die Grundfunktionen einer Datenstruktur zu erhalten. Es geht dabei im Hauptsächlichen um B + -Bäume. Wir werden sehen, warum gerade diese Speicherstruktur benutzt wird, um eine schnelle Suche zu realisieren. Auf einer Datenstruktur müssen weiterhin, das sei zu Beginn noch gesagt, noch die wichtigen Funktionen Einfügen und Löschen implementiert sein. Zu Beginn müssen wir uns auch noch klarmachen, was eine Suche auf einer Datenstrukutur überhaupt ist. Zum einen können wir einen Schlüsselwert suchen. Wenn wir eine Datenstruktur haben, wo immer nur ein Schlüssel einmal vorkommt, so bekommen wir hier auch einen oder keinen Schlüssel zurück. Aber das Problem beginnt schon, wenn wir Datenstrukturen haben, wo der zu suchende Schlüssel mehrfach vorkommt oder vorkommen kann. Wir müssen dann bei der Suche alle Schlüssel zurückgeben und nicht nur einen. Dann können wir auch noch Bereichsabfragen starten, z.b. alle Datensätze die einen Schlüssel < 100 haben. Für Bereichsabfragen sind einige Datenstrukturen besonders schlecht geeignet. Wichtige Begriffe in dieser Ausarbeitung sind folgende: Tupel: Ein Tupel ist eine Ansammlung von Werten zu Attributen, die zu zueinander gehören. Ein Tupel entspricht in der tabellarischen Darstellung einer Relation einer Zeile der Tabelle. In diesem Essay wollen wir die Daten, die in einem Tupel gespeichert sind, zunächst nicht betrachten. Ein Datensatz hat für uns die folgende Form: Schlüssel Daten Schlüssel: Ein Schlüssel ist das Attribut, nach welchem das Tupel gekennzeichnet wird und nach welchem die Relation sortiert wird. Meistens sind solche Schlüsselattribute Unikate, d.h. ein Schlüsselattributwert kann nur einmal in der gesamten Datenbank vorkommen. Wir betrachten jedoch hier zunächst auch Relationen, in denen Schlüsselwerte doppelt vorkommen. Datenstruktur: Die Datenstruktur ist die Art und Weise, in welcher Datensätze abgespeichert werden. Relation: Eine Menge von Tupeln gleichen Typs. Eine Relation kann man in tabellarischer Darstellung darstellen, in dem man alle Tupel mit den dazugehörigen Attributen auflistet. Index: Ein Index ist eine Ansammlung von Schlüsseln und Zeigern, die auf bestimmte Datensätze zeigen, um die Suche zu beschleunigen. 2. Einfache Datenstrukturen 2.1 Sequentielle Struktur Die Tupel können in einer sortierten Liste abgelegt werden. Bei dieser Liste wird jedoch maximale Zeit verbraucht um Tupel zu suchen. Wenn der zu suchende Schlüssel nicht vorkommt, können wir die Suche unterbrechen, wenn der Schlüssel des aktuellen Tupels größer als der zu suchende Schlüssel ist. Andernfalls kann es sein, daß sogar alle Tupel durchgegangen werden müssen und aus dem Hintergrundspeicher geladen werden müssen, bis der richtige Tupel gefunden worden ist. Beispiel für diese Datenstruktur: d 1 d 2 d 3 d 4 d 5 d 6 d 7 Wobei d 1...d 7 die Schlüssel der Tupel darstellen. Es gilt d 1 <d 2 <...<d 7

Informationssysteme - Indexstrukturen I: B-Bäume und ihre Varianten Seite 4 Bei großen Datenbanken ist es so, daß nicht mehr die ganze Liste im Hauptspeicher gehalten werden kann. Es kann sein, daß je ein Tupel in einem Block auf der Festplatte gespeichert wird. Wird es dies, so sind maximal Anzahl der Tupel Festplattenzugriffe nötig. Viel wahrscheinlicher ist es jedoch, daß mehrere Tupel in einem Block liegen. Zunächst sieht es aus, als ob wir dann weniger Blockzugriffe benötigen. Doch wenn diese Tupel nicht hintereinander in der Liste liegen, muß der Block eventuell für jeden gelesenen Tupel neu von der Festplatte geladen werden. Eine solche Struktur kann vor allen Dingen dann aufgebaut werden, wenn auf der Datenbank geschrieben und gelöscht wird. Ein Defragmentieren würde wieder viel Zeit benötigen. 2.2 Dichter Index (Dense Index) Im Dichten Index gibt es für jeden Wert, den ein vorhandenes Schlüsselattribut angenommen hat einen Indexeintrag. Dieser Indexeintrag zeigt auf den ersten Schlüssel in der Datenbank, der den Wert einnimmt. Will man einen Tupel mit einem Schlüssel, der noch nicht vorhanden ist, einfügen, muß man einen neuen Indexeintrag erzeugen. Wenn man einen Tupel wieder löschen möchte, dessen Schlüssel nur einmal in der Relation vorkommt, muß man den Indexeintrag für diesen Tupel auch löschen, ansonsten tut man es nicht. Es ist darauf zu achten, daß wenn es viele Tupel gibt, dieser dichte Index extrem groß werden kann. Besonders bei vielen kleinen Tupel lohnt dieses Verfahren nicht, da der Index äußerst groß wird. Beispiel für einen Dichten Index: Wien Wien NULL 2.3 Gestreuter Index (Sparse Indices) Im gestreuten Index gibt es weniger Indexeinträge. Nicht mehr jeder Schlüssel kommt im Index vor. Der Index wird dafür benutzt um an einer passenden Stelle in die Liste hineinzuspringen, um dann ab der Stelle den Datensatz zu finden. Man kann an der Größe des Indexes so sparen. Je gestreuter und dünner jedoch der Index wird, desto kostenaufwendiger ist die Suche, da immer mehr Datensätze durchlaufen werden müssen. Wenn man Datensätze in die Relation mit gestreutem Index einfügen möchte, und deren Schlüssel noch nicht im Index vorhanden ist, so ist abzuwägen, ob dieser in den Index aufgenommen werden soll. Dies muß anhand spezieller Algorithmen in der Einfügemethode geschehen. (Beispielsweise Index einfügen, wenn es seit 3 Datensätzen keinen Index mehr gab) Löschen aus der Relation mit gestreutem Index kann man, indem man einfach wieder den Datensatz löscht. Wenn es einen Indexeintrag auf diesen Datensatz gab, dann wird dieser auch wieder gelöscht. Man kann weiterhin nun wieder neue Indexeinträge erzeugen, damit der Index so gestreut bleibt, wie man es vorher definiert hat. (Wieder das Beispiel, daß nach je 3 Datensätzen ein Datensatz mit Indexeintrag kommt und dies beim Löschen auch beibehalten wird.)

Informationssysteme - Indexstrukturen I: B-Bäume und ihre Varianten Seite 5 Beispiel: Die Vorteile einer solchen Indexstruktur sind, daß Speicherplatz für den Index eingespart wird. Dieser kann dann schneller durchlaufen werden. Ein weiterer Vorteil ist, daß man jeden Indexeintrag jeweils auf einen Block auf der Festplatte zeigen kann. Das lesen dieses einen Blocks geht langsam von statten, das durchsuchen dieses Blockes allerdings schnell. Zunichte gemacht wird dieser Vorteil wieder, wenn die Tupel, die nacheinander folgen zerstreut in den Blocks liegen. Hier muß immer wieder neu geladen werden. Vielleicht ist sogar dann ein dichter Index besser. 2.4 Multilevel Index Um das Problem der langen Laufzeiten zu lösen, kann man mehrere Indexe verwenden. Man kann anhand eines ersten Indexes suchen und anhandes des Indexeintrages auf einen zweiten Index springen usw. bis man den richtigen Datensatz gefunden hat. Beim Einfügen und Löschen in eine solche Datenstruktur muß man natürlich auch die Indexeinträge in allen Indexen der nun hergestellten Relation entsprechend verändern. Beispiel für einen Multilevelindex: Wien NULL B E Wien Wien NULL 2.5 Index nach mehreren Schlüsseln sortiert Es gibt des weiteren noch Relationen, in denen mehrere Schlüssel vorliegen, nach denen sortiert werden kann. Man kann nun mehrere dichte Indexe anlegen und jeden Index nach einem Schlüssel sortiert haben, um auf diese Relation schnell zugreifen zu können. Beim Einfügen und Löschen müssen dann die entsprechenden Veränderungen an allen Indexen durchgeführt werden.

Informationssysteme - Indexstrukturen I: B-Bäume und ihre Varianten Seite 6 Beispiel: Kassel Ulm Kassel Ulm Weber Müller Maier Riverst Prim Müller NULL Prim Riverst Maier Müller Müller Weber 3. B + -Bäume 3.1 Aufbau Der B + -Baum ist wie der Name schon sagt, ein Baum. Er besteht aus Knoten in denen mehrere Schlüssel enthalten sind. Durch die Schlüssel in den Knoten kann man den Weg zu dem gewünschten Datensatz finden, indem man die Zeiger benutzt, die ebenfalls in den Knoten enthalten sind. Die Blätter, in denen auch mehrere Datensätze vorhanden sein können, sind untereinander sequentiell verknüpft, damit man schneller alle Datensätze zusammen auslesen kann. Das B in B + - Bäumen steht für balanced. Der B + -Baum ist ausbalanciert. Das heißt, er hat bis zu jedem Blatt die gleiche Länge. Beispiel: 50 80 25 40 10 25 26 30 41 X 55 75 Legende: 51 52 56 X 77 X 55 56 Pointer Schlüssel Schlüssel mit Datensatz 90 X 85 X 91 92 X X

Informationssysteme - Indexstrukturen I: B-Bäume und ihre Varianten Seite 7 3.2 Suchen Gesucht wird in einem B + -Baum, indem man in jedem Knoten nach dem zu suchenden Schlüssel sucht. Ist der Schlüssel größer als ein im Knoten links liegender Schlüssel und kleiner als in einem Knoten rechts liegender Schlüssel, so folgt man dem Pointer zwischen den beiden Schlüsseln. Im obigen Baum ist der Suchweg 56 markiert. Warum der B + -Baum so effizient bei der Suche ist, liegt daran, daß ein Knoten möglichst in einem Block liegt. Manchmal liegen über 50 Schlüssel in einem Knoten. Zwar muß auf den Knoten einzeln noch eine sequentielle Suche stattfinden, aber da dies eine Suche im Speicher ist, ist sie sehr schnell. 3.3 Hinzufügen Beim einfachen Hinzufügen wird gemäß dem Suchalgorithmus das Blatt im Baum gesucht, an der der Datensatz eingefügt werden muß. Dann wird er dort hingeschrieben. Fügen wir beispielsweise 78 ein, dann passiert folgendes: 41 X 55 75 51 52 56 X 77 78 Wenn jedoch für den einzufügenden Datensatz in dem jeweiligen Blatt keinen Platz mehr haben, dann müssen wir diesen schaffen, indem wir in dem darüberliegenden Knoten einen neues Blatt einfügen. Ist dies auch nicht möglich, dann spalten wir diesen Knoten und gehen rekursiv wieder einen Knoten rückwärts und versuchen dort die beiden gespalteten Knoten einzufügen. Dies können wir bis dahin tun, daß die Wurzel gespalten wird, der Baum eine neue Wurzel bekommt und dementsprechend um 1 länger wird. Beispielsweise fügen wir 79 ein: 55 75 79 X 51 52 56 X 77 78 79 X

Informationssysteme - Indexstrukturen I: B-Bäume und ihre Varianten Seite 8 3.4 Löschen Beim Löschen aus B + -Bäumen gibt es einmal wieder das ganz normale Löschen, indem man einfach den zu löschenden Datensatz wegnimmt. In dem folgenden Beispiel ist aus dem Baum der Datensatz 52 gelöscht worden. 50 80 25 40 10 25 26 30 41 X 55 75 51 X 56 X 77 X Nun gibt es aber noch den Fall, daß ein Blatt nicht mehr genügend oder gar keine Datensätze nach dem Löschen enthält. Wir können dann das Blatt ganz löschen. Dies kann jedoch auch soweit gehen, daß ein Knoten zu wenig Zeiger auf Blätter hat, da nur noch ein Blatt existiert. Ein solcher Knoten wäre unsinnig, da diesem Zeiger immer gefolgt würde und so Rechenzeit verschwendet werden würde. Der Baum muß allerdings ausbalanciert sein. Deshalb wenden wir einen Trick an und borgen vom benachbarten Knoten einen Knoten. Dieses borgen kann wieder rekursiv bis zur Wurzel stattfinden. Dies kann bis dahin gehen, daß der Baum nur noch einen Knoten hat, nämlich die Wurzel selbst, in welchem auch die Datensätze gespeichert sind. Im folgenden Beispiel löschen wir 56 und 77 und borgen uns daraufhin ein Blatt vom linken Nachbarn, nämlich das Blatt 41,X. Den Schlüssel in den Knoten passen wir entsprechend an: 35 80 25 X 10 25 26 30 40 75 41 X 51 X

Informationssysteme - Indexstrukturen I: B-Bäume und ihre Varianten Seite 9 4. Andere Varianten von B-Bäumen 4.1 Binärer Baum Ein binärer Baum unterscheidet sich vom B + -Baum, daß es an jedem Knoten immer nur zwei Entscheidungen gibt. Entweder man folgt dem linken Zeiger oder dem rechten Zeiger. Im Gegensatz dazu gibt es in B + -Bäumen manchmal 50 oder noch mehr Zeiger in einem Knoten. Binäre Bäume sind häufig auch nicht ausbalanciert. Beispiel für einen binären Baum: 35 20 40 10 39 40 Datensätze 4.2 B-Baum Bei normalen B-Bäumen stehen die Datensätze nicht nur in den Blättern, sondern auch in den Knoten, die noch keine Blätter sind. Damit wird verhindert, daß eine Information redundant im Baum vorhanden ist. B-Bäume werden jedoch in der Praxis selten verwendet, weil man in B-Bäumen nicht sequentiell alle Datensätze in einem Rutsch lesen kann, wie es in B + -Bäumen der Fall ist, wo jedes Blatt durch eine Liste noch einmal extra verkettet ist. Beispiel für einen B-Baum: 10 20 5 6 12 15 25 40 Datensätze

Informationssysteme - Indexstrukturen I: B-Bäume und ihre Varianten Seite 10 6. Quellenverzeichnis [SiKoSu97] Abraham Silberschatz; Henry F. Korth; S. Sudarshan: Database System Concepts. Third Edition, Kapitel 11, McGraw-Hill 1997, ISBN 0-07-044756-X [Comer97] Douglas Comer: The Ubiquitous B-Tree. In: ACM Computing Surveys, 11:2., pages 121-137, June 1979.