Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel 5...
-
Upload
reginhard-ebben -
Category
Documents
-
view
104 -
download
0
Transcript of Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel 5...
UniversitätKarlsruhe (TH)
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5
Zugriffsschicht: Satzverwaltung
2
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Gegenstand des Kapitels
Mengenorientiertes Datenmodell
Datenmodell
Dateien
Dateiverwaltung
Geräteschnittstelle
Anfragebearbeitung
Satzorientiertes Datenmodell
Speicherstruktur
Schneller Transport zwischen Haupt- und Hintergrundspeicher
Hauptspeicherseiten u. Segmente
Segment- u. Pufferverwaltung Bevorratung von Daten im Hauptspeicher (rechtzeitige Bereitstellung vor Benutzung)
Transparenter homogener Speicher Datentypen:
Seite = feste Anzahl von BytesSegment = var. Anzahl von Seiten
Operatoren:Anforderung/Freigabe von SeitenSegmente anlegen/öffnen/schließen
Datentypen:Block = feste Anzahl von BytesDatei = variable Anzahl v. Blöcken
Operatoren: Dateien anlegen/öffnen/schließen Lesen/Schreiben von Blöcken
Geräte-E/A
Satz- u. Satzmengenverwaltung
Satzzugriffsstrukturen
Zugriffsschicht
Vorschau auf zukünftig benötigte Daten
Vermeiden nicht aktuell benötigter Daten
Datentypen:Sätze und Satzmengen
Operatoren:Operatoren auf Sätzen
Datentypen:Satzmengen
Operatoren:Operatoren auf Mengen
Datentypen:phys. Zugriffsstrukturen auf Sätze
Operatoren:seq. Durchlauf, gezielte Suche
Optimaler Einsatz der logischen Ressourcen
Performanz
3
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Seiten vs. Datensätze
Seite: Orientierung an
Gerätestrukturen Gleichförmige und feste
Größe Zugriff auf die einzelne Seite Bevorratung im Puffer
aufgrund von internen Schätzmodellen
Phys. Datensatz: Orientierung an
Anwendungsbedürfnissen Ungleichförmige und zeitlich
variable Größe Zugriff auf den einzelnen
Satz unabhängig von Zugriffen
auf andere Sätze im Kontext von Zugriffen
auf weitere Sätze Bevorratung auf einer Seite
und damit im Puffer aufgrund von Schätzmodellen oder Vorgaben der Anwendung
4
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Satzzugriffsstrukturen
Phys. Datensatz: Orientierung an
Anwendungsbedürfnissen Ungleichförmige und zeitlich
variable Größe Zugriff auf den einzelnen
Satz unabhängig von Zugriffen
auf andere Sätze im Kontext von Zugriffen
auf weitere Sätze Bevorratung auf einer Seite
und damit im Puffer aufgrund von Schätzmodellen oder Vorgaben der Anwendung
Satzzugriffstruktur: Satzmenge so organisiert, dass performanter Zugriff
möglich ist, ggf. mittels zusätzlicher Hilfsstrukturen
ggf. Ballung: Anordnen von gleichzeitig oder unmittelbar
aufeinander folgend zugegriffener Datensätze
Abhängigkeit?
5
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Anordnung Datensätze auf Seiten: Satzverwaltung
Bei Strukturen mit Gemeinsamkeiten
Datenmodell
Physische DB (satzorientiert)
Zugriffs-struktur
Physischer Datensatz
enthält▶0..1
enthält▶0..1..
Physische DB (seitenorientiert)
Segment Seite
repräsentiertdurch
▼
gespeichertin▼
1..
1
1..?
1..?enthält▶
0..1enthält▶
0..1
Derselbe Satz kann mehreren Zugriffstrukturen
angehörenPerformanter Zugriff
6
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.1Kapitel 5.1
SeitenspeicherverwaltungSeitenspeicherverwaltung
7
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Freispeicherverwaltung: Bereitstellung einer Seite mit genügend freiem Speicher
für die Speicherung eines Satzes
Aufgabe
Physische DB (satzorientiert)
Zugriffs-struktur
Physischer Datensatz
enthält▶0..1
enthält▶0..1..
Physische DB (seitenorientiert)
Segment Seite
repräsentiertdurch
▼
gespeichertin▼
1..
1
1..
1enthält▶
0..1enthält▶
0..1
8
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Pro Segment gibt es eine Freispeichertabelle FT, mit FT(i) = noch verfügbarer freier Speicherplatz auf Seite i.
FT muss dauerhaft gespeichert werden; hierzu werden die Einträge von FT auf Seiten abgebildet: Ein Eintrag von FT habe die Länge L. Die Seitengröße sei PS, und die Netto-Seitengröße NETPS
(Seitengröße minus Größe des Seitenkopfes, der für Verwaltungsinformationen reserviert ist).
Auf eine Seite passen k Einträge der Freispeichertabelle FT:
Sei s die Anzahl der Seiten des Segments. Um alle Einträge von FT für die Verwaltung des freien Speichers von s Seiten zu speichern, benötigt man n Seiten:
LNETPSk
ksn
Verwaltung freier Seiten (1)
9
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Verwaltung freier Seiten (2)
Da Freispeicherseiten häufig durchsucht werden müssen, minimiere deren Zahl stets L = 1 Byte!
Folge: Der Speicher auf einer Seite wird in Gruppen von g = ⌈PS/28 = ⌉ ⌈PS/256 ⌉ Bytes eingeteilt und gruppenweise verwaltet.
PS 256 B …. 4096 B
g 1 B …. 16 B
Unscharfe Verwaltung mit Verschnitt
Scharfe Verwaltung
10
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Ablage der Freispeichertabelle (1)
Option 1:
FT belegt die ersten n Seiten des Segments.
Nur geeignet bei statischer Segmentgröße s.
Eine Erweiterung der FT ist nur durch Verschieben von Daten auf Seiten möglich („Freimachen“ der Seiten n+1 bis n+m, wenn m weitere Seiten für FT benötigt werden).
Option 2:
Äquidistante Verteilung von FT auf die Seiten ik+1, i=0,1,2,…
Zu empfehlen bei dynamischem Wachstum von Segmenten.
11
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
•••
Seite 3 Seite 4 Seite 50Seite 1 Seite 2
02560
1520
0560
Freispeichertabelleseiten Nutzdatenseiten
Ablage der Freispeichertabelle (2)
... 320...
Option 1:
12
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
•••
Seite 39 Seite 40 Seite 41Seite 1 Seite 2
Freispeichertabelleseiten Nutzdatenseiten
Ablage der Freispeichertabelle (3)
02560
1520
0560 ... ... 320
•••
Option 2:
13
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Freispeichertabelle Seitentabelle
Bei indirekter Seitenadressierung verbunden mit einer indirekten Einbringstrategie kann FT an die Seitentabelle angebunden werden: FT(i) zusammen mit Tabelle(i). Vorteil: Insgesamt Verringerung der Schreibvorgänge für
Seitentabelle und Freispeichertabelle.
Nachteil: Verstoß gegen Schichtenprinzip; die Seitentabelle ist eine interne Datenstruktur der Segment-Verwaltung, die Freispeichertabelle eine interne Datenstruktur der Zugriffsschicht.
14
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
B2
B3
Bk+3
B4
...
B5
...
Bk+n
Bk
B1
Bk+1
P1 P2 P3 ... Pk P1‘ P2‘ P3‘ ... Pn‘
Segment S1
Segment S2
B2 B4 B5 ... Bk+2 B1 Bk B3 ... Bk+3
Seitentabelle von S1
164 50 60 ... 112 200 224 133 ... 91
Seitentabelle von S2
Freispeicher-tabelle von S2
Bk+2
Freispeichertabelle Seitentabelle
Freispeicher-tabelle von S1
15
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.2Kapitel 5.2
Platzierung von Datensätzen: GrundsätzePlatzierung von Datensätzen: Grundsätze
16
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
(Zugriffsstruktur-)gesteuerte Platzierung: Die Anwendung macht Voraussagen zur Art und Abfolge der Zugriffe. Die Zugriffsstruktur kontrolliert eigenständig die Platzierung
ihrer Datensätze auf Seiten.
(Zugriffsstruktur-)freie Platzierung: Die Anwendung macht keine Voraussagen zur Art und Abfolge der Zugriffe. Bestenfalls können interne Schätzmodelle eingesetzt werden. Die Zugriffsschicht platziert die Datensätze nach
eigenständigen Kriterien.
Platzierung von Datensätzen auf Seiten
Nächstes Kapitel
Dieses Kapitel
17
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Eigenschaft von Datensätzen
Datensätze besitzen stets variable Länge:
Die Anzahl der Felder und die Länge der Feldwerte können zwischen Sätzen variieren, können jeweils dynamisch wachsen und schrumpfen
Vergrößerung oder Verkleinerung des Datensatzes.
Sicht der Zugriffsschicht: Nutzdatenbereich unstrukturiert (seine Verwaltung obliegt
höheren Schichten), aber die Nutzdatenlänge muss angegeben werden.
Je nach Art der Verwaltung kommen noch weitere Überhangfelder hinzu.
L Nutzdaten
18
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.3Kapitel 5.3
Verwaltung kleiner DatensätzeVerwaltung kleiner Datensätze
19
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kleiner Datensatz: Datensatz, dessen Länge kleiner als die Seitengröße ist.
Jeder (kleine) Datensatz wird vollständig innerhalb einer Seite gespeichert.
Eine Seite kann jedoch mehrere Datensätze enthalten.
Datenmodell
Physische DB (satzorientiert)
Zugriffs-struktur
Kl. Physischer Datensatz
enthält▶0..1
enthält▶0..1..
Physische DB (seitenorientiert)
Segment Seite
repräsentiertdurch
▼
gespeichert in▼
1..
1
1..
1enthält▶
0..1enthält▶
0..1
20
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Freispeicher innerhalb einer Seite
Üblich: Kompakte Verwaltung des freien Speichers: Der gesamte freie Speicher einer Seite ist ein
zusammenhängender Speicherbereich. Vorteil: Es steht immer der gesamte freie Speicher für die
Allokation zusammenhängender Speicherbereiche zur Verfügung.
Nachteile: Verschiebeaufwand bei Freigabe von Speicher, Umadressierung der Datensätze auf der Seite.
Verwaltungsinformation im Seitenkopf: Falls der freie Speicher am Anfang oder Ende der Seite liegt, genügt entweder Anfangsadresse oder Länge des freien Speichers.
21
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Seitenkopf
100 3600
Freispeicher innerhalb einer Seite
Seite 10
Sa
Sa
S
S
S
Satz
Satz
Satz
Satz C
Satz A
Satz Etz D
tz B
atz F
atz G
atz H
K
L
M
22
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.3.1Kapitel 5.3.1
EinzelsatzablageEinzelsatzablage
23
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Forderungen an die Adressierung
Forderungen:
Stabilität: Da die Adresse eines Satzes an sehr vielen Stellen in der Datenbasis vorkommen kann (z.B. in mehreren Zugriffsstrukturen), und oft gar nicht alle Stellen bekannt sind, an denen die Adresse eines Satzes vorkommt, sollte die Adresse eines Satzes über die Lebensdauer der DB relativ stabil bleiben.
Flexibilität: Der Satz sollte auf den Seiten des Segments verschiebbar sein (innerhalb einer Seite und über Seitengrenzen hinweg), um bspw. Wachstumsschwankungen auffangen zu können.
24
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Lösungsansätze für die Adressierung
Direkte Adresse eines Satzes: Nummer der Seite und Offset innerhalb der Seite, an dem sich der Satz befindet. Entweder instabil oder inflexibel.
Lösung: Vorschalten einer indirekten Adresse ( Stabilität), aus der die direkte Adresse zu ermitteln ist ( Flexibilität).
Zu untersuchen: Einfachheit der Ermittlung versus Stabilitätsverhalten.
TID
LID
PPP
25
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Einführung von seitenlokalen Tabellen. Die Einträge der Tabelle werden als Slots bezeichnet. Sie enthalten die relativen Adressen (Offsets) der
Datensätze auf der Seite. Die Slottabelle und deren Größe wird im Seitenkopf der
Seite verwaltet.
Eine Satzadresse ist ein Paar (Seitennummer, Slotnummer) und heißt Tuple identifier (TID).
Für die Repräsentation von Slotnummern genügt meist 1 Byte; bei 32 bit-Satzadressen bleiben 24 bit für die Seitennummer.
TID (1)
26
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
10
ext.TID(Satz C)
5
Seitenadresse Slotnummer
24 bit 8 bitSeitenkopf
100 3600
TID (2)
Seite 10
Sa
Sa
S
S
S
Satz
Satz
Satz
Satz C
Satz A
Satz Etz D
tz B
atz F
atz G
atz H
K
L
M
Satz C
27
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
TID von Datensatz R1
P123 3
Segment S4711
#Slots:6
P123
5 4 3 2 1 0
Für die Verschiebung eines Satzes innerhalb einer Seite wird nur der zu dem Datensatz gehörende Slot auf den neuen Offset des Satzes gesetzt.
Der TID bleibt beim Verschieben eines Satzes innerhalb der Seite unverändert.
Beispiel: Verschieben von Datensatz R1 innerhalb von Seite P123.
TID (3)
R1R1
28
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Flexibilität: Wenn ein Satz von einer Seite verdrängt und auf eine andere Seite verschoben wird, soll sein TID unverändert bleiben.
Hierzu wird ein sogenannter Stellvertretersatz auf der alten Seite eingeführt, der auf den neuen Speicherplatz des Satzes verweist.
Der Stellvertretersatz muss natürlich kleiner sein als der verdrängte Satz, da sonst das Verdrängen des Satzes von der Ursprungsseite keinen Speichergewinn bringt.
Beispiel: Satz R1 wird von Seite P123 auf Seite P504 verschoben.
TID (4)
29
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Segment S4711
#Slots:6
P123
5 4 3 2 1 0
#Slots:4P504
3 2 1 0
TID von Datensatz R1
P123 3
Rückwärtsverweis und Nutzdaten von Datensatz R1
R1P123 3= Stellvertreterbit
= Verdrängungsbit
TID (5)
R1P504 2
Stellvertretersatz
30
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Wird ein bereits verdrängter Satz von seiner jetzigen Seite erneut verdrängt, dann wird
1. eine neue Seite für den Satz gesucht,
2. der TID des Satzes auf der neuen Seite in den Stellvertretersatz auf der Ursprungsseite (Home page) des Satzes eingetragen. Die Home Page des Satzes wird anhand des
Rückwärtsverweises ermittelt.
Die Verweiskette bei mehrfacher Verdrängung eines Satzes bleibt so auf 1 Verweis beschränkt.
Dabei kann es auch zu Zurückholen auf die Home Page kommen.
Beispiel: Erneutes Verdrängen von Satz R1 auf Seite P345.
TID (6)
31
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Segment S4711
#Slots:6
P123
5 4 3 2 1 0
#Slots:4P504
3 2 1 0
TID von Datensatz R1
P123 3
R1P123 3
TID (7)
R1P504 2
Stellvertretersatz
P345
3 2 1 04
#Slots:5
R1P123 3
32
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Segment S4711
#Slots:6
P123
5 4 3 2 1 0
#Slots:4P504
3 2 1 0
TID von Datensatz R1
P123 3
TID (7)
R1P504 2
Stellvertretersatz
P345
3 2 1 04
#Slots:5
R1P123 3
P345 4
33
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Bewertung des TID-Konzeptes
Vorteile: Jeder Datensatz wird mit maximal 2 Seitenzugriffen
aufgefunden. Bei 10 % verdrängten Sätzen ergibt sich ein mittlerer Zugriffsfaktor
von 1.1 Seitenzugriffen pro Satz.
Nachteile: Ungünstig bei Seitenspalt-Verfahren, bei denen volle Seiten
geteilt und die Hälfte der Datensätze auf eine neue Seite verschoben werden (Abhilfe: Zugriffsstruktur-Steuerung!).
Langfristig instabil: Bei Löschen und Reorganisation ändern sich die TIDs, zur Anpassung müssen alle Vorkommen der alten TIDs in der Datenbasis gefunden werden.
TID nur eindeutig im Segment.Fazit: Hohe Flexibilität, mittelmäßige Stabilität, schneller Zugriff.
34
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
LID (1)
Segment S4711
#Slots:6
P123
5 4 3 2 1 0
R1
logischer Identifikator
(LID)
345.208 P123 3
TID
Zuordnungstabelle
Logischer Identifikator von Datensatz R1
Langfristig stabiler Identifikator
35
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Realisierungsvariante 1: Laufende Nummer Vorteil: Der einfachste Weg, eindeutige Identifikatoren zu
erzeugen, ist das Inkrementieren eines Zählers. Kurze LIDs (z.B. 32 bit):
Die Größe der DB und damit die Performanz werden positiv beeinflusst.
Mit 32 bit lassen sich 4 G Datensätze identifizieren Ausreichend für die meisten Anwendungen. Andernfalls Wiederverwendung von Identifikatoren
(Fehlerquelle!)
Lange LIDs (z.B. 64 bit): Vorrat verfügbarer Identifikatoren größer. Man kann es sich leisten, die LIDs gelöschter Datensätze
nicht wiederzuverwenden.
LID (2)
36
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Realisierungsvariante 2: Strukturierte Identifikatoren
Sie enthalten Informationen über den Datensatz plus laufende Nummer. Beispiele: Wert eines Schlüsselattributs der logischen Ebene; Segment-, DB-, Typidentifikatoren; bei verteilter DB die Adresse des Rechners, auf dem der Datensatz erzeugt wurde.
Vorteil: Informationen können bereits dem logischen Identifikator entnommen werden.
Nachteile: Längere Identifikatoren, komplizierte Generierungsverfahren für Identifikatoren, i.Allg. wird nicht der gesamte Raum möglicher Identifikatoren genutzt.
LID (3)
37
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Varianten für die Realisierung von Zuordnungstabellen:
Geltungsbereich einer Zuordnungstabelle: eine Tabelle für die gesamte DB (sehr große Tabelle, TIDs
müssen um Segmentnummer ergänzt werden)
eine Tabelle pro Segment eine Tabelle pro Zugriffsstruktur.
Speicherung von Zuordnungstabellen: Abbildung auf Seiten notwendig. Schnelle Suche: Speicherung sortiert oder über eine
Hashtabelle.
LID (4)
38
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Bewertung des LID-Konzeptes
Vorteile: Beim Verschieben/Löschen eines Satzes muss allein sein
Eintrag in der Tabelle angepasst/beseitigt werden. Langfristig stabil: LIDs überleben Reorganisation der DB.Nachteile: Für gegebenen LID sind mindestens 2 Seitenzugriffe
notwendig, um auf einen Satz zuzugreifen. Oft noch mehr: Bei Hashverfahren: Es können mehr als 2 Seitenzugriffe
erforderlich sein. Problem des virtuellen Hauptspeichers.
Eigene Transaktionstechniken für Zuordnungstabelle.Fazit: Höhere Zugriffskosten, hohe Stabilität, hohe Flexibilität.
39
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
LID-Konzept mit folgender Erweiterung: Satzadresse ist Paar (LID, TID):
TID verweist „mit hoher Wahrscheinlichkeit“ auf den Speicherplatz des Datensatzes.
TID (und auch Paar) wird als Probable Page Pointer (PPP) bezeichnet.
In den Slottabellen einer Seite ist in jedem Slot zusätzlich zum Offset der LID des Satzes gespeichert.
Beim Erzeugen eines Datensatzes geht seine aktuelle TID in Zuordnungstabelle und PPP ein.
Wird ein Datensatz verschoben, dann wird der TID in der Zuordnungstabelle angepasst. Dagegen: faule Anpassung der PPP bei deren Verwendung.
PPP (1)
40
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
345.208
P123
R1
2 1 0
Segment S4711
P378
R0815
2 1 0
345.208
PPP(R1)
P378 1
PPP (2)
1. Zugriff über den TID, der in dem PPP enthalten ist
logischer Identifik.
345.208 P123 2
TID
Zuordnungstabelle
veraltet
2. Zugriff auf Zuordnungstabelle über log. Identifikator
3. Zugriff über aktuellen TID
270.450
4. Ersetzen dieses veralteten TIDs
P123 2
41
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Vorteile: Schnellerer Zugriff als bei LIDs.
Bei 10 % verdrängten Datensätzen durchschnittlich 1.2 Seitenzugriffe pro Satzzugriff.
Nachteile: Hoher Speicherplatzbedarf wegen langer Satzadressen. Anpassung veralteter TIDs in PPPs erfordert
Schreibzugriff.Fazit: Breiter gestreute Ermittlungskosten, hohe Stabilität und
Flexibilität, hoher Aufwand. Nur bei hoher Dynamik (häufiges Verdrängen von Sätzen)
bzw. häufigen Reorganisationen mit TID-Konzept konkurrenzfähig.
Bewertung des PPP-Konzeptes
42
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.3.2Kapitel 5.3.2
Ballen von DatensätzenBallen von Datensätzen
43
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Ballungszeitpunkt
Wann bestimme ich zu einem Datensatz die Seite, auf der der Satz gespeichert werden soll? 1. Zum Zeitpunkt des Erzeugens: Datensätze erhalten sofort
nach ihrer Erzeugung eine Seite zugewiesen. Auf diese Art kann die Ballung der Datensätze nur begrenzt optimiert werden, da die „guten“ Seiten bereits voll sein können.
2. Beim Commit: Transaktionen weisen allen erzeugten Datensätzen zunächst nur temporäre Speicherplätze zu und versuchen beim Commit, eine gute Ballung für die neu erzeugten Datensätze aufzubauen.
3. Bei der Reorganisation: Die beste Art, eine gute Ballung aufzubauen, besteht in einer vollständigen oder teilweisen Reorganisation der DB. Dabei können die Datensätze unabhängig von ihrem Erzeugungszeitpunkt geballt werden, da man im Vollbesitz aller Informationen ist.
Kon
text
wis
sen,
Qua
lität
der
Clu
ster
ung
44
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Aufgabe 2: Wähle geeigneten Ballungsalgorithmus
Aufgabe 1: Erstelle das Modell
Ballungsproblem
Definition des Ballungsproblems: Gegeben:
1. Eine Menge von physischen Datensätzen, 2. die Größe der physischen Datensätze, 3. ein Schätzmodell für das Nutzungsprofil, das angibt, wie
häufig auf zwei Datensätze direkt hintereinander zugegriffen wird,
4. die Seitengröße. Ausgabe:
Eine Gruppierung von Datensätzen auf Seiten, so dass die Seitengröße nicht überschritten wird und die Anzahl der logischen Seitenreferenzen für den durchschnittlichen Operationsmix der Datenbasis minimiert wird.
45
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Stabilität
Zur Stabilität der Ballung:
Bei Änderungen der DB verschlechtert sich die Ballung zunehmend, da sich mit Änderungen in der DB häufig auch die Nutzung der Datensätze ändert, die Ballung aber unverändert bleibt und das neue Nutzungsprofil der Datensätze nicht mehr unterstützt.
46
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Modellierung des Zugriffsverhaltens Das Zugriffsverhalten der Anwendungen wird durch einen
Clusterungsgraph (CG) modelliert. Die Knoten stellen physische Datensätze dar. Eine Kante zwischen zwei Datensätzen R1 und R2 zeigt
an, dass es Anwendungen gibt, die auf Datensatz R1 zugreifen und direkt danach auf Datensatz R2.
Kanten und Knoten des CG sind gewichtet. Das Gewicht einer Kante drückt die relative Häufigkeit von
direkten Zugriffen vom Anfangspunkt der Kante zu ihrem Endpunkt aus (alle Kanten haben ein Gewicht > 0). Die Kantengewichte stellen somit ein Modell für das Zugriffsverhalten der Anwendungen dar.
Das Gewicht eines Knoten ist die Länge des entsprechenden Datensatzes.
47
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Beispiel Clusterungsgraph
Cuboid
GeoId Color Value Mat V1 ... V8 1 “red“ 39.99 77 11 ... 18 2 “blue“ 19.95 77 21 ... 28 3 “yellow“ 89.90 99 31 ... 38
Material
VertId X Y Z11 0.0 0.0 0.0...18 0.0 6.694 6.69421 0.0 0.0 0.0...28 0.0 5.848 5.84831 0.0 0.0 0.0...38 0.0 4.641 4.641
Vertex
MatId Name SpecWght
77 “Iron“ 7.86
99 “Gold“ 19.0
48
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Beispiel Clusterungsgraph
Material 77 Material 99
Cuboid 1 Cuboid 2 Cuboid 3
Vertex11 Vertex18
Vertex21 Vertex28
Vertex31 Vertex38
12
16 22 22
58 58 58
28282828
28 28
CubSet
MatSet
…
…
…
10 820
8
15 20
40404040
40 40
6 5Datensätze
Knotengewicht=Datensatzgröße
Kantengewicht
49
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Ermittlung der Kantengewichte
Statische Verfahren:
Diese Verfahren beruhen entweder auf Eingaben des Benutzers oder auf einer Analyse des Datenbankschemas oder der Anwendungsimplementierungen.
Dynamische Verfahren: Sie beruhen auf der Analyse früherer Anwendungen.
Entweder müssen spezielle Trainingsläufe von Anwendungen gefahren werden, oder
das Zugriffsverhalten der normalen Alltags-Anwendungen wird protokolliert.
Hoher Aufwand während des Alltags-Betriebs der Datenbasis.
50
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Ballungsalgorithmen
Reformulierung des Ballungsproblems: Ein Ballungsalgorithmus erhält als Eingabe einen CG und die
Seitengröße, und produziert als Ausgabe eine Aufteilung der Knoten des CG auf Seiten.
Sequenz-basierte Ballungsalgorithmen: Sie überführen den CG in eine Sequenz von Datensätzen. Die Sequenz wird in Teilsequenzen zerlegt, so dass die
Datensätze in jeder Teilsequenz auf eine Seite passen. Die Seiten werden dabei soweit wie möglich gefüllt. Partitionierungs-basierte Ballungsalgorithmen: Sie wenden einen Graphpartitionierungs-Algorithmus auf den
CG an. Der CG wird in Partitionen zerlegt, so dass die Datensätze in
jeder Partition auf eine Seite passen.
51
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.3.3Kapitel 5.3.3
Sequenz-basiertes BallenSequenz-basiertes Ballen
52
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Sequenz-basierte Ballungsalgorithmen
Sequenz-basierte Ballungsalgorithmen sind von der Form PreSort | Traversal.
PreSort ist eine Sortiervorschrift, die die Vorsortierung der Datensätze als totale oder partielle Ordnung festlegt.
Traversal steht für einen Algorithmus, der den CG traversiert. Die Datensätze werden entsprechend ihrer Vorsortierung als
Startpunkte für Traversierungen des CG betrachtet. Die Besuchsreihenfolge der Knoten ergibt die
Knotensequenz. Bei der Traversierung werden nur Knoten betrachtet, die noch
nicht besucht wurden. Die Knoten (Datensätze) werden entsprechend dieser
Sequenz auf Seiten verteilt.
53
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Überblick über Vorsortierungen
Random: Beliebige Reihenfolge der Datensätze. Static Reference Count: Anzahl von Verweisen von anderen
Datensätzen, die auf einen Datensatz verweisen; auf- oder absteigende Sortierung möglich. Bestimmung von „Kristallisationspunkten“: Näherungslösung durch
Analyse der Datenbasis.
Dynamic Reference Count: Anzahl von Referenzierungen, die über einem bestimmten Zeitraum auf den Datensatz gemacht wurden; auf- oder absteigende Sortierung möglich. Bestimmung von „Kristallisationspunkten“ durch Monitoring.
Trace: Es wird die Zugriffsspur eines Anwendungsmixes ausgewertet; die Datensätze werden entsprechend der Position ihrer ersten Referenzierung in der Spur angeordnet.
User: Der Benutzer definiert eine Sortierung der Datensätze.
54
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Überblick über Traversierungen
Id: Die Datensätze werden entsprechend ihrer Vorsortierung besucht.
Depth First: Entsprechend Tiefensuche, erfordert knotenlokale Sortierung der ausgehenden Kanten.
Breadth First: Entsprechend Breitensuche, erfordert knotenlokale Sortierung der ausgehenden Kanten.
55
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
MatSet, CubSet, Mat77, Mat99, Vert11,…, Vert38, Cub1, Cub2, Cub3
Beispiel Clusterungsgraph
Material 77 Material 99
Cuboid 1 Cuboid 2 Cuboid 3
Vertex11 Vertex18
Vertex21 Vertex28
Vertex31 Vertex38
12
16 22 22
58 58 58
28282828
28 28
CubSet
MatSet
…
…
…
10 820
8
15 20
40404040
40 40
6 5
Size.incr | DepthFirstSize.incr sortiert die Knoten nach aufsteigender Größe
Seite Inhalt1 [MatSet, Mat77, Cub1, Vert11, Vert12]2 [Vert13, Vert14, Vert15, Vert16, Vert17]3 [Vert18, Cub2, Vert21, Vert22]4 [Vert23, Vert24, Vert25, Vert26, Vert27]5 [Vert28, Mat99, Cub3, Vert31]6 [Vert32, Vert33, Vert34, Vert35, Vert36]7 [Vert37, Vert38, CubSet]
Seitengröße: 150 Bytes
56
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Cub1, Cub2, Cub3, Vert11, …, Vert38, Mat77, Mat99, CubSet, MatSet
Beispiel Clusterungsgraph
Material 77 Material 99
Cuboid 1 Cuboid 2 Cuboid 3
Vertex11 Vertex18
Vertex21 Vertex28
Vertex31 Vertex38
12
16 22 22
58 58 58
28282828
28 28
CubSet
MatSet
…
…
…
10 820
8
15 20
40404040
40 40
6 5
Size.decr | DepthFirstSize.decr sortiert die Knoten nach absteigender Größe
Seite Inhalt1 [Cub1, Vert11, Vert12, Vert13]2 [Vert14, Vert15, Vert16, Vert17,Vert18]3 [Cub2, Vert21, Vert22, Vert23]4 [Vert24, Vert25, Vert26, Vert27, Vert28]5 [Cub3, Vert31, Vert32, Vert33]6 [Vert34, Vert35, Vert36, Vert37, Vert38]7 [Mat77, Mat99, CubSet, MatSet]
Seitengröße: 150 Bytes
BreadthFirst liefert dasselbe Ergebnis
57
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Bewertung sequenz-basiertes Ballen
Einfaches Verfahren mit schneller Laufzeit. Starke Abhängigkeit von Vorsortierung: Size.decr | DepthFirst
bzw. Size.decr | BreadthFirst spiegelt (zufällig) Nutzung besser wieder als Size.incr | DepthFirst.
Der Traversierungsalgorithmus muss möglichst gut das Zugriffsverhalten der Anwendungen nachbilden. Depth-First ist bei navigierenden Anwendungsprogrammen
vorzuziehen. Breadth-First ist bei Anwendungen mit vielen Iterationen über
Mengen und Listen vorzuziehen. Kantengewichte werden nur wenig berücksichtigt. Erfahrung: Der Clusterungsalgorithmus Trace | Id sortiert die
Datensätze entsprechend des Zugriffsspur einer konkreten Anwendung und speichert die Datensätze in dieser Reihenfolge auf Seiten. Hierbei wird das Verhalten der Anwendung gut berücksichtigt.
58
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Benutzerdefinierte Traversierungen
Placement Tree: Baum zur Beschreibung der gewünschten Traversierung des CG. Beispiele für Placement Trees:
Für die Traversierung des CG werden die Placement Trees auf den CG abgebildet und die entstehenden Untergraphen nach depth-first Reihenfolge traversiert.
CubSet
Cuboid
Vertex Vertex…
V8V1
MatSet
Material
59
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.3.4Kapitel 5.3.4
Partitions-basiertes BallenPartitions-basiertes Ballen
60
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Partitionierungs-basierte Ballungsalgorithmen
Das Ballungsproblem als Graphpartitionierungsproblem:
R1
R6
R5
R4
R2
R3
100
100
100
1
1
1
Annahme: Alle Datensätze gleich groß, Seitengröße = 3.
Depth-First Traversierung beginnend mit Datensatz R1.Bewertung: Schlecht, da zwar alle Seiten zu 100 % gefüllt, aber Trennung gewichtige Kante (R3 R4).
Bessere Ballung:Bewertung: Seiten zwar nur zu zwei Drittel gefüllt, aber nur Durchtrennung leichtgewichtiger Kanten (R2 R3), (R4 R5), (R6 R1).
61
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Partitionierungs-basierte Ballungsalgorithmen
Das Ballungsproblem als Graphpartitionierungsproblem:
Eine Ballung eines CG, d.h. eine Zuordnung der Datensätze zu Seiten, induziert eine Partitionierung des CG.
Die externen Kosten einer Partitionierung sind definiert als die Summe der Gewichte aller Kanten, die Partitionsgrenzen überspannen.
Das Ballungsproblem ist nun:
Finde eine Partitionierung des CG, so dass
1. die Summe der Knotengewichte in jeder Partition kleiner gleich der Seitengröße ist und
2. die externen Kosten der Partitionierung minimiert werden.
62
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Partitionierungs-basierte Ballungsalgorithmen
R1
R6
R5
R4
R2
R3
100
100
100
1
1
1
R1
R6
R5
R4
R2
R3
100
100
100
1
1
1
Externe Kosten = 101 Externe Kosten = 3
Externe Kosten der Beispiel-Cluster
{R1, R2} {R3, R4} {R5, R6}{R1, R2, R3 } {R4, R5, R6}
63
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Partitionierungs-basierte Ballungsalgorithmen
Komplexitätsbetrachtungen:
Das Ballungsproblem ist eine Instanz des freien Partitionierungs-Problems, bei dem die Zahl der Partitionen nicht vorbestimmt ist.
Allgemein sind Partitionierungs-Probleme NP-vollständig.
Erfordert Näherungsverfahren.
Wünschenswert, da i.Allg. partitionierungs-basierte Ballungsalgorithmen bessere Clusterungen ergeben als sequenz-basierte.
Grund: Es wird ein weiterer Kontext betrachtet!
64
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Partitionierung nach Kernighan und Lin
Grundgedanke:
Der Algorithmus von Kernighan und Lin (KL) beginnt mit einer initialen (beliebigen) k-Partitionierung eines Graphen und vertauscht so lange Datensätze zwischen jeweils zwei Seiten, bis ein Endekriterium (als lokales Kostenminimum) erreicht ist.
Literatur: B. Kernighan and S. Lin, An efficient heuristic procedure for partitioning graphs, Bell System Technical Journal, pp. 291-307, 1970.
65
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Partitionierung nach Kernighan und Lin
Definitionen:
Sei G=(V,E) ein beliebiger Graph mit Knoten V = {v1, ..., vn} und Kanten E 2V.
Für (vi, vj) E gibt cij das Gewicht der Kante an (cij=0 falls (vi, vj) E; cii = 0).
Einfachster Fall Bi-Partitionierung: Sind A und B zwei Partitionen des Graphen, so sind als externe
Kosten E(i) für einen Knoten vi A definiert:
Die internen Kosten sind die Kostensumme aller Kanten, deren beteiligte Datensätze in der gleichen Partition liegen:
j
ijv B
E i c
j
ijv A
I i c
66
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Partitionierung nach Kernighan und Lin
Partition B Partition A
…
… …
…
E(i)
vi
vj
I(i)
I(j)
E(j)
Externe und interne Kosten
67
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Partitionierung nach Kernighan und Lin
Partition B Partition A
…
… …
…
E‘(i)
E‘(j)
Gewinn beim Vertauschen von Knoten
Nach der Vertauschung von vi und vj ergeben sich neue interne und externe Kosten:
E‘(i) = I(i) + cij
I‘(i) = E(i) - cij
vj
vi
I‘(j)
I‘(i)
68
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Gewinn beim Vertauschen von Knoten Externe Gesamtkosten vor der Vertauschung von vi und vj:
T = z + E(i) + E(j) – cij (E(i) und E(j) enthalten jeweils cij) Gesamtkosten nach der Vertauschung von vi und vj:
T‘ = z + E‘(i) + E‘(j) - cij = z + I(i) + I(j) + cij
(z: Summe der Kosten aller Kanten zwischen A und B ohne vi oder vj) Gewinn bei Vertauschung von vi A und vj B
g = T - T‘ = E(i) - I(i) + E(j) - I(j) - 2 cij
oder mit D(i) = E(i) - I(i) Differenz von externen und internen Kosten:
g = T - T‘ = D(i) + D(j) - 2 cij
Iteration Nach Vertauschen von vi und vj müssen die D-Werte der noch
verbleibenden Datensätze V \ {vi, vj} neu berechnet werden:
[ k in A: D‘(k) = E‘(k) - I‘(k) = E(k) + cik - cjk - (I(k) + cjk - cik) ]
Partitionierung nach Kernighan und Lin
D(k) + 2cik + 2cjk für vk A \ {vi,vj}
D(k) + 2cik + 2cjk für vk A \ {vi,vj} D‘(k) =
69
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
algorithm Kernighan (G, C, ):
/* Graph G=(V,E), Kostenmatrix C = (cij) */
/* initiale Partitionierung = {P1, ..., Pk} */
repeat
foreach (Px, Py) do
Kern2 (G, C, Px, Py);
until (Endekriterium erfüllt);
end algorithm;
Der KL-Algorithmus
Bewirkt Vertauschungen
Reihenfolge hat Einfluss
70
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
algorithm Kern2 (G, C, A, B):Setze n := A + B;repeat
Setze A1 := A; B1 := B;for p := 1 to n/2 do begin Berechne die D-Werte für alle Elemente von Ap und Bp; Wähle vi Ap , vj Bp
so dass gp = D(i) + D(j) - 2 cij maximal wird; Setze ap := vi , bp := vj ; Setze Ap+1 := Ap \ {vi}, Bp+1 := Bp \ {vj};end; Wähle 0 k n/2, so dass maximiert wird; /* k bestimmt die Mengen {a1, ..., ak} {a1, ..., an/2} und */ /* {b1, ..., bk} {b1, ..., bn/2} der zu vertauschenden Knoten */ if gain > 0 then begin
Setze A := (A \ {a1, ..., ak}) {b1, ..., bk}; Setze B := (B \ {b1, ..., bk}) {a1, ..., ak};
end; until gain 0;
end algorithm;
Der KL-Algorithmus
1ki igain g
Der Algorithmus terminiert, wenn keine Kostenreduzierung mehr erreichbar ist.Alternative: Vorgegebene Anzahl von Iterationen.
71
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Initiale Partitionierung
Der KL-Algorithmus
1
2
5
4
6
3
A
B
Alle Kanten cij haben Gewicht 1, alle Knoten haben gleiche Größe.
Optimale Partitionierung
1
2
5
4
6
3
72
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Der KL-AlgorithmusA1:={1, 3, 4} B1:={2, 5, 6}
i D ( i )1 1 1 0 2 2 1 1 3 1 1 0 4 2 0 2 5 1 2 1 6 1 1 0
1g 2 5 61 -1 -1 03 -1 -1 04 3 -1 0
1. Iteration
g = D(i) + D(j) - 2 cij Wählea1=4, b1=2
2. Iteration A2:={1, 3, 4} B2:={2, 5, 6}
i D ( i )1 0 0 2 2 3 0 0 2 2 5 1 2 2 1 6 0 0 2 2
2g 5 61 -3 -43 -3 -4
Wählea2=1, b2=5
1
2
5
4
6
3
A
B
D(i) = E(i) - I(i)
D(k) + 2cik + 2cjk für vk A \ {vi,vj}
D(k) + 2cik + 2cjk für vk A \ {vi,vj} D‘(k) =
73
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Der KL-Algorithmus
1g 2 5 61 -1 -1 03 -1 -1 04 3 -1 0
3. Iteration
g = D(i) - D(j) - 2 cij Wählea1=4, b1=2
2. Iteration A2:={1, 3, 4} B2:={2, 5, 6}
i D ( i )1 0 0 2 2 3 0 0 2 2 5 1 2 2 1 6 0 0 2 2
2g 5 61 -3 -43 -3 -4
Wählea2=1, b2=5
A3:={1, 3, 4} B3:={2, 5, 6}
1. Iteration
i D ( i )3 2 2 0 0 6 2 2 0 0
3g 63 0
Wählea3=3, b3=6
1
2
5
4
6
3
A
B
74
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Der KL-Algorithmus1g 2 5 61 -1 -1 03 -1 -1 04 3 -1 0
Wählea1=4, b1=2
2g 5 61 -3 -43 -3 -4
Wählea2=1, b2=5
3g 63 0
Wählea3=3, b3=6
Berechnungsvorschrift für Knotenvertauschung:Berechnung von gain für alle Vertauschungsvektoren mit Länge k {1,2,3}:
k g a i n1 1 ( 4 , 2 ) 3g 2 1 2( 4 , 2 ) ( 1 , 5 ) 3 ( 3 ) 0g g 3 1 2 3( 4 , 2 ) ( 1 , 5 ) ( 3 , 6 ) 3 ( 3 ) 0 0g g g
A1:= {1, 3, 4}
B1:= {2, 5, 6}
1
2
5
4
6
3
A
B
75
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Der KL-Algorithmus
A1:={1, 3, 4}
B1:={2, 5, 6}
Im nächsten Durchlauf der äußeren Schleife der Prozedur Kern2 würde kein positiver Gewinn (gain) mehr erzielt, so dass der Algorithmus mit der optimalen Partitionierung terminiert.
1
2
5
4
6
3
1
2
5
4
6
3
A
B
76
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Hoher Aufwand O(n2.4), mit n die Anzahl der Knoten des Graphen.
Austausch von Datensätzen ist problematisch, wenn Datensätze mit sehr unterschiedlichen Größen vorliegen (wegen der begrenzten Seitengröße).
Verlagerung (statt Austausch) eines Datensatzes von einer Seite auf eine andere Seite ist nicht vorgesehen.
Die Anfangspartitionierung hat einen wesentlichen Einfluss auf die Güte der Ergebnispartitionierung.
Die Anzahl der Partitionen ist durch die initiale Partitionierung fest vorgegeben und kann nicht angepasst werden.
Die Größe der Partitionen ist ebenfalls fix.
Bewertung des KL-Algorithmus
77
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Es gibt Weiterentwicklungen von KL, bspw. von Fidducia und Mattheyses (FM). Der FM Algorithmus erlaubt das Verschieben einzelner
Knoten über Partitionsgrenzen hinweg. FM kann die Größe der Partitionen dadurch modifizieren. Außerdem kann die Anzahl der Partitionen verringert
werden, indem alle Knoten von einer Partition weg verschoben werden.
Es gibt Kombinationen mit Greedy Graph-Partitionierung. Schnelles Erzeugen einer „guten“ Anfangspartitionierung.
Bewertung des KL-Algorithmus
78
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.3.5Kapitel 5.3.5
Pointer SwizzlingPointer Swizzling
79
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Beobachtung:
Bei objektorientierten DBs sind sehr viele Feldwerte in Datensätzen (häufig über die Hälfte) Verweise auf andere Datensätze.
Forderungen: Für die interne Verarbeitung sollten diese Verweise
Hauptspeicheradressen sein. Daher sollte beim Einlagern der Sätze auf einer Seite ein
Ersatz von Adressen nunmehr gepufferter Sätze auf Hauptspeicheradressen erfolgen.
Beim Einbringen von Änderungen muss dann umgekehrt eine Umrechnung von Hauptspeicheradressen auf periphere Satzadressen erfolgen.
Motivation
80
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Klassifikation nach Ort: In-Place-Swizzling: Umformung der Adressen im
Seitenpuffer und damit global sichtbar. Copy-Swizzling: Kopieren der Objekte in einen eigenen
Objektpuffer, Umformung damit nur lokal sichtbar.
Klassifikation nach Zeitpunkt: Sofortiges Swizzling (eager swizzling).
Erfordert Kenntnis des Satzaufbaus (keine saubere Trennung der Schichten!)
Swizzling auf Anforderung (lazy swizzling). Abfangen der Anforderung, Stelle des Verweises muss
bestimmt werden.
Beachte: Änderungen müssen rücktransformiert werden.
Klassifikationen
81
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Grundmuster
tid hsp
..
......
..
......
h(tid)
Zuordnungstabelleoid/hsp-Adresse
Objekt 1 Objekt 4
Objekt 2 Objekt 3 Objekt 5
Sofortiges Swizzling: Aufbau der Tabelle und Ersatz der Adressen auf einen Schlag.
Swizzling auf Anforderung: Test in der Tabelle, schrittweiser Aufbau der Tabelle und Ersatz der Adressen.
Variationsmöglichkeiten siehe Härder/Rahm!
im Hsp.
82
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Besonderheit: Memory Mapping Architektur (MMA) des kommerziellen objektorientierten Datenbanksystems ObjectStore mit Swizzling In-Place, Vorausschauend:
Datenmodell wie im Beispiel: C++ mit ObjectStore-spezifischen Erweiterungen: Spezieller new-Operator, mit dem Objekte in einer
Datenbasis erzeugt werden können. In C++ eingebettete Anfragesprache. Der Zugriff auf Objekte erfolgt wie in C++ durch das
Dereferenzieren von Zeigern. Beim Dereferenzieren von Zeigern ist für den Benutzer
verdeckt, ob das referenzierte Objekt persistent (d.h. in der DB gespeichert) oder transient ist (transiente Objekte existieren nur zur Laufzeit des Anwendungsprozesses).
MMA (1)
83
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
class Cuboid {int Value; ...};
Cuboid *c1, *c2; c1 = new(db1, CuboidTypeDesc) Cuboid;
// c1 zeigt auf neuen, in Datenbasis db1 angelegten // dauerhaften Cuboid;
c2 = new Cuboid;// c2 zeigt auf neuen, transienten Cuboid; \\
printf(”%s\n“, c1->Value);printf(”%s\n“, c2->Value);
// Zugriff auf das Attribut Value des Objektes, // auf das c1 bzw. c2 verweist (Dereferenzieren von
Zeigern)
Beispiel
84
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
MMA (2)
Einzel-prozess
Virtueller Speicher
Hauptspeicher Hintergrundspeicher
Seite Blockgleiche Größe
Zuordnung
Zuordnung
Ausnutzen der virtuellen Speicherverwaltung von Unix:
85
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
MMA (3)
Einzel-prozess
Virtueller Speicher
Hauptspeicher Hintergrundspeicher
Seite Blockgleiche Größe
Zuordnung
Zuordnung
Zuordnungen mittels page table pro Prozess.
Virtuelle Adresse
HspSeite Nr.
Status Block
0 1K 2K 64K 1917 invalid 1206 65K none invalid none 66K 1036 valid 847
128K 17 ...
Gültigkeit der Adresszuordnung
tid als virtuelle Hauptspeicheradresse geführt. Aber: Die Gültigkeit virtueller Adressen ist an den Prozess gebunden, der die Adressen zugeteilt hat.
Pointer Swizzling: Anpassung an die page table des aktuellen Prozesses
86
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
MMA (4)
Vorgehen: Transparenz des Speicherorts: Die Entscheidung über den
Speicherort, auf den zugegriffen wird (Hauptspeicher oder Hintergrundspeicher), und damit auch über die Umrechnung der Adressen, wird mit Hilfe des Betriebssystems gelöst.
Fragen: Wie werden angesichts der Prozesslokalität von virtuellen
Adressen Objektreferenzen auf der Platte repräsentiert? Wie funktioniert beim Dereferenzieren eines Zeigers auf
ein persistentes Objekt das Einlagern des Objektes von der DB in den virtuellen Speicher?
87
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
MMA: Objektreferenzen
66K
Platte
B15 B20 B30
70K
70KB40
66KB20
70KB40
70KB30
Referenz auf einen Datensatz in ObjectStore: Virtuelle Speicheradresse = (virtuelle Seitenadresse plus Offset innerhalb der Seite, durch Punkt • markiert).
Die virtuellen Speicheradressen in den Datensätzen auf einer Seite stammen jeweils von dem Prozess, der auf die Seite zuletzt zugriff.
Auf jeder Seite wird eine Tabelle verwaltet, die Seitenadressen des virtuellen Speichers auf Blöcke des persistenten Speichers abbildet.
Prozesslokalität:Gleiche virtuelle Adressen,verschiedene Abbildungen
88
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
66K
MMA: Dereferenzieren
Platte
B15 B20 B30
70K
70K B40
66KB20
70KB40
70KB30
12K 66K 70K 80K 81KVirtueller
Speicher
Status
Block
geschützt
Kommentar
Zugriff auf B15; Einlagerung an Adr.12K
Dereferen-zierung der Adr. 66K
Einlagerung von B20 an Adr. 66K
Speicherverletzung wegen Zugriffsschutz
Austausch der Adr. 70K (bereits reserviert) gegen eine freie Adr.(80K)
80K
80K
inval
leer leer leer
inval
leer
nein
inval inval inval
leer
nein nein nein nein
inval
leer
nein nein.
B15
val inval inval
B15
ja ja
reserviert für B20
reserviert für B40
B20 B40
B15
val val inval inval
B15 B20 B40 B30
nein nein ja ja
reserviert für B30
reserviert für B40
B20
89
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
66K
MMA: Dereferenzieren
Platte
B15 B20 B30
70K
70K B40
66KB20
70KB40
70KB30
12K 66K 70K 80K 81KVirtueller
Speicher
Status
Block
geschützt
Kommentar
Zugriff auf B15; Einlagerung an Adr.12K
Dereferen-zierung der Adr. 66K
inval
leer
nein nein.
B15
val inval inval
B15
ja ja
reserviert für B20
reserviert für B40
B20 B40
Die reservierten Seiten werden für sämtliche Zugriffe gesperrt (UNIX-Kommando mprotect).
Bei Dereferenzieren der Referenz auf den Datensatz in Block B20: Referenz zeigt auf Seite 66K Seite gegen Zugriff gesperrt Unix meldet Zugriffsschutzverletzung.
90
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
66K
MMA: Dereferenzieren
Platte
B15 B20 B30
70K
70K B40
66KB20
70KB40
70KB30
12K 66K 70K 80K 81KVirtueller
Speicher
Status
Block
geschützt
Kommentar
Dereferen-zierung der Adr. 66K
Einlagerung von B20 an Adr. 66K
Austausch der Adr. 70K (bereits reserviert) gegen eine freie Adr.(80K)
80K
80K
B15
val val inval inval
B15 B20 B40 B30
nein nein ja ja
reserviert für B30
reserviert für B40
B20
Zugriffsschutzverletzung Error Handler mit Aktionen: Block B20 wird in Seite 66K kopiert. Zugriffsschutz wird aufgehoben (bzw. durch
Schreibschutz ersetzt, um Änderungen zu erkennen). Alle in der Tabelle am Blockanfang vorkommenden
Seiten werden reserviert (siehe B30).
Adresse 70K bereits für B40 reserviert.
91
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kosten: Der von einer Transaktion benötigte Bereich der Datenbasis
muss in den virtuellen Speicher passen, der der Transaktion zur Verfügung steht.
Bei jedem Einlagern eines Blocks wird für jede Referenz, die von dem Block auf einen anderen Block verweist, eine Seite des virtuellen Speichers reserviert (selbst wenn diese Referenzen nie verfolgt werden).
Falls beim Einlagern eines Blocks nicht die „richtigen“ Speicherseiten reserviert werden können, müssen alle betroffenen Referenzen in dem Block angepasst werden.
Navigierende Anwendungen, bei denen viele Referenzen zwischen Datensätzen auf unterschiedlichen Blöcken verfolgt werden, erfordern das ständige Einlagern von Blöcken und Reservieren von Seiten.
Bewertung der MMA
92
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.4Kapitel 5.4
Verwaltung großer DatensätzeVerwaltung großer Datensätze
93
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Großer Datensatz: Datensatz, dessen Länge größer als die Seitengröße ist.
Datenmodell
Physische DB (satzorientiert)
Zugriffs-struktur
Gr. Physischer Datensatz
enthält▶0..1
enthält▶0..1..
Physische DB (seitenorientiert)
Segment Seite
repräsentiertdurch
▼
1..
1enthält▶
0..1enthält▶
0..1
0..
Satzkopf ge-speichert in
▼
0..1
Datensatz gespeichert ▼ in
1..1
94
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Platzierung: I.Allg. wird der Satzkopf (ein kurzes
Anfangsstück des Satzes) frei platziert; der Satzkopf wird dazu wie ein kleiner Datensatz behandelt (d.h. gemeinsam mit ihm können weitere Datensätze auf der Seite gespeichert sein).
Der Rest des großen Datensatzes wird auf Seiten gespeichert, die exklusiv dem Datensatz zugeordnet sind.
Aufgaben
Erweitertes Aufgabenspektrum:
Lesen, Modifizieren, Erzeugen, Löschen von Sätzen, Einfügen von Bytes in den Satz, Entfernen von Bytes aus dem Satz.
Gr. Physischer Datensatz
Seite
0..
Satzkopf ge-speichert in
▼
0..1
Datensatz gespeichert ▼ in
1..1
95
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.4.1Kapitel 5.4.1
Verwaltung mit Standard-PufferverwaltungVerwaltung mit Standard-Pufferverwaltung
96
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Verkettung
P123
P123 2
TID des großen DatensatzesSatzkopf
Platzierung auf beliebigen, nicht zwingend benachbarten Seiten. Direkte Adressierung, on-demand paging, update-in-place /
shadowing.
97
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Wegweiser
P123
P123 2
TID des großen Datensatzes
Satzkopf
Platzierung auf beliebigen, nicht zwingend benachbarten Seiten. Direkte Adressierung, on-demand paging, update-in-place /
shadowing.
Verw.info.
Directory
98
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Bewertung
Verkettung: Preis für direkte Verwendung der Segmentverwaltung:
Geschlossenes Ein-/Auslagern aufwendig.
Sonst zusammenhängende Bearbeitung im Puffer nicht möglich.
Kein wahlfreier Zugriff auf Teile des Datensatzes.
Wegweiser: Preis für direkte Verwendung der Segmentverwaltung:
Geschlossenes Ein-/Auslagern aufwendig.
Sonst zusammenhängende Bearbeitung im Puffer nicht möglich.
Wahlfreier Zugriff auf Teile des Datensatzes erkauft durch Zusatzstruktur, die selbst auf Seiten geführt werden muss und zusätzliche E/A verursacht.
99
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Kapitel 5.4.2Kapitel 5.4.2
Verwaltung mit spezieller PufferverwaltungVerwaltung mit spezieller Pufferverwaltung
100
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Starburst: Prototypisches Datenbanksystem von IBM.
Es unterstützt Datensätze mit einer Größe bis zu 1.5 GB. Ein Datensatz besteht aus einem Kopf (Header) und einer
variablen Anzahl von Partitionen.
Eine Partition besteht aus einer Menge von Seiten, die benachbarten Blöcken auf dem nichtflüchtigen Speicher zugeordnet werden.
Die Größen der Partitionen (bis auf die erste und letzte) werden nach einer Rechenvorschrift aus der Größe der ersten Partition berechnet. Die letzte Partition füllt i.Allg. die Rechenvorschrift nicht aus.
Beispiel Starburst (1)
101
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
5 4096 9932
Beispiel Starburst (2)
Größe der ersten Partition (1 Seite)
Anzahl der Partitionen
1 Seite
Größe der letzten Partition
2 Seiten 4 Seiten 8 Seiten
Beispiel mit Rechenvorschrift „Verdopplung der Größe der vorangehenden Partition“:
102
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Vorteile: Effiziente Unterstützung von Lesezugriffen (sequenziell und
wahlfrei). Erfordert geschlossenes Einlagern von Partitionen in den Puffer.
Hinzufügen von Bytes am Ende und Modifizieren beliebiger Bereiche innerhalb des Datensatzes sind effizient möglich.
Nachteile: Einfügen weiterer Bytes in der Mitte kann zu umfangreichen
Kopiervorgängen von Partitionen oder Teilen von Partitionen führen.
Gefahr von Verschnitt in der letzten Partition.
Das Starburst-Konzept wurde entwickelt im Hinblick auf die Speicherung von relativ stabilen Daten, die hauptsächlich sequenziell gelesen werden (bspw. Audio- und Videodaten).
Bewertung Starburst
103
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Beispiel Exodus (1) Exodus: Forschungsprototyp einer erweiterbaren
Speichermaschine für objektorientierte Datenbanksysteme. Ein großer Datensatz besteht aus einem Kopf (Header) und
einer variablen Anzahl von Datenseiten. Aus dem Datensatz kann über eine Byteposition ein
beliebiger Ausschnitt ausgewählt werden. Nutzdaten können an beliebiger Stelle eingefügt oder entfernt werden.
Erreichen dieser Flexibilität durch Baumstruktur: Nutzdaten ausschließlich in den Blattseiten des Baums. Die Blattseiten müssen nicht vollständig gefüllt sein: „Luft zum
Atmen“. Nichtblatt-Seiten als Wegweiser, um zu einer Byteposition die
Blattseite effizient zu finden. Wegweiser mit Relativpositionen, um Änderungen lokal zu
begrenzen.
104
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Beispiel Exodus (2)
P123
421 886
120 282 421 192 365 465
Bytes1-120
Bytes121-282
Bytes283-421
Bytes422-613
Bytes614-786
Bytes787-886
P123 2
TID des großen Datensatzes
interne Seite
Blatt-Seiten
Satzkopf und Wurzel des Baums
Nummer höchstes Byte des Satzes auf der Seite
Bytenummerierung beginnt mit jeder Stufe bei 0
Ausschnitt aus dem Datensatz
Seitennummer
105
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Pufferung von Teilsätzen Angefordert: Teilsatz = Ausschnitt mit Anfangsadresse, Länge
Die zugehörigen Blatt-Seiten werden in den Systempuffer eingelagert.
Es ist dafür zu sorgen, dass ihre belegten Teile einen zusammenhängenden Speicherbereich einnehmen.
Erfordert eigene Pufferverwaltung. Bei Standard-Pufferverwaltung: Falls nicht genügend
zusammenhängende Pufferrahmen ohne pin-Vermerk zur Verfügung stehen, müssen fixierte Seiten im Systempuffer verschoben werden (erfordert indirekten Zugriff über Handles).
Verwaltung eines Teilsatzes mittels Scan-Descriptor. Vorwiegend eine Liste der eingelagerten Seiten-Bereiche. Bei Einlagern eines weiteren Bereiches des selben Datensatzes
werden alle Scan-Descriptoren zu diesem Datensatz durchsucht. Befinden sich bereits Seiten im Puffer, die Daten des neu angeforderten
Bereichs enthalten, dann werden diese Seiten innerhalb des Puffers kopiert (kein erneutes Lesen von der Platte).
106
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Pufferung von Teilsätzen
Wurzeldatensatz
C1 C2 C3
P123 2
Blattseiten
Pufferrahmen
Scan-Descriptor
P123 2 N C1:P1 C2:P2 C3:P3
P1 P2 P3
N
TID Satzbereiche
107
© 2009 Univ,Karlsruhe, IPD, Prof. Lockemann DBI 5
Bewertung Exodus
Erzeugen eines großen Datensatzes (Anfügen von Bytes am Ende) langsamer als bei Starburst, da die Baumstruktur aufgebaut werden muss.
Sequenzielles Lesen ebenfalls etwas langsamer als bei Starburst, da die Blattseiten nicht auf physisch benachbarten Blöcken gespeichert werden.
Einfügen von Bytes bzw. Löschen von Bytes mitten im Datensatz wesentlich schneller als bei Starburst, da diese Operationen direkt durch die Baumstruktur unterstützt werden.