SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 328 visiteurs en ce moment

Accueil > Documentation > Tutoriaux Multitables & Multibases > Portage de SPIP en SQLite

Portage de SPIP en SQLite

16 décembre 2007 – par Déesse A. , Matthieu Marcillaud, NicolasR – commentaires

2 votes

Attention, cette page de documentation est incomplète... Vous devrez donc découvrir et expérimenter par vous-même. Des liens à la fin permettent d’accéder à d’autres documentations.
Soyez sympa, pensez à revenir compléter cette page ;-)

Après PostGreSQL c’est au tour de SQLite d’être porté par SPIP

C’était en germe et déjà évoqué dans l’annonce du Portage de SPIP en PostGres

SQLite est maintenant livré en standard en PHP, et ça permettrait d’avoir un site « tout fichier » [1] ; pour les petits sites (et les gros sous réserves de performances acceptables) cela offrirait d’importantes facilités dans la maintenance, les sauvegardes, l’hébergement etc ...

C’est maintenant chose faite

SQLite

SQLite est un serveur de base de données qui a la particularité de sauvegarder une base dans un fichier unique. Ce fichier peut être récupéré et envoyé par FTP sur son site. La gestion de SQLite par PHP est présente depuis PHP 5 pour la version 2.x et PHP 5.1 pour la version 3.x.

SQLite est maintenant géré, comme MySQL et PostGreSQL par SPIP. Ce nouveau portage permet de lire ou de créer une base de données au format SQLite 2.x et SQLite 3.x (ces formats ne sont pas compatibles entre eux).

Une sauvegarde simple et rapide de la base de donnée :

Comme évoqué dans l’annonce Portage de SPIP en PostGres, SQLite peut faciliter grandement la gestion des sauvegardes des petits sites, et éventuellement des gros, si les performances de SQLite se révèlent acceptables, puisque la sauvegarde de la base de données consiste à copier simplement un fichier du serveur vers sa sauvegarde.

Une couche d’abstraction pour gérer les différents serveurs SQL

Grâce aux nouvelles fonctions concernant les serveurs de bases de données, SPIP peut se connecter à d’autres serveurs SQL que MySQL. Il faut pour cela que le SPIP connaisse la syntaxe des requêtes à transmettre au serveur SQL. C’est le rôle des fichiers contenus dans le dossier ecrire/req/.

Ces fichiers (mysql.php, pg.php, sqlite_generique.php) assurent la traduction entre les fonctions génériques d’accès aux bases de données proposées par SPIP ( fonctions sql_*() ), que l’on appelle la « couche d’abstraction », et la syntaxe des requêtes du serveur demandé.

Un premier portage pour PostGreSQL

Le premier portage a concerné PostGreSQL (historiquement un des premiers serveurs SQL, et un des rares a être entièrement sous licence GPL), ce qui a permis de définir l’indispensable signature des fonctions d’abstractions sql_*() permettant de jongler entre les différentes versions de SQL. Ces fonctions étant stabilisées, d’autres portages peuvent se réaliser.

Le cas de SQLite

Ajouter le portage de SQLite (versions 2.x et 3.x) a donc consisté à créer les fichiers sqlite2.php et sqlite3.php dans le dossier ecrire/req/, qui pour leur cas, appellent un fichier générique qui gère les versions 2.x et 3.x de SQLite : sqlite_generique.php

Un dernier fichier sqlite_fonctions.php contient un ensemble de fonctions php qui sont automatiquement déclarées au serveur SQLite par SPIP et qui peuvent alors être utilisées dans les requêtes. Cet outil est très important (et c’est un point fort de SQLite) car de base, SQLite ne gère que très peu de fonctions SQL (par exemple, il ne gère pas NOW()).

Déroulement technique de l’installation

Lors de la procédure d’installation du site, SPIP cherche les modules php concernant SQLite et essaie éventuellement de les charger (nécessaire sur Ouvaton par exemple). Il propose alors, en plus de MySQL et PostGreSQL de se connecter à SQLite 2 et/ou SQLite 3 en fonction des extensions php trouvées (’sqlite’ pour SQLite 2, ’pdo’ et ’pdo_sqlite’ pour SQLite3)

SPIP créera automatiquement (s’il le peut) un répertoire défini par la constante _DIR_DB (qui est par défaut _DIR_ETC/bases/, donc le répertoire config/bases/) pour y stocker les bases de données SQLite qu’il suffixe par .sqlite (quelque soit la version).

Déclarer une autre base de donnée

Il est possible de déclarer d’autres bases de données que la base avec laquelle SPIP a été installé, en utilisant un formulaire de l’interface privée accessible par : Configuration > Maintenance du site > Déclarer une nouvelle base.

Lorsqu’une nouvelle base est déclarée, par exemple toto.sqlite, ou une base nommée ’toto’ en MySQL ou PostGreSQL, deux nouvelles choses sont alors possibles :

  1. Toutes les boucles du site peuvent êtres remplacées par le contenu de la base déclarée en ajoutant le paramètre connect dans l’url : http://domaine.tld/?connect=toto
  2. Une boucle du squelette peut afficher le contenu de la base déclarée en utilisant la syntaxe : <BOUCLE_x(toto:TABLE)>#CHAMP</BOUCLE_x>

Différences entre les versions 2.x et 3.x de SQLite

