Die erste stabile Version der Datenbank DuckDB

Nach sechs Jahren Entwicklung wurde die Version 1.0 der Datenbank DuckDB veröffentlicht, die als Alternative zu SQLite für analytische Abfragen positioniert ist. DuckDB vereint Eigenschaften von SQLite, wie Kompaktheit, die Möglichkeit der Einbindung als Bibliothek, die Speicherung der Datenbank in einer Datei und eine benutzerfreundliche CLI, mit Werkzeugen und Optimierungen zur Ausführung analytischer Abfragen, die einen Großteil der gespeicherten Daten abdecken, beispielsweise zur Aggregation des gesamten Inhalts von Tabellen oder zur Zusammenführung mehrerer großer Tabellen. Der Code des Projekts ist in C++ geschrieben und wird unter der MIT-Lizenz vertrieben.

Die Version 1.0 gilt als erste stabile Version des Projekts, bei deren Vorbereitung der Schwerpunkt auf der Erhöhung der Stabilität und nicht auf der Erweiterung der Funktionalität lag. In der neuen Version wurde auch das Format der Datenspeicherung festgelegt, für das seit der letzten Veröffentlichung die Rückwärtskompatibilität gewährleistet ist. In künftigen Versionen beabsichtigen die Entwickler, beim Hinzufügen neuer Funktionen vorsichtiger zu sein und die Kompatibilität zwischen den Versionen zu wahren, sowie die SQL-Dialekte und das C API zu stabilisieren. Sollten in Zukunft Änderungen an der SQL-Semantik erforderlich sein, werden die Entwickler im Voraus eine Warnung zu bevorstehenden Änderungen veröffentlichen und Workarounds bereitstellen, um die Funktionsfähigkeit des bestehenden Codes zu erhalten.

DuckDB unterstützt einen erweiterten Dialekt der SQL-Sprache, der zusätzliche Funktionen zur Verarbeitung von sehr komplexen und lang laufenden Abfragen umfasst. Beispielsweise ist die Verwendung komplexer Typen (Arrays, Strukturen, Vereinigungen) sowie die Ausführung beliebiger und verschachtelter korrelierter Unterabfragen möglich. Es wird die gleichzeitige Ausführung mehrerer Abfragen unterstützt, die Ausführung von Abfragen direkt aus Dateien im CSV- und Parquet-Format. Es besteht Unterstützung für den Import aus der Datenbank PostgreSQL.

Neben dem Shell-Code von SQLite verwendet das Projekt einen ausgelagerten Parser von PostgreSQL, die Komponente Date Math von MonetDB, eine eigene Implementierung von Fensterfunktionen (basierend auf dem Algorithmus der Segmentbaum-Aggregation), einen Regex-Handler auf Basis der Bibliothek RE2, eigene Abfrageoptimierer, ein MVCC-Mechanismus zur Verwaltung von paralleler Aufgabenausführung (Multi-Version Concurrency Control) sowie eine vektorisierte Abfrageausführungsmaschine basierend auf dem Algorithmus der Hyper-Pipelining-Abfrageausführung, die es ermöglicht, große Datenmengen in einer einzigen Operation gleichzeitig zu verarbeiten.

Quelle: opennet.ru

60GB SSD 8Gb DDR4