Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

17
Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Transcript of Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Page 1: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Dr. Brigitte Mathiak

Kapitel 9

Physische Datenorganisation(ganz kurz)

Page 2: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 2

Lernziele

• Motivation für schnellere Zugriffe• Anlegen eines Index

Page 3: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 3

Bottleneck Festplatte

Selbst sehr schnelle Festplatten haben typischerweise Zugriffszeiten im ms-Bereich

Da die Prozessoren im Vergleich sehr viel schneller sind, lohnt es sich typischerweise selbst vergleichsweise komplexe Rechenoperationen durchzuführen um dadurch Festplattenzugriffe zu sparen.

Weiterhin können Festplatten sehr gut Daten am Stück lesen. Daher ist es die Standardoperation gleich einen ganzen Block (genannt Seite) an Daten zu lesen, unabhängig, ob auch tatsächlich alle Daten benötigt werden.

Caching und vorrausschauendes Vorladen von Daten ist dabei ein aktives Forschungsgebiet.

Was wir hier in Vorlesung betrachten sind Datenstrukturen, die helfen die Daten besonders schnell wieder zu finden.

Page 4: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 4

Beispiel für einen binären Suchbaum

London, Paris, Madrid, Kopenhagen, Lissabon, Zürich, Frankfurt, Wien, Amsterdam, Florenz

London

Paris

Madrid

Kopenhagen

Lissabon ZürichFrankfurt

WienAmsterdam

Florenz

Page 5: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 5

Page 6: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 6

B+-Baum

Referenz-schlüssel

Such-schlüssel

Page 7: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 7

Page 8: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Hashing

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 8

Page 9: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 9

Hashing

Bäume: logk(n) viele Seitenzugriffe ..

Hashing: Fast eindeutige Zuordnung von Datum zu Bucket (Behälter) h: S → B

- S Schlüssel (in diesem Kontext hier: nicht notwendigerweise Schlüssel im Sinne eines logischen Schema)

- B: Nummerierung von n Behältern- Zugriff innerhalb von 1-2 Schritten

- Charakteristiken der gesuchten Hash-Funktion• Fester vs flexibler Wertebereich• Gute Verteilung über den Wertebereich, auch bei schlechter Verteilung

der Datencharakteristiken über den Eingabebereich

Page 10: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 10

Hashing

Abbildung h: D [0..m-1], genannt Hash-Funktion,von Schlüsseln x1, ..., xn aus Domain D (z.B. Strings) auf Positionenh(x1), ..., h(xn) in Array a[0..m-1], genannt Hash-Tabelle (mit n < m) Speicherung von Schlüssel xi in a[h(xi)]

Anforderungen an h: sehr effiziente Berechenbarkeit zufällige „Streuung“ (Randomisierung) von x1, ..., xn auf [0..m-1] Urbilder von j1, j2 [0..m-1] annähernd gleich groß für alle j1, j2 und alle möglichen

x1, ..., xn für geordnete Schlüssel x1 < x2 < ... < xn sollte die Ordnung von h(x1), h(x2), ...,

h(xn) eine zufällige Permutation sein

Beispiele für brauchbare Hash-Funktionen h(x) = (ax + b) mod m für Integers x mit Konstanten a, b h(x) = (mittlere k Ziffern von x2) mod m für k-stellige Integers x h(x) = (ord(c1)+...+ord(ck)) mod m für Strings c1c2...ck k

mit ord: S [1..||]

Page 11: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 11

Statisches Hashing

Page 12: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken für Mathematiker, WS 11/12 Kapitel 10: Datenorganisation 12

Page 13: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken für Mathematiker, WS 11/12 Kapitel 10: Datenorganisation 13

Page 14: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken für Mathematiker, WS 11/12 Kapitel 10: Datenorganisation 14

0 1

0 1

0 1

Bucket

Bucket

Bucket

Bucket

Bucket

Bucket

1

1 11

0

0007 13

6 18

32 48

4

Page 15: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken für Mathematiker, WS 11/12 Kapitel 10: Datenorganisation 15

0 1

0 1

0 1

Bucket

Bucket

Bucket

Bucket

Bucket

Bucket

1

1 11

0

000

001 110

Präfix001

Präfix1

7 13

6 1832 48

4

Page 16: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 16

SQL: Create Index

Grobsyntax:

CREATE [UNIQUE] INDEX Indexname ON Tabellenname (Attribut1, Attribut2 ..)

DROP INDEX Indexname

Primary Key hat immer einen Index (muss nicht explizit indexiert werden)

.. Oracle: default-Indextyp ist ein B+ Baum

Beispiele:

CREATE INDEX Studenten_idx1 ON Studenten(Semester)

DROP INDEX Studenten_idx1

Page 17: Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)

Standardoption sind B+-Bäume – Warum?

B+-Bäume sind stärker an die Seitenstruktur der Daten angepasst, der Grad k ist typischerweise sehr hoch, meist hat jeder Knoten eine Seite, also z.B. 64 MB. Logkn mit hohem k ergibt also fast immer 1 oder 2. Da die B+-Bäume sehr dicht sind, können die Nicht-Blattknoten oft komplett im Cache gehalten werden und benötigen dann gar keine Festplattenzugriffe.

Ein Hash, selbst ein erweiterter Hash benötigt viel Redundanz, es können also pro Seite weniger Daten referenziert werden. Da aber der benötigte Speicher direkt an der Performance hängt werden in der Praxis oft mehr Seitenzugriffe benötigt. Überlegen ist der Hash in Situationen, wo sowieso die kompletten Daten (mit Index) im Cache sind, etwa sehr viele Anfragen auf eine kleine Menge von Daten kommen oder wenn die Daten auf mehreren Rechnern verteilt sind.

Datenbanken, WS 12/13 Kapitel 9: Datenorganisation 17