DB2-Administration: Datenbankgrundlagen

07.04.2005 von JENS ORHANOVIC, IVO GRODTKE  und Michael Tiefenbacher
Datenbanken sind inzwischen ein nicht mehr wegzudenkender Teil der Computerwelt. In unserer neuen dreiteiligen Artikelserie geben wir Ihnen einen Einblick in die Administration der DB2-Datenbank von IBM.

In der heutigen Zeit haben die Datenhaltung, -verarbeitung und -auswertung einen Stellenwert erreicht, der vor kurzem noch undenkbar war. Selbst ein großes Unternehmen kam vor etwa 30 Jahren noch problemlos damit aus, Daten in Papierform zu erfassen, zu verwalten und auszuwerten. Dies ist heute in den Industrienationen nicht einmal mehr für eine Privatperson realisierbar. Die Datenflut - verursacht durch Bilder, digitale Video-Filme, Adressen, Telefonnummern, Geldanlagen, Steuererklärungen, Preisauskünfte über das Internet und nicht zuletzt E-Mails - markiert dabei lediglich den Beginn der Auswirkungen der "Elektronisierung" unserer Umwelt.

Ein Blick auf die Art und Weise, wie heute die immer größer werdenden Datenmengen verwaltet und ausgewertet werden, lässt jedoch erkennen, dass genau bei dieser Aufgabe noch Pionierarbeit geleistet werden muss. Viele große Unternehmen sind deshalb in den letzten Jahren dazu übergegangen, relationale Datenbanksysteme einzusetzen. Allein der Einsatz eines relationalen Datenbanksystems führt aber nicht zwangsweise zum gewünschten Erfolg. Denn je komplexer und mächtiger ein System ist, umso höher werden die Anforderungen an den Nutzer dieses Systems.

Mit unserer neuen dreiteiligen Artikelreihe bieten wir Ihnen eine Einführung in die Administration der Datenbank DB2.

Unsere Artikelserie ist dem ersten Kapitel des Buches "DB2 Administration - Einführung, Handbuch und Referenz" von Jens Orhanovic, Ivo Grodtke und Michael Tiefenbacher entnommen. Erschienen ist das 640 Seiten umfassende Werk im Verlag Addison-Wesley. Sie können das komplette Buch in unserem Buchshop bestellen oder als eBook beziehen.

Serie: DB2-Administration

Teil 1

Datenbankgrundlagen

Teil 2

Definition einer Datenbank

Teil 3

Unterschiedliche Einsatzgebiete

Datenbankgrundlagen

Nicht erst seit der Einführung der elektronischen Datenverarbeitung beschäftigt man sich mit der Datenhaltung, -verwaltung, -verarbeitung und -auswertung.

Da wir zum Teil selbst die Veränderungen der EDV von der Lochkarte bis heute miterleben durften, denken wir, dass ein Blick auf die Historie und Grundlagen dieser Systeme sehr hilfreich ist, um ein gewisses Grundverständnis für die Aufgaben eines Datenbank-Managementsystems zu erlangen.

Es gibt auch heute noch genügend Anwendungen, die auf Vorgänger der relationalen Datenbanksysteme zugreifen, um mit "IMS" (Information Management System, eine hierarchische Datenbank) nur ein Beispiel zu nennen.

Historie der relationalen Datenbanksysteme

Den Anfang machten in den 70er Jahren Systeme wie hierarchische beziehungsweise Netzwerkdatenbanken. Diese hatten den Nachteil, dass die gesamte Anwendungslogik im Programmcode vorausgesetzt wurde. Einfache Abfragemöglichkeiten bestanden nicht.

Mitte der 70er Jahre schuf Edgar Codd in einem Forschungsprojekt bei IBM die theoretischen Grundlagen für relationale Datenbanken und Datenbanksysteme. Zusammen mit Chris Date wurden diese weiterentwickelt und vervollständigt.

Die Codd'schen Regeln

