Actor migration
Історично 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 для отримання додаткової інформації.