관리 메뉴

나만의공간

Spring Batch 강의 #5(Spring Batch 메타 테이블 구조) 본문

IT/Spring Batch

Spring Batch 강의 #5(Spring Batch 메타 테이블 구조)

밥알이 2023. 9. 22. 16:01

Spring Batch에서 사용하는 메타 테이블은 아래와 같은 ERD구조를 가지며 각 테이블이 어떤 역활을 하고 있는지 알아 보겠습니다.

ERD 구조

BATCH_JOB_INSTANCE

  • Job 실행시 Job Instance 정보가 저장된다.
  • 동일한 JOB_NAME 과 JOB_KEY는 중복 저장될 수 없다.
    • 동일한 JOB_NAME의 JOB INSTANCE를 만들고자 하면 매번 다른 JobParameter를 사용해야 한다.

컬럼 설명
JOB_INSTANCE_ID 고유하게 식별할 수 있는 기본키
VERSION 업데이트 될 때마다 1씩 증가
JOB_NAME jobBuilderFactory.get에 설정한 Job Name Insert 됨
JOB_KEY 동일한 Job Name의 개별 인스턴스를 서로 고유하게 식별하는 값

 

BATCH_JOB_EXECUTION

  • Job의 실행정보가 저장되며, Job의 생성시간, 시작시간, 종료시간, 실행 상태, 메시지 등을 관리 한다.

컬럼 설명
JOB_EXECUTION_ID 고유하게 식별할 수 있는 기본키
VERSION 업데이트 될 때마다 1씩 증가
JOB_INSTANCE_ID BATCH_JOB_INSTANCE 테이블과 연결되는 기본키 값
CREATE_TIME JOB이 실행이 생성된 시간을 나타냄
START_TIME JOB이 시작된 시간을 나타냄
END_TIME 성공 / 실패와 무관하게 실행이 완료된 시간을 나타냄
해당 열에 빈값이 입력되는 경우는 Job 실행도중 오류가 발생하거나, Job이 중단된 경우 저장 되는 않는다.
STATUS 실행 상태를 나타내는 Enum(BatchStatus) 유형으로 아래와 같은 값을 가짐

COMPLETED(정상), STARTING(시작중), STARTED(시작완료), STOPPING(종료중), STOPPED(종료), FAILED(실패), ABANDONED, UNKNOWN
EXIT_CODE 실행 종료된 상태를 나타내는 Enum(ExitStatus)를 가짐
COMPLETED, FAILED, STOPPED, NOOP, FAILED, EXECUTING, UNKNOWN
EXIT_MESSAGE 작업종료된 방법에 대한 설명
실패의 경우 가능한 많은 스택 추적이 포함된다.
LAST_UPDATED JOB 실행이 지속된 마지막 시간
JOB_CONFIGURATION_LOCATION  

 

BATCH_JOB_EXECUTION_PARAMS

  • Job 실행시 사용한 Job Parameters에 대한 정보를 저장한다.
  • 동일한 Job Parameter값으로 실행하면 BATCH_JOB_INSTANCE 테이블에 Row가 생성되지 않음.
  • String / Date / Long / Double 형의 데이터만 저장할 수 있음

컬럼 설명
JOB_EXECUTION_ID BATCH_JOB_EXECUTION 테이블과 연결되는 키값
TYPE_CD Parameter 값의 데이타 유형, NULL일 수 없음
KEY_NAME Parameter 값의 이름
STRING_VAL 유형의 String 값
DATE_VAL 유형의 Date 값
LONG_VAL 유형의 Long 값
DOUBLE_VAL 유형의 Double 값
IDENTIFYING 식별여부 값 (TRUE / FALSE)
JOB_CONFIGURATION_LOCATION  

 

BATCH_JOB_EXECUTION_CONTEXT

  • Job 실행동안 여러가지 상태정보, 공유 데이터를 직렬화(Json 형식)하여 저장
  • Step에서 해당 데이터를 서로 공유하여 사용

컬럼 설명
JOB_EXECUTION_ID BATCH_JOB_EXECUTION 테이블과 연결되는 키값
SHORT_CONTEXT Job의 실행 상태 정보, 공유 데이터 등의 정보를 문자열로 저장
SERIALIZED_CONTEXT 직렬화된 전체 컨텍스트

 

BATCH_STEP_EXECUTION

  • Step Execution 과 관련된 정보가 저장됨.
  • Job Execution에 대한 Step객체 정보를 기록하고, 읽은 수, 커밋 수, 스킵 수 등 다양한 정보를 저장

컬럼 설명
STEP_EXECUTION_ID 고유하게 식별할 수 있는 기본키
VERSION 해당 Row가 업데이트 될때 마다 1씩 증가
STEP_NAME stepBuilderFactory.get에 설정한 Step Name
JOB_EXECUTION_ID BATCH_JOB_EXECUTION 테이블과 연결되는 키값
START_TIME STEP이 실행시 시작된 시간
END_TIME 성공, 실패에 상관없이 실행이 완료된 시간
작업이 현재 실행되고 있지 않더라도, 이 열의 빈값은 어떤 유형의 오류가 있는 상태이고, 실패하기 전에 마지막 저장을 수행 할수 없는 경우임
STATUS 실행 상태를 나타내는 문자열
COMPLETED, STARTED등을 나태냄
객체 표현은 BatchStatus Enum임
COMMIT_COUNT 실행 중 트랜잭션을 커밋한 수
READ_COUNT 실행 중 읽은 항목 수
FILTER_COUNT 실행에서 필터링된 항목 수
WRITE_COUNT 실행 중 작성되고 커밋된 항목 수
READ_SKIP_COUNT 실행 중 읽기에서 SKIP한 항목 수
WRITE_SKIP_COUNT 실행 중 쓰기에서 SKIP한 항목 수
PROCESS_SKIP_COUNT 실행 중 처리중에 SKIP한 항목 수
ROLLBACK_COUNT 실행 중 롤백 수, 재시로를 위한 롤백 과 복구 건너뛰기 절차의 롤백을 포함
롤백이 발생할 때마다 포함됨
EXIT_CODE 실행 종료 코드를 나타내는 문자열
명렬줄 작업의 경우 숫자로 변환 될 수 있음.
EXIT_MESSAGE 작업이 종료된 방법에 대한 자세한 설명 문자열
실패의 경우 여기에 가능한 많은 스택 추적이 포함됨.
LAST_UPDATED 실행이 지속된 마지막 시간

 

BATCH_STEP_EXECUTION_CONTEXT

  • StepExecution의 ExecutionContext 정보가 들어 있음.
  • 데이터는 일반적으로 JobInstance가 실패시 중단된 위치에서 다시 시작할 수 있는 정보가 있음.

컬럼 설명
STEP_EXECUTION_ID BATCH_STEP_EXECUTION 테이블과 연결 키값
SHORT_CONTEXT Step의 실행 상태 정보, 공유 데이터 등의 정보를 문자열로 저장
SERIALIZED_CONTEXT 직렬화된 전체 컨텍스트 정보

 

'IT > Spring Batch' 카테고리의 다른 글

Spring Batch #7(도메인 이해)  (0) 2023.10.10
Spring Batch 강의 #6(배치란?)  (0) 2023.09.25
Spring Batch 강의 #4(DB연결편)  (0) 2023.09.20
Spring Batch 강의 #3 (Logging편)  (0) 2023.08.09
Spring Batch 강의 #2  (0) 2023.08.01
Comments