Meilleures pratiques générales pour le chargement de données

Les meilleures pratiques ci-après sont recommandées lorsque vous vous servez de l'utilitaire de chargement de données pour charger des données.

Configuration pour les chargements initiaux

Pour plus d'informations sur les configurations recommandées pour les chargements initiaux, voir Scénario : Chargement initial.

Configuration pour les chargements delta

Pour plus d'informations sur la configuration recommandée pour les chargement delta, voir Scénario : Chargement delta.

Exécution du fichier script de chargement de données

Si vous exécutez l'utilitaire de chargement de données à partir du conteneur Utilities, envisagez de monter un répertoire du système hôte dans un répertoire dans le conteneur. Placez tous vos fichiers de chargement de données dans un sous-répertoire du répertoire monté. Cette approche garantit que les fichiers ne sont pas perdus lorsque le conteneur est remplacé par une autre image Docker. Il peut également être plus facile de modifier des fichiers directement dans le système hôte à l'aide de votre éditeur préféré.

Lors de l'exécution de l'utilitaire , considérez les options de ligne de commande suivantes :
-DXmlValidation=false
Désactivez la validation XML si vous utilisez une substitution de variables pour les attributs d'entiers.
-D.level=FINEST
Activez plus de traçage dans le fichier utilities_root\logs\wc-dataload.log.
Dans les cas de chargements volumineux, le niveau FINEST génère une trace trop importante dans le fichier journal. Vous pouvez activer le traçage pour un package comme indiqué dans les exemples suivants.
-Dcom.ibm.commerce.catalog.dataload.level=FINER
Niveau de journal plus précis pour les informations de catalogue.
-Dcom.ibm.commerce.foundation.dataload.database.level=FINE
Journalisation des problèmes SQL.
-Dcom.ibm.commerce.foundation.dataload.level=CONFIG
Journalisation des problèmes de performances de chargement de données.
-Dcom.ibm.commerce.price.dataload.level=FINER
Journalisation des problèmes de chargement liés aux prix
-Dcom.ibm.commerce.inventory.dataload.level=FINER
Journalisation des problèmes de chargement liés à l'inventaire.
-Dcom.ibm.commerce.member.dataload.level=FINER
Journalisation des problèmes de chargement liés aux membres.
-Dcom.ibm.commerce.marketing.dataload.level=FINER
Journalisation des problèmes de chargement liés au marketing.
-Dcom.ibm.commerce.promotion.dataload.level=FINER
Journalisation des problèmes de chargement liés à la promotion.
-Dcom.ibm.commerce.pagelayout.dataload.level=FINER
Journalisation des problèmes de chargement liés au programme Composer.
  • Personnalisez le fichier de configuration de journalisation Java, utilities_root\ts.ear\XML\config\dataload\logging.properties. Par exemple, vous pouvez modifier le chemin d'accès au fichier journal, sa taille maximale et le nombre de fichiers journaux sur lesquels itérer. Par défaut, vous disposez d'un fichier journal et ce dernier est remplacé chaque fois que vous exécutez l'utilitaire de chargement de données.

Prétraitement des différences de fichiers

Vous pouvez exécuter un prétraitement des différences de fichiers pour des chargements de données de routine afin d'améliorer les performances de l'utilitaire de chargement de données lors du chargement de ces fichiers. Ce préprocesseur vous permet de comparer deux fichiers d'entrée, comme un fichier chargé précédemment et une nouvelle version de ce fichier. Le préprocesseur génère un fichier de différences contenant uniquement les enregistrements du nouveau fichier qui ne figurent pas dans l'ancien fichier ou les enregistrements qui ont été modifiés par rapport à l'ancien fichier. L'utilitaire de chargement de données peut alors charger ce fichier de différences. Si les fichiers que vous chargez régulièrement contiennent un grand nombre d'enregistrements précédemment chargés, l'exécution de cette différence de fichiers peut permettre de réduire les temps de chargement. L'identification des différences entre les fichiers permet de réduire le temps de chargement requis pour charger vos mises à jour de routine dans votre base de données HCL Commerce, de réduire le temps d'utilisation du serveur, et d'améliorer les performances du serveur.

Vous pouvez configurer le préprocesseur de différence de fichier d'utilitaire de chargement des données pour comparer des fichiers selon les valeurs dans chaque colonne, au lieu d'enregistrements complets pour identifier les enregistrements modifiés. Vous pouvez également configurer le préprocesseur de différence de fichier pour ignorer des colonnes spécifiques lorsque le processus compare les fichiers.

Pour plus d'informations sur ce préprocesseur, voir Exécution du préprocesseur des différences entre les fichiers de chargement de données.

