Veröffentlichung von SQLite 3.42 und DuckDB 0.8.0. CG/SQL mit einer Implementierung von gespeicherten Prozeduren fĂŒr SQLite

Die Veröffentlichung von SQLite 3.42, einer leichten DBMS, die als Plug-in-Bibliothek gestaltet ist, wurde bekannt gegeben. Der Code von SQLite wird als Gemeinfreiheit (public domain) veröffentlicht, was bedeutet, dass er ohne EinschrĂ€nkungen und kostenlos fĂŒr beliebige Zwecke verwendet werden kann. Die finanzielle UnterstĂŒtzung fĂŒr die Entwickler von SQLite erfolgt durch ein eigens gegrĂŒndetes Konsortium, zu dem Unternehmen wie Adobe, Oracle, Mozilla, Bentley und Bloomberg gehören.

HauptÀnderungen:

  • FĂŒr Volltextindizes FTS5 wurde der Befehl secure-delete implementiert, der eine vollstĂ€ndige Bereinigung aller Restdaten nach der Löschung durchfĂŒhrt.
  • In den Funktionen zur Verarbeitung von JSON-Daten wurde UnterstĂŒtzung fĂŒr JSON5-Erweiterungen hinzugefĂŒgt.
  • Der Abfrageplaner wurde verbessert. StandardmĂ€ĂŸig ist die Optimierung „count-of-view“ aktiviert. Die Verarbeitung ungenutzter Spalten in Unterabfragen wurde ausgeschlossen. Die Implementierung der Push-down-Optimierung wurde verbessert.
  • Die Befehlszeilenschnittstelle erhielt die Option „—unsafe-testing“, die die Verwendung einiger gefĂ€hrlicher Befehle wie „.testctrl“ ermöglicht, die fĂŒr Testzwecke gedacht sind. Im sicheren Modus („—safe“) sind die Befehle „.log on“ und „.log off“ erlaubt. Der Separator „—“ wurde hinzugefĂŒgt, nach dem die Verarbeitung von Optionen fĂŒr die Argumente deaktiviert wird. Die Parameter „:inf“ und „:nan“, die mit unendlichen Werten und NaN verbunden sind, wurden hinzugefĂŒgt.
  • In den von der Anwendung definierten SQL-Funktionsnamen ist die Überschneidung mit den SchlĂŒsselwörtern CROSS, FULL, INNER, LEFT, NATURAL, OUTER und RIGHT erlaubt.
  • Die Möglichkeiten von PRAGMA integrity_check wurden erweitert. Es wurde eine ÜberprĂŒfung fĂŒr die Angabe des Wertes NaN in Spalten mit der Bedingung NOT NULL hinzugefĂŒgt. Die Informationsgehalt von Fehlermeldungen wurde verbessert.
  • Im Zusatzmodul session wurde das Abfangen von Änderungen aus Tabellen ohne ROWID erlaubt.
  • In der Funktion zur Arbeit mit Zeiten und Daten wurde der Modifikator „subsec“ hinzugefĂŒgt, um Bruchteile von Sekunden zu verwenden.
  • Die Rekursionstiefe fĂŒr JSON-Arrays und -Objekte wurde standardmĂ€ĂŸig von 2000 auf 1000 verringert.

DarĂŒber hinaus wurde die Version 0.8.0 des DuckDB DBMS veröffentlicht, das eine erweiterte Version von SQLite ist und Optimierungen fĂŒr die AusfĂŒhrung analytischer Abfragen bietet, die einen erheblichen Teil der gespeicherten Daten abdecken, beispielsweise die Aggregation des gesamten Inhalts von Tabellen oder das ZusammenfĂŒhren mehrerer großer Tabellen. Es wird ein erweiterter SQL-Dialekt bereitgestellt, der zusĂ€tzliche Funktionen fĂŒr die Verarbeitung sehr komplexer und langwieriger Abfragen umfasst und komplexe Typen (Arrays, Strukturen, Vereinigungen) unterstĂŒtzt, die gleichzeitige AusfĂŒhrung mehrerer Abfragen ermöglicht und die AusfĂŒhrung von Abfragen direkt aus Dateien im CSV-, JSON- und Parquet-Format unterstĂŒtzt. Es besteht die Möglichkeit, Datenbanken von PostgreSQL zu importieren.

