Actor migration

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

Історично MediaWiki зберігала посилання на користувачів (наприклад, автора редакції або зображення) у вигляді пари [<id>, <name>] з [0, <IP address>] для анонімних змін. Це було марною тратою місця для зберігання, викликало проблеми з продуктивністю на вікі з величезною кількістю редакцій і ускладнювало перейменування користувачів або введення нових типів авторів, таких як T133452. MediaWiki 1.31 вводить концепцію акторів (хтось, хто здійснює дію, наприклад, редагування або подію журналу; наразі або зареєстрований користувач, або анонімний), і процес міграції до нової схеми бази даних з полями на кшталт revision.rev_user і revision.rev_user_text замінені полями на кшталт revision.rev_actor. Через величезний розмір таблиці revision англійської Вікіпедії, яку потрібно повністю перенести, перш ніж можна буде очистити зміни, міграція виконується поступово, протягом кількох випусків MediaWiki. Очікується, що він завершиться у MediaWiki 1.34.

Міграція створить запис таблиці actor для кожної окремої пари *_user/*_user_text і замінить ці пари посиланням на ідентифікатор рядка актора. Переміщуються такі стовпці:

Таблиця Старі колони Нова колонка
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

Щоб не витрачати дорогу суму в ALTER TABLE на надзвичайно величезних таблицях з revision у великих вікі Вікіпедії, rev_user і rev_user_text спочатку копіюються в таблицю revision_actor_temp , а звідти назад до revision. Після цього таблиця revision_actor_temp буде вилучена.

Якщо ви є власником вікі, вам, ймовірно, не потрібно нічого робити; міграція відбудеться автоматично, коли ви запустите update.php. Якщо ви хочете контролювати, коли відбувається міграція, перегляньте скрипт обслуговування $wgActorTableSchemaMigrationStage і migrateActors.php .

Якщо ви розробник розширень, і ваше розширення має прямий доступ до БД до деяких полів, на які впливає, вам потрібно буде оновити свої запити (і в ідеалі використовувати методи getQueryInfo(), наприклад Revision::getQueryInfo(), замість того, щоб вручну створювати запит). Під час періоду міграції ви також можете використовувати клас ActorMigration, щоб отримати інформацію про схему/поле, яка відповідає будь-яким налаштуванням $wgActorTableSchemaMigrationStage.

Якщо ви розробник інструменту, який використовує Toolforge , це може мати наслідки для продуктивності, навіть якщо ви не використовуєте жодне із зачеплених полів безпосередньо. Дивіться wikitech:Новини/Зміни сховища актора на Wiki Replicas для отримання додаткової інформації.