Activation de la fragmentation verticale et horizontale

Seule la fragmentation horizontale est activée par défaut dans HCL Commerce version 9. Vous pouvez utiliser la fragmentation verticale avec la fragmentation horizontale si vous activez la fonction.

Pourquoi et quand exécuter cette tâche

Le fichier de configuration utilities_root/properties/parallelprocess/di-parallel-process.properties contient des paramètres pour les fragments horizontaux A, B et C. Ils sont commentés en faveur de la fragmentation automatique, même si l'ancienne fragmentation manuelle est toujours prise en charge.

A l'aide de l'exemple de fichier, vous pouvez construire un régime de fragmentation qui fonctionne comme suit :
Dans cet exemple, deux phases se produisent dans l'exécution de prétraitement. Dans la première phase Global initial, vous traitez les tables de base de données TI_CATENTRY_0 et TI_CGPUB_0 une fois, avant que les fragments ne soient traités. Dans la deuxième phase Prétraitement, les fragments A, B et V commencent leur traitement en parallèle.
  • Avant d'effectuer la première phase Global initial, assurez-vous que le répertoire InitialGlobal référencé par Global.preprocessing-initial-global-table-dir contient les fichiers wc-dataimport-preprocess-fullbuild.xml et wc-dataimport-preprocess-leading.xml. Par défaut, il s'agit du répertoire /opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/search/dataImport/v3/db2/InitialGlobal. Il contient les fichiers wc-dataimport-preprocess-fullbuild.xml.vertical et wc-dataimport-preprocess-leading.xml.vertical. Supprimez l'extension .vertical de chaque fichier et assurez-vous qu'ils contiennent toutes deux des instructions CREATE TABLE pour les tableaux de base de données TI_CATENTRY_0 et TI_CGPUB_0.
  • Les vues TI_CATENTRY_0_A et TI_CATENTRY_0_B utilisent la fonction FinalViewDataPreProcessor pour se mapper à la plage A ou B de TI_CATENTRY_0.
  • TI_CGPUB_0_A et TI_CGPUB_0_B sont des vues qui se mappent à TI_CGPUB_0 (deux de ses alias). D'autres tables temporaires utilisent TI_CATENTRY et TI_CGPUB de façon normale dans chaque fragment.
  • Les vues TI_APGROUP_0 et TI_APGROUPI_0 sont traitées dans le fragment vertical, de sorte que leurs noms n'ont pas de suffixe de fragment.
  • Les définitions VI_CE_0_1_A et VI_CE_0_1_B exigent que TI_APGROUP_#INDEX_SCOPE_NO_SHARD_TAG# et TI_APGROUPI_#INDEX_SCOPE_NO_SHARD_TAG# se réfèrent à la fois aux tables TI_APGROUP_0 et TI_APGROUPI_0.

Pour activer la fonction de fragmentation verticale, procédez comme suit :

