1113 ~ 1109
# 1113 ~ 1109
# 1107 - NoSQL
# NoSQL์ด๋?
- NoSQL์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํต์ ์ธ ๊ตฌ์กฐ ๋ฐ์์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ์ ๊ทผ๋ฒ
- not only SQL / non-SQL
- ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ ํ
- ํ์ฅ์ฑ์ด๋ ์ฑ๋ฅ ๋ฑ์ ํน์ฑ์ ๊ฐ๋ ์๋ง์ ๋น๊ด๊ณํ, ๋ถ์ฐ ๋ฐ์ดํฐ ๋ฒ ์ด์ค
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ๋ฌด์์ ์ฌ์ฉํ ์ง์ ๋ํ ๊ฒฐ์ ์ ํฌ๊ฒ ์ปจํ ์คํธ์ ์ํฅ์ ๋ฐ์ผ๋ฉฐ, ์ ์ฉ์ฌ๋ก์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค.
- ์ฉ์ด๊ฐ ์ฒ์์ผ๋ก ๋ฑ์ฅํ ๊ฒ์ 1998๋ ์นด๋ฅผ๋ก ์คํธ๋ก์ฐ(Carlo Strozzi)๋ผ๋ ์์ง๋์ด๊ฐ ๊ณต๊ฐํ ํ์ค SQL ์ธํฐํ์ด์ค๋ฅผ ์ฑ์ฉํ์ง ์์ ์์ ์ ๊ฒฝ๋ Open Source ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ NoSQL์ด๋ผ๊ณ ๋ช ๋ช ํ๋ฐ์ ์ ๋
- ์ดํย 2009๋ ์๋ ์ํ ์ค์ค์นผ์(Johan Oskarsson)์ด๋ผ๋ ์์ง๋์ด๊ฐ Open Source๊ธฐ๋ฐ์ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ํ์ฌ๋ฅผ ์ค๋นํ๋ฉด์ NoSQL์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉ
# NoSQL ํน์ง
- ๊ด๊ณํ ๋ชจ๋ธ์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ ํ ์ด๋ธ๊ฐ์ ์กฐ์ธ ๊ธฐ๋ฅ ์์
- ์ง์ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๋ฑ์ ๋นSQL ์ธํฐํ์ด์ค๋ฅผ ํตํ ๋ฐ์ดํฐ ์ก์ธ์ค
- ๋๋ถ๋ถ ์ฌ๋ฌ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ๋ฌถ์ด์(ํด๋ฌ์คํฐ๋ง) ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฑ
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ง์ํ๋ Data์ฒ๋ฆฌ ์๊ฒฐ์ฑ(Transaction ACID ์ง์) ๋ฏธ๋ณด์ฅ
- ๋ฐ์ดํฐ์ ์คํค๋ง์ ์์ฑ๋ค์ ๋ค์ํ๊ฒ ์์ฉ ๋ฐ ๋์ ์ ์ (Schema-less)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๋จ ์๋ ์๋น์ค์ ์๋ ๋ณต๊ตฌ ๊ธฐ๋ฅ์ง์
- ๋ค์๊ฐ Open Source๋ก ์ ๊ณต
- ํ์ฅ์ฑ, ๊ฐ์ฉ์ฑ, ๋์ ์ฑ๋ฅ
=> NoSQL์ ์ด๊ณ ์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฑ ์ฑ๋ฅ์ ํนํ๋ ๋ชฉ์ ์ ์ํด, ๋น๊ด๊ณํ ๋ฐ์ดํฐ ์ ์ฅ์์, ๋น๊ตฌ์กฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ถ์ฐ ์ ์ฅ ์์คํ
# ์ ํ
- Key-Value(ํค-๊ฐ) DB
- redis
- riak
- Document(๋ํ๋จผํธ) DB : JSON, XML๊ณผ ๊ฐ์ Collection ๋ฐ์ดํฐ ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์ฑํ
- mongoDB
- CouchDB
- Wide-Columnar Store(์์ด๋-์ปฌ๋ผ) DB : Column Family ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฌ์ฉ
- HBASE
- Cassandra
- Graph(๊ทธ๋ํ) DB : Nodes, Relationship, Key-Value ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฑ์ฉ
- neo4j
- OrientDB
# ์์ฑ/ํน์ฑ
# NoSQL
๊ฐ์ฉ์ฑ๊ณผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฑ๋ฅ ํฅ์์ ์ด์
- BASE
- Basically Available(๊ฐ์ฉ์ฑ)
- Soft State(์ํํธ ์ํ)
- ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋๋ฌํ ์์ ์ ๋ฐ์ดํฐ๊ฐ ๊ฐฑ์ ๋จ
- Eventually Consistent(๊ฒฐ๊ณผ์ ์ผ๊ด์ฑ)
- ๋ณต์ ๊ฐ ๋์์ ์คํ๋ ์ ์์ผ๋, ์ต์ข ์ ์ผ๋ก๋ ๋ชจ๋ ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ๋ณต์ ๋จ
# RDBMS
๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ด์
- ACID
- Atomicity(์์์ฑ)
- ํธ๋์ญ์ ์ ์ต์์ ์ ๋ฌด๋จ์๋ก ํ ํธ๋์ญ์ ์ ๋ชจ๋ ์ฒ๋ฆฌ๋๊ฑฐ๋ ๋๋ ๋ฏธ์ฒ๋ฆฌ ๋์ด์ผ ํจ
- Consistency(์ผ๊ด์ฑ)
- ํธ๋์ญ์ ์ฑ๊ณต ์ DB๋ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํด์ผ ํจ
- Isolation(๊ฒฉ๋ฆฌ์ฑ)
- ์คํ ์ค์ธ ํธ๋์ญ์ ์ ์ค๊ฐ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๊ทผํ ์ ์์
- Durability(์์์ฑ)
- ํธ๋์ญ์ ์ฑ๊ณต ์ ๊ทธ ๊ฒฐ๊ณผ๋ ์ฅ์ ๋ฐ์ ์ฌ๋ถ์ ๊ด๊ณ์์ด DB์ ์ ์ฅ๋์ด์ผ ํจ
- Atomicity(์์์ฑ)
# 1116 - OLTP/OLAP
- DB ์ ํ/์ค๊ณ์์ ๊ด์
# OLTP(On-Line Transaction Processing)
# ์ ์
- '์ด์'๊ณ ๋ฐ์ดํฐ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธ
- ๋ณต์์ ์ฌ์ฉ์ PC์์ ๋ฐ์๋๋ ํธ๋์ญ์ (Transaction)์ DB ์๋ฒ๊ฐ ์ฒ๋ฆฌ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์์ฒญํ ์ฌ์ฉ์์๊ฒ ๊ฒฐ๊ณผ๊ฐ์ ๋๋๋ ค์ฃผ๋ ๊ณผ์
- 1๊ฐ์ ํธ๋์ญ์ ์์ ๋ฐ์๋๋ INSERT, UPDATE, DELETE๋ฅผ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅํ์ฌ ์ฒ๋ฆฌ, ๊ฒฐ๊ณผ๋ฅผ SELECTํ๋ ๊ณผ์
# ํน์ง
- ๊ณผ๊ฑฐ์๋ ์ฃผ๋ก RDBMS ๊ธฐ๋ฐ์ ์์คํ ์ ๊ทผ๊ฐ์ผ๋ก ํ์ผ๋ NoSQL๋ ์ด์๊ณ ๋ฐ์ดํฐ์ ์ฑ๊ฒฉ์ ๋ค๋ค๋ฉด OLTP๋ก ๋ถ๋ฅ ๊ฐ๋ฅ
- ํ์ฌ ๋ฐ์ดํฐ๊ฐ ์ฒ๋ฆฌ๊ฐ ์ผ๋ง๋ ์ ํํ๊ณ ๋ฌด๊ฒฐํ์ง๊ฐ ์ค์
- ์ค์ง์ ์ธ ๋ฐ์ดํฐ์ ์ ์ฅ, ์ญ์ , ์์ ๋ฑ์ ์์ ์ ์๋ฏธ
- ๋น๊ต์ ์์ ๊ท๋ชจ์ ํธ๋์ญ์ ๋ค๋ก ๊ตฌ์ฑ
- CRUD์ ๊ด๋ จ๋ ์ฟผ๋ฆฌ๋ค์ด ์ฃผ๋ฅผ ์ด๋ฃธ
- ์ ํต์ ์ธ DBMS๋ค์ด ์ฃผ๋ก ์ฌ์ฉ๋จ
- ๋ฐ์ดํฐ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ์ ์ ๋ฆฌํ๋ ค๊ณ ๋ ธ๋ ฅ
# OLAP(On-Line Analytical Processing)
# ์ ์
- '๋ถ์'๊ณ ๋ฐ์ดํฐ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธ
- ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค (DW), DB์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์, ์ฌ์ฉ์์๊ฒ ์ ์๋ฏธํ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ฃผ๋ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
- ๊ธฐ์กด์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์์ ์๊ตฌ์ ๋ชฉ์ ์ ๋ง๊ฒ ๋ถ์ํ์ฌ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฐ๋
# ํน์ง
- ๋ถ์์ ํตํด BI(Business Intelligence)์ ์ฐ๊ณํ์ฌ ํน์ ์งํ ์ถ์ถ, ๋ฆฌํฌํธ ์์ฐ, ์์ฌ ๊ฒฐ์ ์ ๋์
- ์ด๋ฏธ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ์ด๋ค ์ ๋ณด๋ฅผ ์ ๊ณตํ๋์ง๊ฐ ์ค์
- ๋ฐ์ดํฐ๊ฐ ๋ฌด๊ฒฐ, ์ ํํ๋ค๋ ์ ์ฌ ํ์ ์ ๋ณด๋ฅผ ์ด๋ค ์์ผ๋ก ํํํ๊ณ ์ ๊ณตํ๋์ง๋ฅผ ์๋ฏธ
- ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ทจ๊ธ
- ํต๊ณ/์ง๊ณ ๋ฑ์ ๋ณต์กํ ์ฟผ๋ฆฌ๋ค์ด ์ฃผ๋ฅผ ์ด๋ฃธ
- DW (Data Warehouse)๋ฅผ ๊ตฌ์ถ
- ๋ฐ์ดํฐ๊ฐ ์ด๋ ์ ๋ ์ค๋ณต์ด ๋๋๋ผ๋ ๋ณ ์๊ด์ด ์์ผ๋ฉฐ ๋ง์ ๋ฐ์ดํฐ ์์ง์ด ํ์
# ์ํธ ๋ณด์์ ๊ด๊ณ
- OLTP์ OLAP๋ฅผ ๋๊ณ ๋ดค์ ๋ ๊ฐ์ฅ ์ ํ๋์ด์ผ ํ ๋ถ๋ถ์ OLTP (๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ณผ์ ๋ฐ ๋ฐ์ดํฐ ์์ฒด์ ๋ฌด๊ฒฐ์ฑ ์ค์)
- OLTP๊ฐ ์์ฒ ๋ฐ์ดํฐ์ ์ ๊ณต์ฒ์ด๋ฉฐ ETL ์์ ์ ํตํด OLAP์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณต