操作者の移行

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Actor migration and the translation is 42% complete.

Other languages:
English • ‎español • ‎polski • ‎हिन्दी • ‎日本語

歴史的に、MediaWiki は利用者 (版や画像の作者など) への参照を [<id>, <name>] の対 (匿名利用者の場合は [0, <IP address>]) で格納してきました。 これは格納容量の無駄であり、版が大量にあるウィキでパフォーマンスの問題点を生じたため、利用者名の変更や作者の新しい種類 (T133452 など) の導入が非常に困難になりました。 MediaWiki 1.31 introduces the concept of actors (someone who makes an action, such as an edit or a log event; currently either a registered user or an anonymous one), and a migration process towards a new database schema, with fields like revision.rev_user and revision.rev_user_text replaced by fields like revision.rev_actor. Due to the huge size of the English Wikipedia revision table, which must be fully migrated before the changes can be cleaned up, the migration is being done gradually, over several MediaWiki releases. MediaWiki 1.34 で完了する予定です。

The migration will create an actor table record for every distinct *_user / *_user_text pair, and replace those pairs with a reference to the actor row 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

To avoid doing a costly ALTER TABLE on the extremely huge revision tables of large Wikipedia wikis, rev_user and rev_user_text are initially copied to the revision_actor_temp table and from there back to revision. The revision_actor_temp table will be dropped afterwards.

If you are a wiki owner, you probably don't need to do anything, the migration will happen automatically when you run update.php. If you want to control when the migration happens, see $wgActorTableSchemaMigrationStage and the migrateActors.php maintenance script.

If you are an extension developer, and your extension does direct DB access to some of the affected fields, you'll need to update your queries (and ideally use the getQueryInfo() methods, such as Revision::getQueryInfo(), instead of manually constructing your query). During the migration period, you can also use the ActorMigration class to get schema/field information that respects any $wgActorTableSchemaMigrationStage settings.

If you are a tool developer using Toolforge , there might be performance implications, even if you don't use any of the affected fields directly. See wikitech:News/Actor storage changes on the Wiki Replicas for additional information.