La version SQLite 3.45 a été publiée, une base de données légère sous forme de bibliothèque dynamique. Le code SQLite est distribué dans le domaine public, ce qui signifie qu'il peut être utilisé sans restrictions et gratuitement à toutes fins. Le soutien financier des développeurs de SQLite est assuré par un consortium spécialement créé, qui comprend des entreprises telles que Bentley, Bloomberg, Expensify et Navigation Data Standard.
Principales modifications :
- Toutes les fonctions SQL pour travailler avec le format JSON ont été réécrites et traduites dans un nouveau format interne d'arbre d'analyse JSONB, qui est sérialisé et peut être stocké dans la base de données pour éviter des réanalyses répétées lors de l'utilisation de valeurs JSON. Les nouvelles versions des fonctions de génération JSON génèrent maintenant un format binaire JSONB au lieu de texte. La fonction json_valid() a été ajoutée avec un second argument optionnel, qui permet de spécifier un masque de bits définissant les caractéristiques d'un JSON valide (par exemple, en spécifiant 0x04, un blob JSONB sera considéré comme valide, en spécifiant 0x01, un JSON textuel au format RFC-8259 sera valide, et en spécifiant 0x05, les deux variantes seront validées).
- Une option tokendata a été ajoutée à la table virtuelle FTS5, utilisée pour la recherche en texte intégral, permettant l'utilisation de tokenizeurs personnalisés.
- L'optimisation SQLITE_DIRECT_OVERFLOW_READ est activée par défaut, où les pages d'overflow, dont la taille dépasse la taille standard d'une page b-tree, sont lues directement à partir du fichier, contournant le cache. Pour désactiver cette option lors de la compilation, vous pouvez utiliser l'option « -DSQLITE_DIRECT_OVERFLOW_READ=0 ».
- L'efficacité de l'optimisation des contraintes transitives dans le planificateur de requêtes a été améliorée, ainsi que l'ignorance des index considérés comme de faible qualité lors de l'exécution de l'opération ANALYZE.
- L'interface en ligne de commande a amélioré l'affichage du contenu en encodage UTF-8 sur la plateforme Windows. La détection automatique de l'utilisation de l'interface CLI lors de l'exécution des scripts « .dump » a été assurée, ainsi que les modifications appropriées des paramètres, telles que « .dbconfig defensive off » et « .dbconfig dqs_dll on ».
- La propriété SQLITE_RESULT_SUBTYPE a été ajoutée aux fonctions SQL définies côté application, permettant d'appeler sqlite3_result_subtype() pour inspecter les sous-types des arguments.
On peut également noter le développement dans les versions expérimentales de SQLite d'un nouveau mode de journalisation des transactions — WAL2 («PRAGMA journal_mode = wal2»), dans lequel deux fichiers wal («database-wal» et «database-wal2») sont utilisés au lieu d'un seul. Lors de l'enregistrement de données dans la base de données, de nouvelles données sont ajoutées dans le premier fichier wal. Si le premier fichier wal atteint une taille suffisamment grande, l'enregistrement passe au second fichier. Après le passage au second fichier wal, le premier devient disponible pour la validation des changements (checkpoint) et la réécriture. Ainsi, lorsque le second fichier wal atteint une grande taille, l'enregistrement retourne au premier, et vice versa, ce qui résout le problème de l'augmentation incontrôlée du fichier wal dans des situations où la transaction n'est pas validée pendant longtemps ou où des processus de lecture longs sont exécutés.
Source : opennet.ru
