본문 바로가기
Java & Kotlin/Spring Batch

[Spring Batch] 스프링 배치의 DB 스키마

by heekng 2022. 5. 18.
반응형

스프링 배치의 DB 스키마

스프링 배치는 DB에 메타데이터를 저장하고, 관리한다.

스프링 배치 메타 데이터

  • 스프링 배치의 실행 및 관리를 위한 목적으로 여러 도메인들(Job, Step, JobParameters 등)의 정보들을 저장, 업데이트, 조회할 수 있는 스키마를 제공한다.
  • 과거와 현재의 실행에 대한 세세한 정보, 실행에 대한 성공과 실패 여부 등을 일목요연하게 관리함으로써 배치운용에 있어 리스크 발생시에 빠르게 대처할 수 있다.
  • DB와 연동할 경우 필수적으로 메타 테이블이 생성 되어야 한다.

DB 스키마 제공

  • /org/springframework/batch/core/ 디렉토리에 schema-??.sql형식으로 DB유형별 기본 DB 스키마가 제공된다.

스키마 생성 설정

스키마 생성 방법

  • 수동 생성
    • 쿼리 복사 후 직접 실행
  • 자동 생성
    • application.propertiesspring.batch.jdbc.inialize-schema를 설정한다.

스키마 자동 생성시 옵션

  • ALWAYS
    • DB스키마 생성 스크립트를 항상 실행한다.
    • RDBMS 설정이 되어 있을 경우 내장 DB 보다 우선적으로 실행된다.
  • EMBEDDED
    • 내장 DB일 떄만 실행되며 스키마가 자동 생성된다.
    • 기본값이다.
  • NEVER
    • DB스키마 생성 스크립트를 항상 실행하지 않는다.
    • 내장 DB일 겨우 스크립트가 생성이 안되기 때문에 오류가 발생한다.
    • 운영에서 수동으로 스크립트 생성 후 설정하는 것을 권장한다.

DB 스키마

스프링 배치의 DB 스키마는 Sequence 제외 6개의 테이블이 존재한다.

Job 관련 테이블

  • BATCH_JOB_INSTANCE
    • Job이 실행될 때 JobInstance 정보가 저장되며 job_namejob_key를 키로 하여 하나의 데이터가 저장된다.
    • 동일한 job_namejob_key로 중복 저장될 수 없다.
  • BATCH_JOB_EXECUTION
    • Job의 실행정보가 저장되며 Job 생성, 시간, 종료 시간, 실행상태, 메시지 등을 관리한다.
  • BATCH_JOB_EXECUTION_PARAMS
    • Job과 함께 실행되는 JobParameter 정보를 저장한다.
  • BATCH_JOB_EXECUTION_CONTEXT
    • Job의 실행동안 여러가지 상태정보, 공유 데이터를 직렬화(Json 형식)해서 저장한다.
    • Step 간 서로 공유 가능하다.

Step 관련 테이블

  • BATCH_STEP_EXECUTION
    • Step의 실행정보가 저장되며 생성, 시작, 종료 시간, 실행상태, 메시지 등을 관리한다.
  • BATCH_STEP_EXECUTION_CONTEXT
    • Step의 실행동안 여러가지 상태정보, 공유 데이터를 직렬화(Json 형식) 해서 저장한다.
    • Step별로 저장되며 Step간 서로 공유할 수 없다.
반응형