Champine-Bericht, Teil IV:

Tendenzen auf dem Gebiet der verteilten Datenbanksysteme

15.06.1979

Mit "Tendenzen in der Datenbankrechner-Architektur" befaßt sich die vierte Folge des Champine-Berichts über "verteilte Datenbanksysteme". Champines These: Die Leistungsanforderungen wurden durch fast gewaltsame Verbesserungen der Hardwaregeschwindigkeit befriedigt.

Leistung

Wenn den verlangten Funktionen und den verwendeten Algorithmen nicht sorgfältige Beachtung geschenkt wird, kann die Leistung bei verteilten Systemen zu einem Problem werden. Als Beispiel möge eine Anfrage dienen, welche auf Querverweise von Daten verschiedener Knotenpunkte zurückgreifen muß, zum Beispiel eine Verbindung (join). Eine solche Aufgabe kann mit einer signifikanten Verzögerung verbunden sein, weil an einem Knotenpunkt alle für die Querverweisoperation notwendigen Daten zusammengebracht werden müssen.

Eine Lösung (ROTHN 77A), mit welcher derartige Operationen realisiert werden können, besteht in der Auflösung der Anfrage in eine Sequenz von lokalen Anfragen, die ihrerseits nur lokale Daten erfordern, wobei internodale Datenübertragungen zwischen den lokalen Anfragen erfolgen. Der Algorithmus besteht aus einer Reihe von Schritten, von denen jeder entweder eine Datenverschiebung oder eine lokale Verarbeitung darstellt, die an einen einzigen Platz verschoben wurde.

Diese Methode beruht auf der Annahme, daß die Verkehrskosten die Verarbeitung komplexer Anfragen in einer verteilten Umgebung dominieren. Deshalb versucht der Optimierungsprozeß mit jedem Schritt zuerst die Verkehrskosten zu minimieren und erst dann, mit einer optimalen Verkehrsstrategie, die lokalen Verarbeitungskosten. Das Ergebnis ist normalerweise eine starke Erhöhung der lokalen Verarbeitung, um die Menge der übertragenen Daten so gering als möglich zu halten.

Bei zentralisierten Systemen ist die Behandlung einer Systemdysfunktion eine Kombination von Vor- und Nachprüfungen auf einer Prüfkette mit Prüfpunktauszügen zur Lieferung konsistenter Datenstichproben. Obwohl die Fehlerbehandlung in einem zentralisierten System komplex sein kann und manuelle Interventionen notwendig werden können, erreicht sie bei verteilten Systemen mitunter eine noch weit höhere Komplexität. Sie kann aber weit effizienter sein wenn redundante Daten verwendet werden.

Fehlerbehandlung

In einem untergegliederten System ohne Redundanz ist das Fehlerbehandlungsproblem bei Knotenpunktausfällen logischerweise identisch mit derjenigen. in einem zentralisierten System. Auch die Behandlungstechniken sind ganz ähnlich. Der einzige Unterschied liegt darin, daß nicht alle Anfragen lokal sind - doch ist dies nur eine physische - nicht aber eine logische Differenz. Prüfketten und Prüfpunktauszüge weil den gleichermaßen verwendet. Im Falle eines Ausfalls werden alle Transaktionen suspendiert, während das System sich mit den Vor- und Nachprüfungen wiederherstellt. Gelingt dies nicht, so wird die Prüfkette bis zum letzten Prüfpunktauszug weiterverfolgt, der Auszug in die Datenbank kopiert und dann mit Hilfe der Prüfkette bis zu dem Punkt verarbeitet, an dem die Suspendierung erfolgte. An diesem Punkt werden die Transaktionen wieder akzeptiert. Wenn es auf eine schnelle Fehlerbehandlung ankommt, kann es eine gute Idee sein, ein aktualisiertes Duplikat der Daten zu bewahren. Dadurch wird die Behandlung von Massenspeicherausfällen, nicht aber diejenige von Rechnerausfällen beschleunigt.

Bei Übertragungsfehlern in untergliederten Datensystemen erhalten die Ursprungsknotenpunkte keine Quittierung von Meldungen. Die ganze Last der Fehlerbehandlung fällt auf die Ursprungsknotenpunkte. Diese müssen in eine Warteschlange gesetzt werden, bis die Übertragung wieder aufgenommen wird.

