본문 바로가기

STUDY/스프링 배치

2. 스프링 배치: 배치 테이블 스키마

배치 테이블 생성

 

스프링 배치는 실행된 작업마다 여러 요소(Job, JobParameter, Step...)들의 상태, 그리고 성공/실패에 관한 이력을 알아서 저장해준다. 개발자는 스프링 배치가 사용할 배치 테이블을 생성하고, DB 연결정보를 정의해주기만 하면 된다. 배치 테이블을 생성하기위한 DB 스키마는 소스에 포함되어있으니, 사용하는 DB에 맞는 스키마을 찾아서 사용하면 된다.

 

Spring Batch 소스에 배치 테이블 생성을 위한 SQL이 포함되어 있다.

 

 


메타 테이블 종류

 

 

  • batch_job_instance: 실행된 배치의 JobInstance 정보가 저장되는 테이블
    • JOB_INSTANCE_ID: 실행된 JobInstance의 id
    • VERSION: 배치 테이블의 낙관적 락 전략을 위해 사용되는 데이터
    • JOB_NAME: 실행된 Job의 이름
    • JOB_KEY: JobParameter로 생성된 JobInstance의 키
  • batch_job_execution: 실행된 배치의 JobExecution 정보가 저장되는 테이블
    • JOB_EXECUTION_ID: 실행된 JobExecution의 id
    • VERSION: 배치 테이블의 낙관적 락 전략을 위해 사용되는 데이터
    • JOB_INSTANCE_ID: 실행된 JobInstance의 id
    • CREATE_TIME: JobExecution이 생성된 시간
    • START_TIME: JobExecution이 실행된 시간
    • END_TIME: JobExecution이 종료된 시간
    • STATUS: JobExecution의 상태
    • EXIT_CODE: JobExecution의 종료 코드
    • EXIT_MESSAGE: JobExecution의 종료 메시지. 에러가 발생한 경우 에러메시지.
    • LAST_UPDATED: JobExcution이 수정된 시간. DB UPDATE 시간이 아니다. 
    • JOB_CONFIGURATION_LOCATION: ??
  • batch_job_execution_params: 실행된 배치의 JobParameter 정보가 저장되는 테이블
    • JOB_EXECUTION_ID: 실행된 JobExecution의 id
    • TYPE_CD: JobPameter의 타입 코드. (string, date, long, double)
    • KEY_NAME: JobPameter의 이름
    • STRING_VAL: JobPameter의 string값. TYPE_CD가 string이라면 값이 들어있다.
    • DATETIME: JobPameter의 date값. TYPE_CD가 date이라면 값이 들어있다.
    • LONG_VAL: JobPameter의 long값. TYPE_CD가 long이라면 값이 들어있다.
    • DOUBLE_VAL: JobPameter의 double값. TYPE_CD가 double이라면 값이 들어있다.
    • IDENTIFYING: JobInstance의 키의 생성에 포함되었는지 여부
  • batch_job_execution_context: 실행된 배치의 JobExecutionContext 정보가 저장되는 테이블
    • JOB_EXECUTION_ID: 실행된 JobExecution의 id
    • SHORT_CONTEXT: 문자열로 저장된 JobExecutionContext 정보
    • SERIALIZED_CONTEXT: 직렬화하여 저장된 JobExecutionContext 정보
  • batch_step_execution: 실행된 배치의 StepExecution 정보가 저장되는 테이블
    • STEP_EXECUTION_ID: 실행된 StepExecution의 id
    • VERSION: 배치 테이블의 낙관적 락 전략을 위해 사용되는 데이터
    • STEP_NAME: 실행된 StepExecution의 Step 이름
    • JOB_EXECUTION_ID: 실행된 JobExecution의 id
    • START_TIME: StepExecution이 시작된 시간
    • END_TIME: StepExecution이 종료된 시간
    • STATUS: StepExecution의 상태
    • COMMIT_COUNT: StepExecution 실행 중, 커밋한 횟수
    • READ_COUNT: StepExecution 실행 중, 읽어진 데이터 수
    • FILTER_COUNT: StepExecution 실행 중, 필터링된 데이터 수
    • WRITE_COUNT: StepExecution 실행 중, 쓰기된 데이터 수
    • READ_SKIP_COUNT: StepExecution 실행 중, 읽기 스킵한 데이터 수
    • WRITE_SKIP_COUNT: StepExecution 실행 중, 쓰기 스킵한 데이터 수
    • PROCESS_SKIP_COUNT: StepExecution 실행 중, 처리 스킵한 데이터 수
    • EXIT_CODE: StepExecution의 종료 코드
    • ROLLBACK_COUNT: StepExecution 실행 중, 롤백 횟수
    • EXIT_MESSAGE: StepExecution의 종료 메시지. 에러가 발생한 경우 에러메시지.
    • LAST_UPDATED: StepExecution이 수정된 시간. DB UPDATE 시간이 아니다. 
  • batch_step_execution_context: 실행된 배치의 StepExecutionContext 정보가 저장되는 테이블
    • STEP_EXECUTION_ID: 실행된 StepExecution의 id
    • SHORT_CONTEXT: 문자열로 저장된 StepExecutionContext 정보
    • SERIALIZED_CONTEXT: 직렬화하여 저장된 StepExecutionContext 정보

 

참고: https://docs.spring.io/spring-batch/docs/current/reference/html/schema-appendix.html#metaDataSchema

관련 소스: https://github.com/NanKisu/nankisu-study/tree/master/STUDY-SpringBatch

 

728x90