Bitmap Indizes und ihre Einsatzmöglichkeiten


Bachelorarbeit, 2008

51 Seiten, Note: 1


Leseprobe


Inhaltsverzeichnis

Tabellenverzeichnis

Abbildungsverzeichnis

Abkürzungsverzeichnis

Kurzfassung

Abstract

1 Einleitung
1.1 Notwendigkeit von Indizes
1.2 OLAP vs. OLTP

2 B-Tree Indizes
2.1 B-Tree
2.2 B+-Tree und B*-Tree
2.3 Kombination mehrerer Dimensionen

3 Bitmap Indizes
3.1 Funktionsweise
3.2 Kombination mehrerer Dimensionen
3.3 Komprimierung
3.3.1. Byte basierte Komprimierung
3.3.2. Wort basierte Komprimierung
3.4 Kodierung

4 Query Optimizer

5 Fallstudie
5.1 Befüllung und Indizierung
5.2 Abfragen
5.2.1. Zählen aller Bürger
5.2.2. Zählen mit zwei Dimensionen
5.2.3. Personen pro Bundesland
5.2.4. Durschnittseinkommen mit 5 Dimensionen
5.2.5. Durschnittseinkommen und NULL-Wert
5.2.6. Range Query
5.3 Updates
5.4 Inserts
5.5 Deletes

6 Zusammenfassung der Ergebnisse
6.1 Speicherplatz
6.2 Abfragen
6.3 Inserts, Updates und Deletes

7 Fazit

Literaturverzeichnis

A Anhang
A.1 Erstellen der Tabelle buerger
A.2 Prozedur: Füllen mit Zufallswerten
A.3 Befüllen und vervielfältigen der Tabelle
A.4 Erzeugen von Statistiken
A.5 Abfrage: Zählen mit zwei Dimensionen
A.6 Prozedur: zufällige Updates
A.7 Prozedur: zufällige Deletes

Tabellenverzeichnis

Tabelle 1: Unterschiede zwischen OLTP und OLAP

Tabelle 2: Beispiel eines Bitmap Index

Tabelle 3: Bitmap Operation: männlich AND ledig

Tabelle 4: Aufbau der Bundesbürger-Tabelle

Tabelle 5: Erstellen der Tabellen und Indizes

Tabelle 6: Ergebnis - Zählen aller Bürger

Tabelle 7: Ergebnis - Zählen mit zwei Einschränkungen

Tabelle 8: Ergebnis - Personen pro Bundesland

Tabelle 9: Ergebnis - Durchschnittseinkommen mit 5 Dimensionen

Tabelle 10: Ergebnis - Durchschnittseinkommen und NULL-Wert

Tabelle 11: Ergebnis - Range-Abfragen

Tabelle 12: Ergebnis - Updates

Tabelle 13: Ergebnis - Inserts

Tabelle 14: Ergebnis - Deletes

Abbildungsverzeichnis

Abbildung 1: Beispiel eines B-Trees

Abbildung 2: Beispiel eines B+-Trees

Abbildung 3: BBC komprimierte Bytefolge

Abbildung 4: Beispiel eines kodierten Bitmap Index

Abbildung 5: Performance-Analyse von kodierten Bitmap Indizes

Abbildung 6: Ausführungsplan mit Bitmap Indizes

Abbildung 7: Ausführungsplan mit B-Tree Indizes

Abkürzungsverzeichnis

Abbildung in dieser Leseprobe nicht enthalten

Kurzfassung

Für das schnelle Auffinden von Daten in einer Datenbank werden Indizes verwendet. Heutzutage unterstützen einige Datenbanken, unter anderem Oracle und DB2, die Verwendung von Bitmap Indizes. Im Gegensatz zu B-Tree Indizes sind sie vor allem für Spalten geringer Kardinalität und für multidimensionale Abfragen geeignet. Speziell durch die Verbreitung von Data Warehouses und die Notwendigkeit, statistische Auswertungen über große Datenmengen durchzuführen, gewinnen Bitmap Indizes an Bedeutung.

Ziel dieser Arbeit ist es, Bitmap Indizes näher zu beleuchten und mit den traditionellen B-Tree Indizes zu vergleichen. Es wird herausgearbeitet, unter welchen Umständen der Einsatz von Bitmap Indizes Vorteile bringt und wann von ihrer Verwendung abgesehen werden sollte.

Nach einer kurzen Einführung in die Thematik, werden B-Tree Indizierung und Bitmap Indizierung vorgestellt und in einer Fallstudie anhand einer Oracle Beispieldatenbank praktisch gegenübergestellt.

Bitmap Indizes überzeugen durch ihre kompakte Größe und bieten Geschwindigkeitsvorteile bei einer Vielzahl komplexer Abfragen über große Datenmengen hinweg. Sie können nicht nur für Attribute mit sehr kleiner Kardinalität, sondern durchaus auch für Attribute mittlerer bis höherer Kardinalität effizient eingesetzt werden.

