์์ฑ์ : ๋ฐ์ฌ์ฉ, ์๊ทธ๋ฆผ, ์ค๊ฐ์, ์ด์ธ๋ช , ์ฅ์ฃผ์ญ, ์ ํฌ์ฌ
Table of Contents
- ๋
๋ฆฝ์ฑ (Data Independence)
- ๋ ผ๋ฆฌ์ ๋ ๋ฆฝ์ฑ : ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ ๋ฆฝ์ํด์ผ๋ก์จ, ๋ฐ์ดํฐ์ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝ์ํค๋๋ผ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
- ๋ฌผ๋ฆฌ์ ๋ ๋ฆฝ์ฑ : ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๋ณด์กฐ๊ธฐ์ต์ฅ์น ๊ฐ์ ๋ฌผ๋ฆฌ์ ์ฅ์น๋ฅผ ๋ ๋ฆฝ์ํด์ผ๋ก์จ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ฑ๋ฅ ํฅ์์ ์ํด ์๋ก์ด ๋์คํฌ๋ฅผ ๋์ ํ๋๋ผ๋ ์์ฉ ํ๋ก๊ทธ๋จ์๋ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ๋ง์ ๋ณ๊ฒฝํ๋ค.
- ๋ฌด๊ฒฐ์ฑ (Data Integrity) : ์ฝ์ , ์ญ์ , ๊ฐฑ์ ๋ฑ์ ์ฐ์ฐ ํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์ ํด์ง ์ ์ฝ ์กฐ๊ฑด์ ํญ์ ๋ง์กฑํด์ผ ํ๋ค.
- ์ผ๊ด์ฑ (Data Consistency) : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ํน์ ์ง์์ ๋ํ ์๋ต์ด ๋ณํจ ์์ด ์ผ์ ํด์ผ ํ๋ค.
- ์ข ์์ฑ (Data Dependency) : (โ ๋ ๋ฆฝ์ฑ) ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ๊ฐ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ์ํฅ์ ๋ฐ๋๋ค.
- ์ค๋ณต์ฑ (Data Redundancy) : ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋์ด ์ ์ฅ๋๋ ๊ฒ์ผ๋ก, ๋ฐ์ดํฐ ์์ /์ญ์ ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์์ /์ญ์ ํด์ค์ผ ํ๋ ๋ฌธ์ ์ ์ด ์๋ค.
- ๋น์ผ๊ด์ฑ (Data Inconsistency) : ๋์ผํ ๋ฐ์ดํฐ์ ์ฌ๋ฌ ์ฌ๋ณธ์ด ์๋ก ๋ค๋ฅธ ๊ฐ์ ๋ณด์ ํ๊ณ ์๋ ์ํ๋ก, ๋ฐ์ดํฐ ์ค๋ณต์ฑ์ ์ด์ด์ ๋ฐ์ํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ด ๋ฑ์ฅํ๊ธฐ ์ ๊น์ง๋ ์ด์์ฒด์ ์ ์ํด ์ง์๋๋ ํ์ผ ์์คํ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ์๋ค. ์ด ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ์ ์ด ์กด์ฌํ๋๋ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋ชฉ์ ์ ์ด ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํ๋ ๋ฐ ์๋ค. ํ์ผ ์์คํ ์ ์ฌ์ฉํ์ ๋์ ์ฃผ์ ๋ฌธ์ ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฐ์ดํฐ์ ์ค๋ณต๊ณผ ๋น์ผ๊ด์ฑ
- ๋ฐ์ดํฐ ์ ๊ทผ ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ผ๋ก ๊ฒ์ํ๊ธฐ ํ๋ค๋ค.
- ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ํ์ผ์ ํฉ์ด์ ธ ์๊ณ ํ์ผ ํ์์ด ์๋ก ๋ค๋ฅผ ์ ์๋ค.
- ๋ฐ์ดํฐ ๋์ ์ ๊ทผ ์ ๋ฐ์ดํฐ๊ฐ ์๋ชป ์ ๋ฐ์ดํธ๋ ์ ์๋ค.
- ๋ฌด๊ฒฐ์ฑ ๋ฌธ์
- ๋ณด์ ๋ฌธ์
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ๋ฌ ์ฌ๋๋ค์ด ๊ณต์ ํ์ฌ ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก ์ฒด๊ณํํด ํตํฉ, ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ์ ์งํฉ์ ๋งํ๋ค. DBMS๋ฅผ ํตํด ์๊ตฌ๋ฅผ ์ฒ๋ฆฌํ๊ณ , SQL์ ์ฌ์ฉํด ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค์์ ์ฅ์ ์ ๊ฐ์ง๋ค.
- ๋ฐ์ดํฐ์ ๋ ผ๋ฆฌ์ , ๋ฌผ๋ฆฌ์ ๋ ๋ฆฝ์ฑ, ์ผ๊ด์ฑ, ๋ฌด๊ฒฐ์ฑ, ๋ณด์์ฑ ๋ณด์ฅ
- ๋ฐ์ดํฐ ์ค๋ณต ์ต์ํ
- ์ ์ฅ๋ ์๋ฃ๋ฅผ ๊ณต๋์ผ๋ก ์ด์ฉํ ์ ์๋ค.
- ๋ฐ์ดํฐ๋ฅผ ํตํฉํ์ฌ ๊ด๋ฆฌํ ์ ์๋ค.
- ๋ฐ์ดํฐ์ ์ค์๊ฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
ํํธ ๋จ์ ๋ ์กด์ฌํ๋ค.
- ์ ์ฐํ ๋น์ฉ์ด ์ฆ๊ฐํ๋ค.
- ๋์ฉ๋ ๋์คํฌ๋ก์ ์ง์ค์ ์ธ Access๋ก ๊ณผ๋ถํ(Overhead)๊ฐ ๋ฐ์ํ ์ ์๋ค.
RDBMS๋ ํ ์ด๋ธ ๊ธฐ๋ฐ(Table based) DBMS๋ก, ํ ์ด๋ธ๋ค์ ์งํฉ์ผ๋ก ๋ฐ์ดํฐ๋ค์ ๊ด๊ณ๋ฅผ ํํํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ ๋จ์๋ก ๊ด๋ฆฌ
- ์ค๋ณต ๋ฐ์ดํฐ ์ต์ํ (์ ๊ทํ)
- ์ฌ๋ฌ ํ ์ด๋ธ์ ๋ถ์ฐ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ ์ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ(join)๋ฅผ ์ด์ฉํด ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์
- CREATE, ALTER, DROP, RENAME
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด(table, view, index...)์ ๊ตฌ์กฐ๋ฅผ ์ ์ (์์ฑ, ๋ณ๊ฒฝ, ์ ๊ฑฐ)
- INSERT, SELECT, UPDATE, DELETE
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ CRUD (Create, Read, Update, Delete)
- GRANT, REVOKE
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ทธ ๊ตฌ์กฐ์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ ๊ณตํ๊ฑฐ๋ ์ ๊ฑฐ
- COMMIT, ROLLBACK, Savepoint
- DML ๋ช ๋ น๋ฌธ์ผ๋ก ์ํํ ๋ณ๊ฒฝ์ ๊ด๋ฆฌ (ํธ๋์ญ์ ๊ด๋ฆฌ)
์ ๊ทํ๋ ํจ์์ ์ข ์์ฑ ์ด๋ก ์ ํตํด ๋ฐ์ดํฐ์ ์ค๋ณต์ฑ์ ์ต์ํํ๊ณ ์ผ๊ด์ฑ ๋ฑ์ ๋ณด์ฅํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ง๊ณผ ์ฑ๋ฅ์ ํฅ์ํค์๋ ๊ณผ์ ์ด๋ค. ์ ๊ทํ ์์ค์ด ๋์์๋ก ์ ์ฐํ ๋ฐ์ดํฐ ๊ตฌ์ถ์ด ๊ฐ๋ฅํ๊ณ ๋ฐ์ดํฐ์ ์ ํ์ฑ์ด ๋์์ง๋ ๋ฐ๋ฉด, ๋ฌผ๋ฆฌ์ ์ ๊ทผ์ด ๋ณต์กํ๊ณ ๋๋ฌด ๋ง์ ์กฐ์ธ์ผ๋ก ์ธํด ์กฐํ ์ฑ๋ฅ์ด ์ ํ๋๋ค๋ ํน์ง์ด ์๋ค
- ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์์ ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ค
- ๋ฐ์ดํฐ ๋ชจํ์ ๋จ์ํ๊ฐ ๊ฐ๋ฅํ๋ค
- ํจ๊ณผ์ ์ธ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑํ ์ ์๋ค
- ๋ฐ์ดํฐ ์ค๋ณต์ ๋ฐฐ์ ํ์ฌ
์ด์(Anomaly)
๋ฐ์์ ๋ฐฉ์งํ๊ณ ์ ์ฅ ๊ณต๊ฐ์ ์ต์ํํ๋ค
์ ๊ทํ๋ฅผ ๊ฑฐ์น์ง ์์ผ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ๋ฐ์ดํฐ๋ค์ด ๋ถํ์ํ๊ฒ ์ค๋ณต๋์ด ๋ฆด๋ ์ด์ ์กฐ์ ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋๋ฐ, ์ด๋ฅผ ์ด์์ด๋ผ๊ณ ํ๋ฉฐ ์ฝ์ ์ด์, ์ญ์ ์ด์, ๊ฐฑ์ ์ด์์ด ์๋ค
- ์ฝ์ ์ด์ (Insertion Anomaly) : ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ ์ํ์ง ์์ ๊ฐ๋ค๋ ํจ๊ป ์ฝ์ ๋๋ ํ์
- ๊ฐฑ์ ์ด์ (Update Anomaly) : ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋ ์ผ๋ถ ํํ์ ์ ๋ณด๋ง ๊ฐฑ์ ๋์ด ์ ๋ณด์ ๋ชจ์์ด ์๊ธฐ๋ ํ์
- ์ญ์ ์ด์ (Deletion Anomaly) : ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ ์๋์๋ ์๊ด ์๋ ๊ฐ๋ค๋ ํจ๊ป ์ญ์ ๋๋ ํ์
๋ฆด๋ ์ด์ ์ ์ํ ๋ชจ๋ ๋๋ฉ์ธ์ด ์์๊ฐ๋ง์ผ๋ก ๋์ด์๋ ์ ๊ทํ์ด๋ค
1NF๋ฅผ ๋ง์กฑํ๊ณ , ๋ถ๋ถ ํจ์์ ์ข ์์ ์ ๊ฑฐํ์ฌ ๊ธฐ๋ณธํค๊ฐ ์๋ ๋ชจ๋ ์์ฑ์ด ๊ธฐ๋ณธํค์ ๋ํ์ฌ ์์ ํจ์์ ์ข ์์ ๋ง์กฑํ๋ ์ ๊ทํ์ด๋ค
์์ ํจ์์ ์ข
์ : ๋ง์ฝ (์์ฑ A, ์์ฑ B) -> ์์ฑ C ์ผ๋, A->C, B->C ๋ชจ๋ ์ฑ๋ฆฝ๋ ๋ ์์ ํจ์์ ์ข
์์ด๋ผ ํ๋ค
๋ถ๋ถ ํจ์์ ์ข
์ : ๋ง์ฝ (์์ฑ A, ์์ฑ B) -> ์์ฑ C ์ผ๋, A->C, B->C ์ค ํ๋๋ง ์ฑ๋ฆฝ๋ ๋(๋ชจ๋ ์ฑ๋ฆฝ x) ๋ถ๋ถ ํจ์์ ์ข
์์ด๋ผ ํ๋ค
2NF๋ฅผ ๋ง์กฑํ๊ณ , ์ดํ์ ํจ์ ์ข ์์ ์ ๊ฑฐํ๋ ์ ๊ทํ์ด๋ค
์ดํ์ ์ข
์ : A -> B, B -> C ์ ์ข
์๊ด๊ณ์์ A -> C๋ฅผ ๋ง์กฑํ๋ ๊ด๊ณ๋ฅผ ์๋ฏธํ๋ค
๊ฒฐ์ ์๊ฐ ๋ชจ๋ ํ๋ณดํค์ธ ์ ๊ทํ์ด๋ค.(ํ๋ณดํค๊ฐ ์๋ ๊ฒฐ์ ์๋ฅผ ์ ๊ฑฐํ๋ ์ ๊ทํ์ด๋ค)
[BCNF์ ์ ์ฝ ์กฐ๊ฑด]
- ํค๊ฐ ์๋ ๋ชจ๋ ์์ฑ์ ๊ฐ ํค์ ๋ํ์ฌ ์์ ์ข ์ํด์ผ ํ๋ค
- ํค๊ฐ ์๋ ๋ชจ๋ ์์ฑ์ ๊ทธ ์์ ์ด ๋ถ๋ถ์ ์ผ๋ก ๋ค์ด๊ฐ ์์ง ์์ ๋ชจ๋ ํค์ ๋ํด ์์ ์ข ์ํด์ผ ํ๋ค
- ์ด๋ค ์์ฑ๋ ํค๊ฐ ์๋ ์์ฑ์ ๋ํด์๋ ์์ ์ข ์ ํ ์ ์๋ค
๊ฒฐ์ ์ : ๋ค๋ฅธ ์์ฑ์ ๊ณ ์ ํ๊ฒ ๊ฒฐ์ ํ๋ ํ๋ ์ด์์ ์์ฑ (์์ฑ ๊ฐ์ ์ข
์์ฑ์ ๊ท๋ช
ํ ๋ ๊ธฐ์ค์ด ๋๋ ๊ฐ)
์ข
์์ : ๊ฒฐ์ ์์ ๊ฐ์ ์ํด ์ ํด์ง๋ ๊ฐ
ํ๋ณดํค : ํ
์ด๋ธ์์ ๊ฐ ํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์ต์ํ์ ์์ฑ๋ค์ ์งํฉ
๋ค์น ์ข ์์ ์ ๊ฑฐํ๋ ์ ๊ทํ์ด๋ค.
๋ค์น ์ข
์ : ์์ฑ A -> (์์ฑ B, ์์ฑ C) ์ผ๋, A->B๋ฅผ ๋ง์กฑํ๊ณ , **B์ C๊ฐ ๋ฌด๊ด**ํ ๋ B๋ A์ ๋ค์น์ข
์ ๊ด๊ณ๋ผ๊ณ ํ๋ฉฐ, A->>B ๋ผ๊ณ ํ๋ค.
๋ค์น์ข
์์ ์ ๊ฑฐํ์ง ์์ผ๋ฉด A->>B ์ํฉ์์ C๊ฐ์ด ์ค๋ณต๋ ์ ์๋ค.
์๋ฅผ๋ค์ด,
(ํ์๋ฒํธ)-> (์ด๋ฆ, ์ฃผ๋ฌธ๋ฒํธ) ์ธ ํ
์ด๋ธ์์
(ํ์๋ฒํธ ->> ์ฃผ๋ฌธ๋ฒํธ) ์ผ๋,
ํ์๋ฏธ๋ ๊ณ ๊ฐ์ด ์ฑ
์ ๋๋ฒ ์ฃผ๋ฌธํ๋ฉด ํ์๋ฏธ ์ด๋ฆ์ด ๋ถํ์ํ๊ฒ ๋๋ฒ ์ค๋ณต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ (ํ์๋ฒํธ->์ด๋ฆ), (ํ์๋ฒํธ->์ฃผ๋ฌธ๋ฒํธ)๋ก ์ชผ๊ฐ์ฃผ๋๊ฒ์ด ์ 4์ ๊ทํ์ด๋ค.
๋ฆด๋ ์ด์ R์ ๋ชจ๋ ์กฐ์ธ์ข ์์ด R์ ํ๋ณดํค๋ฅผ ํตํด์๋ง ์ฑ๋ฆฝ๋๋ ์ ๊ทํ์ด๋ค.
ํ ํ
์ด๋ธ์ ๋ถํดํ๋ค๊ฐ ๋ถํด๋ ๊ฒฐ๊ณผ๋ค์ ๋ค์ ์กฐ์ธํ๋ฉด ๋น์ฐํ ์๋์ ํ
์ด๋ธ๋ก ๋ณต์๋๋ค๊ณ ๊ธฐ๋ํ์ง๋ง ๊ทธ๋ ์ง ๋ชปํ ๊ฒฝ์ฐ๊ฐ ์๋ค.
๋ค์ ์กฐ์ธํ๋ฉด ์์ํ์ง ๋ชปํ๋ ํํ๋ค์ด ์์ฑ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค.
์กฐ์ธ ์ข
์ : ํ
์ด๋ธ์ ๋ถํดํ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์กฐ์ธํ์ ๋ ์๋์ ํ
์ด๋ธ๊ณผ ๋์ผํ๊ฒ ๋ณต์๋๋ ์ ์ฝ์กฐ๊ฑด์ด๋ค.
5NF๋ฅผ ์ค์ํ๋ ์ด์ ์์๋ก ๋ณด๊ธฐ
"๋ค์ ์กฐ์ธํ๋ฉด ์์ํ์ง ๋ชปํ๋ ํํ๋ค์ด ์์ฑ๋๋ ๊ฒฝ์ฐ"
๋ฆด๋ ์ด์ R์ด ๋ค์๊ณผ ๊ฐ์๋,
A | B | C |
---|---|---|
s1 | p1 | c2 |
s1 | p2 | c1 |
s2 | p1 | c1 |
s1 | p1 | c1 |
[A,B], [B,C], [A,C]๋ก ์ชผ๊ฐ๋ด ์๋ค.
A | B |
---|---|
s1 | p1 |
s1 | p2 |
s2 | p1 |
B | C |
---|---|
p1 | c2 |
p2 | c1 |
p1 | c1 |
A | C |
---|---|
s1 | c2 |
s1 | c1 |
s2 | c1 |
๋ค์ ํฉ์น๋ฉด
A | B | C |
---|---|---|
s1 | p1 | c2 |
s1 | p2 | c1 |
s2 | p1 | c1 |
s1 | p1 | c1 |
s2 | p1 | c2 |
===> ๋ง์ง๋ง ํํ์์ ์ด์๊ฐ ๋ฐ๊ฒฌ!!!!
์ด๋ฐ ์ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ 5์ ๊ทํ์ ์ํํฉ๋๋ค.
๋ฐ์ ๊ทํ๋ ์์คํ ์ ์ฑ๋ฅ ํฅ์, ๊ฐ๋ฐ ๋ฐ ์ด์์ ํธ์์ฑ ๋ฑ์ ์ํด ์ ๊ทํ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ํตํฉ, ์ค๋ณต, ๋ถ๋ฆฌํ๋ ๊ณผ์ ์ผ๋ก ์๋์ ์ผ๋ก ์ ๊ทํ ์์น์ ์๋ฐฐํ๋ ํ์์ด๋ค.
- ๋ฐ์ ๊ทํ๋ฅผ ์ํํ๋ฉด ์์คํ ์ ์ฑ๋ฅ์ด ํฅ์๋๊ณ ๊ด๋ฆฌ ํจ์จ์ฑ์ ์ฆ๊ฐํ์ง๋ง, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ์ ํฉ์ฑ์ ์ ํ๋ ์ ์๋ค.
- ๊ณผ๋ํ ๋ฐ์ ๊ทํ๋ ์ฑ๋ฅ์ ์ ํ์ํจ๋ค.
- ๋ฐ์ ๊ทํ๋ฅผ ์ํด์๋ ์ฌ์ ์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ์ฐ์ ์ผ๋ก ํ ์ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ๊ณผ ๋จ์ํ๋ฅผ ์ฐ์ ์ผ๋ก ํ ์ง ์๊ฐํ๋ค.
- ๋ฐ์ ๊ทํ ๋ฐฉ๋ฒ์๋ ํ ์ด๋ธ ํตํฉ, ํ ์ด๋ธ ๋ถํ , ์ค๋ณต ํ ์ด๋ธ ์ถ๊ฐ, ์ค๋ณต ์์ฑ ์ถ๊ฐ ๋ฑ์ด ์๋ค.
๋ ๊ฐ์ ํ
์ด๋ธ์ด ์กฐ์ธ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ํ๋์ ํ
์ด๋ธ๋ก ํฉ์ณ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ ํฅ์์ ๋์์ด ๋ ๊ฒฝ์ฐ ์ํํ๋ค.
๋ ๊ฐ์ ํ
์ด๋ธ์์ ๋ฐ์ํ๋ ํ๋ก์ธ์ค๊ฐ ๋์ผํ๊ฒ ์์ฃผ ์ฒ๋ฆฌ๋๋ ๊ฒฝ์ฐ
, ๋ ๊ฐ์ ํ
์ด๋ธ์ ์ด์ฉํ์ฌ ํญ์ ์กฐํ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ
ํ
์ด๋ธ ํตํฉ์ ๊ณ ๋ คํ๋ค.
- ๊ฒ์์ ๊ฐํธํ์ง๋ง, ๋ ์ฝ๋ ์ฆ๊ฐ๋ก ์ธํด ์ฒ๋ฆฌ๋์ด ์ฆ๊ฐํ๋ค.
- ํ ์ด๋ธ ํตํฉ์ผ๋ก ์ธํด ์ ๋ ฅ, ์์ , ์ญ์ ๊ท์น์ด ๋ณต์กํด์ง ์ ์๋ค.
ํ ์ด๋ธ์ ์์ง ๋๋ ์ํ์ผ๋ก ๋ถํ ํ๋ ๊ฒ์ด๋ค.
- ์ํ ๋ถํ : ๋ ์ฝ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์ด๋ธ์ ๋ถํ ํ๋ค.
- ์์ง ๋ถํ : ํ๋์ ํ
์ด๋ธ์ ์์ฑ์ด ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ ์์ฑ์ ๊ธฐ์ค์ผ๋ก ํ
์ด๋ธ์ ๋ถํ ํ๋ค.
๊ฐฑ์ ์์ฃผ์ ์์ฑ ๋ถํ
: ๋ฐ์ดํฐ ๊ฐฑ์ ์ ๋ ์ฝ๋ ์ ๊ธ์ผ๋ก ์ธํด ๋ค๋ฅธ ์์ ์ ์ํ ํ ์ ์์ผ๋ฏ๋ก ๊ฐฑ์ ์ด ์์ฃผ ์ผ์ด๋๋ ์์ฑ๋ค์ ์์ง ๋ถํ ํ์ฌ ์ฌ์ฉํ๋ค.์์ฃผ ์กฐํ๋๋ ์์ฑ ๋ถํ
: ํ ์ด๋ธ์์ ์์ฃผ ์กฐํ๋๋ ์์ฑ์ด ๊ทนํ ์ผ๋ถ์ผ ๊ฒฝ์ฐ ์์ฃผ ์ฌ์ฉ๋๋ ์์ฑ๋ค์ ์์ง๋ถํ ํ์ฌ ์ฌ์ฉํ๋ค.ํฌ๊ธฐ๊ฐ ํฐ ์์ฑ ๋ถํ
: ์ด๋ฏธ์ง, 2GB ์ด์ ์ ์ฅ๋ ์ ์๋ ํ ์คํธ ํ์์ผ๋ก ๋ ์์ฑ๋ค์ ์์ง๋ถํ ํ์ฌ ์ฌ์ฉํ๋ค.๋ณด์์ ์ ์ฉํด์ผ ํ๋ ์์ฑ ๋ถํ
: ํ ์ด๋ธ ๋ด์ ํน์ ์์ฑ์ ๋ํด ๋ณด์์ ์ ์ฉํ ์ ์์ผ๋ฏ๋ก ๋ณด์์ ์ ์ฉํด์ผ ํ๋ ์์ฑ๋ค์ ์์ง๋ถํ ํ์ฌ ์ฌ์ฉํ๋ค.
- ๊ธฐ๋ณธํค์ ์ ์ผ์ฑ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋ค.
- ๋ฐ์ดํฐ ์์ด ์ ๊ฑฐ๋ ์ฌ์ฉ ๋น๋๊ฐ ๋ฎ์ ๊ฒฝ์ฐ ํ ์ด๋ธ ๋ถํ ์ด ํ์ํ ์ง๋ฅผ ๊ณ ๋ คํด์ผํ๋ค.
- ๋ถํ ๋ ํ ์ด๋ธ๋ก ์ธํด ์ํ ์๋๊ฐ ๋๋ ค์ง ์ ์๋ค.
- ๊ฒ์์ ์ค์ ์ ๋์ด ํ ์ด๋ธ ๋ถํ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ค.
์ฌ๋ฌ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ ์ฌ์ฉํด์ผ ํ๊ฑฐ๋ ๋ค๋ฅธ ์๋ฒ์ ์ ์ฅ๋ ํ ์ด๋ธ์ ์ด์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ ์ค๋ณต ํ ์ด๋ธ์ ์ถ๊ฐํ์ฌ ์์ ์ ํจ์จ์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
-
์ค๋ณต ํ ์ด๋ธ์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ
- ์ ๊ทํ๋ก ์ธํด ์ํ ์๋๊ฐ ๋๋ ค์ง๋ ๊ฒฝ์ฐ
- ๋ง์ ๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ์ฒ๋ฆฌํด์ผํ๋ ๊ฒฝ์ฐ
- ํน์ ๋ฒ์์ ๋ฐ์ดํฐ๋ง ์์ฃผ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ
- ์ฒ๋ฆฌ ๋ฒ์๋ฅผ ์ค์ด์ง ์๊ณ ๋ ์ํ ์๋๋ฅผ ๊ฐ์ ํ ์ ์๋ ๊ฒฝ์ฐ
-
์ค๋ณต ํ ์ด๋ธ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ
์ง๊ณ ํ ์ด๋ธ์ ์ถ๊ฐ
: ์ง๊ณ ๋ฐ์ดํฐ๋ฅผ ์ํ ํ ์ด๋ธ์ ์์ฑํ๊ณ , ๊ฐ ์๋ณธ ํ ์ด๋ธ์ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ค์ ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก, ํธ๋ฆฌ๊ฑฐ์ ์ค๋ฒํค๋์ ์ ์ํ๋ค.์งํ ํ ์ด๋ธ์ ์ถ๊ฐ
: ์ด๋ ฅ ๊ด๋ฆฌ ๋ฑ์ ๋ชฉ์ ์ผ๋ก ์ถ๊ฐํ๋ ํ ์ด๋ธ๋ก, ์ ์ ํ ๋ฐ์ดํฐ ์์ ์ ์ง์ ํ์ฉ๋๋ฅผ ๋์ด๊ธฐ ์ํด ๊ธฐ๋ณธํค๋ฅผ ์ ์ ํ ์ค์ ํ๋ค.ํน์ ๋ถ๋ถ๋ง์ ํฌํจํ๋ ํ ์ด๋ธ์ ์ถ๊ฐ
: ๋ฐ์ดํฐ๊ฐ ๋ง์ ํ ์ด๋ธ์ ํน์ ๋ถ๋ถ๋ง์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํด๋น ๋ถ๋ถ๋ง์ผ๋ก ์๋ก์ด ํ ์ด๋ธ์ ์์ฑํ๋ค.
์กฐ์ธํด์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒฝ๋ก๋ฅผ ๋จ์ถํ๊ธฐ ์ํด ์์ฃผ ์ฌ์ฉํ๋ ์์ฑ์ ํ๋ ๋ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค.
์ค๋ณต ์์ฑ์ ์ถ๊ฐํ๋ฉด ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ ํ๋ณด๊ฐ ์ด๋ ต๊ณ , ๋์คํฌ ๊ณต๊ฐ์ด ์ถ๊ฐ๋ก ํ์ํ๋ค.
-
์ค๋ณต ์์ฑ์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ
- ์กฐ์ธ์ด ์์ฃผ ๋ฐ์ํ๋ ์์ฑ์ธ ๊ฒฝ์ฐ
- ์ ๊ทผ ๊ฒฝ๋ก๊ฐ ๋ณต์กํ ์์ฑ์ธ ๊ฒฝ์ฐ
- ์ก์ธ์ค ์กฐ๊ฑด์ผ๋ก ์์ฃผ ์ฌ์ฉ๋๋ ์์ฑ์ธ ๊ฒฝ์ฐ
- ๊ธฐ๋ณธํค์ ํํ๊ฐ ์ ์ ํ์ง ์๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ
-
์ค๋ณต ์์ฑ ์ถ๊ฐ ์ ๊ณ ๋ ค ์ฌํญ
- ํ ์ด๋ธ ์ค๋ณต๊ณผ ์์ฑ์ ์ค๋ณต์ ๊ณ ๋ คํ๋ค.
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์ํด์ผ ํ๋ค.
- ์ ์ฅ๊ณต๊ฐ์ ์ง๋์น ๋ญ๋น๋ฅผ ๊ณ ๋ คํ๋ค.
์๋์ ์๋ฃ์์ ์์ธํ ์ค๋ช ์ ๋ณผ ์ ์๋ค.
- ์์ฑ์ ์ค๊ฐ์ | ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Index
ํธ๋์ญ์ ์ด๋? ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด ์ํ๋๋ ์์ ์ ๋ ผ๋ฆฌ์ ๋จ์์ด๋ค.
- Atomicity(์์์ฑ) : ํธ๋์ญ์ ์ ํด๋นํ๋ ์์ ๋ด์ฉ์ด (๋ชจ๋ ์ฑ๊ณตํ์ ์) ๋ชจ๋ ๋ฐ์๋๊ฑฐ๋, (ํ๋๋ผ๋ ์คํจํ์ ์) ๋ชจ๋ ๋ฐ์๋์ง ์์์ผ ํ๋ค.
- Consistency(์ผ๊ด์ฑ) : ํธ๋์ญ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ ํญ์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํด์ผ ํ๋ค.
- Isolation(๊ณ ๋ฆฝ์ฑ) : ๋ ์ด์์ ํธ๋์ญ์ ์ด ๋์์ ์คํ๋๊ณ ์์ ๋, ๊ฐ ํธ๋์ญ์ ์ ์๋ก ๊ฐ์ญ ์์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ํ๋์ด์ผ ํ๋ค.
- Durability(์ง์์ฑ) : ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ค๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋์ด์ผ ํ๋ค.
Isolation(๊ณ ๋ฆฝ์ฑ)์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ฌด์ฐจ๋ณ์ ์ผ๋ก Lock์ ๊ฑธ๋ค๋ณด๋ฉด ๋๊ธฐ์๊ฐ์ด ๋งค์ฐ ๊ธธ์ด์ง๋ฏ๋ก ํธ๋์ญ์ ์ ์ต์ํ์ผ๋ก ์ฌ์ฉํด์ผํ๋ค.
- Active : ํธ๋์ญ์ ์ด ์คํ์ค์ธ ์ํ(SQL ์คํ)
- Parital Commit : ํธ๋์ญ์ ์ ๋ง์ง๋ง ์ฐ์ฐ๊น์ง ์คํํ์ง๋ง, commit ์ฐ์ฐ์ด ์คํ๋๊ธฐ ์ง์ ์ ์ํ
- Commited : ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ข ๋ฃ๋๊ณ commit ์ฐ์ฐ๊น์ง ์คํ ์๋ฃ๋ ์ํ
- Failed : ํธ๋์ญ์ ์คํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ํ
- Aborted: ํธ๋์ญ์ ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ด Rollback ์ฐ์ฐ์ ์ํํ ์ํ
- Commit : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์ฐ์ฐ์ด ์ฑ๊ณต์ ์ผ๋ก ์ข ๋ฃ๋์ด ์ฐ์ฐ์ ์ํ ์์ ๋ด์ฉ์ ์ง์์ ์ผ๋ก ์ ์งํ๊ธฐ ์ํ ๋ช ๋ น์ด์ด๋ค.
- Rollback : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์ฐ์ฐ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๊ฑฐ๋ ์ ์์ ์ผ๋ก ์ํ์ด ๋์๋ค ํ๋๋ผ๋ ์ํ๋๊ธฐ ์ด์ ์ ์ํ๋ก ๋๋๋ฆฌ๊ธฐ ์ํด ์ฐ์ฐ ๋ด์ฉ์ ์ทจ์ํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด์ด๋ค.
ํ ํธ๋์ญ์ ์งํ ์ค์ ๋ณ๊ฒฝํ ๊ฐ์ ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ฝ์ ๋ ๋ฐ์ํ๋ค. ์ปค๋ฐ๋์ง ์์ ์ํ์ ํธ๋์ญ์ ์ ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ฝ์ ์ ์์ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค.
ํ ํธ๋์ญ์ ์์ ๊ฐ์ ๊ฐ์ ๋ ๋ฒ ์ด์ ์ฝ์์ ๋ ๊ทธ ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ํ ํธ๋์ญ์ ๋์ค ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ปค๋ฐ๋๋ฉด ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
ํ ํธ๋์ญ์ ์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฌธ์ ๋ ๋ฒ ์ด์ ์คํํ์ ๋ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์กฐํ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. A ํธ๋์ญ์ ๋์ค B ํธ๋์ญ์ ์์ update ์ฟผ๋ฆฌ๋ฅผ ์ํํ๊ณ ์ปค๋ฐํ๋๋ผ๋ A ํธ๋์ญ์ ์์ ๊ทธ ๊ฒฐ๊ณผ๋ ๋ณผ ์ ์์ง๋ง, A ํธ๋์ญ์ ๋์ค B ํธ๋์ญ์ ์์ insert ์ฟผ๋ฆฌ๋ฅผ ์ํํ ๊ฒฝ์ฐ A ํธ๋์ญ์ ์์ ์ฒ์์ ์ ๋ณด์๋ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์กฐํ๋ ์ ์๋ค.
์๋์ ์๋ฃ์์ ์์ธํ ์ค๋ช ์ ๋ณผ ์ ์๋ค.
- ์์ฑ์ ์ด์ธ๋ช | NoSQL
์ง๋ฌธ์ ๋ํ ๋ต์ ๋งํด๋ณด๋ฉฐ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๊ฒํ ์ ์์ผ๋ฉฐ, ํด๋ฆญํ๋ฉด ๋ต๋ณ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ์ฌ์ฉํ๋์?
๊ธฐ์กด์๋ ํ์ผ ์์คํ ์ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ผ ์์คํ ์๋ '๋ฐ์ดํฐ ์ค๋ณต', '๋ฐ์ดํฐ ๋ถ์ผ์น', '๋ฐ์ดํฐ ๋ณด์๋ฌธ์ ' ๋ฑ ๋ค์ํ ๋ฌธ์ ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ฌธ์ ๋ค์ ์ด๋ ์ ๋ ํด์ํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ์ข์์ง๊ฒ ํ๋ ค๋ฉด ์ด๋ค ๋ฐฉ๋ฒ๋ค์ด ์์๊น์?
DB์ค๊ณ ํ๋
- ํ ์ด๋ธ ๋ถํด, ํตํฉ
- ํ ์ด๋ธ ์ ๊ทํ
- ์ ์ ํ ๋ฐ์ดํฐ ํ์ ์ค์
DBMS ํ๋
- I/O ์ต์ํ
- Commit ์ฃผ๊ธฐ ์กฐ์
- Middleware ๊ธฐ๋ฅ๊ณผ ์ฐ๋
SQL ํ๋
- Join ๋ฐฉ์ ์กฐ์
- Index ํ์ฉ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ ๋ชฉํ๋ ๋ฌด์์ผ๊น์?
๋ชจ๋ ๊ฐ๊ฐ์ ๋ฆด๋ ์ด์ ์ด 3NF์ BCNF๋ฅผ ์ดํํ๋๋ก ํ๋ ๊ฒ
์ ๊ทํ๋ ์ ํ ๊น์?
๋ฐ์ดํฐ ์์ฑ, ์์ , ์ญ์ ์ ๋ฐ์ดํฐ ์ค๋ณต, ๋ถ์ผ์น ๋ฑ ๊ฐฑ์ ์ด์์ ์์ ๊ธฐ ์ํด์ ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํ ์ด์ ๋ ์์ต๋๋ค. (ํ ์ด๋ธ์ ๋ถํดํด์ ์ค๋ณต๋๋ ์ด์ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์์)
์ 1 ์ ๊ทํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ์์ ์ฌ์ฉํ๋ ์ต์ ์ ๊ทํ์ ๋๋ค. ์ 1 ์ ๊ทํ์์ ์ด๋ค ์ ๊ทํ ๊ณผ์ ์ ์งํํ๋์ง ์์๋ฅผ ๋ค์ด ์ค๋ช ํ ์ ์๋์?
ex1) ํธ๋ํฐ ๋ฒํธ, ์ ํ ๋ฒํธ๋ฅผ ๋์ผํ ์นผ๋ผ์ ์ค๋ณต๋์ด ๋ฐ๋ ๊ฒฝ์ฐ(: 555-403-1659, 02-2651-4656)๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
ex2) ex1์ ๋ํ ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ์ํ ์ฌ๋ฌ๊ฐ์ ์ ํ๋ฒํธ ํ์ ๋๋ ๊ฒ(๋์ผํ ๋๋ฉ์ธ๊ณผ ์๋ฏธ๋ฅผ ๋๋ ๊ฒ์ ์ต์ ์ ๊ทํ์ ์๋ฐฐ)์ ์ ๊ฑฐํฉ๋๋ค.
์์ ๊ฐ์ ์ ๊ทํ ๊ณผ์ ์ ๊ฑฐ์ณ ์ 1 ์ ๊ทํ์ด ๋ฉ๋๋ค.
์ 3 ์ ๊ทํ์ '์ถ์ด ์ข ์' or 'ํจ์์ ์ดํ ์ข ์' ๋จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ช ํ ์ ์๋์?
ํ
์ด๋ธ์ด ์ 2 ์ ๊ทํ์ ๋ง์กฑํ๋ฉฐ ๋ชจ๋ ์์ฑ์ด ๊ธฐ๋ณธ ํค์๋ง ์์กดํ์ฌ ๋ค๋ฅธ ํค์ ์์กดํ์ง ์๋ ์ ๊ทํ์ ์ 3 ์ ๊ทํ์ด๋ผ๊ณ ํฉ๋๋ค.
๋ง์ฝ ์์กดํ๋ค๋ฉด ํจ์์ ์ดํ ์ข
์์ด ์ผ์ด๋์ A->B->C ์ํ์ ์ผ๋ก ๋ชจ๋ ํด๋์ค๊ฐ ์์กดํ๊ฒ ๋๋ ๋ฌธ์ ๊ฐ ์ผ์ด๋ ์ ์์ต๋๋ค.
๊ฐ์ธ์ ๋ณด์ ๊ดํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ ์ด์์ด ์ผ์ด๋ select๋ก ์ ํํ ์ ๋ณด ํ์ ์ด ๋์ง ์์ ์ ๊ทํ๋ฅผ ์งํํ์ต๋๋ค. ํ์ง๋ง ์ด์ ๋ณด๋ค ํจ์ฌ ๋๋ ค์ก๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค. ์ง์์๋ ๋ฐ์ ๊ทํ๋ฅผ ์งํํ ๊ฒ์ ๋๊น?
๋ฐ์ ๊ทํ๋ ์งํํ๋ฉด ์๋ฉ๋๋ค. ๊ฐ์ธ์ ๋ณด์ ๊ดํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก์ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ๊ณผ ๋ณด์์ด ์ ์ผ ์ค์ํฉ๋๋ค.
๋ง์ฝ ๋ฐ์ ๊ทํ๋ก ์ธํด '์ฝ์
, ์ญ์ , ์์ ์ด์'์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง ์ ์๊ณ ๋๊ตฐ๋ค๋ ๊ฐ์ธ์ ๋ณด๋ผ์ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง๋ฉด ๋ณต์์ ํฐ ์ด๋ ค์์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ ๊ทํ๊ฐ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋, ์ฌ๊ตฌ์ฑ์ด ํ์ํด ๋ณด์
๋๋ค.
์ ๊ทํ ์์ ์ดํ, ์๋ง๊ฒ ์ ๊ทํ๋ฅผ ํ๋์ง ๊ฒ์ฆํ๊ณ ์ถ์๋ ์ด๋ป๊ฒ ํ ๊น์?
ํ
์ด๋ธ ๋ถํด ์ดํ ๋ฌด์์ค ์กฐ์ธ์ ๊ฒ์ฌํด๋ด
๋๋ค.
ํ
์ด๋ธ ๋ถํด ์ดํ ํจ์์ ์ข
์์ฑ์ด ๋ณด์กด๋๋์ง ํ์ธํฉ๋๋ค.
Index๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ทผํ๊ธฐ ์ํด <ํค ๊ฐ, ํฌ์ธํฐ> ์์ผ๋ก ๊ตฌ์ฑ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ.
Index์ ํน์ง์ ๋ํด ์๋๋๋ก ๋งํด๋ณด์ธ์.
- ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ์ ๋ฐ์ ํ ๊ด๊ณ์ ์๋ค.
- ์ธ๋ฑ์ค๋ ๋ ์ฝ๋๊ฐ ์ ์ฅ๋ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ์ ์ ๊ทผ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
- ํ์ผ์ ๋ ์ฝ๋์ ๋ํ ์ก์ธ์ค๋ฅผ ๋น ๋ฅด๊ฒ ์ํํ๋ค.
- ๋ ์ฝ๋์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์์๋ก ์ผ์ด๋๋ ๊ฒฝ์ฐ, ์ธ๋ฑ์ค์ ๊ฐ์๋ฅผ ์ต์๋ก ํ๋๊ฒ์ด ํจ์จ์ ์ด๋ค.
- ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ํน์ ํ ๊ฐ์ ์ฐพ๊ธฐ ์ํด ๋ชจ๋ ๋ฐ์ดํฐ ํ์ด์ง๋ฅผ ํ์ธํ๋ TABLE SCAN์ด ๋ฐ์ํ๋ค.
- ๊ธฐ๋ณธํค๋ฅผ ์ํ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ณธ ์ธ๋ฑ์ค๋ผ ํ๊ณ , ๊ธฐ๋ณธ ์ธ๋ฑ์ค๊ฐ ์๋ ์ธ๋ฑ์ค๋ฅผ ๋ณด์กฐ ์ธ๋ฑ์ค๋ผ ํ๋ค.
- ๋ ์ฝ๋์ ๋ฌผ๋ฆฌ์ ์์๊ฐ ์ธ๋ฑ์ค์ ์ํธ๋ฆฌ ์์์ ์ผ์นํ๊ฒ ์ ์ง๋๋๋ก ๊ตฌ์ฑ๋๋ ์ธ๋ฑ์ค๋ฅผ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ผ๊ณ ํ๋ค.
Index ํ ์ด๋ธ ์ ์ ๊ธฐ์ค์ ๋ํด ๋งํด์ฃผ์ธ์
๋๋ค ์ก์ธ์ค๊ฐ ๋น๋ฒํ๊ฑฐ๋, ๋ค๋ฅธ ํ ์ด๋ธ๊ณผ ์์ฐจ์ ์กฐ์ธ์ด ๋ฐ์๋๋ ํ ์ด๋ธ ํน์ ํธ๊ฒใ ๋ฒ์๋ ์์๋ก ๋ฐ์ดํฐ ์กฐํ๊ฐ ํ์ํ ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ๋ค.
Index๋ฅผ ๊ตฌํํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋ํด์ ๋ง์ํด์ฃผ์ธ์
Index๋ ๋ํ์ ์ผ๋ก ํด์ ํ
์ด๋ธ
, B+ ํธ๋ฆฌ
๋ฑ์ผ๋ก ๊ตฌํํ ์ ์๋ค.
- ํด์ ํ ์ด๋ธ
ํด์ํ
์ด๋ธ๋ก ๊ตฌํํ ๊ฒฝ์ฐ ๊ฒ์์ ๋ํ์ฌ ์๊ฐ๋ณต์ก๋ O(1)
์ ๊ฐ๋๋ค. ์ฆ, ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง ํด์๋ ๋ฑํธ(=) ์ฐ์ฐ์์ ์ ํฉํ๊ณ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ฃผ ์ผ์ด๋๋ ๋ถ๋ฑํธ(<, >) ์ฐ์ฐ์๋ ์ ํฉํ์ง ์๋ค.
ํด์๊ฐ ๋์ฌํ ํจ๊ณผ(avalanche effect) ๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- B+ ํธ๋ฆฌ
์ถ์ฒ: https://blog.jcole.us/2013/01/10/btree-index-structures-in-innodb/
๋ฆฌํ ๋
ธ๋์๋ง ๋ฐ์ดํฐ๋ฅผ ๋ด์๋ ์ผ๋ก ๋ ๋ง์ key ๊ฐ์ ์ ์ฅํ ์ ์๋ ๊ตฌ์กฐ์ด๋ค.
๋๋จธ์ง ๋
ธ๋๋ค์ ์ํ๋ ๋ฆฌํ๋ก ๊ฐ ์ ์๋๋ก ์๋ดํ๋ ์ธ๋ฑ์ค๋ง ์ ๊ณตํ๋ค.
๊ฐ์ ๋ ๋ฒจ์ ๋
ธ๋๋ค์ ์ด์ค ์ฐ๊ฒฐ๋ฆฌ์คํธ
๋ก ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ฑํธ๋ฅผ ์ฌ์ฉํ ์์ฐจ๊ฒ์
์ ์ต์ ํ ๋์ด์๋ค.
์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ป๊ธฐ ์ํด ๋ฆฌํ๋
ธ๋๊น์ง ๊ฐ์ผ๋งํ๋ค๋ ๋จ์ ์ด ์์ง๋ง, ํด์ ์ธ๋ฑ์ค์ ๋นํ์ฌ ์ธ๋ฑ์ฑ์ ๋ ์๋ง์ ์๋ฃ๊ตฌ์กฐ๋ก ์ฌ๊ฒจ์ง๋ค.
๊ฒ์์ ์์ด ์๊ฐ๋ณต์ก๋ O(log2โn)
์ ๊ฐ๋๋ค.
MULTI BLOCK READ๊ฐ ๋ฌด์์ด๋ฉฐ, ์ธ๋ฑ์ค ํ ์ด๋ธ ์ ์ ๊ธฐ์ค๊ณผ ์ฐ๊ด์ง์ด ์ค๋ช ํด๋ณด์ธ์.
ํ ์ด๋ธ ์ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ฒ์ ์ฝ์ด ๋ค์ผ ์ ์๋ ๋ธ๋ก์ ์๋ฅผ MULTI BLOCK READ๋ผ๊ณ ํ๋ฉฐ, MULTI BLOCK READ์์ ๋ฐ๋ผ ํ๋จํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ง ์ ํ๋ค. ์๋ฅผ๋ค์ด MULTI BLOCK READ๊ฐ 16์ด๋ฉด, ํ ์ด๋ธ์ ํฌ๊ธฐ๊ฐ 16๋ธ๋ก ์ด์์ผ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๊ฐ ํ์ํ๋ค.
์ธ๋ฑ์ค ์ปฌ๋ผ ์ ์ ๊ธฐ์ค์ ๋ํด ์๋๋๋ก ๋งํด๋ณด์ธ์.
๊ฐ๋ฅํ ํ ์์ ์ด ๋น๋ฒํ์ง ์๊ณ , ORDER BY/ GROUP BY/ UNION์ด ๋น๋ฒํ ์ปฌ๋ผ์ ์ ์ ํ๋ค. ํน์ ๋ถํฌ๋๊ฐ 10% ~ 15% ์ด๋ด์ธ ์ปฌ๋ผ์ ์ ์ ํ๋ค.
์ธ๋ฑ์ค ์ค๊ณ์, ์ธ๋ฑ์ค์ ํ ์ด๋ธ ๋ฐ์ดํฐ์ ์ ์ฅ๊ณต๊ฐ์ด ๋ถ๋ฆฌ๋๋๋ก ์ค๊ณํ๋ ์ด์ ์ ๋ํด ์ค๋ช ํ์์ค.
๋ฐ์ดํฐ ์ ์ฅ์ ์ธ๋ฑ์ค์ ์ํฅ์ ๋ฐ์ง ์์ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์ ์ฅ๊ณต๊ฐ์ ๋ถ๋ฆฌํ์ฌ ์ค๊ณํ๋ค.
๋นํธ๋งต ์ธ๋ฑ์ค์ ์ฅ์ ์ ๋ฌด์์ธ๊ฐ์?
๋ฐ์ดํฐ๊ฐ Bit๋ก ๊ตฌ์ฑ๋์ด ์์ด ํจ์จ์ ์ธ ๋ ผ๋ฆฌ์ฐ์ฐ์ด ๊ฐ๋ฅํ๊ณ ์ ์ฅ๊ณต๊ฐ์ด ์๋ค.
NoSQL์ ์ฅ์ ์ ๋ฌด์์ธ๊ฐ?
JOIN ์ฒ๋ฆฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ค์ผ์ผ ์์์ ํตํ ๋ ธ๋ํ์ฅ์ด ์ฉ์ดํ๋ค. ๋ํ ๊ฐ๋ณ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ด ์ ์ฐ์ฑ์ด ๋๋ค.
์ด๋ค ์ํฉ์์ NoSQL์ ์ฌ์ฉํ๋๊ฒ์ด ์ ํฉํ๊ฐ?
๋น์ ํ ๋ฐ์ดํฐ ํน์ ๋ง์ ์์ ๋ก๊ทธ๋ฅผ ์์งํด์ผํ ๋ ์ ํฉํ๋ค.
NoSQL์์ ์ ๊ทํ๊ฐ ํ์ํ ๊น?
NoSQL์์๋ ์ ๊ทํ ๊ณผ์ ์ด ํ์ํ์ง ์๋ค.
RDB์ ๋ฌ๋ฆฌ NoSQL์์๋ ์ฟผ๋ฆฌ์ ํจ์จ์ฑ
์ ๊ทน๋ํํ๊ธฐ ์ํด ์คํ๋ ค ๋น์ ๊ทํํ๋ค.
์ ๊ทํ๋ ์ค๋ณต์ ์ค์ด์ง๋ง ๊ทธ๋งํผ ๋ค์์ JOIN
์ ์๊ตฌํ๋ ๋ฑ ์ฑ๋ฅ์ ์
์ํฅ์ ๋ฏธ์น ์๋ ์๋ค.
NoSQL์์๋ ์๋์ ์ผ๋ก ์ค๋ณต์ ํ์ฉํ์ฌ ์ฑ๋ฅ์ ์ธ ์ด์ ์ ์ป๋๋ค.
ํธ๋์ญ์ ์ด๋ ๋ฌด์์ด๋ฉฐ ์ ์ฌ์ฉํด์ผ ํ๋์ง ๋ง์ํด์ฃผ์ธ์.
- ํค์๋ 1: ์์ ์ฑ์ ๋ณด์ฅํด ์ฃผ๋ ๊ฒ
- ํค์๋ 2: ์์ ์ ๋ ผ๋ฆฌ์ ๋จ์
ํธ๋์ญ์ ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ ๋ณํ์ ๋ํ ์์ ์ ๋ ผ๋ฆฌ์ ๋จ์๋ฅผ ๋งํฉ๋๋ค. ์ฌ์ฉ ์ด์ ๋ ๋ฐ์ดํฐ์ ์์ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด์์ ๋๋ค. ํธ๋์ญ์ ์ ํตํด ์ฌ๋ฌ ์ฟผ๋ฆฌ ์ค ํ๋๋ผ๋ ์คํจํ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ์ผ๊ด์ฑ์ ์ ์งํ ์ํ๋ก ์์๋ณต๊ท์ํฌ ์ ์๊ณ , ์ด๋ฅผ ํตํด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์ธ์ ๋ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ์ ๋ขฐํ ์ ์์ต๋๋ค.
ํธ๋์ญ์ ์ ACID๋ผ๋ 4๊ฐ์ง ํน์ฑ์ ๋ง์กฑํด์ผ ํฉ๋๋ค. ์ด 4๊ฐ์ง ํน์ฑ์ ๋ํด ์์ธํ ๋ง์ํด์ฃผ์ธ์.
- A : ์์์ฑ (Atomicity) | ํธ๋์ญ์ ์ ํด๋นํ๋ ์์ ๋ด์ฉ์ด (๋ชจ๋ ์ฑ๊ณตํ์ ์) ๋ชจ๋ ๋ฐ์๋๊ฑฐ๋, (ํ๋๋ผ๋ ์คํจํ์ ์) ๋ชจ๋ ๋ฐ์๋์ง ์์์ผ ํ๋ค.
- C : ์ผ๊ด์ฑ (Consistency) | ํธ๋์ญ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ ํญ์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํด์ผ ํ๋ค.
- I : ๊ณ ๋ฆฝ์ฑ (Isolation) | ๋ ์ด์์ ํธ๋์ญ์ ์ด ๋์์ ์คํ๋๊ณ ์์ ๋, ๊ฐ ํธ๋์ญ์ ์ ์๋ก ๊ฐ์ญ ์์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ํ๋์ด์ผ ํ๋ค.
- D : ์ง์์ฑ (Durability) | ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ค๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋์ด์ผ ํ๋ค.
A ๊ณ์ข์์ B๊ณ์ข๋ก ์ผ์ ๊ธ์ก์ ์ด์ฒดํ๋ ์์ ์ ๋ํด ์๊ฐํด๋ด ์๋ค. ์ด ๋ ํธ๋์ญ์ ์ ์ด๋ป๊ฒ ์ ์ํ ์ ์์๊น์?
(์์) A ๊ณ์ข์ ์์ก ํ์ธ SELECT๋ฌธ + A ๊ณ์ข์ ๊ธ์ก ์ฐจ๊ฐ UPDATE๋ฌธ + B ๊ณ์ข์ ๊ธ์ก ์ถ๊ฐ UPDATE๋ฌธ์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค.
(์ ์ง๋ฌธ๊ณผ ์ฐ๊ฒฐ) ๋ฐฉ๊ธ ๋ง์ํด์ฃผ์ ์ฟผ๋ฆฌ๋ฌธ์ ๋ํด์ Commit ์ฐ์ฐ๊ณผ Rollback ์ฐ์ฐ์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ๋ ๊ฐ๊ฐ ์ด๋ค ์ํฉ์ผ๊น์?
Commit ์ฐ์ฐ์ ํ ํธ๋์ญ์ ๋จ์์ ํฌํจ๋ ๋ชจ๋ ์ฟผ๋ฆฌ๋ฌธ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ ๊ฒฝ์ฐ ์ํ๋ฉ๋๋ค. ํ๋์ ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ๋๋ฌ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ผ๊ด์ฑ์ด ์๋ ์ํ๋ผ๋ ๊ฒ์ ์๋ ค์ฃผ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ฐ์ฐ์ ๋๋ค. Rollback ์ฐ์ฐ์ ํธ๋์ญ์ ์ ํฌํจ๋ ์ฟผ๋ฆฌ ์ค ํ๋๋ผ๋ ์คํจํ๋ฉด ์ํ๋๋ฉฐ ๋ชจ๋ ์ฟผ๋ฆฌ๋ฌธ์ ์ทจ์ํ๊ณ ์ด์ ์ํ๋ก ๋๋ ค๋์ต๋๋ค. Rollback ์ฐ์ฐ์ ํตํด ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ์คํจํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ์ ๊นจ๋จ๋ ธ์ ๋, ํธ๋์ญ์ ์ ์์์ฑ์ ๊ตฌํํ ์ ์์ต๋๋ค.
ํธ๋์ญ์ ์ Commit ์ฐ์ฐ์ ๋ํด์ ํธ๋์ญ์ ์ ์ํ๋ฅผ ํตํด ์ค๋ช ํด์ฃผ์ธ์.
ํธ๋์ญ์ ์ด ์์๋๋ฉด ํ๋(Active) ์ํ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํธ๋์ญ์ ์ ํฌํจ๋ ๋ชจ๋ ์ฐ์ฐ์ด ์คํ๋๋ฉด ๋ถ๋ถ ์๋ฃ(Partially Commited) ์ํ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Commit ์ฐ์ฐ์ ์คํํ ํ, ์๋ฃ(Commited) ์ํ๊ฐ ๋์ด ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ข ๋ฃ๋๊ฒ ๋ฉ๋๋ค.
ํธ๋์ญ์ ์ Rollback ์ฐ์ฐ์ ๋ํด์ ํธ๋์ญ์ ์ ์ํ๋ฅผ ํตํด ์ค๋ช ํด์ฃผ์ธ์.
ํธ๋์ญ์ ์ด ์์๋๋ฉด ํ๋(Active) ์ํ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํธ๋์ญ์ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์ค๋จ๋๋ฉด ์คํจ(Failed) ์ํ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Rollback ์ฐ์ฐ์ ์ํํ ํ, ์ฒ ํ(Aborted) ์ํ๊ฐ ๋์ด ํธ๋์ญ์ ์ด ์ข ๋ฃ๋๊ณ ํธ๋์ญ์ ์คํ ์ด์ ๋ฐ์ดํฐ ์ํ๋ก ๋์๊ฐ๊ฒ ๋ฉ๋๋ค.
Partial Commited ์ํ์์ Commited ์ํ๊ฐ ๋๋ ๊ณผ์ ์ ๋ํด ์์ธํ ์ค๋ช ํด์ฃผ์ธ์.
Commit ์์ฒญ์ด ๋ค์ด์ค๋ฉด Partial Commited ์ํ๊ฐ ๋๋๋ฐ, ์ด ๋ Commit ์ฐ์ฐ์ ๋ฌธ์ ์์ด ์ํํ๋ฉด Commited ์ํ๊ฐ ๋ฉ๋๋ค. ํ์ง๋ง Commit ์ฐ์ฐ ์ํ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด Failed ์ํ๋ก ๋์๊ฐ๊ฒ ๋ฉ๋๋ค.
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค(transaction isolation level)์ด๋ ๋ฌด์์ด๋ฉฐ, ์ ํ์ํ๊ฐ์?
ํธ๋์ญ์ ์์ ์ผ๊ด์ฑ์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ๋๋ก ํ๋ ์์ค์ ๋งํฉ๋๋ค. ์ด๊ฒ์ด ํ์ํ ์ด์ ๋ ํจ์จ์ ์ธ Locking ๋ฐฉ๋ฒ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. Locking ๋ฒ์๋ฅผ ๋์ธ๋ค๋ฉด ๋์์ ์ํ๋๋ ๋ง์ ํธ๋์ญ์ ๋ค์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ ๊ฒ์ด๊ณ , ์ด๋ DB์ ์ฑ๋ฅ์ ๋จ์ด๋จ๋ฆฌ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ฉด ๋ฒ์๋ฅผ ์ค์ธ๋ค๋ฉด ์๋ต์ฑ์ ๋์์ง๊ฒ ์ง๋ง ์๋ชป๋ ๊ฐ์ด ์ฒ๋ฆฌ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ๋์ด Locking ์์ค์ ๊ด๋ฆฌํฉ๋๋ค.
Isolation level์ ์ข ๋ฅ ์ค ํ ๊ฐ์ง๋ฅผ ์ค๋ช ํด์ฃผ์๊ณ , ์ด ๋ ๋ฐ์ํ ์ ์๋ ํ์๋ ํจ๊ป ์ค๋ช ํด์ฃผ์ธ์.
- Read Uncommited : Dirty Read, Non-Repeatable Read, Phantom Read
- Read Committed : Non-Repeatable Read, Phantom Read
- Repeatable Read : Phantom Read
- Serializable : ์๋ฒฝํ ์ผ๊ด์ฑ ๋ณด์ฅ
ํธ๋์ญ์ ์ ๋ณํ ์ ์ด์์ด ๋ณํ์ผ๋ก DB์ ๋์์ ์ ๊ทผ ํ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ๋ฌธ์ ์ ์ด ๋ฌด์์ธ๊ฐ์?
-
๊ฐฑ์ ๋ถ์ค : ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ์ฌ ๊ฐฑ์ ํ ๋ ๊ฐฑ์ ๊ฒฐ๊ณผ์ ์ผ๋ถ๊ฐ ์ฌ๋ผ์ง
-
๋ชจ์์ฑ : ๋์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ ๋, ๋ฐ์ดํฐ์ ์ํธ ๋ถ์ผ์น ๋ฐ์
-
์ฐ์ ๋ณต๊ท : ํธ๋์ญ์ ํ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ๋กค๋ฐฑ์ ๋๋จธ์ง ํธ๋์ญ์ ๋ ๋ค๊ฐ์ด ๋กค๋ฐฑ๋จ
๊ต์ฐฉ์ํ๊ฐ ์ผ์ด๋๊ธฐ์ํ ๋ค๊ฐ์ง ์กฐ๊ฑด์ ์ค๋ช ํด์ฃผ์ธ์
-
Mutual Exclusion : ์์์ ๊ณต์ ํ์ง ์์, ์์์ ๊ณต์ ํ๋ค๋ฉด ์๋ก ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์.
-
Hold & Wait : ์์์ ์์ ํ๊ณ ์์ผ๋ฉด์ ๋ค๋ฅธ ์์๋ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
-
No Preemption : ์์์ ํ๋ฒ ์ป์ผ๋ฉด ์์ ์ข ๋ฃ๊น์ง ์์์ ๋์ง ๋ชปํจ, (์๋๋ฐฉ์ด ๊ฐ๋ก์ฑ๊ฐ ์ ์์)
Deadlock Prevention ๊ณผ Avoidance ์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์?
-
Prevention : ๋ค๊ฐ์ง ์กฐ๊ฑด ์ค ํ๊ฐ์ง๋ฅผ ๋ง์ Deadlock์ด ์ผ์ด๋์ง ์๊ฒ ํ๋ ๊ฒ(์ฌ์ ์ฐจ๋จ)
-
Avoidance : Deadlock์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ง (safe state) ์๋ง ์์์ ํ ๋น
+๊ทธ๋ ๋ค๋ฉด Unsafe state == Deadlock ์ธ๊ฐ? NO, Unsafe state๋ Deadlock์ด ์ผ์ด ๋ ์ ๋ ์๋ ์ํ๋ฅผ ์๋ฏธํจ
Deadlock Prevention , Avoidance ๊ทธ๋ฆฌ๊ณ Ignorance ์ธ๊ฐ์ง ๋ฐฉ๋ฒ์ค์ ์ค์ ์ผ๋ฐ์ ์ธ OS์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋ฌด์์ด๋ผ ์๊ฐํ์๋์?
-
Ignorance
์ด์ : Deadlock Prevention, Avoidance๋ฅผ ์ํด์๋ ๋ง์ ๋น์ฉ์ด ํ์ํจ. ๋ฐ๋ผ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ OS์์๋ Deadlock์ ์ฌ์ ์ ์ฐจ๋จํ์ง ์๊ณ Deadlock๋ฐ์ ์ ์๋์ผ๋ก ํด์์ํค๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ.
-
๋ก์ผ ๋ฐ์ฌ๋ ๋นํ๊ธฐ ์ด์ ์์คํ ๊ณผ ๊ฐ์ด Deadlock ์ ๋ ๊ฑธ๋ ค์๋ ์๋๋ ์ ๋ฐํ๊ณ ์ค์ํ ์์คํ OS์์๋ง Prevention์ด๋ Avoidance๋ฅผ ์ฌ์ฉํจ
- Database System Concepts - 6th edition
- ์๋๊ณต ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