DWIO 기능 연계

DWIO는 데이터베이스의 특정 테이블이 INSERT, UPDATE, DELETE될 때 변경되는 내용에 대해서 실시간으로 DW 시스템으로 전송할 정보를 기록하는 시스템이다.

애플리케이션 프로그램이 데이터베이스의 특정 테이블 정보를 변경하는 DBIO를 사용하는 경우 프로그램 내부에서 해당 테이블이 DWLOG 대상인지 먼저 확인한다. 만약 해당 테이블이 DWLOG 대상으로 확인되면 자동으로 DWIO를 호출하여 DWLOG 테이블에 저장한다.

이렇게 DWLOG 테이블에 저장된 DW 전송 정보는 EAI(Enterprise Application Integration)를 이용하여 각 DW 시스템으로 전송된다.

1. DWLOG 처리 프로세스

다음은 DWLOG 테이블에 저장된 데이터가 처리되는 프로세스이다.

figureB 1
DWLOG 처리 프로세스

① 서비스 또는 공통 모듈에서 DBIO 모듈을 dlcall한다.

② DBIO의 Exec 타입에 따라 DELETE/INSERT/UPDATE를 시작한다.

③ DW 시스템이 전달해야 할 대상이 되는 테이블의 존재 유무를 확인한다. DW 대상 테이블은 PFM_DWTARGET 테이블에서 확인한다.

④ 변경 전과 변경 후의 레코드를 수집한 후 쿼리를 실행한다.

⑤ 수집한 레코드를 DW 시스템의 로깅 모듈로 전달하기 위해 dlcall를 한다.

⑥ DWLOG 정보를 수집한다. 수집해야 할 정보는 Global ID, 영업일, 시스템 일자, 시스템 시간 등이 있다.

⑦ DWLOG 테이블에 삽입한다.

⑧ DW 시스템의 로깅 모듈로부터 반환된다.

⑨ DBIO 모듈로부터 반환된다.

⑩ EAI를 이용하여 DW 시스템으로 전송한다.

다음은 각 단계에서 사용되는 함수와 라이브러리에 대한 설명이다.

구분 설명

libPfmDbio.so

DBIO와 DWIO의 메인 라이브러리이다.

Ls_dwio()

DWIO의 메인 라이브러리에 있는 DW/BEFORE IMAGE 대상 여부를 판단하는 모듈이다.

mpfm_is_dwio()

is_dwio에서 dlcall하는 라이브러이다.

pdw_logs()

DW 로그를 삽입을 실행하는 모듈이다.

2. DWLOG의 적용범위

모든 테이블의 변경 사항을 실시간으로 EAI를 이용하여 DW 시스템으로 전송하는 경우 온라인 서비스를 처리하는 성능에 나쁜 영향을 미칠 수 있다. 그래서 위와 같은 나쁜 영향을 최소화하기 위해 될 수 있으면 실시간으로 DW 시스템으로 전송이 필요한 테이블의 경우만 DWIO 전송 대상 목록에 등록한다. 그 외에는 배치 프로그램을 이용하여 DW 시스템으로 테이블의 변경 사항을 전송하도록 권고한다.

3. DWLOG의 설정방법

DWIO의 대상 테이블을 지정하려면 PFM_DWTARGET 테이블에 추가한다.

다음은 테이블의 컬럼에 대한 설명이다.

컬럼 설명

TABLE_NAME

대상 테이블 이름

RUNTIME_INSERT

Runtime에 INSERT되는 정보 (숫자)

RUNTIME_UPDATE

Runtime에 UPDATE되는 정보 (숫자)

RUNTIME_ DELETE

Runtime에 DELETE되는 정보 (숫자)

SOURCEGEN_INSERT

소스젠을 수행할 때 INSERT되는 정보 (숫자)

SOURCEGEN_UPDATE

소스젠을 수행할 때 UPDATE되는 정보 (숫자)

SOURCEGEN_DELETE

소스젠을 수행할 때 DELETE되는 정보 (숫자)

STR_CREATED

공백, ‘N’

위 표에서 설명하고 있는 컬럼 중에서 RUNTIME_INSERT, RUNTIME_UPDATE, RUNTIME_DELETE, SOURCEGEN_INSERT, SOURCEGEN_UPDATE, SOURCEGEN_DELETE은 각각 숫자를 입력하는 데, 각 숫자의 의미는 C 버전에서 설명한 내용과 동일하다.

4. DWLOG의 제약사항

DWIO의 대상으로 등록되는 테이블은 항상 기본 키가 존재해야 한다. 기본 키가 존재하지 않는 경우에는 Runtime에 에러가 발생한다.