데이터베이스 매핑 및 데이터베이스 예외 처리
중요한 업무 프로세스는 안정적인 데이터에 의존하며, 데이터베이스 관리자 및 기타 데이터 분석가들은 데이터베이스 테이블에 저장된 정보의 정확성에 대해 확신을 가져야 합니다. 자동화된 ETL(추출, 변환, 로드) 작업 또는 기타 데이터베이스 가져오기 작업 중에 잘못된 데이터가 발생하여 작업의 성공을 위협할 수 있습니다. Altova MapForce는 오류 발생 시 영향을 받은 데이터를 되돌리고, 선택적으로 나머지 데이터베이스 매핑 작업을 계속할 수 있도록 데이터베이스 예외 처리 기능을 제공합니다.
예를 들어, 단일 레코드에 오류가 발생하더라도 매핑 작업이 중단될 필요는 없습니다. 특정 데이터베이스 제약 조건 때문에 유효하지 않은 데이터를 삽입하거나 업데이트할 수 없는 경우와 같이, 매핑 작업은 계속 진행될 수 있습니다.

데이터베이스 예외 처리 기능을 활성화하면 데이터베이스 구성 요소에 대한 모든 변경 사항이 오류 발생 시 되돌릴 수 있는 트랜잭션 내에서 처리됩니다. 사용자는 매핑 작업의 나머지 부분을 계속 진행하거나, 추가 실행을 중단하도록 선택할 수 있습니다. 트랜잭션은 데이터베이스 구성 요소 수준, 테이블 수준 또는 저장 프로시저에 대해 활성화할 수 있습니다.
예외 처리 기능은 데이터베이스 출력 로깅(추적)과 결합하여 자동화된 처리 과정에서 발생하는 오류를 기록할 수 있습니다.
자, 어떻게 작동하는지 살펴보겠습니다.
MapForce 예제 폴더에는 데이터베이스 매핑과 SQLite 데이터베이스가 포함되어 있으며, 이를 통해 트랜잭션 처리 및 롤백 기능을 확인할 수 있습니다. 물론, 이러한 기능은 널리 사용되는 모든 관계형 데이터베이스에서 지원되며, 일반적인 작업인 PostgreSQL에서 SQLite로의 변환, XML을 SQL Server로 매핑, JSON을 Access로 변환 등 다양한 작업을 수행할 수 있습니다.

이 매핑 작업은 두 개의 데이터베이스 테이블에서 데이터를 가져와 유사한 구조의 새로운 테이블로 복사하지만, 중요한 차이점이 하나 있습니다. 대상 데이터베이스의 "new_addresses" 테이블에서 "is_shipping"과 "is_billing" 필드는 null 값을 가질 수 없지만, 원본 데이터베이스의 "addresses" 테이블에서는 해당 필드가 null 값을 가질 수 있었습니다. 즉, 매핑 작업 실행 중에 누락된 값이 발견되면 오류가 발생할 수 있습니다.
다음으로, 데이터베이스 예외 처리 옵션을 사용하여 오류를 다양한 방식으로 관리하는 세 가지 상황을 살펴보겠습니다
첫 번째 오류가 발생하면, 모든 변경 사항을 되돌리고 매핑 실행을 중단합니다
오류가 발생한 트랜잭션만 롤백하고, 나머지 작업은 계속 진행합니다
최상위 트랜잭션을 되돌리고 계속 진행합니다
모든 변경 사항을 되돌립니다
첫 번째 시나리오에서는 매핑 실행 중에 오류가 발생하더라도 대상 데이터베이스가 전혀 변경되지 않도록 데이터베이스 예외 처리를 적용하고자 합니다. 이 기능을 구현하려면, 대상 데이터베이스 구성 요소의 속성 대화 상자를 열고 트랜잭션 처리를 활성화할 수 있습니다

이제 매핑 작업을 완료하려면 매핑 창 하단에 있는 "출력" 버튼을 클릭하여 SQL 실행 스크립트를 생성한 다음, 스크립트 창 위에 있는 "출력" 메뉴에서 "SQL 스크립트 실행" 옵션을 선택하면 됩니다

실행 중에 첫 번째 오류가 발생하면, 위에서 선택한 거래 설정을 확인하거나 변경할 수 있는 대화 상자가 표시됩니다

원래 설정값을 확인하기 위해 단순히 "확인" 버튼을 클릭합니다. 매핑 실행이 중단되고, "메시지" 창에 오류 내용이 표시됩니다

내장된 MapForce DB 쿼리 창을 사용하여 "new_users" 및 "new_addresses" 테이블을 선택하고 내용을 확인할 수 있습니다. 우리는 이 두 테이블 모두 비어 있을 것으로 예상합니다

이는 오류 발생 전에 입력된 모든 데이터가 복구되어, 다시 말해 데이터베이스에서 삭제되었음을 확인합니다.
MapForce 서버의 제어 하에 자동 실행이 진행되는 동안, 컴포넌트 트랜잭션 설정은 중단 없이 적용됩니다.
하나의 트랜잭션을 되돌리고 계속 진행합니다
만약 대용량의 외부 데이터를 데이터베이스로 가져와야 하는 상황을 상상해 봅시다. 예를 들어, 1만 건 이상의 레코드를 가져와야 할 수도 있습니다. 외부 파일의 데이터가 유효하다고 예상하지만, 몇몇 레코드에 오류가 있는 경우, 정상적인 데이터는 모두 가져오고 오류는 기록하고 싶을 것입니다. 이는 위 목록에서 언급된 데이터베이스 예외 처리 상황 2이며, 이전 게시글에서 설명한 데이터베이스 추적 기능과 결합된 것입니다.
새로운 주소 테이블에 대한 데이터베이스 예외 처리 옵션을 적용하려면, 테이블 작업 버튼을 클릭하고 다음 속성을 선택합니다

이제 새로운 SQL 스크립트를 생성하고, 위에서 설명한 "SQL 스크립트 실행" 명령을 사용하여 실행할 수 있습니다. "메시지" 창에 여러 오류가 기록될 것입니다. "DB 쿼리" 창에서 SQL 쿼리를 다시 실행하여 성공적으로 매핑된 데이터를 확인할 수 있습니다

또한, XML 추적 파일을 생성했습니다. 아래 그림은 XMLSpy XML 편집기 창에서 오류 하나를 보여주는 부분적인 내용이며, 오류가 발생한 54번째 줄이 강조 표시되어 있습니다

이와 같은 추적 파일은 열만 개의 데이터 중에서도 문제 있는 몇 가지 기록을 쉽게 찾고 수정할 수 있도록 도와줍니다!
최근 거래를 취소하고 계속 진행합니다
데이터베이스 예외 처리 상황 3은 다음과 같은 비즈니스 요구 사항을 충족합니다. 주소 정보가 삽입되지 못하는 경우, 상위 사용자 레코드 또한 삽입되지 않아야 하지만, 나머지 매핑 작업은 계속 진행되어야 합니다.
이 예시는 MapForce와 함께 자동으로 설치되는 MapForce 온라인 도움말에 자세히 설명되어 있으며, 여기에서 보여드리는 모든 데모 파일에도 포함되어 있습니다. 여러분은 무료 평가판을 다운로드하여 해당 시나리오를 직접 체험해 보시거나, 바로 시작하여 여러분의 데이터베이스 매핑에서 데이터베이스 예외 처리를 구현해 보실 수 있습니다!