다음을 통해 공유


동기 및 비동기 변환 이해

적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime

Integration Services에서 동기 변환과 비동기 변환의 차이점을 이해하려면 동기 변환을 이해하는 것으로 시작하는 것이 가장 쉽습니다. 동기 변환이 요구 사항을 충족하지 않는 경우 디자인에 비동기 변환이 필요할 수 있습니다.

동기 변환

동기 변환은 들어오는 행을 처리한 후 데이터 흐름에서 한 번에 한 행씩 전달합니다. 출력은 입력과 동기적으로, 즉 동시에 발생합니다. 따라서 지정된 행을 처리하기 위해 변환에는 데이터 집합의 다른 행에 대한 정보가 필요하지 않습니다. 실제 구현에서 행은 한 구성 요소에서 다음 구성 요소로 전달될 때 버퍼로 그룹화되지만 버퍼는 사용자가 인식할 수 있으므로 각 행이 개별적으로 처리되는 것으로 가정할 수 있습니다.

동기 변환의 예로는 데이터 변환이 있습니다. 이 변환에서는 들어오는 각 행에 대해 지정된 열의 값을 변환하고 해당 행을 개별적으로 보냅니다. 각 불연속 변환 작업은 데이터 집합의 다른 모든 행과 독립적입니다.

Integration Services 스크립팅 및 프로그래밍에서 구성 요소 입력의 ID를 조회하고 구성 요소 출력의 SynchronousInputID 속성에 할당하여 동기 변환을 지정합니다. 이렇게 하면 데이터 흐름 엔진이 입력에서 각 행을 처리하고 각 행을 지정된 출력으로 자동으로 보내도록 지시합니다. 모든 행을 모든 출력으로 보내려는 경우에는 데이터를 출력하기 위한 추가 코드를 작성할 필요가 없습니다. ExclusionGroup 속성을 사용하여 조건부 분할 변환에서처럼 행이 출력 그룹 중 하나 또는 다른 그룹으로만 이동하도록 지정하는 경우 DirectRow 메서드를 호출하여 각 행에 적절한 대상을 선택해야 합니다. 오류 출력이 있는 경우 DirectErrorRow를 호출하여 문제가 있는 행을 기본 출력 대신 오류 출력으로 보내야 합니다.

비동기 변환

다른 모든 행과 독립적으로 각 행을 처리할 수 없는 경우 디자인에 비동기 변환이 필요하다고 결정할 수 있습니다. 즉, 처리될 때 데이터 흐름에서 각 행을 전달할 수 없지만 대신 입력과 비동기적으로 또는 다른 시간에 데이터를 출력해야 합니다. 예를 들어 다음 시나리오에는 비동기 변환이 필요합니다.

  • 구성 요소에서 처리를 수행하기 전에 여러 개의 데이터 버퍼를 확보해야 하는 경우. 예를 들어 정렬 변환이 있습니다. 여기서 구성 요소는 단일 작업에서 행의 전체 집합을 처리해야 합니다.

  • 구성 요소는 여러 입력의 행을 결합해야 합니다. 예를 들어 병합 변환이 있습니다. 여기서 구성 요소는 각 입력에서 여러 행을 검사한 다음 정렬된 순서로 병합해야 합니다.

  • 입력 행과 출력 행 사이에는 일대일 대응이 없습니다. 예를 들어 집계 변환이 있습니다. 여기서 구성 요소는 계산된 집계 값을 보유하기 위해 출력에 행을 추가해야 합니다.

Integration Services 스크립팅 및 프로그래밍에서 구성 요소 출력의 SynchronousInputID 속성에 값 0을 할당하여 비동기 변환을 지정합니다. . 이렇게 하면 각 행을 출력에 자동으로 보내지 않도록 데이터 흐름 엔진에 지시합니다. 그런 다음 비동기 변환의 출력에 대해 만들어진 새 출력 버퍼에 추가하여 각 행을 적절한 출력에 명시적으로 보내는 코드를 작성해야 합니다.

참고 항목

원본 구성 요소는 데이터 원본에서 읽는 각 행을 출력 버퍼에 명시적으로 추가해야 하므로 원본은 비동기 출력이 있는 변환과 유사합니다.

또한 각 입력 행을 출력에 명시적으로 복사하여 동기 변환을 에뮬레이트하는 비동기 변환을 만들 수도 있습니다. 이 방법을 사용하면 열의 이름을 바꾸거나 데이터 형식 또는 형식을 변환할 수 있습니다. 그러나 이 방법은 성능을 저하합니다. 열 복사 또는 데이터 변환과 같은 기본 제공 Integration Services 구성 요소를 사용하여 더 나은 성능으로 동일한 결과를 얻을 수 있습니다.

참고 항목

스크립트 구성 요소를 사용하여 동기 변환 만들기
스크립트 구성 요소를 사용하여 비동기 변환 만들기
동기 출력을 사용하여 사용자 지정 변환 구성 요소 개발
비동기 출력을 사용하여 사용자 지정 변환 구성 요소 개발