DuckDB 0.10.0 Veröffentlichung, eine SQLite-Variante für analytische Abfragen

Die Veröffentlichung des DBMS DuckDB 0.10.0 wurde vorgestellt, das Eigenschaften von SQLite wie Kompaktheit, die Anbindung als eingebettete Bibliothek, Speicherung der DB in einer Datei und eine benutzerfreundliche CLI-Schnittstelle mit Werkzeugen und Optimierungen zur Ausführung analytischer Abfragen, die einen erheblichen Teil der gespeicherten Daten abdecken, kombiniert, z. B. zur Aggregierung des gesamten Inhalts von Tabellen oder zum Zusammenführen mehrerer großer Tabellen. Der Code des Projekts steht unter der MIT-Lizenz zur Verfügung. Die Entwicklung befindet sich noch in der Phase der Erstellung experimenteller Versionen, da das Speicherdatenformat derzeit nicht stabilisiert ist und sich von Version zu Version ändert.

DuckDB bietet einen erweiterten Dialekt der SQL-Sprache, der zusätzliche Möglichkeiten zur Verarbeitung von sehr komplexen und langanhaltenden Abfragen umfasst. Die Verwendung komplexer Typen (Arrays, Strukturen, Vereinigungen) sowie die Möglichkeit der Ausführung von beliebigen und geschachtelten korrelierenden Unterabfragen wird unterstützt. Gleichzeitig können mehrere Abfragen ausgeführt werden, und Abfragen können direkt aus CSV- und Parquet-Dateien ausgeführt werden. Der Import aus DBMS PostgreSQL ist möglich.

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.

Zu den Änderungen in der neuen Version gehören:

  • Die Leistung beim Parsen von Daten im CSV-Format wurde erheblich gesteigert. So konnte beispielsweise das Lesen einer CSV-Datei mit 11 Millionen Zeilen in der neuen Version von 2,6 Sek. auf 1,15 Sek. reduziert werden, während die Ausführung der Operation „SELECT COUNT(*)“ über einer CSV-Datei von 1,8 Sek. auf 0,3 Sek. gesenkt wurde.
  • Die Unterstützung von Arrays fester Größe wurde hinzugefügt, die Listen ähneln, die eine feste Anzahl von Elementen enthalten (z. B. „CREATE TABLE vectors(v DOUBLE[3]);“).
  • Die Unterstützung der Anbindung an DBMS MySQL, PostgreSQL und SQLite wurde hinzugefügt, was es ermöglicht, Daten aus externen DBMS in DuckDB zu laden und zwischen verschiedenen Systemen zu verschieben. Der Zugriff auf externe DBs erfolgt unter Verwendung typischer Tabellen. ATTACH ‘postgres:dbname=postgresscanner’ AS postgres; SELECT title, release_year, length FROM postgres.film LIMIT 5;
  • Die Unterstützung des Ausdrucks „COMMENT ON“ wurde hinzugefügt, um einen Kommentar zu einem Objekt in der DB zu speichern.
  • Die Unterstützung des Ausdrucks „COPY FROM DATABASE“ wurde hinzugefügt, um den gesamten Inhalt von einer DB in eine andere zu kopieren.
  • Die Unterstützung des Modifikators „ALL“ in den Ausdrücken EXCEPT und INTERSECT wurde hinzugefügt.
  • Der Typ wurde implementiert »

    Quelle: opennet.ru
60GB SSD 8Gb DDR4