모르지 않다는 것은 아는것과 다르다.

Spring Batch

Spring Batch 메타 테이블

채마스 2022. 4. 2. 11:07
  • 메타테이블이란? -> 배치 실행을 위한 메타 데이터가 저장되는 테이블이다.
  • 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