Die Grundlage für die Aufgaben eines relationalen Datenbanksystems bildeten die bis heute gültigen Codd'schen Regeln, die wir im Folgenden in unseren eigenen Worten aufführen.

Codd'sche Regeln II

Historie der DB2

Auf Basis der zuvor erwähnten Codd'schen Regeln entstand 1975 und 1976 aus einem IBM-Forschungsprojekt mit System R die erste Implementierung des relationalen Modells. Diese wurde 1977 erstmalig als Prototyp bei IBM-Kunden installiert.

Auf der Grundlage dieses Systems stellte IBM 1982 mit dem Produkt SQL/DS erstmals ein relationales DBMS für die Betriebssysteme VM und VSE zur Verfügung.

DB2 hieß ursprünglich Database 2 und war zum ersten Mal 1983 unter dem Betriebssystem MVS verfügbar. Als Ausgangssystem diente ebenfalls System R. Es handelt sich hierbei also um eine parallele Entwicklung zu SQL/DS. Mit dem Betriebssystem OS/400 wird seit 1988 das integrierte SQL/400 ausgeliefert, das heute DB2 für AS400 heißt.

1987 kündigte IBM mit dem Betriebssystem OS/2 V1 und der Erweiterung OS/2 Extended Edition die ersten relationalen Datenbankfähigkeiten auf einem dezentralen System an. Hierbei handelt es sich um den Vorläufer der heutigen DB2 UDB. Als eigenständiges Datenbankprodukt erschien 1991 der Vorgänger von DB2 unter dem Namen OS/2 Database Manager. 1993 wurde die DB2-Datenbank unter dem Namen DB2 V1 für die Betriebssysteme OS/2 und AIX vermarktet. Seit der Version DB2 Common Server V2, der ersten objektrelationalen und webfähigen Datenbank, die 1995 veröffentlicht wurde, wird auch das Betriebssystem Windows unterstützt. Inzwischen werden mit der DB2 UDB V8 alle gängigen Server-Betriebssystemplattformen inklusive Linux unterstützt.

Nutzung von relationalen Datenbank-Managementsystemen

Um den Umgang mit der Komplexität relationaler DBMS zu erleichtern, teilt man die Aufgaben eines RDBMS wie folgt ein:

Aufgaben des Modellierers

Das Datenmodell ist die wichtigste Grundlage einer konsistenten und performanten Datenbank. Der Modellierer erstellt auf Grund der Geschäftsanforderung das entsprechende Datenmodell. Die Arbeitsschritte der Modellierung sind in drei konzeptionelle Ebenen unterteilt:

Warum werden die Schritte der Modellierung auf drei Ebenen unterteilt? Wenn Sie vor der Aufgabe stehen, ein Datenmodell einer komplexeren Geschäftslogik zu erstellen, merken Sie sehr schnell, dass es sich dabei um eine nicht zu verachtende Herausforderung handelt.

Zum einen ist da der Endbenutzer, der Sie mit sämtlichen Informationen der Geschäftslogik überhäuft, zum anderen sind bestimmte Vorgänge und Verantwortungen in den Firmen häufig nicht definiert. Außerdem müssen Sie die Normalformen des relationalen DB-Designs einhalten, um ganz zum Schluss die Speicherform der Daten für die zum Einsatz kommende Datenbank in optimaler Form bestimmen zu können.

Bei der Verwaltung der eigenen Video-Filme mag das ja noch ganz gut aus dem Bauch heraus möglich sein. Bei komplexeren Geschäftsverfahren helfen hier jedoch nur ein akkurates Vorgehen und die getrennte Betrachtung der einzelnen Aufgaben nach den zuvor erwähnten Ebenen. Da die Komplexität der Datenmodellierung genug Stoff für ein eigenes Buch liefert, werden wir in diesem Kapitel nicht weiter darauf eingehen.

Dennoch möchten wir darauf hinweisen, dass bei den meisten Performance- und Tuning-Betrachtungen, die wir in der Praxis durchführen, die Ursachen für Probleme in unzureichendem Datenbank-Design zu finden sind. Und nicht zuletzt erschwert häufig eine fehlende Dokumentation die Untersuchung sowie die Nutzung des bestehenden Datenmodells.

