Wikipedia:Technik/Datenbank/Download

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. Oktober 2005 um 16:41 Uhr durch 193.81.193.3 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Wikipedia kann nicht nur online gelesen werden, es besteht auch die Möglichkeiten sich die Inhalte herunterzuladen.

Download aller Seiten als XML-Dump

Seit Einführung von MediaWiki 1.5 stehen die Seiten als XML-Dump (spezielles Datenbank-Dateiformat) zur Verfügung. Man kann sie unter http://download.wikimedia.org/wikipedia/de herunterladen. Die Seiten selbst stehen in drei Versionen zur Verfügung:

  • pages_full.xml.gz enthält alle Seiten mit allen früheren Versionen,
  • pages_current.xml.gz enthält nur die aktuellen Versionen aller Seiten,
  • pages_public.xml.gz enthält nur die aktuellen Versionen aller eigentlichen Enzyklopädieseiten, d.h. aller Seiten mit Ausnahme von Diskussionsseiten und Benutzerseiten.
Letztere Datei wird für Enzyklopädie-Mirror empfohlen.

Die Daten können mit dem Script "importDump.php" im Unterverzeichnis "maintenance" der MediaWiki-Software importiert werden, z.B. so:

zcat pages_full.xml.gz | php importDump.php

Wer noch Programme hat, die mit den in den folgenden Abschnitten beschriebenen MySQL-Dumps arbeiten, kann pages_current.xml.gz oder pages_public.xml.gz mit Hilfe einer der auf Wikipedia:Download/xml2sql angebotenen Methoden in einen SQL-cur-Dump umwandeln.

Achtung: Der aktuelle Dump 20050909 ist nicht XML-kompatibel, denn er enthält die Zeichenkette "�" und ähnliche, die in dieser Form nicht XML-konform sind. Eine Möglichkeit, dieses Problem zu umgehen, ist den Dump zu filtern (z.B. mit sed) und jedes Vorkommen von "&#" durch "&#" zu ersetzen, bevor die Daten mit einem XML-Parser verarbeitet werden. Auch für importDump.php muss diese Veränderung vorgenommen werden. Sollte des Weiteren importDump.php einen Fehler in Zeile 47 melden, sollte eine andere importDump.php verwendet werden, siehe bugzilla:2979.

Veraltet: Download der vollständigen MySQL-Datenbank

Man kann sich auch die vollständige SQL-Datenbank herunterladen. Zur Darstellung der Seiten benötigt man dann noch die Programme MySQL, Apache, PHP und die MediaWiki-Software. (Für reine Datenbankabfragen genügt der Download von MySQL.) Eine Installationsanleitung findet man auf Wikipedia:MediaWiki-Installationsanleitung.

Die SQL-Dateien werden in unregelmäßigen Abständen aktualisiert und stehen für die deutsche Wikipedia unter http://download.wikimedia.org/wikipedia/de/ zum Download zur Verfügung. In diesem Verzeichnis liegen eine Reihe von komprimierten Dateien unterschiedlicher Größe, die jedoch nicht alle benötigt werden.

Die cur-Tabelle

Der einzige wichtige Bestandteil ist die mit dem Erstellungsdatum versehene Datei mit der cur-Tabelle. Sie enthält die jeweils aktuellen Versionen aller in der deutschen Wikipedia vorhandenen Artikel. Sie ist mit gzip komprimiert und kann mit den üblichen Entpackern dekomprimiert werden.

Unter Linux wird die Datei folgendermaßen in die Datenbank importiert:

gzip -dc 20040610_cur_table.sql.gz | mysql -u ''wikiadmin'' -p''adminpass'' ''wikidb''

Hat man Xampp als Webserver sieht der Befehl so aus:

gzip -dc 20040610_cur_table.sql.gz | /opt/lampp/bin/mysql -u ''wikiadmin'' -p''adminpass'' ''wikidb''

Anstelle von wikiadmin, adminpass und wikidb setzt man den Namen, Passwort und die Datenbank ein, die bei der Installation der MediaWiki-Software angegeben wurden

Die old-Tabelle

Die riesige old-Tabelle enthält die alten Versionen aller Artikel, die in der Wikipedia existieren. Von einer Installation muss aufgrund der Größe der Datei abgeraten werden, wenn man nicht zufälligerweise einen AMD64-Prozessor im 64-Bit-Modus (um Dateigrößen-Problemen aus dem Weg zu gehen) mit mindestens 2 GB RAM besitzt. Wenn man sich davon nicht abschrecken lässt, wird die Datei folgendermaßen importiert:

gzip -dc old_table.sql.gz | mysql -u ''wikiadmin'' -p''adminpass'' ''wikidb''

Da die Datei sehr groß ist, wird sie von unserem Webserver entweder ausschließlich oder zusätzlich stückweise angeboten (xaa, xab, xac etc.). Diese Teile muss man mit dem Befehl cat zu einer Datei zusammenfügen, so dass sie importiert werden kann:

cat xaa xab xac > old_table.sql.gz

oder unter Windows:

copy /b xaa + xab + xac old_table_de.sql.gz

Andere Datenbank-Tabellen

Linktabellen

