Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel 5 Zugriffsschicht: Satzverwaltung.

Ähnliche Präsentationen


Präsentation zum Thema: "Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel 5 Zugriffsschicht: Satzverwaltung."—  Präsentation transkript:

1 Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel 5 Zugriffsschicht: Satzverwaltung

2 2 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 Bytes Segment = var. Anzahl von Seiten Operatoren: Anforderung/Freigabe von Seiten Segmente anlegen/öffnen/schließen Datentypen: Block = feste Anzahl von Bytes Datei = 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 3 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 4 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 5 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Anordnung Datensätze auf Seiten: Satzverwaltung Bei Strukturen mit Gemeinsamkeiten Datenmodell Physische DB (satzorientiert) Zugriffs- struktur Physischer Datensatz enthält enthält Physische DB (seitenorientiert) SegmentSeite repräsentiert durch gespeichert in ? enthält enthält Derselbe Satz kann mehreren Zugriffstrukturen angehören Performanter Zugriff

6 6 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel 5.1 Seitenspeicherverwaltung

7 7 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 enthält Physische DB (seitenorientiert) SegmentSeite repräsentiert durch gespeichert in enthält enthält 0.. 1

8 8 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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: Verwaltung freier Seiten (1)

9 9 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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/2 8 = PS/256 Bytes eingeteilt und gruppenweise verwaltet. PS256 B….4096 B g1 B….16 B Unscharfe Verwaltung mit Verschnitt Scharfe Verwaltung

10 10 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 i k+1, i=0,1,2,… Zu empfehlen bei dynamischem Wachstum von Segmenten.

11 11 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Seite 3Seite 4Seite 50Seite 1 Seite FreispeichertabelleseitenNutzdatenseiten Ablage der Freispeichertabelle (2) Option 1:

12 12 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Seite 39 Seite 40 Seite 41Seite 1 Seite 2 FreispeichertabelleseitenNutzdatenseiten Ablage der Freispeichertabelle (3) Option 2:

13 13 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 14 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 B2B3 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 S Seitentabelle von S2 Freispeicher- tabelle von S2 Bk+2 Freispeichertabelle Seitentabelle Freispeicher- tabelle von S1

15 15 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel 5.2 Platzierung von Datensätzen: Grundsätze

16 16 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 17 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 18 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel 5.3 Verwaltung kleiner Datensätze

19 19 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 enthält Physische DB (seitenorientiert) SegmentSeite repräsentiert durch gespeichert in enthält enthält 0.. 1

20 20 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 21 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Seitenkopf Freispeicher innerhalb einer Seite Seite 10 Sa S S S Satz Satz C Satz A Satz Etz D tz B atz F atz G atz H K L M

22 22 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel Einzelsatzablage

23 23 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 24 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 25 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 26 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 10 ext.TID(Satz C) 5 Seitenadresse Slotnummer 24 bit 8 bit Seitenkopf TID (2) Seite 10 Sa S S S Satz Satz C Satz A Satz Etz D tz B atz F atz G atz H K L M Satz C

27 27 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 TID von Datensatz R1 P1233 Segment S4711 #Slots:6 P 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) R1

28 28 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 29 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Segment S4711 #Slots:6 P #Slots:4 P TID von Datensatz R1 P123 3 Rückwärtsverweis und Nutzdaten von Datensatz R1 R1P1233 = Stellvertreterbit = Verdrängungsbit TID (5) R1 P5042 Stellvertretersatz

30 30 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 31 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Segment S4711 #Slots:6 P #Slots:4 P TID von Datensatz R1 P123 3 R1P1233 TID (7) R1 P5042 Stellvertretersatz P #Slots:5 R1P1233

32 32 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Segment S4711 #Slots:6 P #Slots:4 P TID von Datensatz R1 P123 3 TID (7) R1 P5042 Stellvertretersatz P #Slots:5 R1P1233P3454

33 33 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 34 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 LID (1) Segment S4711 #Slots:6 P R1 logischer Identifikator (LID) P1233 TID Zuordnungstabelle Logischer Identifikator von Datensatz R1 Langfristig stabiler Identifikator

