Abb. 1 Komponenten und Datenflüsse in Data Warehouse-Umgebungen

Data Warehouse
Datenbankabfrage, siehe SQL2-Norm und SQL3-Projekt
Datenbanken, deduktive
Datenbanken, Versionsunterstützung in
Datenbanken, Remote Database Access
Datenbanken in der Bioinformatik
Datenbankentwurf, objektorientierter
Datenbanksysteme, objektrelationale
Datenbanksysteme, Archivierung in
Datenbanktabellen, Partionierung in
Datenströme
Deduktive Datenbanken
Digitale Wasserzeichen
Drahtlose Sensoren
Data Warehouse |
ErläuterungBesonders heftig wird derzeit im Umfeld der Management Support Systeme über das Thema Data Warehouse diskutiert. Dabei ist unter einem Data Warehouse eine Systemlösung zu verstehen, die die unternehmensweite Versorgung der Front-End-Systeme zur Managementunterstützung mit den benötigten Informationen zu gewährleisten hat [7]. Zweckmäßigerweise wird das Data Warehouse getrennt von den operativen Vorsystemen aufgebaut und betrieben. Nur so läßt sich eine konsistente unternehmensweite Datenbasis etablieren, in die selektierte und verdichtete Informationen anwendungsgerecht aufbereitet einfließen und auf die interaktiv und intuitiv zugegriffen werden kann. Für die gespeicherten Dateninhalte ist deren thematische Ausrichtung sowie Vereinheitlichung, Dauerhaftigkeit und Zeitorientierung charakteristisch [4]. Unternehmensweite Data Warehouse-Lösungen weisen unterschiedliche (Software-) Komponenten auf, deren reibungsloses Zusammenwirken als ein zentrales Erfolgskriterium zu werten ist. In Abb. 1 wird die logische Anordnung der einzelnen Komponenten unter Architekturgesichtspunkten versinnbildlicht. |
Abb. 1 Komponenten und Datenflüsse in Data Warehouse-Umgebungen
|
Als Kernkomponente einer Data Warehouse-Architektur ist der zentrale Datenspeicher zu verstehen, der heute i.d.R. durch eine relationale Datenbank gebildet wird. Verschiedene funktionale Erweiterungen der marktgängigen relationalen Datenbanken (so z.B. spezielle Indizierungsverfahren [Bit-Indexing] oder Abfragetechniken [Star-Joins]) tragen dazu bei, daß die spezifischen Anforderungen, die aus den Managementapplikationen erwachsen, auch bei großen Datenmengen erfüllt werden können [1, 3]. Zugunsten der erforderlichen Zugriffsperformance wird darüber hinaus häufig auf eine konsequente Normalisierung wie bei operativen Systemen üblich verzichtet. Vielmehr erfolgt der Aufbau denormalisierter Datenmodelle, die als Star-Schema bezeichnet werden und aus Fakten- und Dimensionstabellen bestehen [3, 9]. Die Faktentabellen beinhalten die betriebswirtschaftlich relevanten und durch mehrere sachliche Identifikationskriterien bzw. Dimensionen (wie Region, Kunde oder Artikel) beschriebenen numerischen Meßgrößen. Dagegen speichern Dimensionstabellen, die mindestens eine Attributspalte mit den zugehörigen Faktentabellen teilen, weitere Angaben zu den Dimensionselementen (wie Artikelnummer, Artikelbezeichnung oder Artikelgruppe). Im Fact-Constellation-Schema und im Snowflake-Schema, die als Varianten des Star-Schemas zu bezeichnen sind, wird eine Aufgliederung von Fakten- und Dimensionstabellen in unterschiedliche Teilaggregate vorgenommen, um hieraus weitere Performancevorteile zu aktivieren und unnötige Redundanzen zu eliminieren [8]. Ein hoher Anteil des Aufwandes beim Aufbau eines Data Warehouses resultiert aus der Etablierung von Zugriffsstrategien auf die operativen Datenhaltungseinrichtungen. Die hier eingesetzten Import-Komponenten leisten automatische, zeitgesteuerte Aktualisierungen der Data Warehouse-Datenbasis in belastungsarmen Zeiten und führen dabei vielfältige Transformationen und Aufbereitungen der einzubindenden Daten durch. Insbesondere beim interaktiven Zugriff auf die Datenbasis kann sich ein unternehmensweites Data Warehouse als zu unflexibel und schwerfällig erweisen, um den Anforderungen der Anwender zu genügen. Aus diesem Grunde werden häufig funktionsbereichs- oder personengruppenspezifische Extrakte aus dieser Datenbasis entnommen und als Data Marts separat gespeichert. Hierbei kommen oftmals sogenannte OLAP (On-Line Analytical Processing)-Server bzw. -Engines zum Einsatz [5]. Derartige OLAP-Werkzeuge sind speziell auf die Analyse multidimensionaler Datenbestände ausgelegt, da sich die multidimensionale Aufgliederung betriebswirtschaftlicher Kennzahlen als geeignete Sichtweise für das Management erwiesen hat. Dagegen sind die angeschlossenen Front-End-Werkzeuge auf den Desktop-Rechnern wie z.B. Abfrage- und Berichtsgeneratoren oder Tabellenkalkulationsprogramme keine Bestandteile des Data Warehouses im eigentlichen Sinne, zumal sie durch die Nutzung offener Schnittstellen austauschbar bleiben sollen. In der Praxis ist allerdings häufig zur Gewährleistung bestmöglicher Performance eine enge technologische Verzahnung von Endbenutzer-Tools und Datenspeichern auszumachen. Zukünftig werden möglicherweise neue Werkzeuge die beschriebenen Komponenten erweitern bzw. ergänzen. So ist im Zuge der weltweiten Vernetzung (Internet) eine zunehmende Einbindung externer On-Line-Informationsquellen bei der Informationsversorgung des Managements zu erwarten [2]. Die Nutzbarmachung der hier gebräuchlichen Netzwerktechnologien, Zugangstechniken und Benutzungsoberflächen für den unternehmensinternen Bereich wird bereits unter dem Stichwort Intranet gehandelt. Intelligente Agenten sollen so die Versprechen von Produktanbietern von Data Mining-Tools in Zukunft selbständig nach interessanten Datenmustern schürfen und bislang unerkannte Strukturen und Zusammenhänge aufdecken [6]. |
|
Deduktive Datenbanken |
Versionsunterstützung in Datenbanken |
ErläuterungDie Aufgabe eines Datenbanksystems ist es, Informationen über einen (für den Benutzer des Datenbanksystems) relevanten Ausschnitt der realen Welt zu speichern. Heutige Datenbanksysteme beschreiben genau einen Zustand dieser Informationen. Änderungen in der realen Welt führen zu Änderungen in der Datenbank, die Informationen über den alten Datenbank-Zustand werden vergessen. Lediglich für die Implementierung bestimmter Funktionalitäten werden alte Zustände in Log-Files aufgehoben, etwa für Recovery-Zwecke oder zur Erhöhung der Parallelität zwischen Schreib- und Lesetransaktionen. Dagegen gibt es auf der Datenmodell-Ebene in der Regel keine Möglichkeit, mehrere Zustände eines Datenbankobjektes zu verwalten. Mindestens zwei Anwendungsbereiche erfordern jedoch die Darstellung mehrerer Datenbank-Zustände:
Aus diesem Grunde wurden und werden in verschiedenen Forschungsarbeiten und Prototyp-Implementierungen Konzepte entwickelt und erprobt, um mehrere Versionen von Datenbank-Objekten verwalten zu können. Dabei zeigte sich, daß die verschiedenen Anwendungen recht unterschiedliche Anforderungen an das Versions-Management stellen, so daß eine Reihe von Konzepten zur Versions-Verwaltung entstanden. Versionen zur Modellierung des ZeitbegriffsDas Festhalten alter Zustände und die Zuordnung von Operationen zu bestimmten Zeitpunkten (etwa bei Buchungsvorgängen) ist ein wichtiges Problem, das auch in konventionellen Datenbank-Anwendungen auftritt. Üblicherweise werden in heutigen Realisierungen bei der Nutzung herkömmlicher Datenbanken den Objekten spezielle Zeitattribute hinzugefügt. Um ihre korrekte Benutzung zu gewährleisten, dürfen diese Attribute nur durch spezielle Anwendungsprogramme manipuliert werden. In zeitorientierten Datenbanken geht es darum, die Semantik dieser Zeitattribute dem Datenbanksystem bekannt zu machen. Das Ziel besteht darin, die Geschichte von Objekten darzustellen, d.h. jedem Zeitpunkt einen bestimmten Zustand des Objektes zuzuordnen. Zeit ist eine Größe, die sich kontinuierlich verändert. In Datenbanken können dagegen nur diskrete Zustände von Objekten gespeichert werden. Im allgemeinen geht man jedoch davon aus, daß zwischen zwei Änderungen der Wert eines Objektes gleich bleibt (zustandserhaltende Geschichte, andere Geschichtsarten sind in [5] dargestellt. Daher führt jede Änderungsoperation zur Erzeugung einer neuen zeitbehafteten Version aller betroffenen Objekte. Das Ergebnis einer Frage nach dem Objektzustand eines Objektes o zum Zeitpunkt t ist dann die jüngste Version, deren Zeitmarke älter als t ist. Eine Zeitangabe in einer zeitbezogenen Datenbank kann mehrere Bedeutungen haben: Es kann der Zeitpunkt gemeint sein, zu der eine Version in die Datenbank eingespeichert wurde (Aufzeichnungszeit, physical time, transaction time), oder aber der Zeitpunkt, ab dem ein bestimmter Zustand in der Realität wirksam wird (Gültigkeitszeit, logical time, valid time). Weitere Bedeutungen von Zeitangaben sind denkbar. Snodgrass [7] klassifiziert zeitorientierte Datenbanken gemäß den Zeitbegriffen, die sie unterstützen:
Zur Zeit beschäftigen sich mehr als zwanzig Forschungsgruppen mit der Darstellung des Zeitbegriffes in Datenbanken, eine Übersicht über eine Vielzahl dieser Projekte wird in [6] gegeben. Ausführliche Literaturhinweise finden sich z.B. in [4] und in [7]. Versionen zur Unterstützung konstruktiver Tätigkeiten
In herkömmlichen Anwendungen enthält die Datenbank ein Abbild der Realwelt. Wird sie dagegen zur Unterstützung von kreativen Prozessen eingesetzt, etwa im CAD/CAM, im Software Engineering oder im Bürobereich, so beinhaltet sie Vorbilder für später zu konstruierende Realwelt-Objekte oder sie enthält diese Objekte selbst (etwa Briefe im Bürobereich, Programme bei Software Engineering). Außerdem enthält die Datenbank nicht nur die fertigen" Objekte, sondern sie wird gerade für die Abspeicherung der Daten genutzt, die auf dem Weg zum fertigen Produkt anfallen. Um diese Zwischenversionen zu verwalten, müssen neben der linearen Anordnung der Versionen entlang der Zeitachse(n) weitere Strukturen zur Organisation der Versionsmenge eingesetzt werden.
Die verschiedenen Anwendungen in diesem Bereich haben ihre spezifischen Anforderungen an die Versionsverwaltung. Dies spiegelt sich wider in vielen unterschiedlichen Begriffen, die jeweils eine spezielle Versions-Semantik ausdrücken: Revisionen stellen verschiedene Änderungsbestände eines Objektes dar, Alternativen sind unterschiedliche Ansätze zur Entwicklung eines Objektes. Varianten sind Versionen, die unter einer bestimmten Abstraktion gleich sind und sich durch bestimmte Parameter unterscheiden (Schrauben verschiedener Länge, Programme für unterschiedliche Betriebssysteme). Repräsentationen sind unterschiedliche Darstellungsformen eines Objektes, etwa Source- und Objekt-Code von Programmen oder Logik und Layout-Darstellung von Chips. Zur Modellierung der verschiedenen Versionsvorstellungen wurden Versionsmodelle entwickelt, die jeweils bestimmte Aspekte des Versionsbegriffs in den Vordergrund stellen. Die wesentlichen Elemente der Versionsmodelle sind:
|
Abb. 1 Lebenszyklus eines Design-Objektes
|
In einigen Ansätzen wird versucht, die Versionsmodellierung flexibler an die Anforderungen der einzelnen Anwendungen anzupassen. Zu diesem Zweck bietet sie elementare Versionsmechanismen an, um mit ihrer Hilfe die Beschreibung des gewünschten Versionskonzepts im Schema der Datenbank zu ermöglichen. So werden in [2] Versions-Cluster eingeführt, durch die auf der Schema-Ebene eine bestimmte Teilmengen-Struktur über die Versionsmenge definiert werden kann. In [8] werden Versions-Umgebungen definiert, die es erlauben, Graphen und Partitionen über die Versionsmenge zu legen, um die Beziehungen zwischen Versionen und die Versionszustände darstellen zu können. Es werden primitive Operationen auf diesen Strukturen angeboten, auf deren Basis komplexere, benutzerorientierte Operationen definiert werden können. Zusammen mit Constraints, die die Ausführung einer Operation von bestimmten Bedingungen abhängig machen, besteht damit die Möglichkeit, durch zugeschnittene Versionsstrukturen und Operationen darauf den gewünschten Versionsbegriff der Anwendung zu modellieren. Ein wichtiger Aspekt der Versionsverwaltung in konstruktiven Anwendungen ist die Einbindung des Versionskonzepts in die Objektstrukturen. Design-Objekte sind typischerweise sehr komplex, und sie sind in verschiedene Beziehungen eingebettet: Ein Design-Objekt kann aus anderen, unabhängig entwickelten Design-Objekten zusammengesetzt sein (Zellen im VLSI-Design sind aus anderen Zellen zusammengesetzt, Programm-Module benutzen andere, unabhängige Programm-Module), es kann in verschiedenen Abstraktionsebenen vorliegen (z.B. Implementierung und Schnittstelle eines Programm-Objektes) und in verschiedenen Repräsentationsformen dargestellt sein. Änderungen an einem Element dieser komplexen Beziehungsstrukturen können Auswirkungen auf viele andere Objekte haben. Hier kann die Versionierung von Design-Objekten im Zusammenspiel mit speziellen Mechanismen zu einer höheren Flexibilität und einer größeren Sicherheit vor Fehlern führen. Betrachten wir als Beispiel die Aufruf-Hierarchie zweier Module: Modul M1 benutzt Funktionen des Moduls M2, d.h. von M1 geht eine benutzt-Referenz (oder Komponenten-Referenz) auf M2. Falls einer der Funktionsaufrufe in M2 geändert wird, so benutzt M1 diese Funktion nicht mehr korrekt. Bewirkt die Änderung die Erzeugung einer neuen Version von M2, so kann M1 weiter die alte Version benutzen und braucht nicht geändert werden. Andererseits kann die Änderung der Funktion aber auch eine wesentliche Effizienz-Verbesserung der Funktion beinhalten, so daß der Programmierer des Moduls M1 sie gerne benutzen würde. Ein System zur Änderungskontrolle muß somit sowohl die Benutzung von alten Versionen als auch Mechanismen zur flexiblen Auswahl neuer Versionen von Komponenten ermöglichen. In anderen Anwendungsbereichen ist das Erkennen von Inkompatibilitäten wesentlich schwieriger als im Software Engineering, da das Konzept der Schnittstelle nicht überall so eindeutig definiert werden kann. Doch verschiedene Verfahren und insbesondere ihre kombinierte Anwendung bieten in vielen Fällen eine befriedigende Lösung der Änderungsverwaltung: Durch den Mechanismus der Change Notification werden übergeordnete Objekte von Änderungen ihrer Komponenten informiert. Sie werden z.B. markiert, oder der Konstrukteur erhält direkt eine Nachricht. Ein anderes Konzept wird als Version-Percolation oder Change Propagation bezeichnet: Die Erzeugung einer neuen Version eines Objektes führt automatisch zur Erzeugung von neuen Versionen der sie benutzenden Objekte [3]. Eine weitere Methode besteht in der Einführung generischer Referenzen, durch die ein dynamisches Binden von Komponenten-Versionen erreicht wird. Im Gegensatz zur festen Referenzierung bestimmter Versionen einer Komponente (statisches Binden) wird hierbei zunächst nur festgelegt, welches Design-Objekt als Komponente benutzt wird, ohne bereits eine bestimmte Version auszuwählen. Die Auswahl der Komponentenversionen erfolgt dynamisch, z.B. durch einen Qualifikationsausdruck, der die auszuwählende Version beschreibt (etwa die neueste Version im Zustand freigegeben), oder durch die Bereitstellung von repräsentativen Versionen für jedes Design-Objekt durch den Benutzer. Abspeicherung von VersionenEin Problem bei der Versionierung von Objekten kann die Größe des erforderlichen Speicherplatzbedarfes sein, besonders wenn jede Änderung grundsätzlich zur Erzeugung einer neuen Version führt. Daher wurden bereits früh Konzepte zur Verringerung des Speicherplatzbedarfs entwickelt, und die bekannteste Methode ist die Delta-Speicherung: Versionen werden nicht alle vollständig abgespeichert, sondern es werden nur die Unterschiede der Version zur vorherigen Version (Deltas) festgehalten. Hinter der ältesten Version eines Objekts, die als Anker vollständig abgelegt ist, bildet sich eine Delta-Kette, die beim Zugriff auf eine Version durchlaufen werden muß. Durch die Auswertung der abgespeicherten Deltas wird die gewünschte Version dabei sukzessive rekonstruiert. Geht man davon aus, daß am häufigsten auf die neueste Version zugegriffen wird, so kann man die Delta-Kette auch umdrehen [1]: die neueste Version wird als Anker vollständig abgespeichert, und die Kette wird immer in Richtung auf die Vergangenheit durchlaufen. Je älter eine Version ist, desto größer ist dann der Aufwand für ihre Rekonstruktion.
|
|
Autor & Copyright © 1989 Informatik Spektrum, Springer-Verlag Berlin Heidelberg |
Remote Database Access: Kommunikationsunterstützung für Fernzugriff auf Datenbanken |
ErläuterungDatenbanken sind in der Praxis weit verbreitet und haben den Vorteil, daß sich damit sowohl der Nutzen als auch die (oft hohen!) Kosten von Datensammlung und -verwaltung auf einen weiten Kreis von Benutzern verteilen lassen. Im Zusammenhang mit der zunehmenden Vernetzung von Rechnern aller Art über unterschiedliche Distanzen hinweg (LAN, WAN, MAN, . . .) bekommt diese Eigenschaft von Datenbanken noch eine zusätzliche Bedeutung. So wird es nun möglich, von lokal zur Verfügung stehenden Arbeitsplatzrechnern aus Dienste von entfernten, dedizierten Spezialrechnern (z.B. Datenbankrechnern) auch über lokale Rechnergrenzen hinaus mit größtmöglicher Aktualität direkt zu nutzen. Insbesondere in offenen Rechnernetzumgebungen, in denen die Kommunikationspartner variieren können und einander nicht im voraus bekannt sein müssen sind flexible Nutzungsmöglichkeiten von entfernten Datenbankdiensten von großem praktischen Wert. Gegenüber klassisch verteilten Datenbanken hat dabei der dem Remote Database Access" (RDA) zugrunde liegende Client/Server-Ansatz insbesondere den Vorteil das der Datenverwaltung auf den Servern ein hohes Maß an lokaler Autonomie erhalten bleibt. Kommunikationsunterstützung für heterogene, offene Rechnernetze basiert auf generell vereinbarten Software-Schnittstellen und allgemein bekannten (d.h. standardisierten) Kommunikationsprotokollen. So beruht auch beim Fernzugriff auf Datenbanken (engl. Remote Database Access) die Kommunikation zwischen den verteilten heterogenen und miteinander kooperierenden Rechnerknoten auf von der International Standards Organization (ISO) und ihren internationalen Unterorganisationen im Rahmen des Referenzmdells [1] für die Kommunikation in Offenen Systemen (Open Systems Interconnection, OSI) festgelegten Standards. RDA-ModellEntsprechend einem allgemeinen Client/Server-Ansatz für verteilte Datenverarbeitung [5] geht auch das dem RDA zugrunde liegende Modell von einem Datenbank-Klienten aus (z.B. einer Arbeitsstation), der die ISO-OSI-Kommunikationsdienste dazu benutzt, auf einen oder mehrere entfernte(n) Datenbank-Server in einer hererogenen Rechnernetzumgebung zuzugreifen. (Abb. 1). |
Abb. 1. RDA-Client/Server-Modell
|
Nach diesem Modell wird der RDA-Dienst als asymmetrischer ISO-OSI-Anwendungsdienst (d.h. Teil der Ebene 7) sowohl auf der Seite de Klienten als auch auf der des Servers basierend auf den Diensten der darunterliegenden ISO-OSI-Schichten 1 bis 6 erbracht. Auf der Seite des Klienten sind die RDA-Dienste über ein - z.Zt. nicht norminiertes - Application Program Interface" (API) dem Anwendungsprogramm zugänglich. Auf der Seite des Servers vermittelt ein - ebenfalls nur lokal spezifizierter - Server-Prozeß zwischen ein- und ausgehenden RDA-Nachrichten und dem angesprochenen Datenbankverwaltungssystem (DBMS). Entsprechend dem ISO-OSI-Referenzmodell definiert dabei die RDA-Dienstschnittstelle die Funktionalität aller RDA-Kommunikationdienste, die sowohl dem Klienten als auch dem Server zur Verfügung stehen. Das RDA-Kommunikationsprotokoll beschreibt dann im Detail die Datenformate und die erlaubten Reihenfolgen aller Nachrichten, die zwischen je zwei RDA-Kommunikationspartnern ausgetauscht werden können. RDA-KommunikationsdiensteAn der RDA-Dienstschnittstelle stellt die RDA-Kommunikationsunterstützung die folgenden Gruppen von Diensten bereit: Gemäß einer Vereinbarung zwischen RDA-Klient und -Server zu Dialogbeginn können davon auch nur Teilmengen (Functional Units) für bestimmte Verbindungen ausgewählt werden. Dialogverwaltung: Wie andere ISO-OSI-Anwendungen auch beruht RDA auf verbindungsorientierter Kommunikation zwischen Partnern (Peers). Um eine RDA-Kommunikationsbeziehung aufzubauen, stellt RDA explizite Dienste zum Auf- und Abbau eines Kommunikationsdialoges bereit: R-BeginDialogue" und R-EndDialogue" (Die Liste und die Bezeichnungen der Dienste entsprechen dem Stand der Normung von Ende 1990). Dialoge sind logische Beziehungen zwischen Kommunikationspartnern der OSI-Anwendungsebene, die auch über etwaige zwischenzeitliche Störungen der darunterliegenden Verbindungen (Associations) hinweg erhalten bleiben. Ressourcen-Verwaltung: Während eines Dialoges kann mit der Hilfe der RDA-Dienste R-Open" und R-Close" vom Klienten an den Server der Wunsch übermittelt werden, Ressourcen" der entfernten Datenbank zu öffnen oder zu schließen. Dabei sind Ressourcen von der Anwendung bestimmte Teile der Datenbank, die von einzelnen Tupeln bis zur gesamten Datenbank reichen können. Da die Übermittlung und Ausführung aller RDA-Operationen in der Regel zu einem Resultat" führt (z.B. einer Antwort", einer Status"- oder einer Fehlermeldung), läßt sich die Grundstruktur der Ausführung aller RDA-Dienste wie folgt beschreiben: Der RDA-Klient übermittelt an den RDA-Server den Wunsch (Request), eine bestimmte Operation entfernt auszuführen; dieser Wunsch wird beim Server angezeigt (Indication), und nach Ausführung der Operation sendet der Server ein Resultat an den Klienten zurück. Datenbanksprachenunterstützung: Während eines Dialoges und nach Öffnung der notwendigen Ressourcen kann der RDA-Klient mit Hilfe des Dienstes R-ExecuteDBL" Datenbankkommandos in einer zuvor ausgewählten Datenbanksprache (Database Language, DBL) an den Server übermitteln. Der Server sendet dann als Ergebnis eines solchen Dienstaufrufes die entsprechenden Resultate (s.o.) an den Klienten zurück. Die bei diesem Dienstaufruf verwendete (standardisierte!) Datenbanksprache wird bei Dialogbeginn ausgewählt. Darüber hinaus stellt RDA Möglichkeiten bereit, durch Verwendung des Dienstes R-Define" Datenbankkommandos unabhängig von ihrer Ausführung (zu Optimierungszwecken) auch schon vorab an den Server zu übermitteln, dann mit Hilfe des Dienstes R-Invoke" - i.d.R. später aufzurufen und derartige Definitionen mit Hilfe des Dienstes R-Drop" wieder zu löschen. Kontrolldienste: Wenn die Ausführung einzelner Datenbankkommandos unerwartet lange dauert, stellt RDA Dienste zur Abfrage des Status (R-Status) oder zum Löschen (R-Cancel) vorab übermittelter, aber noch nicht abgeschlossener Operationen auf dem Server zur Verfügung. RDA-Transaktionsverwaltung: Zur Übermittlung von speziellen Nachrichten zur Kontrolle von Datenbanktransaktionen stellt RDA in seiner einfachsten Form optional die folgenden Dienste bereit: R-BeginTransaction" dient zum Initiieren, R-Commit" bzw. R-Rollback" zum erfolgreichen Beenden bzw. zum Zurücksetzen einer entfernten Transaktion. Wesentlich weiter gehende Kommunikationsmechanismen für die Kontrolle von verteilten Transaktionen stehen als Alternative zu den genannten RDA-Diensten in einem erweiterten RDA-Anwendungskontext zur Verfügung. Hier wird durch direkte Referenz auf den entsprechenden ISO-OSI-Standard für verteilte Transaktionsunterstützung (Transaktion Processing TP) [4] vermieden, daß RDA die auch für andere OSI-Anwendungen wichtigen Grundfunktionen zur Transaktionsverwaltung eigens neu definiert. RDA-SpezialisierungshierarchieDa RDA eine spezielle Art beschreibt, entfernte Datenbankoperationen - asynchron - aufzurufen, entspricht das Grundmuster der dabei verwendeten Kommunikation dem eines allgemeineren entfernten Prozeduraufrufes. Innerhalb dieses Rahmens spezifiziert dann der generische" Teil des RDA [2] einen Rahmen für allgemeine RDA-Dienste, die unabhängig von der zugrunde liegenden Datenbanksprache sind. Erst in einem zweiten Teil des RDA-Standards werden dann die speziellen Datenbankkommandos näher definiert, die für eine bestimmte Datenbanksprache verwendet werden dürfen. Für die standardisierte relationale Datenbanksprache SQL ist dies in [3] im einzelnen genau beschrieben. RDA-KommunikationsprotokollDas RDA-Kommunikationsprotokoll spezifiziert im Detail zunächst die genauen Formate aller RDA-Nachrichten (Protocol Data Units, PDUs), die zwischen beliebigen RDA-Klienten und RDA-Servern in einer offenen Netzumgebung ausgetauscht werden können. Über die Definition der RDA-PDUs hinaus spezifiziert das RDA-Protokoll dann Regeln und Bedingungen, die jede mit dem Standard konforme Implementierung befolgen muß. Wichtigstes Beispiel für derartige Einschränkungen sind die Reihenfolgeregeln, die alle legalen Abfolgen von RDA-PDUs zwischen den RDA-Kommunikationspartnern beschreiben (Einfaches Beispiel: R-BeginDialog" muß allen anderen RDA-Operationen vorangehen.) StatusEin erster technischer Vorschlag zu RDA wurde bis ca. 1986 von der European Computer Manufacturers Association" (ECMA) erstellt und darauf in die nationalen und internationalen ISO-Normungsgremien eingebracht. Ende 1990 liegt ein Normungsvorschlag der ISO zu RDA als 2. Committee Draft" (CD) vor und soll - nach der Planung vom Jahresende 1990 - 1991 als technisch stabiler ISO Draft International Standard" (DIS) und ein Jahr darauf als verbindlicher ISO-Standard international verabschiedet werden. Die Liste der im derzeitigen RDA-Standardentwurf noch offenen Punkte umfaßt alternative RDA-Spezialisierungen (z.B. für SQL2, SQL3, Netzwerksprache etc.), spezielle Unterstützung für (Datenbanksprach-)Module, unterbrechbare RDA-Dialoge, erweiterte Transaktionsverwaltungsmechanismen oder etwa Erweiterungen für komplexere Datenmodelle (z.B. für Zugriff auf Multi-Media-Datenbanken) oder auch Anpassungen an die Möglichkeiten von Hochgeschwindigkeitsnetzen. |
|
Autor & Copyright © 1991 Informatik Spektrum, Springer-Verlag Berlin Heidelberg |
Objektorientierter Datenbankentwurf |
ErläuterungObjektorientierte Datenbankmodelle nehmen für sich in Anspruch, eine natürlichere Modellierung der Anwendung zu ermöglichen, als im Relationenmodell oder den bisherigen Entwurfsmodellen, meist Versionen des Entity-Ralationship-Modells (ER-Modell), üblich. Zusätzlich kann man noch zwei prinzipielle Vorteile aufführen:
Entity-Relationship-ModelleDer klassische Datenbankentwurf modelliert Objekte und ihre Attribute, klassifiziert diese in Entity-Typen und stellt die entworfenen Entity-Typen miteinander in verschiedene Beziehungen (etwa [7]). Dabei wurden Normalisierungsverfahren zur Redundanzvermeidung analog dem Relationenmodell ausgenutzt. Die ER-Modelle unterscheiden sich in der Anzahl der unterstützten Konzepte (etwa Typkonstruktoren, Is-a-Beziehungen,...). Sie werden beim klassische Software-Entwurf zum Entwurf der Datenstrukturen eingesetzt, Verfahren wie Strukturierte Analyse dagegen zum Entwurf der Funktionen. Die Integration der datenorientierten und funktionsorientierten Sicht ist hier nur eingeschränkt möglich. Objektorientierte ModellierungDatenbankentwurf und Software-Entwurf werden durch die objektorientierte Modellierung miteinander integriert. Man identifiziert Objekte, die ihre Attribute und Methoden, klassifiziert sie in Klassen und ordnet die Klassen in mehreren Hierarchien an:
Objektorientierte Programmiersprachen unterstützen die Hierarchien 3 und 4, eventuell auch 5. Die Klassenhierarchie ist eine Spezialität der objektorientierten Datenbankmodelle (s.u.). Außer in Hierarchien können Klassen in objektorientierten Modellen noch in Bereiche gruppiert werden. Diese Bereiche werden etwa Subsysteme, subjects [2] oder cluster [1] genannt. Objektorientierte Analyse und objektorientierter EntwurfVerfahren zur objektorientierten Modellierung eines Anwendungsbereiches kann man auftrennen in die objektorientierte Analyse (OOA [2], was soll modelliert werden ?) und den objektorientiert Entwurf (object-oriented design, OOD [1], wie soll es modelliert werden ?). Die gängigen Verfahren können wiederum in Adaptionen von bekannten daten- oder funktionsorientierten Entwurfsverfahren, eine Mischung aus beiden Verfahren (etwa [3] oder eigenständige Verfahren für objektorientierte Modelle [2, 1] eingeteilt werden. In OOA und OOD müssen drei Problembereiche berücksichtigt werden:
Während etwa [2] sich auf die Analyse von Strukturen beschränkt, werden in [1] auch die Funktionen modelliert. Die Spezifikation des Gesamtverhaltens ist in diesem Verfahren nur unzureichend berücksichtigt. Spezifikation des dynamischen VerhaltensEin Schritt in diese Richtung sind Verfahren zur Spezifikation des dynamischen Verhaltens einer Datenbankanwendung. Diese sind teilweise noch unabhängig von objektorientierten Modellen. In [5] werden etwa dynamische Integritätsbedingungen beschrieben, die die Spezifikation der Evolution einer Datenbank über ihre gesamte Lebensdauer hinweg liefern können. Diese Spezifikation kann in ein relationales Datenbankschema umgesetzt werden, wenn im verwendeten Datenbanksystem Trigger-Mechanismen zur Verfügung stehen, die bei Eintreten bestimmter Ereignisse und unter bestimmten Bedingungen die in der Spezifikation festgelegten Aktionen ausführen können. in [6] wird diese Technik auf objektorientierte Datenbanken ausgeweitet, indem die Lebensläufe einzelner Objekte in temporaler Logik spezifiziert werden. Spezielle Datenbankeigenschaften im objektorientierten EntwurfSpeziell für objektorientierte Datenbankmodelle [4] gibt es noch einige zusätzliche Eigenschaften, die in den bisher vorgestellten OOA-, OOD- oder Spezifikationsverfahren noch nicht berücksichtigt wurden. So muß der objektorientierte Datenbankentwurf
Die Punkte 2 und 3 werden durch die langfristig ausgerichteten Datenbankanwendungen nötig: im Gegensatz u objektorientierten Programmiersprachen, die Objekte während eines Programmablaufs modellieren, muß durch die Forderung der Persistenz die Evolution eines Objektes beziehungsweise eines ganzen Datenbankschemas möglich sein. Der Punkt 4 ist ein typisches Datenbank-Feature: Informationen können nicht nur in gespeicherter Form vorliegen sondern auf vielfältige Weise durch Anfragen oder Sichtdefinitionen abgeleitet werden [4]. Diese abgeleiteten Klassen werden in herkömmlichen Entwurfstechniken noch im Schema direkt spezifiziert und "blähen" in vielen Fällen das Datenbankschema unnötig durch redundante Informationen auf FazitDer objektorientierte Datenbankentwurf integriert den bisher getrennten Entwurf von Strukturen und Funktionen eines Systems. Zusätzlich kann das Gesamtverhalten des Systems etwa durch dynamische Integritätsbedingungen spezifiziert werden. Die Integration dieser drei Bereiche ist nicht immer vollständig gelungen. Weiterhin sind bisher einige datenbankspezifische Bereiche wie Objekt-Evolution und abgeleitete Klassen in den eher auf objektorientierte Programmiersprachen zugeschnittene Verfahren noch nicht ausreichend berücksichtigt. |
|
Autor & Copyright © 1993 Informatik Spektrum, Springer-Verlag Berlin Heidelberg |
|
ErläuterungMitte der neunziger Jahre von einigen als nächste Generation von DBMS gefeiert [10], hat sich die anfängliche Euphorie inzwischen etwas gelegt. Das Thema ist aber keinesfalls erledigt, namhafte Hersteller relationaler DBMS haben objektrelationale Konzepte in ihre Produkte integriert oder werden dies tun. Mit der in diesem Jahr anstehenden Verabschiedung wichtiger Teile von SQL3, nun besser als SQL:1999 bezeichnet, wird objektrelationale Funktionalität auch normiert [2, 6]. Die Kritik an den mageren Typsystemen traditioneller relationaler DBMS bezieht sich vor allem auf zwei Punkte. Zum einen sollen (oft sehr umfangreiche) Daten, die nicht im Rahmen von Datenbankanwendungen entstanden sind oder gepflegt werden, in Datenbanksysteme eingebunden werden. Beispiele sind Texte, Bilder, Konstruktionsdaten, XML-Dokumente oder GeoInformation, Gründe sind der integrierte Datenzugriff und die Nutzung der Persistenzmechanismen des DBMS. Zum anderen erzwingt ein zu einfaches Typsystem häufig eine unnatürliche Modellierung von an sich komplex strukturierten Daten mit entsprechenden Auswirkungen auf Verwendbarkeit und Leistung des resultierenden Systems. Das gilt auch für die traditionelle relationale Datenmodellierung, insbesondere aber für das ungenügende Zusammenspiel mit objekt-orientierten Anwendungen, deren Datenmodell ja gerade auf der Zusammenarbeit verschiedenster Datentypen beruht (impedance mismatch). Objektorientierung und ObjektpersistenzDie Basis objektorientierter Anwendungen sind Datenobjekte, die oft sehr komplex und auf vielfache Weise miteinander verbunden sind. Ein Objekt umfaßt als Instanz einer Klasse nicht nur die zu manipulierenden Daten, sondern auch die für die Klasse definierten Operationen (Methoden); die Daten können in der Regel nur über diese Operationen angesprochen werden (Datenkapselung). Die Klassendefinition legt also das Verhalten ihrer Objekte fest, in Sprachen mit Typsystem spricht man auch von der Spezifikation nutzerdefinierter Datentypen. Ein Objekt hat zudem eine werteunabhängige, unveränderliche Identität, die in einem gegebenen Umfeld räumlich und idealerweise auch zeitlich eindeutig ist. Die Objektidentität dient unter anderem zur Herstellung von Beziehungen zwischen Objekten über Objektreferenzen, die damit im Gegensatz etwa zu Fremdschlüsseln in relationalen Datenbanken nicht wertebezogen sind. Neben solchen Beziehungen kann ein Objekt auch direkt Teil eines anderen Objekts sein, auf diese Weise können komplex verschachtelte Objektstrukturen entstehen. Ein Grundkonzept der Objektorientierung ist die Vererbung von Klassen in ihren verschiedenen Spielarten. Eine Klasse wird dabei mit Bezug auf eine oder mehrere andere Klassen definiert, sie erbt deren Datenstrukturen und Operationen, kann diese in Grenzen verändern und eigene hinzufügen. Objekte einer solchen Klasse lassen sich dann auch an allen Stellen verwenden, an denen Objekte einer Oberklasse nötig sind, die objektspezifisch erforderlichen Operationen werden zur Laufzeit be stimmt (Substituierbarkeit, Polymorphie und dynamisches Binden). Für die Integration von Persistenz in objektorientierte Anwendungen gibt es im wesentlichen drei Varianten [9]. Der Gateway-Ansatz erlaubt als Middleware-Lösung die Nutzung nicht-objektorientierter, oft schon existierender Datenquellen zum Speichern von Objektdaten. Erforderlich ist dazu eine Abbildung zwischen dem objektorientierten Schema der Anwendung und dem auf einem anderen Datenmodell beruhenden Schema des Speichers, z.B. einer relationalen Datenbank. Als anwendungs- oder auch programmiersprachenzentriert kann man den Einsatz objektorientierter DBMS ansehen, der eine nahtlose Einbindung von Persistenz in Anwendungen erlaubt. Ein dritter, datenbankzentrierter Ansatz zum Speichern von Objekten ergibt sich schließlich aus der Weiter entwicklung relationaler zu objektrelationalen DBMS. Objektrelationale Datenbanksysteme sind um nutzerdefinierte Datentypen mit Eigenschaften wie den oben genannten erweiterbar, interessant ist daneben auch die typunabhängige Verlagerung von Anwendungslogik in ein Datenbanksystem. Die Möglichkeiten eines solchen Systems sollen im folgenden anhand von SQL:1999 angedeutet werden. Für einen effizienten Datenbankbetrieb müssen neue Datentypen und Routinen durch geeignete Optimierungsmöglichkeiten unterstützt werden, die auf generischen oder nutzerdefinierbaren Zugriffsmethoden basieren. Normierung in SQL:1999Mit SQL:1999 werden in diesem Jahr wichtige objektrelationale Sprachmittel normiert. Dazu gehören der Umgang mit großen Datenmengen (LOB-Datentypen), nutzerdefinierte Datentypen und Datenbankroutinen, verschiedene Typgeneratoren und typisierte Tabellen. An der Normung für den integrierten Zugriff auf extern erstellte und verwaltete Daten über Dateiverweise oder sogenannte abstrakte Tabellen und für einen verbesserten Datenzugriff aus objektorientierten Programmierspachen (Vorbild SQLJ) wird dagegen noch gearbeitet [4, 5]. Das Typsystem von SQL:1999 ist unter anderem durch verschiedene Typgeneratoren und nutzerdefinierbare Datentypen erweiterbar. Letztere werden von SQL:1999 als strukturiert bezeichnet, die Attribute dieser inneren Struktur können orthogonal wiederum auf beliebigen Datentypen beruhen. Strukturierte Datentypen ermöglichen Methodendefinition, Objektidentität und -referenzierbarkeit, eine gewisse Datenkapselung und Einfachvererbung, darauf aufbauend Substituierbarkeit von Objekten und dynamisches Binden der Methoden. Die ursprünglich geplante Mehrfachvererbung wurde für SQL:1999 fallengelassen, Generik gibt es ebensowenig. Typgeneratoren dienen der Definition von Struktur-, Kollektions- und Referenzdatentypen, SQL kennt hier unbenannte Strukturen, Felder und Referenzen auf Objekte strukturierter Datentypen. Die neuen Datentypen können analog zu vordefinierten Typen zur Definition von Attributen einer Datenbanktabelle genutzt werden, SQL erweitert auch die Datenmanipulationsmöglichkeiten entsprechend. Man beachte im übrigen, daß nutzerdefinierte Datentypen durchaus nicht dem Relationenmodell, der theoretischen Grundlage relationaler Datenbanksysteme, widersprechen, auch die Forderung nach skalaren Attributwerten (erste Normalform) ist bei genauem Hinsehen keine ernsthafte Hürde [1]. Weiterhin sei angemerkt, daß eine zu tiefe Verschachtelung von Daten mit Hilfe nutzerdefinierter Datentypen auch Probleme mit sich bringen kann, insbesondere für vom Modellierer zunächst nicht vorgesehene Ad-hoc-Anfragen, bei denen relationale Datenbanksysteme aufgrund der anwendungsneutralen Datenmodellierung traditionell stark sind. Eine andere Art der Verwendung nutzerdefinierter Datentypen sind typisierte Tabellen. Eine solche Tabelle wird bezüglich eines strukturierten Datentyps angelegt, dessen Struktur bildet zusammen mit einem Feld zur Aufnahme von Objektidentifikatoren die Tabellenattribute. Neben der gewohnten relationalen Nutzbarkeit kann die Tabelle dann auch als Container für Werte (Objekte) des strukturierten Datentyps angesehen werden; die einzelnen Tabellentupel repräsentieren die Zustände der abgelegten Objekte, auf die Objekte sind die zugehörigen Methoden anwendbar. Mit Hilfe der bereits genannten Referenzdatentypen können Tupel typisierter Tabellen direkt angesprochen werden, die Sprache erlaubt die Nutzung dieser Referenzen bei der Datenmanipulation mit Hilfe sogenannter Pfadausdrücke als Alternative zum mengenorientierten Tabellenverbund. Pfadausdrücke lösen die Referenzen zwischen Objekten auf und erlauben das Eindringen in deren Struktur. Vererbungsbeziehungen zwischen strukturierten Datentypen können auf darauf beruhende typisierte Tabellen ausgedehnt werden; es entstehen Tabellenhierarchien, in denen Tupel einer Subtabelle automatisch auch zu jeder Supertabelle gehören (extensionale Vererbung). Typisierte Tabellen eignen sich damit insbesondere zur Ablage von Objekten objektorientierter Anwendungen, für die auch auf der Datenbankebene selbst geeignete Manipulationsmöglichkeiten, z.B. komplexe mengenorientierte Anfragen, zur Verfügung stehen sollen. DatenbankprodukteDie Entwicklung von SQL:1999 wurde durch bereits vorhandene Produkte beeinflußt, schließlich sind führende Hersteller relationaler DBMS in den Normungsgremien vertreten. Informix war ein Vorreiter unter den großen Herstellern, auch Marktführer Oracle und IBM (DB2) bieten seit längerem objekt-relationale Funktionen. Leider lassen die Heterogenität der verschiedenen Implementierungen und die Unterschiede zur kommenden Norm Interoperabilität nur in sehr geringem Umfang zu [7]. Es bleibt zu hoffen, daß sich das mit SQL:1999 allmählich ändert. Die genannten Hersteller bieten neben der eigentlichen Funktionalität auch proprietäre Programmierschnittstellen und Werkzeuge an, die das Zusammenfassen nutzerdefinierter Erweiterungen in Paketen erleichtern. Solche auch von Drittanbietern und Endanwendern implementierbaren Pakete (Oracle: Cartridges, Informix: DataBlades, IBM DB2: Extenders) wurden zunächst u.a. für Text-, Zeitserien- und Bilddaten angeboten, prinzipiell ist die Technik aber für beliebige Erweiterungen verwendbar. Nutzerdefinierbare Erweiterungen relationaler Datenbanksysteme wurden bisher vor allem im Rahmen der erwähnten Pakete von DBMS- oder Drittherstellern eingesetzt, der tagtägliche Einsatz objektrelationaler Modellierungsmöglichkeiten hält sich bisher in Grenzen. Das ist im wesentlichen auf die noch unzureichende und vor allem sehr heterogene Implementierung in den Produkten zurückzuführen, aber auch auf die oft recht komplexe physische Optimierung, etwa die Implementierung adäquater Zugriffspfade für neue Datentypen und Datenbankroutinen. Die neue SQL-Norm könnte hier auf funktionaler Ebene einen entscheidenden Schub bewirken, für eine Vereinfachung des physischen Datenbankentwurfs ist aber noch einiges an Entwicklungsarbeit zu leisten. Interessant für die weitere Entwicklung dürften unter anderem Bibliotheken neuer Datentypen und Datenbankroutinen sein [3], aber auch die verbesserte Einbindung externer Daten unter dem Stichwort der föderierten Datenbanken [8]. Vielversprechend erscheint der Einsatz objektrelationaler Datenbanksysteme insbesondere für die schon in größerem Umfang praktizierte Integration von Texten, Bildern und anderen Daten häufig genutzter Art in relationale Datenbanken, bei der Ergänzung existierender relationaler um objektorientiert modellierte Daten oder für den objektorientierten Zugriff auf vorhandene Daten. Mit nutzerdefinierten Datentypen und objektorientierten Konzepten erlauben objektrelationale Datenbanksysteme das Abspeichern und das direkte Manipulieren von Anwendungsobjekten ebenso wie ein flexibles Auffinden und Kombinieren dieser Objekte in Anfragen. Die Datenmodelle von Datenbanksystemen und den verschiedenen objektorientierten Programmiersprachen werden jedoch trotz gemeinsamer Grundlagen aufgrund der Sprachvielfalt nie völlig übereinstimmen. Diesem Nachteil stehen Sprachunabhängigkeit, eine ausgereifte Datenbanktechnologie, reiche Anfragemöglichkeiten und Mittel zum datenzentrierten Verlagern von Typ- und Anwendungslogik in das Datenbanksystem gegenüber. |
Partitionierung von Datenbanktabellen |
ErläuterungNeue Anwendungen, z.B. Data Warehousing, und der zunehmend weit verbreitete Einsatz integrierter betrieblicher Informationssysteme, wie etwa des SAP Systems R/3, führten zu Datenbanken im hohen Gigabyte- oder gar im Terabyte-Bereich. Das Datenvolumen selbst stellt Datenbanken kaum noch vor Probleme. Problematisch hingegen sind oftmals sehr große Tabellen mit Millionen Einträgen pro Tabelle; in der Praxis existieren bereits Datenbanken, wo eine einzelne Tabelle Milliarden Zeilen enthält [5]. Die Datenmanipulation im OLTP-Betrieb (Online Transaction Processing), aber auch eine klassische Datensicherung (Offline-Backup) oder die Reorganisation derartig großer Tabellen begrenzen zum einen die Leistung des gesamten Systems, zum anderen kann dadurch die Verfügbarkeit der Daten wesentlich eingeschränkt werden. Es gibt verschiedene Ansätze, mit diesen Problemszenarien umzugehen: Eine mögliche Herangehensweise ist der Einsatz verbesserter Techniken u.a. zur Datensicherung und Reorganisation, etwa ein Online-Backup [4] oder eine Online-Reorganisation [6], wie von verschiedenen DBMS-Produkten bereits angeboten. Dies löst teilweise die Probleme bezüglich der Verfügbarkeit auf Datenbankebene, nicht jedoch Verfügbarkeitsprobleme und Leistungsengpässe aufgrund sehr großer Datenmengen innerhalb einer Tabelle. Deren Anwachsen kann nicht durch Löschen von Daten begrenzt werden, wenn diese aus betriebswirtschaftlichen oder rechtlichen Gründen erhaltenswert oder gar aufbewahrungspflichtig sind. Hier bietet sich das Auslagern von Daten in ein separates Archiv an, das sich auf preisgünstigeren Tertiärspeichermedien befinden kann. Archivierte Daten entlasten somit die Datenbank, sind aber weiterhin auswertbar und können bei Bedarf auch in die Datenbank zurückgeladen werden [2]. Archivierung allein löst allerdings auch nicht alle Probleme. Zum einen sind die archivierten Daten nicht mehr im gewünschten schnellen und direkten Zugriff, was sich nicht nur im Bereich Data Warehousing nachteilig auswirkt. Zum anderen bieten heutige DBMS noch keine integrierte Archivierungsfunktionalität an, was zu aufgesetzten" Archivierungslösungen (wie in SAP R/3) mit möglichen Leistungseinschränkungen führt oder Integritätsprobleme nach sich ziehen kann. Eine Alternative zum Erreichen von Leistungs- und Verfügbarkeitsanforderungen für sehr große Datenbanktabellen bieten deshalb Techniken zur Partitionierung bzw. Verteilung dieser Tabellen. Ursprünglich wurden Datenbankdateien partitioniert, wenn sie für eine Festplatte zu groß waren oder die Zugriffsgeschwindigkeit einer einzelnen Platte zu gering war. Das Konzept der Partitionierung wurde in wissenschaftlichen Arbeiten zu verteilten [3] und parallelen [1] Datenbanken auf Datenbanktabellen übertragen und weitergeführt. In verteilten Datenbanken geht es darum, einen großen Datenbestand geographisch zu verteilen und Rechnerknoten so zuzuordnen, daß einerseits knotenübergreifend problemlos Anfragen gestellt werden können (Verteilungstransparenz), andererseits aber aus Leistungsgründen die Daten möglichst dort verfügbar gehalten werden, wo sie vorwiegend gebraucht werden. In parallelen Datenbanken werden Daten vor dem Hintergrund paralleler Datenbankoperationen partitioniert. Die Konzepte zur Verteilung der Daten basieren auf einer Aufteilung der Tabellen, die je nach Schnittrichtung" durch die Tabelle horizontal bzw. vertikal und entweder wertebasiert (range/hash partitioning) oder zufällig (round robin) erfolgen kann. In jüngeren Jahren hat die Partitionierung von Datenbanktabellen auch Eingang in zentralisierte Datenbanken gefunden, zunächst vorwiegend in Gestalt vertikaler Partitionierung, um große Objekte (Large Objects, LOBs) abzuspalten und somit physisch von den eigentlichen" Daten abzutrennen. Damit kann bei einem sequentiellen Zugriff auf die eigentlichen Daten das zu durchsuchende Datenvolumen eingeschränkt werden, jedoch nicht die Anzahl der zu durchsuchenden Datensätze. Mittlerweile wird daher auch die horizontale Partitionierung wertebasiert oder zufällig verstärkt in relationale DBMS integriert. Dabei stellen Partitionen eine zusätzliche Zugriffsschicht zwischen Tabellen und Table Spaces dar. Der Ansatz kann wie folgt beschrieben werden: Eine (typischerweise sehr große) Datenbanktabelle wird mittels eines Partitionierungsschemas horizontal unterteilt, die entstehenden einzelnen Partitionen können zielgerichtet den physischen Bereichen der Datenbank, den Table Spaces, zugeordnet werden. Der Partitionierungsgedanke kann dabei auf Zugriffspfade (Indexe) übertragen werden. Verschiedene Tabellen können bei Bedarf nach gleichem Kriterium partitioniert werden (beispielsweise eine Abteilungstabelle und eine Mitarbeitertabelle jeweils nach gleichen Abteilungsnummerintervallen). Die so entstandene logische Beziehung zwischen den Partitionen der beiden Tabellen kann sich in einer Zuordnung zum gleichen Table Space widerspiegeln (Clustering). Die Partitionierung erfolgt in den bekannten DBMS-Produkten generell vollständig und disjunkt, um Datenverluste und Redundanz zu vermeiden. Beispiele für DBMSe, die eine Partitionierung unterstützen, sind DB2, Oracle, Informix und Adabas. Die Realisierungsformen und Möglichkeiten in diesen Systemen unterscheiden sich teilweise erheblich voneinander. Insgesamt erhofft man sich von einer Partitionierung eine ganze Reihe potentieller Vorteile hinsichtlich der Leistungsfähigkeit und der Administration sehr großer Tabellen, aber auch bei der Unterstützung spezieller Anwendungen, wie beispielsweise Data Warehousing oder Archivierung. Eine partitionierte Tabelle stellt sich nicht mehr als ein großer Monolith dar, das DBMS kann durch Parallelisierung Such- und Änderungsoperationen auf einem großen Datenbestand potentiell effizienter ausführen. Durch effizientere Ausführungsstrategien können viele Anfragen auf einige wenige Partitionen der Tabelle eingeschränkt werden. Für dieses Eingrenzen ist die Optimierungskomponente des DBMS verantwortlich; es soll selbstverständlich nicht Aufgabe des Anwenders sein, hier von Hand" zu optimieren. Die Anfrageausführung kann darüber hinaus von der Tabellenpartitionierung profitieren, wenn die globalen Tabellenindexe durch kleinere lokale Partitionsindexe ersetzt oder ergänzt werden. Aus Sicht des Administrators können bei entsprechendem physischen Design administrative Aufgaben (Backup/Recovery, Reorganisation u.a.) wesentlich feingranularer, nämlich auf Partitionsebene, ausgeführt werden. Die Datenbanktabelle wird dadurch nicht als ganzes für längere Zeit blockiert, sondern nur die einzelne, aktuell angesprochene Partition für einen vergleichsweise kurzen Zeitraum. Weiterhin ist es möglich, Partitionen einer Tabelle verschiedenen Speichermedien (unterschiedliche Leistungscharakteristika, Preis-Leistungs-Verhältnis) zuzuordnen. Dies kann u.U. als Alternative zum expliziten Archivieren von Daten dienen, wobei auf Tertiärspeicher liegende Partitionen mit einem Archiv vergleichbar sind. Partitionierung erhöht natürlich auch die Komplexität der Datenbankadministration. Die Partitionierung als strukturelle Erweiterung erfordert die Erstellung und Pflege eines Partitionierungsschemas, welches sowohl die logische als auch die physische Ebene umfaßt. Daneben müssen Verwaltungs- und statistische Informationen auf Partitionsebene bereitgestellt werden, um durch geeignete Administrationstechniken, Zugriffsstrukturen und interne Optimierungsverfahren die gewünschten Vorteile zu erzielen. Außerdem ist für Prädikate in Datenbankanfragen intern die Partitionierung zu berücksichtigen. Aus Sicht des praktischen Einsatzes weisen existierende DBMS noch manche Defizite in bezug auf die Partitionierungskonzepte auf, wie Untersuchungen gezeigt haben. So ist u.a. das Kriterium der Datenunabhängigkeit nicht immer voll erfüllt, und der Anwender wird teils in seinen Definitions- und Änderungsmöglichkeiten eingeschränkt. Auch bei der Anfrageoptimierung wird die Tabellenpartitionierung oft noch nicht hinreichend berücksichtigt. Derartige Einschränkungen und Defizite sollten sich im Laufe der technologischen Weiterentwicklung der Produkte reduzieren, wie beispielsweise ein Vergleich zwischen Oracle8i und Oracle8 zeigt. Die Partitionierung ist ein mächtiger Mechanismus, der einerseits einen Mehraufwand darstellt und durchdachte physische Entwurfsentscheidungen verlangt und sich andererseits wesentlich auf das Leistungsverhalten und die Verfügbarkeit des Systems auch negativ auswirken kann. Nicht nur die Praxis hat hier noch Nachholbedarf, auch von seiten der Wissenschaft gibt es noch Klärungsbedarf etwa für verfeinerte und angepaßte Algorithmen zur Optimierung, für die Leistungsvorhersage und für eine bessere Administrationsunterstützung. Entsprechende Forschungsarbeiten sind am laufen. |
ErläuterungUnter einem Datenstrom" versteht man kontinuierlich übersandte Datensätze, deren Größe, Menge sowie schnelles Aufkommen verbieten, sie vor der Verarbeitung zu speichern. Die bisherige Forschung hat in erster Linie zum Ziel, Verfahren zu entwickeln, die es erlauben, ohne Verzögerung des Datenflusses
AnwendungsgebieteDatenströme finden sich in vielen Gebieten wie der Nachrichten- (Presse-, Börsen- und Meteorologienachrichten) oder Systemüberwachung und -steuerung (Verkehrs- und Produktionssteuerung, Logistik, Netzwerkverwaltung) und der Analyse von wissenschaftlichen Messdaten (Astronomie, Medizin, Meteorologie, u.a. zur Früherkennung von Tornados). Neue Techniken zur Vermittlung von Datenströmen werden beispielsweise zur Verfolgung von Gepäckstücken oder Paketen entwickelt, die mit (kleinen und billigen) Sendern ausgestattet sind. Presse- oder sonstige Nachrichten werden an Abonnenten als Ströme gesandt, die nach bestimmten Inhalten oder Mustern gefiltert und verteilt werden. Aus Anwendungssicht wird oft zwischen Transaktions- und Messdatenströmen unterschieden. Transaktionsdatenströme sind kontinuierlich ausgesandte Aufzeichnungen (so genannte Log-Daten) über Transaktionen wie Kreditkartennutzung, Telefonanrufe oder Zugriffe auf Webressourcen. Messdatenströme bestehen aus Daten, die Sensoren, Rechnernetzwerke und wissenschaftliche (astronomische, meteorologische oder medizinische) Messstationen liefern. Transaktionsdatenströme und Messdatenströme unterscheiden sich im Hinblick auf ihre Verarbeitung nicht wesentlich. Push- contra Pull-KommunikationDatenströme sind zentraler Bestandteil einer neuartigen Kommunikationsform, der so genannten „Push-Kommunikation": Nur die für einen Interessenten relevanten Daten werden automatisch an diesen übersandt, sobald sie zur Verfügung stehen. Für manche Anwendungen ist dieser Ansatz der dem Web zu Grunde liegenden „Pull-Kommunikation" überlegen, bei der Datenverbraucher die von ihnen gewünschten Daten von den Datenquellen anfordern. Insbesondere angesichts der zunehmenden Informationsfülle wird vermutlich in Zukunft das Informationsbedürfnis von Nutzern durch eine Mischung von Push- und Pull-Kommunikation befriedigt werden. Punkt-, Tupel- und XML-StrömeIn der Forschung über Datenströme werden derzeit drei komplementäre Arten von Datensätzen betrachtet: Ein Datenstrom wird als eine sehr lange oder ununterbrochene Folge entweder von Punkten (also skalaren Werten wie Zahlen oder Zeichen) oder von Tupeln oder von XML-Dokumenten (oder so genannten XML-Elementen, d.h. wohlgeformten Fragmenten von XML-Dokumenten) angesehen. Punkt- und Tupelströme bestehen aus Datensätzen, die
Diese Eigenschaften vereinfachen die Verarbeitung von Strömen. Punktströme können als Sonderfall von Tupelströmen angesehen werden. Die XML-Dokumente, wie sie in vielen XML-Strömen, insbesondere bei der Überwachung von Messdaten, anzutreffen sind, haben einen geringen Textanteil. XML wird hier also als Formalismus verwendet, um verbundartige Datensätze zu spezifizieren, deren Größe und/oder Schachtelungstiefe möglicherweise unbegrenzt ist und denen eine rekursiv definierte Struktur zu Grunde liegen kann. Wenn diese Datensätze unterschiedlich groß sind, in unterschiedlicher Weise geschachtelt sein oder eine unbestimmte Schachtelungstiefe haben können, dann stellt die Verarbeitung von XML-Strömen eine besondere Herausforderung dar. Überwachung von Datenströmen oder Anfrageauswertung gegen DatenströmeDie Überwachung eines Datenstroms ist die Suche nach bestimmten Mustern in den übersandten Daten wie etwa Nachrichten über ein bestimmtes Land in einem Strom von Pressemeldungen, große Kurschwankungen in einem Strom von Börsendaten oder bestimmte lebensbedrohliche Wertkombinationen in einem Strom von medizinischen Messdaten. Neben Überwachung" werden auch die Begriffe Filtern" und Anfragen" verwendet. In der Tat handelt es sich dabei um mehr oder weniger komplexe Anfragen, wie sie in Datenbankanwendungen zu finden sind. Es bietet sich daher an, zur Überwachung von Datenströmen die selben Anfragesprachen wie für Datenbankanfragen zu verwenden. In der Datenstromforschung werden derzeit in erster Linie SQL für Anfragen gegen Punkt- und Tupelströme [2] und XPath für Anfragen gegen XML-Ströme [5], sowie mehr oder weniger weitgehende Vereinfachungen dieser Anfragesprachen betrachtet. Für besondere Anwendungsgebiete werden spezielle Anfragesprachen definiert. So wurde z.B. am AT&T eine Anfragesprache namens Hancock mit dem Ziel entwickelt, in Tupelströmen über angerufene Telefonnummern Veränderungen im Benutzerverhalten zu erkennen, die auf Missbrauch hinweisen. Datenströme stellen neue Herausforderungen für die Anfrageauswertung dar. Neue Verfahren zur Anfrageauswertung werden benötigt, die eine zeitnahe Auswertung von möglicherweise komplexen Anfragen ermöglichen und die Speicherung von Daten und/oder Zwischenergebnissen so weit wie möglich einschränken. Anfragen gegen Datenströme werden manchmal kontinuierliche Anfragen genannt, da die Anfragen ununterbrochen oder kontinuierlich gegen eintreffende Daten ausgewertet werden. Davon unabhängig ist die Frage, zu welchem Zeitpunkt der Nutzer über Antworten informiert wird. Dies kann ebenfalls kontinuierlich, in vorgegebenen Zeitintervallen, beim Eintreten bestimmter Ereignisse oder sogar nur auf explizite Anforderung des Nutzers geschehen. Analyse von DatenströmenDie Analyse von Datenströmen besteht darin, aus Datenströmen aggregierte Werte zu ermitteln. Anwendungen der Datenstromanalyse sind z.B. die Trendanalyse, die Abrechnung über die Nutzung von Rechnern und Rechnernetzen sowie Verkehrswegen, die Systemüberwachung und etwa in der Astronomie oder Meteorologie die Früherkennung von Ereignissen. Wie die Datenstromanfrage verlangt die Datenstromanalyse neue platzsparenden Verfahren, die eine zeitnahe Verarbeitung ermöglichen. Die Datenstromanalyse beruht aber auf herkömmlichen Aggregationsformen. SichtenDie Indizierung der Daten in herkömmlichen Datenbanksystemen zur Beschleunigung des Zugriffs auf relevante Daten ist auf einem Datenstrom mit sequenziellem Zugriff nur sehr eingeschränkt möglich. Stattdessen werden manchmal Sichten oder Indizes über die Datensätze eines Datenstroms mit dem Ziel berechnet, jeden Datensatz im Strom mit geeigneten Metadaten anzureichern. Die Verwendung dieser Metadaten kann die Anfrageauswertung oder Datenanalyse beschleunigen, beispielsweise indem irrelevante Daten übersprungen werden. Merkmale der Datenströmenanfrage und -analyse
Datenstrom- contra DatenbanksystemeDie Anfrageauswertung und Analyse von Datenströmen stellt ein komplementäres Forschungsgebiet zu der Anfrageauswertung und Datenanalyse (siehe u.a. data warehouses) in Datenbanken dar. Aus praktischer Sicht ergänzt die Anfrageauswertung gegen Datenströme die Anfrageauswertung in Datenbanken, weil Datenströme gefiltert, d.h. angefragt, werden können, um eine Datenbank zu bevölkern. Der Vergleich zwischen der herkömmlichen Anfrageauswertung in Datenbanken und derjenigen gegen Datenströme ist interessant (Abb. 1).Während in Datenbanken die Daten in der Regel dauerhaft und zahlreich und die Anfragen flüchtig und gering an Zahl sind, sind bei Datenströmen die Anfragen dauerhaft und zahlreich, die Daten aber flüchtig. Publish-subscribe-Systeme, die aus Datenströmen (z.B. von Pressenachrichten) Daten gemäß Anfragen von Abonnenten filtern, speichern und aktualisieren, beruhen auf Datenbanken von Anfragen. Traditionelle Datenbanktechniken wie Indizierung können für Anfragen oder Teile von Anfragen angewandt werden. So indiziert das System XTrie [4] XPath-Anfragen. Mit solchen Indizes beschleunigt XTrie die Auswertung großer Mengen von Anfragen gegen den selben XML-Strom. |
Abb. 1 Vergleich Datenstrom- und Datenbanksysteme
Einige StromsystemeAurora [1] und STREAM [2] werten Anfragen gegen Tupelströme aus. Sie bieten Anfragealgebren mit ähnlichen Operationen wie die relationale Algebra und Fenster-basierte Aggregation an. Aurora kennt Qualitätsmerkmale (u.a. hinsichtlich der Datenrate, Exaktheit der Antwort, Verzögerung), die dazu dienen, eintreffende Tupel zu ignorieren, falls die Daten schneller eintreffen, als die Anfragen ausgewertet werden können. Aurora sammelt Statistiken, um spätere Anfrageauswertungen durch Veränderungen des Auswertungsnetzwerks zu beschleunigen. Abbildung 2 zeigt den gemeinsamen Anfrageplan zur Auswertung zweier Anfragen Q1 und Q2 im STREAM-System, wobei Q1 eine Selektion über einen Verbund der Ströme R und S und Q2 einen Verbund über die Ströme R, S und T darstellt. |
Abb. 2 Anfrageplan von STREAM zur Auswertung der Anfragen Q1 und Q2 gegen die Datenströme R, S und T
|
Weitere Tupelstromsysteme sind Gigascope, Hancock, NetFlow, OpenCQ, SEQ, SWAT, Telegraph und Tribecca. SPEX [5] wertet XPath-Anfragen gegen XML-Ströme aus. XPath-Anfragen werden zuerst in so genannte ForwardXPath-Anfragen übersetzt, die keine Rückwärtsachsen (wie parent oder ancestor) enthalten. Aus solchen Anfragen werden Netzwerke von Kellerautomaten generiert, wie in Abbildung 3 gezeigt, die einen XML-Strom wie folgt verarbeiten. |
Abb. 3 Kellerautomatennetzwerk von SPEX zur Auswertung der XPath-Anfrage /descendant::a[child::b[descendant::d or child::e]]/following-sibling::c
|
Jeder Automat leitet den XML-Strom unverändert oder annotiert (d.h. mit Zusatzzeichen ergänzt) an die Automaten weiter, die ihn folgen. Der erste Automat in annotiert den Anfang des ersten Elements; der letzte Automat out fügt die berechneten Antwortteilen zusammen. Die Automaten nutzen ihre Keller, um die Tiefe und/oder relative Position der Elemente im XML-Strom zu ermitteln und durch Annotationen zu markieren. So können u.a. Geschwisterbeziehungen (z.B. das nächste child") erkannt und weitergegeben werden. Zu einem or- oder and-Automat gehört ein cd-or- bzw. cd-and-Automat, welches das Ergebnis entsprechend verknüpft. Die als Ergebnis zu liefernden Elemente werden vom als Box dargestellten Automat ermittelt. SPEX kann XPath-Anfragen mit Prädikaten gegen XML-Ströme von unbegrenzter Tiefe und Größe auswerten. Die kombinierte Zeit- und Speicherkomplexität der SPEX-Anfrageauswertung wächst polynomiell in Länge und Anzahl der XPath-Anfragen. SPEX wird auch zur Auswertung von angenäherten Antworten unter Verwendung von Fensterverfahren eingesetzt. XMLTK [3] übersetzt mehrere XPath-Anfragen ohne Prädikate in einen einzigen deterministischen endlichen Automaten, der alle Anfragen gegen einen XML-Strom auswertet. Da die Anzahl der Zustände des erzeugten Automaten exponentiell in der Größe der Anfragen wächst, wurde eine träge" (lazy) Automatenerzeugung entwickelt. Weitere XML-Stromsysteme sind MatchMaker, NiagaraCQ, XPush, XSM, XTrie und YFilter. Alle ermöglichen eine gemeinsame Auswertung von gemeinsamen Teilanfragen. |
Hinweis: Die URLs entsprechen dem Stand bei der Veröffentlichung des Artikels und werden nicht aktualisiert. |