Chunk ํ”„๋กœ์„ธ์‹ฑ

SpringBatch์˜ chunk ํ”„๋กœ์„ธ์‹ฑ

100๊ฐœ์˜ row ๋ฐ์ดํ„ฐ๋Š” ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ถฉ๋ถ„ํžˆ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, 100๋งŒ๊ฐœ์˜ row ๋ฐ์ดํ„ฐ๋Š” ์กฐ๊ธˆ ์–ด๋ ค์›€์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์˜ฌ๋ ค์•ผ ํ•˜๋Š” ๋ฌธ์ œ

  • 100๋งŒ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ connection ๋ฌธ์ œ ๋“ฑ

ํฐ ๋ฐ์ดํ„ฐ๋ฅผ Chunk ๋‹จ์œ„๋กœ ๋ถ„ํ•  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด Chunk ํ”„๋กœ์„ธ์‹ฑ์ด๋‹ค.

Chunk ํ”„๋กœ์„ธ์‹ฑ ๋ฐฐ์น˜ ํ”Œ๋กœ์šฐ

  1. Reader๋กœ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€์„œ read() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ•œ row์”ฉ ์‘๋‹ต.

  2. ์‘๋‹ต ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ Processor์—์„œ ๊ฐ€๊ณต ์ฒ˜๋ฆฌ ํ•œ๋‹ค.

  3. ๊ฐ€๊ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ChunkSize๋งŒํผ ๋ชจ์•„, Writer์—์„œ ์ €์žฅ์†Œ์— ์ €์žฅํ•œ๋‹ค.

Chunk ํ”„๋กœ์„ธ์‹ฑ ์˜์‚ฌ ์ฝ”๋“œ

  1. ์ฒซ for๋ฌธ ์•ˆ์—์„œ Writer์—์„œ ์ฒ˜๋ฆฌํ•  Item list๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

  2. ๋‘ ๋ฒˆ์งธ for๋ฌธ์—์„œ๋Š” chunkSize๋งŒํผ loop๋ฅผ ๋Œ๋ฉด์„œ, ItemReader์—์„œ Item์„ ๊ฐ€์ ธ์˜จ๋‹ค.

    • Processor๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ฐ€๊ณต ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•จ. (Processor๊ฐ€ ํ•„์ˆ˜ ์š”์†Œ๋Š” ์•„๋‹ˆ๋‹ค.)

    • ๊ฐ€๊ณต ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๋ฉด ์•„์ดํ…œ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

  3. ItemWriter์—์„œ Item์„ ์ €์žฅ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์œ„ ๊ณผ์ •์ด ChunkSize์˜ ํ•œ ์‚ฌ์ดํด์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ์ž‘์—…์„ totalSize๋งŒํผ ์ž‘์—…ํ•œ๋‹ค.

์‰ฝ๊ฒŒ ์š”์•ฝํ•˜๋ฉด Reader์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜ ์ฝ๊ณ , ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ Processor๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋“ค์ด Chunk ๋‹จ์œ„๋งŒํผ ์Œ“์ด๋ฉด Writer์—์„œ ์ €์žฅ์†Œ์— write( )ํ•œ๋‹ค.

  • Reader, Procssor์—์„œ๋Š” ํ•˜๋‚˜์”ฉ, Writer์—์„œ Chunk ๋‹จ์œ„ ์ฒ˜๋ฆฌ

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ Chunk๋ผ๋Š” ๋‹จ์œ„๋กœ ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

Job์€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”๊ฐ€ - ํŠธ๋žœ์žญ์…˜ ๊ด€๋ จ

https://devocean.sk.com/blog/techBoardDetail.do?ID=164085arrow-up-right

Job์„ ์‹คํ–‰ํ•  ๋•Œ JobLauncher๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•˜๋Š”๋ฐ, ๋ฉ”์†Œ๋“œ๋ฅผ ๋”ฐ๋ผ ๋“ค์–ด๊ฐ€๋ฉด TaskletStep ํด๋ž˜์Šค์˜ doExecute()๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” Job์•ˆ์— Step์ด ์ •์˜๋˜์–ด ์žˆ๋Š”๋ฐ ๊ทธ Step์ด ํ˜ธ์ถœํ•  ๋•Œ ์‹คํ–‰๋œ๋‹ค.

Step์˜ ChunckContext๋ฅผ Srping Trasaction์˜ TransactionTemplate ์œ„์—์„œ Callback ํ˜•ํƒœ๋กœ ๋™์ž‘ํ•œ๋‹ค.

๊ฒฐ๊ตญ Step์˜ Chunk Tasklet์€ transactionManager ์œ„์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค.

Job์ด ์‹คํ–‰๋˜๊ณ  read ํ•˜๊ธฐ ์ „๋ถ€ํ„ฐ transaction์ด ์‹œ์ž‘๋˜๊ณ , ์ข…๋ฃŒ ์ „๊นŒ์ง€ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ชจ๋‘ rollback ์‹œ์ผœ๋ฒ„๋ฆฐ๋‹ค.

Last updated