35 35 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 36 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 37 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 38 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 39 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 40 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI P123 R Segment S4711 P378 R PPP(R1) P378 1 PPP (2) 1. Zugriff über den TID, der in dem PPP enthalten ist logischer Identifik P1232 TID Zuordnungstabelle veraltet 2. Zugriff auf Zuordnungstabelle über log. Identifikator 3. Zugriff über aktuellen TID Ersetzen dieses veralteten TIDs P1232

41 41 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 42 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel Ballen von Datensätzen

43 43 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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. Kontextwissen, Qualität der Clusterung

44 44 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 45 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 46 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 R 1 und R 2 zeigt an, dass es Anwendungen gibt, die auf Datensatz R 1 zugreifen und direkt danach auf Datensatz R 2. 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 47 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Beispiel Clusterungsgraph Cuboid Material Vertex

48 48 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Beispiel Clusterungsgraph Material 77Material 99 Cuboid 1 Cuboid 2Cuboid 3 Vertex11 Vertex18 Vertex21 Vertex28 Vertex31 Vertex CubSet MatSet … … … Datensätze Knotengewicht= Datensatzgröße Kantengewicht

49 49 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 50 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 51 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel Sequenz-basiertes Ballen

52 52 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 53 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 54 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 55 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 MatSet, CubSet, Mat77, Mat99, Vert11,…, Vert38, Cub1, Cub2, Cub3 Beispiel Clusterungsgraph Material 77Material 99 Cuboid 1 Cuboid 2Cuboid 3 Vertex11 Vertex18 Vertex21 Vertex28 Vertex31 Vertex CubSet MatSet … … … Size.incr | DepthFirst Size.incr sortiert die Knoten nach aufsteigender Größe Seitengröße: 150 Bytes

56 56 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Cub1, Cub2, Cub3, Vert11, …, Vert38, Mat77, Mat99, CubSet, MatSet Beispiel Clusterungsgraph Material 77Material 99 Cuboid 1 Cuboid 2Cuboid 3 Vertex11 Vertex18 Vertex21 Vertex28 Vertex31 Vertex CubSet MatSet … … … Size.decr | DepthFirst Size.decr sortiert die Knoten nach absteigender Größe Seitengröße: 150 Bytes BreadthFirst liefert dasselbe Ergebnis

57 57 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 58 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 … V8V1 MatSet Material

59 59 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel Partitions-basiertes Ballen

60 60 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Partitionierungs-basierte Ballungsalgorithmen Das Ballungsproblem als Graphpartitionierungsproblem: R1 R6 R5 R4 R2 R Annahme: Alle Datensätze gleich groß, Seitengröße = 3. Depth-First Traversierung beginnend mit Datensatz R 1. Bewertung: Schlecht, da zwar alle Seiten zu 100 % gefüllt, aber Trennung gewichtige Kante (R 3 R 4 ). Bessere Ballung: Bewertung: Seiten zwar nur zu zwei Drittel gefüllt, aber nur Durchtrennung leichtgewichtiger Kanten (R 2 R 3 ), (R 4 R 5 ), (R 6 R 1 ).

61 61 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 62 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Partitionierungs-basierte Ballungsalgorithmen R1 R6 R5 R4 R2 R R1 R6 R5 R4 R2 R Externe Kosten = 101 Externe Kosten = 3 Externe Kosten der Beispiel-Cluster {R 1, R 2 } {R 3, R 4 } {R 5, R 6 } {R 1, R 2, R 3 } { R 4, R 5, R 6 }

63 63 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 64 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 , 1970.

65 65 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Partitionierung nach Kernighan und Lin Definitionen: Sei G=(V,E) ein beliebiger Graph mit Knoten V = {v 1,..., v n } und Kanten E 2 V. Für (v i, v j ) E gibt c ij das Gewicht der Kante an (c ij =0 falls (v i, v j ) E; c ii = 0). Einfachster Fall Bi-Partitionierung: Sind A und B zwei Partitionen des Graphen, so sind als externe Kosten E(i) für einen Knoten v i A definiert: Die internen Kosten sind die Kostensumme aller Kanten, deren beteiligte Datensätze in der gleichen Partition liegen:

