Modul 5 - Dateiorganisation und Zugriffsstrukturen Flashcards

1
Q

Agenda

A
  1. Allgemeines
  2. Primär- und Sekundärindizes
  3. Speicherverfahren
    a) Heap
    b) Sequentiell
    c) Indexsequenziell
    d) Indiziert-nichtsequenziell
  4. Baumverfahren (evtl. weglassen da in DBI)
  5. Hash Verfahren
  6. Spezielle Speicherverfahren
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was bedeutet Dateiorganisation und Zugriffsstrukturen im Kontext von Datenbanken und welchen Zweck haben die beiden Konzepte in der Datenbankdomäne?

A

• Datenbankinhalte werden in physischen Dateien auf Seiten gespeichert
• Auf den Seiten sind die Tupel der Relation in Datensätzen organisiert
• Reines Speichern der Datensätze nicht ausreichend: müssen effizient
zugreifbar sein
Datensätze müssen innerhalb der Dateien geschickt organisiert werden
• Außerdem müssen zusätzliche Strukturen (Indexdateien, Zugriffspfade)
eingerichtet werden
• Verschiedene Zugriffsverfahren (unterscheiden sich nach verschiedenen
Kriterien)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Definition Dateiorganisationsform

A

Dateiorganisationsform:
• Form der Speicherung der internen Relation
• Grundlegende Dateiorganisationsformen (ohne Index) :
o Heap-Organisation: unsortierte Speicherung
o Sequenzielle Organisation: sortierte Speicherung
o Hash-Organisation: gestreute Speicherung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Definition Zugriffspfad

A

Zugriffspfad:
• jede über die grundlegende Dateiorganisationsform hinausgehende
Zugriffsstruktur
• Wie jede Indexdatei über eine interne Relation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Worst Case: Unsortierte Daten ohne Zugriffspfad

A

Statistisch gesehen müsste hierbei die Hälfte aller Datensätze durchsucht werden bis zu
einem Treffer

Deshalb liegen Daten meist sortiert vor und/oder haben mindestens einen
Index

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Composite Index

A

Indizierung von mehreren Spalten. Höhepunkt:= ganze Tabellenzeilen werden indiziert
Beispiel:
o Nachname, Vorname
o „Müller“ gibt es viele, „Hans Müller“ weniger
o Suche nach Hans bringt allerdings nichts

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Definition Primärschlüssel

A

Unterstützung durch Primärschlüssel:
o Wesentliche Eigenschaft: Duplikatfreiheit der zugeordneten Attributwerte
o Identifizierende Attributmenge
o Verknüpfung von Relationen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Definition Sekundärschlüssel

A

o Neben dem Primärschlüssel zusätzliches Suchkriterium zum Auffinden von Datensätzen
o Sehr sinnvoll zur Unterstützung bestimmter Anfragen
o Kann auch eines oder mehrere Attribute umfassen
o Nicht unbedingt eindeutig (im Gegensatz zu einem Primärschlüssel)
o Kann also mehrere Datensätze als Ergebnis einer Suche liefern:
• Z.B.: In einer Adressdatenbank wird nach dem Namen Müller als Suchkriterium gesucht. Es gibt zahlreiche
Treffer, da der Name Müller ein häufiger Nachname ist

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Primärindex vs. Sekundärindex

A
  • Pro interne Relation ein Primärindex, mehrere Sekundärindexe
  • Ein Primärindex ist ein Zugriffspfad auf die interne Relation
  • Primärindex über Primärschlüssel definiert

•Sekundärindex: jeder weitere Zugriffspfad auf die interne Relation
• Nicht jede interne Relation muss einen Primärindex besitzen
• Einige kommerzielle relationale DBSysteme nutzen in der Regel nur
Sekundärindexe als Zugriffspfad

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Indexdatei

A

Einträge der Form (K, s)
o K = Wert eines Primär- oder Sekundärschlüssels („Suchschlüssel“, Zugriffsattributwert/en)
o s = Datensatz oder Verweis auf einen Datensatz, der K als Attributwert des Schlüssels hat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Definition Dünn besetzter Index

A

