배치작업, ODATE

프로젝트/프로젝트 관련 2024. 6. 4. 07:39 Posted by meanoflife
반응형

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