반응형
728x90
반응형
JobRepository
스프링 배치가 제공하는 여러 데이터베이스 테이블을 사용하여 배치 메타데이터를 저장한다. 총 6개의 테이블이 존재하는데, 각 테이블 정보에 대해 알아보자.
BATCH_JOB_INSTANCE 테이블
잡을 식별하는 고유 정보가 포함된 잡 파라미터로 잡을 처음 실행하면 단일 JobInstance 레코드가 테이블에 등록된다.
필드 | 설명 |
JOB_EXECUTION_ID | 테이블의 기본 키 |
VERSION | oplimistic locking 에 사용되는 레코드 버전 |
JOB_NAME | 실행된 잡의 이름 |
JOB_KEY | 잡 이름과 잡 파라미터의 해시 값으로, JobInstance 를 고유하게 식별하는 데 사용되는 값 |
BATCH_JOB_EXECUTION 테이블
배치 잡의 실제 실행 기록을 나타낸다. 잡이 실행될 때마다 새 레코드가 해당 테이블에 생성되고, 잡이 진행되는 동안 주기적으로 업데이트된다.
필드 | 설명 |
JOB_EXECUTION_ID | 테이블의 기본 키 |
VERSION | 낙관적인 락에 사용되는 레코드 버전 |
JOB_INSTANCE_ID | BATCH_JOB_INSTANCE 테이블을 참조하는 외래 키 |
CREATE_TIME | 레코드가 생성된 시간 |
START_TIME | 잡 실행이 시작된 시간 |
END_TIME | 잡 실행이 완료된 시간 |
STATUS | 잡 실행의 배치 상태 |
EXIT_CODE | 잡 실행의 종료 코드 |
EXIT_MESSAGE | EXIT_CODE 와 관련된 메시지나 스택 트레이스 |
LAST_UPDATED | 레코드가 마지막으로 갱신된 시간 |
BATCH_JOB_EXECUTION_CONTEXT 테이블
스프링 배치는 ExecutionContext를 사용해 잡의 상태를 저장하는데, 재시작과 같이 스프링 배치가 여러번 실행되는 상황에서 실행 시점의 관련 정보를 저장하는 테이블이다.
필드 | 설명 |
JOB_EXECUTION_ID | 테이블의 기본 키 |
SHORT_CONTEXT | 트림 처림된 SERIALIZED_CONTEXT |
SERIALZED_CONTEXT | 직렬화된 ExecutionContext |
BATCH_JOB_EXECUTION_PARAMS 테이블
잡이 매번 실행될 때마다 사용된 잡 파라미터를 저장한다. 잡에 전달된 모든 파라미터가 테이블에 저장된다. 재시작 시에는 잡의 식별 정보 파라미터만 자동으로 전달된다.
필드 | 설명 |
JOB_EXECUTION_ID | 테이블의 기본 키 |
TYPE_CODE | 파라미터 값의 타입을 나타내는 문자열 |
KEY_NAME | 파라미터의 이름 |
STRING_VAL | 타입이 String 인 경우 파라미터의 값 |
DATE_VAL | 타입이 Date 인 경우 파라미터의 값 |
LONG_VAL | 타입이 Long 인 경우 파라미터의 값 |
DOUBLE_VAL | 타입이 Double 인 경우 파라미터의 값 |
IDENTIFING | 파라미터가 식별되는지 여부를 나타내는 플래그 |
BATCH_STEP_EXECUTION 테이블
스텝의 시작, 완료, 상태에 대한 메타데이터를 저장한다. 스텝 분석이 가능하도록 다양한 횟수 값을 추가로 저장한다. 읽기 횟수, 처리 횟수, 쓰기 횟수, 건너뛰기 횟수 등과 같은 모든 데이터가 저장된다.
필드 | 설명 |
STEP_EXECUTION_ID | 테이블의 기본 키 |
VERSION | 낙관적인 락에 사용되는 레코드의 버전 |
STEP_NAME | 스텝의 이름 |
JOB_EXECUTION_ID | BATCH_JOB_EXECUTION 테이블을 참조하는 외래 키 |
START_TIME | 스텝 실행이 시작된 시간 |
END_TIME | 스텝 실행이 완료된 시간 |
STATUS | 스텝의 배치 상태 |
COMMIT_COUNT | 스텝 실행 중에 커밋된 트랜잭션 수 |
READ_COUNT | 읽은 아이템 수 |
FILTER_COUNT | 아이템 프로세서가 null 을 반환해 필터링된 아이템 수 |
WRITE_COUNT | 기록된 아이템 수 |
READ_SKIP_COUNT | ItemReader 내에서 예외가 던져졌을때 건너뛴 아이템 수 |
PROCESS_SKIP_COUNT | ItemProcessor 내에서 예외가 던져졌을때 건너뛴 아이템 수 |
WRITE_SKIP_COUNT | ItemWriter 내에서 예외가 던져졌을때 건너뛴 아이템 수 |
ROLLBACK_COUNT | 스텝 실행에서 롤백된 트랜잭션 수 |
EXIT_CODE | 스텝의 종료 코드 |
EXIT_MESSAGE | 스텝 실행에서 반호나된 메시지나 스택 트레이스 |
LAST_UPDATED | 레코드가 마지막으로 업데이트된 시간 |
BATCH_STEP_EXECUTION_CONTEXT 테이블
StepExecution 내에 존재하는 ExecutionContext 의 정보를 저장한다. StepExecution 의 ExecutionContext는 스텝 수준에서 컴포넌트의 상태를 저장하는데 사용된다.
필드 | 설명 |
STEP_EXECUTION_ID | 테이블의 기본 키 |
SHORT_CONTEXT | 트림 처리된 SERIALIZED_CONTEXT |
SERIALIZED_CONTEXT | 직렬화된 ExecutionContext |
스프링배치 완벽가이드 책 참고
반응형
'Coding > Spring Batch' 카테고리의 다른 글
[스프링 배치] 잡 리스너의 적용 (0) | 2021.09.20 |
---|---|
[스프링 배치] 잡 파라미터 접근 ChunkContext (0) | 2021.09.20 |
[스프링배치] 잡의 실행 (JobLauncher, JobInstance, JobExecution, JobParameters) (0) | 2021.09.06 |
[스프링배치] @EnableBatchProcessing 어노테이션 (0) | 2021.08.18 |
[스프링 배치] 잡(Job)과 스텝(Step) (0) | 2021.08.18 |