38
Aufgabe 1

Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Embed Size (px)

Citation preview

Page 1: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Aufgabe 1

Page 2: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

2DBIS

Herausforderungen I

• Persistente Datenspeicherung: Möchte man jeden Morgen alle

Käufe und Verkäufe neu zusammensuchen?

• Sehr große Datenmengen: Welche Papierberge ergeben sich

wohl für alle Käufe und Verkäufe aller Aktien seit Beginn des

Aktienhandels?

• Sehr schneller Zugriff auf alle Daten: Wie lange Wartezeiten

sind akzeptierbar, wenn Sie Aktien kaufen wollen und den

aktuellen Kurs benötigen?

• Hohe Verfügbarkeit der Daten: Welche Geschäftszeiten sind im

internationalen Aktienmarkt vereinbar?

Wintersemester 15/16

Page 3: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

3DBIS

Herausforderungen II

• Hohe Flexibilität beim Datenzugriff inklusive (automatischer)

Auswertung: Wer überwacht alle Käufe und Verkäufe und erstellt

dann die Charts über den Kursverlauf?

• Hohe Flexibilität bezüglich der Datenverteilung: Können alle

Daten im internationalen Aktienmarkt zentral verwaltet werden?

• Hohe Flexibilität bezüglich der Lastverteilung: Kann ein PC das

ganze Aktienwesen steuern? Was passiert, wenn dieser ausfällt?

• Hohe Benutzerfreundlichkeit des Datenhaltungssystems:

Möchten alle Käufer komplizierte Formeln (Code) eingeben, um z.B.

die aktuellen Kurse einzusehen?

Wintersemester 15/16

Page 4: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

4DBIS

Herausforderungen III

• Sicherheit vor Datenverlust: Ist es akzeptabel, dass ein Aktienkauf auch mal

verloren geht? Was ist bei technischen Störungen?

• Sicherheit vor unberechtigtem Datenzugriff: Darf mein Nachbar wissen,

welche Aktien ich besitze?

• Paralleler Zugriff ohne Konflikte: Ist es vertretbar, dass immer nur eine Person

pro Zeiteinheit Aktien kaufen kann?

• Automatische Garantie semantischer Integrität: Kann ein Aktienkurs negativ

werden? Was passiert mit den Aktien eines Unternehmens, wenn es aufgekauft

wird?

• Hoher Grad an Datenunabhängigkeit: Muss/Kann man alle Anwendungen

ändern, wenn z.B. durch Gesetze neue Informationen zu Aktienkäufen

gespeichert werden müssen?

Wintersemester 15/16

Page 5: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Aufgabe 2

Page 6: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

• 1-elementige Knoten haben maximal 2 Kinder (links, rechts)

• 2-elementige Knoten haben maximal 3 Kinder (da sie sich ein Kind teilen)

• 3-elementige Knoten haben maximal 4 Kinder

• Definition eines B-Baums mit Ordnung n:

• Jeder Weg von der Wurzel zum Blatt hat die gleiche Länge h.

• Jeder Knoten (außer Wurzel und Blätter) hat mindestens n+1 Söhne.

• Die Wurzel hat mindestens 2 Söhne.

• Jedes Blatt besitzt mindestens n Einträge.

• Jeder Knoten hat höchstens 2n+1 Söhne.

• Während der Entstehungsphase des Baumes kann es zu Verletzungen dieser

Bedingungen kommen (Initialfüllphase).

• Rückschluss aus „Regel für Höchstanzahl der Söhne:

Page 7: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

• Gegeben: n = 3 Jeder Weg von der Wurzel zum Blatt hat die gleiche Länge h.

Jeder Knoten (außer Wurzel und Blätter) hat mindestens 4 Söhne.

Die Wurzel hat mindestens 2 Söhne.

Jedes Blatt besitzt mindestens 3 Einträge.

Jeder Knoten hat höchstens 7 Söhne.

Auf jeden Knoten passen maximal 6 Elemente.

Page 8: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

7

Beginn der Füllung mit den Werten 5,7 und 21

5 21

5

Hinzufügen der Werte 2, 10, 76

2 7 21

52 7 10 21

52 7 10 21

