SQLite : moteur de base de données sous forme de fichiers

Fiche PLUME
  • Statut de la fiche : Logiciel : MAJ Terminée
  • Création ou MAJ importante : 15/12/2012
  • Correction mineure : 04/12/2013
  • Auteur : Jean-Michel Glorian - IRAP (CNRS, UPS)
  • Responsable thématique : Anne Durand (CLEO)
Mots clés
Description
Fonctionnalités générales

SQLite est un moteur de base de données relationnelles transactionnelles très léger (< 300 ko) idéal pour les bases de données mono-poste et mono-application inférieures à quelques Go. Il utilise le langage SQL et est très simple d'utilisation : à la différence d'autres moteurs de bases de données (MySql, PostgreSQL, ...) qui sont des programmes indépendants auxquels un programme utilisateur accède dans une relation 'client-serveur', SQLite est une bibliothèque et fait donc partie intégrante du logiciel utilisateur par l'édition de liens à la compilation ou via des commandes dans le cas où le programme appelant est un script (cf. TCL). Il est à noter que les opérations sont atomiques, ce qui assure l'intégrité de la base. La base de données est stockée dans un fichier dont l'encodage est indépendant de la plateforme, ce qui facilite les déploiements et les portages.

Il n'y a pas de phase d'installation.

Autres fonctionnalités
  • SQLite peut être utilisé dans l'embarqué.
  • SQLite peut aussi bien fonctionner en mode synchrone (chaque opération sollicite le support de stockage) qu'en mode asynchrone (à l'aide des instructions BEGIN ... COMMIT) qui offre alors des performances décuplées au détriment de la fiabilité en cas de défaillance.
Interopérabilité
  • fichier au format .sql,
  • respecte les standards du SQL92 avec quelques exceptions (cf. le paragraphe Limitations),
  • syntaxe des requêtes très semblable à MySql.

Pour ces raisons de nombreux utilitaires (voire même de simples shellscripts) permettent de convertir une base de données depuis et vers SQlite.

Contexte d'utilisation dans mon laboratoire/service

Utilisé au laboratoire IRAP en remplacement de MySql pour une base de données atomiques et moléculaires.

Limitations, difficultés, fonctionnalités importantes non couvertes
  • Pas de gestion de privilèges, d'utilisateurs, ni de droits d'accès
  • Ne supporte pas bien le multithread, chaque processus qui accède en lecture ou en écriture à la base bloque l'accès à la base
  • Impossibilité de supprimer ou de modifier les colonnes d'une table déjà remplie
  • Impossibilité de modifier une vue

Quelques particularités :

  • SQlite ne dispose pas nativement des énumérations (type ENUM),
  • SQlite stocke en mémoire, tous les champs de type INT (tinyint, mediumint, ...) ainsi que BOOLEAN sous une forme unique d'entier signé tout en assurant un forme adaptative lors du stockage sur disque.
Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Toutes les versions de gnu/linux.
Les logiciels suivants: Firefox, Skype, bibliothèques standards PHP, Python, certains produits d'Apple et d'Adobe : http://www.sqlite.org/famous.html utilisent sqlite

Plates-formes

Linux, Windows, MAC et Android

Logiciels connexes
Autres logiciels aux fonctionnalités équivalentes
Environnement de développement
Eléments de pérennité

Utilisé dans les applications Android

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur
Divers (astuces, actualités, sécurité)

Obtenir de ses préférences Firefox la liste des favoris vers des sites français :

sqlite3 ~/.mozilla/firefox/[_nom_de_profile_]/places.sqlite \
'SELECT moz_bookmarks.title,moz_places.url \
FROM moz_bookmarks LEFT JOIN moz_places \
WHERE moz_bookmarks.fk = moz_places.id \
AND moz_bookmarks.title != "null" \ 
AND moz_places.url LIKE "%.fr/";'

Cela effectue une jointure entre deux tables stockant respectivement les intitulés et les URL des favoris.