Dünn besetzter Index:
• Nur einige Datensätze sind im Index repräsentiert.
• Interne Relation sortiert nach den Zugriffsattributen => im Index reicht nur
jeweils 1 Eintrag pro Seite der internen Relation:
o Index verweist mit (K1
, S1
) auf den Seitenanführer, d.h. auf den bezüglich der Ordnung ersten Wert auf dieser
Seite
o Nächster Indexeintrag (K2
, S2
) verweist auf Seitenanführer der Nachfolgeseite
o Datensatz mit Zugriffsattributwert Kn wobei K1 ≤ Kn < K2 muss auf Seite von S1 zu finden sein.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Definition Dicht besetzter Index

A

Dicht besetzter Index:
• Speichert für jeden Datensatz der internen Relation einen Eintrag
in der Indexdatei
• Ermöglicht die Bearbeitung einiger Anfragen ohne Zugriff auf die
gespeicherte Tupel:
o Index nimmt weniger Speicherplatz ein, als die Originaldatei => Kann
deutlich bessere Antwortzeiten ergeben.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Definition Geclusterter Index

A

Geclusterter Index:
• In der gleichen Form sortiert, wie die interne Relation:
o Z.B. interne Relation mit Kundendaten nach Kundennummern sortiert => Indexdatei über dem Attribut KNr
üblicherweise geclustert
• nicht unbedingt dünn besetzt
• Beispiel Telefonbuch
o Einträge sind sortiert nach Nachname, Vorname und enthalten die komplette Information

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Definition nicht-Geclusterter Index

A

Anders organisiert als die interne Relation
• Beispiele
o Inhaltsverzeichnis in einem Kochbuch: Suche nach Kartoffelpuffer ergibt Seitenanzahl, Rezept findet sich auf
der entsprechenden Seite
o Sekundärindex für Kundendaten-Relation über Attribut Name, aber Datei selbst sortiert nach
Kundennummern -> Sekundärindex nicht geclustert

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Statische vs. dynamische Struktur

A

• Statische Zugriffsstruktur: optimal nur bei bestimmter (fester) Anzahl von zu
verwaltenden Datensätzen
• Dynamische Zugriffsstrukturen: können die Datensätze unabhängig von der
Anzahl optimal verwalten
o in DBMS üblich

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Statische Verfahren

A

Heap → wahllos
• Indexsequenziell → Daten sortiert nach Index
• Indiziert-nichtsequenziell → Index greift auf Daten zu, aber Daten unsortiert

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Statische Verfahren 1: Heap-Organisation

A

Grundlegende und einfachste Dateiorganisationsform
• Heap-Datei oder Stapeldatei
• Datensätze werden völlig unsortiert auf „einem Haufen gestapelt“
• Physische Reihenfolge der Datensätze = zeitliche Reihenfolge der Aufnahme
von Datensätzen in die Datenbank

18
Q

Heap: Operationen

A

Insert:
o Erfordert Zugriff auf letzte Seite der Datei
o Letzte Seite pro Datei festgehalten im Data Dictionary
o Genügend freier Platz  Satz anhängen.
o Nicht genügend freier Platz  nächste freie Seite holen
Delete:
o “Lookup” um den zu löschenden Satz zu suchen
o Dann Löschbit auf 0 setzen (im Header des
Lookup:
o Erfordert ein sequentielles Durchsuchen der Gesamtdatei!
o Somit maximaler Aufwand
o Aufwand kann nur durch einen zusätzlichen Index reduziert werden
o Deshalb werden Heap-Dateien meistens mit Indexen eingesetzt
o Sonst nur für sehr kleine RelationenDatensatzes)

19
Q

Vorteil und Nachteil der Heap Datenorganisationsform

A

• Vorteile:
o Extrem schnelle insert
o Einfügen erzwingt kein Verschieben anderer Tupel
• Nachteil:
o Maximaler Aufwand beim lookup (und also delete)

20
Q

Statisches Verfahren 2: Sequenzielle Speicherung

A

Datensätze werden sortiert abgelegt:
Z.B. nach Kundennummern sortiert

Sortierung erfolgt nach einem Sortierattribut und in nicht nach einem Index

21
Q

Operationen der Sequentiellen Speicherung

A

Insert:
o Sortierung muss eingehalten werden  einfügen komplizierter
o Zunächst Seite suchen, auf der der Datensatz eingefügt werden soll
o Datensatz zwischen zwei existierenden Datensätzen einzusortieren:
 nachfolgende Datensätze verschieben
 im Header-Feld der Seite die Offsets der TID-Zeiger verändern
