SQLite

Logiciel capture d'écran:
SQLite
Détails logiciels:
Version: 3.24.0 Mise à jour
Date de transfert: 22 Jun 18
Développeur: D. Richard Hipp
Licence: Gratuit
Popularité: 21

Rating: 5.0/5 (Total Votes: 1)

SQLite est une bibliothèque C open source, multiplateforme, libre et petite qui implémente un moteur de base de données SQL autonome, intégrable, transactionnel, sans serveur et à configuration nulle. C'est le moteur de base de données SQL le plus utilisé au monde.


Caractéristiques en un coup d'oeil

Les fonctionnalités clés incluent la prise en charge de transactions isolées, atomiques, durables et cohérentes, l'implémentation SQL92, les fichiers de base de données peuvent être partagés librement entre ordinateurs, les bases de données jusqu'à 2 téraoctets, la prise en charge des blobs et des chaînes ainsi qu'une API facile à utiliser et très simple (Application Programming Interface).

De plus, SQLite ne nécessite pas de configuration initiale ou d'administration supplémentaire, permet aux développeurs de stocker une base de données complète dans un seul fichier disque multiplateforme, parfait pour utiliser les formats de fichiers d'application, sans dépendance externe, livré avec dans les liaisons TCL (Tool Command Language) et une documentation complète.

Les liaisons pour de nombreux autres langages de programmation sont disponibles séparément. Son code source est bien commenté et il est livré avec un client CLI (Interface de ligne de commande) autonome qui a été conçu à partir du décalage à utiliser pour l'administration des bases de données SQLite.


Que puis-je utiliser pour?

Le moteur de base de données SQLite peut être utilisé à des fins personnelles ou commerciales. Les utilisations suggérées pour SQLite incluent la base de données pour les gadgets, la base de données de site Web, stand-in pour un SGBDR d'entreprise (Relational Database Management System), ainsi que le format de fichier d'application.


Sous le capot et les OS pris en charge

La distribution SQLite est livrée avec un programme d'accès en ligne de commande autonome (sqlite) qui peut être utilisé pour administrer une base de données SQLite et qui sert d'exemple d'utilisation de la bibliothèque SQLite. Il est entièrement écrit dans le langage de programmation ANSI-C.

Les systèmes d'exploitation de bureau pris en charge incluent GNU / Linux, Mac OS X et Microsoft Windows. Les systèmes d'exploitation mobiles pris en charge incluent Android et iOS. Il a été testé avec succès avec des plates-formes matérielles 32 bits et 64 bits, et il est facilement portable vers d'autres systèmes d'exploitation.

Quoi de neuf dans cette version:

  • Les points forts de cette version incluent la prise en charge de UPSERT de style PostgreSQL et des performances améliorées, en particulier pour les requêtes ORDER BY LIMIT.