77 Zu voll, umsortieren

76

Hinzufügen des Wertes 77

52 7 10 21 76

Mittleres Element

Page 9: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

10

52 7 7621 77

Hinzufügen der Werte 3, 4, 9, 78

10

32 5 7 7621 77

10

32 4 5 7 7621 77

10

32 4 5 7 9 7621 77

Page 10: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

10

32 4 5 7 9 7621 77 78

Hinzufügen des Wertes 1

10

32 4 5 7 9 7621 77 781

Zu voll, umsortieren Mittleres Element

4

21 3 75 9

Neuer Vater landet in übergeordneter Ebene

Page 11: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

104

21 3 75 9 7621 77 78

Löschen des Wertes 76

104

21 3 75 9 7721 78

Löschen des Wertes 77

104

21 3 75 9 7821

Zu leer, umsortieren

Page 12: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

104

21 3 75 9 7821

Nachbar bietet ausreichend Platz verschmelzen

75 9 10 21 78

4

21 3

Page 13: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Beispiel Kleine Rotation

Page 14: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Beispiel große Rotation

Page 15: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Aufgabe 3

Page 16: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Schritt 1 – Berechnung der Hashwerte

h(x) = x DIV 10

Werte: 42, 165, 211, 233, 255 und 82

42 DIV 10 = 4 R 2 4

165 DIV 10 = 16 R 5 16

211 DIV 10 = 21 R 1 21

233 DIV 10 = 23 R 3 23

255 DIV 10 = 25 R 5 25

82 DIV 10 = 8 R 2 8

Page 17: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Schritt 2 – Berechnung der Binärwerte zu den Hashwerten

Werte h(x): 4, 16, 21, 23, 25 und 8

Zahlen in Binär:

4 ≙ 0 0 1 0 0

24 23 22 21 20

0 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 0 * 1

Umrechnung z.B. über Divisionsrestverfahren:

4 MOD 2 = 2 R 0

2 MOD 2 = 1 R 0

1 MOD 2 = 0 R 1

100

vorn Nullen anstellen bis zur gegeben Länge: 00100

Leserichtung

Page 18: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

4 = 00100

16 = 10000

21 = 10101

23 = 10111

25 = 11001

8 = 01000

Schritt 3 – Schrittweises Einfügen der Werte in den Bucket

Gegeben: Bucket-Kapazität b=3

Startsituation: leerer Bucket, lokale Tiefe 0

0

0

B1

Page 19: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

042

0

B1

Einfügen der Werte 42, 165, 211

4 (00100)

042

0

165B1

4 (00100)16 (10000)

042

0

165

211

B1

4 (00100)16 (10000)

21 (10101)

Page 20: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Einfügen des Wertes 233

042

0

165

211

B1

4 (00100)16 (10000)

21 (10101)

Voll! Neuer Bucket, neue Tiefe(n)

0

1

1

1

B1

1

B2

Page 21: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

0…

1

1…

1

B1

1

B2

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 1 beginnen, kommen in Bucket 2.

Page 22: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

0…

1

1…

42

1

B1

1

B2

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 1 beginnen, kommen in Bucket 2.

4 (00100)

Page 23: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

0…

1

1…

42

1

B1

165

1

B2

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 1 beginnen, kommen in Bucket 2.

4 (00100)

16 (10000)

Page 24: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

0…

1

1…

42

1

B1

165

1

211B2

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 1 beginnen, kommen in Bucket 2.

4 (00100)

16 (10000)

21 (10101)

Page 25: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

0…

1

1…

42

1

B1

165

1

211

233

B2

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 1 beginnen, kommen in Bucket 2.

4 (00100)

16 (10000)

21 (10101)23 (10111)

Page 26: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

0…

1

1…

42

1

B1

165

1

211

233

B2

Einfügen des Wertes 255

4 (00100)

16 (10000)

21 (10101)23 (10111)

Voll! Neuer Bucket, neue Tiefe(n)

Page 27: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

10..

01..

00..

11..

2

42

1

B1

2

B2

4 (00100)

2

B3

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2.Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3.

Magic! Unterschiedliche lokale Tiefen.

Page 28: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

10..

01..

00..

11..

