C'est le fameux projet dont j'avais parlé dans un précédent billet : une idée à la base, puis développée avec le temps et des réflexions sur la faisabilité de ce projet, sur l'utilisation de SQLite au quotidien. Aujourd'hui le projet est en bonne voie, c'est pourquoi je peux commencer à vous le présenter.

SQLite : un système de bases de données méconnu

Pour beaucoup quand on parle de système de gestion de bases de données pour le web, on aura 90% des personnes qui diront MySQL, et les 10% restants seront partagés avec le reste des SGBD (PostgreSQL, Oracle, SYSbase, etc). Pourtant il y a aussi SQLite, qui par opposition aux poids lourds (lourds au propre comme au figuré) du marché, vise plutôt la simplicité et la légèreté. Pour autant ce n'est pas un système bridé voire castré mais repose plutôt sur une utilisation à petite échelle des principales fonctions d'un SGBDR (SELECT, INSERT, UPDATE, DELETE).

Si SQLite n'est pas autant utilisé que les autres systèmes, c'est qu'il présente quelques défauts qui rendent son utilisation à grande échelle délicat voire impossible.

  • Une base de données = un seul fichier : ce premier point n'est pas à priori rédhibitoire mais peut néanmoins poser des problèmes pour les gros volumes de données, les accès simultanés en lecture/écriture peuvent alors poser problèmes.
  • Une base verrouillée en écriture : peut être le plus gros défaut de SQLite, inhérent à sa conception, mais ce n'est pas très pénalisant, surtout pour un système de blog ou les lectures sont très nombreuses, mais les écritures beaucoup moins.
  • La modification de la structure d'une table est impossible : en clair le ALTER TABLE ne marche pas pour tout, on peut rajouter des colonnes mais pas en supprimer ou les changer. mais il y a des astuces pour contourner cela.

S'il y a quelques défauts, les atouts sont aussi nombreux

  • Pas de configuration : SQLite ne fonctionne pas comme les autres SGBD, pas de système client/serveur. Tout est installé par défaut dans PHP5, y'a juste à l'utiliser. pas d'adresse de serveur, de base de données, de gestion des droits. C'est simple.
  • Intégré au système : je l'ai déjà dis mais je le répète, étant donné que la base de données est en local, les temps de réponse et de lecture sont très rapide, c'est presque de la lecture pure de fichier. De plus pas de contraintes au niveau de la taille ou du nombre d'accès (hormis les limitations techniques).
  • Fonctionne chez les offres basiques des hébergeurs : prenons par exemple l'offre Start 1M d'OVH, C'est gratuit mais il n'y a pas MYSQL, qu'importe on a PHP5 donc on a SQLite, et voilà un hébergement avec base de données.

SQLite pour un blog : blogolite

Le gros défaut de SQLite ce sont les accès concurrents, mais avec un blog c'est essentiellement de la lecture, domaine ou SQLite excelle. Par exemple pour un forum l'utilisation de SQLite serait plus délicate mais pour un blog c'est tout bénef. L'autre avantage d'utiliser SQLite c'est qu'on ne pollue pas sa base de données MySQL avec les tables du blog, c'est toujours ça de gagné.

Pour ma part j'utilise SQLite depuis pas mal de temps sur mon site, notamment comme compteur de visiteurs, système de stats et ban par IP. C'est dire que cette base permet de réaliser des scripts léger mais très utiles.

Le développement de Blogolite étant toujours en cours, j'y reviendrais bientôt.