Release der Datenbank DuckDB 1.2.0

Die Version der Datenbank DuckDB 1.2.0, die auf die AusfĂŒhrung analytischer Abfragen ausgerichtet ist und konzeptionell an SQLite erinnert, wurde veröffentlicht. DuckDB vereint Eigenschaften von SQLite, wie Kompaktheit, die Verwendung als eingebettete Bibliothek, Speicherung der Datenbank in einer einzigen Datei und ein CLI-Interface, mit Funktionen und Optimierungen zur AusfĂŒhrung analytischer Abfragen, die einen erheblichen Teil der gespeicherten Daten abdecken, etwa die Aggregation des gesamten Inhalts von Tabellen oder das ZusammenfĂŒhren mehrerer großer Tabellen. Der Projektcode ist in C++ geschrieben und wird unter der MIT-Lizenz veröffentlicht.

DuckDB bietet einen erweiterten SQL-Dialekt, der zusĂ€tzliche Möglichkeiten fĂŒr die Verarbeitung sehr komplexer und langwieriger Abfragen umfasst. Es ist möglich, komplexe Typen (Arrays, Strukturen, Vereinigungen) zu verwenden, sowie beliebige und verschachtelte, korrelierende Unterabfragen auszufĂŒhren. Es wird die gleichzeitige AusfĂŒhrung mehrerer Abfragen unterstĂŒtzt, sowie 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 Shell von SQLite, einen Parser von PostgreSQL, die Date Math-Komponente von MonetDB, eine eigene Implementierung von Fensterfunktionen (basierend auf dem Segmentbaumaggregationsalgorithmus), einen regulĂ€ren Ausdruck-Handler auf Basis der RE2-Bibliothek, einen eigenen Abfrageoptimierer, einen MVCC-Mechanismus zur Verwaltung der gleichzeitigen AusfĂŒhrung von Aufgaben (Multi-Version Concurrency Control) sowie eine vektorisierte AbfragedurchfĂŒhrungsengine, die auf dem Hyper-Pipelining-AbfrageausfĂŒhrungsalgorithmus basiert und es ermöglicht, große Mengen an Werten in einem einzigen Vorgang zu verarbeiten.

In der neuen Version:

  • Die UnterstĂŒtzung neuer Komprimierungsmethoden wurde implementiert, die standardmĂ€ĂŸig nicht aktiviert sind, um die KompatibilitĂ€t der Datenbankdateien mit frĂŒheren Versionen von DuckDB zu gewĂ€hrleisten. Um das verbesserte Format der Datenbankdateien zu verwenden, wurde die Möglichkeit vorgeschlagen, die Datenbank an die Versionsnummer zu binden – beim Öffnen der Datei kann nun der Parameter „STORAGE_VERSION“ verwendet werden, um die minimal unterstĂŒtzte Datenbankversion anzugeben („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 BeschrĂ€nkung, die das wiederholte HinzufĂŒgen von Identifikatoren, fĂŒr die ein eindeutiger Verfolgungsindex vorhanden ist, verhindert hat, wurde aufgehoben, sofern diese Identifikatoren in der aktuellen Transaktion gelöscht wurden. Beispielsweise fĂŒhrt der untenstehende SQL-Code jetzt 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');
  • Die UnterstĂŒtzung fĂŒr den Import von CSV-Dateien im Latin-1- und UTF-16-Encoding wurde hinzugefĂŒgt (bisher wurde nur UTF-8 unterstĂŒtzt). FROM read_csv('cities-latin-1.csv', encoding = 'latin-1');
  • Jetzt können in CSV-Dateien mehrbyteige Trennzeichen (bis zu 4 Byte) verwendet werden, die es ermöglichen, Emojis als Spaltentrennzeichen anzugeben. a🩆b hello🩆world FROM read_csv('example.dsv', sep = '🩆');
  • Der strenge Modus fĂŒr das Parsen von CSV-Dateien ist standardmĂ€ĂŸig aktiviert ('strict_mode = true') und ĂŒberprĂŒft die Einhaltung der Formatierung gemĂ€ĂŸ der Spezifikation RFC 4180. Im strengen Modus darf nur ein Zeichen zur Zeilentrennung verwendet werden, was zu einem Fehler fĂŒhren wird, wenn in den Dateien zur Zeilentrennung nicht nur das Zeilenumbruchzeichen, sondern auch das WagenrĂŒcklaufzeichen ('\r\n') verwendet wird.
  • Im CSV-Parser wurde ein neuer Algorithmus zur Erkennung von neuen Zeilen implementiert, der die Parallelisierung von Operationen unterstĂŒtzt. Die Verwendung des neuen Algorithmus hat das Parsen von CSV um etwa 15 % beschleunigt.
  • Die BeschrĂ€nkung der ZeilenlĂ€nge in CSV-Dateien wurde aufgehoben (bisher durfte eine Zeile 8 MB nicht ĂŒberschreiten).
  • Bei der Exportierung von Daten im Parquet-Format wurde die UnterstĂŒtzung fĂŒr Hashes (Dictionaries) und Indizes auf Basis des Bloom-Filters implementiert. Eine Kompressionsmethode namens DELTA_BINARY_PACKED wurde implementiert, die die GrĂ¶ĂŸe von Parquet-Dateien erheblich reduziert.
  • Der Befehlszeilen-Interface hat einen Sicherheitsmodus erhalten, der durch die Option '-safe' oder den Befehl '.safe_mode' aktiviert werden kann. In diesem Modus wird der Zugriff nur auf die ursprĂŒnglich angegebene Datenbankdatei erlaubt, und der Versuch, andere Dateien zu öffnen, fĂŒhrt zu einer Fehlermeldung.
  • Im Befehlszeilen-Interface wurde die Eingabe-AutovervollstĂ€ndigung verbessert. Der Code fĂŒr die AutovervollstĂ€ndigung wurde auf die Verwendung von PEG (Parsing Expression Grammar) umgestellt.
  • Bei der AusfĂŒhrung von Befehlen im Befehlszeilen-Interface wird eine anschauliche Darstellung großer Zahlen umgesetzt, zum Beispiel wird bei der Darstellung der Zahl 100000000 zusĂ€tzlich '(100 Millionen)' angehĂ€ngt.
  • In SQL wurde die UnterstĂŒtzung fĂŒr eine Syntax hinzugefĂŒgt, bei der abgekĂŒrzte Tabellen- und Ausdrucksnamen vor den Werten angegeben werden können, auf die sie verweisen (anstatt die Syntax „Ausdruck AS Name“ zu verwenden): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
  • Die SELECT-Anweisung unterstĂŒtzt nun die Operation „RENAME“, um Felder umzubenennen, die bei der Angabe des Ausdrucks „*“ angezeigt werden: SELECT * RENAME (col1 AS new_col1) FROM integers;
  • In der SELECT-Anweisung ist die Verwendung der Operationen „LIKE“ und „SIMILAR TO“ beim Abruf ĂŒber „*“ erlaubt: SELECT * LIKE ‘val%’ FROM key_val;
  • Die QualitĂ€t der Generierung von Pseudorandomzahlen wurde verbessert.
  • Der Abfrageoptimierer wurde modernisiert. Die Leistung beim Test TPC-H SF100 hat sich um 13 % erhöht.
  • Eine neue C-Ă€hnliche API fĂŒr die Entwicklung von Erweiterungen wurde vorgeschlagen, die beispielsweise zur Erstellung neuer Aggregat- oder Tabellenfunktionen verwendet werden kann.
  • Die UnterstĂŒtzung fĂŒr Systeme mit der Standard-C-Bibliothek Musl wurde hinzugefĂŒgt.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster