ItemReader
-
15. ItemReader (DB)BackEnd/Spring Batch 2021. 12. 31. 00:25
배치 애플리케이션은 실시간적 처리가 어려운 대용량 데이터를 다루며 이 때 DB I/O의 성능문제와 메모리 자원의 효율성 문제를 해결할 수 있어야 합니다. 스프링 배치에서는 대용량 데이터 처리를 위해 Cusor Based / Paging Based 두 가지 처리 방식을 제시하고 있습니다. Cursor Based 처리 JDBC ResultSet의 기본 메커니즘 사용 현재 행에 커서를 유지하며 다음 데이터를 호출하면 다음 행으로 커서를 이동하며 데이터 반환이 이루어지는 Streaming 방식의 I/O ResultSet이 open 될 때마다 next() 메소드가 호출되어 Database의 데이터가 반환되고 객체와 매핑이 이루어짐 DB Connection이 연결되면 배치 처리가 완료될 때까지 데이터를 읽어오기 때..
-
14. ItemReader (Json)BackEnd/Spring Batch 2021. 12. 30. 22:30
JsonItemReader Json 데이터의 Parsing과 Binding을 JsonObjectReader 인터페이스 구현체에 위임하여 처리하는 ItemReader입니다. JacksonJsonObjectReader와 GsonJsonObjectReader 두 가지 구현체를 제공합니다. package io.springbatch.springbatchlecture; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.c..
-
13. ItemReader (XML)BackEnd/Spring Batch 2021. 12. 30. 22:10
JAVA XML API로는 DOM 방식, SAX 방식, Stax 방식(Streaming API for XML)이 있습니다. DOM 방식 문서 전체를 메모리에 로드한 후 Tree 형태로 만들어서 데이터를 처리하는 방식(pull 방식)으로 엘리먼트 제어는 유연하나 문서 크기가 클 경우 메모리 사용이 많고 속도가 느립니다. SAX 방식 문서의 항목을 읽을 때 마다 이벤트가 발생하여 데이터를 처리하는 방식(push 방식)으로 메모리 비용이 적고 속도가 빠른 장점은 있으나 엘리멘트 제어가 어렵습니다. StAX 방식 DOM과 SAX의 장점과 단점을 보완한 API 모델로서 push와 pull을 동시에 제공합니다. XML 문서를 읽고 쓸 수 있는 양방향 파서기를 지원하며, XML 파일의 항목에서 항목으로 직접 이동하면..
-
11. 스프링 배치 청크 프로세스 (Chunk)BackEnd/Spring Batch 2021. 12. 24. 17:30
Chunk란 여러 개의 아이템을 묶은 하나의 덩어리, 블록을 의미합니다. 한번에 하나씩 아이템을 입력 받아 Chunk 단위의 덩어리로 만든 후 Chunk 단위로 트랜잭션을 처리합니다. 즉, Chunk 단위의 Commit과 Rollback이 이루어집니다. 일반적으로 대용량 데이터를 한번에 처리하는 것이 아닌 청크 단위로 쪼개어서 더 이상 처리할 데이터가 없을 때까지 반복해서 입출력하는데 사용됩니다. Chunk vs Chunk Chunk는 ItemReader로 읽은 하나의 아이템을 Chunk에서 정한 개수만큼 반복해서 저장하는 타입 Chunk는 ItemReader로부터 전달받은 Chunk를 참조해서 ItemProcessor에서 적절하게 가공, 필터링한 다음 ItemWriter에 전달하는 타입 ChunkOri..