Migracja Wykonawcy

This page is a translated version of the page Actor migration and the translation is 68% complete.
Outdated translations are marked like this.

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.