19.11.2013 Aufrufe

Ein Einblick in das Gebiet der Verteilten Datenbanksysteme

Ein Einblick in das Gebiet der Verteilten Datenbanksysteme

Ein Einblick in das Gebiet der Verteilten Datenbanksysteme

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Sem<strong>in</strong>ar Programmiersprachen und Programmiersysteme<br />

<strong>E<strong>in</strong></strong> <strong>E<strong>in</strong></strong>blick <strong>in</strong> <strong>das</strong> <strong>Gebiet</strong> <strong>der</strong> <strong>Verteilten</strong><br />

<strong>Datenbanksysteme</strong><br />

Bettual Richter<br />

8. Februar 2010<br />

Betreuer: Prof. Frank Huch<br />

1


Inhaltsverzeichnis<br />

1 <strong>E<strong>in</strong></strong>leitung 3<br />

2 Grundlagen 3<br />

2.1 <strong>Datenbanksysteme</strong> . . . . . . . . . . . . . . . . . . . . . . 3<br />

2.1.1 Relationale Datenbanken . . . . . . . . . . . . . . . 4<br />

2.1.2 Operationen . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.1.3 Transaktionen . . . . . . . . . . . . . . . . . . . . . 6<br />

2.2 Rechnernetze . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

3 Architektur verteilter <strong>Datenbanksysteme</strong> 9<br />

3.1 Katalog des Systems . . . . . . . . . . . . . . . . . . . . . 10<br />

3.2 Fragmentierung und Allokation . . . . . . . . . . . . . . . 11<br />

3.3 Klassifikation nach Verteilungsgrad . . . . . . . . . . . . . 12<br />

4 Umsetzung e<strong>in</strong>iger Konzepte 14<br />

4.1 Client/Server-<strong>Datenbanksysteme</strong> . . . . . . . . . . . . . . 14<br />

4.1.1 Funktional gleichgestellte DBS . . . . . . . . . . . . 15<br />

5 Anfragebearbeitung und Transaktionsverwaltung 16<br />

5.1 Anfragebearbeitung . . . . . . . . . . . . . . . . . . . . . . 16<br />

5.2 Transaktionsverwaltung . . . . . . . . . . . . . . . . . . . 17<br />

5.3 Drei-Phasen-Commit(3PC) . . . . . . . . . . . . . . . . . . 19<br />

6 Fazit und Ausblick 20<br />

2


1 <strong>E<strong>in</strong></strong>leitung<br />

Aufgrund <strong>der</strong> s<strong>in</strong>kenden Hardwarepreise <strong>in</strong> den letzten Jahren steigt <strong>das</strong><br />

Interesse an verteilten Systemen zunehmend. Die Anfor<strong>der</strong>ungen e<strong>in</strong>es Unternehmens<br />

bezüglich Leistungsfähigkeit, Kosteneffektivität und Verfügbarkeit<br />

führen bei zentralistisch organisierten Informationssystemen schnell zu unverhältnismäßig<br />

hohen Ausgaben. Es ist auch leicht nachvollziehbar, <strong>das</strong>s<br />

e<strong>in</strong> e<strong>in</strong>zelner Rechner schnell zu e<strong>in</strong>em Systemengpaß werden kann und<br />

die Antwortzeiten beim Systemzugriff darunter leiden.<br />

Der <strong>E<strong>in</strong></strong>satz e<strong>in</strong>er verteilten Systemstruktur stellt h<strong>in</strong>gegen die Kapazität<br />

mehrerer Rechner zur Verfügung und die Kapazität des Gesamtsystems<br />

kann grundsätzlich durch Erhöhung <strong>der</strong> Rechnerzahl vergleichweise<br />

kostengünstig gesteigert werden.<br />

Beson<strong>der</strong>s im Bereich <strong>der</strong> Datenverwaltung kann e<strong>in</strong>e dezentrale Organisation<br />

<strong>der</strong> Informationssysteme im Vergleich zu zentralen Rechnenzentren<br />

punkten. In dieser Arbeit wollen wir e<strong>in</strong>en Überblick über die Konzepte<br />

solcher verteilten Datenverwaltungssysteme schaffen.<br />

2 Grundlagen<br />

In diesem Abschnitt betrachten wir zunächst grundlegende Konzepte, die<br />

für <strong>das</strong> Verständnis notwendig s<strong>in</strong>d. Dabei geht 2.1 auf verbreitete <strong>Datenbanksysteme</strong><br />

e<strong>in</strong> und 2.2 schafft e<strong>in</strong>en Überlbick über Rechnernetze als<br />

Vorraussetzung verteilter Systeme.<br />

2.1 <strong>Datenbanksysteme</strong><br />

Aufgabe e<strong>in</strong>es Datenbanksystems ist die Verwaltung von Daten e<strong>in</strong>es Unternehmens<br />

o<strong>der</strong> e<strong>in</strong>er Behörde. Dabei soll die <strong>in</strong>terne Struktur und Organisation<br />

<strong>der</strong> Daten möglichst für den Benutzer bzw. die Anwendung<br />

transparent gehalten werden. Im Zuge dieser For<strong>der</strong>ung muss <strong>das</strong> System<br />

also weitgehend selbständig Kriterien <strong>der</strong> Integrität, Konsistenz sowie Persistenz<br />

<strong>der</strong> Daten gewährleisten und trotzdem den hohen Anfor<strong>der</strong>ungen<br />

an Leistungsfähigkeit und Verfügbarkeit genügen. In gängigen Systemen<br />

wird dies durch e<strong>in</strong> sogenanntes Datenbank-Managementsystem(DBMS),<br />

e<strong>in</strong>e vor die Datenbank geschaltete Software, bewerkstelligt. Die, aus Sicht<br />

3


e<strong>in</strong>es Benutzers bzw. e<strong>in</strong>er Anwendung, transparente Verb<strong>in</strong>dung zwischen<br />

<strong>der</strong> eigentlichen Datenbank(DB) und dem DBMS, führt dazu, <strong>das</strong>s häufig<br />

von e<strong>in</strong>em Datenbanksystem(DBS) gesprochen wird und e<strong>in</strong>e bezugnehmende<br />

Trennung nur stattf<strong>in</strong>det, wenn diese vonnöten ist[2]. Im Allgeme<strong>in</strong>en werden<br />

die von e<strong>in</strong>em Datenbanksystem bereitgestellten Daten von unterschiedlichen<br />

Benutzern verwendet, was e<strong>in</strong>e bedarfsgerechte Aufbereitung<br />

und e<strong>in</strong>e Berechtigungsprüfung erfor<strong>der</strong>t. Der Mehrbenutzerbetrieb führt<br />

offensichtlich auch zu konkurrierenden Anfragen an <strong>das</strong> Datenbanksystem,<br />

die we<strong>der</strong> zu e<strong>in</strong>em <strong>in</strong>konsistenten Zustand noch zu e<strong>in</strong>em Verlust<br />

von Daten führen dürfen.<br />

Bei unseren Erläuterungen betrachten wir vor allem <strong>das</strong> relationale Datenmodell,<br />

denn es hat sich klar gegen ältere Konkurrenzmodelle, wie <strong>das</strong> hierarchische<br />

o<strong>der</strong> <strong>das</strong> Netzwerk-Modell, durchgesetzt und bietet aufgrund<br />

se<strong>in</strong>er mengenorietierten Anfragen e<strong>in</strong>ige Vorteile zur verteilten und parallelen<br />

Datenbankverarbeitung. Daneben gibt es aber auch neuere Konzepte.<br />

Das objektorientierte Datenbankmodell verwaltet Daten <strong>in</strong> Form von Objekten.<br />

Dieses Konzept konnte sich jedoch nach <strong>der</strong> Euphorie <strong>in</strong> den 1980ern<br />

