Migración de actor
Históricamente, MediaWiki ha almacenado referencias a usuarios (como el autor de una revisión o una imagen) como un [<id>, <name>] par, con [0, <dirección de IP>] para ediciones anónimas.
Esto era un desperdicio en espacio de almacenamiento, causaba problemas de rendimiento en las wikis con muchas revisiones, y dificultaba renombrar a los usuarios o introducir nuevos tipos de autores (como los T133452).
En MediaWiki 1.31 se introduce el concepto de "actores" (alguien que realiza un acción, como editar o registrar un evento; actualmente esta usuario puede estar registrado o ser anónimo). Adicionalmente, un proceso de migración hacia un nuevo modelo para la base de datos,en donde los campos como revision.rev_user
y revision.rev_user_text
son remplazados con revision.rev_actor
.
Debido al enorme tamaño de la tabla de revision
de la Wikipedia en inglés, que debe migrarse por completo antes de que los cambios puedan limpiarse, la migración está siendo realizada gradualmente, en varias liberaciones de MediaWiki.
Se espera que termine en MediaWiki 1.34.
La migración creará una actor tabla de registro para cada distinto *_user
/*_user_text
par, y reemplazará esos pares con una referencia a la fila de actor ID.
Las columnas siguientes están siendo migradas:
Tabla | Viejas Columnas | Columna nueva |
---|---|---|
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 hacer un costoso ALTER TABLE en la extremadamente grandes revision
tablas de las grandes wikis de Wikipedia, rev_user
y rev_user_text
son inicialmente copiadas en la tabla revision_actor_temp y de allí atrás a revision
.
La revision_actor_temp
tabla se dejará caer después.
Si eres dueño de una wiki, probablemente no necesites hacer nada, la migración se realizará automáticamente cuando ejecutes update.php
.
Si quieres controlar cuándo la migración pase, ve $wgActorTableSchemaMigrationStage y el migrateActors.php guión de mantenimiento.
Si eres un desarrollador de extensiones, y tu extensión tiene acceso directo DB a algunos de los campos afectados, necesitarás actualizar tus consultas (e idealmente utilizar los métodos de getQueryInfo()
, como Revision::getQueryInfo()
, en vez de construir tu consulta manualmente).
Durante el periodo de migración, también puedes utilizar la clase ActorMigration
para conseguir esquema/información de campo con respecto a cualquier encuadre $wgActorTableSchemaMigrationStage
.
Si eres un desarrollador de herramientas utilizando Toolforge , podría haber implicaciones de rendimiento, puede haber implicaciones de rendimiento, incluso si no utilizas ninguno de los campos afectados directamente. Consulta wikitech:cambios/de almacenamiento de noticias de actor en las réplicas de Wiki para obtener información adicional.