Migração de autor
Historicamente, MediaWiki armazenou referências para usuários (como o autor de uma revisão ou uma imagem) assim como o par [<id>, <name>]
, com [0, <IP address>]
para edições anônimas.
Isto foi um desperdício de espaço de armazenamento, causou problemas de performance em wikis com um grande número de revisões, e tornou muito difícil renomear usuários ou introduzir novos tipos de autores tais como T133452.
MediaWiki 1.31 introduz o conceito de "autores" (alguém que faz uma ação, como uma edição ou um evento de log; atualmente tanto um usuário registrado quanto um anônimo) e o processo de migração em direção a um novo esquema de banco de dados, com campos como revision.rev_user
e revision.rev_user_text
substituídos por campos como revision.rev_actor
.
Devido ao tamanho grande da tabela revision
da Wikipedia em Inglês, que também precisa ser completamente migrada antes que as alterações possam ser limpas/colocadas em ordem, a migração está sendo feita graduamente, em várias versões do MediaWiki.
Espera-se que acabe em MediaWiki 1.39.
A migração irá criar uma registro da tabela actor para cada par distinto de *_user
/ *_user_text
, e substituir esses pares com uma referência para a coluna de ID do autor.
As seguintes colunas estão sendo migradas:
Tabela | Colunas antigas | Colunas novas |
---|---|---|
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 |
Para evitar fazer um custoso ALTER TABLE em tabelas revision
extremamente grandes em grandes wikis da Wikipedia, rev_user
e rev_user_text
são inicialmente copiados para a tabela revision_actor_temp e de lá de volta para revision
.
Esta tabela revision_actor_temp
será descartada posteriormente.
Se você é dono de uma wiki, você provavelmente não precisaria fazer nada, a migração acontecerá automaticamente quando você executar update.php
.
Se você quer controlar quando a migração acontece, veja o script de manutenção $wgActorTableSchemaMigrationStage e migrateActors.php .
Se você é um desenvolvedor de extensão e sua extensão faz acesso direto DB para alguns dos campos afetados, você precisará atualizar suas queries (e idealmente usar os métodos getQueryInfo()
, tais como Revision::getQueryInfo()
, ao invés de construir manualmente sua query).
Durante o período de migração, você também pode usar a classe ActorMigration
para obter o esquema/informação do campo que respeita qualquer configuração $wgActorTableSchemaMigrationStage
.
Se você é um desenvolvedor de ferramenta usando Toolforge , pode haver algumas implicações de performance, mesmo que você não use algum dos campos afetados diretamente. Veja wikitech:Notícias/Mudança de armazenamento de atores no Wiki Replicas para informações adicionais.