Synchronisationsmodul Informatik Teil-Modul Datenbanken

Synchronisationsmodul Informatik Teil-Modul „Datenbanken“ Kapitel 4: Interne Datenorganisation Schestag Synchronisationsmodul DB (Master DS) Kapite...
Author: Franz Adenauer
6 downloads 0 Views 1MB Size
Synchronisationsmodul Informatik Teil-Modul „Datenbanken“ Kapitel 4: Interne Datenorganisation

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 1

Interne Datenorganisation Inhalte des Kapitels • Aufbau eines Speichermediums, Pages und Pufferverwaltung • Datenorganisation • Index und B-Baum • Hash-Indexe

Lernziele • Die mit dem Zugriff auf den Sekundärspeicher verbundenen PerformanceProbleme sollen klar sein. • Die grundlegende Idee der Pufferverwaltung sollte bekannt sein. • Die interne Datenorganisation und unterschiedliche Zugriffsstrukturen sollen in ihrer Implementierung und strategisch verstanden sein.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 2

Datensuche wertebasiert  heap-organisiert Wo finde ich die Prüfungsakte des Studenten mit der Matrikelnummer 685 234 ?

Irgendwo hier, in einem dieser Ordner!

Suchstrategie? Aufwand? Schestag

Synchronisationsmodul DB (Master DS)

C Kapitel 4 - 3

Datensuche wertebasiert  sequenzielle Ablage Klar, in welchem Ordner ich die Prüfungsakte des Studenten mit der Matrikelnummer 685 234 finde!

685 201 685 210

685 211 685 220

685 221 685 230

685 231 685 240

... ...

C Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 4

Datensuche wertebasiert  mit direkter Referenz Wo finde ich die Prüfungsakte des Studenten mit der Matrikelnummer 685 234 ? 13

14

15

16

17

18

19

20

21

22

23

25

26

Du findest sie in Ordner Nr. 18, darin die 4. Akte!

Woher weiß er das so genau???

Suchstrategie? Aufwand? Schestag

24

Synchronisationsmodul DB (Master DS)

C Kapitel 4 - 5

Aufbau eines Speichermediums – Pages Magnetplattengerät mehrere Platten (Oberflächenspeicherung, beidseitige Speicherung) Spuren, die konzentrische Kreise um die Drehachse bilden

Lese- / Schreibkopf a

b

Sektoren *) (kleinste Einheiten, die das DBMS adressieren und auf die es zugreifen kann)

Zylinder (unmittelbar übereinander liegende Spuren)





Pages (Datenseiten, Datenblöcke) nennt man die Zusammenfassung von mehreren benachbarten Sektoren zu einer Verarbeitungseinheit (Größe einer Page: zwischen 512 Bytes und 8k Bytes). In einer Page können ein oder mehrere vollständige Datensätze, Teile von Datensätzen oder Indexeinträge gespeichert werden.

*) Sektorenadresse: Angaben zu Zylinder, Plattenoberfläche und Nr. des Sektors auf der Spur Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 6

Aufbau eines Speichermediums – Pages •

Zum Lesen der Daten muss das DBMS eine Page komplett in den Hauptspeicher laden. Eine Page ist die kleinste physische Einheit, die vom DBMS in den Hauptspeicher geladen werden kann (und ist deshalb immer  der kleinsten physischen Einheit, die das Betriebssystem mit einem Zugriff in den Hauptspeicher laden kann).  Pages sind grundlegende Einheiten für das Lesen und Transferieren von Daten. Adressierung von Datenblöcken (Pointer) • Die Adressierung einer Page erfolgt über physische Adressen (relevant für das Betriebssystem) und logische Adressen (relevant für das DBMS). • Ein Pointer kann sich nicht nur auf eine Page beziehen, sondern auch auf einen bestimmten Datensatz innerhalb einer Page. Man nennt einen solchen Pointer dann auch Record-ID (RID): RID = Adresse der Page + Aufsetzpunkt für den Datensatz innerhalb der Page

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 7

Zugriffszeiten Größenordnung Zugriffszeiten Beispiel: 100 Pages lesen • Hauptspeicher: 100 x 100 ns = 10.000 ns = 0,01 ms • Plattenspeicher: 100 x 10 ms = 1.000 ms = 1 s Zugriffslücke: 10 5

1-10ns Register 10-100ns Cache

100-1000ns Hauptspeicher 10 ms Plattenspeicher

sec Archivspeicher Quelle: Kemper:2004 Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 8

