-
03. 메타데이터 스키마(Meta-Data Schema)BackEnd/Spring Batch 2021. 12. 11. 11:10반응형
스프링 배치의 실행 및 관리를 위한 목적으로 여러 도메인들(Job, Step, JobParameters...)의 정보들을 저장, 업데이트 및 조회할 수 있는 스키마를 제공합니다. 과거, 현재의 실행에 대한 세세한 정보, 실행에 대한 성공과 실패 여부 등을 일목요연하게 관리함으로서 배치 운용에 있어 리스크 발생 시 빠른 대처가 가능합니다. 데이터베이스와 연동할 경우 필수적으로 메타 테이블이 생성 되어야 합니다.
데이터베이스 스키마를 제공하며 spring-bath-core 라이브러리 내 /org/springframework/batch/core 하위에 데이터베이스 유형별로 제공합니다. 아래는 h2 데이터베이스 스키마 파일입니다.
스키마(Schema) 생성
스키마 생성은 수동 생성과 자동 생성 방법이 있습니다. 수동 생성은 쿼리 복사 후 직접 실행하는 방법이며, 자동 생성은 application.yml 파일에 설정하는 방법입니다. 개발 시에는 자동 생성 방법을, 운영 시에는 수동 생성 방법을 권장합니다.
자동 생성 시 spring.batch.jdbc.initialize-schema 설정은 ALWAYS, EMBEDDED, NEVER로 설정이 가능합니다.
- ALWAYS: 스크립트를 항상 실행합니다. RDBMS 설정이 되어 있을 경우 내장 DB보다 우선적으로 실행됩니다.
- EMBEDDED: 내장 DB일 때만 실행되며 스키마가 자동 생성됩니다. (기본값)
- NEVER: 스크립트를 항상 실행하지 않습니다. 운영에서 수동으로 스크립트 생성 후 설정하는 것을 권장합니다. 내장 DB일 경우 스크립트가 생성이 안되기 때문에 오류가 발생합니다.
아래 설정파일은 profiles로 사용할 데이터베이스(h2 or mysql)를 결정합니다. 해당 프로젝트는 h2 데이터베이스를 사용하며, 애플리케이션을 실행하면 h2 데이터베이스에 테이블이 생성됩니다.
spring: profiles: active: local --- spring: config: activate: on-profile: local datasource: hikari: jdbc-url: jdbc:h2:tcp://localhost/~/springbatch;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE username: sa password: driver-class-name: org.h2.Driver batch: jdbc: initialize-schema: always --- spring: config: activate: on-profile: mysql datasource: hikari: jdbc-url: jdbc:mysql://localhost:3306/springbatch?useUnicode=true&characterEncoding=utf8 username: root password: 1234 driver-class-name: com.mysql.jdbc.Driver batch: jdbc: initialize-schema: always
생성된 테이블 목록은 아래와 같습니다.
아래는 ERD Model이며, 각 테이블에 대한 상세 정보는 공식 문서를 참고하시면 됩니다.
ERD Model [참고 자료]
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98/dashboard
https://docs.spring.io/spring-batch/docs/3.0.x/reference/html/metaDataSchema.html
반응형'BackEnd > Spring Batch' 카테고리의 다른 글
06. Job (0) 2021.12.16 05. 스프링 배치 초기화 설정 (0) 2021.12.16 04. 도메인 언어(Domain Language) (0) 2021.12.15 02. Hello Spring Batch Project (0) 2021.12.11 01. Spring Batch (0) 2021.12.07