Events in aktiven objektorientierten/ objektrelationalen Datenbanken Lehrstuhl für Datenbanken und Informationssysteme Seminar „Aktive Datenbanken“ SS2007 Vortrag von Katharina Keitsch Übersicht 1. Objektorientierung in Datenbanken 1.1 Objektorientierte DB 1.2 Objektrelationale DB 1.3 Aktive Datenbanken 2. AMOS – ein objektrelationales aktives DBMS 2.1 2.2 2.3 2.4 2.5 2.6 2.7 3. 4. AMOS – Datenmodell AMOS – Regelsprache Beispiel Eventspezifikationssprache Event-Überwachung Regelausführungsalgorithmus Ausblick Zusammenfassung Literatur 1. Objektorientierung in Datenbanken • Verwaltung immer komplexerer Daten in Datenbanken -> bringen RDB-Modelle an ihre Grenzen • Entwicklung objektorientierter Datenbankssysteme aus zwei Richtungen: – (semantische) Datenbanksysteme – Objektorientierte Programmiersprachen 1.1 Objektorientierte DB • Zentrales Element der OODB: Objekt • Objekte werden als Instanzen einer Klasse erzeugt • In einer Klasse werden Attribute und Methoden der Objekte festgelegt • Um die Wiederverwendbarkeit von Code zu unterstützen, sind Klassen in Klassenhierarchien organisiert • zusätzlich semantischer Kontext, da nicht nur Attribute, sondern auch Beziehungen Teil eines Objekts sind 1.2 Objektrelationale DB • Vorteile von relationalen und objektorientierten Datenbanken vereinigt – Daten im herkömmlichen relationalen Modell gespeichert – in den in der DB gespeicherten Prozeduren und Funktionen werden objektorientierte Techniken zugelassen • Beispiel: PostgreSQL Version 8.0 1.2 Objektrelationale DB • Wesentliche objektrelationale Konzepte: – – – – – – – Typkonstruktoren Benutzerdefinierte Datentypen Typhierarchien Methoden Objektidentifikatoren und Referenzen Benutzerdefinierte Ordnungen Erweiterte Tupeltabellen, Typisierte Tabellen (bzw. Objekttabellen) – Tabellenhierarchien – Typisierte Sichten bzw. Objektsichten – Sichtenhierarchien 1.3 Aktive Datenbanksysteme • ECA-Regeln • Andere Variationen von active rules: – EA-rule – CA-rule • Events sind die wichtigsten Elemente in einem ADBMS • Stärke eines ADBS bestimmt sich aus: – Auf wieviele unterschiedliche Ereignisse kann reagiert werden – Effizienz der Bedingungsauswertung – Art von Aktionen 2. AMOS – ein objektrelationales aktives DBMS • AMOS: Active Mediators Object System -> Vermittelnde Schicht zwischen Datenquellen und Anwendungen • Ausgangspunkt: OODBMS-Prototyp WS-IRIS – – • Vier Arten von Mediatoren: – – – – • Fahl, Risch, Sköld: nur CA-Regeln S.A. Machani: ECA-Regeln und Event Specification Language Integrators Monitors Models Domain Models Locators OR-Abfragesprache: AMOSQL 2. AMOS – ein objektrelationales aktives DBMS Application Application Domain model Application Domain model AMOS Integrator Data Source Data Source Monitor Data Source Integrator Data Source Data Source 2.1 AMOS - Datenmodell • Iris-Datenmodell: 3 grundlegende Konstrukte – Objekte, Typen und Funktionen • AMOS: Einführung von Regeln • Funktionen in AMOS: gespeichert, abgeleitet oder fremd 2.2 AMOS - Regelsprache • Syntax der Regeldefinition: create rule rule_name parameter_specification As [For_each_clause] [On event_specification] [When predicate_expression] Do procedure_expression • ECA-Regel • andere: EA-Regeln, CA-Regeln 2.2 AMOS - Regelsprache • Löschen von Regeln delete rule rule_name • Aktivierung/ Deaktivierung von Regeln activate rule rule_name parameter-list [priority 0|1|2|3|4|5] deactivate rule rule_name parameter-list 2.3 Beispiel • Beispiel Adresse (Strasse, PLZ, Ort) Abteilung (Name, Adresse, Abteilungsleiter) Angestellter (Name, Adresse, Abteilung, Einkommen, Steuern, Bruttoeinkommen, Nettoeinkommen) Abteilungsleiter (Name, Adresse, Abteilung, Einkommen, Steuern, Bonus, Bruttoeinkommen, Nettoeinkommen) 2.3 Beispiel create type AdresseTyp properties (strasse charstring, plz charstring, ort charstring); create type AbteilungTyp properties (name charstring, adresse AdresseTyp); create type AngestellterTyp properties (einkommen number, steuern number); create type AbteilungsleiterTyp subtype of AngestellterTyp; 2.3 Beispiel create function name (AngestellterTyp) -> bag of charstring as stored; create function adresse (AngestellterTyp) -> bag of AdresseTyp as stored; create function abteilung (AngestellterTyp) -> bag of AbteilungTyp as stored; create function bonus (ManagerTyp) -> integer as stored; create function abteilungsleiter (AbteilungTyp) -> AbteilungsleiterTyp as stored; 2.3 Beispiel create function brutto (AngestellterTyp a) -> number as select einkommen(a); create function brutto (AbteilungsleiterTyp m) -> number as select einkommen(m) + bonus(m); create function netto (AngestellterTyp a) -> number as select AngestellterTyp.brutto->number(a) * steuern(a); create function netto (AbteilungsleiterTyp m) -> number as select brutto(m) * steuern(m); create function abteilungsleiter (AngestellterTyp a) -> AbteilungsleiterTyp as select abteilungsleiter(abteilung(a)); 2.4 Eventspezifikationssprache • In AMOS werden nur Datenänderungsevents unterstützt: – Erstellen/ Löschen von Objekten – Einfügen/Löschen eines Wertes in eine Funktion mit Multimenge – Aktualisierungen von Funktionen – Ausführung von Regelaktionen 2.4 Eventspezifikationssprache • Einfache Events – – – – – updated added removed created Deleted • Beispiele updated(einkommen(a)) added(adresse(a)) created(e) 2.4 Eventspezifikationssprache • Zusammengesetzte Events – Kombination von einfachen oder zusammengesetzten Events durch logische Operatoren – Disjunktion E1 OR E2 – Konjunktion E1 AND E2 • Beispiel: updated(einkommen(a)) OR updated(steuern(a)) 2.4 Eventspezifikationssprache • Condition Specification – AMOSQL – Abfrage – Kann boolsche Ausdrücke beinhalten – Condition erfüllt, wenn die Abfrage nicht leer ist • Action Specification – AMOSQL-Anweisungen – Mengenorientierte Ausführung wird unterstützt 2.5 Event-Überwachung • Delta-Relationen (Δ-sets) – Delta-set einer gespeicherten oder abgeleiteten Funktion R: ΔR= <R_added,R_removed,R_updated> – Änderungen einer gespeicherten Funktion R werden sofort während der Transaktion in R_added, R_removed oder R_updated gespeichert – Netto-Effekt wird sofort berücksichtigt! 2.5 Event-Überwachung • Beispiel: create AbteilungTyp(name) instances :spiel(„Spielwaren“); create AbteilungTyp(name) instances :schuhe(„Schuhabteilung“); create AbteilungTyp(name) instances :kleidung(„Bekleidung “); create AngestellterTyp(name,abteilung) instances :a1(„Angestellter1“,:spiel); set abteilung(:spiel) = :schuhe; -> Inhalt von abteilung_updated ist <t1, :a1, :schuhe, :spiel> 2.5 Event-Überwachung • Abgeleitete Funktionen – Nicht aktualisierbar – Veränderungen abgeleiteter Funktionen werden durch Berücksichtigung von Änderungen der zugrunde liegenden gespeicherten Funktionen berechnet – Materialisierung abgeleiteter Funktionen – Abhängigkeitsnetzwerk von Delta-Relationen 2.5 Event-Überwachung ΔAngestTyp.netto->number ΔAngestTyp.brutto->number ΔAngestTyp.einkommen->number ΔAngestTyp.bonus->number ΔAngestTyp.steuern->number 2.5 Event-Überwachung • Event Funktionen – für jedes spezifizierte Event einer Regel wird Event-Funktion generiert – Ausdruck von Delta-Relationen – Stehen an der Spitze der Abhängigkeitsnetzwerke – Änderungen werden durch das Abhängigkeitsnetzwerk nach oben durchgereicht und die Event-Funktion daraus abgeleitet • Condition-/Action-Funktionen 2.5 Event-Überwachung ΔEvent-function ΔAngestTyp.netto->number ΔAngestTyp.brutto->number ΔAngestTyp.einkommen->number ΔAngestTyp.bonus->number ΔAngestTyp.steuern->number 2.6 Ausführung von Regeln 1. Events entdecken 2. Betreffende Regeln markieren 3. Regel mit der höchsten Priorität auswählen 4. Condition der Regel auswerten 5. Reagieren 6. Wiederholung Schritte 1-5 bis keine weiteren Regeln mehr in der Warteschlange sind und keine weiteren Events ausgelöst wurden 2.7 Ausblick • Zeitevents • Aktualisierbarkeit fremder Funktionen • Erweiterung der Eventalgebra um Negation und andere Operatoren 3. Zusammenfassung • RDBMS und OODBMS basieren auf unterschiedlichen Konzepten • Objektrelationale Datenbanken -> Vorteile beider Ansätze • Aktive DB -> Integration von ECA-Regeln • AMOS: – Unterstützte Events: Änderungen von Daten – Eventdetektion: Funktionsüberwachung und Speicherung der Änderungen in Delta-Relationen 4. Literatur • [FRS93]: Fahl, G.; Risch, T.; Sköld, M.: AMOS – An Architecture for Active Mediators, NGITS’93, Haifa, Israel, June 1993 • [Gei05]: Geisler, F.: Datenbanken – Grundlagen und Design. mitp-Verlag/Bonn, 2005 • [Heu97]: Heuer, A.: Objektorientierte Datenbanken – Konzepte, Modelle, Standards und Systeme. 2.,aktualisierte und erweiterte Auflage, Addison-Wesley Verlag, 1997 • [Mac96]: Machani, S.-E.: Events in an Active ObjectRelational Database System. 1996 • [SM96]: Stonebraker, M.; Moore, D.: Object-Relational DBMSs – The Next Great Wave. Morgan Kaufmann Publishers, San Francisco, CA 1996. • [TS06]: Türker, C.; Saake,G.: Objektrelationale Datenbanken – Ein Lehrbuch. dpunkt.verlag, 2006 Vielen Dank für die Aufmerksamkeit! Fragen?