재처리 자동화 로직
목적 : 서버가 다운되던지 예상치 못한 작업 지연 발생시 로그테이블을두고 데이터 적재시간을 관리하여 지연 재처리를 자동화 하도록 구현한다.
ETL_JOB_LOG V.2.0
로직 LOGIC
DESCRIPTION
1. 데이터 추출 범위 설정
소스테이블에서 가져올 데이터의 기간 구간을 설정 (기준 : 1일)
EX ) 1일 = 1, 1시간 = 1/24, 30분 = 1/48
2. 데이터 추출 시작 시간 설정
소스테이블에서 데이터를 가져올 추출 시작시간을 설정
ETL JOB LOG에 관리되는 테이블에서 마지막 추출 시간을 가져오는방식
해당 JOB의 로그가 발생되지 않은 상태에서는 현재시간을 가져오도록구현( 변경 가능 )
* 최초 시작시간을정확한 시간에 가져오고 싶을 경우
- 데이터를가라로 삽입하여 시작
3. 데이터 추출 종료 시간 설정
소스테이블에서 데이터를 가져올 추출 종료시간을 설정
l 시작시간 + 추출 범위 = 종료 시간
4. 현재 작업 상황 변수에 저장
작업 상태 분류
- R : 현재 같은 이름을 가진 작업이 이미 돌고 있는 상태 -> 작업을 하지 않고 바로 종료
- S : 지연 없이 정상적으로 작업이 진행하고 있는 상태
- U : 지연이 발생하여 현재 돌 작업이 스케쥴링 예상 시간 보다 예전 데이터를 처리해야 하는 상태 -> 작업 후 지연 시간이 없을 때까지 재 작업
- Q : 예상치 못한 상황 발생 시 -> 발생시 운영자가 상태 파악 후 조치
l ODI WORK REPOSITORY에 저장된 LOG를 확인하여 이중 작업을 방지함.
l 지연 상황 파악 : 현재 시간과 작업 종료시간을 비교
5. 상태 저장 변수 확인 – 이중 작업 진행 여부 확인
이중 작업 상태만 파악
- 이중 작업 시: 작업 진행 종료
- 아닐 시: 작업 진행
6. 실 작업 진행
7. 로그 생성
작업이 정상적으로 종료되든 비정상적으로 오류가 발생하고 종료를 하든 무조건 로그를 발생하도록 구현
로그테이블은 DB에 테이블 형태로 관리한다.
위의 INSERT 문은 정상적으로 종료하였을 경우의 쿼리 문이다.
TASK_RST ( task result ) 컬럼에 Y를 삽입.
오류가 발생했을 경우는 N을 삽입하여 구분한다.
l 정확한 작업상황을 운영자가 OPERATOR를 통해서도 확인 가능하게 하기 위해 고의로 오류를 발생하는 문을 만든다.
8. 상태 저장 변수 확인 - 로그를 삽입한 후 재처리 여부 확인 및 진행
5번 과 같은 작업을
진행.
l 상태 변수 값이 U일 경우 재처리 필요로 보고 작업을 재진행한다.
l S일 경우에는
정상적 종료.
이상 재처리 로직 설명 끝.