nicht durchsetzen als man erkannte, <strong>das</strong>s die Vorteile ihrem Preis <strong>in</strong> Form<br />

von längeren Antwortzeiten for<strong>der</strong>ten. Die Forschungen aus diesem bereich<br />

ermöglichten aber die Erweiterung des relationalen Datenbankmodells<br />

zu e<strong>in</strong>em Objektrelationalen-Modell, dessen Konzepte weitgehend <strong>in</strong><br />

den SQL2003 aufgenommen wurden. Die späte Standardisierung dieser<br />

Konzepte führte dazu, <strong>das</strong>s ihre Umsetzung <strong>in</strong> kommerziellen Systemen<br />

noch une<strong>in</strong>heitlich ist.[2]<br />

2.1.1 Relationale Datenbanken<br />

Die Daten <strong>in</strong> e<strong>in</strong>er relationalen Datenbank werden <strong>in</strong> Tabellen(Relationen)<br />

gespeichert. Dabei besteht e<strong>in</strong>e Relation aus ihrem Namen, e<strong>in</strong>er Anzahl<br />

von Spalten(Attributen), die den Grad <strong>der</strong> Relation bestimmt und e<strong>in</strong>er<br />

Anzahl von Zeilen o<strong>der</strong> Tupel, welche die Kard<strong>in</strong>alität <strong>der</strong> Relation angibt.<br />

Darüber h<strong>in</strong>aus ist jedem Attribute e<strong>in</strong> Def<strong>in</strong>itionsbereich(Doma<strong>in</strong>)<br />

zugeordnet, welcher die zulässigen Werte festlegt. Die Mengeneigenschaft<br />

von Relationen bedeutet <strong>in</strong> diesem Kontext, <strong>das</strong>s Tupel nicht mehrfach<br />

vorkommen und ke<strong>in</strong>e vorgegebene Ordnung <strong>in</strong>nerhalb <strong>der</strong> Relation besteht.<br />

Das relationale Datenbankmodell schreibt zwei Integritätsbed<strong>in</strong>gungen,<br />

die sogenannten Relationalen Invariaten, vor.<br />

4


• Die Primärschlüsselbed<strong>in</strong>gung erwartet zu je<strong>der</strong> Relation e<strong>in</strong>e<br />

Menge(auch e<strong>in</strong>elementig) von Attributen, mit <strong>der</strong> e<strong>in</strong> Tupel e<strong>in</strong>deutig<br />

identifiziert werden kann. Diese Menge ist als Primärschlüssel<br />

<strong>der</strong> Relation auszuzeichnen.<br />

• Die Fremdschlüsselbed<strong>in</strong>gung h<strong>in</strong>gegen for<strong>der</strong>t für Fremdschlüssel,<br />

mit denen Beziehungen zwischen Relationen realisiert werden können,<br />

<strong>das</strong>s e<strong>in</strong> durch e<strong>in</strong>en Fremdschlüsselwert referenziertes Tupel <strong>in</strong> <strong>der</strong><br />

Datenbank existiert.<br />

Die Menge <strong>der</strong> Relationen e<strong>in</strong>er Datenbank bezeichnet man als Schema<br />

und unterscheidet Grundsätzlich zwischen dem Konzeptionellen- und dem<br />

Internen- Schema. Letzteres befasst sich weitgehend mit <strong>der</strong> physischen<br />

Speicherung <strong>der</strong> Daten und ist für den Anwen<strong>der</strong> transparent. Den Zugriff<br />

auf die Daten erhält <strong>der</strong> Benutzer also über <strong>das</strong> Konzeptionelle-Schema,<br />

wobei <strong>in</strong> den meisten Fällen e<strong>in</strong> an die jeweiligen Anfor<strong>der</strong>ung angepasstes<br />

Externes-Schema für Benutzer bereitgestellt wird.<br />

2.1.2 Operationen<br />

Für Anfragen auf e<strong>in</strong>er Datenbank f<strong>in</strong>det die Sprache SQL(Structured<br />

Query Language), e<strong>in</strong>e praktische Umsetzung <strong>der</strong> relationalen Algebra,<br />

verwendung. Diese bietet, neben den allgeme<strong>in</strong>en mengentheoretischen<br />

Operatoren wie Durchschnitt(∩), Vere<strong>in</strong>igung(∪) o<strong>der</strong> kartesisches Produkt(×),<br />

auch die relationalen Operatoren Selektion(σ - Selektion), Projektion(π)<br />

o<strong>der</strong> Verbund(⊲⊳ - Jo<strong>in</strong>) an.<br />

• Die Selektion σ P (R) bildet e<strong>in</strong>e horizontale Teilmenge <strong>der</strong> Relation<br />

R, <strong>in</strong> <strong>der</strong> alle Tupel enthalten s<strong>in</strong>d, die <strong>das</strong> Selektionsprädikat<br />

P erfüllen. Teilweise wird auch von Tupelauswahl gesprochen[2]<br />

• Mit <strong>der</strong> Projektion π (x:xs) (R) wird e<strong>in</strong>e vertikale Teilmenge <strong>der</strong><br />

Relation R gebildet. Dabei enthält die Attributliste (x : xs) alle<br />

Eigenschaften, die erhalten bleiben sollen.<br />

• Der Verbund o<strong>der</strong> Jo<strong>in</strong> ermöglicht <strong>das</strong> Verknüpfen zweier Relationen,<br />

die Attribute mit übere<strong>in</strong>stimmenden Wertebereichen(Doma<strong>in</strong>s)<br />

besitzen. <strong>E<strong>in</strong></strong> Verbund <strong>der</strong> Relationen A(A 1 , . . . , A n ) und B(B 1 , . . . , B n )<br />

auf Grundlage e<strong>in</strong>es passenden Vergleichsoperators<br />

5


θ : Doma<strong>in</strong>(A i ) × Doma<strong>in</strong>(B j ) → bool<br />

liefert, für fest gewählte i, j ∈ {1, . . . , n}, die Menge <strong>der</strong> Tupel<br />

{a ∪ b | a ∈ A i ∧ b ∈ B j ∧ θ(a, b)}.<br />

Son<strong>der</strong>fälle des Verbunds s<strong>in</strong>d <strong>der</strong> Gleichverbund(Equi Jo<strong>in</strong>), mit<br />

e<strong>in</strong>em Gleichheitsoperator, und <strong>der</strong> Natürliche-Verbund(Natural Jo<strong>in</strong>),<br />

<strong>der</strong> sich aus e<strong>in</strong>em Gleichverbund und e<strong>in</strong>er Ausblendung gleicher<br />

Attribute zusammensetzt. Das Verknüpfen <strong>der</strong> Tupel beim natürlichen<br />

Verbund erfolgt über Attribute, die <strong>in</strong> den beteiligten Relationen die<br />

selbe Bezeichnung haben. Falls ke<strong>in</strong> solches Attribut vorhanden ist,<br />

erhält man als Ergebnis <strong>das</strong> kartesische Produkt.<br />

Der Vollständigkeit halber sollten wir noch erwähnen, <strong>das</strong>s die Sprache<br />

SQL weniger als Schnittstelle für den Endanwen<strong>der</strong>, son<strong>der</strong>n viel mehr<br />

als Abstraktionsebene für Anwendungsentwickler gedacht ist. <strong>E<strong>in</strong></strong> e<strong>in</strong>facher<br />

Angestellter, <strong>der</strong> auf Firmendaten zugreifen möchte, muß sich für<br />

gewöhnlich nicht dieser bedienen, son<strong>der</strong>n benutzt e<strong>in</strong>e Anwendung, die,<br />

optimalerweise über e<strong>in</strong>e <strong>in</strong>tuitive graphische Oberfläche, ähnliche Funktionalität<br />