Pufferverwaltung • •

Puffer: ausgezeichneter Bereich des Hauptspeichers. Er ist in Pufferrahmen gegliedert, jeder Pufferrahmen kann eine Page (Seite) der Platte aufnehmen. DB-Buffer B‘

C‘

A‘

D

B

A‘

Einlagerung D

Auslagerung

E‘

...

F G



E‘ F

Jede Seite, die von der Platte in den DB-Puffer gelesen wird, wird dort so lange wie möglich vorgehalten, um unnötige I/Os auf die Platte zu vermeiden (vgl. auch Kapitel 7, Transaktionsmanagement).

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 9

Interne Datenorganisation  Aufbau eines Speichermediums, Pages und Pufferverwaltung •

Datenorganisation



Index und B-Baum



Hash-Indexe

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 10

Interne Datenorganisation •

Die interne Datenorganisation sollte so eingerichtet sein, dass die Anzahl der Plattenzugriffe bei der Recherche oder der Manipulation von Daten minimal ist.



Hierfür wird die Anordnung der gespeicherten Daten auf der Platte so optimiert, dass der gewünschte Datensatz durch möglichst wenige I/Os gefunden wird. Eine solche Anordnung nennen wir Speicherstruktur.



Verschiedene Speicherstrukturen haben verschiedene PerformanceCharakteristika, die für jeweils unterschiedliche Applikationen / Datenbankbereiche von Vorteil sein können.



Eine optimale Datenorganisation kann nur erzielt werden, wenn die Datenstrukturen, statistische Informationen zum Datenvolumen sowie Ausprägungen innerhalb der Wertebereiche bekannt sind und berücksichtigt werden ( Optimizer, Systemkatalog, Kapitel 5). Es gibt keine Speicherstruktur, die optimal für alle Applikationen ist!

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 11

Datenorganisation •

Beim Zugriff auf die Daten einer Datenbank spielt neben dem MindestFüllgrad der Pages auch die Organisationsform der zugrunde liegenden Daten eine Rolle.



Unter der Organisationsform von Daten versteht man die Form des Abspeicherns und die Möglichkeiten des Zugriffs.



Folgende Organisationsformen werden vorgestellt: - Heap-Organisation mit linearer Suche, - Sequenzielle Organisation mit binärer Suche, - Indexsequentiellen Organisation, bei der eine sequenzielle DateiOrganisationsform durch eine Indexdatei über dem Sortierattribut der sequenziellen Datei ergänzt wird.



Im Folgenden wird generell von „Dateien“ gesprochen, im Zusammenhang mit relationalen DBMS kann man sich jeweils Tabellen vorstellen.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 12

Die Heap-Organisation – lineare Suche •

Die Daten der Datei liegen in unsortierter Form vor: ISBN

Titel

VerlagID

EJahr

3011 1013 2899 1012 3012 …

YYY Klm mmm Abc rst …

500 420 310 500 289

1977 2005 1980 2002 2010 …

Preis € 49,90 12,95 19,80 24,80 68,80 …

Heap-Organisation einer Datei Record ID Record 1 Record 2 Record 3 Record 4 Record 5 …



Die Daten werden fortlaufend in der Reihenfolge ihrer Eingabe gespeichert. In dieser Reihenfolge werden sie auch wieder gelesen und verarbeitet.



Der Aufwand für (Lineare) Suche in einer unsortierten Datei mit n Datensätzen beträgt O(n), d.h. im „worst case“ müssen alle Datensätze durchlaufen werden, bis der gesuchte Satz gefunden ist.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 13

Die Sequenzielle Organisation – binäre Suche •

Verbesserungsansatz gegenüber linearer Suche: Die Datei wird nach einem Schlüssel, z.B. nach dem Primärschlüssel, sortiert abgespeichert, mehrere Records werden in einer Page untergebracht, und die Adresse der Pages in einem Pointer verfügbar gemacht. Primär Schlüssel

Schestag

ISBN

Titel

1011 1012 1013 … 2889 … 3011 3012 …

XXX Abc Klm

VerlagID 500 500 420

EJahr

Preis €

Page ID

1997 2002 2005

78,90 24,80 12,95

Page 1

mmm

310

1980

19,80

YYY rst …

500 289

1977 2010 …

49,90 68,80 …

Synchronisationsmodul DB (Master DS)

… Page 2 … Page 3 … Kapitel 4 - 14

