Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik FG Datenbanken und Informationssysteme Effiziente Überprüfung von Ausgabebedingungen in einem Multimedia - Datenbanksystem Diplomarbeit zur Erlangung des akademischen Grades Diplominformatiker Thomas Schröder Betreuer: Dipl.-Inf. Thomas Heimrich Verantwortlicher Hochschullehrer: Prof. Dr.-Ing. Kai-Uwe Sattler Die Diplomarbeit wurde am 20.05.2005 bei der Fakultät für Informatik und Automatisierung der Technischen Universität Ilmenau eingereicht. Inventarisierungsnummer: 2005-05-23/052/IN98/2254 Zusammenfassung Der äußere Aufbau und die zeitliche Abfolge eines Medienprojektes können über Ausgabebedingungen definiert werden. Es existieren Beschreibungsmöglichkeiten, die auf Konsistenz geprüft werden können und eine Berechnung des Ausgabeschedule aufgrund relativer Zeitabstände ermöglichen. Bei großen Projekten ist kein effizienter Algorithmus für die Überprüfung bekannt. Des Weiteren sind die in Datenbanksystemen vorhandenen herkömmlichen Mechanismen zur Integritätssicherung der Bedingungen unzureichend. Eine Verwaltung der Objekte und Bedingungen an einer zentralen Stelle ist aber wünschenswert, um anwendungsunabhängig die Konsistenz zu gewährleisten. Die vorliegende Arbeit stellt Algorithmen zur effizienten Überprüfung der Ausgabebedingungen und zur Berechnung des Ausgabeschedule vor. Die in einem Datenbankmanagementsystem realisierten vorgestellten Methoden werden anschließend hinsichtlich des praktischen Gebrauchswertes bewertet. Die Messergebnisse zeigen, dass mit den Algorithmen auch große Projekte effizient verwaltet werden können. Inv.-Nr.: 2005-05-23/052/IN98/2254 Inhaltsverzeichnis 1 Einführung und Motivation 9 2 Grundlagen und Related Work 2.1 Multimedia-Datenbanksysteme . . . . . . . . . . . . . . . . 2.2 Integritätsbedingungen . . . . . . . . . . . . . . . . . . . . . 2.3 Architekturen zur Integritätssicherung . . . . . . . . . . . . 2.3.1 Integritätssicherung durch Anwendung . . . . . . . . 2.3.2 Integritätssicherung durch DBMS . . . . . . . . . . . 2.3.3 Integritätssicherung durch Kapselung . . . . . . . . 2.4 Aktive Datenbanksysteme und Trigger . . . . . . . . . . . . 2.5 Modellierung von Ausgabebedingungen . . . . . . . . . . . 2.5.1 Allen-Relationen . . . . . . . . . . . . . . . . . . . . 2.5.2 Difference Constraints . . . . . . . . . . . . . . . . . 2.5.3 Bellman und Ford . . . . . . . . . . . . . . . . . . . 2.5.4 Eingabe der Bedingungen - Der Constraint Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 14 14 15 15 16 17 19 20 21 21 23 3 Überprüfung mit Bellman - Ford 3.1 Beschränkungen und Beispiele . . . . 3.2 Klassifizierung der Allen-Relationen 3.3 Optimierungen . . . . . . . . . . . . 3.4 Änderung der Objektdauer . . . . . 3.5 Reduzierung der Kantenanzahl . . . 3.6 Weitere Laufzeitoptimierungen . . . 3.7 Realisierung im DBMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 30 34 38 41 41 42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Numerische Konsistenzprüfung 43 4.1 Erzeugen der Ungleichungen . . . . . . . . . . . . . . . . . . . . . . . 43 4.2 Änderung einer Relation . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3 Umsetzung durch Trigger/Constraints . . . . . . . . . . . . . . . . . 48 5 Berechnung des Ausgabeschedule 5.1 Ausgabeschedule . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Berechnung am Beispiel . . . . . . . . . . . . . . . . . . . . . 5.3 Optimierungen . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Änderung einer Bedingung am Ende eines Stranges . . 5.3.2 Änderung einer Bedingung am Anfang eines Stranges 5.3.3 Änderung einer Bedingung in der Mitte eines Stranges 5.4 Änderung der Objektdauer . . . . . . . . . . . . . . . . . . . 5.5 Graphen mit mehreren Strängen . . . . . . . . . . . . . . . . Inv.-Nr.: 2005-05-23/052/IN98/2254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 51 52 54 55 57 62 64 66 6 INHALTSVERZEICHNIS 5.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6 Evaluierung 6.1 Testprojekte und Messmethode . . . . . . . . . . . 6.2 Optimierung des graphischen Konsistenzcheck . . . 6.2.1 Überprüfung von Änderungen als Teilgraph 6.2.2 Reduzierung der Kantenanzahl . . . . . . . 6.3 Numerische Konsistenzprüfung . . . . . . . . . . . 6.4 Scheduleberechnung . . . . . . . . . . . . . . . . . 6.5 Zwischenstand . . . . . . . . . . . . . . . . . . . . 6.6 Umsetzung im DBMS . . . . . . . . . . . . . . . . 6.6.1 Speichern des Graphen in der Datenbank . 6.6.2 Manipulation von Bedingungen . . . . . . . 6.6.3 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 81 84 84 86 87 88 91 92 92 95 99 7 Zusammenfassung und Ausblick 101 7.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 A Erweiterte Allen-Relationen 103 A.1 Übersicht der Relationen . . . . . . . . . . . . . . . . . . . . . . . . . 103 A.2 Numerische Bedingungen der Relationen . . . . . . . . . . . . . . . . 103 Literaturverzeichnis 107 Thesen 109 Eidesstattliche Erklärung 111 Inv.-Nr.: 2005-05-23/052/IN98/2254 Abkürzungsverzeichnis AR . . . . . . . . . . . . . . . Allen-Relationen DBMS . . . . . . . . . . . . Datenbankmanagementsystem DBS . . . . . . . . . . . . . . Datenbanksystem DDL . . . . . . . . . . . . . Datendefinitionssprache DML . . . . . . . . . . . . . Datenmanipulationssprache ECA . . . . . . . . . . . . . Event Condition Action MMDBS . . . . . . . . . . Multimedia-Datenbanksystem SMIL . . . . . . . . . . . . . Synchronized Multimedia Integration Language WFS . . . . . . . . . . . . . Wellenfeldsynthese ZE . . . . . . . . . . . . . . . Zeiteinheit Inv.-Nr.: 2005-05-23/052/IN98/2254 Kapitel 1 Einführung und Motivation Multimediadaten spielen in der heutigen Zeit eine zunehmend größere Rolle in vielen Bereichen des alltäglichen Lebens. Es gibt kaum einen Computer, der nicht auf irgendeine Art und Weise Multimediadaten verarbeiten kann. Der Begriff Multimedia entsteht durch Komposition der beiden Teile Multi (viel, vielfach) und media (Medium). Medien definieren sich laut Brockhaus Enzyklopädie als: Ver” mittlungssysteme für Informationen aller Art, ihre Funktion ist der Transport von Inhalten“ [Lex91]. Sie speichern bzw. stellen Informationen in Form von Texten, Bildern, Graphiken, Sprache oder Musik dar. Im Allgemeinen spricht man von Multimedia, wenn viele Medien“ gemeinsam verwendet werden, sie aber ein bestimmtes ” Ziel verfolgen [Lex89]. In dieser Arbeit werden ausschließlich digitale Medien betrachtet, also Videos, Audiosamples, Bilder oder Texte, die in elektronischer Form für den Computer lesbar vorliegen. Multimediadaten alleine stellen noch keinen großen Informationswert dar. Durch die Komposition verschiedener Medien entsteht (meistens) für den Nutzer ein Mehrwert gegenüber einzelnen Medien. Eine einfache Form ist z. B. der Hypertext. Neben der Darstellung von verknüpften Text lassen sich auch Bilder, Videos oder Sprachmitteilungen einbinden. In diesem Zusammenhang spricht man auch von Hypermedia [Lex92]. Des Weiteren existiert inzwischen eine Vielzahl von multimedialen Präsentationen, die es dem Anwender erlauben, den Ablauf interaktiv zu gestalten. Sie werden häufig bei Vorträgen oder Schulungen eingesetzt. Eine große Rolle spielen Multimediadaten in der Filmproduktion: angefangen vom Home-User, der seine privaten Filmaufnahmen digital nachbearbeitet oder neu zusammenstellt, bis hin zu Kinofilmen, die komplett digital erstellt werden und sich letztendlich nur aus einzelnen Medienobjekten zusammensetzen. Mit den Fortschritten in der PC-Technik steigen sowohl die Möglichkeiten als auch die Anforderungen an Multimediaprojekte. Das bedeutet, dass die Qualität und auch die Quantität der Multimediadaten zunehmen. Mit steigender Komplexität von Multimediaprojekten wächst auch die Zahl der zu verwaltenden Einzel(medien)objekte. Um die Verwaltung der Datenmassen möglichst effizient zu gestalten, ist es sinnvoll, sie an einer zentralen Stelle zu speichern: vorzugsweise in einer Datenbank. Das gilt sowohl für Daten im herkömmlichen Sinne (Zahlen, Wörter, Text, Flags) als auch für Multimediadaten. Da es sich hierbei nicht um einfache“ Daten im Sinne von alphanumerischen Zeichenfolgen handelt, werden sie ” in Multimedia-Datenbanksystemen (MMDBS) gespeichert. Neben der Speicherung der Objekte ist auch der Zeitpunkt ihrer Ausgabe von Inv.-Nr.: 2005-05-23/052/IN98/2254 10 KAPITEL 1. EINFÜHRUNG UND MOTIVATION o3 o1 0 o2 15 17 27 42 47 Zeit Abbildung 1.1: Absolute Ausgabezeiten von Medienbjekten t3 t2 o3 t1 o1 0 o2 Zeit Abbildung 1.2: Verknüpfung von Medienobjekten über relative Zeitabstände Bedeutung. Eine lose Ansammlung von Medienobjekten in einer Datenbank ergibt noch keinen Film oder Musikstück. Möchte man einen Kuchen backen und alle Zutaten liegen schon bereit, fehlt noch die Beschreibung, wie welche Zutaten verarbeitet werden müssen: das Rezept. Ähnlich verhält es sich mit Medienobjekten. In der Regel wir für jedes Medienobjekt ein definiertes absolutes Intervall, die Ausgabezeit, angegeben (Abbildung 1.1). Ändert sich die Dauer eines Objektes, muss auch das Intervall entsprechend der Änderung angepasst werden. Aus diesem Grund ist es wichtig, Bedingungen für die Ausgabe zu formulieren, auf deren Basis die Ausgabezeiten automatisch berechnet werden können. Eine Besonderheit der Ausgabebedingungen ist, dass man nicht die konkreten absoluten Zeiten angibt, zu denen die Objekte ausgegeben werden sollen, sondern relative Zeitabstände. Die Zeiten t1 , t2 und t3 in Abbildung 1.2 bedeuten, dass Objekt o1 genau t1 Zeiteinheiten (ZE) nach Objekt o2 kommen soll, Objekt o3 eine Dauer von genau t3 ZE haben muss und erst t2 ZE nach dem Start von o2 ausgegeben werden soll. Ändert man die Dauer eines Objektes, z. B. von o1 , ergeben sich die Ausgabezeiten aufgrund der Bedingungen bzw. der Dauer der Objekte und können automatisch berechnet werden. Es existiert jedoch noch keine effiziente Methode, eine größere Anzahl von Ausgabebedingungen auf Konsistent zu prüfen und anschließend den Ausgabeschedule zu bestimmen. Ein praktischer Gebraucht ist momentan nur für kleine Projekte gegeben. Das Ändern von Bedingungen kann zu Inkonsistenzen führen, wenn zwei oder mehr Bedingungen im Widerspruch zueinander stehen. Für einfache Daten (Text, Zahlen usw.) lassen sich beim Erstellen einer Tabelle Bedingungen definieren, so genannte Constraints. Beim Speichern prüft das DBMS, ob die Daten mit diesen Bedingungen konform gehen, also konsistent sind. Da es sich bei Ausgabebeding- Inv.-Nr.: 2005-05-23/052/IN98/2254 11 ungen um komplexe Zusammenhänge handelt, sind die in Datenbanken vorhandenen herkömmlichen Mechanismen der Überprüfung nicht ausreichend. Aus diesem Grund müssen andere Wege gefunden werden, um die Bedingungen effizient zu überprüfen und konsistent zu halten. Fasst man beide Ziele zusammen, die zentrale Speicherung von Medienobjekten in einem Multimedia-Datenbanksystem und die effiziente, automatische Überprüfung der Bedingungen, stellt sich die Aufgabe, beides in einem DBMS zu zentralisieren. Das ist das Ziel dieser Diplomarbeit. Es müssen Wege gefunden werden, die Problemstellung auf bekannte Strukturen und Methoden in einem DBMS abzubilden. Des Weiteren stellt sich die Frage nach der Kosten-Nutzen-Rechnung. Die Abbildung der Aufgabenstellung auf bekannte Probleme, also der Weg von der Erstellung der Ausgabebedingungen bis zur internen Darstellung in der Datenbank und der Überprüfung verursacht Kosten. Es muss bewertet werden, ob der Nutzwert die zusätzlichen Kosten rechtfertigen. Im Idealfall soll die Speicherung der Daten und der Bedingungen unabhängig von einem Anwendungsprogramm über SQL-Befehle erfolgen. Der anschließende Konsistenzcheck muss sehr effizient sein, damit ein praktischer Gebrauchswert für den Nutzer gegeben ist. Ein konkretes Anwendungsbeispiel ist die Modulation von Audiosignalen mittels Wellenfeldsynthese (WFS) [BV94]. Sie beruht auf dem Huygen‘schen Prinzip [GS26] und ermöglicht mit Hilfe eines Lautsprecherarrys eine exakte Erzeugung eines beliebigen Schallfeldes, das hinsichtlich Ort, Ausrichtung, Bewegung und räumlicher Umgebung physikalisch korrekt dargestellt wird [TWR02]. Als Ergebnis erhält man ein natürliches und räumliches Klangfeld an jeder Stelle des Wiedergaberaumes. Dem Hörer wird der Eindruck vermittelt, dass die Tonquellen nicht die Lautsprecher sind, sondern sich z. B. mitten im Raum oder auch hinter der Kinoleinwand befinden. Im Gegensatz zum 5.1-Sourroundsoundsystem befindet sich der sogenannte Sweet-Point“ (Punkt der optimalen Klangwahrnehmung) nicht an einer ” bestimmten Stelle im Raum, sondern erstreckt sich über den gesamten Hörbereich. Auf diese Weise ist es möglich, in einem kleinen Raum die Akkustik jedes einzelnen Instrumentes eines in einem Konzertsaal spielenden Orchesters exakt nachzubilden. Um diese Effekte zu erzeugen, müssen mehrere Samples in zeitlicher Abhängigkeit moduliert und im Präsentationsraum ausgegeben werden. Solche Szenen können in einer Datenbank abgespeichert und anschließend ausgegeben werden. Angewendet wird diese Methode bereits im IOSONO-System, welches am FraunhoferInstitut entwickelt [FG04] und kommerziell genutzt werden soll [FI04a]. In [HSRG04] wird gezeigt, wie Ausgabebedingungen für die Datenmodellierung und korrekte Ausgabe der Medienobjekte zur Wellenfeldsynthese genutzt werden können. Aufbauend auf dieser Quelle beschäftigt sich diese Arbeit hauptsächlich mit der effizienten Überprüfung der Bedingungen und anschließend mit der Integration in ein Multimedia-Datenbanksystem. Aufbau der Diplomarbeit In Kapitel 2 wird auf alle erforderlichen Grundlagen und bisherige Arbeiten und Artikel zu diesem Thema eingegangen und der Weg von der Modellierung der Bedingungen bis zur Speicherung in der Datenbank besprochen. Anschließend werden in den Kapiteln 3 und 4 zwei Methoden zur effizienten Überprüfung der Bedingungen vorgestellt. Neben der Konsistenz der Daten ist letztendlich auch deren korrekte zeitliche Ausgabe wichtig. Kapitel 5 beschäftigt sich mit der effizienten Berechnung des Ausgabeschedule. Kapitel 6 bewertet anschließend die vorgestell- Inv.-Nr.: 2005-05-23/052/IN98/2254 12 KAPITEL 1. EINFÜHRUNG UND MOTIVATION ten Algorithmen und Methoden. Inv.-Nr.: 2005-05-23/052/IN98/2254 Kapitel 2 Grundlagen und Related Work Dieses Kapitel geht auf alle nötigen Begriffe und Methoden ein, die sich mit dem Thema der Definition von Ausgabebedingungen, Konsistenzüberprüfung und Ausgabeschedule beschäftigen. Ebenso werden Mechanismen und Architekturen zur Konsistenz- bzw. Integritätsüberprüfung in einem DBMS vorgestellt. Aufbauend auf den Grundlagen, wird der Weg von der Formulierung der Bedingungen bis zum Konsistenzcheck und Speicherung in der Daten in einer Datenbank erläutert. 2.1 Multimedia-Datenbanksysteme Für Multimedia-Datenbanksysteme oder kurz MMDBS existiert bisher keine feste Definition. Im Allgemeinen werden Datenbankmanagementsysteme (DBMS) als Multimedia-Datenbank bezeichnet, die eine Speicherung von Multimedia-Daten ermöglichen. Multimedia-Daten setzen sich aus zwei Komponenten zusammen. Zum einen aus Medienobjekten (Videos, Audiosamples, Bilder oder Texte) und zum anderen aus Multimedia-Objekten, die eine Komposition aus Medien-Objekten verschiedener Medien darstellen, wie zum Beispiel ein Bild kombiniert mit einem Audio-Sample. Da das Datenaufkommen von Multimediadaten im Allgemeinen größer ist als das normaler“ alphanumerischer Daten, müssen MMDBS zusätzlichen Anforde” rungen gegenüber DBMS gerecht werden. Khoshafian und Baker [KB95] formulieren folgende notwendige Funktionalitäten (vgl. [HSS03]): • Unterstützung für Bild- und Mediendatentypen, • Fähigkeiten, zur Verwaltung einer großen Anzahl von Medien-Objekten, • effiziente Speicherverwaltung, • Datenbankfunktionalität, • Information-Retrieval-Funktionalität. Die Speicherung von Multimedia-Daten erfolgt entweder über allgemeine Datenbanktypen oder spezielle Medien-Objekttypen. Heutige relationale oder objektrelationale Datenbankmanagementsysteme bieten die Datentypen BLOB (Binary Inv.-Nr.: 2005-05-23/052/IN98/2254 14 KAPITEL 2. GRUNDLAGEN UND RELATED WORK Large Objekt) oder CLOB (Character Large Objekt) zur Speicherung der Medieninhalte an. Das objekt-relationale DBMS Oracle der gleichnamigen Firma stellt darüber hinaus spezielle Medien-Datentypen zur Verfügung. Zum Speichern eines Bildes nutzt man den Typ Image, welcher neben den eigentlichen Bilddaten zusätzliche Attribute, wie zum Beispiel Größe oder Auflösung des Bildes zur Verfügung stellt. Solche Medien-Datentypen wurden als Erweiterungen von SQL:1999 definiert. Da die Speicherung der Multimedia-Daten in dieser Diplomarbeit keine direkte Rolle spielt, wird auf diese speziellen Datentypen nicht näher eingegangen. Die implementierten Algorithmen gehen stets von Multimedia-Objekten aus, die intern aber nur über einen Bezeichner angesprochen werden. Die eigentlichen Daten sind für die Definition, Überprüfung der Bedingungen und Berechnung der Ausgabezeiten nebensächlich. In dieser Arbeit werden Datenbanksysteme als MMDBS bzw. DBMS verstanden, die eine Speicherung von Multimediadaten ermöglichen [ABH97] und aktiv auf definierbare Ereignisse reagieren können (siehe Abschnitt 2.4). 2.2 Integritätsbedingungen Neben der Speicherung von Daten, gehört zu den Aufgaben eines DBMS auch die Gewährleistung der Integrität und Konsistenz der Daten. Dazu zählen neben dem Schutz der Daten bei Mehrbenutzerzugriff auch die so genannten semantischen Integritätsbedingungen. Diese ergeben sich aus dem Modell, mit dem das abzubildende Problem beschrieben wird (vgl. [KE01]). Wenn zum Beispiel ein Name in einer Tabellenspalte nicht mehrfach vorkommen darf, kann man diese Bedingung (Primärschlüssel) in Form eines SQL-Befehls bei der Erzeugung der Tabelle angeben. Datenbanksysteme bieten standardmäßig diverse Möglichkeiten, die Integrität der Daten durch sogenannte Constraints zu gewährleisten. So ist es zum Beispiel möglich, für eine Spalte einen bestimmten Datentyp und Wertebereich anzugeben. Versucht man einen Wert außerhalb dieses Bereiches einzutragen, wird die Insertoder Update-Operation abgebrochen. Auf diese Art wird die Konsistenz der Daten in den Tabellen gewährleistet. Die Integrität der Daten in der Datenbank muss nicht zwingend zu jedem Zeitpunkt gegeben sein. In diesem Zusammenhang spielt der Begriff der Transaktion eine große Rolle. Eine Transaktion ist eine Folge von Anweisungen zur Manipulation von Daten, die als Einheit betrachtet wird. Das Ende einer Transaktion wird durch den commit-Befehl signalisiert. Nach erfolgreicher Abarbeitung der Befehlsfolge auf einem konsistenten Datenbestand ist die Datenbank wieder in einem zulässigen Zustand (vgl. [HS00]). Jede Transaktion muss die so genannten ACID - Eigenschaften erfüllen. ACID steht für: Atomicity (Atomarität), Consistency (Konsistenz), Isolation und Durabiltity (Dauerhaftigkeit). 2.3 Architekturen zur Integritätssicherung Die Integritäts- oder Konsistenzprüfung von Grunddatentypen ist gut erforscht und in allen heutigen Datenbankmanagementsystemen implementiert. Zur Überprüfung von Ausgabebedingungen im Sinne der Aufgabenstellung reichen diese Möglichkeiten aber nicht aus. Durch die im Vergleich zu einfachen Datentypen kompliziertere Inv.-Nr.: 2005-05-23/052/IN98/2254 2.3. ARCHITEKTUREN ZUR INTEGRITÄTSSICHERUNG Anwendung 1 Routinen 15 Anwendung n Routinen DBMS Datenbank Abbildung 2.1: Integritätssicherung durch Routinen in den Anwendungen Datenstruktur und größeren funktionellen Zusammenhänge, ist auch die Konsistenzprüfung bzw. -sicherung aufwendiger. Für die Integrität der Daten spielt es keine Rolle, an welcher Stelle der Datenbank-Anwendungsstruktur die Überprüfung erfolgt. Nachfolgend werden drei Architekturvarianten vorgestellt, die an unterschiedlichen Punkten die Integritätsbedingungen verwirklichen (vgl. [HS00]). 2.3.1 Integritätssicherung durch Anwendung Die Integritätssicherung ist eine von vielen Forderungen an ein Datenbankmanagementsystem. Sie muss bzw. kann aber nicht immer zwingend in vollem Umfang durch das DBMS erfolgen. Stellt es unzureichende Integritätsbedingungen zur Verfügung, wird die Überprüfung durch die Applikation, welche auf die Datenbank zugreift, selbst vorgenommen (Abbildung 2.1). Die Bedingungen können flexibel in der von der Anwendung verwendeten Programmiersprache implementiert und auf diesem Wege Unzulänglichkeiten der Integritätssicherung des DBMS beseitigt werden. Man spricht hier von operativen Bedingungen, im Gegensatz zu deklarativen, die Bestandteil der Datendefinitions- (DDL) bzw. Datenmanipulationssprache (DML) des DBMS sind. Der Nachteil dieser Methode besteht in der dezentralen Überprüfung und der daraus resultierenden Mehrfachimplementierung der Bedingungen. Dadurch können vermehrt Fehler auftauchen, bzw. die Korrektheit muss mehrfach nachgewiesen werden. Außerdem kann es zu Inkonsistenzen nach partiellen Änderungen kommen (Problem der verteilten Systeme). 2.3.2 Integritätssicherung durch DBMS Eine übliche Form der Integritätssicherung für einfache Datentypen ist die Überprüfung durch einen Integritätsmonitor (Abbildung 2.2). Er ist Teil des DBMS und Inv.-Nr.: 2005-05-23/052/IN98/2254 16 KAPITEL 2. GRUNDLAGEN UND RELATED WORK Anwendung 1 Anwendung n DBMS Monitor Datenbank Abbildung 2.2: Integritätssicherung durch Integritätsmonitor somit unabhängig von der jeweiligen Applikation. Die Integritätsbedingungen sind Teil der Datendefinitions- bzw. Datenmanipulationssprache und werden über diese deklariert. Durch die Integration der Überprüfung in das DBMS werden Redundanz und Fehlerquellen vermieden, da die Integritätsüberwachung nur an einer zentralen Stelle implementiert ist. Der Nachteil dieser Methode ist, dass bis heute nur sehr einfache Bedingungen definiert werden können bzw. vom DBMS zur Verfügung gestellt werden. Die Integritätsbedingungen von SQL lassen sich grob unterteilen in modellinherente und tabellenübergreifende Bedingungen, welche explizit angegeben werden. Erstere ergeben sich implizit aus der Struktur des Datenbankmodells, wie zum Beispiel definierte Datentypen, Wertebereiche von Attributen oder Primär- und Fremdschlüssel. Für die Überprüfung von Ausgabebedingungen von Medienobjekten sind die heute vorhandenen Möglichkeiten der modellinherenten Bedingungen nicht geeignet. Das Konzept der tabellenübergreifenden Integritätsregeln hat sich nicht vollständig in Datenbanksprachen durchsetzen können. Heutige Systeme unterstützen eine simplere Version solcher Regeln: sogenannte Trigger. Sie bieten zusätzlich zu den deklarativen Bedingungen auch die Möglichkeit zur Beschreibung von operativen Bedingungen. Durch Verwendung einer Programmiersprache, im Allgemeinen PL/SQL oder Java, können nahezu beliebige Integritätsbedingungen definiert und direkt durch das DBMS überprüft werden. Trigger und aktive Datenbanksysteme werden in Abschnitt 2.4 ausführlicher besprochen. 2.3.3 Integritätssicherung durch Kapselung Die Nachteile der bisher vorgestellen Methoden, Redundanz bei Integritätssicherung durch die Anwendung und unzureichende Bedingungen von Integritätsmonitoren, sollen durch eine dritte Architektur vermieden werden: Integritätssicherung durch Einkapselung (Abbildung 2.3). Die Integritätsüberprüfung wird durch ei- Inv.-Nr.: 2005-05-23/052/IN98/2254 2.4. AKTIVE DATENBANKSYSTEME UND TRIGGER Anwendung 1 17 Anwendung n Kapselung DBMS Datenbank Abbildung 2.3: Integritätssicherung durch Kapselung ne Zwischenschicht ausgeführt. Die Anwendungen greifen ausschließlich über diese Schicht auf die Daten zu, ein direkter Zugriff auf die Datenbank per SQL-DDL ist grundsätzlich nicht erlaubt. Durch die zwar vorgelagerte, aber zentrale Überprüfung wird Redundanz vermieden und das volle Spektrum der Integritätssicherung durch operative Bedingungen in einer beliebigen Programmiersprache zur Verfügung gestellt. 2.4 Aktive Datenbanksysteme und Trigger DBMS legen in Allgemeinen ein passives Verhalten an den Tag. Das heisst, Operationen auf den Daten werden expizit vom Nutzer ausgelöst. Wird ein reaktives Verhalten gewünscht, also eine der Situation angepasste Reaktion auf ein Ereignis, muss dies bisher oft aufwendig im Anwendungsprogramm implementiert werden. Mit herkömmlichen DBMS kann solch ein reaktives Verhalten auf zwei Wege realisiert werden. Zum einen durch Polling, also regelmäßiges Abfragen der Datenbank. Da man nicht immer abschätzen kann, wann das gewünschte Ereignis eintritt, kann das Polling zu oft erfolgen und damit wertvolle Ressourcen belegen, oder zu selten, und das Ereignis könnte verpasst werden. Zum anderen lässt sich diese Aufgabe in das Anwendungsprogramm verlegen. Hier treffen aber wieder die gleichen Nachteile wie bei der Integritätssicherung durch die Anwendung auf (vgl. Abschnitt 2.3.1). Analog zur Integritätssicherung liegt es auch hier nahe, das Erkennen solcher Situationen, die ein reaktives Verhalten erfordern, in das DBMS selbst zu verlegen. Man spricht von so genannten aktiven Datenbanksystemen (aktive DBS). Eine Definition solcher Systeme findet sich in [DG00]: Ein Datenbanksystem heisst aktiv, wenn es zusätzlich zu den üblichen DBS-Fähigkeiten in der Lage ist, definierbare Situationen in der Inv.-Nr.: 2005-05-23/052/IN98/2254 18 KAPITEL 2. GRUNDLAGEN UND RELATED WORK Datenbank (und wenn möglich darüber hinaus) zu erkennen und in der Folge davon bestimmte (ebenfalls definierbare) Reaktionen auszulösen. Im Gegensatz zu konventionellen DBMS bieten aktive DBS zusätzliche Funktionalitäten. Zum einen muss die interessierende Situation definierbar sein und erkannt werden können, und zum anderen muss sich eine Reaktion definieren lassen und diese beim Erkennen der Situation automatisch ausgeführt werden. Die Aufgaben herkömmlicher DBS sollen unabhängig von diesen neuen Funktionen in aktiven Systemen nebenbei weiter laufen. Durch die Erweiterung um einen aktiven Teil eines DBS basierend auf einem konventionellen System, spricht man zum Beispiel von aktiven relationalen oder aktiven objekt-relationalen DBS. ECA-Regel Die interessierende Situation, auf die eine Reaktion erfolgen soll, muss in geeigneter Weise im DBMS beschrieben und auch erkannt werden. Alle Vorgänge in einem DBMS werden durch Operationen ausgelöst. Soll zum Beispiel der Wert eines Integer-Tabellenfeldes eine bestimmte Grenze nicht überschreiten, wird überprüft, ob dieses Feld geändert wurde (Operation) und danach mit der Grenze verglichen. Die interessierende Situation setzt sich also allgemein aus einem Ereignis und einer Bedingung zusammen. Ein Ereignis ist ein Vorgang, der zu einem festen Zeitpunkt auftritt. Es wird durch ein WAS und WANN charakterisiert. Die Bedingung gibt an, welche Voraussetzungen erfüllt sein müssen, damit zusätzlich zum Ereignis eine interessierende Situation vorherrscht. Dazu können die Daten und der aktuelle Zustand des DBMS genutzt werden. Eine Aktion gibt an, wie das DBMS auf eine bestimmte Situation reagieren soll. Tritt ein Ereignis ein und ist die Auswertung der Bedingung positiv, kann anschließend die gewünschte Aktion erfolgen. Fasst man die drei Teile (Ereignis, Bedingung, Aktion) zu einem Tripel zusammen, spricht man von Regeln, bzw. von ECA-Regeln (event/condition/action). Über solche Regeln wird der Zusammenhang zwischen der interessierenden Situation und der Reaktion hergestellt. Trigger sind eine eingeschränkte Version von ECA-Regeln, werden aber häufig als Synonym für diese verwendet. Wird ein Trigger im DBMS definiert, wird das Eintreten relevanter Ereignisse überprüft. Ist dies der Fall, wird der Trigger ausgelöst. Man sagt auch: er wird gefeuert. Anschließend wird die Bedingung auf Richtigkeit überprüft und im positiven Fall die Aktion ausgeführt. ECA-Regeln sind wie folgt aufgebaut: DEFINE RULE rule name ON event clause IF cond clause DO action clause execution constraints Das Ereignis (event clause) legt fest, WAS zum Zeitpunkt WANN geschehen muss, um den Trigger zu feuern“. Es müssen nicht zwingend immer beide Teile ” (WANN und WAS) angegeben werden. Spezifiziert man nur einen Zeitpunkt, stellt der gleichzeitig auch das WAS dar. Ereignisse lassen sich in Klassen zusammenfassen, wenn sie einen ähnlichen Kontext aufweisen. Des Weiteren ist es möglich, Inv.-Nr.: 2005-05-23/052/IN98/2254 2.5. MODELLIERUNG VON AUSGABEBEDINGUNGEN 19 unterschiedliche Ereignisse zu verknüpfen. Man spricht hier von zusammengesetzten Ereignissen. Registriert das DBMS ein spezifiziertes Ereignis, wird der Trigger gefeuert. Anschließend wird die Bedingungsregel (cond clause) ausgewertet. Gibt sie ein true zurück, wird die eigentliche Aktion action clause ausgeführt. Als Operationen sind beliebige DDL-/DML-Konstrukte oder auch der Aufruf einer in der Datenbank gespeicherten Prozedur (stored procedures) möglich. Stored Procedures Stored Procedures sind Programme, die direkt im Kernel des DBMS aufgeführt werden. Man spricht hierbei von serverseitiger Programmierung. Das DBMS der Firma Oracle unterstützt seit Version 8i neben PL/SQL auch Java-Programme als gespeicherte Prozeduren [BS02]. Dazu wird der Bytecode in die Datenbank geladen und kann anschließend durch die im Kernel der Datenbank integrierte Java Virtual Machine (JVM) ausgeführt werden. Die Klassen des Java Development Kit (JDK) liegen in einer nativ kompilierten Version vor, was eine Geschwindigkeitssteigerung in der Ausführung der gespeicherten Prozeduren zur Folge hat. Durch die Verwendung von Java ist es möglich, komplexere Vorgänge, im speziellen Fall Integritätsbedingungen, im DBMS abzubilden und zu integrieren. Wurden Integritätsregeln in einem externen Java-Programm implementiert, können diese mit wenigen Anpassungen in die Datenbank verlagert werden. Die Ausführung von Programmen in der serverseitigen JVM bringt aber auch Nachteile. Zunächst muss der Einstiegspunkt der gespeicherten Java-Prozedur eine statische Methode sein. Nur statische Attribute und Methoden von Klassen können im Data Dictionary von Oracle publiziert werden. Des Weiteren ist es nicht möglich, Instanzen von GUI-Objekten zu erzeugen, was aber angesichts der fehlenden graphischen Ausgabemöglichkeiten des Datenbank-Kern nicht notwendig ist. Die größte Einschränkung ist die fehlende Unterstützung für Multithreading. Es ist prinzipiell möglich, Programme mit mehreren Threads zu implementieren. Vorhandener Quellcode muss nicht verändert werden. Die Threads laufen im Kernel des DBMS nacheinander ab, im Gegensatz zum gleichzeitigen Ablauf in einer normalen JVM. Man sagt dazu auch präemptives Multithreading. Benötigt ein Thread den Prozessor für sich alleine, werden alle anderen Threads für diese Zeit blockiert. Es ist sinnvoll auf Threads zu verzichten, da kein Performancegewinn durch Multithreading zu erwarten ist. Nachdem alle nötigen Mechanismen des DBMS vorgestellt wurden, beschäftigt sich der nächste Abschnitt mit der Modellierung, Speicherung und Überprüfung der eigentlichen Ausgabebedingungen. 2.5 Modellierung von Ausgabebedingungen Um Ausgabebedingungen auf ihre Konsistenz zu prüfen, muss als erstes eine geeignete Form zur Beschreibung der funktionalen Zusammenhänge gefunden werden. Es existieren bereits diverse Möglichkeiten, zeitliche oder räumliche Abfolgen von Medienobjekten zu definieren. Die Synchronized Multimedia Integration Language, kurz SMIL ([Roi98], [HL01], [Mi05]), ermöglicht eine allgemeine Definition die Dokumentenstruktur für Mediendaten. Es kann für die Positionierung, Synchronisation und Präsentation von Medoenobjekten genutzt werden. Der RealPlayer der Inv.-Nr.: 2005-05-23/052/IN98/2254 20 KAPITEL 2. GRUNDLAGEN UND RELATED WORK Firma RealNetworks oder Quicktime von Apple unterstützen zum Beispiel dieses Format. In [Ra04] werden bestehende Beschreibungsmöglichkeiten bewertet und eine neue Form zur Beschreibung von Ausgabebedingungen in einer Multimedia-Datenbank konzipiert. Als Ergebnis wird eine Kombination von Allen-Relationen und Difference Constraints vorgeschlagen, um auf einfache und verständliche Art räumliche und zeitliche Bedingungen zu definieren. In den Abschnitten 2.5.1 und 2.5.2 werden die Grundlagen der Allen-Relationen und Difference Constraints vorgestellt. Durch die Transformation der Allen - Relationen in Difference Constraints ist ein Konsistenzcheck auf gund eines Constraint Graphen mittels des Algorithmus von Bellman und Ford (Abschnitt 2.5.3) möglich, also die Überprüfung der Ausgabebedingungen. [He04] nutzt die Ergebnisse von [Ra04] und definiert eine Schnittstelle, die es dem Nutzer ermöglicht, aus einer Auswahl von Allen Relationen räumliche und zeitliche Bedingungen zu definieren. Aufbauend auf diesem Artikel ist im Rahmen einer Studienarbeit das Programm ConstraintManager entstanden [Ha04], welches Ausgabebedingungen aus einer XML-Datei ausliest, auf Konsistenz prüft und in der Datenbank speichert. Die in diesem Programm definierten Tabellenstrukturen und Klassen werden in der vorliegenden Arbeit verwendet und erweitert. Die folgenden Abschnitte beschreiben die Transformation der Bedingungen, von der Formulierung bis zur Speicherung in der Datenbank. Der eigentliche Konistenzcheck erfolgt zunächst durch ein externes Programm. Die Integritätsicherung entspricht der in Abschnitt 2.3.1 vorgestellten Architektur. Anschließend wird der Konsistenzcheck in das DBMS in Form eines Integritätsmonitors (vgl. Abschnitt 2.3.2) implementiert und hinsichtlich der Effizienz und praktischem Nutzen bewertet (Kapitel 6). 2.5.1 Allen-Relationen Allen-Relationen [Al83] sind Konstrukte, mit denen feste Zeitintervalle (Objekte mit einer definierten Dauer) zeitlich angeordnet werden können. Der große Vorteil gegenüber anderen Beschreibungsmöglichkeiten (siehe nächster Abschnitt) liegt in der einfachen Verständlichkeit für den Nutzer. Viele andere Modelle bauen auf den Allen-Relationen auf, um eine zeitliche Strukturierung zu realisieren [DK95]. Nachteilig ist, dass keine funktionalen Zusammenhänge definiert werden können. Eine Allen-Relation kann zum Beispiel lauten: A before B. Es kann nicht definiert werden, wie viele Zeiteinheiten A vor B kommen soll. Durch Veränderung der Intervalle von A und B kann die Relation in ein meets, overlaps oder finishes-invers verwandelt werden. Das ist hinsichtlich der Verständlichkeit beim Nutzer ein weiterer Nachteil. Welche Allen-Relationen es gibt und was sie im einzelnen bedeuten, ist in [Ra04] ausführlich beschrieben. Die Überprüfung der Konsistenz von Allen-Relationen erweist sich ebenfalls als schwierig. Sie ist nur mit erheblichen Aufwand durchzuführen, da es sich um ein NP-vollständiges Problem handelt. Durch diese Einschränkung sind die AllenRelationen zunächst nicht für die Beschreibung von Ausgabebedingungen brauchbar. Inv.-Nr.: 2005-05-23/052/IN98/2254 2.5. MODELLIERUNG VON AUSGABEBEDINGUNGEN 2.5.2 21 Difference Constraints Die Nachteile der Allen-Relationen sind bei Difference Constraints nicht vorhanden ([CLS00],[CPS96]). Mit ihnen ist es möglich, sowohl zeitliche als auch räumliche Zusammenhänge zwischen Objekten zu definieren. Dieser Vorteil lässt sich nutzen, da Allen-Relationen in Difference Constraints transformiert werden können. Folgender Difference Constraint entspricht der Allen-Relation A before B: end(A) − st(B) ≤ c1 , c1 < 0. Die Konstante c1 beschreibt den zeitlichen Mindestabstand zwischen den Endzeitpunkt von Objekt A und dem Startzeitpunkt von Objekt B. Es ist auch möglich, außer Mindestabständen variable oder feste Intervalle zwischen zwei Objekten zu definieren. Neben den zeitlichen Bedingungen gibt es zusätzlich noch einen Duration-Constraint, welcher die Dauer eines Medienobjektes definiert: end(O) − st(O) ≤ cDauer , st(O) − end(O) ≤ −cDauer , cDauer > 0 und diverse Constraints zur räumlichen Anordnung von Objekten. Eine Übersicht ist [Ra04] zu entnehmen. Die Menge aller Bedingungen wird als ein System von Difference Constraints < V,C > bezeichnet. Die Konsistenzprüfung dieses Systems mit Hilfe des Algorithmus von Bellman und Ford wird im folgenden Abschnitt beschrieben. Difference Constraints stellen eine Möglichkeit dar, alle gewünschten Informationen und Forderungen als Ausgabebedingungen abzubilden. Sie sind aber für den Nutzer schwer verständlich. Das Manko der fehlenden funktionalen Zusammenhänge von Allen-Relationen wird in [He04] durch Erweiterung der Relationen mit Parametern gelöst. Bei der Umwandlung der Allen - Relationen in Difference Constraints bilden diese Parameter die Konstanten der einzelnen Ungleichungen. Auf diese Art und Weise wird dem Nutzer eine Lösung zur Verfügung gestellt, die sowohl leicht verständlich ist, als auch alle gewünschten Anforderungen zur Definition von Ausgabebedingungen erfüllt. Eine Übersicht der zur Verfügung stehenden erweiteretn Allen-Relationen befindet sich im Anhang A.1. 2.5.3 Bellman und Ford Die effiziente Überprüfung der Bedingungen (Konsistenzcheck) stellt das Hauptproblem der Thematik dar. Zunächst müssen die Difference Constraints, welche die Ausgabebedingungen repräsentieren, in eine geeignete Form transformiert werden. Aus der Menge der Difference Constraints wird ein gerichteter und gewichteter Graph gebildet, der die Bedingungen repräsentiert und auf Konsistenz geprüft werden kann. Der Vorgang der Konsistenzprüfung lässt sich auf die Suche nach kürzesten Wegen in gerichteten Graphen von einem Knoten aus reduzieren. Kann von einem definierten (Start-) Knoten aus zu jedem anderen Knoten im Graphen ein kürzester Weg gefunden werden, ist der Graph konsistent. Lässt sich kein kürzester Weg zu diesem Knoten bestimmen, existiert ein negativer Zyklus auf dem Weg zu diesem Knoten. Dieser Zyklus wird bei der Suche nach demm kürzesten Pfad immer wieder durchlaufen, so dass es einen immer noch kürzeren Weg gibt. Das bedeutet eine Inv.-Nr.: 2005-05-23/052/IN98/2254 22 KAPITEL 2. GRUNDLAGEN UND RELATED WORK Inkonsistenz. Die Konsistenz des Graphen ist also direkt davon abhängig, ob ein negativer Zyklus von einem Startknoten existiert, bzw. ob sich die kürzesten Wege bestimmen lassen. Die Weglängen sind gleichzeitig Grundlage zur Berechnung der Ausgabezeiten. Zur Berechnung von kürzesten Pfaden in gerichteten Graphen von einem Knoten aus existieren diverse Algorithmen. Einer der bekanntesten Algorithmen ist von 2 Dijkstra [Di59]. Er hat eine Zeitschranke von O |V | und ist für Graphen mit positiven Kantengewichten definiert (vgl. [Br94]). Die aus den Difference Constraints erstellten Graphen besitzen aber auch negative Kantengewichte, für die der Algorithmus von Dijkstra nicht verwendet werden kann. Aus diesem Grund muss auf den Algorithmus von Bellman und Ford [Be59] zurückgegriffen werden. Er ist für gerichtete Graphen mit negativen Kantengewichten definiert, hat aber im Vergleich zu Dijkstra die schlechtere Zeitschranke O (|V | · |E|). Die Vorgehensweise der Umwandlung der Difference Constraints wurde schon in [Ra04] beschrieben, wird hier aber noch einmal erwähnt, da sie eine zentrale Rolle beim Konsistenzcheck einnimmt. Die Menge der Difference Constraints wird als System von Difference Constraints < V,C > bezeichnet. Es besteht aus einer Menge V von Variablen und einer Menge C von linearen Ungleichungen der Form: xi − xj ≤ ck , 1 ≤ i, j ≤ n, 1 ≤ k ≤ m, xi , xj ∈ V, ck = const. (2.1) Zur Überprüfung der Bedingungen mittels Bellman und Ford wird ein Constraint Graph erstellt. Jede Ungleichung wird durch je 2 Knoten (die Unbekannten) repräsentiert, welche durch eine gerichtete und gewichtete Kante verbunden sind. Das Gewicht der Kante entspricht dem Wert der Konstante ck . Der entsprechende Constraint Graph ist ein gerichteter und gewichteter Graph G =< V, E >: V = {v0 , v1 , v2 , ..., vn } , E = {(vj , vi ) : xi − xj ≤ ck } ∪ {(v0 , v1 ), (v0 , v2 ), ..., (v0 , vn )} , Kantengewichte : w(vj , vi ) = ck , i, j 6= 0, w(v0 , vi ) = 0, n < 0. (2.2) Der Graph kann je nach Zusammensetzung der Bedingungen ein zusammenhängender Graph sein oder aus Teilgraphen bestehen. Durch das Hinzufügen des Startknotens v0 und den von ihm ausgehenden Kanten zu jedem anderen Knoten wird sichergestellt, dass alle Knoten erreichbar sind und somit ein zusammenhängender Graph existiert. Der Algorithmus von Bellman und Ford berechnet die kürzesten Pfade von einem definierten Startknoten zu jedem anderen Knoten im Graphen, falls dieser erreichbar ist. Im Falle eines negativen Zyklus würde es immer einen noch kürzeren Weg geben. In diesem Fall bricht der Algorithmus ab und liefert ein f alse zurück. Die Bedingungen hätten somit den Konsistenzcheck nicht bestanden. Gibt der Algorithmus ein true aus, ist das System von Difference Constraints konsistent und der Schedule kann anhand der kürzesten Pfade berechnet werden. Die Berechnung der Ausgabezeiten wird in Kapitel 5 erläutert. Die Zeitschranke O (|V | · |E|) des Algorithmus von Bellman und Ford ist abhängig von der Komplexität des Graphen. Je mehr Kanten und Knoten der Graph besitzt, um so aufwendiger und kostenintensiver ist der Konsistenzcheck. Durch die Inv.-Nr.: 2005-05-23/052/IN98/2254 2.5. MODELLIERUNG VON AUSGABEBEDINGUNGEN 23 expotentielle Laufzeit kann man sich sehr leicht beim Aufwand verschätzen. Um ein Beispiel zu nennen: Ein PC mit 3 GHz benötigt für einen kompletten Check eines Graphen mit 2000 Knoten und ca. 6000 Kanten ca. 19 Minuten. Für diesen Test wird die Testschleife des Algorithmus etwa 12 Millionen mal durchlaufen. Der selbe PC braucht für einen Graphen mit 10.000 Knoten und 30000 Kanten (Faktor 5) jedoch 101 Stunden (Faktor 300). Dies entspricht ca. 300 Milliarden Schleifendurchläufe. Ein Konsistenzcheck muss bei jeder einzelnen Änderung einer Bedingung durchgeführt werden. Dies ist bei großen Graphen nicht praktikabel. Mit der Optimierung des Konsistenzcheck mittels Bellman und Ford beschäftigt sich das nächste Kapitel. Dort werden auch Beispiele für Constraint Graphen aufgeführt. 2.5.4 Eingabe der Bedingungen - Der Constraint Manager Nachdem gezeigt wurde, dass sich Difference Constraints zur Beschreibung von räumlichen und zeitlichen Bedingungen eignen, müssen diese in eine Datenbank eingegeben werden. Da sie nicht so leicht verständlich sind wie Allen-Relationen ist es sinnvoll, dem Nutzer eine einfachere Möglichkeit zur Verfügung zu stellen. Wie schon erwähnt, wurden in [He04] Vorschläge gemacht und eine Auswahl an erweiterten Allen-Relationen für die Definition von Bedingungen zur Verfügung gestellt. Hauptsächlich auf diese Quelle aufbauend ist im Rahmen einer Studienarbeit ([Ha04]) das Programm ConstraintManager entstanden. Die Bedingungen werden als Datei im XML-Format zur Verfügung gestellt. Sie beinhaltet alle zu einem Projekt gehörenden erweiterten Allen Relationen und Duration Constraints. Diese Form der Dateneingabe ist nicht sehr benutzerfreundlich. Wünschenswert wäre ein Programm, in dem der Nutzer die Ausgabebedingungen über eine graphische Benutzeroberfläche erstellen kann und anschließend die XML-Datei automatisch generiert wird. Für Testzwecke ist der ConstraintManager aber ausreichend, da nicht jeder einzelne Difference Constraint mühsam erstellt und von Hand“ in ” die Datenbank eingegeben werden muss. Die XML-Dateien der in im Kapitel 6 vorgestellten Beispielprojekte wurden automatisch generiert. Der ConstraintManager liest die Daten aus einer XML - Datei ein, konvertiert sie in Difference Constraints und erstellt daraus einen Constraint Graph. Nach erfolgreichem Konsistenzcheck mittels Bellman und Ford werden der Graph und Informationen über die verwendeten Difference Constraints in einer Datenbank gespeichert. Die Speicherung erfolgt in zwei Tabellen (Tabellen 2.1 und 2.2). In Constraint Graphs wird der Constraint Graph gespeichert. Dazu werden alle Kanten des Graphen mit Start-, Endknoten und Kantengewicht abgelegt. Eine Zeile entspricht einer Kante bzw. einem Difference Constraints. Aus den drei Einzeldaten einer Kante (Start-, Endknoten und Kantengewicht) kann man durch Vertauschen der Werte für Start- und Endknoten den entsprechenden Difference Constraint generieren und umgekehrt. Definiert man die Relation A before(2) B, ergibt sich daraus folgender Difference Constraint: end(A) − st(B) ≤ −2 (2.3) Jede Ungleichung entspricht einer Kante im Graphen. Die Knoten ergeben sich Inv.-Nr.: 2005-05-23/052/IN98/2254 24 KAPITEL 2. GRUNDLAGEN UND RELATED WORK Spaltenname ID Projekt Startknoten Endknoten Gewicht C ID Bedeutung Lfd. Nummer aller Kanten des Projektgraphen Projektname Startknoten der Kante Endknoten der Kante Gewicht der Kante Nummer der Constraints Tabelle 2.1: Tabelle Constraint Graphs Spaltenname ID Projekt C ID Vorgaenger Nachfolger R ID Bedeutung Lfd. Nummer aller Constraints des Projektes Projektname Nummer der Constraints Endknoten der Kante Gewicht der Kante Typ des Constraints Tabelle 2.2: Tabelle Constraint Orders implizit daraus. Die beim Parsen der XML-Datei enstandenen Difference Constraints (Ungleichungen) werden in SQL-Befehle konvertiert und somit in der Datenbank gespeichert. Die aus der Ungleichung 2.3 entstandene resultierende Kante ist in Tabelle 2.3 zu sehen. Für den klassischen Konsistenzcheck und die Berechnung des Ausgabeschedule reichen die gespeicherten Daten in der Tabelle Constraint Graphs aus. Für die Optimierungen, welche in den folgenden Kapiteln beschrieben werden, sind aber zusätzliche Informationen notwendig. Die Tabelle Constraint Orders beinhaltet den Typ und die beiden in Beziehung stehenden Objekte jedes Constraints. Der entsprechende Eintrag in der Tabelle zur before - Relation ist in Tabelle 2.4 dargestellt. Inv.-Nr.: 2005-05-23/052/IN98/2254 2.5. MODELLIERUNG VON AUSGABEBEDINGUNGEN ID 1 Projekt Bsp1 Startknoten st(B) Endknoten end(A) Gewicht -2 25 C ID 1 Tabelle 2.3: Beispiel Tabelleneintrag Constraint Graphs ID 1 Projekt Bsp1 C ID 1 Vorgaenger A Nachfolger B R ID 5 Tabelle 2.4: Beispiel Tabelleneintrag Constraint Orders Inv.-Nr.: 2005-05-23/052/IN98/2254 26 KAPITEL 2. GRUNDLAGEN UND RELATED WORK Inv.-Nr.: 2005-05-23/052/IN98/2254 Kapitel 3 Überprüfung mit Bellman Ford Dieses Kapitel beschäftigt sich mit der Überprüfung von Ausgabebedingungen anhand eines Constraint Graphen durch den Algorithmus von Bellman-Ford. Ziel ist es, den Konsistenzcheck anhand des Constraint Graphen so effektiv wie möglich zu gestalten. Eine Optimierung ist erforderlich, da der Algorithmus von Bellman Ford eine Laufzeit von O(n ∗ m) besitzt. Die Testzeiten betragen bei sehr großen Projekten mehrere Minuten bis Tage und sind somit nicht für den praktischen Gebrauch geeignet. Mit Hilfe von Optimierungen soll es möglich sein, auch größere Projekte in einer vertretbaren Zeit auf Konsistenz zu überprüfen. 3.1 Beschränkungen und Beispiele Der Konsistenzcheck ist gleichbedeutend mit der Suche nach negativen Zyklen. Zur effizienteren Überprüfung sind einige Einschränkungen in der Graphstruktur notwendig. Negative Zyklen können auf zwei Arten entstehen. Zum einen gibt es lokale negative Zyklen, die zwischen den Knoten zweier benachbarter Medienobjekten existieren, falls die verknüpfende Bedingung nicht erfüllt ist. Zum anderen sind auch globale negative Zyklen möglich. Sie können entstehen, wenn mehrere Objekte transitiv miteinander in Beziehung stehen, zum Beispiel das erste und letzte Objekt eines Projektes. Die Problematik soll anhand eines Beispielprojektes verdeutlicht werden. Es besteht aus vier Medienobjekten mit einer definierten Dauer (Tabelle 3.1) und drei Allen-Relationen (Tabelle 3.2). Zum besseren Verständnis und Überblick über das Beispielprojekt wird der Beziehungsgraph eingeführt. Der Beziehungsgraph basiert auf den Allen-Relationen. Jedes Medienobjekt wird durch einen Knoten repräsentiert und jede Allen-Relation durch eine gerichtete Kante zwischen den betreffenden Objekten bzw. Knoten. Die Duration-Constraints spielen im Beziehungsgraph keine Rolle, da sie keine Beziehungen zwischen Objekten abbilden. Der Startknoten v0 1 ist notwendig, ähnlich wie beim Constraint 1 Ein Startobjekt bzw. -knoten v existiert sowohl im Beziehungs- als auch im Constraint Gra0 phen und hat durch die ausgehenden Kanten die Aufgabe, einen zusammenhängenden Graphen zu bilden. Inv.-Nr.: 2005-05-23/052/IN98/2254 28 KAPITEL 3. ÜBERPRÜFUNG MIT BELLMAN - FORD Objekt o1 o2 o3 o4 Dauer 15 25 20 10 Bedingung o1 duration(15) o2 duration(25) o3 duration(20) o3 duration(10) Tabelle 3.1: Beispielprojekt: Objektdauer Bezeichnung AR1 AR2 AR3 Allen - Relation o1 before(2) o2 o2 overlaps(3,5) o3 o3 before(5) o4 Tabelle 3.2: Beispielprojekt: Allen-Relationen mit Parametern Graphen, um einen zusammenhängenden Graphen zu bilden. Die Abbildungen 3.1 und 3.2 zeigen den Beziehungsgraph bzw. den zugehörigen Constraint Graph, die aus den Bedingungen des Beispielprojektes erzeugt wurden. In diesem Beispiel sind nur lokale negative Zyklen möglich, denn es existieren nur Beziehungen zwischen direkt benachbarten Objekten (siehe Beziehungsgraph). Fügt man eine vierte Allen-Relation AR4 hinzu, zum Beispiel o1 before(20) o3 , wäre eine Kante zwischen den Objekten o1 und o3 (Abbildung 3.3, gestrichelte Kante) und ein globaler negativer Zyklus grundsätzlich denkbar. Beschränkt man die Erstellung von Bedingungen, können globale Zyklen von Anfang an verhindert werden. Dies ist ein wichtiger Punkt zur Optimierung des Konsistenzchecks. Folgende Regeln für den Beziehungsgraphen bzw. die Projektdefinition sind notwendig: • es existiert genau ein Startobjekt v0 mit der Dauer t = 0 ohne Vorgänger • alle Medienobjekte haben genau einen Vorgänger und beliebig viele Nachfolger • alle Medienobjekte haben eine definierte Dauer t ≥ 0 Bei einem Blick auf diese Einschränkungen wird klar, dass es sich beim Beziehungsgraphen um einen Baum mit v0 als Wurzel handeln muss. Dank dieser Vorgabe können keine globale Zyklen entstehen und der Konsistenzcheck kann auf das Suchen von lokalen negativen Zyklen beschränkt werden. Die nächsten Abschnitte beziehen sich ausschließlich auf lokale negative Zyklen. Die Forderung nach einer fest definierten Intervalldauer der Medienobjekte ist nicht zwingend notwendig. Grundsätzlich lassen sich, analog zu Allen-Relationen, auch variable Intervalle definieren. Aus Sicht der Optimierungen würde dies den Konsistenzcheck aber erschweren und keinen zusätzlichen Erkenntnisgewinn bringen. v0 o1 AR1 o2 AR2 o3 AR3 o4 Abbildung 3.1: Beziehungsgraph Inv.-Nr.: 2005-05-23/052/IN98/2254 3.1. BESCHRÄNKUNGEN UND BEISPIELE 0 0 end(o1) 29 0 end(o2) end(o4) end(o3) -5 0 v0 15 -15 25 -2 -1 -25 20 -20 -5 10 -10 0 -3 st(o1) 0 st(o2) 0 st(o4) st(o3) 0 Abbildung 3.2: Constraint Graph v0 o1 AR1 o2 AR2 o3 AR3 AR4 Abbildung 3.3: Beziehungsgraph mit globalem Zyklus Inv.-Nr.: 2005-05-23/052/IN98/2254 o4 30 KAPITEL 3. ÜBERPRÜFUNG MIT BELLMAN - FORD ID 1 2 3 4 5 6 7 8 9 10 11 12 13 Projekt Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Startknoten st(o1 ) end(o1 ) st(o2 ) end(o2 ) st(o3 ) end(o3 ) st(o4 ) end(o4 ) st(o2 ) end(o3 ) st(o3 ) end(o2 ) st(o4 ) Endknoten end(o1 ) st(o1 ) end(o2 ) st(o2 ) end(o3 ) st(o3 ) end(o4 ) st(o4 ) end(o1 ) end(o2 ) st(o2 ) st(o3 ) end(o3 ) Gewicht 15 -15 25 -25 20 -20 10 -10 -2 -5 -3 -1 -5 C ID 1 1 2 2 3 3 4 4 5 6 6 6 7 Tabelle 3.3: Komplette Constraint Graphs - Tabelle für Beispielprojekt ID 1 2 3 4 5 6 7 Projekt Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 Bsp1 C ID 1 2 3 4 5 6 7 Vorgaenger o1 o2 o3 o4 o1 o2 o3 Nachfolger o2 o3 o4 R ID 1 1 1 1 5 7 5 Tabelle 3.4: Komplette Constraint Orders - Tabelle für Beispielprojekt Die Einschränkungen zur Definition von Projekten bzw. des Beziehungsgraphen erscheinen zunächst gravierend. Die Möglichkeit jedes Objekt mit einem beliebig anderen in Beziehung zu setzen und somit keine Beschränkungen vorzugeben, ist aus Sicht des Nutzers zunächst sinnvoll und erwünscht. Für den logischen Aufbau ist aber es besser, nur direkt nachfolgende Objekte zu verknüpfen. Andernfalls können in größeren Projekten unübersichtliche Strukturen entstehen, die bei Änderungen negative Zyklen wahrscheinlicher machen. Die Problematik der Szenenbeschreibung zur Wellenfeldsynthese können mit diesen Einschränkungen problemlos erfüllt werden. Das Beispielprojekt wird als XML-Datei erzeugt und mit Hilfe des ConstraintManager in der Datenbank gespeichert. Die entsprechenden Tabellen Constraint Graphs und Constraint Orders sind in 3.3 und 3.4 zu sehen. Die Tabelle Constraint Orders dient hauptsächlich zur Erstellung des Beziehungsgraphen, bzw. um Zusammenhänge zwischen den Relationen zu extrahieren und um den Typ einer Relation festzustellen. 3.2 Klassifizierung der Allen-Relationen Eine Klassifizierung der Allen-Relationen ist sinnvoll, da nicht aus jeder Relation ein negativer Zyklus hervorgehen kann. Alle Allen-Relationen haben als Graph das selbe Grundgerüst (Abbildung 3.4). Zu einem Medienobjekt (v1 bzw. v2 ) im Bezie- Inv.-Nr.: 2005-05-23/052/IN98/2254 3.2. KLASSIFIZIERUNG DER ALLEN-RELATIONEN 31 hungsgraph existieren je zwei Knoten im Constraint Graph: der Start- (v11 bzw. v21 ) und Endknoten (v12 bzw. v22 ). In allen Abbildungen sind sie jeweils untereinander dargestellt, um die Zugehörigkeit zu verdeutlichen. Wird im Folgenden von den Knoten eines Objektes (v1 ) im (Constraint) Graphen gesprochen, sind die zugehörigen Start- und Endknoten (v11 und v12 ) gemeint. Es wird stets davon ausgegangen, dass die Allen-Relationen sowohl korrekt erzeugt als auch korrekt in Difference Constraints transformiert wurden. Insbesonders bei erweiterten Allen-Relationen sind nur nichtnegative Werte als Parameter erlaubt. Mit Hilfe der Parameter wird ein festes oder variables Intervall [a,b] mit a ≤ b zwischen zwei Zeitpunkten definiert. Verwendet man negative Werte, würde ein Intervall [a,b] mit a > b generiert und hätte eine Inkonsistenz bzw. negativen Zyklus zur Folge. Werden die Bedingungen falsch modelliert oder fehlerhaft in Difference Constraints umgewandelt, können theoretisch an vielen Stellen negative Zyklen entstehen, z. B. durch die beiden Kanten zwischen v11 und v21 . Am Ende dieses Abschnittes wird ein Beispiel eines negativen Zyklus durch eine unerlaubte Definition einer Relation gezeigt. Durch Ausschließen solcher Fehlerquellen lässt sich die Anzahl potentieller negativer Zyklen stark reduzieren. Im Folgenden werden nur solche negative Zyklen betrachtet, die allein durch Inkonsistenzen der Bedingungen entstehen, also potentiell negative Zyklen. Zwischen den Start- und Endknoten eines Objektes existieren je zwei Kanten, welche die Dauer t der Objekte repräsentieren (Abbildung 3.4, durchgezogene Kanten). Diese Kanten können bei korrekter Modellierung der Allen-Relationen und Transformation in Difference Constraints alleine keinen negativen Zyklus bilden. Sie heben sich gegenseitig auf, da eine fest definierte Dauer der Objekte gefordert ist. Im Falle eines negativen Zyklus sind sie aber zwingend an diesem beteiligt. Die Kanten zwischen den Knoten der jeweiligen Objekte (Abbildung 3.4, gestrichelte Kanten), resultierend aus den Difference Constraints, sind essentiell für eine Inkonsistenz. Abhängig von der Relation können eine oder mehrere dieser Kanten in Teilgraphen vorkommen. Der Startknoten v0 muss in diesem Zusammenhang nicht betrachtet werden. Da seine ausgehenden Kanten jeweils das Gewicht Null haben, spielen sie bei der Suche nach negativen Zyklen innerhalb einer Allen-Relation keine Rolle. Der Graph G =< V, E > einer Allen-Relation (vgl. Gleichung 2.1) mit den zwei verknüpften Objekten lässt sich allgemein wie folgt beschreiben: V = V1 ∪ V2 , V1 = {v11 , v12 } , V2 = {v21 , v22 } , E = E1 ∪ E2 , E1 = {(v11 , v12 ), (v12 , v11 ), (v21 , v22 ), (v22 , v21 )} , E2 = {(vkl , vij ) : xij − xkl ≤ ck } ∩ E1 , Kantengewichte : w(vkl , vij ) = ck , i, j, k, l 6= 0. (3.1) Die Menge der Knoten setzt sich aus den beiden Untermengen der jeweils zwei Objektknoten zusammen. Die Menge E1 repräsentiert die Kanten zwischen den jeweiligen Knoten der Mengen V1 und V2 , welche die Objektdauer angeben (Abbildung 3.4, durchgezogene Kanten). Die restlichen Kanten der Menge E2 verlaufen zwischen den Objektknoten (Abbildung 3.4, gestrichelte Kanten). Wie bereits erwähnt, sind die Knoten der Menge E1 zunächst neutral hinsichtlich der Entstehung eines Kreises. Die notwendige Bedingung für einen potentiellen negativen Zyklus Inv.-Nr.: 2005-05-23/052/IN98/2254 32 KAPITEL 3. ÜBERPRÜFUNG MIT BELLMAN - FORD v12 t1 -t1 v11 v22 t2 -t2 v21 Abbildung 3.4: Vollvermaschter Graph mit vier Knoten lautet: ∃k1 ∈ V1 :∃k2 ∈ V2 : (k1 , k2 ) ∩ E2 6= ∅ ∧ (k2 , k1 ) ∩ E2 6= ∅ (3.2) Ein zu überprüfender Zyklus entsteht immer zwischen den Knoten der Mengen V1 und V2 , zwischen den Knotenmengen beider Objekte. Also muss die Menge E2 mindestens zwei Kanten enthalten, die entgegen gerichtet sind ((k1 , k2 ) und (k2 , k1 )). Sind diese Bedingungen erfüllt, ist ein negativer Zyklus grundsätzlich möglich. Durch Summierung der Kantengewichte kann numerisch bestimmt werden, ob ein Kreis negativ ist oder nicht. Die theoretisch vorkommenden Kanten sind im vollvermaschten Graphen sind in Abbildung 3.4 zu sehen. Da die Menge der zugrunde liegenden Allen-Relationen aber begrenzt ist, werden nicht alle Kanten in der Praxis vorkommen. Die Kanten zwischen v11 und v22 sind daher theoretischer Natur. Abbildung 3.5 zeigt die Kanten, die aus den zugrunde liegenden Relationen resultieren. Anhand dieser Kanten lassen sich alle Zyklen identifizieren, die durch Inkonsistenzen der Bedingungen negativ werden können: z1 z2 z3 z4 z5 z6 : (v11 , v21 ), (v21 , v22 ), (v22 , v12 ), (v12 , v11 ), : (v11 , v12 ), (v12 , v22 ), (v22 , v21 ), (v21 , v11 ), : (v21 , v22 ), (v22 , v12 ), (v12 , v21 ), : (v21 , v11 ), (v11 , v12 ), (v12 , v21 ), : (v21 , v12 ), (v12 , v22 ), (v22 , v21 ), : (v21 , v12 ),(v12 , v11 ), (v11 , v21 ). (3.3) Inv.-Nr.: 2005-05-23/052/IN98/2254 3.2. KLASSIFIZIERUNG DER ALLEN-RELATIONEN v12 t1 -t1 v11 33 v22 t2 -t2 v21 Abbildung 3.5: Grundgerüst aller verwendeten Allen - Relationen Sichere Allen - Relationen A before B A meets B Unsichere Allen - Relationen A overlaps B A finishes B A starts B A during B A equals B Tabelle 3.5: Klassifizierung: Sichere und unsichere Allen - Relationen Durch Summierung der Kantengewichte eines Zyklus lässt sich feststellen, ob er negativ ist, also eine Inkonsistenz darstellt. Bellman-Ford tut dies über die Suche nach den kürzesten Pfaden. Hier ist es nicht erforderlich, die potentiellen Zyklen einer Allen-Relation vorher zu identifizieren. Anhand der Kriterien für potentielle Zyklen lassen sich alle verwendeten AllenRelationen in zwei Kategorien einteilen: Erstens die sicheren Allen-Relationen ohne potentiellen negativen Zyklus und zweitens die Unsicheren. Diese enthalten einen Kreis zwischen Knoten unterschiedlicher Objekte, der durch die Kombination der Bedingungen und der Dauer der Medienobjekte negativ werden kann. Tabelle 3.5 zeigt die Klassifizierung. Im Beispielprojekt sind sowohl sichere als auch unsichere Relationen vorhanden. Betrachtet man die before-Relation (AR1) als Teilgraph, existiert nur eine Kante zwischen beiden Objekten (Abbildung 3.6). Ist man einmal bei Objekt o1 angelangt, führt kein Pfad zurück zu Objekt o2 . Die Kanten der Objektdauer bilden zwar einen Kreis, heben sich aber bei korrekter Modellierung gegenseitig auf. Im Gegensatz dazu ist die overlaps-Relation (AR2) unsicher. Es besteht u. a. ein potentieller Zyklus zwischen end(o3 ), end(o2 ) und st(o3 ) (Abbildung 3.7, gestrichelte Kanten), der abhängig von den Kantengewichten, negativ werden kann. Die im Beispiel gewählten Werte führen nicht zu einem negativen Zyklus: -5 -1 + Inv.-Nr.: 2005-05-23/052/IN98/2254 34 KAPITEL 3. ÜBERPRÜFUNG MIT BELLMAN - FORD end(o1) 15 -15 st(o1) end(o2) -2 25 -25 st(o2) Abbildung 3.6: Sichere Relation: before 20 = 16 und somit größer als 0. Wie bereits erwähnt, kann es durch inkorrekte Erzeugung der Difference Constraints zu Inkonsistenzen kommen. Des Dadurch sind auch negative Zyklen ohne Beteiligung der Kanten der Menge E1 möglich, was anhand der bef orev (c1 , l)Relation verdeutlicht werden sollen. Es existiert ein Zyklus zwischen den Knoten end(o1 ) und st(o2 ) (Abbildung 3.8, gestrichelten Kanten). Die Kantengewichte werden durch die Parameter c1 und l der Relation bestimmt. Im Normalfall sind beide Werte nichtnegativ und somit auch der Kreis: − c1 + c1 + l = l, l ≥ 0. Die Paramenter repräsentieren ein Intervall von [c1 ,c1 +l] mit c1 < c1 +l. Wählt man einen negativen Wert für l, resultiert daraus ein negativer Zyklus: − c1 + c1 + l = l, l < 0. Das Intervall [c1 ,c1 + l] wäre mit c1 < c1 + l nicht erlaubt und stellt somit eine Inkonsistenz dar. Da aber stets davon ausgegangen wird, dass die Erzeugung der Constraints und die Definitionen der Intervalle korrekt sind, können solche negative Kreise ausgeschlossen werden. Nur die Zyklen der Auflistung 3.3 sind relevant für die Konsistenzprüfung. 3.3 Optimierungen Ein Konsistenzcheck ist generell nur notwendig, wenn Relationen verändert oder neu hinzugefügt werden. Existiert ein konsistenter Graph und werden Bedingungen (Kanten, Knoten) gelöscht, ist kein Check nötig. Die Bedingungen werden in diesem Fall weicher gemacht: durch das Löschen einer Kante oder Knoten kann kein neuer Zyklus entstehen. Im Gegensatz dazu ist aber ein Konsistenzcheck erforderlich, wenn Bedingungen hinzugefügt werden oder sich Kantengewichte ändern Inv.-Nr.: 2005-05-23/052/IN98/2254 3.3. OPTIMIERUNGEN 35 end(o2) end(o3) -5 25 -1 -25 20 -20 -3 st(o2) st(o3) Abbildung 3.7: Unsichere Relation: overlaps end(o1) 15 -15 end(o2) -c1 st(o1) c1+l 25 -25 st(o2) Abbildung 3.8: Mögliche Inkonsistenz bei beforev Inv.-Nr.: 2005-05-23/052/IN98/2254 36 KAPITEL 3. ÜBERPRÜFUNG MIT BELLMAN - FORD Sichere Operationen Löschen einer Kante oder eines Knoten Hinzufügen einer ungefährlichen Relation Vergrößern eines Kantengewichtes Unsichere Operationen Hinzufügen einer gefährlichen Relation Verkleinern eines Kantengewichtes Tabelle 3.6: Sichere und unsichere Operationen (Änderung einer Bedingung). Im letzteren Fall spielt es aber auch eine Rolle, ob die Gewichte vergrößert oder verkleinert werden (vgl. [Ra04]). Analog zur der Klassifizierung der Allen-Relationen, kann man zwischen sicheren und unsicheren Operationen unterscheiden (Tabelle 3.6). Nach der Löschung von Kanten oder Knoten bzw. einer Bedingung ist es notwendig, den Ausgabeschedule wegen möglicher veränderter Zeiten neu zu bestimmen. In Kapitel 5 werden Berechnung und mögliche Optimierungen erläutert. Die Änderung eines Kantengewichtes betrifft auch Änderungen der Objektdauer. Dieser Fall wird im nächsten Abschnitt betrachtet. Zunächst wird von Änderungen einzelner Allen-Relationen ausgegangen. Der Konsistenzcheck erfolgt mit Hilfe des Algorithmus von Bellman und Ford. Die Laufzeit dieses Tests ist, wie erwähnt, abhängig von der Anzahl der Kanten und Knoten des zu prüfenden Constraint Graph. Zur Reduzierung der Kosten muss der zu testende Graph verkleinert werden. Hier erweist sich die Beschränkung des Beziehungsgraphen auf eine Baumstruktur als sehr vorteilhaft. Durch die besondere Struktur des Graphen schliesst man das Entstehen von globalen Zyklen im Constraint Graph aus. Demzufolge sind nur noch lokale negative Zyklen möglich. Und zwar nur an den Stellen, die seit dem letzten Konsistenzcheck verändert wurden. Wird eine Allen-Relation verändert, müssen nur diese Relation und die beteiligten Objekte überprüft werden. Aus diesem Grund wird ein Teilgraph auf Basis des Constraint Graph erstellt. Der Algorithmus zur Erzeugung dieses Graphen aufgrund der Änderung einer einzelnen Bedingung ist in Abbildung 3.9 dargestellt. Der Input des Algorithmus ist eine condition. Der Begriff ist weit gefasst. Es kann sich um eine komplette Allen-Relation handeln, um einen einzelnen Difference Constraint als Teil einer Relation (im Falle einer Änderung) oder um einen Duration Constraint, welcher letztendlich wieder aus zwei Difference Constraints besteht. Zuerst wird geprüft, ob die veränderte Bedingung eine Allen-Relation (1) oder eine Objektdauer (11) betrifft. Der Teilalgorithmus für die Änderung der Dauer wird im Abschnitt 3.4 erläutert. Handelt es sich um eine unsichere Allen-Relation (2) muss festgestellt werden, ob die betreffende Relation schon im Constraint Graph vorhanden ist (3). Ist dies der Fall und wurde ein Kantengewicht verkleinert(5), wird die komplette Relation mit den Knoten der beteiligten Objekte zum Teilgraph hinzugefügt (6). Beim Hinzufügen der Bedingung wird ebenfalls der Teilgraph um die komplette Relation ergänzt (8). Zum Schluss wird der Startknoten v0 hinzugefügt (19), um anschließend den Konsistenzcheck mittels Bellman und Ford zu starten. Im Beispiel sieht das folgendermaßen aus: die Relation AR2 (o2 overlaps(3,5) o3 ) wird geändert in o2 overlaps(5,5) o3 . Die Relation bzw. Bedingung ist schon im Graph vorhanden, das Kantengewicht von st(o3 ) nach st(o2 ) wurde von −3 auf −5 verkleinert. Der Teilgraph besteht demzufolge zunächst aus den vier betref- Inv.-Nr.: 2005-05-23/052/IN98/2254 3.3. OPTIMIERUNGEN Algorithm: buildP artialGraph(INPUT condition, OUTPUT partialGraph) Input: Condition condition Output: Graph partialGraph 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 if condition is AllenRelation { if condition is UnsafeRelation { if condition is PartOfConstraintGraph { oldCondition = getConditionFromGraph(condition.id) if condition.value < oldCondition.value addToPartialGraph(condition) } else addToPartialGraph(condition) } } else if condition is Duration{ for all relations do{ if condition is related to relations { allenRelation = relations.id addToPartialGraph(allenRelation) } } } addToPartialGraph(startN ode) return partialGraph Abbildung 3.9: Algorithmus zur Teilgrapherzeugung Inv.-Nr.: 2005-05-23/052/IN98/2254 37 38 KAPITEL 3. ÜBERPRÜFUNG MIT BELLMAN - FORD end(o2) 0 end(o3) -5 0 V0 25 -1 -25 20 -20 0 -5 st(o2) st(o3) 0 Abbildung 3.10: Teilgraph nach Änderung einer Allen - Relation fenden Knoten und Kanten. Danach wird der Startknoten v0 mit seinen Kanten erzeugt und der Algorithmus von Bellman und Ford ausgeführt, welcher true zurück gibt. Der erzeugte Teilgraph ist in Abbildung 3.10 dargestellt. Die Kosten für den Konsistenzcheck des Teilgraph gegenüber den gesamten Constraint Graph sind geringer, da die Anzahl der Knoten und Kanten verkleinert wurde. 3.4 Änderung der Objektdauer Bei der Konsistenzprüfung muss zwischen Änderungen von normalen“ Bedingun” gen und Änderungen der Dauer unterschieden werden. Die Überprüfung lässt sich zwar auch hier auf einen lokalen Test beschränken, aber es können in diesem Fall mehr als zwei Medienobjekte beteiligt sein. Allen-Relationen verknüpfen immer nur zwei Medienobjekte. Im Gegensatz dazu kann aber ein Medienobjekt in beliebig vielen Beziehungen vorkommen. Bei Änderung der Dauer müssen alle Beziehungen, die dieses Medienobjekt betreffen, und alle Medienobjekte, welche zu diesen Relationen gehören, getestet werden. Erkennt der Algorithmus aus Abbildung 3.9, dass es sich bei einer geänderten Bedingung um ein Duration Constraint handelt (11), werden alle im Constraint Graph vorhandenen Relationen (12) überprüft, ob das geänderte Objekt beteiligt ist (13). In diesem Fall werden alle beteiligten Relationen (14) und zugehörige Objekte zum Teilgraphen hinzugefügt (15), ebenso der Startknoten. Der fertige Teilgraph ist nun bereit für den Konsistenzcheck. Erhöht man zum Beispiel die Dauer von Objekt o3 von 20 auf 30 Zeiteinheiten (ZE), wird damit ein Kantengewicht verkleinert. Gleichzeitig muss natürlich die positive Kante um den entsprechenden Wert erhöht werden, damit die Forderung einer fest definierten Dauer erfüllt ist. Im Beziehungsgraphen des Beispiels (Abbildung 3.1) kann man gut erkennen, dass das Objekt o3 an den Relationen AR2 und AR3 beteiligt ist. Also müssen die Relationen AR2 und AR3 und die involvierten Objekte o2 , o3 und o4 für den Konsistenzcheck berücksichtigt werden. Der erzeugte Teilgraph ist in Abbildung 3.11 zu sehen. Inv.-Nr.: 2005-05-23/052/IN98/2254 3.4. ÄNDERUNG DER OBJEKTDAUER 39 0 end(o2) 0 end(o3) end(o4) -5 0 V0 25 -1 -25 30 -30 -5 10 -10 0 -3 st(o2) st(o3) 0 st(o4) 0 Abbildung 3.11: Teilgraph nach Änderung eines Duration Constraint v0 Abbildung 3.12: Idealer Beziehungsgraph Auch hier ist der zu testende Graph kleiner als der ursprüngliche Constraint Graph. Allerdings sind jetzt mehr Objekte beteiligt sind als bei einer Änderung einer Allen-Relation. Die Anzahl ist abhängig von der Art und Weise, wie die Objekte untereinander verknüpft wurden und ist gut an der Struktur des Beziehungsgraphen erkennbar. Für die Laufzeit des Konsistenzcheck ist es vorteilhaft, wenn alle Medienobjekte der Reihe nach miteinander verknüpft sind. Jeder Knoten im Beziehungsgraphen hat genau einen Vorgänger und genau einen Nachfolger (Abbildung 3.12). Bei einer Änderung der Dauer müssten nur drei Objekte und zwei Relationen geprüft werden, unabhängig davon, wie viele Objekte im Gesamtgraphen vorkommen. Im Gegensatz dazu vergrößert sich der Aufwand, wenn es ein Hauptobjekt gibt, mit dem alle anderen Medienobjekte in Beziehung stehen (Abbildung 3.13). Ändert man die Dauer des Hauptpbjektes, wäre in diesem Worst-Case-Graph der Teilgraph identisch mit dem Gesamtgraphen. Der Zeitaufwand wäre hier sogar noch größer, weil der zu überprüfende Teilgraph erst gesucht und erstellt werden muss. Dieser Fall ist in der Praxis allerdings sehr unwahrscheinlich. In der Regel wird der Beziehungsgraph einen Hauptstrang, einen Roter Faden“, besitzen, von dem aus andere ” Teilbäume abzweigen (Abbildung 3.14). Wendet man bei der Überprüfung der Objektdauer die Optimierungen konsequent an, kann man den Teilgraph weiter verkleinern. Der im Beispiel erstellte Teilgraph um Objekt o3 umfasst drei Objekte: o2 , o3 und o4 . In Abschnitt 3.2 wurden alle Allen-Relationen in sichere und unsichere klassifiziert (Tabelle 3.5). Da es sich bei der Relation zwischen o3 und o4 um eine sichere before-Relation handelt, kann diese weggelassen werden. Der zu testende Teilgraph umfasst nur noch zwei Objekte (o2 und o3 ) und der Test läuft entsprechend schneller ab. Dieser Optimie- Inv.-Nr.: 2005-05-23/052/IN98/2254 40 KAPITEL 3. ÜBERPRÜFUNG MIT BELLMAN - FORD v0 Abbildung 3.13: Worst Case Beziehungsgraph v0 Abbildung 3.14: Beziehungsgraph mit Rotem Faden“ ” Inv.-Nr.: 2005-05-23/052/IN98/2254 3.5. REDUZIERUNG DER KANTENANZAHL 41 rungsschritt wird jedoch im Algorithmus (Abbildung 3.9) nicht berücksichtigt, da auf diesem Weg falsche Pfade für den Ausgabeschedule berechnet werden. Es wird davon ausgegangen, dass nach einer Überprüfung mit Bellman-Ford stets die Weglängen im gesamten Graphen angepasst werden (siehe Kapitel 5). Nutzt man den Optimierungsschritt mit dem kleineren Teilgraph, ist der Konsistenzcheck schneller. Zur Berechnung der korrekten Pfade für den Ausgabeschedule muss jedoch der vollständige Teilgraph überprüft werden. Das hat insgesamt eine größere Laufzeit zur Folge. 3.5 Reduzierung der Kantenanzahl Nachdem die zu überprüfende Knotenanzahl verkleinert werden konnte, stellt sich jetzt die Aufgabe, die Kantenanzahl des Teilgraphen zu reduzieren. Ansatzpunkt ist wieder der Startknoten v0 bzw. dessen ausgehende Kanten. Diese Kanten gehen zu jedem anderen Knoten im Graphen. Da definiert wurde, dass ein Medienobjekt nur eine Dauer t ≥ 0 haben darf, weiss man, dass die kürzesten Pfade zu den Knoten eines Objektes immer zuerst über den Endknoten verlaufen und danach über den Startknoten. Es kann also nie passieren, dass ein kürzester Pfad über eine Kante vom Startknoten v0 zu einem Startknoten eines Objektes verläuft. Demzufolge kann man alle diese Kanten weglassen. Der resultierende Graph ist durch die Kanten der Duration-Constraints noch immer zusammenhängend. Das ist eine der Hauptaufgaben des Startknoten bzw. dessen Kanten. Diese Optimierung kann so weit getrieben werden, bis nur noch die Kanten vom Startknoten v0 zu den Endknoten der Objekte vorhanden sind, die zu den zuletzt zu präsentierenden Objekten gehen, da über diese sämtliche kürzesten Pfade verlaufen. Ein Zeitgewinn ist aber hier nicht in jedem Falle zu erwarten. Die Struktur des Projektes und die verwendeten Relationen haben wiederum direkten Einfluss auf die Laufzeit dieser Methode. Es lassen sich zum Beispiel worst case Projekte erstellen, bei denen keine Verbesserung der Laufzeit mit dieser Methode erreicht wird. Besteht das Projekt nur aus Objekten, welche mit der equals - Relation verknüpft sind, dürfen keine Kanten vom Startknoten v0 weggelassen werden. Alle Objekte werden zeitgleich präsentiert, d. h. alle kürzesten Pfade verlaufen über die Kanten vom Startknoten v0 zum jeweiligen Endknoten aller Objekte. Die Kanten zu den Startknoten der Objekte können aber gefahrlos weggelassen werden. Wie viel Zeit dadurch bzw. durch die in den vorherigen Abschnitten vorgestellten Optimierungsverfahren eingespart werden kann, wird in Abschnitt 6.2.2 evaluiert. 3.6 Weitere Laufzeitoptimierungen Bei der Erstellung des Teilgraphen und anschließenden Überprüfung durch Bellman-Ford sind weitere Optimierungen bei Sonderfällen möglich. Der Teilgraph bzw. die Knoten- und Kantenanzahl kann noch weiter verkleinert werden. Ansatzpunkt ist der Startknoten v0 . Er wird benötigt, um einen zusammenhängenden Graphen zu erhalten. Nicht zusammenhängende Graphen enstehen, wenn mehrere Relationen verändert wurden, diese aber nicht direkt in Beziehung zueinander stehen. Wird nur eine Relation verändert, kann der Startknoten v0 weggelassen werden. Der zu testende Teilgraph besteht danach nur noch aus 4 statt 5 Knoten, von denen beliebig einer als neuer Startknoten v0 ausgewählt werden kann. Es muss ein Inv.-Nr.: 2005-05-23/052/IN98/2254 42 KAPITEL 3. ÜBERPRÜFUNG MIT BELLMAN - FORD Startknoten festgelegt werden, da der Algorithmus von Bellman-Ford die kürzesten Pfade zu diesem berechnet. Die berechneten Pfade dürfen aber nicht für den Ausgabeschedule verwendet werden, weil sie nicht den kürzesten Weg im gesamten Graph entsprechen. Dazu mehr in Kapitel 5. Werden mehrere Relationen geändert und diese anschließend gemeinsam getestet, kann v0 weggelassen werden, wenn alle geänderten Relationen direkt oder transitiv miteinander in Verbindung stehen, also ein zusammenhängender Teilgraph existiert. Ob der Zeitgewinn durch Weglassen des Startknotens größer ist als der Test auf einen zusammenhängenden Teilgraphen, muss noch nachgewiesen werden. Auch hier dürfen die berechneten Pfade nicht für die Scheduleberechnung genutzt werden. 3.7 Realisierung im DBMS Die Implementierung der Konsistenzprüfung in einem DBMS entspricht der Architektur aus Abschnitt 2.3.2: Integritätssicherung durch DBMS. Werden Bedingungen in der Datenbank gespeichert, übernimmt eine im Kernel der Datenbank gespeicherte Java-Prozedur die Überprüfung. Dies kann vollautomatisch über Trigger realisiert werden. Registriert der Trigger Veränderungen in den Tabellen, wird das gespeicherte Projekt mit der neuen Bedingung auf Konsistenz geprüft. Ist sie gewährleistet, werden die neuen Daten in der Datenbank dauerhaft gespeichert und die Transaktion abgeschlossen. Wird eine Inkonsistenz festgestellt, werden die Änderungen verworfen und der ursprünglich konsistente Zustand der Datenbank wieder hergestellt. Eine Bedingung besteht in der Regel aus mehreren Difference Constraints bzw. Tabelleneinträgen. Wird z. B. eine neue overlaps-Relation in der Datenbank gespeichert, muss nicht nach jeder Insert-Operation der Trigger ausgeführt werden. Es reicht, wenn nach der letzten Einfügeoperation ein Konsistenzcheck stattfindet. Um die Integrität der Daten in der Datenbank zu gewährleisten, werden sämtliche Operationen zum Speichern einer Bedingung zu einer Transaktion zusammengefasst. Wird der commit-Befehl zum Abschliessen der Transaktion an das DBMS gesendet, wird der Trigger zur Überprüfung der Konsistenz ausführt. Im Konzept der aktiven Datenbanksysteme sind zwei Befehle zum Festlegen des Überprüfungszeitpunktes vorgesehen. Wird ein Trigger mit der Option immediate erzeugt, erfolgt die Prüfung sofort bei jeder relevanten Datenbankänderung unabhängig davon, ob eine Transaktion beendet wurde oder nicht. Im Gegensatz dazu kann die Überprüfung durch die deferred-Option (aufgeschoben) an das Ende einer Transaktion verlagert werden. Das ist im vorliegenden Fall erwünscht. Kommt es zum Abschluss einer Transaktion durch den commit-Befehl, überprüft der Trigger anhand der neuen Werte die Konsistenz. Im Falle einer Inkonsistenz erfolgt ein Rollback, d. h. die Änderungen werden verworfen und die ursprüngliche Konsistenz der Daten ist wieder hergestellt. Wird der Constraint Graph bzw. das Projekt das erste Mal in der Datenbank gespeichert, ist es sinnvoll sein, mehrere Bedingungen zu einer Transaktion zusammenzufassen. Dieser Punkt wird in Abschnitt 6.6 näher betrachtet. Inv.-Nr.: 2005-05-23/052/IN98/2254 Kapitel 4 Numerische Konsistenzprüfung Ein anderer Ansatz zur Prüfung der Konsistenz erfolgt über das Erstellen von numerischen Ungleichungen. Diese Ungleichungen werden für jedes Medienobjekt gesondert angegeben und repräsentieren die Bedingungen entsprechend der AllenRelationen und der aktuellen Objektdauer. Sie ergeben sich aus dem Constraint Graph bzw. den Difference Constraints und können anschaulich abgeleitet werden. Anschließend werden jedem Medienobjekt Bedingungen für die minimale bzw. maximale Dauer zugewiesen. Liegt die Dauer der Objekte innererhalb des angegebenen Intervall, sind die Bedingungen bzw. der Graph konsistent. 4.1 Erzeugen der Ungleichungen Die Konsistenzprüfung ist auch hier äquivalent mit der Suche nach negativen Zyklen. In Abschnitt 3.2 wurden alle potentiell negativen Zyklen aufgelistet. Liegt eine Allen-Relation und die Dauer der beiden verknüpften Objekte als Difference Constraints bzw. Constraint Graph vor, wird überprüft, ob einer oder mehrere relevante Zyklen aus Aufzählung 3.3 vorkommen. Existieren alle Kanten eines Zyklus im Graph der Allen-Relation, muss er anhand der Kantengewichte überprüft werden. Ist die Aufsummierung der Werte kleiner als 0, ist der Kreis negativ. Eine Inkonsistenz resultiert aus Widersprüchen der definierten Ausgabebedingungen und der aktuellen Dauer eines Objektes. Kanten der Menge E2 (Ausgabebedingungen) und Kanten der Menge E1 (vgl. Definition 3.1) sind immer an einem relevanten Zyklus beteiligt1 . Sind die Medienobjekte als ein von der Datenbank unterstützter Medien-Typ gespeichert, liegt die Dauer als Attribut vor und kann auf diesem Wege gewonnen werden. Bei der Erzeugung des Graphen werden die Werte ausgelesen und die entsprechenden Kanten im Graphen erzeugt. Liegen die Medienojekte nicht real in der Datenbank vor, wird stattdessen pro Objekt ein Duration-Constraint erzeugt. Die Dauer eines Objektes A (A duration(tA )) wird durch folgende Difference Constraints repräsentiert: 1 Auch hier gilt die Voraussetzung, dass alle Allen-Relationen bzw. Difference Constraints korrekt erzeugt werden. Inv.-Nr.: 2005-05-23/052/IN98/2254 44 KAPITEL 4. NUMERISCHE KONSISTENZPRÜFUNG end(A) − st(A) ≤ tA , st(A) − end(A) ≤ −tA . Wurde ein potentieller negativer Zyklus gefunden, das heisst alle relevanten Kanten existieren im Teilgraph der Relation, werden die Kantengewichte ausgewertet. In der Regel werden sich die Ausgabebedingungen häufig bei der Erstellung des Projektes ändern und danach über einen längeren Zeitraum konstant bleiben. Das heisst, nach der Speicherung in der Datenbank werden hauptsächlich die Medienobjekte bearbeitet. Die relevante Größe ist hierbei die Dauer. Wie bereits erwähnt, bestehen die Kanten eines potentiellen negativen Zyklus aus den Kanten der Ausgabebedingungen (E2 ) und der Objektdauer (E1 ) zusammen. Geht man von einer Konstanz der Bedingungen bzw. Kanten der Menge E2 aus, lassen sich Minimum- oder Maximumbedingungen für die Dauer jedes verwendeten Medienobjektes formulieren. Die Aufsummierung der Kantengewichte eines Zyklus muss größer Null sein, es wird also eine Ungleichung aufgestellt. Durch Umformung der Ungleichungen nach dem Kantengewicht der Menge E1 erhält man eine Bedingung für die Dauer eines Objektes. Je nach Allen-Relation kann es sich dabei um eine oder mehrere Ungleichungen handeln, die eine Minimum- oder Maximumbedingung für die Objektdauer repräsentieren. Zwei Beispiele sollen den Sachverhalt verdeutlichen. Als erstes Beispiel zur Erstellung der Ungleichungen dient die overlaps-Relation. Die allgemeine Notation lautet A overlaps(c1 ,c2 ) B, wobei A und B Medienobjekte sind und die Konstanten c1 und c2 Mindestabstände zwischen den Start- bzw. Endzeitpunkten der beiden Objekte angeben. Die daraus resultierenden Difference Constraints lauten: st(A) − st(B) ≤ −c1 , end(A) − end(B) ≤ −c2 , st(B) − end(A) ≤ −1. Der dazu gehörende Constraint Graph ist in Abbildung 4.1 zu sehen. |tA | bzw. |tB | steht für die Dauer der Objekte. Die Kanten im Graphen resultieren aus je einem Duration-Constraint und den daraus generierten folgenden Difference Constraints: end(A) − st(A) ≤ tA , st(A) − end(A) ≤ −tA , end(B) − st(B) ≤ tB , st(B) − end(B) ≤ −tB . Im Graph existieren zwei Zyklen, die negativ werden können: zum einen von Inv.-Nr.: 2005-05-23/052/IN98/2254 4.1. ERZEUGEN DER UNGLEICHUNGEN 45 end(A) end(B) -c2 | tA | -|tA| -1 |tB| -|tB| -c1 st(A) st(B) Abbildung 4.1: Unsichere Relation: overlaps st(B) über end(B) nach end(A) und zum anderen von st(B) über st(A) nach end(A). Sie entsprechen den Zyklen z3 und z4 der Aufzählung 3.3. Da diese Zyklen bzw. Pfade nichtnegativ sein müssen, lässt sich durch Summierung der Kantengewichte pro Zyklus eine Ungleichung formulieren: |tB | − c2 − 1 ≤ 0, −c1 + |tA | − 1 ≤ 0. Durch Umformen der Ungleichungen nach |tA | bzw. |tB |, erhält man folgende Bedingungen für die Dauer der beiden Medienobjekte: c1 + 1 ≤ |tA | (M inimum), c2 + 1 ≤ |tB | (M inimum). Sind diese Ungleichungen erfüllt, sind die beiden Zyklen nichtnegativ und die Allen-Relation konsistent. Abhängig von der verwendeten Allen-Relation können auch mehrere Minimumoder Maximumbedingungen für die Objektdauer resultieren. Als zweites Beispiel dient die Relation A overlapsvse (c1 , l, c2 , m) B. Sie definiert eine Überlappung der beiden Medienobjekte mit jeweils einem Intervall zwischen den Start- und den Endzeitpunkten ([c1 , l] und [c2 , m]) (Abbildung 4.2). Ein Blick auf den Constrained Graph für diese Relation zeigt, dass sie vier Zyklen der Aufzählung 3.3 enthält: z1 , z2 , z3 , z4 . Zu den beiden aus der overlapsRelation kommen zwei Zyklen hinzu, die einmal links- und einmal rechtsherum alle vier Objekte enthalten. Hieraus ergeben sich folgende vier Ungleichungen: Inv.-Nr.: 2005-05-23/052/IN98/2254 46 KAPITEL 4. NUMERISCHE KONSISTENZPRÜFUNG end(A) c2 + m end(B) -c2 |tA| -|tA| -1 | tB | -| tB | c1 + l st(A) -c1 st(B) Abbildung 4.2: Unsichere Relation: overlapsvse |tA | − 1 − c1 ≥ 0, − |tA | + c1 + l + |tB | − c2 ≥ 0, |tB | − c2 − 1 ≥ 0, |tA | + c2 + m − |tB | − c1 ≥ 0. Stellt man beide Ungleichungen jeweils nach |tA | und |tB | um, erhält man Ungleichungen, welche die neuen Zyklen berücksichtigen und härtere Eigenschaften gemäß den Bedingungen für die Dauer der Medienobjekte A und B angeben: c1 + 1 ≤ |tA | (M inimum), |tB | + c1 − c2 − m ≤ |tA | (M inimum), |tB | + c1 + l − c2 ≥ |tA | (M aximum), c2 + 1 ≤ |tB | (M inimum), |tA | − c1 − l + c2 ≤ |tB | (M inimum), |tA | − c1 + c2 + m ≥ |tB | (M aximum). Sämtliche Allen-Relationen lassen sich so auf negative Zyklen überprüfen. Abhängig von der verwendeten Relationen, können eine oder mehrere Bedingungen zutreffen. Eine Übersicht der numerischen Bedingungen bzw. der Minimum- / Maximumbedingungen für alle betrachteten unsicheren Allen-Relationen befindet sich im Anhang A.2. Inv.-Nr.: 2005-05-23/052/IN98/2254 4.2. ÄNDERUNG EINER RELATION 4.2 47 Änderung einer Relation Analog zur Konsistenzprüfung mit Bellman-Ford, ist auch bei der numerischen Methode die Überprüfung auf globale Zyklen nicht erforderlich, da sie durch die Beschränkungen des Beziehungsgraphen ausgeschlossen werden. Zur Identifizierung der Ungleichungen wird ein Teilgraph mit allen relevanten Knoten und Kanten erstellt2 . Die Konstruktion des Teilgraphen erfolgt analog zur Methode von Bellman-Ford. Es wird auch hier zwischen der Änderung einer Relation und der Medienobjektdauer unterschieden. Wird eine Allen-Relation verändert, müssen nur die entsprechenden numerischen Bedingungen der beteiligten Medienobjekte überprüft werden. Bei der Vergrößerung oder Verkleinerung einer Objektdauer werden zunächst alle beteiligten Relationen und die dazugehörigen Medienobjekte identifiziert. Dies erfolgt wahlweise über den Beziehungsgraphen oder durch Auswertung der numerischen Bedingungen. Falls die Dauer des geänderten Objektes A in der Bedingung des Objektes B vorkommt, stehen beide in Beziehung und die Relation muss zum Teilgraph hinzugefügt werden. Anschließend erfolgt die Überprüfung durch die Erstellung der Ungleichungen und Vergleich mit der Objektdauer. Falls es hier zu einem Widerspruch kommt, ist die betreffende Allen-Relation und demzufolge der gesamte Graph inkonsistent. Neben der Beschränkung auf Teilgraphtests können auch hier analog zum Konsistenzcheck aus dem letzten Kapitel Operationen in sichere und unsichere eingestuft werden. Da die Konsistenzbedingungen unabhängig von der Art der Überprüfung sind, wird die Klassifizierung der Allen-Relationen aus Abschnitt 3.2 bzw. der Operationen aus Abschnitt 3.3 verwendet. Die before-Relation z. B. ist sicher, muss also nicht getestet werden. Der Algorithmus zum Überprüfen der Konsistenz mit numerischen Ungleichungen ist in Abbildung 4.3 dargestellt. Als Input erhält er die geänderte Bedingung. Zunächst wird der zu testende Teilgraph laut Algorithmus Abbildung 3.9 gebildet (1). Anschließend wird überprüft, ob potentielle negative Zyklen im Graphen vorhanden sind (2). Grundlage dafür sind die Bedingungen der Aufzählung 3.3. Sind die relevanten Kanten im Teilgraph vorhanden, werden alle gefundenen Zyklen durch Auswertung der Ungleichung überprüft (2-4). Ist mindestens einer davon negativ, gibt der Algorithmus ein f alse aus (7). Sind alle Ungleichungen wahr, ist der Teilgraph konsistent und der Algorithmus gibt ein true zurück. Wie bei der Überprüfung mit Bellman-Ford können mehrere Änderungen ge” sammelt“ und anschliessend gemeinsam überprüft werden. Bei der Input-Condition kann es sich sowohl um eine Allen-Relation als auch um ein Duration-Constraint handeln. Ob und in welchem Maße diese Methode zur Überprüfung der Konsistenz gegenüber Bellman-Ford schneller ist, wird in Kapitel 6 betrachtet. Im Gegensatz zur Methode mit Bellman-Ford eignen sich die Ergebnisse der numerischen Ungleichungen nicht zur Berechnung der Ausgabezeiten. Dies erfordert stets die korrekten kürzesten Pfade im aktuellen Constraint Graph (vgl. Kapitel 5). 2 Der Teilgraph steht stellvertretend für die Menge der Difference Constraints, die für den Konsistenzcheck relevant sind. Inv.-Nr.: 2005-05-23/052/IN98/2254 48 KAPITEL 4. NUMERISCHE KONSISTENZPRÜFUNG Algorithm: numericCheck(INPUT condition, OUTPUT check) Input: Condition condition Output: Boolean check 1 2 2 3 4 5 6 7 partialGraph = buildPartialGraph(condition) cycles = checkCycleConditions(partialGraph) for all cycles do { if cycle is negative { check = f alse } } return check Abbildung 4.3: Algorithmus zur numerischen Konsistenzüberprüfung 4.3 Umsetzung durch Trigger/Constraints Die Realisierung im DBMS kann analog zur in Abschnitt 3.7 beschriebenen Vorgehensweise erfolgen. Statt der Überprüfung mit Bellman-Ford wird eine gespeicherte Prozedur erstellt, welche die Bedingungen durch numerische Ungleichungen überprüft. Es ist aber auch ein Konsistenzcheck ohne eine Java-Prozedur möglich. Wie bereits erwähnt, wird sich in der Regel die Objektdauer öfters ändern als die eigentlichen Ausgabebedingungen. Aus diesem Grund ist es vorteilhaft, die Bedingungen statisch als numerische Gleichungen zu definieren und Minimum- und/oder Maximumbedingungen (Intervallgrenzen) für die Dauer jedes Objekts in der Datenbank abzulegen. Bei einer anschließenden Änderung der Objektdauer werden die numerischen Gleichungen nicht neu erstellt, sondern liegen bereits vor und können effizient ausgewertet werden. Um diesen Vorgang zu automatisieren, kann die Überprüfung durch Trigger erfolgen. Bei der Speicherung der Bedingungen in der Datenbank werden für jedes Objekt die Minimum- und/oder Maximumbedingungen erstellt. Anschließend wird pro Objekt ein oder mehrere Trigger erzeugt. Die Trigger beinhalten eine PS/SQLProzedur, welche die Ungleichungen bzw. Intervallgrenzen auswerten. Die Intervalle können statisch mit konkreten Werten aufgrund der aktuellen Bedingungen erzeugt oder dynamisch durch Auslesen der Kantengewichte des in der Datenbank gespeicherten Graphen bestimmt werden. Werden im ersten Fall die Paramenter oder der Typ der Bedingung geändert, müssen die entsprechenden Trigger neu generiert werden. Im zweiten Fall ist eine Neuerstellung nur bei der Typänderung einer Relation erforderlich. Bei der Änderung einer Objektdauer wird der Trigger gefeuert. Ist die Auswertung der Bedingungen positiv, wird das geänderte Objekt bzw. Objektdauer in der Datenbank gespeichert. Im Falle einer Inkonsistenz verwirft der Trigger die Änderungen, um die Konsistenz das Projektes in der Datenbank sicher zu stellen. Pro Allen-Relation wird ein Trigger je beteiligtem Objekt erzeugt. Diese enthalten alle Minimum- und/oder Maximumbedingungen, die aus der Relation hervorgehen. Pro Objekt existiert mindestens ein Trigger, da es mit mindestens einem Inv.-Nr.: 2005-05-23/052/IN98/2254 4.3. UMSETZUNG DURCH TRIGGER/CONSTRAINTS 49 anderen Objekt in Beziehung steht. Ist ein Medienobjekt mit n anderen Objekten über Allen-Relationen verknüpft, werden n Trigger für dieses Objekt generiert. Bei Änderung der Objektdauer kommt es zum Aufruf aller n Trigger und der betreffende Teilgraph respektive die relevanten Difference Constraints werden hinsichtlich ihrer Konsistenz bewertet. Die Erzeugung der Trigger zur Überprüfung der Intervallgrenzen kann automatisch erfolgen. Dazu wird ein zusätzlicher Trigger definiert, der bei jeder Änderung der Constraints die Trigger zur Intervallüberprüfung erzeugt oder gegebenenfalls ändert. Alternativ ist auch eine Umsetzung über herkömmliche Constraints denkbar. Wird die Dauer eines Objektes in einer Tabelle gespeichert, kann anhand der vorher erstellten Intervallgrenzen ein Vergleich mit der realen Dauer stattfinden. Wird eine Relation geändert, müssen auch hier die Constraints der Tabelle angepasst werden. Inv.-Nr.: 2005-05-23/052/IN98/2254 50 KAPITEL 4. NUMERISCHE KONSISTENZPRÜFUNG Inv.-Nr.: 2005-05-23/052/IN98/2254 Kapitel 5 Berechnung des Ausgabeschedule Neben der Überprüfung der Konsistenz der Ausgabebedingungen spielt der Schedule eine zentrale Rolle. Anhand der relativen Beziehungen zwischen den Objekten wird implizit festgelegt, zu welchen Zeitpunkten eine Ausgabe erfolgen soll. In diesem Kapitel wird die Berechnung der Ausgabezeiten aufgrund der Constraints erläutert und effektive Möglichkeiten vorgestellt, den Ausgabeschedule nach Änderungen von Bedingungen zu berechnen, ohne den Algorithmus von Bellman und Ford auf den gesamten Constraint Graphen anzuwenden. 5.1 Ausgabeschedule Die Berechnung des Ausgabeschedule aufgrund der kürzesten Pfade wird am Beispielgraphen aus Abschnitt 3.1 erläutert. Voraussetzung ist ein Constraint Graph, auf dem Bellman und Ford einmal gelaufen ist und ein true zurück gab. Das bedeutet der Graph bzw. die Bedingungen sind konsistent und es wurden die kürzesten Pfad von jedem Knoten zum Startknoten v0 berechnet. Die Werte entsprechen im Übrigen der Lösung für die Unbekannten vom System < V,C > der Difference Constraints. Voraussetzung für die Berechnung des Ausgabeschedule ist ein konsistenter Constraint Graph, bei dem die kürzesten Pfade vom Startknoten v0 berechnet wurden. Alle Knoten haben einen Wert (kürzesten Pfad) kleiner oder gleich 0. Das liegt an den Kanten mit dem Gewicht c = 0, welche vom Startknoten v0 zu jedem anderen Knoten gehen. Die den Knoten zugewiesenen Gewichte bilden im gewissen Sinne schon einen Ausgabeschedule. Um sie für den Anwender verständlicher zu machen, erfolgt noch eine Anpassung. Die Ausgabezeiten sind danach alle größer 0. Zuerst wird der kleinste Wert der Lösungen für die Unbekannten gesucht, d. h. das kleinste Knotengewicht. Dieser Wert ist ein Korrekturwert k für alle anderen Lösungen L. Die positive Lösung L0 für den Ausgabeschedule für alle Unbekannten berechnet sich wie folgt: L0 = L − (k). Inv.-Nr.: 2005-05-23/052/IN98/2254 (5.1) 52 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE 0 0 end(o1) 0 end(o2) end(o4) end(o3) -5 0 v0 15 -15 25 -2 -1 -25 20 -20 -5 10 -10 0 -3 st(o1) 0 st(o2) 0 st(o3) st(o4) 0 Abbildung 5.1: Constraint Graph des Beispielprojektes Im folgenden Abschnitt wird der Ausgabeschedule an einem konkreten Beispiel erzeugt. 5.2 Berechnung am Beispiel Auf dem Constraint Graph aus Abbildung 5.1 wird der Konsistenzcheck ausgeführt. Die Konsistenz ist in diesem Zusammenhang essentiell (ein Schedule von einem inkonsistenten Graphen ist falsch) aber nur ein Teilziel. Der Constraint Graph nach Bellman-Ford ist in Abbildung 5.2 zu sehen. Mit den Knotengewichten kann die eigentliche Berechnung erfolgen. Das zur Berechnung der Ausgabezeiten benötigte kleinste Knotengewicht beträgt k = −62 (Knoten st(o1 )). Dieser Wert wird laut Gleichung 5.1 von allen Knotengewichten subtrahiert und man erhält die jeweiligen Start- und Endpräsentationszeitpunkte. Der Ausgabeschedule für die vier Objekte im Beispiel lautet: st(o1 ) = 0, end(o1 ) = 15, st(o2 ) = 17, end(o2 ) = 42, st(o3 ) = 27, end(o3 ) = 47, st(o4 ) = 52, end(o4 ) = 62. Abbildung 5.3 zeigt den Ausgabeschedule mit den Objekten grafisch. Hier ist zu sehen, wie die kürzesten Pfade der Knoten mit den eigentlichen Ausgabezeiten zusammenhängen. Die absoluten Zeiten erhält man, wenn man die kürzesten Pfade auf der Zeitachse abträgt und den Nullpunkt um den Wert des kleinstes Knotengewichtes verschiebt. Zum besseren Verständnis sind auch in den folgenden Abbildungen sowohl die absoluten Ausgabezeiten als auch die kürzesten Pfade angegeben. Die Tatsache, dass eine Konsistenzprüfung mit Bellman-Ford die Grundlage für die Scheduleberechnung bildet, indem sie die benötigten kürzesten Pfade liefert, Inv.-Nr.: 2005-05-23/052/IN98/2254 5.2. BERECHNUNG AM BEISPIEL 53 0 0 0 end(o1) end(o4) end(o3) end(o2) -47 -5 -20 0 -15 0 v0 15 -15 25 -2 -1 -25 -20 20 -5 10 -10 0 -62 -3 -45 st(o1) st(o2) 0 0 -35 -10 st(o3) st(o4) 0 Abbildung 5.2: Constraint Graph nach Bellman-Ford mit kürzesten Pfaden o3 o1 o2 o4 0 15 17 27 42 47 52 62 -62 -47 -45 -35 -20 -15 -10 0 Zeit Knotengewichte Abbildung 5.3: Ausgabeschedule Inv.-Nr.: 2005-05-23/052/IN98/2254 54 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE kann schon für Optimierungen genutzt werden. Werden Änderungen an den Bedingungen vorgenommen und danach der gesamte Constraint Graph mit Bellman-Ford geprüft, liegen die erforderlichen Werte schon vor und eine erneute Berechnung der kürzesten Pfade ist überflüssig. Bei der Berechnung des Schedule ist von Bedeutung, dass man zwischen den kürzesten Pfaden und den eigentlichen Ausgabezeiten unterscheidet. Beide Werte drücken prinzipiell den gleichen Sachverhalt aus und werden ja nach Kontext verwendet. Das negative Knotengewicht von st(o1 ) mit dem Wert −62 repräsentiert die Ausgabezeit 0, das Knotengewicht von end(o1 ): −47 die Ausgabezeit 15 usw.. Ändern sich die Knotengewichte, müssen sich nicht zwangsläufig auch die Ausgabezeiten ändern. Erhöht man zum Beispiel die Dauer von Objekt o1 von 15 auf 25 Zeiteinheiten (ZE), betragen die resultierenden Knotengewichte von st(o1 ) −72 und von end(o1 ) −47. Die eigentliche Ausgabezeit des Startknotens bleibt aber gleich, da dieser wiederum das kleinste Knotengewicht im Graphen besitzt. Die Erhöhung der Dauer von Objekt o1 wird also implizit durch die Anpassung des kleinsten Knotengewichtes ausgeglichen. Die Zeiten der anderen Objekte ändern sich dadurch entsprechend. 5.3 Optimierungen Die Einschränkungen im Beziehungsgraph (Abschnitt 3.1) bieten wie bei allen vorherigen Methoden Möglichkeiten zur Laufzeitoptimierung. Globale Zyklen sind ausgeschlossen, also müssen nur lokale Zyklen überprüft werden. Ausgangspunkt ist wieder ein konstistenter Constraint Graph, dessen kürzeste Pfade für alle Knoten berechnet wurden. Die Optimierungen bei Änderung einer Allen-Relation bzw. der Dauer eines Objektes müssen auch hier gesondert betrachtet werden. Wie in allen anderen Fällen der Optimierung wird zunächst nur ein Teilgraph des gesamten Constraint Graph betrachtet. Zum Verständnis der Optimierungen ist es notwendig zu wissen, wie der Algorithmus von Bellman und Ford die kürzesten Pfade aufgrund der Graphstruktur berechnet. Betrachtet man den getesteten Constraint Graphen aus dem verwendeten Beispiel (Abbildung 5.2) fällt auf, dass die Knotengewichte in Richtung des Startknoten v0 kleiner werden. Und zwar in dem Maße, wie es die Bedingungen bzw. die Objektdauer erlauben. Die Ausgabezeiten bzw. die kürzesten Pfade verlaufen also von hinten nach vorne im Graphen. Das liegt zum einen an der Darstellungsform des Graphen, zum anderen aber hauptsächlich an der Forderung, dass Objekte nur einen Vorgänger haben. In der Praxis bedeutet das, dass die Objekte grundsätzlich in der Reihenfolge miteinander verknüpft werden, wie sie später ausgegeben werden sollen. Es kann also nicht vorkommen, dass dass ein Objekt, welches näher am Startknoten v0 liegt, vor einem Objekt ausgegeben wird, dass weiter entfernt im selben Strang 1 liegt. Es gibt aber einen Sonderfall. Direkt benachbarte Objekte können zeitgleich präsentiert werden, falls die equals - Relation verwendet wird. Die Tatsache dieser strikten zeitlichen Reihenfolge trifft nur zu, wenn keine inversen Relation verwendet werden. Inverse Relationen wurden in [Ra04] erwähnt und die zugehörigen Difference Constraints zur Verfügung gestellt. Zum Beispiel ist die Allen Relation after invers zu before: B after A und A before B drücken 1 Der Begriff Strang wird im folgenden Abschnitt eingeführt. Zur Vereinfachung werden vorerst nur Beispiele mit einer einfachen Struktur, d. h. nur einem Strang betrachtet. Inv.-Nr.: 2005-05-23/052/IN98/2254 5.3. OPTIMIERUNGEN v0 o1 55 AR1 o2 AR2 o3 AR3 o4 Abbildung 5.4: Beziehungsgraph des Beispielprojektes den selben Sachverhalt aus und repräsentieren die selben Difference Constraints. Daneben gibt es weitere inverse Relationen, wie z. B. meets-invers, overlaps-invers oder during-invers. Da sie grundsätzlich die Verknüpfungsmöglichkeiten von Objekten funktionell nicht erweitern, werden sie sowohl in dieser Diplomarbeit als auch im ConstraintManager nicht betrachtet. Des Weiteren sind die vorgestellten Optimierungen nicht für inverse Relationen gültig. Die folgenden Abschnitte erläutern Schritt für Schritt die Optimierungsmöglichkeiten zur korrekten und effizienten Berechnung der kürzesten Pfade, ohne BellmanFord auf dem gesamten Constraint Graph auszuführen. 5.3.1 Änderung einer Bedingung am Ende eines Stranges Beginnend mit der Änderung einer Bedingung werden zur Veranschaulichung drei Fälle erläutert. Als Grundlage dient das Beispielprojekt aus Abschnitt 3.1. Zuerst wird die Relation AR3 zwischen den Objekten o3 und o4 verändert (siehe Tabelle 3.2). Der Abstand wird von 5 auf 8 Sekunden erhöht: o3 before(8) o4 . Objekt o4 soll also später präsentiert werden. Die beiden Objekte befinden sich am Ende eines Stranges“, welcher vom Start” knoten v0 ausgeht. Als Strang wird eine Menge von Relationen und Objekten bezeichnet, die horizontal in einer Ebene im Beziehungsgraphen liegen. Der Beziehungsgraph des Beispiels ist in Abbildung 5.4 zu sehen. Dort ist der Strang gut erkennenbar. Er verläuft vom Startknoten aus und umfasst alle Relationen und Objekte. Analog dazu ist er auch im Constraint Graph (Abbildung 5.1) zu erkennen mit mehr Knoten und Kanten. Der in Abbildung 3.14 vorgestellte komplexere Beziehungsgraph besteht aus mehreren Strängen bzw. Teilbäumen, die von einem Objekt abzweigen. In Abschnitt 5.5 wird auf Optimierungen bei Graphen mit mehreren Strängen eingegangen. Im hier verwendeten Beispiel aus Abschnitt 3.1, an welchem die Berechnung der Ausgabezeiten gezeigt wird, bildet ein Strang den gesamten Constraint Graphen. Der zu testende Teilgraph wird analog zu Abschnitt 3.3 gebildet und besteht aus dem Startknoten v0 , den betreffenden den Start- und Endknoten der Objekte o3 und o4 und den dazugehörigen Kanten (Abbildung 5.5). Durch die veränderte Bedingung sind die Knotengewichte nicht mehr korrekt 2 und werden durch den Algorithmus von Bellman und Ford neu berechnet. Im korrigierten Teilgraph (Abbildung 5.6) sieht man die Gewichtsänderung der Knoten von Objekt o3 . Mit Hilfe der alten und neuen Werte lässt sich ein Korrekturwert berechnen. Dieser Korrekturwert gibt an, um wie viele Zeiteinheiten der Ausgabeschedule dieses Teilgraphen verändert wurde. Zunächst müssen die Objektknoten gefunden werden, die die kleinsten Knotengewichte besitzen. In der Regel wird es das Objekt sein, welches im Beziehungsgraphen näher am Startknoten v0 liegt. Der Korrekturwert ergibt sich aus der Differenz der neuen und der alten Knotengewichte. Die Differenzen der Start- bzw. Endknoten müssen gleich 2 Die betreffende Kante und Knoten sind in der Abbildung gestrichelt. Inv.-Nr.: 2005-05-23/052/IN98/2254 56 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE end(o3) end(o4) 0 0 -15 0 v0 20 -20 -8 -10 10 0 -35 -10 st(o3) st(o4) 0 Abbildung 5.5: Teilgraph Strangende vor Bellman-Ford end(o3) end(o4) 0 0 -18 0 v0 20 -20 -8 10 -10 0 -10 -38 st(o3) 0 st(o4) Abbildung 5.6: Teilgraph Strangende nach Bellman-Ford sein, da sich die Objektdauer nicht geändert hat. Wichtig ist, dass man die Knoten des Objektes mit den kleineren Knotengewichten wählt, da nur hier die Differenz berechnet werden kann. Die Knotengewichte des anderen Objektes bleiben in der Regel unverändert und hätte das Gewicht Null zur Folge. In diesem Beispiel dienen die neuen und alten Knotengewichte des Startknoten von o3 als Grundlage der Berechnung: −38 − (−35) = −3. Alternativ können auch die Endknoten verwendet werden: −18 − (−15) = −3. Im vorigen Abschnitt wurde gezeigt, dass sich die Knotengewichte bzw. die Ausgabezeiten der Medienobjekte in Richtung v0 im Strang bzw. Teilbaum aufbauen. Die Zeiten von früher auszugebenden Objekten berechnen sich auf Grund der Zeiten der Nachfolger3 . Um die kürzesten Pfade der vorherigen Objekte an die Änderung anzupassen, muss der Korrekturwert ab der Stelle der Änderung an die Vorgänge3 Hier sind wieder zwei Sichten möglich: Die kürzesten Pfade bzw. die Ausgabezeiten bauen aufeinander auf. Inv.-Nr.: 2005-05-23/052/IN98/2254 5.3. OPTIMIERUNGEN v0 o1 57 AR1 o2 AR2 o3 AR3 o4 Abbildung 5.7: Durchreichen“ des Korrekturwertes ” robjekte bis zum Startknoten v0 weitergegeben werden. D. h., alle Knotengewichte (pro Objekte ein Start- und Endknoten) vor dem geänderten Objekt o3 werden um den Wert 3 verkleinert. Der Startknoten v0 zählt nicht als zu korrigierendes Objekt. Die betroffenden Medienobjekte können leicht anhand des Beziehungsgraphen identifiziert werden (Abbildung 5.7). Der Korrekturwert wird über den Vorgänger Objekt o2 bis einschliesslich Objekt o1 nach vorne in Richtung v0 durchgereicht4 . Die Abbildung 5.7 zeigt zum besseren Verständnis den Beziehungsgraphen. Die Anpassung der Knotengewichte wird am Constraint Graph vorgenommen, wobei von jedem betroffenden Objekt das Gewicht der Start- und Endknoten angepasst werden. Der Schedule kann jetzt mit den korrigierten Knotengewichten des Constraint Graph (Abbildung 5.8) berechnet werden. Das neue kleinste Knotengewicht befindet sich unverändert bei Objekt o1 (Knoten st(o1 )) und beträgt -65. Da die Werte von Objekt o1 , o2 und o3 mit den Korrekturwert angepasst wurden, ändern sich ihre Ausgabezeiten nicht. Nur Objekt o4 ist, wie erwartet, betroffen. Die neuen Zeiten lauten: st(o1 ) = 0, end(o1 ) = 15, st(o2 ) = 17, end(o2 ) = 42, st(o3 ) = 27, end(o3 ) = 47, st(o4 ) = 55, end(o4 ) = 65. Der komplette Schedule mit dem um 3 Sekunden nach hinten verschobenen Objekt o4 ist in Abbildung 5.9 grafisch dargestellt. 5.3.2 Änderung einer Bedingung am Anfang eines Stranges Ausgehend vom ursprünglichen Beispiel aus Abschnitt 3.1, wird im zweiten Fall die Relation AR1 verändert. Der Abstand wird von 3 auf 5 Zeiteinheiten erhöht: o1 before(5) o2 . Da sich die Beziehung am Anfang vom Strang befindet, müssen nach der Berechnung von Bellman - Ford keine weiteren Knotengewichte angepasst werden. Die Berechnung der korrekten Ausgabezeiten nach dieser Änderung erfolgt anschließend durch Bestimmung des kleinsten Knotengewichtes im gesamten Graphen. Zunächst wird der zu überprüfende Teilgraph nach dem gleichen Schema wie im vorherigen Abschnitt erstellt. Er besteht aus dem Startknoten v0 , den betreffenden den Start- und Endknoten der Objekte o1 und o2 und den dazugehörigen Kanten. Nach Bellman-Ford (Abbildung 5.10) ist das kleinste Knotengewicht wieder bei 4 Die gestrichelten Pfeile in der Abbildung sollen den Weg der Anpassung darstellen und sind keine neuen Allen-Relationen. Inv.-Nr.: 2005-05-23/052/IN98/2254 58 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE 0 0 0 end(o1) end(o4) end(o3) end(o2) -50 -5 -23 0 -18 0 v0 -15 15 -1 -25 25 -2 -20 20 -8 10 -10 0 -65 -48 st(o1) st(o2) 0 -3 0 -38 -10 st(o3) st(o4) 0 Abbildung 5.8: Constraint Graph nach Bellman - Ford o3 o1 o2 o4 0 15 17 27 42 47 55 65 -65 -50 -48 -38 -23 -18 -10 0 Zeit Knotengewichte Abbildung 5.9: Ausgabeschedule end(o1) 0 end(o2) -30 0 0 v0 15 -15 -5 25 -25 0 -45 st(o1) -25 0 st(o2) Abbildung 5.10: Teilgraph ohne angepasste Kantengewichte nach Bellman - Ford Inv.-Nr.: 2005-05-23/052/IN98/2254 5.3. OPTIMIERUNGEN 59 o3 o1 o4 o2 0 10 15 20 30 35 45 -45 -35 -30 -25 -15 -10 0 Zeit Knotengewichte Abbildung 5.11: Inkorrekter Ausgabeschedule st(o1 ) mit dem Wert -45 zu finden und es ergeben sich folgende Ausgabezeiten: st(o1 ) = 0, end(o1 ) = 15, st(o2 ) = 20, end(o2 ) = 45, st(o3 ) = 7, end(o3 ) = 27, st(o4 ) = 35, end(o4 ) = 45. Abbildung 5.11 zeigt den Ausgabeschedule in grafischer Darstellung. Während die Werte der Objekte o1 und o2 korrekt sind, wurden Knotengewichte von o3 und o4 falsch berechnet. Der Grund liegt in der Erstellung eines Teilgraphen. In Abschnitt 5.3 wurde gezeigt, dass sich die kürzesten Pfade von hinten nach vorne in einem Strang aufbauen. Diese Eigenschaft wurde im Teilgraph aber nicht berücksichtigt. Da die Kantengewichte im Teilgraph vom Startknoten v0 zu allen anderen Knoten jeweils das Gewicht 0 haben, zählt Objekt o2 als letztes auszugebendes Objekt. Die Objekte o3 und o4 werden nicht berücksichtigt. Nimmt man Objekte aus dem Constraint Graphen heraus, um gesondert die kürzesten Pfade zu berechnen, muss eine Umgebung geschaffen werden, die den gesamten Graphen simuliert. Dies erreicht man durch Anpassen der Kantengewichte vom Startknoten v0 zu den einzelnen Objektknoten. Im Constraint Graph stellt v0 eine Art Start(-zeit-)punkt da. Die ausgehenden Kanten mit dem Gewicht 0, repräsentieren genau diesen Startpunkt zum Zeitpunkt 0. Verringert man die Kantengewichte, verschieben sich alle Objekte im Ausgabeschedule genau um diese Differenz. Das Gewicht der ausgehenden Kanten vom Startknoten v0 bestimmt also den Startzeitpunkt der Objekte des Graphen. Mit Hilfe dieser Kanten kann man festlegen, zu welchem Zeitpunkt der Teilgraph starten soll. Mit den richtigen Kantengewichten ist es somit möglich, für den Teilgraph die Umgebung des gesamten Graphen, bzw. den richtigen Einstiegszeitpunkt zu simulieren. Betrachtet man den gesamten Constraint Graphen aus Abbildung 5.2, ist festzustellen, dass die Kantengewichte vom Startknoten v0 zu allen anderen Knoten mit dem Gewicht des Endknotens end(o4 ) des im Beziehungsgraphen von v0 entferntesten Objektes übereinstimmen. Sie haben jeweils den Wert 0. Das stimmt mit der Tatsache überein, dass bedingt durch die Einschränkungen im Beziehungsgraphen sich die kürzesten Pfade von hinten nach vorne in Richtung des Startknotens Inv.-Nr.: 2005-05-23/052/IN98/2254 60 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE end(o1) 0 end(o2) -47 -20 0 v0 15 -15 -5 25 -25 0 -62 st(o1) -45 0 st(o2) Abbildung 5.12: Teilgraph Stranganfang vor Bellman - Ford v0 über die Endknoten der Objekte aufbauen. Des Weiteren stellt das Gewicht von end(o4 ) (gleich den Gewichten der ausgehenden Kanten von v0 ) das größte Knotengewicht im gesamten Graphen dar. Also liegt es nahe, im Teilgraph das größte Gewicht zu suchen und die ausgehenden Kanten von v0 auf diesen Wert zu setzen. Im Beispiel ist dies der Knoten end(o2 ) mit dem Gewicht -20 (Abbildung 5.12, originaler Teilgraph). Mit den angepassten Kantengewichten vom Startknoten v0 aus wird der korrekte Teilgraph erstellt (Abbildung 5.13, gestrichelte Kanten) und mittels Bellman - Ford die kürzesten Pfade berechnet (Abbildung 5.14). Es ist nicht zwingend notwendig, alle Kantengewichte mit dem neuen Wert zu ersetzen. Theoretisch reicht es, die Kante anzupassen, die zum Knoten mit dem größten Gewicht verläuft. Beide Wege haben den gleichen Aufwand und bringen bei der Erstellung des Teilgraphen keine Vor- oder Nachteile. Durch Weglassen nicht benötigter Kanten verringert sich jedoch die Laufzeit von Bellman-Ford auf den Teilgraphen (siehe Abschnitt 3.5). Eine Anpassung der restlichen Knotengewichte des Stranges im Constraint Graph ist nicht notwendig, da es sich beim nächst vorherigen Objekt um den Startknoten v0 handelt. Wie bereits erwähnt, stehen die kürzesten Pfade und die absoluten Ausgabezeiten im direkten Zusammenhang. Indem das kleinste Knotengewicht von den Knotengewichten subtrahiert wird, erfolgt eine Verschiebung des Nullpunktes der Zeitachse auf den Startzeitpunkt des ersten Objektes. Da die Knotengewichte und insbesondere das kleinste Knotengewicht durch den Korrekturwert angepasst wurden, kann nun die Berechnung der korrekten positiven Ausgabezeiten erfolgen. Der Korrekturwert wird somit implizit auch auf die Objekte angewendet, deren Knotengewichte unverändert geblieben sind. Um diesen Sachverhalt zu verdeutlichen, zeigt Abbildung 5.16 sowohl die aktuellen Ausgabezeiten und neuen Knotengewichte als auch die alten Knotengewichte. Die Zeiten aufgrund des aktu- Inv.-Nr.: 2005-05-23/052/IN98/2254 5.3. OPTIMIERUNGEN 61 end(o1) -20 end(o2) -47 -20 -20 v0 15 -15 -5 25 -25 -20 -62 st(o1) -45 -20 st(o2) Abbildung 5.13: Angepasster Teilgraph Stranganfang vor Bellman - Ford end(o1) -20 end(o2) -50 -20 -20 v0 15 -15 -5 25 -25 -20 -65 -45 st(o1) st(o2) -20 Abbildung 5.14: Angepasster Teilgraph Stranganfang nach Bellman - Ford Inv.-Nr.: 2005-05-23/052/IN98/2254 62 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE 0 0 0 end(o1) end(o4) end(o3) end(o2) -50 -5 -20 0 -15 0 v0 15 -15 -1 -25 25 -5 -20 20 -5 10 -10 0 -65 -3 -45 st(o1) st(o2) 0 0 -35 -10 st(o3) st(o4) 0 Abbildung 5.15: Constraint Graph nach Bellman - Ford o3 o1 o2 o4 0 15 20 30 45 50 55 65 -65 -50 -45 -35 -20 -15 -10 0 Knotengewichte neu -35 -20 -15 -10 0 Knotengewichte alt -62 -47 -45 Zeit Abbildung 5.16: Ausgabeschedule ellen Constraint Graph (Abbildung 5.15) lauten wie folgt: st(o1 ) = 0, end(o1 ) = 15, st(o2 ) = 20, end(o2 ) = 45, st(o3 ) = 30, end(o3 ) = 50, st(o4 ) = 55, end(o4 ) = 65. 5.3.3 Änderung einer Bedingung in der Mitte eines Stranges Im dritten Fall wird wieder vom ursprünglichen Beispielgraphen ausgegangen. Die geänderte Relation AR2 befindet sich in der Mitte vom Strang: o2 overlaps(15,5) o3 (vorher: o2 overlaps(3,5) o3 ). Es werden die Vorgehensweisen aus den beiden letzten Abschnitten miteinander kombiniert. Der Teilgraph wird aus dem Startknoten v0 und den Knoten der Objekte o2 und Inv.-Nr.: 2005-05-23/052/IN98/2254 5.3. OPTIMIERUNGEN 63 end(o2) -15 end(o3) -5 -20 -15 -15 v0 25 -1 -25 20 -20 -15 -15 -45 st(o2) -35 st(o3) -15 Abbildung 5.17: Teilgraph Strangmitte vor Bellman - Ford end(o2) -15 end(o3) -5 -25 -15 -15 v0 25 -1 -25 20 -20 -15 -15 -50 st(o2) -15 -35 st(o3) Abbildung 5.18: Teilgraph Strangmitte nach Bellman - Ford o3 mit den betreffenden Kanten gebildet (Abbildung 5.17). Die Gewichte der Kanten ausgehend vom Startknoten v0 werden mit dem Wert −15 von Knoten end(o3 ) angepasst, da es das größte Knotengewicht im Teilgraph ist. Die angepassten Kanten sind in der Abbildung wieder gestrichelt dargestellt. Das Kantengewicht der Kante zwischen st(o3 ) und st(o2 ) resultiert aus der geänderten Bedingung. Nach der Ausführung von Bellman - Ford (Abbildung 5.18) erfolgt im Constraint Graph die Weitergabe des Korrekturwertes von −5 zum Vorgängerobjekt in Richtung v0 . Er ergibt sich aus der Differenz der neuen und alten Knotengewichte von Objekt o2 . Anschließend kann die Berechnung des Gesamtschedule anhand des korrigierten gesamten Graphen (Abbildung 5.18) erfolgen. Die gültigen Zeiten sind: Inv.-Nr.: 2005-05-23/052/IN98/2254 64 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE 0 0 0 end(o1) end(o4) end(o3) end(o2) -52 -5 -25 0 -15 0 v0 15 -15 -2 25 -1 -25 -20 20 -5 10 -10 0 -67 -15 -50 st(o1) st(o2) 0 0 -35 -10 st(o3) st(o4) 0 Abbildung 5.19: Constraint Graph nach Bellman - Ford o3 o1 o2 o4 0 15 17 32 42 52 57 -67 -52 -50 -35 -25 -15 -10 67 Zeit 0 Knotengewichte Abbildung 5.20: Ausgabeschedule st(o1 ) = 0, end(o1 ) = 15, st(o2 ) = 17, end(o2 ) = 42, st(o3 ) = 32, end(o3 ) = 52, st(o4 ) = 57, end(o4 ) = 67. Wie erwartet haben sich nur die Werte der Objekte o3 und o4 verändert (Abbildung 5.20). 5.4 Änderung der Objektdauer Die Scheduleberechnung nach einer Änderung der Dauer eines Objektes ist weniger aufwendig als bei normalen“ Allen-Relationen. Da nur ein Objekt betroffen ist, ” muss nur ein einzelnes überprüft werden. Wie bei der Änderung einer Bedingung ist es auch bei der Dauer wichtig, an welcher Position sich das betreffende Objekt im Inv.-Nr.: 2005-05-23/052/IN98/2254 5.4. ÄNDERUNG DER OBJEKTDAUER 65 0 0 0 end(o1) end(o4) end(o3) end(o2) -57 -5 -30 0 -15 0 v0 15 -15 -1 -25 25 -2 30 -30 -5 10 -10 0 -72 -3 -55 st(o1) st(o2) 0 0 -45 -10 st(o3) st(o4) 0 Abbildung 5.21: Constraint Graph nach Bellman - Ford o3 o1 o2 o4 0 15 17 27 42 -72 -57 -55 -45 -30 57 62 -15 -10 72 Zeit 0 Knotengewichte Abbildung 5.22: Ausgabeschedule Graph befindet. Die restlichen Objekte des gesamten Graphen werden anschließend wieder explizit durch den Korrekturwert oder implizit durch die Berechnung der Ausgabezeiten mit dem kleinsten Knotengewicht im gesamten Graphen angepasst. Zur Veranschaulichung wird die Dauer von Objekt o3 von 20 auf 30 Zeiteinheiten vergrößert. Die Erstellung eines Teilgraphen ist nicht erforderlich, da der Korrekturwert (-10) aus der Differenz zwischen der neuen und der alten Objektdauer berechnet werden kann. Mit diesem Wert werden alle Knotengewichte bis zum Startknoten v0 angepasst. Der so erhaltene korrekte Constraint Graph ist in Abbildung 5.21 zu sehen. Der Ausgabeschedule (Abbildung 5.22) lautet wie folgt : st(o1 ) = 0, end(o1 ) = 15, st(o2 ) = 17, end(o2 ) = 42, st(o3 ) = 27, end(o3 ) = 57, st(o4 ) = 62, end(o4 ) = 72. Diese einfache Methode der Scheduleanpassung kann nur verwendet werden, Inv.-Nr.: 2005-05-23/052/IN98/2254 66 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE o5 AR4 v0 o1 AR1 o2 AR2 o3 AR3 o4 Abbildung 5.23: Beziehungsgraph mit zwei Strängen wenn das betroffene Objekt nicht mit einer inversen Relation in Beziehung steht. Die Einschränkung, dass die Optimierungen nicht in Verbindung mit inversen Relationen angewendet werden dürfen, wurde schon in Abschnitt 5.3 festgestellt. 5.5 Graphen mit mehreren Strängen Die bisher vorgestellten Optimierungen bei der Scheduleberechnung gehen von einer einfachen Struktur des Beziehungsgraphen aus. Neben der Forderung eines Baumes wurde davon ausgegangen, dass es sich beim gesamten Projekt nur um einen Strang handelt (siehe Abbildung 3.12). Ist der Beziehungsgraph verzweigt (Abbildungen 3.13 oder 3.14), besteht also aus mehreren Strängen bzw. Teilbäumen, ist das einfache Anpassen der Knotengewichte in Richtung des Startknotens v0 nicht mehr ausreichend. Zur Veranschaulichung wird das Beispielprojekt zunächst um ein Objekt und eine Bedingung erweitert. Objekt o5 mit einer Dauer von 30 Zeiteinheiten (o5 duration(30)) soll 10 Zeiteinheiten nach Objekt o1 erscheinen. Die Allen - Relation AR4 lautet wie folgt: o1 before(10) o5 . Es handelt sich um eine als sicher klassifizierte Allen-Relation, ein Konsistenzcheck ist nicht notwendig. Der zugehörige Beziehungsgraph (Abbildung 5.23) besteht jetzt aus einem langen (3 Objekte) und einem kurzen (1 Objekt) Strang, welche jeweils das Objekt o1 als Wurzel haben. Der so entstandene Constraint Graph (Abbildung 5.24) ist zwar konsistent, aber zur Berechnung des Schedule unvollständig. Voraussetzung für die Berechnung ist ein Graph, bei dem für alle Knoten die kürzesten Pfade berechnet sind. Da für das neue Objekt o5 kein Check mit Bellman - Ford ausgeführt wurde, müssen die fehlenden kürzesten Pfade nachträglich noch bestimmt werden. Dies geschieht mit einem Teilgraph. Objekt o5 und Allen-Relation AR4 wurden hinzugefügt, zählen also als Veränderung. Der Teilgraph wird somit aus Objekt o1 , o5 und AR4 gebildet. Abbildung 5.25 zeigt den Teilgraph nach Bellman-Ford. Durch die hinzugefügten Relationen stimmen die Knotengewichte von Objekt o1 mit den ursprünglichen Werten nicht mehr überein. Die alten Werte für den Start- und Endknoten von Objekt o1 (-62 bzw. -47, Abbildung 5.2) wurden unter Berücksichtigung des längeren Stranges berechnet, die neuen (-55 und -40, Abbildung 5.25) aber nur mit dem hinzugefügten kürzeren Strang. Der Wert des Endknoten gibt indirekt die relative Zeit an, welche die nachfolgenden Objekte benötigen um ausgegeben zu werden. Das Knotengewicht von -40 von end(o1 ) für den kürzeren Strang ergibt sich aus dem Knotengewicht von st(o5 ) (-30) und der before - Relation (-10, Kante von st(o5 ) nach end(o1 )), insgesamt also 40 ZE. Respektive ergeben sich 47 ZE für den längeren Strang Inv.-Nr.: 2005-05-23/052/IN98/2254 5.5. GRAPHEN MIT MEHREREN STRÄNGEN 67 end(o5) -30 30 0 0 st(o5) -10 0 0 end(o1) 0 end(o4) end(o3) end(o2) -47 -5 -20 0 -15 0 v0 -15 15 -1 -25 25 -2 -20 20 -5 10 -10 0 -62 st(o1) -3 -45 st(o2) 0 0 -35 -10 st(o3) st(o4) 0 Abbildung 5.24: Constraint Graph mit zwei Strängen end(o1) 0 end(o5) -40 0 0 v0 15 -15 -10 30 -30 0 -55 st(o1) -30 0 st(o5) Abbildung 5.25: Teilgraph des neuen Stranges Inv.-Nr.: 2005-05-23/052/IN98/2254 68 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE o5 o2 o1 0 -55 o3 10 15 20 25 o4 35 40 45 55 -45 -40 -35 -30 -20 -15 -10 0 Zeit Knotengewichte Abbildung 5.26: Falsch berechneter Schedule kurzer Strang o1 langer Strang 0 15 -62 -47 55 -7 62 0 Zeit Knotengewichte Abbildung 5.27: Zeitbedarf der beiden Stränge (Objekte o2 , o3 , o4 ) durch die Summe von st(o2 ) (-45) und der before - Relation zwischen o1 und o2 (-2). Nimmt man die größeren Knotengewichte (entspricht der kleineren Strangdauer, da der Betrag gebildet wird) als Basis für die Scheduleberechnung, erhält man einen inkorrekten Schedule (Abbildung 5.26). Der von der before - Relation zwischen Objekt o1 und o5 geforderter Abstand von 10 ZE ist noch korrekt, da bei der Berechnung die Werte für diesen (kürzeren) Strang benutzt wurden. Jedoch befindet sich Objekt o2 nicht mehr die geforderten mindestens 10 ZE nach Objekt o1 . Abbildung 5.27 zeigt den Zeitbedarf beider Stränge im Diagramm. Der kürzere, rezessive Strang benötigt 40 ZE, der längere 47 ZE. Voraussetzung für die Berechnung sind die korrekt berechneten kürzesten Pfade und die Bestimmung des kleinsten Knotengewichtes. Ein Strang mit einem kürzeren Pfad hat einen höheren Zeitbedarf zur Folge und umgekehrt. Nimmt man die Knotengewichte des kürzeren Stranges, sind die kürzesten Pfade zu den Objektknoten von o1 falsch, da über den längeren Strang mit kleineren Knotengewichten kürzere Pfade gefunden werden können. Also sind die Knotengewichte von Objekt o1 unter Berücksichtigung des längeren, dominanten Stranges mit den kleineren Knotengewichten die richtige Wahl. Der komplette Constraint Graph mit korrekten Knotengewichten ist in Abbil- Inv.-Nr.: 2005-05-23/052/IN98/2254 5.5. GRAPHEN MIT MEHREREN STRÄNGEN 69 end(o5) 0 30 -30 0 -30 0 st(o5) -10 0 0 end(o1) 0 end(o4) end(o3) end(o2) -47 -5 -20 0 -15 0 v0 15 -15 25 -2 -1 -25 20 -20 -5 10 -10 0 -62 st(o1) -3 -45 st(o2) 0 0 -35 -10 st(o3) st(o4) 0 Abbildung 5.28: Constraint Graph nach Bellman - Ford dung 5.28 zu sehen, die graphische Darstellung des Schedule in Abbildung 5.29. Die berechneten Ausgabezeiten lauten: st(o1 ) = 0, end(o1 ) = 15, st(o2 ) = 17, end(o2 ) = 42, st(o3 ) = 27, end(o3 ) = 47, st(o4 ) = 52, end(o4 ) = 62, st(o5 ) = 32, end(o5 ) = 62. Der Constraint Graph dient nun als Ausgangspunkt für die folgenden Erklärungen zur Berechnung der Ausgabezeiten. Zur Veranschaulichung der Scheduleberechnung in Constraint Graphen mit mehreren Strängen wird die Dauer von Objekt o2 von 25 auf 30 erhöht. Der Korrekturwert, berechnet aus der Differenz der neuen und alten Dauer, ist -5 und wird nach dem im vorherigen Abschnitt vorgestellten Schema an Objekt o1 weitergeben. o1 ist die Wurzel beider Stränge. Es muss erneut geprüft werden, welcher Strang der längere ist, um die entsprechenden Knotengewiche zu bestimmen. Die Dauer Inv.-Nr.: 2005-05-23/052/IN98/2254 70 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE o5 o3 o1 o2 o4 0 15 17 27 32 42 47 52 62 -62 -47 -45 -35 -30 -20 -15 -10 0 Zeit Knotengewichte Abbildung 5.29: Korrekter Ausgabeschedule des eben kürzeren Stranges hat sich nicht geändert. Der ursprünglich längere Strang ist durch die Änderung der Bedingung länger geworden und er bleibt dominant. Der korrekte Constraint Graph ist in Abbildung 5.30 zu sehen. Die dazugehörigen Ausgabezeiten lauten: st(o1 ) = 0, end(o1 ) = 15, st(o2 ) = 17, end(o2 ) = 47, st(o3 ) = 32, end(o3 ) = 52, st(o4 ) = 57, end(o4 ) = 67, st(o5 ) = 37, end(o5 ) = 67. Die Knotengewichte von Objekt o5 bleiben unverändert. Die Ausgabezeit wird durch das veränderte kleinste Knotenewicht im Graphen angepasst (Abbildung 5.31). Eine Änderung der Knotengewichte von Objekt o1 hat also keine direkten Auswirkungen auf die Knotengewichte von Objekt o5 . Das hängt damit zusammen, dass es durch die before - Relation keine Kante von Objekt o1 , der Wurzel des Stranges, nach o5 gibt. Existiert eine solche Kante und ist der betreffende Teilstrang kürzer, müssen Änderungen der Knotengewichte in Form eines neuen Korrekturwertes weitergegeben werden. Zur Veranschaulichung wird die hinzugefügte before - Relation in ein overlaps geändert. Die Relation lautet: o1 overlaps(5,10) o5 . Da es sich jetzt um eine als unsicher klassifizierte Relation handelt, wird ein Teilgraph aus Objekt o1 und o5 für einen Konsistenzcheck gebildet. Bellman-Ford liefert ein mögliches Ergebnis der Knotengewichte für Objekt o1 (Abbildung 5.32). Da aber diese Werte (-20, -32) größer sind als die des längeren Stranges (-47, -62), dieser Strang also eine kleinere Dauer hat, werden die Werte des längeren Stranges der Objekte o2 bis o4 genommen. Die Knoten von Objekt o1 erhalten die entsprechenden Gewichte (-47, -62). Zusätzlich werden beide Kanten vom Startknoten v0 zu o1 mit den jeweiligen Gewichten der Knoten gesetzt. Der Teilgraph verhält sich jetzt so, als wäre der andere, dominante Strang vorhanden. Im Unterschied zum vorherigen Beispiel der before - Relation, existiert jetzt eine Kante zwischen den Objekten o1 und o5 : von end(o1 ) nach st(o5 ) (Abbildung Inv.-Nr.: 2005-05-23/052/IN98/2254 5.5. GRAPHEN MIT MEHREREN STRÄNGEN 71 end(o5) 0 -30 30 0 -30 0 st(o5) -10 0 0 end(o1) 0 end(o4) end(o3) end(o2) -52 -5 -20 0 -15 0 v0 15 -15 -1 -30 30 -2 20 -20 -5 10 -10 0 -67 st(o1) -3 -50 st(o2) 0 0 -35 -10 st(o3) st(o4) 0 Abbildung 5.30: Constraint Graph nach Bellman - Ford o5 o3 o1 o2 o4 0 15 17 32 37 47 52 57 -67 -52 -50 -35 -30 -20 -15 -10 67 Zeit 0 Knotengewichte Abbildung 5.31: Korrekter Ausgabeschedule Inv.-Nr.: 2005-05-23/052/IN98/2254 72 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE end(o1) -20 0 end(o5) -10 0 0 v0 15 -15 -1 30 -30 0 -35 -5 -30 st(o1) 0 st(o5) Abbildung 5.32: Teilgraph des neuen Stranges end(o1) -47 0 end(o5) -10 -18 -47 v0 15 -15 -1 30 -30 -62 -62 -5 -48 st(o1) 0 st(o5) Abbildung 5.33: Teilgraph des neuen Stranges mit angepassten Kantengewichten Inv.-Nr.: 2005-05-23/052/IN98/2254 5.5. GRAPHEN MIT MEHREREN STRÄNGEN 73 end(o5) -18 30 -30 0 -10 -48 0 st(o5) -1 0 0 end(o1) 0 end(o4) end(o3) end(o2) -47 -5 -20 0 -15 -5 0 v0 15 -15 25 -2 -1 -25 20 -20 -5 10 -10 0 -62 st(o1) -3 -45 st(o2) 0 0 -35 -10 st(o3) st(o4) 0 Abbildung 5.34: Constraint Graph mit zwei Strängen nach Bellman - Ford 5.34). Durch diese Kante und den angepassten Kanten von v0 zu den o1 -Knoten verläuft der Weg der kürzesten Pfade zu den Knoten von Objekt o5 jetzt nicht mehr von v0 direkt zu o5 , sondern über das Objekt o1 . Bellman-Ford führt jetzt zu korrekten Ergebnissen (Abbildung 5.33) und die Dauer des kürzeren Stranges bzw. Objekt o5 wurde angepasst. Durch die Rückkante können kürzere Pfade zu den Knoten von Objekt o5 gefunden werden, falls sich die Werte für Objekt o1 ändern. Dadurch kann ein kurzer Strang zu einem längeren werden und umgekehrt. Ein Beispiel dazu folgt weiter unten. Der komplette Constraint Graph (Abbildung 5.34) liefert folgenden Ausgabeschedule (Abbildung 5.35): st(o1 ) = 0, end(o1 ) = 15, st(o2 ) = 17, end(o2 ) = 42, st(o3 ) = 27, end(o3 ) = 47, st(o4 ) = 52, end(o4 ) = 62, st(o5 ) = 14, end(o5 ) = 44. Inv.-Nr.: 2005-05-23/052/IN98/2254 74 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE o5 o3 o1 o2 o4 0 15 17 14 27 32 42 47 52 44 62 -62 -47 -45 -48 -35 -30 -20 -15 -10 -18 0 Zeit Knotengewichte Abbildung 5.35: Ausgabeschedule o5 AR4 v0 o1 AR1 o2 AR2 o3 AR3 o4 Abbildung 5.36: Anpassung der Kantengewichte durch den Korrekturwert Werden Bedingungen oder Objektdauer geändert, müssen die Korrekturwerte über die Vorgängerobjekte in Richtung der Wurzel eines Stranges weitergegeben und die Knotengewichte eines kürzeren Stranges von dieser Wurzel aus angepasst werden. Diese Weitergabe an den Teilbaum ist aber nur notwendig, wenn eine Kante vom einen Wurzelknoten in die entsprechende Richtung existiert. Ist dies der Fall, bekommen die Knoten des Wurzelobjektes die entsprechenden Gewichte des längsteren Stranges. Anhand der neuen und alten Knotengewichte wird ein neuer Korrekturwert berechnet, der bis zum Ende des Stranges bzw. Teilbaum weiter gegeben wird. Abbildung 5.36 zeigt noch einmal den Beziehungsgraph des Beispiels und welche Objekte angepasst wurden. Die gestrichelten Pfeile zeigen das Weitergeben des Korrekturwertes zur Strangwurzel von o2 zu o1 und an den anderen Strang über die Rückkante der overlaps - Relation von o1 zu o5 . Durch Veränderung von Bedingungen oder Objektdauer ist es möglich, dass ein rezessiver (kürzer) Strang dominant (länger) wird und umgekehrt. Wird zum Beispiel die Dauer von Objekt o5 auf 90 Zeiteinheiten erhöht, besitzt dieser ehemals rezessive Strang von Objekt o1 aus gesehen eine Länge von 95 ZE (Knotengewicht st(o1 )=-95, siehe Abbildung 5.37) und wird zum dominanten Strang. Der nun rezessive Strang der Objekte o2 bis o4 hat eine Länge von 62 ZE (Knotengewicht st(o1 )=-62, siehe Abbildung 5.34). Im Teilgraph werden Objekt o1 die entsprechenden Knotengewichte zugewiesen (-80, -92). Die Gewichte der Kanten ausgehend von v0 müssen nicht angepasst werden, da die geänderte Bedingung nicht in einem rezessiven Strang liegt und in diesem Schritt kein Korrekturwert an Nachfolgeobjekte weitergegeben wird. Inv.-Nr.: 2005-05-23/052/IN98/2254 5.5. GRAPHEN MIT MEHREREN STRÄNGEN end(o1) 0 75 end(o5) -10 0 -1 100 -100 -95 -5 -100 st(o1) 0 st(o5) -80 0 v0 15 -15 0 Abbildung 5.37: Teilgraph des dominanten Stranges mit angepassten Knotengewichten Da in der before - Relation von o1 zu o2 keine Rückkante existiert, ist eine Anpassung der Knotengewichte des rezessiven Stranges nicht erforderlich. Abbildung 5.38 zeigt den kompletten Constraint Graph. Der Ausgabeschedule (Abbildung 5.39) lautet wie folgt: st(o1 ) = 0, end(o1 ) = 15, st(o2 ) = 50, end(o2 ) = 75, st(o3 ) = 60, end(o3 ) = 80, st(o4 ) = 85, end(o4 ) = 95, st(o5 ) = 5, end(o5 ) = 95. Die Weitergabe bzw. Anpassung der kürzesten Pfade an einem Strang ausgehend von der Wurzel kann zu Knotengewichten c > 0 führen. Solche Werte stehen im Widerspruch zu den mit Null gewichteten Kanten, die im Constraint Graphen vom Startknoten v0 aus zu jeden anderen Knoten gehen. Um diesen Widerspruch aufzulösen, müssen am Ende alle Knotengewichte im gesamten Graphen überprüft werden. Existieren ein oder mehrere Gewichte c > 0, wird der größte Wert festgestellt und von allen Knotengewichten subtrahiert. Mit diesem Test ist ein korrekter Schedule gewährleistet. Die Methode zum Anpassen der Knotengewichte zur Strangwurzel bzw. an einen abzweigenden Strang muss auch auf komplexere Projekte angewendet werden. Verändert man die Dauer eines Objektes aus dem Beispiel-Beziehungsgraphen aus Abbildung 3.14 (gestricheltes Objekt in Abbildung 5.40), müssen abhängig von der Graphstruktur große Teile des Graphen angepasst werden. Das Weitergeben der Korrekturwerte und die Bewertung, ob ein Strang rezessiv oder dominant ist, muss rekursiv bis zur Wurzel des gesamten Teilbaumes erfolgen. Hier ist darauf zu achten, dass bereits besuchte Stränge nicht mehrfach durchlaufen werden. Der zweite Strang in Abbildung 5.40, welcher vom Startknoten v0 nach rechts unten abzweigt, ist von den Änderungen nicht betroffen. Im Gegensatz zu den vorangegangenen Beispielen hat er als Wurzel kein Medienobjekt, sondern den Startknoten v0 . Er bildet ein Art Unterprojekt, weil kein Objekt aus diesem Strang mit Inv.-Nr.: 2005-05-23/052/IN98/2254 76 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE end(o5) 0 100 -100 0 -10 -90 0 st(o5) -1 0 0 end(o1) 0 end(o4) end(o3) end(o2) -80 -5 -20 0 -15 -5 0 v0 -15 15 -1 -25 25 -2 -20 20 -5 10 -10 0 -95 st(o1) -3 -45 st(o2) 0 0 -35 -10 st(o3) st(o4) 0 Abbildung 5.38: Constraint Graph nach Bellman - Ford o5 o3 o1 0 5 -95 -90 o2 15 -80 o4 50 60 75 80 85 -45 -35 -20 -15 -10 95 Zeit 0 Knotengewichte Abbildung 5.39: Korrekter Ausgabeschedule Inv.-Nr.: 2005-05-23/052/IN98/2254 5.6. ZUSAMMENFASSUNG 77 v0 Abbildung 5.40: Beziehungsgraph mit mehreren Strängen einem Objekt des anderen Stranges in Beziehung steht. Die Scheduleberechnung ist somit unabhängig und kann auch einzeln erfolgen. In der Abbildung ist auch erkennbar, dass der Aufwand zur Anpassung der Knotengewichte direkt von der Lage des zu änderten Objektes bzw. der Relation im Graphen abhängt. Ein im Schedule bzw. im Graphen weiter hinten liegendes Objekt ist aufwendiger, als zum Beispiel ein Startobjekt am Anfang eines Projektes. Neben der Position der Änderung im Graphen hat auch die Graphstruktur Einfluss auf die Laufzeit der Scheduleberechnung. Ein Projekt mit 10 Einzelsträngen, die jeweils vom Startknoten v0 ausgehen, lässt sich schneller berechnen, als wenn die Stränge ein gemeinsames Medienobjekt als Startpunkt hätten. In Abschnitt 6.4 werden die Unterschiede verdeutlicht. 5.6 Zusammenfassung Die Berechnung des Ausgabeschedule erweist sich als schwieriger als die Konsistenzprüfung von Bedingungen. Das liegt zum einen daran, dass einzelne Änderungen Auswirkungen auf den gesamten Schedule haben können. Beim Konsistenzcheck waren die Auswirkungen lokaler Änderungen auch nur auf diesen einen lokalen Bereich beschränkt. Ein weiterer Unterschied ist, dass veränderte Objekte oder Relationen für einen Konsistenzcheck gesammelt“ werden können. Anschließend wird aus dieser Menge ” ein Teilgraph gebildet und mit Bellman - Ford geprüft. Die Schedulebrechnung geht aber stets von einen konsistenten Constraint Graph mit korrekten Knotengewichten aus. D. h. nach jeder Änderung müssen die Knotengewichte entsprechend angepasst werden, damit für alle Knoten die kürzesten Pfade vorliegen. Der Algorithmus zum Anpassen der kürzesten Pfade bei Änderung einer Bedingung ist in Abbildung 5.41 dargestellt. Als erstes wird ein Teilgraph nach den Algorithmus der Abbildung 3.9 erstellt (1). Durch das Anpassen der Knotengewichte von v0 wird der gesamte Constraint Graph für den Teilgraphen simuliert (2). Dazu wird das größte Knotengewicht bestimmt (2.1, Abbildung 5.42) und die Gewichte aller ausgehenden Kanten von v0 auf diesen Wert gesetzt (2.2 - 2.3). Auf dem angepassten Teilgraphen wird Bellman-Ford ausgeführt und man erhält einen neuen Teilgraph mit den korrekten kürzesten Pfaden (3). Anhand des alten und neuen Graphen wird der Korrekturwert der Weglängen bestimmt (4). Dieser Wert ist die Differenz aus dem kleinsten Knotengewicht des ursprünglichen Teilgraphen (4.1, Abbildung 5.43) und dem Knotengewicht des entsprechenden Knotens im Inv.-Nr.: 2005-05-23/052/IN98/2254 78 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE neuen Teilgraph (4.2 - 4.4). Der Korrekturwert wird nun an die Vorgängerobjekte weiter gegeben. Die Identifizierung erfolgt über den Beziehungsgraphen (5). Handelt es sich bei dem Vorgängerobjekt um eine Wurzel des aktuellen Strang bzw. Teilbaum (6), werden die Knotengewichte des Wurzelobjektes neu bestimmt (Abbildung 5.44). Für die Überprüfung werden Teilgraphen erstellt. Sie bestehen jeweils aus dem Wurzelobjekt und dem direkten Nachfolger (7.1 - 7.2). Auf diese Art kann jeder abzweigende Strang betrachtet werden. Durch die Anpassung der Kantengewichte von v0 (7.3) ist sichergestellt, dass die korrekten Knotengewichte mit Bellman-Ford berechnet werden (7.4). Nun wird der Strang mit der längsten Dauer festgestellt, also der Teilgraph mit den kleinsten Knotengewichten bzw. Pfaden (7.5 - 7.6). Anhand dieser Werte wird ein neuer Korrekturwert bestimmt und das Nachfolgeobjekt dient als neue Wurzel (7.7. - 7.8). Nun wird geprüft, ob der längste Teilbaum in diesem Durchlauf zur Scheduleberechnung noch nicht angepasst wurde5 (7.11). Ist dies der Fall, besitzt er schon die korrekten Knotengewichte, der Korrekturwert wäre 0. Falls nicht, werden die Knotengewichte der alten und neuen Wurzel angepasst (7.12 - 7.13) und der Korrekturwert an alle Objekte des Teilgraphen bzw. Stranges weitergegeben6 (7.14 - 7.15). Hat es sich beim Vorgängerobjekt nicht um ein Wurzelobjekt gehandelt (9), werden dessen Knotengewichte mit den ursprünglichen Korrekturwert angepasst und das Objekt als besucht markiert (10 - 11). Auf diese Weise werden alle Objektknoten bis zum Startknoten v0 abgearbeitet (14). Zum Schluss wird das größte Knotengewicht im gesamten Constraint Graphen gesucht (15). Ist es größer als 0, wird dieser Wert von allen Knotengewichten subtrahiert, um die Konsistenz der kürzesten Pfade wieder herzustellen (16 - 18). Die Implementierung im DBMS erfolgt analog zur in Abschnitt 3.7 vorgestellten Methode. Die konkrete Realisierung wurde nicht in einem Datenbanksystem durchgeführt, sondern durch ein Java-Programm, was lokal auf einem PC die Berechnungen ausführt. Das folgende Kapitel bewertet die in diesem und in Kapiteln 3 und 4 vorgestellten Algorithmen. 5 Ein expliziter Test, ob eine Rückkante vom alten zum neuen Wurzelobjekt existiert (Abschnitt 5.5) ist nicht erforderlich, da dies durch die Erstellung der einzelnen Teilgraphen schon berücksichtigt ist. 6 Falls sich dieser Teilgraph bzw. Strang weiter aufteilt, erfolgt keine Neuberechnung des Korrekturwertes an den erreichten Wurzelobjekten. Inv.-Nr.: 2005-05-23/052/IN98/2254 5.6. ZUSAMMENFASSUNG 79 Algorithm: shortestP ath(INPUT condition) Input: Condition condition 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 partialGraph = buildPartialGraph(condition) partialGraph = correctEdgeValues(partialGraph) partialGraphN ew = bellmanFord(partialGraph) dif f = getDiffValue(partialGraph, partialGraphN ew) repeat parentObject = RelationGraph.getParentObject(partialGraph) do { if parentObject = rootOfTree(RelationGraph) { correctTree(parentObject, dif f ) } else { correctNodeWeight(parentObject, dif f ) parentObject.setV isited } } until parentObject = startNodeV0 value = getLargestNodeWeight(constraintGraph) if value > 0 { for all constraintGraph.nodes do{ node.value = node.value - value } } Abbildung 5.41: Algorithmus zur Berechnung der kürzesten Pfade bei Änderung einer Bedingung Algorithm: correctEdgeV alues(INPUT partialGraph, OUTPUT partialGraph) Input: Graph partialGraph Output: Graph partialGraph 2.1 2.2 2.3 2.4 2.5 value = getLargestNodeWeight(partialGraph) for all startN ode.outgoingEgdes do{ Edge.value = value } return partialGraph Abbildung 5.42: Algorithmus zum Anpassen der Kantengewichte der ausgehenden Kanten vom Startknoten v0 Inv.-Nr.: 2005-05-23/052/IN98/2254 80 KAPITEL 5. BERECHNUNG DES AUSGABESCHEDULE Algorithm: getDiffValue(INPUT partialGraph, partialGraphN ew, OUTPUT dif f ) Input: Graph partialGraph Graph partialGraphN ew Output: Integer dif f 4.1 4.2 4.3 4.4 4.5 valueOld = getSmallestNodeWeight(partialGraph) node = getNode(partialGraph, valueOld) valueN ew = getNodeWeight(partialGraphN ew, node) dif f = valueOld - valueN ew return dif f Abbildung 5.43: Algorithmus zur Berechnung des Korrekturwertes vom Teilgraph Algorithm: correctTree(INPUT parentObject) Input: Node parentObject 7.1 for all parentObject.Childs do{ 7.2 partialGraphT emp = buildPartialGraph( RelationGraph.getConditionBetween(parentObject, parentObject.Child) 7.3 correctEdgeValues(partialGraphT emp) 7.4 partialGraphT empN ew = bellmanFord(partialGraphT emp) 7.5 if getSmallestNodeWeight(partialGraphT empN ew) < lowestN odeW eight { 7.6 lowestN odeW eight = getSmallestNodeWeight(partialGraphT empN ew) 7.7 newP arentObject = getNode(partialGraph, lowestN odeW eight) 7.8 dif f = getDiffValue(partialGraphT emp, partialGraphT empN ew) 7.9 } 7.10 } 7.11 if newP arentObject is not visited{ 7.12 correctNodeWeight(P arentObject, dif f ) 7.13 correctNodeWeight(newP arentObject, dif f ) 7.14 for all childObject = RelationGraph.getChildObject(newP arentObject) do { 7.15 correctNodeWeight(childObject, dif f ) 7.16 } 7.17 } Abbildung 5.44: Algorithmus zur Berechnung der kürzesten Pfade in Teilbäumen Inv.-Nr.: 2005-05-23/052/IN98/2254 Kapitel 6 Evaluierung 6.1 Testprojekte und Messmethode Um die Effizienz des Optimierungsalgorithmus zu bewerten, wurden einige Testprojekte erzeugt (Tabelle 6.1). Sie bestehen aus einer bestimmten Anzahl von Medienobjekten, welche mit zufällig gewählten Allen-Relationen in Beziehung stehen. Die Duration-Constraints der Objekte zählen als Relation. Jedes Projekt wird durch eine XML-Datei repräsentiert. Sie beinhaltet pro Objekt jeweils ein Duration-Constraint und zufällig gewählte Allen-Relationen, welche die Medienobjekte in Beziehung setzen. Das Verhältnis sichere zu unsichere Relationen liegt bei allen Projekten bei ca. 50 %. Die Struktur des (Beziehungs-) Graphen wurde nicht zufällig gewählt. Die Testprojekte bestehen aus mehreren Strängen gleicher Länge, die parallel verlaufen und vom Startknoten v0 ausgehen (Abbildung 6.1). Das Projekt P1 mit 50 Objekten beinhaltet zum Beispiel 5 Stränge mit je 10 Objekten. Alle Projekte mit dem Zusatz a enthalten gegenüber den ursprünglichen Projekten ein zusätzliches Objekt. Es befindet sich direkt nach dem Startknoten und steht mit allen Teilsträngen in Beziehung (Abbildung 6.2). Die Projekte bestehen somit nicht mehr aus unabhängigen Strängen, sondern besitzen ein Hauptobjekt, auf dem alle anderen Relationen und Objekte aufbauen. Durch diese Erweiterung Projektname P1 P2 P3 P4 P5 P1a P2a P3a P4a P5a Medienobjekte 50 100 250 500 1000 51 101 251 501 1001 Anzahl Relationen 95 190 490 980 1975 101 201 501 1001 2001 Knoten 101 201 501 1001 2001 103 203 503 1003 2003 Tabelle 6.1: Testprojekte Inv.-Nr.: 2005-05-23/052/IN98/2254 Kanten 291 580 1480 2960 5951 304 604 1504 3004 6006 82 KAPITEL 6. EVALUIERUNG v0 Abbildung 6.1: Struktur der Testprojekte Px soll die Abhängigkeit der Laufzeit der Scheduleberechnung von der Projekt- bzw. Graphstruktur gezeigt werden. Die Anzahl der Knoten |V | pro Projekt ergibt sich aus der Objektanzahl n (jeweils ein Start- und ein Endknoten) und dem Startknoten v0 : |V | = 2n + 1 (6.1) Die Kantenanzahl ist abhängig von den verwendeten Bedingungen. Sie entspricht in etwa dem Dreifachen der Knotenanzahl. Das Produkt beider Werte kann als Maßstab für die Laufzeit für den Konsistenzcheck gesehen werden, da der Algorithmus von Bellman-Ford eine Komplexität von O (|V | · |E|) besitzt. Die XML-Dateien der Testprojekte werden mit dem ConstraintManager eingelesen. Das Programm erstellt den dazu gehörigen kompletten Constraint Graph und führt einen Konsistenzcheck durch. Die Zeit für diesen Test mittels Bellman-Ford auf dem gesamten Graphen dient als Vergleichswert zur Bewertung der Optimierungen. Anschließend erfolgt die eigentliche Abspeicherung in einer Oracle-Datenbank. Die Tabellenstrukuren wurden in Abschnitt 2.5.4 besprochen. An den nun in der Datenbank vorliegenden Projekten werden zufällig Bedingungen ausgewählt und manipuliert. Die Duration-Constraints zählen auch zu den veränderbaren Bedingungen. Die Anzahl der Änderungen betragen 1, 25, 50 und 100, um Auswirkungen auf die Laufzeit zu untersuchen. Die Manipulationen werden gesammelt und anschließend in einem Teilgraph gemeinsam überprüft. Bei der Erzeugung des Teilgraphen wird davon ausgegangen, dass die geänderten Bedingungen bekannt sind und nicht erst durch einen Vergleich Inv.-Nr.: 2005-05-23/052/IN98/2254 6.1. TESTPROJEKTE UND MESSMETHODE 83 v0 Abbildung 6.2: Struktur der Testprojekte Pxa mit dem Originalgraphen extrahiert werden müssen. Die in den Diagrammen ersichtlichen Zeiten zum Finden des Teilgraphen“ sagen aus, wie lange es gedauert ” hat, alle relevanten Objekte und Relationen ausfindig zu machen, die mit der geänderten Relation direkt in Beziehung stehen und demzufolge auf Konsistenz geprüft werden müssen. Da die geänderte Bedingung bekannt ist, sind diese Zeiten gleichbedeutend mit der Erstellung des zu testenden Teilgraphen. Der Konsistenzcheck erfolgt noch nicht im DBMS. Analog zur in Abschnitt 2.3.1 vorgestellten Architektur der Integritätssicherung durch die Anwendung wurde ein Java-Programm erstellt. Die Bedingungen werden aus der Datenbank geladen und lokal auf einem PC auf Konsistenz überprüft. Ein lokaler Konsistenzcheck ist zur Bewertung der Algorithmen sinnvoll, da auf diesem Wege die Laufzeit genauer bestimmt werden kann. Verzögerungen durch die Übertragung der Daten an die Datenbank können somit ausgeschlossen werden. Abschnitt 6.6 geht auf die Realisierung der Algorithmen direkt im DBMS ein. Dort wird auf die Problematik der Übertragungszeit zur Speicherung der Bedingungen in der Datenbank eingegangen. Die kleinste zu messende Zeiteinheit auf dem PC, auf dem die Messungen durchgeführt werden, liegt bei 1 ms. Da sich die gemessenen Zeiten für einzelne Tests teilweise weit darunter bewegen, werden sie n mal hintereinander ausgeführt. Der Faktor n bewegt sich abhängig von der Größe des Graphen bzw. des Projektes zwischen 1 und 10.000.000. Um die Spannweite der Werte visualisieren zu können, sind die Zeiten in den Diagrammen in logarithmischer Darstellung abgebildet. Des Weiteren werden die Messungen mehrfach hintereinander ausgeführt, um Messungenauigkeiten zu minimieren. Die in den nächsten Abschnitten angegebenen Messergebnisse wurden normiert und beziehen sich jeweils auf einen Durchlauf, um einen direkten Vergleich zu ermöglichen. Die Messungen wurden auf einem PC mit 3 GHz Intel Pentium 4 Prozessor, Inv.-Nr.: 2005-05-23/052/IN98/2254 84 KAPITEL 6. EVALUIERUNG 1 GB RAM, Suse Linux 9.0 und Java 1.4.2 durchgeführt. Es konnte nicht sicher gestellt werden, dass der PC exklusiv für die Berechnungen zur Verfügung stand. Rechenintensive Prozesse liefen aber nicht parallel zu den Messungen. Mögliche Störfaktoren sind Standard-Tasks des Betriebsystems oder Remote-Logins bzw. Prozesse von anderen Benutzern. Die Auswirkungen auf die Messung sollten durch die Durchschnittsbildung minimal sein. 6.2 6.2.1 Optimierung des graphischen Konsistenzcheck Überprüfung von Änderungen als Teilgraph Erwartungen In Kapitel 3 wurde eine Möglichkeit vorgestellt, den Konsistenzcheck mittels Bellman - Ford effizienter zu gestalten. Der angegebene Algorithmus zur Teilgrapherstellung wurde implementiert und an den in Abschnitt 6.1 vorgestellten Projekten P1 bis P5 getestet. Durch die zum Teil enorme Verkleinerung des zu testenden Graphen, ist auch eine dementsprechende Verbesserung der Laufzeit zu erwarten. Interessant ist in diesem Zusammenhang auch, wie viel Zeit zum Suchen bzw. zur Erstellung des Teilgraphen benötigt wird. Da der Algorithmus zur Teilgrapherstellung nur von der Anzahl der Kanten im Beziehungsgraphen anhängig ist und eine lineare Laufzeit von (O(|E|)) hat, im Gegensatz zu O (|V | · |E|) von Bellman-Ford, ist zu erwarten, dass diese Zeit wesentlich kleiner ist als der eigentliche Konsistenzcheck. Ergebnisse Die Ergebnisse der Messreihen bestätigen die Erwartungen. Abbildung 6.3 zeigt die gemessenen Zeiten in einem Diagramm mit logarithmischer Darstellung. Um Werte kleiner Eins zu vermeiden, wurden alle gemessenen Zeiten mit dem Faktor 1000 multipliziert, die Zeiten der Y-Achse sind in ns angegeben. Zu jedem Testprojekt gibt es 5 Säulen. Die jeweils letzte (schwarz) repräsentiert die benötigte Zeit für Bellman-Ford auf den gesamten Graphen. Diese Säule gilt als Referenzwert und ist in den meisten Diagrammen mit angegeben, um die Effizienz der vorgestellten Algorithmen zu verdeutlichen. Die Säulen 1-4 jedes Projektes zeigen den Zeitbedarf für 1, 25, 50 und 100 Änderungen bei Anwendung der optimierten Methode aus den Abschnitten 3.3 und 3.4. Dabei ist jede Säule noch einmal unterteilt in die Zeit für das Finden bzw. Erstellen des Teilgraphen (dunkelgrau) und den anschließenden Konsistenzcheck (hellgrau). Abbildung 6.3 zeigt, dass bei jedem Projekt, unabhängig von der Anzahl der veränderten Bedingungen, der Test des Teilgraphen einen enormen Laufzeitgewinn zur Folge hat. Die Kosten zur Erstellung des Teilgraphen sind weitaus geringer als der eigentliche Test des Graphen. Sie wachsen mit größer werdenden Projekten, da mehr Bedingungen durchsucht werden müssen. Der Anstieg ist aber linear im Gegensatz zur expotentiellen Steigerung des Tests mit Bellman - Ford. In Anbetracht der riesigen Unterschiede der beiden Zeiten (Faktor 103 bis 109 ), können die Kosten zur Erstellung des Teilgraphen vernachlässigt werden. Durch die logarithmische Darstellung ist der Zeitgewinn auf den ersten Blick nicht deutlich sichtbar. Der im Diagramm geringe Unterschied bei Projekt P1 zwischen der Säule für den kompletten Graphen und 100 Änderungen“ bedeutet, dass ” Inv.-Nr.: 2005-05-23/052/IN98/2254 6.2. OPTIMIERUNG DES GRAPHISCHEN KONSISTENZCHECK Zeit [ns] 85 Test Teilgraph mit je 1/25/50/100 Manipulationen Finden des Teilgraphen 1010 Test gesamter Graph 108 106 104 102 0 P1 P2 P3 P4 P5 Abbildung 6.3: Zeiten für Teilgrapherstellung und Konsistenzcheck durch BellmanFord Projektname P1 P2 P3 P4 P5 Anzahl der Änderungen 1 25 50 2 ∗ 104 20 3,6 2 ∗ 105 85 8,2 3 ∗ 106 103 194 2 ∗ 107 104 103 10 7 6 ∗ 10 2 ∗ 10 3 ∗ 106 100 0,6 5,5 31 196 4 ∗ 105 Tabelle 6.2: Faktor, um der die optimierte Methode schneller ist die optimierte Methode ca. 40 % schneller ist. Zum besseren Verständniss ist in Tabelle 6.2 der Faktor dargestellt, um den der optimierte Algorithmus gegenüber dem Check des gesamten Graphen schneller ist. Die Messergebnisse der Projekte P1a bis P5a liegen im selben Bereich und unterscheiden sich nur um 2 - 6% von den ursprünglichen Projekten P1 bis P5. Um die enormen Laufzeiten bei größeren Projekten zu verdeutlichen, wurde ein Projekt mit 5000 Objekten generiert. Der Konsistenzcheck des gesamten Graphen mit Bellman-Ford benötigt über 100 Stunden. Wie kann diese Überprüfung auf eine annehmbare Zeit reduziert werden? Wie alle anderen Projekte besteht es aus einer bestimmten Anzahl von Strängen, die vom Startknoten v0 ausgehen. Bei diesem Projekt sind es 50 Stränge mit jeweils 100 Objekten. Die einzelnen Stränge kann man als Unterprojekte betrachten, da sie nicht in Beziehung zueinander stehen. Diese Tatsache ist nicht unbedingt erforderlich, es bietet sich aber an, das Projekt in diese Unterprojekte zu zerlegen. Inv.-Nr.: 2005-05-23/052/IN98/2254 86 KAPITEL 6. EVALUIERUNG Anschließend fügt man jedes Unterprojekt zum gesamten Projekt bzw. Constraint Graphen hinzu und testet nur die Änderungen auf Konsistenz. Da es sich um Projekte mit 100 Objekten handelt, werden als Näherung die Zeiten von Projekt P2 verwendet. Ein Konsistenzcheck für dieses Projekt beträgt ca. 1 s. Die summierte Zeit für alle 50 Unterprojekte beläuft sich auf 50 s. Das bedeutet eine enorme Steigerung gegenüber der ursprünglichen Methode. Bei der Speicherung des Projektes in einer Datenbank und gleichzeitiger Konsistenzprüfung wird ein realer Wert von ca. 525 s erreicht. Dies ist noch immer um den Faktor 685 schneller als der Test des gesamten Graphen. Anhand dieser Vorgehensweise kann man bereits vorhandene Projekte zeitsparend in der Datenbank speichern bzw. auf Konsistenz prüfen. An welchen Stellen die Aufspaltung vorgenommen und in wie viele Stücke das Projekt unterteilt wird, spielt keine Rolle in Hinblick auf die Konsistenz. Jedes Objekt bzw. Bedingung einzeln hinzuzufügen ist allerdings unvorteilhaft, da der Verbindungsaufbau zur Datenbank, die Übertragung und Speicherung zu viel Zeit in Anspruch nimmt. Diese Kosten wurden in den Messungen bisher nicht betrachtet. Abschnitt 6.6 bewertet des Konsistenzcheck in der Datenbank inklusive der Übertragungszeiten. 6.2.2 Reduzierung der Kantenanzahl Erwartungen Bei der in Abschnitt 3.5 vorgestellte Methode zur Reduzierung der Kantenanzahl des zu testenden Teilgraphen sind geringere Laufzeitgewinne zu erwarten. Die Knotenanzahl bleibt gleich, d.h. die Komplexität des Graphen wird nicht in den Größenordnungen verringert, wie beim Test des Teilgraphen. Mit Hilfe der Gleichung 6.1 läßt sich die Kantenanzahl der reduzierten Projektgraphen abschätzen. Bei den ursprünglichen Projekten entspricht die Kantenanzahl |E| etwa dem Dreifachen der Anzahl n der Objekte: |Er | = (2n + 1) ∗ 3 = 6n + 3. (6.2) Durch die Optimierung werden genau n Kanten weggelassen, jeweils eine vom Startknoten v0 zu den Startknoten eines Objektes: |E| = 6n + 3 − n = 5n + 3. (6.3) Die Kantenanzahl ist bei den Testprojekten um ca. 17 % geringer. In dieser Grössenordnung sind auch die Laufzeitersparnisse zu erwarten. Tabelle 6.3 zeigt die Kennwerte der Projekte mit reduzierter Kantenanzahl. Ergebnisse Um die Vorteile dieser Methode zum Ausdruck zu bringen, wurden die Laufzeiten von Bellman-Ford auf den gesamten Graphen gemessen. Im Vergleich zu den ursprünglichen Projekten lässt sich eine Verbesserung von 20 bis 30 % feststellen. In Tabelle 6.4 sind die konkreten Werte aufgelistet. Inv.-Nr.: 2005-05-23/052/IN98/2254 6.3. NUMERISCHE KONSISTENZPRÜFUNG Projektname P1r P2r P3r P4r P5r Anzahl Medienobjekte 50 100 250 500 1000 Anzahl Knoten 101 201 501 1001 2001 87 Anzahl Kanten 241 480 1230 2460 4951 Kantenersparnis 17,2 % 17,2 % 16,9 % 16,9 % 16,8 % Tabelle 6.3: Testprojekte mit reduzierter Kantenanzahl Projektname P1 P2 P3 P4 P5 Zeit ohne Optimierung 138 1.215 19593 158.719 1.276.156 Zeit mit Optimierung 107 866 13.614 111.086 910.576 Zeitgewinn 19,9 27,3 29,3 29,5 28,5 % % % % % Tabelle 6.4: Laufzeit [ms] Bellman-Ford bei reduzierter Kantenanzahl Messungen zur Berechnung des Teilgraphen nach unterschiedlich vielen Manipulationen wurden hier nicht gesondert durchgeführt. Die Ergebnisse sind aber mit Werten der ursprünglichen Projekte vergleichbar, da der zu testende Teilgraph bei 50 Änderungen in etwa der Größe von Projekt P1 entspricht. Da die relativen Zeitgewinne unabhängig von der Graphgröße kaum voneinander abweichen, sind beim Test des Teilgraphen ebenfalls 20 bis 30 % Zeitersparnis durch Anwenden dieser Methode zu erwarten. 6.3 Numerische Konsistenzprüfung Die Messungen der Laufzeiten des numerischen Konsistenzcheck erfolgen nach dem Algorithmus aus Abschnitt 4.2. Die Projekte werden zunächst komplett eingelesen und anschließend alle Bedingungen überprüft. Erwartungen Bei der zweiten vorgestellten Möglichkeit zur Überprüfung von Ausgabebedingungen werden generell geringere Laufzeiten als beim Test mit Bellman-Ford erwartet. Da zu jeder Bedingung maximal drei Ungleichungen pro Objekt erstellt werden, ist nur mit einer linear steigenden Laufzeit zu rechnen. Getestet wird sowohl der Check des gesamten Graphen als auch die Erstellung mit anschließender Überprüfung des Teilgraphen bei 1, 25, 50 und 100 Manipulationen. Ergebnisse Sämtliche Tests mittels numerischer Ungleichungen sind schneller als Bellman-Ford. Die Werte der Tabelle 6.5 entsprechen der Gesamtzeit des Konsistenzcheck inklusive der Suche des Teilgraphen. Im Gegensatz zur graphischen Testmethode bleibt die benötigte Zeit pro geänderter Bedingung relativ konstant und nimmt nicht mit Inv.-Nr.: 2005-05-23/052/IN98/2254 88 KAPITEL 6. EVALUIERUNG Projektname P1 P2 P3 P4 P5 Anzahl 1 0,0024 0,0026 0,0023 0,0025 0,0026 der Änderungen 25 50 100 0,06 0,12 0,28 0,09 0,21 0,32 0,09 0,21 0,55 0,05 0,22 0,68 0,11 0,28 0,74 Tabelle 6.5: Laufzeit [ms] numerischer Konsistenzcheck Zeit [ns] Test gesamter Graph mit numerischen Ungleichungen Test gesamter Graph mit Bellman-Ford 1010 108 106 104 102 0 P1 P2 P3 P4 P5 Abbildung 6.4: Vergleich numerische Methode – Bellman-Ford größer werdenden Teilgraph zu. Abbildung 6.4 zeigt einen Vergleich beider Methoden bei Anwendung auf den gesamten Graphen, Abbildung 6.5 bei unterschiedlich vielen Manipulationen. Die Zeit zum Erstellen bzw. Finden des zu testenden Teilgraphen war bei Bellman-Ford gegenüber der Gesamtzeit vernachlässigbar. Jetzt liegt sie aber im Bereich der Laufzeit des numerischen Tests. Bei nur einer Manipulation ist sie sogar um den Faktor 36 größer als der eigentliche Test des Teilgraphen, weil dieser sehr effizient ist. In Tabelle 6.6 sind beide Zeiten für Projekt P1 aufgelistet. 6.4 Scheduleberechnung Erwartungen Die Laufzeiten der Berechnung der Ausgabezeiten (vgl. Kapitel 5) wird sehr stark abhängig sein von der Struktur des Graphen und von der Position der geänderten Inv.-Nr.: 2005-05-23/052/IN98/2254 6.4. SCHEDULEBERECHNUNG Zeit [ns] 89 Test Teilgraph mit je 1/25/50/100 Manipulationen Finden des Teilgraphen 1010 Test gesamter Graph 108 106 104 102 0 P1 P2 P3 P4 P5 Abbildung 6.5: Vergleich numerische Methode mit Bellman-Ford bei unterschiedlich vielen Manipulationen Projektname P1 P1 P1 P1 Anzahl der Änderungen 1 25 50 100 Zeit Teilgrapherstellung 0,0023 0,0067 0,0088 0,0109 Zeit Konsistenzcheck 0,00006 0,05682 0,14727 0,26872 Tabelle 6.6: Zeit [ms] für Teilgrapherstellung und numerischen Konsistenzcheck Inv.-Nr.: 2005-05-23/052/IN98/2254 90 KAPITEL 6. EVALUIERUNG Zeit [ns] Scheduleberechnung nach 1/25/50/100 Manipulationen Konsistenzcheck Teilgraph 1010 Test gesamter Graph mit Bellman-Ford 108 106 104 102 0 P1 P2 P3 P4 P5 Abbildung 6.6: Scheduleberechnung bei unterschiedlich vielen Manipulationen Bedingung im Graphen. Da die geänderten Constraints zufällig ausgewählt werden, hat die Testmethode keinen Einfluss auf deren Position. Um die Auswirkungen der Graphstruktur zu verdeutlichen, werden zum Vergleich zusätzlich die Projekte P1a bis P5a getestet. Dort sollten die Zeiten zum Teil deutlich über denen der ursprünglichen Projekten P1 bis P5 liegen. Grundlage zur Berechnung des Schedule ist ein Constraint Graph, der vorher mittels Bellman-Ford auf Konsistenz geprüft wurde. Die Überprüfung mit numerischen Ungleichungen wird nicht betrachtet, da sie nicht die benötigten kürzesten Pfade zur Berechnung der Ausgabezeiten liefert. Ergebnisse Die Zeiten für die Scheduleberechnung der Projekte P1 bis P5 liegen wieder unterhalb der Werte für Bellman-Ford auf den gesamten Graphen. Einzig bei Projekt P1 mit 100 Manipulationen ist die Berechnung etwas langsamer. Abbildung 6.6 zeigt den Vergleich bei einer unterschiedlichen Anzahl von Manipulationen. Dadurch, dass die Änderungen nicht wie beim Teilgraphtest gesammelt und zum Schluss auf einmal gecheckt werden können, sondern nach jeder Änderung sofort auf den Graphen angewendet werden müssen, liegen die Zeiten zur Berechnung der Ausgabezeiten zum Teil deutlich über denen des Teilgraphchecks. Der Einfluss der Graphstruktur wird deutlich, wenn die Messergebnisse der Projekte P1a bis P5a betrachtet werden. Die Zeiten zum Testen des Teilgraphen liegen im selben Bereich. Für die Scheduleberechnung wird aber ein Vielfaches der Zeit benötigt. Abbildung 6.7 zeigt die Unterschiede im Diagramm, in Tabelle 6.7 sind die konkreten Werte für Projekte P1 und P1a aufgelistet. Die Abstände werden Inv.-Nr.: 2005-05-23/052/IN98/2254 6.5. ZWISCHENSTAND Zeit [ns] 91 Scheduleberechnung nach 1/25/50/100 Manipulationen Projekte Pxa Scheduleberechnung nach 1/25/50/100 Manipulationen Projekte Px Test gesamter Graph mit Bellman-Ford 1010 108 106 104 102 0 P1 P2 P3 P4 P5 Abbildung 6.7: Vergleich Projekte Px mit Pxa Anzahl der Änderungen 1 25 50 100 Zeit Scheduleberechnung P1 0,03 11,2 30,5 73,7 Zeit Scheduleberechnung P1a 2,3 117 326 763 Tabelle 6.7: Laufzeit [ms] für Scheduleberechnung bei unterschiedlichen Graphstrukturen mit Zunahme der Projektgröße entsprechend größer. 6.5 Zwischenstand Die Messungen haben ergeben, dass die Überprüfung der Konsistenz durch die vorgestellten Methoden sehr effizient ist. Die einzelnen Vorgehensweisen eignen sich dabei für verschiedene Anwendungsszenarien. Sollen die Bedingungen nur auf Konsistenz geprüft werden, ist die Überprüfung durch numerische Ungleichungen ausreichend. Eine Berechnung des Ausgabeschedule kann zu einem späteren Zeitpunkt erfolgen. Sollen die korrekten Ausgabezeiten jederzeit verfügbar sein, so ist die optimierte Methode durch Bellman-Ford in Verbindung mit der optimierten Berechnung des Ausgabeschedule anzuwenden. Inv.-Nr.: 2005-05-23/052/IN98/2254 92 6.6 KAPITEL 6. EVALUIERUNG Umsetzung im DBMS Nachdem die vorgestellten Algorithmen hinsichtlich ihrer Laufzeit untersucht wurden, werden sie nun im DBMS implementiert, um ihren praktischen Gebrauchswert zu bewerten. Beim verwendeten Datenbanksystem handelt es sich um Oracle 9.2. Die Eingabe bzw. Speicherung der Bedingungen erfolgt über den Constraint Manager. Das Programm parst die Allen-Relationen und speichert den Graph in den in Abschnitt 2.5.4 beschriebenen Tabellen. Der Konsistenzcheck wird anschließend über deine gespeicherte Java-Prozedur entsprechend der Architektur aus Abschnitt 2.3.2 (Integritätssicherung durch DBMS) ausgeführt. Die Prozedur nutzt die Methoden des in Abschnitt 6.1 verwendeten Programm. Zunächst wird das Speichern eines Projektes bzw. Graphen in der Datenbank bei gleichzeitigem Konsistenzcheck betrachtet. 6.6.1 Speichern des Graphen in der Datenbank Das initiale Speichern eines Projektes in der Datenbank und anschließende Änderungen von Bedingungen erfordern unterschiedliche Strategien. Die Messungen aus Abschnitt 6.2.1 haben ergeben, dass durch eine Aufteilung des Constraint Graphen in Teilgraphen zum Teil enorme Laufzeitgewinne zu erreichend sind. Diese Erkenntnis verhilft zu einer effizienten initialen Speicherung und Überprüfung des Graphen. Die Übertragung der Bedingungen besteht zunächst aus zwei Schritten. Zum einen muss der eigentliche Graph in der Tabelle Constraint Graphs gespeichert werden und zum anderen die Daten der Constraint Orders - Tabelle, die einen Überblick über die verwendeten Relationen gibt. Zuerst werden die Daten der Duration-Constraints in den beiden Tabellen gesichert. Ein Konsistenzcheck ist an dieser Stelle noch nicht nötig. Wie anfangs schon erwähnt, werden keine realen Medienobjekte in der Datenbank gespeichert. Die Duration-Constraints stehen stellvertretend für die Objekte und geben ihre Dauer an. Werden reale Medienobjekte in einem Multimedia-Datenbanksystem abgespeichert, kann deren Dauer anhand von speziellen Objektattributen abgerufen werden. Sind alle Objektdauer gespeichert, wird eine Transaktion zur Übertragung einer Bedingung in die Datenbank gestartet: Zuerst die Daten der Constraint GraphsTabelle, danach Constraint Orders. Der Constraint Graph besteht jetzt aus mindestens zwei Objekten, die miteinander verknüpft sind. Nach Anschluss der Transaktion wird der Konsistenzcheck gestartet. Ist er erfolgreich, werden die Änderungen in der Datenbank dauerhaft gespeichert. Andernfalls werden sie verworfen. In jedem Fall ist nach Abschluss der Transaktion die Datenbank bzw. die Bedingungen in einem konsistenten Zustand. Der reale Zeitbedarf zum Speichern und gleichzeitigen Konsistenzcheck für die Projekte P1a bis P5a wird im Folgenden betrachtet. Erwartungen In Abschnitt 6.2 wurde die Laufzeit des Konsistenzcheck komplett ohne Datenbankzugriffe gemessen. Um den praktischen Gebrauchswert bewerten zu können, müssen aber auch diese Zeiten betrachtet werden. Der Zeitaufwand zum alleinigen Speichern des Graphen in der Datenbank ohne Konsistenzcheck ist in Tabelle 6.8 dargestellt. Inv.-Nr.: 2005-05-23/052/IN98/2254 6.6. UMSETZUNG IM DBMS Projektname P1a P2a P3a P4a P5a 93 Zeit [s] 1,1 1,9 3,1 5,5 13,6 Tabelle 6.8: Zeit zum Speichern der Projekte in der Datenbank Die Zeiten liegen bei den kleineren Testprojekten deutlich über der Laufzeit der Überprüfung mit Bellman-Ford. Die Latenzzeiten zum Verbindungsauf- und Abbau und der Zeitbedarf der Übertragung der Daten spielen eine nicht unwesentliche Rolle. Um die Dauer der Zugriffszeiten über das Netzwerk gering zu halten, ist es sinnvoll, nicht nach jeder gespeicherten Bedingung einen Konsistenzcheck auszuführen, sondern die Überprüfung erst nach einer gewissen Anzahl von Übertragungen zu starten. Da die Laufzeit von Bellman-Ford expotentiell mit der Größe des Graphen zunimmt, wird eine relativ kleine Anzahl von Bedingungen als optimaler Wert erwartet. Bei zu großen Werten wird die Laufzeit des Konsistenzcheck den Zeitbedarf der Datenübertragung übersteigen. Um den optimalen Wert für die Überprüfung mit Bellman-Ford zu finden, werden Messungen durchgeführt, wobei unterschiedlich viele Bedingungen auf einmal in der Datenbank gespeichert werden. Die Anzahl n der nacheinander gespeicherten Bedingungen sind: 5, 10, 12, 15, 17, 20, 30 und 50. Nachdem n Bedingungen übertragen wurden, erfolgt der Konsistenzcheck wie oben beschrieben durch Aufruf der stored Procedure. Anschließend werden die nächsten n Bedingungen übertragen und getestet. Das wird solange wiederholt, bis der gesamte Graph in der Datenbank gespeichert ist. Die Laufzeit wird gemessen ab dem ersten Speichervorgang in der Datenbank, dazu zählen auch die Duration-Constrains, bis zum Abschluss des letzten Konsistenzchecks. Analog zur Überprüfung mit Bellman-Ford wurde der numerische Konistenzcheck als gespeicherte Java-Prozedur im DBMS implementiert. Da hier die Zeiten laut den Messungen aus Abschnitt 6.3 linear mit der Graphgröße ansteigen, wird an dieser Stelle kein Laufzeitgewinn durch Aufspalten des Graphen erwartet. Das Projekt wird in die Datenbank übertragen und anschließend komplett auf Konsistenz überprüft. Ergebnisse Die gemessenen Zeiten bei Bellman-Ford betragen in etwa das Zwei- bis Dreifache der Zeiten zum alleinigen Speichern des Graphen. Durch die optimierte Methode wächst die Laufzeit nicht mehr expotentiell mit der Graphgröße. Damit können auch größere Projekte in annehmbarer Zeit in der Datenbank gespeichert und auf Konsistenz überprüft werden. Als optimaler Wert für die Stückelung der Projekte hat sich 15 erwiesen. Nachdem 15 Bedingungen in die Datenbank übertragen wurden, wird ein Konsistenzcheck ausgeführt. Abbildung 6.8 zeigt die Messergebnisse graphisch. Dargestellt ist die benötigte Zeit pro Objekt, um die Werte zu normieren. Die Werte deuten bei sämtlichen Projekten auf ein Minimum bei den Wert 15 hin. Tabelle 6.9 zeigt die Gesamtzeit zum Speichern und Überprüfen der kompletten Projekte mit BellmanFord. Inv.-Nr.: 2005-05-23/052/IN98/2254 KAPITEL 6. EVALUIERUNG Zeit [ms] 94 90 Projekt P1a Projekt P2a Projekt P3a 80 Projekt P4a Projekt P5a 70 60 50 40 30 20 10 0 5 10 12 15 17 20 50 Anzahl Manipulationen Abbildung 6.8: Durchschnittliche Zeit pro Objekt für Konsistenzcheck mit BellmanFord Projektname P1a P2a P3a P4a P5a Zeit [s] 2,2 3,9 9,6 20,4 54,2 Tabelle 6.9: Zeit zum Speichern und Überprüfen mit Bellman-Ford Inv.-Nr.: 2005-05-23/052/IN98/2254 6.6. UMSETZUNG IM DBMS Projektname P1a P2a P3a P4a P5a 95 Zeit in s 1,3 2,1 4,4 9,9 27,8 Tabelle 6.10: Gesamtzeit [s] zum Speichern und Überprüfen mit numerischen Ungleichungen Der numerische Konsistenzcheck wird, wie erwartet, schneller ausgeführt. Die Zeiten sind in Tabelle 6.10 dargestellt. Sie sind bei kleineren Projekten kaum größer als die benötigte Zeit zum Speichern der Daten in der Datenbank, steigen aber bis auf ca. das Doppelte beim größten Projekt an. Insgesamt liegen sie aber immer unterhalb der Werte von Bellman-Ford. Abbildung 6.9 zeigt den Vergleich der drei Werte im Diagramm. Im Gegensatz zu den Diagrammen in den Abschnitten 6.2 bis 6.4 ist die Darstellung der Y-Achse nicht logarithmisch, sondern die Gesamtzeit wird in Sekunden angegeben. Bei Zeitvorgaben für das Speichern und Durchführen des Konsistenzcheck lassen sich anhand der Messreihen Näherungswerte berechnen, wie groß das Projekt maximal sein darf. Bei einer Grenze von 5 s liegt die maximale Projektgröße bei der Überprüfung mittels Bellman-Ford bei 130 Medienobjekten, respektive 285 bei Verwendung des numerischen Konsistenzcheck. Die Messergebnisse unterlagen teilweise Schwankungen von bis zu 150%. Die Ursachen dafür konnten nicht identifiziert werden. Es wird vermutet, dass eine kurzzeitige hohe Auslastung des Netzwerkes der Universität oder intensive I/OProzesse auf dem Datenbankserver dafür verantwortlich waren. Der optimale Wert zur Überprüfung des Teilgraphen mit 15 Bedingungen kann abhängig von der verwendeten Hard-, Software und Netzwerkanbindung variieren. 6.6.2 Manipulation von Bedingungen Das Projekt bzw. der Graph befindet sich nun in der Datenbank und in einem konsistenten Zustand. Jetzt werden, analog zu den Abschnitten 6.2 und 6.3, 1, 25, 50 und 100 Manipulationen an den Projekten P1a bis P5a vorgenommen und anschließend durch die gespeicherte Prozedur auf Konsistenz geprüft. Die Manipulationen betreffen sowohl Duration-Constraints als auch Allen-Relationen. Erwartungen Da die Änderungen zunächst komplett an die Datenbank übertragen werden, spielt die Qualität der Netzwerkanbindung eine untergeordnete Rolle. Die Laufzeiten sollten deswegen generell schneller sein, als bei der Speicherung der Projekte und anschließender Konsistenzprüfung in der Datenbank. Ergebnisse In Tabelle 6.11 bzw. Abbildung 6.10 sind die Messwerte für Bellman-Ford abgebildet. Die Zeiten sind bei wenigen Manipulationen vergleichbar mit den Messwerten Inv.-Nr.: 2005-05-23/052/IN98/2254 96 KAPITEL 6. EVALUIERUNG Zeit [s] 60 Speichern ohne Konsistenzprüfung Test mit Numerischen Ungleichungen Test mit Bellman-Ford 50 40 30 20 10 0 P1a P2a P3a P4a P5a Abbildung 6.9: Laufzeiten: Speicherung, Check mitels numerischer Ungleichungen und Bellman-Ford Inv.-Nr.: 2005-05-23/052/IN98/2254 6.6. UMSETZUNG IM DBMS Projektname P1a P2a P3a P4a P5a 97 Anzahl der Änderungen 1 25 50 100 0,2 0,5 1,3 2,8 0,2 0,6 1,6 6,2 0,2 0,6 2,4 11,8 0,3 0,7 3,8 14,4 0,3 1,1 4,0 17,1 Tabelle 6.11: Laufzeit [s] des Konsistenzcheck mit Bellman-Ford im DBMS Zeit [s] 20 Test mit Bellman-Ford nach 1/25/50/100 Manipulationen 15 10 5 0 P1a P2a P3a P4a P5a Abbildung 6.10: Laufzeit des Konsistenzcheck mit Bellman-Ford im DBMS zur Speicherung des Graphen. Bei 100 Manipulationen ist eine deutliche Verbesserung der Laufzeit erkennbar. Die gemessenen Zeiten der numerischen Überprüfung liegen bei allen Manipulationen unterhalb der Zeiten zum Speichern des Graphen. Die Ergebnisse sind in Tabelle 6.12 und Abbildung 6.11 dargestellt. Zusätzlich zur Manipulation von Bedingungen wurde die Laufzeit bei Veränderung der Dauer der Medienobjekte gemessen. Dazu wird 1, 25, 50 und 100 mal die Dauer von Objekten geändert und anschließend auf Konsistenz überprüft. Die Ergebnisse sind mit den Laufzeiten der gemischten Manipulationen vergleichbar und unterscheiden sich in den meisten Fällen nur minimal (Tabellen 6.13 und 6.14). Existieren Zeitgrenzen zum Durchführen des Konsistenzcheck, lassen sich auch hier anhand der Messreihen abhängig von der Projektgröße Näherungswerte berechnen, wie viel Änderungen der Objektdauer innerhalb einer Zeitschranke ausgeführt werden können. Bei Projekt P4 mit 500 Objekten können bis zu 100 Änderungen innerhalb von 2 s überprüft werden. Inv.-Nr.: 2005-05-23/052/IN98/2254 98 KAPITEL 6. EVALUIERUNG Projektname P1a P2a P3a P4a P5a Anzahl der Änderungen 1 25 50 100 0,1 0,3 0,6 0,7 0,3 0,4 0,6 1,0 0,4 0,5 0,8 1,4 0,5 0,6 1,2 1,9 0,6 1,2 1,5 2,8 Tabelle 6.12: Laufzeit [s] des Konsistenzcheck durch numerische Ungleichungen im DBMS Zeit [s] Test mit numerischen Ungleichungen nach 1/25/50/100 Manipulationen 3 2 1 0 P1a P2a P3a P4a P5a Abbildung 6.11: Laufzeit des Konsistenzcheck durch numerische Ungleichungen im DBMS Projektname P1a P2a P3a P4a P5a Anzahl der Änderungen 1 25 50 100 0,2 0,6 1,6 3,3 0,2 0,6 1,8 5,2 0,2 0,7 2,8 12,2 0,3 0,8 3,6 15,8 0,4 1,4 4,7 23,7 Tabelle 6.13: Laufzeit [s] des Konsistenzcheck mit Bellman-Ford im DBMS bei Änderung der Objektdauer Inv.-Nr.: 2005-05-23/052/IN98/2254 6.6. UMSETZUNG IM DBMS Projektname P1a P2a P3a P4a P5a 99 Anzahl der Änderungen 1 25 50 100 0,2 0,3 0,4 0,5 0,3 0,3 0,6 0,8 0,3 0,5 0,8 1,4 0,4 0,7 1,1 2,0 0,6 1,1 1,6 2,8 Tabelle 6.14: Laufzeit [s] des Konsistenzcheck durch numerische Ungleichungen im DBMS bei Änderung der Objektdauer 6.6.3 Zusammenfassung Eine Integration der effizienten Konsistenzprüfung in ein DBMS ist möglich. Durch Verwendung der optimierten Methoden können auch größere Projekte in einer praktikablen Zeit überprüft werden. Neben der Verknüpfungsstruktur der Projekte hat auch die Qualität der Netzwerkanbindung einen direkten Einfluss auf die Laufzeit. Inv.-Nr.: 2005-05-23/052/IN98/2254 100 KAPITEL 6. EVALUIERUNG Inv.-Nr.: 2005-05-23/052/IN98/2254 Kapitel 7 Zusammenfassung und Ausblick 7.1 Zusammenfassung Das Ziel der vorliegenden Arbeit besteht darin, auf effizientem Wege Ausgabebedingungen in einem Multimedia-Datenbanksystem auf Konsistenz zu überprüfen. Die Bedingungen können für Medienobjekte mittels Allen-Relationen und Angabe zusätzlicher Parameter definiert werden. Durch anschließende Transformation der Relationen in Difference Constraints und in einen Constraint Graphen können die Bedingungen mit den Algorithmus von Bellman und Ford auf Konsistenz überprüft werden. Durch die expotentielle Laufzeit des Algorithmus ist ein Konsistenzcheck und die Berechnung eines Ausgebeschedule bei größeren Projekten nicht praktikabel. Eine Überprüfung in einem Multimedia-Datenbanksystem war bisher nicht möglich, da heutige DBMS keine speziellen Methoden zur Integritätssicherung von Ausgabebedingungen zur Verfügung stellen. Durch Einschränkung der Verknüpfungsmöglichkeiten der Medienobjekte wurden in dieser Arbeit Algorithmen entwickelt, die eine sehr effiziente Überprüfung der Bedingungen ermöglichen. Der Test eines Teilgraphen bei Einschränkungen in der Graphstruktur ist hinreichend für die Konsistenz des gesamten Projektes. Neben der Möglichkeit der Konsistenzprüfung durch den Algorithmus von Bellman und Ford ist eine Überprüfung durch Auswerten von numerischen Ungleichungen realisierbar. Des Weiteren wurde eine Methode vorgestellt, die eine effiziente Berechnung des Ausgabeschedule erlaubt. Trotz Einschränkungen der Verknüpfungsstruktur können komplexe Projekte beschrieben werden. So auch Audioszenen, die anschließend mittels Wellenfeldsynthese ausgegeben werden sollen. Die Implementierung der Konsistenzprüfung in einem Multimedia-Datenbanksystem hat gezeigt, dass Ausgabebedingungen in der Datenbank gespeichert und sehr effektiv überprüft werden können. Die Qualität der Netzwerkanbindung hat dabei direkten Einfluss auf die Laufzeit. Alle vorgestellten Algorithmen und Methoden sind auch bei umfangreichen Projekten praktikabel und erlauben eine effiziente Verwaltung einer großen Anzahl von Medienobjekten und Allen-Relationen. Das Ziel der Aufgabenstellung wurde erreicht. Inv.-Nr.: 2005-05-23/052/IN98/2254 102 7.2 KAPITEL 7. ZUSAMMENFASSUNG UND AUSBLICK Ausblick Die in Abschnitt 3.7 vorgestellte Realisierung des Konsistenzcheck durch aufgeschobene Trigger konnte nicht implementiert werden. Das verwendete DBMS der Firma Oracle unterstützt das Konzept der verschobenen Ausführung nur bei herkömmlichen Constraints aber nicht bei Triggern. Aus diesem Grund musste ein Workarround über eine temporäre Tabelle geschaffen werden. Die Verwendung von deferred Trigger kann weitere Laufzeitvorteile bringen und empfiehlt sich für weitere Untersuchungen. Das objekt-relationale DBMS PostgreSQL der Berkley Universität z. B. unterstützt das Konzept der aufgeschobenen Trigger. Des Weiteren kann die Möglichkeit der automatisch generierten Trigger bzw. Constraints und Überprüfung der Konsistenz durch numerische Ungleichungen (Abschnitt 4.3) auf ihren praktischen Gebrauchswert untersucht werden. Auch hier sind geringere Laufzeit zu erwarten, da keine gespeicherte Java-Prozedur gestartet werden muss. Weitere Laufzeitoptimierungen sind durch Verwendung von Heuristiken gegeben. Da nur eine definierte Menge von Allen-Relationen verwendet wird, lassen sich z. B. für jede Relation spezielle Ungleichungen formulieren, die für die Konsistenz hinreichend sind (vgl. Abschnitt 4.1). Die Identifizierung einzelner potentieller negativer Zyklen ist dadurch nicht erforderlich, weil sie durch die Ungleichungen schon gegeben sind. Ein nächster Schritt wäre die Implementierung der Methoden unter Verwendung von realen Medienobjekten. Dabei stellt sich die Frage, ob der Datendurchsatz der Datenbank für einzelne Anwendungsgebiete ausreichend ist. Besonders Videos haben eine hohe Bitrate und benötigen performante Systeme. Aber auch bei der gleichzeitigen Ausgabe von sehr vielen Audiodateien kann der physikalisch begrenzte Datendurchsatz eines DBMS ein beschränkender Faktor sein. Neben zeitlichen Bedingungen, die ausschließlich in dieser Arbeit betrachtet wurden, lassen sich auch räumliche oder räumlich-zeitliche Zusammenhänge zwischen Medienobjekten definieren. In [He04] werden räumliche Constraints für die Lage eines Objektes im Präsentationsraum genannt. Die Überprüfung erfolgt analog zu den zeitlichen Bedingungen über Difference Constraints bzw. einen Constraint Graph. Die X- und Y-Koordinaten der jeweiligen Punkte werden durch einen Constraint Graph repräsentiert und gesondert auf Konsistenz geprüft. Bei der Beschreibung von Bewegungen bzw. räumlich-zeitlicher Zusammenhänge ist der Aufwand größer. Zur Modellierung muss für jeden Zeitpunkt ein Graph für die X- bzw. die Y-Koordinaten anlegt werden. Abhängig von der Genauigkeit der Zeitschritte ist der Aufwand entsprechend groß. Bei 25 Einzelschritten pro Sekunde beläuft sich die Anzahl der Graphen bei 1 min Gesamtdauer bereits auf 1500. Durch die Möglichkeit der effizienten Überprüfung von Ausgabebedingungen werden sich in Zukunft weitere Anwendungsgebiete erschliessen. Inv.-Nr.: 2005-05-23/052/IN98/2254 Anhang A Erweiterte Allen-Relationen A.1 Übersicht der Relationen Name duration meets f inishes equals bef ore bef orev overlaps overlapsvs overlapsve overlapsvse during duringvs duringve duringvse A.2 Syntax A duration(tA ) A meets B A f inishes B A equals B A bef ore B A bef orev (c1 ,c2 ) B A overlaps(c1 ,c2 ) B A overlapsvs (c1 , l, c2 ) B A overlapsve (c1 , c2 , m) B A overlapsvse (c1 , l, c2 , m) B A during(c1 , c2 ) B A duringvs (c1 , l, c2 ) B A duringve (c1 , c2 , m) B A duringvse (c1 , l, c2 , m) B Numerische Bedingungen der Relationen Relation equals: |tA | = |tB | . Relation f inishes: |tB | − 1 ≥ |tA | (M aximum), |tA | + 1 ≤ |tB | (M inimum). Inv.-Nr.: 2005-05-23/052/IN98/2254 104 ANHANG A. ERWEITERTE ALLEN-RELATIONEN Relation overlaps(c1 ,c2 ): c1 + 1 ≤ |tA | (M inimum), c2 + 1 ≤ |tB | (M inimum). Relation overlapsvs (c1 , l, c2 ): c1 + 1 ≤ |tA | (M inimum), |tB | + c1 + l − c2 ≥ |tA | (M aximum), c2 + 1 ≤ |tB | (M inimum), |tA | − c1 − l + c2 ≤ |tB | (M inimum). Relation overlapsve (c1 , c2 , m): c1 + 1 ≤ |tA | (M inimum), |tB | + c1 − c2 − m ≤ |tA | (M inimum), c2 + 1 ≤ |tB | (M inimum), |tA | − c1 + c2 + m ≥ |tB | (M aximum). Relation overlapsvse (c1 , l, c2 , m): c1 + 1 ≤ |tA | (M inimum), |tB | + c1 − c2 − m ≤ |tA | (M inimum), |tB | + c1 + l − c2 ≥ |tA | (M aximum), c2 + 1 ≤ |tB | (M inimum), |tA | − c1 − l + c2 ≤ |tB | (M inimum), |tA | − c1 + c2 + m ≥ |tB | (M aximum). Relation during(c1 , c2 ): |tB | − c1 − c2 ≥ |tA | (M aximum), |tA | + c1 + c2 ≤ |tB | (M inimum). Inv.-Nr.: 2005-05-23/052/IN98/2254 A.2. NUMERISCHE BEDINGUNGEN DER RELATIONEN Relation duringvs (c1 , l, c2 ): |tB | − c1 − c2 ≥ |tA | (M aximum), |tA | + c1 + c2 ≤ |tB | (M inimum). Relation duringve (c1 , c2 , m): |tB | − c1 − c2 ≥ |tA | (M aximum), |tA | + c1 + c2 ≤ |tB | (M inimum). Relation duringvse (c1 , l, c2 , m): |tB | − c1 − c2 ≥ |tA | (M aximum), |tA | + c1 + c2 ≤ |tB | (M inimum). Inv.-Nr.: 2005-05-23/052/IN98/2254 105 106 ANHANG A. ERWEITERTE ALLEN-RELATIONEN Inv.-Nr.: 2005-05-23/052/IN98/2254 Literaturverzeichnis [ABH97] Apers, P. M. G. ; Blanken, M. H. ; Houtsma, M. A. W.: Multimedia databases in perspective.. Springer, London, 1997. [Al83] Allen, J. F.: Maintaining Knowledge about Temporal Intervals. Communications of the ACM 26. Nr. 11, S. 832 - 843, 1983. [Be59] Bellman, R. E.: On a Routing Problem. Quart. Appl. Math.. Nr. 16, S. 87 - 90, 1958. [Br94] Brandstädt, A.: Graphen und Algorithmen. B. G. Teubner, Stuttgart, 1994. [BS02] Bonazzi, E.; Stokol, G.: Oracle und Java. Markt + Technik, München, 2002. [BV94] Boone, M.; Verheijen, E.: The Wave Field Synthesis Concept Applied to Sound Reproduction. AES Con Convention Paper presented at the 96th AES Convention Februar 1994, Amsterdam, 1994. [CLS00] Candan, K. S.; Lamar, E.; Subrahmanian, V. S.: View management in multimedia databases. The VLDB Journal 9. Nr. 2, S. 131 - 153, 2000. [CPS96] Candan, K.; Prabhakaran, B.; Subrahmanian, V.S.: CHIMP: A Framework for Supporting Distributed Multimedia Document Authoring and Presentation. Proceedings of the ACM Multimedia. S. 329 - 339, 1996. [DG00] Dittrich, K. R; Gatziu, S.: Aktive Datenbanksysteme. dpunkt Verlag, Heidelberg, 2000. [Di59] Dijkstra, E. W.; A node on two problems in connexion with graphs, Numerische Mathematik 1. S. 269 - 271, 1959. [DK95] Duda, A.; Keramane, C.: Structured Temporal Composition of Multimedia Data. Proceedings of the International Workshop on MultiMedia Database Management Systems (IW-MMDBMS). S. 136 - 142, 1995. [FG04] Fraunhofer-Gesellschaft: IOSONO - Wellenfeldsynthese-System. 2004. http://www.iosono-sound.de/ (abgerufen am 12.05.2005) [FI04a] Fraunhofer-Institut für Digitale Medientechnologie IDMT: IOSONO. 2004. http://www.idmt.fraunhofer.de/projekte themen/index.htm?iosono (abgerufen am 15.05.2005) Inv.-Nr.: 2005-05-23/052/IN98/2254 108 LITERATURVERZEICHNIS [GS26] Geiger, H.; Scheel, K.: Handbuch der Physik, Band VIII. Verlag Julius Springer, Berlin, 1926. [Ha04] Hartung, M.: Transformation einer XML-Struktur (Allen - Relationen) für Ausgabebedingungen in einen Constraint Graph. Ilmenau, 2004. [He04] Heimrich, T.: Modeling and Checking of Output Constraints in Multimedia Database Systems. Ilmenau, 2004. [HL01] Hunter, J.; Little, S.: Building and Indexing a Distributed Multimedia Presentation Archive Using SMIL. Solvberg, P. Constantopoulos, ECDL 2001, LNCS 2163. S. 415 - 428, Springer-Verlag, Heidelberg, 2001. [HSRG04] Heimrich, T.; Sattler, K.; Reichelt, K.; Gatzsche, G.: Verwaltung spatio-temporaler Audiodaten für die Wellenfeldsynthese. Ilmenau, 2004. [HSS03] Heuer, A.; Saake, G.; Sattler, K.: Datenbanken kompakt. mitp-Verlag, Bonn, 2003. [HS00] Heuer, A.; Saake, G.: Datenbanken: Konzepte und Sprachen. S. 498 502, mitp-Verlag, Bonn, 2000. [KB95] Khoshafian, S.; Baker, A. B.: Multimedia and Imaging Databases. Morgan Kaufmann Publishers, San Francisco, CA, 1995. [KE01] Kemper, A.; Eickler, A.: Datenbanksysteme. Oldenbourg, München, 2001. [Lex89] Lexikon, dtv Brockhaus Lexikon Band 12. F.A. Brockhaus GmbH Deutscher Taschenbuch Verlag GmbH & Co. KG, München, 1989. [Lex91] Lexikon, Brockhausenzyklopädie. F.A. Brockhaus GmbH, Mannheim, 1991. [Lex92] Lexikon, CBT- / Multimedia Lexikon. CBT Verlag, München, 1992. [Mi05] Michel, T.: W3C Synchronized Multimedia Home page. W3C, 2003, http://www.w3.org/AudioVideo/ (abgerufen am 28.04.2005) [Ra04] Ramm, S.: Konzeption einer Präsentationsbeschreibung für Multimedia - Datenbanken. Ilmenau, 2004. [Roi98] Roisin, C.: Authoring Structured Multimedia Documents. Rovan, Branislav: SOFSEM ’98, LNCS 1521. S. 222 - 239, Springer-Verlag, Heidelberg, 1998. [TWR02] Theile, G.; Wittek, H.; Reisinger, M.: Wellenfeldsynthese-Verfahren: Ein Weg für neue Möglichkeiten der räumlichen Tongestaltung. Institut für Rundfunktechnik GmbH, München, 2002. Inv.-Nr.: 2005-05-23/052/IN98/2254 Thesen 1. Ausgabebedingungen für Medienobjekte lassen sich mittels Allen-Relationen und der Angabe von zusätzlichen Paramentern definieren. Durch Transformation der Allen-Relationen in Difference Constraint können diese auf Konsistenz geprüft werden. Gegenwärtig existierende Konzepte sind bei einer großen Anzahl von Bedingungen für den praktischen Einsatz nicht geeignet. 2. Entspricht die Anordnung der mit Allen-Relationen verknüpften Ausgabeobjekte einer Baumstruktur, ist eine sehr effiziente Konsistenzüberprüfung der generierten Menge an Difference Constraints durch die vorgestellten Algorithmen auch bei großen Projekten möglich. 3. Als Difference Constraints formulierte Ausgabebedingungen können in einen Constraint Graph transformiert werden. Die Bestimmung aller kürzesten Pfade von einem definierten Startknoten zu jeden anderen Knoten im Graphen kann durch den Algorithmus von Bellman-Ford effizient erfolgen. 4. Wurden alle kürzesten Pfade im Graphen berechnet und entspricht die Anordnung der mit Allen-Relationen verknüpften Ausgabeobjekte einer Baumstruktur, lassen sich bei Änderung von Bedingungen oder Objektdauer die neuen kürzesten Pfade und somit die Ausgabezeiten effizient berechnen. 5. Die effiziente Konsistenzprüfung und die Berechnung der Ausgabezeiten können in einem Multimedia-Datenbankmanagementsystem implementiert werden und haben auch bei großen Projekten eine akzeptable Laufzeit. Ilmenau, den 20.05.2005 Thomas Schröder Inv.-Nr.: 2005-05-23/052/IN98/2254 Eidesstattliche Erklärung Hiermit erkläre ich an Eides statt, diese Diplomarbeit eigenhändig und selbständig verfasst, keine anderen als die angegebenen Hilfsmittel oder Quellen verwendet und direkt oder indirekt übernommene Gedanken als solche gekennzeichnet zu haben. Diese Arbeit wurde bisher in dieser oder ähnlicher Form keiner anderen Prüfungsbehörde vorgelegt oder anderweitig veröffentlicht. Ilmenau, den 20.05.2005 Thomas Schröder Inv.-Nr.: 2005-05-23/052/IN98/2254