next up previous contents
Next: 4.3.2 Nichtimplementierte Konzeptteile Up: 4.3 Ergebnisse der Implementierung Previous: 4.3 Ergebnisse der Implementierung

4.3.1 Probleme

  Im Rahmen der Implementierung des Transaktionskonzeptes ergaben sich einige Probleme aus der Struktur des ConceptBase --Servers, die insbesondere den Sinn eines Integrationversuches zweifelhaft werden ließen.

Bei der Besprechung der Architektur von ConceptBase

(s. S.giff) wurde zwar dargestellt, daß aus den Regeln und 'Constraints' abgeleitete Information außerhalb der Propositionendatenbasis abgelegt werden. Der Aufbau unterhalb des Moduls AssertionCompiler wurde allerdings wegen seiner Komplexität ignoriert. Die dort stattfindenden Operationen stören einen Transaktionsmanager jedoch erheblich.
Durch die Module LTAssertionCompiler, LTAssertionTranslator und LTcodeGenerator werden nämlich die in Objekten enthaltenen Regeln, soweit sie keine 'MagicSet'--Regeln sind, in ausführbaren ProLog--Code umgewandelt und durch das Module PROLOGruleProcessor schließlich mittels assert() in das ConceptBase implementierende ProLog-Programm eingefügt.

Diese dynamischen Änderungen am Programmcode beenden nicht nur jede Reentranz (vgl. Kap.4.2.1). Der so außerhalb der Propositionendatenbasis und damit außerhalb der Reichweite des Transaktionsmanagers abgespeicherte Code wird auch beständig zur Auswertung von Anfragen und Regeln benutzt. Aber auch bei einer Ausdehnung des Transaktionsmanagers ließe sich der Zugriff nicht beschränken, da der in das ProLog--Programm eingefügte Code direkt durch den ProLog--Interpreter ausgewertet wird. Ein unbeschränkter Zugriff führt aber dazu, daß für die Transaktionen aller Regelcode sichtbar ist, auch der Code solcher Regeln, deren Propositionsdarstellung für sie unsichtbar ist. Die Transaktionen werten also Anfragen mit Hilfe von Regeln aus, die sie gar nicht kennen dürften.

Dieses Problem stellt sich unabhängig vom verwendeten Transaktionskonzept sobald eine Transaktion A mehr Regeln ``sieht`` als eine andere. Um die korrekte Ausführung von A sicherzustellen, muß nämlich der Code für die entsprechenden Regeln eingefügt werden und ist damit für alle sichtbar. Unterschiede in der Sichtbarkeit treten aber beim Einfügen neuer Daten in allen Konzepten auf.

Zur Lösung sind drei Ansätze möglich:

Alle aufgeführten Lösungsansätze erhöhen also den Rechenzeitbedarf des Kerns und erforden -- bis auf den ersten -- beträchtlichen Implementierungsaufwand. Von der Einarbeitung eines Ansatzes im Rahmen der Diplomarbeit wurde deshalb abgesehen.

Ein weiteres Problem stellen die von ConceptBase zur Beschleunigung von Konsistenztest und Regelauswertung benutzten Trigger dar. Die Trigger lösen bei einer Änderung der Daten die anhängenden Regeln und Konsistenzchecks aus. ConceptBase

bemerkt allerdings Änderungen nur, wenn sie verschiedenen ProLog--Module durchlaufen, wenn sie sozusagen die Kernarchitektur ,,von oben`` erreichen. Beim vorgestellten Konzept werden Änderungen in den Gruppen allerdings zwischen den einzelnen auf Propositionsebene arbeitenden Transaktionsmanager ausgetauscht, kommen also ,,von unten``. Um die Triggerauslösung zu gewährleisten müßte also der an den Kern gekoppelte Teil des Transaktionsmanagers diesem ankommende Änderungen mitteilen. Aufgrund dieser Mitteilungen könnten noch zu schreibende Routinen im Kern überprüfen, welche Trigger beeinflußt wurden.

Die Regelübersetzungen ließen sich theoretisch bei jeden Hochfahren des Servers aus den in der Propositionendatenbasis vorhandenen Informationen neu erzeugen. Um den hierfür notwendigen Aufwand zu sparen, speichert die derzeitige ConceptBase --Implementation den Regelcode ab. Allerdings geschieht dies völlig getrennt von den Propositionen in einer ``.rule``--Datei. Schwierigkeiten ergeben dadurch, daß es im vorgestellten Konzept mehrere Kerne gibt, die jeweils eine ``.rule``--Datei lesen und schreiben. Selbst wenn das gegenseitige Überschreiben verhindert werden kann, ist dieses Vorgehen weder speicheffizient, noch existiert eine primäre, bei Widersprüchen ausschlaggebende Version der Datei. Die einfachste Abhilfe für dieses Problem stellt die oben erwähnte Abspeicherung des ProLog--Codes in der Propositionenbasis dar.

Selbst bei Lösung aller dieser Probleme wäre die Integration noch durch einen bei den Integrationsversuchen des Objektspeichers von Hubertus Pützer sichtbar gewordenen Fehlers in BIM--Prolog behindert worden. Mit Abhilfe wird erst in der nächsten Version gerechnet.

Zusätzliche Schwierigkeiten bereitet die Einbeziehung der bisher in ConceptBase

vorhandenen historischen Datenbank, da der Objektspeicher von Hubertus Pützer hierfür bisher keine Unterstützung bietet. Zwar ließe sich die von Thomas List gewählte Implementierung der historischen Datenbank durch OID--Mengen übernehmen. Aber auch sie enthält keine Maßnahmen zur Auslagerung historischer Information auf langsamere Speichermedien.



next up previous contents
Next: 4.3.2 Nichtimplementierte Konzeptteile Up: 4.3 Ergebnisse der Implementierung Previous: 4.3 Ergebnisse der Implementierung



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