ebson

스프링 배치 메타 테이블 본문

DEV-STUDY, ETC.

스프링 배치 메타 테이블

ebson 2023. 2. 10. 12:52

1. 개요

spring batch 를 사용하려면 6개의 메타 테이블이 필요하고 데이터베이스별 생성 스크립트를 spring batch에서 제공한다. 각각의 메타테이블은 용도가 다르고 메타테이블들은 모니터링 용도의 데이터만이 아니라 실제 배치 작업에 필요한 정보를 저장하기 때문에 반드시 필요하다. 

 

2. 본문

spring batch에서 제공하는 6개의 메타테이블은 다음과 같으며 [그림1] 과 같이 연관된다.

- BATCH_JOB_INSTANCE

- BATCH_JOB_EXECUTION

- BATCH_JOB_EXECUTION_PARAMS

- BATCH_JOB_EXECUTION_CONTEXT

- BATCH_STEP_EXECUTION

- BATCH_STEP_EXECUTION_CONTEXT

[그림1] 스프링배치 메타테이블 ERD

 

2.1. BATCH_JOB_INSTANCE

[그림2] BATCH_JOB_INSTANCE 의 ERD

배치 계층구조의 최상위에 위치한다. 컬럼 목록은 다음과 같다.

 

JOB_INSTANCE_ID - JOB 고유 ID

VERSION - 1씩 증가

JOB_NAME - JOB 빌드 시 생성하는 이름

JOB_KEY - JOB 고유 키

 

2.2. BATCH_JOB_EXECUTION

[그림3] BATCH_JOB_EXECUTION 의 ERD

JOB이 실행될 때마다 데이터가 추가된다. 컬럼 목록은 다음과 같다.

 

JOB_EXECUTION_ID - JOB 실행 고유 ID

VERSION - 1씩 증가

JOB_INSTANCE_ID - JOB 고유 ID

CREATE_TIME - 생성 시간

START_TIME - 시작 시간

END_TIME - 종료 시간

STATUS - 실행 상태

EXIT_CODE - 종료 코드

EXIT_MESSAGE - JOB 수행 실패시 메세지

LAST_UPDATED - 최종 업데이트 시간

JOB_CONFIGURATION_LOCATION - JOB CONFIG 설정 위치

 

2.3. BATCH_JOB_EXECUTION_PARAMS

[그림4] BATCH_JOB_EXECUTION_PARAMS 의 ERD

JOB이 실행될 때 사용한 JOB PARAMETER의 정보들 담는다. 파라미터 타입에 대한 컬럼이 존재하기 때문에 정규화되지 않은 테이블이다. 컬럼 목록은 다음과 같다.

 

TYPE_CD - 저장된 값의 TYPE(STRING, DATE, LONG, DOUBLE)

KEY_NAME - 키

STRING_VAL - STRING 타입의 값

DATE_VAL - DATE 타입의 값

LONG_VAL - LONG 타입의 값

DOUBLE_VAL - DOUBLE 타입의 값

IDENTIFYING - JOB INSTANCE 생성시 관여 여부 플래그

 

2.4. BATCH_JOB_EXECUTION_CONTEXT

[그림 5] BATCH_JOB_EXECUTION_CONTEXT 의 ERD

작업중 사용되는 모든 정보가 저장되는 Context를 저장하기 위해 사용되는 테이블이다. Job Execution 하나당 하나의 context를 가지며, context 정보를 통해 동일한 Job Scope 내에서 데이터를 공유한다. 컬럼 목록은 다음과 같다. 

 

JOB_EXECUTION_ID -  JOB EXECUTION 고유 아이디

SHORT_CONTEXT -  스트링 형태의 CONTEXT

SERIALIZED_CONTEXT -  직렬화된 전체 CONTEXT

 

2.6. BATCH_STEP_EXECUTION

[그림 6] BATCH_STEP_EXECUTION 의 ERD

STEP 의 정보들이 기록된다. 하나의 JOB에 최소 하나의 STEP이 생성된다. 그래서 JOB EXECUTION 하위에 STEP EXECUTION 들이 생성되고, 생성된 STEP 개수만큼 이 테이블에 ROW가 추가된다. 컬럼 목록은 다음과 같다.

 

