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