Aufgaben des Programmierers

Der Programmierer hat im Wesentlichen zwei Hauptaufgaben:

An dieser Stelle weisen wir darauf hin, dass die Trennung zwischen der eigentlichen Programmierung in einer Programmiersprache und der Erstellung der SQL-Befehle ganz strikt gehandhabt werden sollte.

Warum ist das so notwendig? Wir selbst hatten bis zu dem ersten Einsatz einer relationalen Datenbank mehrere Jahre Programmiererfahrung. Somit gingen wir unsere ersten Projekte zur Entwicklung von Datenbankanwendungen mit der Einstellung an: "Was man nicht selbst programmiert, kann nicht sehr performant sein."

Somit ist es für uns nicht verwunderlich, dass wir genau diese Einstellung bei den meisten Programmierern wiederfinden. SQL ist aber im Gegensatz zu einer prozeduralen oder einer objektorientieren Programmiersprache eine mengenorientierte Abfragesprache. Das bedeutet, hier müssen sich die Gedanken nicht auf das "Wie", sondern auf das "Was" konzentrieren. Dies sind zwei prinzipiell unterschiedliche Denkansätze, und sie sollten nicht vermischt werden.

Versucht man dennoch, diese Ansätze zu vermischen, führt das in der Praxis dazu, dass meist nur sehr einfache SQL-Statements erstellt werden und die eigentliche Verarbeitungslogik im Programm steckt. Da die Möglichkeiten des relationalen Datenbanksystems nicht genutzt werden, hat dies in den meisten Fällen den gefürchteten Performance-Verlust zur Folge.

Empfehlung für Programmierer

Somit lautet unsere Empfehlung wie folgt: Bevor überhaupt eine einzige Zeile Programmcode in Bezug auf die Datenbank geschrieben wird, sollten erst alle SQL-Anweisungen geschrieben und getestet werden. Beim Testen muss nicht nur auf die Richtigkeit, sondern auch schon auf die Performance geachtet werden. Hierzu stellt DB2 verschiedene ausgezeichnete Tools zur Verfügung (wie beispielsweise Explain). Wählt man diese getrennte Vorgehensweise, kann man sehr schnell und noch vor der eigentlichen Programmierung folgende Fragen klären:

Wir denken, die Vorteile der drei aufeinander folgenden Arbeitsschritte liegen klar auf der Hand. Denn missachtet man diese Trennung und Reihenfolge, und ist der Programmcode erst einmal geschrieben, sind die Änderungen sehr viel aufwendiger bzw. fast unmöglich.

Aufgaben des Administrators

Die Administration kann aus Sicht eines RDBMS in zwei Gebiete unterteilt werden:

Diese Aufteilung macht eine Trennung der plattformabhängigen und der plattformunabhängigen Aufgaben möglich. Während die Administration des DBMS stark vom Betriebssystem beeinflusst wird, ist die Administration der Datenbanken nahezu plattformunabhängig. Je nach Größe und Komplexität des Betriebs ist es sogar sinnvoll, diese Aufgabengebiete unterschiedlichen Personen zuzuordnen.

Aufgaben der Datenbank-Systemadministration

Das Aufgabengebiet der Datenbank-Systemadministration umfasst im Wesentlichen alle betriebssystemnahen Aufgaben.

Dazu gehören:

Aufgaben der Datenbankadministration

Die Aufgabe des Datenbankadministrators besteht in der eigentlichen Verwaltung der Datenbanken.

Hierunter fallen folgende Hauptaufgaben:

Der Datenbankadministrator ist derjenige, der das eingesetzte DBMS und dessen Eigenschaften sehr gut kennen muss. Er ist der Hauptansprechpartner für alle weiteren Beteiligten (Benutzer, Programmierer, Modellierer und Systemadministratoren). Je nach Größe des Unternehmens und Anzahl der eingesetzten DBMS bzw. Datenbanken handelt es sich bei dieser Aufgabe nicht selten um einen Vollzeitjob.