Quoi de neuf dans la version:

  • Tirez parti des capacités d'écriture atomique du système de fichiers F2FS, quand elles sont disponibles, pour réduire considérablement les coûts de transaction. Cela nécessite actuellement l'option de compilation SQLITE_ENABLE_BATCH_ATOMIC_WRITE.
  • Autoriser les commandes ATTACH et DETACH à fonctionner à l'intérieur d'une transaction.
  • Autoriser l'écriture de tables virtuelles SANS ROWID si la clé PRIMARY KEY contient exactement une colonne.
  • Le & quot; fsync () & quot; Cela se produit après que l'en-tête est écrit dans une réinitialisation WAL utilise maintenant les paramètres de synchronisation pour les points de contrôle. Cela signifie qu'il utilisera un "fullfsync". sur macs si PRAGMA checkpoint_fullfsync est activé.
  • La fonction sqlite3_sourceid () essaie de détecter si le code source a été modifié depuis ce qui est vérifié dans le contrôle de version et s'il y a des modifications, les quatre derniers caractères du hachage de version sont affichés sous la forme & quot; alt1 & quot; ou "alt2". L'objectif est de détecter les modifications accidentelles et / ou imprudentes. Un faussaire peut renverser cette fonctionnalité.
  • Désopertération améliorée des noms de colonne pour les instructions CREATE TABLE AS avec une requête agrégée sur le côté droit.
  • Moins de "stat ()" les appels système émis par le VFS unix.
  • Amélioration de l'optimisation LIKE pour qu'elle fonctionne avec une clause ESCAPE.
  • Enhanced PRAGMA integrity_check et PRAGMA quick_check pour détecter une corruption de ligne obscure qui leur manquait auparavant. Mettez également à jour les deux pragmas afin qu'ils retournent le texte d'erreur plutôt que SQLITE_CORRUPT lorsqu'ils rencontrent une corruption dans les enregistrements.
  • Le planificateur de requêtes préfère maintenant implémenter des sous-requêtes de la clause FROM à l'aide de sous-routines plutôt que d'utiliser l'optimisation de l'aplatissement de la requête. La prise en charge de l'utilisation de sous-requêtes pour les sous-requêtes ne peut plus être désactivée.
  • Transmet des informations sur les contraintes! =, IS, IS NOT, NOT NULL et IS NULL dans la méthode xBestIndex des tables virtuelles.
  • Amélioration de la table virtuelle CSV afin qu'elle accepte la dernière ligne d'entrée si le caractère de fin de ligne final est manquant.
  • Supprimez le "scratch & quot;" rarement utilisé allocateur de mémoire. Remplacez-le par le paramètre de configuration SQLITE_CONFIG_SMALL_MALLOC qui indique à SQLite que les allocations de mémoire volumineuses doivent être évitées autant que possible.
  • Ajout de la table virtuelle swarm à l'extension de table virtuelle d'union existante.
  • Ajout de la table virtuelle sqlite_dbpage pour fournir un accès direct aux pages du fichier de base de données. Le code source est intégré à l'amalgamation et est activé à l'aide de l'option de compilation -DSQLITE_ENABLE_DBPAGE_VTAB.
  • Ajouter un nouveau type de table virtuelle fts5vocab - & quot; instance & quot; - qui fournit un accès direct à un index de texte intégral FTS5 au niveau le plus bas possible.
  • Supprimez un appel à rand_s () dans Windows VFS car cela causait des problèmes dans Firefox sur certains ordinateurs portables plus anciens.
  • Le code source src / shell.c du shell de ligne de commande n'est plus sous contrôle de version. Ce fichier est maintenant généré dans le cadre du processus de construction.
  • Les micro-optimisations diverses réduisent la consommation de CPU d'environ 2,1%.
  • Corrections de bugs:
  • Correction d'une instruction assert () erronée découverte par OSSFuzz. Ticket cb91bf4290c211d
  • Correction d'une fuite de mémoire obscure dans sqlite3_result_pointer (). Ticket 7486aa54b968e9b
  • Évitez une éventuelle erreur use-after-free en différant les réinitialisations de schéma jusqu'à la fin de l'exécution du planificateur de requêtes. Billet be436a7f4587ce5
  • N'utilisez les index-on-expressions que pour optimiser ORDER BY ou GROUP BY si le COLLATE est correct. Ticket e20dd54ab0e4383
  • Correction d'une erreur d'assertion qui apparaissait lorsque l'expression dans un index sur expressions est réellement une constante. Ticket aa98619ad08ddca
  • Correction d'une erreur d'assertion pouvant survenir après PRAGMA reverse_unordered_selects. Ticket cb91bf4290c211d
  • Correction d'une erreur de segmentation pouvant survenir pour les requêtes qui utilisent des fonctions table dans une sous-requête IN ou EXISTS. Ticket b899b6042f97f5
  • Correction d'un problème potentiel de débordement d'entier lors de la compilation d'une expression de table commune horrible particulière. C'était un autre problème découvert par OSSFuzz. L'enregistrement 6ee8cb6ae5.
  • Correction d'une lecture hors limite potentielle lors de l'interrogation d'un fichier de base de données corrompu, problème détecté par Natalie Silvanovich de Google Project Zero. Arrivée 04925dee41a21f.

Quoi de neuf dans la version 3.20.1:

  • La version du correctif version 3.20.1 modifie deux lignes de code dans l'interface sqlite3_result_pointer () afin de corriger une fuite de mémoire rare.

Nouveautés dans la version 3.9.2:

  • SQLite version 3.9.2 est une version de correctif fixant deux bogues obscurs.

Nouveautés dans la version 3.8.9:

  • Les nouvelles fonctionnalités de cette version incluent la commande PRAGMA index_xinfo, l'interface sqlite3_status64 () et la commande ".dbinfo" du shell de ligne de commande.