Procédure

  1. Avant d'exécuter cette forme hybride de fragmentation, abandonnez les tables TI_CATENTRY_0_A, B,… et TI_CGPUB_0_A, B,…
  2. S'il y a une valeur dans la colonne de configuration, obtenez d'abord la valeur actuelle, ajoutez la partie solr.dih.enableDeepProductSequence=false à la valeur existante, puis mettez à jour.
    Exemple :
    Update the search configuration srchconfext set config ='solr.dih.enableDeepProductSequence=false' where INDEXSCOPE = 'XXXXX' and INDEXSUBTYPE = 'Structured' and INDEXTYPE = 'CatalogEntry'.
  3. Redémarrez le serveur de recherche.
  4. Vérifiez que le Search server redémarre, accédez au conteneur de recherche, assurez-vous que le fichier x-core.properties sous le répertoire /search/index/solr/MC_10001/en_US/CatalogEntry (supposons que l'ID de catalogue principal est 10001) comporte la ligne solr.dih.enableDeepProductSequence=false suivante.
  5. Si la valeur ci-dessus ne se trouve pas dans le fichier x-core.properties, exécutez la commande reload core suivante :
    https://SearchServer:3738/solr/admin/cores?action=RELOAD&core=MC_10001_CatalogEntry_en_US

    Après l'étape 5, revenez à l'étape 3 pour vérifier et confirmer à nouveau.

  6. Déplacez le fichier de configuration /profile/installedApps/localhost/ts.ear/xml/search/dataImport/v3/database/wc-dataimport-preprocess-parent-catgroup.xml vers le répertoire /profile/installedApps/localhost/ts.ear/xml/search/dataImport/v3/database/Shard-V, où database est db2 ou oracle.
  7. Ouvrez le fichier Shards-H/wc-dataimport-preprocess-fullbuild.xml dans un éditeur. Commentez l'entrée de la table TI_CATENTRY_#INDEX_SCOPE_TAG# d'origine (tout entre les balises <_config:data-processing-config ... > et </_config:data-processing-config>). En outre, supprimez la mise en commentaire des propriétés suivantes (supprimez le texte en gras de ce qui suit) :
     <!-- The following definition is only used in hybrid (horizontal + vertical) sharding, comment above definition to use this one -->
      <!-- 
      <_config:data-processing-config processor="com.ibm.commerce.foundation.dataimport.preprocess.FinalViewDataPreProcessor" fetchSize="1" batchSize="1" >
        <_config:table definition="CREATE VIEW TI_CATENTRY_#INDEX_SCOPE_TAG# AS (
                                       SELECT CATENTRY_ID, CATENTTYPE_ID
                                       FROM (SELECT ROW_NUMBER() OVER(ORDER BY CATENTRY_ID) AS RN, *
                                             FROM TI_CATENTRY_#INDEX_SCOPE_NO_SHARD_TAG#)
                                       WHERE RN BETWEEN ?start_value? AND ?end_value?)" name="TI_CATENTRY_#INDEX_SCOPE_TAG#"/>
        <_config:query sql="SELECT 1 CATENTRY_ID FROM CATENTRY WHERE 1=-1"/>
        <_config:mapping>
          <_config:key queryColumn="CATENTRY_ID" tableColumn="CATENTRY_ID"/>
          <_config:column-mapping>
            <_config:column-column-mapping>
                <_config:column-column queryColumn="CATENTTYPE_ID" tableColumn="CATENTTYPE_ID" />
            </_config:column-column-mapping>
            </_config:column-mapping>
        </_config:mapping>           
      </_config:data-processing-config>
      -->
  8. Enregistrez et fermez le fichier.
  9. Ouvrez le fichier de configuration /profile/installedApps/localhost/ts.ear/xml/search/dataImport/v3/database/wc-dataimport-preprocess-finalbuild.xml dans un éditeur. Localisez la chaîne TI_APGROUP_#INDEX_SCOPE_TAG# et remplacez-la par TI_APGROUP_#INDEX_SCOPE_NO_SHARD_TAG#.Localisez la chaîne TI_APGROUPI_#INDEX_SCOPE_TAG# et remplacez-la par TI_APGROUPI_#INDEX_SCOPE_NO_SHARD_TAG#.
  10. Enregistrez et fermez le fichier.
  11. Ouvrez le fichier de configuration /profile/installedApps/localhost/ts.ear/xml/search/dataImport/v3/database/wc-dataimport-preprocess-leading.xml dans un éditeur. Commentez la définition de la table TI_CGPUB_#INDEX_SCOPE_TAG# d'origine (tout ce qui se trouve entre les balises <_config:data-processing-config ... > et </_config:data-processing-config>). En outre, supprimez la mise en commentaire des propriétés suivantes (supprimez le texte en gras de ce qui suit) :
    <!-- The following definition is only used in hybrid (horizontal + vertical) sharding, comment above definition to use this one. -->
        <!-- 
        <_config:data-processing-config processor="com.ibm.commerce.foundation.dataimport.preprocess.FinalViewDataPreProcessor" fetchSize="1" batchSize="1">
            <_config:table definition="CREATE VIEW TI_CGPUB_#INDEX_SCOPE_TAG# AS (
                                           SELECT *
                                           FROM TI_CGPUB_#INDEX_SCOPE_NO_SHARD_TAG#
                                       )" name="TI_CGPUB_#INDEX_SCOPE_TAG#"/>
            <_config:query sql="SELECT 1 CATENTRY_ID FROM CATENTRY WHERE 1=-1"/>
            <_config:mapping>
              <_config:key queryColumn="CATGROUP_ID" tableColumn="CATGROUP_ID"/>
              <_config:column-mapping>
                <_config:column-column-mapping>
                    <_config:column-column queryColumn="PUBLISHED" tableColumn="PUBLISHED" />
                </_config:column-column-mapping>
                </_config:column-mapping>
            </_config:mapping>           
        </_config:data-processing-config>
        -->
    
  12. Enregistrez et fermez le fichier.
  13. Ouvrez utilities_root/properties/parallelprocess/di-parallel-processing.properties dans un éditeur. Supprimez la mise en commentaire (supprimez les signes numériques en gras) les lignes suivantes :
    #Global.preprocessing-initial-global-table-dir = /opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/search/dataImport/v3/db2/InitialGlobal
    
    #Shard.V.common.preprocessing-dir=/opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/search/dataImport/v3/db2/Shard-V
    #Shard.V.common.configuration-type=vertical
    
  14. Enregistrez et fermez le fichier.
  15. Exécutez la commande suivante à partir du répertoire utiltities_root/bin pour démarrer le traitement parallèle :
    di-parallel-process.sh ../properties/parallelprocess/di-parallel-process.properties