Dennoch stellen wir in der Praxis sehr häufig fest, dass genau dieser Job unterschätzt wird und einfach von einem Mitarbeiter nebenbei gemacht werden soll. Sicherlich wirbt heute jeder Datenbankhersteller mit einem nahezu wartungsfreien System. Aber auch hier gilt: Je wartungsfreier ein System ist, umso komplexer ist es.

Um wieder auf das Beispiel des Jumbojets zu kommen: Auch er besitzt eine hochkomplexe Technik, die dem Piloten und den Ingenieuren die Arbeit weit gehend abnimmt. Dennoch glauben wir nicht, dass man auf die Idee kommen würde, die Ausbildung und die Arbeit des Piloten zu unterschätzen. Das soll nicht heißen, dass jedes Unternehmen, das ein RDBMS einsetzt, einen Vollzeit-Administrator benötigt. Hier hängt es vielmehr davon ab, welche Ansprüche an das gesamte DV-System gestellt werden und welche Automatismen und Wartungsverfahren vorhanden und vorgesehen sind.

Aufgaben der Endbenutzer

Der Endbenutzer ist derjenige, der die Daten und Objekte, die von der Datenbank zur Verfügung gestellt werden, über die verschiedensten Schnittstellen nutzen kann.

Als Schnittstellen stehen dem Benutzer folgende Möglichkeiten zur Verfügung:

SQL-Standardabfrage-Tools, wie zum Beispiel:

Im Prinzip gibt es zwei Gruppen von Endbenutzern:

Der Endbenutzer, der mit vorgefertigten Wegen und Lösungen arbeitet, erkennt in der Regel keinen Unterschied zu Systemen, die kein RDBMS als Datenbankgrundlage nutzen. Im Gegensatz dazu wird der Nutzer mit SQL-Kenntnissen die Vorzüge eines RDBMS sehr schnell zu schätzen lernen. Die einfache Nutzung der SQL-Schnittstelle ermöglicht es dem Benutzer, jederzeit die gespeicherten Daten, die zur Verfügung gestellten Objekte und SQL-Erweiterungen, wie beispielsweise UDFs (User Defined Functions), UDTF (User Defined Table Functions), gespeicherte Prozeduren (Stored Procedures), gespeicherte Abfragetabellen (MQTs, also materialisierte Abfragetabellen) und Sichten (Views) für eigene Ad-hoc-Auswertungen zu nutzen.

Dieser enorme Vorteil einer relationalen Datenbank versetzt ein Unternehmen in die Lage, seine Auswertungen und somit seine benötigten Geschäftsinformationen schnell an die sich ändernden Bedingungen des Markts oder an eine bestimmte Situation anzupassen. Dies führt dazu, dass der eigentlich technische Vorteil sofort als betriebswirtschaftlicher Vorteil genutzt werden kann. Die Grundvoraussetzungen für eine sinnvolle und performante Nutzung der Daten bilden jedoch die SQL-Kenntnisse, das richtige Datenbank-Design und dessen übersichtliche Dokumentation.

Ausblick

Im nächsten Kapitel beschäftigen wir uns näher mit der grundlegenden Definition einer Datenbank. Zusätzlich erläutern wir einige ausgewählte Datenbankobjekte.

Unsere Artikelserie ist dem ersten Kapitel des Buches "DB2 Administration - Einführung, Handbuch und Referenz" von Jens Orhanovic, Ivo Grodtke und Michael Tiefenbacher entnommen. Erschienen ist das 640 Seiten umfassende Werk im Verlag Addison-Wesley. Sie können das komplette Buch in unserem Buchshop bestellen oder als eBook beziehen.

Serie: DB2-Administration

Teil 1

Datenbankgrundlagen

Teil 2

Definition einer Datenbank

Teil 3

Unterschiedliche Einsatzgebiete