2

42

1

B1

165

2

B2

4 (00100)

2

B3

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2.Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3.

16 (10000)

Page 29: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

10..

01..

00..

11..

2

42

1

B1

165

2

211B2

4 (00100)

2

B3

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2.Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3.

16 (10000)

21 (10101)

Page 30: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

10..

01..

00..

11..

2

42

1

B1

165

2

211

233

B2

4 (00100)

2

B3

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2.Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3.

16 (10000)

21 (10101)23 (10111)

Page 31: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

10..

01..

00..

11..

2

42

1

B1

165

2

211

233

B2

4 (00100)

255

2

B3

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2.Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3.

16 (10000)

21 (10101)23 (10111)

25 (11001)

Page 32: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

10..

01..

00..

11..

2

42

1

B1

165

2

211

233

B2

4 (00100)

255

2

B3

Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1.Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2.Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3.

16 (10000)

21 (10101)23 (10111)

25 (11001)

Page 33: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

10..

01..

00..

11..

2

42

1

82B1

165

2

211

233

B2

4 (00100)

255

2

B3

Einfügen des Wertes 82

16 (10000)

21 (10101)23 (10111)

25 (11001)

8 (01000)

Page 34: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Aufgabe 4

Page 35: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Wie viele Datensätze kann ein komplett gefüllter B+-Baum mit obigen Vorgaben aufnehmen? Beginnen Sie mit der Berechnung der maximalen Werte für n und n*.

B+-Baum = Daten liegen nur in den Blättern, Wurzel und innere Knoten sind ohne Daten

Wie viele Elemente passen in einen Knoten?

Innere Knoten (n):4000 Byte – 96 Byte Overhead = 3904 Byte2 Pointer = 24 Byte1 Schlüsselwert = 8 Byte

Seite mit einem Knoten: 96 + 24 + 8 = 128 Byte

Jeder weitere Knoten: 12 + 8 = 20 Byte2 Knoten: 148 Byte3 Knoten: 168 Byte…194 Knoten: 128 Byte + (193*20 Byte) = 128 Byte + 3860 Byte = 3988 Byte

n = 97

Page 36: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Äußere Knoten (n*):4000 Byte – 96 Byte Overhead = 3904 Byte2 Pointer = 24 Byte1 Schlüsselwert = 8 Byte1 Datenteil = 80 Byte

Seite mit einem Knoten: 96 + 24 + 8 + 80 = 208 Byte

Jeder weitere Knoten: 12 + 8 + 80 = 100 Byte2 Knoten: 308 Byte3 Knoten: 408 Byte…38 Knoten: 208 Byte + (37*100 Byte) = 208 Byte + 3700 Byte = 3908 Byte

n* = 19

Page 37: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Gegeben: h = 3

Wurzel

h = 1

h = 2

h = 3

Jeweils 194 Elemente pro Blatt

Jeweils 38 Elemente pro Blatt

Ebene 0 (Wurzel): 194 Elemente195 ausgehenden Kanten

Ebene 1: 195 * 194 = 37.830 Elemente195 * 195 = 38.025 ausgehende Kanten

Ebene 2: 38.025 * 194 = 7.376.850 Elemente38.025 * 195 = 7.414.875 ausgehende Kanten

Ebene 3: Blätter haben Datenteile, daher nur 38 Elemente pro Blatt! 7.414.875 * 38 = 281.765.250Daten liegen nur in den Blättern~ 282 Mio. Datenelemente im Baum

Page 38: Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:

Wie viele Datensätze kann ein komplett gefüllter B-Baum mit obigen Vorgaben aufnehmen?

B-Baum: Daten in allen Knoten

Ebene 0 (Wurzel): 38 Elemente39 ausgehenden Kanten

Ebene 1: 39 * 38 = 1.482 Elemente39 * 39 = 1.521 ausgehende Kanten

Ebene 2: 1.521 * 38 = 57.798 Elemente1.521 * 39 = 59.319 ausgehende Kanten

Ebene 3: 59.319 * 38 = 2.257.122 ElementeDaten liegen in allen Elementen: 2.257.122 + 57.798 + 1.482 + 38~ 2,3 Mio. Datenelemente im Baum