Manual:SQLite/de



Der Zweck dieser Seite ist es, Informationen und Erfahrungen über das Ausführen von MediaWiki auf SQLite zu sammeln.

MediaWiki unterstützt SQLite seit 1.17. Beachte jedoch, dass es sich dabei um eine zweitklassige Unterstützung handelt und du wahrscheinlich auf einige Bugs stoßen wirst. Die Datenbank, die am häufigsten mit MediaWiki verwendet wird, ist. Siehe Phabricator für eine Liste der Probleme. MediaWiki benötigt SQLite oder höher. Allerdings variiert die Unterstützung durch Erweiterungen, die Datenbank-Änderungen vornehmen.



Ist SQLite eine gute Wahl für MediaWiki?
Es existieren zwei wichtige Vorbehalte gegen die Verwendung von SQLite für 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
Es wird mindestens die SQLite-Version + 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. Wenn du dein Problem nicht finden kannst, erstelle eine neue Ausgabe. In jedem Fall solltest du einige Maßnahmen ergreifen, damit dein Fehler leicht zu finden und zu verfolgen ist: Erwähne SQLite in der Zusammenfassung und versehe ihn mit dem Projekt-Tag SQLite.

Performance Tips

 * If possible, ensure you have the APCu php extension installed and 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 (Write-Ahead Logging – WAL). 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.



Siehe auch

 * SQLite-spezifische Konfigurationseinstellungen
 * - MediaWiki 1.35 und früher
 * 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