66 66 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Partitionierung nach Kernighan und Lin Partition B Partition A … …… … E(i)E(i) vivi vjvj I(i)I(i) I(j)I(j) E(j)E(j) Externe und interne Kosten

67 67 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Partitionierung nach Kernighan und Lin Partition B Partition A … …… … E(i)E(i) E(j)E(j) Gewinn beim Vertauschen von Knoten Nach der Vertauschung von v i und v j ergeben sich neue interne und externe Kosten: E(i) = I(i) + c ij I(i) = E(i) - c ij vjvj vivi I(j)I(j) I(i)I(i)

68 68 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Gewinn beim Vertauschen von Knoten Externe Gesamtkosten vor der Vertauschung von v i und v j : T = z + E(i) + E(j) – c ij (E(i) und E(j) enthalten jeweils c ij ) Gesamtkosten nach der Vertauschung von v i und v j : T = z + E(i) + E(j) - c ij = z + I(i) + I(j) + c ij (z: Summe der Kosten aller Kanten zwischen A und B ohne v i oder v j ) Gewinn bei Vertauschung von v i A und v j B g = T - T = E(i) - I(i) + E(j) - I(j) - 2 c ij oder mit D(i) = E(i) - I(i) Differenz von externen und internen Kosten: g = T - T = D(i) + D(j) - 2 c ij Iteration Nach Vertauschen von v i und v j müssen die D-Werte der noch verbleibenden Datensätze V \ {v i, v j } neu berechnet werden: [ k in A: D(k) = E(k) - I(k) = E(k) + c ik - c jk - (I(k) + c jk - c ik ) ] Partitionierung nach Kernighan und Lin D(k) + 2c ik + 2c jk für v k A \ {v i,v j } D(k) =

69 69 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 algorithm Kernighan (G, C, ): /* Graph G=(V,E), Kostenmatrix C = (c ij ) */ /* initiale Partitionierung = {P 1,..., P k } */ repeat foreach (P x, P y ) do Kern2 (G, C, P x, P y ); until (Endekriterium erfüllt); end algorithm; Der KL-Algorithmus Bewirkt Vertauschungen Reihenfolge hat Einfluss

70 70 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 algorithm Kern2 (G, C, A, B): Setze n := A + B ; repeat Setze A 1 := A; B 1 := B; for p := 1 to n/2 do begin Berechne die D-Werte für alle Elemente von A p und B p ; Wähle v i A p, v j B p so dass g p = D(i) + D(j) - 2 c ij maximal wird; Setze a p := v i, b p := v j ; Setze A p+1 := A p \ {v i }, B p+1 := B p \ {v j }; end; Wähle 0 k n/2, so dass maximiert wird; /* k bestimmt die Mengen {a 1,..., a k } {a 1,..., a n/2 } und */ /* {b 1,..., b k } {b 1,..., b n/2 } der zu vertauschenden Knoten */ if gain > 0 then begin Setze A := (A \ {a 1,..., a k }) {b 1,..., b k }; Setze B := (B \ {b 1,..., b k }) {a 1,..., a k }; end; until gain 0; end algorithm; Der KL-Algorithmus Der Algorithmus terminiert, wenn keine Kostenreduzierung mehr erreichbar ist. Alternative: Vorgegebene Anzahl von Iterationen.

71 71 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Initiale Partitionierung Der KL-Algorithmus A B Alle Kanten c ij haben Gewicht 1, alle Knoten haben gleiche Größe. Optimale Partitionierung

72 72 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Der KL-Algorithmus A 1 :={1, 3, 4} B 1 :={2, 5, 6} 1. Iteration g = D(i) + D(j) - 2 c ij Wähle a 1 =4, b 1 =2 2. Iteration A 2 :={1, 3, 4} B 2 :={2, 5, 6} Wähle a 2 =1, b 2 = A B D(i) = E(i) - I(i) D(k) + 2c ik + 2c jk für v k A \ {v i,v j } D(k) =

