gif gif up gif contents
Nächste Seite: 8 Zusammenfassung und Ausblick Vorige Seite: 7.2.5 Beispielapplikation

7.3 Bewertung der Implementierung

Wie die nachfolgenden Ergebnisse zeigen, ist die Sichtenwartung bei einer großen Datenmenge gegenüber einer Neuberechnung besser, trotz der nicht besonders effizienten Auswertung der Sichtenwartungsregeln, bei der eine Vorwärtsauswertung mit einer Rückwärtsauswertung kombiniert wird. Der RoD-Algorithmus könnte in dieser Hinsicht noch eine Verbesserung bringen.

Zum Vergleich der Rechenzeiten bei Neuberechnung und Sichtenwartung werden zwei Sichten benutzt. Die erste Sicht EmpDept ist bereits aus vorherigen Beispielen bekannt. Die Sicht SuperDepts berechnet eine transitive Hülle. Dafür wird für die Klasse Department ein Attribut superdept definiert, das für eine Abteilung deren direkte Oberabteilungen enthält. Die beiden Regeln definieren das Attribut transdept, das der transitiven Hülle des Attributs superdept entspricht.

View EmpDept isA Employee with
  retrieved_attribute,partof
    dept : Department with
      retrieved_attribute
        head : Manager
    end
end

Individual Department in Class with 
  attribute
    superdept : Department;
    transdept : Department
  attribute,rule
    transdeptrule1 : $ forall d2/Department A(this,superdept,d2) 
                     ==> A(this,transdept,d2) $;
    transdeptrule2 : $ forall d2/Department (exists d1/Department 
                     A(this,superdept,d1) and A(d1,transdept,d2)) 
                     ==> A(this,transdept,d2) $
end 

View SuperDepts isA Department with
  retrieved_attribute
    transdept : Department
end

In der Objektbank hat die Klasse Employee genau 1000 Instanzen, die Klasse De- partment hat 300 Instanzen. Jeder Angestellte arbeitet in genau einer Abteilung. Jede Abteilung hat genau eine Oberabteilung und die Attributbeziehung superdept enthält keine Zyklen, d.h. eine Abteilung ist nicht Oberabteilung von sich selbst. Bei der Sichtenwartung wurde jeweils ein Instanz von Employee bzw. Department eingefügt.

Die Berechnung der Sicht EmpDept benötigt mehr Zeit als die Berechnung SuperDepts, da es mehr Instanzen der Klasse Employee gibt. Der Aufwand der Sichtenwartung beträgt etwa ein Viertel des Aufwands für die Neuberechnung. Angesichts der Tatsache, daßweniger als ein Prozent der Sicht geändert wurde, ist der Aufwand doch sehr hoch. Wie bereits erwähnt liegt dies zum einem an der Auswertungsstrategie.

Im Gegensatz zur Anfrageauswertung, können bei der Sichtenwartung mehrere Sichten zur gleichen Zeit gewartet werden. Im obigen Beispiel entstehen die meisten Kosten durch die Wartung der Regeln transdeptrule2. Das Ergebnis für diese Regel kann aber bei der Wartung vieler Sichten verwendet werden.

Des weiteren ist zu beachten, daßdie Sichtenwartung nur für kleine Änderungen einsetzbar ist. Die Idee der inkrementellen Sichtenwartung basiert auf die Trägheitsannahme für eine Datenbank, d.h. daßwährend der Laufzeit sich nur geringfüge Änderungen ergeben. Wenn in einer Transaktion sehr viele Objekte in die Datenbank eingetragen werden, ist eine Neuberechnung immer günstiger.

Bei der Programmierschnittstelle fehlt eine sichere Fehlerbehandlung. Vor allem bei Kommunikationsfehlern reagiert die Schnittstelle noch nicht richtig. Zum Beispiel fehlt eine Benachrichtung, wenn der Server beendet wird. Dies könnte zum Beispiel durch Ausnahmebehandlung von C++ oder durch spezielle Methoden der Kommunikationsklassen realisiert werden. Der Rechenaufwand für die Verwaltung einer Sicht und für den Zugriff auf Objekte im Anwendungsprogramm ist gering.

Bei der Implementierung der Programmierschnittstelle wurde darauf geachtet, daßder Zugriff auf die Objekte der Sicht für den Anwendungsprogrammierer einfach ist. Die komplexe Struktur eines Objekts aus einer Sicht in ConceptBase bleibt im Anwendungsprogramm erhalten. Diese komplexe Struktur, die durch Mengen und Referenzen abgebildet wird, erschwert jedoch zugleich die Benutzung für den Programmierer. Dennoch ist durch das Überladen von Operatoren und die möglichen Typkonvertierungen der Objekte die Verwendung der Sichten im Anwendungsprogrammen nicht schwierig.



gif gif up gif contents

Christoph Quix
31. Juli 1996