ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SPRING] Spring Batch Chunk 지향처리
    study/spring 2020. 8. 21. 22:03

    Chunk

    Spring Batch에서의 Chunk란 데이터 덩어리로 작업을 할 때 각 커밋 사이에서 처리되는 row의 수를 말한다.

    즉, Chunk 지향 처리

    한 번에 하나씩 데이터를 읽어 Chunk라는 덩어리를 만든 후 Chunk 단위로 트랜잭션을 다루는 것을 의미한다.

     

    여기서 트랜잭션이라는 것은

    Chunk 단위로 트랜잭션을 수행하기 때문에 실패할 경우 해당 Chunk 만큼만 롤백이 되고 이전에 커밋된 트랜잭션 범위까지는 반영이 된다는 것이다.

    Chunk 지향 처리 - 출처 : https://jojoldu.tistory.com/331

    위의 이미지로 확인할 수 있는 순서는 아래와 같다

    1. Reader를 통해 데이터를 하나 읽어온다.

    2. 읽어온 데이터를 Processor에서 가공한다.

    3. 가공된 데이터들을 별도의 공간에 모은 후 Chunk 단위만큼 쌓이게 되면 Writer에 전달하고 Writer는 일괄 저장한다.

     

    즉, Reader와 Processor에서는 1건씩 다뤄지고, Writer에서는 Chunk 단위로 처리가 된다.

     

     

    job안에 step이 있고 step 안에는 tasklet이 있다.

    reader/processor/writer가 모여서 tasklet을 이루게 된다. ( reader + processor + writer == tasklet )

    그래서 Tasklet으로 커스텀하게 하나를 구현하느냐, reader/processor/writer 묶음의 Tasklet을 구현하느냐의 방식으로 나눌 수 있다.

    그냥 Tasklet을 커스텀하게 구현하는 경우에는 데이터가 많지 않고 단순한 로직, chunk 단위의 트랜잭션 관리 등이 필요없을 경우에 사용을 하고,

    reader/processor/writer로 사용하는 경우에는 가장 보편적인 배치 조합이기 때문에 대부분의 배치 구현을 이 조합으로 구현한다.

     

    참고 :

    https://jojoldu.tistory.com/331

    'study > spring' 카테고리의 다른 글

    [SPRING] JPA의 영속성 컨텍스트  (0) 2020.08.30
    [SPRING] @SpringBootApplication  (0) 2020.08.29
    [SPRING] DispatcherServlet  (0) 2020.08.04
    [SPRING] Reqeust 흐름과 WAS  (0) 2020.07.26
    [SPRING] Spring vs. Spring boot  (0) 2020.07.23
Designed by Tistory.