bereitstellt und die SQL-Anfragen <strong>in</strong>tern generiert.<br />

2.1.3 Transaktionen<br />

Um e<strong>in</strong>en korrekten Ablauf von Operationen im Mehrbenutzerbetrieb zu<br />

gewährleisten, zieht man <strong>das</strong> Konzept <strong>der</strong> Transaktion zu Hilfe. Mit Korrektheit<br />

ist die Integrität des Datenbestandes geme<strong>in</strong>t. Unterschieden wird<br />

zwischen <strong>der</strong> semantischen Integrität und <strong>der</strong> Ablauf<strong>in</strong>tegrität[2].<br />

Ersteres bezieht sich auf die Bedeutung <strong>der</strong> Daten und for<strong>der</strong>t e<strong>in</strong>en semantisch<br />

konsistenten Datenbankzustand nach Abschluss e<strong>in</strong>er Tranksaktion.<br />

Beispielsweise würde e<strong>in</strong>e negative Altersangabe e<strong>in</strong> semantisches Problem<br />

darstellen, auch wenn sich <strong>der</strong> Wert <strong>in</strong>nerhalb des Def<strong>in</strong>ierten Wertebereichs<br />

bef<strong>in</strong>det und syntaktisch zulässig ist.<br />

Bei <strong>der</strong> Ablauf<strong>in</strong>tegrität , die auch als operationale Integrität bezeichnet<br />

wird, ist die Zusicherung, <strong>das</strong>s Fehler nicht durch konkurrierende Anfragen<br />

bzw. Zugriffe entstehen. So würde <strong>das</strong> Resultat verschiedener ”gleichzeitiger”<br />

Buchungen auf e<strong>in</strong>em Konto immer zum selben Ergebnis führen.<br />

6


<strong>E<strong>in</strong></strong>e Transaktion ist e<strong>in</strong>e Folge von Datenbankoperationen, die von außen<br />

betrachtet als atomare <strong>E<strong>in</strong></strong>heit ersche<strong>in</strong>t und e<strong>in</strong>e Datenbank von e<strong>in</strong>em<br />

konsistenten Zustand <strong>in</strong> e<strong>in</strong>en an<strong>der</strong>en konsistenten Zustand überführt.<br />

Innerhalb des Datenbanksystems kann e<strong>in</strong>e Transaktion aus vielen Operationen<br />

bestehen. Stellt man sich e<strong>in</strong>e Banküberweisung von e<strong>in</strong>em Konto<br />

A zu e<strong>in</strong>em Konto B vor, so s<strong>in</strong>d die notwendigen <strong>in</strong>ternen Operationen<br />

erkennbar, die, transparent für den Benutzer, vom DBMS durchgeführt<br />

werden.<br />

Transaktion Überweise<br />

e 20.00 von Konto A → Konto B<br />

• Prüfe ob es e<strong>in</strong> Konto A gibt<br />

• Prüfe ob Konto A über ausreichend Deckung verfügt<br />

• Prüfe ob es e<strong>in</strong> Konto B gibt<br />

• Belaste Konto A mit e 20.00<br />

• Schreibe e 20.00 auf Konto B gut<br />

• Schließe die Transaktion ab<br />

Sollte bei <strong>der</strong> Abarbeitung dieser Operationen e<strong>in</strong> Fehler auftreten, darf<br />

dennoch ke<strong>in</strong> Fehler <strong>in</strong> <strong>der</strong> Datenbank resultieren, denn es ist ja schon<br />

genug Geld <strong>in</strong> letzter Zeit verschwunden.<br />

<strong>E<strong>in</strong></strong>e große Herausfor<strong>der</strong>ung an <strong>Datenbanksysteme</strong> ist <strong>das</strong> Gewährleisten<br />

dieser For<strong>der</strong>ung, <strong>der</strong>en Komplexität natürlich mit dem Verteilungsgrad<br />

e<strong>in</strong>es Informationssystems zu nimmt.<br />

In den 70er und 80er Jahren des vergangen Jahrhun<strong>der</strong>ts, prägte Jim<br />

Gray die Transaktionsverarbeitung im Bereich <strong>der</strong> Datenbanken bevor<br />

Theo Här<strong>der</strong> und Andreas Reuter 1983 mit ihrer Arbeit Pr<strong>in</strong>ciples of<br />

transaction-oriented database recovery[4] <strong>das</strong> Schlag-Akronym ACID <strong>in</strong><br />

den Informationswissenschaften etablierten. Das ACID-Pr<strong>in</strong>zip wird heutzutage<br />

als Maßstab für korrekte Transaktionen angesehen und stellt die folgenden<br />

vier Bed<strong>in</strong>gungen auf[1] [2] :<br />

• Atomarität(Atomicity) : <strong>E<strong>in</strong></strong>e Transaktion wird entwe<strong>der</strong> ganz o<strong>der</strong><br />

gar nicht auf e<strong>in</strong>er Datenbank ausgeführt und kann im Falle e<strong>in</strong>es<br />

Fehlers ke<strong>in</strong>e Zwischenzustände h<strong>in</strong>terlassen.<br />

7


• Konsistenz(Consistency) : Transaktionen s<strong>in</strong>d kle<strong>in</strong>ste <strong>E<strong>in</strong></strong>heiten<br />

<strong>der</strong> Integritätsüberwachung und nach Abschluss e<strong>in</strong>er transaktion<br />

muss die Integrität sichergestellt se<strong>in</strong>.<br />

• Entkoppelung(Isolation) : Für e<strong>in</strong>zelne Transaktionen wird <strong>der</strong><br />

<strong>E<strong>in</strong></strong>benutzerbetrieb so simuliert, <strong>das</strong>s sich konkurrierende Transaktionen<br />

nicht gegenseitig bee<strong>in</strong>flussen können.<br />

• Dauerhaftigkeit(Durability) : Ist e<strong>in</strong>e Transaktion e<strong>in</strong>mal erfolgreich<br />

abgeschlossen wurden, so bleiben die gemachten Än<strong>der</strong>ungen<br />

auch im Falle e<strong>in</strong>es Fehlers erhalten.<br />

2.2 Rechnernetze<br />

<strong>E<strong>in</strong></strong> Rechnernetz verb<strong>in</strong>det mehrere Rechner mite<strong>in</strong>an<strong>der</strong> und ermöglicht<br />

so den Nachrichtenaustausch unter den verbundenen Netzteilnehmern. In<br />

den Anfängen <strong>der</strong> verteilten Informationssysteme war es notwendig auf<br />

die Beschaffenheit und die Kapazitäten dieser Netze e<strong>in</strong>zugehen, weshalb<br />

sich <strong>in</strong> den meisten älteren Büchern auch e<strong>in</strong> Kapitel mit <strong>der</strong> Problematik<br />

ause<strong>in</strong>an<strong>der</strong> setzte.<br />

Dieser Aspekt kann mittlerweile jedoch weitgehend aufgrund <strong>der</strong> großflächigen<br />

<strong>E<strong>in</strong></strong>führungen von Breitband-Netzen vernachlässigt werden. Ebenfalls s<strong>in</strong>d<br />

relativ zuverlässige Protokolle wie TCP, IPv4 o<strong>der</strong> <strong>das</strong> <strong>in</strong> <strong>der</strong> <strong>E<strong>in</strong></strong>führung<br />

bef<strong>in</strong>dliche IPv6 schon ausreichend etabliert und <strong>in</strong>nerhalb <strong>der</strong> gängigen<br />

Entwicklungs-Technologien mit Hilfe von Schnittstellen so weit abstrahiert,<br />

<strong>das</strong>s man diese als Entwickler nur noch e<strong>in</strong>b<strong>in</strong>den muss, um e<strong>in</strong>e Kommunikation<br />

