Prétraitement parallèle et indexation distribuée

Vous pouvez indexer de grandes données de catalogue dans le serveur de recherche avec un prétraitement parallèle et une indexation distribuée par fragmentation et fusion.

Les données peuvent être divisées horizontalement ou verticalement en différentes unités d'exécution, de sorte que chaque unité d'exécution puisse traiter de plus petits morceaux de données. Cette approche est utile lorsque la taille du catalogue est importante, ou lorsque les délais de prétraitement et d'indexation ne sont pas acceptables. Une fois les données traitées, elles sont fusionnées en un seul ensemble de données maître. Selon que les données ont été divisées horizontalement ou verticalement, la fusion des données se produit à différents niveaux. Le nombre de fragments ou la taille des données que chaque fragment contient dépend généralement des ressources logicielles et matérielles disponibles.

Les fragments horizontaux s'exécutent indépendamment et peuvent prétraiter et indexer les données. Les fragments verticaux ne peuvent prétraiter que les données. Lors de l'utilisation d'une combinaison de types de fragment, les fragments horizontaux dépendent des fragments verticaux. Autrement dit, aucun des fragments horizontaux ne peut commencer l'indexation tant que tous les fragments verticaux n'ont pas terminé leur prétraitement. Les fragments peuvent être créés pour inclure des fragments horizontaux seulement, ou une combinaison de fragments horizontaux et verticaux.

Remarque : Prenez en considération les restrictions suivantes pour le prétraitement parallèle et l'indexation distribuée :
  • La fragmentation ne remplace pas l'API RESTful d'index de génération existante. Au lieu de cela, il est utilisé comme un chemin d'accès rapide pour l'indexation des données d'entrée de catalogue.
  • La fragmentation prend en charge uniquement les générations d'index complètes. La fragmentation n'est pas nécessaire pour les mises à jour delta, car elles fonctionnent correctement généralement.
  • La fragmentation est utilisée uniquement pour les modifications apportées au contenu approuvé. Il n'est pas utilisé pour les modifications apportées aux espaces de travail.
  • Les données sur les prix des contrats ne sont pas prises en charge par l'utilitaire d'indexation des fragmentations.
  • Cette approche n'est pas prise en charge par une base de données Derby.
Les sections suivantes définissent les types et processus de fragments exécutés pour chaque type, y compris les approches d'indexation.

Fragments horizontaux

Les fragments horizontaux traitent un nombre prédéfini d'entrées de catalogue indépendamment des autres fragments horizontaux. Ils traitent plusieurs propriétés d'entrée de catalogue en même temps.

Les processus suivants se produisent pour les fragments horizontaux :
  1. Les fragments horizontaux prétraitent les données d'entrée de catalogue dans leurs propres tables temporaires.
  2. Les données prétraitées sont indexées dans un noyau d'index distinct.
  3. Les données indexées sont ensuite fusionnées dans un index maître final.
Après le traitement des fragments horizontaux, le format de données final qui est produit est celui des données indexées.

Fragments verticaux

Les fragments verticaux ne traitent qu'une seule propriété de toutes les entrées de catalogue. Autrement dit, une seule opération est effectuée dans les fragments verticaux : Prétraitement des données dans une table temporaire.

En raison des exigences d'indexation Solr, toutes les zones du document d'index Solr doivent être disponibles lors de la création du document. Cette limitation signifie que la fragmentation verticale n'est pas prise en charge pour les versions de HCL Commerce version 9 antérieures à la version 9.0.0.7.

Après le traitement des fragments verticaux, le format de données final qui est produit est celui des données prétraitées.

Pour activer le fragment vertical, voir Activation de la fragmentation verticale et horizontale.

Approches d'indexation des fragments

L'utilitaire d'indexation des fragments (di-parallel-process) prend en charge les approches d'index suivantes par défaut :
  • Indexation des types de fragments horizontaux uniquement, ou
  • Indexation d'une combinaison des types de fragments horizontaux et verticaux.

