본문 바로가기

ETL Tools/Oracle Data Integrator

[스크랩] CDC - Oracle Data Integrator


출처 : http://www.oracle.com/technology/global/kr/pub/articles/rittman-odi.html?_template=/ocom/print

 

OTN Logo

Architect: SOA
  다운로드
Oracle Data Integrator
  태그
soa, middleware, All

실시간 데이터 통합 환경의 구현


An Introduction to Real-Time Data Integration

저자: Mark Rittman

데이터베이스 기반의 Java 미들웨어 Oracle Data Integrator를 이용하여 SOA 환경에서 셋 기반 데이터 통합을 수행하는 방법을 배워 보시기 바랍니다.

오늘의 복잡한 "핫-플러그인" 시스템, SOA(service-oriented architecture) 환경에서 데이터를 통합하고 그 의미를 유지하는 것은 점점 더 어려운 일이 되고 있습니다. 핵심 애플리케이션이 오라클 데이터베이스를 기반으로 실행되고 있는 기업 환경이라 하더라도, 소규모 시스템의 일부에는 다른 벤더가 제공하는 데이터베이스와 플랫폼이 사용되고 있는 경우가 대부분입니다. 애플리케이션은 웹 서비스와 같은 테크놀로지를 통해 서로 커뮤니케이션을 수행하며, 애플리케이션과 데이터는 데이터 센터 또는 원격 사이트에서 관리됩니다.

Oracle Data IntegratorOracle Fusion Middleware 제품군에 포함된 제품의 하나로, 이기종 환경의 데이터 통합 요구 사항을 해결할 수 있도록 설계되었습니다. Oracle Data Integrator는 데이터베이스를 이용하여 셋 기반 데이터 통합 작업을 수행하는 Java 애플리케이션으로, 오라클 데이터베이스 이외에도 다양한 데이터베이스 플랫폼을 지원하고 있습니다. 그 밖에도 웹 서비스로와 메시지로부터 데이터를 추출하고 변환하는 기능과, SOA 환경에서 이벤트를 생성하고 발생된 이벤트에 대응하기 위한 통합 프로세스의 구현을 지원하고 있습니다.

Oracle Data Integrator 제품 아키텍처

Oracle Data Integrator는 Java 그래픽 모듈 및 스케줄링 에이전트를 통해 접근되는, 모듈화된 리포지토리를 기반으로 구현되어 있습니다. 그래픽 모듈은 통합 프로세스를 설계, 구축하는데 이용되며 통합 작업의 스케줄링 및 조율을 위해 에이전트가 사용됩니다. Oracle Data Integrator 프로젝트를 운영 모드로 전환한 후에는 웹 기반 Metadata Navigator 애플리케이션을 이용하여 리포지토리의 메타데이터에 대한 리포트를 생성할 수 있습니다. 또 기본 설정된 Knowledge Module과 플랫폼별로 커스터마이즈된 코드/유틸리티를 이용하여 이기종 플랫폼의 데이터를 추출, 로드할 수 있습니다.

Figure 1

Oracle Data Integrator 리포지토리는 사용자와 역할에 대한 상세 정보를 포함하는 마스터 리포지토리, 데이터베이스 및 기타 데이터 소스에 대한 연결, 버전별 프로젝트, 그리고 데이터 모델과 데이터 통합을 위한 상세 매핑 정보를 포함하는 작업 리포지토리 등으로 구성되어 있습니다. 리포지토리는 오라클 또는 써드 파티 관계형 데이터베이스에 저장이 가능하며, 그래픽 모듈을 통해 관리됩니다. 또 에이전트를 통한 런타임 접근이 가능합니다.

Oracle Data Integrator 프로젝트의 생성 및 관리에 이용되는 4 가지 그래픽 모듈이 아래와 같습니다.

  • Designer - 데이터 저장소(테이블, 파일, 웹 서비스 등), 인터페이스(데이터 매핑), 패키지(인터페이스를 포함하는 통합 작업 단계 셋) 등을 정의하는데 사용됩니다.
  • Topology Manager - 데이터소스 및 에이전트에 대한 연결을 생성, 관리하는데 사용되며, 일반적으로 관리자만이 사용 가능하도록 접근이 제한됩니다.
  • Operator - 통합 작업의 조회 및 관리에 사용됩니다.
  • Security Manager - 사용자와 사용자의 리포지토리 접근 권한을 관리합니다.