zu ermöglichen. <strong>E<strong>in</strong></strong>en tieferen <strong>E<strong>in</strong></strong>blick <strong>in</strong> diese Materie ermöglichen<br />

die Vorlesungen Communication Systems o<strong>der</strong> Internet Communications<br />

von Prof. Luttenberger, <strong>der</strong>en Inhalte unseren Rahmen hier sprengen würde.<br />

Unsere Bedürfnisse s<strong>in</strong>d damit befriedigt, <strong>das</strong>s wir e<strong>in</strong>e Schnittstelle haben,<br />

die uns e<strong>in</strong>e Kommunikation mit Ortsfremden Rechnern ermöglicht und<br />

durch die Synchronisation des Nachrichtenaustauschs, wie bei TCP, e<strong>in</strong><br />

Maß an Zuverlässigkeit gegeben ist.<br />

8


3 Architektur verteilter <strong>Datenbanksysteme</strong><br />

Unter e<strong>in</strong>er verteilten Datenbank versteht man e<strong>in</strong>e Sammlung logisch<br />

zusammengehöriger Datenbanken, die über Rechnerknoten(Sites) verteilt<br />

s<strong>in</strong>d und über e<strong>in</strong> Rechnernetz mit e<strong>in</strong>an<strong>der</strong> Kommunizieren. In dem<br />

Zusammenhang spricht man von e<strong>in</strong>em verteilten DBMS(vDBMS, DDBMS)<br />

und me<strong>in</strong>t damit e<strong>in</strong>e Software zur Verwaltung e<strong>in</strong>er verteilten Datenbank.<br />

<strong>E<strong>in</strong></strong>e solche Software muss verschiedene Kriterien <strong>der</strong> Transparenz erfüllen;<br />

also die <strong>in</strong>terne Realisierung dieser Eigenschaften sollen für den <strong>E<strong>in</strong></strong>satz<br />

nicht relevant se<strong>in</strong>.<br />

• Orts-Transparenz : <strong>E<strong>in</strong></strong> Benutzer, <strong>der</strong> e<strong>in</strong>e Datenbankanfrage <strong>in</strong><br />

Auftrag gibt, muß nicht wissen wo die angefragten Daten physisch<br />

liegen.<br />

• Fragmentierungs-Transparenz : Die Zerlegung e<strong>in</strong>zelner Relationen<br />

zum Zwecke <strong>der</strong> Verteilung ist für den Benutzer unsichtbar.<br />

• Replikations-Transparenz : Ob und wie Daten <strong>in</strong>tern redundant<br />

gehalten werden, soll für den Benutzer verborgen bleiben.<br />

• Implementierungs-Transparenz : Der <strong>E<strong>in</strong></strong>satz des Datenbanksystems<br />

soll unabhängig von <strong>der</strong> <strong>in</strong>ternen Aufbereitung für verteilte<br />

Anfragen se<strong>in</strong>.<br />

Man unterscheidet verteilte Datenbanken unter an<strong>der</strong>en auch nach den<br />

e<strong>in</strong>gesetzten Modellen. Als herterogen verteilte Systeme bezeichnet man<br />

solche, die unterschiedliche Datenmodelle, etwa Relationale- und Objecktorientierte-<br />

Datenbankmodelle, als Grundlage haben. Solche Systeme entstehen beispielsweise<br />

bei <strong>der</strong> Fusionierung zweier Unternehmen, die zuvor unterschiedliche<br />

Produkte <strong>in</strong> <strong>der</strong> Datenverwaltung e<strong>in</strong>gesetzt haben, weshalb man hier<br />

auch von fö<strong>der</strong>ativen <strong>Datenbanksysteme</strong>n spricht. Bei Systemen dieser<br />

Art müssen natürlich Abstriche <strong>in</strong> Bezug auf die obigen Kriterien <strong>in</strong> Kauf<br />

genommen werden. Von homogenen verteilten Systemen spricht man h<strong>in</strong>gegen,<br />

wenn beteiltigte Datenbanken <strong>das</strong> gleiche Datenmodell als Grundlage<br />

haben und damit e<strong>in</strong>e Verteilungtransparenz für den Benutzer erreichbar<br />

ist.<br />

9


3.1 Katalog des Systems<br />

Der Datenkatalog bezeichnet die Menge <strong>der</strong> für die Verwaltung nötigen<br />

Meta-Daten wie (Schema<strong>in</strong>formationen, Zugriffsberechtigungen, Passwörter,<br />

Statistiken).<br />

Im verteilten Fall muss hier e<strong>in</strong>e Trennung bezüglich <strong>der</strong> lokalen und<br />

globalen Daten erfolgen. Der lokale Katalog enthält die Meta<strong>in</strong>formationen<br />

zu den lokal gespeicherten während <strong>der</strong> Globale e<strong>in</strong>e Gesamtübersicht<br />

sämtlicher Daten des Systems verwaltet. Die Verteilungstransparenz wird<br />

dabei vom globalen Katalog durch e<strong>in</strong>e Abbildung zwischen logischen,<br />

globalen Namen und physischen Adressen realisiert. Für die Katalogverwaltung<br />

gibt es verschiedene Konzepte :<br />

• Zentralisierter Katalog : <strong>E<strong>in</strong></strong> vollständiger Katalog wird an e<strong>in</strong>em<br />

Knoten verwaltet. Diese Art <strong>der</strong> Verwaltung br<strong>in</strong>gt e<strong>in</strong>en hohen<br />

Kommunikationsaufwand mit sich, kann schnell zu Engpässen führen<br />

und schränkt die gewünschte Knotenautonomie stark e<strong>in</strong>.<br />

• Replizierter Katalog : <strong>E<strong>in</strong></strong> vollständiger Katalog an jedem Knoten<br />

vorhanden. Dadurch erreicht man e<strong>in</strong>e hohe effizienz für lokale Leseoperationen.<br />

Nachteile bestehen jedoch bei Än<strong>der</strong>ungsoperationen<br />

und im Schutz <strong>der</strong> Daten.<br />

• Mehrfachkotaloge : Die beteiligten Rechner werden zu Cluster<br />

verknüpft und man legt <strong>in</strong> jedem Cluster e<strong>in</strong>en vollständigen globalen<br />

Katalog an. Der Gew<strong>in</strong>n bei Än<strong>der</strong>ungsoperationen und e<strong>in</strong>er<br />

erhöhten Knotenautonomie muss jedoch mit e<strong>in</strong>er Partitionierung<br />

des Gesamtnetzes bezahlt werden.<br />

• Partitionierter Katalog : Der globale Katalog wird verteilt gespeichert.<br />

Damit hat man ke<strong>in</strong>en expliziten globalen Katalog. Dieser<br />

liegt nur noch implizit als Vere<strong>in</strong>igung <strong>der</strong> lokalen Kataloge vor.<br />

Dazu s<strong>in</strong>d dann auch noch erweiterte Bezeichner mit Verteilungs<strong>in</strong>formationen<br />

nötig, um nicht lokale Daten f<strong>in</strong>den zu können. Der<br />

Gew<strong>in</strong>n dieser Aufteilung ist e<strong>in</strong> hohes Maß an Autonomie.<br />

10


3.2 Fragmentierung und Allokation<br />

In e<strong>in</strong>em verteilten Informationssystem geht es natürlich auch um die<br />

Verteilung <strong>der</strong> Informationen. In unserem Fall also um die Verteilung <strong>der</strong><br />

vom Datenbanksystem verwalteten Daten. Diese bee<strong>in</strong>flußt zwangsläufig<br />

auch Systemeigentschaften wie den Kommunikationsaufwand für e<strong>in</strong>en<br />

