SQLite - SQLite

SQLite
SQLite370.svg
Développeur(s) D. Richard Hipp
Première version 17 août 2000 ;
il y a 21 ans
 ( 2000-08-17 )
Version stable 3.36.0  Modifiez ceci sur Wikidata(18 juin 2021 ; il y a 3 mois ) [±] ( 18 juin 2021 )
Dépôt
Écrit en C
Système opérateur Multiplateforme
Taille 699  Kio
Taper SGBDR ( intégré )
Licence Domaine public
Site Internet sqlite .org Modifiez ceci sur Wikidata
Format de fichier de base de données SQLite
Extension de nom de fichier
.sqlite3, .sqlite, .db
Type de média Internet application/vnd.sqlite3
nombre magique 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00( ASCII terminé par zéro "SQLite format 3")
Première version 2004-06-18
Format ouvert ? oui ( domaine public )
Site Internet www .sqlite .org /fileformat2 .html

SQLite ( / ˌ ɛ s ˌ k JU ˌ ɛ l t / , / s i k w ə ˌ l t / ) est un système de gestion de base de données relationnelle (RDBMS) contenu dans un C bibliothèque . Contrairement à de nombreux autres systèmes de gestion de bases de données, SQLite n'est pas un moteur de base de données client-serveur . Au contraire, il est intégré dans le programme final.

SQLite suit généralement la syntaxe PostgreSQL . SQLite utilise une syntaxe SQL dynamiquement et faiblement typée qui ne garantit pas l' intégrité du domaine . Cela signifie que l'on peut, par exemple, insérer une chaîne dans une colonne définie comme un entier. SQLite tentera de convertir les données entre les formats le cas échéant, la chaîne "123" en un entier dans ce cas, mais ne garantit pas de telles conversions et stockera les données telles quelles si une telle conversion n'est pas possible.

SQLite est un choix populaire en tant que logiciel de base de données intégré pour le stockage local/client dans les logiciels d'application tels que les navigateurs Web . C'est sans doute le moteur de base de données le plus largement déployé , car il est utilisé aujourd'hui par plusieurs navigateurs, systèmes d'exploitation et systèmes embarqués répandus (tels que les téléphones mobiles), entre autres. SQLite a des liaisons avec de nombreux langages de programmation.

Concevoir

Contrairement aux systèmes de gestion de base de données client-serveur, le moteur SQLite n'a pas de processus autonomes avec lesquels le programme d'application communique. Au lieu de cela, la bibliothèque SQLite est liée et devient ainsi une partie intégrante du programme d'application. La liaison peut être statique ou dynamique . Le programme d'application utilise les fonctionnalités de SQLite via des appels de fonction simples , qui réduisent la latence d'accès à la base de données : les appels de fonction au sein d'un seul processus sont plus efficaces que la communication inter-processus .

SQLite stocke l'intégralité de la base de données (définitions, tables, index et les données elles-mêmes) sous la forme d'un seul fichier multiplateforme sur une machine hôte. Il implémente cette conception simple en verrouillant l'intégralité du fichier de base de données pendant l'écriture. Les opérations de lecture SQLite peuvent être multitâches, bien que les écritures ne puissent être effectuées que de manière séquentielle.

En raison de la conception sans serveur, les applications SQLite nécessitent moins de configuration que les bases de données client-serveur. SQLite est appelé zero-conf car il ne nécessite pas de gestion des services (comme les scripts de démarrage) ou de contrôle d'accès basé sur GRANT et les mots de passe. Le contrôle d'accès est géré au moyen d' autorisations de système de fichiers données au fichier de base de données lui-même. Les bases de données dans les systèmes client-serveur utilisent des autorisations de système de fichiers qui donnent accès aux fichiers de base de données uniquement au processus démon.

Une autre implication de la conception sans serveur est que plusieurs processus peuvent ne pas être en mesure d'écrire dans le fichier de base de données. Dans les bases de données sur serveur, plusieurs écrivains se connecteront tous au même démon, qui est capable de gérer ses verrous en interne. SQLite, en revanche, doit s'appuyer sur des verrous de système de fichiers. Il a moins connaissance des autres processus qui accèdent à la base de données en même temps. Par conséquent, SQLite n'est pas le choix préféré pour les déploiements à forte intensité d'écriture. Cependant, pour les requêtes simples avec peu de concurrence, les performances de SQLite profitent d'éviter la surcharge de transmettre ses données à un autre processus.

