Drupagora 2011 - Importer du contenu avec Drupal

3,376 views

Published on

Synchronisation, import, migration de contenu vers Drupal … ces tâches sont souvent source d'inombrables maux de tête. Car si Drupal propose une flexibilité inégalable dans la gestion du contenu, encore faut-il traiter les données des systèmes "legacy" et les faire passer par la moulinette de notre CMS préféré. Ceci peut être relativement simple ou un vrai casse tête si les sources ont des schémas complexes et des données "sales". Il faut alors les récupérer correctement, les "nettoyer", les combiner, les "mapper" aux contenus Drupal et finalement les importer en masse en respectant les limites des ressources serveur.

Plusieurs modules existent, chacun avec son approche, ses avantages et ses inconvénients. User import Framework, Feeds ou encore Migrate : il est essentiel d'en avoir une vision globale pour établir, dès le départ, la stratégie à adopter selon si on veut synchroniser une petite table d'utilisateurs, agréger de multiples flux RSS ou importer des structures complexes de données lors de la refonte complète d'un site existant.

Présentation effectuée à DrupAgora 2011 Paris.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,376
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
40
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Drupagora 2011 - Importer du contenu avec Drupal

  1. 1. Importer du contenu avec Drupal Rodolfo Ripado
  2. 2. Qui suis-je ?Rodolfo Ripado,alias gaspaio• Membre enthousiaste de la communauté Drupal• Modules : Simple Subscription, Custom Tokens, Swftools Plugins(en cours de publication)• Cuisine régulièrement des données à la sauce Drupal• Lead développeur Drupal chez
  3. 3. Un accompagnement open source à 360°Novembre 2011 Présentation dAlter Way
  4. 4. Les imports de contenusQuand avons-nous à faire à des imports ?• Migrations : refontes de sites avec récupération des données• Synchronisations : transferts de données entre différentes plateformes• Agrégation de contenus (RSS, ...) Les imports : un problème récurent !
  5. 5. Est-ce compliqué ?Souvent ...• Un site Drupal moyen atteint facilement les 80 modules et les 150 tables, hétérogènes et interdépendantes• Chaque import semble unique• Solutions coûteuses et non réutilisables• Difficile à estimer• Beaucoup de complications inattendues
  6. 6. T.O.C.• Concevoir un import de données vers Drupal • Les étapes - Les subtilités - La checklist• Tous les chemins mènent à Drupal ... mais comment ? • Les outils disponibles - Choisir son outil • Feeds • Migrate• Pour aller plus loin
  7. 7. Les étapes d’un import Extraire Transformer Enregistrer Combiner “Mapper” Filtrer node_save() user_save() taxonomy_term_save()• Extraire : récupérer et parser les données d’origine• Combiner & mapper : re-arranger les données pour les faire correspondre à des objets Drupal• Filter : néttoyer les données (trim(), strip_tags(), ...)• Enregistrer : utiliser l’API Drupal pour • Stocker les nouveaux contenus Drupal • Mettre à jour des contenus existants
  8. 8. Les subtilités des imports• La “propreté” des données d’origine • sont les données conformes au format annoncé ?• La quantité des données (500 ou 50.000 nodes) ?• Les références et les données croisées• Les médias • la localisation, la taille et le format des fichiers• Les ressources de l’équipe • avons-nous de bons développeurs disponibles pour le projet ?• La disponibilité du client pour répondre aux questions
  9. 9. La checklist de l’import• Préférer les bases de données aux fichiers• Bien définir les formats d’origine et déterminer des critères de validité des données• Avoir une idée claire des relations entre les données d’origine• Clarifier les transformations possibles des données• Mettre en place des outils de communication développeurs- client rapides• Selon la quantité de données, les outils/procédures ne seront pas les mêmes La méthode est aussi importante que la technique !
  10. 10. Comment choisir son outil ?• Bonus habituels d’un bon module Drupal • Développeurs actifs et réactifs • Richesse de l’éco-système (plugins, patches, etc.) • Code de qualité, APIs claires • Documentation abondante• Fonctionnalités secondaires importantes : • Rollback, mise à jour de contenus existants • Support de la Batch API, des imports via le Cron et/ou via Drush • Configuration via l’interface graphique
  11. 11. Les outils disponibles• Quelques modules spécifiques • User import framework (CSV only, vise à la simplicité plutôt qu’à l’exaustivité) • User import (5-6.x only) • Node import (6.x only, semble semi-abandonné)• Les frameworks génériques • Feeds : un moteur générique d’agrégation de contenus • Migrate : enfin un vrai ETL pour Drupal ?
  12. 12. Feeds• Au début il y avait FeedAPI • Moteur d’agrégation de contenus RSS, ATOM, CSV, iCal • Développé rapidement pour les besoins de la distribution Managing News • Entièrement refait à neuf autour de 2009• Feeds : framework d’import de contenu dans Drupal • Très flexible (une API simple et bien documentée) • Configuration via GUI • Intégration à Features • Nombreux goodies ... • Maintenu par des “Drupal Rock Stars” : @alex_b, @davereed
  13. 13. Feeds: architecture & goodies• Un Feeds Importer est un objet avec 3 composantes : • Fetcher : extrait les données d’une source et les convertit en string • Parser : analyse la string et construit un tableau PHP • Processor : construit un objet Drupal et l’enregistre via l’API• Les bonus • Intégration à la Batch API : import par étapes • Possibilité d’importer par le cron (via job_scheduler) • Feeds Tamper : interface graphique pour filter les données
  14. 14. Feeds : les + et les -• Les + : • Facilement configurable, intégration facile des nouvelles classes à l’interface graphique • Ecosystème riche et actif : parsers et mappers à foison... • De nombreux addons pour affiner son import sans coder • Log de messages intégré• Les - : • Le code est complexe, laborieux ... • Utilisation de la Batch API : peu performant lors de grands imports • Gestion des ressources très limitée
  15. 15. Migrate• Développé par Cyrve, start-up américaine spécialisée dans les problématiques d’imports massifs (maintenant Acquia) : • The Examiner.com • The Economist• Moshe Weitzman : Mr Drush.• Migrate : un outil robuste pour dévelopeurs et chefs de projet.
  16. 16. Migrate : architecture• Tout se passe dans les classes Migration : • Définition de l’équipe technique • Définition de la source et de la destination • Ajout des mappings des champs et des filtres• Modèle de migrations successives et interdépendantes• Gestion dynamique des ressources machine : • Intégration à la Batch API et surtout à Drush • Calcul des timeouts et des limites de mémoire à la volée !
  17. 17. Migrate : les + et les -• Les + : • Prise en charge native de structures de données complexes • Très performant grâce à sa gestion des ressources à la volée • Intégration à Drush (migrations/mises à jour “scriptables”) • Interface graphique orientée reporting • De nombreux exemples disponibles, prise en main aisée pour le dévelopeur PHP moyen• Les - : • Il faut coder ... • Relativement jeune, donc écosystème un peu limité • cf. migrate_extras (http://drupal.org/project/migrate_extras)
  18. 18. Pour aller plus loin• Drupal.org évidemment ... • http://drupal.org/project/feeds • http://drupal.org/project/migrate • Migrating to Drupal : http://drupal.org/documentation/migrate• Les présentations de Moshe Weitzman : • http://london2011.drupal.org/conference/sessions/data-migration- drupal • http://www.acquia.com/resources/acquia-tv/conference/migrating- social-content-drupal-1 Ou moi, dans 5 minutes autour d’un café(!)
  19. 19. Où me joindreSi vous n’avez pas le temps pour un café(!) ...• Sur le stand d’• rodolfo.ripado@alterway.fr• ggaspaio@gmail.com• Drupal.org / Twitter : Gaspaio Des questions ?

×