2023. 2. 11. 14:22ใDatabase/DB ์คํฐ๋
RDBMS์ ์ธ๋ฑ์ค๋?
์ธ๋ฑ์ค๋ DB ํ ์ด๋ธ์์ ํน์ ๋ฐ์ดํฐ์ ๋ํ ๊ฒ์ ์์ ์ ์ํํ ๋, ๊ฒ์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋๊ตฌ์ด๋ค.
๋ง์ฝ ๋ฐ์ดํฐ N๊ฐ๊ฐ ์กด์ฌํ๋ ํ ์ด๋ธ์์ ํน์ ์นผ๋ผ์ ๊ฐ์ด X์ธ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ํด์๋, ์ ์ฒด ํ ์ด๋ธ์ ๋ชจ๋ ํ์ธํด์ผ ํ๋ฉฐ O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค. ์ด๋ฅผ Full table scan์ด๋ผ๊ณ ํ๋๋ฐ, ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ํด ๋งค๋ฒ O(N)์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ ์๋นํ ๋นํจ์จ์ ์ด๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฒ์ด ๋ฐ๋ก ์ธ๋ฑ์ค์ด๋ค. ์ฃผ๋ก ์ฐ์ด๋ B+Tree ์๋ฃ๊ตฌ์กฐ๋ฅผ ํตํ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉ ์ ์์ ๋์ผํ ์กฐ๊ฑด์์ O(logN)์ ํฅ์๋ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
์ธ๋ฑ์ค์ ์ด์ฉ๋๋ ์๋ฃ๊ตฌ์กฐ
1. Hash Table
ํด์ ํ ์ด๋ธ์ Key - Value ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๋ฐ๋ผ์ ํน์ ๋ฐ์ดํฐ์ Key๋ฅผ ๊ฐ๊ณ ์๋ค๋ฉด ํด๋น Key๋ฅผ ํด์ฑํ์ฌ ์ธ๋ฑ์ค๋ฅผ ๋์ถํด๋ด๊ณ , ์ด๋ฅผ ์ด์ฉํ์ฌ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ฐ ์๊ฐ๋ณต์ก๋ O(1)์ด ์์๋๋ค.
ํด์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ์ ๊ฒ์, ์ฝ์ , ์ญ์ ์ ์์ด ๊ต์ฅํ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
ํ์ง๋ง ํค ๊ฐ์ด ์ค๋ณต๋ ์์๋ ๊ฒ์์ด ์ด๋ ต๋ค๋ ์ , ํค ๊ฐ์ ์ ๋ ฌ์ด ๋ถ๊ฐ๋ฅํ์ฌ ๋ฒ์ ํ์์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ์ ๋๋ฌธ์ RDBMS ์ธ๋ฑ์ค์ ๋ง์ด ํ์ฉ๋์ง๋ ์๋๋ค.
2. B-Tree
B-Tree๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ฐ ๋ ธ๋์ ํค ๊ฐ๊ณผ ๊ทธ ํค ๊ฐ์ด ๊ฐ๋ฆฌํค๋ ๋ฐ์ดํฐ, ํค ๊ฐ์ ์๋ณด๋ค ํ๋ ๋ ๋ง์ ํ์ ๋ ธ๋๋ค์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ก ๊ตฌ์ฑ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Binary Tree์ ๋น์ทํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ฐ, B-Tree๋ ๊ฐ ๋ ธ๋์ ํ๋๋ณด๋ค ๋ง์ ํค๋ฅผ ๊ฐ์ง ์ ์๋ค๋ ๊ฒ์ด ์ฐจ์ด์ ์ด๊ณ ์ด๋ก ์ธํด ํธ๋ฆฌ์ ๊น์ด๊ฐ ๋ ์๊ฒ ์ ์ง๋๋ฉฐ ์ด๋ก ์ธํด ๋ ํจ์จ์ ์ธ ํ์์ด ๊ฐ๋ฅํ๋ค.
B-Tree์์ ํน์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด์๋ O(logN)์ด ๊ฑธ๋ฆฌ๋ฉฐ, ์ฝ์ , ์ญ์ ์๋ O(logN)์ด ๊ฑธ๋ฆฐ๋ค.
์ฝ์ ๊ณผ ์ญ์ ์๋ O(logN)์ด ๊ฑธ๋ฆฌ๋ ์ด์ ๋ Tree๋ฅผ ๊ท ํ ์ํ๋ก ๋ง๋ค๊ธฐ ์ํ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ด ์๋ฐ๋๊ธฐ ๋๋ฌธ์ธ๋ฐ, ๊ฐ๋ น ํน์ ๋ ธ๋๊ฐ ๋น๋ํด์ง ๊ฒฝ์ฐ ์์ ๋ ธ๋์ ํค๋ฅผ ์ถ๊ฐํ๊ณ ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๋ ๋ ธ๋๋ฅผ ์ชผ๊ฐ๊ฒ ๋๋ฉฐ, ๋ฐ๋์ ์ํฉ์๋ ์ผ๋งฅ์ํตํ ์ฐ์ฐ์ด ์๊ตฌ๋๋ค.
B-Tree๋ Hash Table๋ณด๋ค ๊ฒ์, ์ฝ์ , ์ญ์ ์ฑ๋ฅ์ด ์ข์ง๋ ์์ง๋ง ๋ฒ์ ํ์์ด ๊ฐ๋ฅํ ์๋ฃ๊ตฌ์กฐ๋ก ๋ ๋ง์ด ์ฌ์ฉ๋๋ค.
3. B+Tree
์์ ์ค๋ช ํ B-Tree๋ ๋ง์ ์ด์ ์ด ์กด์ฌํ์ง๋ง ๊ฒฐ๊ตญ์๋ ๋ค์์ ํ๊ณ๊ฐ ์กด์ฌํ๋ค.
- ํน์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ํด Full table scan์ ์ํํ์ง๋ ์์ง๋ง, ํ์ ๊ณผ์ ์์ ๋ฐฉ๋ฌธํ ๋ ธ๋์ ๋ชจ๋ ๋ฐ์ดํฐ์ ๋ํ ํ์์ด ํ์ํจ.
- ์ฝ์ , ๊ฐฑ์ , ์ญ์ ๋ฑ์ ์ฐ์ฐ์ ํตํด ํธ๋ฆฌ ๊ตฌ์กฐ๊ฐ ์ฌ์ ๋ ฌ๋ ๋ ๋ฐ์ดํฐ์ ์ด๋๋ ์๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ ๋ ฌ ๊ณผ์ ์ด ๋นํจ์จ์ ์.
- ๋ด๋ถ ๋ ธ๋์ ๋ฐ์ดํฐ๋ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ ธ๋๊ฐ ํฌํจํ ์ ์๋ ํค์ ๊ฐ์๊ฐ ์ ์. ๋ฐ๋ผ์ ํธ๋ฆฌ์ ๊น์ด๊ฐ ๊น์ด์ง๊ณ ์ด๋ ๊ฒ์ ์ฑ๋ฅ์ ๋จ์ด๋จ๋ฆผ.
- Full table scan ์ ์๊ฐ ๋ณต์ก๋ O(N)์ ๊ฐ์ง๊ธฐ๋ ํ์ง๋ง ๊ฒฐ๊ตญ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํ์ํด์ผ ํ๋ฏ๋ก ์ฐ์ฐ ์ฑ๋ฅ์ด ๋จ์ด์ง.
์ด๋ฌํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด B-Tree๋ฅผ ๋ฐ์ ์ํจ ์๋ฃ๊ตฌ์กฐ๊ฐ ๋ฐ๋ก B+Tree์ด๋ค.
B+Tree๋ B-Tree์ ์ ์ฌํ์ง๋ง, ๋ด๋ถ ๋ ธ๋(๋ง๋จ ๋ ธ๋๋ฅผ ์ ์ธํ ๋ ธ๋)์ ํค ๊ฐ๊ณผ ์์ ๋ ธ๋์ ๋ํ ํฌ์ธํฐ๋ง ์กด์ฌํ๊ณ ์ค์ง์ ์ธ ๋ฐ์ดํฐ๋ ๋ชจ๋ ๋ง๋จ ๋ ธ๋์ ์์นํ๊ฒ ๋๋ฉฐ ๊ฐ ๋ง๋จ ๋ ธ๋๋ค์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํํ๋ก ์ด์ด์ ธ์๋ค.
B+Tree๋ B-Tree์ ๋น๊ตํ์ฌ ๋ค์์ ์ด์ ์ ๊ฐ๋๋ค.
- ๋ง๋จ ๋ ธ๋์์๋ง ์ค์ง์ ์ธ ๋ฐ์ดํฐ์ ํ์, ์ ๊ทผ์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์ฐ์ฐ์ ์์ด ๋ ๋์ ์ฑ๋ฅ์ ๊ฐ์ง.
- ๋ง๋จ ๋ ธ๋์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ํ์ํ ๊ณต๊ฐ์ ์ธ ์ธก๋ฉด์์ ๋ ๊ฒฝ์ ์ ์.
- ๋ง๋จ ๋ ธ๋์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ฝ์ , ๊ฐฑ์ , ์ญ์ ์ฐ์ฐ์ ์์ด ๋ ๋ณต์กํ๋ฉฐ ์ฑ๋ฅ์ ์ฐ์ ์กด์ฌ.
- ๋ง๋จ ๋ ธ๋๋ค์ ์๋ก ์ฐ๊ฒฐ๋์ด ์๊ณ , ๊ฐ ๋ง๋จ ๋ ธ๋๋ค์ ๋ฐ์ดํฐ๋ ์ ๋ ฌ๋์ด ์์. ๋ฐ๋ผ์ ๋ฒ์ ํ์ ์ ๋จ์ ์ ํ ํ์์ด ๊ฐ๋ฅํ๊ณ ์ด๋ฅผ ํตํด ๋ ๋์ ์ฑ๋ฅ์ ๋ณด์ฌ์ค.
์ด๋ฌํ ์ฅ์ ๋ค ๋๋ฌธ์ ํ์ฌ ๋๋ถ๋ถ์ RDBMS ์ธ๋ฑ์ค๋ B+Tree ์๋ฃ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
'Database > DB ์คํฐ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DB ์คํ๊ณํ ํ์ธ๋ฒ(in PostgreSQL) (1) | 2023.11.11 |
---|---|
RDB vs NoSQL (0) | 2023.02.18 |
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค (0) | 2023.02.17 |
SQL Injection ๊ณต๊ฒฉ๊ณผ ๋์ (0) | 2023.02.11 |
DB ์คํฐ๋(4์ฃผ์ฐจ) (0) | 2022.12.24 |