SQLite utilise PostgreSQL comme plateforme de référence. "Que ferait PostgreSQL" est utilisé pour donner un sens à la norme SQL. Un écart majeur est qu'à l'exception des clés primaires , SQLite n'impose pas la vérification de type ; le type d'une valeur est dynamique et non strictement contraint par le schéma (bien que le schéma déclenche une conversion lors du stockage, si une telle conversion est potentiellement réversible). SQLite s'efforce de suivre la règle de Postel .

Histoire

D. Richard Hipp a conçu SQLite au printemps 2000 alors qu'il travaillait pour General Dynamics sous contrat avec la marine américaine . Hipp concevait un logiciel utilisé pour un système de contrôle des dommages à bord des destroyers lance-missiles , qui utilisait à l'origine HP-UX avec un back-end de base de données IBM Informix . SQLite a commencé comme une extension Tcl .

Les objectifs de conception de SQLite étaient de permettre au programme d'être utilisé sans installer de système de gestion de base de données ni nécessiter un administrateur de base de données . Hipp a basé la syntaxe et la sémantique sur celles de PostgreSQL 6.5. En août 2000, la version 1.0 de SQLite est sortie, avec un stockage basé sur gdbm (GNU Database Manager). SQLite 2.0 a remplacé gdbm par une implémentation B-tree personnalisée , ajoutant une capacité de transaction . SQLite 3.0, partiellement financé par America Online , a ajouté l' internationalisation , le typage des manifestes et d'autres améliorations majeures.

En 2011, Hipp a annoncé son intention d'ajouter une interface NoSQL (gestion des documents exprimés en JSON ) aux bases de données SQLite et de développer UnQLite , une base de données orientée document intégrable .

SQLite est l'un des quatre formats recommandés pour le stockage à long terme d'ensembles de données approuvés pour une utilisation par la Library of Congress .

Caractéristiques

SQLite implémente la plupart du standard SQL-92 pour SQL , mais manque de certaines fonctionnalités. Par exemple, il ne fournit que partiellement des déclencheurs et ne peut pas écrire dans des vues (cependant, il fournit des déclencheurs INSTEAD OF qui fournissent cette fonctionnalité). Sa prise en charge des instructions ALTER TABLE est limitée.

SQLite utilise un système de types inhabituel pour un SGBD compatible SQL : au lieu d'affecter un type à une colonne comme dans la plupart des systèmes de bases de données SQL, les types sont affectés à des valeurs individuelles ; en termes de langage, il est typé dynamiquement . De plus, il est faiblement typé de la même manière que Perl : on peut insérer une chaîne dans une colonne entière (bien que SQLite essaie d'abord de convertir la chaîne en entier, si le type préféré de la colonne est entier). Cela ajoute de la flexibilité aux colonnes, en particulier lorsqu'elles sont liées à un langage de script typé dynamiquement. Cependant, la technique n'est pas transférable à d'autres produits SQL. Une critique courante est que le système de types de SQLite ne dispose pas du mécanisme d'intégrité des données fourni par les colonnes à typage statique dans d'autres produits. Le site web de SQLite décrit un mode « affinité stricte », mais cette fonctionnalité n'a pas encore été ajoutée. Cependant, il peut être implémenté avec des contraintes telles que CHECK(typeof(x)='integer').

Les tables incluent normalement une colonne d'index rowid cachée , ce qui permet un accès plus rapide. Si une base de données comprend une colonne Integer Primary Key, SQLite l'optimisera généralement en la traitant comme un alias pour rowid , ce qui entraînera le stockage du contenu sous la forme d'un entier signé 64 bits strictement typé et modifiera son comportement pour qu'il ressemble un peu à un auto- colonne d'incrémentation. Les futures versions de SQLite pourraient inclure une commande pour déterminer si une colonne a un comportement similaire à celui de rowid pour différencier ces colonnes des clés primaires entières faiblement typées et non auto-incrémentées.

SQLite avec la fonction Unicode complète est facultatif.