o Sortiertes einfügen einfacher machen: beim Anlegen oder sequentiellen Füllen einer Datei, jede Seite nur bis zu
gewissem Grad füllen (z.B. 66%)

Delete:
o Lookup um den zu löschende Satz zu suchen
o Dann Löschbit auf 0 setzen (im Header des Datensatzes)

Lookup:
o Schneller durch die Sortierung
o Auf welcher Seite sollen wir starten mit der Suche? -> dazu indexsequenzielle Dateien

22
Q

dynamisches Verfahren 1: Index Sequenzielle Speicherung

A

• Sequenzielle Dateiorganisation ergänzt durch eine Indexdatei über dem
Sortierattribut der sequenziellen Datei
• Sortierung der Hauptdatei und die Sortierung der Indexdatei stimmen
überein

23
Q

indexsequenzielle Datei als Baumdarstellung

A

o Wurzel des Baumes wäre die Seite der Indexdatei (links)
o Mit Verweise auf die Seitenanführer der Hauptdatei (Datensätze 4711 und 8832)
o Hauptdatei: Datensätze = Blätter des Baumes

24
Q

Aufbau der Indexdatei bei indexsequenzieller Speicherung:

A

o Datensätze in Indexdatei sind sortiert nach Primärschlüsselwert
o Struktur der Datensätze in Indexdatei:
(Primärschlüsselwert, Seitennummer)
o Primärschlüsselwert: Ist der Indexwert des ersten Satzes auf der Seite
o Für jede Seite der Hauptdatei: also genau ein Datensatz in Indexdatei

25
Q

Aufbau der Hauptdatei:

A

Alle Datensätze werden bezüglich einer Attributkombination sequenziell gespeichert

26
Q

Probleme der indexsequenziellen Speicherung

A
Indexdatei kann aus vielen
Seiten bestehen
o Verkettete Liste von Seiten
(kennt nächste aber nicht
vorherige)
o Diese Indexseiten müssen
sequenziell durchsucht
werden -> kann zu
Problemen führen
27
Q

Indexsequenzielle Dateiorganisation:

Mehrstufiger Index

A

Optional: Indexdatei wieder indexsequentiell verwalten => Zweistufiger
Index
• Index zweiter Stufe kann wieder indexsequentiell organisiert sein usw.
=> mehrstufiger Index
• Idealerweise: Index höchster Stufe nur noch eine Seite
• So auch in der Wurzel der Baumstruktur keine sequenzielle Suche über
mehrere Seiten benötigt

28
Q

Operationen bei indexsequentiellen

Dateien

A

Lookup (bei einstufiger Indexdatei):
• Sucht einen Datensatz zum Zugriffsattributwert w
• Indexdatei wird sequenziell durchlaufen

• Gesucht wird einen Datensatz zum Zugriffsattributwert w
• Indexdatei wird sequenziell durchlaufen und sucht Satz (v1
, s) (Attributwert
v1
, Satz s) mit v1 ≤ w
• Mögliche Fälle:
o Nächste Satz (v2
, s‘) im Index hat v2 > w:
• => Satz mit Attributwert w ist auf Seite s gespeichert (wenn
vorhanden)
o Satz (v1
, s) ist der letzte Satz der Indexdatei:
• => Satz mit Attributwert w muss auf Seite s gespeichert sein (wenn vorhanden)
• „(v1
, s) „überdeckt“ Zugriffsattributwert w“

Insert (bei einstufiger Indexdatei):
• Zunächst: mit lookup Seite finden
o Auf welcher Seite müsste der Datensatz gespeichert werden
• Falls Platz:
o Satz wird sortiert in der gefundene Seite gespeichert
• Falls kein Platz:
o Neue Seite von der Freispeicherverwaltung holen
o Sätze der „zu vollen“ Seite können gleichmäßig auf alte und neue Seite verteilt werden
o Indexeintrag für neue Seite

delete:
• Zunächst mit lookup Seite finden
• Satz auf Seite löschen (Löschbit auf 0)
• Erster Satz auf Seite => Index anpassen
• Falls Seite nach Löschen leer => Seite an Freispeicherverwaltung zurück,
Index anpassen

29
Q

Probleme indexsequentieller

Dateien

A

