Sortie du SGBD SQLite 3.42 et DuckDB 0.8.0. CG/SQL avec implémentation de procédures stockées pour SQLite

La version de SQLite 3.42, un SGBD léger conçu comme une bibliothèque de plug-ins, a été publiée. Le code SQLite est distribué dans le domaine public, c'est-à-dire peut être utilisé sans restrictions et gratuitement à toutes fins. Le soutien financier aux développeurs SQLite est fourni par un consortium spécialement créé, qui comprend des sociétés telles qu'Adobe, Oracle, Mozilla, Bentley et Bloomberg.

Les principaux changements:

  • Pour les index de texte intégral FTS5, la commande secure-delete a été implémentée, qui efface complètement toutes les données résiduelles après la suppression.
  • Les fonctions de traitement des données JSON prennent désormais en charge les extensions JSON5.
  • Planificateur de requêtes amélioré. Par défaut, l'optimisation du nombre de vues est activée. Le traitement des colonnes inutilisées dans les sous-requêtes est éliminé. Amélioration de la mise en œuvre de l’optimisation push-down.
  • Ajout de l'option « --unsafe-testing » à l'interface de ligne de commande, qui permet l'utilisation de certaines commandes dangereuses, telles que « .testctrl », destinées à être utilisées dans les tests. En mode sans échec (« -safe »), l'utilisation des commandes « .log on » et « .log off » est autorisée. Ajout de la prise en charge du délimiteur « - », pour les arguments après lesquels le traitement des options est désactivé. Ajout des paramètres ":inf" et ":nan" associés aux valeurs infini et NaN.
  • Les noms de fonctions SQL définis par l'application peuvent chevaucher les mots-clés CROSS, FULL, INNER, LEFT, NATURAL, OUTER et RIGHT.
  • Les capacités de PRAGMA Integrity_check ont ​​été étendues. Ajout d'une vérification pour spécifier les valeurs NaN dans les colonnes avec la condition NOT NULL. Amélioration du contenu informatif des messages d’erreur.
  • Le module complémentaire de session permet d'intercepter les modifications des tables sans ROWID.
  • Le modificateur « subsec » a été ajouté aux fonctions permettant de travailler avec les heures et les dates afin d'utiliser des fractions de secondes.
  • La profondeur de récursion par défaut pour les tableaux et les objets JSON a été réduite de 2000 1000 à XNUMX XNUMX.

De plus, la version du SGBD DuckDB 0.8.0 a été créée, qui développe une version de SQLite, étendue avec des capacités et des optimisations pour exécuter des requêtes analytiques couvrant une partie importante des données stockées, par exemple, en effectuant l'agrégation de l'ensemble du contenu. de tables ou fusionner plusieurs grandes tables. Fournit un dialecte SQL avancé qui inclut des fonctionnalités supplémentaires pour le traitement de requêtes très complexes et fastidieuses, et prend également en charge les types complexes (tableaux, structures, unions), l'exécution de plusieurs requêtes simultanément et l'exécution de requêtes directement à partir de fichiers CSV, JSON et Parquet. . Il est possible d'importer depuis le SGBD PostgreSQL.

En plus du code shell de SQLite, le projet utilise un analyseur de PostgreSQL dans une bibliothèque distincte, le composant Date Math de MonetDB, sa propre implémentation de fonctions de fenêtre (basée sur l'algorithme Segment Tree Aggregation), un processeur d'expression régulière basé sur la bibliothèque RE2, son propre optimiseur de requêtes et un mécanisme de contrôle MVCC pour l'exécution simultanée de tâches (Multi-Version Concurrency Control), ainsi qu'un moteur d'exécution de requêtes vectorisées basé sur l'algorithme Hyper-Pipelining Query Execution, qui permet de grands ensembles de valeurs ​​à traiter en une seule opération. Le code du projet est distribué sous licence MIT.

Dans la nouvelle version de DuckDB :

  • Ajout de nouvelles expressions "PIVOT" et "UNPIVOT" pour transformer les lignes en colonnes et vice versa.
  • Parallélisation améliorée lors de l’importation et de l’exportation de données. Par défaut, la lecture multithread à partir de fichiers CSV et l'écriture multithread sont implémentées lors de l'utilisation des formats Parquet, CSV et JSON.
  • Ajout de l'opérateur "**" pour parcourir de manière récursive les répertoires lors de la détermination des chemins de fichiers (par exemple, FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Ajout de la prise en charge des opérations de fusion (JOIN) pour les données sous la forme d'une série chronologique (tranches de valeurs de paramètres à des intervalles de temps spécifiés), dans lesquelles le critère de fusion des enregistrements n'est pas une coïncidence exacte, mais approximative des valeurs dans un champ avec l'heure (par exemple, vous pouvez fusionner des enregistrements dont l'heure ne diffère pas de plus d'une minute).
  • Implémentation du chargement paresseux des métadonnées de la base de données, ce qui a permis d'accélérer le lancement du SGBD plusieurs dizaines de fois.
  • Ajout de la prise en charge de la connexion de fonctions personnalisées en Python.
  • Ajout de la prise en charge de l'API ADBC ​​​​(Arrow Database Connectivity) pour le transfert de données à l'aide d'Apache Arrow.
  • Une liaison a été implémentée pour l'intégration avec le code Swift.
  • Modification du comportement de l'opérateur de division ("/") pour effectuer des calculs en virgule flottante au lieu d'opérations sur des nombres entiers par défaut. Un nouvel opérateur « // » est proposé pour la division entière. L'ancien comportement peut être renvoyé en définissant « SET integer_division=true; ».
  • La méthode de prise en compte des enregistrements nuls lors du tri a été modifiée de « NULLS FIRST » à « NULLS LAST », c'est-à-dire Les valeurs NULL seront désormais imprimées à la fin plutôt qu'au début de la liste. L'ancien comportement peut être renvoyé en définissant « SET default_null_order='nulls_first'; ».

On peut également citer le projet CG/SQL développé par Facebook, qui fournit un générateur de code permettant d'utiliser des procédures stockées avec SQLite. CG/SQL vous permet d'écrire des procédures stockées dans un dialecte spécial de T-SQL (Transact-SQL), qui permet d'appeler des fonctions de la bibliothèque standard C et d'accéder aux données dans SQLite. Les procédures stockées générées sont compilées en code C qui utilise l'API SQLite C pour effectuer des actions spécifiées et traiter des requêtes complexes. Les procédures stockées compilées peuvent être connectées aux programmes C, Java et Objective-C. Le code du projet est écrit en C et est distribué sous licence MIT.

Source: opennet.ru

Ajouter un commentaire