본문 바로가기

Web/Spring

맨땅에 Spring Batch - Meta Table

728x90
반응형

Spring Batch에는 본인이 생성한 적 없는 이상한 Database Table 녀석들을 만날 수있다.

 

Spring Batch Gradle 의존성을 추가하고 새로고침 하면 External Librariesspring-batch-core녀석을 만날 수 있다.

하위 디렉토리 org/springframework/batch/core 위치에 보면 많은 종류의 Database를 위한 SQL을 만날 수 있다.

 

 

Spring Batch가 실행될 때 여기 있는 sql 중에 본인이 설정한 Database유형에 맞는 SQL을 실행하여 Spring Batch를 위한 Table들을 생성하게 되는 것이다.

 

Table들을 생성하는 방법은 두가지가 있는데

 

1. 수동 생성

   - 수동 생성은 말 그대로 본인의 Database에 맞는 SQL을 직접 복사해서 실행시키는 것이다.

     위에서 본인의 Database에 맞는 SQL파일을 열어보면 Table 생성 SQL이 있다.

 

 

2. 자동 생성

   - application.properties || application.yml 설정

 

  • ALWAYS : SQL 항상 실행, DBMS 설정이 되어 있을 경우 설정되 Database로 우선 실행
  • EMBEDDED : 내장 Database일 경우에만 실행 (default)
  • NEVER : SQL 실행 하지 않음

 

Table엔 어떤 것들이 있는지 알아보자

 

BATCH_JOB_INSTANCE

 - Batch Job의 인스턴스에 대한 정보를 저장

  • JOB_INSTANCE_ID : 실행된 job을 고유하게 식별할 수 있는 key
  • VERSION : 해당 data row가 update될 때 마다 1씩 증가하는 값
  • JOB_NAME : 본인이 선언한 job_name
  • JOB_KEY : 동일한 job_name의 job_instance를 구분하기 위해 job_parameters를 해시하여 생성한 값

 

BATCH_JOB_EXECUTION

 - Batch Job 실행 정보를 저장

  • JOB_EXECUTION_ID : Batch Job 실행 정보에 대한 고유한 식별 key
  • VERSION : 해당 data row가 update될 때 마다 1씩 증가하는 값
  • JOB_INSTANCE_ID (외래키)  : BATCH_JOB_INSTANCE의 key값
  • CREATE_DATE : Job 실행 (Job Execution) 이 생성된 시각
  • START_DATE : Job 실행 (Job Execution) 이 시작된 시각
  • END_DATE : Job 실행 (Job Execution) 이 종료된 시각
  • STATUS : 실행 상태
  • EXIT_CODE : 종료 상태
  • EXIT_MESSAGE : STATUS가 FAIL일 경우 원인을 기록
  • LAST_UPDATED : 실행 정보가 마지막으로 기록된 시간

 

BATCH_JOB_EXECUTION_PARAMS

 - Job 실행(Execution) 시에 전달 된 paramters 정보를 저장

  • JOB_EXECUTION_ID (외래키)  : Batch Job 실행 정보에 대한 고유한 식별 key 
  • TYPE_CD : 전달 된 parameter의 데이터 타입 (String, Long, Double, Date) 
  • KEY_NAME : 전달 된 parameter의 key 
  • STRING_VAL : 전달 된 paramter (type이 String일 경우)
  • DATE_VAL : 전달 된 paramter (type이 Date일 경우)
  • LONG_VAL : 전달 된 paramter (type이 Long일 경우)
  • DOUBLE_VAL : 전달 된 paramter (type이 Double일 경우)

BATCH_JOB_EXECUTION_CONTEXT

 - Job 실행 컨텍스트 정보를 저장

  • JOB_EXECUTION_ID (외래키)  : Batch Job 실행 정보에 대한 고유한 식별 key
  • SHORT_CONTEXT : SERIALIZED_CONTEXT의 버전 정보
  • SERIALIZED_CONTEXT : 직렬화된 컨텍스트 정보 

BATCH_STEP_EXECUTION

 - Step의 실행정보를 저장

  • VERSION : 해당 data row가 update될 때 마다 1씩 증가하는 값
  • STEP_NAME : 본인이 설정한 step_name
  • JOB_EXECUTION_ID(외래키) :  Batch Job 실행 정보에 대한 고유한 식별 key 
  • START_TIME : 실행 (Step Execution) 시작 시간
  • END_TIME : 실행 (Step Execution) 종료 시간
  • STATUS : 실행 ( Step Execution) 상태
  • COMMIT_COUNT : 트랜젝션 당 커밋 수
  • READ_COUNT : 데이터를 읽어온 수
  • FILTER_COUNT : 읽어온 데이터에서 필터링 된 수
  • WRITE_COUNT : 저장된 데이터 수
  • READ_SKIP_COUNT : 데이터를 읽어오다가 skip된 수
  • WRITE_SKIP_COUNT : 데이터 저장 시에 skip된 수
  • PROCESS_SKIP_COUNT : process 과정을 거치다가 skip된 수
  • ROLLBACK_COUNT : rollback이 일어난 수
  • EXIT_CODE : 실행 종료 코드
  • EXIT_MESSAGE : STATUS가 FAIL일 경우 원인을 기록
  • LAST_UPDATED :  STEP 실행 정보가 마지막으로 기록된 시간

BATCH_STEP_EXECUTION_CONTEXT 

 -  Step 실행 컨텍스트 정보를 저장

  • STEP_EXECUTION_ID (외래키)  : Step 실행 정보에 대한 고유한 식별 key
  • SHORT_CONTEXT : SERIALIZED_CONTEXT의 버전 정보
  • SERIALIZED_CONTEXT : 직렬화된 컨텍스트 정보 

 

설명에 나오는 Job이니 Step이니 이런 것들은 다음에 알아보도록 할테니 '아 이런 게 있구나' 정도만 알고 넘어가자.

728x90
반응형

'Web > Spring' 카테고리의 다른 글

맨땅에 Spring Batch - Item  (0) 2024.01.16
맨땅에 Spring Batch - Job 그리고 Step  (0) 2024.01.16
맨땅에 Spring Batch - 설정  (0) 2024.01.16
맨땅에 Spring Batch  (0) 2024.01.16
Spring boot에서 mybatis mapper location 설정  (0) 2022.10.25