💁🏻♂️ Spring Batch란?
batch는 일괄 처리라는 뜻을 가지고 있습니다.
일괄처리라는 것은 어떠한 내용들을 묶어서 한 번에 처리하는 것을 말합니다. 어떠한 내용들은 데이터가 될 것입니다.
즉, 대용량 데이터를 처리하는 경우에 Spring Batch를 사용합니다.
ex) 정산, 거래명세서, 회원 정리, 알림톡
또 다른 이유는 효과적인 로깅, 통계 처리, 트랜잭션 관리 등 재사용에 가능한 필수 기능을 지원합니다.
예외가 발생할 경우에도 방어할 기능이 존재합니다.
💁🏻♂️ Spring Batch 구조
-
Batch 구조 (Batch Application Style)

-
실행 구조 (Run Tier)
Application의 상호 의존적 스케줄링을 허용하고 병렬 처리 기능을 합니다.
-
작업 구조 (Job Tier)
전체적인 Job의 수행을 책임지고 Job내의 각 Step을 정책에 따라 순차적으로 수행합니다.
-
응용프로그램 구조 (Application Tier)
Job을 수행하는데 필요한 Component
-
데이터 구조 (Data Tier)
DB, 파일 또는 대기열을 포함할 수 있는 물리적 데이터 원본과의 통합을 제공합니다.
💁🏻♂️ Spring Batch 메타데이터 테이블 구조

Spring Batch 에서 제공하는 메타 데이터 스키마는 총 6개의 테이블로 이루어져 있습니다. 순서는 다음과 같습니다.
-
BATCH_JOB_INSTANCE - JOB의 생성 정보를 담는 테이블
- JOB_INSTANCE_ID : JOB 고유 ID
- VERSION : 버전정보
- JOB_NAME : JOB 빌드 시 생성하는 이름
- JOB_KEY : JOB 고유 키
-
BATCH_JOB_EXECUTION - JOB의 실행정보를 담는 테이블
- JOB_EXECUTION_ID : JOB 실행 고유 ID
- VERSION : 버전정보
- JOB_INSTANCE_ID : JOB 고유 ID
- CREATE_TIME : 생성 시간
- START_TIME : 시작 시간
- END_TIME : 종료 시간
- STATUS : 실행 상태
- EXIT_CODE : 종료 코드
- EXIT_MESSAGE : JOB 수행 실패시 메세지
- LAST_UPDATED : 최종 업데이트 시간
- JOB_CONFIGURATION_LOCATION : JOB Config 설정 위치
-
BATCH_JOB_EXECUTION_PARAM - JOB에서 사용되는 파라미터 값 들을 담는 테이블
- JOB_EXECUTION_ID : JOB 실행 고유 ID
- TYPE_CD : 저장된 값의 Type (string, date, long, double)
- KEY_NAME : 키
- STRING_VAL : String 값
- DATE_VAL : date 값
- LONG_VAL : long 값
- DOUBLE_VAL : double 값
- IDENTIFYING : job instance 생성 시 관여 여부 플래그
-
BATCH_JOB_EXECUTION_CONTEXT - 작업 중 사용되는 모든 정보가 기록되는 Context를 저장하기 위한 테이블
- JOB_EXECUTION_ID : JOB 실행 고유 ID
- SHORT_CONTEXT : String 형태의 Conext
- SERIALIZED_CONTEXT : serialized 된 context
-
BATCH_STEP_EXECUTION - Step의 실행 정보를 담는 테이블
- STEP_EXECUTION_ID : Step 실행 고유 ID
- VERSION : 버전정보
- STEP_NAME : Step 이름
- JOB_EXECUTION_ID : Job 실행 고유 ID
- START_TIME : 시작시간
- END_TIME : 종료시간
- STATUS : 실행 상태
- COMMIT_COUNT : 트랜잭션당 커밋 수
- READ_COUNT : 조회한 아이템 수
- FILTER_COUNT : 필터링 된 아이템 수
- WRITE_COUNT : 저장된 아이템 수
- READ_SKIP_COUNT : 조회 스킵한 아이템 수
- WRITE_SKIP_COUNT : 저장 스킵한 아이템 수
- PROCESS_SKIP_COUNT : 스킵 된 아이템 수
- ROLLBACK_COUNT : 롤백 발생 횟 수
- EXIT_CODE : 종료 코드
- EXIT_MESSAGE : Step 수행 실패시 메세지
- LAST_UPDATED : 최종 업데이트 시간
-
BATCH_STEP_EXECUTION_CONTEXT - Step에서 사용되는 모든 정보가 기록되는 Context를 저장하기 위한 테이블
- STEP_EXECUTION_ID : Step 실행 고유 ID
- SHORT_CONTEXT : String 형태의 Context
- SERIALIZED_CONTEXT : Serializied된 전체 Context
좋은 글 감사합니다 :D