사용자와 사용자의 리포지토리 접근 권한을 관리합니다.

선언적 디자인

일반적으로 데이터 통합 작업은 두 가지 핵심 영역으로 구분됩니다:

  • 어떤 데이터를 변환하고 다른 데이터와 어떻게 조합할 것인지 결정하는 비즈니스 룰
  • 데이터의 실제 추출, 로드 방법에 대한 기술적 정의

이처럼 작업 영역을 구분하는 것은, 일반적으로 비즈니스 규칙의 정의는 비즈니스/데이터 전문가가 담당하는 반면 기술적인 상세 정의는 개발자, DBA 등의 전문 엔지니어에 의해 결정되는 것이 바람직하기 때문입니다. 대부분의 데이터 통합 툴에서는 이러한 방법으로 역할을 구분하는 것이 쉽지 않습니다. 데이터 매핑 기능에서 비즈니스 룰과 기술적 구현 방법이 동일한 데이터 매핑 안에 혼재되어 있기 때문입니다. 하지만 Oracle Data Integrator는 이와 다른 접근법을 취하고 있으며, SQL과 같은 선언적 접근을 통해 데이터 매핑을 수행합니다(이러한 데이터 매핑을 Oracle Data Integrator에서는 "인터페이스"라 부릅니다.)

새로운 인터페이스를 생성할 때, 개발자 또는 비즈니스 사용자는 먼저 어떤 데이터가 통합되고 어떤 비즈니스 룰이 사용되어야 하는지 정의합니다. 이 과정에서 테이블의 변환을 위해 테이블이 조인(join)되고, 필터가 적용되고, SQL 표현식이 사용됩니다. 이때 사용되는 SQL 엔진은 코드가 실행되는 데이터베이스 플랫폼에 따라 달라집니다.

그런 다음, 별도의 단계에서 기술 담당 엔지니어가 각 데이터베이스 제품별로 특화된 툴 및 설계 테크닉(증분적 로드, 벌크-로딩 유틸리티, "slow changing dimensions", "changed-data captuer" 등)을 이용하여 데이터를 가장 효율적으로 추출, 조합, 통합하기 위한 방안을 선택합니다.

뛰어난 확장성의 Knowedge Module s

Oracle Data Integrator가 다양한 데이터베이스 플랫폼으로부터 데이터를 로드, 변환하고 웹 서비스와 같은 메시지 기반 테크놀로지를 사용하여 이벤트에 응답해야 하므로, 이기종 데이터 소스를 접근, 로드하기 위한 테크놀로지는 가능한 한 유연하고 효율적이고, 확장성이 뛰어나야 합니다. Oracle Data Integrator는 Knowledge Module을 이용하여 이러한 문제를 해결하고 있습니다.

Knowlege Module은 특정 데이터 소스 또는 타겟에 대해 데이터를 로드, 변환, 통합하기 위한 베스트 프랙티스를 구현하는, Oracle Data Integrator의 "플러그인"입니다. Oracle Data Integrator는 아래 그림에서 볼 수 있듯 6 종류의 Knowledge Module을 포함하고 있습니다.

Figure 2

  • Reverse-engineering knowledge modules - 테이블 및 기타 오브젝트 메타데이터를 소스 데이터베이스에서 읽어 오기 위해 사용됩니다.
  • Journalizing knowledge modules - 단일 테이블/ 뷰 또는 일련의 테이블/뷰에서 신규/변경 데이터를 기록하는데 사용됩니다.
  • Loading knowledge modules - 소스 데이터베이스로부터 데이터를 효과적으로 추출하고, 가능한 경우 데이터베이스 제품별로 제공되는 "bulk unload" 유틸리티를 적용합니다.
  • Check knowledge modules - 소스 데이터의 에러를 감지하는데 사용됩니다.
  • Integration knowledge modules - 스테이징 영역의 데이터를 타겟 테이블로 효과적으로 변환하기 위해 사용되는 모듈로, 각 데이터베이스 플랫폼별로 최적화된 네이티브 SQL 구문을 생성합니다.
  • Service knowledge modules - 데이터를 웹 서비스 형태로 공개하는 기능을 제공합니다.

