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
Antes de ejecutar esta forma híbrida de fragmentación, suelte las tablas TI_CATENTRY_0_A, B,... y TI_CGPUB_0_A, B,...
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'.
Reinicie el servidor de búsqueda.
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.
Si el valor anterior no está en el archivo x-core.properties, ejecute el siguiente comando de núcleo de recarga:
Después del paso 5, vuelva al paso 3 para comprobarlo y confirmarlo de nuevo.
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.
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>
-->
Guarde y cierre el archivo.
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#.
Guarde y cierre el archivo.
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>
-->
Guarde y cierre el archivo.
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: