Zugriffsstrukturen - Informationssysteme

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