Bei replizierten Datensystemen sieht die Sache ganz anders aus. Bei Übertragungs- oder Knotenpunktausfällen kann das übrige System normal weiterarbeiten, wobei nur die Transaktionen, die vom ausfallenden Knotenpunkt ausgehen, gestoppt werden. Nimmt der Knotenpunkt oder die Verbindung den Betrieb wieder auf, so bestehen zwei Wahlmöglichkeiten. War der Ausfall kurzdauernd, so ist es am besten, die verlorenen Aktualisierungen von der Prüfkette eines anderen Knotenpunkts zu erhalten. Bei langem Ausfall ist es am günstigsten, die gesamte Datenbank von einem nachliegenden Knotenpunkt zu erhalten, und zwar zusammen mit dem Zeitstempel oder der Ticketnummer der letzten Aktualisierung. Diese würde zu einem (sehr neuen) Prüfpunktauszug und könnte über die Prüfkette weiterverarbeitet werden.

Es scheint, daß in einen replizierten Datensystem die Knotenpunkte keine Prüfpunktauszüge erstellen müssen, weil Kopien an anderen Knotenpunkten diese Aufgabe erfüllen. Eine Ausnahme liegt vor, wenn die Datenbank sehr groß ist im Vergleich zur verfügbaren Reservebandbreite für die Übertragung, was zu langen Übertragungszeiten führen würde. Jeder Knotenpunkt würde in diesem Falle eine Prüfkette brauchen, wie es in nichtredundanten Datensystemen der Fall ist.

Tendenzen in der Datenbankrechner-Architektur

Kurz nach der Erfindung des speicherprogrammierten elektronischen Digitalrechners im Jahre 1946 wurden die Speicherung und Abrufung nichtnumerischer Information zu einer wichtigen Anwendung. Mit wenigen Ausnahmen wurden die frühen Dateizugriffsysteme seit Mitte der 50er Jahre und die Datenbanksysteme seit Anfang der 60er Jahre auf herkömmlichen Von-Neumann-Rechnern abgebildet. Obwohl die wünschenswerte Zugriffsart für nichtnumerische Daten diejenige via Wert ist, ist der Aufbau des Von-Neumann-Rechners dafür nicht geeignet. Daher wird eine Reihe künstlicher Methoden verwendet um einen Wert in eine Adresse umzuwandeln. Diese Methoden umfassen sequentielle, indizierte, kontrollsummierte und Via-Set-Methoden. Trotz dieser indiskreten Methode der Informationslokalisierung konnten diese Zugriffsarten die Bedürfnisse der Branche bis heute weitgehend erfüllen. Freilich ist die Forschung im Bereich vieler Aspekte der Datei- und Datenbanksysteme hinsichtlich verbesserter Funktionalität, Leistung und Verfügbarkeit vorangetrieben worden.

Die 25jährige Forschung mit dem Ziel eine bessere Funktionalität zu erreichen, hat zu unseren heutigen Datenbanksystemen geführt, ursprünglich mit Netzwerklösungen, heute mit wachsendem Interesse an relationellen Lösungen. Die Leistungsanforderungen wurden durch fast gewaltsame Verbesserungen der Hardwaregeschwindigkeit befriedigt. Das einzige Element, das keine Veränderung erfuhr, war die Architektur.

Assoziative Speicherung

Das Konzept des Datenbankcomputers lebt entscheidend vom Datenzugriff nach Wert anstatt nach Position. Geräte welche dies möglich machten, wurden "Assoziativspeicher", "inhaltsadressierte Speicher" oder "Suchspeicher" genannt. Zwei recht verschiedene Typen von Speichereinheiten haben die Bezeichnung "Assoziativspeicher" erhalten, was zu einer unglücklichen terminologischen Konfusion Anlaß gegeben hat. Die ersten Entwicklungen mit dieser Fähigkeit vollführten eine parallele Suche in einer Festkörper-Speichereinheit von einigen Tausend Byte in der Zeitspanne von Mikrosekunden. Wir verwenden für diese Technik den Begriff "parallele assoziative Speicherung". Sie wird von "Staran" (BERRA 76) typisiert. Die einzige andere Anwendung paralleler assoziativer Speichereinheiten scheint, heute bei der Cache-Technik zu bestehen, wo oft der Begriff "inhaltsadressierter Speicher" verwendet wird. Die Assoziierung liegt hier bei Sets von Speichersegmenten, wobei jedes Set im typischen Fall eine Größenordnung von 1000 Elementen umfaßt.

