Spring Batch DB 스키마 생성

Chaostocosmos·2022년 11월 25일
1

Spring Batch

목록 보기
3/3
post-thumbnail

DB 스키마 생성


Spring Batch Meta Data

  • 메타데이터란 ?
메타데이터(Metadata)는 데이터에 대한 대이터이다.

Karen Coyle에 의하면 "어떤 목적을 가지고 만들어진 데이터
(Constructed data with a purpose)" 라고 정의한다. 

대량의 정보 가운데 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한
규칙에 따라 콘텐츠에 대하여 부여되는 데이터이다.
어떤 데이터 즉 구조화된 정보를 분석,
분류하고 부가적 정보를 추가하기 위해 그 데이터 뒤에 함께 따라가는 정보를 말한다.

속성정보라고도 한다. 
대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해
일정한 규칙에 따라 콘텐츠에 대하여 부여되는 데이터이다.
여기에는 콘텐츠의 위치와 내용, 작성자에 관한 정보, 권리 조건, 이용 조건,
이용 내력 등이 기록되어 있다.
컴퓨터에서는 보통 메타데이터를 데이터를 표현하기 위한 목적과
데이터를 빨리 찾기 위한 목적으로 사용하고 있다.
  • Spring Batch MetaData
    스프링 배치의 실행 및 관리를 위한 목적으로 여러 Domain ( Job , Step , JobParametes .. ) 의 정보들을 저장 , 업데이트 , 조회 할 수 있는 스키마 제공

  • 과거 및 현재에 대한 상태정보 실행정보를 담아 관리에 용이하게 함

  • DB 연동 시 필수적으로 메타 테이블이 생성 되어야 함

DB 스키마 제공 : org.springframework.batch:spring-batch-core

스키마 생성 설정

수동생성 : 제공되는 스키마를 수동으로 복사하여 실행

자동생성 : spring.batch.jdbc.initialize-schema 설정

  • ALWAYS : 스크립트 항상 실행
  • EMBEDDED : 내장 DB일 때만 실행됨 ( 자동 생성 )
  • NEVER : 스크립트 항상 실행 안함 -> 내장 DB인 경우 오류 발생

스프링 배치는 많은 스키마를 예로 제공하며, 이들은 모두 개별 데이터베이스 공급업체의 데이터 유형 처리 방식의 다양성으로 인해 다양한 데이터 유형을 가지고 있다. 아래는 6개의 테이블과 테이블 간의 관계에 대한 ERD 모델입니다.

Spring Batch RDB 연결하기 ( MySQL )

  • Docker ps ( 이전시간에 설치한 Docker를 활용하자 ! )
    port 3306이 Local에 의해서 점유 되어 있을 수 있다.
    이 경우 cmd -> netstat -ano | findstr 3306 으로 점유한 포트의 PID를 찾아 트리제거 한다 !

Docker에서 DB Run이 완료되었으면 intelli j 에서 연결한다.

연결 완료 ~!

프로젝트에 Mysql 종속성 추가

프로파일 별로 DB를 설정한다.
메모리DB H2 , RDM Mysql
Yml에는 --- 으로 프로파일이 나뉘도록 설정

추후 active를 local , mysql인지 정하도록 함

spring:
  profiles:
    active: local


Mysql이 자동 생성되도록 설정함,
없는 경우 옵션 수정을 통해서 활성화된 프로파일을 추가한다 !
해당 옵션 설정으로 진행할 경우 yml 파일보다 우선적으로 선행한다

자동생성 완료 !


꿀Tip )

해시(hash)란 다양한 길이를 가진 데이터를 고정된 길이를 가진
데이터로 매핑(mapping)한 값이다. 이를 이용해 특정한 배열의
인덱스나 위치나 위치를 입력하고자 하는 데이터의 값을 이용해 저
장하거나 찾을 수 있다. 기존에 사용했던 자료 구조들은 탐색이나 
삽입에 선형시간이 걸리기도 했던것에 비해, 해시를 이용하면 즉시 
저장하거나 찾고자 하는 위치를 참조할 수 있으므로 더욱 빠른 속
도로 처리할 수 있다

Spring Meta Data Table 세부 설명

Job 관련 테이블

BATCH_JOB_INSTANCE

  • Job 이 실행할 때 JobInstance 정보가 저장됨 name , key 데이터가 저장
  • 해시 값으로 저장하기 때문에 동일한 Job_name과 key로 중복할 수 없다.

Column명설명
JOB_INSTANCE_ID고유하게 식별 할 수 있는 기본키
VERSION업데이트 될 때마다 1씩 증가
JOB_NAMEjob을 구성할 때 부여하는 job의 이름
JOB_KEYjob_name과 jobParameter를 합쳐 해싱한 값을 저장

BATCH_JOB_EXECUTION

  • Job의 실행정보가 저장된다. job 생성, 시작, 종료, 상태, 메세지 등을 관리

Column명설명
JOB_INSTANCE_ID고유하게 식별 할 수 있는 기본키
VERSION업데이트 될 때마다 1씩 증가
JOB_NAMEjob을 구성할 때 부여하는 job의 이름
JOB_KEYjob_name과 jobParameter를 합쳐 해싱한 값을 저장

BATCH_JOB_EXECUTION_PARAMS

  • Job 실행 하기위한 JobParameter 정보를 저장

BATCH_JOB_EXECUTION_CONTEXT

  • Job의 실행동안 여러가지 상태정보, 공유 데이터를 직렬화 ( Json 형식 ) 해서 저장
  • step 간 서로 공유 가능함

Step 관련 테이블

BATCH_STEP_EXECUTION

  • STEP의 실행정보

BATCH_STEP_EXECUTION_CONTEXT

  • STEP 별로 지정되어 STEP간 서로 공유할 수 없음
profile
개발새발

0개의 댓글