또 Knowlege Module은 확장이 용이하므로, 현재 Oracle Data Integrator가 제공하지 않는 기능을 언제든 추가할 수 있습니다. 한 예로, 기존의 오라클 기반 Knowledge Module을 확장하여 Oracle Database 10g의 Oracle Data Pump 기능을 간단하게 추가할 수 있을 것입니다.

"Data-Quality" 방화벽

귀하가 데이터 웨어하우스의 로드 작업을 책임지는 담당자라면, 아마도 야간 로드 작업이 허용되는 시간이 점점 줄어드는 문제로 고민하고 있을 것입니다. 특히 데이터 소스에 많은 에러가 포함되어 있는 경우라면 문제는 더욱 심각할 것입니다. 데이터 웨어하우스의 스테이징 영역에 데이터가 로드 되기까지는 에러를 잡아낼 방법이 없기 때문입니다.

Oracle Data Integrator는 이러한 문제를 해결하기 위한 혁신적인 방안을 제공합니다. 바로 Check Knowledge Module을 이용하여 데이터소스에서 더티 데이터(dirty data)를 "추려내고(firewall-off)", 비즈니스 룰을 준수하는 데이터만이 통합 프로세스에 입력될 수 있도록 하는 것입니다. 이 방법을 이용하면 데이터 품질을 효과적으로 보장할 수 있습니다. 먼저 소스 오브젝트에 하나 또는 그 이상의 제약 조건을 정의하고, Check Knowledge Module을 이용하여 제약 조건에 위배되는 로우들을 확인한 다음, 이 로우들을 에러 테이블로 복사하면 됩니다.

Figure 3

따라서 인터페이스를 통해 소스 오브젝트로부터 데이터를 가져와 사용하는 과정에서 제약 조건에 부합하는 데이터만이 로드 되었음을 확신할 수 있을 뿐 아니라, 별도의 프로세스를 에러 테이블의 더티 데이터에 대한 조치를 취할 수 있습니다.

변경 데이터 캡처(Changed-Data Capture) 지원

데이터 로드 시간을 최소화하기 위해 사용되는 또 다른 테크닉으로 새로 추가되거나 변경된 데이터만을 로드하는 방법이 있습니다. 운이 좋은 경우라면, 애플리케이션 개발자가 데이터의 신규/변경 여부를 확인하기 위한 식별 기호 및 날짜 컬럼을 추가해 두었을 것입니다. 하지만 대부분의 경우 이러한 정보는 제공되지 않으며, 따라서 필요한 데이터를 확인하는 것은 전적으로 데이터 웨어하우스 관리자의 몫이 됩니다.

이러한 요구 사항은 매우 흔히 볼 수 있는 것이며, Oracle Data Integrator는 소스 데이터베이스를 모니터하면서 신규/변경 데이터를 저널에 복사하여 기존 소스 테이블 대신 저널로부터 데이터를 읽어 올 수 있게끔 지원하는 Journaling Knowledge Module을 제공하고 있습니다. 오라클을 비롯한 여러 데이터베이스 벤더가 변경 데이터 캡처 기능을 지원하고 있으며, 따라서 이러한 데이터베이스 플랫폼에서 모듈의 활용이 가능합니다. 데이터베이스가 변경 데이터 캡처를 지원하지 않는다면 트리거 등의 테크닉을 이용하여 DML 작업을 캡처하는 것이 가능합니다. 본 문서의 뒷부분에서는, Oracle Data Integrator에서 오라클의 Change Data Capture 기능이 어떻게 지원되고 있는지, 또 이기종 데이터베이스 플랫폼 환경에서 실시간으로 증분적 로드 작업을 수행하는데 어떻게 활용되는지 알아 보기로 하겠습니다.

