Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Python 기본편
- scrapy
- 미국 배당주
- JDK1.3
- IntelliJ
- Vue
- spring boot 시작
- 애드센스 수익
- Spring Batch
- 젠킨스
- AES256
- docker 명령어
- 티스토리 광고 수익
- Spring Batch 강의
- MYSQL
- Vue 배우기
- gradle
- apache log4j
- docker mysql
- docker
- 미국주식
- Vue 알아보기
- spring Annotation
- Spring
- intelliJ plugin
- python
- Vue 강의
- 구글 애드센스 수익
- python 기초
- 도커
Archives
나만의공간
Spring Batch 강의 #5(Spring Batch 메타 테이블 구조) 본문
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