Migration des données d'une base SQL Server vers Drupal

5 min
Portrait de morad.bellot_306
Par Morad BELLOT

La contrainte de migration des données est à prendre en compte dès la phase de conception d'un projet afin de valider en amont la reprise des données sur la nouvelle plateforme.

Nous allons partager par le biais de cet article l'expérience de l'Agence VOID lors de la refonte du portail Jamiati.ma et la migration de ses données.

 

Le contexte 

Les données étaient stockées dans une base de données relationnelles SQL Server contenant des informations et des fiches relatives à l’enseignement supérieur au Maroc (formations, écoles, universités, bibliothèques, cours en ligne …).

La première solution aurait été de reprendre le même schéma relationnel source et de le reproduire sur la base de données Drupal. Cette solution a été vite écartée même si elle reste plus simple en termes de migration de données puisqu'elle ne se repose pas sur le socle de Drupal. Il aurait fallu tout redévelopper : la gestion de contenu, le workflow, les révisions, l'indexation…

 

La Solution

Il a été décidé d’utiliser les objets standards Drupal pour pouvoir bénéficier des fonctionnalités éprouvées du CMS et celles des modules communautaires.

Schéma migration base de données vers Drupal

La base de données source contient :

  • Tables de paramétrage (semi-statiques) : villes, pays, diplômes, domaines …
  • Tables des fiches (dynamiques) : universités, écoles, formations …
  • Relations : université appartient à une ville et possède plusieurs départements…

Sur la base des données existantes ainsi que les nouvelles exigences fonctionnelles et ergonomiques, l’architecture cible de contenu sur Drupal est la suivante : 

  • Taxonomie pour stocker les données des tables de paramétrage ;
  • Type de contenu pour le contenu dynamique principal ;
  • Field collection pour les tables de compositions has-many ;
  • Entity reference pour les relations entre objets de contenu.   

Le module communautaire Migrate a servi comme support pour la réalisation de la migration de données.  Ce module offre des fonctionnalités poussées et une API de haut niveau pour la migration de contenu sur les plateformes Drupal.

Les tâches de migration sont développées en mode code via des classes de migration qui contiennent :

  • La requête d’extraction des données sources ;
  • Le mapping entre les champs source et destination ;
  • Les règles de transformation de données.

Des exemples de code des classes de migration sont disponibles sur le module. Vous trouverez également une documentation complète et étude de cas sur la page web du module.

Les tâches de migration remontent automatiquement sur la console d’administration :
Capture d'écran tache de Drupal Migrate

Via cette interface, nous pouvons lancer les tâches de migration ou roll-back. Nous pouvons également consulter les logs et les statistiques des migrations (monitoring). Il est également possible d’effectuer ces actions de commande en ligne avec Drush (Drupal SHELL).

Le module gère nativement la mise à jour et la synchronisation :  si une ligne est déjà migrée, Migrate ne va pas créer un nouvel objet, il va mettre à jour l’existant. En effet, Migrate garde une trace entre l’identifiant de la ligne source et l’objet destination.  Cette traçabilité source ou destination, permet à Migrate de gérer le rollback.

Le module Migrate offre diverses fonctionnalités et possibilités d’intégration de données sur Drupal. Il a été d’ailleurs intégré au Core de la version 8 de Drupal afin de répondre aux nouvelles exigences de connexion et d’intégration avec d’autres systèmes. Cela permettra de fournir une meilleure expérience digitale avec un contenu cross-channel.

Portrait de morad.bellot_306
Morad BELLOT
Directeur de Projet Technique chez VOID
De formation ingénieur informatique UTC avec une expérience de 13 ans acquise à travers la mise en œuvre de plusieurs SI métiers et plateformes digitales, je bénéficie d'une maîtrise technique éprouvée sur différentes technologies et en gestion de projet pour assurer des missions d'assistance maîtrise d'ouvrage et conduite de projets dans une approche orientée-résultats.
Vous avez aimé cette page ? Partagez la !
Haut
Appuyez sur Entrée pour rechercher ou sur ÉCHAP pour fermer