5000 Jahre alte Datenbank: Zuverlässiger als moderne Datenbanken?

2025-09-06

Ein Bild einer 5000 Jahre alten sumerischen Datenbank hat den Autor zum Nachdenken über die Obergrenze der Datumslagerung in Datenbanken angeregt. Das Bild zeigt eine Datenbank aus dem Jahr 3100 v. Chr., die Konten von Malz und Gerste aufzeichnet, mit einer Zuverlässigkeit, die moderne Datenbanken bei weitem übertrifft. Tests ergaben, dass MySQL keine Daten vor 4713 v. Chr. speichern kann, während PostgreSQL und SQLite dies können. Dies veranlasste den Autor, sich zu überlegen, wie noch ältere Daten, wie z. B. Aufzeichnungen von Museumsartefakten, gespeichert werden können, und schlug Lösungen wie die Verwendung von Epoch-Timestamps oder kundenspezifischen Systemen vor.

Mehr lesen
(avi.im)
Entwicklung

Können Datenbanken Caches vollständig ersetzen?

2025-08-31

Dieser Beitrag untersucht die Möglichkeit, dass Datenbanken Caches vollständig ersetzen. Obwohl Datenbanken einige Caching-Funktionen wie Buffer Pools und Read Replicas bieten, zeichnen sich Caches durch ihren extrem schnellen Datenzugriff aus, insbesondere für spezifische Daten-Subsets und vorberechnete Daten. Um Caches zu ersetzen, müssen Datenbanken mehrere Herausforderungen bewältigen: effizientes Handling vieler Read Replicas, partielle Read Replicas, Priorisierung spezifischer Daten und effiziente Inkrementelle View Maintenance (IVM). Der Autor schlägt vor, dass die Kombination von IVM mit partiellen Read Replicas es Datenbanken möglicherweise erlauben wird, Caches teilweise zu ersetzen, aber es gibt noch eine Lücke.

Mehr lesen
(avi.im)
Entwicklung Read Replicas

SQLites WAL-Modus: Abwägung zwischen Haltbarkeit und Leistung

2025-08-24

SQLites WAL-Modus (Write-Ahead Log), oft für einen höheren Schreibdurchsatz verwendet, beeinträchtigt die Datenhaltbarkeit im Vergleich zum Standard-Journal-Modus. Das `synchronous`-Pragma steuert, wie oft fsync aufgerufen wird; der Standardwert ist NORMAL. Im NORMAL-Modus werden WAL-Dateien vor jedem Checkpoint synchronisiert und die Datenbankdatei danach, aber die meisten Transaktionen enthalten keine Synchronisierungsoperationen. Für Anwendungen, bei denen die Haltbarkeit nicht kritisch ist, ist NORMAL ausreichend. Für garantierte Haltbarkeit bei Stromausfall fügt `synchronous=FULL` eine WAL-Dateisynchronisierung nach jeder Transaktionsbestätigung hinzu, wodurch die Haltbarkeit erhöht, aber die Schreibgeschwindigkeit verringert wird. Diese Erklärung, ausgelöst durch Bedenken hinsichtlich SurrealDB, das möglicherweise Haltbarkeit für Benchmark-Leistung opfert, verdeutlicht den Ansatz von SQLite.

Mehr lesen
(avi.im)

SQLite WAL-Modus-Checksum-Problem: Stiller Datenverlust

2025-07-25

Dieser Beitrag untersucht einen Fehler im Checksum-Mechanismus von SQLite im Write-Ahead-Logging (WAL)-Modus. Wenn eine Checksummen-Diskrepanz in einem WAL-Frame auftritt, verwirft SQLite den fehlerhaften Frame und alle nachfolgenden Frames lautlos, selbst wenn diese nicht beschädigt sind. Dieses Design, obwohl beabsichtigt, führt zu potenziellen Datenverlusten. Der Autor analysiert die zugrundeliegenden Gründe und schlägt vor, dass SQLite bei der Erkennung von Beschädigungen einen Fehler auslösen sollte, anstatt Daten stillschweigend zu verwerfen, wodurch die Datenintegrität verbessert wird. Die Diskussion behandelt auch den Kontext der Verwendung von SQLite in eingebetteten Systemen und Mobilgeräten, wo Beschädigungen häufiger vorkommen.

Mehr lesen
(avi.im)
Entwicklung

SQLite: Eine unglaubliche Datenbank-Legende

2024-12-30

SQLite, die weltweit am häufigsten eingesetzte Datenbank, wird von einem dreiköpfigen Team gewartet, das externe Beiträge ablehnt, und doch die Welt mit ihrer außergewöhnlichen Leistung und Stabilität erobert. Sie entstand auf einem US-Kriegsschiff, um Probleme mit Serverausfällen zu lösen, und ist heute der Eckpfeiler von Billionen von Datenbanken. SQLite ist nicht Open Source, sondern Public Domain Software mit weniger Einschränkungen als jede Open-Source-Lizenz. Ihr strenger Testprozess, der sogar extreme Situationen wie Betriebssystem-Abstürze simuliert, gewährleistet ihre extrem hohe Zuverlässigkeit. Ihr einzigartiges Geschäftsmodell – Einnahmen durch kostenpflichtigen Support und Mitgliedschaften – ist jedoch ebenfalls bemerkenswert. Die Legende von SQLite liegt nicht nur in ihren technischen Fähigkeiten, sondern auch in der Beharrlichkeit und Innovation dahinter.

Mehr lesen
(avi.im)
Entwicklung Legende

Bloom-Filter: Das Geheimnis, SQLite 10-mal schneller zu machen

2024-12-22

Forscher haben Bloom-Filter clever eingesetzt, um analytische Abfragen in SQLite um das Zehnfache zu beschleunigen. Sie stellten fest, dass die verschachtelten Schleifenverbindungen von SQLite ineffizient waren und viel Zeit für B-Baum-Suchvorgänge aufgewendet wurde. Durch die Verwendung eines Bloom-Filters vor der Verbindungsoperation, um schnell Zeilen herauszufiltern, die wahrscheinlich nicht übereinstimmen, und dann nur noch B-Baum-Suchvorgänge für potenzielle Übereinstimmungen durchzuführen, wurde die Anzahl der Suchvorgänge deutlich reduziert. Bloom-Filter haben einen minimalen Speicheraufwand und waren einfach in die bestehende Abfrage-Engine von SQLite zu integrieren, was zu einer signifikanten Leistungssteigerung führte. Diese Verbesserung wurde in SQLite v3.38.0 integriert.

Mehr lesen
(avi.im)

SQLite-Neuschreibung in Rust: Limbo erreicht 100-fache Reduktion der Tail-Latenz

2024-12-16

Forscher der Universität Helsinki und Cambridge haben SQLite in Rust neu geschrieben und dabei Limbo geschaffen, ein Projekt, das asynchrone E/A und io_uring nutzt, um die Leistung drastisch zu verbessern. Durch den Einsatz asynchroner E/A und der Aufteilung des Speichers erzielt Limbo eine bis zu 100-fache Reduzierung der Tail-Latenz, was besonders in Multi-Tenant-Serverless-Umgebungen von Vorteil ist. Die Hauptverbesserung liegt im Austausch synchroner Bytecode-Instruktionen durch asynchrone Gegenstücke, wodurch Blockierungen beseitigt und die Parallelität gesteigert wird. Die Verbesserungen zeigen sich besonders deutlich bei hohen Perzentilen, was Limbo ideal für Anwendungen mit hohen Anforderungen an die Zuverlässigkeit macht.

Mehr lesen
(avi.im)
Entwicklung Asynchrone E/A