Database
- SQL์ Structured Query Language์ ์ฝ์
- SQL์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
(RDBMS, relational database management system)์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ํน์ ๋ชฉ์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- ํํ ์๊ธฐํ๋ ๊ด๊ณํ DB๋ผ๋ ๋จ์ด๋ RDBMS(์๋ฅผ ๋ค์ด, MySQL)์ธ ๊ฒ์ด๊ณ SQL์ RDBMS๋ฅผ ์ค๊ณํ๋๋ฐ ์ฌ์ฉ๋ ์ธ์ด
SQL (๊ด๊ณํ DB)
- SQL์ ์ฌ์ฉํ์ฌ RDBMS์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์์ , ์ญ์ ๋ฐ ๊ฒ์ ๊ฐ๋ฅ
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํต์ฌ์ ์ธ ๋ ๊ฐ์ง ํน์ง
- ๋ฐ์ดํฐ๋ ์ ํด์ง ๋ฐ์ดํฐ ์คํค๋ง์ ๋ฐ๋ผ ํ
์ด๋ธ์ ์ ์ฅ
- ๋ฐ์ดํฐ๋ ๊ด๊ณ๋ฅผ ํตํด ์ฌ๋ฌ ํ
์ด๋ธ์ ๋ถ์ฐ
- ๋ฐ์ดํฐ๋ ํ
์ด๋ธ์ ๋ ์ฝ๋๋ก ์ ์ฅ๋๋๋ฐ, ๊ฐ ํ
์ด๋ธ๋ง๋ค ๋ช
ํํ๊ฒ ์ ์๋ ๊ตฌ์กฐ๊ฐ ์์ผ๋ฉฐ ํด๋น ๊ตฌ์กฐ๋ ํ๋์ ์ด๋ฆ๊ณผ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ์ ์
- ๋ฐ๋ผ์ ์คํค๋ง๋ฅผ ์ค์ํ์ง ์์ ๋ ์ฝ๋๋ ํ
์ด๋ธ์ ์ถ๊ฐํ ์ ์์
- ์ฆ, ์คํค๋ง๋ฅผ ์์ ํ์ง ์๋ ์ด์์ ์ ํด์ง ๊ตฌ์กฐ์ ๋ง๋ ๋ ์ฝ๋๋ง ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํ ๊ฒ์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง ์ค ํ๋
- ๋ฐ์ดํฐ์ ์ค๋ณต์ ํผํ๊ธฐ ์ํด '๊ด๊ณ'๋ฅผ ์ด์ฉ
- ํ๋์ ํ
์ด๋ธ์์ ์ค๋ณต ์์ด ํ๋์ ๋ฐ์ดํฐ๋ง์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํ
์ด๋ธ์์ ๋ถ์ ํํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ํ์ด ์์ด์ง๋ ์ฅ์ ์กด์ฌ
SQL ์ฅ์
- ๋ช
ํํ๊ฒ ์ ์๋ ์คํค๋ง, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ
- ๊ด๊ณ๋ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต์์ด ํ๋ฒ๋ง ์ ์ฅ
SQL ๋จ์
- ๋ ์ ์ฐํจ
- ๋ฐ์ดํฐ ์คํค๋ง๋ฅผ ์ฌ์ ์ ๊ณํํ๊ณ ์๋ ค์ผ ํจ (๋์ค์ ์์ ํ๊ธฐ ํ๋ฌ)
- ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์์ด์ ์กฐ์ธ๋ฌธ์ด ๋ง์ ๋ณต์กํ ์ฟผ๋ฆฌ๊ฐ ๋ง๋ค์ด์ง ์ ์์
- ๋์ฒด๋ก ์์ง์ ํ์ฅ๋ง ๊ฐ๋ฅํจ
Tip! ์ถ๊ฐ ๋ด์ฉ
MySQL์ด๋?
- MySQL์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
(RDBMS: Relational DBMS)
- MySQL์ ์คํ ์์ค์ด๋ฉฐ, ๋ค์ค ์ฌ์ฉ์์ ๋ค์ค ์ค๋ ๋๋ฅผ ์ง์
- ๋ํ, C์ธ์ด, C++, JAVA, PHP ๋ฑ ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ํ ๋ค์ํ API๋ฅผ ์ ๊ณตํ๊ณ ์์
- MySQL์ ์ ๋์ค, ๋ฆฌ๋
์ค, ์๋์ฐ ๋ฑ ๋ค์ํ ์ด์์ฒด์ ์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ํนํ PHP์ ํจ๊ป ์น ๊ฐ๋ฐ์ ์์ฃผ ์ฌ์ฉ๋จ
- MySQL์ ์คํ ์์ค ๋ผ์ด์ผ์ค๋ฅผ ๋ฐ๋ฅด๊ธฐ๋ ํ์ง๋ง, ์์
์ ์ผ๋ก ์ฌ์ฉํ ๋๋ ์์
์ฉ ๋ผ์ด์ผ์ค๋ฅผ ๊ตฌ์
ํด์ผ ํจ
MySQL์ ์ฅ์
- ์คํ ์์ค ๋ผ์ด์ผ์ค๋ฅผ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์
- ๋ค์ํ ์ด์์ฒด์ ์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ง์
- ํฌ๊ธฐ๊ฐ ํฐ ๋ฐ์ดํฐ ์งํฉ๋ ์์ฃผ ๋น ๋ฅด๊ณ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์
- ๋๋ฆฌ ์๋ ค์ง ํ์ค SQL ํ์์ ์ฌ์ฉ
- MySQL ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์์ ์ฉ๋์ ๋ง๊ฒ ์์ ํ ์ ์์
NoSQL
- ๋ง๊ทธ๋๋ก ๊ด๊ณํ DB์ ๋ฐ๋
- ์คํค๋ง๋ ์๊ณ , ๊ด๊ณ๋ ์์
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข
๋ฅ
- Document Store
- ๋ฌธ์ ๋ชจ๋ธ NoSQL : MongoDB
- ๋ฌธ์ ๋ชจ๋ธ NoSQL ์ ํ๋์ ํค์ ๊ตฌ์กฐํ๋ ๋ฌธ์๋ฅผ ์ ์ฅํ๊ณ ์กฐํ
- ๋ฌธ์ ๋ชจ๋ธ์์ ์๋ฏธํ๋ ๊ตฌ์กฐํ๋ ๋ฌธ์๋, ๊ฐ์ฅ ๋ํ์ ์ผ๋ก JSON์ด ์์ผ๋ฉฐ XML๊ณผ ๊ฐ์ด ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ ๋ฌธ์๋ฅผ ๋งํจ
- ์ ์ฅ๋ ๋ฌธ์๋ฅผ ์ปฌ๋ ์
์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์ ์ฅ๊ณผ ๋์์ ๋ฌธ์ ID์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์์ฑ (๋ฌธ์ ๋ชจ๋ธ์ ํค๋ ๋ฌธ์์ ๋ํ ID๋ก ํํ)
- ํค-๊ฐ ๋ฐ ์ปฌ๋ผ ๋ชจ๋ธ์ ๋นํ์ฌ ๋ง์ ์ข
๋ฅ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, RBMS์ ์ ์ฌํ ๊ฒ์์กฐ๊ฑด์ ํฌํจํ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ ์ด๋ฌํ ํน์ง ๋๋ถ์ ๋ฌธ์๋ชจ๋ธ NoSQL์ ๋ง์ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์
- ๋๋ถ๋ถ์ ๋ฌธ์ ๋ชจ๋ธ NoSQL์ Bํธ๋ฆฌ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ 2์ฐจ ์ธ๋ฑ์ค๋ฅผ ์์ฑ
- ๊ทธ๋ฌ๋ Bํธ๋ฆฌ๋ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ๊ฑฐ๋ ์ญ์ ํ ๋ ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋๋๋ฐ, ์ด๋ฌํ ์ด์ ๋ก Bํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฌธ์ ๋ชจ๋ธ NoSQL์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ๋น์จ์ 7:3 ์ด์์ผ๋ก ์ ์งํ ๋ ๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์
- ๊ฒฐ๊ตญ ์ฌ์ฉํ๋ ๋ฌธ์ ๋ชจ๋ธ NoSQL์ ํน์ง์ ํ์
ํ๊ณ ์ฌ์ฉํด์ผ ํจ
- Bํธ๋ฆฌ์ ํน์ฑ ๋๋ฌธ์ ํ ๋ฒ ์์ฑ๋๋ฉด ์์ฃผ ๋ณํ์ง ์๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์กฐํํ๋๋ฐ ์ ํฉํ๋ฉฐ, ๋ก๊ทธ์ ์ฅ, ํ์๋ผ์ธ ์ ์ฅ, ์ฑํ
๋ก๊ทธ ๊ธฐ๋ก์ด๋ ์กฐํ์ ์ ํฉ
- Key-Value Store
- ํค-๊ฐ ๋ชจ๋ธ NoSQL : Redis, Riak ๋ฑ
- ํค ๊ฐ ๋ชจ๋ธ์ ๊ฐ์ฅ ํฐ ํน์ง์ ๋จ์ํ ์ ์ฅ๊ตฌ์กฐ๋ฅผ ๊ฐ์ผ๋ฉฐ, ๋ณต์กํ ์กฐํ ์ฐ์ฐ์ ์ง์ํ์ง ์์
- ์ ์ฅ๋๋ ๊ฐ์ ๋จ์ง ์๋ฏธ ์๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ก ์ฒ๋ฆฌ
- ๊ณ ์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ์ ์ต์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
- ํค-๊ฐ ๋ชจ๋ธ์ ํน์ง์ ๊ณ ๋ คํด ๋ณผ๋, ๋จ์ผ ์ฐ์ฐ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๋๋ฐ ์ ํฉ
- ํ๋์ ์๋น์ค ์์ฒญ์ ๋จ์ผ ์ฐ์ฐ ์ฒ๋ฆฌ๋ก ๋์ํ ์ ์๋ ์์คํ
์ ์ ํฉ
NoSQL ์ฅ์
- ์คํค๋ง๊ฐ ์์ด์ ์ ์ฐ
- ์ธ์ ๋ ์ง ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ ํ๊ณ ์๋ก์ด ํ๋ ์ถ๊ฐ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ํ์๋ก ํ๋ ํ์์ผ๋ก ์ ์ฅ๋์ด ๋ฐ์ดํฐ ์ฝ์ด์ค๋ ์๋ ๋นจ๋ผ์ง
- ์์ง ๋ฐ ์ํ ํ์ฅ์ด ๊ฐ๋ฅํด์ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฐ์์ํค๋ ๋ชจ๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์์ฒญ ์ฒ๋ฆฌ ๊ฐ๋ฅ
NoSQL ๋จ์
- ์ ์ฐ์ฑ์ผ๋ก ์ธํด ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒฐ์ ์ ๋ฏธ๋ฃจ๊ฒ ๋ ์ ์์
- ๋ฐ์ดํฐ ์ค๋ณต์ ๊ณ์ ์
๋ฐ์ดํธ ํด์ผ ํจ
- ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ์ปฌ๋ ์
์ ์ค๋ณต๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ ์ ๋ชจ๋ ์ปฌ๋ ์
์์ ์ํํด์ผ ํจ (SQL์์๋ ์ค๋ณต ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก ํ๋ฒ๋ง ์ํ์ด ๊ฐ๋ฅ)
SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ด ๋ ์ข์ ๋
- ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ
- NoSQL์์๋ ์ฌ๋ฌ ์ปฌ๋ ์
์ ๋ชจ๋ ์์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์
- ๋ณ๊ฒฝ๋ ์ฌ์ง๊ฐ ์๊ณ , ๋ช
ํํ ์คํค๋ง๊ฐ ์ฌ์ฉ์์ ๋ฐ์ดํฐ์๊ฒ ์ค์ํ ๊ฒฝ์ฐ
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ด ๋ ์ข์ ๋
- ์ ํํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ ์๊ฑฐ๋ ๋ณ๊ฒฝ/ํ์ฅ ๋ ์ ์๋ ๊ฒฝ์ฐ
- ์ฝ๊ธฐ๋ฅผ ์์ฃผ ํ์ง๋ง, ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์์ฃผ ์๋ ๊ฒฝ์ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํ์ผ๋ก ํ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ (๋ง๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค์ผ ํ๋ ๊ฒฝ์ฐ)
โ๏ธ But, ํ๋์ ์ ์ ๋ฐฉ๋ฒ์ด์ง ์์ ํ ์ ๋ต์ด ์ ํด์ ธ ์๋ ๊ฒ์ ์๋
- SQL์ ์ ํํด์ ๋ณต์กํ JOIN๋ฌธ์ ๋ง๋ค์ง ์๋๋ก ์ค๊ณํ์ฌ ๋จ์ ์ ์์จ ์ ์์
- NoSQL์ ์ ํํด์ ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ์ผ๋ก ์ค๊ณํด์ ๋จ์ ์ ์์จ ์๋ ์์