Die größten Performance-Verbesserungen bieten Bitmap Indizes bei der Beantwortung komplexer Kombinationen, wenn die resultierende Selektivität so hoch ist, dass nur noch wenige Datensätze tatsächlich betrachtet werden müssen.

Abstract

Indexes are used to locate data records in a database in a quick way indexes are used. Nowadays several databases, like Oracle and DB2, do support the use of bitmap indexes. Unlike B-tree indexes they are especially suitable for columns with low cardinality and for multidimensional queries. Because of the spread of data warehouses and the need to make complex statistical analysis over large sets of data, bitmap indexes gain in importance.

The goal of this paper is to have a closer look on bitmap indexes and compare them to traditional B-tree indexes. It will be demonstrated under which conditions the use of bitmap indexes will help to gain advantages and when someone should abandon using it.

After a short introduction of the topic, b-tree indexes and bitmap indexes will be presented and practically compared on the basis of an example database implemented in Oracle.

Bitmap Indexes convince because of their compact size and provide speed advantages in numerous complex queries on large sets of data. They can not only be used for attributes with very low cardinality but can also be used efficiently for attributes with medium or higher cardinality.

The biggest performance improvements are provided executing complex queries, when the resulting selectivity is that high, that only very few data records actually have to be read.

Einleitung

Für das schnelle Auffinden von Daten in einer Datenbank werden Indizes verwendet. Traditionelle B-Tree Indizes sind allerdings nicht zwangsläufig die beste Wahl und werden bei sinkender Selektivität ineffizienter. Model 204 setzte als erste kommerzielle Datenbank bereits in den 80er-Jahren eine Art Bitmap Index ein1. Heutzutage unterstützen auch weitere Datenbanken, unter anderem Oracle und DB2, die Verwendung von Bitmap Indizes. Im Gegensatz zu B-Tree Indizes sind sie vor allem für Spalten geringer Kardinalität und für multidimensionale Abfragen geeignet. Speziell durch die Verbreitung von Data Warehouses (DWH) und die Notwendigkeit komplexe statistische Auswertungen über große Datenmengen durchzuführen gewinnen Bitmap Indizes an Bedeutung.

Ziel dieser Arbeit ist es, Bitmap Indizes näher zu beleuchten und mit den traditionellen B-Tree Indizes zu vergleichen. Es wird herausgearbeitet, unter welchen Umständen der Einsatz von Bitmap Indizes Vorteile bringt und wann von ihrer Verwendung abgesehen werden sollte.

Im Folgenden wird mit einer Einführung in die Thematik der Indizierung und einer Erläuterung der Begriffe OLTP (Online Transaction Processing) und OLAP (Online Analytical Processing) begonnen. Anschließend werden die Indizierungsmöglichkeiten der B-Tree Indizierung und Bitmap Indizierung vorgestellt. Mit einer Fallstudie zum praktischen Vergleich der Indizierungsarten anhand einer Oracle Beispieldatenbank stellt Kapitel 5 das Kernstück dieser Arbeit dar. Abgerundet wird die vorliegende Bachelorarbeit mit einer Zusammenfassung und kritischen Diskussion der theoretischen und praktischen Erkenntnisse und einem abschließendem Fazit.

1.1 Notwendigkeit von Indizes

Computer Hardware wurde in den letzten Jahrzehnten kontinuierlich schneller und billiger. Allerdings konnte die Entwicklung der Festplatten nicht mit der Entwicklung der Prozessoren mithalten. Der Lesekopf einer Festplatte muss in Position gebracht werden, dann wird gewartet bis die rotierende Platte an der richtigen Position ist und erst dann können Daten gelesen oder geschrieben werden. Aus Performance-Gründen ist es das Ziel einer Datenbank diese mechanischen Zugriffe auf ein Minimum zu beschränken.2

Um Datensätze einer Datenbank aufzufinden und auszulesen, gibt es verschiedene Ansätze. Der Full Table Scan, das sequentielle Durchsuchen aller Datensätze, ist der Worst Case und steht immer zur Verfügung. Dieser ist bei großen Datenmengen sehr zeitintensiv, da alle Datensätze einer Tabelle, egal ob benötigt oder nicht, von der Festplatte gelesen werden müssen.

Um nicht auf alle Datensätze zugreifen zu müssen, gibt es verschiedene Techniken der Indizierung. Dazu existiert eine von der Datenstruktur getrennt gehaltene Indexstruktur mit sortierten Attributen und Zeigern auf die entsprechenden Datensätze. Es kann nun im Vergleich zum Full Table Scan wesentlich zeiteffizienter in der Indexstruktur gesucht werden und Zugriffe auf die Festplatte werden reduziert.3