gewünschten Datenzugriff, die Systemlast und natürlich auch die Verfügbarkeit<br />

<strong>der</strong> Daten. Bei <strong>der</strong> physischen Streuung <strong>der</strong> Daten spricht man von Allokation<br />

und beschreibt die Aufteilung e<strong>in</strong>zelner Relationen als Fragmentierung.<br />

Fragmentierung<br />

Die Fragmentierung unterscheidet zwischen horizontaler - und vertikaler<br />

Fragmentierung. Bei <strong>der</strong> horizontalen Fragmentierung wird e<strong>in</strong>e Relation<br />

anhand e<strong>in</strong>es Attributes mit Hilfe e<strong>in</strong>er Selektion <strong>in</strong> disjunkte Teilmengen<br />

aufgeteilt. Zum Beispiel könnte man e<strong>in</strong>e globale Relation von Kunden<br />

e<strong>in</strong>er Bank mit Hilfe <strong>der</strong> zugehörigen Filiale aufteilen und bekommt e<strong>in</strong><br />

Fragment mit den jeweiligen Kunden für jede Filiale σ F iliale=”Kiel” (R)<br />

.<br />

Die vertikale Fragmentierung h<strong>in</strong>gegen ist e<strong>in</strong>e Projektion bestimmter Attribute<br />

e<strong>in</strong>er globalen Relation. Dabei sollte <strong>der</strong> Primärschlüssel <strong>in</strong> je<strong>der</strong><br />

Projektion für e<strong>in</strong>e Rekonstruktion mit Hilfe e<strong>in</strong>es Verbunds enthalten<br />

se<strong>in</strong>.<br />

Π KNR,Name,F iliale (R)<br />

Allokation<br />

Die Verteilung <strong>der</strong> e<strong>in</strong>zelnen Fragmente auf bestimmte Knoten o<strong>der</strong> Sites<br />

wird als Allokation bezeichnet. Die Verteilung aller Fragmente auf alle<br />

Knoten nennt man e<strong>in</strong>e replizierte Datenbank, woh<strong>in</strong>gegen e<strong>in</strong>e disjunkte<br />

Verteilung e<strong>in</strong>e partitionierte Datenbank zur Folge hat. Im Allgeme<strong>in</strong>en<br />

wird aber e<strong>in</strong>e partielle Replikation e<strong>in</strong>gesetzt, da diese ger<strong>in</strong>gere Än<strong>der</strong>ungskosten<br />

als e<strong>in</strong>e volle Replikation hat und trotzdem die Verfügbarkeit des Gesamtsystems<br />

steigert, denn falls gewisse Knoten ausfallen, s<strong>in</strong>d die dort gespeicherten<br />

Daten aufgrund <strong>der</strong> Replikation noch immer verfügbar. Natürlich<br />

11


erreicht man damit ke<strong>in</strong>e Verfügbarkeitsgarantie, aber immerh<strong>in</strong> e<strong>in</strong>e signifikante<br />

Steigerung bei akzeptablen Kosten[3]<br />

<strong>E<strong>in</strong></strong>e geeignete Komb<strong>in</strong>ation aus Fragmentierung und Allokation kann<br />

zu e<strong>in</strong>er hohen Lokalität <strong>der</strong> Verfügbarkeit führen. Wenn man beispielsweise<br />

<strong>in</strong> e<strong>in</strong>er Bank e<strong>in</strong>e horizontale Fragmentierung bezüglich <strong>der</strong> Filialen<br />

wie beschrieben vornimmt und die Allokation so gestaltet, <strong>das</strong>s die<br />

Filial-Fragmente an <strong>der</strong> jeweiligen Filiale vorhanden s<strong>in</strong>d, kann e<strong>in</strong> Großteil<br />

<strong>der</strong> Operationen <strong>in</strong> <strong>der</strong> Filiale lokal und ohne Interaktion mit dem Rest<br />

des Systems erfolgen.<br />

3.3 Klassifikation nach Verteilungsgrad<br />

Multiprozessor <strong>Datenbanksysteme</strong>(Shared-Everyth<strong>in</strong>g)<br />

Diese Art von <strong>Datenbanksysteme</strong>n unterscheiden sich von zentralen System<br />

nur aufgrund <strong>der</strong> Anzahl an Rechene<strong>in</strong>heiten. Verteilungsaspekte wie<br />

die Kommunikation, werden dabei weitgehend vom Betriebstsystem übernommen<br />

und müssen nicht beson<strong>der</strong>s bei <strong>der</strong> Datenverwaltung berücksichtigt werden.<br />

Aus Sicht <strong>der</strong> ”Datenbänker” s<strong>in</strong>d diese weitgehend als gewöhnliche<br />

zentrale Datenbankssysteme zu behandeln.<br />

Datenbank-Shar<strong>in</strong>g(Shared-Disks)<br />

Bei diesen <strong>Datenbanksysteme</strong>n hat man ke<strong>in</strong>e physische Datenaufteilung<br />

zwischen den beteiligten Rechnern, jedoch e<strong>in</strong> Datenbanksystem auf jedem<br />

Rechner. Die Daten werden <strong>in</strong> e<strong>in</strong>em externen Speicher gelagert, auf<br />

den die CPUs bei Bedarf zugreifen. Die Kommunikation zwischen den<br />

Rechnern muss dann vor allem die Speicher- bzw Datenbank-Zugriffe synchronisieren.<br />

<strong>E<strong>in</strong></strong> Vorteil dieser Struktur ist, <strong>das</strong>s alle Operationen e<strong>in</strong>er<br />

Transaktion auf e<strong>in</strong>em Rechner abgearbeitet werden können und somit<br />

verteilte Ausführungspläne unnötig s<strong>in</strong>d. H<strong>in</strong>gegen kann es hier zu Problemen<br />

durch mehrfach Kopien <strong>in</strong> dem Hauptspeicher <strong>der</strong> beteiligten Rechner<br />

kommen. Der geme<strong>in</strong>same Zugriff aller Beteiligten br<strong>in</strong>gt natürlich auch<br />

Probleme <strong>in</strong> <strong>der</strong> Anfragebearbeitung und <strong>der</strong> Transaktionsverwaltung mit<br />

sich. Als kommerzielle Produkte <strong>in</strong> diesem Bereich kann man Oracle Parallel<br />

Server o<strong>der</strong> IBM DB2 aufführen.<br />

12


Datenbank-Distribution(Shared-Noth<strong>in</strong>g)<br />

Hierbei hat man <strong>das</strong> Datenbanksystem im allgeme<strong>in</strong>en auf mehrere lose<br />

gekoppelte Rechner und DBMS verteilt. Je<strong>der</strong> e<strong>in</strong>zelne Rechner hat zunächst<br />

nur Zugriff auf lokale Daten was offensichtlich verteilte Ausführungspläne<br />

für Datenbankoperationen nötig macht. Probleme s<strong>in</strong>d hier durch globale<br />

Deadlocks und die Wartung replizierter Daten gegeben. Bei diesen Strukturen<br />

s<strong>in</strong>d sogenannte rechnerübergreifende Commit-Protokolle und Katalogverwaltung<br />

nötig. <strong>E<strong>in</strong></strong>ige kommerzielle Produkte hier s<strong>in</strong>d Teradata,<br />

Sybase SQL-Anywhere o<strong>der</strong> IBM DB2.<br />

13


4 Umsetzung e<strong>in</strong>iger Konzepte<br />

Um die 1980er Jahre gab es spezielle Datenbank-Hardware, die mit <strong>der</strong><br />

Hoffnung besserer Effizienz aufgrund von spezialisierung im Markt platziert<br />

wurde. Diese Rechner konnten sich jedoch nicht durchsetzen, denn die<br />

