Jump to content

Migracja Wykonawcy

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

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 musiała zostać całkiem zmigrowana zanim zmiany mogły zostać uporządkowane, migracja ta była przeprowadzana etapami, przez kilka wydań MediaWiki. Została ukończona w wersji MediaWiki 1.34.

Ta migracja stworzyła wpisy w tabeli actor dla każdej z rozdzielonych par *_user / *_user_text, a następnie zastąpiła te pary odwołaniem do identyfikatora wpisu w tabeli actor. Oto kolumny, które zostały przekonwertowane:

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

Aby uniknąć kosztownego ALTER TABLE na ogromne tabele revision dużych wiki Wikipedii, początkowo skopiowano rev_user i rev_user_text do tabeli revision_actor_temp , a stamtąd z powrotem do revision. Tabela revision_actor_temp została 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.