SQLite
Le but de cette page est de rassembler les informations et l'expérience de l'utilisation de MediaWiki avec SQLite.
MediaWiki prend en charge SQLite depuis la 1.17, mais notez-bien qu'il s'agit d'un support de second ordre et que vous pouvez rencontrer des problèmes. MySQL est la base de données utilisée le plus souvent avec MediaWiki. Voir Phabricator pour la liste des problèmes. MediaWiki nécessite SQLite 3.8.0 ou plus récent. Néanmoins, le support pour SQLite par les extensions qui font des modifications dans la base de données, est variable.
SQLite est-il un bon choix pour MediaWiki ?
Il y a deux mises en garde importantes pour l'utilisation de SQLite avec MediaWiki. D'abort tandis que de nombreuses extensions prennent en charge réellement SQLite, certaines extensions populaires ne l'ont jamais fait, même jusqu'à aujourd'hui. En second, SQLite ne reste pas plus qu'un serveur. Au cas où votre wiki pourrait grandir pour avoir de nombreux utilisateurs simultanés et une grande quantité de contenu, il serait préférable d'utiliser un système de base de données qui prend en charge le modèle de réplicat primaire tel que MySQL. La conséquence est que si votre wiki risque de dépendre de ce type d'extension, ou s'il peut avoir besoin d'utiliser un système de base de données primaire répliquée, il vaut mieux utiliser une base de données MySQL pour votre wiki. La décision d'utiliser SQLite, MySQL ou un autre système de base de données doit idéalement être prise AVANT de créer votre wiki, car il est difficile de convertir une base de données SQLite en une base de données MySQL une fois que vous avez commencé à utiliser votre wiki.
À propos de SQLite
SQLite est une bibliothèque de base de données à source ouvert mise dans le domaine public. A l'inverse des systèmes de gestion des bases de données client-serveur , la bibliothèque SQLite est liée à PHP et devient partie intégrante du processus serveur. MediaWiki utilise les fonctionnalités de SQLite au travers de simples appels de fonctions, ce qui réduit la latence pour l'accès à la base de données car les appels de fonctions sont plus efficaces que la communication inter-processus.
Le fait d'utiliser SQLite comme serveur de base de données pour Mediawiki a ses pour et ses contre :
- Pour
- Vous n'avez pas à installer ni à maintenir un serveur de base de données séparé tel que MySQL; cela réduit de manière significative les efforts passés à l'administrer et supprime les points générateurs d'erreurs.
- Le point précédent indique aussi que SQLite est bien plus adapté aux installations MediaWiki portables qui s'exécutent à partir d'une clé USB.
- Sur les hôtes partagés, vous n'êtes pas contraint par les limites artificielles de la base de données .
- La base de données toute entière est rangée comme un fichier unique inter plateformes facilitant ainsi les sauvegardes et la migration.
- Contre
- SQLite n'est pas trop redimmensionnable donc si vous avez un gros wiki populaire, vous devriez utiliser MySQL.
- Bien que SQLite ait son propre moteur de recherche, il n'est pas pris en charge par les solutions plus avancées telles que Lucene.
- Certaines extensions sont connues pour avoir des problèmes lors de la mise à jour de la base de données ou de l'installation avec SQLite : AbuseFilter, Echo, Flow, et LiquidThreads.
Installation de SQLite
Au minimum vous avez besoin de la version 3.8.0+ de SQLite. Aussi, pour pouvoir utiliser la recherche plein texte, SQLite doit être compilé avec le module FTS3 activé (aujourd'hui la plupart des compilations le gèrent séparément). SQLite3 fonctionne en utilisant les fonctions PDO de PHP.
- Pour installer SQLite3 sur un système basé sur Debian ou Ubuntu, utilisez
apt install php-sqlite3
. - Les binaires Windows de php.net sont OK.
- Le module PHP PDO SQLite doit être chargé. Vous devez décommenter la ligne suivante du fichier
php.ini
extension=pdo_sqlite
- Où mettre la base de données SQLite elle-même ? Le chemin par défaut semble être $IP/../data/$dbname.sqlite . Tout ce qui se trouve à l'extérieur de la racine web doit être sécurisé; néanmoins, il est bien de l'avoir à proximité. Ou si le fonctionnement est similaire, vous pouvez placer ce contenu quelque part dans la racine web et vérifier en configurant le serveur web, que l'accès y est interdit.
Installer MediaWiki sur le serveur SQLite
- Si le module SQLite pour PHP est correctement installé, l'installeur de MediaWiki (
/mw-config/index.php
) doit vous présenter une option pour pourvoir utiliser SQLite. - Si vous ne mettez rien dans le champ « répertoire des données de SQLite » , votre $wgSQLiteDataDir restera vide, ce qui correspond au répertoire
data
du parent de la racine du document, néanmoins ce répertoire peut être différent pour les scripts web et les scripts de maintenance exécutés depuis la ligne de commande, il est donc préférable de l'initialiser explicitement.
Moteur de recherche
Version de MediaWiki : | ≥ 1.16 |
Les possibilités de recherche pour le serveur SQLite ont été introduites dans MediaWiki 1.16. Elles nécessitent SQLite avec le module FTS3 compilé, qui figure habituellement dans la plupart des compilations modernes. Si vous venez de faire la mise à jour de SQLite avec une version qui contient FTS3, exécutez le script de mise à jour comme si vous faisiez la mise à jour de MediaWiki. Après que le script de mise à jour a créé la table d'index de recherche, remplissez-la avec rebuildtextindex.php . La même chose se passe si on revient à un environment sans FTS3: la réexécution du script de mise à jour va dégrader la table pour éviter les erreurs SQL.
Sauvegarde
Si votre wiki n'est pas actuellement en ligne, sa base de données peut être sauvegardée simplement en copiant le fichier de base de données.
Sinon, vous devez utiliser le script de maintenance : php maintenance/SqliteMaintenance.php --backup-to <backup file name>
, qui assurera que l'opération est atomique et qu'il n'y a pas d'incohérences.
Si votre base de données n'est pas très grande et n'est pas surchargée, les utilisateurs qui modifient le wiki ne s'apercevront de rien à part d'une faible latence.
Les utilisateurs qui ne font que la lecture ne s'appercevront de rien dans tous les cas.
Résolution des problèmes
Impossible d'accéder à la base de données à partir du terminal
Pour obtenir l'accès aux commandes de la base de données en mode ligne, entrez dans le terminal :
sqlite3 /var/data/database_name.sqlite
en remplaçant /var/data
par le répertoire qui a été défini comme « répertoire de données de SQLite » dans le processus d'installation.
Cherchez par ailleurs $wgSQLiteDataDir dans le fichier LocalSettings.php .
Ceci peut s'avérer fastidieux si vous n'avez pas l'habitude de SQLite et que vous exécutez sqlite3 database_name
- car cela ouvre une base de données complètement différente (en la créant si elle n'existe pas) parce que SQLite interprète l'argument non pas comme un nom de base de données universel, mais comme le nom du fichier contenant la base de données.
Problèmes
Les bogues doivent être signalés sur le suivi des bogues de Wikimedia. Assurez-vous déjà que le problème n'a pas été signalé - vérifiez les dépendances de l'étiquette #sqlite et utilisez la recherche. Si vous ne retrouvez pas votre problème, créez un nouveau rapport de bogue. Dans tous les cas, ajoutez quelques étapes pour que l'on puisse reproduire et suivre facilement votre bogue : mentionnez SQLite dans le champ résumé et rattachez le à l'étiquette SQLite pour la dépendance.
Indications de performance
- Si possible, vérifiez que l'extension PHP APCu est installée et que $wgMainCacheType vaut CACHE_ACCEL. Si aucun cache n'est présent, MediaWiki utilise la base de données comme serveur de cache, ce qui peut amener des blocages lors de l'écriture. Avec Sqlite cela peut réduire les performances de manière significative.
- Vérifiez que votre base de données SQLite est en mode WAL (Write-Ahead Logging – WAL). Ceci peut avoir un impact majeur sur les performances quand les utilisateurs affichent et modifient votre site en même temps. Vous pouvez le faire en utilisant l'outil de commande en ligne sqlite pour ouvrir la base de données et exécuter la commande
PRAGMA journal_mode=wal;
.
Voir aussi
- Paramètres de configuration spécifiques à SQLite :
- sqlite.php - MediaWiki 1.35 et plus ancien
- SqliteMaintenance.php MediaWiki 1.36+