Preproceso paralelo e indexación distribuida

Puede indexar datos de catálogos grandes en el servidor de búsqueda con el preproceso paralelo y la indexación distribuida mediante la fragmentación y fusión.

Los datos se pueden dividir horizontal o verticalmente en distintas hebras, para que cada hebra pueda procesar bloques más pequeños de los datos. Este enfoque es útil cuando el tamaño de catálogo es grande o cuando los tiempos de preproceso e indexación no son aceptables. Después de que los datos se hayan procesado, se fusionan en un único conjunto de datos maestro. En función de si los datos se han dividido horizontal o verticalmente, la fusión de los datos se produce en diferentes niveles. El número de fragmentos o el tamaño de los datos que cada fragmento contiene suele depender de los recursos de software y hardware disponibles.

Los fragmentos horizontales se ejecutar de forma independiente y pueden preprocesar e indexar datos. Los fragmentos verticales solo pueden preprocesar datos. Cuando se utiliza una combinación de tipos de fragmento, los fragmentos horizontales dependen de los fragmentos verticales. Es decir, ninguno de los fragmentos horizontales puede empezar a indexar hasta que todos los fragmentos verticales hayan completado su preproceso. Se pueden crear fragmentos para incluir solo fragmentos horizontales o una combinación de fragmentos horizontales y verticales.

Nota: Tenga en cuenta las restricciones siguientes para el preproceso paralelo y la distribuido distribuida:
  • La fragmentación no sustituye la API RESTFul de índice de compilación existente. En cambio, se utiliza como una vía de acceso rápida para indexar datos de entrada de catálogo.
  • La fragmentación solo soporta generaciones de índice completas. La fragmentación no es necesaria para las actualizaciones delta porque normalmente su ejecución no es mala.
  • La fragmentación solo se utiliza para cambios en contenido aprobado. No se utiliza para cambios en espacios de trabajo.
  • El programa de utilidad de indexación de fragmentos no soporta los datos de precios de contrato.
  • Una base de datos Derby no soporta este método.
Las secciones siguientes definen los tipos de fragmento y los procesos que se llevan a cabo para cada tipo, incluidos los métodos de indexación.

Fragmentos horizontales

Los fragmentos horizontales procesan un número predefinido de entradas de catálogo de manera independiente de los demás fragmentos horizontales. Procesa varias propiedades de entrada de catálogo al mismo tiempo.

Se producen los procesos siguientes para los fragmentos horizontales:
  1. Los fragmentos horizontales preprocesan los datos de entrada de catálogo en sus propias tablas temporales.
  2. Los datos preprocesados se indexan en un núcleo de índice independiente.
  3. A continuación, los datos indexados se fusionan posteriormente en un índice maestro final.
Después de procesar los fragmentos horizontales, el formato de datos final que se produce son datos indexados.

Fragmentos verticales

Los fragmentos verticales solo procesan una propiedad de todas las entradas de catálogo. Es decir, solo se realiza una operación en fragmentos verticales: Preprocesar la carga de datos en la tabla temporal.

Debido a los requisitos de indexación de Solr, los campos del documento de índice de Solr entero deben estar disponibles cuando se crea el documento. Esta limitación significa que la fragmentación vertical no está soportada para versiones de HCL Commerce versión 9 antes de 9.0.0.7.

Después de procesar fragmentos verticales, el formato de datos final que se produce son datos preprocesados.

Para habilitar la fragmentación vertical, consulte Habilitar la fragmentación vertical y horizontal.

Métodos de indexación de fragmento

El programa de utilidad de indexación de fragmento (di-parallel-process) soporta los siguientes métodos de índice de forma predeterminada:
  • Indexar solo tipos de fragmentos horizontales o
  • Indexar una combinación de tipos de fragmentos horizontales y verticales.

Indexar solo tipos de fragmentos horizontales

