Entwurfsumgebung Arbeitsplatzumgebung Netzumgebung Programmierumgebung eingebettet interaktiv, selbständig Datendefinitionssprache (DDL) Vereinbarungen Datenmanipulationssprache (DML) Änderungen .. . Sicht_i Schema Sprachanalyse Verwirklichung der grundlegenden relationalen Operationen EinsatzSchnittstellen Anfragen Antworten Erklärungen Man benötigt geeignete Algorithmen und Datenstrukturen. Diese müssen insbesondere ermöglichen, daß man die folgenden Ziele erreichen kann: InformationssystemSchnittstelle • große Mengen von Daten Aufbereitung von Antworten Relationen (Klassen), Tupel (Objekte) konzeptionelle Schicht (mengenorientiert, mit Optimierung) • dauerhaft Transaktionsverwaltung Zugriffsstrukturen, Tupelidentifikatoren (Surrogate), Datensätze • effizient für Anfragen und Änderungen MengenSchnittstelle TupelSchnittstelle interne Schicht (Datensatz-orientiert) (virtueller) flüchtiger und dauerhafter Speicher SpeicherSchnittstelle GeräteSchnittstelle Speichergeräte J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.1 J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.2 Dauerhaftigkeit Lebensdauer eines Tupels Wir fassen ein Tupel einer Instanz als grundlegende Einheit auf. • Zeitspanne von der benutzergesteuerten Eingabe des Tupels bis zum benutzergesteuerten Entfernen des Tupels. Solch ein Tupel kann auf drei Weisen identifiziert werden: • Während der Lebensdauer bleibt der Tupelidentifikator dauerhaft bestehen, insbesondere also auch bei benutzergesteuerten Änderungen der Schlüsselwerte, bei Verlagerungen innerhalb der Speichermedien, zwischen zwei Sitzungen eines Benutzers oder bei Systemzusammenbrüchen. • aus der Sicht des Benutzers durch seine Schlüsselwerte, • auf der Ebene der Speichermedien durch seine Adresse, • auf der Ebene des Datenbanksystems durch einen sogenannten Tupelidentifikator, TID, der bei der erstmaligen Eingabe eines Tupels erzeugt wird, und zwar: • Identifikation und Lebensdauer eines Tupels unterscheiden sich grundlegend von den entsprechenden Eigenschaften von Variablen in prozeduralen Programmiersprachen. • Lokale Variablen leben vom Zeitpunkt eines Prozeduraufrufs bis zu dessen Beendigung und werden durch ihre Lage auf dem Laufzeitstack identifiziert. automatisch durch das System, im allgemeinen für den Benutzer unsichtbar, systemweit eindeutig, über die Zeit unveränderbar, mit dem eigentlichen Tupel stets „verbunden”. J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 • Dynamische Variablen leben vom Zeitpunkt ihrer ausdrücklichen Erzeugung bis zu ihrer ausdrücklichen Entfernung, längstens jedoch bis zur Beendigung der jeweiligen Programmausführung, und werden durch den bei ihrer Erzeugung zurückgelieferten Zeiger identifiziert. 12.3 J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.4 Bestimmung von Adressen aus Tupelidentifikatoren (fortlaufende) Tupelnummer Relationennummer n r Tupelidentifikator : r Übersetzungstabelle für Relation mit Nummer r : 1 2 . . . • benutzersichtbare Schlüsselwerte, • Tupelidentifikator und • Speicheradresse, . . . zueinander in Beziehung gesetzt werden können, d.h. genauer: b . . . b . . . ( n, r ) : a Block mit Nummer b, im allgemeinen auf Magnetplattenspeicher : Informationssysteme hängt zunächst entscheidend davon ab, wie schnell die drei Identifikationsgrößen von Tupeln, nämlich Blocknummer n . . . J. Biskup Effizienz für Anfragen und Änderungen . . . a Tupelwerte Zugriffsstrukturen Verwaltungsteil Informationsteil 17.11.99 12.5 • [schlüsselbezogenes Suchen] vom Aufwand der Umwandlung „benutzersichtbare Schlüsselwerte |→ Tupelidentifikator” und • [physisches Suchen und Transport] vom Aufwand der Umwandlung „Tupelidentifikator |→ Speicheradresse”, mitsamt gegebenenfalls Transport des Tupels vom Hintergrundspeicher in den Hauptspeicher. J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.6 Effizienz für Anfragen und Änderungen Zugriffsstrukturen hängt zusätzlich davon ab, • Um die Effizienzanforderungen beim schlüsselbezogenen und inhaltsbezogenen Suchen sowie beim Relationendurchlauf zu erreichen. wie schnell Tupel bzw. Folgen (insbesondere Paare) von Tupeln aufgrund elementarer Eigenschaften ihrer Werte (Vergleich bezüglich Gleichheit oder Ungleichheit oder gegebenenfalls ergänzend auch Größenvergleich) aufgefunden werden können, etwa für die A=c-Selektion bzw. für den natürlichen Verbund, d.h. • Neben den eigentlichen Relationen mit ihren Tupeln (primäre Information) speichert man auch Hinweise zum Auffinden dieser Tupel (sekundäre Information). • [inhaltsbezogenes Suchen] vom Aufwand der Bestimmung „(benutzersichtbare) Attributwerte |→ Tupelidentifikator (bzw. direkt Speicheradresse)“; hängt auch ab • [Relationendurchlauf] • Für Änderungen kann man dabei meistens folgendes erwarten: Der Zeitaufwand für das Einfügen erhöht sich. Der Zeitaufwand für das Entfernen verringert sich. vom Aufwand zum systematischen vollständigen Durchlauf einer Relation. J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 • Die entstehende Redundanz vergrößert zwar den Speicheraufwand, verringert aber im Mittel erheblich den Zeitaufwand für Anfragen. 12.7 J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.8 gängige Zugriffsstrukturen B*-Baum • sequentielle Listen, etwa durch Felder oder Verkettungen verwirklicht, zur Unterstützung von Relationendurchläufen; • Index für schlüsselbezogenes Suchen. • Sequentielle Liste für einen systematischen Durchlauf der TIDs einer Relation. • Indexe, etwa als B*-Bäume oder durch Hash-Verfahren verwirklicht, zur Unterstützung des Suchens in einer Relation; • Auf der Domäne der Schlüsselwerte ist eine lineare Ordnung definiert. • Links zur Unterstützung des gleichzeitigen Suchens in zwei oder mehreren Relationen. J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.9 J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.10 • Ein teil-ausgeglichener, geordneter Baum, dessen Blätter alle die gleiche Höhe besitzen. Eine Relation mitglied • Ein Blattknoten enthält eine geordnete Folge von Paaren < (benutzersichtbarer) Schlüsselwert, TID >. mit Schlüsselattribut Name, Eigenschaftsattribut Ort und gegebenenfalls weiteren Attributen werde eingegeben in der folgenden Reihenfolge: • Zusätzlich werden die Blattknoten untereinander doppelt verkettet. a. meier dort ... b. müller boch ... • Durchläuft man alle Blätter von links nach rechts, so erhält man die sortierte Folge (ohne Wiederholung) aller (derzeit) vorhandenen Schlüsselwerte. c. schmidt bonn ... d. esser aach ... e. biller dort ... • Ein Elternknoten enthält eine geordnete Folge der Art Verweis auf Kind, Schlüsselwert, Verweis auf Kind,...,Schlüsselwert, Verweis auf Kind. f. brenner dort ... g. bauer duis ... • Durchläuft man alle Knoten in inorder-ähnlicher Weise, so erhält man eine sortierte Folge (mit Wiederholung) aller (derzeit) vorhandenen Schlüsselwerte. • Der Baum wächst von den Blättern zur Wurzel, indem ein voller Knoten geteilt wird und die entsprechenden Verweise im Elternknoten eingetragen werden. Die Relation mitglied habe die interne Nummer 2; fortlaufende Tupelnummern seien dezimal dreistellig. Ein Knoten kann höchstens 7 Einträge (Attributwert, TID oder Verweis) enthalten. • Die Größe eines Knotens ist im allgemeinen die für den Hintergrundspeicher verwendete Blockgröße. J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.11 J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.12 a. f. <mei,0012> bre <bil,0052>,<bre,0062> mei <ess,0042>,<mei,0012> <mül,0022>,<sch,0032> <mei,0012>,<mül,0022> b. g. <mei,0012>,<mül,0022>,<sch,0032> c. bre <bau,0072>,<bil, 0052>,<bre,0062> mei <ess,0042>,<mei,0012> <mül,0022>,<sch,0032> mei d. <ess,0042>,<mei,0012> <mül,0022>,<sch,0032> mei <bil,0052>,<ess,0042>,<mei,0012> J. Biskup Informationssysteme Zugriffsstrukturen <mül,0022>,<sch,0032> 17.11.99 12.13 J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.14 Wird der Index bezüglich eines Nichtschlüsselattributs, e. also zur Unterstützung inhaltsbezogener Suche, boch aufgebaut, so haben die Einträge in die Blattknoten die Form <aach,0042>,<boch,0022> <bonn,0032>,<dort,0012,0052> < (benutzersichtbarer) Attributwert, Folge von TIDs >. f. Im Beispiel ergibt sich für die Ortsangaben: boch <aach,0042>,<boch,0022> a. <bonn,0032>,<dort,0012,0052,0062> <dort,0012> g. boch <boch,0022>,<dort,0012> b. <aach,0042>,<boch,0022> dort <bonn,0032>,<dort,0012,0052,0062> <duis,0072> <boch,0022>,<bonn,0032>,<dort,0012> c. boch d. <aach,0042>,<boch,0022> J. Biskup Informationssysteme <bonn,0032>,<dort,0012> Zugriffsstrukturen 17.11.99 12.15 J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.16 Links gemeinsamer B*-Baum für die Relationen mitglied und entfernung • für zwei (oder analog für mehr) Relationen jeweils einen Index bezüglich der gleichen Domäne (Attribut) bereitstellen, In einer zweiten Relation entfernung sollen die Weglängen von Hildesheim eingetragen werden. • ein B*-Baum mit Einträgen in die Blattknoten folgender Art: < (benutzersichtbarer) Attributwert; Folge von TIDs für erste Relation; Folge von TIDs für zweite Relation > • manchmal auch sinnvoll, in die Blätter die Tupel als Ganzes eintragen. Einträge in Blattknoten erhalten die folgende Form: < Stadtname; Folge von TIDs für mitglied; km-Angabe für entfernung >. Die Relation entfernung sei gegeben durch h. dort 235 i. boch 250 j. bonn 366 k. aach 398 l. duis 287 m. düss 308 boch bonn dort <aach;0042;398>,<boch;0022;250> <bonn;0032;366> J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.17 J. Biskup Informationssysteme <duis;0072;287>,<düss; ;308> <dort;0012,0052,0062;235> Zugriffsstrukturen 17.11.99 12.18 Dieser Baum verwirklicht • eine sequentielle Liste für die Tupel der Relation entfernung, sortiert nach dem Stadtnamen; • eine sequentielle Liste für die TIDs der Relation mitglied, sortiert nach dem Stadtnamen; • einen Index für die Relation entfernung bezüglich des Stadtnamens; • einen Index für die Relation mitglied bezüglich des Stadtnamens; • einen Link für die beiden Relationen entfernung und mitglied bezüglich des Stadtnamens. J. Biskup Informationssysteme Zugriffsstrukturen 17.11.99 12.19