Veröffentlichung von SQLite 3.42 und DuckDB 0.8.0. CG/SQL mit Implementierung von Stored Procedures für SQLite.

Die Veröffentlichung von SQLite 3.42, einer leichtgewichtigen Datenbank-Engine in Form einer Plug-in-Bibliothek, ist erfolgt. Der Code von SQLite wird als Gemeineigentum (public domain) verteilt, das heißt, er kann ohne Einschränkungen und kostenlos für alle Zwecke verwendet werden. Die finanzielle Unterstützung der SQLite-Entwickler erfolgt durch ein eigens gegründetes Konsortium, dem Unternehmen wie Adobe, Oracle, Mozilla, Bentley und Bloomberg angehören.

Wesentliche Änderungen:

  • Für Volltextindizes FTS5 wurde der Befehl secure-delete implementiert, der eine vollständige Bereinigung aller verbleibenden Daten nach einem Löschvorgang durchführt.
  • In den Funktionen zur Verarbeitung von JSON-Daten wurde die Unterstützung für die Erweiterungen JSON5 implementiert.
  • Der Abfrage-Planer 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.
  • Im Befehlszeileninterface wurde die Option „—unsafe-testing“ hinzugefügt, 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. Ein Separator „—“ wurde hinzugefügt, nach dem die Verarbeitung von Optionen deaktiviert wird. Die Parameter „:inf“ und „:nan“, die mit den Werten Unendlichkeit und NaN verbunden sind, wurden hinzugefügt.
  • In den benannten SQL-Funktionen, die auf der Anwendungsebene definiert sind, 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. Eine Überprüfung auf die Angabe des Wertes NaN in Spalten mit der Bedingung NOT NULL wurde hinzugefügt. Die Aussagekraft der Fehlermeldungen wurde verbessert.
  • Im Add-on session ist es erlaubt, Änderungen aus Tabellen ohne ROWID abzufangen.
  • In der Zeit- und Datumsfunktion wurde der Modifikator „subsec“ hinzugefügt, um Bruchteile von Sekunden zu verwenden.
  • Die Rekursionstiefe für Arrays und JSON-Objekte wurde standardmäßig von 2000 auf 1000 reduziert.

Darüber hinaus wurde die Version 0.8.0 des Datenbankmanagementsystems DuckDB veröffentlicht, das eine erweiterte Variante von SQLite darstellt, optimiert für analytische Abfragen, die einen erheblichen Teil der gespeicherten Daten abdecken. Dazu gehört die Aggregation des gesamten Inhalts in Tabellen oder die Zusammenführung mehrerer großer Tabellen. Es bietet einen erweiterten SQL-Dialekt mit zusätzlichen Funktionen zur Verarbeitung sehr komplexer und langwieriger Abfragen. Dies schließt die Unterstützung komplexer Datentypen (wie Arrays, Strukturen und Vereinigungen), die gleichzeitige Ausführung mehrerer Abfragen sowie die Durchführung von Abfragen direkt aus Dateien im CSV-, JSON- und Parquet-Format ein. Zudem besteht die Möglichkeit, Daten aus PostgreSQL-Datenbanken zu importieren.

Neben dem Shell-Code von SQLite verwendet das Projekt einen ausgelagerten Parser aus PostgreSQL, die Date Math-Komponente von MonetDB, eine eigene Implementierung von Fensterfunktionen (basierend auf dem Segment Tree Aggregation-Algorithmus), einen Regex-Handler auf Basis der RE2-Bibliothek, eigene Optimierer für Abfragen, einen MVCC-Mechanismus zur Verwaltung der gleichzeitigen Ausführung von Aufgaben (Multi-Version Concurrency Control) sowie eine vektorisierte Abfrageausführungs-Engine, basierend auf dem Hyper-Pipelining Query Execution-Algorithmus, die es ermöglicht, große Datenmengen in einem einzigen Vorgang zu verarbeiten. Der Projektcode wird unter der MIT-Lizenz veröffentlicht.

In der neuen Version von DuckDB:

  • Neue Ausdrücke "PIVOT" und "UNPIVOT" wurden hinzugefügt, um Zeilen in Spalten und umgekehrt zu transformieren.
  • Die Parallelisierung beim Import und Export von Daten wurde verbessert. Standardmäßig wird das Lesen von Dateien im CSV-Format in mehreren Threads und das mehrfädige Schreiben bei Verwendung der Formate Parquet, CSV und JSON implementiert.
  • Der Operator "**" wurde hinzugefügt, um rekursiv durch Verzeichnisse zu iterieren und Dateipfade zu bestimmen (z. B. FROM "‘data/glob/crawl/stackoverflow/**/*.csv';").
  • Die Unterstützung für JOIN-Operationen wurde für zeitserielle Daten (Werte von Parametern in festgelegten Zeitintervallen) hinzugefügt, bei denen die Zusammenführung von Datensätzen nicht auf exakten, sondern auf ungefähren Zeitwerten basiert (zum Beispiel können Datensätze zusammengeführt werden, deren Zeit sich um maximal 1 Minute unterscheidet).
  • Die verzögerte Ladefunktion für Datenbankmetadaten wurde implementiert, wodurch der Start der Datenbankverwaltungssysteme um ein Vielfaches beschleunigt wurde.
  • Die Unterstützung für die Anbindung von benutzerdefinierten Funktionen in Python wurde hinzugefügt.
  • Die Unterstützung für die ADBC (Arrow Database Connectivity) API wurde integriert, um Daten mit Apache Arrow zu übertragen.
  • Eine Bindung zur Integration mit Swift-Code wurde realisiert.
  • Das Verhalten des Teilungsoperators ("/") wurde geändert, sodass nun standardmäßig Berechnungen mit Gleitkommazahlen anstelle von Ganzzahlen durchgeführt werden. Für die Ganzzahldivision wurde ein neuer Operator „//“ vorgeschlagen. Das alte Verhalten kann mit der Einstellung „SET integer_division=true;“ wiederhergestellt werden.
  • Die Methode zur Berücksichtigung von NULL-Werten bei der Sortierung wurde von „NULLS FIRST“ auf „NULLS LAST“ geändert, d.h. NULL-Werte werden nun am Ende der Liste und nicht am Anfang angezeigt. Das alte Verhalten kann durch die Einstellung „SET default_null_order='nulls_first';“ wiederhergestellt werden.

Zusätzlich ist das von Facebook entwickelte Projekt CG/SQL erwähnenswert, das einen Code-Generator für die Verwendung von Stored Procedures mit SQLite bereitstellt. CG/SQL ermöglicht die Erstellung von Stored Procedures 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 Stored Procedures werden in C-Code kompiliert, der die SQLite C API verwendet, um die angegebenen Aktionen auszuführen und komplexe Abfragen zu verarbeiten. Die kompilierten Stored Procedures können mit Programmen in C, Java und Objective-C verbunden werden. Der Code des Projekts ist in C geschrieben und wird unter der MIT-Lizenz veröffentlicht.

Quelle: opennet.ru

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