Migration des données d'une base SQL Server vers Drupal
Migration des données d'une base SQL Server vers Drupal
2023-04-19
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.
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 surDrupal 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 :
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.