prev up next

Grundlagen

Bedingt durch die unterschiedlichen Speichertechnologien weisen Hauptspeicher, Festplatte und Magnetband charakteristische Vor- und Nachteile auf. Folgende Tabelle zeigt die relativen Merkmale bezüglich Größe, Zugriffsgeschwindigkeit, Preis, Granularität und Dauerhaftigkeit. Im Vergleich zum direkt adressierbaren Hauptspeicher ist eine typische Festplatte etwa 1.000 mal größer, verursacht einen etwa 100.000 mal langsameren Zugriff und kostet nur ein Hunderstel bezogen auf ein gespeichertes Byte.

  Primärspeicher Sekundärspeicher Tertiärspeicher
Größe klein groß [$10^3$] sehr groß
Tempo schnell langsam [$10^{-5}$] sehr langsam
Preis teuer billig [$10^{-2}$] billig
Granularität fein grob grob
Dauerhaftigkeit flüchtig stabil stabil


Abbildung 4.1: Schematischer Festplattenaufbau: Sicht von oben

Abbildung 4.1 zeigt den schematischen Aufbau einer Festplatte. Zum Lesen eines Blockes muss zunächst der Schreib-/Lesekopf oberhalb der zuständigen Spur positioniert werden (Seek Time), dann wird gewartet, bis der betreffende Block vorbeisaust (Latency Time), und schließlich kann der Block übertragen werden (Transfer Time). Oft werden mehrere Blöcke nur zusammengefasst auf einer Seite übertragen.


Abbildung 4.2: Schematischer Festplattenaufbau: Sicht von der Seite

Abildung 4.2 verdeutlicht, dass der Lesearm mehrere starr miteinander verbundene Schreib-/Leseköpfe gemeinsam bewegen und somit auf die jeweils übereinanderliegenden Spuren aller Magnetscheiben (genannt: Zylinder) gleichzeitig zugreifen kann. Der Block als kleinste direkt adressierbare Speichereinheit spielt daher für alle Datenstrukturen und Suchalgorithmen die zentrale Rolle.

Die grundsätzliche Aufgabe bei der Realisierung eines internen Modells besteht aus dem Abspeichern von Datentupeln, genannt Records, in einem File. Jedes Record hat ein festes Record-Format und besteht aus mehreren Feldern meistens fester, manchmal auch variabler Länge mit zugeordnetem Datentyp. Folgende Operationen sind erforderlich:

Files werden abgelegt im Hintergrundspeicher (Magnetplatte), der aus Blöcken fester Größe (etwa $2^9$ - $2^{12}$ Bytes) besteht, die direkt adressierbar sind. Ein File ist verteilt über mehrere Blöcke, ein Block enthält mehrere Records. Records werden nicht über Blockgrenzen verteilt. Einige Bytes des Blockes sind unbenutzt, einige werden für den header gebraucht, der Blockinformationen (Verzeigerung, Record-Interpretation) enthält.

Die Adresse eines Records besteht entweder aus der Blockadresse und einem Offset (Anzahl der Bytes vom Blockanfang bis zum Record) oder wird durch den sogenannten Tupel-Identifikator (TID) gegeben. Der Tupel-Identifikator besteht aus der Blockadresse und einer Nummer eines Eintrags in der internen Datensatztabelle, der auf das entsprechende Record verweist. Sofern genug Information bekannt ist, um ein Record im Block zu identifizieren, reicht auch die Blockadresse. Blockzeiger und Tupel-Identifikatoren erlauben das Verschieben der Records im Block (unpinned records), Record-Zeiger setzen fixierte Records voraus (pinned records), da durch Verschieben eines Records Verweise von außerhalb mißinterpretiert würden (dangling pointers).


Abbildung 4.3: Verschieben eines Tupels innerhalb einer Seite


Abbildung 4.4: Verdrängen eines Tupels von einer Seite

Abbildung 4.3 zeigt das Verschieben eines Datentupels innerhalb seiner ursprünglichen Seite; in Abbildung 4.4 wird das Record schließlich auf eine weitere Seite verdrängt.

Das Lesen und Schreiben von Records kann nur im Hauptspeicher geschehen. Die Blockladezeit ist deutlich größer als die Zeit, die zum Durchsuchen des Blockes nach bestimmten Records gebraucht wird. Daher ist für Komplexitätsabschätzungen nur die Anzahl der Blockzugriffe relevant. Zur Umsetzung des Entity-Relationship-Modells verwenden wir


prev up next