Handleiding:SQLite
Het doel van deze pagina is het verzamelen van informatie en ervaringen over het gebruik van SQLite voor het gebruik van MediaWiki.
MediaWiki ondersteunt SQLite sinds 1.17, dit is echter een wat beperkte ondersteuning, u kunt dus wat problemen ontdekken. Meestal wordt de database MySQL gebruikt voor de MediaWiki. Zie Phabricator voor een lijst met opmerkingen. MediaWiki vereist minimaal SQLite versie 3.8.0. Ondersteuning voor SQLite door uitbreidingstoepassingen die de database veranderen varieert echter.
Is SQLite een goede keus voor de MediaWiki?
Er zijn twee belangrijke zaken om op te letten als u SQLite voor MediaWiki gebruikt. Ten eerste, hoewel vele extensies SQLite ondersteunen, zijn sommige extensies daar nog niet klaar voor. Ten tweede, SQLite bestrijkt maar één server. In het geval uw wiki groeit naar meer gebruikers tegelijkertijd en een grote hoeveelheid inhoud, is het beter voor een databasesysteem als MySQL te kiezen dat het primary-replicamodel ondersteunt. Daardoor kan, als uw wiki afhankelijk is van het gebruik van deze extensies of als een primary-replica database systeem moet gebruiken, wel het beste zijn om een MySQL-database te gebruiken voor uw wiki. De beslissing om SQLite, MySQL of een ander databasesysteem te gebruiken neemt men idealiter voordat men de wiki aanmaakt, omdat het moeilijk is van SQLite naar MySQL te converteren wanneer de wiki al draait.
Over SQLite
SQLite is een open-source databasebibliotheek vrijgegeven in het publiek domein. In tegenstelling tot client-server databasemanagementsystemen is die ingebed in PHP en maakt zodoende integraal deel uit van het serverproces. MediaWiki gebruikt SQLite's functionaliteit via eenvoudige functie aanroepen, die de wachttijd beperken bij de database toegang omdat functie aanroepen efficiënter zijn dan communicatie tussen processen.
SQLite als database-backend voor MediaWiki gebruiken heeft zijn eigen voor- en nadelen:
- Voordelen
- Het is niet noodzakelijk een zelfstandige database-server als MySQL te installeren en onderhouden; dit vermindert inspanningen voor en kansen op fouten bij beheer.
- Voorgaande betekent ook dat SQLite geschikter is voor een MediaWiki-installatie vanaf een USB-stick.
- U bent niet beperkt door kunstmatige databasebeperkingen opgelegd door gedeelde hosts.
- De complete database is opgeslagen als een enkel crosplatformbestand, vereenvoudigend backup en migratie.
- Nadelen
- SQLite is niet zo schaalbaar, als u een grote en populaire wiki heeft, gebruik dan liever MySQL.
- Hoewel SQLite zijn eigen zoekmachine heeft wordt het niet ondersteund door geavanceerde oplossingen als Lucene.
- Sommige extensies blijken problemen met databasewijzigingen of installatie te hebben met SQLite: AbuseFilter, Echo, Flow en LiquidThreads.
SQLite installatie
De versie van SQLite moet minstens 3.8.0+ zijn. Om ook te kunnen zoeken op 'full text' moet SQLite gecompileerd zijn met de module FTS3 ingeschakeld (dat is meestal wel zo). SQLite3 werkt via PHP's PDO functies.
- Om SQLite3 te installeren op een op Debian/Ubuntu gebaseerd systeem, gebruik
apt install php-sqlite3
. - Windows binaries van php.net zijn goed.
- De PHP-module PDO SQLite moet geladen zijn. Maak in uw
php.ini
de volgende regel actief (die staat mogelijk op commentaar)extension=pdo_sqlite
- Waar de SQLite database te plaatsen? Het pad schijnt standaard te zijn $IP/../data/$dbname.sqlite . Alles buiten de webroot zou veilig moeten zijn; het is het goed om het daar in de buurt te plaatsen. Als u het toch in de webroot wil plaatsen zorg dan dat configuratie van de webserver onbedoelde toegang er toe voorkomt.
Installeren MediaWiki op SQLite backend
- Als de module SQLite voor PHP goed is geïnstalleerd, zal de MediaWiki installer (
/mw-config/index.php
) u de optie aanbieden om SQLite te gebruiken. - Als u het veld "SQLite data directory" niet invult, zal uw $wgSQLiteDataDir leeg blijven, wat overeenkomt met de map
data
in de map boven map document, dit kan anders zijn bij webscripts en onderhoudsscripts uitgevoerd op de commandoregel, dus is het beter om het veld hier wel in te vullen.
Zoekmachine
MediaWiki-versie: | ≥ 1.16 |
De zoekmogelijkheden voor de SQLite backend zijn toegevoegd in MediaWiki 1.16. Zij verplichten dat SQLite met de FTS3 module is gecompileerd, dat is gewoonlijk wel zo. Als u recent de ondersteuning van SQLite heeft bijgewerkt naar een versie die FTS3 bevat, voer de updater uit alsof u MediaWiki aan het upgraden bent. Nadat de updater de zoekindex tabel heeft aangemaakt, vul deze dan met rebuildtextindex.php . Hetzelfde als u gaat naar een omgeving zonder FTS3: het opnieuw uitvoeren van de updater zal de tabel downgraden om SQL-fouten te voorkomen.
Back-up maken
If your wiki is currently offline, its database can be backed up by simply copying the database file.
Otherwise, you should use a maintenance script: php maintenance/SqliteMaintenance.php --backup-to <backup file name>
, which will make sure that operation is atomic and there are no inconsistencies.
If your database is not really huge and server is not under heavy load, users editing the wiki will notice nothing but a short lag.
Users who are just reading will not notice anything in any case.
Probleemoplossing
Geen toegang via de terminal tot de database
Om via de commandoregel toegang te krijgen tot de database, voer in:
sqlite3 /var/data/database_name.sqlite
vervang /var/data
door de map die bij de installatie is opgegeven voor de gegevens van SQLite.
Een alternatief is te kijken naar $wgSQLiteDataDir in LocalSettings.php .
Dit is een risico als u geen ervaring heeft met SQLite en sqlite3 database_name
uitvoert, omdat dit een andere database opent (aanmaakt als die niet bestaat) omdat SQLite het argument niet ziet als een databasenaam op het hele systeem, maar als de bestandsnaam die de database bevat.
Problemen
Fouten kunnen worden gemeld op Wikimedia's bug tracker. Kijk eerst of het probleem al is gemeld, controleer de afhankelijkheden van de tag #sqlite en gebruik het zoeken. Als het een nieuw probleem is, maak dan een issue aan. Zorg in ieder geval dat uw probleem eerder te vinden en te volgen is door de volgende stappen te doen: noem SQLite in het veld met de samenvatting (summary) en geef het de project tag SQLite.
Performance Tips
- Indien mogelijk, controleer of de PHP-extensie APCu is geïnstalleerd en of $wgMainCacheType de waarde CACHE_ACCEL heeft. Zonder cache zal MediaWiki de database als cache gebruiken, dit kan leiden tot verschillen bij het schrijven. Bij Sqlite kan dit zorgen voor een traag werkende wiki.
- Zorg ervoor dat uw SQLite database in de WAL mode (Write-Ahead Logging – WAL) staat. Dit kan grote gevolgen hebben voor de performance als mensen uw website tegelijk bekijken en bewerken. U kunt dit doen door het Sqlite commando-regel hulpmiddel te gebruiken om de database te openen en daarna het commando
PRAGMA journal_mode=wal;
uit te voeren.
Zie ook
- SQLite-specifieke configuratie-instellingen:
- sqlite.php - MediaWiki 1.35 en ouder
- SqliteMaintenance.php MediaWiki 1.36+