softwarebasierten Systeme entwickelten sich ungleich schneller und waren<br />

kosteneffizienter. Der enorme Leistungszuwachs <strong>der</strong> softwarebasierten Masch<strong>in</strong>en<br />

hat diesen Ansatz mittlerweile komplett verdrängt, so <strong>das</strong>s er nur noch<br />

e<strong>in</strong>en geschichtlichen <strong>E<strong>in</strong></strong>fluss hat.<br />

4.1 Client/Server-<strong>Datenbanksysteme</strong><br />

Die Client/Server-<strong>Datenbanksysteme</strong> s<strong>in</strong>d Systeme <strong>der</strong> funktionalen Spezialisierung<br />

und sehr verbreitet <strong>in</strong> <strong>der</strong> heutigen Informationsverarbeitung.<br />

Haupteigenschaft ist die Unterteilung <strong>in</strong> Client- und Server-<strong>Datenbanksysteme</strong>.<br />

Die Daten werden auf e<strong>in</strong>er Datenbank unter verwaltung des Server-Systems<br />

gehalten. Clients können diese Abfragen bzw. auf diese Zugreifen, haben<br />

aber auch e<strong>in</strong>iges an typischer Datenbankfunktionalität <strong>in</strong> ihrem lokalen<br />

Datenbank-Managementsystem gegeben. <strong>E<strong>in</strong></strong>erseits entstehen hier ger<strong>in</strong>gere<br />

Kosten durch Clients, die ungleich Kosteneffizienter s<strong>in</strong>d als große<br />

Server-Systeme und e<strong>in</strong>e <strong>E<strong>in</strong></strong>benutzer-Sicht ermöglichen,an<strong>der</strong>erseits kann<br />

<strong>der</strong> Server auch schnell zum Engpaß bei hoher Frequentierung werden.<br />

• Client-Dienste : Clients übernehmen lokale Dienste wie Anfragebearbeitung,<br />

bei welcher die Anfrageoptimierung schon weitgehend<br />

auf den Clientsystem stattf<strong>in</strong>den kann, o<strong>der</strong> die Pufferung von Datenbank-<br />

Objekten, um die kommunikation zwischen Client und Server zu<br />

m<strong>in</strong>imieren und so den Server, <strong>der</strong> leicht zum Flaschenhals wird, zu<br />

entlasten.<br />

• Server-Dienste : Typischerweise übernimmt <strong>das</strong> Server-System globale<br />

Aufgaben wie die Externspeicherverwaltung, Synchronisation o<strong>der</strong><br />

Logg<strong>in</strong>g, die nicht unmittelbar relevant für den Bentuzer s<strong>in</strong>d und<br />

verschiedene Beteiligte mite<strong>in</strong>an<strong>der</strong> koord<strong>in</strong>ieren müssen.<br />

Die Aufteilung <strong>in</strong> dieser Form ist nicht e<strong>in</strong>heitlich <strong>in</strong> allen kommerziellen<br />

Systemen zu f<strong>in</strong>den, son<strong>der</strong>n beschreibt nur die Tendenzen, die h<strong>in</strong> und<br />

wie<strong>der</strong> auch vermischt zum <strong>E<strong>in</strong></strong>satz kommen. Der zunehmende <strong>E<strong>in</strong></strong>satz<br />

14


dieser Strukuren zeigt natürlich auch die damit verbundenen Probleme.<br />

Beispielsweise stellt <strong>der</strong> Server e<strong>in</strong>en empf<strong>in</strong>dlichen Punkt für Angriffe dar.<br />

Bei e<strong>in</strong>em Ausfall resultiert natürlich e<strong>in</strong> globaler Ausfall des gesamten<br />

Systems, weshalb die Verfügbarkeitsanfor<strong>der</strong>ungen <strong>in</strong> diesem Bereich beson<strong>der</strong>s<br />

hoch s<strong>in</strong>d. Dies treibt wie<strong>der</strong>um die Instandhaltungs- und Betriebskosten<br />

<strong>in</strong> die Höhe.<br />

4.1.1 Funktional gleichgestellte DBS<br />

Während die Client/Server-Systeme sich als funktional spezialisiert beschreiben<br />

lassen, f<strong>in</strong>det e<strong>in</strong>e <strong>der</strong>artige Aufgabentrennung bei diesem Konzept nicht<br />

statt. Funktional geleichgestelle <strong>Datenbanksysteme</strong> bestehen aus e<strong>in</strong>zelnen<br />

Rechnerknoten, die alle über e<strong>in</strong> eigenes DBMS zur Verwaltung lokaler<br />

Daten verfügen, über e<strong>in</strong> Rechnernetz mit e<strong>in</strong>an<strong>der</strong> kommunizieren und<br />

anhand e<strong>in</strong>es globalen Schemas nicht lokale Daten referenzieren können.<br />

Dabei s<strong>in</strong>d grundsätzlich alle Rechnerknoten gleichberechtig und übernehmen<br />

spezielle Aufgaben, wenn es um e<strong>in</strong>en Transaktionsabschluss o<strong>der</strong> ähnliches<br />

geht. Wenn man auf Redundanz verzichtet, ist die Verfügbarkeit von<br />

lokalen Daten bei e<strong>in</strong>em Ausfall natürlich nicht mehr gewährleistet. Im<br />

Gegensatz zu an<strong>der</strong>en Lösungen bleibt jedoch <strong>das</strong> Gesamtsystem weiterh<strong>in</strong><br />

im <strong>E<strong>in</strong></strong>satz und macht <strong>das</strong> betroffene unternehmen nicht völlig handlungsunfähig.<br />

Für die Realisierung solcher Systeme ist es natürlich nötig e<strong>in</strong>e<br />

nicht hierarchische Lösung z.B. für Än<strong>der</strong>ungsoperationen e<strong>in</strong>zuführen,<br />

denn es gibt hier ke<strong>in</strong>en Server, <strong>der</strong> globale Aufgaben übernehmen kann.<br />

15


5 Anfragebearbeitung und Transaktionsverwaltung<br />

Die vom DBMS realisierte Verteilungstransparenz ermöglicht es dem Benutzer<br />

e<strong>in</strong>er verteilten Datenbank se<strong>in</strong>e Anfragen auf Grundlage des Globalen-<br />

Konzeptionellen-Schemas(GKS) zu formulieren, ohne <strong>das</strong>s dieser sich auf<br />

die Allokation bestimmter Daten beziehen muß. Das erfor<strong>der</strong>t e<strong>in</strong>e <strong>in</strong>terne<br />

Bearbeitung <strong>der</strong> Anfrage, um die gewünschten Operationen korrekt<br />

und möglichst effizient auf die e<strong>in</strong>zelnen Rechnerknoten verteilen zu<br />

können. Trotz <strong>der</strong> Verteilung, ist jedoch die Gewährleistung <strong>der</strong> <strong>in</strong> 2.1.3<br />

e<strong>in</strong>geführten ACID-Eigenschaften e<strong>in</strong>e unverzichtbare Anfor<strong>der</strong>ung. Hierbei<br />

gibt es e<strong>in</strong>ige Aufgaben, wie die Anfrageoptimierung, die weitgehend<br />

lokal durchgeführt werden können und an<strong>der</strong>e, die e<strong>in</strong>er externen Bearbeitung<br />

bedürfen.<br />

5.1 Anfragebearbeitung<br />

Genau wie bei zentralen Datenbanksystem ist es die Aufgabe <strong>der</strong> Anfragebearbeitung<br />

möglichst effiziente Ausführungspläne für ankommende<br />

DB-Operationen zu erstellen und auszuführen. Es muss also entschieden<br />

werden <strong>in</strong> welcher Reihenfolge <strong>der</strong> Zugriff auf Relationen abzulaufen hat.<br />

