Release der Datenbank DuckDB 1.2.0

Die Version 1.2.0 der Datenbank DuckDB wurde veröffentlicht, die auf die AusfĂŒhrung analytischer Abfragen ausgerichtet ist und konzeptionell an SQLite erinnert. DuckDB kombiniert Eigenschaften von SQLite wie Kompaktheit, die Einbindung als integrierbare Bibliothek, die Speicherung der Datenbank in einer einzigen Datei und eine CLI-Schnittstelle mit Funktionen und Optimierungen zur DurchfĂŒhrung analytischer Abfragen, die einen erheblichen Teil der gespeicherten Daten abdecken, beispielsweise durch die Aggregation des gesamten Inhalts von Tabellen oder das ZusammenfĂŒhren mehrerer großer Tabellen. Der Code des Projekts ist in C++ geschrieben und unter der MIT-Lizenz verfĂŒgbar.

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:

  • Es wurde UnterstĂŒtzung fĂŒr neue Komprimierungsmethoden implementiert, die standardmĂ€ĂŸig deaktiviert sind, um die KompatibilitĂ€t von Datenbankdateien mit Ă€lteren Versionen von DuckDB zu gewĂ€hrleisten. Um das verbesserte Format der Datenbankdateien zu nutzen, wurde die Möglichkeit eingefĂŒhrt, die Datenbank an die Versionsnummer zu binden – beim Öffnen einer Datei kann nun mit dem Parameter „STORAGE_VERSION“ die minimal unterstĂŒtzte Datenbankversion festgelegt werden (z. B. „ATTACH ‘file.db’ (STORAGE_VERSION ‘v1.2.0’);“). Zur Umwandlung des neuen Formats in das alte kann der SQL-Befehl COPY verwendet werden, zum Beispiel: ATTACH ‘file1.db’; ATTACH ‘converted_file.db’ (STORAGE_VERSION ‘v1.0.0’); COPY FROM DATABASE file1 TO converted_file;
  • Die UnterstĂŒtzung des SQL-Befehls „ALTER TABLE 
 ADD PRIMARY KEY“ wurde hinzugefĂŒgt, um einen PrimĂ€rschlĂŒssel zu einer bestehenden Tabelle hinzuzufĂŒgen.
  • Die EinschrĂ€nkung wurde aufgehoben, die es nicht zuließ, Identifikatoren erneut hinzuzufĂŒgen, fĂŒr die ein eindeutiger Index vorhanden war, wenn diese Identifikatoren in der aktuellen Transaktion gelöscht wurden. Der folgende SQL-Code fĂŒhrt nun nicht mehr zu einem Fehler: CREATE TABLE students (id INTEGER PRIMARY KEY, name VARCHAR); INSERT INTO students VALUES (1, ‘John Doe’); BEGIN; DELETE FROM students WHERE id = 1; INSERT INTO students VALUES (1, ‘Jane Doe’);
  • UnterstĂŒtzung fĂŒr das Hochladen von CSV-Dateien in den Kodierungen Latin-1 und UTF-16 hinzugefĂŒgt (zuvor wurde nur die Kodierung UTF-8 unterstĂŒtzt). FROM read_csv(‘cities-latin-1.csv’, encoding = ‘latin-1’);
  • UnterstĂŒtzung fĂŒr die Verwendung von mehrbyteigen Trennzeichen in CSV-Dateien (bis zu 4 Bytes), was die Angabe von Emojis als Trennzeichen fĂŒr Spalten ermöglicht. a🩆b hello🩆world FROM read_csv(‘example.dsv’, sep = ‘🩆’);
  • Im Standardmodus ist der strenge Modus fĂŒr das Parsen von CSV-Dateien aktiviert („strict_mode = true“), der die Übereinstimmung mit der Formatierungsspezifikation RFC 4180 ĂŒberprĂŒft. Im strengen Modus ist die Verwendung nur eines Zeichens zum Trennen von Zeilen zulĂ€ssig, was bei einem Versuch, Dateien zu parsen, bei denen nicht nur das Zeilenumbruchzeichen, sondern auch das WagenrĂŒcklaufzeichen („\r\n“) verwendet wird, zu einem Fehler fĂŒhren kann.
  • Der CSV-Parser verwendet einen neuen Algorithmus zur Bestimmung neuer Zeilen, der parallele Operationen unterstĂŒtzt. Der Einsatz des neuen Algorithmus hat das Parsen von CSV um etwa 15 % beschleunigt.
  • Die BeschrĂ€nkung der ZeilenlĂ€nge in CSV-Dateien wurde aufgehoben (zuvor durfte eine Zeile 8 MB nicht ĂŒberschreiten).
  • Beim Export von Daten im Parquet-Format wurde die UnterstĂŒtzung von Hashes (Dictionaries) und von Bloom-Filter-basierten Indizes implementiert. Es wurde eine Komprimierungsmethode namens DELTA_BINARY_PACKED eingefĂŒhrt, die die GrĂ¶ĂŸe von Parquet-Dateien erheblich reduziert.
  • Im Befehlszeileninterface wurde ein Sicherheitsmodus hinzugefĂŒgt, der mit der Option „-safe“ oder dem Befehl „.safe_mode“ aktiviert wird. In diesem Modus ist der Zugriff nur auf die ursprĂŒnglich angegebene Datenbankdatei erlaubt, und der Versuch, andere Dateien zu öffnen, fĂŒhrt zu einer Fehlermeldung.
  • Im Befehlszeileninterface wurde die Eingabe-AutovervollstĂ€ndigung verbessert. Der Code fĂŒr die AutovervollstĂ€ndigung wurde auf PEG (Parsing Expression Grammar) umgestellt.
  • Bei der AusfĂŒhrung von Befehlen im Befehlszeileninterface wird die Darstellung großer Zahlen visualisiert; zum Beispiel wird bei der Anzeige der Zahl 100000000 zusĂ€tzlich „(100 Millionen)“ angefĂŒgt.
  • In SQL wurde die UnterstĂŒtzung der Syntax hinzugefĂŒgt, bei der verkĂŒrzte Bezeichnungen von Tabellen und AusdrĂŒcken vor den Werten angegeben werden können, auf die sie verweisen (statt der Verwendung der Syntax „Ausdruck AS Bezeichnung“): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
  • Im Befehl „SELECT“ wurde die UnterstĂŒtzung fĂŒr die Operation „RENAME“ implementiert, um Felder umzubenennen, die bei Angabe des Ausdrucks „*“ ausgegeben werden: SELECT * RENAME (col1 AS new_col1) FROM integers;
  • Im Befehl „SELECT“ ist die Verwendung von „LIKE“- und „SIMILAR TO“-Operationen bei der Ausgabe ĂŒber „*“ erlaubt: SELECT * LIKE ‘val%’ FROM key_val;
  • Die QualitĂ€t der Generierung pseudorandomisierter Zahlen wurde erhöht.
  • Der Abfrageoptimierer wurde modernisiert. Die Leistung beim Test TPC-H SF100 ist um 13% gestiegen.
  • Eine neue C-Ă€hnliche API fĂŒr die Entwicklung von Erweiterungen wurde vorgeschlagen, die beispielsweise zur Erstellung neuer Aggregat- oder Tabellenfunktionen verwendet werden kann.
  • UnterstĂŒtzung fĂŒr Systeme mit der Standard-C-Bibliothek Musl wurde hinzugefĂŒgt.

Quelle: opennet.ru

ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen đŸ”„ ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster