Transcript
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 ?


Recommended