next up previous contents
Next: Die neuen TOB--Datenstrukturen Up: 4.2 Implementierung Previous: 2--Ebenen--Client--Server--Architektur

Änderungen am Objektspeicher

  Die Datenspeicherung des Transaktionskonzepts beruht auf dem von Hubertus Pützer und Rainer Gallerdörfer entwickelten Objektspeicher (vgl. Kap.\ 2.2.4). Sowohl an der Datenstruktur (dem TOB--Objekt) als auch an der eigentlichen Implementierung waren Abänderungen notwendig, die im folgenden erläutert werden sollen. Aufgrund dieser Änderungen war es nicht möglich, Verbesserungen, die Hr. Pützer nach der Trennung der Entwicklungen ca. Anfang September vornahm, zu integrieren.

Der weitestgehende Unterschied betrifft die Neugestaltung der TOB--Struktur. Wegen der Existenz mehrerer Gruppen und Transaktionen mit u.U. verschiedenen Sichten auf die Datenbasis, mußte eine Möglichkeit integriert werden, die Ergebnisse eines Beziehungsmengenzugriffs je nach zugreifender Gruppe/Transaktion zu variieren. Hierfür sind zwei Vorgehensweisen offensichtlich.  

Die erste Methode verwendet Thomas List zur Modellierung von historischer Datenbank und temporärem Speicher in seiner Integration des Objektspeichers. Der unbestreitbare Vorteil ist die Einfachheit dieser Vorgehensweise und ihr geringerer Speicherverbrauch. Sie hat hingegen den Nachteil, bei jedem Zugriff einen Mengenschnitt zu erfordern. Die zum Schneiden zweier Mengen benötigte Zeit wächst aber mindestens linear mit der Größe der kleineren Menge, die in diesem Fall fast immer die Lösungsmenge des Zugriffs sein dürfte. Dadurch werden Anfragen, die große Ergebnismengen liefern, wie z.B. die Anfrage nach den Instanzen von ``Class`` oder ``Individual``, verlangsamt.

Das zweite Verfahren erfährt diese Verlangsamung natürlich nicht, benötigt dafür aber mit der Zahl der Gruppen und Transaktionen linear wachsenden Speicher. Einen zusätzlichen Vorteil stellt noch die Vereinfachung des Abbruchs von Transaktionen dar. Da jede Transaktion die von ihr beeinflußten Beziehungsmengen anderer Objekte neu anlegt, können diese Beziehungsmengen bei einem Rücksetzen der Transaktion einfach gelöscht werden.

Einen weiteren Grund für die notwendige Überarbeitung stellt die Verwendung von Zeigern in den Beziehungsmengen dar. Zwar wird der Zugriff auf Objekte dadurch beschleunigt, weil die Umsetzung von Identifikatoren in Speicherzeiger vermieden wird. In einer Datenbank, in der Objekte auf verschiedene Prozesse und Rechner verteilt sind, lassen sich Speicheraddressen aber nicht mehr zur Objektidentifikation verwenden. An vielen Stellen mußten darum Zeiger durch OIDs ersetzt werden. Um die hierdurch häufiger nötigen Dereferenzierungen der OIDs zu beschleunigen, wurde außerdem die OID-Klasse abgewandelt, um ein schnelleres Hashing zu ermöglichen. Weitere Abwandlungen betreffen die Vereinheitlichung der Benutzung von Zeigern und ``realer`` Strukturen in den verwendeten C0.42mm ++ --Klassen sowie die Gliederung der sechs Beziehungsmengen des 'Bodys' in zwei Arrays, um die zugreifenden Funktionen generalisieren zu können.





next up previous contents
Next: Die neuen TOB--Datenstrukturen Up: 4.2 Implementierung Previous: 2--Ebenen--Client--Server--Architektur



Markus Baumeister
Fri Jun 9 15:38:00 MET DST 1995