Jump to content

操作者の移行

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

歴史的に、MediaWiki は利用者 (版や画像の作者など) への参照を [<ID>, <名前>] の対 (匿名利用者の場合は [0, <IP アドレス>]) で格納してきました。 これは格納容量の無駄であり、版が大量にあるウィキでパフォーマンスの問題点を生じたため、利用者名の変更や作者の新しい種類 (T133452 など) の導入が非常に困難になりました。 MediaWiki 1.31 では actors (操作者: 編集、記録項目のような操作をする人。現在は登録利用者または匿名利用者) の概念と、新しいデータベース スキーマへの移行過程を導入します。この移行では revision.rev_userrevision.rev_user_text のようなフィールドが revision.rev_actor に差し替えられます。 英語版ウィキペディアの revision テーブルのサイズが膨大であり、変更を完了させるには移行を完全に終わらせる必要があるため、この移行は MediaWiki の複数回のリリースに渡って徐々に実行されました。 MediaWiki 1.39 で完了しました。

移行では個別の *_user / *_user_text の対ごとに actor テーブル レコードが作成され、それらの対は actor の行 ID への参照に差し替えられました。 以下のカラムが移行されました:

テーブル 旧カラム 新カラム
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

大規模なウィキペディア ウィキ群の非常に巨大な revision テーブルで、コストが大きい ALTER TABLE を実行するのを回避するため、まず rev_user および rev_user_textrevision_actor_temp テーブルにコピーしてから revision テーブルに書き戻しました。 その後、revision_actor_temp テーブルは削除されました。

あなたがウィキ所有者である場合は、おそらく何もする必要がありません。update.php を実行した際に、この移行が自動的に実行されます。 移行がいつ実行されるかを制御したい場合は、$wgActorTableSchemaMigrationStage および migrateActors.php メンテナンス スクリプトを参照してください。

あなたが拡張機能の開発者であり、移行が影響するデータベース フィールドに拡張機能が直接アクセスする場合は、クエリを更新する必要があります (クエリを手動で構築する代わりに、getQueryInfo() メソッド (例: Revision::getQueryInfo()) を使用するのが理想的です)。 移行期間中は、あらゆる $wgActorTableSchemaMigrationStage 設定を考慮したスキーマ/フィールド情報を取得できる ActorMigration を使用することもできます。

あなたが Toolforge を使用している開発者である場合は、移行が影響するフィールドを直接使用しない場合でも、パフォーマンスに影響を及ぼすかもしれません。 追加的な情報は wikitech:News/Actor storage changes on the Wiki Replicas を参照してください。