귀하가 Oracle Warehouse Builder의 사용자라면, Oracle Data Integrator가 이 제품과 어떤 관계를 갖는지, 그리고 다른 오라클 데이터 웨어하우징 테크놀로지 스택에 어떻게 통합되어 있는지 궁금해 하실 것입니다. Oracle Data Integrator는 Oracle Warehouse Builder를 보완하기 위한 툴로써 활용되며, 특히 오라클 데이터 웨어하우스의 스테이징/통합 계층을 생성하는 작업에 많은 오버헤드가 수반되는 경우 또는 SOA, 써드 파티 데이터 소스와의 연결이 필요한 경우에 유용합니다.

오라클 데이터 웨어하우스를 구축 중인 고객을 위해, Oracle Warehouse Builder는 관계형/다차원 데이터 구조의 모델링 지원, Oracle Business Intelligence Discoverer와의 통합, "slowly changing dimension" 지원 기능을 포함하고 있으며 데이터 구조 및 시맨틱 분석을 위한 데이터 프로파일러를 제공합니다.

Oracle Data Integrator는 소스 데이터의 준비 및 통합 작업에서 데이터 웨어하우스의 스테이징 영역에 이르는 과정에서 그 유용성을 발휘합니다.

Figure 4

Oracle Data Integrator는 웹 서비스, 이벤트 기반 아키텍처 등을 포함하는 다양한 이기종 데이터소스로부터 데이터를 통합/병합할 수 있으며, 위 그림에서 볼 수 있듯 Oracle Change Data Capture와 같은 오라클 데이터베이스 내부 기능에 대한 유용한 그래픽 인터페이스를 제공합니다. 데이터를 데이터 웨어하우스에 통합하고 데이터 웨어하우스 스테이징 영역에 복사하고 나면, Oracle Warehouse Builder가 그 역할을 이어받아 운영 데이터 저장소와 다차원 웨어하우스 계층을 생성한 후 데이터를 입력하는 작업을 수행합니다.

지금까지 Oracle Data Integrator의 개요 정보에 대해 설명했습니다. 이제부터는 실제 데이터 통합 시나리오에서 제품이 어떻게 활용되는지 알아 보겠습니다.

Oracle Data Integrator의 실제 활용: 크로스-플랫폼 실시간 데이터 통합

이 시나리오에서는, 오라클 데이터베이스로부터 주문, 고객 데이터를 가져와 파일 내에 저장된 직원 데이터와 조합한 후, 통합된 데이터를 Microsoft SQL Server 2000 데이터베이스에 로드하는 작업이 수행됩니다. 주문이 접수되는 대로 곧바로 분석될 수 있어야 하기 때문에, 가능한 한 실시간으로 주문 데이터를 타겟 데이터베이스에 전달하고 새로 추가되거나 변경된 데이터만을 추출함으로써 워크로드를 최소화할 수 있어야 합니다. 이제 관리자는 OTN에서 Oracle Data Integrator에 대한 아티클을 읽어 본 후 이 툴을 이용하여 데이터를 추출, 로드해 보기로 합니다.

관리자는 Oracle Data Integrator에 로그인하여 Topology Manager를 실행합니다(아래 그림 참조).

Figure 5

