Spring Batch : DB 스키마 Domain 정보

    들어가기 전

    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_namejobParameter 를 합쳐 해싱한 값을 저장

     

    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)된 전체 컨텍스트

    댓글

    Designed by JB FACTORY