Migration d'acteur

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

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.