Präsentation der System Architektur und des Prozessmodells

Werbung
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
Herunterladen