Jump to content

Actor-Migration

From mediawiki.org
This page is a translated version of the page Actor migration and the translation is 100% complete.

In der Vergangenheit hat MediaWiki Verweise auf Benutzer (beispielsweise den Autor einer Revision oder eines Bildes) als [<id>, <name>]-Paar, mit [0, <IP address>] für anonyme Bearbeitungen gespeichert. Dies verschwendete Speicherplatz, verursachte Leistungseinbußen bei Wikis mit einer großen Anzahl von Überarbeitungen und machte es sehr schwierig, Benutzer umzubenennen oder neue Arten von Autoren wie T133452 einzuführen. MediaWiki 1.31 führt das Konzept von "Akteuren" (jemand, der eine Aktion ausführt, z. B. eine Bearbeitung oder ein Ereignisprotokoll; derzeit entweder ein registrierter oder ein anonymer Benutzer) und einen Migrationsprozess in Richtung eines neuen Datenbankschemas mit Feldern ein wie revision.rev_user und revision.rev_user_text durch Felder wie revision.rev_actor ersetzt. Aufgrund der enormen Größe der englischen Wikipedia-revision-Tabelle, die vollständig migriert werden musste, bevor die Änderungen bereinigt werden können, erfolgte die Migration schrittweise über mehrere MediaWiki-Versionen hinweg. Es wurde mit MediaWiki 1.34 abgeschlossen.

Bei der Migration wurde ein actor -Tabellen-Datensatz für jedes einzelne *_user / *_user_text-Paar erstellt und diese Paare durch einen Verweis auf die Ereigniszeile-ID ersetzt. Die folgenden Spalten wurden migriert:

Tabellen Alte Spalten Neue Spalten
revision rev_user, rev_user_text rev_actor
archive ar_user, ar_user_text ar_actor
ipblocks ipb_by, ipb_by_text ipb_by_actor
image img_user, img_user_text img_actor
oldimage oi_user, oi_user_text oi_actor
filearchive fa_user, fa_user_text fa_actor
recentchanges rc_user, rc_user_text rc_actor
logging log_user, log_user_text log_actor

Um ein aufwendiges ALTER TABLE in den extrem großen revision-Tabellen großer Wikipedia-Wikis zu vermeiden, wurden rev_user und rev_user_text zunächst in die revision_actor_temp -Tabelle und von dort zurück nach revision kopiert. Die revision_actor_temp-Tabelle wurd danach gelöscht.

Wenn Sie ein Wiki-Betreiber sind, müssen Sie wahrscheinlich nichts tun. Die Migration wird automatisch durchgeführt, wenn Sie update.php ausführen. Wenn Sie steuern möchten, wann die Migration stattfindet, lesen Sie das Skript für $wgActorTableSchemaMigrationStage und migrateActors.php .

Wenn Sie ein Entwickler für Erweiterungen sind und Ihre Erweiterung direkten Zugriff zur Datenbank auf einige der betroffenen Felder ausführt, müssen Sie Ihre Abfragen aktualisieren (und im Idealfall die getQueryInfo()-Methoden wie Revision::getQueryInfo() verwenden, anstatt Ihre Abfrage manuell zu erstellen). Während des Migrationszeitraums können Sie auch die Klasse ActorMigration verwenden, um Schema- / Feldinformationen abzurufen, die alle $wgActorTableSchemaMigrationStage-Einstellungen berücksichtigen.

Wenn Sie ein Tool-Entwickler sind, der Toolforge verwendet, kann dies Auswirkungen auf die Leistung haben, auch wenn Sie keines der betroffenen Felder direkt verwenden. Weitere Informationen finden Sie unter wikitech: News / Actor storage changes on the Wiki Replicas.