โ 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๋ ํฌ๊ธฐ๊ฐ ๋ถ๊ท ํํ ํํฐ์ ์ ๋ฐ์ ์ํฌ ์ ์๋ค
'์คํฐ๋ > ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS186] Introduction to Database Systems - Week 6 (0) | 2023.06.03 |
---|---|
[CS186] Introduction to Database Systems - Week 4 (0) | 2023.05.20 |
[CS186] Introduction to Database Systems - Week 3 (0) | 2023.05.13 |
[CS186] Introduction to Database Systems - Week 2 (0) | 2023.05.06 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ] Relational Languages (1) | 2023.04.15 |
๋๊ธ