Manual:SQLite/de

Die SQLite-Unterstützung von MediaWiki ist ab Version 1.17 für Produktiv-Installationen nutzbar. Seit MediaWiki-Version 1.13 ist die SQLite-Unterstützung Teil der Code-Basis. Allerdings variiert die Unterstützung durch Erweiterungen, die Datenbank-Änderungen vornehmen. Weiter unten folgen einige Bemerkungen zur Installation der SQLite-Bibliothek in der PHP-Umgebung.

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
* Bei MediaWiki-Versionen vor 1.16 müssen die Felder "DB username" und "DB password" ausgefüllt werden, obwohl SQLite diese nicht benötigt.
 * Wenn das SQLite-Modul für PHP korrekt installiert ist, sollte der MediaWiki-Installer ($index) 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.

Unable to access the database on the terminal
To get command-line access to the database, type on the terminal:

sqlite3 /var/data/database_name.sqlite

replacing  with the directory that was set as the "SQLite data directory" during the installation process. Alternatively, look for inside.

This can be tricky if you are not experienced about SQLite and run  - because this will open a completely different database (creating it if it doesn't exist) since SQLite interprets the argument not as a system-wide database name, but instead as the file name that contains the db.

Problems
Bugs should be reported to Wikimedia's bug tracker. First check if your problem was already reported - check the dependencies of tag and use search. If you can't find your problem, create a new issue. If the problem is directly related to SQLite backend, report it under MediaWiki → Database component. Otherwise (if the problem is related to one very specific aspect, of the software or an extension), select an appropriate product and component. In any case please take some steps to make your bug easy to find and track: mention SQLite in its summary field and make it depend on tag sqlite.