Kurzfassung

Datenbanksysteme werden immer häufige für die persistente Speicherung von Laufzeitobjekten eingesetzt. Im Kontext rollenbasierter Programmen im Zusammenspiel mit Datenbanken ist dieses Persistenzkonzept jedoch weitestgehend unerforscht. Speziell die Interaktion von SCROLL mit einer RSQL-Datenbank ist in dieser Arbeit zu untersuchen und eine Persistenzlösung zu entwickeln.

Die Aufgabe umfasst die Analyse des Scala-Frameworks SCROLL hinsichtlich der nutzbaren Metainformationen für die Persistierung und der Integrationsmöglichkeiten geladener Rollen in das Laufzeitsystem. Weiterhin sollen bestehende Persistenzansätze verglichen und die beste Alternative ausgewählt werden. Darauf aufbauend ist eine spezielle Persistenzlösung für das SCROLL-RSQL-Zusammenspiel zu entwickeln, zu implementieren und deren Funktionsfähigkeit zu zeigen.

Ausgangssituation

Das Anwendungsspektrum von Datenbanksystemen (DBSs) geht heute weit über das reine Speichern und Verwalten von Daten hinaus. So werden DBSe heute auch oft für die persistente Speicherung von Laufzeitobjekten aus objektorientierten Programmen genutzt. Üblicherweise verbindet eine spezielle Persistenzschicht die Applikation mit der Datenbank und übernimmt dabei auch die Transformation der Objekte auf relationale Tabellen. Reine objektorientierte Programme und Programmiersprachen sind jedoch auch limitiert in ihrer Ausdrucksmächtigkeit und den heutigen Anforderungen, wie beispielweise der dynamischen Erweiterungen von Laufzeitobjekten, nur noch bedingt gewachsen.

Das Graduiertenkolleg RoSI untersucht dahingehend die Nutzung des Rollenkonzeptes für die Modellierung und den praktischen Einsatz zur Laufzeit derartiger dynamischer Systeme. Die Einführung eines neuen Paradigmas, im vorliegenden Fall das Rollenkonzept, geht immer mit dem Überdenken etablierter Ansätze einher. Auf Ebene der Programmiersprachen wurde im Graduiertenkolleg das auf Scala basierende Framework SCROLL entwickelt. Mit diesem ist es möglich rollenbasierte Programme zu schreiben und diese zusätzlichen semantischen Informationen auch zur Laufzeit zu nutzen. Auf Seite der Datenbanken existiert die Anfragesprache RSQL zur datenbanktechnischen Beschreibung, Manipulation und Abfrage rollenbasierter Daten. Die Schnittstelle für eine persistente Speicherung von SCROLL-Laufzeitobjekten in einer rollenbasierten Datenbank besteht jedoch noch nicht und ist der Fokus dieser Arbeit. Es existieren lediglich Persistenzlösungen für reine Scala-Programme, also ohne das SCROLL Framework, in relationalen Datenbanken und eine rollenbasierte Persistenzschicht für objektorientierte Java-Programme auf Basis von RSQL. Letztere ist jedoch nicht für den Einsatz im Zusammenhang mit SCROLL-Programmen ausgelegt.

Weiterhin ist die Fragestellung offen, ob es durch den Einsatz des neuen Paradigmas zu veränderten Zugriffs- und Interaktionsmustern zwischen Datenbank, Persistenzschicht und dem Programm kommt. Insbesondere die Fragestellung der Integration von geladenen Rollen in bestehende Laufzeitobjekte und welche Schicht dafür zuständig ist, ist noch zu klären.

Aufgabenstellung

Die Aufgabe umfasst die Entwicklung einer Persistenzlösung, die die zu persistierenden Teile eines SCROLL-Programmes in einer RSQL-Datenbank persistiert und auch wieder lädt, wenn diese benötigt werden. Dabei soll nach Möglichkeit das schon existierende Persistenzframework für RSQL wiederverwendet und für SCROLL optimiert und erweitert werden.

Die Aufgabe umfasst die folgenden Teilaufgaben.

Zunächst sollen SCROLL-Laufzeitobjekte hinsichtlich der nutzbaren Metainformationen und internen Strukturen analysiert werden. Mittels dieses Wissens sollen bestehende Persistenzlösungen für Scala-Programme auf ihre Erweiterbarkeit analysiert und der existierenden RSQL-Persistenzschicht gegenübergestellt werden. Hierfür sind unter anderem auch Anforderungen an die Persistenzschicht zu definieren.

Ausgehend von der Bewertung der unterschiedlichen vorhandenen Persitenzframeworks, soll eine Erweiterung für die beste Alternative entwickelt und implementiert werden. Abschließend soll die Funktionalität der entwickelten Lösung mittels eines selbstgewählten Beispiels nachgewiesen werden, so dass Veränderungen des Verhaltens von Laufzeitobjekten durch das Laden persistenter Datenbankobjekte sichtbar sind und direkt beobachtet werden können.

Mehr