RDBMS
NOSQL
Database: ์ฌ๋ฌ ์ฌ๋์ ์ํด ๊ณต์ ๋์ด ์ฌ์ฉ๋ ๋ชฉ์ ์ผ๋ก ํตํฉํ์ฌ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ ์งํฉ
DBMS(DataBase Management System): ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด์์, ์ฌ์ฉ์์ ์์ฒญ์ ํด์ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ก ํด์ฃผ๋
SQL(Structured Query Language): ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
์คํค๋ง: ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด(Entity), ์์ฑ(Attribute), ๊ด๊ณ(Relationship) ๋ฐ ์ ์ฝ์กฐ๊ฑด ๋ฑ์ ๊ดํด ์ ๋ฐ์ ์ผ๋ก ์ ์ํ ๋ฉํ ๋ฐ์ดํฐ์ ์งํฉ
R
์ Relational
์ ์ฝ์์ด๋ค.
์ฆ **๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
`์ด๋ผ๋ ๋ป ์ด๋ค.
RDBMS
์์๋ ์์ ์ ํ์๊ณผ ์ ์ฌํ 2์ฐจ์ ํ ์ด๋ธ ํ์์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ์์ฑ(Attribute)๊ณผ ๊ฐ(Value)
์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๊ณ ์ ์ฅ, ๊ด๋ฆฌํ๋ค.- ๊ฐ ์ด์ ํ๋์ ์์ฑ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
- ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ํด ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ตฌ์กฐํํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- ์ด๋ฌํ ๊ด๊ณ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด
์ธ๋ ํค(foreign key)
๋ผ๋ ๊ฒ์ ์ฌ์ฉํ๋ค. ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ์์์ธ๋ ํค
๋ฅผ ์ด์ฉํ ํ ์ด๋ธ ๊ฐjoin
์ด ๊ฐ๋ฅํ๋ค.
- ์ด๋ฌํ ๊ด๊ณ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด
- ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ค.
- ์ด๋ฌํ ๋ฐ์ดํฐ๋ค์ ํ์ฉํ๊ธฐ ์ํด์๋ ์ฌ์ฉ์๋
SQL
์ด๋ผ๋ ์ธ์ด๋ฅผ ํ์ฉํ๋ค.
ํ ์ด๋ธ ์์
ํ๋ฒ(PrimaryKey) | ์ด๋ฆ | ๋ฒํธ |
---|---|---|
11111 | ๊น์ง์ | 010-1111-1111 |
22222 | ๊น์งํฌ | 010-2222-2222 |
- ๋ฐ์ดํฐ์ ๋ถ๋ฅ, ์ ๋ ฌ, ํ์ ์๋๊ฐ ๋น๊ต์ ๋น ๋ฅด๋ค.
- SQL์ด๋ผ๋ ๊ตฌ์กฐํ๋ ์ง์๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋ค.
- ์์ ์ ์์ ์ฑ์ ๋ณด์ฅํ๋ค.
- ๋ฐ์ดํฐ์ UPDATE๊ฐ ๋น ๋ฅด๋ค.
- ๋ฐ๋์ ์คํค๋ง ๊ท๊ฒฉ์ ๋ง์ถ์ด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค์ผ ํ๋ค.
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ํ ๋ถํ ๋ฐ์ ์ ์ฒ๋ฆฌ๊ฐ ์ด๋ ต๋ค.
- ํ
์ด๋ธ๊ณผ ํ
์ด๋ธ ๊ฐ ๊ด๊ณ๊ฐ ๋ณต์กํด์ง์๋ก(๋ง์์ง์๋ก)
join
์ฐ์ฐ์ด ๋ง์ ๋ณต์กํ ์ฟผ๋ฆฌ๊ฐ ๋ง๋ค์ด์ง๋ค. - ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฅ ์
scale-up
์ ์ฃผ๋ก ์ด์ฉํ๋ค. - ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ
scale-out
ํ ๋NOSQL
์ ๋นํด์ ๋ฒ๊ฑฐ๋กญ๋ค.- ์ด์
id: 1 title: 'My post' content: 'The content' comments: { comment: : id: 1 } comment: { id: 2 } ... views: { view: { user: 1 } view: { user: 2 } ... }
- ์์ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์๊ณ , DB๋ฅผ ์ํ์ ํ์ฅ(sharding)ํ๋ฉด, RDBMS์์๋ - ๋ฐ์ดํฐ๊ฐ join์ ํตํด ๊ด๊ณ(post์ comment)๊ฐ ํ์ฑ๋๋ค. - comment id 1๊ณผ comment id 2๋ ์๋ก ๋ค๋ฅธ DB server์ ์ ์ฅ๋ ์ ์๋ค. - ๋ฐ๋ฉด NOSQL์์๋ - ์์ ๊ฐ์ฒด๋ ์ผ์ข ์ ๋ ๋ฆฝํ ๊ฐ์ฒด๋ก ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ์ join์ด ํ์ ์๋ค. - ๋ฐ๋ผ์ ๋จ์ผ ์๋ฒ์ ๊ทธ๋๋ก ์์ฃผํ ์ ์๋ค. - ๋ฐ๋ผ์ NOSQL์ ๋นํด `sharding` ์ ๋ฒ๊ฑฐ๋กญ๋ค๋ ๋จ์ ์ด ์๋ค.
sharding: ํ๋์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ค์์ DB์ ๋ถ์ฐ์ํค๋ ๋ฐฉ๋ฒ. ์ฃผ๋ก ๋ฐ์ดํฐ ์ธํธ๊ฐ ๋จ์ผ DB์ ์ ์ฅํ๊ธฐ์๋ ๋๋ฌด ํด ๋ ์ฌ์ฉํ๋ค.
RDBMS๋ก๋ ๊ด๋ฆฌํ ์ ์๋ ๋ณต์กํ๊ณ ์ฉ๋์ด ํฐ ๋ฐ์ดํฐ๋ค์ ๊ด๋ฆฌ ํ ์ ์๋๋ก ํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ๋ฑ์ฅํ ๊ฐ๋ ์ด๋ค.
NOSQL์ ๋ฐ์ดํฐ์ ํธ๋ํฝ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํจ์ ๋ฐ๋ผ RDBMS์ ๋จ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด์๋ ์ฅ๋น๊ฐ ์ข์์ผ ํ๋ Scale-up์ ํน์ง์ด ๋น์ฉ์ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐ์ํค๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ํฌ๊ธฐํ๋ ๋น์ฉ์ ๊ณ ๋ คํ์ฌ ์ฌ๋ฌ ๋์ ๋ฐ์ดํฐ์ ๋ถ์ฐํ์ฌ ์ ์ฅํ๋ Scale-out์ ๋ชฉํ๋ก ๋ฑ์ฅํ์๋ค.
Not Only SQL
์ ์ฝ์๋ก์จ, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ๋๋๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ, ๋ฐ์ดํฐ, ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ์ง ์๋๋ค.- ๋ฐ๋ผ์ ์ ํด์ง ์คํค๋ง๊ฐ ์์ด ๋ณด๋ค ์์ ๋กญ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.
- ๋ถ์ฐํ ๊ตฌ์กฐ์ด๋ค.
- ๋ถ์ฐํ ๊ตฌ์กฐ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋์ ์๋ฒ์ ๋ถ์ฐํด ์ ์ฅํ๊ณ , ๋ถ์ฐ ์์ ๋ฐ์ดํฐ๋ฅผ ์ํธ ๋ณต์ ํด ํน์ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋๋ ๋ฐ์ดํฐ ์ ์ค์ด๋ ์๋น์ค ์ค์ง๊ฐ ์๋ ํํ์ ๊ตฌ์กฐ
- ๋ถ์ฐ์ฒ๋ฆฌ์ ๋ณ๋ ฌ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.(ํ์ฅ์ฑ)
- ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ์ง ์๋๋ค.(ํ ์ด๋ธ๊ฐ์ ๊ด๊ณ(join) ๋ถํ์ = ์ฟผ๋ฆฌ ๋ก์ง์ ๋ณต์ก๋๊ฐ ๋ฎ๋ค)
- RDBMS๋ณด๋ค ๋ณต์ก๋๊ฐ ๋จ์ด์ ธ, ํจ์ฌ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ๊ด๋ฆฌ ํ ์ ์๋ค.
- ํ ์ด๋ธ์ ์คํค๋ง๊ฐ ์ ํด์ ธ์์ง ์์ ๋ฐ์ดํฐ ์ ์ฅ์ด ๋น๊ต์ ์์ ๋กญ๋ค. (์ ์ฐ์ฑ)
- ๋ณต์กํ ์กฐ์ธ ์ฌ์ฉ์ด ์ด๋ ต๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์กฐ์ธ์ ์ ๊ณตํ์ง ์๋๋ค.
- ์กฐ์ธํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ๋ก์ง์ ๊ตฌํํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ ํ ์ด๋ธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ํฉ์ณ์ผ ํ๋ค.
- ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ํญ์ ๋ณด์ฅ๋์ง ์๋๋ค. (์ค๋ณต ๋ฐ์ดํฐ ์กด์ฌ ๊ฐ๋ฅ)
- ๋ฐ๋ผ์ ์ค๋ณต์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋๊ฐ์ด ์ ๋ฐ์ดํธ ํด์ฃผ๋๋ฐ ์๊ฐ์ ์๋ชจ
- ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ง์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค.
1. ์ผ๊ด์ฑ(Consistency)
๋ชจ๋ ๋ ธ๋๊ฐ ๊ฐ์ ์๊ฐ์ ๊ฐ์ ๋ฐ์ดํฐ
๋ค์ค์ ํด๋ผ์ด์ธํธ์์ ๊ฐ์ ์๊ฐ์ ์กฐํํ๋ ๋ฐ์ดํฐ๋ ํญ์ ๋์ผํ ๋ฐ์ดํฐ์์ ๋ณด์ฆ
ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ด๊ฒ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ง์ํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ด์ง๋ง ์ผ๊ด์ฑ์ ์ง์ํ์ง ์๋ NOSQL์ ์ฌ์ฉํ๋ค๋ฉด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ๋์จํ๊ฒ ์ฒ๋ฆฌ๋์ด ๋์ผํ ๋ฐ์ดํฐ๊ฐ ๋ํ๋์ง ์์ ์ ์๋ค.
๋์จํ๊ฒ ์ฒ๋ฆฌ๋๋ค๋ ๊ฒ์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ์ฌ๋ฌ ๋
ธ๋์ ์ ํํ๋ ๊ฒ์ ๋งํ๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ต์ข
์ ์ผ๋ก ์ผ๊ด์ฑ์ด ์ ์ง๋๋ค๊ณ ํ์ฌ ์ต์ข
์ผ๊ด์ฑ
๋๋ ๊ถ๊ทน์ ์ผ๊ด์ฑ
์ ์ง์ํ๋ค๊ณ ํ๋ค.
๊ฐ NOSQL๋ค์ ๋ถ์ฐ ๋ ธ๋ ๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ํด์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
- ๋ฐ์ดํฐ์ ์ ์ฅ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ๋ก ์๋ตํ๊ธฐ ์ ์ ๋ชจ๋ ๋
ธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋๊ธฐ์ ๋ฐฉ๋ฒ.
- ๋๋ฆฐ ์๋ต์๊ฐ์ ๋ณด์ด์ง๋ง ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๋ณด์ฅํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ๋ ์์ ํ์ผ์ ๊ธฐ๋กํ๊ณ ํด๋ผ์ด์ธํธ์ ๋จผ์ ์๋ตํ ๋ค์, ํน์ ์ด๋ฒคํธ ๋๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋
ธ๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๋ ๋น๋๊ธฐ์ ๋ฐฉ๋ฒ.
- ๋น ๋ฅธ ์๋ต์๊ฐ์ ๋ณด์ธ๋ค๋ ์ฅ์ ์ด ์์ง๋ง ์ฐ๊ธฐ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ์์ค ๋ ์ ์๋ค.
2. ๊ฐ์ฉ์ฑ(Availability)
๋ ธ๋๊ฐ ๋ค์ด๋์ด๋ ๋ค๋ฅธ ๋ ธ๋์ ๋ฌธ์ x
๊ฐ์ฉ์ฑ: ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ์์ฒญ์ ๋ํ์ฌ ํญ์ ์๋ต์ด ๊ฐ๋ฅํด์ผ ํจ์ ๋ณด์ฆํ๋ ๊ฒ
(= ๋ด๊ณ ์ฅ์ฑ)
๋ด๊ณ ์ฅ์ฑ์ ๊ฐ์ง NOSQL์ ํด๋ฌ์คํฐ ๋ด์์ ๋ช ๊ฐ์ ๋ ธ๋๊ฐ ๋ง๊ฐ์ง๋๋ผ๋ ์ ์์ ์ธ ์๋น์ค๊ฐ ๊ฐ๋ฅํ๋ค.
๋ช๋ช NOSQL์ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด **๋ฐ์ดํฐ ๋ณต์ (Replication)**์ ์ฌ์ฉํ๋ค. ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ค ๋ ธ๋์ ์ค๋ณต ์ ์ฅํ์ฌ ๊ทธ ์ค ๋ช ๋์ ๋ ธ๋๊ฐ ๊ณ ์ฅ๋๋ ๋ฐ์ดํฐ๊ฐ ์ ์ค๋์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ฐ์ดํฐ ์ค๋ณต ์ ์ฅ ๋ฐฉ๋ฒ์๋
- ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ์ ์ฅ์๋ฅผ ํ๋ ๋ ์์ฑํ๋
Master-Slave
๋ณต์ ๋ฐฉ๋ฒ๊ณผ - ๋ฐ์ดํฐ ๋จ์๋ก ์ค๋ณต ์ ์ฅํ๋
Peer-to-Peer
๋ณต์ ๋ฐฉ๋ฒ์ด ์๋ค.
3. ๋คํธ์ํฌ ๋ถํ ํ์ฉ์ฑ(Partition tolerance)
์ผ๋ถ ๋ฉ์ธ์ง ์์คํด๋ ์์คํ ์ ์ ๋์
๋ถํ ํ์ฉ์ฑ์ด๋ ์ง์ญ์ ์ผ๋ก ๋ถํ ๋ ๋คํธ์ํฌ ํ๊ฒฝ์์ ๋์ํ๋ ์์คํ
์์ ๋ ์ง์ญ ๊ฐ์ ๋คํธ์ํฌ๊ฐ ๋จ์ ๋๊ฑฐ๋ ๋คํธ์ํฌ ๋ฐ์ดํฐ์ ์ ์ค์ด ์ผ์ด๋๋ผ๋ ๊ฐ ์ง์ญ ๋ด์ ์์คํ
์ ์ ์์ ์ผ๋ก ๋์ํด์ผ ํจ
์ ์๋ฏธํ๋ค.
CAP ์ด๋ก ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ๋, ์ด๋ ํ ํน์ฑ์ ์ค์ฌ์ ๋๊ณ ๊ด๋ฆฌํ๋๋์ ๋ฐ๋ผ ์ ํํ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ DBMS๊ฐ ๋ฌ๋ผ์ง ๊ฒ์ด๋ค.
CA Consistency + Availabilty, ์ผ๊ด์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ ๋ง์กฑํ๋ DBMS
- ์์คํ ๋ค์ด์๋ ๋ฉ์ธ์ง ์์ค์ ๋ฐฉ์ง
- ํธ๋์ญ์ ์ฌ์ฉ
- ๋ํ์ ์ผ๋ก RDBMS๊ฐ ์๋ค
CP Consistency + Partition tolerance, ์ผ๊ด์ฑ๊ณผ ๋ถํ ๋ด์ฑ์ ๋ง์กฑํ๋ DBMS
- ๋ฐ์ดํฐ๋ณด๋ค๋ ์ฑ๋ฅ์ด ์ค์ํ ํผํฌ๋จผ์คํ์ ์ ํฉ
- ๋ํ์ ์ผ๋ก MongoDB, Hbase๊ฐ ์๋ค
AP Availability + Partition tolerance, ๊ฐ์ฉ์ฑ๊ณผ ๋ถํ ๋ด์ฑ์ ๋ง์กฑํ๋ DBMS
- ๋น๋๊ธฐํ๋ ์๋น์ค ์คํ ์ด์ ์ ํฉ (์ผ๊ด์ฑ์ ์ํ์ง ์๋ ์๋น์ค)
- ๋ํ์ ์ผ๋ก Cassandra๊ฐ ์๋ค
NoSQL์ C + P ๋๋ A + P์ ํน์ฑ์ ์ ํํ์ฌ ๊ฐ์ ธ๊ฐ๋ DBMS์ด๋ค.
NOSQL์ ๋ ๋ค๋ฅธ ํน์ง์ด์ ์ฅ์ ์ ๋ค์ํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ๊ณตํ๋ค๋ ๊ฒ์ด๋ค.
๋ฐ์ดํฐ ์์ฒด๋ณด๋ค๋ ๊ทธ ๋ฐ์ดํฐ๋ก ๋ฌด์์ ํ๊ณ ์ถ์๊ฐ์ ์ด์ ์ ๋ง์ถ๋ค.
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ์ NOSQL
- ํค๋ฅผ ๊ณ ์ ํ ์๋ณ์๋ก ์ฌ์ฉํ๋ ํค-๊ฐ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
- ํค-๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํํฐ์ ๋์ด ๊ฐ๋ฅํ๊ณ , ์ํ ํ์ฅ์ด ๊ฐ๋ฅํ๋ค.
- Riak, Redis, Voldmort
- XML์ด๋ JSON, YAML ๊ฐ์ ๋ฐ์ดํฐ ํ์ (document)์ ์ด์ฉํด์ ๋ ์ฝ๋๋ฅผ ์ ์ฅํ๋ค.
- ํค-๊ฐ ๋ชจ๋ธ์ ๊ฐ๋ ์ ์ผ๋ก ํ์ฅํ ๊ตฌ์กฐ๋ก ํ๋์ ํค์ ํ๋์ ๊ตฌ์กฐํ๋ ๋ฌธ์๋ฅผ ์ ์ฅํ๊ณ ์กฐํํ๋ค.
- ์ ์ฅ๋ ๋ฌธ์๋ฅผ ์ปฌ๋ ์
์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ ๋ฌธ์ ์ ์ฅ๊ณผ ๋์์ ๋ฌธ์ ID์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ค. ๋ฌธ์ ID์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ
O(1)
์๊ฐ ์์ ๋ฌธ์๋ฅผ ์กฐํํ ์ ์๋ค. - ๋๋ถ๋ถ์ ๋ฌธ์ ๋ชจ๋ธ์
Bํธ๋ฆฌ ์ธ๋ฑ์ค
๋ฅผ ์ฌ์ฉํ์ฌ 2์ฐจ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ค. Bํธ๋ฆฌ๋ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ์ปค์ง ์๋ก ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ์ญ์ ํ ๋ ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋๋ค. (๋ฐ๋ผ์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ๋น์จ์ด 7:3 ์ ๋์ผ๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค) - MongoDB, CouchDB
-
RDBMS์์๋ ๋ฐ์ดํฐ๋ฅผ
row
๋จ์๋ก ์ ์ฅํ๋ค๋ฉด, column model์column
๋จ์๋ก ์ ์ฅํ๋ค. -
๊ฐ column์ column family๋ก ๋ฌถ์ด๊ณ , ์ด family๋ค์ ๋ ๋ค๋ฅธ column์ด ๋ ์ ์๋ค.
-
ํ๋์ ํค์ ์ฌ๋ฌ ๊ฐ์ ์นผ๋ผ ์ด๋ฆ๊ณผ ์นผ๋ผ ๊ฐ์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์กฐํํ๋ค.
-
๋ชจ๋ ์นผ๋ผ์ ํญ์ ํ์ ์คํฌํ ๊ฐ๊ณผ ํจ๊ป ์ ์ฅ๋๋ค.
- ์ ์ฅ์ ๊ธฐ๋ณธ ๋จ์๋ ์ปฌ๋ผ์ผ๋ก ์ปฌ๋ผ์
column name
column value
time stamp
๋ก ๊ตฌ์ฑ๋๋ค.
- ์ ์ฅ์ ๊ธฐ๋ณธ ๋จ์๋ ์ปฌ๋ผ์ผ๋ก ์ปฌ๋ผ์
-
๊ตฌ๊ธ์
Big Table
์ด ๋ํ์ ์ธ ์์ด๋ค. ์ฐจํ ์ปฌ๋ผํ NOSQL์ ๋น ํ ์ด๋ธ์ ์ํฅ์ ๋ฐ์๋ค. -
Row key, Column Key, Column Family ๊ฐ์ ๋น ํ ์ด๋ธ ๊ฐ๋ ์ด ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
-
๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ปค๋ฐ๋ก๊ทธ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ํ ์๋ตํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์๋ต์๋๋ฅผ ์ ๊ณตํ๋ค.
-
์ฝ๊ธฐ ์ฐ์ฐ ๋๋น ์ฐ๊ธฐ ์ฐ์ฐ์ด ๋ง์ ์๋น์ค๋ ๋น ๋ฅธ ์๊ฐ ์์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ณ ์กฐํํ๋ ์๋น์ค๋ฅผ ๊ตฌํํ ๋ ๊ฐ์ฅ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
-
key-value์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์์ ๋์ผ
-
๋ณดํต์ NOSQL์ order by ๊ฐ์ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ง๋ง, ์ด ๋ชจ๋ธ์ ๋ด๋ถ์ ์ผ๋ก key๋ฅผ ์ ๋ ฌ
-
๋ ์ง๋ ์ ์ฐฉ์์ผ๋ก ๋ณด์ฌ์ค ๋ ์ ์ฉ
-
Hbase, Casandra
- ๋ฐ์ดํฐ๋ฅผ ๋ ธ๋๋ก ํํํ๊ณ , ๋ ธ๋ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํ์ดํ๋ก ํํํ๋ค.
- ๋ฐ์ดํฐ๋ค์ ๊ด๊ณ๋ฅผ ์ค์์ํด์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ค์ด ์ฃ์ง๋ก ์ง์ ์ฐ๊ฒฐ๋ ์ ์์ด ๋ฐ์ดํฐ ์ง์ ์ ํน์ ๋ ธ๋์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ OP๋ก ํ๋ ๊ฐ๋ฅํ๋ค.
- Sones, Allegro Graph
ํํฐ์ ๋: ๋ ผ๋ฆฌ์ ์ธ ๋ฐ์ดํฐ element๋ค์ ๋ค์์ entity๋ก ์ชผ๊ฐ๋ ํ์๋ฅผ ๋ปํ๋ ์ผ๋ฐ์ ์ธ ์ฉ์ด. ์ฆ ํฐ table์ด๋ index๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด partiton์ด๋ผ๋ ์์ ๋จ์๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋๋๋ ๊ฒ์ ์๋ฏธํ๋ค.
RDMBS
- ์ฑ์ ์ฌ๋ฌ ๋ถ๋ถ์์ ๊ด๋ จ๋ ๋ฐ์ดํฐ(ex. join)๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ
- NOSQL์ด๋ผ๋ฉด ํญ์ ์ฌ๋ฌ ์ปฌ๋ ์ ์ ์์ ํด์ผ ํ๋ค.
- ๋ช
ํํ ์คํค๋ง๊ฐ ์ค์ํ๋ฉฐ, ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๊ทน์ ์ผ๋ก ๋ณ๊ฒฝ๋์ง ์์ ๋
- ๋๋ถ๋ถ ์๋น์ค๋ ์คํค๋ง๊ฐ ์ ๋์ ์ธ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ์๋ค.
NOSQL
- ์ ํํ ๋ฐ์ดํฐ ์๊ตฌ์ฌํญ์ ์ ์ ์์ ๋
- ์ฝ๊ธฐ(read) ์ฒ๋ฆฌ๋ฅผ ์์ฃผ ํ์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ๋ณ๊ฒฝํ์ง ์๋ ๊ฒฝ์ฐ
- ์ฆ ํ๋ฒ์ ๋ณ๊ฒฝ์ผ๋ก ์์ญ ๊ฐ์ ๋ฌธ์๋ฅผ ์์ ํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํ์ ์ผ๋ก ํ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ
- ์ฆ ๋ง๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค์ผ ํ๋ ๊ฒฝ์ฐ, ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฒ๋ฆฌ๋์ด ํฐ ๊ฒฝ์ฐ
- NOSQL์ ๋ฌด์์ด๊ณ ์ด๋ค ํน์ง์ด ์๋์?
- RDBMS์ NOSQL์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
- NOSQL์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์์๋ ๋ฌด์์ด ์๋์?