Die Sequenzielle Organisation – binäre Suche  Vorteil: Binäre Suche ist möglich, in der jeweiligen Page müssen die Daten jedoch immer noch sequentiell gelesen werden. Der Aufwand für Binäre Suche in einer sortierten Datei mit n Records beträgt O(log2(n)) – vgl. auch Anhang A.

ABER:  Das Update in einer Datei, die nach einem Schlüssel sortiert ist, ist mit erheblichen Aufwänden verbunden, insbesondere wenn beim Einfügen oder Löschen von Datensätzen Pagegrenzen überschritten werden!  Die Sortierreihenfolge nach einem bestimmten Attribut lässt sich i. d. R. innerhalb einer Datei nicht mit der Sortierreihenfolge nach einem anderen Attribut vereinbaren.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 15

Interne Datenorganisation  Aufbau eines Speichermediums, Pages und Pufferverwaltung  Datenorganisation •

Index und B-Baum



Hash-Indexe

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 16

Die Indexdatei •

• •

Zu Attributen, die in einer Datei besonders oft als Selektionskriterien verwendet werden, wird eine zweite, sortierte Datei angelegt, die zu jeder Ausprägung des Attributes den Pointer auf die entsprechende Page bzw. den zugehörigen Record enthält. Diese Datei nennt man Index(-datei). Als Plural im Kontext mit Datenbanken spricht man häufig von Indexen. Eine Indexdatei hat im Prinzip eine „2-spaltige Struktur“: Wert des indizierten Attributes auf- oder absteigend sortiert

Schestag

physische Adresse PID oder RID

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 17

Die Indexdatei Ein Index ist immer sortiert nach dem ihm zugeordneten Attribut und deshalb geeignet, binäre Suche zu unterstützen. Index für die eindeutigen Werte des Attributes ISBN

ISBN 1000 2000 … 6000 …

Schestag

Page ID 1 2 … 6 …

Index für die nicht notwendig eindeutigen Werte des Attributes Erscheinungsjahr EJahr

EJahr … 1958 1958 … 1959 … … 2011 …

Record ID … 2384 3887 … 2922 … … 8734 …

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 18

Die Indexdatei Ein Index erhöht die Geschwindigkeit beim Suchen, aber er reduziert die Geschwindigkeit bei Updates. •

Bei jedem Hinzufügen eines neuen Records oder beim Ändern der entsprechenden Attribute wird auch unmittelbar der Index modifiziert. Diese Updates erfolgen analog den entsprechenden Vorgängen in sortierten Dateien.



Zu einer Datei kann es beliebig viele Indexe geben. Ein Index kann auch aus mehreren Attributen eines Records zusammengesetzt sein.

Der Begriff des Index ist nicht spezifisch für relationale DBMS sondern spielt auch in DBMS auf der Grundlage anderer Datenbankmodelle eine wichtige Rolle als Zugriffspfad! Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 19

Beispiele von Indexen •

Index auf dem Attribut VerlagID für die Buch-Datei

VerlagID (Index)

Schestag

Buch-Datei (Daten)

Dekor (Index)

310

3011 YYY

1977

500

...

Fisch

420

1013 Klm

2005

420

...

Fisch

500

1011 XXX

1997

500

...

Rose

500

1012 Abc

2002

500

...

Rose

500

2889 mmm

1980

310

...

Rose

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 20

Beispiele von Indexen •

Index auf dem Attribut VerlagID und auf dem Attribut Erscheinungsjahr (EJahr) für die Buch-Datei VerlagID (Index)

Schestag

Buch-Datei (Daten)

EJahr (Index)

310

3011 YYY

1977

500

...

1977

420

1013 Klm

2005

420

...

1980

500

1011 XXX

1997

500

...

1997

500

1012 Abc

2002

500

...

2002

500

2889 mmm

1980

310

...

2005

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 21

Beispiele von Indexen •

Index über die zwei Attribute VerlagID und Erscheinungsjahr (EJahr) für die Buch-Datei

VerlagID | EJahr (Index)

Schestag

Buch-Datei (Daten)

310 | 1980

3011 YYY

1977

500

...

420 | 2005

1013 Klm

2005

420

...

500 | 1977

1011 XXX

1997

500

...

500 | 1997

1012 Abc

2002

500

...

500 | 2002

2889 mmm

1980

310

...

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 22

Dünne und dichte Indexe Man unterscheidet grundsätzlich zwei Arten von Indexen: •

dünner Index: die Schlüsselwerte sind eindeutig, und die zugehörigen Tupel werden sortiert gespeichert.