Les versions 2 et 3 de SQLite se distinguent par 3 choses :

  1. les fichiers des bases ne sont pas compatibles entre eux. Cela signifie qu’une base au format sqlite2 ne pourra pas être lue par sqlite3 et vice et versa.
  2. Des syntaxes SQL ne sont pas présente en SQLite2 (mais sont néanmoins gérées par le portage SPIP) :
    • IF NOT EXISTS pour les requetes CREATE TABLE
    • ADD column et RENAME [TO] column pour les requêtes ALTER TABLE table
  3. PHP utilise une classe PDO pour gérer SQLite 3 alors qu’il utilise des fonctions sqlite_*() pour sqlite 2. L’objet PDO/SQLite3 n’a pas de fonction pour compter le nombre de lignes d’une requete SELECT, il a été nécessaire de l’émuler pour le portage.

Dépôts réalisant le portage :

-  http://zone.spip.org/trac/spip-zone...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...
-  http://trac.rezo.net/trac/spip/chan...

Pour en savoir plus sur SQLite

-  http://fr.wikipedia.org/wiki/SQLite
-  ChangeLog SQLite
-  PHP et SQLite
-  PHP et PDO
-  Document de travail pour le portage SQLite

Lecture des bases de données SQLite

Un excellent module pour Thunderbird ou Firefox permet de gérer les bases de données SQLite3 : SQLite Manager

Support de tests

Pour faciliter un peu les tests du portage, un tout petit squelette sqlAdmin.html a été créé (On peut le trouver sur la zone). Il permet de faire des requêtes sur le « serveur » de son choix en agissant sur la variable $connect. Ah, évitez d’avoir des « . » dans les noms de ces fichiers de connexions genre « domaine.tdl.php » car SPIP n’aime pas dans la variable &connect.

Notes

[1NDLR : sans besoin de base réelle, il s’agirait d’une émulation de MySQL ici, d’où les contraintes de performances

Dernière modification de cette page le 17 décembre 2007

Retour en haut de la page

Vos commentaires

  • Le 18 octobre 2011 à 17:40, par rsuinux En réponse à : Portage de SPIP en SQLite

    Bonjour ;
    Je suis en train de changer de serveur et de passer de apache/mysql/php et spip bien sur, à nginx/sqlite/php (et spip).

    Je n’ai eu aucun soucis pour spip_loader, tout c’est bien déroulé pour l’installation du premier site sur le nouveau serveur. Sauf un message (un peu abscond sur les fichiers .htacces).
    Mieux, j’ai fait un dump de mon ancien site (sous mysql) et j’ai tenté de le mettre dans le nouveau site. Résultat : tout marche à merveille !!!
    Moi je dis : bravo aux devellopeurs !
    Je n’ai pas encore testé les modules, mais quand même, chapeau bas !
    C’est tout. Fallait le dire.
    Rémi.

    Répondre à ce message

  • Le 26 août 2011 à 22:42, par ph42 En réponse à : Portage de SPIP en SQLite

    Bonjour,

    Je souhaite installer SPIP sur un NAS (comet lab). Je ne peux qu’utiliser une base sqlite.

    J’ai installé sqlite manager. Après que faut-il faire ?
    où installer la base (dans l’arborescence spip ?)

    Je recherche un maximum d’infos.

    Je vous remercie par avance

    Philippe

    • Le 26 août 2011 à 23:05, par Matthieu Marcillaud En réponse à : Portage de SPIP en SQLite

      La base devrait se créer toute seule dans le répertoire config/bases/ de votre SPIP, pour que que SPIP, à l’installation, puisse écrire dans le répertoire config/ .

    Répondre à ce message

  • Le 22 décembre 2007 à 21:23, par Marc En réponse à : Portage de SPIP en SQLite

    La note de bas de page est inexacte car SQLite n’est pas une émulation de MySQL mais une implémentation native du langage SQL.

    En conséquence SQLite n’est pas moins performant. Au contraire il est probablement plus rapide en raison de sa simplicité ; ce qui semble confirmé par divers comparatifs. En principe il sollicite la machine qui accueille le serveur Web alors que les hébergeurs utilisent généralement une machine séparée pour la base de donnée ce qui rend difficile la comparaison de performances. Tout dépend de la charge des machines respectives dans un environnement mutualisé.

    • Le 23 mai 2010 à 21:15, par ? En réponse à : Portage de SPIP en SQLite

      Bonjour j’ai essayé de nombreux plugins avec pour base Sqlite3 et spip2.1.0 ie :plugin artego
      plugin menu plugin agenda 2.0 seul rainette et ahuntsic fonctionne .
      Avez vous des infos sur le support de ces différents plugins ? leur compatibilité prochaine est elle à l’ordre du jour
      Je trouve dommage de rebasculer sur Mysql
      Merci pour les réponses

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Mailsubscribers

    16 janvier 2013 – 274 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes (...)

  • noiZetier v2

    9 novembre 2012 – 36 commentaires

    Le noiZetier offre une interface d’administration permettant d’insérer au choix des éléments modulaires de squelettes (noisettes) et de les ajouter ainsi à ses squelettes. Compatibilité La version 2 du noizetier fonctionne sous SPIP 3. Elle est (...)

  • cirr : plugin « rédacteur restreint »

    29 octobre 2010 – 60 commentaires

    Ce plugin « cirr : rédacteur restreint » permet d’affecter des rubriques aux rédacteurs et modifie les droits afin qu’un rédacteur restreint (ou un administrateur restreint) voit dans l’espace privé uniquement les rubriques qui lui sont affectées (et leur (...)

  • Un retour d’expérience d’utilisation de Formidable

    26 octobre – commentaires

    Il s’agissait de créer un formulaire d’inscription à un évènement modérer les inscriptions dans le privé publier les inscriptions dans le public Nous avons discuté de cette présentation lors de l’apéro SPIP du 15 février 2016 à la Cantine (...)

  • Métas +

    3 décembre – 14 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

Ça spipe par là