Oracle Data Integrator에서는 물리적 데이터베이스, 서비스, 또는 이벤트 기반 데이터소스를 데이터 서버(data server)라 부릅니다. 관리자는 Topology Manager에서 3 개의 새로운 데이터 서버를 생성합니다.

  1. Oracle Database 데이터 서버는 데이터베이스의 ORDERS, ORDERS_WORKAREA 스키마를 매핑하는 SYSTEM 사용자의 인증 정보를 설정합니다. ORDERS 스키마는 추출되는 주문 데이터를 포함하고 있으며 ORDERS_WORKAREA 스키마는 Oracle Data Integrator가 생성하는 작업 테이블을 저장하기 위한 용도로 사용되며 처음에는 빈 상태로 생성됩니다. Oracle JDBC 드라이버를 이용하여 연결을 설정합니다.
  2. 직원 데이터가 저장된 CSV 포맷 파일에 매핑하는 파일 데이터 서버. Sunopsis File JDBC Driver를 이용하여 연결을 설정합니다.
  3. ORDERS_DATA_MART라는 이름의 데이터베이스로 매핑되는 Microsoft SQL Server 데이터 서버. 연결 생성을 위해 Sun JDBC-ODBC Bridge JDBC Driver를 사용하거나 Microsoft JDBC 드라이버를 사용합니다(Microsoft 웹 사이트에서 다운로드할 수 있습니다).

데이터 서버의 정의 작업을 완료한 후 Topology Manager를 종료하고 Designer를 실행합니다. Designer에서 오라클, 파일, Microsoft SQL Server 테이블 및 파일의 정의를 위한 데이터 모델을 생성합니다. Oracle Data Integrator에서는 이 데이터 모델을 데이터 저장소(data store)라 부릅니다. 먼저 Oracle, Microsoft SQL Server 모델을 생성하고, Reverse 기능을 이용하여 테이블 메타데이터를 Oracle Data Integrator의 리포지토리에 임포트합니다(아래 그림 참조).

Figure 6

데이터 모델을 모두 정의하고 리버스 엔지니어링 또는 수작업을 통해 소스/타겟 테이블 및 파일의 상세 정보를 입력하고 나면, Designer는 프로젝트에서 사용되는 모든 데이터 저장소의 목록을 표시합니다(아래 그림 참조).

Figure 7

데이터 저장소의 정의를 완료했다면, 이제 소스 데이터의 확보를 위한 Change-Data-Capture 프로세스를 설정할 차례입니다.

Now that the data stores are defined, you can start setting up the changed-data-capture process that obtains your source data.

이 프로세스를 시작하기 전에, Changed-Data-Capture 기능을 제공하는 Knowledge Module을 프로젝트에 임포트해야 합니다. 이를 위해 Designer에서 Projects 탭을 클릭하고 마우스 오른쪽 버튼으로 프로젝트를 클릭한 다음 Import->Import Knowledge Modules를 선택합니다. 목록에서 아래의 Knowledge Module을 선택합니다.

  • CKM SQL
  • IKM SQL Incremental Update
  • JKM Oracle 10g Consistent (LOGMINER)
  • LKM File to SQL
  • LKM SQL to SQL

필요한 Knowledge Module을 모두 임포트한 다음, 앞에서 생성된 오라클 모듈을 편집하고 Journalizing 탭을 선택합니다. ORDERS, CUSTOMER 테이블의 변경 사항을 일관성 있게 캡처하기 위해, Consistent 옵션과 JKM Oracle 10g Consistent (LOGMINER) Knowledge Module을 선택합니다. 이 Knowledge Module은 Oracle Database 10g의 LogMiner 기능을 이용하여 신규/변경 데이터를 캡처하고 Oracle Streams를 이용하여 큐에 변경 사항을 비동기적으로 배포합니다(아래 그림 참조).

Figure 8

이 Knowledge Module은 3 가지 구성 옵션을 지원합니다. 아래와 같이 값을 선택하여 모듈을 설정합니다.

  • Asynchronous Mode: Yes
  • Auto-Configuration: Yes
  • Journal Table Options: default

Apply를 눌러 변경 사항을 저장하고 OK를 누릅니다. 이제 Changed-Data-Capture 셋에 테이블을 추가할 차례입니다.

이를 위해 Designer 모델 목록의 오라클 데이터 서버에서 마우스 오른쪽 버튼으로 CUSTOMERS, ORDERS 테이블을 차례로 클릭한 뒤 Changed Data Capture -> Add to CDC를 선택합니다. 그런 다음 다시 Journalized 탭에서 모델을 편집하고, 위/아래 화살표를 이용하여 ORDERS 테이블을 CUSTOMERS 테이블 위에 위치시킵니다.