dichter Index: die Schlüsselwerte sind eindeutig, aber die zugehörigen Tupel werden unsortiert gespeichert (Heap-Organisation), oder die Schlüsselwerte können in der Datei mehrmals vorkommen.

 Welche Schlüsselwerte einer Relation sind immer eindeutig, welche können mehrmals vorkommen?  Inwiefern kann man bei eindeutigen Schlüsselwerten und zugehörigen, sortiert gespeicherten Tupeln die Anzahl der Einträge im Index reduzieren?

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 23

Dünner Indexe •

Dünner Index auf dem Primärschlüsselfeld ISBN der Buch-Datei. Der Index enthält jeweils den ersten Schlüssel, der in einer Page vorkommt. ISBN (Index) ISBN

PID

1000 2000 3000 4000 ….

PID 1 PID 2 PID 3 PID 4 ….

Wo findet man den Datensatz mit ISBN 2889?

Schestag

PID 1 1000|….1011|XXX|1997, … 1012|Abc|2002|… 1013|Klm |2005| …

PID 2 2000|….2001|… 2002|… 2003| … PID 3 3000|….3011|YYY|1977| … 3012|rst|2010|… 3013| …

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 24

Dünner Indexe Dünner Index (non dense index) Die Index-Datei enthält nicht für jeden gespeicherten Record einen Eintrag, sondern nur für jede Page (Datenblock).  Die Index-Datei hat weniger Datensätze als die eigentliche Datei, sie ist also „dünner“! Der Index enthält jeweils den ersten (oder letzten) Schlüssel, der in einer Page vorkommt und dessen Adresse (Pagepointer). Um die RID des gesuchten Record in der Index-Page zu finden, muss diese Page im Hauptspeicher noch sequentiell durchsucht werden.  Dünne Indexe werden im allgemeinen für die Primärschlüssel der Records einer Datei erstellt (Primärindex).

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 25

Dichter Indexe Dichter Index (dense index) Die Index-Datei enthält für alle Records einen eigenen Index-Eintrag.  Die Index-Datei hat genau so viele Datensätze, wie die eigentliche Datei, sie ist also genau so „dicht“ wie die eigentliche Datei! Die Suche im dichten Index erfolgt analog einer Suche in sortierten Dateien. Der Index enthält jeweils den Schlüsselwert und die Adresse des zugehörigen Records (Record-pointer, RID). Dichte Indexe werden im allgemeinen für die Sekundärschlüssel der Records einer Datei erstellt (Sekundärindex). In relationalen Datenbanken ist es i. d. R. sinnvoll, auf einen Fremdschlüssel einen Sekundärindex zu legen (vgl. auch Kapitel 5).

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 26

Indexsequenzielle Dateiorganisation  Eine sequenzielle Datei-Organisationsform kann durch eine Indexdatei über dem Sortierattribut der sequenziellen Datei ergänzt wird.  Man spricht dann von indexsequenzieller Dateiorganiation.  Eine indexsequentielle Datei kann man sich als Baum mit mindestens zwei Ebenen vorstellen:

 Blattebene: Hauptdatei mit den gespeicherten Datensätzen  Die Knoten in allen anderen Ebenen des Baumes sind Indexdateien •

Man spricht von einem n-stufigen Index, wenn es eine Hauptdatei und n Indexdateien gibt  Der ISBN-Index auf Folie 4-24 ist ein 1-stufiger Index.



Der i+1-te Index zeigt auf den i-ten Index.



Wird eine Indexdatei selbst zu groß, so kann diese wieder indexsequenziell verwaltet werden.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 27

Indexiert-nichtsequenzieller Zugriffspfad  Ist keine Sortierung in der Hauptdatei gegeben, so kann man dennoch einstufige oder mehrstufige, indexiert-nichtsequenzielle Zugriffspfade aufbauen.  Die höheren Indexstufen sind dann wieder indexsequentiell organisiert.

 Unabhängig von der zugrunde liegenden Dateiorganisation der Hauptdatei gilt: Eine Indizierung von Indexstufen kann beliebig oft weiter geführt werden. Man erhält dann eine Baumstruktur, die in der Praxis i.d.R. als B-Baum (balancierter Baum, Bayer-Baum) realisiert wird, um eine Homogenität der Zugriffspfade zu erreichen.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 28

Indexe und Bäume •

Ein mehrstufiger Index als Baumstruktur besitzt die folgenden Komponenten: –