73 73 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Der KL-Algorithmus 3. Iteration g = D(i) - D(j) - 2 c ij Wähle a 1 =4, b 1 =2 2. Iteration A 2 :={1, 3, 4} B 2 :={2, 5, 6} Wähle a 2 =1, b 2 =5 A 3 :={1, 3, 4} B 3 :={2, 5, 6} 1. Iteration Wähle a 3 =3, b 3 = A B

74 74 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Der KL-Algorithmus Wähle a 1 =4, b 1 =2 Wähle a 2 =1, b 2 =5 Wähle a 3 =3, b 3 =6 Berechnungsvorschrift für Knotenvertauschung: Berechnung von gain für alle Vertauschungsvektoren mit Länge k {1,2,3}: A 1 := {1, 3, 4} B 1 := {2, 5, 6} A B

75 75 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Der KL-Algorithmus A 1 :={1, 3, 4} B 1 :={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 A B

76 76 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Hoher Aufwand O(n 2.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 77 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 78 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel Pointer Swizzling

79 79 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 80 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 81 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Grundmuster tidhsp.. h(tid) Zuordnungstabelle oid/hsp-Adresse Objekt 1Objekt 4 Objekt 2Objekt 3Objekt 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 82 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 83 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 84 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 MMA (2) Einzel- prozess Virtueller Speicher HauptspeicherHintergrundspeicher SeiteBlock gleiche Größe Zuordnung Ausnutzen der virtuellen Speicherverwaltung von Unix:

85 85 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 MMA (3) Einzel- prozess Virtueller Speicher HauptspeicherHintergrundspeicher SeiteBlock gleiche Größe Zuordnung Zuordnungen mittels page table pro Prozess. 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 86 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 87 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 MMA: Objektreferenzen 66K Platte B15B20 B30 70K B40 66K B20 70K B40 70K B30 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 88 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 66K MMA: Dereferenzieren Platte B15B20B30 70K B40 66K B20 70K B40 70K B30 12K 66K70K80K81K Virtueller 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 inval leer inval leer nein inval leer nein inval leer nein nein. B15 val inval B15 ja reserviert für B20 reserviert für B40 B20 B40 B15 val inval B15 B20B40B30 nein ja reserviert für B30 reserviert für B40 B20

89 89 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 66K MMA: Dereferenzieren Platte B15B20B30 70K B40 66K B20 70K B40 70K B30 12K 66K70K80K81K Virtueller 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 B15 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 90 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 66K MMA: Dereferenzieren Platte B15B20B30 70K B40 66K B20 70K B40 70K B30 12K 66K70K80K81K Virtueller 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 B15 val inval B15 B20B40B30 nein 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 91 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 92 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel 5.4 Verwaltung großer Datensätze

93 93 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 enthält Physische DB (seitenorientiert) SegmentSeite repräsentiert durch enthält enthält Satzkopf ge- speichert in 0..1 Datensatz gespeichert in 1.. 1

94 94 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 95 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel Verwaltung mit Standard-Pufferverwaltung

96 96 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Verkettung P123 2 TID des großen Datensatzes Satzkopf Platzierung auf beliebigen, nicht zwingend benachbarten Seiten. Direkte Adressierung, on-demand paging, update-in-place / shadowing.

97 97 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Wegweiser 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 98 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 99 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel Verwaltung mit spezieller Pufferverwaltung

100 100 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 101 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 102 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 103 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 104 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Beispiel Exodus (2) P Bytes Bytes Bytes Bytes Bytes Bytes P1232 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 105 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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 106 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Pufferung von Teilsätzen Wurzeldatensatz C1 C2 C3 P1232 Blattseiten Pufferrahmen Scan-Descriptor P123 2 NC1:P1C2:P2C3:P3 P1P2 P3 N TID Satzbereiche

107 107 © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 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.


Herunterladen ppt "Universität Karlsruhe (TH) © 2009 Univ,Karlsruhe, IPD, Prof. LockemannDBI 5 Kapitel 5 Zugriffsschicht: Satzverwaltung."

Ähnliche Präsentationen


Google-Anzeigen