Allerdings ist es nicht zwingend sinnvoll, für jedes Attribut einen Index anzulegen. Der Index selber belegt ebenfalls Speicherplatz, und zusätzlich muss er bei Änderungen in der Datenbank aktualisiert werden. Diese Pflege des Index wirkt sich demzufolge beim Hinzufügen, Löschen oder Ändern von Datensätzen negativ auf die Performance aus. Es liegt also in der Verantwortung des Datenbankdesigners abzuwägen, für welche Spalten die Verwendung von Indizes angebracht ist und für welche nicht.4

1.2 OLAP vs. OLTP

Bei einer traditionellen OLTP Datenbank werden Daten fortlaufend durch Transaktionen verändert. Diese Transaktionen müssen die vier Eigenschaften Atomarität, Konsistenz, Isolation und Dauerhaftigkeit aufweisen. DSS (Decision Support Systems) oder MIS (Management Information Systems) erstellen häufig Berichte indem sie Daten lesen, gruppieren und aufsummieren. Die Möglichkeit mit einem DSS auf die operative OLTP Datenbank zuzugreifen hat den Vorteil nur eine Datenbank verwalten zu müssen, wodurch der administrative Aufwand gering bleibt. Das DSS kann allerdings in diesem Fall nur auf die aktuellen Daten zugreifen was historische Analysen verhindert. Weiters ist eine OLTP Datenbank für Transaktionen im Mehrbenutzerbetrieb optimiert, was auch das Sperren betroffener Datensätze beinhaltet. Da analytische Abfragen oft sehr viele Datensätze betreffen, verringern diese die Gesamtperformance der operativen Datenbank. Um diese Probleme zu umgehen, wird häufig die Datenbank für das DSS von der operationalen Datenbank physikalisch getrennt5. Die Datenbank für das DSS wird Data Warehouse genannt und von Inmon und Jürgens6 wie folgt definiert:

- Subject oriented (Themenorientiert): Das Ziel der Daten in einem Data Warehouse ist es, die Entscheidungsfindung, Planung und Kontrolle zu verbessern. Im Gegensatz dazu sind OLTP-Anwendungen dafür ausgelegt Arbeitsabläufe zu unterstützen.
- Integrated (Vereinheitlichung): Die Daten eines Data Warehouses werden von unterschiedlichen Quellen, welche die Daten in verschiedenen Formaten speichern, geladen. Sie müssen überprüft, bereinigt und in ein einheitliches Format transformiert werden, um schnellen Zugriff zu gewährleisten.
- Time variant (Zeitorientierung): In OLTP-Anwendungen werden die aktuellen Daten zum Zeitpunkt des Zugriffs abgefragt. In einem Data Warehouse werden Daten in definierten periodischen Abständen aktualisiert, dadurch entsprechen die Daten dem Stand der letzten Aktualisierung.
- Non-volatile (Beständigkeit): Nach dem Einfügen der Daten in das Data Warehouse werden Daten weder verändert noch gelöscht. Die einzigen Ausnahmen sind, wenn falsche Daten eingetragen wurden oder die Kapazitätsgrenzen des Data Warehouses erreicht werden und eine Archivierung notwendig wird.

Anwendungen wie DSS oder MIS, welche Data Warehouses benutzen, werden OLAP-Anwendungen genannt. OLAP-Anwendungen werden typischerweise mit einem RDBMS (Relational Database Management System) umgesetzt, da diese Technologie gut verstanden wird und in der Lage ist große Datenmengen zu verwalten. OLAP-Anwendungen welche auf RDBMS basieren, werden auch ROLAP (Relational Online Analytical Processing) genannt.

Bei OLTP-Anwendungen wird das Datenmodell normalisiert, um die Konsistenz bei Insert, Update und Delete Anweisungen zu gewährleisten und um Redundanzen zu vermeiden. Das oberste Ziel einer OLAP-Anwendung ist es, in kurzer Zeit Statistiken über viele Datensätze zu liefern. Um dieses Ziel zu erreichen, wird im Gegensatz zu OLTP ein denormalisiertes Datenmodell verwendet.7

Abschließend werden in Tabelle 1 die Unterschiede zwischen OLTP und OLAP übersichtlich und zusammenfassend aufgelistet.

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 1: Unterschiede zwischen OLTP und OLAP8

2 B-T REE I NDIZES

In diesem Kapitel wird auf den B-Tree und dessen Varianten den B+-Tree und B*-Tree eingegangen. Die unterschiedlichen Bezeichnungen werden in der Literatur nicht konsequent getrennt, so spricht Oracle bei ihrer Implementierung von B-Tree obwohl es technisch gesehen eine Weiterentwicklung eines solchen ist.

2.1 B-Tree