Plusieurs processus informatiques ou threads peuvent accéder simultanément à la même base de données. Plusieurs accès en lecture peuvent être satisfaits en parallèle. Un accès en écriture ne peut être satisfait que si aucun autre accès n'est actuellement desservi. Sinon, l'accès en écriture échoue avec un code d'erreur (ou peut être réessayé automatiquement jusqu'à l'expiration d'un délai d'attente configurable). Cette situation d'accès concurrent changerait lorsqu'il s'agirait de tables temporaires. Cette restriction est assouplie dans la version 3.7 lorsque la journalisation en écriture anticipée (WAL) est activée, permettant des lectures et des écritures simultanées.

La version 3.6.19 publiée le 14 octobre 2009 a ajouté la prise en charge des contraintes de clé étrangère.

La version 3.7.4 de SQLite a d'abord vu l'ajout du module FTS4 (recherche en texte intégral), qui présente des améliorations par rapport à l'ancien module FTS3. FTS4 permet aux utilisateurs d'effectuer des recherches en texte intégral sur des documents de la même manière que les moteurs de recherche recherchent des pages Web. La version 3.8.2 a ajouté la prise en charge de la création de tables sans rowid , ce qui peut améliorer l'espace et les performances. La prise en charge des expressions de table communes a été ajoutée à SQLite dans la version 3.8.3. 3.8.11 a ajouté un module de recherche plus récent appelé FTS5, les changements les plus radicaux (par rapport à FTS4) nécessitant une modification de la version.

En 2015, avec l' extension json1 et de nouvelles interfaces de sous-type, SQLite version 3.9 a introduit la gestion de contenu JSON .

Selon la version 3.33.0, la taille de base de données maximale prise en charge est de 281 To.

Développement et diffusion

Le code de SQLite est hébergé avec Fossil , un système de contrôle de version distribué qui est lui-même construit sur une base de données SQLite.

Un programme de ligne de commande autonome est fourni dans la distribution de SQLite. Il peut être utilisé pour créer une base de données, définir des tables, insérer et modifier des lignes, exécuter des requêtes et gérer un fichier de base de données SQLite. Il sert également d'exemple pour écrire des applications qui utilisent la bibliothèque SQLite.

SQLite utilise des tests de régression automatisés avant chaque version. Plus de 2 millions de tests sont effectués dans le cadre de la vérification d'une version. Depuis la version du 10 août 2009 de SQLite 3.6.17, les versions de SQLite ont une couverture de test de branche à 100 %, l'un des composants de la couverture de code . Les tests et les harnais de test sont partiellement du domaine public et partiellement propriétaires .

Utilisations notables

Middleware

  • L' adaptateur ADO.NET , initialement développé par Robert Simpson, est maintenu conjointement avec les développeurs SQLite depuis avril 2010.
  • Le pilote ODBC a été développé et est maintenu séparément par Christian Werner. Le pilote ODBC de Werner est la méthode de connexion recommandée pour accéder à SQLite depuis OpenOffice.org .
  • Wrapper COM ( ActiveX ) rendant SQLite accessible sous Windows aux langages scriptés tels que JScript et VBScript . Cela ajoute des capacités de base de données SQLite aux applications HTML (HTA).

Navigateurs Web

  • Les navigateurs Google Chrome , Opera , Safari et le navigateur Android permettent tous de stocker des informations et de les récupérer dans une base de données SQLite dans le navigateur, en utilisant la technologie Web SQL Database , bien que cela devienne rapidement obsolète (à savoir remplacé par IndexedDB ) . En interne, ces navigateurs basés sur Chromium utilisent des bases de données SQLite pour stocker des données de configuration telles que l'historique des visites du site, les cookies, l'historique des téléchargements, etc.
  • Mozilla Firefox et Mozilla Thunderbird stockent diverses données de configuration (signets, cookies, contacts, etc.) dans des bases de données SQLite gérées en interne. Jusqu'à la version 57 de Firefox ( " Firefox Quantum " ), il existait un module complémentaire tiers qui utilisait l'API prenant en charge cette fonctionnalité pour fournir une interface utilisateur permettant de gérer des bases de données SQLite arbitraires.
  • Plusieurs modules complémentaires tiers peuvent utiliser les API JavaScript pour gérer les bases de données SQLite.

Cadres d'applications Web

Divers

Systèmes d'exploitation

SQLite est inclus par défaut dans :

Prise en charge du langage de programmation

Il existe des liaisons de langage à SQLite pour un grand nombre de langages de programmation , notamment :

Voir également

Les références

Citations

Sources

Liens externes