Fichiers de configuration de l'utilitaire de chargement de données

Les fichiers de configuration du chargement de données peuvent être de trois types :
Fichier de configuration de l'ordre de chargement (wc-dataload.XML)
Vous pouvez utiliser plusieurs fichiers de configuration de l'ordre de chargement ou bien un seul incluant tous les éléments du chargement. Pour ne charger que quelques éléments de chargement, utilisez la ligne de commande suivante lors de l'exécution de l'utilitaire de chargement de données :
-DLoadOrder="loadItemName1, loadItemName2, loadItemName3"
Fichier de configuration d'environnement (wc-dataload-env.XML)
Vous n'avez besoin que d'une seule copie de ce fichier de configuration.
Fichiers de configuration d'objet métier
En général, un fichier de configuration d'objet métier correspond à un type de données d'entrée qui charge un type d'objet métier. La convention de dénomination de fichiers est wc-loader-business object.XML. Ce fichier définit les éléments DataReader, BusinessObjectBuilder et BusinessObjectMediator utilisés pour le chargement des données. Il définit également toutes les options de configuration de la personnalisation.
Conservez tous vos fichiers de configuration du chargement de données sous un chemin d'accès relatif au fichier wc-dataload.XML. Veillez à ce que les fichiers de configuration spécifiés dans le fichier wc-dataload.XML utilisent le chemin d'accès relatif. Ce dernier facilite le déplacement de ces fichiers d'un poste de travail à un autre.

Configuration du fichier d'ordre de chargement des données (wc-dataload.xml)

Envisagez les configurations suivantes :
  • Spécifiez commitCount, batchSize, dataLoaderMode au niveau LoadOrder afin de ne pas avoir à les spécifier à chaque niveau LoadItem.
  • Spécifiez une valeur commitCount supérieure ou égale à celle de batchSize. commitCount est un multiple de batchSize.
  • Pour minimiser l'impact sur votre environnement de production, associez la valeur 1 à commitCount et batchSize. En spécifiant des valeurs élevées pour commitCount et batchSize, vous améliorez les performances du chargement de données. Toutefois, des valeurs élevées peuvent avoir un impact sur la base de données et entraîner le verrouillage d'un nombre plus élevé de tables et de lignes pour une période plus longue.
  • Pour faciliter le débogage de certaines erreurs SQL, associez la valeur 1 à batchSize et activez la trace de base de données. Ces paramètres peuvent permettre d'identifier l'instruction SQL ou la ligne d'entrée à l'origine de l'erreur SQL. Si la valeur de batchSize est supérieure à 1, la mise à jour des lots JDBC est activée. Dans ce cas, il peut être difficile d'associer l'erreur SQL à la ligne d'entrée ou l'instruction SQL à l'origine de l'erreur.
  • L'exécution de l'utilitaire de chargement de données en mode insertion peut améliorer les performances du chargement initial de grandes quantités de données. Toutefois, lorsque vous exécutez l'utilitaire de chargement de données en mode insertion, celui-ci ne vérifie pas votre base de données avant de charger vos données d'entrée. Il ne détermine pas si les objets de données que vous créez existent déjà dans votre base de données avant de tenter de charger et de créer des objets de données. Ce comportement peut entraîner l'échec du processus de chargement lorsque l'utilitaire tente de créer les objets de données qui existent déjà dans votre base de données.
    Par exemple, si votre fichier d'entrée est un fichier CSV contenant une ligne qui crée un produit et une description de produit, et si le fichier contient une deuxième ligne qui charge le même produit dont la description est dans une autre langue, le processus de chargement échoue. Etant donné que l'utilitaire crée le produit et la description de la première ligne, lorsqu'il atteint la deuxième ligne, il tente de créer le produit à nouveau. Comme le produit existe, le chargement échoue. Pour charger ces données, vous pouvez utiliser l'une des méthodes suivantes :
    • Exécutez l'utilitaire de chargement de données en mode remplacement. Dans ce mode, l'utilitaire génère des instructions SQL d'insertion, de mise à jour ou de suppression en fonction des données que vous chargez. Ce mode remplace les données existantes dans la base de données par les données d'entrée.
    • Exécutez l'utilitaire de chargement de données en mode insertion, mais chargez les informations de produit et de description séparément. Utilisez un fichier d'entrée pour charger les informations de produit, et un autre fichier d'entrée pour charger toutes les descriptions.

Configuration du fichier de configuration de l'environnement de chargement de données (wc-dataload-env.xml)

