Grundlagen von Datenbanken
(tontinton.com)Die Grundlagen von bashdb
- Das einfachste Datenbankprogramm,
bashdb, besteht aus zwei Bash-Funktionen. - Die Funktion
db_setfügt Daten an eine Datei an, und die Funktiondb_getruft Daten ab. - Zu den Problemen von
bashdbgehören Dauerhaftigkeit, Atomarität, Isolation und Performance.
bashdb mit ACID verbessern
- ACID bezeichnet die Eigenschaften von Datenbanktransaktionen: Atomarität, Konsistenz, Isolation und Dauerhaftigkeit.
- Um die Dauerhaftigkeit von
bashdbzu verbessern, wird dem Befehldb_setder Befehlsynchinzugefügt. - Für Isolation wird das Programm
flockverwendet, um Dateisperren hinzuzufügen.
Dauerhaftigkeit
fsyncundfdatasyncsind Systemaufrufe, die Schreibpuffer auf die Festplatte flushen.- Der Befehl
syncflusht alle „dirty“ Pages auf die Festplatte, und das Flag-druftfdatasyncauf.
Isolation
- Mit
flockerhältbashdbIsolation zwischen mehreren Prozessen. flockist ein Linux-Programm für Dateisperren; mit dem Flag-ssind gleichzeitige Lesezugriffe möglich.
Schlechte Nachrichten
- Für
bashdblässt sich keine einfache Methode finden, um Atomarität zu garantieren. - Für bessere Performance muss der
O(n)-Algorithmus verbessert werden.
Storage Engine
- Der Zweck einer Storage Engine besteht darin, eine Abstraktion zum Lesen und Schreiben von Daten in persistentem Storage bereitzustellen.
- Das Design einer Storage Engine zielt darauf ab, Disk-I/O und Disk-Seeks zu minimieren.
Veränderlicher B-Baum
- Ein B-Baum ist eine Variante des BST mit räumlicher Lokalität, die Disk-I/O und Suchvorgänge minimiert.
- Ein B-Baum ist ein verallgemeinerter BST, bei dem ein Knoten mehr Kinder haben kann.
Unveränderlicher LSM-Baum
- Ein LSM-Baum ist eine unveränderliche, sequenziell geschriebene Datenstruktur, die sich für schreiblastige Workloads eignet.
- Ein LSM-Baum puffert Daten im Speicher und flusht sie beim Erreichen einer bestimmten Größe als sortierte SSTable.
Bloom-Filter
- Ein Bloom-Filter ist eine probabilistische Datenstruktur, mit der sich effizient prüfen lässt, ob ein Element nicht in einer Menge enthalten ist.
- Bloom-Filter arbeiten mit Hash-Funktionen und haben eine Platzkomplexität von
O(log n).
Write-Ahead-Log
- Ein WAL ist eine spezielle Datei, die alle Transaktionsoperationen protokolliert und beim Start des Datenbankprozesses den Zustand rekonstruiert.
Isolation
- Um Isolation zu erreichen, können pessimistische Sperren, optimistische Sperren oder MVCC verwendet werden.
- Der ANSI/ISO-Standard SQL 92 definiert verschiedene Lese-Isolationsstufen.
Verteilte Systeme
- Verteilte Systeme erhöhen die Komplexität und können Daten für Verfügbarkeit und horizontale Skalierung auf mehrere Maschinen verteilen.
- Nach dem CAP-Theorem kann ein System nur zwei von drei Eigenschaften garantieren: Konsistenz, Verfügbarkeit und Partitionstoleranz.
Konsistentes Hashing
- Konsistentes Hashing ist eine Methode zur Datenpartitionierung, die beim Hinzufügen oder Entfernen von Knoten die Menge der zu migrierenden Elemente reduziert.
GN⁺-Meinung:
- Das Verständnis der grundlegenden Probleme von Datenbanken und der ACID-Eigenschaften ist zentral für Database Engineering.
- Das Beispiel
bashdbhilft dabei, Probleme zu verstehen, die in realen Datenbanksystemen auftreten. - Das Design von Storage Engines und verteilten Systemen ist ein entscheidender Faktor für Performance und Zuverlässigkeit von Datenbanken.
1 Kommentare
Hacker-News-Kommentare
Zusammenfassung des ersten Kommentars:
Zusammenfassung des zweiten Kommentars:
Zusammenfassung des dritten Kommentars:
Zusammenfassung des vierten Kommentars:
Zusammenfassung des fünften Kommentars:
Zusammenfassung des sechsten Kommentars:
Zusammenfassung des siebten Kommentars:
sync; mv; syncverwendet.Zusammenfassung des achten Kommentars:
Zusammenfassung des neunten Kommentars:
Zusammenfassung des zehnten Kommentars: