병렬로 데이터 집합 세그먼트 로딩
전체 로드 중에 데이터 집합을 여러 세그먼트로 분할하여 병렬로 로드함으로써 대용량 데이터 집합의 로드 속도를 높일 수 있습니다. 테이블은 데이터 범위, 모든 파티션, 모든 하위 파티션 또는 특정 파티션별로 분할할 수 있습니다.
각 데이터 집합 세그먼트는 별도의 하위 작업을 사용하여 로드됩니다. 따라서 데이터 집합의 분할 방법을 결정할 때는 항상 데이터베이스와 네트워크 리소스의 가용성을 고려해야 합니다. 테이블을 너무 많은 세그먼트로 분할하면 데이터베이스 성능에 영향을 미치고 네트워크 용량에 과부하를 일으킬 수 있습니다. 분할된 데이터 집합에 데이터 범위 분할 방법을 선택하는 경우, 각 범위가 하나 이상의 전체 파티션을 포함하도록 범위를 설정하는 것이 가장 좋습니다. 이를 통해 데이터 검색이 더욱 빨라지고 데이터베이스 처리 리소스에 미치는 영향이 최소화됩니다.
지원되는 데이터 소스 및 대상
데이터 작업은 다음 데이터 소스 및 대상 커넥터를 조합하여 정의해야 합니다.
지원되는 데이터 소스 커넥터
- IBM DB2 for LUW
-
IBM DB2 for z/OS
정보 메모IBM DB2 for z/OS 소스 커넥터에서는 파티션이나 하위 파티션에 따른 테이블 분할이 지원되지 않습니다.
- Microsoft SQL Server(로그 기반)
- MySQL
- Oracle
-
PostgreSQL
정보 메모PostgreSQL 소스 커넥터에서는 파티션이나 하위 파티션에 따른 테이블 분할이 지원되지 않습니다.
- SAP(응용 프로그램)정보 메모
SAP(응용 프로그램) 소스 종료 지점이 있는 테이블은 기본적으로 클라이언트에 따라 다릅니다. MANDT 열은 자동으로 커넥터에서 직접 가져옵니다.
- SAP HANA(데이터베이스)
지원되는 대상 커넥터
- Amazon Redshift
- Amazon S3
- Google Cloud BigQuery
- Google 클라우드 저장소
- Microsoft Fabric 데이터 웨어하우스
- Microsoft SQL Server
- MySQL
- Oracle
- PostgreSQL
- Snowflake
병렬 로드 설정
데이터 범위 또는 파티션이라는 두 가지 방법 중 하나를 사용하여 테이블을 분할할 수 있습니다. 데이터 범위 방법은 테이블을 데이터 범위에 따라 분할하고, 파티션 방법은 테이블을 파티션에 따라 분할합니다.
데이터 범위 방법 사용
데이터 범위로 세그먼트 경계를 정의하려면:
-
데이터 집합 탭에서 데이터 집합 오른쪽에 있는
메뉴를 클릭하고 설정을 선택합니다.
병렬 로드 대화 상자가 열립니다.
-
데이터 범위 분할 방법을 선택합니다.
-
열 선택을 클릭합니다.
표 분할 열 대화 상자가 열립니다.
-
지원되는 모든 데이터 소스에 대해 고유 인덱스 열이 자동으로 선택됩니다. 범위를 구분하는 데 사용할 데이터가 있는 추가 열을 선택한 다음 확인을 클릭합니다.
정보 메모-
NULL을 허용하지 않고 일반적인 소스 데이터베이스 작업 중에 업데이트되지 않는 열(예: 기본 키 열 또는 고정 날짜가 있는 날짜 열)을 사용하는 것이 좋습니다. 전체 로드 중에 업데이트된 열을 사용하면 대상 데이터베이스에 중복이 발생할 수 있습니다.
-
데이터 검색 성능을 최적화하려면 인덱스가 지정된 소스 열을 사용하는 것이 좋습니다.
-
최대 10개의 열을 선택할 수 있습니다.
-
null 값이 있는 레코드는 복제되지 않습니다.
-
다음 데이터 유형은 범위로 세그먼트를 정의하는 데 사용할 수 없습니다. DOUBLE, FLOAT 및 LOB(BLOB, CLOB, NCLOB)
-
-
데이터 범위 추가를 클릭하여 데이터 범위 세그먼트를 추가합니다.
선택한 열과 함께 데이터 범위 추가 대화 상자가 열립니다.
-
각 열에 대해 세그먼트의 상위 데이터 범위를 입력합니다.
정보 메모DATE 열의 값은 소스에서 지원하는 형식으로 입력해야 합니다. 예를 들어, Oracle 소스의 경우 올바른 형식은 다음과 같습니다.
-
ALTER SESSION SET NLS_DATE_FORMAT:
'YYYY-MM-DD HH24:MI:SS'(YYYY-MM-DD만 지정하는 것도 유효함)
-
ALTER SESSION SET NLS_TIMESTAMP_FORMAT:
'YYYY-MM-DD HH24:MI:SS.FF9'
-
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT:
'YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM'
-
-
확인을 클릭하여 설정을 저장하고 대화 상자를 닫습니다.
선택한 각 열이 지정된 범위와 함께 나타납니다.
- 필요에 따라 3~6단계를 반복하여 열과 데이터 범위를 추가합니다.
- 유효성 검사를 클릭하여 입력한 데이터가 소스 열 데이터 유형과 일치하고 정의된 모든 세그먼트에 값이 포함되어 있는지 유효성을 검사합니다.
데이터 범위 분할 방법을 사용하면 모든 열에 대한 데이터 범위가 정의되지 않은 경우에도 모든 테이블 데이터가 복제됩니다.
데이터 범위를 편집하려면:
- 행의 끝에 있는
메뉴를 클릭하고 편집을 선택합니다.
- 필요에 따라 데이터 범위를 편집하고 확인을 클릭하여 변경 내용을 저장합니다.
데이터 범위를 삭제하려면:
- 행 끝에 있는
메뉴를 클릭하고 삭제를 선택합니다.
- 삭제 확인 메시지가 나타나면 삭제를 클릭합니다.
사용 예
다음과 같은 세그먼트가 정의되어 있다고 가정해 보겠습니다.
Column_1 | Column_2 | Column_3 |
---|---|---|
10 |
30 |
105 |
20 |
20 |
120 |
100 |
12 |
99 |
이 경우, 각 로드 세그먼트에 대해 다음 "WHERE" 절이 만들어집니다.
- 세그먼트 1:((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))
- 세그먼트 2:NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))
- 세그먼트 3:NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 30) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
- 세그먼트 4:NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
파티션 방법 사용
모든 테이블 파티션, 모든 테이블의 하위 파티션(데이터 소스가 하위 파티션을 지원하는 경우) 또는 특정 파티션을 기준으로 세그먼트 경계를 정의할 수 있습니다.
- 이 방법은 데이터 집합이 이미 분할된 경우에만 사용할 수 있습니다.
- 이 기능이 릴리스되기 전에 존재했던 작업이 있고 아직 작업을 시작하지 않았거나 이 방법을 사용하여 하나 이상의 테이블을 병렬로 다시 로드하려는 경우, 먼저 데이터 플랫폼에 이미 있는 데이터 등록에 설명된 대로 메타데이터를 새로 고쳐야 합니다(이 항목에서 설명하는 메타데이터 다시 로드 프로세스는 모든 유형의 데이터 작업에 대해 동일함).
모든 파티션 사용
모든 테이블 파티션 또는 하위 파티션으로 세그먼트 경계를 정의하려면:
-
데이터 집합 탭에서 데이터 집합 오른쪽에 있는
메뉴를 클릭하고 설정을 선택합니다.
병렬 로드 대화 상자가 열립니다.
-
파티션 분할 방법을 선택합니다.
-
다음 중 하나를 선택합니다.
-
모든 주 파티션 사용
-
모든 하위 파티션 사용
정보 메모데이터 소스가 하위 파티션을 지원하지 않으면 이 옵션은 비활성화됩니다.
-
- 확인을 클릭합니다.
특정 파티션 사용
특정 파티션으로 세그먼트 경계를 정의하려면:
-
데이터 집합 탭에서 데이터 집합 오른쪽에 있는
메뉴를 클릭하고 설정을 선택합니다.
병렬 로드 대화 상자가 열립니다.
-
파티션 분할 방법을 선택합니다.
-
파티션 지정을 선택합니다.
정보 메모파티션 지정을 선택하면 지정된 파티션만 복제됩니다.
-
파티션 추가를 클릭합니다.
파티션 추가 대화 상자가 열립니다.
-
기존 파티션이나 하위 파티션의 이름을 지정합니다.
하위 파티션을 추가하는 경우 하위 파티션 확인란을 선택합니다.
- 확인을 클릭하여 설정을 저장합니다.
- 필요에 따라 4~6단계를 반복하여 파티션이나 하위 파티션을 추가합니다.
파티션을 편집하려면:
- 행의 끝에 있는
메뉴를 클릭하고 편집을 선택합니다.
- 필요에 따라 파티션 정보를 편집하고 확인을 클릭하여 변경 내용을 저장합니다.
파티션을 삭제하려면:
- 행 끝에 있는
메뉴를 클릭하고 삭제를 선택합니다.
- 삭제 확인 메시지가 나타나면 삭제를 클릭합니다.
병렬로 로드할 수 있는 세그먼트 수 조정
병렬로 로드되는 세그먼트의 수를 늘리거나 줄일 수 있습니다. 값은 데이터 작업 설정의 전체 로드 > 성능 조정 > 병렬로 로드할 최대 테이블 수 필드에서 상속됩니다. 현재 값은 병렬 로드 대화 상자의 "최대 <n>개의 세그먼트를 병렬로 로드할 수 있습니다." 문자열에 표시됩니다. 세그먼트 수를 늘리면 데이터 집합을 여러 개로 분할할 때 성능이 향상될 수 있지만, 데이터베이스 리소스와 네트워크 용량에 더 큰 부담을 주게 됩니다.