์™ธ๋ถ€ ์ •๋ ฌ (External Sort)

์™ธ๋ถ€ ์ •๋ ฌ(External Sort)์ด๋ž€?

๋ฐ์ดํ„ฐ๋“ค์˜ ํฌ๊ธฐ๊ฐ€ ์ฃผ๊ธฐ์–ต์žฅ์น˜๋ณด๋‹ค ์ปค ์ •๋ ฌ ํ•  ๋ฐ์ดํ„ฐ๋“ค์„ ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์˜จ์ „ํžˆ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ๋˜๋Š” ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฃผ๊ธฐ์–ต์žฅ์น˜๊ฐ€ 1GB๊ณ , ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ์ด 100GB๋ผ๊ณ  ํ–ˆ์„ ๋•Œ ๋‚ด๋ถ€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌํ•  ์ˆ˜ ์—†๋‹ค.

 

์™ธ๋ถ€ ์ •๋ ฌ ๊ณผ์ •

๋ถ„ํ• 

 

 

์™ธ๋ถ€ ์ •๋ ฌ์€ ์ฃผ๊ธฐ์–ต์žฅ์น˜์—์„œ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์ฝ์–ด, ๋‚ด๋ถ€์ •๋ ฌ์„ ์ˆ˜ํ–‰ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜์— ๋‹ค์‹œ ์ €์žฅํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‚ด๋ถ€ ์ •๋ ฌ์€ ์ƒํ™ฉ์— ๋งž๋Š” ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

1. ๋ฉ”๋ชจ๋ฆฌ ๋งŒํผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค. 
2. ํ™œ์šฉํ•  ๋‚ด๋ถ€ ์ •๋ ฌ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•œ๋‹ค.
3. ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜์— ๊ธฐ๋กํ•œ๋‹ค.

์ •๋ณต

 

 

์ •๋ ฌ๋˜์–ด ๋‚˜๋ˆ ์ง„ ๋ธ”๋ก๋“ค์„ ํ•˜๋‚˜์˜ ๋ธ”๋ก์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Merge ์ ˆ์ฐจ๋ฅผ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋ธ”๋ก๋“ค์„ ๋ถ€๋ถ„์ ์œผ๋กœ ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ฝ์–ด ๋“ค์—ฌ Merge๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜์— ๋‹ค์‹œ ์ž…๋ ฅํ•˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.  2๊ฐœ์˜ ๋ธ”๋ก๋“ค์„ ๋ฌถ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ถ€๋ถ„ ์ฝ์–ด๋“ค์ด๋ฉฐ  ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 1GB์˜ ๋ธ”๋ก์„ 2๊ฐœ์”ฉ ์ง์ง€์–ด Merge ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด 2GB์˜ ๋ธ”๋ก๋“ค์ด ๋งŒ๋“ค์–ด์ง€๋ฉฐ, 2GB์˜ ๋ธ”๋ก๋“ค์„ ์ง์ง€์–ด Mergeํ•˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด 4GB์˜ ๋ธ”๋ก๋“ค์ด ๋งŒ๋“ค์–ด์ง„๋‹ค. ์ด๋ฅผ ๋๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด ๊ฒฐ๊ตญ ํ•˜๋‚˜์˜ ๋ธ”๋ก์ด ๋‚จ๊ฒŒ ๋œ๋‹ค. 

while(๋ธ”๋ก ์ˆ˜๊ฐ€ 1๊ฐœ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.) { 
	1. 2๊ฐœ์˜ ๋ธ”๋ก์„ ์„ ํƒํ•œ๋‹ค.
	2. 2๊ฐœ์˜ ๋ธ”๋ก์—์„œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค. 
	3. ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ๊ฐ ๋น„๊ตํ•˜๋ฉฐ ํ•ฉ๋ณ‘ ์ •๋ ฌ์˜ ์ •๋ณต ๊ณผ์ •๊ณผ ๋™์ผํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜์—ฌ ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜์— ๊ธฐ๋กํ•œ๋‹ค. 
	4. 2๊ฐœ์˜ ๋ธ”๋ก์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์™„๋ฃŒ๋์œผ๋ฉด ๋‹ค์Œ์œผ๋กœ 2๊ฐœ์˜ ๋ธ”๋ก์„ ์„ ํƒํ•œ๋‹ค. (๋งŒ์•ฝ, ๋ธ”๋ก์ด 1๊ฐœ ๋‚จ์•˜์œผ๋ฉด ๊ทธ ๋ธ”๋ก์€ ๊ทธ๋Œ€๋กœ ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜์— ๊ธฐ๋กํ•œ๋‹ค. 
}

๊ท ํ˜•์  ๋‹ค๋ฐฉํ–ฅ ํ•ฉ๋ณ‘ ์ •๋ ฌ 

์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ์™ธ๋ถ€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•ฉ๋ณ‘ ์ •๋ ฌ์„ ์‘์šฉ/๋ณ€ํ˜•ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๊ท ํ˜•์  ๋‹ค๋ฐฉํ–ฅ ํ•ฉ๋ณ‘ ์ •๋ ฌ์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜ ์ ‘๊ทผ ์‹œ๊ฐ„

์™ธ๋ถ€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ •๋ ฌ ์‹œ๊ฐ„๋ณด๋‹ค๋Š” ์•„๋ฌด๋ž˜๋„ ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ •๋ ฌ ๊ณผ์ ์—์„œ ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜์— ์ ‘๊ทผํ•˜๋Š” ํšŸ์ˆ˜๋„ ๋งŽ๊ณ , ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜ ์ ‘๊ทผ ์‹œ๊ฐ„(access time)์ด ๊ฐ€์žฅ ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

REFERENCE

https://dudri63.github.io/2019/02/03/algo32/

 

[Algorithm] ์™ธ๋ถ€ ์ •๋ ฌ (์ •๋ ฌ)

1. ์™ธ๋ถ€ ์ •๋ ฌ2. ์•Œ๊ณ ๋ฆฌ์ฆ˜3. ์‹œ๊ฐ„ ๋ณต์žก๋„ 1. ์™ธ๋ถ€ ์ •๋ ฌ ‘์™ธ๋ถ€ ์ •๋ ฌ(External Sort)’์€ ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ์ปค์„œ ์ฝ๊ณ  ์“ฐ๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋Š ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜์— ์ž…๋ ฅ์„ ์ €์žฅํ•  ์ˆ˜ ๋ฐ–์— ์—†๋Š” ์ƒํƒœ์—์„œ ์ˆ˜

dudri63.github.io