MapForce는 특정 작업에 적합한 도구일 때 SQL 병합 기능을 지원합니다

대규모 데이터베이스 테이블은 수백만 개, 심지어 수억 개의 데이터 행을 포함할 수 있습니다. 이러한 대규모 데이터 세트를 관리하는 데이터베이스 관리자 및 관련 담당자들은 항상 ETL(추출, 변환, 로드) 작업, 업데이트 및 기타 SQL 쿼리의 실행 시간에 대해 우려합니다. 이러한 작업을 보다 효율적으로 만들기 위해, 일부 데이터베이스 벤더는 기존 테이블의 행을 삽입하거나 업데이트하는 작업을 개별적인 문이 아닌, 단일의 일괄 삽입 문으로 처리할 수 있는 SQL 병합(merge) 문을 구현했습니다.

Altova MapForce는 해당 데이터베이스에서 SQL 병합 기능이 지원될 경우, 자동으로 해당 기능을 활용합니다 대상 데이터베이스. 예시를 하나 살펴봅시다.

삽입 vs. 업데이트 - 조건부 처리

아래 그림은 XML 파일의 요소들을 데이터베이스 테이블에 매핑하는 방식을 보여줍니다.

기본적으로 MapForce는 원본 파일의 각 "Person" 요소에 대해 SQL 삽입 문장을 생성합니다. 이는 새로운, 비어 있는 데이터베이스 테이블에 데이터를 채워 넣는 데 적합합니다. 하지만 백업 복사본과 실제 데이터 세트를 동기화하는 등 다른 경우에는 삽입 문장이 적절하지 않을 수 있습니다. MapForce는 각 데이터베이스 매핑에 필요한 정확한 SQL 작업을 편리하게 지정할 수 있도록 지원합니다.

대상 데이터베이스 테이블 옆에 있는 "작업" 아이콘을 클릭하면 "MapForce 데이터베이스 테이블 작업" 대화 상자가 열립니다. 위의 예시에서는 "Person" 테이블이 대상 테이블입니다. 아래 스크린샷은 드롭다운 메뉴를 통해 SQL 삽입(Insert) 문을 "업데이트-만약 존재하면(Update-If)"으로 변경할 수 있는 기능을 보여줍니다.

업데이트: 업데이트를 수행하기 위한 조건을 설정해야 합니다. 이번 매핑에서는 데이터베이스에 이미 존재하는 기본 키를 포함하는 소스 데이터를 기반으로 레코드를 업데이트하고, 소스 데이터의 기본 키가 데이터베이스에 아직 존재하지 않는 경우 새로운 행을 삽입하고자 합니다.

이 작업은 일반적으로 "업데이트 (Update) 후 조건에 따른 추가 작업 (Insert Rest operation)"이라고 알려져 있습니다.

"데이터베이스 테이블 작업" 대화 상자를 통해 업데이트를 수행하기 위한 조건을 정의하고, 해당 조건이 거짓일 경우 수행할 대체 작업을 설정할 수 있습니다. "업데이트 (조건)... 그렇지 않은 경우 삽입"과 같이 정의된 작업들의 전체 목록은 여기에서 확인할 수 있습니다

업데이트 방식 vs. 일괄 병합 방식

지금까지 저희는 매핑 대상 테이블의 데이터베이스 공급업체에 대해서는 언급하지 않았습니다. 그 이유는 저희의 매핑 설정이 MapForce에서 지원하는 모든 주요 데이터베이스에 대해 동일하게 적용되기 때문입니다. 대상 데이터베이스가 SQL 병합 기능을 지원하든 아니든, 저희는 별도로 어떤 작업을 수행할 필요가 없습니다.

데이터베이스 매핑 디자인 아래에 있는 "MapForce 출력" 탭을 클릭하면, MapForce는 해당 데이터베이스 유형에 맞춰 특별히 생성된 SQL 스크립트를 생성합니다. 이 스크립트는 MapForce 출력 창에 표시되어 확인을 위해 제공됩니다. 하지만 이 스크립트는 자동으로 실행되지 않습니다.

대상 데이터베이스가 SQL Merge 기능을 지원하는 경우, 스크립트의 상단 근처에서 MERGE 구문을 확인할 수 있습니다.

대상 데이터베이스가 SQL 병합(Merge) 기능을 지원하지 않는 경우, 원본 데이터의 각 행에 대해 개별적인 UPDATE...WHERE 구문이 표시됩니다.

MapForce에서 SQL 스크립트를 직접 실행하려면, MapForce 메뉴의 "출력"에서 "SQL 스크립트 실행" 옵션을 선택할 수 있습니다. 또는, 매핑을 실행 파일로 저장하고, 런타임 시 입력 파일 이름을 지정하여 MapForce Server에서 자동화할 수도 있습니다.

대상 데이터베이스에서 SQL Merge 기능이 구현되어 있는 경우, 매핑이 MapForce에서 직접 실행되든, MapForce 서버를 통해 자동화되든 상관없이, 병합(merge) 관련 구문이 생성됩니다. MapForce 2017은 SQL Server 2008 이상 버전, Oracle, IBM DB2, 그리고 Firebird 데이터베이스에서 사용 가능한 SQL Merge 구문을 지원합니다.

Altova에서 실시한 테스트 결과에 따르면, MapForce Server를 이용한 SQL 병합 작업의 일괄 처리는 기존 방식보다 최대 15배 더 효율적일 수 있습니다.*

  • (참고: 효율성 향상 정도는 환경에 따라 달라질 수 있습니다.)

데이터 매핑에 대한 자세한 정보는 여기를 클릭하세요 여기에는 데이터 매핑의 소스 또는 대상으로 지원되는 데이터베이스 목록을 포함하여 MapForce를 사용한 데이터베이스 매핑에 대한 정보가 있습니다. 또는 여기에서 클릭하여 완전한 기능을 갖춘 30일 무료 체험판을 다운로드할 수 있습니다. 이 블로그 게시물에서 사용된 매핑 파일은 MapForce 예제로 제공되며, 매핑을 재현하는 방법에 대한 자세한 내용은 통합된 MapForce 도움말에서 확인할 수 있습니다.

  • 성능 결과는 Altova의 자체 테스트를 기반으로 합니다. 실제 사용 환경에서의 결과는 다를 수 있습니다.