Nouveautés dans la version 3.8.8.2:

  • La version de correctif 3.8.8.2 corrige un seul problème mineur: elle garantit que l'opération sqlite3_wal_checkpoint (TRUNCATE) tronquera toujours le journal de lecture anticipée même si le journal a déjà été réinitialisé et ne contient aucun nouveau contenu. On ne sait pas s'il s'agit d'un correctif ou d'une nouvelle fonctionnalité.
  • Quelque chose de ce genre devait normalement être inclus dans la prochaine version régulièrement programmée, mais un utilisateur SQLite important avait besoin de la modification à la hâte, nous étions donc ravis de la sortir par ce patch.
  • Il n'y a aucune raison de mettre à jour à moins que vous ayez vraiment besoin du comportement amélioré de sqlite3_wal_checkpoint (TRUNCATE).

Nouveautés dans la version 3.8.8.1:

  • Correction d'un bogue dans la logique de tri, présente depuis la version 3.8.4, qui peut provoquer l'affichage du résultat dans le mauvais ordre sur les requêtes qui contiennent une clause ORDER BY, une clause LIMIT et qui ont environ 60 colonnes ou plus le jeu de résultats. Ticket f97c4637102a3ae72b79.
  • SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
  • SHA1 pour sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e

Nouveautés dans la version 3.8.8:

  • Nouvelles fonctionnalités:
  • Ajout de la commande PRAGMA data_version qui peut être utilisée pour déterminer si un fichier de base de données a été modifié par un autre processus.
  • Ajout de l'option SQLITE_CHECKPOINT_TRUNCATE à l'interface sqlite3_wal_checkpoint_v2 (), avec les améliorations correspondantes à PRAGMA wal_checkpoint.
  • Ajout de l'interface sqlite3_stmt_scanstatus (), disponible uniquement lors de la compilation avec SQLITE_ENABLE_STMT_SCANSTATUS.
  • sqlite3_table_column_metadata () est amélioré pour fonctionner correctement sur les tables SANS ROWID et pour vérifier l'existence d'une table si le paramètre de nom de colonne est NULL. L'interface est maintenant également incluse dans la construction par défaut, sans nécessiter l'option de compilation SQLITE_ENABLE_COLUMN_METADATA.
  • Ajout de l'option de compilation SQLITE_ENABLE_API_ARMOR.
  • Ajout de l'option de compilation SQLITE_REVERSE_UNORDERED_SELECTS.
  • Ajout de l'option de compilation SQLITE_SORTER_PMASZ et de l'option de démarrage SQLITE_CONFIG_PMASZ.
  • Ajout de l'option SQLITE_CONFIG_PCACHE_HDRSZ à sqlite3_config (), ce qui permet aux applications de déterminer plus facilement la quantité de mémoire à utiliser avec SQLITE_CONFIG_PAGECACHE.
  • Le nombre de lignes d'une clause VALUES n'est plus limité par SQLITE_LIMIT_COMPOUND_SELECT.
  • Ajout de l'extension chargable eval.c qui implémente une fonction eval () SQL qui évaluera récursivement SQL.
  • Améliorations des performances:
  • Réduisez le nombre d'opérations memcpy () impliquées dans l'équilibrage d'un b-tree, pour une amélioration globale des performances de 3,2%.
  • Améliorations des estimations de coûts pour l'optimisation skip-scan.
  • L'optimisation de l'indexation automatique est maintenant capable de générer un index partiel si cela est approprié.
  • Corrections de bugs:
  • Assurer la durabilité après une coupure de courant avec "PRAGMA journal_mode = TRUNCATE" en appelant directement fsync () après avoir tronqué le fichier journal.
  • Le planificateur de requêtes reconnaît maintenant que toute colonne de la table de droite d'un LEFT JOIN peut être NULL, même si cette colonne a une contrainte NOT NULL. Évitez d'essayer d'optimiser les tests NULL dans ces cas. Correction du ticket 6f2222d550f5b0ee7ed.
  • Assurez-vous que ORDER BY place les lignes dans l'ordre croissant même si l'opérateur DISTINCT est implémenté à l'aide d'un index descendant. Correction du ticket c5ea805691bfc4204b1cb9e.
  • Corrige les conflits de données qui peuvent survenir lors de l'exécution de plusieurs threads en mode cache partagé où certains threads ouvrent et ferment des connexions.
  • Correction de bugs de crash obscurs trouvés par american fuzzy lop. Ticket a59ae93ee990a55.
  • Travailler autour d'un bogue de l'optimiseur de GCC (pour gcc 4.2.1 sur MacOS 10.7) qui a provoqué des résultats incorrects lors de la compilation de l'extension R-Tree avec -O3.
  • Autres changements:
  • Désactivez l'utilisation de la routine de la bibliothèque C strchrnul () à moins qu'elle ne soit spécifiquement activée à l'aide de l'option de compilation -DHAVE_STRCHRNULL.
  • Amélioration de l'efficacité et de l'exactitude des fonctions d'indices SQL probelihood (), likely () et likely ().
  • SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
  • SHA1 pour sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905

