Datenbanken: Architektur & Komponenten 3-Ebenen-Architektur Moderne Datenbanksysteme sind nach der 3-Ebenen-Architektur gebaut: Anwendung 1 Web-Anwendung Anwendung 2 Java-Programm... Anwendung n Applikation Externe Schemata Datenbankentwurf Konzeptuelles Schema DBMS physischer Datenbankaufbau (B-Tree, Hash) Internes Schema 1
Datenbanken: Architektur & Komponenten 3-Ebenen-Architektur Anwendung 1 Web-Anwendung Anwendung 2 Java-Programm... Anwendung n Applikation Externe Schemata logische Datenunabhängigkeit Datenbankentwurf Konzeptuelles Schema Durch diese Architektur wird logische Datenunabhängigkeit garantiert: Es können Änderungen an einem externen Schema gemacht werden, ohne das konzeptuelle Schema zu verändern. Und umgekehrt! 2
Datenbanken: Architektur & Komponenten 3-Ebenen-Architektur Datenbankentwurf Konzeptuelles Schema physische Datenunabhängigkeit physischer Datenbankaufbau (B-Tree, Hash) Internes Schema Durch diese Architektur wird physische Datenunabhängigkeit garantiert: Es können Änderungen am internen Schema gemacht werden, ohne das konzeptuelle Schema zu verändern. Und umgekehrt! 3
Datenbanken: Architektur & Komponenten 3-Ebenen-Architektur Moderne Datenbanksysteme sind nach der 3-Ebenen-Architektur gebaut: Anwendung 1 Web-Anwendung Anwendung 2 Java-Programm... Anwendung n Applikation Externe Schemata logische Datenunabhängigkeit Datenbankentwurf Konzeptuelles Schema physische Datenunabhängigkeit physischer Datenbankaufbau (B-Tree, Hash) Internes Schema 4
Datenbanken: Architektur & Komponenten 5-Schichten-Modell Die Kommunikation eines Endbenutzers mit einem relationalen Datenbanksystem setzt eine Transformation des Relationalen Datenmodells (Tabellen, Datensätze) in Adress-Informationen in Speichermedien (Tracks, Zylinder) voraus! Diese Transformation wird durch das 5-Schichten-Modell nach Härder (1987) beschrieben! Dabei wird das relationale Datenmodell in 5 Schritten sukzessive in 5 Transformationskomponenten verändert, die über wohldefinierte Schnittstellen in Beziehung stehen. 5
Datenbanken: Architektur & Komponenten 5-Schichten-Modell SQL-Shell Datensystem Zugriffssystem Speichersystem Pufferverwaltung Umwandlung von Tabellen in geordnete Listen von Datensätzen und Umsetzung von deklarativen Anweisungen in navigierende Zugriffe auf diese Listen, Integritätskontrolle. Transformation der Datensätze in externe (logische) Tupel in Form von B-Bäumen oder Hash-Tabellen, Zugriffsorganisation, Indexstrukturen, Scans..., Transaktionsverwaltung. Transformation der externen Tupel in interne (physische) Datensätze, organisiert in Seiten (Vielfache von Datenbankblöcken). Management des Ladens und Auslagerns von Seiten als Byte- Container, Seitenzuordnung zu Dateien, Blöcken. Betriebssystem Externer Speicher Speicherzuordnung Blöcke auf Zylinder, Tracks, Treiberverwaltung für die externen Speichermedien. 6
Datenbanken: Architektur & Komponenten 5-Schichten-Modell SQL-Shell Mengenorientierte Schnittstelle MOS Datensystem Zugriffssystem Satzorientierte Schnittstelle SOS Speichersystem Interne Satz-Schnittstelle ISS Pufferverwaltung Systempuffer Schnittstelle SPS Betriebssystem Datei-Schnittstelle DS Externer Speicher Geräte-Schnittstelle GS 7
Datenbanken: Architektur & Komponenten 5-Schichten-Modell Objekte: Relationen, Tupel SQL-Shell MOS Datensystem Operatoren: SQL: select, insert, update, delete Externe (logische) Sätze, Indexstrukturen SOS Find next, store,... Zugriffssystem Interne (physische) Sätze, Bäume, Hash- Tabellen ISS Speichersystem insert into B-tree, delete from... Segmente, Seiten SPS load page x, flush page y,... Pufferverwaltung Dateien, Blöcke DS read block k, write block m,... Betriebssystem Zylinder, Spuren GS Externer Speicher Treiber-Operatoren... 8
Zu den wichtigsten Komponenten eines modernen Datenbanksystems zählen: Katalog oder Data Dictionary (DD) Log-Dateien Puffer Daten-Dateien Anfragesprache Datenbankmanagementsystem (DBMS) 9
Data Dictionary: Das Data Dictionary umfasst alle statischen und dynamischen Informationen über das implementierte Datenbanksystem, die zur Verwaltung notwendig sind! Dazu gehören u. a.: - Informationen über alle in der Datenbank angelegten Objekte; - Zugriffsrechte - Verteilung; - angelegte Datendateien, Log-Dateien, Konfigurationsparameterwerte,...; - Informationen über aktuell laufende Transaktionen mit ihren Datenbankoperationen (physical reads / writes,...); - Statistiken über Zugriffsverhalten, Speicherverwaltung etc.... zur Optimierung und für das Tuning; 10
Data Dictionary: In relationalen Datenbanksystemen besteht das DD aus Systemtabellen, die von den Benutzern eingeschränkt gelesen werden können. Bei ORACLE sind das die Sichten user_tables, user_trigger,..., dba_tables, dba_trigger, dba_objects,.... Der reservierte Hauptspeicher für das Datenbanksystem muss so gewählt sein, dass das DD komplett darin enthalten ist! Dies ist vor allem deshalb notwendig, da das DBMS, das Betriebssystem der Datenbank, zu jedem Zeitpunkt Informationen aus dem DD braucht! 11
Log - Dateien: In den Log-Dateien werden alle Ergebnisse aller Datenbankoperationen protokolliert: - Alle Werte vor einer Änderung (Before Image); Damit können alle Änderungen bis zu einem gewissen Punkt rückgängig gemacht werden (rollback). - Alle Werte nach einer Änderung (After Image); Damit können alle Änderungen bis zu einem gewissen Punkt etwa nach einem Datenverlust wieder hergestellt werden (roll forward). Damit die Log-Seiten möglichst sofort physisch geschrieben werden, verfügt ein Datenbanksystem über eigene (kleinere) Log-Puffer. 12
Log - Dateien: Das physische Schreiben der Log-Seiten aus dem Log-Puffer wird durch das implementierte Write Ahead Log (WAL) - Prinzip erzwungen: - Vor der Ausführung des Commit einer Transaktion müssen alle zugehörigen Log-Einträge zuerst physisch geschrieben werden; d.h. bevor die Daten in die Datendateien geschrieben werden, müssen sie erst in die Log- Dateien! (ermöglicht das Redo!); - Vor dem Auslagern einer modifizierten Datenseite aus dem Datenpuffer müssen alle zugehörigen Log-Einträge physisch geschrieben werden; d.h. vor dem Überschreiben der Daten auf der Festplatte müssen die alten Werte in die Log-Dateien! (ermöglicht das Undo!); 13
Log - Dateien: Logdateien wachsen in einer aktiven Datenbank sehr schnell! Deshalb werden sie zyklisch überschrieben: Log 1 Log 2 Log n Log-Switch Log-Switch... Log-Switch... Ist Log n voll geschrieben, findet wieder ein Log-Switch zu Log 1 statt. Dabei werden die Daten aus Log 1 gelöscht bzw. überschrieben! Daraus ergibt sich bei sensiblen Daten die Notwendigkeit, die Log-Dateien vor dem Überschreiben auf einem Speichermedium zu archivieren! 14
Log - Dateien: Die Größe und Anzahl der Log-Dateien, das WAL-Prinzip und das Archivieren der Log-Dateien beeinflussen das Antwortverhalten des Systems negativ! Log - Dateien beim Datenbanksystem ORACLE: Es gibt Rollback-Segmente, die die Werte vor einer Änderung speichern! Es gibt Redo-Log-Dateien, die die Werte nach einer Änderung speichern! Redo-Log-Dateien können in Log Groups gespiegelt werden! Die Datenbank kann prinzipiell in zwei Modi gefahren werden: - ArchiveLog - Modus: die Log-Dateien werden archiviert! - NoArchiveLog - Modus: die Log-Dateien werden nicht archiviert! 15
Puffer: Es gibt bei den modernen Datenbanksystemen Datenpuffer und Logpuffer. Die Größenwahl beider Puffer hat direkten Einfluss auf die Performance! Bei der Bestimmung der Puffergrößen muss zwischen Performance (möglichst große Puffer) und Datensicherheit (möglichst kleine Puffer) ein Kompromiss gefunden werden! Logpuffer sollten nicht zu groß gewählt werden, um das WAL-Prinzip und überhaupt das schnelle Schreiben in die Log-Dateien nicht zu gefährden! Die Puffergrößen werden bei den meisten Datenbanksystemen in einer Konfigurationsdatei festgelegt. Moderne Datenbanksysteme haben wegen des Transaktionskonzepts eine eigene Pufferverwaltung! D.h. sie sorgen selbst für die konsistente 16 Verarbeitung der Daten über die oben genannten Puffer. (5 Schichten Modell)
Datendateien: Über Datendateien wird den Datenbankobjekten physisch Speicherplatz zugewiesen. Wie diese Zuteilung bzw. Zuordnung realisiert ist, ist nicht standardisiert, also Hersteller abhängig! Bei ORACLE müssen alle Datenbankobjekte, die Speicherplatz benötigen, einem logischen Container, dem sogenannten Tablespace, zugeordnet werden. Jedem Tablespace können ein oder mehrere Datendateien zugewiesen werden. 17
Anfragesprache: Die Anfragesprache bei relationalen Datenbanksystemen ist das standardisierte SQL. Die Anfragesprache bei objektorientierten Datenbanksystemen ist das standardisierte OQL oder ein vom Hersteller bereitgestelltes Query-Modul. 18
DBMS: Das Datenbankmanagementsystem ist das Betriebssystem eines Datenbanksystems. Je nach Datenmodell unterscheidet man Relationales DBMS (RDBMS) oder Objektorientiertes DBMS (OODBMS). Das DBMS vermittelt zwischen den 3 Ebenen: Benutzern (externe Schemata), Datenbankdesign (konzeptuelles Schema) und dem physischen Datenbankaufbau (internes Schema). Das DBMS arbeitet auf 3 Datenbeständen: - den Daten-Dateien - den Log-Dateien - dem Data Dictionary 19
DBMS: Schematischer Aufbau eines DBMS: 20