Manual:SQLite/de



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. See Phabricator for a list of issues. MediaWiki requires SQLite or later. Allerdings variiert die Unterstützung durch Erweiterungen, die Datenbank-Änderungen vornehmen.

Is SQLite a good choice for MediaWiki?
Obwohl SQLite Produktivqualität aufweist und ein etablierter Support existiert, gibt es zwei wichtige Vorbehalte bei der Nutzung mit MediaWiki. Erstens unterstützen zwar die meisten Erweiterungen SQLite, aber einige populäre tun das bis heute nicht. Zweitens skaliert SQLite nicht über mehrere Server. Für ein großes Wiki mit vielen Inhalten empfiehlt sich ein Datenbanksystem, das ein Primär-Replikationsmodell unterstützt, z.B. MySQL. Wenn also das eingesetzte Wiki solche Erweiterungen nutzt oder ein Datenbanksystem mit Primär-Replikationsmodell benötigt, ist MySQL die bessere Wahl. Die Entscheidung über den Einsatz von SQLite, MySQL oder eines anderen Datenbanksystems sollte idealerweise vor dem erstmaligen Aufsetzen des Wiki erfolgen, da es schwierig ist, von SQLite nach MySQL zu wechseln, wenn die Nutzung des Wiki einmal gestartet ist.



Über SQLite
SQLite ist eine Open-Source Datenbankbibliothek, die mit einer Public Domain Lizenz veröffentlicht wurde. Im Unterschied zu Client-Server Datenbankmanagement-Systemen ist die SQLite-Bibliothek direkt zu PHP verlinkt, und wird dadurch zum direkten Bestandteil des Server-Prozesses MediaWiki nutzt die SQLite-Funktionalität durch einfache Funktionsaufrufe, um die Latenz zu reduzieren, da Funktionsaufrufe effizienter sind als die Interprozesskommunikation.

Die Nutzung von SQLite als Datenbank-Backend für MediaWiki hat ihre Vor- und Nachteile:


 * Vorteile


 * Es muss kein expliziter Datenbankserver installiert und gewartet werden wie bei MySQL. Das senkt den Administrationsaufwand und erspart einige Fehlerquellen.
 * Daraus folgt, dass SQLite für portable Installationen (z.B. auf einem USB-Stick) durchaus passend ist.
 * Es gibt keine Einschränkungen durch Datenbankbegrenzungen auf shared Hosts.
 * Die gesamte Datenbank ist in einer einzelnen Datei gespeichert, die auf allen Plattformen einsetzbar ist: das erleichtert Backups und Plattformwechsel.


 * Nachteile

Bei einigen Erweiterungen ist bekannt, dass sie die Datenbank verändern oder Probleme bei der Installation von SQLite verursachen: AbuseFilter, Echo, Flow, und LiquidThreads.
 * SQLite skaliert nicht besonders gut, bei großen und breit genutzten Wikis sollte besser MySQL eingesetzt werden.
 * SQLite verfügt zwar über eine eigene Suchmaschine, diese wird allerdings nicht von höher entwickelten Lösungen wie Lucene unterstützt.



SQLite Installation
SQLite wird mindestens in der Version 3.8.0 benötigt. Um die Volltextsuche nutzen zu können, muss SQLite mit aktivem FST3-Modul kompiliert sein (das ist heutzutage standardmäßig der Fall). SQLite3 arbeitet über PHP's PDO Funktionen.


 * Unter Debian oder Ubuntu wird SQLite3 mit folgendem Aufruf installiert:
 * Die Windows binaries von php.net sind OK.
 * Das PHP PDO SQLite Modul muss geladen werden. Die folgende Zeile in der  darf nicht auskommentiert sein:
 * Wo sollte die SQLite-Datenbank selbst liegen? Der Standardpfad sollte lauten: $IP/ ..data/$dbname.sqlite. Alles außer dem Wurzelverzeichnis des Webauftritts selbst sollte sicher sein; es ist gut es in der Nähe zu halten. Im Zweifel kann es auch im Wurzelverzeichnis angesiedelt werden, dann muss dem Webserver allerdings in der Konfiguration der Zugriff darauf entzogen werden.
 * Wo sollte die SQLite-Datenbank selbst liegen? Der Standardpfad sollte lauten: $IP/ ..data/$dbname.sqlite. Alles außer dem Wurzelverzeichnis des Webauftritts selbst sollte sicher sein; es ist gut es in der Nähe zu halten. Im Zweifel kann es auch im Wurzelverzeichnis angesiedelt werden, dann muss dem Webserver allerdings in der Konfiguration der Zugriff darauf entzogen werden.



MediaWiki mit SQLite Backend installieren

 * Wenn das SQLite-Modul für PHP korrekt installiert ist, sollte der MediaWiki-Installer eine Option zur Nutzung von SQLite anbieten.
 * Wenn ins "SQLite data directory" nichts eingetragen wird, bleibt leer. Dies korrespondiert mit dem übergeordneten   Verzeichnis im Hauptordner. Da es jedoch auch Voraussetzung für Web-Scripte und Wartungsscripte  ist, und unterschiedlich sein kann, empfiehlt es sich es hier explizit zu benennen.



Suchmaschinen
Suchfunktionalitäten für das SQLite-Backend wurden mit MediaWiki Version 1.16 eingeführt. SQLite wird mit einkompiliertem FTS3-Modul benötigt, was in den meisten modernen Versionen vorhanden ist. Wenn die SQLite-Unterstützung auf eine Version mit FTS3 umgestellt wurde, muss der Updater genauso ausgeführt werden wie bei einem MediaWiki-Upgrade. Nachdem der Updater die Tabelle mit dem Suchindex erstellt hat, muss sie mit veröffentlicht werden. Das gleiche gilt falls auf eine Version ohne FTS3 zurückgestellt werden soll: Der Updater stellt dann die Tabelle um damit SQL-Fehler vermieden werden.



Fehlerbehebung


Kein Datenbankzugriff über Kommandozeile
Um einen Zugang zur Datenbank über die Kommandozeile zu erhalten, ist folgende Befehlszeile einzugeben:

sqlite3 /var/data/database_name.sqlite

Dabei muss  mit dem Verzeichnis ersetzt werden, das während der Installation als "SQLite data directory" festgelegt wurde. Schaue alternativ nach innerhalb von.

Dies kann für unerfahrene Benutzer knifflig sein, denn  öffnet eine andere Datenbank, die es neu anlegt wenn sie nicht existiert. Die Ursache ist, dass SQLite das Argument nicht als systemweiten Datenbanknamen interpretiert, sondern stattdessen als Dateinamen der die Datenbank enthält.

Probleme
Fehler sollten beim Bugtracker von Wikimedia gemeldet werden. Zuvor sollte geprüft werden ob das Problem schon gemeldet wurde, indem die Suchfunktion im Zusammenhang mit genutzt wird. Wird das Problem nicht gefunden, kann ein neues Ticket angelegt werden. In jedem Fall sollte SQLite in der Zusammenfassung erwähnt werden und das entsprechende Tag gesetzt werden, damit der Fehler leichter gefunden und nachverfolgt werden kann.



Siehe auch

 * SQLite-spezifische Konfigurationseinstellungen
 * - MediaWiki 1.35 and before
 * MediaWiki 1.36+
 * MediaWiki 1.36+



Externe Links

 * Migrating MediaWiki from MySQL to SQLite
 * Tool to migrate MediaWiki from SQLite to MySQL
 * SQLite-Hauptseite
 * Wikipedia-Artikel über SQLite