Actor-Migration
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.