Die Linktabellen halten fest, welcher Artikel auf welchen linkt usw. Zum reinen Lesen der Artikel benötigt man sie nicht, aber wenn man Funktionen wie "was zeigt hierher" oder die Wartungsseite benutzen möchte, braucht man sie. Man kann sie entweder fertig downloaden oder selbst erzeugen. Die Download-Version funktioniert allerdings erst seit der Software-Version 1.3. Benutzer der alten Software 1.2.x müssen die Tabellen selber bauen. Auf einem 3 GHz-Prozessor dauert dies etwa 30 Minuten.

Der Download-Weg

Man benötigt die aktuellen Versionen der Dateien de_links_table.sql.gz und de_brokenlinks_table.sql.gz. Sie sind mit gzip komprimiert. Der Import funktioniert wie gehabt:

gzip -dc de_links_table.sql.gz | mysql -u ''wikiadmin'' -p''adminpass'' ''wikidb''
gzip -dc de_brokenlinks_table.sql.gz | mysql -u ''wikiadmin'' -p''adminpass'' ''wikidb''

Danach ist man fertig und hat aktuelle Linktabellen im Wiki.

Die Selbstbau-Methode

Hierzu benötigt man das Programm php auf der Textkonsole. Im maintenance-Verzeichnis des entpackten Wikipedia-Tarballs liegen verschiedene rebuild-Skripte. Die alte Software-Version 1.2.x hat ein "schnelles" Rebuildskript, das über

php rebuildlinks.php

gestartet wird. Die Software 1.3 hat im Moment (Stand: Anfang 2004) nur ein langsames Skript, das aber den Vorteil bietet, dass das Wiki während der Arbeit erreichbar bleibt. Man startet es über

php refreshlinks.php

In seiner gegenwärtigen Fassung ist dieses Skript ein riesiges Memory-Leak. Wenn der Rechner wegen Speichermangel swappen muss, ist die ohnehin schon miese Performance des Skripts vollends beim Teufel. Man sollte die Linktabelle daher abschnittsweise erstellen, indem man das Skript zwischendrin abbricht, sich die letzte Position merkt und folgendermaßen wieder startet:

php refreshlinks.php - - 228600

Auf diese Weise wird der unnötig verbratene Speicher wieder freigegeben und die Erstellung der Linktabelle bei Artikel Nr. 228600 fortgesetzt.

Optional: Textindex
Wenn man Volltextsuchen durchführen möchte, muss man einen Textindex erzeugen. Dies geschieht über

php rebuildtextindex.php

Optional: Recentchanges aktualisieren
Wenn man wissen möchte, bis zu welcher Uhrzeit die installierte cur-Tabelle reicht, kann man kurz

php rebuildrecentchanges.php

sagen, um die Seite "Letzte Änderungen" zu aktualisieren.

Optional: Artikelanzahl neu berechnen
Die Anzahl der im Wiki vorhandenen Artikel kann relativ schnell über das SQL-Skript recount.sql neu berechnet werden:

mysql -u ''wikiadmin'' -p''adminpass'' ''wikidb'' < recount.sql

Alternativ kann man sich auch eine völlig verfälschte Statistik über die Datei de_site_stats_table.sql.gz einspielen.

Optional: Kleinkram
Es gibt noch drei Tabellendateien auf dem Downloadserver, die in den meisten Fällen unwichtig sind, vielleicht aber trotzdem interessant sind: de_categorylinks_table.sql.gz, de_image_table.sql.gz und de_oldimage_table.sql.gz, die die Kategorielinks der Software ab Version 1.3 enthalten bzw. den aktuellen und alten Inhalt der Bildseiten. Wenn man sie unbedingt braucht, kann man sie wie die Linktabellen importieren.

Download der Bilder

Die hochgeladenen Dateien finden sich unter http://download.wikimedia.org/wikipedia/de/ gepackt in einer Datei „upload.tar“, die immer auf die neueste vollständige Downloaddatei verweist. Diese wird unregelmäßig aktualisiert. Die Datei ist erwartungsgemäß sehr groß (ca. 25 GB).

SQL-Abfragen auf der Wikipedia-Datenbank durchführen

Anmerkung: Falls es nur darum geht, "so nebenbei" eine SQL-Abfrage durchzuführen, so können sie auch auf folgenden Server durchgeführt werden:

Ein Wort zur Hardware

Die inzwischen recht große Wikipedia-Datenbank stellt durchaus Ansprüche an leistungsfähige Hardware. Zur besseren Einschätzung daher einige Erfahrungen aus der Praxis: Wenn man nur lesen möchte, reicht zwar durchaus ein Rechner der 1-GHz-Klasse mit wenig RAM, anspruchsvollere Aufgaben wie Wartungsseiten, SQL-Abfragen, selbstgebaute Linktabellen oder den Import der old-Tabelle muss man aber mit mehr Hardware erschlagen. Ein Gigabyte RAM oder mehr und ein möglichst schneller Prozessor jenseits von 3 GHz sind sehr sinnvoll, ebenso wie schnelle Festplatten (gerne auch als RAID). Dazu kommt ein "ordentliches" Server-Betriebssystem, Windows 95-basierte Systeme sind also beispielsweise eher ungeeignet. Die Tabellen sollten im MySQL-Server möglichst als InnoDB abgelegt sein, dadurch erkauft man sich ein ganzes Stück Performance auf Kosten des Speicherverbrauchs.

Download einzelner Seiten

Unter Special:Export kann man sich einzelne oder mehrere Seiten in XML herunterladen. Vorlage:Navigationsleiste Wikipedia-Ausgaben