13. Data Storage Structures
File Organization
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ์ผ(file)์ ์งํฉ์ผ๋ก ์ ์ฅ
- ํ์ผ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ ์ฝ๋(record)์ ์ํ์ค๋ก ๊ตฌ์ฑ
- ๊ฐ ํ์ผ์ ๋ธ๋ก(block)์ด๋ผ๋ ๊ณ ์ ๊ธธ์ด ์ ์ฅ ๋จ์๋ก ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถํ ๋๋ฉฐ, ์ด๋ ์ ์ฅ ํ ๋น ๋ฐ ๋ฐ์ดํฐ ์ ์ก์ ๋จ์
- ๋ธ๋ก์ ๋ ์ฝ๋ ํฌ๊ธฐ์ ์ฌ์ฉ ์ค์ธ ๋ฌผ๋ฆฌ์ ๋ ์ฝ๋ ๊ตฌ์ฑ ํํ์ ๋ฐ๋ผ ์ฌ๋ฌ ๋ ์ฝ๋๋ฅผ ํฌํจ ๊ฐ๋ฅ
- ๋ ์ฝ๋๋ ํ๋(field)(์์ฑ์ ์ํ)์ ์ํ์ค
- ๊ฐ๋ฅํ ๊ฐ์ ๋ค
- ์ด๋ค ๋ ์ฝ๋๋ ๋ธ๋ก๋ณด๋ค ํฌ์ง ์์ (๋๋ถ๋ถ์ DB ์์คํ ์์ ํ์ค์ )
- ๋ธ๋ก๋ณด๋ค ํฐ ๋ ์ฝ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ๋ก ๋น์ฐ์์ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์
- ๊ฐ ๋ ์ฝ๋๋ ๋จ์ผ ๋ธ๋ก์ ์์ ํ ํฌํจ๋จ; ๋ธ๋ก ๊ฒฝ๊ณ๋ฅผ ๋์ง ์์
- ๋ ๋ธ๋ก์ ๊ฑธ์น ๋ ์ฝ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ๋ก ๋น์ฐ์์ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์
- ๊ฐ ํ์ผ์ ํน์ ์ ํ์ ๋ ์ฝ๋๋ง ๊ฐ์ง
- ๋ค๋ฅธ ๊ด๊ณ(relation)์ ๋ํด ๋ค๋ฅธ ํ์ผ ์ฌ์ฉ
Fixed-Length Records
- ๋จ์ํ ์ ๊ทผ ๋ฐฉ์:
- ๋ ์ฝ๋ ๋ฅผ ๋ฐ์ดํธ ๋ถํฐ ์ ์ฅ. ์ฌ๊ธฐ์ ์ ๊ฐ ๋ ์ฝ๋์ ํฌ๊ธฐ
- ๋ ์ฝ๋ ์ ๊ทผ์ ๊ฐ๋จํ์ง๋ง ๋ ์ฝ๋๊ฐ ๋ธ๋ก์ ๊ต์ฐจํ ์ ์์
- ์์ : ๋ ์ฝ๋๊ฐ ๋ธ๋ก ๊ฒฝ๊ณ๋ฅผ ๋์ง ์๋๋ก ํ์ฉ
- ๋ ์ฝ๋ ์ ์ญ์ : ๋์๋ค
- ๋์ 1: ๋ ์ฝ๋ ์ ๋ก ์ด๋
- ๋์ 2: ๋ ์ฝ๋ ์ ๋ก ์ด๋
- ๋์ 3: ๋ ์ฝ๋๋ฅผ ์ด๋ํ์ง ์๊ณ , ๋ชจ๋ ๋น ๋ ์ฝ๋๋ฅผ free list์ ์ฐ๊ฒฐ
Variable-Length Records
- ๊ฐ๋ณ ๊ธธ์ด ๋ ์ฝ๋๋ ์ฌ๋ฌ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์์ ๋ฐ์:
- ํ์ผ ๋ด์ ์ฌ๋ฌ ๋ ์ฝ๋ ํ์ ์ ์ฅ
- ๋ฌธ์์ด(
varchar)๊ณผ ๊ฐ์ด ํ๋ ์ด์์ ํ๋์ ๊ฐ๋ณ ๊ธธ์ด๋ฅผ ํ์ฉํ๋ ๋ ์ฝ๋ ํ์ - ๋ฐฐ์ด๊ณผ ๊ฐ์ด ๋ฐ๋ณต๋๋ ํ๋๋ฅผ ํ์ฉํ๋ ๋ ์ฝ๋ ํ์ (์ผ๋ถ ๊ตฌํ ๋ฐ์ดํฐ ๋ชจ๋ธ์์ ์ฌ์ฉ)
- ํด๊ฒฐํด์ผ ํ ๋ ๊ฐ์ง ๋ฌธ์
- ๊ฐ๋ณ ์์ฑ์ด ๊ฐ๋ณ ๊ธธ์ด์ผ์ง๋ผ๋ ์ฝ๊ฒ ์ถ์ถํ ์ ์๋๋ก ๋จ์ผ ๋ ์ฝ๋๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ
- ๋ธ๋ก ๋ด์ ๋ ์ฝ๋๋ฅผ ์ฝ๊ฒ ์ถ์ถํ ์ ์๋๋ก ๋ธ๋ก ๋ด์ ๊ฐ๋ณ ๊ธธ์ด ๋ ์ฝ๋๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ
- ๋จ์ผ ๊ฐ๋ณ ๊ธธ์ด ๋ ์ฝ๋ ํํ ๋ฐฉ๋ฒ
- ๋ ์ฝ๋ ๊ตฌ์กฐ๋ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ
- ๊ณ ์ ๊ธธ์ด ๋ถ๋ถ (์ด๊ธฐ ๋ถ๋ถ)
- ๊ฐ ๊ฐ๋ณ ๊ธธ์ด ํ๋์ ๋ํ ๊ณ ์ ํฌ๊ธฐ (์คํ์ , ๊ธธ์ด) ์ ๋ณด
- ๊ณ ์ ๊ธธ์ด ํ๋์ ๊ฐ๊ณผ Null ๋นํธ๋งต
- ๊ฐ๋ณ ๊ธธ์ด ๋ถ๋ถ: ๊ฐ๋ณ ๊ธธ์ด ํ๋์ ๊ฐ
- ๊ณ ์ ๊ธธ์ด ๋ถ๋ถ (์ด๊ธฐ ๋ถ๋ถ)
- ๋ ์ฝ๋ ๊ตฌ์กฐ๋ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ
- ๋ธ๋ก ๋ด ๋ค์ค ๊ฐ๋ณ ๊ธธ์ด ๋ ์ฝ๋ ์ ์ฅ ๋ฐฉ๋ฒ
- ์ฌ๋กฏ ํ์ด์ง(slotted-page) ๊ตฌ์กฐ๋ ๋ธ๋ก ๋ด ๋ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ
- ์ฌ๋กฏ ํ์ด์ง ํค๋(header) ํฌํจ ๋ด์ฉ:
- ํค๋์ ๋ ์ฝ๋ ์ํธ๋ฆฌ(entry) ์
- ๋ธ๋ก ๋ด ์ฌ์ ๊ณต๊ฐ์ ๋
- ๊ฐ ๋ ์ฝ๋์ ์์น์ ํฌ๊ธฐ๋ฅผ ํฌํจํ๋ ํญ๋ชฉ๋ค์ ๋ฐฐ์ด
- ๋ ์ฝ๋๋ ์ญ์ ๋๋ ํฌ๊ธฐ ๋ณ๊ฒฝ ์ ํ์ด์ง ๋ด์์ ์ด๋ํ์ฌ ๋ ์ฝ๋ ์ฌ์ด์ ๋น ๊ณต๊ฐ ์์ด ์ฐ์์ ์ผ๋ก ์ ์ง๋ ์ ์์; ํค๋์ ํญ๋ชฉ์ ๊ทธ์ ๋ฐ๋ผ ์ ๋ฐ์ดํธ๋์ด์ผ ํจ
- ์ธ๋ถ ๋ ์ฝ๋ ํฌ์ธํฐ๋ ๋ ์ฝ๋๋ฅผ ์ง์ ๊ฐ๋ฆฌ์ผ์๋ ์ ๋จ; ๋์ ํค๋์ ์๋ ํด๋น ๋ ์ฝ๋์ ํญ๋ชฉ์ ๊ฐ๋ฆฌ์ผ์ผ ํจ
Organization of Records in Files
- Heap ํ์ผ ์กฐ์ง
- ๋ ์ฝ๋๋ ๊ณต๊ฐ์ด ์๋ ํ์ผ ์ด๋์๋ ์์น ๊ฐ๋ฅ
- ๋ ์ฝ๋์ ์์ ์์
- Sequential ํ์ผ ์กฐ์ง
- ๊ฒ์ ํค(search key) ๊ฐ์ ๋ฐ๋ผ ๋ ์ฝ๋๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ์ฅ
- Multitable clustering ํ์ผ ์กฐ์ง
- ์ฌ๋ฌ ๋ค๋ฅธ ๊ด๊ณ์ ๋ ์ฝ๋๋ฅผ ๋์ผํ ํ์ผ์ ์ ์ฅ ๊ฐ๋ฅ
- ๋๊ธฐ: ํน์ ์กฐ์ธ(join) ์ฐ์ฐ์ ๋ํ I/O๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๊ด๋ จ ๋ ์ฝ๋๋ฅผ ๋์ผํ ๋ธ๋ก์ ์ ์ฅ
- B+-tree ํ์ผ ์กฐ์ง
- ๋ง์ ์์ ์ฝ์ , ์ญ์ , ์ ๋ฐ์ดํธ ์ฐ์ฐ์๋ ์ ๋ ฌ๋ ์ ์ฅ ์ ์ง
- ์์ธํ ๋ด์ฉ์ 14์ฅ
- Hashing ํ์ผ ์กฐ์ง
- ๊ฒ์ ํค์ ๋ํด ๊ณ์ฐ๋ ํด์ ํจ์(hash function); ๊ฒฐ๊ณผ๋ ๋ ์ฝ๋๊ฐ ์์นํด์ผ ํ ํ์ผ์ ๋ธ๋ก์ ์ง์
- ์์ธํ ๋ด์ฉ์ 14์ฅ
Heap File Organization
- ๋ ์ฝ๋๋ ์ฌ์ ๊ณต๊ฐ์ด ์๋ ํ์ผ ์ด๋์๋ ์์น ๊ฐ๋ฅ
- ๋ ์ฝ๋๋ ์ผ๋จ ํ ๋น๋๋ฉด ๋ณดํต ์ด๋ํ์ง ์์ (๋ ์ฝ๋ ์์ ์ ์ง ๋ถํ์)
- ํ์ผ ๋ด ์ฌ์ ๊ณต๊ฐ์ด ์๋ ๋ธ๋ก์ ํจ์จ์ ์ผ๋ก ์ฐพ๋ ๊ฒ์ด ์ค์
- Free-space map
- ๋ ์ฝ๋๋ฅผ ์ ์ฅํ ์ฌ์ ๊ณต๊ฐ์ด ์๋ ๋ธ๋ก์ ์ถ์ ํ๊ธฐ ์ํ ๊ณต๊ฐ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ
- ๋ธ๋ก ๋น 1๊ฐ์ ํญ๋ชฉ์ ๊ฐ์ง ๋ฐฐ์ด: ๊ฐ ํญ๋ชฉ์ ๋ช ๋นํธ์์ ๋ฐ์ดํธ ํฌ๊ธฐ์ด๋ฉฐ, ๋ธ๋ก์ ์ฌ์ ๊ณต๊ฐ ๋น์จ์ ๊ธฐ๋ก
- ์๋ ์์์์ ๋ธ๋ก ๋น 3๋นํธ, ๊ฐ์ 8๋ก ๋๋ ๊ฐ์ด ํด๋น ๋น์จ์ ๋ํ๋
- ํฐ ํ์ผ์์ ์๋ ํฅ์์ ์ํด 2์ฐจ ์์ค์ free-space map์ ๊ฐ์ง ์ ์์
- ์๋ ์์์์ ๊ฐ ํญ๋ชฉ์ 1์ฐจ ์์ค free-space map์ 4๊ฐ ํญ๋ชฉ ์ค ์ต๋๊ฐ์ ์ ์ฅ
- Free space map์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋์คํฌ์ ๊ธฐ๋ก๋จ: ๋์คํฌ ์์ ๋งต์ ์ค๋๋ ์ ๋ณด์ผ ์ ์์
- ์ผ๋ถ ํญ๋ชฉ์ ๋ํด ์๋ชป๋ (์ค๋๋) ๊ฐ์ ๊ฐ์ ธ๋ ๊ด์ฐฎ์ (ํ์ง๋๊ณ ์์ ๋ ๊ฒ)
Sequential File Organization
- ์ ์ฒด ํ์ผ์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉ
- ํ์ผ์ ๋ ์ฝ๋๋ ๋ฐ๋์ ๊ธฐ๋ณธ ํค(primary key)๋ ์ํผํค(superkey)๊ฐ ์๋ ๊ฒ์ ํค์ ์ํด ์ ๋ ฌ๋จ
- ์์ฐจ ํ์ผ ์ฒ๋ฆฌ์์ ๋ธ๋ก ์ ๊ทผ ์๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๋ ์ฝ๋๋ฅผ ๊ฒ์ ํค ์์๋ก, ๋๋ ๊ฐ๋ฅํ ํ ๊ทธ ์์์ ๊ฐ๊น๊ฒ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅ
- ํฌ์ธํฐ(pointer)๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ฝ๋ ์ฒด์ธ์ ๋ง๋ฆ
- ๋ฌธ์ ์ : ๋ ์ฝ๋๊ฐ ์ฝ์ ๋๊ณ ์ญ์ ๋ ๋ ๋ฌผ๋ฆฌ์ ์์ฐจ ์์๋ฅผ ์ด๋ป๊ฒ ์ ์งํ๋๊ฐ?
- ์ญ์ : ํฌ์ธํฐ ์ฒด์ธ ์ฌ์ฉ
- ์ฝ์
: ๋ ์ฝ๋๊ฐ ์ฝ์
๋ ์์น๋ฅผ ์ฐพ์
- ์ฌ์ ๊ณต๊ฐ์ด ์์ผ๋ฉด ๊ทธ๊ณณ์ ์ฝ์
- ์ฌ์ ๊ณต๊ฐ์ด ์์ผ๋ฉด ์ค๋ฒํ๋ก ๋ธ๋ก(overflow block)์ ๋ ์ฝ๋ ์ฝ์
- ๋ ๊ฒฝ์ฐ ๋ชจ๋ ํฌ์ธํฐ ์ฒด์ธ์ ์ ๋ฐ์ดํธ๋์ด์ผ ํจ
- ์ค๋ฒํ๋ก ๋ธ๋ก์ ๋ง์ ์์ ๋ ์ฝ๋๊ฐ ์์ผ๋ฉด ๋ ์ฝ๋์ ๋ฌผ๋ฆฌ์ ์์ฐจ ์์๊ฐ ์ ํ๋จ
- ๋ฌผ๋ฆฌ์ ์์ฐจ์ฑ์ ๋ณต์ํ๊ธฐ ์ํด ํ์ผ์ ์ฌ๊ตฌ์ฑํด์ผ ํ๋ฉฐ, ์ด๋ ๋น์ฉ์ด ๋ง์ด ๋๋ ์์
- B+-tree ํ์ผ ์กฐ์ง์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
Multitable Clustering File Organization
- Multitable clustering ํ์ผ ์กฐ์ง์ ์ฌ์ฉํ์ฌ ํ๋์ ํ์ผ์ ์ฌ๋ฌ ๊ด๊ณ ์ ์ฅ
- ๋ฅผ ํฌํจํ๋ ์ฟผ๋ฆฌ์ ๋จ์ผ department ๋ฐ ๊ทธ ์์ instructor๋ค์ ํฌํจํ๋ ์ฟผ๋ฆฌ์ ์ข์
- department ๋๋ instructor๋ง ํฌํจํ๋ ์ฟผ๋ฆฌ์๋ ์ข์ง ์์
- ๊ฐ๋ณ ํฌ๊ธฐ ๋ ์ฝ๋๋ฅผ ์ด๋
- ํน์ ๊ด๊ณ์ ๋ ์ฝ๋๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํด ํฌ์ธํฐ ์ฒด์ธ์ ์ถ๊ฐํ ์ ์์
- Cluster key: ์ด๋ค ๋ ์ฝ๋๊ฐ ํจ๊ป ์ ์ฅ๋ ์ง ์ ์ํ๋ ์์ฑ
- ์์์์๋
dept_name
Partitioning
- ํ ์ด๋ธ ํํฐ์ ๋(Table partitioning)
- ๊ด๊ณ ๋ด ๋ ์ฝ๋๋ ๋ณ๋๋ก ์ ์ฅ๋๋ ๋ ์์ ๊ด๊ณ๋ก ๋ถํ ๋ ์ ์์ผ๋ฉฐ, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์์ฑ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ํ๋จ
- ์: transaction ๊ด๊ณ๋
transaction_2018,transaction_2019๋ฑ์ผ๋ก ๋ถํ ๋ ์ ์์ transaction์ ๋ํด ์์ฑ๋ ์ฟผ๋ฆฌ๋ ์ฐ๋๋ณ ๊ด๊ณ์ ๋ํ ์ฟผ๋ฆฌ๋ก ๋ณํ๋จ: ๋ชจ๋ ํํฐ์ ์ ๋ ์ฝ๋์ ์ ๊ทผํด์ผ ํจ- ์ฟผ๋ฆฌ ์ต์ ํ๊ธฐ(Query optimizer)๋
year=2019์ ๊ฐ์ ์ ํ ์กฐ๊ฑด์ด ์๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์์ฑ(๋๋ ๋ณํ)ํ์ฌ ํด๋น ํํฐ์ ์๋ง ์ ๊ทผํ๋๋ก ํ ์ ์์ - ํํฐ์ ๋์ ์ฌ์ ๊ณต๊ฐ ๊ด๋ฆฌ์ ๊ฐ์ ์ผ๋ถ ์์ ์ ๋น์ฉ์ ๊ฐ์์ํด
- ์ด๋ฌํ ์์ ์ ๋น์ฉ์ ๊ด๊ณ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ฆ๊ฐํจ
- ํํฐ์ ๋์ ๋ค๋ฅธ ํํฐ์ ์ ๋ค๋ฅธ ์ ์ฅ ์ฅ์น์ ์ ์ฅํ ์ ์๊ฒ ํจ
- ์: (์์ฃผ ์ ๊ทผํ๋) ํ์ฌ ์ฐ๋์ transaction ํํฐ์ ์ SSD์, (๋๋ฌผ๊ฒ ์ ๊ทผํ๋) ์ด์ ์ฐ๋๋ ์๊ธฐ ๋์คํฌ์ ์ ์ฅ
Data Dictionary Storage
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๊ด๊ณ์ ์คํค๋ง(schema)์ ๊ฐ์ด ๊ด๊ณ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์งํด์ผ ํจ
- ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ "๋ฐ์ดํฐ์ ๋ํ ๋ฐ์ดํฐ"๋ฅผ metadata(๋ฉํ๋ฐ์ดํฐ)๋ผ๊ณ ํจ
- Data dictionary(๋ฐ์ดํฐ ์ฌ์ ) (๋๋ system catalog(์์คํ
์นดํ๋ก๊ทธ))๋ ๋ค์๊ณผ ๊ฐ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ:
- ๊ด๊ณ์ ๋ํ ์ ๋ณด
- ๊ด๊ณ์ ์ด๋ฆ
- ๊ฐ ๊ด๊ณ์ ์์ฑ ์ด๋ฆ, ํ์ (๋๋ฉ์ธ), ๊ธธ์ด
- ๋ทฐ(view)์ ์ด๋ฆ๊ณผ ์ ์
- ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด(Integrity constraint)
- ์ฌ์ฉ์ ๋ฐ ๊ณ์ ์ ๋ณด, ํฌํจ ๋ด์ฉ:
- ์ธ์ฆ์ ์ํ ์ฌ์ฉ์ ์ด๋ฆ, ๋น๋ฐ๋ฒํธ ๋ฐ ๊ธฐํ ์ ๋ณด
- ๊ฐ ์ฌ์ฉ์์ ๋ํ ๊ถํ ์ ๋ณด
- ํต๊ณ ๋ฐ ๊ธฐ์ ๋ฐ์ดํฐ, ํฌํจ ๋ด์ฉ:
- ๊ฐ ๊ด๊ณ์ ํํ(tuple) ์
- ๊ฐ ์์ฑ์ ๋ํ ๊ณ ์ ๊ฐ์ ์
- ๋ฌผ๋ฆฌ์ ํ์ผ ์กฐ์ง ์ ๋ณด
- ๊ด๊ณ ์ ์ฅ ๋ฐฉ์ (heap/sequential/hash/โฆ)
- ๊ด๊ณ์ ๋ฌผ๋ฆฌ์ ์์น
- ์ธ๋ฑ์ค(index)์ ๋ํ ์ ๋ณด (14์ฅ)
- ๊ด๊ณ์ ๋ํ ์ ๋ณด
- ๋์คํฌ ์์ ๊ด๊ณํ ํํ
- ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด์ ๊ด๊ณ๋ก ์ ์ฅ
- ์์คํ ์ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ๋จ์ํ
- ์์คํ ๋ฐ์ดํฐ์ ๋ํ ๋น ๋ฅธ ์ ๊ทผ์ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํ์ฉ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์, ์์คํ ๋ฉํ๋ฐ์ดํฐ๋ ๋น ๋ฅธ ์ ๊ทผ์ ์ํด ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ๋ก๋๋จ
- ์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์์ ๊ด๊ณํ ํํ ๋์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ํด ํนํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉ
Storage Access and Database Buffer
Storage Access
- ์์ฐจ ์ ๊ทผ(Sequential access) ํจํด
- ์ฐ์์ ์ธ ์์ฒญ์ด ์ฐ์์ ์ธ ๋์คํฌ ๋ธ๋ก์ ๋ํ ๊ฒ
- ๋์คํฌ ํ์(seek)์ ์ฒซ ๋ฒ์งธ ๋ธ๋ก์ ๋ํด์๋ง ํ์
- ์์ ์ ๊ทผ(Random access) ํจํด
- ์ฐ์์ ์ธ ์์ฒญ์ด ๋์คํฌ ์ด๋์๋ ์์ ์ ์๋ ๋ธ๋ก์ ๋ํ ๊ฒ
- ๊ฐ ์ ๊ทผ๋ง๋ค ํ์ ํ์
- ํ์์ ๋ง์ ์๊ฐ์ด ๋ญ๋น๋๋ฏ๋ก ์ ์ก๋ฅ ์ด ๋ฎ์
- ์ด๋น I/O ์ฐ์ฐ (IOPS)
- ๋์คํฌ๊ฐ ์ด๋น ์ง์ํ ์ ์๋ ์์ ๋ธ๋ก ์ฝ๊ธฐ ์
- ํ์ฌ ์ธ๋ ์๊ธฐ ๋์คํฌ์์ 50 ~ 200 IOPS
- Solid-State Drives (SSD)
- (๋นํ๋ฐ์ฑ) NAND ๋ฉ๋ชจ๋ฆฌ ์นฉ ๊ธฐ๋ฐ์ ์ ์ฅ ์ฅ์น
- ํ์ค ๋ธ๋ก ์งํฅ ๋์คํฌ ์ธํฐํ์ด์ค๋ ์ฌ์ฉ
- HDD๋ณด๋ค ํจ์ฌ ์์ ์ ๊ทผ ์๊ฐ๊ณผ ๋ ํฐ ์ ์ก๋ฅ ๋ฐ IOPS
- ์์ ์ฝ๊ธฐ์ ์์ฐจ ์ฝ๊ธฐ ๊ฐ์ ํฐ ์ฐจ์ด ์์
- ๊ทธ๋ฌ๋ ์์ ์ฐ๊ธฐ๋ ์ฌ์ ํ ์ค์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋์คํฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ๋ธ๋ก ์ ์ก ์๋ฅผ ์ต์ํํ๊ณ ์ ํจ
- ๋งค์ฐ ๋๋ฆฐ ์คํ ๋ฆฌ์ง ์ ๊ทผ ์๋ฅผ ์ต์ํํ๊ธฐ ์ํจ
- ๊ฐ๋ฅํ ํ ๋ง์ ๋ธ๋ก์ ์ฃผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํจ์ผ๋ก์จ ๋์คํฌ ์ ๊ทผ ์๋ฅผ ์ค์ผ ์ ์์
- Buffer(๋ฒํผ)
- ๋ชจ๋ ๋์คํฌ ๋ธ๋ก์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ์ ์์
- ๋์คํฌ ๋ธ๋ก์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ ๋น ๊ด๋ฆฌ ํ์
- ์ฃผ ๋ฉ๋ชจ๋ฆฌ์ ๊ด๋ฆฌ๋๋ ๋ถ๋ถ์ผ๋ก ๋์คํฌ ๋ธ๋ก์ ๋ณต์ฌ๋ณธ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋์คํฌ ๋ธ๋ก์ ๋ฒํผ ๋ธ๋ก (๋๋ ํ์ด์ง)์ ์ ์ฅ๋จ
- ๋์คํฌ ๋ธ๋ก์ ๋ฐ์ดํฐ๋ ๋ฒํผ์ ๋ฐ์ดํฐ๋ณด๋ค ์ค๋๋ ์ ์์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ด ๋ฒํผ์์ ์ฝ์ /์ญ์ /์ ๋ฐ์ดํธ ์์ ์ ์ํํ์ง๋ง ์์ง ๊ฒฐ๊ณผ๋ฅผ ๋์คํฌ ๋ธ๋ก์ ์ถ๋ ฅํ์ง ์์์ ์ ์๊ธฐ ๋๋ฌธ
- Buffer manager(๋ฒํผ ๊ด๋ฆฌ์)
- ์ฃผ ๋ฉ๋ชจ๋ฆฌ์ ๋ฒํผ ๊ณต๊ฐ์ ํ ๋นํ๋ ์ฑ ์์ ์ง๋ ํ์ ์์คํ
Buffer Manager
- ํ๋ก๊ทธ๋จ์ ๋์คํฌ์์ ๋ธ๋ก์ด ํ์ํ ๋ ๋ฒํผ ๊ด๋ฆฌ์๋ฅผ ํธ์ถ
- ๋ธ๋ก์ด ์ด๋ฏธ ๋ฒํผ์ ์์ผ๋ฉด, ๋ฒํผ ๊ด๋ฆฌ์๋ ์ฃผ ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ธ๋ก์ ์ฃผ์๋ฅผ ๋ฐํ
- ๋ธ๋ก์ด ๋ฒํผ์ ์์ผ๋ฉด, ๋ฒํผ ๊ด๋ฆฌ์๋
- ๋ธ๋ก์ ์ํ ๊ณต๊ฐ์ ๋ฒํผ์ ํ ๋น
- ํ์ํ ๊ฒฝ์ฐ, ๋ค๋ฅธ ๋ธ๋ก์ ๊ต์ฒดํ์ฌ ์ ๋ธ๋ก์ ์ํ ๊ณต๊ฐ ํ๋ณด: ๋ฒํผ ๊ต์ฒด(buffer replacement)
- ๊ต์ฒด๋ ๋ธ๋ก์ ๊ฐ์ฅ ์ต๊ทผ์ ๋์คํฌ์ ์ฐ์ฌ์ง๊ฑฐ๋ ๋์คํฌ์์ ๊ฐ์ ธ์จ ์ดํ ์์ ๋ ๊ฒฝ์ฐ์๋ง ๋์คํฌ์ ๋ค์ ์ฐ์ฌ์ง
- ๋์คํฌ์์ ๋ฒํผ๋ก ๋ธ๋ก์ ์ฝ๊ณ , ์ฃผ ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ธ๋ก์ ์ฃผ์๋ฅผ ์์ฒญ์์๊ฒ ๋ฐํ
- Pinned block(๊ณ ์ ๋ ๋ธ๋ก): ๋์คํฌ์ ๋ค์ ์ฐ์ฌ์ง๋ ๊ฒ์ด ํ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก
- ๋ฒํผ ๋ธ๋ก์ ์ฝ๊ฑฐ๋ ์ฐ๋ ๋์ ๊ต์ฒด๋๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ โ ๋ฒํผ ๋ธ๋ก์ ์ ๊ทผํ๊ธฐ ์ ์ ํด๋น ๋ธ๋ก์ด ์ ๊ฑฐ๋์ง ์๋๋ก ํด์ผ ํจ
- Pin์ ๋ธ๋ก์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ๊ธฐ ์ ์ ์ํ๋จ
- Unpin์ ์ฝ๊ธฐ/์ฐ๊ธฐ๊ฐ ์๋ฃ๋ ๋ ์ํ๋จ
- ๋ค์ค ๋์ pin/unpin ์ฐ์ฐ (๋์ ํธ๋์ญ์ ์ ์ํด) ๊ฐ๋ฅ
- pin count๋ฅผ ์ ์งํ๋ฉฐ, pin count๊ฐ 0์ผ ๋๋ง ๋ฒํผ ๋ธ๋ก์ ์ ๊ฑฐํ ์ ์์
- ๋ฒํผ์ ๋ํ ๊ณต์ ๋ฐ ๋ฐฐํ์ ์ ๊ธ(lock)
- ๋์์ฑ ์ ์ด(Concurrency Control)
- ์ฌ๋ฌ ํ๋ก์ธ์ค(๋๋ ์ค๋ ๋)์ ์ํ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ํ ๋์ ์ ๊ทผ์ ๋ฐ์ดํฐ ๋ถ์ผ์น๋ฅผ ์ ๋ฐํ ์ ์์
- ์) ๋ฒํผ ํ์ด์ง์์ ํํ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ํ๋ก์ธ์ค๋ ํ์ด์ง ๋ด์ฉ์ ์ด๋์์ผ์ผ ํ ์ ์์ โ ์ด ์๊ฐ ๋์ ํ์ด์ง๋ฅผ ์ฝ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๋ถ์ ํํ ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ ์์
- ๋์์ฑ ์ ์ด
- ์ฌ๋ฌ ํ๋ก์ธ์ค์ ์ ์ฒด์ ์ธ ๋์ ์คํ ์ ์ด: 18์ฅ
- ์ ๊ธ(Locking): ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ ์์์ ์ธ ๋์์ฑ ์ ์ด ๋ฐฉ์
- ๋ฒํผ ๊ด๋ฆฌ์๋ ์์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํด์ผ ํจ
- ์ฝ๊ธฐ ์์ ์๋ ๊ณต์ ์ ๊ธ(shared lock)์ ์ป๊ณ , ๋ธ๋ก ์ ๋ฐ์ดํธ๋ ๋ฐฐํ์ ์ ๊ธ(exclusive lock)์ ์๊ตฌ
- ์ ๊ธ ๊ท์น:
No lock Shared lock Exclusive lock No lock O O O Shared lock O O X Exclusive lock O X X - ๋ธ๋ก์ ๋ํด ๋ค์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ๊ณต์ ์ ๊ธ(shared lock)์ ๊ฐ์ง ์ ์์
- ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ๋ฐฐํ์ ์ ๊ธ(exclusive lock)์ ํ๋ํ ์ ์์
- ๋ํ, ํ๋ก์ธ์ค๊ฐ ๋ธ๋ก์ ๋ํด ๋ฐฐํ์ ์ ๊ธ์ ๊ฐ์ง๊ณ ์์ ๋ ๋ค๋ฅธ ์ด๋ค ํ๋ก์ธ์ค๋ ํด๋น ๋ธ๋ก์ ๋ํด ๊ณต์ ์ ๊ธ์ ๊ฐ์ง ์ ์์
- ๋ฐ๋ผ์, ๋ฐฐํ์ ์ ๊ธ์ ๋ค๋ฅธ ์ด๋ค ํ๋ก์ธ์ค๋ ๋ธ๋ก์ ๋ํ ์ ๊ธ์ ๊ฐ์ง๊ณ ์์ง ์์ ๋๋ง ๋ถ์ฌ๋ ์ ์์
- ํ๋ก์ธ์ค๊ฐ ์ด๋ฏธ ์ ๊ธด (๊ณต์ ๋๋ ๋ฐฐํ์ ) ๋ธ๋ก์ ๋ํด ๋ฐฐํ์ ์ ๊ธ์ ์์ฒญํ๋ฉด, ์ด์ ์ ๋ชจ๋ ์ ๊ธ์ด ํด์ ๋ ๋๊น์ง ์์ฒญ์ ๋ณด๋ฅ๋จ
- ํ๋ก์ธ์ค๊ฐ ๋ฐฐํ์ ์ผ๋ก ์ ๊ธด ๋ธ๋ก์ ๋ํด ๊ณต์ ์ ๊ธ์ ์์ฒญํ๋ฉด, ๊ณต์ ์ ๊ธ์ ๋ฐฐํ์ ์ ๊ธ์ด ํด์ ๋ ํ์๋ง ๋ถ์ฌ๋จ
- ์ ๊ธ ํ๋ ๋ฐ ํด์
- ๋ธ๋ก์ ๋ํ ์ฐ์ฐ ์ํ: ๋ธ๋ก Pin โ ์ ๊ธ ํ๋ โ ์ฐ์ฐ ์ํ โ ์ ๊ธ ํด์ โ ๋ธ๋ก Unpin
- ์ฝ๊ธฐ ์ฐ์ฐ: ๋ธ๋ก์ ๋ํ ๊ณต์ ์ ๊ธ ํ๋ ํ์
- ์ ๋ฐ์ดํธ ์ฐ์ฐ: ๋ธ๋ก์ ๋ํ ๋ฐฐํ์ ์ ๊ธ ํ๋ ํ์
Output of Blocks
- ๊ธฐ๋ณธ ๋ธ๋ก ์ถ๋ ฅ ์ ์ฑ
- ๋ฒํผ ๋ธ๋ก์ด ๋ค๋ฅธ ๋ธ๋ก์ผ๋ก ๊ต์ฒด๋ ๋ ๋์คํฌ๋ก ์ถ๋ ฅ(์ฐ๊ธฐ): ๋ ๊ฐ์ง ๊ฒฝ์ฐ
- ์ฌ๋ก 1: ๋ฒํผ๋ก ๋ก๋๋ ํ ์ ๋ฐ์ดํธ๋์ง ์์ โ ์ถ๋ ฅํ์ง ์์
- ์ฌ๋ก 2: ์ ๋ฐ์ดํธ๋จ โ ๋์คํฌ๋ก ์ถ๋ ฅ ํ์
- ๋ฒํผ ๋ธ๋ก์ด ๋ค๋ฅธ ๋ธ๋ก์ผ๋ก ๊ต์ฒด๋ ๋ ๋์คํฌ๋ก ์ถ๋ ฅ(์ฐ๊ธฐ): ๋ ๊ฐ์ง ๊ฒฝ์ฐ
- ๊ฐ๋ฅํ ๋์ ์ ์ฑ
- ์ ๋ฐ์ดํธ๋ ๋ธ๋ก์ ๊ต์ฒด ์ ์ ๋ฏธ๋ฆฌ ์ฐ๊ธฐ
- ํฅํ ๊ต์ฒด ์, ์ด๋ฏธ ์ฐ์ฌ์ง ๋ธ๋ก์ ์ถ๋ ฅ ์์ด ์ ๊ฑฐ ๊ฐ๋ฅ
- ๊ทธ๋ฌ๋, ๋ณต๊ตฌ(recovery) ๋ชฉ์ (19์ฅ)์ ์ํด ์ถ๋ ฅ ์ ํ ํ์
- ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋ธ๋ก์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์งํ ์ค์ธ ๋์ ํด๋น ๋ธ๋ก์ด ๋์คํฌ์ ์ฐ์ฌ์ง์ง ์๋๋ก ์๊ตฌ: ์ฌ๋ฌ ํ๋ก์ธ์ค(ํธ๋์ญ์ )๊ฐ ๋ธ๋ก์ ์ ๋ฐ์ดํธํ ์ ์์์ ์ ์
- ์ด๋ฌํ ์๊ตฌ์ฌํญ์ ๊ฐ์ ํ๊ธฐ ์ํด, ๋ธ๋ก์ ์ถ๋ ฅํ๊ณ ์ ํ๋ ํ๋ก์ธ์ค๋ ํด๋น ๋ธ๋ก์ ๋ํ ๊ณต์ ์ ๊ธ์ ํ๋ํด์ผ ํจ
- ๋ธ๋ก์ ๊ฐ์ ์ถ๋ ฅ(Forced output)
- ๋์คํฌ์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ธ๋ก์ ์ถ๋ ฅํด์ผ ํ๋ ์ํฉ โ ๋ธ๋ก์ ๊ฐ์ ์ถ๋ ฅ
- ์ปค๋ฐ๋ ๋ฐ์ดํฐ์ ๋ณต๊ตฌ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ก๊น (logging) ๋ฉ์ปค๋์ฆ๊ณผ ํจ๊ป ์ฌ์ฉ (19์ฅ์์ ์์ธํ)
Buffer-Replacement Policies
- ๋๋ถ๋ถ์ ์ด์ ์ฒด์ ๋ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋์ง ์์(Least Recently Used, LRU) ๋ธ๋ก์ ๊ต์ฒด (LRU ์ ๋ต)
- ์ต์ ์ ์ ์ฑ : ๊ฐ๊น์ด ๋ฏธ๋์ ์ฌ์ฉ๋์ง ์์ ๋ฒํผ ๋ธ๋ก์ ์ ๊ฑฐ
- ๋ธ๋ก์ ๋ํ ๋ฏธ๋์ ์ ๊ทผ์ ์ด๋ป๊ฒ ์ ์ ์๋๊ฐ? โ ์ต๊ทผ ์ ๊ทผ ๊ธฐ๋ก์ด ํต์ฐฐ์ ์ ๊ณต โ LRU
- LRU๋ ์ผ๋ถ ์ฟผ๋ฆฌ์ ๋ํด ์ข์ง ์์ ์ ์์
- LRU์ ๋ํ ๋์ ์ ๊ทผ ํจํด์ ์: ์ค์ฒฉ ๋ฃจํ(nested loop)๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ด๊ณ ๊ณผ ์ ์กฐ์ธ์ ๊ณ์ฐํ ๋
for each tuple tr of r do for each tuple ts of s do if the tuples tr and ts match โฆ - ์ฟผ๋ฆฌ๋ ์ ์ ์๋ ์ ๊ทผ ํจํด(์: ์์ฐจ ์ค์บ)์ ๊ฐ์ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ฌ์ฉ์์ ์ฟผ๋ฆฌ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏธ๋์ ์ฐธ์กฐ๋ฅผ ์์ธกํ ์ ์์
- ์ฟผ๋ฆฌ ์ต์ ํ๊ธฐ(query optimizer)๊ฐ ์ ๊ณตํ๋ ๊ต์ฒด ์ ๋ต์ ๋ํ ํํธ(hint)์ ํผํฉ๋ ์ ๋ต์ด ๋ฐ๋์งํจ
- Toss-immediate ์ ๋ต
- ๋ธ๋ก์ ๋ง์ง๋ง ํํ์ด ์ฒ๋ฆฌ๋๋ ์ฆ์ ํด๋น ๋ธ๋ก์ด ์ฐจ์งํ๋ ๊ณต๊ฐ์ ํด์ โ ํด๋น ๋ธ๋ก์ ๋ค์ ์ฐธ์กฐ๋์ง ์๊ธฐ ๋๋ฌธ
- ์ด์ ์์์์ ๊ด๊ณ ์ ๋ธ๋ก์ ์ข์
- ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋(Most Recently Used, MRU) ์ ๋ต
- LRU ์ ๋ต๊ณผ ๋ฐ๋
- ์ด์ ์์์์ ๊ด๊ณ ์ ๋ธ๋ก์ ์ข์
- ๊ณ ์ ๋ ๋ธ๋ก์ ๋ง์ง๋ง ํํ์ด ์ฒ๋ฆฌ๋ ํ, ๋ธ๋ก์ unpin๋๊ณ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋ ๋ธ๋ก์ด ๋จ
- ๋ฒํผ ๊ด๋ฆฌ์๋ ์์ฒญ์ด ํน์ ๊ด๊ณ๋ฅผ ์ฐธ์กฐํ ํ๋ฅ ์ ๋ํ ํต๊ณ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์
- ์: ๋ฐ์ดํฐ ์ฌ์ ์ ์์ฃผ ์ ๊ทผ๋จ
- ํด๋ฆฌ์คํฑ(Heuristic): ๋ฐ์ดํฐ ์ฌ์ ๋ธ๋ก์ ์ฃผ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์ ์ ์ง
Reordering of Writes and Recovery
- ์ด์ ์ฒด์ ๋๋ ๋ฒํผ ๊ด๋ฆฌ์๊ฐ ์ฐ๊ธฐ ์์๋ฅผ ์ฌ์ ๋ ฌํ ์ ์์
- ์์คํ ์ถฉ๋ ์ ๋์คํฌ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์์ผ๋ก ์ด์ด์ง ์ ์์
- ์: ๋์คํฌ์ ๋๋ฝ๋ ๋ธ๋ก์ด ์๋ ๋ธ๋ก์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked list)
- ํ์ผ ์์คํ ์ ์ฌ์์ ์ ์ด๋ฌํ ์ํฉ์ ๊ฐ์งํ๊ธฐ ์ํด ์ผ๊ด์ฑ ๊ฒ์ฌ(consistency check)๋ฅผ ์ํ
- ์ ์คํ ์ฐ๊ธฐ ์์ ์ง์ ์ ์ด๋ฌํ ๋ง์ ๋ฌธ์ ๋ฅผ ํผํ ์ ์์
- ๋์คํฌ ์ค์ผ์ค๋ง(disk scheduling)๊ณผ ๊ฐ์ I/O ์ต์ ํ ๊ธฐ์ ์ ํฌ์ํ์ฌ ์ ๋ฐ์ดํธ ํจ์จ์ฑ์ ์ํฅ์ ๋ฏธ์นจ
- ๋นํ๋ฐ์ฑ ์ฐ๊ธฐ ๋ฒํผ(Nonvolatile write buffer)๋ ๋ธ๋ก์ ๋นํ๋ฐ์ฑ RAM ๋๋ ํ๋์ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์ ์ฆ์ ๊ธฐ๋กํ์ฌ ๋์คํฌ ์ฐ๊ธฐ ์๋๋ฅผ ๋์
- ๋์คํฌ ์(disk arm) ์์ง์์ ์ต์ํํ๊ธฐ ์ํด ์ฐ๊ธฐ ์์๋ฅผ ์ฌ์ ๋ ฌํ ์ ์์
- Log disk: ๋ธ๋ก ์ ๋ฐ์ดํธ์ ์์ฐจ์ ๋ก๊ทธ๋ฅผ ์ํ๋ ์์๋๋ก ๊ธฐ๋กํ๋ ๋ฐ ์ ์ฉ์ผ๋ก ์ฌ์ฉ๋๋ ๋์คํฌ
- Log disk์ ๋ํ ์ฐ๊ธฐ๋ ํ์์ด ํ์ ์์ผ๋ฏ๋ก(์ฆ, ์์ฐจ์ ์ฐ๊ธฐ) ๋งค์ฐ ๋น ๋ฆ
- Data disk์ ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํ๊ธฐ ์ํด log disk์ ๋ก๊ทธ๋ฅผ ์ฌ์ฉ
- ์ ๋๋ง ํ์ผ ์์คํ (Journaling file system)์ ๋ณ๋์ log disk ์์ด๋ ์ด๋ฌํ ๋ก๊น ์ ์ง์ํ๋ ํ์ผ ์์คํ
- ์ ๋๋ง ์๋ ์ฌ์ ๋ ฌ: ํ์ผ ์์คํ ๋ฐ์ดํฐ ์์ ์ํ
Column-Oriented Storage
- ์ปฌ๋ผ ๊ธฐ๋ฐ ์คํ ๋ฆฌ์ง(columnar storage)๋ผ๊ณ ๋ ์๋ ค์ง
- ๊ด๊ณ์ ๊ฐ ์์ฑ์ ๋ณ๋๋ก ์ ์ฅ
- ์ฐ์์ ์ธ ํํ์ ์์ฑ ๊ฐ์ ํ์ผ์ ์ฐ์์ ์ธ ์์น์ ์ ์ฅ
- ์ฟผ๋ฆฌ๊ฐ ํ ์ด๋ธ์ i๋ฒ์งธ ํ์ ์ ์ฒด ๋ด์ฉ์ ์ ๊ทผํด์ผ ํ๋ ๊ฒฝ์ฐ, ๊ฐ ์ปฌ๋ผ์ i๋ฒ์งธ ์์น์ ์๋ ๊ฐ์ ๊ฒ์ํ์ฌ ํ์ ์ฌ๊ตฌ์ฑ
- ๊ฐ์ฅ ๊ฐ๋จํ ํํ: ๊ฐ ์์ฑ์ ๋ณ๋์ ํ์ผ์ ์ ์ฅ๋๊ณ , ๊ฐ ํ์ผ์ ์์ถ๋จ
Columnar Representation
- ์ปฌ๋ผ ๊ธฐ๋ฐ ์คํ ๋ฆฌ์ง์ ๋จ์
- ์ปฌ๋ผ ํํ์์ ํํ ์ฌ๊ตฌ์ฑ ๋น์ฉ
- ํนํ ์์ถ๋ ๊ฒฝ์ฐ ํํ ์ญ์ ๋ฐ ์ ๋ฐ์ดํธ ๋น์ฉ
- ์์ถ ํด์ ๋น์ฉ
- ์ปฌ๋ผ ํํ์ ๊ด๊ณ์ ๋ง์ ํ์ ์ฒ๋ฆฌํ์ง๋ง ์ข ์ข ์ผ๋ถ ์์ฑ์๋ง ์ ๊ทผํ๋ ๋ฐ์ดํฐ ๋ถ์(OLAP) ์ฟผ๋ฆฌ์ ์ ํฉ
- (๋ง์ ์์) ์์ฑ ์ค ์ผ๋ถ๋ง ์ ๊ทผํ๋ ๊ฒฝ์ฐ
- I/O ๊ฐ์
- CPU ์บ์ ์ฑ๋ฅ ํฅ์
- ๋์ผํ ํ์ ์ ๊ฐ์ ํจ๊ป ์ ์ฅํ๋ฉด ์์ถ ํจ๊ณผ ์ฆ๊ฐ
- ์ต์ CPU ์ํคํ ์ฒ์์ ๋ฒกํฐ ์ฒ๋ฆฌ(vector processing) ํ์ฉ
- CPU ์ฐ์ฐ์ด ๋ฐฐ์ด์ ์ฌ๋ฌ ์์์ ๋ณ๋ ฌ๋ก ์ ์ฉ๋จ
- ํธ๋์ญ์ ์ฒ๋ฆฌ(OLTP)์๋ ํ ๊ธฐ๋ฐ(row-oriented) ํํ์ด ๋ ๋ฐ๋์งํจ
- ์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ ํํ์ ๋ชจ๋ ์ง์
- ํ์ด๋ธ๋ฆฌ๋ ํ/์ปฌ๋ผ ์คํ ์ด(hybrid row/column store)๋ผ๊ณ ๋ถ๋ฆผ
Columnar File Representation
- ORC ๋ฐ Parquet: ํ์ผ ๋ด์ ์ปฌ๋ผ ๊ธฐ๋ฐ ์คํ ๋ฆฌ์ง๋ฅผ ๊ฐ๋ ํ์ผ ํ์
- ๋น ๋ฐ์ดํฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋งค์ฐ ์ธ๊ธฐ ์์
- ORC ํ์ผ ํ์:
- ์๋ฐฑ MB๋ฅผ ์ฐจ์งํ๋ ํํ ์ํ์ค๋ ์คํธ๋ผ์ดํ(stripe)๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ปฌ๋ผ ํํ์ผ๋ก ๋ถํ ๋จ
- ORC ํ์ผ์ ์ฌ๋ฌ ์คํธ๋ผ์ดํ๋ฅผ ํฌํจํ๋ฉฐ, ๊ฐ ์คํธ๋ผ์ดํ๋ ์ฝ 250MB๋ฅผ ์ฐจ์ง
- Row data ์์ญ์ ์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ ๊ฐ ์ํ์ค, ์ด์ด์ ๋ ๋ฒ์งธ ์ปฌ๋ผ ๋ฑ์ ์์ถ๋ ํํ์ ์ ์ฅ
- ์คํธ๋ผ์ดํ์ Index data ์์ญ์ ๊ฐ ์์ฑ์ ๋ํด ํด๋น ์์ฑ ๊ฐ์ ๊ฐ ๊ทธ๋ฃน(์: 10,000๊ฐ)์ ๋ํ ์คํธ๋ผ์ดํ ๋ด ์์์ ์ ์ ์ฅ
