Introduction of Database - Suja-dot/Database GitHub Wiki
Database?
- ์ปดํจํฐ ์์คํ
์ ์ ์ฅ๋ ๊ตฌ์กฐํ๋ ์ ๋ณด ๋๋ ๋ฐ์ดํฐ์ ์ฒด๊ณ์ ์ธ ์งํฉ
DBMS(DataBase Management System)?
- ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด์์ ์ฌ์ฉ์์ ์๊ตฌ์ ๋ฐ๋ผ ์ ๋ณด๋ฅผ ์์ฑํด ์ฃผ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ์ํํธ์จ์ด
SQL(Structured Query Language)?
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
์์ ์๋ฃ์ ๊ฒ์๊ณผ ๊ด๋ฆฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์์ฑ๊ณผ ์์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์ ๊ทผ ์กฐ์ ๊ด๋ฆฌ
RDBMS(Relational DBMS)?
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
- SQL์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- RDB๋ฅผ ๊ด๋ฆฌํ๋ ์์คํ
(RDB : ๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ธฐ์ด๋ก ๋๊ณ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ 2์ฐจ์ ํ
์ด๋ธ ํํ๋ก ํํํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค)
- ์ธ๋ํค(Foreign key)๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํ
์ด๋ธ๋ค๊ณผ์ ๊ด๊ณ๋ฅผ ๋ํ๋ผ ์ ์์(Join ๊ฐ๋ฅ)
์ฅ์
- ๋ช
ํํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฅ
- ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต์์ด ํ ๋ฒ๋ง ์ ์ฅํ ์ ์์
๋จ์
- ํ
์ด๋ธ๊ฐ ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์์ด ์์คํ
์ด ์ปค์ง ๊ฒฝ์ฐ JOIN๋ฌธ์ด ๋ง์ ๋ณต์กํ ์ฟผ๋ฆฌ๊ฐ ๋ง๋ค์ด์ง ์ ์์
- ์ฑ๋ฅ ํฅ์์ ์ํด์๋ ์๋ฒ์ ์ฑ๋ฅ์ ํฅ์ ์์ผ์ผํ๋ Scale-up๋ง์ ์ง์(๋น์ฉ ์ฆ๊ฐ)
- ์คํค๋ง๋ก ์ธํด ๋ฐ์ดํฐ๊ฐ ์ ์ฐํ์ง ๋ชปํ๋ฉฐ, ์คํค๋ง๊ฐ ๋ณ๊ฒฝ ๋ ๊ฒฝ์ฐ ๋ฒ๊ฑฐ๋กญ๊ณ ์ด๋ ค์
NoSQL(Not only SQL)?
- RDB ํํ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ๋ค๋ฅธ ํํ์ ๋ฐ์ดํฐ ์ ์ฅ ๊ธฐ์
- ํ
์ด๋ธ ๊ฐ ๊ด๊ณ๋ฅผ ์ ์ํ์ง ์์(Join ๋ถ๊ฐ๋ฅ)
- ๋น
๋ฐ์ดํฐ์ ๋ฑ์ฅ์ผ๋ก ์ธํด ๋ฐ์ดํฐ์ ํธ๋ํฝ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํจ์ ๋ฐ๋ผ RDBMS์ ๋จ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ํฌ๊ธฐํ๋ ๋น์ฉ์ ๊ณ ๋ คํ์ฌ ์ฌ๋ฌ ๋์ ๋ฐ์ดํฐ์ ๋ถ์ฐํ์ฌ ์ ์ฅํ๋ Scale-Out์ ๋ชฉํ๋ก ๋ฑ์ฅ
์ฅ์
- ์คํค๋ง๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ์ฐํ๊ณ ์์ ๋ก์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์์
- ์ธ์ ๋ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ ํ๊ณ ์๋ก์ด ํ๋๋ฅผ ์ถ๊ฐํ ์ ์์
- ๋ฐ์ดํฐ ๋ถ์ฐ์ด ์ฉ์ดํ๋ฉฐ ์ฑ๋ฅ ํฅ์์ ์ํ Scale-up ๋ฟ๋ง ์๋ Scale-out๋ ๊ฐ๋ฅ
๋จ์
- ๋ฐ์ดํฐ ์ค๋ณต์ด ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์์ ์ ๋ชจ๋ ์ปฌ๋ ์
์์ ์ํํด์ผ ํจ
- ์คํค๋ง๊ฐ ์กด์ฌํ์ง ์๊ธฐ์ ๋ช
ํํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฅํ์ง ์์ผ๋ฉฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒฐ์ ์ด ์ด๋ ค์ธ ์ ์์
1. Key-Value Database
- Data๊ฐ Key์ Value ์์ผ๋ก ์ ์ฅ๋๋ฉฐ Key๋ Value์ ์ ๊ทผํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ
- ์ด๋ฏธ์ง๋ ๋น๋์ค๋ ๊ฐ๋ฅ
- ๊ฐ๋จํ API๋ฅผ ์ ๊ณตํจ์ผ๋ก ์ง์ ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฆ
- e.g. Redis, Riak, Amazon Dynamo DB ๋ฑ
2. Document Database
- Key์ Document ํํ๋ก ์ ์ฅ
- Key-Value ๋ชจ๋ธ๊ณผ์ ์ฐจ์ด์ ์ Value๊ฐ ๊ณ์ธต์ ์ธ ํํ์ธ Document๋ก ์ ์ฅ๋จ
- ๊ฐ์ฒด์งํฅ์์์ ๊ฐ์ฒด์ ์ ์ฌ
- ๊ฒ์์ ์ต์ ํ๋์ด์์
- e.g. MongoDB, CouthDB ๋ฑ
3. Wide Column Database
- Column-family Model ๊ธฐ๋ฐ์ Database
- Key์์ field๋ฅผ ๊ฒฐ์ ํจ
- Key๋ Row(ํค ๊ฐ)๊ณผ Column-family, Column-name์ ๊ฐ์ง๋ฉฐ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ Column-family ์์ ์ํด์๊ณ ๊ฐ์์ Column-name์ ๊ฐ์ง
- ์ง์๋ Row, Column-family, Column-name์ ํตํด ์ํ
- e.g. HBase, Hypertable ๋ฑ
4. Graph Database
- ๋ฐ์ดํฐ๋ฅผ Node์ Edge, Property์ ํจ๊ป ๊ทธ๋ํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ณ ์ ์ฅํ๋ Database
- ํ์ด์ค๋ถ์ด๋ ํธ์ํฐ ๊ฐ์ ์์
๋คํธ์ํฌ์์ ์ ํฉ
- ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ฒํด์ฃผ๋ ์ถ์ฒ์์ง์ด๋ ํจํด ์ธ์ ๋ฑ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ก๋ ์ ํฉ
- e.g. Neo4J