Nouveautés dans la version 3.8.7.4:

  • Cette version corrige des ajouts dans un mutex requis par les modifications du patch 3.8.7.3 mais a été accidentellement omis. Le mutex n'était requis par aucun des tests internes de SQLite, mais Firefox se bloque sans cela. Des cas de test ont été ajoutés pour garantir que le mutex ne sera plus jamais manqué.

Nouveautés dans la version 3.8.7.3:

  • Correctif: Vérifiez que les objets KeyInfo mis en cache (abstraction interne non visible par l'application) ne disparaissent pas en mode cache partagé et qu'ils ferment et rouvrent fréquemment certaines connexions à la base de données tout en laissant d'autres connexions continuellement. Ticket e4a18565a36884b00edf.
  • Correctif: Reconnaître que n'importe quelle colonne dans la table de droite d'un LEFT JOIN peut être NULL même si la colonne a une contrainte NOT NULL. N'appliquez pas d'optimisations qui supposent que la colonne n'est jamais NULL. Ticket 6f2222d550f5b0ee7ed.
  • SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
  • SHA1 pour sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

Nouveautés dans la version 3.8.7.2:

  • La principale raison de cette version est d'améliorer la commande ROLLBACK afin qu'elle autorise l'exécution de requêtes sur la même connexion de base de données pour continuer à s'exécuter tant que ROLLBACK ne modifie pas le schéma. Dans toutes les versions précédentes de SQLite, un ROLLBACK provoquait l'arrêt immédiat des requêtes en attente et renvoyait SQLITE_ABORT ou SQLITE_ABORT_ROLLBACK. Les requêtes en attente s'interrompent toujours si ROLLBACK modifie le schéma de base de données, mais à partir de cette version de correctif, les requêtes peuvent continuer à s'exécuter si le schéma n'est pas modifié.
  • En plus de l'amélioration ROLLBACK, cette version de correctif inclut également des correctifs pour trois bogues obscurs.

Nouveautés dans la version 3.8.7.1:

  • La principale raison de cette version de correction de bogues est de résoudre un problème de mise à jour de la valeur des champs à la fin d'une table qui ont été ajoutés à l'aide de ALTER TABLE ADD COLUMN. Ce problème est apparu dans la version 3.8.7.
  • Un autre inconvénient mineur dans la version 3.8.7 était le fait que la version Android essayait d'utiliser la fonction strchrnul () de la bibliothèque C standard mais cette fonction n'est pas disponible sur Android. Les versions Android devaient ajouter -DHAVE_STRCHRNUL = 0 pour contourner le problème. Ce correctif corrige cela afin que les versions Android puissent désormais fonctionner sans aucune modification.
  • L'opération de PRAGMA journal_mode = TRUNCATE a été améliorée de sorte qu'elle appelle fsync () après avoir tronqué le fichier journal lorsque PRAGMA synchrone = FULL. Cela permet de préserver la durabilité des transactions dans le cas d'une perte de puissance survenant peu de temps après la validation.
  • Enfin, quelques problèmes anciens et obscurs associés à l'exécution de UPDATE et DELETE sur VIEW ont été corrigés.

Nouveautés dans la version 3.8.7:

  • La plupart des changements de la version précédente ont été des micro-optimisations conçues pour aider SQLite à fonctionner un peu plus vite. Chaque optimisation individuelle a un impact sur les performances incroyablement faible. Mais les améliorations s'additionnent. Mesuré sur une charge de travail bien définie (que les développeurs SQLite utilisent comme proxy pour une charge de travail typique) en utilisant cachegrind sur Linux et compilé avec gcc 4.8.1 et -Os sur x64 linux, la version actuelle fait plus de 20% de travail supplémentaire pour le même nombre de cycles CPU par rapport à la version précédente. Cachegrind n'est pas un vrai CPU, et la charge de travail utilisée pour la mesure est seulement un proxy. Donc, votre performance peut varier. Nous nous attendons à voir environ la moitié de l'amélioration mesurée et rapportée dans les applications du monde réel. 10% est inférieur à 20% mais c'est quand même assez bon, nous pensons.
  • Cette version inclut un nouvel ensemble d'interfaces en langage C qui ont des paramètres non signés 64 bits au lieu de 32 bits signés. Les nouvelles API ne fournissent aucune nouvelle fonctionnalité. Mais ils facilitent l'écriture d'applications plus résistantes aux vulnérabilités de débordement d'entier.
  • Cette version inclut également un nouveau trieur capable d'utiliser plusieurs threads pour faciliter les opérations de tri de grande taille. (Les opérations de tri sont parfois nécessaires pour implémenter les clauses ORDER BY et / ou GROUP BY et sont presque toujours requises pour CREATE INDEX.) Le trieur multithread est désactivé par défaut et doit être activé à l'aide de la commande PRAGMA threads SQL. Notez que le trieur multithread fournit des performances en temps réel plus rapides pour les grands tris, mais il utilise également plus de cycles CPU et plus d'énergie.

Nouveautés dans la version 3.8.3.1:

  • SQLite version 3.8.3.1 corrige un bogue présent dans les versions 3.8.1, 3.8.2 et 3.8.3 qui peut provoquer l'omission de lignes valides sur les requêtes. La mise à niveau de ces versions est recommandée.
  • Le problème ne survient que si SQLite est compilé avec les options de compilation SQLITE_ENABLE_STAT3 ou SQLITE_ENABLE_STAT4. Dans ce cas, si une requête contient une clause WHERE contenant des expressions comme celle-ci:
  • WHERE (expr1 OR expr2 OU ... ou exprN) ET la colonne n'est pas NULL
  • Lorsque toutes les expressions expr1 à exprN sont utilisables par les index, lors de la planification de la requête, SQLite a peut-être converti par erreur le terme "column IS NOT NULL" en "column & gt; NULL". Mais le dernier terme n'est jamais vrai, et donc la requête ne renverra aucune ligne.

Nouveautés dans la version 3.8.3:

  • Ajout de la prise en charge des expressions de table communes et de la clause WITH.
  • Ajout de la fonction SQL printf ().
  • SQLITE_DETERMINISTIC a été ajouté en tant que bit facultatif dans le 4ème argument de sqlite3_create_function () et des interfaces associées, permettant aux applications de créer de nouvelles fonctions qui peuvent être factorisées en dehors des boucles internes lorsqu'elles ont des arguments constants.
  • Ajoutez le code d'erreur SQLITE_READONLY_DBMOVED, retourné au début d'une transaction, pour indiquer que le fichier de base de données sous-jacent a été renommé ou supprimé de SQLite.
  • Autorisez les expressions arbitraires, y compris les appels de fonctions et les sous-requêtes, dans l'argument filename à ATTACH.
  • Autoriser l'utilisation d'une clause VALUES partout où une instruction SELECT est valide.
  • Réengage le PRNG utilisé par sqlite3_randomness (N, P) lorsqu'il est appelé avec N == 0. Réensemencer automatiquement après un fork () sur unix.
  • Améliorez la table virtuelle spellfix1 afin qu'elle puisse effectuer une recherche efficace avec rowid.
  • Améliorations des performances.
  • Améliorations apportées aux commentaires dans l'affichage du code octet VDBE lors de l'exécution d'EXPLAIN.
  • Ajoutez la directive "% token_class" au générateur d'analyseur LEMON et utilisez-la pour simplifier la grammaire.
  • Changez le code source de LEMON pour éviter d'appeler des fonctions de la bibliothèque C que OpenBSD considère dangereuses. (Ex: sprintf).
  • Correctif de bogue: Dans la fonction d'importation CSV du shell de ligne de commande, ne fermez pas un champ lorsqu'un échappement double se produit à la fin d'une ligne CRLN.
  • SQLITE_SOURCE_ID: "2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
  • SHA1 pour sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee

Logiciel similaire

Emdros
Emdros

11 May 15

deltasql
deltasql

19 Feb 15

Oracle Database
Oracle Database

17 Feb 15

GOODS
GOODS

11 May 15

Commentaires à SQLite

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!