ODATE
배치작업을 등록할 때, ODATE라는 말을 사용한다.
ODATE는 Ordered-Date의 줄임말이다.
즉, 작업지시를 한 날짜를 의미한다.
일반적인 Daily-Batch작업의 경우
당일 일과시간에 일어난 정보를 활용하여
집계를 하거나 사후작업들을 진행한다.
당일의 데이터를 가지고 작업하기 때문에
작업 대상이 되는 데이터는
WHERE 등록/변경일자 = 당일( SYSDATE )가 된다.
그런데, 배치작업의 경우 바라보는 원천데이터가 다양하고
수행되는 작업시간이 긴 것들도 존재하다보니
선행작업들을 대기하다보면, 24시를 넘어가는 경우가 있다.
24:00이 넘어가면, SYSDATE는 다음날로 바뀌게된다.
의도한 날짜는 오늘(1/1일)인데,
24시를 넘어가면서 내일(1/2)일자를 찾게된다.
Ex) WHERE 등록일자 = TO_CHAR( SYSDATE, 'YYYYMMDD' )
ODATE를 사용하는 첫번째 이유 : 날짜 유지
이런 것을 방지하기 위해 ODATE를 사용한다.
ODATE는 정해진 시간에 날짜를 세팅하게 되고,
이 세팅된 데이터는 배치작업스케쥴러에 의해 변경일자가 관리되어
현재 작업되고 있는 배치스케쥴에는 일자가 변경되지 않는다.
즉, 24시를 넘어가도 최초 배치가 시작되는 시점의 날짜가 유지된다.
ODATE를 사용하는 두번째 이유 : 재작업
또한, 업무를 하다보면
몇일이 지나서 데이터의 부정합성을 발견하기도 한다.
이때, 잘못된 날짜의 정보를 찾고
그 날짜로부터 이후 작업을 재작업( 소급 처리 ) 해야 한다.
이때, SYSDATE로 되어 있다면 불가능하나
ODATE로 되어 있을 경우, ODATE날짜를 변경하여 처리가능하다.
이러한 두가지 이유로
배치의 쿼리는 ODATE를 사용하여 작성하게 된다.
만에 하나라도 일어날 가능성이 존재한다면,
현실적으로 거의! 일어나지 않을 수 있어도,
사전에 대비하여 처리하는 것이 맞다고 생각한다.
고민없이 배치작업은 ODATE를 사용하여 개발하자.
The End.
'프로젝트 > 프로젝트 관련' 카테고리의 다른 글
요구사항 정의 (1) | 2024.03.22 |
---|---|
(마케팅) 동의 여부 (0) | 2024.02.19 |
온라인( Back-End ) F/W (0) | 2024.02.19 |
Spring Boot (0) | 2024.02.19 |
Spring, 스피링 (0) | 2024.02.19 |