Spring Batch : DB 스키마 Domain 정보
- Spring/Spring Batch
- 2022. 3. 4.
들어가기 전
Spring Batch는 Job이 실행되면 실행 결과를 항상 DB에 저장한다. 이를 위해서 DB 테이블 9개가 생성이 되고, 각각의 필요한 정보를 저장한다. 이번 포스팅에서는 각 테이블이 어떤 것들을 바라보고 무엇을 의미하는지를 정리하고자 한다.
Job 관련 테이블
BATCH_JOB_INSTANCE
- Job이 실행될 때 만들어지는 JobInstance 정보가 저장됨.
- Job_Instance의 키는 JobName + JobParameter의 Hash값임.
- 동일한 JobName, JobParameter로 중복 저장될 수 없음.
BATCH_JOB_EXECUTION
- Job의 실행정보가 저장됨.
- Job 생성, 시작, 종료시간, 실행 상태, 메세지 등을 관리.
BATCH_JOB_EXECUTION_PARAMS
- Job과 함께 실행되는 JobParameter 정보가 저장됨(JobLauncher에는 Job, JobParameter가 전달되어야 함)
BATCH_JOB_EXECUTION_CONTEXT
- Job의 실행동안 여러가지 정보를 JSON 형식으로 저장함.
- 동일한 Job에 속한 Step들은 이 정보를 공유할 수 있음.
STEP 관련 테이블
BATCH_STEP_EXECUTION
- Step의 실행정보가 저장됨. (생성 / 시작 / 종료 시간 등)
BATCH_STEP_EXECUTION_CONTEXT
- Step의 실행동안 여러 상태 정보 등이 JSON 형식으로 저장됨.
- Step별로 만들어지기 때문에 Step끼리 공유할 수 없음.
각 테이블의 파라메터 알아보기
BATCH_JOB_INSTANCE
JOB_INSTANCE_ID | 고유하게 식별할 수 있는 기본 키 |
VERSION | 업데이트 될 때 마다 1씩 증가 |
JOB_NAME | Job 을 구성할 때 부여하는 Job 의 이름 |
JOB_KEY | job_name과 jobParameter 를 합쳐 해싱한 값을 저장 |
BATCH_JOB_EXECUTION
JOB_EXECUTION_ID | JobExecution 을 고유하게 식별할 수 있는 기본 키, JOB_INSTANCE 와 일대 다 관계 |
VERSION | 업데이트 될 때마다 1씩 증가 |
JOB_INSTANCE_ID | JOB_INSTANCE 의 키 저장 |
CREATE_TIME | 실행(Execution)이 생성된 시점을 TimeStamp 형식으로 기록 |
START_TIME | 실행(Execution)이 시작된 시점을 TimeStamp 형식으로 기록 |
END_TIME | 실행이 종료된 시점을 TimeStamp으로 기록하며 Job 실행 도중 오류가 발생해서 Job 이 중단된 경우 값이 저장되지 않을 수 있음 |
STATUS | 실행 상태 (BatchStatus)를 저장 (COMPLETED, FAILED, STOPPED…) |
EXIT_CODE | 실행 종료코드(ExitStatus) 를 저장 (COMPLETED, FAILED…) |
EXIT_MESSAGE | Status가 실패일 경우 실패 원인 등의 내용을 저장 |
LAST_UPDATED | 마지막 실행(Execution) 시점을 TimeStamp 형식으로 기록 |
BATCH_JOB_EXECUTION_PARAMS
JOB_EXECUTION_ID | JobExecution 식별 키, JOB_EXECUTION 과는 일대다 관계 |
TYPE_CD | STRING, LONG, DATE, DUBLE 타입정보 |
KEY_NAME | 파라미터 키 값 |
STRING_VAL | 파라미터 문자 값 |
DATE_VAL | 파라미터 날짜 값 |
LONG_VAL | 파라미터 LONG 값 |
DOUBLE_VAL | 파라미터 DOUBLE 값 |
IDENTIFYING | 식별여부 (TRUE, FALSE) |
BATCH_JOB_EXECUTION_CONTEXT
JOB_EXECUTION_ID | JobExecution 식별 키, JOB_EXECUTION 마다 각 생성 |
SHORT_CONTEXT | JOB 의 실행 상태정보, 공유데이터 등의 정보를 문자열로 저장 |
SERIALIZED_CONTEXT | 직렬화(serialized)된 전체 컨텍스트 |
BATCH_STEP_EXECUTION
STEP_EXECUTION_ID | Step 의 실행정보를 고유하게 식별할 수 있는 기본 키 |
VERSION | 업데이트 될 때마다 1씩 증가 |
STEP_NAME | Step 을 구성할 때 부여하는 Step 이름 |
JOB_EXECUTION_ID | JobExecution 기본키, JobExecution 과는 일대 다 관계 |
START_TIME | 실행(Execution)이 시작된 시점을 TimeStamp 형식으로 기록 |
END_TIME | 실행이 종료된 시점을 TimeStamp 으로 기록하며 Job 실행 도중 오류가 발생해서 Job 이 중단된 경우 값이 저장되지 않을 수 있음 |
STATUS | 실행 상태 (BatchStatus)를 저장 (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 | 실행 종료코드(ExitStatus) 를 저장 (COMPLETED, FAILED…) |
EXIT_MESSAGE | Status가 실패일 경우 실패 원인 등의 내용을 저장 |
LAST_UPDATED | 마지막 실행(Execution) 시점을 TimeStamp 형식으로 기록 |
BATCH_STEP_EXECUTION_CONTEXT
STEP_EXECUTION_ID | StepExecution 식별 키, STEP_EXECUTION 마다 각 생성 |
SHORT_CONTEXT | STEP 의 실행 상태정보, 공유데이터 등의 정보를 문자열로 저장 |
SERIALIZED_CONTEXT | 직렬화(serialized)된 전체 컨텍스트 |
'Spring > Spring Batch' 카테고리의 다른 글
Spring Batch : SimpleJob의 Validator (0) | 2022.03.05 |
---|---|
Spring Batch : Simple Job의 Start / Next (0) | 2022.03.05 |
Spring Batch : 메타 데이터 저장을 위한 DB 스키마 (0) | 2022.03.04 |
Spring Batch : Job의 기본적인 구성, 사용 방법 (0) | 2022.03.04 |
Spring Batch : Spring Batch 시작, @EnableBatchProcessing (0) | 2022.03.04 |