[zurück] [vorwärts]
 
1. Warum paralleler Input/Output?

Die Zeit, die zwischen dem Absetzen einer Anfrage an ein Datenbanksystem und der Lieferung des Ergebnis vergeht, setzt sich zum einen aus der Optimierung und Abarbeitung der Anfrage durch das Datenbankmanagementsystem zusammen, besteht aber auch zum anderen - und dies nicht zu knapp - aus der Zeit, die benötigt wird, die entsprechenden Relationen von der Festplatte zu lesen und in den Speicher zu laden.  Da sich die Prozessorleistung in den letzten Jahren stetig verbessert hat, dies jedoch im Verhältnis gesehen bei den Zugriffszeiten von Festplatten nicht der Fall war, liegt hier immer noch eine Schwachstelle von DBS in bezug auf die Geschwindigkeit.  Hinzu kommt, das der Plattenspeicher von Datenbanken mitunter enorme Ausmaße anzunehmen hat.  Hier offenbart sich das zweite Problem, denn große Platten sind i.d.R. auch sehr teuer.

Ein Lösungsansatz für dieses zweischneidige Problem sind die so bezeichneten Redundant Arrays of Inexpensive Disks (RAID).  Allgemein gesprochen, handelt es sich dabei um eine Kopplung von vielen kleineren (und kostengünstigen) Platten, die von Außen gesehen wie eine große Platte agieren.  Diese "eng gekoppelten" Disk-Arrays Verfügen über einen speziellen Disk-Array-Controller, über welchen der Input und Output des Arrays läuft, so daß z.B. ein Datenbank Management System (DBMS) mit dem RAID arbeiten kann, als sei es eine große Platte, und sich nicht um die Interna der Datenallokation kümmern muß. Daneben gibt es "lose gekoppelte" Disk-Arrays, bei denen die Aufgaben des Disk-Arrays-Controlers von einer Software übernommen wird.

 Neben dem kostengünstigen Erreichen eines großen Plattenspeichers ist durch die I/O-Parallelität der einzelnen Platten auch eine Verbesserung der Zugriffszeit realisiert. Zum einen können viele I/O-Aufträge parallel ausgeführt (die sog. Auftragsparallelität [1], die vor allem dann günstig ist, wenn viele kleine Aufträge gleichzeitig vom System bearbeitet werden müssen, wie z.B. beim Transaktionssystem von Banken) werden oder ein großer Auftrag kann parallel mit mehreren Platten arbeiten (auch als Zugriffsparallelität [1] bezeichnet; vor allem verwendet, wenn große Files wie z.B. Satellitenbilder in kurzer Zeit gelesen werden müssen).  Dies setzt voraus, daß z.B. große Relationen über mehrere Platten verteilt werden.  Dabei ist vor allem zu beachten, wie die Relation aufgeteilt wird, wo dann die einzelnen Teile der Relation positioniert werden (Datenpartitionierung, Datenallokation), wobei dann zu beachten ist, daß die Zugriffslasten auf alle Festplatten gleichmäßig verteilt werden (Lastbalancierung). Außerdem besteht das Problem, daß sich mit Einsatz vieler Festplatten die Wahrscheinlichkeit für einen Datenverlust durch einen Plattenfehler potenziert.  Darum gehören zu Disk-Arrays auch immer geeignete Fehlerkorrekturmechanismen. Da diese mit Redundanzen der gespeicherten Daten arbeiten, kam man zu dem bereits erwähnten Redundant Array of Inexpensive Disks.

 Hingegen ist es z.B. in verteilten Datenbanken angebrachter, die Datenpartitionierung direkt auf DBS-Ebene zu vollführen und dies nicht wie bei den RAIDs dem Disk-Array-Controller zu überlassen.  Dieser Vorgang wird auch als Fragmentierung bzw.  Declustering bezeichnet.


Erstellt: 20.12.1997
Zuletzt geändert: 20.12.1997
Autor: Gerrit Gragert