이제 이 두 가지 테이블로부터 변경된 데이터를 캡처하기 위한 저널(journal)을 생성할 차례입니다. 다시 모델을 마우스 오른쪽 버튼으로 클릭하고 Changed Data Capture ->Start Journal을 선택합니다. OK를 눌러 코드를 로컬에서 실행합니다. 그런 다음 Operator 애플리케이션을 시작하여 작업의 진행 상황을 확인합니다. 모든 작업이 성공적으로 완료되었다면 아래와 같은 완료 작업 목록이 표시될 것입니다.

Figure 9

프로세스에 에러가 발생했다면, 이는 현재 정의된 오라클 연결에서 사용 중인 사용자 계정의 권한이 충분하지 못한 때문일 가능성이 높습니다. 후속 작업을 진행하기 전에 정의된 사용자 정보와 Oracle Data Integrator 제품 문서를 참고하여 문제를 해결합니다.

다음으로, Designer 애플리케이션을 다시 실행하고 오라클 소스 데이터 서버를 마우스 오른쪽 버튼으로 클릭한 뒤 Changed Data Capture -> Subscriber -> Subscribe를 선택하여 저널에 구독자(subscriber)를 추가합니다. 새로운 구독자를 추가한 뒤 코드를 로컬에서 실행하여 코드가 올바르게 실행되는지 확인합니다(요구되는 테이블 중 일부가 이전 단계에서 이미 생성된 경우 경고가 발생할 수 있습니다.) 이로써 Change Data Capture 프로세스의 설정 작업이 완료되었습니다. 다음은 인터페이스를 구현할 차례입니다.

이 프로젝트는 두 가지 인터페이스를 요구합니다. 첫 번째 인터페이스는 오라클 소스 데이터베이스로부터 기존 데이터 셋을 가져와 소스 파일의 데이터와 조인(join)한 뒤 타겟 Microsoft SQL Server 데이터베이스에 로드합니다(아래 그림 참조).

Figure 10

타겟 테이블의 컬럼 중 일부는 자동으로 매핑됩니다. 하지만 SALES_PERSON_ID, SALES_PERSON_NAME, CUSTOMER_NAME 등의 컬럼은 매핑 프로세스가 매치하는 소스 컬럼을 찾을 수 없어 매핑되지 않은 상태로 초기화됩니다. Expression Editor에서 변환 작업이 수행되는 데이터베이스(소스 또는 타겟)가 지원하는 문법을 사용하여 SQL 표현식을 입력함으로써 이 컬럼들의 매핑을 수작업으로 수행합니다.

이제 Flow 탭을 클릭하면 데이터의 로드, 통합을 위해 사용되는 Knowledge Module을 확인할 수 있습니다(아래 그림 참조).

Figure 11

Oracle Data Integrator는 임의의 데이터베이스/파일로부터 데이터를 추출하고 다른 데이터베이스에 증분적으로 로드 작업을 수행하기 위한 디폴트 Knowledge Module을 선택합니다. 관리자는 실제로 사용되는 데이터베이스 및 버전에 적합하도록 Knowledge Module을 변경할 수 있지만, 여기에서는 디폴트 설정을 그대로 두기로 합니다.

마지막으로, 아래 그림에서처럼 Control 탭을 클릭하여 타겟 테이블의 제약 조건 오류를 처리하기 위한 Control Knowledge Module을 선택합니다. 그리고 ISQ-92 호환 데이터베이스의 오류 데이터를 처리하기 위한 CKM SQL Knowledge Module을 선택합니다.

Figure 12

이것으로 인터페이스를 테스트하기 위한 모든 준비가 완료되었습니다. 인터페이스 대화상자 우측 하단의 Execute를 클릭하고 Operator 애플리케이션을 열어 인터페이스의 진행 상황을 확인합니다(아래 그림 참조).

Figure 13

인터페이스가 에러 없이 실행되었다면, Designer 애플리케이션의 타겟 데이터 저장소로 이동하여 로드된 데이터를 확인할 수 있을 것입니다(아래 그림 참조).