Envisagez les configurations suivantes :
  • Ne spécifiez pas l'élément <_config:FilePath /> si tous vos fichiers de configuration suivent un chemin d'accès relatif au fichier wc-dataload.XML.
  • chiffrez votre mot de passe de base de données dans le fichier de configuration. Lancez l'utilitaire wcs-encrypt comme indiqué ci-après.
    1. LinuxOuvrez un shell de ligne de commande dans le conteneur Utilitaires et accédez au répertoire utilities_root/bin. Pour plus d'informations, voir Exécution des utilitaires à partir de Utility server Docker container.
    2. HCL Commerce DeveloperOuvrez un shell de ligne de commande et accédez au répertoire WCDE_installdir\bin.
    3. Exécutez l'utilitaire wcs-encrypt pour apprendre la chaîne ASCII cryptée.
      • Linux./wcs-encrypt.sh
      • HCL Commerce Developerwcs-encrypt
    Vous pouvez exécuter l'utilitaire wcs-encrypt dans le répertoire utilities_root\bin pour identifier la chaîne ASCII chiffrée : wcs-encrypt.bat/sh <plain password>
  • Vous pouvez également laisser le paramètre du mot de passe de base de données vide. S'il est vide, vous serez invité à saisir le mot de passe lorsque vous exécuterez l'utilitaire de chargement de données. Vous devrez alors saisir le mot de passe non chiffré, mais celui-ci ne sera pas reflété sur la console pour des raisons de sécurité.
  • La configuration IDResolver est facultative. Vous pouvez spécifier la taille du cache de l'utilitaire de programme de résolution d'ID. Dans le cas d'un chargement initial, spécifiez une taille de cache volumineuse (par exemple, 1 million). S'il s'agit d'un delta, spécifiez une taille de cache de 0. Si vous ne spécifiez pas la configuration de cet utilitaire de résolution d'ID, la taille par défaut du cache est de 0.
  • Au lieu de coder en dur l'éditeur de données dans chaque fichier de configuration d'objet métier de chargement de données, spécifiez la classe d'éditeur de données par défaut dans ce fichier de configuration.
  • Définissez une taille de cache de 0 pour le programme de résolution d'ID si vous procédez régulièrement à des chargements incluant les mêmes informations, par exemple si vous exécutez des mises à jour planifiées de vos données de catalogue pour remplacer les données existantes. Pour plus d'informations sur la configuration de cette taille de cache et de ce fichier, voir Configuration des paramètres d'environnement de chargement de données.
  • Si un fichier de configuration d'environnement est spécifié dans la ligne de commande, il a priorité sur l'élément qui existe dans le fichier de configuration de l'environnement de chargement de données.

Configuration du fichier de configuration d'objet métier de chargement de données

Envisagez les configurations suivantes :
  • Si vous chargez des fichiers au format CSV, au lieu de coder en dur les noms de colonne du fichier CSV dans le nœud <_config:Data> de l'élément <_config:DataReader>, vous pouvez placer tous les noms de colonne sur la première ligne du fichier CSV. Vous devez dans ce cas spécifier firstLineIsHeader="true" dans l'élément <_config:DataReader>.
    Remarque : Cette configuration s'applique uniquement si vous utilisez l'interface CSVReader comme lecteur de données.
  • Lorsque vous définissez le mappage ou la configuration de table dans l'élément <_config:BusinessObjectBuilder>, si la valeur provient des données en entrée, il n'est pas nécessaire de spécifier l'attribut valueFrom. La valeur par défaut est valueFrom="InputData".
  • Si vous ne voulez pas que l'utilitaire de chargement de données mette à jour toutes les colonnes d'une table lorsque vous chargez des données, vous pouvez configurer une liste d'exclusion de colonnes. Si une liste d'exclusion de colonnes est configurée, l'utilitaire de chargement de données n'a pas à charger des données dans chaque colonne d'une table. Cette configuration d'exclusion vous permet d'exclure de l'écrasement des colonnes si vous savez que ces dernières sont déjà remplies de données.

    Pour plus d'informations, voir Configuration d'une liste d'exclusion de colonnes.

    Lorsque vous configurez une liste d'exclusion, vous pouvez la configurer avec un paramètre facultatif, forUpdateOnly="true". Dans ce cas, lorsque vous mettez à jour un enregistrement de table avec un fichier d'entrée qui inclut des modifications pour une table exclue, l'utilitaire ne met pas à jour la valeur pour la colonne exclue avec la valeur figurant dans le fichier d'entrée. Si la même opération de chargement inclut des données permettant de créer des enregistrements dans la table, l'utilitaire ignore la liste d'exclusion et insère les valeurs du fichier d'entrée dans toutes les colonnes pour les nouveaux enregistrements.

  • Si vous chargez des fichiers csv qui contiennent des espaces de début, vous pouvez éviter les erreurs en configurant le lecteur CSV de chargement de données pour enlever les espaces de début et de fin dans le jeton. Pour ce faire, définissez la propriété trimTokenWhiteSpace sur true. Par exemple :
    <_config:DataReader className="com.ibm.commerce.foundation.dataload.datareader.CSVReader"
                        firstLineIsHeader="false" useHeaderAsColumnName="false">
      <_config:property name="trimTokenWhiteSpace" value="true" />
    </_config:DataReader>

