Migracja Wykonawcy
Dawniej, MediaWiki przechowywało odwołanie do użytkownika wykonującego (np. autora wersji lub przesyłającego plik) jako parę [<id>, <name>]
, przy czym dla edycji użytkowników niezarejestrowanych - [0, <IP address>]
.
Było to marnotrawieniem przestrzeni dyskowej, powodowało problemy z wydajnością na wiki z dużą liczbą edycji oraz utrudniało zmianę nazw użytkowników, a także utrudniało wprowadzanie nowych rodzajów określania autorów (wykonawców czynności), np. T133452.
MediaWiki 1.31 wprowadza koncepcję wykonawcy (actor), co jest zdefiniowane jako osoba wykonująca akcję taką jak edycja lub te, które są pokazywane w rejestrze. Może to być zarejestrowani użytkownik lub anonimowy.
Aby wykorzystać nowy sposób zapisu, ustalono proces migracji, który spowoduje zastąpienie pól w bazie danych takich jak revision.rev_user
i revision.rev_user_text
polami typu revision.rev_actor
.
Z powodu dużego rozmiaru tabeli revision
anglojęzycznej Wikipedii, która musi zostać całkiem zmigrowana zanim zmiany zostaną uporządkowane, migracja ta będzie przeprowadzana etapami, przez kilka wydań MediaWiki.
Spodziewamy się ukończyć ją w wersji MediaWiki 1.34.
Ta migracja polega na stworzeniu wpisów w tabeli actor dla każdej z rozdzielonych par *_user
/ *_user_text
, a następnie zastąpienie tych par we właściwej tabeli (np. z wersjami) jednym odwołaniem do identyfikatora wpisu w tabeli actor.
Oto kolumny do przekonwertowania:
Tabela | Stare kolumny | Nowe kolumny |
---|---|---|
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 a costly ALTER TABLE on the extremely huge revision
tables of large Wikipedia wikis, rev_user
and rev_user_text
were initially copied to the revision_actor_temp table and from there back to revision
.
Tabela revision_actor_temp
zostanie później usunięta.
Jeżeli posiadasz własną instalację wiki, prawdopodobnie nie będziesz musiał podejmować żadnych działań, migracja rozpocznie się automatycznie po uruchomieniu update.php
.
Aby zapanować nad uruchomieniem migracji, zobacz ustawienie $wgActorTableSchemaMigrationStage oraz skrypt migrateActors.php .
Jeżeli jesteś twórcą rozszerzeń i twoje rozszerzenie wykonuje bezpośrednie zapytania do bazy danych korzystające ze wspomnianych pól, będziesz musiał zaktualizować swoje zapytania (a najlepiej skorzystać z metod getQueryInfo()
, na przykład Revision::getQueryInfo()
zamiast ręcznie tworzyć zapytania).
Podczas okresu migracji możesz też skorzystać z klasy ActorMigration
aby pobierać informacje o strukturze i polach, dostosowaną do dowolnego ustawienia $wgActorTableSchemaMigrationStage
.
Jeżeli rozwijasz narzędzia dostępne na Toolforge , mogą pojawić się implikacje wydajności, nawet jeżeli nie korzystasz bezpośrednio z pól, które ta zmiana dotyczy. Zobacz wikitech:News/Actor storage changes on the Wiki Replicas po więcej informacji.