Print
카테고리: [ Development ]
조회수: 5632

1. 개요

오늘은 Spring Batch Partition에 대해 말해보려고 한다.


2. 방식

Spring Batch는 "chunk" 기반으로 처리를 한다. 이는 우선 row들을 하나씩 읽어서 출력을 위한 chunks들을 생성한다.

ItemReader가 read 역할을 담당하고, ItemProcessor가 처리하고 모은다.

아이템의 수가 commit interval에 도달하면 전체 chunk는 ItemWriter에 전달되어 commit된다.

일반적으로는 이런데 Spring Batch는 시리얼한 작업을 페러렐하게 수행할 수 있도록 파티셔너라는 기능을 제공한다.

파티션 이름은 임의로 줘도 되나 unique해야 한다.

<batch:handler grid-size="5" task-executor="taskExecutor" /> 에서 grid-size는 필수 파라메터이며 slave의 수다.

파티션된 수가 grid-size와 같을 필요는 없다. 적거나 많아도 된다.

총 데이터 사이즈가 200이고 grid-size가 4라고 하면 각 스레드는 다음과 같은 데이터를 처리한다.


3. 구성

이제 대량 배치에 대한 구성상의 포인트를 말해보려고 한다.

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">

        <constructor-arg index="0" ref="sqlSessionFactory" />

        <constructor-arg index="1" value="BATCH" />

</bean>