La version de SQLite 3.45, 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 que Bentley, Bloomberg, Expensify et Navigation Data Standard.
Les principaux changements:
- Toutes les fonctions SQL permettant de travailler avec le format JSON ont été réécrites et transférées vers le nouveau format d'arbre d'analyse interne JSONB, qui est sérialisé et peut être stocké dans la base de données pour éviter une analyse répétée lors de l'utilisation de valeurs JSON. Les nouvelles versions des fonctions de génération JSON génèrent désormais le format binaire JSONB au lieu du format texte. Un deuxième argument facultatif a été ajouté à la fonction json_valid(), grâce auquel vous pouvez spécifier un masque de bits qui détermine les caractéristiques d'un JSON valide (par exemple, si vous spécifiez 0x04, un blob JSONB sera reconnu comme valide, si vous spécifiez 0x01, texte JSON au format RFC-8259, et si vous spécifiez 0x05, les deux options).
- L'option tokendata a été ajoutée à la table virtuelle FTS5 utilisée pour la recherche en texte intégral, permettant l'utilisation de tokenizers personnalisés.
- Par défaut, l'optimisation SQLITE_DIRECT_OVERFLOW_READ est activée, dans laquelle les pages de débordement plus grandes que la taille de page standard du b-tree sont lues directement à partir du fichier, en contournant le cache. Pour le désactiver lors de la construction, vous pouvez utiliser l'option "-DSQLITE_DIRECT_OVERFLOW_READ=0".
- Le planificateur de requêtes a amélioré l'efficacité de l'optimisation des contraintes transitives et amélioré la capacité d'ignorer les index jugés de mauvaise qualité lors de l'exécution d'une opération ANALYZE.
- L'interface de ligne de commande a amélioré l'affichage du contenu codé en UTF-8 sur la plate-forme Windows. Activation de la détection automatique de l'utilisation de la CLI lors de la lecture de scripts « .dump » et de l'apport des modifications appropriées aux paramètres tels que « .dbconfig défensive off » et « .dbconfig dqs_dll on ».
- La propriété SQLITE_RESULT_SUBTYPE a été ajoutée aux fonctions SQL définies côté application, ce qui permet d'appeler sqlite3_result_subtype() à partir de la fonction pour inspecter les sous-types d'arguments.
De plus, nous pouvons noter le développement dans les versions expérimentales de SQLite d'un nouveau mode de journalisation des transactions - WAL2 (« PRAGMA journal_mode = wal2 »), qui utilise deux fichiers wal (« database-wal » et « database-wal2 ») au lieu d'un. . Lors de l'écriture de données dans la base de données, de nouvelles données sont ajoutées au premier fichier wal. Si le premier fichier wal atteint une taille suffisamment grande, il passe à l'écriture dans le deuxième fichier. Après être passé au deuxième fichier wal, le premier devient disponible pour valider les modifications (point de contrôle) et l'écraser. En conséquence, lorsque le deuxième fichier wal atteint une taille importante, il passe au premier, etc., ce qui résout le problème de la croissance incontrôlée du fichier wal dans les situations où la transaction n'est pas validée pendant une longue période ou où de longs processus de lecture sont effectué.
Source: opennet.ru