Die unterste Ebene eines mehrstufigen Index (Indexbaum) nennt man Blätter des Baumes (sie entsprechen den Records der Datei). Die Adressverweise auf bestimmte Pages des Speichers nennt man Knoten. Der oberste Knoten in der Hierarchie, der keinen Vorgänger mehr hat, heißt Wurzel. Für einen Knoten x nennen wir einen darunter liegenden Knoten Sohn, einen darüber liegenden Knoten Vater (bzw. child und parent).

– – –

65

32

97

Schestag

Synchronisationsmodul DB (Master DS)

122

112

109

103 108

102

117

130

119 125 132

106

99

93

80

95

74

81 89

68

78

53

87

71

66 70 72

45

47 51 58

36 38

40

39

35

33

16 20

48

43

37

24

14

13

11

10

5 8

1

3

17

27

7

114

76

115

41

75

12

Kapitel 4 - 29

B-Baum •





Ein B-Baum (Bayer-Baum (1972), balancierter Baum) ist ein mehrstufiger Index, bei dem alle Pfade von der Wurzel zu den Blättern gleich lang sind, ein B-Baum ist also immer höhenbalanciert. Im Datenbankbereich sind die Knoten der Suchbäume zugeschnitten auf die Seitenstruktur des DBMS. Ein B-Baum der Ordnung m hat die folgenden Eigenschaften: – Alle Knoten sind gleich groß (aber sie müssen nicht alle immer gleich viele Einträge haben!). – Jeder Knoten enthält höchstens 2m Records. – Jeder Knoten - mit Ausnahme der Wurzel - enthält mindestens m Records. – Die Wurzel enthält maximal 2m Records und mindestens einen Record. – Jeder Record besteht aus einem Schlüssel- und einem nicht-Schlüssel-Anteil. – Ein Knoten - mit Ausnahme von Wurzel und Blättern - hat n+1 Nachfolgeknoten, wenn er n Schlüssel enthält (m  n  2m). n=3 a b c a

Schestag

Synchronisationsmodul DB (Master DS)

a, b

b, c

c Kapitel 4 - 30

Seitenformat des B-Baums Seitenformat:

Z0

S1

Z1

D1

S2

Z2

D2

S3



Sm

Zm

Dm

frei

Zi = Zeiger auf Seite der nächsten Stufe Si = Schlüssel (Zugriffsattributwert) Di = Daten des Satzes oder Verweis auf den Satz (bzw. die Sätze) d.h. materialisiert oder referenziert

Ein B-Baum ist als Primär- und Sekundärindex geeignet.

Um in einem B-Baum mit n Knoten der Ordnung m einen Wert zu suchen, muss man höchstens logm (n)-mal auf die Platte bzw. den Index zugreifen. Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 31

Variante B+-Baum Der B+-Baum ist die in der Praxis am häufigsten eingesetzte Variante des B-Baumes: Änderungsoperationen sind effizienter, die Baumhöhe ist verringert. Die Daten befinden sich nur auf den Blattseiten. Die inneren Knoten enthalten nur Schlüssel und Zeiger auf die nachfolgende Seite der nächsten Stufe: • Seitenformat innere Knoten: Z0

S1

Z1

S2

Z2

S3



Sm

Zm

frei

Zi = Zeiger auf Seite der nächsten Stufe Si = Schlüssel •

Seitenformat Blattknoten: V

S1

D1

S2

D2

S3



Sm

Dm

frei

N

Si = Schlüssel Di = Daten des Satzes oder Verweis auf den Satz V = Vorgänger-Zeiger N = Nachfolger-Zeiger Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 32

B-Baum vs. B+-Baum

13 Schulz …

14 Meier





keine Daten(-verweise) in den inneren Knoten  es passen mehr Einträge auf eine Seite  Reduktion der Höhe des Baumes  weniger Seitenzugriffe bei lookup, insert, delete aber jetzt immer logm(n)

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 33

B- und B+-Bäume •

