Kein Folientitel - fbi.h-da.de

Werbung
fbi
h_da
Datenbanken I
- Belegnummer 30.4304 -
WS 2008 (Bachelor)
- Materialien zur Vorlesung -
Prof. Dr. Inge Schestag
Hochschule Darmstadt
Fachbereich Informatik
Schestag
Datenbanken I (Bachelor)
1
fbi
h_da
Inhalt Datenbanken I
1 Grundlegende Begriffe und ein Überblick über Datenbankmanagement
1.1 Einsatzgebiete von Datenbanken
1.2 Nachteile selbst verwalteter Daten mit Hilfe (binärer) Dateien
1.3 Datenbanksysteme
1.4 Übersicht über verschiedene Datenbankmodelle
2 Interne Datenorganisation
2.1 Aufbau eines Speichermediums - Pages
2.2 Datenorganisation
2.3 Indexe und Bäume
2.4 Hash-Verfahren
3 Architekturmodelle für Datenbanksysteme
3.1 Die drei Ebenen des ANSI/SPARC-Modells
3.2 Aufgaben des DBMS im Zusammenhang mit dem 3-Ebenen-Modell
Schestag
Datenbanken I (Bachelor)
2
Inhalt Datenbanken I (Fortsetzung)
fbi
h_da
4 Datenmodellierung - allgemein
4.1 Die Rolle der Datenmodellierung im Lifecycle von Informationssystemen
4.2 Elemente von Datenmodellen – unterschiedliche Nomenklaturen für E/RDiagramme
4.3 Schlüssel / Keys
5 Besonderheiten der relationalen Datenmodellierung
5.1 Die Codd‘schen Normalformen
5.2 Die Supertype-/Subtype-Hierarchie (Inheritance) im logischen Modell
6 SQL - Structured Query Language
6.1 Datendefinition - DDL
6.2 Die Relationenalgebra und Datenmanipulation - DML
6.3 Der Systemkatalog
Zur Vorlesung Datenbanken I werden integrierte Hörsaalübungen durchgeführt.
Schestag
Datenbanken I (Bachelor)
3
Inhalt Datenbanken II – Vorlesung (Vorschau auf das SoSe 2008)
fbi
h_da
7 Datenbank-Anwendungsprogrammierung
7.1 Query Language / weiterführende Konzepte
7.1.1 Vergabe von Zugriffsrechten: grant, revoke, roles
7.1.2 embedded SQL / PL/SQL / SQLJ
7.2 Stored procedures und Trigger
7.2.1 Stored procedures
7.2.2 Trigger
7.3 Architekturkonzepte: objektorientierte Sprache / relationales DBMS
7.3.1 ODBC & Data Access Objects (DAO)
7.3.2 JDBC & Data Access Beans (DAB)
8 Weitere Datenbankmodelle
8.1 Objekt-relationale Datenbanken
8.2 Datenbanken und XML
Schestag
Datenbanken I (Bachelor)
4
Inhalt Datenbanken II – Vorlesung (Vorschau)
fbi
h_da
9 Transaktionskonzept
9.1 Das Transaktionskonzept
9.2 Concurrency & Locking
9.3 Recovery
Zur Vorlesung Datenbanken II findet ein begleitendes Praktikum statt.
Schestag
Datenbanken I (Bachelor)
5
fbi
h_da
Literaturverzeichnis
•
Heuer, Andreas, Saake, Gunter. Datenbanken: Konzepte und Sprachen.
MITP-Verlag, Bonn, 2. Auflage 2000.
•
Date, C.J. An Introduction to Database Systems. International Edition. AddisonWesley Systems. 8th ed. 2003.
•
Erbs, Karczewski, Schestag. Datenbanken. Datenmodelle, Objekte, WWW,
XML. VDE Verlag 2003.
•
Zehnder, Carl August. Informationssysteme und Datenbanken.
VdF Hochschulverlag, 8. Auflage 2005.
•
G. Vossen, Datenbankmodelle, Datenbanksprachen und DatenbankmanagementSysteme, 3. Auflage 1999, Oldenbourg .
•
Saake, Gunter, Sattler, Kai-Uwe. Datenbanken & Java. JDBC, SQLJ, ODMG und
JDO. dpunkt.verlag, 2. Auflage 2003.
•
Alfons Kemper, Andre Eickler: Datenbanksysteme. Eine Einführung, Oldenbourg,
6. Auflage März 2006
Schestag
Datenbanken I (Bachelor)
6
fbi
h_da
1 Grundlegende Begriffe und ein Überblick über Datenbankmanagement
1.1 Einsatzgebiete von Datenbanken
1.2 Nachteile selbst verwalteter Daten mit Hilfe (binärer) Dateien
1.3 Datenbanksysteme
1.4 Übersicht über verschiedene Datenbankmodelle
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 1
fbi
h_da
1.1 Einsatzgebiete von Datenbanken (1)
•
Banken und Versicherungen
•
•
Kontoverwaltung, Finanzprodukte, Handel, Controlling, ...
ERP-Systeme (Enterprise Resource Planning)
z. B. SAP R/3, Navision für KMU (Kleine und mittelständische Unternehmen), etc.
• Personal (HR), Buchhaltung, Bestellwesen, Lagerverwaltung, Logistik, ...
•
zentrale Abrechnungssysteme
•
•
•
Auskunftssysteme / Kundendaten
•
•
Telefonauskunft, ...
Buchungssysteme
•
•
Telekommunikationsbranche
Gastronomiebetriebe deutscher Autobahn-Raststätten
Reisebüros, Flugunternehmen, Hotels etc.
eBusiness
•
Schestag
online-Shops, online Auktionen (eBay), ...
Datenbanken I (Bachelor)
Kapitel 1 - 2
1.1 Einsatzgebiete von Datenbanken (2)
•
Bibliotheken
•
•
topologische Daten, Satellitenbilder, ...
Produkt-Datenbanken
•
•
hier auch Volltextsuche
geographische Datenbanken
•
•
fbi
h_da
strukturierte Daten, Konstruktionsdaten (CAD), ...
...
Wir unterscheiden grundsätzlich
OLTP- Online Transaction Processing
(auch häufig Operativsysteme genannt)
DSS - Decision Support Systems
• lesende und schreibende Zugriffe
• transaktionsorientiert
• online
• viele gleichzeitige Benutzer
• kurze Antwortzeiten erforderlich
• ausschließlich lesende Zugriffe
• kein Transaktionsmanagement notwendig
• Antwortzeiten unkritisch(er)
• z. B. Reports, OLAP (Online Analytical
Processing) auf Basis eines Data Warehousese, Data Mining (z.B. im CRM –
Customer Relationship Management etc.)
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 3
1.2 Nachteile selbst verwalteter Daten mit Hilfe (binärer) Dateien
•
fbi
h_da
In diesem Kapitel wird anhand grundlegender Begriffe eine strategische Einführung
darüber gegeben, warum die Verwaltung von Daten durch ein Datenbanksystem der
„Selbst-Verwaltung“ von Daten mit Hilfe von Dateien (Files) vorzuziehen ist.
Ein erstes Beispiel: Produktdaten einer Keramischen Werkstatt
Bezeichnung: Teekanne
Glasur: graublau
Dekor: Wichtel
Preis: 59,00
...
•
•
Die Datenstruktur der Produktdaten kann in einem geeigneten Datentyp definiert
werden, z.B. als structure in C, als class in Java etc.
Einzelne Datensätze bzw. Objekte können dann in binären Dateien verwaltet werden.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 4
fbi
h_da
1.2.1 ein erstes Beispiel: Dateiverwaltung in C
// Datenstruktur definieren
typedef struct {
char[20] bezeichnung;
char[20] glasur;
char[10] dekor;
double
preis; } produkt_record;
// Variable zur Verwaltung eines Datensatzes deklarieren
produkt_record buffer[1];
// File-Pointer definieren
FILE *prod_file;
Die Datenstruktur
produkt_record wird
deklariert ...
Die Datei produkt.dat
ist im Dateisystem vorhanden.
// Datei öffnen
prod_file=fopen("produkt.dat","rb");
// In einer while-Schleife alle Datensätze sequentiell bis zum Dateiende
// lesen; für jeden Datensatz prüfen, ob das Produkt das Dekor „Wichtel“ hat.
while(!feof) {
fread(buffer,sizezeof(produkt_record),1,prod_file);
if (buffer[0].dekor == "Wichtel") {
// weiterverarbeiten
... und als Maß für die Anzahl
}
der einzulesenden Bytes pro
}
Datensatz angegeben.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 5
fbi
h_da
1.2.1 ein erstes Beispiel: Objekt-(De-)Serialisierung, Java
import java.io.*;
public class MyProductsIn {
public static void main(String[] args) {
Die Datei produkt.dat
ist im Dateisystem vorhanden.
try {
// Stream-Objekt zur Verwaltung der serialisierten Objekte deklarieren
FileInputStream fis =
new FileInputStream("produkt.dat");
ObjectInputStream ois =
new ObjectInputStream(fis);
import java.io.*;
public class Produkt
implements Serializable
String
String
String
double
bezeichnung;
glasur;
dekor;
preis;
// Produkt-Objekte deserialisieren und weiterverarbeiten
Produkt prod = (Produkt)ois.readObject();
if (prod.dekor.equals("Wichtel")
// weiterverarbeiten
public Produkt(String b){
ois.close();
this.bezeichnung=b;
}
}
catch (ClassNotFoundException e) {
// ...
System.err.println(e.toString());
}
}
catch (IOException e) {
Auf der Basis der Klassendeklaration
System.err.println(e.toString());
Produkt sind in der Datei mehrere
} } }
Produkt-Objekte serialisiert gespeichert.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 6
1.2.2 Nachteile selbst verwalteter Daten mit Hilfe von (binären) Dateien (1)
•
fbi
h_da
Datenabhängigkeit
Datenabhängigkeit für den Anwendungsentwickler / End-Anwender bedeutet, dass
die Anwendungen sich um Details der Speicherstrukturen und Zugriffstechniken
kümmern müssen, also stets von Änderungen in diesen Bereichen betroffen sind.
) Datenunabhängigkeit erreicht man also dadurch, dass man eine Zugriffsebene für
den Anwender bereit stellt, die standardisiert ist und keine spezifischen Kenntnisse
der
– Speicherstrukturen,
– Zugriffstechniken und
– Lokalisierung der Daten
erfordert.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 7
fbi
h_da
1.2.2 SQL - ein erstes Beispiel für Datenunabhängigkeit – 1
Tabelle Produkt einer Beispiel-Datenbank
ProdNr
Bezeichnung
Glasur
Dekor
101112 Teetasse
graublau
Rose
9,50
102112 Untertasse
graublau
Rose
6,00
103112 Dessertteller
graublau
Rose
11,50
...
...
102222 Untertasse
türkis
Wichtel
6,00
104222 Milchkanne
türkis
Wichtel
12,00
105222 Zuckerdose
türkis
Wichtel
16,00
...
...
111332 Henkeltasse
steingrau
Fisch
11,00
112332 Müslischüssel
steingrau
Fisch
13,00
201332 Schale
steingrau
Fisch
50,00
...
...
... ...
... ...
... ...
Schestag
Datenbanken I (Bachelor)
Preis
...
...
...
Kapitel 1 - 8
fbi
h_da
1.2.2 SQL - ein erstes Beispiel für Datenunabhängigkeit – 2
Zugriffsbeispiele auf PRODUKT-Tabelle:
Finden
Einfügen
Ändern
Löschen
Retrieval /
Select
Insert
Update
Delete
Retrieval:
SELECT PRODNR, GLASUR, DEKOR
FROM PRODUKT
WHERE BEZEICHNUNG = ’Untertasse’;
102112
102222
graublau
türkis
Rose
Wichtel
Einfügen neuer Daten:
INSERT
INTO PRODUKT ( PRODNR, BEZEICHNUNG, GLASUR, DEKOR, PREIS )
VALUES ( 106222, ’Teekanne’, ’türkis’, ’Wichtels’, 59,00 ) ;
Ändern exisierender Daten:
UPDATE PRODUKT
SET
Preis = 14,00
WHERE PRODNR = 103112 ;
Löschen existierender Daten:
DELETE
FROM Produkt
WHERE PRODNR = 105222 ;
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 9
1.2.2 Nachteile selbst verwalteter Daten mit Hilfe von (binären) Dateien (2)
fbi
h_da
•
Redundanzen
Redundanzen sind Mehrfachspeicherungen identischer Informationen, die
insbesondere dann auftreten, wenn man auf der Basis selbst verwalteter Dateien die
gleichen Daten, z.B. auf verschiedenen Rechnern, mehreren Anwendern für
unterschiedliche Applikationen zur Verfügung stellt.
Durch zusätzliche Speicherkapazitäten und Verwaltungsaufwand ergeben sich
insbesondere erhöhte Kosten.
•
Inkonsistenz
Bei redundanter Datenhaltung und -verwaltung ergeben sich durch asynchrone,
dezentrale Datenpflege häufig Inkonsistenzen.
Inkonsistenzen sind widersprüchliche Informationen zum selben Objekt. Diese
können durch zentrale Datenhaltung und -verwaltung vermieden werden. Man spricht
dann auch von Integrität, bzw. davon, dass die Daten in einem integren Zustand
sind.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 10
1.2.2 Nachteile selbst verwalteter Daten mit Hilfe von (binären) Dateien (3)
fbi
h_da
•
Einschränkungen der Zugriffsrechte
Einschränkungen der Zugriffsrechte können bei der Datenverwaltung in Dateiform
höchstens auf der Basis der read-, write- und execute-Rechte des Dateisystems
berücksichtigt werden, aber nicht bis auf Feldebene einzelner Datenstrukturen bzw.
auf einzelne Datensätze.
•
Verteilung der Daten
Eine Verteilung der Daten ist nicht möglich, ohne dass der Anwender über
hardwaretechnische Details dieser Verteilung informiert sein muss (s. auch
Datenabhängigkeit).
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 11
fbi
h_da
1.3 Datenbanksysteme – eine Begriffsklärung (1)
•
Datenbanksystem
Ein Datenbanksystem ist im weitesten Sinne ein System zur rechnerunterstützten
Verwaltung von Daten und umfasst die Gesamtheit aller unten beschriebenen
Komponenten (vgl. auch die Grafik auf Folie 14 - in Anlehnung an [Date 95]).
•
Daten
Die Daten stellen in ihrer physischen Speicherform die eigentliche Datenbank dar
und bilden den Kern eines jeden Datenbanksystems.
•
Datenbank-Managementsystem (DBMS)
Die proprietäre Software eines Datenbanksystems ist das Datenbank-Managementsystem (DBMS).
Das DBMS besteht aus einer Vielzahl komplexer Dienste, die zur Verwaltung der
Daten zur Verfügung stehen und die Konsistenz der Daten zu jedem Zeitpunkt
gewährleisten. Man spricht deshalb auch von einem Datenbankserver.
Insbesondere gewährleistet das DBMS die oben erwähnte Datenunabhängigkeit. Es
stellt die Schnittstelle zwischen einer Datenbank und den Anwendern des
Datenbanksystems dar.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 12
1.3 Datenbanksysteme – eine Begriffsklärung (2)
fbi
h_da
•
Datenbanksprache
In der Regel stellt ein Datenbank-Managementsystem eine spezifische Datenbanksprache (Data-Sublanguage -DSL) zur Verfügung, die einen Zugriff auf die Daten
ermöglicht, ohne dass der Anwender selbst Kenntnisse von der internen, physischen
Datenorganisation hat (vgl. Beispiel Folien 8 und 9 dieses Kapitels).
Mit Hilfe der DSL eines Datenbanksystems kann man
–
Informationen / Daten verwalten (Insert, Update und Delete), und
–
Informationen / Daten auf Anfrage (Query) verfügbar machen (Retrieval).
•
Hardware
In Bezug auf die Hardware unterscheidet man den Plattenspeicher (mit
dazugehöriger Ein-/ Ausgabeperipherie) und den Hauptspeicher sowie die
Prozessoren zur Ausführung der Datenbank-Systemsoftware.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 13
fbi
h_da
1.3 Datenbanksysteme
Datenbanksystem
DatenbankManagementsystem
Datenbank
EndAnwender
Anwendungsprogramme
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 14
fbi
h_da
1.3 Datenbanksysteme – die verschiedenen Rollen
•
Das Management hat die zentrale, strategische Verantwortung für die Daten und
entscheidet, welche Daten wie und für wen gespeichert werden. Hierbei müssen u. U.
Datenschutzbeauftragte und Betriebsrat mit einbezogen werden.
•
Der Datenbankadministrator (DBA) hat die technische Verantwortung zur
Unterstützung der strategischen Entscheidung des Managements.
•
Der Anwendungsentwickler entwickelt DB-Applikationen unter Verwendung höherer
Programmiersprachen (Host-Sprachen) und der DSL. Der Anwendungsentwickler
arbeitet insbesondere in der Design- und der Implementierungsphase eng
zusammen mit dem DBA.
•
Der Datenanalyst (Business Analyst) bereitet Datenbeständen aus unterschiedlichen Datenquellen auf und unterstützt das Management durch den Einsatz von
Analysewerkzeugen → Decision Support (Data Warehouse / OLAP, Data Mining)
•
Der Endanwender hat Zugriff auf die Daten über GUIs, interaktive Abfragesprachen
auf Kommandoebene etc. Der Anwendungsentwickler plant und analysiert die zu
erstellende DB-Software in enger Zusammenarbeit mit dem Endanwender.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 15
1.3 Datenbanksysteme – Zusammenfassung (1)
•
•
•
fbi
h_da
Ein Datenbank-Managementsystem (DBMS) ist ein System zur softwaretechnischen Unterstützung der Verwaltung von Daten, das zur Vermeidung aller unter
1.2 genannten Nachteile dient:
- Reduktion von Redundanzen,
- Integritätssicherung (Vermeidung von Inkonsistenzen),
- Möglichkeit der Datenverteilung,
- Einschränkung der Zugriffsrechte bis auf Feld- und Record-/ObjektEbene,
- Datenunabhängigkeit.
In der Regel steht für ein DBMS eine spezifische Datenbanksprache (DataSublanguage - DSL) zur Verfügung, die einen Zugriff auf die Daten ermöglicht, ohne
dass der Anwender selbst Kenntnisse von der internen, physischen
Datenorganisation hat. Diese DSL leistet insbesondere die oben erwähnte
Datenunabhängigkeit.
Ein solches System kennt und berücksichtigt nicht nur die Speicherstrukturen der
Daten (vgl. Kapitel 2) sondern auch die Beziehungen der Daten untereinander (vgl.
Kapitel 4).
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 16
1.3 Datenbanksysteme – Zusammenfassung (2)
•
fbi
h_da
Wir unterscheiden grundsätzlich zwei Arten von Daten:
– persistente Daten, die „permanent“, also fortdauernd auf einem
Speichermedium gespeichert sind,
– transiente Daten, „flüchtige“ Daten, die nur aktuell im Hauptspeicher
vorhanden sind, aber aus persistenten Daten abgeleitet sind oder zu
persistenten Daten werden können.
) Eine Datenbank ist also eine Ansammlung persistenter Daten, die unter
Verfügbarkeit der o. g. Vorteile von verschiedensten Anwendungssystemen
gleichzeitig verwendet werden können.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 17
fbi
h_da
1.4 Übersicht über verschieden Datenbankmodelle (1)
•
hierarchische Datenbanken
Die Daten lassen sich über hierarchische Strukturen (Baumstrukturen) in Beziehung
zueinander setzen.
Einsatzbereiche heute: Großrechnerbereich (Mainframes) von Banken,
Versicherungen etc., z.B. IMS-DB (Information Management System).
•
Netzwerk-Datenbanken
Die zugrunde liegende Struktur stellt einen Graphen mit beliebigen Navigationsmöglichkeiten über Cursortabellen dar.
Heute nicht mehr häufig im Einsatz. Beispiel für eine Netzwerk-DB: CODASYL.
•
relationale Datenbanken
Die mathematische Basis dieses Datenbank-Modells ist die Relationenalgebra.
Datensätze werden als „Relationen“ (Tupel gleicher Länge) angesehen ⇒ Als
Speicher- und Darstellungsform bieten sich Tabellen an.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 18
fbi
h_da
1.4 Übersicht über verschieden Datenbankmodelle (2)
Die standardisierte Abfragesprache für relationale Datenbanken ist SQL (Structured
Query Language).
Im Bereich relationaler Datenbanken unterscheidet man
- Datenbanken aus dem „personal“ Bereich, wie MS-ACCESS und FoxPro, und
- Datenbankserver wie z.B. DB2 (IBM), Oracle, Sybase, Informix (IBM), Ingres,
MS SQL-Server, MySQL, PostgreSQL, Adabas etc.
•
objektorientierte Datenbanken
Diese Datenbanken haben sich aus objektorientierten Sprachen entwickelt.
Gespeichert werden Objekte auf der Basis objektorientierter Klassenstrukturen mit
Attributen und Methoden, die i.d.R. komplexere Datentypen als die relationalen
Datenbanken zulassen.
Navigation ist möglich über direkte Referenz der Objekte durch Object Ids (OID =
physische Adresse, pointer).
Beispiele objekt-orientierter Datenbanken: ObjectStore, Versant, FastObjects
(Poet), Jasmine, etc.
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 19
fbi
h_da
1.4 Übersicht über verschiedene Datenbankmodelle (3)
•
objekt-relationale Datenbanken
Dies sind relationale Datenbanken mit objektorientierten Erweiterungen. Sie werden
mittlerweile von allen Herstellern großer relationaler Systeme angeboten.
Ziel der objekt-relationalen Datenbanken ist das „Mapping“ objektorientierter
Datenstrukturen aus dem Applikationsbereich auf relationale Datenstrukturen in der
Persistenzschicht.
•
weitere Nicht-Standard Datenbanken
Neben den objektorientierten und objekt-relationalen Datenbanken zählen zu den
Nicht-Standard Datenbanken u.a. die
– XML-Datenbanken (wie z.B. Tamino von der Software AG)
– geographische Datenbanken
– deduktive Datenbanken
Die parallele Verwaltung von relationalen Schemata und XML-Schemata ermöglicht
die neueste Version DB2 Viper (IBM).
Schestag
Datenbanken I (Bachelor)
Kapitel 1 - 20
fbi
h_da
2 Interne Datenorganisation
2.1 Aufbau eines Speichermediums - Pages
2.2 Datenorganisation
2.3 Indexe und Bäume
2.4 Hash-Verfahren
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 1
fbi
h_da
2 Interne Datenorganisation
•
Die interne Datenorganisation sollte so eingerichtet sein, dass die Anzahl der
Plattenzugriffe bei der Recherche oder der Manipulation von Daten minimal ist.
•
Hierfür wird die Anordnung der gespeicherten Daten auf der Platte so optimiert, dass
der gewünschte Datensatz durch möglichst wenige I/Os gefunden wird. Eine solche
Anordnung nennen wir Speicherstruktur.
•
Verschiedene Speicherstrukturen haben verschiedene Performance-Charakteristika,
die für jeweils unterschiedliche Applikationen / Datenbankbereiche von Vorteil sein
können.
•
Eine optimale Datenorganisation kann nur erzielt werden, wenn die Datenstrukturen,
statistische Informationen zum Datenvolumen sowie Ausprägungen innerhalb der
Wertebereiche bekannt sind und berücksichtigt werden (⇒ Optimizer, Systemkatalog,
Kapitel 3).
Esgibt
gibtkeine
keineSpeicherstruktur,
Speicherstruktur,
Es
dieoptimal
optimalfür
füralle
alleApplikationen
Applikationenist!
ist!
die
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 2
fbi
h_da
2.1 Aufbau eines Speichermediums – Pages (1)
Magnetplattengerät
mehrere Platten
(Oberflächenspeicherung,
beidseitige Speicherung)
Spuren,
die konzentrische Kreise
um die Drehachse bilden
Lese- / Schreibkopf
a
b
Sektoren *)
(kleinste Einheiten, die
das DBMS adressieren und
auf die es zugreifen kann)
Zylinder
(unmittelbar übereinander liegende Spuren)
•
•
Pages (Datenseiten, Datenblöcke) nennt man die Zusammenfassung von mehreren
benachbarten Sektoren zu einer Verarbeitungseinheit (Größe einer Page: zwischen
512 Bytes und 8k Bytes).
In einer Page können ein oder mehrere vollständige Datensätze, Teile von
Datensätzen oder Indexeinträge gespeichert werden (vgl. 2.3).
*) Sektorenadresse: Angaben zu Zylinder, Plattenoberfläche und Nr. des Sektors auf der Spur
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 3
fbi
h_da
2.1 Aufbau eines Speichermediums – Pages (2)
•
Zum Lesen der Daten muss das DBMS eine Page komplett in den Hauptspeicher
laden. Eine Page ist die kleinste physische Einheit, die vom DBMS in den
Hauptspeicher geladen werden kann (und ist deshalb immer ≥ der kleinsten
physischen Einheit, die das Betriebssystem mit einem Zugriff in den Hauptspeicher
laden kann).
⇒ Pages sind grundlegende Einheiten für das Lesen und Transferieren von Daten.
•
Adressierung von Datenblöcken (Pointer)
Die Adressierung einer Page erfolgt über physische Adressen (relevant für das
Betriebssystem) und logische Adressen (relevant für das DBMS).
Ein Pointer kann sich nicht nur auf eine Page beziehen, sondern auch auf einen
bestimmten Datensatz innerhalb einer Page. Man nennt einen solchen Pointer dann
auch Record-ID (RID):
RID = Adresse der Page + Aufsetzpunkt für den Datensatz innerhalb der Page
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 4
fbi
h_da
2.2 Datenorganisation
•
Beim Zugriff auf die Daten einer Datenbank spielt neben dem Mindest-Füllgrad der
Pages auch die Organisationsform der zugrunde liegenden Daten eine Rolle.
•
Unter der Organisationsform von Daten versteht man die Form des Abspeicherns
und die Möglichkeiten des Zugriffs.
•
Im folgenden werden die Formen der
- sequentiellen Organisation mit linearer Suche,
- sequentiellen Organisation mit binärer Suche,
- der index-sequentielle Organisation (ISAM)
bis hin zum Begriff des Index in einem Datenbanksystem untersucht und mit ihren
Vor- und Nachteilen dargestellt.
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 5
fbi
h_da
2.2.1 Die sequentielle Organisation – lineare Suche
•
Liegt eine Datei in unsortierter Form vor, so erfordert die Suche von Daten das
sequentielle Lesen der Datei - die am wenigsten performante Form des Zugriffs:
ProdNr
102112
104222
201332
111332
106222
...
•
•
ProduktBez
Untertasse
Milchkanne
Schale
Henkeltasse
Teekanne
...
Glasur
graublau
türkis
steingrau
steingrau
türkis
...
Sequentielle Organisation
einer Datei
Dekor Preis € Record ID
Rose
6,00 Record 1
Wichtel
12,00 Record 2
Fisch
50,00 Record 3
Fisch
11,00 Record 4
Wichtel
59,00 Record 5
...
...
...
Die Daten werden fortlaufend (sequentiell) in der Reihenfolge ihrer Eingabe
gespeichert und können nur in dieser Reihenfolge wieder gelesen und verarbeitet
werden.
Der Aufwand für (Lineare) Suche in einem unsortierten Dateien mit n Datensätzen
beträgt O(n), d.h. im „worst case“ müssen alle Datensätze durchlaufen werden, bis
der gesuchte Satz gefunden ist.
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 6
fbi
h_da
2.2.1 Die sequentielle Organisation – binäre Suche (1)
•
Verbesserungsansatz gegenüber linearer Suche: Die Datei wird nach einem
Schlüssel sortiert abgespeichert, mehrere Records werden in einer Page
untergebracht und die Adresse der Pages in einem Pointer verfügbar gemacht.
eindeutiger
Schlüssel
ProdNr
101112
102112
103112
...
103222
104222
105222
...
111332
112332
201332
...
Schestag
ProduktBez
Teetasse
Untertasse
Dessertteller
...
Desserteller
Milchkanne
Zuckerdose
...
Henkeltasse
Müslischüssel
Schale
...
Glasur
graublau
graublau
graublau
...
türkis
türkis
türkis
...
steingrau
steingrau
steingrau
...
Dekor
Preis € Page ID
Rose
9,50
Page 1
Rose
6,00
Rose
11,50
...
...
Page 2
Wichtel
6,00
Page 3
Wichtel
12,00
Wichtel
16,00
...
...
Page 4
Fisch
11,00
Page 5
Fisch
13,00
Fisch
50,00
...
...
Page 6
Datenbanken I (Bachelor)
Kapitel 2 - 7
fbi
h_da
2.2.1 Die sequentielle Organisation – binäre Suche (2)
) Vorteil: Binäre Suche ist möglich, in der jeweiligen Page müssen die Daten jedoch
immer noch sequentiell gelesen werden. Der Aufwand für Binäre Suche in einer
sortierten Datei mit n Records beträgt O(log2(n)) - s. auch Anhang A
ABER: Das Update in einer Datei, die nach einem Schlüssel sortiert ist, ist mit
erheblichen Aufwänden verbunden, insbesondere wenn beim Einfügen / Löschen von
Datensätzen Pagegrenzen überschritten werden!
→ Verbesserungsansatz:
Zu Attributen, die in einer Datei besonders oft als Selektionskriterien verwendet
werden, wird eine zweite, sortierte Datei angelegt, die zu jeder Ausprägung des
Attributes den Pointer auf die entsprechende Page bzw. den zugehörigen Record
enthält. Diese Datei nennt man Index.
Als Plural im Kontext mit Datenbanken spricht man häufig von Indexen.
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 8
fbi
h_da
2.2.2 Die index-sequentielle Organisation (1)
EinIndex
Indexist
istimmer
immersortiert
sortiertnach
nachdem
demihm
ihmzugeordneten
zugeordnetenAttribut
Attributund
und
Ein
deshalbgeeignet,
geeignet,binäre
binäreSuche
Suchezu
zuunterstützen.
unterstützen.
deshalb
Index für die eindeutigen Werte
des Attributes ProdNr
Page ID
ProdNr
101112
...
103222
...
111332
...
Schestag
1
2
3
4
5
6
Index für die nicht notwendig eindeutigen Werte des Attributes Dekor
Record ID
Dekor
Fisch
Fisch
...
Rose
...
Wichtel
Wichtel
...
Datenbanken I (Bachelor)
3
4
...
1
...
2
5
...
Kapitel 2 - 9
2.2.2 Die index-sequentielle Organisation (2)
fbi
h_da
EinIndex
Indexerhöht
erhöhtdie
dieGeschwindigkeit
Geschwindigkeitbeim
beimSuchen,
Suchen,
Ein
aberer
erreduziert
reduziertdie
dieGeschwindigkeit
Geschwindigkeitbei
beiUpdates.
Updates.
aber
•
Bei jedem Hinzufügen eines neuen Records oder beim Ändern der entsprechenden
Attribute wird auch der Index modifiziert. Diese Updates erfolgen analog den
entsprechenden Vorgängen in sortierten Dateien.
•
Zu einer Datei kann es beliebig viele Indexe geben. Ein Index kann auch aus
mehreren Attributen eines Records zusammengesetzt sein (vgl. Beispiele auf Folie
11 dieses Kapitels).
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 10
2.2.2 Die index-sequentielle Organisation – Beispiele von Indexen (1)
•
fbi
h_da
Beispiel für einen Index auf dem Attribut Glasur für die Produkt-Datei
Glasur
(Index)
Schestag
Produkt-Datei
(Daten)
graublau
3011 Suppenteller türkis
graublau
1012 Teetasse
graublau Rose
graublau
3012 Essteller
türkis
türkis
1013 Untertasse
graublau Rose
...
türkis
1011 Teekanne
graublau Rose
...
Datenbanken I (Bachelor)
Fisch ...
...
Fisch ...
Kapitel 2 - 11
fbi
h_da
2.2.2 Die index-sequentielle Organisation – Beispiele von Indexen (2)
•
Beispiel für je einen Index auf dem Attribut Glasur und auf dem Attribut Dekor für
die Produkt-Datei
Glasur
(Index)
Schestag
Produkt-Datei
(Daten)
Dekor
(Index)
graublau
3011 Suppenteller türkis
graublau
1012 Teetasse
graublau Rose
graublau
3012 Essteller
türkis
türkis
1013 Untertasse
graublau Rose
...
Rose
türkis
1011 Teekanne
graublau Rose
...
Rose
Datenbanken I (Bachelor)
Fisch ...
Fisch
...
Fisch
Fisch ...
Rose
Kapitel 2 - 12
2.2.2 Die index-sequentielle Organisation – Beispiele von Indexen (3)
•
fbi
h_da
Beispiel für einen Index über die zwei Attribute Glasur und Dekor für die ProduktDatei
Glasur/Dekor
(Index)
Schestag
Produkt-Datei
(Daten)
graublau/Rose
3011 Suppenteller türkis
graublau/Rose
1012 Teetasse
graublau Rose
graublau/Rose
3012 Essteller
türkis
türkis/Fisch
1013 Untertasse
graublau Rose
...
türkis/Fisch
1011 Teekanne
graublau Rose
...
Datenbanken I (Bachelor)
Fisch ...
...
Fisch ...
Kapitel 2 - 13
fbi
h_da
2.2.2 Die index-sequentielle Organisation – dünne und dichte Indexe (1)
•
Man unterscheidet zwei Arten von Indexen, je nach dem, ob es sich bei dem
zugrunde liegenden Schlüssel um einen eindeutigen Schlüssel handelt (dünner
Index) oder um einen Schlüssel, dessen Werte in der Datei mehrmals vorkommen
können (dichter Index).
Beispiel auf Folie 8: eindeutiger Schlüssel ProdNr, Schlüssel mit Mehrfachausprägungen Dekor.
•
dünner Index (non dense)
Die Index-Datei enthält nicht für jeden gespeicherten Record einen Eintrag, sondern
nur für jede Page (Datenblock).
⇒ Die Index-Datei hat weniger Datensätze als die eigentliche Datei (sie ist also
„dünner“)!
Um den gesuchten Record in einer Page zu finden, muss die Page im Hauptspeicher
noch sequentiell durchsucht werden.
Der Index enthält jeweils den ersten (oder letzten) Schlüssel, der in einer Page
vorkommt, und dessen Adresse (Pagepointer).
Dünne Indexe werden im allgemeinen für die Primärschlüssel der Records einer
Datei erstellt (Primärindex).
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 14
2.2.2 Die index-sequentielle Organisation – dünne und dichte Indexe (2)
•
fbi
h_da
Beispiel für einen dünnen Index auf dem Primärschlüsselfeld ProdNr der ProduktDatei. Der Index enthält jeweils den ersten Schlüssel, der in einer Page vorkommt.
ProdNr (Index)
Produkt-Datei (Daten)
1010
PID 1
RID 1
3011 Suppenteller türkis
2010
PID 2
RID 2
1012 Teetasse
graublau ...
3010
PID 3
RID 3
3012 Essteller
türkis
RID 4
1013 Untertasse
graublau ...
RID 5
1011 Teekanne
graublau ..
PID 1
1010, ...; 1011, 5;
1012, 2;1013, 4;
...
Schestag
...
...
PID 3
PID 2
2010, ...; ...
Datenbanken I (Bachelor)
3010, ...; 3011, 1;
3012, 3; ...
Kapitel 2 - 15
fbi
h_da
2.2.2 Die index-sequentielle Organisation – dünne und dichte Indexe (3)
•
dichter Index (dense)
Die Index-Datei enthält für alle Records einen eigenen Index-Eintrag.
⇒ Die Index-Datei hat genau so viele Datensätze, wie die eigentliche Datei (sie ist
also genau so „dicht“ wie die eigentliche Datei)!
Die Suche im dichten Index erfolgt analog einer Suche in sortierten Dateien.
Der Index enthält jeweils den Schlüsselwert und die Adresse des zugehörigen
Records (Record-pointer, RID).
Dichte Indexe werden im allgemeinen für die Sekundärschlüssel der Records einer
Datei erstellt (Sekundärindex).
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 16
fbi
h_da
2.2.2 Die index-sequentielle Organisation – Zusammenfassung
•
Eigenschaften der index-sequentiellen Organisation
Indexed-sequentiell Access Method - ISAM
–
–
–
Ein Index einer Datei wird immer nach den Schlüsselwerten sortiert gespeichert.
Pro Indexeintrag bzw. Schlüsselwert sind die Adressen der Pages und Records auf dem
Speichermedium angegeben.
Bei dünnen, pageorientierten Indexen muss die Page sequentiell durchsucht werden, um
einen bestimmten Record zu lokalisieren.
•
Nachteil: Mit zunehmender Datei-Größe nimmt die Performance von Anfrage- und
Update-Operationen ab, insbesondere bei dichten Indexen.
•
Lösungsansatz: Wird die Index-Datei selbst zu groß, so kann man für den Index
wieder einen Index anlegen. Man erhält so einen mehrstufiger Index. Dies ist
natürlich nur bei dünnenIndexen ein Gewinn!
) Eine solche Indizierung kann beliebig oft weiter geführt werden. Man erhält dann eine
Baumstruktur, die in der Praxis i.d.R. als B-Baum (balancierter Baum, Bayer-Baum)
realisiert wird, um eine Homogenität der Zugriffspfade zu erreichen.
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 17
fbi
h_da
2.3 Indexe und Bäume
•
Ein mehrstufiger Index als Baumstruktur besitzt die folgenden Komponenten:
–
Die unterste Ebene eines mehrstufigen Index (Indexbaum) nennt man Blätter des Baumes
(sie entsprechen den Records der Datei).
Die Adressverweise auf bestimmte Pages des Speichers nennt man Knoten.
Der oberste Knoten in der Hierarchie, der keinen Vorgänger mehr hat, heißt Wurzel.
Für einen Knoten x nennen wir einen darunter liegenden Knoten Sohn, einen darüber
liegenden Knoten Vater (bzw. child und parent).
–
–
–
65
32
97
Schestag
Datenbanken I (Bachelor)
109
117
130
119
125
132
102
112
93
80
103
108
47
51
58
74
99
43
68
122
106
95
53
81
89
45
87
71
78
39
40
36
38
35
33
16
20
27
24
14
13
11
10
5
8
1
3
48
37
66
70
72
17
7
114
76
115
41
75
12
Kapitel 2 - 18
fbi
h_da
2.3 Indexe und Bäume – B-Bäume (1)
•
Ein B-Baum (Bayer-Baum (1972), balancierter Baum) ist ein mehrstufiger Index, bei
dem alle Pfade von der Wurzel zu den Blättern gleich lang sind, ein B-Baum ist also
immer höhenbalanciert.
•
Ein B-Baum der Ordnung m hat die folgenden Eigenschaften:
– Alle Knoten sind gleich groß (aber sie müssen nicht alle immer gleich viele
Einträge haben!).
– Jeder Knoten enthält höchstens 2m Records.
– Jeder Knoten - mit Ausnahme der Wurzel - enthält mindestens m Records.
– Die Wurzel enthält maximal 2m Records und mindestens einen Record.
– Jeder Record besteht aus einem Schlüssel- und einem nicht-Schlüssel-Anteil.
– Ein Knoten - mit Ausnahme von Wurzel und Blättern - hat n+1 Nachfolgeknoten,
wenn er n Schlüssel enthält (m ≤ n ≤ 2m).
a
<a
Schestag
Datenbanken I (Bachelor)
≥a, <b
b
c
≥b, <c
n=3
≥c
Kapitel 2 - 19
fbi
h_da
2.3 Indexe und Bäume – B-Bäume (2)
•
Um in einem B-Baum mit n Knoten der Ordnung m einen Wert zu suchen, muss man
höchstens logm+1(n)-mal auf die Platte zugreifen.
•
In einem B-Baum werden neben dem Suchen alle Arten von Update-Operationen
ausgeführt (insert, update, delete). Bei Update-Operationen muss jeweils für die
Balanciertheit des Baumes gesorgt werden. ⇒ vgl. Hörsaalübung
•
⇒ Algorithmen zum Suchen, Einfügen und Löschen in B-Bäumen: vgl. Anhang B.
•
Nachteil der Datenverwaltung über B-Bäume:
In der Regel sind beim Durchlaufen der Pfade mehrere I/Os auf externen Speicher
notwendig.
Eine alternative Methode zur Datenverwaltung mit Hilfe von Indexen sind die HashVerfahren:
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 20
fbi
h_da
2.4 Hash-Verfahren (1)
•
Die Record-Adressen werden über einen geeigneten Algorithmus (Hash-Funktion)
aufgrund des Schlüsselwertes unmittelbar berechnet.
•
Eine Hash-Funktion sollte
– „einfach“ zu berechnen sein, und
– die Menge der Schlüsselwerte möglichst gleichmäßig und zufällig auf die Menge
der verfügbaren Adressen abbilden.
Menge der
Speicherplätze (Adressen)
Schlüsselmenge (Keys k)
logisch
{1011, 1012, 1013, ...
1021, 1022, 1023, ...
3011, 3012, ...}
Schestag
physisch
Hash-Funktion h(k)
Datenbanken I (Bachelor)
Kapitel 2 - 21
fbi
h_da
2.4 Hash-Verfahren (2)
•
Voraussetzung hierfür sind jedoch Datenbestände, die relativ „statisch“ sind, und bei
denen insbesondere selten Löschoperationen auftreten.
Hash-Verfahren eignen sich also nicht für sehr „dynamische“ Datenbestände.
•
Die „bekannteste“ Hash-Funktion ist die Modulo-Funktion (Divisions-RestVerfahren):
h(k) = k mod p
k=Schlüsselwert, p=Anzahl der vorhandenen Adressen
•
Die Modulo-Funktion lässt sich nur auf ganzzahlige numerische Schlüssel anwenden.
Alphanumerische oder dezimale Schlüssel müssen so umgewandelt werden, dass
sie ebenfalls in ganzzahliger, numerischer Form vorliegen.
Beispiel:
p=1000, k={27, 489, 1.020, 2.027, ...}
Schestag
⇒
h(27) = 27
h(489) = 489
h(1.020) = 20
h(3027) = 27 ...
Datenbanken I (Bachelor)
Kapitel 2 - 22
fbi
h_da
2.4 Hash-Verfahren (3)
Kollisionsbehandlung
(1) Für jede Adresse wird ein Überlaufbereich vorgesehen, und gleiche HashFunktionswerte werden durch Pointer linear verkettet.
⇒ Suche nach einem Record entspricht der Berechnung des Hash-Funktionswertes
und anschließender sequentieller Suche nach dem Schlüssel.
Nachteil: Dieses Verfahren benötigt u.U. viel Speicherplatz und ist häufig ineffizient in
der Suche.
(2) Offene Hash-Verfahren
Im Fall einer Kollision wird für den betroffenen Record durch Anwenden einer zweiten
Hash-Funktion eine Ersatzadresse ermittelt. Dieses Verfahren kann - falls nötig beliebig oft fortgeführt werden, und Adressen aus kollidierenden Bereichen können
durch lineare Listen verkettet werden (Kollisionsketten).
Die Berechnung des ersten Hash-Funktionswertes bezeichnet man als Streuen, die
Berechnung der Ersatzwerte als Sondieren.
Beispiel:
Schestag
hi(k)=(h(k)+c·i) mod m, c=const.,
hi(k)=(h(k)+i2) mod m,
lineares Sondieren
quadratisches Sondieren
Datenbanken I (Bachelor)
Kapitel 2 - 23
fbi
h_da
Anhang A: Binäre Suche in Arrays – Algorithmus ...
Der Algorithmus
a[n] sei ein geordnetes Array mit n Elementen, d.h. anfangs 0 = min (Index-Minimum),
n-1 = max (Index-Maximum).
x sei der gesuchte Wert. x wird gesucht im Bereich a[min] ... a[max].
Wähle einen Index pos zwischen min und max, idealerweise [(min+max)/2], wobei
[ ] die Gauss-Klammer darstellt.
Folgende Schritte werden wiederholt durchgeführt:
• a[pos] > x ⇒ suche weiter im Bereich a[min] ... a[pos-1]
• a[pos] < x ⇒ suche weiter im Bereich a[pos+1] ... a[max]
• a[pos] = x ⇒ Der Wert x befindet sich im Array bei Index pos.
Der Wert x ist nicht im Array enthalten, wenn min > max erreicht wird.
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 24
fbi
h_da
Anhang A: Binäre Suche in Arrays – ... und Struktogramm
Das Struktogramm
gefunden=FALSE
min=0
max=n-1
solange ( min <= max ) && ( ! gefunden )
pos = [( min + max ) / 2]
a[pos] > x ?
nein
ja
a [pos] < x ?
max=pos-1
ja
min=pos+1
Schestag
Datenbanken I (Bachelor)
nein
a[pos] = x
gefunden=TRUE
Kapitel 2 - 25
Anhang A: Binäre Suche in Arrays – Abschätzung des Rechenaufwandes 1
fbi
h_da
•
Wählt man für den Start-Index pos zwischen min und max den Wert „in der Mitte“, so
halbiert sich der Aufwand für die Lösung des Problems bei jedem Schritt.
⇒ eine Verdoppelung der Arraygröße bewirkt beim linearen Suchen eine Verdoppelung
des Aufwandes, beim binären Suchen eine Erhöhung des Aufwandes um einen
Schritt!
•
Einen Bereich von n Elementen kann man höchstens log2(n) mal halbieren.*)
•
Zu jeder natürlichen Zahl n gibt es eine natürliche Zahl m, sodass n zwischen den
Zahlen 2m und 2m+1 liegt, d.h. 2m ≤ n ≤ 2m+1 .
*) Zur Erinnerung: log2(n) = y :⇔ n = 2y, z.B. log2(32) = 5, denn 25 = 32.
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 26
Anhang A: Binäre Suche in Arrays – Abschätzung des Rechenaufwandes 2
•
fbi
h_da
Beispiel
Es sei n=19 ⇒ m =4, denn 24 = 16 < 19 < 32 = 24+1 = 25.
) Um in einem Array mit 19 Elementen einen vorgegebenen Wert zu finden, benötigen
wir maximal 4 Schritte:
n=19
n=9
n=4
n=2
n=1
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 27
fbi
h_da
Anhang A: Binäre Suche in Arrays – Komplexität von Algorithmen
•
Die Komplexität f(n) eines Algorithmus ist i.d.R. funktional abhängig von einer
„Leitgröße“ n.
– Beim linearen Suchen können wir lineare Abhängigkeit beobachten,
– beim binären Suchen dagegen logarithmische Abhängigkeit:
best case
lineare Suche
1
binäre Suche
1
average case
n/2
log2(n)-1
worst case
n
log2(n)
•
Es ist schwierig, den genauen Aufwand zu bestimmen. Man schätzt deshalb für große n den
Aufwand durch eine Funktion g(n) ab, sodass gilt: f(n) ≤ c ·g(n), mit einer Konstanten c.
Man sagt, „f(n) ist höchstens von der Ordnung g(n)“ und schreibt f(n) = O(g(n)) („O-Notation“).
Es gilt also: n/2 entspricht O(n), n entspricht O(n),
log2(n)-1 entspricht O(log(n)) und log2(n) entspricht O(log(n)).
•
Häufige Komplexitäten von Algorithmen sind:
konstant, linear, polynomial (alle Komplexitäten der Form n2-quadratisch, n3-kubisch,
n4,...), logarithmisch, log-linear und exponentiell.
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 28
Anhang B: Algorithmus zum Suchen in B-Bäumen
fbi
h_da
Suchen eines Schlüssels s im B-Baum
1. Prüfe, beginnend bei der Wurzel, ob s im gerade betrachteten Knoten x enthalten ist.
Falls ja ⇒ fertig.
Falls nein ⇒ 2.
2. Prüfe, ob x ein Blatt (= Knoten ohne “Söhne”) ist.
Falls ja ⇒ erfolgloses Ende der Suche.
Falls nein ⇒ 3.
3. Stelle fest, zwischen welchen Schlüsseln si-1 und si des Knotens x der Schlüssel s liegt
(bzw. ob s < s1 oder s > sk ist) und setze die
Suche danach mit 1. beim Knoten x.sohn[i] fort.
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 29
Anhang B: Algorithmus zum Einfügen in B-Bäumen
fbi
h_da
Einfügen eines Schlüssels s in einen B-Baum
Das Einfügen eines Schlüssels geschieht grundsätzlich in den Blättern.
1. Durchlaufe den B-Baum mit dem neu einzutragenden Schlüssel wie beim Suchen, bis
das Blatt gefunden wird, wo der Schlüssel einzutragen ist. Die Zahl der Schlüssel je
Knoten (mit Ausnahme der Wurzel) muss zwischen m und 2m liegen.
2.a Anzahl der Schlüssel im Knoten < 2m
⇒ Einfügen erfolgreich beendet.
2.b Anzahl der Schlüssel im Knoten = 2m
⇒ es entsteht ein Überlauf, da das Blatt nach Einfügen 2m + 1 Schlüssel enthalten
würde.
⇒ Teile den Knoten in zwei Knoten zu je m Schlüsseln. Der mittlere Schlüssel des
Knoten wird vom „Vater“ aufgenommen; die beiden Zeiger rechts und links dieses
Schlüssels im „Vater“ zeigen dann auf das alte und das neue darunterliegende Blatt.
Läuft auch der Vaterknoten über, so muß dieser ebenfalls in zwei Knoten aufgeteilt
werden etc.
3. Läuft die Wurzel über, dann wird sie aufgespalten und eine neue Wurzel angelegt.
⇒ Der B-Baum ist dann um eine Stufe gewachsen.
B-Bäume wachsen von den Blättern zur Wurzel hin!
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 30
Anhang B: Algorithmus zum Löschen in B-Bäumen
fbi
h_da
Löschen eines Schlüssels s in einem B-Baum
1. Suche den Knoten x, in dem s enthalten ist.
2. x ist ein Blatt ⇒ lösche s (ggf. muß ein Unterlauf bereinigt werden, s.u.),
andernfalls 3.
3. Ermittle den nächstgrößeren Schlüssel s’ zu s in einem Blatt des Baumes.
4. Ersetze s durch s’ und lösche s’ im Blatt x’. Enthält das Blatt x’ weiterhin ≥ m
Schlüssel, so ist das Löschen beendet; andernfalls 5.
5. In x’ stehen nur noch (m-1) Schlüssel, man spricht von einem Unterlauf.
Fasse x’ und einen benachbarten Knoten x’’, der den selben Vater wie x’ hat, zu
einem neuen Knoten zusammen und übernehme dabei denjenigen Schlüssel aus
dem Vaterknoten, dessen beide Zeiger auf die benachbarten Knoten gezeigt haben.
6.a Ist der neue Knoten zu groß, muß er entsprechend dem Überlaufverfahren (s.
Einfügen) wieder in zwei gleichgroße Knoten aufgeteilt werden, wobei der mittlere
Schlüssel vom „Vater“ aufgenommen wird.
6.b Ist der „Vater“ beim Zusammenfassen von x’ und x’’ zu klein geworden, so muß
auch er mit einem benachbarten Knoten zusammengefaßt werden etc.
Dieser Prozeß kann sich bis zur Wurzel fortsetzen. Enthält die Wurzel vor dem Zusammenfassen nur einen Schlüssel, so verringert sich die Höhe des Baumes um 1.
Die Höhe eines B-Baumes kann sich beim Löschen verringern!
Schestag
Datenbanken I (Bachelor)
Kapitel 2 - 31
Herunterladen