Datenbankspeicherstrukturen
Datenbanktabellen und Indizes kann in einer von mehreren Formularen auf der Festplatte gespeichert werden, einschließlich geordneter/ungeordneter flache Dateien, Isam, Heap -Dateien, Hash Eimer, oder B+ Bäume. Jede Form hat ihre eigenen Vor- und Nachteile. Die am häufigsten verwendeten Formen sind B-Bäume und Isam. Solche Formen oder Strukturen sind ein Aspekt des von a verwendeten Gesamtschemas Datenbankmotor Informationen speichern.
Ungeordnet
Ungeordnet Speicher speichert die Datensätze in der Reihenfolge, in der sie eingefügt werden, normalerweise. Ein solcher Speicher bietet ein gutes Einfügen Effizienz (), aber ineffizientes Abrufzeiten (). In der Regel sind diese Abrufzeiten jedoch besser, da die meisten Datenbanken Indizes für die verwenden Primärschlüssel, was zu den Abrufzeiten von führt oder Für Schlüssel, die mit den Datenbankzeilen -Offsets innerhalb des Speichersystems gleich sind.
Bestellt
Bestellt Der Speicher speichert in der Regel die Datensätze in der Reihenfolge und muss möglicherweise die Dateigröße neu ordnen oder erhöhen, wenn ein neuer Datensatz eingefügt wird, was zu einer geringeren Einfügungseffizienz führt. Der geordnete Speicher bietet jedoch ein effizienteres Abrufen, wenn die Datensätze vorgezogen werden, was zu einer Komplexität von führt .
Strukturierte Dateien
Heap -Dateien
Heap -Dateien sind Listen nicht ordnungsgemäßer Datensätze von variabler Größe. Obwohl sie einen ähnlichen Namen teilen, unterscheiden sich Heap-Dateien stark von In-Memory Haufen. In-Memory-Haufen werden im Gegensatz zu Heap-Dateien bestellt.
- Einfachste und grundlegendste Methode
- Effizient einfügen, mit neuen Datensätzen am Ende der Datei, die eine chronologische Reihenfolge liefert
- Abrufen effizient, wenn der Speicherhandwerk die Adresse des Speichers ist
- Suche ineffizient, da die Suche linear sein muss
- Die Löschung wird erreicht, indem ausgewählte Datensätze als "gelöscht" markiert werden.
- erfordert eine regelmäßige Umstrukturierung, wenn die Datei sehr volatil ist (häufig geändert)
- Vorteile
- effizient für Massenlastdaten
- effizient für relativ kleine Beziehungen, da die Indexierungs Gemeinkosten vermieden werden
- Effizient beim Abrufen beinhalten einen großen Teil der gespeicherten Datensätze
- Nachteile
- Nicht effizient für das selektive Abruf unter Verwendung von Schlüsselwerten, insbesondere wenn sie groß sind
- Sortierung kann zeitaufwändig sein
- nicht für flüchtige Tische geeignet
Hash Eimer
- Hash -Funktionen berechnen die Adresse der Seite, auf der der Datensatz basierend auf einem oder mehreren Feldern im Datensatz gespeichert werden soll
- Hashing -Funktionen, die ausgewählt wurden, um sicherzustellen, dass die Adressen gleichmäßig über den Adressraum verteilt sind
- "Belegung" ist im Allgemeinen 40% bis 60% der Gesamtdateigröße beträgt
- Einzigartige Adresse nicht garantiert, daher sind Mechanismen zur Kollisionserkennung und Kollisionsauflösung erforderlich
- Offene Adressierung
- Überkettet/unbeschadet
- Vor-und Nachteile
- Effizient für genaue Übereinstimmungen im Schlüsselfeld
- Nicht für Reichweite des Reichweite geeignet, was einen sequenziellen Speicher erfordert
- Berechnet, wo der Datensatz basierend auf Feldern im Datensatz gespeichert wird
- Hash -Funktionen sorgen für eine gleichzeitige Verbreitung von Daten
- Kollisionen sind möglich, sodass Kollisionserkennung und Wiederherstellung erforderlich sind
B+ Bäume
Dies sind die am häufigsten verwendeten in der Praxis.
- Die Zeit, die zum Zugriff auf einen Datensatz benötigt wurde, ist gleich, da die gleiche Anzahl von Knoten durchsucht wird
- Index ist ein vollständiger Index, daher muss die Datendatei nicht bestellt werden
- Vor-und Nachteile
- Vielseitige Datenstruktur - sequentielle und zufällige Zugriff
- Der Zugang ist schnell
- Unterstützt exakte, Bereiche, Teilschlüssel und Muster effizient.
- Volatile Dateien werden effizient gehandhabt, da der Index dynamisch ist - erweitert sich und Verträge, wenn die Tabelle wächst und schrumpft
- Weniger gut geeignet für relativ stabile Dateien - in diesem Fall ist ISAM effizienter
Datenorientierung
Am konventionellsten relationale Datenbanken Verwenden Sie den "zeilenorientierten" Speicher, was bedeutet, dass alle mit einer bestimmten Zeile verknüpften Daten zusammen gespeichert sind. Im Gegensatz, Säulenorientierte DBMs Speichern Sie alle Daten aus einer bestimmten Spalte zusammen, um schneller zu dienen Data Warehouse-Stilfragen. Korrelationsdatenbanken sind ähnlich wie zeilenbasierte Datenbanken, wenden jedoch eine Indirektionschicht an, um mehrere Instanzen mit demselben Wert auf dieselbe numerische Kennung zuzuordnen.