Habilitar la fragmentación vertical y horizontal

La fragmentación horizontal solo está habilitada de forma predeterminada en la HCL Commerce versión 9. Puede utilizar la fragmentación vertical con fragmentación horizontal si habilita la característica.

Por qué y cuándo se efectúa esta tarea

El archivo de configuración utilities_root/properties/parallelprocess/di-parallel-process.properties contiene valores para fragmentos horizontales A, B y C. Se comentan en favor de la fragmentación automática, aunque todavía se da soporte a la fragmentación manual antigua.

Utilizando el archivo de ejemplo, puede crear un régimen de fragmentación que funcione de la siguiente manera:
En este ejemplo, se producen dos fases en la ejecución de preproceso. En la primera fase global inicial, procese las tablas de base de datos TI_CATENTRY_0 y TI_CGPUB_0 una vez, antes de que se procesen los fragmentos. En la segunda fase de preproceso, los fragmentos A, B y V inician su proceso en paralelo.
  • Antes de realizar la primera fase global inicial, asegúrese de que el directorio InitialGlobal al que hace referencia Global.preprocessing-initial-global-table-dir contiene los archivos wc-dataimport-preprocess-fullbuild.xml y wc-dataimport-preprocess-leading.xml. De forma predeterminada, este es el directorio /opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/search/dataImport/v3/db2/InitialGlobal. Contiene los archivos wc-dataimport-preprocess-fullbuild.xml.vertical y wc-dataimport-preprocess-leading.xml.vertical. Elimine la extensión .vertical de cada archivo y asegúrese de que ambos contienen sentencias CREATE TABLE para las tablas de base de datos TI_CATENTRY_0 y TI_CGPUB_0.
  • Las vistas TI_CATENTRY_0_A y TI_CATENTRY_0_B utilizan la función FinalViewDataPreProcessor para correlacionar con el rango A o B de TI_CATENTRY_0.
  • TI_CGPUB_0_A y TI_CGPUB_0_B son vistas que se correlacionan con TI_CGPUB_0 (dos alias de la misma). Otras tablas temporales utilizan TI_CATENTRY y TI_CGPUB de la forma normal en cada fragmento.
  • Tanto TI_APGROUP_0 como TI_APGROUPI_0 se procesan en el fragmento vertical, por lo que sus nombres no tienen ningún sufijo fragmentado.
  • Las definiciones VI_CE_0_1_A y VI_CE_0_1_B requieren la TI_APGROUP_#INDEX_SCOPE_NO_SHARD_TAG# y TI_APGROUPI_#INDEX_SCOPE_NO_SHARD_TAG# para hacer referencia a las tablas TI_APGROUP_0 y TI_APGROUPI_0.

Para habilitar el fragmentado vertical, siga los pasos siguientes:

Procedimiento

  1. Antes de ejecutar esta forma híbrida de fragmentación, suelte las tablas TI_CATENTRY_0_A, B,... y TI_CGPUB_0_A, B,...
  2. Si hay un valor en la columna de configuración, obtenga primero el valor actual, añada la parte al valor existente solr.dih.enableDeepProductSequence=false y, a continuación, actualice.
    Por ejemplo:
    Update the search configuration srchconfext set config ='solr.dih.enableDeepProductSequence=false' where INDEXSCOPE = 'XXXXX' and INDEXSUBTYPE = 'Structured' and INDEXTYPE = 'CatalogEntry'.
  3. Reinicie el servidor de búsqueda.
  4. Confirme que Search server se reinicia, vaya al contenedor de búsqueda y asegúrese de que el archivo /search/index/solr/MC_10001/en_US/CatalogEntry que se encuentra en el directorio x-core.properties (supongamos que el ID de catálogo maestro es 10001) tiene la línea siguiente: solr.dih.enableDeepProductSequence=false.
  5. Si el valor anterior no está en el archivo x-core.properties, ejecute el siguiente comando de núcleo de recarga:
    https://SearchServer:3738/solr/admin/cores?action=RELOAD&core=MC_10001_CatalogEntry_en_US

    Después del paso 5, vuelva al paso 3 para comprobarlo y confirmarlo de nuevo.

  6. Mueva el archivo de configuración de /profile/installedApps/localhost/ts.ear/xml/search/dataImport/v3/database/wc-dataimport-preprocess-parent-catgroup.xml al directorio de /profile/installedApps/localhost/ts.ear/xml/search/dataImport/v3/database/Shard-V, donde database es db2 o bien oracle.
  7. Abra el archivo Shards-H/wc-dataimport-preprocess-fullbuild.xml en un editor de texto. Comente la entrada de la tabla TI_CATENTRY_#INDEX_SCOPE_TAG# original (todo lo que hay entre las etiquetas <_config:data-processing-config ... > y </_config:data-processing-config>). Además, elimine el comentario de las siguientes propiedades (quite el texto en negrita de lo siguiente):
     <!-- 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. Guarde y cierre el archivo.
  9. Abra el archivo de configuración de /profile/installedApps/localhost/ts.ear/xml/search/dataImport/v3/database/wc-dataimport-preprocess-finalbuild.xml en un editor de texto. Localice la cadena TI_APGROUP_#INDEX_SCOPE_TAG# y cámbiela por TI_APGROUP_#INDEX_SCOPE_NO_SHARD_TAG#.Localice la cadena TI_APGROUPI_#INDEX_SCOPE_TAG# y cámbiela por TI_APGROUPI_#INDEX_SCOPE_NO_SHARD_TAG#.
  10. Guarde y cierre el archivo.
  11. Abra el archivo de configuración de /profile/installedApps/localhost/ts.ear/xml/search/dataImport/v3/database/wc-dataimport-preprocess-leading.xml en un editor de texto. Comente la definición de la tabla original TI_CGPUB_#INDEX_SCOPE_TAG# (todo lo que hay entre las etiquetas <_config:data-processing-config ... > y </_config:data-processing-config>). Además, elimine el comentario de las siguientes propiedades (quite el texto en negrita de lo siguiente):
    <!-- 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. Guarde y cierre el archivo.
  13. Abra utilities_root/properties/parallelprocess/di-parallel-processing.properties en un editor. Quite el comentario (elimine los signos de número en negrita) de las líneas siguientes:
    #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. Guarde y cierre el archivo.
  15. Ejecute el siguiente mandato desde el directorio utiltities_root/bin para iniciar el proceso paralelo:
    di-parallel-process.sh ../properties/parallelprocess/di-parallel-process.properties