Spring Batch : 메타 데이터 저장을 위한 DB 스키마

    들어가기 전

    Spring Batch는 Job을 실행시키는 형태로 만들어진다. Spring Batch는 Job을 실행하면서 Job, Step의 실행 관련 메타 정보를 기록해둔다. 그리고 Job이 끝나면, 가지고 있던 데이터를 DB에 저장한다. 이 때, 워낙 많은 정보가 있기 때문에 9개의 DB 테이블을 만들어서 각 파라메터를 잘 정리한다. 이번 포스팅에서는 이 메타 데이터 저장을 위한 DB 스키마에 대해서 알아보고자 한다. 

     


    DB 스키마 설정

    내장 메모리를 사용하는 것이 아니라, DB와 연동해서 스프링 배치를 사용한다면 DB 스키마는 반드시 생성해야한다. 만약 DB 스키마를 생성하지 않는다면, 정보를 저장할 곳이 없기 때문에 Spring Batch 실행 과정에서 Exception이 발생하는 것을 확인할 수 있다. 

    DB 스키마 쿼리 정보

    DB 스키마 생성 관련 정보는 기본적으로 외부 라이브러리의 "spring-batch-core > org"에서 확인할 수 있다. 

    라이브러리의 org로 들어가서 밑을 좀 내려보면, 다음과 같이 SQL 문이 있는 것을 확인할 수 있다. 만약 수동으로 DB 스키마를 생성한다면, 연동된 DB와 관련된 SQL문을 실행시켜서 DB 스키마 테이블을 만들어준다. 

     

    DB 스키마 생성 전략 설정

    스프링 application 설정 파일에서 DB 스키마 생성 전략을 설정할 수 있다. 설정하기 위한 경로는 spring.batch.jdbc.initialize-schema에서 가능하다. 이 때 선택할 수 있는 전략은 아래와 같이 세 가지가 있다.

    명령어 실행 내용
    always DB 스키마 생성 SQL을 항상 실행.
    embedded 내장 DB의 경우만 실행됨. 스키마가 자동으로 생성됨.
    never DB 스키마 생성 SQL 항상 실행하지 않음. 
    내장 DB인 경우, 스크립트가 생성되지 않기 때문에 오류 발생.
    운영에서 수동으로 스크립트 생성 후 설정 권장

    위의 명령어 세 가지 중 하나를 선택해서 적절하게 DB 스키마를 생성해줘야한다. 

     

    DB 스키마 생성 결과 확인

    위의 명령어를 활용해서 DB 스키마를 생성하면, Spring Batch를 위한 테이블이 위와 같이 9개 만들어진다. 이름을 보면 알 수 있겠지만 모두 Job, Step을 위한 데이터 테이블이다. 

     


    정리

    • 스프링 배치는 Job의 수행 결과를 저장하기 위해 메타 데이터를 DB에 반드시 저장한다.
    • 메타 데이터 저장을 위한 DB 스키마가 생성되어야하며, 생성되지 않을 경우 Exception이 발생한다.
    • DB 스키마 생성 전략 세 가지를 적절히 사용하여 DB 스키마를 생성해야한다.

    댓글

    Designed by JB FACTORY