Drupagora 2011 - Importer du contenu avec Drupal
-
Upload
rodolfo-ripado -
Category
Technology
-
view
2.933 -
download
0
description
Transcript of Drupagora 2011 - Importer du contenu avec Drupal
Importer du contenu avec DrupalRodolfo Ripado
Qui suis-je ?
• 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
Rodolfo Ripado, alias gaspaio
Présentation d'Alter Way 1Novembre 2011
Un accompagnement open source à 360°
Les imports de contenus
• 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, ...)
Quand avons-nous à faire à des imports ?
Les imports : un problème récurent !
Est-ce compliqué ?
• 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
Souvent ...
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
Les étapes d’un import
• 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
Extraire Transformer Enregistrer
Combiner “Mapper” Filtrer
node_save()
user_save()
taxonomy_term_save()
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
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 !
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
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 ?
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
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
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
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.
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 !
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)
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é(!)
Où me joindre
• Sur le stand d’
• Drupal.org / Twitter : Gaspaio
Si vous n’avez pas le temps pour un café(!) ...
Des questions ?