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.
Le 21/08/09 à 17h45
Tu comptes utiliser les fonctions natives pour l'accès à SQLite ou passer par PDO ? Le premier choix reste quand même à privilégier au regard des performances.
Le 06/07/09 à 00h02
Ouee c'est bon j'ai trouvé mon erreur. Je commençais à désespérer de trouver une solution. En fait quand je met un chemin absolu ça fonctionne, et erreur con, ma variable qui contenait le chemin du fichier était pas en absolu...
maintenant ça fonctionne.
J'attends de pouvoir tester Blogolite...
Le 05/07/09 à 21h20
A part le fait qu'il faut activer PDO et PDO_SQLITE, y'a pas de manip particulière. Après pour la connexion voilà moi ce que je fais : $sqlite = new PDO('sqlite:compteur.sq3','',''); Si t'y arrives pas réessaye mais normalement ça marche sans problème, car s'il trouve pas la BDD il en créé une nouvelle.
Le 05/07/09 à 12h22
Salut, dis moi comment fais-tu pour utiliser sqlite avec PDO ?
36 mille fois que j'essais, quand je met le DSN de MySQL mes requêtes fonctionnent très bien, mais dès que je met le DSN de sqlite ça fonctionne plus.
Est-ce qu'il y a une config particulière d'apache à avoir mis à part les modules php_pdo, php_pdo_sqlite ?
Pour l'instant je dev sous windows avec WAMP, c'est peut-être ça le problème ?
Le 16/05/09 à 19h06
Sympa. 'Faudra que j'essaie SQLite pour des scripts légers...