OSDC 2011 - Des ETL pour drupal

20
AlterWay opérateur de services open source Des ETL pour Drupal Open World Forum / Open Source Developer’s Conference 24 sept 2011 Rodolfo Ripado

description

Drupal devient une solution de gestion de contenu de plus en plus populaire, et les développeurs sont souvent confrontés à des problématiques d'import ou synchronisation massifs de contenu. Le schéma très hétérogène de stockage des données par les modules Drupal fait qu'il n'est souvent pas souhaitable d'utiliser un ETL "classique" lors de ces imports mais bien de partir sur les APIs propres aux composants du CMS. Plusieurs modules existent, chacun avec son approche, ses avantages et ses inconvénients. Dans cette présentation, nous vous présenterons les différentes méthodes utilisées au quotidien par les équipes d'Alter Way, notamment à travers les deux modules les plus complets : Feeds et le framework Migrate.

Transcript of OSDC 2011 - Des ETL pour drupal

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 !