๐ RDBMS์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ํน์ ๋ชฉ์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
๐ ์ฌ์ฉ์์ DB ์ฌ์ด์์ ์ฌ์ฉ์์ ์๊ตฌ์ ๋ฐ๋ผ DB๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ์ํํธ์จ์ด
๐ ์ผ๋ฐ์ ์ผ๋ก ์ปดํจํฐ ์์คํ ์ ์ ์ ๋ฐฉ์์ผ๋ก ์ ์ฅ๋ ๊ตฌ์กฐํ๋ ์ ๋ณด
๐ ๊ด๊ณํ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ DBMS ์ ํ
๐ RDBMS์ ํ
์ด๋ธ์ ์๋ก ์ฐ๊ด๋์ด ์์ด ์ผ๋ฐ DBMS๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์
๐ ๊ธฐ์กด์ RDBMS์๋ ๋ค๋ฅธ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ธฐ์
๐ ํ
์ด๋ธ ์คํค๋ง๊ฐ ๋งค์ฐ ์ ๋์ , ๋ฐ์ดํฐ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ์ง ์์
๐ SQL ๋ฟ๋ง์ด ์๋ ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณต
๐ ๋งค์ฐ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ฑฐ๋ ๋ถ์ฐํ ๊ตฌ์กฐ์ ๋งค์ฐ ์ ํฉํ ๊ธฐ์
๐ ๋ถ์ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ํธ ๋ณต์ฌํ๋ฉฐ ์ ์ฅํ๊ธฐ์ ๋ฐ์ดํฐ ์ ์ค์ด ๋งค์ฐ ์ ์
โ ๊ธฐ์กด์ ๋ณต์กํ๊ณ ์๋์ ๋ฐ์ดํฐ์์ ๋จ์ํ๊ณ ๋ค๋์ ๋ก๊ทธ ํํ์ ๋ฐ์ดํฐ๋ก ๋ณ๋ชจํจ์ ๋ฐ๋ผ ์ค์์ฑ์ด ๋ถ๊ฐ๋จ
โ ํธ๋์ญ์
์ ์ง์ํ์ง ์์
๐ DB์ ๊ตฌ์กฐ์ ์ ์ฝ์กฐ๊ฑด์ ๊ดํ์ฌ ์ ๋ฐ์ ์ธ ๋ช
์ธ๋ฅผ ๊ธฐ์ ํ ๊ฒ
โ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๋ฉํ๋ฐ์ดํฐ(meta-data)
โ ๋ฐ์ดํฐ ์ฌ์ ์ ์ ์ฅ
โ ๋ด๋ถ ์คํค๋ง : ๋ฐ์ดํฐ์ ์ค์ ์ ์ฅ ๋ฐฉ๋ฒ์ ๊ธฐ์ ํ ๊ฒ
โ ๊ฐ๋
์คํค๋ง : DB ์ ์ฒด์ ๋
ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ ํ ๊ฒ
โ ์ธ๋ถ ์คํค๋ง : ์ฌ์ฉ์์ ์์ฉ ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ฐ์ ๊ฐ์ธ์ ์
์ฅ์์ ํ์๋ก ํ๋ DB์ ๋
ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ ํ ๊ฒ
๐ ๊ณต๊ฒฉ์๊ฐ ์
์์ ์ธ ์๋๋ฅผ ๊ฐ๋ ๊ตฌ๋ฌธ์ ์ฝ์
ํ์ฌ ๊ณต๊ฒฉ์๊ฐ ์ํ๋ SQL ๊ตฌ๋ฌธ์ ์คํํ๋๋ก ํ๋ ํดํน๊ธฐ๋ฒ
๐ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ
ใใ๐ ๋
ผ๋ฆฌ์ ์๋ฌ๋ฅผ ์ด์ฉ, Union ๋ช
๋ น์ด๋ฅผ ์ด์ฉ, ๋ค๋์ SQL Injection ๊ณต๊ฒฉ, etc
๐ ๋ฐฉ์ด ๋ฐฉ๋ฒ
ใใ๐ input ๊ฐ์ ๋ฐ์ ๋, ํน์๋ฌธ์ ์ฌ๋ถ ๊ฒ์ฌ
ใใ๐ SQL ์๋ฒ ์ค๋ฅ ๋ฐ์ ์, ํด๋น ์๋ฌ ๋ฉ์์ง ๊ฐ์ถ๊ธฐ
ใใ๐ preparedstatement ์ฌ์ฉ
๐ Statement : SQL ๊ตฌ๋ฌธ์ ์คํํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ํด๋์ค
๐ PreparedStatement : Statement ํด๋์ค์ ๊ธฐ๋ฅ์ ํฅ์ํ ๊ฒ
๐ Statement์๋ ๋ณดํต ๋ณ์๋ฅผ ์ค์ ํ๊ณ ๋ฐ์ธ๋ฉํ๋ static SQL์ด ์ฌ์ฉ๋์ง๋ง PreparedStatement์์๋ ์ฟผ๋ฆฌ ์์ฒด์ ์กฐ๊ฑด์ด ๋ค์ด๊ฐ๋ dynamic SQL์ด ์ฌ์ฉ๋จ
๐ ์๋์ ๋ณด์ ์ธก๋ฉด์์ PreparedStatement๊ฐ ์ฐ์
๐ DB ๋ด์์ ํ๊บผ๋ฒ์ ์ํ๋์ด์ผ ํ ์ผ๋ จ์ ์ฐ์ฐ๋ค
โ A Transaction symbolizes a unit of work perfomed within a DBMS
๐ 4๊ฐ์ง์ ํน์ฑ ACID โ๏ธ
ใใ๐ ์์์ฑ(Atomicity) : ๋ถ๋ฆฌํ ์ ์๋ ํ๋์ ๋จ์, ์์
์ ๋ชจ๋ ์๋ฃ๋๊ฑฐ๋ ๋ชจ๋ ์ทจ์๋จ
ใใ๐ ์ผ๊ด์ฑ(Consistency) : ํธ๋์ญ์
์ํ ์ /ํ ์๊ด์์ด DB ์ํ๋ ํญ์ ์ผ๊ด๋ ์ํ(์ ์๋ ์ ์ฝ์กฐ๊ฑด์ ๋ง์กฑ)๋ฅผ ์ ์งํจ
ใใ๐ ๊ฒฉ๋ฆฌ์ฑ(Isolation) : ์ํ ์ค์ธ ํธ๋์ญ์
์ ๋ค๋ฅธ ํธ๋์ญ์
์ด ๋ผ์ด๋ค์ด ๋ณ๊ฒฝ ์ค์ธ ๋ฐ์ดํฐ ๊ฐ์ ํผ์ํ ์ X
ใใ๐ ์์์ฑ(Durability) : ์ ์์ ์ธ ์ข
๋ฃ๊ฐ ๋๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ ์์คํ
์ ์๊ตฌ์ ์ ์ฉ
โ ํ๊บผ๋ฒ์ ์๋ฃ๊ฐ ๋ ๊ฒฝ์ฐ, ์ฑ๊ณต์ ์ธ ์ข
๋ฃ โCOMMITโ, DB ๋ฐ์
โ ๊ทธ๋ ์ง ๋ชปํ ๊ฒฝ์ฐ, ๋น์ ์์ ์ธ ์ข
๋ฃ โROLLBACKโ, DB ์ํฅ X
๐ ์ฌ๋ฌ ํธ๋์ญ์
์ด ์ํ๋ ๋, ํธ๋์ญ์
๋ผ๋ฆฌ ์๋ก ๊ณ ๋ฆฝ๋์ด ์๋ ์์ค
๐ 4๊ฐ์ง์ ๋ ๋ฒจ
ใใ๐ Read Uncommited
ใใใใ๐ ์ปค๋ฐ ์ ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ค๋ฅธ ํธ๋์ญ์
์์ ์กฐํํ ์ ์๋ ๋ ๋ฒจ
ใใใใ๐ Dirty Read, Non-Repeatable Read ๋ฐ์
ใใ๐ Read Commited
ใใใใ๐ ์ปค๋ฐ์ด ์๋ฃ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ํด์๋ง ๋ค๋ฅธ ํธ๋์ญ์
์์ ์กฐํํ ์ ์๋ ๋ ๋ฒจ
ใใใใ๐ Non-Repeatable Read, Pantom Read ๋ฐ์
ใใ๐ Repeatable Read
ใใใใ๐ ํธ๋์ญ์
์ด ์์๋๊ธฐ ์ ์ ์ปค๋ฐ๋ ๋ด์ฉ์ ๋ํด์๋ง ์กฐํํ ์ ์๋ ๋ ๋ฒจ
ใใใใ๐ Pantom Read ๋ฐ์
ใใ๐ Serializable
ใใใใ๐ ํ ํธ๋์ญ์
์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ ๋ค๋ฅธ ํธ๋์ญ์
์์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ ๋ ๋ฒจ
ใใใใ๐ ๋์์ฑ์ด ๊ฐ์ฅ ๋ง์ด ๋จ์ด์ง, DeadLock ์ฃผ์
๐ Dirty Read : ์ปค๋ฐ๋์ง ์์ ์์ ์ค์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์
์์ ์กฐํํ๋ ๊ฒ์ ํ์ฉํ ๋ ๋ฐ์ํ๋ ํ์
๐ Non-Repeatable Read : ํ ํธ๋์ญ์
์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฒ ์ํํ ๋, ๋ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๊ฐ ์์ดํ๊ฒ ๋ํ๋๋ ํ์
๐ Phantom Read : ํ ํธ๋์ญ์
์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฒ ์ํํ ๋, ์ฒซ ๋ฒ์งธ ์ฟผ๋ฆฌ์์ ์๋ ํํ์ด ๋ ๋ฒ์งธ ์ฟผ๋ฆฌ์์ ๋ํ๋๋ ํ์
๐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋จ์ด์ ธ ์๋ ์ฌ๋ฌ DB์ ๋ํด ๋ก์ปฌ DB์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ์๊ฒฉ DB์ ๋ณต์ ํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ
๐ ์ค์๊ฐ ๋ฐ์ดํฐ ๋ฐฑ์
๋ฐ ์๋ฒ ๋ถํ ๋ถ์ฐ์ ์ํด
๐ DB์์ ์ ์ฅ๋ ๊ฐ๋ค์ ๋ํด ์ฌ๋ฌ๊ฐ์ง ์ ํ์ ํตํ์ฌ ๋ฐ์ดํฐ์ ๋ํ ์ ๋ขฐ๋ฅผ ๋ณด์ฅํ๊ฒ ํด ์ผ๊ด์ฑ์ ์ ์ง์์ผ์ฃผ๋ ๊ฒ
ใใ๐ ์์ญ ๋ฌด๊ฒฐ์ฑ(Domain Integrity) : ์๋ฃํ, ๊ท์น๊ณผ ์ ์ฝ, ๊ฐ ๋ฒ์ ๋ฑ์ ์ ํ
ใใ๐ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ(Referential Integrity) : ๊ธฐ๋ณธ ํค์ ์ฐธ์กฐ ํค ๊ฐ์ ๊ด๊ณ๊ฐ ํญ์ ์ ์ง๋จ์ ๋ณด์ฅ
ใใใใ๐ ๊ด๋ จ๋ ํ
์ด๋ธ์ ๋ ์ฝ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ํจํ๊ฒ ํ๋ ๊ท์น
ใใใใ๐ ์ฝ๊ฒ ์๊ธฐํ์๋ฉด ์ธ๋ํค ๊ฐ์ NULL ํน์ ์ฐธ์กฐ ๋ฆด๋ ์ด์
์ ๊ธฐ๋ณธํค ๊ฐ๊ณผ ๋์ผํจ์ ์๋ฏธ
ใใ๐ ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ(Entity Integrity) : ๊ธฐ๋ณธ ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ฅผ ๊ตฌ์ฑํ๋ ์ด๋ค ์์ฑ๋ Null ๊ฐ์ด๋ ์ค๋ณต๋ ๊ฐ์ ๊ฐ์ง ์ ์์
๐ DB์์ ํํ๋ค์ ์๋ก ๊ตฌ๋ถํ ์ ์๋๋ก ๊ธฐ์ค์ด ๋๋ ์์ฑ์ ๋ปํจ
ใใ๐ ๊ธฐ๋ณธ ํค(Primary Key) : ํ ๋ฆด๋ ์ด์
์์ ํน์ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๊ฒ ํ๋ ์์ฑ // ์ค์ง ํ ๊ฐ, NULL X, ์ค๋ณต ๊ฐ X // NULL์ 0๊ณผ ๋ค๋ฅธ ์๋ฏธ
ใใใใโ ๋ณตํฉ ํค(Composite Key) : ๋ ์ด์์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ๊ธฐ๋ณธ ํค
ใใใใโ ์์ฐ ํค(Natural Key) : ์ค์ ๋ก ์ด๋ค ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ํค
ใใใใโ ๋๋ฆฌ ํค(Surrogate Key) : ๋ณด์ ํน์ ์ฑ๋ฅ ํฅ์์ ์ํด ์ฌ์ฉ๋๋ ์ธ๊ณต์ ์ด๊ฑฐ๋ ํฉ์ฑ์ ์ธ ํค, ์ธ๊ณต ํค๋ผ๊ณ ๋ ํจ
ใใ๐ ํ๋ณด ํค(Candidate Key) : ํน์ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๊ฒ ํ๋ ์ต์ํ์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ํค // ์ ์ผ์ฑ O, ์ต์์ฑ O
ใใ๐ ๋์ฒด ํค(Alternate Key) : ํ๋ณด ํค๊ฐ ๋ ์ด์์ผ๋, ๊ธฐ๋ณธ ํค๋ฅผ ์ ์ธํ ํ๋ณด ํค
ใใ๐ ์ํผ ํค(Super Key) : ํน์ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๊ฒ ํ๋ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ํค // ์ ์ผ์ฑ O, ์ต์์ฑ X
ใใ๐ ์ธ๋ ํค(Foreign Key) : ์ฐธ์กฐํ๋ ๋ฆด๋ ์ด์
์ ๊ธฐ๋ณธ ํค์ ๋์๋์ด ๋ฆด๋ ์ด์
๊ฐ์ ์ฐธ์กฐ ๊ด๊ณ๋ฅผ ํํํ๋ ์ค์ํ ๋๊ตฌ
ใใ๐ ๋ถ๋ถ ํค(Partial Key) : ์์ ๊ฐ์ฒด ํ์
์ ํค์ ๊ฒฐํฉํ์ฌ ์ฝํ ๊ฐ์ฒด ํ์
์ ํน์ ํํ๋ฅผ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๊ฒ ํ๋ ์์ฑ
โ ์ ์ผ์ฑ : ํน์ ํํ์ ๋ฐ๋ก ์ฐพ์๋ผ ์ ์๋ ๊ณ ์ ํ ์์ฑ์ ์๋ฏธ
โ ์ต์์ฑ : ํค๋ฅผ ๊ตฌ์ฑํ๋ ์์ฑ ํ๋๋ฅผ ์ ๊ฑฐํ๋ฉด ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋, ๋ฐ๋ผ์ ๋ฐ๋์ ํ์ํ ์ต์์ ์์ฑ์ ์๋ฏธ
๐ ์คํค๋ง๋ฅผ ์ ์ํ๊ฑฐ๋ ์กฐ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ธ์ด
โ DB ๊ตฌ์กฐ, ๋ฐ์ดํฐ ํ์, ์ ๊ทผ ๋ฐฉ์ ๋ฑ DB๋ฅผ ๊ตฌ์ถํ๊ฑฐ๋ ์์ ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ธ์ด
๐ CREATE, ALTER, DROP // ์์ฑ, ๋ณ๊ฒฝ, ์ญ์
๐ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ธ์ด
โ ์ฌ์ฉ์๋ก ํ์ฌ๊ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋ ๋๊ตฌ๋ก์จ ์ฌ์ฉ์์ DBMS ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต
๐ SELECT, INSERT, DELETE, UPDATE // ๊ฒ์, ์ฝ์
, ์ญ์ , ๋ณ๊ฒฝ
๐ SELECT/DELETE ~ FROM
๐ INSERT ~ INTO
๐ UPDATE ~ SET
๐ WHERE ~ IN
๐ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ณดํธํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ธ์ด
โ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ, ๋ณด์ ๋ฐ ๊ถํ ์ ์ด, ํ๋ณต ๋ฑ์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ธ์ด
๐ COMMIT, ROLLBACK, GRANT, REVOKE // ์ ๊ท ์ ์ฉ, ์ด์ ๋ณต์, ๊ถํ ๋ถ์ฌ, ๊ถํ ์ทจ์
๐ SELECT ๋ง์ ๋ฐ๋ก ๋ถ๋ฆฌํด์ ์ฟผ๋ฆฌ๋ก ํํํ๋ ์ ํ
๐ COMMIT, ROLLBACK ๋ง์ ๋ฐ๋ก ๋ถ๋ฆฌํด์ ํํํ๋ ์ ํ
๐ ์ถ๊ฐ์ ์ธ ์ฐ๊ธฐ ์์
๊ณผ ์ ์ฅ ๊ณต๊ฐ์ ํ์ฉํ์ฌ DB ํ
์ด๋ธ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ
ใใ๐ Attribute ๋ณต์ฌํด์ ์ ๋ ฌ
ใใ๐ primary key๋ ์ด๋ฏธ ์ ๋ ฌ๋์ด ์๊ธฐ์ index ํ์ X
๐ 1. Hash Table
ใใ๐ key์ value๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
ใใ๐ ๊ฒ์ ์๊ฐ ๋ณต์ก๋ O(1), ๋งค์ฐ ๋น ๋ฆ
ใใ๐ ๋จ์ ์ ์ฐ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ํ ์์ฐจ ๊ฒ์์ด ๋ถ๊ฐ๋ฅ (๋ถ๋ฑํธ <, >)
๐ 2. B+ Tree
ใใ๐ ์์ ๋
ธ๋๊ฐ 2๊ฐ ์ด์์ธ B Tree๋ฅผ ๊ฐ์ ํ ์๋ฃ๊ตฌ์กฐ
ใใ๐ ๊ฒ์ ์๊ฐ ๋ณต์ก๋ O(logn)
ใใ๐ leaf node๋ค์ LinkedList๋ก ์ฐ๊ฒฐ๋์ด ์์ด ์์ฐจ ๊ฒ์์ด ์ฉ์ดํจ
๐ Link
๐ Link
๐ Hash Table์ ๋ชจ๋ ๊ฐ์ด ์ ๋ ฌ๋์ด ์์ง ์์ ํน์ ๊ธฐ์ค๋ณด๋ค ํฌ๊ฑฐ๋ ์์ ๊ฐ์ ์ฝ๊ฒ ์ฐพ์ ์ ์์
โ ๋ฐ๋ผ์, ๊ธฐ์ค ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ์์ ์์๋ค์ ํญ์ ํ์ํ ์ ์์ด์ผ ํ๋ DB ์ธ๋ฑ์ค๋ก B+ Tree๊ฐ ๋ ์์ฃผ์ฐ์
๐ ์๊ฐ์ ์ธ ์ฑ๋ฅ ํน์ ๊ฒ์ ๋ฐ ์ฝ์ , ์ญ์ ๋ฅผ ํฌํจํ ์ข ํฉ์ ์ธ ์ฑ๋ฅ์์ B+ Tree๊ฐ ์ฐ์
๐ ์ธ๋ฑ์ค๊ฐ ์ ์ฉ๋ ์นผ๋ผ์ INSERT, DELETE, UPDATE๊ฐ ์ํ๋๋ค๋ฉด
ใใ๐ INSERT : ์๋ก์ด ๋ฐ์ดํฐ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐ
ใใ๐ DELETE : ์ญ์ ํ๋ ๋ฐ์ดํฐ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ์์
์ ์งํ
ใใ๐ UPDATE : ๊ธฐ์กด์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์์์ ์ฒ๋ฆฌ, ๊ฐฑ์ ๋ ๋ฐ์ดํฐ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐ
โ ๏ธ ๊ธฐ์กด์ ์ธ๋ฑ์ค๋ฅผ โ์ญ์ โํ๋ ๊ฒ์ด ์๋ โ์ฌ์ฉํ์ง ์์โ์ ์ฒ๋ฆฌํจ์ ์ฃผ์
โ ๏ธ ๋ฐ๋ผ์, ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์ง๋ง, INSERT/DELETE/UPDATE๊ฐ ๋น๋ฒํ ์์ฑ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ ๊ฒฝ์ฐ ์ธ๋ฑ์ค์ ํฌ๊ธฐ๊ฐ ๋น๋ํด์ง๊ธฐ์ ์ฑ๋ฅ์ด ์คํ๋ ค ์ ํ๋๋ ์ญํจ๊ณผ๊ฐ ์ผ์ด๋ ์ ์์
๐ ๊ด๊ณํ DB์์ ์ค๋ณต์ ์ต์ํํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํ๋ ์์
๐ ์ 1 ์ ๊ทํ
ใใ๐ ํ
์ด๋ธ์ ์นผ๋ผ์ด ์์ ๊ฐ์ ๊ฐ๋๋ก ํ
์ด๋ธ์ ๋ถํด
๐ ์ 2 ์ ๊ทํ
ใใ๐ ์ 1 ์ ๊ทํ๋ฅผ ์งํํ ํ
์ด๋ธ์ ๋ํด ์์ ํจ์ ์ข
์์ ๋ง์กฑํ๋๋ก ํ
์ด๋ธ์ ๋ถํด
ใใ๐ ์์ ํจ์ ์ข
์ : ๊ธฐ๋ณธ ํค์ ๋ถ๋ถ ์งํฉ์ด ๊ฒฐ์ ์๊ฐ ๋์ด์ X
๐ ์ 3 ์ ๊ทํ
ใใ๐ ์ 2 ์ ๊ทํ๋ฅผ ์งํํ ํ
์ด๋ธ์ ๋ํด ์ดํ์ ์ข
์์ ์์ ๋๋ก ํ
์ด๋ธ์ ๋ถํด
ใใ๐ ์ดํ์ ์ข
์ : A โก๏ธ B & B โก๏ธ C์ด๋ฉด, A โก๏ธ C
๐ BCNF ์ ๊ทํ
ใใ๐ ์ 3 ์ ๊ทํ๋ฅผ ์งํํ ํ
์ด๋ธ์ ๋ํด ๋ชจ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณดํค๊ฐ ๋๋๋ก ํ
์ด๋ธ์ ๋ถํด
๐ DB ๋ณ๊ฒฝ์ ๋ฐ์ํ๋ ์ด์ ํ์๋ค์ ํด๊ฒฐํ ์ ์์
๐ ์ฆ, ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์ ์ฑ ์ต๋ํ
๐ But, ๋ฆด๋ ์ด์
๊ฐ์ ์ฐ์ฐ(JOIN)์ด ๋ง์์ ธ ์๋ต ์๊ฐ์ด ๋๋ ค์ง ์ ์์
๐ ์ ๊ทํ๋ ๋
ผ๋ฆฌ์ ์ค๊ณ ๋จ๊ณ์์ ์ํ
๐ ๋ ๊ฐ ์ด์์ ํ
์ด๋ธ์ด๋ DB๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ
โ INNER, LEFT, RIGHT, FULL Join // ๊ต์งํฉ, ์ผ์ชฝ ํ
์ด๋ธ ๊ธฐ์ค, ์ค๋ฅธ์ชฝ ํ
์ด๋ธ ๊ธฐ์ค, ํฉ์งํฉ
๐ ๋
ผ๋ฆฌ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ๋ฐ์ดํฐ ์กฐ์์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ๋ ํ์
๐ ์ฝ์
์ด์ : ํํ ์ฝ์
์ ์๋ํ์ง ์์ ์๋ฃ๊น์ง ์ฝ์
ํด์ผ๋ง ํ
์ด๋ธ์ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํ ํ์
๐ ์ญ์ ์ด์ : ํํ ์ญ์ ์ ์ ์ฉํ ๋ค๋ฅธ ์ ๋ณด๊น์ง ์ญ์ ๋์ด๋ฒ๋ฆฌ๋ ํ์
๐ ๊ฐฑ์ ์ด์ : ํํ ์์ ์ ์ค๋ณต๋ ๋ฐ์ดํฐ์ ์ผ๋ถ๋ง ์์ ๋์ด ๋ฐ์ดํฐ ๋ชจ์์ด ๋ฐ์ํ๋ ํ์
๐ ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์
๋ค์ด ํ๋์ ๋ฐ์ดํฐ๋ก ๋์์ ์ ๊ทผํ๋ ค๊ณ ํ ๋ ์ด๋ฅผ ์ ์ดํด์ฃผ๋ ๋๊ตฌ
๐ ๊ณต์ ๋ฝ(Shared Lock) : ํธ๋์ญ์
์ด ์ฝ๊ธฐ๋ฅผ ํ ๋ ์ฌ์ฉ๋๋ ๋ฝ
ใใ๐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์์๋ ์์ง๋ง ์ธ ์ ์์
๐ ๋ฐฐํ ๋ฝ(Exclusive Lock) : ํธ๋์ญ์
์ด ์ฝ๊ณ ์ฐ๊ธฐ๋ฅผ ํ ๋ ์ฌ์ฉ๋๋ ๋ฝ
ใใ๐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์์
๐ ๋ฝํน ๋จ์ : ํ๊บผ๋ฒ์ ๋ฝํนํ ์ ์๋ ๋จ์
ใใ๐ DB, ํ์ผ, ๋ ์ฝ๋ ๋ฑ์ด ๋ฝํน ๋จ์ ๋ ์ ์์
ใใ๐ ๋ฝํน ๋จ์๊ฐ ์์์ง๋ฉด ๋ณํ์ฑ ์์ค์ด ์ฌ๋ผ๊ฐ๊ณ , ์ค๋ฒํค๋๊ฐ ์ฆ๊ฐํจ
๐ ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์
๋ค์ด ์คํ์ ํ์ง ๋ชปํ๊ณ ๋ฌดํํ ๋๊ธฐํ๋ ์ํ์ ๋น ์ง ํ์
๐ ์๋ฐฉ ๊ธฐ๋ฒ
ใใ๐ ๊ฐ ํธ๋์ญ์
์ด ์คํ๋๊ธฐ ์ ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ฝํน
ใใ๐ But, ๋ฐ์ดํฐ๊ฐ ๋ง์ด ํ์ํ๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฝํนํด์ผํด์ ํธ๋์ญ์
์ ๋ณํ์ฑ์ ๋ณด์ฅํ์ง ๋ชปํจ
ใใ๐ ๋ํ, ๋ช๋ช์ ํธ๋์ญ์
์ ๊ณ์ ์ฒ๋ฆฌ๋ฅผ ๋ชปํ๊ฒ ๋๋ ๊ธฐ์ ์ํ๊ฐ ๋ฐ์ํ ์ ์์
๐ ํํผ ๊ธฐ๋ฒ
ใใ๐ Wait-Die : ๋ค๋ฅธ ํธ๋์ญ์
์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๊ณ ์์ ๋, ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ํฌ๊ธฐํ๋ ๋ฐฉ์
ใใ๐ Wound-Wait : ๋ค๋ฅธ ํธ๋์ญ์
์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๊ณ ์์ ๋, ๋นผ์๊ฑฐ๋ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐฉ์
๐ ํ์ง ๊ธฐ๋ฒ
ใใ๐ Union-Find๋ฅผ ์ด์ฉํ์ฌ, ์ฌ์ดํด์ด ์กด์ฌํ๋์ง ์ฌ๋ถ๋ก ๊ต์ฐฉ ์ํ๋ฅผ ์ ์ ์์
๐ ๋ทฐ๋ ์ค์ ๋ฐ์ดํฐ๊ฐ ํ๋์จ์ด์ ์ ์ฅ๋๋ ๊ฒ์ ์๋์ง๋ง ๋ทฐ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์
๐ ์ฆ, ํ๋์ ๊ฐ์์ ํ
์ด๋ธ
ใใ๐ ๋ณต์กํ Query๋ก ์ป์ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋จํ Query๋ก ์ป์ ์ ์์
ใใ๐ ํ ๊ฐ์ ๋ทฐ๋ก ์ฌ๋ฌ ํ
์ด๋ธ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์
๐ ๋ณด์ ๊ด๋ฆฌ, ์ฌ์ฉ์์ ํธ์, ์ํ์๋ ํฅ์, SQL ์ฑ๋ฅ ํฅ์์ ๋ชฉ์ ์ผ๋ก ํ์ฉ
๐ ์ผ์ ๋์ ์ปค๋ฅ์
๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด pool์ ์ ์ฅํ๋ ๊ธฐ๋ฒ
๐ ํ๋ก๊ทธ๋จ ์์ฒญ์ ์ปค๋ฅ์
๊ฐ์ฒด๋ฅผ ํ ๋นํด์ฃผ๊ณ , ์๋ฌด ์๋ฃ์ ๋ค์ ๋ฐํํ์ฌ pool์ ์ ์ฅ
๐ ๋ถํ์ํ๊ฒ ์ปค๋ฅ์
์ ์์ฑํ๊ณ ์ญ์ ํ๋ ์ผ์ด ์ฌ๋ผ์ ธ์ ์ด์ ๊ด๋ จ๋ ๋น์ฉ์ ์ค์ฌ ์ฑ๋ฅ ํฅ์์ ๋์์ด ๋จ
๐ But, ๋ง๋ค๊ณ ์ฌ์ฉํ์ง ์์๋ ๊ณ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น์ ํด๋์ผ๋ฏ๋ก Memory leak ๋ฐ์ํ ์ ์์
๐ Connection : DB ์ฐ๊ฒฐ ๊ฐ์ฒด
๐ ๊ฐ์ฒด-๊ด๊ณ ๋ชจ๋ธ, ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ์ ๋ํ ์ผ๋ จ์ ํํ
๐ ERM ํ๋ก์ธ์ค์ ์ฐ์ถ๋ฌผ
๐ Oracle์ ๋์ฉ๋์ ์ฑ๋ฅ์ ์ต์ ํํ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๋๊ธฐ์
์์ ๋ง์ด ์ฐ์
๐ MySQL์ ์ง์
์ฅ๋ฒฝ์ด ๋ฎ๊ณ ๋จ์ผ DB๋ก ์ ํ์ด ๋์ด ์์ด ์ผ๋ฐ์ ์ผ๋ก ์ค์๊ธฐ์
ํน์ ๊ฐ์ธ์ด ์ฐ๊ธฐ์ ์ ํฉ
๐ ์ตํฐ๋ง์ด์ ๊ฐ ์ต์ ์ ๊ณํ์ผ๋ก SQL๋ฌธ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ต์ ์ ์คํ ๊ณํ์ ์ ๊ณตํ๋ ๊ฒ
๐ ์ฌ๋ฌ ๊ฐ์ DB๋ฅผ ์ํ์ ์ธ ๊ตฌ์กฐ๋ก ๊ตฌ์ถํ๋ ๋ฐฉ์
๐ ๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ
โ 1๊ฐ์ ๋
ธ๋๊ฐ ์ฃฝ์ด๋ ๋ค๋ฅธ ๋
ธ๋๊ฐ ์ด์์์ด ์์คํ
์ ์ฅ์ ์์ด ์ด์ํ ์ ์์
โ ์ฌ๋ฌ ๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ ํ๋ ์๊ฐ์ด ํ์ํ๋ฏ๋ก ๋ฆฌํ๋ฆฌ์ผ์ด์
์ ๋นํ๋ฉด ์ฑ๋ฅ์ด ๋ฎ์
๐ ์ฌ๋ฌ ๊ฐ์ DB๋ฅผ ๊ถํ์ ๋ฐ๋ผ ์์ง์ ์ธ ๊ตฌ์กฐ๋ก ๊ตฌ์ถํ๋ ๋ฐฉ์
๐ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ
โ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋๊ธฐํ๋์ด ์ง์ฐ ์๊ฐ์ด ๊ฑฐ์ ์์
โ ๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋๊ธฐํ ๋์ง ์์ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ป์ง ๋ชปํ ์ ์์