- 메타테이블이란? -> 배치 실행을 위한 메타 데이터가 저장되는 테이블이다.
- Spring Batch Framework가 실행 시 meta data 테이블들을 사용하므로 초기 설정이 필요하다.
- Spring Batch Framework에 속하는 부분이므로 수정하지 않고 조회만 한다.
- Job의 이력, 파라미터등 실행 결과를 조회할 수 있다.
- 배치 결과에 대해서 로그, 별도의 실행 이력을 남기는 경우가 대부분이므로 조회할 일이 많지 않다.
BATCH_JOB_INSTANCE
- Job이 실행되며 생성되는 최상위 계층의 테이블이다.
- job_name과 job_key를 기준으로 하나의 row가 생성된다. -> 중복은 있을 수 없다.
- job_key는 BATCH_JOB_EXECUTION_PARAMS에 저장되는 Parameter를 나열해 암호화해 저장한다.
BATCH_JOB_EXECUTION
- Job이 실행되는 동안 시작/종료 시간, job 상태를 관리한다.
- 이 테이블은 job이 실행되는 순간 생성된다.
- 하나의 BATCH_JOB_INSTANCE는 N개의 BATCH_JOB_EXECUTION를 포함한다.
BATCH_JOB_EXECUTION_PARAMS
- job을 실행하기 위해 주입된 parameter 정보 저장한다.
- Job을 실행 시 설정한 정보들이 저장된다.
BATCH_JOB_EXECUTION_CONTEXT
- 작업 중 사용되는 모든 정보가 기록되는 Context를 저장하기 위한 테이블이다.
- Job Scope 내에서 데이터를 공유할 수 있다.
- job이 실행되며 공유해야 할 데이터를 직렬화해 저장한다.
BATCH_STEP_EXECUTION
- 배치 Step의 실행정보를 담는 테이블이다.
- 해당 테이블을 통해 Job Execution하위에 Step Execution이 만들어지고, 디테일한 배치 작업 정보들이 기록되는 것을 확인하실 수 있다.
- Step이 실행되는 동안 필요한 데이터 또는 실행된 결과 저장한다.
BATCH_STEP_EXECUTION_CONTEXT
- Step에서 사용되는 모든 정보가 기록되는 Context를 저장하기 위한 테이블이다.
- Step이 실행되며 공유해야 할 데이터를 직렬화해 저장한다.
- 동일한 Step Scope 내에서 데이터를 공유할 수 있다.
- Step 끼리는 공유할 수 없다 -> 공유하고 싶으면 BATCH_JOB_EXECUTION_CONTEXT에 저장해야 된다.
테이블 생성 확인
- 아래와 같이 테이블을 생성해 준다 -> spring-batch-core에 포함된 schema-mysql.sql 파일에서 스크립트를 복사해서 생성
- JobInstance의 생성 기준은 JobParamters 중복 여부에 따라 생성된다.
- 다른 parameter로 Job이 실행되면, JobInstance가 생성된다.
- 같은 parameter로 Job이 실행되면, 이미 생성된 JobInstance가 실행된다.
- RunIdIncrementer로 항상 다른 run.id를 부여해서 매번 JobInstance를 생성할 수 있음.
- job을 2번 실행하면 위와 같이 해당 job에 대한 정보가 BATCH_JOB_EXECUTION_CONTEXT에 저장된 것을 확인할 수 있다.
- RunIdIncrementer에 의해서 run.id 가 1, 2로 생성됐다.
REFERENCES
'Spring Batch' 카테고리의 다른 글
JobParameterValidator (0) | 2022.04.02 |
---|---|
Job, Step (0) | 2022.04.02 |
성능 평가 Async Step vs Multi-Thread Step vs Partition Step vs Parallel Step (0) | 2022.02.27 |
JobExecutionDecider (0) | 2022.02.27 |
Skip, Retry (0) | 2022.02.27 |