Si solo se indexan tipos de fragmentos horizontales, todos los fragmentos se preprocesan a la misma hora de inicio. Se ejecutan en paralelo, independientemente unos de otros. Después de que cualquiera de los fragmentos haya completado el preproceso, puede iniciar inmediatamente la indexación de los datos preprocesados en su propio núcleo de índice.

Después de que se hayan indexado todos los fragmentos, se desencadena un mandato de fusión de índice para fusionar todos los índices de fragmento de índice en un único índice maestro. Dado que todos los fragmentos horizontales producen datos indexados, la fusión resultante funciona con datos indexados para el índice maestro.

El diagrama siguiente muestra el proceso para indexar tipos de fragmentos horizontales:Donde:
  1. Los fragmentos A, B y C procesan tamaños de rangos diferentes.
  2. Todos los fragmentos empiezan a preprocesarse al mismo tiempo.
  3. Cada uno de los fragmentos graba en sus propias tablas temporales. Debido a los diferentes valores de rango, cada preproceso se completa en un momento diferente.
  4. La indexación de cada fragmento se inicia inmediatamente después de que se haya completado la tarea de preproceso. Por lo tanto, la indexación empieza y termina en momentos diferentes.
  5. Después de que todos los fragmentos hayan completado su indexación, se envía un mandato de fusión para fusionar los datos indexados de tres fragmentos diferentes en el índice maestro. A continuación, los datos se replican en el índice de repetidor.

Indexación de tipos de fragmentos horizontales y verticales

La indexación de una mezcla de tipos de fragmentos horizontales y verticales es ligeramente diferente de la indexación de fragmentos horizontales solamente. Mientras que el preproceso de todos los fragmentos pueden iniciarse al mismo tiempo, la indexación de fragmentos horizontales puede empezar solo después de todos los fragmentos verticales hayan completado su preproceso. Los scripts de indexación de fragmentos horizontales leen datos de la tabla temporal del propio fragmento y de la tabla temporal del fragmento vertical.

El diagrama siguiente muestra el proceso para indexar tipos de fragmentos horizontales y verticales:Donde:
  • Todas las tareas de preproceso de fragmentos empiezan al mismo tiempo.
  • El fragmento horizontal B completa su tarea de preproceso, sin embargo permanece desocupado hasta que se completa el preproceso de fragmento vertical.
  • Una vez que se ha completado el preproceso de fragmento vertical, la indexación puede empezar.
  • El fragmento vertical solo tiene una tarea de preproceso, que hace que los fragmentos de horizontales fusionen los datos preprocesados, además de sus propios datos preprocesados. Una vez que se han completado las tareas de indexación, se envía un mandato de fusión para fusionar los datos indexados del fragmento horizontal en el índice maestro y, a continuación, se replican en el índice de repetidor.

De forma predeterminada, la jerarquía de catálogo solo se soporta para un fragmento vertical. Sin embargo, puede crear fragmentos verticales personalizados para que se adapten a sus necesidades.

Los siguientes criterios ayudan a identificar qué archivos XML de preproceso deben ser comunes y ejecutarse en distintos fragmentos:
  1. Si alguna de las tablas temporales del archivo XML de preproceso identificado tarda más tiempo en preprocesarse que otras tareas
  2. Si ninguna otra tabla temporal depende de las tablas temporales del archivo XML identificado
  3. Si ninguna de las tablas temporales del archivo XML de preproceso identificado se une con la tabla fragmento en particular (TI_CATENTRY_0_#SHARD_TAG#)
Si alguna de estas condiciones es verdadera, puede moverse a su propio fragmento y eliminarse de cada uno de los fragmentos individuales. Por ejemplo, el archivo wc-dataimport-preprocess-parent-catgroup.xml calcula las categorías padre indirectas que tiene una entrada de catálogo.

Para obtener más información y un ejemplo de configuración de fragmentación híbrida (horizontal y vertical), consulte Habilitar la fragmentación vertical y horizontal.