Die zweite Art assoziativer Speicherung verwendet eine sequentielle Speichereinheit, wobei es sich um Platten-, Blasen- oder Ladungstransportspeicher handeln kann. Diese sequentielle Speichereinheit wird seriell abgesucht nach Daten, die den Suchkriterien entsprechen. Wir verwenden hier für diese Technik den Begriff "serielle assoziative Speicherung". Die Suchkapazität im typischen Falle in der Größenordnung von Megabytes in Hundertstelsekunden. Während sich der parallele soziative Speicher auf Gleichheitssuchen beschränkt, kann der sequentielle Speicher auch mit "größer als", "kleiner als" sowie mit arithmetischen und logischen Ausdrücken operieren, wobei sich die Operanden im gerade abgesuchten befinden. Eine der ersten verwendeten, sequentiellen Assoziativspeichereinheiten, kam im CASSM-Projekt zur Anwendung (COPEL 73).

George A. Champine

ist Direktor im Advanced-Systems-Bereich für Großcomputersysteme bei Sperry Univac. Während seinen 20 Jahren bei Sperry Univac hat Champine in verschiedenen Stellen auf den Gebieten der Software- und Systementwicklung gearbeitet. Zuletzt war er als Senior Staff Consultant für die Applikation fortgeschrittener Technologien in Großcomputersystemen verantwortlich.

Champine besitzt darüber hinaus eine Gastprofessur an der University of Minnesota und ist Autor zahlreicher Artikel, die in internationalen Fachpublikationen veröffentlicht wurden.

Alternativen in der Datenbankarchitektur

Von Anfang der 70er Jahre an sind zur Verbesserung der Effizienz von Datenbanksystemen neue Architekturen vorgeschlagen worden. Sie lassen sich wie folgt gruppieren (in der Reihenfolge ihrer Einführung):

þBackend-Systeme mit konventionellen Minicomputern

þSpeicherhierarchien (selbstverwaltet)

þIntelligente Steuerungen

þDatenbankcomputer.

Die vielleicht früheste neuartige Architektur war der Backend-Rechner, der mit einem konventionellen Minicomputer realisiert wurde (CANAD 74). Zielsetzung war dabei nicht nur die Verbesserung der Leistungsfähigkeit, sondern auch die Konstruktion einer von mehreren nichtkompatiblen Systemen gemeinsam benutzten Datenbank. In der Folge wurde eine Reihe von Backend-Rechnern auf konventionellen Minicomputern realisiert und auf den Markt gebracht.

Die Speicherhierarchie (WELCH 79) ist so alt wie der Computer selbst, doch bei der erstmals Mitte der 70er Jahre realisierten selbstverwalteten Massenspeicherhierarchie handelte es sich um einen spezifischen Versuch, Datei- und Datenbankprobleme zu lösen. Die erste Realisierung war eine "virtuelle Platte", wobei ein Plattenpool als Cache-Puffer für ein Bandkassettengerät diente. Eine jüngere Anwendung ist die Cache-Platte bei welcher ein Ladetransportspeicher als Cache-Puffer für Platten und möglicherweise Kassettenspeicherung dient. Die Speicherhierarchie hängt stark von der Lokalisierung der Datenherkunft ab: Das heißt, wenn auf ein Datenelement einmal zurückgegriffen wird, so wird mit größter Wahrscheinlichkeit in nächster Zukunft dieses Element oder ein benachbartes wieder bezogen. Eine Reihe von Versuchen mit einem Cache-Plattensimulator für verschiedene Kundendateien hat eine durchschnittliche Trefferrate von 75 Prozent für einen 4-Megabyte-Cachepuffer ergeben. Diese Rate reicht aus, um die durchschnittliche Zugriffszeit zu halbieren.