Parallélisation du chargement des données
L'utilitaire de chargement de données est amélioré dans HCL Commerce version 9.1 pour permettre la parallélisation. La parallélisation permet d'effectuer beaucoup plus rapidement certaines tâches de chargement de données, en augmentant le nombre d'unités d'exécution utilisées pour charger des données dans la base de données.
- Le réglage des performances de l'utilitaire de chargement de données et de vos données est nécessaire pour utiliser cette fonctionnalité efficacement. Cette fonctionnalité peut réduire les performances globales du chargement des données. Vous devez examiner attentivement la relation entre la parallélisation, sa configuration, le type de données et sa structure particulière.
- La parallélisation du chargement des données n'est compatible qu'avec les données formatées CSV.
Dans les versions précédentes de HCL Commerce, l'utilitaire de chargement de données était une application à thread unique qui était limitée par des classes singleton qui n'étaient pas conçues pour une utilisation parallèle. Cette conception a limité l'utilisation de l'utilitaire pour certains travaux présentant de grandes quantités de données, entravant les performances de l'outil. Dans certains cas, les utilisateurs de l'outil peuvent avoir du mal à effectuer leur travail en raison de tâches à exécution longue. Avec cette nouvelle mise à niveau vers l'utilitaire de chargement de données, plusieurs utilisateurs de l'outil peuvent charger des données simultanément. En outre, des tâches plus courtes peuvent permettre d'exécuter des tâches ultérieures plus tôt.
Architecture
Les améliorations architecturales apportées à l'utilitaire de chargement de données comprennent l'ajout d'une file d'attente où le lecteur du fichier CSV crée des lots de données à traiter. La file d'attente a une taille maximale, ce qui, lorsqu'elle est atteinte, empêche temporairement le lecteur de produire davantage de lots. L'unité d'exécution du lecteur continuera de placer des lots de données dans la file d'attente au fur et à mesure que les lots sont utilisés. Une fois que toutes les données sont lues à partir du fichier d'entrée, l'unité d'exécution du lecteur placera un lot vide dans la file d'attente, puis sortira avec un rapport récapitulatif du chargement de données.
Chaque unité d'exécution d'écriture supprime un lot de la file d'attente et traite le lot pour charger des données dans la base de données. Lorsqu'une unité d'exécution d'écriture obtient un lot vide de la file d'attente, il replace le lot vide dans la file d'attente et l'unité d'exécution d'écriture sort avec un rapport récapitulatif du chargement de données.
L'utilitaire de chargement de données vérifiera s'il y a des erreurs dans chaque unité d'exécution d'écriture jusqu'à ce que toutes les unités d'exécution d'écriture se terminent et sortent. S'il y a des fichiers CSV d'erreur de retraitement créés par les unités d'exécution d'écriture, l'utilitaire de chargement de données fusionnera tous les fichiers CSV de retraitement d'erreur en un seul fichier CSV de retraitement d'erreur, puis rechargera ce fichier CSV à l'aide d'une seule unité d'exécution d'écriture. Une fois que toutes les unités d'exécution d'écriture auront terminé, l'utilitaire de chargement de données produira un rapport récapitulatif du chargement de données commun.
Considérations relatives aux performances et à la gestion des erreurs
En raison de la nature complexe du chargement des données hiérarchiques avec plusieurs unités d'exécution, la gestion des erreurs doit être soigneusement prise en compte lors de l'activation et de la parallélisation de la configuration. Cela est particulièrement vrai lorsqu'il s'agit de l'ajustement des performances en fonction de votre environnement et de votre jeu de données.
- Utilisez les paramètres de charge de données existants
commitCount,batchSizeetmaxErrorpour chaque élément LoadItem pour vous assurer que les performances de votre utilitaire de chargement de données sont commutées. - Formatez vos données pour tirer parti de la parallélisation de manière appropriée. Par exemple, si vos données contiennent des données hiérarchiques, placez les données parentes ensemble vers le début du fichier. Les chances de chargement des données enfant pour lesquelles les données parentes ne sont pas encore présentes seront réduites.
Paramètres et valeurs par défaut configurables
Par défaut, l'utilitaire de chargement de données est défini pour s'exécuter en mode d'exécution unique. Cela garantit le comportement de travail et les performances auxquelles les utilisateurs s'attendent. Les nouveaux paramètres suivants ont été ajoutés pour contrôler la parallélisation de l'utilitaire de chargement de données.
Un exemple de configuration de chargement de données qui inclut l'utilisation complète de ces paramètres est disponible ici.
| Paramètre | Type de valeur | Valeur par défaut | Description |
|---|---|---|---|
numberOfThreads |
Entier | 1 | Nombre maximal d'unités d'exécution d'écriture individuelles prennant des lots de données de la file d'attente, les traitent dans l'ordre et écrivent les données traitées dans la base de données. Par défaut, le paramètre numberOfThreads est défini sur 1, ce qui signifie que l'utilitaire de chargement de données doit s'exécuter en mode d'exécution unique (existant).Le nombre maximal d'unités d'exécution est de 8. À partir des tests de performance internes, HCL recommande d'utiliser 4 unités d'exécution. L'utilisation de plus de quatre unités d'exécution a montré qu'elle réduisait les performances globales de chargement, et peut entraîner les erreurs suivantes : Si un nombre supérieur à 8 est fourni, le nombre maximal d'unités d'exécution est utilisé. |
inputDataListSize |
Entier | 20 | Nombre maximal d'entrées de ligne CSV incluses dans un lot de données à ajouter à la file d'attente. Chaque unité d'exécution d'écriture gère un seul lot de données de la file d'attente. Une fois qu'elle est chargée, l'unité d'exécution est libérée pour traiter un autre lot à partir de la file d'attente. Par défaut, le paramètre inputDataListSize est défini sur 20. |
queueSize |
Entier | numberOfThreads | Nombre maximal de lots pouvant exister dans la file d'attente. Une fois que la file d'attente est remplie du nombre maximal de lots, le lecteur attend que les lots de la file d'attente soient consommés avant de continuer à produire et à faire la queue d'autres lots. Par défaut, ceci est défini sur la valeur de propriété numberOfThreads. |
multipleThreadsEnabled |
Booléen | false | Définit si la parallélisation est activée pour l'élément de charge spécifique. En définissant ce paramètre sur false pour un LoadItem spécifique, vous remplacez les paramètres de parallélisation définies et placez l'utilitaire de chargement de données dans une opération à unité d'exécution unique. Défini manuellement par LoadItem, si ce paramètre n'est pas spécifié, sa valeur par défaut false est utilisée. |