STEP_EXECUTION_ID - Step 실행 고유 ID
VERSION - 변경 버전정보 (update 될때마다 +1)
STEP_NAME - Step 이름
JOB_EXECUTION_ID - Job 실행 고유 ID
START_TIME - 시작 시간
END_TIME - 종료 시간
STATUS - 실행 상태
COMMIT_COUNT - 트랜잭션당 커밋수
READ_COUNT - 조회한 item 수
FILTER_COUNT - 필터링된 item 수
WRITE_COUNT - 저장된 item 수
READ_SKIP_COUNT - 조회 skip한 item 수
WRITE_SKIP_COUNT - 저장 skip한 item 수
PROCESS_SKIP_COUNT - skip된 item 수
ROLLBACK_COUNT - 롤백 발생 횟수
EXIT_CODE - 종료 코드
EXIT_MESSAGE - Step 수행 실패시 메세지
LAST_UPDATED - 최종 업데이트 시간

 

2.7. BATCH_STEP_EXECUTION_CONTEXT

[그림 7] BATCH_STEP_EXECUTION_CONTEXT 의 ERD

STEP 에서 사용되는 정보들을 기록하는 STEP CONTEXT 정보를 저장하는 테이블이다. 그래서 STEP EXECUTION과 STEP EXECUTION CONTEXT는 일대일로 대응된다. STEP CONTEXT 정보를 통해 동일한 STEP SCOPE 내에서 데이터들을 공유할 수 있다. 이 테이블은 JOB INSTANCE가 중단된 위치에서 재시작할 때 사용하는 정보도 갖고 있다. 컬럼 목록은 다음과 같다.

 

STEP_EXECUTION_ID - STEP 실행 고유 ID

SHORT_CONTEXT  - STRING 형태의 CONTEXT

SERIALIZED_CONTEXT - 직렬화된 전체 CONTEXT

 

3. 요약

    스프링 배치를 사용하기 위해서는 6개의 메타 데이터 저장용 테이블이 필요하다. 이들 중 5개 테이블은 고유 ID 컬럼을 가지고 3개 테이블은 VERSION 컬럼을 가진다.

    이들 테이블명은 모두 BATCH_으로 시작하며 JOB INSTANCE 정보를 저장하는 BATCH_JOB_INSTANCE 테이블, JOB의 실행정보를 저장하는 BATCH_JOB_EXECUTION 테이블, JOB SCOPE에서 공유하는 정보를 저장하는 BATCH_JOB_EXECUTION_CONTEXT 테이블, JOB 실행시 사용한 PARAMETER 정보를 저장하는 BATCH_JOB_EXECUTION_PARAMS 테이블, JOB 하위 STEP의 실행 정보를 저장하는 BATCH_STEP_EXECUTION 테이블, STEP SCOPE에서 공유하는 정보들을 저장하는 BATCH_STEP_EXECUTION_CONTEXT 테이블으로 구성된다. 

 

참고출처

"몰라도 되는 Spring - Spring batch 메타 데이터 스키마", Taes-k DevLog, 2021년 03월 01일 수정, 2023년 02월 10일 접속, https://taes-k.github.io/2021/03/01/spring-batch-table/.

 

몰라도 되는 Spring - Spring batch 메타 데이터 스키마

Spring batch를 사용하기위한 첫 단계 요청이 들어올때 마다 실시간으로 데이터를 처리 하는것이 아닌 일괄적으로 모아서 하는 작업을 배치 (Batch) 작업이라고 합니다. 이러한 특성때문에 배치작업

taes-k.github.io

 

"(Spring Batch) 메타 데이터 테이블", ckddn9496.tistory.com, 2021년 12월 30일 수정, 2023년 02월 10일 접속, https://ckddn9496.tistory.com/160. 

 

(Spring Batch) 메타 데이터 테이블

이 글은 Spring Batch의 Meta-Data Schema를 참고하여 작성하였으며, 개인적으로 스프링 배치에 사용하는 메타 테이블에 대해 공부하며 정리한 글입니다. 잘못된 내용이 있다면 짚어주시면 감사하겠습

ckddn9496.tistory.com

 

Comments