19
Importer du contenu avec Drupal Rodolfo Ripado

Drupagora 2011 - Importer du contenu avec Drupal

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Drupagora 2011 - Importer du contenu avec Drupal

Importer du contenu avec DrupalRodolfo Ripado

Page 2: Drupagora 2011 - Importer du contenu avec Drupal

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

Page 3: Drupagora 2011 - Importer du contenu avec Drupal

Présentation d'Alter Way 1Novembre 2011

Un accompagnement open source à 360°

Page 4: Drupagora 2011 - Importer du contenu avec Drupal

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 !

Page 5: Drupagora 2011 - Importer du contenu avec Drupal

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

Page 6: Drupagora 2011 - Importer du contenu avec Drupal

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

Page 7: Drupagora 2011 - Importer du contenu avec Drupal

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

Page 8: Drupagora 2011 - Importer du contenu avec Drupal

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

Page 9: Drupagora 2011 - Importer du contenu avec Drupal

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 !

Page 10: Drupagora 2011 - Importer du contenu avec Drupal

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

Page 11: Drupagora 2011 - Importer du contenu avec Drupal

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 ?

Page 12: Drupagora 2011 - Importer du contenu avec 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

Page 13: Drupagora 2011 - Importer du contenu avec Drupal

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

Page 14: Drupagora 2011 - Importer du contenu avec Drupal

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

Page 15: Drupagora 2011 - Importer du contenu avec Drupal

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.

Page 16: Drupagora 2011 - Importer du contenu avec Drupal

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 !

Page 17: Drupagora 2011 - Importer du contenu 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 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)

Page 18: Drupagora 2011 - Importer du contenu avec Drupal

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é(!)

Page 19: Drupagora 2011 - Importer du contenu avec Drupal

Où me joindre

• Sur le stand d’

[email protected]

[email protected]

• Drupal.org / Twitter : Gaspaio

Si vous n’avez pas le temps pour un café(!) ...

Des questions ?