1. Einführung: 1.3 Aufbau und Architektur von DBMS Bestandteile eines Datenbanksystems Datenbanksystem Datenbanksystem Datenbank (DB) Speicher für Datenbestände (c) schmiedecke 06 Datenbankmanagementsystem (DBMS) Oberbegriff Systemschnittstelle Software zur Verwaltung der Datenbestände DB1 - 2 - Architekturen 2 DBMS-Anforderungen Codd 1982 1. Daten-Integration incl. Metadaten 2. Operationen einheitliche DB-Sprache 3. Katalog (Ort für Metadaten) 4. Benutzersichten in DB-Sprache definierbar 5. Konsistenz-Erhaltung DB-Sprache sichert logische Korrektheit 6. Datenschutz DB-Sprache zur Rechte-Differenzierung 7. Transaktionen Zusammenfassung von Operationsfolgen zu nicht unterbrechbaren Einheiten 8. Synchronisation „Parallele“ Transaktionen 9. Datensicherung bei Systemfehlern Rückführung der Daten in einen konsistenten Zustand (c) schmiedecke 06 DB1 - 2 - Architekturen 3 Architekturmodelle Zwei grundsätzlich Aufgaben, beantwortet durch zwei Referenz-Architekturen 1. Datenorganisation • • • 2. • • Abbildung der Daten auf Datenträger Modellierung, Strukturierung und Speicherung Beschreibung von Konsistenzbedingungen Drei-Ebenen-Schema-Architektur (1975) Funktionen Spezifikation und Zusammenhang der Systemkomponenten Außen- und Innen-Schnittstellen Drei-Ebenen-System-Architektur (1978) (c) schmiedecke 06 DB1 - 2 - Architekturen 4 "Schema"-Ebenen ohne DB Anw.1 Anw.2 Anw.3 externe Ebene Anwendungsdateien Abbildungskonzepte Datenspeicher (konzeptuelle Ebene) physische Ebene (c) schmiedecke 06 DB1 - 2 - Architekturen 5 Schema: Abbildung einer Datenmenge auf Datenstrukturen Stufen der Datenunabhängigkeit • Anwendungsunabhängigkeit / logische Datenunabhängigkeit: Anwendungsprogramm arbeitet nur mit dem Teil des Datenbestandes, den es benötigt (Datenbestand ist unabhängig von Änderungen der AP) • Implementierungsunabhängigkeit / physische Datenunabhängigkeit: Datensicht des Anwendungsprogrammes ist unabhängig von der Datenstruktur der gespeicherten Daten • • • Architektur-Vorschlag nach ANSI/X3/SPARC: Aufteilung eines DB-Schemas in 3 aufeinander aufbauende Ebenen Datenbeschreibung 3fach (Schemata je Ebene) (c) schmiedecke 06 DB1 - 2 - Architekturen 6 Drei-Ebenen-Schema-Architektur Anw.a externe Ebene Anw.b Anw.m externes Schema 1 konzeptuelle Ebene interne Ebene (c) schmiedecke 06 Anw.n externes Schema n Konzeptuelles Schema Logisches Schema Log. Schema 2 Internes Schema DB1 - 2 - Architekturen 7 Kleines Glossar • UoD (Universe of Discourse): betrachteter Realweltausschnitt • Datenmodell: Konzepte für die Abbildung der Realwelt in Datenstrukturen • Datenbankschema: Abbild des UoD in Datenstrukturen auf Basis eines Datenmodells, Ergebnis und Ziel des Abbildungsvorganges = Datenbeschreibung für einen Realweltausschnitt (unabhängig von einzelnen Programmen und Benutzern) • Datenbankausprägung: zu einem Zeitpunkt logisch widerspruchsfreie Belegung der Modellelemente des Datenmodells mit Daten der Anwendung • Integritätsbedingung: Bedingung für die logische Widerspruchsfreiheit des Schemas • Ebene (der Modellierung): Abstraktionsniveau (der Modellierung) (c) schmiedecke 06 DB1 - 2 - Architekturen 8 Aufgabe der Schemata Externes Schema (ES): definiert (logische) Benutzersicht auf DB-Struktur für ein Anwendungsprogramm / einen Benutzer -> anwendungsspezifischer Ausschnitt des konzeptuellen Schemas Konzeptuelles Schema (KS): logische Gesamtsicht auf die Struktur der DB -> implementierungsunabhängige Beschreibung mit einem DBMS-unabhängigen (abstrakten) Datenmodell Logisches Schema (LS): logische Gesamtsicht auf die Struktur der DB -> von Datenmodell eines DBMS abhängiges Abbild des konzeptuellen Schemas, unabhängig von physischer Realisierung Internes Schema (IS): physische Struktur der DB (Satzformate, Zugriffspfade, Speicherformate) physische Gesamtsicht (c) schmiedecke 06 DB1 - 2 - Architekturen 9 -> abhängig vom konkreten DBMS Wer braucht welches Schema? DB-Nutzer DB-Administrator DB-Designer/Entwickler (c) schmiedecke 06 DB1 - 2 - Architekturen 10 Drei-Ebenen-Systemarchitektur (c) schmiedecke 06 DB1 - 2 - Architekturen 11 Quelle:http://www.kreissl.info/diggs/db_01.php Verarbeitungsschritte einer Anfrage (Transformation) 1. 2. 3. 4. 5. 6. 7. 8. Syntax prüfen (Integritätscheck) Prüfen, ob Daten (Tabellen) in Schema bekannt Zugriffsrechte prüfen Festellen welche Operationen intern auszuführen sind und wie der Anfrage-Operand intern gespeichert ist Erstellung eines effizienten Codestückes zur Antwortberechnung Operanden aus Datenbank lesen Aufbereiten der Operanden (Optimieren) Sicherstellen, dass Operanden nicht während Ausführung durch andere Anfragen geändert werden (Synchronisation) (c) schmiedecke 06 DB1 - 2 - Architekturen 12 Komponentenklassen: • Externe Tansformationskomponenten: Benutzerkomponenten: interaktive Anfrage- und Änderungswerkzeuge für anspruchsvolle Laien, vorgefertigte DB-Anwendungsprogramme: – E/A-Prozessor (mit Parser) – Update-Prozessor (mit Integritätsprüfung) – Query-Prozessor • Externe Tansformationskomponenten: Programmierkomponenten: – Einbettung höherer PL, 4GL oder graphischer Sprache, Vorübersetzer für eingebettete Kommandos – DB-Operationen – Werkzeuge zur Definition von Menüs, Masken etc. • Logische Transformationskomponenten: Umwandlung zwischen Anfrage- und Updateoperationen und Plattenzugriffen (und zurück) – Optimierer – Auswerter – Codegenerator (c) schmiedecke 06 DB1 - 2 - Architekturen 13 Komponentenklassen: • Interne Transformationskomponenten – Transaktionsmanager – Geräte- und Puffer-Manager • Definitionskomponenten: ermöglichen Daten-, Sichtdefinition, Definition der Zugriffspfade und Dateiorganisationsformen – extern: Sichtdefinition – logisch: Datendefinition – intern: Dateiorganisation • Data Dictionary: verwaltet die Metadaten aus den Definitionskomponenten • Administrationskomponenten – Autorisierungskontrolle – Recoverymanager – "Logbuch" • Die Komponentenklassen der Referenz-Architektur und ihre Schnitt(c) schmiedecke 06 DB1 - 2 - Architekturen 14 stellen sind in konkreten Systemarchitekturen wiedererkennbar. ... nochmal Datenunabhängigkeit Physische Datenunabhängigkeit: Bei Änderungen des internen Schemas sind nur die Transformationsvorschriften zu ändern. Externe Sichten bleiben unbeeinflusst. Die Anwendungen sind von der physischen Dateiorganisation isoliert. Logische Datenunabhängigkeit: Die Anwendungen werden von der konzeptuellen Ebene der Modellierung isoliert. In Abhängigkeit von der Flexibilität der Transformationen können ggf. unterschiedliche Interpretationen der Daten in den externen Schemata erfolgen. Statische Datenunabhängigkeit: Die Anwendung muss bei Änderungen im konzeptuellen oder internen Modell neu gebunden werden. (Binden zur Übersetzungszeit) Dynamische Datenunabhängigkeit: Anwendungen sind von allen Änderungen völlig unabhängig. (Erreicht durch Binden zur Zugriffszeit) (c) schmiedecke 06 DB1 - 2 - Architekturen 15 Welche Aufgaben haben die einzelnen Komponenten? externe Transformation logische Transformation interne Transformation (c) schmiedecke 06 Data Dictionary DB1 - 2 - Architekturen externe Definition logische Definition interne Definition 16 ...und wie passt die 3-SchichtenArchitektur der Softwaretechnik dazu? Präsentation (Benutzerschnittstelle, Client) Fachlogik (Kern des Anwendungsprogramms, Server) Datenhaltung (Datenbank, Datenserver) (c) schmiedecke 06 DB1 - 2 - Architekturen Programmierkomponenten des DBMS 17 ... und nun noch ein bisschen SQLPraxis • Wir kennen – Projektion (Select) – Selektion (Where) – Verbund (Join) – Aggregation • Es fehlen noch – Unteranfragen (Geschachtelte Anfragen) (c) schmiedecke 06 DB1 - 2 - Architekturen 18 Unteranfragen • Geschachtelte Anfragen: – SFW-Block enthält einen oder mehrere SFBBlöcke. • Üblichste Schachtelung: – In der WHERE-Klausel • Das Ergebnis eines SFW-Blocks kann sein – Ein Wert (oder eine Zeile) Aggregatfunktionen – Eine Spalte oder eine Tabelle (c) schmiedecke 06 DB1 - 2 - Architekturen 19 Unteranfragen mit Aggregatfunktionen Einfache Anfrage: !" Geschachtelte Anfrage: (c) schmiedecke 06 DB1 - 2 - Architekturen 20 Quantifizierte Anfragen • Ein Quantor bewirkt, dass ein Kriterium auf alle Elemente einer Menge angewendet wird • Quantoren ermöglichen also die Anwendung von Vergleichsoperationen auf tabellenwertige Ergebnisse von Unterabfragen • • • • ALL SOME, ANY EXISTS IN (c) schmiedecke 06 Vergleich muss auf alle Elemente zutreffen Vergleich muss auf mind. ein Elem. zutreffen Menge darf nicht leer sein Vergleichswert muss Element der Menge sein DB1 - 2 - Architekturen 21 Quantifizierte Anfragen: IN # $ $ % &# ' ( ) ' ' ( ) *' # $ $ &# # $ $ +, /+ (c) schmiedecke 06 + 0 12 . . * 1 DB1 - 2 - Architekturen 22 Quantifizierte Anfragen: EXISTS, SOME # $ $ 3 4& 5 +, - + .6 67# $ $ 0 37# $ $ # $ $ 0 # $ $ +, - (c) schmiedecke 06 + . DB1 - 2 - Architekturen 23 Wie sage ich's meiner Datenbank? • Es gibt meist verschiedene Möglichkeiten, dasselbe auszudrücken • Oft lassen sich Subqueries durch Joins ersetzen und umgekehrt. • Gut ist, was lesbar ist. • Effizienz: die erste WHERE-Klausel sollte möglichst viele Daten eliminieren. (c) schmiedecke 06 DB1 - 2 - Architekturen 24 genug für heute Nächstes Mal: Wie entwickelt man eine gute Datenbank?