Datenbanksystementwicklung – Systemarchitektur & Prozessmodell – Knut Stolze [email protected] Systemarchitektur 2 Anfrageübersetzer (Compiler) Optimizer Record Manager Zugriffspfadverwaltung (Index Manager) Sperrverwaltung (Lock Manager) Pufferverwaltung (Buffer Manager) Speicherverwaltung (Memory Manager) Betriebssystemabstraktion (OSS) Fehlerbehandlung (Error) Katalog Manager (Catalog Manager) Laufzeitumgebung (RunTime) File Manager 3 Compiler Klasse: DbjCompiler Datenstrukturen – Eingabe: String mit SQL Anweisung, DbjTable, DbjIndex – Ausgabe: DbjAccessPlan Verwendet – Katalog Manager zur Validierung des Plans 4 Optimizer Klasse: DbjOptimizer Datenstruktur: DbjAccessPlan, DbjIndex, DbjTable Verwendet – Katalog Manager um Indexe und Tupel-Anzahl der Tabellen zu ermitteln – Eingebaute Regeln zur Optimierung (keep it simple!) 5 Catalog Manager Klasse: DbjCatalogManager Datenstrukturen: – Eingabe: DbjRecord – Ausgabe: TableId/IndexId/…, DbjTable, DbjIndex Verwendet – Record Manager um Kataloginformationen von den entsprechenden Tabellen zu erhalten – Eingebaute Definition der Katalogtabellen 6 RunTime Klasse: DbjRunTime Datenstrukturen: DbjAccessPlan, DbjTuple, DbjRecord, DbjIndexKey Verwendet – DbjTable (von Katalog Manager) zur Interpretation der Records in Tupel – Record Manager um die Records zu erhalten – Index Manager um Indexzugriff durchzuführen Anmerkungen – Übersetzt baumartigen Zugriffsplan in Serie von geschachtelten “Iteratoren” 7 Record Manager Klasse: DbjRecordManager Datenstrukturen: TupelId, DbjRecord, DbjPage Verwendet – Buffer Manager zum Zugriff auf die Seiten – Lock Manager um Datenseiten zu sperren Anmerkungen – Die Daten der Records werden aus dem Systempuffer in die DbjRecord Struktur kopiert 8 Index Manager Klasse: DbjIndexManager Datenstrukturen: DbjKey, TupelId, DbjPage Verwendet – Buffer Manager zum Zugriff auf die Seiten – Lock Manager um Indexseiten zu sperren Anmerkungen – Verwendet nicht Record Manager; Seiteninhalte werden selbst verwaltet! 9 Lock Manager Klasse: DbjLockManager Datenstrukturen: LockId, PageId Verwendet – Shared Memory für die Lockliste Anmerkungen – Sperrgranulat = Seite 10 Buffer Manager Klasse: DbjBufferManager Datenstrukturen: DbjPage, “char *” (Blöcke) Verwendet – File Manager um die Blöcke bereitzustellen – Shared memory für den Puffer Anmerkungen – Implementiert Force/Steal; ausser für geänderte Seiten – dort erfolgt No-Steal 11 Memory Manager Klasse: DbjMemoryManager Datenstrukturen: “char *” (Speicherbereiche/-blöcke) Anmerkungen – Verwendet keine anderen Komponenten; basiert nur auf Betriebssystem – Kann auch als Teil von OSS (Betriebssystemabstraktion) angesehen werden 12 File Manager Klasse: DbjFileManager Datenstrukturen: SegmentId, Dateien, “char *” (Blöcke) Anmerkungen – Verwendet keine anderen Komponenten; basiert nur auf Betriebssystem 13 Fehlerbehandlung Klasse: DbjError Datenstrukturen: DbjComponent, DbjErrorCode Anmerkungen – Verwendet keine anderen Komponente; wird aber von allen anderen genutzt! 14 Systemsteuerung Klasse: DbjSystem Datenstrukturen: keine Verwendet – Buffer Manager um Puffer einmalig anzulegen (bzw. freizugeben) – Lock Manager um Lockliste einmalig anzulegen (bzw. freizugeben) – Catalog Manager um Katalog zu initialisieren 15 Operating System Services (OSS) Abstraktion aller kritischen Betriebssystemfunktionen – File-I/O – Speicherverwaltung – Latching 16 Prozessmodell 17 Überblick Session 2 Session n Session 1 Lockliste Buffer Serverprozess legt an / zerstört 18 Internas von Sessions Session i Je 1 Instanz von: •Compiler •Optimizer •Catalog Manager •RunTime •Record Manager •Index Manager •Lock Manager •Buffer Manager •Memory Manager •File Manager 19 Anmerkungen Jede Transaktion/Session wird in genau einem Prozess abgearbeitet – Kein IPC (inter-process-communication) – Jeder Prozess hat eigene Instanzen von den verschiedenen Komponenten (Managern) Buffer & Lockliste liegen im Shared Memory – Zugriff von mehreren Transaktionen muss mittels Latches synchronisiert werden – Serverprozess ist nur für das Anlegen der Shared Memory Segmente zuständig 20