Bei stark wachsenden Dateien:
o Zahl der Indexseiten wächst
o Suche in den linear verketteten Indexseiten kann ineffizient werden
o (Lösung: mehrstufiger Index)
• Stark schrumpfende Dateien: nur zögernde Verringerung der Index- und
Hauptdatei-Seiten:
o Freier Platz wird erst zurück gegeben an Freispeicherverwaltung wenn ganze Seite leer ist
• Nach vielen Änderungsoperationen:
o Unausgeglichene Seiten in der Hauptdatei
• Neue Seite -> Datensätze werden verteilt -> viel Freiplatz
• Datensatz löschen -> freier Platz auf der Seite
• Unnötig hoher Speicherplatzbedarf
o Zu lange Zugriffszeit

30
Q

Dynamisches Verfahren 2: Indexiert-nichtsequentieller

Zugriffspfad

A

(Daten sind indexiert abgelegt, aber der Zugriffspfad (Index) ist nicht
notwendigerweise sequentiell)
• Zur Unterstützung von Sekundärschlüsseln einer Relation
• Verschiedene Zugriffpfade dieser Form pro Datei möglich (über
verschiedenen Sekundärschlüssel)
• Einstufig oder mehrstufig: höhere Indexstufen werden wieder
indexsequentiell organisiert

31
Q

Indexiert-nichtsequentieller

Zugriffspfad: Aufbau der Indexdatei

A

Zu jedem Satz der Hauptdatei: ein Satz (w, s) in der Indexdatei:
o (w Sekundärschlüsselwert, s zugeordnete Seite).
• Sekundärschlüsselwert kann mehrfach vorkommen:
o entweder für ein w mehrere Sätze in die Indexdatei
• Sortierung der Indexdatei zunächst nach Sekundärschlüsselwerten, dann nach Seitenadressen
o oder für ein w Liste von Hauptdatei-Adressen

32
Q

Operationen auf indexiertnichtsequentiellen Zugriffpfaden

A

• Weitgehend analog zu den Operationen bei indexsequenziellen
Dateien
• Lookup:
o Suchen in Indexdatei nach Sekundärschlüsselwert w
o w kann mehrfach auftreten:
Seiten der ermittelten Seitenadressen müssen dann komplett durchsucht werden

• Insert:
o Zunächst Lookup
o Einfügen in Hauptdatei
o Anpassen der Indexdateien

Delete:
o Zunächst Lookup
o Löschen in Hauptdatei
o Indexeintrag entfernen

33
Q

Definition Baumverfahren

A
  • Stufenanzahl (Index) dynamisch verändern
  • Wichtigste Baumverfahren: B-Bäume und ihre Varianten
  • B-Baum-Varianten Grundtechnik in allen Datenbanksystemen
34
Q

Klassische Hash-Verfahren

A

• Daten in Hashtabelle gespeichert
• Praxis: Tabelle als Array (Reihe)
• Hashfunktion = Mathematische Funktion, berechnet zu jedem Datensatz
einen Hashwert:
o Schlüssel des Objektes zum berechnen des Hashwertes
o Hashwert wird als Adresse (Bucket) in der Tabelle verwendet
o Hashwert basiert nur auf dem Wert des Zugriffsschlüssels
• Idealfall: jedes Objekt ein eigenes Bucket
• Hashfunktionen müssen aber nicht eindeutig sein, zwei verschiedene
Objekte können denselben Hashwert (Bucket) haben = Kollision
• Kollision benötigt spezielle Behandlung

35
Q

Operationen bei Hash Verfahren

A

• Suchen:
oZunächst aus Suchschlüssel Hashwert berechnen
o Hashwert bestimmt Bucket des gesuchten Datenobjektes
o Kollision => direkter Vergleich des Suchschlüssels mit den Objekten

36
Q

Einsatz von Hash-Verfahren in

Datenbanken

A

Einsatz als Datenbankindex:
• Schlüsselwerte werden auf Bucket-Adressen abgebildet
• Statt Positionen in einem Array: Hintergrundseiten als Speicherplatz
• Bucket = Speicherbereich von ein oder mehreren Seiten
• Auch Überlauf von Seiten möglich durch Häufung von Kollisionen (mehrere
Strategien dabei möglich)
• Speicherstelle eines Datensatzes kann mit einem einzigen Zugriff gelesen
werden (durch Hashfunktion):
o Dadurch Hash-Tabellen als Speicherstruktur sehr interessant
• Eignung als Dateiorganisationsform natürlich stark abhängig von der Wahl
der Hashfunktion
• Verbreitete Hashfunktion : h(k) = k mod m

37
Q

Hash-Verfahren in DB: Operationen

