๐ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๋ฐ์ ์ธ ๋ด์ฉ์ ๋ํด ๊ณต๋ถํ๊ณ ์ดํดํ๊ณ ์ ํ๋ค.
๊ตฌ์กฐํ๋ ์ ๋ณด ๋๋ ๋ฐ์ดํฐ์ ์กฐ์งํ๋ ๋ชจ์์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ์ปดํจํฐ ์์คํ ์ ์ ์์ ์ผ๋ก ์ ์ฅํ๊ณ ํ์์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์์ฑ, ๋ณ๊ฒฝ ์ญ์ ํ์ฌ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ํ์ด๋ฐ์ ์ฌ์ฉํ ์ ์๋ ๋ฐ์ดํฐ๋ค์ ์งํฉ์ฒด์ด๋ค.
๊ตฌ์กฐํ๋ ์ ๋ณด ํน์ ๋ฐ์ดํฐ๋ผ๋ ์๋ฏธ๋ ๋ค์ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์ฝํ ์ธ ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ์กฐ์งํํ์ฌ ๊ฐ๊ณต๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธ๋ผ ์นญํ๋ค.
๋น๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐจ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ โ ํน์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ํด ํน์ ๋ชฉ์ ์ ๋ง์ถ์ด ๊ตฌ์ถ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก์ ํ๊ณผ ์ด๋ก ์ด๋ฃจ์ด์ง ํ ์ด๋ธ ํ์์ ์คํค๋ง๋ฅผ ์ฌ์ฉํ์ง ์์. โ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐ๋์ง ์์ ๊ฐ๋ณํ์ผ๋ก ์ ์ฅ๋๋ฉฐ, ๋ฌธ์ ๋๋ ๋ฆฌ์น ๋ฏธ๋์ด ํ์ผ๊ณผ ๊ฐ์ ๋ณต์กํ๊ณ ๊ตฌ์กฐํ๋์ง ์์ ๋ฐ์ดํฐ ์ ํ์ ์ฌ์ฉํ ์ ์๋ค.
โ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌ๋ฆฌ ์ ์ฐํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ฐ๋ฅด๋ฏ๋ก ์์ฃผ ๋ณ๊ฒฝ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ค์ํ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ๋ค๊ณ ํ๋ค.
No-SQL DB ๋ํ์ ์ธ ์ธ๊ฐ์ง
Key-value : key์ value๋ก ์ด๋ฃจ์ด์ง ๊ฐ์ฅ ๋จ์ํ ๊ตฌ์กฐ๋ก ๋จ์ํ ๋งํผ ์๋๊ฐ
๊ต์ฅํ ๋น ๋ฅธ ์ฅ์ ์ด ์์ผ๋ฉฐ ์บ์ฑ,์ธ์
๊ด๋ฆฌ ๋ฆฌ๋๋ณด๋, ์ค์๊ฐ ๋ถ์ ๋ฑ์ ์ฌ์ฉ๋จ.
๋ํ์ ์ผ๋ก redis, Amazon DynamoDB๊ฐ ์์.
Document : key์ value๊ฐ ์๋ key์ json ํํ์ document๋ก ์ด๋ฃจ์ด์ ธ์๊ณ
json๊ณผ ํํ๊ฐ ๋์ผํ์ฌ ์คํค๋ง ๋ณ๋์ ์ ์ฐํ๊ฒ ๋์์ด ๊ฐ๋ฅํจ.
๋ํ์ ์ผ๋ก mongoDB, Amazon DocumentDB, Firestore๊ฐ ์์.
Graph : node์ ์์ฑ๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ์์
๋คํธ์ํฌ๋ ์ถ์ฒ์์ง์ ์ํ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฃผ๋ก ์ฌ์ฉ๋จ.
๋ํ์ ์ผ๋ก neo4j, Amazon Neptune, Giraph๊ฐ ์์.
ํ๋ ์ด์์ ์ด๊ณผ ํ์ผ๋ก ์ด๋ฃจ์ด์ง ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ณ , ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ด๋ป๊ฒ ๊ด๋ จ๋์ด ์๋์ง ์ฝ๊ฒ ํ์ ํ๊ณ ์ดํดํ ์ ์๋๋ก ์ฌ์ ์ ์๋ ๊ด๊ณ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํ๋ ์ ๋ณด ๋ชจ์์ด๋ค.
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋
๋ฐ์ดํฐ ๊ณต์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์ฌ์ฉ์์๊ฒ ๋์์ ๊ณต์ ํด๋ ์์ ์ฑ๊ณผ ์ ํ์ฑ์ ๊ฐ์ถ๊ณ ๋ฐ์ดํฐ ์ค๋ณต์ ์ต์ํํ์ฌ ๊ด๋ฆฌํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ๋ฐ์ดํฐ๋ ์ฌ๋ฌ ๋ฐ์ดํฐ๊ฐ ์ฐ์ฌํด์์ผ๋ฉด ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ธ ๋ฟ๋๋ฌ ๋ฌด๊ฒฐ์ฑ ์ ์ง๋ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ํตํด ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ณ ๋ณด์ ์ ์ง์ ๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ ๋ ์๊ตฌ์ฌํญ ๋ถ์ โ ๊ฐ๋ ์ ๋ชจ๋ธ๋ง(ERD)๊ณผ ๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง์ ๊ฑฐ์ณ ๋ฌผ๋ฆฌ์ ๋ชจ๋ธ๋ง์ผ๋ก ํ ์ด๋ธ์ ํ์ฑํ๋ค.
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด๋ก์ ๋ง์น ์์ ์ํธ์ฒ๋ผ ํ(row)๊ณผ ์ด(column)๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ์ ์งํฉ ๋จ์์ด๋ฉฐ, ์ด๋ ํน์ ํ ์ฃผ์ ์ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ง๋ ์ผ์ข ์ ์งํฉ์ด๋ค.
> ํ์ ๋ฆด๋ ์ด์
์ด ๋ํ๋ด๋ ์ํฐํฐ์ ํน์ ์ธ์คํด์ค์ ๊ดํ ๊ฐ๋ค์ ๋ชจ์์ด๋ค.
> ํ์ผ์์คํ
์์๋ ๋ ์ฝ๋(Record), ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์์๋ ํํ(tuple)์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
> ์นด๋ค๋๋ฆฌํฐ๋ ํ
์ด๋ธ ๋ด์ ์๋ ํํ์ ์๋ฅผ ๋ปํ๋ค.
์ํฐํฐ๋ : ๊ฐ๋ /๋ ผ๋ฆฌ ๋ชจ๋ธ๋ง์์ ์ถ์ถํ ๊ฐ์ฒด๋ฅผ ์ํฐํฐ๋ผ ๋ถ๋ฅด๊ณ ,๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง ๋จ๊ณ์์ ํน์ DBMS๋ก ๊ตฌํ๋๋ ๋จ๊ณ๋ถํฐ ์ด ์ํฐํฐ๋ฅผ ํ ์ด๋ธ์ด๋ผ ๋ถ๋ฅธ๋ค๊ณ ํ๋ค.
ํ์ง๋ง ์ํฐํฐ๋ ๊ตฌํ๋จ๊ณ์์ ํ ์ด๋ธ์ด ๋ ์๋์๊ณ ์๋ ์ ๋์์.
๋ฆด๋ ์ด์ ์ ๊ฐ๋ ๋จ๊ณ์์ ์ํฐํฐ์ ์ํฐํฐ๊ฐ์ ํ์ฑ๋๋ ์ฐ๊ด๊ด๊ณ๋ฅผ ๋ฆด๋ ์ด์ R์ด๋ผ๊ณ ํ๋ค. ๋ฆด๋ ์ด์ ์คํค๋ง๋ ์์ฑ๋ค์ ์งํฉ(ํ ์ด๋ธ ๋งจ ์ฒ์์ ํ ์งํฉ)์ ์๋ฏธํ๋ค.
> ์ด์ ๋ฐ์ดํฐ์ ์์ฑ์ ๋ํ๋ด๋ฉฐ, ์ด์ด๋ฆ=์ด ๊ฐ์ ์์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค๊ณ ๋ณผ ์ ์๋ค.
> ๊ฐ์ ์ด์ ์๋ ๋ฐ์ดํฐ๋ค์ ์์ฑ์ ๋์ผ์ฑ์ ์ด๋ฃจ๊ณ ์์ด์ผ ํ๋ค.
๊ฐ๋ /๋ ผ๋ฆฌ ๋ชจ๋ธ๋ง์์ ์ถ์ถํ ๊ฐ์ฒด ์ํฐํฐ์ ํฌํจ๋ ์์ฑ์ ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง ๋จ๊ณ์์ ํ ์ด๋ธ์ ์ปฌ๋ผ์ ์ด๋ฆ์ด ๋๋ค.
๋๋ฉ์ธ์ ์ํฐํฐ์ ์์ฑ๋ค์ ๊ฐ๋ค์ ์งํฉ์ด๋ฉฐ, ํ ์ด๋ธ์ ์ปฌ๋ผ ๊ฐ์ ๊ตฌ์ฑํ ๋ ๊ฐ์ ๋ฒ์, ๋ฐ์ดํฐ ํ์ , ์ ์ฝ์ฌํญ ๋ฑ์ ์ค์ ํ๋๋ฐ, ์ด ๋ฒ์ ๊ฐ์ ์ค์ ์ ๋๋ฉ์ธ์ด๋ผ ํจ.
โ ๋ฐ์ดํฐ ํ์ค ์ ์ >> ๋๋ฉ์ธ(domain) : ์์ฑ์ ์ ์๋ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ ๊ฐ์ ๋ฒ์
ํ์ผ ์์คํ | ๊ฐ๋ /๋ ผ๋ฆฌ | ๋ฌผ๋ฆฌ |
---|---|---|
ํ์ผ | ์ํฐํฐ(Entity) | ํ ์ด๋ธ(Table) |
ํ๋ | ์ดํธ๋ฆฌ๋ทฐํธ(Attribute) | ์ปฌ๋ผ(Column) |
๋ ์ฝ๋ | ํํ(Tuple) | ๋ก์ฐ(Row) |
ํค | ์ ์ผ๊ฐ(Identifier) | ๊ธฐ๋ณธํค(Primary Key),Unique |
๋๋ฉ์ธ(domain) |
-
ํ์ผ์์คํ ์ DB๊ฐ ๊ฐ๋ฐ๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ์๋ ์์คํ ์ ๋ปํ๋ค๊ณ ํจ.
-
๊ฐ๋ ์ ๋ชจ๋ธ๋ง์ ์ฌ์ฉ์ ์๊ตฌ์ฌํญ์ ๋ถ์ํ์ฌ ๋ถ์ํ ๋ด์ฉ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ณ ์ค๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ ์ ์ผ๋ก ์ผ๋ฐํ์์ผ ๋ฐ์ดํฐ ๊ตฌ์กฐ, ํ์ , ์์ฑ, ๊ด๊ณ ๋ฑ DB ๊ตฌ์ถ์ ํ์ํ ์ฌํญ๋ค์ ๋์ถํ๋ ๊ณผ์
-
๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง์ ๊ฐ๋ ์ ๋ชจ๋ธ๋ง์์ ๋์ถ๋ ๋ด์ฉ์ ํ ๋๋ก ๋ฐ์ดํฐ ์ ์ ์ธ์ด๋ก ๋ ๊ฐ๋ ์คํค๋ง๋ฅผ ์์ฑํ๋ ๊ณผ์
์คํค๋ง๋? ๊ตฌ์กฐ๋ ์กฐ๊ฑด์ ๊ด๋ จํ ์ ๋ฐ์ ์ธ ๋ด์ฉ๋ค์ ๋ด๊ณ ์๋ ๋ฉํ๋ฐ์ดํฐ์ ์งํฉ ๋๋ ์๋ฃ๊ตฌ์กฐ
-
๋ฌผ๋ฆฌ์ ๋ชจ๋ธ๋ง์ ๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง์ ํตํด ์์ฑ๋ ๊ฐ๋ ์คํค๋ง๋ฅผ ์ค์ ๋ก ์ ์ฅํ ์ ์๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌํํ๋ ๊ณผ์
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ์ธ์ด๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋จ.
- DDL : data definition Language : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ฐ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ์ธ์ด
์ ๋ฐ์ ์ธ ๊ตฌ์กฐ : table, view, index, procedure- CREATE
- ALTER
- RENAME
- DROP
- TRUNCATE
- COMMENT
- DML : data manipulation Language : DDL์ ์ํด ์์ฑ๋ ์คํค๋ง ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ์ธ์ด
- SELECT
- INSERT
- UPDATE
- DELETE
- MERGE
- CALL
- EXPLAIN PLAN
- LOCK TABLE
- DCL : data control Language : ๋ฐ์ดํฐ์ ๋ํ ์์ธ์ค ๊ถํ์ ์ ์ดํ๋ ์ธ์ด
- GRANT
- REVOKE
- TCL : Transaction control Language : ํธ๋์ ์
์ ์ ์ดํ๋ ์ธ์ด
- COMMIT
- ROLLBACK
- SAVEPOINT
- TRANSACTRION
ํธ๋์ ์ ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํํ๋ ์ํ ์์ ์ ์ต์๋จ์
Join์ DB ๊ตฌ์กฐ ๋ด์ ์ฌ๋ฌ ํ
์ด๋ธ๋ค์ ์ฐ๊ฒฐํ์ฌ ํ๋์ ํ
์ด๋ธ๋ก ํํํ๋ ๊ฒ์ ์๋ฏธํจ.
์ด๋ง์ Join์ ํ๊ธฐ ์ํด์๋ ๋ ์ด์์ ํ
์ด๋ธ์ ์ฐ๊ฒฐํด์ผ ํจ.
Join์ ํตํด ๋์จ ํ
์ด๋ธ์ ํ
์ด๋ธ๋ก์ ์ ์ฅํ๊ฑฐ๋ ๊ทธ ์์ฒด๋ก ์ด์ฉํ ์ ๋ ์์.
์๋ณ์์ ์ฐธ์กฐ์
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋ฏธ์๋ ๋ฐ์ดํฐ ์งํฉ์ผ๋ก ํ ์ด๋ธ์ ๊ตฌ์ฑํ๊ณ ์ ๊ทํ๋ฅผ ํตํด ์๋ก ๊ด๊ณ์๋ ๋ฐ์ดํฐ ์งํฉ์ ์ฌ๋ฌ ํ ์ด๋ธ๋ก ๋๋์ด ์ ์ฅํ๋ฏ๋ก ์ ์ฅ๊ณต๊ฐ์ ํจ์จ์ฑ๊ณผ ํ์ฅ์ฑ์ด ํฅ์๋จ.
๊ฐ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ฒ์์ ํ๊ธฐ ์ํด์๋ Join์ด ํ์ํ๋ค.
Inner Join : ๊ต์งํฉ
์ฌ๋ฌ ์ดํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉ๋๋ ๊ฐ์ฅ ํํ ๊ฒฐํฉ ๋ฐฉ์์ผ๋ก ๊ณตํต์ ์ธ ๋ถ๋ถ๋ง Select๊ฐ ๋จ.
์ฐธ์กฐํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์นํ๋ ํ๋ง ์กฐ์ธํ๋ฉฐ ๊ด๊ณ๊ฐ ์๋ ๋ ์ฝ๋๋ง ํฉ์น๋ ๊ฒ์ INNER JOIN์ด๋ผ๊ณ ํจ. ๊ด๊ณ๊ฐ ์๋ ๋ ์ฝ๋๋ค์ ์ ๊ฑฐํ๊ณ ์์ํ ์ด๋ธ์ด ํ์๋กํ๋ ๋งํฌ ๋ถ๋ชจํ ์ด๋ธ์ ์ปฌ๋ผ ์๋ฅผ ๋ณต์ฌํด์ ๋ถ์.
--๋ช
์์ inner ์กฐ์ธํํ(explicit)
SELECT * FROM A INNER JOIN B ON "์กฐ๊ฑด๋ฌธ";
--์์ฐํฐ ์กฐ์ธํํ
SELECT * FROM A LEFT/RIGHT/FULL OUTER JOIN B ON "์กฐ๊ฑด๋ฌธ";
SELECT * FROM A LEFT/RIGHT/FULL JOIN B ON "์กฐ๊ฑด๋ฌธ";
--์์์ ์กฐ์ธํํ(implicit)
SELECT * FROM A,B WHERE "์กฐ๊ฑด๋ฌธ";
Outer Join
๊ด๊ณ๊ฐ ์๋ ๋ ์ฝ๋๋ผ๋ ๊ธฐ์ค์ ๋ง๋ ๋ฐฉํฅ์ ๋ ์ฝ๋๋ ์ถ๋ ฅ๋๋ ๋์ ์กฐ๊ฑด์ด ์๋ง์ผ๋ฉด ๋๋จธ์ง ํ๋๋ NULL๊ฐ์ผ๋ก ์ฒ๋ฆฌ
- Left Join ์ผ์ชฝ์ ์๋ ์์ฐํฐ๋ฅผ ํฌํจ
- Right Join ์ค๋ฅธ์ชฝ์ ์๋ ์์ฐํฐ๋ฅผ ํฌํจ
- full Join ์ผ์ชฝ ์ค๋ฅธ์ชฝ์ ์๋ ์์ฐํฐ๋ฅผ ์ ๋ถ ํฌํจ
์ผ์ชฝ ์ค๋ฅธ์ชฝ ๊ธฐ์ค์ ์ฟผ๋ฆฌ๋ฌธ ์์ฑ ์ A OUTER JOIN B ์์ OUTER JOIN์ ๊ธฐ์ค์ผ๋ก ๋๋.