Neben dem Shell-Code von SQLite wird im Projekt ein separater Parser aus PostgreSQL verwendet, der Date Math-Komponente von MonetDB, eine eigene Implementierung von Fensterfunktionen (basierend auf dem Segmentbaum-Aggregationsalgorithmus), einen regulĂ€ren Ausdrucks-Handler auf Basis der RE2-Bibliothek, einen eigenen Abfrageoptimierer, einen MVCC-Mechanismus fĂŒr das Management der gleichzeitigen AusfĂŒhrung von Aufgaben (Multi-Version Concurrency Control) sowie eine vektorisierte AbfrageausfĂŒhrungs-Engine auf Basis des Hyper-Pipelining Query Execution-Algorithmus, die es ermöglicht, große Wertmengen in einem einzigen Vorgang zu verarbeiten. Der Code des Projekts wird unter der MIT-Lizenz verteilt.

In der neuen Version von DuckDB:

  • Es wurden neue AusdrĂŒcke „PIVOT“ und „UNPIVOT“ hinzugefĂŒgt, um Zeilen in Spalten und umgekehrt zu transformieren.
  • Das Parallelisieren beim Import und Export von Daten wurde verbessert. StandardmĂ€ĂŸig wird das Lesen von CSV-Dateien in mehreren Threads und das Multithreading beim Schreiben mit den Formaten Parquet, CSV und JSON realisiert.
  • Der Operator „**“ wurde hinzugefĂŒgt, um rekursiv Verzeichnisse beim Definieren von Dateipfaden zu durchsuchen (z.B. FROM "‘data/glob/crawl/stackoverflow/**/*.csv’;“).
  • Die UnterstĂŒtzung von JOIN-Operationen fĂŒr zeitbasierte Daten (Parameterwerte ĂŒber vorgegebene Zeitintervalle) wurde hinzugefĂŒgt, bei denen bei der ZusammenfĂŒhrung von DatensĂ€tzen nicht exakte, sondern annĂ€hernde Übereinstimmungen der Zeitwerte verwendet werden (z.B. können DatensĂ€tze zusammengefĂŒhrt werden, deren Zeit sich um nicht mehr als 1 Minute unterscheidet).
  • Die verzögerte Laden von Metadaten der DB wurde realisiert, was die Startzeit der DBMS um ein Vielfaches beschleunigt hat.
  • UnterstĂŒtzung fĂŒr die Verbindung benutzerdefinierter Funktionen in Python hinzugefĂŒgt.
  • UnterstĂŒtzung fĂŒr die ADBC-API (Arrow Database Connectivity) zur DatenĂŒbertragung unter Verwendung von Apache Arrow hinzugefĂŒgt.
  • Bindung zur Integration mit Swift-Code implementiert.
  • Das Verhalten des Divisionsoperators ("/") wurde geĂ€ndert, sodass nun standardmĂ€ĂŸig Berechnungen mit Gleitkommazahlen anstelle von Ganzzahloperationen durchgefĂŒhrt werden. FĂŒr die ganzzahlige Division wurde ein neuer Operator "//" vorgeschlagen. Das alte Verhalten kann durch die Einstellung "SET integer_division=true;" wiederhergestellt werden.
  • Die Methode zur Behandlung von NULL-Werten bei der Sortierung wurde von "NULLS FIRST" auf "NULLS LAST" geĂ€ndert, d.h. NULL-Werte werden jetzt am Ende der Liste ausgegeben, nicht am Anfang. Das alte Verhalten kann durch die Einstellung "SET default_null_order='nulls_first';" wiederhergestellt werden.

ZusĂ€tzlich kann das von Facebook entwickelte Projekt CG/SQL hervorgehoben werden, das einen Codegenerator fĂŒr die Verwendung von gespeicherten Prozeduren mit SQLite bereitstellt. CG/SQL ermöglicht die Erstellung von gespeicherten Prozeduren in einem speziellen Dialekt von T-SQL (Transact-SQL), der den Aufruf von Funktionen der Standard-C-Bibliothek und den Zugriff auf Daten in SQLite erlaubt. Die erstellten gespeicherten Prozeduren werden in C-Code kompiliert, der die SQLite C API verwendet, um die angegebenen Aktionen auszufĂŒhren und komplexe Abfragen zu bearbeiten. Die kompilierten gespeicherten Prozeduren können in Programme in C, Java und Objective-C eingebunden werden. Der Projektcode ist in C geschrieben und steht unter der MIT-Lizenz.

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