B- und B+-Bäume sind geeignet sowohl für – Punktanfragen ("Prodnr = 101322“) als auch für – Bereichsanfragen ("Preis 50.00 und Preis  200.00").



In einem B- bzw. B+-Baum werden neben dem Suchen (Lookup) alle Arten von Update-Operationen ausgeführt (insert, update, delete). Bei UpdateOperationen muss jeweils für die Balanciertheit des Baumes gesorgt werden.  vgl. Hörsaalübung

 Algorithmen zum Suchen, Einfügen und Löschen in B-Bäumen: vgl. Anhang B.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 34

Index inclusion – Anmerkung zu Praktikum 2 Warum kommt es im angegebenen Fall zu einer Index inclusion? Wie kann man diese Index inclusion verhindern?

 ???

/*==============================================================*/ /* Table: BOOT */ /*==============================================================*/ create table BOOT ( BOOTSTYP VARCHAR2(20) not null, BOOTSNR INTEGER not null, LETZTEWARTUNG DATE, constraint PK_BOOT primary key (BOOTSTYP, BOOTSNR) );

Schestag

/*==============================================================*/ /* Index: BOOTSTYPZUORDNUNG_FK */ /*==============================================================*/ create index BOOTSTYPZUORDNUNG_FK on BOOT ( BOOTSTYP ASC ); Synchronisationsmodul DB (Master DS)

Kapitel 4 - 35

Interne Datenorganisation  Aufbau eines Speichermediums, Pages und Pufferverwaltung  Datenorganisation  Index und B-Baum •

Hash-Indexe

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 36

Hash-Indexe •

Nachteil der Datenverwaltung über B-Bäume: In der Regel sind beim Durchlaufen der Pfade mehrere I/Os auf externen Speicher notwendig.  Eine alternative Methode zur Datenverwaltung mit Hilfe von Indexen sind die Hash-Indexe: • •

Die Record-Adressen werden über einen geeigneten Algorithmus, der Hash-Funktion, aufgrund des Schlüsselwertes unmittelbar berechnet. Eine Hash-Funktion sollte – „einfach“ zu berechnen sein, und – die Menge der Schlüsselwerte möglichst gleichmäßig und zufällig auf die Menge der verfügbaren Adressen abbilden. Schlüsselmenge (Keys k)

Menge der Speicherplätze (Adressen) logisch

{1011, 1012, 1013, ... 1021, 1022, 1023, ... 3011, 3012, ...} Schestag

physisch

Hash-Funktion h(k)

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 37

Hash-Indexe •



Voraussetzung : Datenbestände, die relativ „statisch“ sind, und bei denen möglichst selten Löschoperationen auftreten. Hash-Indexe eignen sich also nicht für sehr „dynamische“ Datenbestände. Die „bekannteste“ Hash-Funktion ist die Modulo-Funktion (DivisionsRest-Verfahren): h(k) = k mod p k=Schlüsselwert, p=Anzahl der vorhandenen Adressen



Die Modulo-Funktion lässt sich nur auf ganzzahlige numerische Schlüssel anwenden. Alphanumerische oder dezimale Schlüssel müssen so umgewandelt werden, dass sie ebenfalls in ganzzahliger, numerischer Form vorliegen.



Beispiel:

Schestag

p=1000, k={27, 489, 1.020, 2.027, ...}



Synchronisationsmodul DB (Master DS)

h(27) = 27 h(489) = 489 h(1.020) = 20 h(3027) = 27 ... Kapitel 4 - 38

Hash-Indexe Kollisionsbehandlung (1) Für jede Adresse wird ein Überlaufbereich vorgesehen, und gleiche HashFunktionswerte werden durch Pointer linear verkettet.  Suche nach einem Record entspricht der Berechnung des HashFunktionswertes und anschließender sequentieller Suche nach dem Schlüssel. Nachteil: Dieses Verfahren benötigt u. U. viel Speicherplatz und ist häufig ineffizient in der Suche.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 39

Hash-Indexe Kollisionsbehandlung (2) Offene Hash-Verfahren Im Fall einer Kollision wird für den betroffenen Record durch Anwenden einer zweiten Hash-Funktion eine Ersatzadresse ermittelt. Dieses Verfahren kann – falls nötig – beliebig oft fortgeführt werden, und Adressen aus kollidierenden Bereichen können durch lineare Listen verkettet werden (Kollisionsketten). Die Berechnung des ersten Hash-Funktionswertes bezeichnet man als Streuen, die Berechnung der Ersatzwerte als Sondieren. Beispiel:

hi(k)=(h(k)+c·i) mod m, c=const., lineares Sondieren hi(k)=(h(k)+i2) mod m, quadratisches Sondieren

 Sind Hash-Indexe für Punkt- und Bereichsabfragen gleichermaßen geeignet? Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 40

Zusammenfassung •

Persistente Daten werden auf dem Plattenspeicher in Form von Pages verwaltet.



Der DB-Puffer ist geeignet, einmal geladene Pages im Hauptspeicher vorzuhalten, um den Zugriff auf die Daten zu beschleunigen.



Indexe (B-Bäume und Hash-Indexe) sind Zugriffsstrukturen, die dazu geeignet sind, wertebasierte Suche performant zu unterstützen.



Primärindexe sind geeignet für Primärschlüsselspalten, Sekundärindexe für Fremdschlüsselspalten.



Ein strategisches Unterscheidungsmerkmal für unterschiedliche Zugriffsstrukturen ist ihre Eignung für Punkt- und / oder Bereichsabfragen.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 41

Vorkenntnisse: Ergebnisse des Eingangstests*  1 Fragen und Antworten aus dem Bereich „Zugriffspfade “ richtig

1. Was ist ein Index? (3/11)

falsch

im Prinzip richtig, aber …

Ein Index wird verwendet, um die Performance einer DB zu erhöhen. Grundsätzlich ist damit eine effiziente Speicherstruktur gemeint. Ohne Index müsste bei einer Abfrage die komplette Datenbank durchlaufen werden, bis der Treffer erreicht wird. Der Index enthält alle möglichen wählbaren Daten. Eine Positionsbezeichnung innerhalb eines Vektors/Arrays. Meistens als natürliche Zahl ausgewiesen.

Wie würden Sie die Antwort nach Kapitel 4 formulieren?

* insgesamt 11 Teilnehmer Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 42

Vorkenntnisse: Ergebnisse des Eingangstests  2 richtig

2. Was ist ein B-Baum? (1/11)

falsch

im Prinzip richtig, aber …

Ein binomialer Baum. Jeder Knoten hat zwei Kind-Knoten.

Wie würden Sie die Antwort nach Kapitel 4 formulieren?

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 43

Datenbanken 

Einführung



Semantische Datenmodellierung



Relationenmodell



Interne Datenorganisation

5.

SQL - Structured Query Language

6.

Prozedurale Spracherweiterungen von SQL, Stored Procedure und Trigger, JDBC

7.

Transaktionsmanagement

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 44

Anhang A: Binäre Suche in Arrays Der Algorithmus a[n] sei ein geordnetes Array mit n Elementen, d.h. anfangs 0 = min (Index-Minimum), n-1 = max (Index-Maximum). x sei der gesuchte Wert. x wird gesucht im Bereich a[min] ... a[max]. Wähle einen Index pos zwischen min und max, idealerweise [(min+max)/2], wobei [ ] die Gauss-Klammer darstellt. Folgende Schritte werden wiederholt durchgeführt: • a[pos] > x  suche weiter im Bereich a[min] ... a[pos-1] • a[pos] < x  suche weiter im Bereich a[pos+1] ... a[max] • a[pos] = x  Der Wert x befindet sich im Array bei Index pos. Der Wert x ist nicht im Array enthalten, wenn min > max erreicht wird. Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 45

Anhang A: Binäre Suche in Arrays •

Wählt man für den Start-Index pos zwischen min und max den Wert „in der Mitte“, so halbiert sich der Aufwand für die Lösung des Problems bei jedem Schritt.  eine Verdoppelung der Arraygröße bewirkt beim linearen Suchen eine Verdoppelung des Aufwandes, beim binären Suchen eine Erhöhung des Aufwandes um einen Schritt! •

Einen Bereich von n Elementen kann man höchstens log2(n) mal halbieren.*)



