Cuál la diferencia entre una entrada /salida sincrónica y una asincrónica?

Respuestas

Respuesta dada por: ladybug3614
1
ParPara ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.TraducciónInglésDescripción de las transformaciones sincrónicas y asincrónicasSQL Server 2014Otras versiones 

Para entender la diferencia que existe entre una transformación sincrónica y una transformación asincrónica en Integration Services, lo más fácil es empezar por la descripción de una transformación sincrónica. Si una transformación sincrónica no satisface sus necesidades, puede que su diseño requiera una transformación asincrónica.

Transformaciones sincrónicas

Una transformación sincrónica procesa las filas entrantes y se las pasa al flujo de datos de una en una. La salida es sincrónica con respecto a la entrada, lo que significa que tienen lugar al mismo tiempo. Por lo tanto, para procesar una fila determinada, la transformación no necesita información sobre otras filas del conjunto de datos. En la implementación real, las filas se agrupan en búferes cuando se pasan de un componente al siguiente, pero estos búferes son visibles para el usuario y puede suponerse que cada fila se procesa por separado.

Un ejemplo de transformación sincrónica es la transformación Conversión de datos. Para cada fila entrante, convierte el valor de la columna especificada y envía la fila a lo largo de su recorrido. Cada operación de conversión discreta es independiente del resto de las filas del conjunto de datos.

En scripting y programación de Integration Services, para especificar una transformación sincrónica debe buscar el identificador de entrada de un componente y asígneselo a la propiedad SynchronousInputID de las salidas del componente. Esto indica al motor de flujo de datos que procese cada fila de entrada y se la envíe automáticamente a las salidas especificadas. Si desea que cada fila se dirija a cada una de las salidas, no es necesario que escriba código adicional para generar los datos. Si usa la propiedad ExclusionGroup para especificar que las filas solo se dirijan a uno u otro de los grupos de salidas, como en el caso de la transformación División condicional, debe llamar al método DirectRowpara seleccionar el destino adecuado para cada fila. Cuando tenga una salida de error, deberá llamar a DirectErrorRow para enviar las filas con problemas a la salida de error en lugar de enviarlas a la salida predeterminada.

Transformaciones asincrónicas

Es posible que decida que su diseño requiere una transformación asincrónica cuando no es posible procesar cada fila independientemente del resto de las filas. En otras palabras, no es posible pasar cada fila al flujo de datos en cuanto se procesa, sino que los datos deben generarse de forma asincrónica o en un momento distinto al de la entrada. Por ejemplo, los siguientes escenarios requieren una transformación asincrónica:

El componente debe adquirir varios búferes de datos para poder realizar su procesamiento. Un ejemplo es la transformación Ordenar, donde el componente tiene que procesar el conjunto de filas completo en una sola operación.El componente tiene que combinar filas de varias entradas. Un ejemplo es la transformación Mezclar, donde el componente tiene que examinar varias filas de cada entrada y, a continuación, combinarlas de forma ordenada.No hay una correspondencia de uno a uno entre las filas de entrada y las filas de salida. Un ejemplo es la transformación Agregado, donde el componente tiene que agregar una fila a la salida para almacenar los valores de agregado calculados.

En scripting y programación de Integration Services, para especificar una transformación asincrónica se asigna el valor 0 a la propiedad SynchronousInputID de las salidas del componente. . Esto indica al motor de flujo de datos que no envíe cada fila automáticamente a las salidas. A continuación, debe escribir código para enviar cada fila explícitamente a la salida adecuada agregándosela al nuevo búfer de salida 

Preguntas similares