A

Suchen von Datensatz mit Schlüsselwert w mittels lookup:
o h(w) berechnen (Bild von w unter der Hashfunktion h)
o Zugeordnete Zeiger aus Hashverzeichnis holen
o Erste Seite des Buckets über Zeiger holen
o Sätze auf der Seite werden durchsucht
o w wird nicht gefunden -> nächste Seite
o Alle Seiten erfolglos durchsucht -> Satz nicht vorhanden

Ändern mittels modify:
o Suchen von Datensatz mit Schlüsselwert w mittels lookup
o Modifizierende Attribute Teil des Primärschlüssels -> Satz wird gelöscht und neu eingefügt
o Anderenfalls: Attributwerte werden geändert

Einfügen mittels insert:
o Suchen von Datensatz mit Schlüsselwert w mittels lookup
o Satz gefunden: Fehler (Natürlich nur bei Primärindex)
o Satz nicht gefunden:
• in Seite mit Bild von w wird letzter Satz gesucht
• Einzufügende Satz wird dahinter eingetragen

Löschen mittels delete:
o Suchen von Datensatz mit Schlüsselwert w mittels lookup
o Satz wurde gefunden -> wird gelöscht (Bit auf 0)

38
Q

Probleme bei Grundversion

Hashverfahren

A

•Leistungsfähigkeit stark abhängig von Hashfunktion
• Schlechte Wahl kann fast alle Datensätze auf die gleiche Seite einordnen
• Beispiel:
o Hashindex von 100 Buckets
o Kundendatensätze identifiziert durch 6-stellige Kundennummer KNr (fortlaufend vergeben)
o Ersten beiden Stellen von KNr als Hashwerte => Datensätze auf wenigen Seiten abgespeichert
o Letzten beiden Stellen von KNr als Hashwerte => Datensätze gleichmäßig auf alle Seiten verteilt

•Anpassung der Hashfunktion an wachsende und schrumpfende
Datenmengen: Fehlende Dynamik:
o Zu großer Speicherbereich erlaubt Wachstum der Datenmengen, aber schlechte Speicherauslastung
o Gut ausgelasteter Speicherbereich: schlechter Performanz bei Wachstum der Datenmengen

• Vergrößerung des Speicherbereichs und damit Änderung der Hashfunktion
einzige Möglichkeit bei Wachstum der Datenmengen:
o Alle Datensätzen müssen neu „gehasht“ werden
• Alternative zur kompletten Reorganisation: dynamischen Hashverfahren

39
Q

Klassisches vs dynamisches Hashing

A

Klassische Variante:
• Klassische Hashfunktionen bilden Datenwerte auf einen festen Bereich ab
• Skaliert nicht
• Vergrößerung des Bildbereichs erfordert Festlegung neue Hashfunktion,
erfordert komplettes Neu-Hashen aller Datensätze
• Mangelnde Dynamik

Dynamische Variante:

• Lösung: dynamische Hashverfahren:
o Automatische Vergrößerung oder Verkleinerung des Bildbereichs
o Hashfunktionen mit feste Berechnungsvorschrift, aber deren Bildbereich dynamisch vergrößert werden kann
o Kein komplettes Neu-Hashen erforderlich
o Lineares Hashing, Erweiterbares Hashing, Spiralhashing, Kombinierte Methoden.

40
Q

Spezielle Indexstrukturen

A

• Weitere Indexverfahren:
o Basieren auch auf Grundprinzipien der Datenorganisation:
• z.B. ausgeglichene Suchbäumen oder Hashfunktionen
o Berücksichtigen aber zusätzlich Besonderheiten spezieller Anwendungsgebiete

41
Q

Mehrdimensionale

Speichertechniken

A

bisherige Speichertechniken eindimensional

Mehrdimensionale Speichertechniken:

• Erlauben symmetrischen Zugriff über mehrere Attributen:
o Z.B. Anfrage nach gut verdienenden jungen Angestellten: Attribut Alter zwischen 22 und 25; Attribut Gehalt
zwischen 80K und 120K
o Statt 2 Anfragen und dann Durchschnitt berechnen: gleich mehrere Attribute berücksichtigen
• Anzahl der unterstützten Attribute bestimmt Anzahl der Dimensionen dieses
Datenraums
• Mehrdimensionale Varianten von B-Bäumen, Mehrdimensionale Varianten
von Hashverfahren