Eine Aufgabe von Datenbankmanagementsystemen ist die Bereitstellung von Datenverwaltungsfunktionen für Anwendungsprogramme. Für Anwendungsprogramme ist eine Möglichkeit zur persistenten Speicherung von Daten wichtig. Klassische Programmiersprachen bieten nicht die gewünschte Funktionalität, die zur Verwaltung von Daten notwendig ist.
Die Anwendungsprogramme können Erweiterungen der Programmiersprachen nutzen, die ihnen datenbankähnliche Fähigkeiten geben. Dies führt aber dazu, daßjedes Programm seine eigenen Daten verwaltet und eine gemeinsame Nutzung des Datenbestandes schwierig ist. Ein zentrales Datenbanksystem für die Verwaltung der Daten ist sinnvoll, da so alle Programme Zugriff auf die Daten haben. Außerdem bietet ein Datenbankmanagementsystem (DBMS) eine höhere Datensicherheit durch Transaktionsverwaltung und Integritätskontrolle.
Anwendungsprogramme und Datenbanken betrachten die Daten aber auf unterschiedliche Weise. Während in Anwendungsprogrammen die Daten in imperativen Prozeduren verarbeitet werden und eine effiziente Auswertung und Darstellung der Daten im Vordergrund steht, stellen Datenbanksysteme die Daten über deklarative Anfragesprachen zur Verfügung. Ein weiteres Problem sind die verschiedenen Darstellungsarten der Daten. In einem relationalen DBMS sind die Daten zum Beispiel als flache Relationen dargestellt, während Anwendungsprogramme ihre Daten oft in komplexen Datenstrukturen ablegen. Da die Anforderungen der Anwendungsprogramme an die Datenstruktur verschieden sind und eventuell noch nicht alle zur Entwurfszeit des Datenbankschemas feststehen, gibt es weitere Unterschiede in der Struktur der Daten im Anwendungsprogramm und der Struktur im Datenbanksystem.
Applikationsprogramme benutzen Programmierschnittstellen, um mit einem DBMS Daten auszutauschen. Programmierschnittstellen sollen für Anwendungsprogramme eine einfache Anbindung an Datenbanksysteme ermöglichen. Dadurch wird die Wartbarkeit der Anwendungsprogramme vereinfacht und die Programmierer sind weniger mit Standardaufgaben zur Speicherung der Daten beschäftigt. Einfache Programmierschnittstellen stellen nur Funktionen zum Austausch von Daten in Form von elementaren Datentypen (z.B. Zeichenketten oder Zahlen) zwischen Applikation und Datenbank bereit. Die Integration der Funktionen in das Anwendungsprogramm ist hierbei Aufgabe des Programmierers.
Moderne Datenbanksysteme bieten Sichten an, mit deren Hilfe Anwendungsprogramme die für sie relevanten Daten einer Datenbank nach ihren eigenen Bedürfnissen selektieren und umstrukturieren können. Eine Sicht auf eine Datenbank ist eine Menge von Daten, die von den Basisdaten der Datenbank abgeleitet sind. Sichten schränken zunächst nur die Datenmengen ein, sie können aber nicht die unterschiedlichen Darstellungsarten in Applikationsprogrammen und Datenbanksystemen überbrücken. In relationalen Datenbanken mit SQL (Structured Query Language) als Datendefinitionssprache wird eine Sicht durch eine Anfrage in SQL definiert. Das Ergebnis ist jedoch weiterhin eine flache Relation, so daßdurch die Verwendung von Sichten keine Annäherung der beiden Datenmod nfragen erzeugt werden. Mit Hilfe der generierten Schnittstelle kann die Anbindung des Anwendungsprogramms an die Datenbank vereinfacht werden. Die Programmierschnittstelle integriert komplexe Datentypen der Sichtendefinition automatisch in das Applikationsprogramm.
Sichten stellen spezielle Anfragen dar, deren Ergebnisse abgespeichert werden können. In diesem Fall spricht man von materialisierten Sichten. Eine materialisierte Sicht ermöglicht schnellen Zugriff auf relevante Daten, denn sie mußnicht für jede Anfrage erneut berechnet werden. Die Materialisierung der Sicht kann intern in der Datenbank oder extern in einem Applikationsprogramm stattfinden.
Weil sich die zugrundeliegenden Basisdaten einer materialisierten Sicht ändern, ist Sichtenwartung erforderlich. Die Sichtenwartung setzt die Änderungen der Basisdaten in entsprechende Änderungen in der materialisierten Sicht um. Die einfachste Methode der Sichtenwartung wäre die vollständige Neuberechnung der Sicht nach jeder Änderung, jedoch ist diese Methode oft zu aufwendig. Deshalb werden die Änderungen von den Basisdaten inkrementell zu den Sichten propagiert, wobei nur der Teil der Sicht betrachtet wird, der von den Änderungen betroffen ist.
Abbildung 1.1: Problematik der Sichten und Sichtenwartung
Abbildung 1.1 verdeutlicht die Problematik der Sichten und der Sichtenwartung in einem Client/Server-System. Das Datenbanksystem verwaltet eine Menge von Basisdaten, die unterschiedliche Strukturen haben. Des weiteren sind in der Datenbank verschiedene Sichten definiert, die von den Anwendungsprogrammen genutzt werden. Die Elemente einer Sicht sind in den Datenstrukturen eines Anwendungsprogramms gespeichert.
Das DBMS führt die Sichtenwartung bei jeder Transaktion aus, die zu einer Änderung der Basisdaten geführt hat. Dabei berechnet das DBMS die Differenzen der Sicht zum Zustand vor der Transaktion. Bei intern materialisierten Sichten werden daraufhin die entsprechende Elemente in die Sicht eingefügt bzw. gelöscht. Wenn eine Sicht extern materialsiert ist, mußdas DBMS die Applikationen über die Änderungen benachrichtigen, damit das Applikationsprogramm seine Daten aktualisieren kann. Beim Start des Anwendungsprogramms wurde die extern materialisierte Sicht durch eine Anfrage initialisiert. Das View-Update-Problem, d.h. die Propagierung von Änderungen in der Sichtenextension zu den Basisdaten durch Abduktion, wird hier nicht betrachtet.
Ziel der Diplomarbeit ist es, die Anbindung von Anwendungsprogrammen an Datenbanksysteme zu verbessern. Die Lösung wird im Umfeld des deduktiven Objektbanksystems ConceptBase erstellt. Dafür mußzunächst eine Programmierschnittstelle entwickelt werden, die die komplexen Sichten aus ConceptBase in entsprechende Datenstrukturen des Anwendungsprogramms abbildet und so die externe Materialisierung der Sicht ermöglicht. Des weiteren mußConceptBase eine Sichtenwartung durchführen und Änderungsnotifikationen an Anwendungsprogramme versenden, so daßeine Wartung der Sicht auch außerhalb des Datenbanksystems möglich ist. Bei der Sichtenwartung ist zu beachten, daßdie Sicht nicht innerhalb der Datenbank materialisiert ist und deshalb kein Zugriff auf die Sichtenextension möglich ist. Die Programmierschnittstelle stellt generierte Funktionen zur Verfügung, die die Änderungen verarbeiten und die Wartung der extern materialisierten Sicht durchführen.
Christoph Quix