Download - OSDC 2011 - Des ETL pour drupal
AlterWayopérateur de services
open source
Des ETL pour Drupal
Open World Forum / Open Source Developer’s Conference 24 sept 2011
Rodolfo Ripado
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Qui suis-je ?
Rodolfo Ripado• Lead Développeur Drupal chez AlterWay Solutions
• Membre enthousiaste de la communauté Drupal
• (Co)auteur de 2 modules Drupal
• Je cuisine régulièrement des données diverses à la sauce Drupal.
• Contact : [email protected]
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Pourquoi des ETL pour Drupal ?
• Le CMS Drupal est de plus en plus utilisé pour la refonte de gros sites d’entreprise.
• Les développeurs ont souvent à faire à des imports complexes de contenu.
• Un site moyen atteint facilement 150-200 tables.
• Drupal est modulaire : les schémas des différents modules sont très hétérogènes et interdépendants.
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
T.O.C.
• Qu’attendons-nous d’un ETL pour Drupal ?
• Les ETL pour Drupal
• Le module Feeds
• Le module Migrate
• Conclusion : quel outil pour vos besoins ?
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Qu’attendons-nous d’un ETL Drupal ? Les essentiels.
• Extract : • support des formats habituels (SQLs, XMLs, CSV).
•Transform : • accès simple aux données
• possibilité de les combiner, re-encoder, etc ...
• Load : • support des objets du core de Drupal (nodes, taxonomy terms)
• support des différents types de champs et propriétés des objets
• enregistrement en utilisant les APIs Drupal • node_save(), taxonomy_term_save(), etc ...
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Qu’attendons-nous d’un ETL Drupal ? Les bonus.
• 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.
AlterWayopérateur de services
open source
Feeds
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Feeds : généralités
• 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.
AlterWayopérateur de services
open source
Démo de Feeds
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Feeds : architecture
• 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• Avec support de valeurs multiples
• Processor• Construit/récupère un objet Drupal (node, terme, user).
• Remplit l’objet avec des valeurs par défaut ou les valeurs importées.
• Enregistre l’objet avec l’API Drupal.
• Gestion des ressources machine.• Intégration à la Batch API : import par étapes.
• Possibilité d’importer via le Cron (via job_scheduler).
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Feeds : API
• Ajout de composants via la plugin API de ctools.
• Les hooks :• hook_feeds_after_parse(FeedsSource $source, FeedsParserResult $result)• cf. Feeds Tamper (http://drupal.org/project/feeds_tamper)
• hook_feeds_after_import(FeedsSource $source)
• hook_feeds_after_clear(FeedsSource $source)
• Les alter : • hook_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_name)• Ajouter de nouveaux champs à feeds, changer les existants.
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Feeds : les + et les -
• Les + :• Facilement configurable, intégration facile des nouvelles classes à l’interface grafique.
• Ecosystème riche et actif : • Parseurs XPath, LDAP, RSS
• Mappers pour une grande partie des champs disponibles
• De nombreux addons pour affiner son import sans coder.
• Un système de log de messages intégré.
• Les - :• Le code n’est pas toujours bien commenté.
• Utilisation de la Batch API : peu performant lors de gros imports.
• Gestion des ressources très limitée, aucune gestion de la mémoire.
AlterWayopérateur de services
open source
Migrate
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Migrate : généralités
• 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.
AlterWayopérateur de services
open source
Démo de Migrate
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Migrate : architecture
• Tout se passe dans les classes Migration :• Définition de l’équipe technique, de la source et de la destination.
• Ajout des mappings des champs :•Option Callback : permet de filter les valeurs avant l’import.
•Option SourceMigration : permet de retrouver les identifiants d’objets précédemment importés.
• Gestion de valeurs multiples.
• 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.
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Migrate : API
• La customisation se fait par l’implémentation de classes dérivées de BaseMigration, MigrateSource, MigrateDestination, MigrateFieldHandler, ...
• Quelques méthodes :• sourceClass->prepareRow($row)
• destinationClass->prepare($entity, $row)
• destinationClass->complete($entity, $row)
• et beaucoup beaucoup plus ...
• Support natif de mises à jour de contenu, des valeurs multiples, node/user references.
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
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 grafique 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)
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Conclusion
• D’autres modules spécialisés dans l’import d’utilisateurs Drupal existent : user_import, user import framework.
• Feeds et Migrate sont conçus pour des migrations, imports, synchronisation de données complexes et d’une grande variété de sources.
• Feeds :• (Presque) sans coder, on peu gérer des cas très variés.
• Spécialisé dans l’agrégation de flux XML/RSS, etc ...
• Migrate :• Un must pour des imports complexes et/ou massifs qui nécessitent du code
spécifique.
OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal
Me joindre
• Mail : [email protected] [email protected]
• Drupal.Org : gaspaio
• MERCI !