Réplication

De Wikiscan
Aller à : navigation, rechercher

La réplication est la base de données utilisée par Wikiscan pour calculer les statistiques, c'est un miroir de Wikipédia en français mis-à-jour en permanence à partir des modifications récentes. Elle a été réalisé d'une manière complètement indépendante, sans accès particulier aux serveurs de la fondation Wikimedia, elle peut théoriquement fonctionner sur n'importe quel site utilisant un mediawiki récent. Elle ne réplique que certaines données, principalement les informations sur les éditions, les journaux d'opérations et le texte des pages. Il peut se produire certains décalages, en cas de bug ou de changement de l'API, car les données doivent être reconstruites à partir des informations disponibles par l'API, ce qui est parfois compliqué.

Historique

Début 2011, la base de données a d'abord été importée à partir d'un dump publié par la fondation. Le plus important pour la calcul des statistiques est la table revision qui contient toutes les informations sur les éditions (la date, la page, l'utilisateur, le résumé de modification...), cette opération est assez longue car la table contenait environ 60 millions d'enregistrements et MySql doit reconstruire tous les indexes. Le plus long a été d'importer l'ensemble des textes de toutes les modifications, chaque page étant entièrement sauvegardée à chaque modification.

Ensuite il a fallu rattraper tout ce qui avait été fait depuis le dump, à partir des modifications récentes qui restent accessibles pendant un mois. Une fois le retard rattrapé, un daemon tourne en permanence pour suivre les nouvelles modifications.

Au début la réplication générait de nombreux décalages, certaines modifications n'étaient pas répliqués. Par exemple l'API donne peu d'informations lors d'un renommage, l'entrée dans le journal est facile à répliquer, par contre il y a deux éditions qui sont automatiquement créées sur chaque historique, et parfois des éditions disparaissent car la page de destination est écrasée. Il y a aussi très peu d'informations lors d'une suppression/restauration sélective de certaines versions, c'était à l'époque la méthode utilisée pour masquer les violations de droits d'auteur, en fait un bricolage pour pallier un manque de mediawiki qui n'est plus nécessaire depuis l'ajout de rev_delete.

La première solution envisagée pour corriger ces petites erreurs a été d'utiliser les nouveaux dumps pour les réparer. En fait cette solution corrigeait certaines choses mais créait d'autres problèmes, puisque le dump met plusieurs jours à être construit, ses données n'étaient déjà plus à jour. Du coup, des pages supprimées étaient recréées, des utilisateurs renommés retrouvaient leur ancien nom etc. Cette solution a donc été abandonnée, l'autre méthode a été d'améliorer la réplication et d'envoyer les cas où les informations manquantes ne permettent pas de tout répliquer à un programme spécial qui répare les articles concernés, en comparant l'historique de Wikipédia et celui de la réplication.

Wikiscan a ouvert lorsque la réplication est devenue plus stable, il reste toujours quelques erreurs, principalement sur les renommages mais globalement cela reste minime sur le volume total des modifications. Avec la publication des statistiques par utilisateurs, des tests ont été ajoutés pour comparer les éditions de la réplication avec celles de Wikipédia. Ces tests sont exécutés tous les jours sur des utilisateurs tirés au hasard, à chaque fois qu'une erreur est détectée, l'article concerné est envoyé vers le script réparateur. La plupart des erreurs sont dues à des modifications non supprimées qui ont été écrasées lors d'un renommage et qui n'ont pas été effacées sur la réplication. Prochainement, il est prévu de faire une vérification complète sur toutes les éditions à partir de la base de donnée du Toolserver.

Repli tests.png

Quelques chiffres

Au 1 avril 2011, la base de donnée contient environ :

  • 70 millions de révisions, occupant 26 Go (sans les textes)
  • 34 millions d'entrées dans le journal, occupant 13 Go
  • 5 millions de pages (juste le titre et quelques informations), occupant 1 Go
  • 1,3 To de textes pour l'ensemble des révisions.