SQLite

The purpose of this page is to collect information and experiences about running MediaWiki on SQLite.
MediaWiki supports SQLite since 1.17, but please note that this is second-class support, and you may likely run into some bugs. The database most commonly used with MediaWiki is MySQL . See Phabricator for a list of issues. MediaWiki requires SQLite 3.8.0 or later. 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 à 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 : 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 de PHP est correctement installé, l'installeur de MediaWiki (
/mw-config/index.php
) devrait vous présenter une option pour 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 trouvez pas votre problème, créez un nouveau rappport 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
- If possible, ensure you have the APCu php extension installed and $wgMainCacheType set to CACHE_ACCEL. If no cache is present, MediaWiki will use the database as a cache backend, which can lead to write contention. On Sqlite this can significantly slow down your wiki.
- Make sure your SQLite database is in WAL mode. This can have a major impact on performance when people are viewing and editing your site at the same time. You can do this by using the sqlite command line tool to open the DB, and run the command
PRAGMA journal_mode=wal;
.
Voir aussi
- Paramètres de configuration spécifiques à SQLite :
- sqlite.php - MediaWiki 1.35 and before
- SqliteMaintenance.php MediaWiki 1.36+