# Verteiltes Datenbankmanagementsystem

Ein verteiltes Datenbankmanagementsystem ist eine Art von Datenbankmanagementsystem (DBMS), das sich durch unterschiedliche Grade an Autonomie, Heterogenität und Verteilung (Mehrrechner-Datenbanksystem) auszeichnet. Je nach Ausprägung dieser drei Kriterien lassen sich verschiedene verteilte DBMS unterscheiden.
Beispiele für verteilte DBMS sind Master-Slave-Systeme, Client-Server-Systeme (gering verteilt) und Peer-to-Peer Systeme (stark verteilt).

## Autonomie

Die Autonomie eines (verteilten) Datenbankmanagementsystems bezeichnet den Grad, zu dem verschiedene miteinander verbundene DBMS unabhängig voneinander operieren können. Dabei können unabhängige Entscheidungen hinsichtlich des Designs, der Kommunikation und der Ausführung getroffen werden. Ein hoher Grad an Autonomie führt durch unterschiedliche Entscheidungen in der Regel auch zu einer wachsenden Heterogenität.
Man unterscheidet dabei folgende Autonomien:
* Die Kommunikationsautonomie einer verteilten Datenbank (VDB) bezieht sich auf die Fähigkeit, über die Kommunikation mit anderen Teilen der Datenbank zu entscheiden.
* Die Ausführungsautonomie bezieht sich auf die Fähigkeit eines Teils der VDB, lokale Operationen ohne Einwirkung durch externe Operationen anderer Teile auszuführen und die Ausführungsordnung selbst zu bestimmen.
* Die Assoziationsautonomie eines Teils der VDB impliziert, dass es entscheiden kann, ob und in welchem Umfang es seine Funktionalität und Ressourcen mit anderen Teilen teilt.
Bei einem hohen Grad von Autonomie spricht man auch von einem föderierten DBMS bzw. einer „Föderierten Datenbank“ im Gegensatz zu einer integrierten Datenbank. Die Bezeichnung „föderiert“ statt „verteilt“ betont, dass die Systeme unabhängig voneinander entstanden sind, während ein stark verteiltes System auch aus autonomen Komponenten entworfen worden sein kann.

## Heterogenität

Bei einem hohen Grad von Homogenität spricht man von einem homogenen DBMS, d. h. die verwendeten Systeme sind sich im Wesentlichen ähnlich, bzw. gleich. Ein triviales Beispiel dafür ist ein asymmetrisches verteiltes System (Client-Server System) bestehend aus Personal Computern, auf denen jeweils dasselbe Betriebssystem betrieben wird und die ausnahmslos die gleichen DB-Anwendung betreiben.
Im Gegensatz dazu existieren auch heterogene DBMS. Diese verwenden entsprechend unterschiedliche Systeme und Anwendungen. Ein Beispiel hierfür sind Krankenhausinformationssysteme, denn in Abhängigkeit von den jeweiligen Abteilungen (Labor, Patientenverwaltung, Buchhaltung, Dienstplanung) entstehen sehr vielfältige Daten (Bild, Ton, Text etc.). Die verwendeten Programme – insbesondere in Unikliniken – sind meist spezielle Entwicklungen, die über den definierten Aufgabenbereich hinaus keine Anwendung finden (jede Abteilung nutzt ihre eigene Software). Aus diesem Grund werden in größeren Kliniken Informatiker mit der Planung, Entwicklung und Wartung solcher Systeme beauftragt.

## Implementierungen

In den 1980er Jahren gab es bereits Prototypen funktionsfähiger verteilter Datenbanken, jedoch war zu dieser Zeit das Problem vorhanden, dass Netzwerkprotokolle selten standardisiert waren, sodass die Implementierungen nur unter sehr spezifischen Umgebungen lauffähig waren.
Einige Entwicklungen, die zumindest zum Teil Funktionen von verteilten Datenbanksystemen enthalten, sind:
* Oracle Database
* SDD-1
* IBM System R
* IBM DB2 (geht auf System R zurück)
* Distributed Ingres
* HEaD
* Ingres/Star
* Tandem NonStop SQL
* Informix
* Bitcoin
* IBM Notes
* I2P