Actualités

[08/09/2017] Breaking news ! Smile décroche le label Happy Trainees 2018

Après le label HappyAtWork, Smile s’offre celui décerné par ses stagiaires et alternants !

[21/07/2017] Smile lance les premiers vélos solaires connectés à l’occasion du Sun Trip Tour 2017

Smile, leader des solutions IoT et open source, confirme sa solide expertise sur le marché de l’embarqué en participant activement à la course de vélos solaires du Sun Trip Tour.

[03/07/2017] Smile remporte le Drupagora d'Or 2017 du meilleur site e-commerce

Le vendredi 30 juin, la 3ème édition des Drupagora d'Or s'est déroulée à Paris.

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

Magento : Nouveau système natif d'import produits

L'import des produits est une des parties les plus importantes d'un projet de eCommerce. Les nouvelles versions Enterprise 1.10 et Community 1.5 de Magento apportent un nouveau système d'import, plus simple, plus rapide et plus riche.

L'import des produits est une des parties les plus importantes d'un projet de eCommerce. Les problèmes principaux de l'import produit Magento sont sa lenteur et le support uniquement des produits simples.

Architecture et principe de base

L'import produit a été largement simplifié. Il y a maintenant une classe bien identifiée par entité. Celle-ci est chargée de la validation et de l'import des données. Pour l'instant, seuls les entités product et customer sont supportées ( Mage_ImportExport_Model_Import_Entity_Customer and Mage_ImportExport_Model_Entity_Product).

L'import utilise les mêmes principes que notre import Smile custom full SQL: les éléments de l'EAV sont remplis un à un verticalement avec les données associées (toutes les lignes de la table entity, puis toutes les lignes de chaque attributs) plutôt qu'horizontalement (les entités les unes après les autres).

Ceci permet d'utiliser des inserts multiples MySQL, autrement plus rapides que des inserts lignes à lignes. Le résultat est une accélération importante du processus d'import.

Vitesse

Le nouvel import est environ 200 fois plus rapide que l'import précédent (100 produits importés à la seconde, contre 0.5 produit à la seconde précédemment), mais reste 10 fois plus lent que notre import Smile full SQL (1000 produits à la seconde).

Ce nouvel import est donc adapté aux catalogues de taille petite à moyenne (jusqu'à 400.000 produits, de façon à conserver un import de l'ordre de l'heure).

Limitations

Types de produits

Supportés
  • simple
  • virtual
  • configurable
Non supportés
  • grouped : les produits sont importés, mais le lien entre le produit groupé et les produits simples associés est perdu
  • bundled : erreur au moment de la vérification des données du CSV
  • downloadable : erreur au moment de la vérification des données du CSV
  • gift-card : erreur au moment de la vérification des données du CSV

Utilisation mémoire

Le nouveau système d'import charge la totalité du fichier CSV en mémoire sous forme de tableaux PHP avant de lancer les requêtes SQL. Ceci peut occasionner une utilisation mémoire importante.

Ré-indexation

Le nouvel import ne gère pas les différents processus de réindexation (index des catégories et produits, index des prix, index du moteur de recherche full-text, etc...).

Ceux-ci restent en effet identiques à la version précédente, ce qui signifie que même s'il est possible d'insérer un volume beaucoup plus important de données grâce au nouvel import, il faudra néanmoins relancer les processus d'indexation afin d'avoir un site utilisable. Et ceci peut prendre plusieurs heures, voire ne jamais se terminer correctement en cas de volume important de données...

Dans ce cas, il sera nécessaire de réaliser des scripts spécifiques pour générer les tables *_index, ainsi que générer l'index full-texte, via le data import handler de SolR par exemple.

Pré-requis

  • Les catégories doivent exister avant l'import. Cependant, le mapping avec les catégories se faisant sur un chemin basé sur leur nom (ex: Mes produits/Ma sous-catégorie), il n'est pas nécessaire que les IDs de catégories correspondent
  • Les attributs et attribute-set utilisés dans l'import doivent exister préalablement
  • Les attributs codes et les valeurs d'options pour les attributs de type dropdown doivent également correspondent

Catégories multiples

Il y a un bug sur l'export lorsque le produit appartient à plusieurs catégories: une ligne invalide est créée après la ligne de produit. Cette ligne va provoquée une erreur "Not supported type" quand les données sont vérifiées préalablement à l'import.

Pour l'instant, nous ne sommes pas sûr s'il est possible d'importer un produit dans plusieurs catégories, l'export dans ce cas ne semblant pas fournir de fichier valide.

Compatibilité Community Edition et Entreprise Edition

Le code de ce nouveau module Mage_ImportExport est exactement le même entre l'Enterprise Edition et la Community Edition.

De plus, nous avons pu exporter des données de l'Enterprise Edition et les ré-importer par la suite dans la Community Edition. Bien entendu, les limitations détaillées plus haut s'appliquent (tous les types de produits ne sont pas supportés, arborescence de catégorie identique, etc...).

Conclusion

Magento règle ici deux problèmes majeurs de leur système d'import précédent : la vitesse et le support des produits configurables.

Bien sûr, il reste du travail, aussi bien sur le support des autres types de produits, que sur les performances de créations des tables d'index, mais l'ensemble va réellement dans la bonne direction.

Benoit Jacquemont
picto

Commentaires

       
Sebastien Bracquemont - http://sourceforge.net/projects/magmi
Je vous conseille de jeter un oeil a magmi, un "petit" script qui lui aussi marche en SQL pur et permet pas mal de choses que le nouvel importer ne permet pas (import des custom options,gestion des image en url,creation des catégories a la volée, transformation de données a la volée), tout en gardant la compatibilité avec l'ancien format dataflow et compatible avec les version magento community 1.3,1.4 et 1.5.
lundi 04 juillet 2011 @ 10:20
       

       
rduvrac
...mais reste 10 fois plus lent que notre import Smile full SQL...

C'est quoi ? c'est ou ?
lundi 04 juillet 2011 @ 10:20
       

       
Didier Duboc
J'utilise un module qui est bien plus riche fonctionnellement, beaucoup plus rapide à l'importation des données - Store Manager.
Bien sûr, Store Manager demande à ce qu'on s'investisse un petit peu mais çà vaut le coup!
lundi 09 décembre 2013 @ 9:10
       
Ecrire un nouveau commentaire