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 |
스프링배치 완벽가이드 책 참고
반응형
'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 |