Zunächst wird die e<strong>in</strong>gehende SQL-Anfrage <strong>in</strong> e<strong>in</strong>e <strong>in</strong>terne äquivalente<br />

Form, z.B. <strong>in</strong> e<strong>in</strong>en Ausdruck <strong>der</strong> relationen Algebra, Transformiert. Dieser<br />

Schritt kann lokal erfolgen, da er, bis auf mögliche verteilte Katalogzugriffe,<br />

ke<strong>in</strong>e Verteilungs<strong>in</strong>formationen benötigt. Im Falle <strong>der</strong> Fragmentierung<br />

e<strong>in</strong>zeler Relationen müssen diese mit Hilfe des globalen Verteilungsschemas<br />

durch e<strong>in</strong>en Rekonstruktionsausdruck ersetzt werden, welche auch<br />

zu optimieren s<strong>in</strong>d. Zuletzt muss e<strong>in</strong>e aus globaler Sicht möglichst kostengünstige<br />

Ausführungsreihenfolge festgelegt werden, wobei vorallem <strong>der</strong> Kommunikationsaufwand<br />

neben <strong>der</strong> benötigten CPU-Zeit und dem Speicherbedarf<br />

e<strong>in</strong>e große Rolle spielt. Diese Transformation liefert e<strong>in</strong>en optimierten<br />

Fragment-Ausdruck, mit den e<strong>in</strong>zelnen Kommunikationsoperationen und<br />

e<strong>in</strong>zelne Fragment-Anfragen für physisch entfernte Rechnerknoten, aus<br />

dem die Code-Generierung e<strong>in</strong> ausführbares Programm macht.<br />

16


5.2 Transaktionsverwaltung<br />

<strong>E<strong>in</strong></strong>e Transaktion ist e<strong>in</strong>e Menge von Datenbank-Operationen, die von e<strong>in</strong>er<br />

BOT(Beg<strong>in</strong> of Transaction)-Operation und e<strong>in</strong>er EOT(End of Transaction)-<br />

o<strong>der</strong> Commit-Operation umschlossen s<strong>in</strong>d. Außerdem besteht die Möglichkeit<br />

mit e<strong>in</strong>er Rollback-Anweisung diese transaktion abzubrechen. Der Rechnerknoten,<br />

<strong>der</strong> die Transaktion veranlasst, wird als Koord<strong>in</strong>ator-Knoten <strong>der</strong><br />

Transaktion bezeichnet. Beschränken sich die Operationen e<strong>in</strong>er Transaktion<br />

auf den Koord<strong>in</strong>ator spricht man von e<strong>in</strong>er lokalen Transaktion woh<strong>in</strong>gegen<br />

e<strong>in</strong>e globale Transaktion noch weitere Knoten e<strong>in</strong>bezieht, die wir<br />

auch Agenten nennen. An diese werden Teil- o<strong>der</strong> Sub-Transaktionen<br />

übermittelt, welche auf dem Knoten ausgeführt werden. Die am Koord<strong>in</strong>ator-<br />

Knoten ausgeführte Teiltransaktion nennt man dann Primär-Transaktion.<br />

Die Atomarität von Transaktionen ist e<strong>in</strong> zentrales Problem bei verteilten<br />

Datenbanken und wird mit Hilfe von Commit-Protokollen gewährleistet.<br />

Zwei-Phasen-Commit(2PC)<br />

Um e<strong>in</strong>e Transaktion abschließen zu können, ist es nötig zu wissen, ob alle<br />

Subtranksaktionen erfolgreich waren und falls nicht müssen Än<strong>der</strong>ungen<br />

an sämtlichen beteiligten Knoten rückgängig gemacht werden. Für die<br />

Lösung dieses Problems gibt es <strong>das</strong> 2PC-Protokoll zur Festschreibung von<br />

Än<strong>der</strong>ungen auf verteilten Datenbanken. Es besteht wie <strong>der</strong> Name schon<br />

sagt aus zwei Phasen, <strong>der</strong> Prepare-Phase und <strong>der</strong> Commit/Abort-Phase.<br />

• Prepare-Phase : Will <strong>der</strong> Koord<strong>in</strong>ator e<strong>in</strong>e Transaktion abschließen,<br />

so schickt er e<strong>in</strong>e Prepare-Nachricht an alle beteiligten Knoten. Diese<br />

machen e<strong>in</strong>en Vermerk <strong>in</strong> ihren lokalen Log-Dateien und antworten<br />

mit e<strong>in</strong>er Ready-Nachricht, falls ihre Subtransaktion erfolgreich war.<br />

An<strong>der</strong>nfalls antworten sie mit e<strong>in</strong>er Failed-Nachricht und beg<strong>in</strong>nen<br />

die lokalen Än<strong>der</strong>ungen <strong>der</strong> Transaktion rückgängig zu machen,<br />

da ihre Failed-Nachricht e<strong>in</strong> Zurücksetzen <strong>der</strong> gesamten globalen<br />

Transaktion zur Folge hat.<br />

• Commit/Abort-Phase : Der Koord<strong>in</strong>ator wartet, nach dem Versandt<br />

<strong>der</strong> Prepare-Nachrichten auf die Antworten aller Agenten.<br />

Wenn alle mit e<strong>in</strong>em Ready antworten, so waren alle Subtransaktionen<br />

erfolgreich und die globale Transaktion kann übernommen wer-<br />

17


den. Dazu vermerkt <strong>der</strong> Koord<strong>in</strong>ator e<strong>in</strong> Commit <strong>in</strong> se<strong>in</strong>er Log-Datei<br />

und schickt diese Nachricht an alle Agenten, die ihrerseits <strong>das</strong> Commit<br />

<strong>in</strong> ihrer Log-Datei e<strong>in</strong>tragen und die Transaktion abschliessen.<br />

Hat jedoch m<strong>in</strong>destens e<strong>in</strong> Agent probleme bei <strong>der</strong> Ausführung <strong>der</strong><br />

Transaktion gehabt und mit e<strong>in</strong>em Failed geantwortet, so muss die<br />

gesamte Transaktion zurückgesetzt werden. Der Koord<strong>in</strong>ator schickt<br />

dazu e<strong>in</strong>e Abort-Nachricht an alle Agenten, damit diese ihre Subtransaktionen<br />

wie<strong>der</strong> rückgängig machen. Sowohl im Commit als<br />

auch im Abort Fall, senden die Agenten nach e<strong>in</strong>em Log-<strong>E<strong>in</strong></strong>trag e<strong>in</strong>e<br />

Empfangsbestätigung an den Koord<strong>in</strong>ator, <strong>der</strong> nach dem Empfang<br />

aller Bestätigungen <strong>das</strong> Ende <strong>der</strong> Transaktion <strong>in</strong> se<strong>in</strong>er Log-Datei<br />

vermerken kann.<br />

Im Falle e<strong>in</strong>es Rechnerausfalls, kann <strong>der</strong> letzte Zustand mit den Log-<br />

<strong>E<strong>in</strong></strong>trägen und e<strong>in</strong>er eventuellen Koord<strong>in</strong>ator-Anfrage wie<strong>der</strong>hergestellt<br />

werden. Erhält e<strong>in</strong> Agent ke<strong>in</strong>e Prepare-Nachricht, so entscheidet er nach<br />

Ablauf e<strong>in</strong>es Timeouts e<strong>in</strong> lokales Abort. Nach dem Versandt <strong>der</strong> READY -<br />

Nachricht besteht die Gefahr <strong>der</strong> Blockierung, falls ke<strong>in</strong>e neue entsprechende<br />

Nachricht empfangen wird. In <strong>der</strong> Entscheidung e<strong>in</strong>es Abbruchs e<strong>in</strong>er<br />

