Veröffentlichung der Datenbank DuckDB 1.4.0 mit Unterstützung für die Datenbankverschlüsselung.

Die Version 1.4.0 des DuckDB-Datenbanksystems ist veröffentlicht worden, das auf die Durchführung analytischer Abfragen ausgerichtet ist und konzeptionell an SQLite erinnert. DuckDB vereint Eigenschaften von SQLite, wie Kompaktheit, die Verbindung als eingebettete Bibliothek, die Speicherung der Datenbank in einer Datei und eine CLI-Schnittstelle, mit Funktionalitäten und Optimierungen für die Durchführung analytischer Abfragen, die einen erheblichen Teil der gespeicherten Daten umfassen, wie zum Beispiel die Aggregierung des gesamten Inhalts von Tabellen oder das Zusammenführen mehrerer großer Tabellen. Der Code des Projekts ist in C++ geschrieben und wird unter der MIT-Lizenz verbreitet.

DuckDB bietet einen erweiterten Dialekt der SQL-Sprache, der zusätzliche Funktionen für die Verarbeitung sehr komplexer und lang laufender Abfragen umfasst. Es können komplexe Datentypen (Arrays, Strukturen, Vereinigungen) verwendet werden, ebenso wie die Ausführung beliebiger und verschachtelter korrelierender Unterabfragen. Die gleichzeitige Ausführung mehrerer Abfragen wird unterstützt, ebenso wie die Ausführung von Abfragen direkt aus Dateien im CSV- und Parquet-Format. Der Import aus der PostgreSQL-Datenbank wird ebenfalls unterstützt.

Das Projekt verwendet eine SQLite-Hülle, einen PostgreSQL-Parser, das Date Math-Komponente von MonetDB, eine eigene Implementierung von Fensterfunktionen (basierend auf dem Segment Tree Aggregation-Algorithmus), einen regulären Ausdrucks-Handler auf Basis der RE2-Bibliothek, einen eigenen Anfragen-Optimierer, einen MVCC-Mechanismus zur Verwaltung der gleichzeitigen Ausführung von Aufgaben (Multi-Version Concurrency Control) sowie eine vektorisierte Abfrageausführungsmaschine basierend auf dem Hyper-Pipelining Query Execution-Algorithmus, die es ermöglicht, große Mengen an Werten in einem einzigen Vorgang zu bearbeiten.

In der neuen Version:

  • Die Unterstützung für die Speicherung von Datenbankdateien in verschlüsselter Form wurde hinzugefügt. Zur Verschlüsselung wird der AES-256-Algorithmus im GCM-Modus verwendet. Verschlüsselt werden nicht nur die Hauptdatei mit den Daten, sondern auch die WAL-Protokolle und temporären Dateien. Die Schlüssel für die Datenbankverschlüsselung werden mit dem Befehl ATTACH über den Parameter ENCRYPTION_KEY festgelegt. ATTACH ‘encrypted.db’ AS enc_db (ENCRYPTION_KEY ‘quack_quack’);
  • Die Unterstützung des Befehls „MERGE INTO“ wurde hinzugefügt, der als Alternative zum Ausdruck „INSERT … ON CONFLICT“ verwendet werden kann, ohne dass ein Primärschlüssel erforderlich ist und der mit beliebigen Merge-Bedingungen arbeitet. Der Befehl „MERGE INTO“ ermöglicht die Erstellung bedingter SQL-Ausdrücke, die die Operationen INSERT, UPDATE und DELETE in einem einzigen Ausdruck kombinieren. Zum Beispiel kann man mit MERGE die Zusammenführung zweier Tabellen organisieren, indem fehlende Datensätze eingefügt und vorhandene aktualisiert werden. WITH deletes(item_id, delete_threshold) AS (VALUES (10, 3000)) MERGE INTO Stock USING deletes USING (item_id) WHEN MATCHED AND balance < delete_threshold THEN DELETE RETURNING merge_action, *;
  • Zusätzlich wurde die Unterstützung für Schreiboperationen in Tabellen im Apache Iceberg-Format hinzugefügt (zuvor wurde nur das Lesen unterstützt), was den Datentransfer zwischen Iceberg und DuckDB ermöglicht.
  • Der Befehlszeilen-Client wurde mit einem Fortschrittsindikator für die verbleibende Zeit der Operation ausgestattet.
  • Die Fensterfunktion „FILL“ wurde hinzugefügt, die zur Interpolation von fehlenden Werten in geordneten Fenstern verwendet werden kann. FROM (VALUES (1, 1), (2, NULL), (3, 42)) t(c1, c2) SELECT fill(c2) OVER (ORDER BY c1) f; 1 21 42
  • Das Teradata Connector-Plugin wurde implementiert, um eine Verbindung zu Teradata-Datenbanken herzustellen. Mit dem Plugin können Sie Tabellen verwalten, Abfragen durchführen und SQL-Befehle direkt in Teradata ausführen, indem Sie DuckDB verwenden.
  • Die Unterstützung für Snapshot-Management (Checkpoint) von im Speicher gehaltenen Tabellen wurde hinzugefügt, was die Implementierung von Komprimierung ermöglicht. Darüber hinaus erfolgt bei der Erstellung von Snapshots die Bereinigung gelöschter Zeilen und die Freigabe von Platz nach Löschoperationen. ATTACH ‘:memory:’ AS memory_compressed (COMPRESS);
  • Mehrere Performance-Optimierungen wurden vorgeschlagen: Die Implementierung der Sortierung wurde auf einen k-Wege-Merge-Sort-Algorithmus umgestellt, der den Datenverkehr reduziert. Gemeinsame Tabellenausdrücke (Common Table Expressions, CTE) werden nun standardmäßig materialisiert.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster