Altova MapForce Server 2025 Advanced Edition

Optimización por combinación

Inicio Anterior Inicio Siguiente

La optimización por combinación permite acelerar la ejecución de las asignaciones de datos en las que se filtran o combinan conjuntos de datos de gran tamaño.

 

La optimización por combinación funciona eliminando bucles anidados que ocurren durante la ejecución de la asignación de datos. Los bucles anidados se producen cuando la asignación recorre cada elemento de un conjunto tantas veces como elementos existan en otro conjunto de datos. Recuerde que es normal que el motor* de ejecución de asignaciones efectúe bucles (iteraciones) en varias secuencias de elementos. Cuando se producen bucles anidados independientes (es decir, bucles que recorren otros bucles), la asignación puede favorecerse de la optimización por combinación, ya que permite reducir el tiempo necesario para ejecutar la asignación. Cuando se ejecutan asignaciones donde los datos de entrada no son significativamente grandes, los bucles anidados apenas se perciben. Sin embargo, pueden ser un problema en el caso de asignaciones que procesan archivos o bases de datos que constan de un gran número de registros.

 

* El motor de ejecución de una asignación puede ser MapForce, MapForce Server o un programa C#, C++ o Java generado con MapForce. La optimización por combinación es una característica exclusiva de MapForce Server Advanced Edition.

 

Para designar MapForce Server como motor de ejecución de destino, haga clic en el botón BUILT-IN ( ic-builtin ) de la barra de herramientas de MapForce. Esta opción también activa la gran mayoría de características de MapForce. Si selecciona otro lenguaje de transformación, ciertas características de MapForce pueden ser incompatibles con el lenguaje elegido.

 

Como ya hemos dicho, el propósito principal de la optimización por combinación es abordar los bucles anidados de una manera eficiente. Pero primero vamos a ver en detalle cómo se producen los bucles anidados.

 

Por lo general, los bucles anidados se producen cuando la asignación de datos contiene al menos un componente de combinación no es posible usar el modo de combinación SQL**.

 

** Cuando se cumplen ciertas condiciones en MapForce, las asignaciones podrían permitir un modo de ejecución especial llamado "modo de combinación SQL". El modo de combinación SQL solo está disponible si la asignación lee datos de una base de datos. Cuando los datos se combinan de esta manera, la base de datos se encarga de la operación de combinación se (es decir, se hace un SQL JOIN) y esto permite poder prescindir de los bucles anidados en el motor de ejecución de la asignación. Para más información sobre el modo de combinación SQL, consulte la documentación de Altova MapForce (https://www.altova.com/es/documentation.html).

 

Por ejemplo, más abajo puede ver una asignación de datos diseñada con Altova MapForce que combina datos de dos archivos XML mediante un componente de combinación. En el equipo donde está instalado MapForce, esta asignación está disponible en la siguiente ruta: ..\Documents\Altova\MapForce2025\MapForceExamples\Tutorial\JoinPeopleInfo.mfd. Los datos de algunas personas solamente están disponibles en el primer archivo XML (Email, Phone), mientras que otros datos solamente están en el segundo archivo XML (City, Street, Number). El objetivo de la asignación es escribir en el archivo XML de destino los datos combinados de todas las personas cuyos elementos FirstName y LastName sean idénticos en ambas estructuras.

mfs_map_JoinPeopleInfo

JoinPeopleInfo.mfd

En MapForce, el componente de combinación agrupa los elementos en dos conjuntos según determinada condición, lo cual implica comparar cada elemento del conjunto 1 con cada elemento del conjunto 2. El número total de comparaciones representa la combinación cruzada (producto cartesiano) de ambos conjuntos. Por ejemplo, si el primer conjunto contiene 50 elementos y el segundo conjunto contiene 100, entonces se producirá un total de 5000 (50 x 100) comparaciones. En la asignación de la imagen anterior, los conjuntos que se comparan equivalen a todos los elementos de instancia de las dos estructuras XML que están conectadas al componente de combinación.

 

Nota: La optimización por combinación (una característica de MapForce Server Advanced Edition) no debe confundirse con los componentes de combinación (una característica de MapForce). Para más información sobre los componentes de combinación, consulte la documentación de MapForce (https://www.altova.com/es/documentation.html).

 

Como cabe esperar, desde el punto de vista del rendimiento, las asignaciones de datos que contienen bucles anidados tardan más en ejecutarse. Imagine que ambos conjuntos contienen millones de registros. Es fácil que esto afecte al rendimiento y, en casos así, la optimización por combinación sería de gran ayuda. En líneas muy generales, la optimización por combinación funciona como un motor de base de datos optimizado para buscar (indexar) conjuntos de datos extremadamente grandes. Salvo que, como ilustra la asignación de datos anterior, la optimización por combinación no solo se ocupa de los datos procedentes de las bases de datos. La optimización por combinación elimina los bucles anidados, independientemente de la clase de datos, mediante la generación de tablas de consulta internas que se consultan en tiempo de ejecución. Esto mejora considerablemente el rendimiento de la asignación y en definitiva reduce el tiempo necesario para ejecutar la asignación.

 

Nota: cuando se produce la optimización por combinación, la ejecución de la asignación tardará menos, pero necesitará más memoria. Tenga en cuenta que los patrones de uso de memoria dependen de varios factores complejos y, por tanto, el funcionamiento exacto dependerá de cada caso.

 

La optimización por combinación no solo puede acelerar las asignaciones de datos que incluyan combinaciones, sino también las que incluyan componentes de filtrado. En MapForce, los filtros procesan secuencias de elementos (es decir, comprueban si se cumple cierta condición binaria en cada instancia del elemento que está conectado a la entrada node/row). Si la condición binaria está conectada a una función que, a su vez, debe recorrer otra secuencia de elementos y, si el contexto de asignación así lo requiere, entonces tendremos una situación parecida a cuando se produce una combinación. Si el filtro debe hacer una comparación cruzada de cada elemento de los dos conjuntos, entonces puede optimizarse por combinación.

 

Para poder favorecerse de la optimización por combinación, la asignación debe ejecutarse con MapForce Server Advanced Edition. Para ejecutar una asignación con MapForce Server Advanced Edition, debe abrir la asignación en MapForce y compilarla en un archivo de ejecución (.mfx) (con el comando de menú Archivo | Compilar en archivo de ejecución de MapForce Server). A continuación, ejecute el archivo .mfx utilizando un método de la API en el lenguaje que prefiera, o el comando run de la interfaz de la línea de comandos (consulte cómo funciona).

© 2019-2025 Altova GmbH