Figure 14

초기 로드 작업의 설정을 완료하였다면, 이제 앞에서 생성한 Journal 테이블을 통해 신규/변경 데이터를 로드할 인터페이스를 정의할 수 있습니다.

이를 위해 새로운 인터페이스를 생성합니다. 이번에는 CUSTOMER, ORDERS 소스 테이블을 추가할 때 체크박스를 클릭하여 데이터 저장소 컨텐트가 아닌 저널링된 데이터가 사용되도록 합니다. 저널링된 테이블 중 하나에 이 작업을 수행하면, Consistent Set에 포함된 다른 모든 테이블이 자동으로 선택됩니다(아래 그림 참조).

Figure 15

저널링된 테이블을 인터페이스에 추가한 다음에는, 앞에서와 동일한 방법으로 나머지 인터페이스를 구성합니다. 여기서 두 번째 인터페이스는 소스 테이블 대신 저널링된 데이터를 소스 데이터로 사용한다는 점만이 차이가 있을 뿐입니다.

T두 번째 인터페이스를 테스트하기 위해 ORDERS, CUSTOMERS 테이블에 새로운 레코드를 추가하고 Designer 인터페이스를 사용하여 저널 윈도우를 확장합니다. 이 윈도우는 Oracle Data Integrator 패키지의 일부로서 자동으로 확장, 폐기됩니다. 이제 Oracle 데이터 모델을 마우스 오른쪽 버튼으로 선택하고 컨텍스트 메뉴에서 Changed Data ->Consumption -> Extend Window를 선택하여 신규/추가 데이터의 최신 셋이 두 번째 인터페이스에 사용될 수 있도록 합니다(아래 그림 참조).

Figure 16

이제 데이터 저장소를 마우스 오른쪽 버튼으로 클릭한 뒤 Changed Data Capture , Journal Data를 선택하여 테이블 저널에 추가된 로우를 쉽게 확인할 수 있습니다. 또는 Editor에서 인터페이스를 열고 스크린 우측 하단의 Execute를 클릭하여 인터페이스를 실행할 수 있습니다.

앞에서 생성한 인터페이스를 이용하여 초기 데이터를 타겟 데이터 마트에 로드한 상태에서, Oracle Data Integrator 패키지를 생성하여 아래 작업을 수행합니다.

  1. ORDERS, CUSTOMER 테이블의 저널링된 데이터를 조회하여 신규/변경 데이터가 있는지 확인합니다. 일정 수 이상의 저널링 데이터가 탐지되었다면, 패키지의 나머지 부분을 실행하거나 데이터 로드 과정을 생략하고 마지막 단계로 넘어갑니다.
  2. 저널링된 데이터가 감지되었다면, 저널 윈도우를 확장합니다.
  3. 인터페이스를 실행하여 저널링된 데이터를 읽어들여 파일과 조인(join)하고 타겟 데이터 저장소에 로드합니다.
  4. 저널 윈도우를 폐기(purge)합니다.
  5. 패키지를 다시 시작합니다.

이 패키지를 생성하고 Oracle Data Integrator 시나리오로서 적용(deploy)함으로써 지속적으로 실행되는 실시간 ETL 프로세스를 효과적으로 생성할 수 있습니다. 프로세스는 Oracle Data Integrator의 이벤트 탐지 기능을 통해, 일정 수 이상의 변경 데이터가 탐지되거나 사전 정의된 시간(밀리초 단위)이 경과된 경우 자동으로 실행됩니다. 저널링 데이터 및 타임아웃을 위한 임계치를 적절한 수준으로 설정함으로써, 실시간 통합 프로세스에 수반되는 지연을 최소화할 수 있습니다.

패키지를 생성하기 위해, Designer 애플리케이션에서 Projects 탭을 누른 뒤, 앞에서 정의한 인터페이스를 포함하는 폴더와 패키지 엔트리를 찾은 후 마우스 오른쪽 버튼을 눌러 Insert Package를 선택합니다. 패키지의 이름을 설정한 후 Diagram 탭에서 패키지 상세정보 대화상자로 이동합니다.

