Download - OSDC 2011 - Des ETL pour drupal

Transcript
Page 1: 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

Page 2: OSDC 2011 - Des ETL pour drupal

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]

Page 3: OSDC 2011 - Des ETL pour drupal

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.

Page 4: OSDC 2011 - Des ETL pour drupal

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 ?

Page 5: OSDC 2011 - Des ETL pour drupal

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 ...

Page 6: OSDC 2011 - Des ETL pour drupal

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.

Page 7: OSDC 2011 - Des ETL pour drupal

AlterWayopérateur de services

open source

Feeds

Page 8: OSDC 2011 - Des ETL pour drupal

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.

Page 9: OSDC 2011 - Des ETL pour drupal

AlterWayopérateur de services

open source

Démo de Feeds

Page 10: OSDC 2011 - Des ETL pour drupal

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).

Page 11: OSDC 2011 - Des ETL pour drupal

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.

Page 12: OSDC 2011 - Des ETL pour drupal

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.

Page 13: OSDC 2011 - Des ETL pour drupal

AlterWayopérateur de services

open source

Migrate

Page 14: OSDC 2011 - Des ETL pour drupal

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.

Page 15: OSDC 2011 - Des ETL pour drupal

AlterWayopérateur de services

open source

Démo de Migrate

Page 16: OSDC 2011 - Des ETL pour drupal

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.

Page 17: OSDC 2011 - Des ETL pour drupal

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.

Page 18: OSDC 2011 - Des ETL pour drupal

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)

Page 19: OSDC 2011 - Des ETL pour drupal

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.

Page 20: OSDC 2011 - Des ETL pour drupal

OWF/OSDC 2011 - 24 sept 2011 ALTER WAY - Des ETL avec Drupal

Me joindre

• Mail : [email protected] [email protected]

• Drupal.Org : gaspaio

• MERCI !