๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์Šคํ„ฐ๋””/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

[CS186] Introduction to Database Systems - Week 5

by moon101 2023. 5. 27.

โ›… Sorting โ›…

I/O Review

  • ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ๋กœ ์“ฐ๊ฑฐ๋‚˜ ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ํŽ˜์ด์ง€๋ฅผ ์ฝ์„ ๋•Œ I/O๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ performance๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ I/Os๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ฐœ์ƒํ•˜๋Š”์ง€๋ฅผ ๋ณธ๋‹ค

Two Way External Merge Sort

  • ํ•œ๋ฒˆ์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ์ •๋ ฌํ•œ ๋’ค์— ๋จธ์ง€ํ•ด์•ผ ํ•œ๋‹ค
  • 1. conquer: ํŽ˜์ด์ง€ ๋ณ„๋กœ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค
  • 2. sorted runs: merge sort ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€๋“ค์„ ๋จธ์ง€ ํ•œ ๊ฒฐ๊ณผ์ด๋‹ค
  • 3. ํ•˜๋‚˜์˜ sorted run์ด ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† sorted runs๋ฅผ ๋จธ์ง€ํ•œ๋‹ค

Analysis of Two Way Merge

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ถ„์„ํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ I/Os๋ฅผ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€์ด๋‹ค
  • ๋ฐ์ดํ„ฐ์˜ ๊ฐ ํŒจ์Šค๋งˆ๋‹ค 2 * N๊ฐœ์˜ I/O๊ฐ€ ํ•„์š”ํ•˜๋‹ค (N์€ ํŽ˜์ด์ง€ ์ˆ˜) -> ๊ฐ ํŒจ์Šค์—์„œ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ฝ๊ณ  ์ˆ˜์ •ํ•œ ํ›„์— ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์—
  • ์ด์ œ ํ•„์š”ํ•œ ํŒจ์Šค์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ด์•ผ ๋˜๋Š”๋ฐ ์šฐ์„  ์ดˆ๊ธฐ conquer ํŒจ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ํŒจ์Šค๋Š” ํ•„์š”ํ•˜๋‹ค
  • ๋ณ‘ํ•ฉ ํŒจ์Šค๋Š” ๊ฐ ํŒจ์Šค๋งˆ๋‹ค sorted runs๋ฅผ ๋ฐ˜์œผ๋กœ ์ค„์ด๊ธฐ ๋•Œ๋ฌธ์— log2(N)์ด ๋œ๋‹ค
  • ๋”ฐ๋ผ์„œ ์ตœ์ข…์ ์ธ ๊ณต์‹์€ 2N * (1 + [log2(N]) I/Os๊ฐ€ ๋œ๋‹ค
  • ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฒ„ํผ ํŽ˜์ด์ง€์˜ ์ˆ˜(๋ฒ„ํผ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„)๋ฅผ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์“ฐ์ง„ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•œ๋‹ค

Full External Sort

  • Two Way External Merge Sort๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค
  • 1. ์ดˆ๊ธฐ conquer pass์—์„œ ๊ฐ€๋Šฅํ•œ ๋ฒ„ํผ ํŽ˜์ด์ง€ ์ˆ˜ ๋งŒํผ ์ ์žฌํ•ด์„œ ํ•œ๋ฒˆ์— sorted run์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค -> ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฒ˜์Œ pass ์ดํ›„์— ๋” ์ ๊ณ  ๊ธด sorted runs์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค
  • 2. ํ•œ๋ฒˆ์— 2๊ฐœ ์ด์ƒ์˜ sorted runs์„ ๋จธ์ง€ํ•œ๋‹ค.  ์˜ˆ๋ฅผ ๋“ค์–ด B๊ฐœ์˜ ๋ฒ„ํผ ํŽ˜์ด์ง€(ํ”„๋ ˆ์ž„)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์ถœ๋ ฅ๋ฒ„ํผ๋ฅผ ์œ„ํ•œ ๋ฒ„ํผ ํŽ˜์ด์ง€ 1์„ ์ œ์™ธํ•˜๊ณ  B-1๊ฐœ์˜ ์ž…๋ ฅ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํ•œ ๋ฒˆ์— B-1๊ฐœ์˜ sorted runs๋ฅผ ๋จธ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํŒจ์Šค์˜ ์ˆ˜(I/Os)๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„ ์ผ ์ˆ˜ ์žˆ๋‹ค

Analysis of Full External Merge Sort

  • 2N ∗ (1 + ⌈logB−1 ⌈N/B⌉⌉) I/Os

 

 

โ›… Hashing โ›…

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋™์ผํ•œ ๊ฐ’์„ ๊ทธ๋ฃนํ•‘ ํ•˜๋Š” ๊ฒƒ์„ ํ•ด์‹ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค

 

General Strategy

  • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๋ฒˆ์— ์ €์žฅํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋‹ค๋ฅธ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์„œ๋กœ ์—ฐ๊ฒฐํ•ด์•ผ ํ•œ๋‹ค
  • ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ๋‹ค๋ฅธ ๋‘๊ฐœ์˜ ํ•ด์‹œ ํ…Œ์ด๋ธ”์ด ๋˜‘๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ concatenate ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค
  • ๊ทธ๋ž˜์„œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹œ ํ…Œ์ด๋ธ”๋กœ ๊ตฌ์ถ•ํ•˜๊ธฐ ์ „์—, ํŠน์ • ๊ฐ’์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์–ด๋„ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋‚˜ํƒ€๋‚˜๋ฉด, ํ•ด๋‹น ๊ฐ’์˜ ๋ชจ๋“  ๋ฐœ์ƒ์€ ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค
  • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ’๋“ค์€ ํ•˜๋‚˜์˜ ํ•ด์‹œ ํ…Œ์ด๋ธ”์—๋งŒ ๋‚˜ํƒ€๋‚˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค

The Algorithm

  • ๋ถ„ํ• ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ divide ๋‹จ๊ณ„์—์„œ ํŒŒํ‹ฐ์…”๋‹ ํŒจ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , conquer ๋‹จ๊ณ„์—์„œ๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ•œ๋‹ค

Drawbacks of Hashing

  • ํ•ด์‹ฑ์€ data skew์— ๋ฏผ๊ฐํ•˜๋‹ค
  • data skew๋Š” ํ•ด์‹œํ•˜๋Š” ๊ฐ’๋“ค์ด ๊ท ์ผํ•œ ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค
  • ํ•ด์‹œ๋œ ํŒŒํ‹ฐ์…˜์˜ ๊ฒฝ์šฐ ๊ฐ™์€ ๊ฐ’๋“ค์€ ๋™์ผํ•œ ํŒŒํ‹ฐ์…˜์— ์œ„์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, data skew๋Š” ํฌ๊ธฐ๊ฐ€ ๋ถˆ๊ท ํ˜•ํ•œ ํŒŒํ‹ฐ์…˜์„ ๋ฐœ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค

๋Œ“๊ธ€