Backend/Spring Batch

[Spring Batch 5] Meta 테이블

제이동 개발자 2024. 10. 13. 22:56
728x90

Meta 테이블

Spring Batch는 대량 데이터 처리를 위한 프레임워크로, 여러 단계(Job, Step)를 거쳐 작업을 실행할 수 있습니다. Meta 테이블은 Spring Batch에서 주로 사용하는 테이블로 배치 작업의 실행 상태를 기록 및 관리하는데 사용되므로 각 테이블과 테이블에 저장되는 컬럼들에 대해 파악하는 것은 중요합니다.

 

Dependency 추가

implementation 'org.springframework.boot:spring-boot-starter-batch'

 

 

Meta 테이블 생성 쿼리

 Meta 테이블 생성 쿼리는 Spring Batch Dependency 추가하게 되면 아래 경로에 해당 Schema가 있습니다. 현재 사용중인 DB에 맞게 해당 Schema를 찾아 쿼리를 실행하면 됩니다.

/org/springframework/batch/core/schema-*.sql

 

 

BATCH_JOB_INSTANCE

  • 특정 잡 인스턴스의 고유성을 관리합니다.
  • Job Name, Job Parameter의 조합으로 하나의 인스턴스를 생성합니다.
  • 주의할 점은 동일한 Job Name, Job Parameter로 1개의 인스턴스만 생성할 수 있습니다.
컬럼 설명
JOB_INSTANCE_ID 기본 키
VERSION 업데이트가 실행될 때마다 1씩 증가
낙관적 잠금(Optimistic Locking) 메커니즘을 통해 동시성 문제가 발생하지 않도록 관리
JOB_KEY Job Name과 Job Parameter를 이용한 해싱 값
JOB_NAME Job 명

 

 

BATCH_JOB_EXECUTION

  • Job의 실행정보가 저장되며 Job 생성 시간, 시작 시간, 종료 시간, 실행상태, 실패 메시지 등을 관리합니다.
  • 해당 테이블은 Job이 실행될 때마다 생성됩니다.
컬럼 설명
JOB_EXECUTION_ID 기본 키
VERSION 업데이트 실행될 때마다 1씩 증가
JOB_INSTANCE_ID JOB_INSTANCE 외래키
CREATE_TIME JOB_EXECUTION이 생성된 시점
START_TIME JOB_EXECUTION이 시작된 시점
END_TIME JOB_EXECUTION이 종료된 시점
오류가 발생한 경우 저장되지 않음
STATUS 실행 상태(BatchStatus)
- STARTED
- COMPLETED
- FAILED
- STOPPED
- 등
EXIT_CODE 실행 종료코드(ExitSatus)
- EXECUTION
- COMPLETED
- FAILED
- NOOP
- 등
EXIT_MESSAGE Status가 실패인 경우 실패 원인 저장
LAST_UPDATED 마지막 실행 시점

 

 

BATCH_JOB_EXECUTION_PARAMS

  • Job과 함께 실행되는 JobParameter 정보를 저장합니다.
컬럼 설명
JOB_EXECUTION_ID JOB_EXECUTION 외래키
PARAMETER_TYPE 파라미터 Type(LocalDate, String 등)
PARAMETER_NAME 파라미터 Key 값
PARAMETER_VALUE 파라미터 Value 값
IDENTIFYING 식별여부(true, false)

 

 

BATCH_JOB_EXECUTION_CONTEXT

  • Job의 각 Step 실행 상태를 저장합니다.
  • 모든 Step의 상태를 통합적으로 관리합니다.
컬럼 설명
JOB_EXECUTION_ID JOB_EXECUTION 외래키
SHORT_CONTEXT JOB의 실행 상태정보, 공유데이터 등의 정보를 문자열로 저장
SERIALIZED_CONTEXT 직렬화된 전체 컨텍스트

 

 

BATCH_STEP_EXECUTION

  • 각 Step 실행 정보를 저장합니다.
  • Job이 여러 Step으로 구성될 때 각 Step의 실행 이력을 관리합니다.
컬럼 설명
STEP_EXECUTION_ID STEP_EXECUTION 기본키
JOB_EXECUTION_ID JOB_EXECUTION 외래키
VERSION 업데이트 실행될 때마다 1씩 증가
STEPNAME Step을 구성할 떄 부여하는 Step 명
START_TIME JOB_EXECUTION이 시작된 시점
END_TIME JOB_EXECUTION이 종료된 시점
오류가 발생한 경우 저장되지 않음
STATUS 실행 상태(BatchStatus)
- STARTED
- COMPLETED
- FAILED
- STOPPED
- 등
COMMIT_COUNT 트랜잭션 당 커밋되는 수
READ_COUNT 실행시점에 Read한 Item 수
FILTER_COUNT 실행도중 필터링된 Item 수
WRITE_COUNT 실행도중 저장되고 커밋된 Item 수
READ_SKIP_COUNT 실행도중 Read가 Skip 된 Item 수
WRITE_SKIP_COUNT 실행도중 Write가 Skip 된 Item 수
PROCESS_SKIP_COUNT 실행도중 Process가 Skip 된 Item 수
ROLLBACK_COUNT 실행도중 Rollback이 일어난 수
EXIT_CODE 실행 종료코드(ExitSatus)
- EXECUTION
- COMPLETED
- FAILED
- NOOP
- 등
EXIT_MESSAGE Status가 실패인 경우 실패 원인 저장
LAST_UPDATED 마지막 실행 시점

 

 

BATCH_STEP_EXECUTION_CONTEXT

  • 각 Step의 실행 상태를 저장합니다.
  • 각 스탭 실행의 메모리 상태를 직렬화하여 저장합니다.
컬럼 설명
STEP_EXECUTION_ID STEP_EXECUTION 외래키
SHORT_CONTEXT JOB의 실행 상태정보, 공유데이터 등의 정보를 문자열로 저장
SRIALIZED_CONTEXT 직렬화된 전체 컨텍스트

 

728x90