Indexation des types de fragments horizontaux uniquement

L'indexation des types de fragments horizontaux uniquement entraîne le prétraitement de tous les fragments à la même heure de départ. Ils sont exécutés en parallèle, indépendamment les uns des autres. Une fois que l'un des fragments a terminé le prétraitement, il peut immédiatement commencer à indexer ses données prétraitées dans son propre noyau d'index.

Une fois que tous les fragments sont indexés, une commande de fusion d'index est déclenchée pour fusionner tous les index de fragments dans un seul index maître. Etant donné que tous les fragments horizontaux produisent des données indexées, la fusion qui en résulte fonctionne avec des données indexées pour l'index principal.

Le diagramme suivant montre le processus d'indexation des types de fragments horizontaux uniquement : Où :
  1. Les fragments, A, B et C traitent différentes tailles de plage.
  2. Tous les fragments commencent le prétraitement en même temps.
  3. Chacun des fragments écrit dans ses propres tables temporaires. En raison des différentes valeurs de plage, chaque prétraitement se termine à un moment différent.
  4. L'indexation de chaque fragment commence immédiatement après la fin de sa tâche de prétraitement. Par conséquent, l'indexation commence et se termine à des moments différents.
  5. Une fois que tous les fragments ont terminé leur indexation, une commande de fusion est envoyée pour fusionner les données indexées des trois fragments différents dans l'index principal. Ensuite, les données sont répliquées dans l'index du répéteur.

Indexation des types de fragments horizontaux et verticaux

L'indexation d'une combinaison de fragments horizontaux et verticaux est légèrement différente de l'indexation des fragments horizontaux uniquement. Alors que le prétraitement de tous les fragments peut commencer en même temps, l'indexation horizontale des fragments ne peut commencer qu'après que tous les fragments verticaux ont terminé leur prétraitement. Les fragments horizontaux indexant les scripts lisent les données à partir de la table temporaire de leur propre fragment et de la table temporaire du fragment vertical.

Le diagramme suivant montre le processus d'indexation des types de fragments horizontaux et verticaux : Où :
  • Les tâches de prétraitement de tous les fragments commencent en même temps.
  • Le fragment horizontal B termine sa tâche de prétraitement, mais reste inactif jusqu'à ce que le prétraitement du fragment vertical se termine.
  • Une fois le prétraitement vertical terminé, l'indexation peut commencer.
  • Le fragment vertical n'a qu'une tâche de prétraitement, ce qui entraîne la fusion des données prétraitées par les fragments horizontaux, en plus de leurs propres données prétraitées. Une fois les tâches d'indexation terminées, une commande de fusion est envoyée pour fusionner les données indexées du fragment horizontal dans l'index maître, puis répliquée dans l'index du répéteur.

Par défaut, la hiérarchie du catalogue n'est prise en charge que pour un fragment vertical. Toutefois, vous pouvez créer des fragments verticaux personnalisés pour répondre à vos besoins.

Les critères suivants permettent d'identifier les fichiers XML de prétraitement qui doivent être rendus communs et exécutés dans des fragments différents :
  1. Si le prétraitement de l'une des tables temporaires du fichier XML de prétraitement identifié prend plus de temps que celui des autres tables
  2. Si aucune autre table temporaire ne dépend des tables temporaires du fichier XML identifié
  3. Si aucune des tables temporaires du fichier XML de prétraitement identifié ne se joint à la table de fragments particulière (TI_CATENTRY_0_#SHARD_TAG#)
Si l'une de ces conditions est vraie, alors il peut être déplacé dans son propre fragment et retiré de chacun des fragments individuels. Par exemple, le fichier wc-dataimport-preprocess-parent-catgroup.xml calcule les catégories parent indirectes dont dispose une entrée de catalogue.

Pour obtenir plus d'informations et un exemple de configuration hybride (horizontale et verticale), voir Activation de la fragmentation verticale et horizontale.