Zu jeder natürlichen Zahl n gibt es eine natürliche Zahl m, sodass n zwischen den Zahlen 2m und 2m+1 liegt, d.h. 2m  n  2m+1 .

*) Zur Erinnerung: log2(n) = y : n = 2y, z.B. log2(32) = 5, denn 25 = 32. Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 46

Anhang A: Binäre Suche in Arrays •

Beispiel Es sei n=19  m =4, denn 24 = 16 < 19 < 32 = 24+1 = 25.

 Um in einem Array mit 19 Elementen einen vorgegebenen Wert zu finden, benötigen wir maximal 4 Schritte:

n=19 n=9 n=4

n=2 n=1

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 47

Anhang A: Binäre Suche in Arrays •

Die Komplexität f(n) eines Algorithmus ist i.d.R. funktional abhängig von einer „Leitgröße“ n. – Beim linearen Suchen können wir lineare Abhängigkeit beobachten, – beim binären Suchen dagegen logarithmische Abhängigkeit: best case lineare Suche

1

binäre Suche

1

average case

worst case

n/2 log2(n)-1

n log2(n)



Es ist schwierig, den genauen Aufwand zu bestimmen. Man schätzt deshalb für große n den Aufwand durch eine Funktion g(n) ab, sodass gilt: f(n)  c ·g(n), mit einer Konstanten c. Man sagt, „f(n) ist höchstens von der Ordnung g(n)“ und schreibt f(n) = O(g(n)) („O-Notation“). Es gilt also: n/2 entspricht O(n), n entspricht O(n), log2(n)-1 entspricht O(log(n)) und log2(n) entspricht O(log(n)).