Transaktion ist je<strong>der</strong> Agent weitgehend autonom. Sobald er jedoch die<br />

Ready-Nachricht an den Koord<strong>in</strong>ator schickt, verzichtet er auf <strong>das</strong> Recht<br />

dieser Entscheidung und willigt e<strong>in</strong> e<strong>in</strong>e globale Entscheidung zu übernhemen.<br />

Wird dem Agenten wegen e<strong>in</strong>es Koord<strong>in</strong>ator-Ausfalls ke<strong>in</strong>e Entscheidung<br />

mitgeteilt, so kann er grundsätzlich nicht mehr entscheiden was zu machen<br />

ist, ohne die Gefahr <strong>der</strong> System-Inkonsistenz e<strong>in</strong>zugehen. <strong>E<strong>in</strong></strong>e Hilfe bei<br />

<strong>der</strong> Entscheidungsf<strong>in</strong>dung kann es se<strong>in</strong> an<strong>der</strong>e an <strong>der</strong> selben Transaktion<br />

beteiligten Agent zu befragen, ob diese möglicherweise e<strong>in</strong>e globale Anweisung<br />

erhalten haben o<strong>der</strong> ihre Subtransaktion nicht ausführen konnten.<br />

Vorraussetzung hierfür ist natürlich, <strong>das</strong>s die beteiligten Agent auch<br />

bekannt s<strong>in</strong>d. Grundsätzlich muß aber gewartet werden, bis <strong>der</strong> Koord<strong>in</strong>ator<br />

wie<strong>der</strong> funktionsfähig ist und <strong>das</strong> Ergebnis <strong>der</strong> Transaktion mitteilen<br />

kann. Solange muss <strong>der</strong> Agent blockieren und darf gesperrte Resourcen<br />

nicht wie<strong>der</strong> freigeben, um Inkonsistenzen zu vermeiden.<br />

18


5.3 Drei-Phasen-Commit(3PC)<br />

<strong>E<strong>in</strong></strong>e Hauptschwäche des 2PC-Protokolls ist die starke Abhängigkeit <strong>der</strong><br />

Agenten vom Koord<strong>in</strong>ator und die damit verbundene Blockierungen bei<br />

e<strong>in</strong>em Ausfall. Als Verbesserung entwickelten D. Skeen und M. Stonebreaker<br />

1983 <strong>in</strong> ihrer Arbiet ”A Formal Model of Crash Recovery <strong>in</strong> a<br />

Distributed System” <strong>das</strong> 3PC-Protokoll, welches <strong>das</strong> Blockadeproblem auf<br />

Kosten e<strong>in</strong>es gesteigerten Aufwands und zwei Annahmen abschwächt.<br />

1. Ke<strong>in</strong>e Partitionierung des Netzwerks(völlig getrennte Bereiche/Cluster)<br />

2. Höchstens K gleichzeitige Rechnerausfälle, bei N Sites mit K < N<br />

Der Abortfall läuft genau wie beim 2PC-Protokoll ab. Erhält <strong>der</strong> Koord<strong>in</strong>ator<br />

nach dem Prepare e<strong>in</strong> Ready von allen beteiligten Agenten, so<br />

verschickt er e<strong>in</strong>e Pre-Commit-Nachricht an alle Agenten, worauf diese<br />

mit e<strong>in</strong>er Pre-Ack-Nachricht antworten müssen. Erhält <strong>der</strong> Koord<strong>in</strong>ator<br />

m<strong>in</strong>destens K Pre-Ack-Nachricht, so trifft er die Entscheidung e<strong>in</strong>es Commits<br />

und verschickt diese nach e<strong>in</strong>er Protokollierung an alle Agenten. Bei<br />

e<strong>in</strong>em Koord<strong>in</strong>ator-Ausfall(z.B. Timeout) während <strong>der</strong> Prozedur muss e<strong>in</strong><br />

neuer Koord<strong>in</strong>ator ermittelt werden. Dieser fragt die Commitzustände <strong>der</strong><br />

verbliebenen Agenten ab und globalisiert e<strong>in</strong>e gefundene Entscheidung<br />

falls e<strong>in</strong>er <strong>der</strong> Beteiligten bereits e<strong>in</strong>e Commit o<strong>der</strong> e<strong>in</strong>e Abort Meldung<br />

vor dem Ausfall erhalten hat. Sollte noch ke<strong>in</strong>er <strong>der</strong> Verbliebenen e<strong>in</strong>e<br />

Entscheidung erhalten haben, aber m<strong>in</strong>destens e<strong>in</strong>er bef<strong>in</strong>det sich im Status<br />

Pre-Commit, dann setzt <strong>der</strong> neue Koord<strong>in</strong>ator den Vorgang mit e<strong>in</strong>er<br />

neuen Serie von Pre-Commit-Nachrichten fort. Falls ke<strong>in</strong>er <strong>der</strong> Agenten<br />

zuvor e<strong>in</strong> Pre-Commit erhalten hat, so entscheidet <strong>der</strong> neue Koord<strong>in</strong>ator<br />

e<strong>in</strong>en Abort und verbreitet diese Entscheidung im Netzwerk. So ist unter<br />

den obigen Vorraussetzung gewährleistet, <strong>das</strong>s gesperrte Resourcen nach<br />

e<strong>in</strong>er bestimmten Zeit wie<strong>der</strong> freigegeben wird und e<strong>in</strong>e Verbesserung im<br />

Vergleich zum 2PC erreicht.<br />

19


6 Fazit und Ausblick<br />

Das <strong>Gebiet</strong> <strong>der</strong> Datenbanken ist schon relativ weit entwickelt, jedoch f<strong>in</strong>det<br />

<strong>der</strong> Paradigmenwechsel von zentralisierten zu verteilten und gar Peer-to-<br />

Peer ähnlichen Lösungen erst jetzt statt, was die spärliche Verbreitung<br />

kommerzieller Systeme vorallem im extrem verteilten Segment <strong>der</strong> Datenverwaltung<br />

erklärt. Dieser Trend wird sich vorraussichtlich durch die deutlich<br />

höhere Kosteneffektivität, ger<strong>in</strong>geren Wartungsaufwand und Robustheit<br />

verteilter Systeme sogar noch steigern. Im Bereich <strong>der</strong> Forschung s<strong>in</strong>d<br />

unter an<strong>der</strong>em auch erweiterte Transaktions und Verarbeitungskonzepte<br />

speziell für neuere Datenbankmodelle, <strong>in</strong> denen Transaktionen Stunden<br />

o<strong>der</strong> sogar Tage dauern können, noch zu entwerfen. Die Entwicklung zuverlässiger<br />

Recovery-Strategien <strong>in</strong> solchen Systemen ist e<strong>in</strong>e <strong>der</strong> Aufgaben,<br />

die bislang noch ungelöst s<strong>in</strong>d und begrenzen dadurch den <strong>E<strong>in</strong></strong>satz <strong>in</strong> kommerziellen<br />

Systemen.<br />

20


Literatur<br />

[1] Peter Dadam. Verteilte Datenbanken und Client/Server-Systeme.<br />

Spr<strong>in</strong>ger-Verlag, 1996.<br />

[2] Andreas Heuer Gunter Saake, Kai-Uwe Sattler. Datenbanken -<br />

Konzepte und Sprachen. mitp, 2008.<br />

[3] Patrick Valduriez M. Tamer Ãszu. Pr<strong>in</strong>ciples of Distributed Database<br />

Systems. Spr<strong>in</strong>ger-Verlag, 1996.<br />

[4] Andreas Reuter Theo Haer<strong>der</strong>. Pr<strong>in</strong>ciples of transaction-oriented<br />

database recovery, 1983.<br />

21

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!