일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- date_format
- Meta Table
- 스프링 배치 공식문서
- JSON 분리
- 마이바티스 트랜잭션
- JSONArray 분할
- ChainedTransactionManager #분산데이터베이스 #Spring Boot #MyBatis
- str_to_date
- 폐기하기
- JSON 분할
- 날짜형을 문자형으로
- 성능개선
- spring reactive programming
- 스테이지에 올리기
- batchInsert
- 스프링 리액티브 프로그래밍
- 마리아디비
- multi update
- org.json
- spring webflux
- 스프링 웹플럭스
- JSONObject 분할
- JobExecutionAlreadyRunningException
- nonblocking
- 무시하기
- jar 소스보기
- JSON 분해
- 스프링 배치 메타 테이블
- 문자형을 날짜형으로
- git stage
- Today
- Total
ebson
스프링 배치 메타 테이블 본문
1. 개요
spring batch 를 사용하려면 6개의 메타 테이블이 필요하고 데이터베이스별 생성 스크립트를 spring batch에서 제공한다. 각각의 메타테이블은 용도가 다르고 메타테이블들은 모니터링 용도의 데이터만이 아니라 실제 배치 작업에 필요한 정보를 저장하기 때문에 반드시 필요하다.
2. 본문
spring batch에서 제공하는 6개의 메타테이블은 다음과 같으며 [그림1] 과 같이 연관된다.
- BATCH_JOB_INSTANCE
- BATCH_JOB_EXECUTION
- BATCH_JOB_EXECUTION_PARAMS
- BATCH_JOB_EXECUTION_CONTEXT
- BATCH_STEP_EXECUTION
- BATCH_STEP_EXECUTION_CONTEXT
2.1. BATCH_JOB_INSTANCE
배치 계층구조의 최상위에 위치한다. 컬럼 목록은 다음과 같다.
JOB_INSTANCE_ID - JOB 고유 ID
VERSION - 1씩 증가
JOB_NAME - JOB 빌드 시 생성하는 이름
JOB_KEY - JOB 고유 키
2.2. BATCH_JOB_EXECUTION
JOB이 실행될 때마다 데이터가 추가된다. 컬럼 목록은 다음과 같다.
JOB_EXECUTION_ID - JOB 실행 고유 ID
VERSION - 1씩 증가
JOB_INSTANCE_ID - JOB 고유 ID
CREATE_TIME - 생성 시간
START_TIME - 시작 시간
END_TIME - 종료 시간
STATUS - 실행 상태
EXIT_CODE - 종료 코드
EXIT_MESSAGE - JOB 수행 실패시 메세지
LAST_UPDATED - 최종 업데이트 시간
JOB_CONFIGURATION_LOCATION - JOB CONFIG 설정 위치
2.3. BATCH_JOB_EXECUTION_PARAMS
JOB이 실행될 때 사용한 JOB PARAMETER의 정보들 담는다. 파라미터 타입에 대한 컬럼이 존재하기 때문에 정규화되지 않은 테이블이다. 컬럼 목록은 다음과 같다.
TYPE_CD - 저장된 값의 TYPE(STRING, DATE, LONG, DOUBLE)
KEY_NAME - 키
STRING_VAL - STRING 타입의 값
DATE_VAL - DATE 타입의 값
LONG_VAL - LONG 타입의 값
DOUBLE_VAL - DOUBLE 타입의 값
IDENTIFYING - JOB INSTANCE 생성시 관여 여부 플래그
2.4. BATCH_JOB_EXECUTION_CONTEXT
작업중 사용되는 모든 정보가 저장되는 Context를 저장하기 위해 사용되는 테이블이다. Job Execution 하나당 하나의 context를 가지며, context 정보를 통해 동일한 Job Scope 내에서 데이터를 공유한다. 컬럼 목록은 다음과 같다.
JOB_EXECUTION_ID - JOB EXECUTION 고유 아이디
SHORT_CONTEXT - 스트링 형태의 CONTEXT
SERIALIZED_CONTEXT - 직렬화된 전체 CONTEXT
2.6. BATCH_STEP_EXECUTION
STEP 의 정보들이 기록된다. 하나의 JOB에 최소 하나의 STEP이 생성된다. 그래서 JOB EXECUTION 하위에 STEP EXECUTION 들이 생성되고, 생성된 STEP 개수만큼 이 테이블에 ROW가 추가된다. 컬럼 목록은 다음과 같다.
STEP_EXECUTION_ID - Step 실행 고유 ID
VERSION - 변경 버전정보 (update 될때마다 +1)
STEP_NAME - Step 이름
JOB_EXECUTION_ID - Job 실행 고유 ID
START_TIME - 시작 시간
END_TIME - 종료 시간
STATUS - 실행 상태
COMMIT_COUNT - 트랜잭션당 커밋수
READ_COUNT - 조회한 item 수
FILTER_COUNT - 필터링된 item 수
WRITE_COUNT - 저장된 item 수
READ_SKIP_COUNT - 조회 skip한 item 수
WRITE_SKIP_COUNT - 저장 skip한 item 수
PROCESS_SKIP_COUNT - skip된 item 수
ROLLBACK_COUNT - 롤백 발생 횟수
EXIT_CODE - 종료 코드
EXIT_MESSAGE - Step 수행 실패시 메세지
LAST_UPDATED - 최종 업데이트 시간
2.7. BATCH_STEP_EXECUTION_CONTEXT
STEP 에서 사용되는 정보들을 기록하는 STEP CONTEXT 정보를 저장하는 테이블이다. 그래서 STEP EXECUTION과 STEP EXECUTION CONTEXT는 일대일로 대응된다. STEP CONTEXT 정보를 통해 동일한 STEP SCOPE 내에서 데이터들을 공유할 수 있다. 이 테이블은 JOB INSTANCE가 중단된 위치에서 재시작할 때 사용하는 정보도 갖고 있다. 컬럼 목록은 다음과 같다.
STEP_EXECUTION_ID - STEP 실행 고유 ID
SHORT_CONTEXT - STRING 형태의 CONTEXT
SERIALIZED_CONTEXT - 직렬화된 전체 CONTEXT
3. 요약
스프링 배치를 사용하기 위해서는 6개의 메타 데이터 저장용 테이블이 필요하다. 이들 중 5개 테이블은 고유 ID 컬럼을 가지고 3개 테이블은 VERSION 컬럼을 가진다.
이들 테이블명은 모두 BATCH_으로 시작하며 JOB INSTANCE 정보를 저장하는 BATCH_JOB_INSTANCE 테이블, JOB의 실행정보를 저장하는 BATCH_JOB_EXECUTION 테이블, JOB SCOPE에서 공유하는 정보를 저장하는 BATCH_JOB_EXECUTION_CONTEXT 테이블, JOB 실행시 사용한 PARAMETER 정보를 저장하는 BATCH_JOB_EXECUTION_PARAMS 테이블, JOB 하위 STEP의 실행 정보를 저장하는 BATCH_STEP_EXECUTION 테이블, STEP SCOPE에서 공유하는 정보들을 저장하는 BATCH_STEP_EXECUTION_CONTEXT 테이블으로 구성된다.
참고출처
"몰라도 되는 Spring - Spring batch 메타 데이터 스키마", Taes-k DevLog, 2021년 03월 01일 수정, 2023년 02월 10일 접속, https://taes-k.github.io/2021/03/01/spring-batch-table/.
"(Spring Batch) 메타 데이터 테이블", ckddn9496.tistory.com, 2021년 12월 30일 수정, 2023년 02월 10일 접속, https://ckddn9496.tistory.com/160.
'DEV-STUDY, ETC.' 카테고리의 다른 글
[JAVA 문법] 배열과 리스트 사이의 변환과 정렬(가장 기본적인 방법) (0) | 2024.07.07 |
---|---|
JadClipse 사용법 - eclipse에서 jar 디컴파일 하기(jar 소스 보기) (0) | 2023.01.18 |
WINDOWS link 개념과 사용 이유 (0) | 2023.01.16 |
[SPRING STUDY] README.md (0) | 2022.09.04 |
[SPRING STUDY] dispatcher-servlet.xml 개요와 동작과정의 이해 (0) | 2022.08.28 |