오른쪽의 툴박스를 이용하여 Event Detection 폴더로 이동하고 패키지 캔버스에 OdiWaitForLogData 툴을 추가합니다(아래 그림 참조). 이 툴은 저널링된 정기적으로 폴링하면서 저널에서 로우가 조회되지 않은 경우 실패(fail) 처리하고, 일정 수 이상의 로우가 확인된 경우에는 패키지의 다음 단계를 실행합니다.

Figure 17

툴 속성에서, 앞에서 정의한 changed-data-capture 셋을 점검하고 최소 3 개 이상의 저널 로우가 확인되거나 작업이 시작된 이후 1 분이 경과하면 종료하도록 설정합니다.

이제 새로운 데이터를 읽어 들이기 위해 저널 윈도우를 확장하는 단계를 추가해 봅시다. 이를 위해, 모델 리스트로 이동하여 Oracle 모델을 캔버스에 드래그-앤-드롭합니다. 모델을 선택하고, 속성을 조회한 뒤 Model Type 리스트를 Journalizing Model로 변경합니다(아래 그림 참조).

Figure 18

Extend Window 체크박스를 클릭하여 저널링 단계에서 저널 윈도우가 확장될 수 있도록 합니다. check box to indicate that the journal step is one that extends the journal window.

다음으로 저널의 데이터를 가져 오기 위한 인터페이스를 추가하고 다시 한 번 패키지에 Oracle 모델을 추가하되, 이번에는 저널을 읽은 후 폐기하도록 Purge Window 옵션을 선택합니다. 마지막으로 툴 박스의 Utilities 폴더에서 OdiStartScen 툴을 선택하여 작업이 종료된 후 재실행되도록 합니다. 또 커넥터를 추가하여 첫 번째 단계에서 저널링된 로우가 탐지되었는지의 여부에 따라 작업 단계의 흐름을 확인할 수 있게 합니다.

Figure 19

마지막 OdiStartScen 단계는 패키지의 운영 버전인 시나리오을 참조하기 때문에, 현재 Designer 애플리케이션의 Project 탭에서 작업 중인 패키지로 이동하여 마우스 오른쪽 버튼으로 클릭하고 Generate Scenario를 선택합니다. 시나리오가 생성되었다면, OdiStartScen 단계의 속성을 편집하여, 방금 생성한 시나리오를 참조하도록 합니다. 이 마지막 단계를 패키지에 추가함으로써, 패키지가 지속적으로 실행되고 Oracle 소스 테이블의 신규/변경 데이터가 타겟 데이터베이스에 실시간으로 전송됨을 보장할 수 있습니다.

요약

Oracle Fusion Middleware 제품군에 새로 추가된 Oracle Data Integrator는 이기종 플랫폼 환경에서 데이터, 이벤트, 서비스 지향적 통합 작업을 수행할 수 있는 기능을 제공합니다. Oracle Data Integrator는 Oracle Warehouse Builder를 보완하여 벌크 데이터 로딩, Oracle Change Data Capture와 같은 오라클 데이터베이스 관련 기능을 위한 그래픽 인터페이스를 제공합니다. 본 문서를 통해 Oracle Data Integator를 이용해서 이기종 플랫폼 환경에서 실시간 데이터 통합 프로세스를 구현하는 방법을 알아 보았습니다. 또 선언적 방법으로 통합 프로세스를 구현함으로써 세부적인 구현 작업이 아닌 비즈니스 룰에 집중할 수 있음을 확인하였습니다.


Mark Rittman[http://www.rittmanmead.com/blog]은 Oracle ACE 자격 보유자이며, 오라클 비즈니스 인텔리전스 및 데이터 웨어하우징 전문 오라클 파트너인 Rittman Mead Consulting의 공동 설립자입니다. Rittman은 OTN 및 OTN 포럼에 활발한 기고 활동을 펼치고 있으며 2008년 출판 예정인 <Oracle Business Intelligence Suite Developers’ Guide> 를 집필하였습니다.