In einem Baum werden Schlüssel, also die zu indizierenden Ausprägungen eines Attributes, und Ihre physikalische Position, die Rowid, gespeichert. Der B-Tree ist eine Erweiterung der binäreren Suchbäume, für die Speicherung großer Datenmengen auf Festplattenspeicher ausgelegt und per Definition immer ausgeglichen. Binäre Suchbäume sind wegen der großen Anzahl von Sprüngen von Knoten zu Knoten und der damit verbundenen Festplattenzugriffe nicht geeignet. Da bei jedem Festplattenzugriff ein ganzer Block gelesen wird, werden beim B-Tree die Knoten erweitert, um mehr als zwei Einträge, bis maximal der Blockgröße entsprechend viele Einträge zu speichern. Um die gleichmäßige Perfomance zu garantieren, verlangt der B-Tree, dass jeder Knoten, mit Ausnahme des Wurzelknotens, mindestens zur Hälfte gefüllt ist. Eine exakte Such-, Einfüge- oder Löschabfrage ist demnach von der Ordnung O(logB n), wobei B die maximale Anzahl von Einträgen pro Knoten und n die Gesamtzahl der Einträge repräsentiert. Die Höhe eines Baumes ist für einige Milliarden Einträge nur ~5, wenn man davon ausgeht, dass B in der Größenordnung von 100 liegt.9

B-Tree Indizes indizieren nur vorhandene Werte, ignorieren also NULL Werte. Eine Abfrage, welche z.B. die Anzahl der NULL Werte zählen soll, kann somit nicht den Index benutzen.10

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 1: Beispiel eines B-Trees11

In Abbildung 1 enthält jeder Indexknoten („Nicht-Blattknoten“) zwischen zwei und vier Verweisen auf Kindknoten, und jeder Blattknoten enthält zwischen zwei und vier Objekten. Der Wurzelknoten A enthält ein Objekt mit dem Wert 25 und zwei Verweise auf Kindknoten. Im linken Unterbaum befinden sich nur Objekte mit einem Wert <= 25, und im rechten Unterbaum besitzt jedes Objekt einen Wert > 25. Alle Blattknoten (D bis I) befinden sich auf derselben Tiefe: ihr Abstand zum Wurzelknoten A ist 2. Im Moment gibt es zwei volle Knoten: den Knoten B und den Blattknoten D.

2.2 B + -Tree und B*-Tree

Der B+-Tree ist eine Variante des B-Trees mit zwei prinzipiellen Änderungen. Die eigentlichen Datenelemente werden in dieser Variante auf die Blattknoten verlegt, also enthalten die Indexknoten nun lediglich die Schlüssel, welche zur Verzweigung verwendet werden. Dadurch gewinnt man in den Indexknoten Platz und kann folglich breiter verzweigen. Durch die breitere Verzweigung wird die Höhe des Baumes verringert, was die Anzahl der Festplattenzugriffe reduziert und das Traversieren des Baumes beschleunigt. Die zweite Änderung ist, dass alle Blattknoten in einer doppelt verketteten Liste miteinander verbunden werden. Dies ist besonders dann von Vorteil, wenn der Baum in einem Intervall durchlaufen werden soll.12

[...]


1 vgl. O’Neil, 1987

2 vgl. O’Neil;O’Neil, 2001, S.470f

3 vgl. Geisler, 2006, S.121

4 vgl. Geisler, 2006, S.122

5 vgl. Jürgens, 2002, S.5ff

6 Inmon, 2002, S.33 und Jürgens, 2002, S.7

7 vgl. Jürgens, 2002, S.10

8 Modifiziert nach Jürgens, 2002, S.9

9 vgl. Mehta;Sahni, 2005, S.15-1 f

10 vgl. Lane, 2005, S.6-4

11 Quelle: Mehta;Sahni, 2005, S.15-4

12 vgl. Ramakrishnan;Gehrke, 2002, S.344ff

Ende der Leseprobe aus 51 Seiten

Details

Titel
Bitmap Indizes und ihre Einsatzmöglichkeiten
Hochschule
Fachhochschule Kufstein Tirol
Note
1
Autor
Jahr
2008
Seiten
51
Katalognummer
V137769
ISBN (eBook)
9783640456376
ISBN (Buch)
9783640456482
Dateigröße
680 KB
Sprache
Deutsch
Anmerkungen
Die PL-SQL Statements für die Durchführung der Fallstudie befinden sich im Anhang.
Schlagworte
Datenbank, Index, Bitmap, Data Warehouse, OLAP, Bitmap Index, B-Tree Index
Arbeit zitieren
Ralf Brunner (Autor:in), 2008, Bitmap Indizes und ihre Einsatzmöglichkeiten, München, GRIN Verlag, https://www.grin.com/document/137769

Kommentare

  • Noch keine Kommentare.
Blick ins Buch
Titel: Bitmap Indizes und ihre Einsatzmöglichkeiten



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden