Spring Batch, Spring Quartz 메타테이블 들여다보기

Spring Batch, Spring Quartz 모두 InMemory 방식을 사용할 경우 Table 없이 사용가능하다.

하지만 Quartz Clustering 기능을 사용하는 경우 혹은 UI 로 배치(job) 및 스케쥴을 관리하는 경우 메타테이블 사용은 필수적이다.

Quartz , Batch 메타테이블 중 의미있는(내가 알고 있는..) 테이블 정보를 기록해둔다.

 

1. Quartz 메타테이블

1) FIRED_TRIGGERS; 현재 실행된(fired) 스케쥴의 트리거정보(비동기 동작시 바로 실행완료 상태가 되어버리므로 해당 테이블은 스쳐지나감)
2) PAUSED_TRIGGER_GRPS; 
3) LOCKS; 
4) SIMPLE_TRIGGERS; 
5) SIMPROP_TRIGGERS; 
6) CRON_TRIGGERS; 등록된 스케쥴의 cron 정보

7) BLOB_TRIGGERS; 
8) TRIGGERS; 등록된 스케쥴의 trigger 정보

9) JOB_DETAILS; 실행될 QuartzJob 정보

10) CALENDARS; 특정 시간에 스케쥴을 동작시키지 않길 원할 경우 사용

11) SCHEDULER_STATE; 스케쥴러 정보, instance_name 칼럼값으로 스케쥴러 구분이 가능, last_checkin_time이 checkin_interval 값의 간격으로 계속해서 갱신된다. 서버(scheduler)가 죽은 경우 last_checkin_time+checkin_interval 값이 now 값 보다 작아지게 되므로 이를 활용하여 scheduler 가 죽었는지 판별할 수 있다. checkin_interval 은 quartz property 값에서 지정할 수 있다.

 

quartz 메타테이블 정보

 

 

2. Batch 메타테이블

1) JOB_EXECUTION;  

job 정보 (실행/종료 시작, 실행 상태 등) 관리.

Clustering모드일 경우 어떤 서버(스케쥴러)에서 배치가 실행되었는지 알 수 없다. 만약 이를 저장하고 싶다면 별도의 테이블을 두기보단 해당 테이블에 칼럼을 하나 추가하여 job 데이터가 insert 될 때 서버정보를 함께 넣어주어 관리 할 수 있다.

CRUD는 JdbcJobExecutionDao.class에 있으므로 해당 파일과, JobRepositoryFactoryBean 을 구현해주고 bean 설정을 조금 손봐주면 된다.
2) JOB_EXECUTION_CONTEXT;  
3) JOB_EXECUTION_PARAMS; job parameter 정보 (jobLauncher 실행시 parameter 정보) 
4) JOB_INSTANCE;  
5) STEP_EXECUTION;  job 의 step 정보
6) STEP_EXECUTION_CONTEXT;

7) STEP_EXECUTION_SEQ; 시퀀스 관리용 테이블

8) JOB_SEQ; 시퀀스 관리용 테이블

9) JOB_EXECUTION_SEQ; 시퀀스 관리용 테이블

 

Batch 메타테이블 정보

 

반응형

+ Recent posts