Häufige Komplexitäten von Algorithmen sind: konstant, linear, polynomial (alle Komplexitäten der Form n2-quadratisch, n3-kubisch, n4,...), logarithmisch, log-linear und exponentiell.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 48

Anhang B: Suche in B-Bäumen Suchen eines Schlüssels s im B-Baum 1. Prüfe, beginnend bei der Wurzel, ob s im gerade betrachteten Knoten x enthalten ist. Falls ja  fertig. Falls nein  2. 2. Prüfe, ob x ein Blatt (= Knoten ohne “Söhne”) ist. Falls ja  erfolgloses Ende der Suche. Falls nein  3. 3. Stelle fest, zwischen welchen Schlüsseln si-1 und si des Knotens x der Schlüssel s liegt (bzw. ob s < s1 oder s > sk ist) und setze die Suche danach mit 1. beim Knoten x.sohn[i] fort.

Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 49

Anhang B: Einfügen in B-Bäume Das Einfügen eines Schlüssels s geschieht grundsätzlich in den Blättern. 1. Durchlaufe den B-Baum mit dem neu einzutragenden Schlüssel wie beim Suchen, bis das Blatt gefunden wird, wo der Schlüssel einzutragen ist. Die Zahl der Schlüssel je Knoten (mit Ausnahme der Wurzel) muss zwischen m und 2m liegen. 2.a Anzahl der Schlüssel im Knoten < 2m  Einfügen erfolgreich beendet. 2.b Anzahl der Schlüssel im Knoten = 2m  es entsteht ein Überlauf, da das Blatt nach Einfügen 2m + 1 Schlüssel enthalten würde.  Teile den Knoten in zwei Knoten zu je m Schlüsseln. Der mittlere Schlüssel des Knoten wird vom „Vater“ aufgenommen; die beiden Zeiger rechts und links dieses Schlüssels im „Vater“ zeigen dann auf das alte und das neue darunterliegende Blatt. Läuft auch der Vaterknoten über, so muss dieser ebenfalls in zwei Knoten aufgeteilt werden etc. 3. Läuft die Wurzel über, dann wird sie aufgespalten und eine neue Wurzel angelegt.  Der B-Baum ist dann um eine Stufe gewachsen.

B-Bäume wachsen von den Blättern zur Wurzel hin! Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 50

Anhang B: Löschen in B-Bäumen 1. Suche den Knoten x, in dem der Schlüssel s enthalten ist. 2. x ist ein Blatt  lösche s (ggf. muß ein Unterlauf bereinigt werden, s.u.), andernfalls 3. 3. Ermittle den nächstgrößeren Schlüssel s’ zu s in einem Blatt des Baumes. 4. Ersetze s durch s’ und lösche s’ im Blatt x’. Enthält das Blatt x’ weiterhin  m Schlüssel, so ist das Löschen beendet; andernfalls 5. 5. In x’ stehen nur noch (m-1) Schlüssel, man spricht von einem Unterlauf. Fasse x’ und einen benachbarten Knoten x’’, der den selben Vater wie x’ hat, zu einem neuen Knoten zusammen und übernehme dabei denjenigen Schlüssel aus dem Vaterknoten, dessen beide Zeiger auf die benachbarten Knoten gezeigt haben. 6.a Ist der neue Knoten zu groß, muß er entsprechend dem Überlaufverfahren (s. Einfügen) wieder in zwei gleichgroße Knoten aufgeteilt werden, wobei der mittlere Schlüssel vom „Vater“ aufgenommen wird. 6.b Ist der „Vater“ beim Zusammenfassen von x’ und x’’ zu klein geworden, so muß auch er mit einem benachbarten Knoten zusammengefaßt werden etc. Dieser Prozeß kann sich bis zur Wurzel fortsetzen. Enthält die Wurzel vor dem Zusammenfassen nur einen Schlüssel, so verringert sich die Höhe des Baumes um 1.

Die Höhe eines B-Baumes kann sich beim Löschen verringern! Schestag

Synchronisationsmodul DB (Master DS)

Kapitel 4 - 51