Fichiers d'entrée CSV

Tenez compte des conseils suivants lors de l'édition ou de la maintenance de vos fichiers CSV :
  • Pour plus de clarté et de lisibilité, utilisez la première ligne du fichier CSV comme un en-tête.
    <_config:DataReader className="com.ibm.commerce.foundation.dataload.datareader.CSVReader" firstLineIsHeader="true" >
    Vous pouvez utiliser un tableur afin d'ouvrir le fichier CSV pour vérifier si les données correspondent aux en-têtes de colonne.
  • Pour une plus grande souplesse d'utilisation, d'omission de colonnes facultatives et de réorganisation des colonnes, utilisez l'en-tête comme noms de colonnes au lieu de coder ceux-ci en dur.
    <_config:DataReader className="com.ibm.commerce.foundation.dataload.datareader.CSVReader" firstLineIsHeader="true" useHeaderAsColumnName="true" >
    au lieu de :
    <_config:Data>
    	<_config:column number="1" name="Identifier" />
    	<_config:column number="2" name="Name" />
     	<_config:column number="3" name="ShortDescription" />
     	<_config:column number="4" name="LongDescription" />
     	<_config:column number="5" name="Thumbnail" />
     	<_config:column number="6" name="FullImage" />
     	<_config:column number="7" name="Delete" />
    </_config:Data>
  • Si vous voulez utiliser un tableur pour éditer et enregistrer le fichier CSV, l'enregistrement doit pouvoir se faire au format UTF-8. Par exemple, vous pouvez utiliser Open Office Calc. Autrement le tableur pourrait reformater les données de votre fichier et invalider les données pour votre lecteur CSVReader. Par exemple, si votre fichier CSV comporte une colonne d'horodatage, l'enregistrement dans un format différent d'UTF-8 pourrait reformater les données d'horodatage en fonction de votre paramètre d'environnement local. Il se peut que les données d'horodatage formatées ne puissent pas être utilisées avec votre chargement de données.
  • Par défaut, le chargement de données ne prend en charge que le format d'horodatage standard Java "yyyy-MM-dd hh:mm:ss.nnnnnn". L'utilitaire de chargement de données peut également prendre en charge un format d'horodatage personnalisé. Si votre fichier CSV utilise un format d'horodatage personnalisé, vous devez spécifier le format dans la configuration d'élément de chargement dans le fichier wc-dataload.XML. Par exemple, vous pouvez spécifier la ligne suivante dans l'élément <_config:LoadItem> :
    <_config:property name="timestampPattern" value="yyyy-MM-dd HH.mm.ss" />
  • Les données CSV formatées sont très flexibles et sujettes aux erreurs. La modification manuelle de données délimitées par des virgules peut entraîner une segmentation involontaire ou des erreurs de mise en forme qui peuvent rendre vos données non chargeables ou incorrectes.

Chargement par ID unique

La spécification de l'ID unique est facultative lorsque vous vous servez de l'utilitaire de chargement de données. Cependant, si vous le spécifiez, vous évitez le temps de traitement lié à la résolution de l'ID et améliorez les performances.

Inversion d'un chargement de données

Pour inverser un chargement, vous pouvez exécuter le même chargement de données à nouveau en spécifiant dataLoadMode="Delete" dans l'élément <_config:LoadOrder> de votre fichier de configuration de chargement de données wc-dataload.XML. Si vous inversez un chargement, spécifiez la ligne de configuration suivante dans l'élément <_config:LoadOrder> :
<_config:property name="actionOnError" value="1" />
Cette ligne de configuration permet de garantir que l'utilitaire de chargement de données continue le processus suite à une erreur de suppression logicielle, car les enregistrements enfant dépendants n'existent plus en raison d'une suppression en cascade.

Optimisation de l'utilitaire de chargement de données

Pour réduire l'impact sur les performances de l'exécution de l'utilitaire de chargement de données, vous pouvez ajuster la taille du cache Idresolver et les paramètres relatifs à cet utilitaire. Pour plus d'informations, voir Réglage des performances de l'utilitaire de chargement de données.