Migration d'acteur
Historiquement, MediaWiki a stocké des références sur les utilisateurs (tels que l'auteur d'une révision ou une image) sous la forme d'une paire [<identifiant>, <nom>]
, avec [0, <adresse IP>]
pour les modifications anonymes.
Il s’agissait d’un gaspillage d’espace de stockage, qui posait des problèmes de performances sur les wikis avec un grand nombre de révisions et rendait très difficile la modification du nom des utilisateurs ou l’introduction de nouveaux types d’auteurs tels que T133452.
MediaWiki 1.31 introduit le concept d'« acteurs » (quelqu'un qui fait une action, telle qu'un événement d'édition ou de journal; actuellement un utilisateur enregistré ou anonyme), et un processus de migration vers un nouveau schéma de base de données, avec des champs comme revision.rev_user
et revision.rev_user_text
remplacés par des champs comme revision.rev_actor
.
En raison de la taille considérable de la table revision
de Wikipedia anglais, qui a été entièrement migrée avant que les modifications ne puissent être nettoyées, la migration a été effectuée progressivement, sur plusieurs versions de MediaWiki.
Il a terminé dans MediaWiki 1.39.
La migration a créé un enregistrement de table d'actor pour chaque paire distincte *_user
/ *_user_text
, et a remplacé ces paires par une référence à l'identifiant de ligne d'acteur.
Les colonnes suivantes sont en cours de migration :
Table | Vielles colonnes | Nouvelle colonne |
---|---|---|
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 |
Pour éviter de faire une ALTER TABLE coûteuse sur les tables revision
extrêmement volumineuses de grands wikis Wikipedia, rev_user
et rev_user_text
ont été initialement copiés dans la table revision_actor_temp et de là, retour vers revision
.
La table revision_actor_temp
a été supprimée par la suite.
Si vous êtes un propriétaire de wiki, vous n'avez probablement rien à faire, la migration se fera automatiquement lorsque vous exécuterez update.php
.
Si vous souhaitez contrôler le moment où la migration a lieu, voir $wgActorTableSchemaMigrationStage et le script de maintenance migrateActors.php .
233/5000
Si vous êtes un développeur d'extensions et que votre extension dirige directement l'accès à la base de données vers certains des champs affectés, vous devez mettre à jour vos requêtes (et, idéalement, utiliser les méthodes getQueryInfo()
, telles que Revision::getQueryInfo()
, au lieu de construire manuellement votre requête).
Pendant la période de migration, vous pouvez également utiliser la classe ActorMigration
pour obtenir des informations de schéma/champ qui respectent tous les paramètres $wgActorTableSchemaMigrationStage
.
Si vous êtes un développeur d’outils utilisant Toolforge , cela peut avoir des implications sur les performances, même si vous n’utilisez pas directement les champs affectés. Voir wikitech:Nouvelles/Changements de stockage d'acteur sur les répliques de Wiki pour plus d'informations.