๋ฐ์ดํฐ(Data)์ ๋ถ์(Analysis)์๋ ์ด๋ค ์ผ์ด ๋ฒ์ด์ง๊ณ ์๋๋จ?
์ค๋๋ง์ ๋ธ๋ก๊ทธ ํฌ์คํ
์ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ค๋์ ์ ์ด ์์๊ฐ ์๋ ๊ธ๋ค๋ ๋ง์ด ์ ๋ฆฌํด์ ์ด๋ฒ์ ์๋ก์ด ์ปจํ
์ธ ๋ค์ ๋ง์ด ์ฑ์๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฒ ๋ธ๋ก๊ทธ ์ฃผ์ ๋ ๋ฐ์ดํฐ(Data)์ ๋ถ์(Analysis)์ธ๋ฐ์ ๋ง์ ๋ถ๋ค์ด ๊ด์ฌ๊ฐ์ง๊ณ ์๊ณ ๋ ์์ผ๋ก๋ ํ๋์์ ์ด ์ค์ฝํ์ ์๋ ์ฐ์
๊ตฐ์ ๊ทผ์ฌ๊ฑฑ์ ์ด ์๊ธฐ๋ ํด์ ๋ง์ ์ฃผ๋์ด๋ถ๋ค๊ณผ ํ ์ง์ข
์ ๊ณ์ ๋ถ๋ค์ด ์์ฃผ ๊ด์ฌ๊ฐ์ง๊ณ ๋ณด์ค ๊ฒ ๊ฐ์ต๋๋ค.
Continue Reading
์ด ๊ธ์์๋ ๋น
๋ฐ์ดํฐ์ ๋ํด์ ๊ฑฐ๋ก ํ์ง ์์ต๋๋ค.
์ด ๊ธ์์๋ ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค ๊ธฐ์ ์ ๋ํด์ ๊ฑฐ๋ก ํ์ง ์์ต๋๋ค.
์ด ๊ธ์ ์์ฑ์๋ ์ ๋ฌธ๊ฐ๊ฐ ์๋๋๋ค.
์๋น์ค ๊ฐ๋ฐ์ ์ข
์ฌํ์๋ ๋ง์ ๋ถ๋ฅ์ ๊ฐ๋ฐ์ ๋ถ๋ค์ ๋๋ถ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Database)๋ผ๋ ๊ฒ์ ๋ค์ด๋ณด์
จ์ ๊ฒ๋๋ค. ๋ณดํต ์๋น์ค์ ์๋ ๋์ ๋ฐ์ดํฐ์ ์ฌ์ฉ์์ ์ํ๋ฅผ ์ธ์
(Session)์ผ๋ก ๊ด๋ฆฌํ๋ ์ด๋ฅผ ์คํ ์ด(Store)๋ก ์ฐ๊ฒฐํ๊ณ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋น์ค์ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด์ง์.
์ฌ๋ฌ๋ถ์ด ๋ง์ด ๋ค์ด๋ณด์ MySQL, MSSQL, Oracle, DB2, CosmosDB, PostgreSQL, MariaDB ๋ฑ์ด ์ด๋ฌํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS)๊ฐ ๋๊ฒ ์ต๋๋ค.
<๊ทธ๋ฆผ 1.1 ์ฌ๋ฌ๋ถ์ด ์ฌ๋ํด์ฃผ์๋ ์ฐ๋ฆฌ์ MySQL ์ฐก...>
์ฐธ๊ณ ๋ก ์ฌ๊ธฐ์ MySQL์ โ๋ง์ด์์คํ์โ ์ด๋ผ๊ณ ๋ฐ์ํ์๋ ๋ถ๋ค์ด ๋ง์ผ์ ๋ฐ์ ํ์
์์๋ โ๋ง์ด์ํ"์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. PostgreSQL ๋ํย โํฌ์คํธ๊ทธ๋ ์คํ์โ์ด ์๋ โํฌ์คํธ๊ทธ๋ ์คํ"์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๋ณดํต ์ฐ๋ฆฌ๋ ์๋น์ค๋จ์ ์ด๋ฌํ RDBMS๋ฅผ ์ฐ๊ฒฐํ ๋, RDBMS๊ฐ ์๋ ๋ถ๋ถ์ ์ง์ ๋ ์ด์ด ํน์ ํผ์์คํด์ค ๋ ์ด์ด(Persistence Layer)๋ผ ๋ถ๋ฆ
๋๋ค.
<๊ทธ๋ฆผ 1.2 ์๋น์ค์์ ๊ตฌ๋ถ๋๋ ๊ณ์ธต๋ค>
๋ฌผ๋ก ์๋น์ค ๋จ์์ DB๋ฅผ ์ฌ์ฉํ ๋๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ(๋ฐ์ดํฐ๊ณผ ์ผ๊ด์ ์ด๊ณ ์ ํํจ์ ๋ณด์ฆ)ํด์ผ ํ๊ณ ๋ ๋ง์ฝ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ์ด๋ฅผ ๋์ฒํ ์ ์์ด์ผํฉ๋๋ค. (*ํดํธํจ๋ฌ๋ฐ์ค) ์์ ๊ฒ๋ค์ ์ง์ํ๊ธฐ ์ํ ๋ชฉ์ ์ ๊ฐ์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ OLTP (Online transaction processing)ย ๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
์ ์ค๋ช
์ด ๋ค์ ๋ณต์กํ ์ ์์ด์ ์๋์์๋ ์ฌ๋ก๋ฅผ ํ๋ ๋ค์ด๋๋ ค ๋ณด๊ฒ ์ต๋๋ค. ์ฌ๋ฌ๋ถ์ด ๋ง์ฝ ์ฌํ์ฌ API๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๋์ ๊ฒฐ์ ํ๋ฉด ์ฌํ์ฌ ๋ฑ๋ก์ ํ๋ ์์คํ
์ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์๋น์ค ํ๋ก์ธ์ค์์ ์ฒ๋ฆฌํ ๊ฒ์ ์๋์ ๊ฐ์ต๋๋ค.
์ฌ์ฉ์๊ฐ ํน์ ์ฌํ์ฌ์ ์ ์ฒญ์ ๋ฃ๊ณ ํฌ๋ ๋ง์ ์ฌ์ฉ
์๋ฒ์์ ์ฌํ์ฌ API์ ์ ๊ทผํ์ฌ ์ ์ ์ด๊ณผ์ฌ๋ถ, ์ฌ์ฉ์ ๋ฑ๋ก์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ ํจ์ฑ ์ฒดํฌ๋ฑ์ ๊ฑฐ์ณ ์ฌ๋ฐ๋ฅผ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ ์งํ
์ฌ์ฉ์์ ํฌ๋ ๋ง DB์ ์๊ธ์ด ์๋์ง ํ์ธ
์ฌ์ฉ์์ ํฌ๋ ๋ง DB์์ ํฌ๋ ๋ง์ ์ฐจ๊ฐ (DB ์์
)
์ฌํ์ฌ API์ ์ ๊ทผํ์ฌ ์์ฝ ์ฒ๋ฆฌ
์์ฝ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฑ์ฌ ๋จ์ ์ฌ์ฉ์์๊ฒ ์๋ฆผ
ย ์ ์๋๋ฆฌ์ค๋๋ก ๊ตฌํ ํ๋ฉด ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ ์๋ฒ์ ์ฅ์ ๋ ๋ฐ๊ฒฌ๋์ง ์๋๋ค๊ณ ์๊ฐํ ์ ์์ ํ
๋ฐ ์ฌ๊ธฐ์๋ ์ฌ๊ฐํ ๋ฌธ์ ๋ค์ด ์ฌ๋ฟ ์์ต๋๋ค. ์๋๋ ์ฌ๊ธฐ์ ๋ฐ์ํ ์ ์๋ ์ฅ์ ์๋๋ฆฌ์ค๋ฅผ ๊ฐ๋จํ๊ฒ ๋์ดํด๋ดค์ต๋๋ค.
์ฌํ์ฌ API์์ ์๋ฌ๋ฅผ ๋ณด๋ด๋ ๊ฒฝ์ฐ (a. ์ฌํ์ฌ ์๋ฒ ๋ฌธ์ , b. ์ ํจ์ฑ ๊ฒ์ฆ ์ดํ ์ ๊น์ ์ฒ๋ฆฌ์๊ฐ๋์ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์์ฝ์ ์งํํ ๊ฒฝ์ฐ ๋ฑ)
์ฌ์ฉ์๊ฐ ๋์์ ์ธ ์์ฝ์ฒ๋ฆฌ๋ก ์ธํด ํฌ๋ ๋ง ์ฒดํฌ ์ดํ ํฌ๋ ๋ง์ด ์ค์์ ๊ฒฝ์ฐ
์๋ฒ์ ์ฅ์ ๋ก ์ธํด ์์ฝ์ฒ๋ฆฌ๋ฅผ ์ํํ์ง ๋ชปํ์ ๊ฒฝ์ฐ (์๋ฒ์ ์ฌ๋ฐฐํฌ, ์๋ฒ์ ๋ค์ด ๋ฑ)
์ธ์์ ํญ์ ๋
ผ๋ฆฌ์ ์ด๊ณ ์๋ฒฝํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด๋ฐ ์๋์น ์์ ์ฌํญ์ ์๋ฐฉํด์ผ ํฉ๋๋ค. ๋คํ์ค๋ฝ๊ฒ๋ ์ฐ๋ฆฌ์๊ฒ๋ ํธ๋์ญ์
(Transaction)์ด ์๊ธฐ์ ์์ ๋ฌธ์ ๋ฅผ ์๋ฆ๋ต๊ฒ ํด๊ฒฐ ํ ์ ์์ต๋๋ค.
<๊ทธ๋ฆผ 1.3 ํธ๋์ญ์
์ ๋ฐฉ์์ ๋ํ ๊ทธ๋ฆผ>
ํธ๋์ญ์
์ ์๋ฆฌ๋ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค.
ํธ๋์ญ์
์ปจํ
์คํธ๋ฅผ ์ ์ํ๊ณ (Begin transaction ํน์ savepoint) ๊ทธ ์ปจํ
์คํธ ์์ ์๋ ์ฒ๋ฆฌ๋ค์ ๋ง์ง๋ง์ ๋ฐ์(Commit)ํ๊ฑฐ๋ ์ทจ์(Rollback) ํ์ค ์ ์์ต๋๋ค. Auto Commit์ด ์ค์ ๋์์ง ์์ผ๋ฉด ์๋ฒ์์ ํผ์น ๋ชปํ๊ฒ ์ฒ๋ฆฌ ์๋ต์ ๋ชปํ ๊ฒฝ์ฐ ๋ฐ๋๋งจ์ค์์น์ ์ ์ฌํ๊ฒ ์๋์ผ๋ก ์ทจ์(Rollback)ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์๊น์ ์๋๋ฆฌ์ค๋ฅผ ํธ๋์ญ์
์ ์ด์ฉํ์ฌ ์๋์ฒ๋ผ ์ฒ๋ฆฌ ํ ์ ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ ํน์ ์ฌํ์ฌ์ ์ ์ฒญ์ ๋ฃ๊ณ ํฌ๋ ๋ง์ ์ฌ์ฉ
์๋ฒ์์ ์ฌํ์ฌ API์ ์ ๊ทผํ์ฌ ์ ์ ์ด๊ณผ์ฌ๋ถ, ์ฌ์ฉ์ ๋ฑ๋ก์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ ํจ์ฑ ์ฒดํฌ๋ฑ์ ๊ฑฐ์ณ ์ฌ๋ฐ๋ฅผ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ ์งํ
์ฌ์ฉ์์ ํฌ๋ ๋ง DB์ ์๊ธ์ด ์๋์ง ํ์ธ
์ฌ์ฉ์์ ํฌ๋ ๋ง DB์์ ํฌ๋ ๋ง์ ์ฐจ๊ฐ (DB ์์
)
์ฌํ์ฌ API์ ์ ๊ทผํ์ฌ ์์ฝ ์ฒ๋ฆฌ
๋ง์ฝ ์ด ๊ณผ์ ์ค ์ด๋ค ์๋ฌ๋ผ๋ ์๋ค๋ฉด ํธ๋์ญ์
์ทจ์(Rollback)
ํธ๋์ญ์
์ข
๋ฃ ๋ฐ ๋ฐ์(Commit)
์์ฝ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฑ์ฌ ๋จ์ ์ฌ์ฉ์์๊ฒ ์๋ฆผ
๋ฌผ๋ก ์์ ์๋๋ฆฌ์ค์์๋ ์ฌ์ฉ์๊ฐ ๋์์ ์ผ๋ก ํฌ๋ ๋ง์ ๊ฒฐ์ ํ ๊ฒฝ์ฐ๋ ๋ง์ ์ ์์ต๋๋ค.
์ด๋ฅผํ
๋ฉด ๋์๊ฐ๋์ 2๊ฐ ์ด์์ ํธ๋์ญ์
์ด ๋์์ ์๋ํ์ฌ, 5๋ง์์ ํฌ๋ ๋ง ์ค ํ๊ณณ์ 5๋ง์์ ์ฌ์ฉํ๊ณ ๋ ํ๊ณณ์ 3๋ง์์ ์ฌ์ฉํ์ฌ ๋์ค ํ๋๋ ์ทจ์๋์ด์ผ ํจ์๋ ๋ถ๊ตฌํ๊ณ ๋ ์ฒ๋ฆฌ ๋ชจ๋ ์กฐํ๋จ๊ณ์์ 5๋ง์์ด ์กฐํ๋๊ณ ์ฒ๋ฆฌ ๋จ๊ณ๋ ๊ทธ ์ดํ ์ํ๋๊ธฐ์ ์ด 8๋ง์์ด ์์ง๋๋ ํ์ (์ด๋๋ ๋ ์ค ์ด๋ค ํธ๋์ญ์
์ด ๋จผ์ ์คํ๋์๋์ ๋ฐ๋ผ ์๊ธ์ด 2๋ง์์ด ๋จ์๋ฒ๋ฆฌ๊ธฐ๋ ํ๋ ์์ฒญ๋ ์ฌํ)
์ด๋ฅผ ์๋ฒฝํ๊ฒ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ค๋ฉดย ๋น๊ด์ ๋์์ฑ ์ ์ด ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฝ๊ธฐ ๋ฝ์ ๊ฑธ๊ฑฐ๋ ๋ค์ค ์ฒดํฌ๋ฅผ ํตํด ๊ฒฐ์ ๋ฅผ ๋ณด์ฅํด์ผ ํฉ๋๋ค. ์ผ๋จ ์ด ์ค๋ช
์ ๋ชจ๋์ ๋๋ฅผ ์ํด ์๋ตํฉ๋๋ค!
์ฐ๋ฆฌ๋ ํ๋ RDBMS์ ํธ๋์ญ์
๋ง์ ์ด์ฉํด์๋ ์๋น์ค ์ ๊ณตํ๊ธฐ์๋ ํฐ ์ง์ฅ์ด ์์์ต๋๋ค. (๋ฌผ๋ก ํ์ฅ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ ์ฌ๊ธฐ์ ๋นผ๋๋ก ํฉ์๋ค!)
์ฌ๊ธฐ๊น์ง ์ฝ์ผ์
จ๋ค๋ฉด ์๋ ๋ฌธ์๋ ๊ฐ์ด ์ดํด๋ณด์ธ์
๊ด๊ณ - ๋ฐ์ดํฐ๋ฒ ์ด์ค (์ํคํผ๋์)
DBMS๋ ์ด๋ป๊ฒ ํธ๋์ญ์
์ ๊ด๋ฆฌํ ๊น? (Naver D2)
OLTP์ OLAP (devkingsejong's dev life)
ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์๋ก์ด ACID, BASE ๊ทธ๋ฆฌ๊ณ CAPย (๋ฏธ๋ฌผ์ ๊ฐ๋ฐ ์ธ์)
์ปค๋ฅ์
ํ (Connection Pool)
์ปค๋ฅ์
ํ (Connection Pool - DBCP) ์์ด๋ ๋น์ฅ์๋ ์๋น์ค ํ
์คํธ์ ํฐ ๋ฌธ์ ๊ฐ ์๊ฒ ์ง๋ง ์๋น์ค๋ฅผ ๋ฐ์นญํ๊ณ ์ ์ ๊ฐ ๋ค์ ๋ถ์ผ๋ฉด ์ฐจ์ฐจ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์์ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ชจ๋ํฐ๋ง ํด๋ณด๋ฉด Current ์ปค๋ฅ์
์ ์๋์น๊ธฐ ์์ํ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ถํ์ํ CPU Latency๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.ย ์ฌ๋ฌ๋ถ์ ์๋น์ค๋ ํํ์ด์ง ์ฒ์ ์
์ฅ ์ DB์์ ์ฌ์ฉ์ ์ธ์
์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์ค๊ณ (์ด๋ฅผํ
๋ฉด ๋ฉ๋ชจ๋ฆฌ ์คํ ๋ฆฌ์ง์์), ์ถ๊ฐ์ ์ผ๋ก ๋ฉ์ธ ํ์ด์ง์ ์ต์ ๋ด์ค๋ฅผ DB์์ ๊ฐ์ ธ์จ๋ค๊ณ ์น์๋ฉด ์ฌ๋ฌ๋ถ์ DB์ 2๊ฐ์ ์ฟผ๋ฆฌ ์์ฒญ(ํธ๋์ญ์
)์ ์๋ํ๊ฒ ๋ฉ๋๋ค.
์ ์ ์ ์ธ์
์ ๋ณด ์กฐํ ์ฟผ๋ฆฌ
์ต์ ๋ด์ค๋ฅผ ๊ฐ์ ธ์ค๋ ์ฟผ๋ฆฌ
๋ณดํต ์ ์ ์ ์ธ์
์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ์ฒ๋ฆฌ์ ์ต์ ๋ด์ค๋ฅผ ๊ฐ์ ธ์ค๋ ์ฒ๋ฆฌ๋ ๊ธฐ๋ฅ์์ผ๋ก ๋ถ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ์๋ก ๋ค๋ฅธ DB ์ปค๋ฅ์
์ด ๋ฐ์ํ๊ฒ ๋๋๋ฐ ์ด๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
<๊ทธ๋ฆผ 2.1 ์ ์ ๋ณ ํธ๋์ญ์
๋ณ ์ฟผ๋ฆฌ ์์ฑ>
๋ฌธ์ ๋ ๊ฐ ์์ฒญ ๋ณ๋ก DB์ ์ปค๋ฅ์
์ ์๋ก ์ป์ด์์ (๊ทธ๋ฆผ์์ ๋นจ๊ฐ๋ถ๋ถ) ์ฟผ๋ฆฌ๋ฅผ ์งํํ๋๋ฐ ์ปค๋ฅ์
์ ์ป์ด์ค๋ ๊ณผ์ ์ด ์ค๋๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๋ ๊ทธ๋์ ๋๊ธฐํ๊ฒ ๋๋ฉฐ ๋ ์ด๋ฌํ ์ฒ๋ฆฌ๋ DB ์๋ฒ์ ์์ด์๋ ์ด๋์ ๋ CPU ์ฐ์ฐ์ด ํ์ํ๊ธฐ์ ์ ์ฒด์ ์ผ๋ก ๋นํจ์จ์ ์ผ๋ก ์์
์ด ๋์๊ฐ๊ฒ ๋ฉ๋๋ค.
<๊ทธ๋ฆผ 2.2 ์ปค๋ฅ์
ํ์ ๊ด๋ฆฌ>
์์ ๊ทธ๋ฆผ์ฒ๋ผ ์ปค๋ฅ์
ํ์ ์ด์ฉํ ๊ฒฝ์ฐ ์๋ฒ๊ฐ ์ด๊ธฐ์ ์ปค๋ฅ์
์ ์ปค๋ฅ์
ํ์ ์ค์ ๋ ์ฉ๋ (Max connection)๋งํผ ์ฐ๊ฒฐํด๋๊ณ ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ํธ๋์ญ์
์ ์งํ ํ ๋๋ ์ด๋ ๊ฒ ๋ฏธ๋ฆฌ ์ฐ๊ฒฐ๋ ์ปค๋ฅ์
์ ์ ์ ๋น๋ ค ์ฌ์ฉํ๊ณ ๋๋ ค์ฃผ๋(Release) ํ๋ ๋ฐฉ์์ผ๋ก ๋์๊ฐ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก DB์๋ ์ปค๋ฅ์
์ด ์์ ์ ์ผ๋ก ์ ์ง๋๊ณ ๋ CPU ๋ถํ๊ฐ ์ค์ด๋ค๊ฒ ๋ฉ๋๋ค.
์ปค๋ฅ์
ํ์ ๋ํ ์ ๋ณด๋ฅผ ๋ชจ์๋ดค์ต๋๋ค!
DB Connection Pool์ ๋ํ ์ด์ผ๊ธฐ (์๋
ํ๋ก๊ทธ๋๋ฐ)
Commons DBCP ์ดํดํ๊ธฐ (Naver D2)
ํ์ฅ์ฑ ๊ทธ๋ฆฌ๊ณ ๊ณ ๊ฐ์ฉ์ฑ
์ฌ๋ฌ๋ถ์ด ์ ์
์์ ์กฐ๊ธ์ฉ ๊ฑธ์ด ์ฌ๋ผ์ค๋ค ๋ณด๋ฉด ์๋น์ค๋ฅผ ์ค๋นํ๋ ๋จ๊ณ์์ ๋ฌด๊ฒฐ์ฑ(์ผ๊ด์ฑ๊ณผ ์ ํ์ฑ, ์์์ฑ ๋ฑ) ๋ค์์ผ๋ก ํ์ฅ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ด ๊ต์ฅํ ์ค์ํ ์์์ธ ๊ฒ์ ์ ์ฐจ ๋๋ผ๊ฒ ๋๋๋ฐ ๋์ ๋ํ ๊ฐ๋ตํ ์ค๋ช
์ ์๋์ ๊ฐ์ต๋๋ค.
ํ์ฅ์ฑ(Scalability): ์ฌ์ฉ์๊ฐ ๋ง์์ง๊ณ (์ปค๋ฅ์
, ํธ๋์ญ์
์ฆ๊ฐ) ์ฒ๋ฆฌํด์ผ ํ ๋ฐ์ดํฐ์ ์์ด ๋ง์ ์ง๋ฉด์(์ธ๋ฑ์ค ์ฆ๊ฐ, ์นด๋๋๋ฆฌํฐ ์ฆ๊ฐ, ์ค์บ์ฉ๋ ์ฆ๊ฐ) ๋ฌผ๋ฆฌ์ ์ธ ์๋ฒ์ ์ฑ๋ฅ์ ํฅ์ ์คํฌ ์ ์๋ ๋ฅ๋ ฅ์ด๋ ๋ฐฉ๋ฒ.
๊ฐ์ฉ์ฑ(Availability): ์ฃผ์ด์ง ํ๊ฒฝ์์ ์ด๋ ํ ๋ฌธ์ (์๋น์ค์ ์ฅ์ ) ์์ด ์ ์ง์ํฌ ์ ์๋๊ฐ์ ๋ํ ์ ๋. (i.e ๊ฐ๋๋ฅ )
๋ง์ฝ ์ฌ๋ฌ๋ถ์ด ์๋น์ค๋ฅผ ์ ๋ง๋ค๊ณ ๋ผ์ด๋ธ ์๋น์ค๋ก ์คํ ํ๋๋ฐ ํ๋ฃจ๋ง์ DB ์๋ฒ๊ฐ ๋ป๊ณ (์ผ๋ฐ์ ์ธ ์ฅ์ ํน์ ์คํฉ ์์ฒด์ ๋ฌธ์ ) ์ด๋ฅผ ๋ณต๊ตฌํ๋๋ฐ๋ ์์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๋ฉด ๊ฐ์ฉ์ฑ์ด ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ด๊ฒ ๋ฉ๋๋ค. ๋ํ ์๋น์ค์ ์ฑ๋ฅ์ด ๋๋ ค ์ด๋ฅผ ๊ฐ์ ํ๋๋ฐ์ ์์ด ์๊ฐ์ ๋น์ฉ์ด๋ ๊ณต๊ฐ์ ๋น์ฉ(์๋ฒ๊ณต๊ฐ ์ถ๊ฐ, ์๋ฒ ์ด์ ), ์ธ์ ๋น์ฉ(๋ง์ด๊ทธ๋ ์ด์
๋ด๋น์ ํฌ์
, DBA ํฌ์
, ์๋ฒ์์ง๋์ด ํฌ์
)์ด ๋ฐ์ํ๋ค๋ฉด ํ์ฅ์ฑ์ด ๋ฎ์ ๊ฒ์ด์ง์.
DBMS ์ข
๋ฅ๋ง๋ค ์ด๋ฌํ ๊ฐ์ฉ์ฑ, ํ์ฅ์ฑ์ SW ๋ ๋ฒจ์์ ์ง์ํ๊ธฐ ์ํ ๊ธฐ๋ฅ๋ ์์ผ๋ฉฐ ์ด๋ฐ ์ฐจ์ด ๋๋ฌธ์ ๋ง์ ๋ฐ์ดํฐ ๊ด๋ จ ์์ง๋์ด๋ ์ข
์ฌ์๋ค์ด ๋ง์ ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค.
ํ์ฅ์ฑ์ ๊น๊ฒ ๋ค์ฌ๋ค๋ณด๋ฉฐ
<๊ทธ๋ฆผ 3.1 ํ์ฅ์ฑ์ ๋ํ ๊ฐ๋จํ ๊ทธ๋ฆผ (scale-out ์ธก๋ฉด)>
์๊น๋ ํ์ฅ์ฑ์ ๋ํด ๊ฐ๋จํ๊ฒ๋ง ์์ ํ๋๋ฐ ์ด๋ฒ์๋ ์กฐ๊ธ ๋ ๊น์ด์๊ฒ ์๊ธฐํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๊ฐ ๋๋ ค ์ด๋ฅผ ํ์ฅํ๋ ๊ฒฝ์ฐ ๊ฐ๋จํ๊ฒ ๋๊ฐ๋ก ๋๋๊ฒ ๋ฉ๋๋ค.
SW ๋ ๋ฒจ์์์ ํ์ฅ (๋
ผ๋ฆฌ์ ์ธ ํ์ฅ)
HW ๋ ๋ฒจ์์์ ํ์ฅ (๋ฌผ๋ฆฌ์ ์ธ ํ์ฅ)
๋น์ฐํ๊ฒ๋ HW์ชฝ์ด ๋น์ฉ๊ณผ ์๊ฐ์ ๋ ๋ง์ด ์๋ชจ๋๊ฒ ์ฃ .
SW ๋ ๋ฒจ์์์ ํ์ฅ์ ํ๋ ์ผ์ด์ค ์ฌ์ค ํ์ฅ์ด๋ผ ์นญํ๊ธฐ๋ณด๋ค ์ต์ ํ๊ฐ ๋ ๋ง๋ ๋ง์ผ ๋ฏ ํฉ๋๋ค. ๋ณดํต ๋ก๊ทธํ
์ด๋ธ์ด ๋ง์ด ์์ฌ์ ๋ก์ฐ๊ฐ ์ถ๊ฐ๋ ๋๋ง๋ค ์ธ๋ฑ์ฑ๋ ๋๋ฆฌ๊ณ ๋ ์์น๋ฅผ ํด๋ ๋ถํ์ํ๊ฒ ์ค์บ ์ฝ์คํธ๊ฐ ๋ง์ด ๋ค๊ธฐ ๋๋ฌธ์ ํ
์ด๋ธ ํํฐ์
๋์ ํ๊ฒ ๋ฉ๋๋ค.
HW ๋ ๋ฒจ์์์ ํ์ฅ์ ๊ฒฝ์ฐ์ ์๊ฐ ๋ง์ต๋๋ค๋ง ํฌ๊ฒ ์๋์ ๊ฐ์ด ๋ ํ๋ฒ ๋ถ๋ฅ ํ ์ ์์ต๋๋ค.
์์ง ํ์ฅ์ ์ธก๋ฉด(Scale-up)
์ํ ํ์ฅ์ ์ธก๋ฉด(Scale-out)
<๊ทธ๋ฆผ 3.2 ์์งํ์ฅ(scale-up)๊ณผ ์ํํ์ฅ(scale-out)์ ๋ํ ์ค๋ช
>
์์ง ํ์ฅ์ ์ฝ๊ฒ ์๊ธฐํ์ฌ ์๋ฒ ์์ฒด์ ์ฑ๋ฅ์ ๋๋ฆฌ๊ฑฐ๋ ์ฒ๋ฆฌ ๋ฐฉ์์ ๊ฐ์ ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ ์ผ๋ก ๋์๊ฐ๊ฒ ํ๋ ๋ฑ์ผ๋ก ๊ฐ์ ์ด ํ์ํ ์ธ์คํด์ค ์์ฒด๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ด๋ผ ๋ณด๋ฉด ๋ฉ๋๋ค.
์ํ ํ์ฅ์ ๊ทธ์ ๋ค๋ฅด๊ฒ ์๋ฒ์ ์๋ฅผ ๋๋ ค ๋ถ์ฐ์ ํ๊ฑฐ๋ ์ค์บ ๋์์ ํ์ผ์ ์ชผ๊ฐ์ด ๋ถ์ฐํ๊ฑฐ๋ ํน์ ์ฐ์ฐ ํ๋ก์ธ์ฑ ๋ง์ ๋ถ์ฐํ๋ ๋ฑ ํ๋์ ์ปค๋ค๋ ๋ฌธ์ ๋ฅผ ์ชผ๊ฐ์ด ํด๊ฒฐํ๋ ๊ฒ์ผ๋ก ์ด์ ์ด ๋ง์ถฐ์ ธ ์์ต๋๋ค.
์์ง ํ์ฅ์ ๊ฒฝ์ฐ์๋ ๋ณดํต ์๋ฒ์ ์คํฉ์ ์ฌ๋ฆฌ๊ฑฐ๋, ๋ ๊ณต์ฌ๋ฅผ ํด์ ๋ฐ์ดํฐ ์๋ฒ๊ฐ ์ฌ์ฉํ๋ ๋ ์ฑ๋ฅ์ ํค์ด๋ค๊ฑฐ๋ ๋์คํฌ๋ฅผ ์ฆ์คํ์ฌ ์ ์ฅ๊ณต๊ฐ์ ํค์ฐ๋ ํํ๋ก ๋ณดํต ์๋ฒ๊ฐ ์ ์ง๋ฉ๋๋ค.
์ํ ํ์ฅ์ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ์ฌ ์๋ฒ ๋
ธ๋๋ฅผ ๋๋ฆฌ๊ฑฐ๋, ๋์คํฌ ๋
ธ๋๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ๋ง์ดํฌ๋ก ์๋ฒ๋ฅผ ๋์ ํ๋ก์ธ์ฑ์ ๋งก๊ธฐ๋ ๋ฑ์ ์ฒ๋ฆฌ๋ฅผ ํตํ์ฌ ์ฑ๋ฅ์ ๋๋ฆฌ๋ฉฐ ๋ณดํต ์ด๋ฐ ์ฒ๋ฆฌ๊ฐ ๋ฌด์ ์ง๋ก ์ด๋ฃจ์ด์ง๊ฑฐ๋ Write Lock๋ง์ ํตํ์ฌ ์งํํฉ๋๋ค.
ํ์ฅ์ฑ์ ๊ฒฝ์ฐ ์ด๋ ๋ค ์ ๋ ๋ค ์๊ธฐ๊ฐ ๋ง์ง๋ง ์ฃผ๊ด์ ์ผ๋ก ์ํํ์ฅ์ด ์์งํ์ฅ์ ๋นํด ์์ ํ๊ณ ์๊ธ ์ธก๋ฉด์์ ํจ์จ์ ์ด๋ฉฐ ๊ฐ์ข
์ํ์ ๋ํ์ฌ ์์ ํฉ๋๋ค. (Fail-over, Multi region)
์ํ ํ์ฅ์ ํตํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ํ ๊ฒฝ์ฐ ์ค๋ฉ(Sharding ํน์ Horizontal Partitioning)์ ํ๊ฒ ๋๋๋ฐ ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ ์ฅ์๋ฅผ ๋ถ๋ฐฐํ๊ณ ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ์ง๊ณ ํ ๋,ย ๋ฆฌ๋ ์ญํ ์ ํ๋ ์ปดํจํฐ์ ์กฐํ ์์ฒญ์ ๋ณด๋ด๊ณ ๋ฆฌ๋ ์ปดํจํฐ์์ ๋ถ์ฐ๋(์ค๋ฉ๋) ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ์ ๋ชฉ์ ๋
ธ๋์์ ์ถ์ถํ๊ณ ์ง๊ณํ์ฌ ๋ฐํํ๊ฒ ๋ฉ๋๋ค. ๋ฌผ๋ก ์ด๋ฐ ๋ฆฌ๋-์ปดํจํฐ ๊ตฌ์ฑ์ฒ๋ผ ๋ฏธ๋คํฐ์ด(Middle-tier) ํํ๋ก ์๋ํ๋ ๊ฒ๋ ์์ง๋งย Hibernate Shards์ ๊ฐ์ด ์ดํ๋ฆฌ์ผ์ด์
๋ ๋ฒจ์์ ๋์ํ๋ ๊ฒฝ์ฐ๋ ์์ผ๋ฉฐ ์ด๋ง์ ๋ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด์์ ์ง์ํ๋ ์ผ์ด์ค๋ ์์ต๋๋ค.
<๊ทธ๋ฆผ 3.3 ํํฐ์
๋์ ๋ํ ๊ฐ๋จํ ์ค๋ช
๊ทธ๋ฆผ>
๊ฐ์ฉ์ฑ์ ๊น๊ฒ ์ดํด๋ณด๋ฉฐ
์ด๋ฒ์๋ ์๊น ๋ง์๋๋ฆฐ ๊ฐ์ฉ์ฑ์ ๊น๊ฒ ์ดํด๋ด
์๋ค.
๊ฐ์ฉ์ฑ์ ๋ค์๋งํดย โ์๋ฒ๊ฐ ์ผ๋ง๋ ์์ ์ ์ผ๋ก ์ค๋ซ๋์ ์ด์๋๊ณ ์๋"๋ฅผ ์๋ ค์ฃผ๋ ์ฑ์ง์
๋๋ค. ์๋ฒ๊ฐ ์ ์ง๋๋ ์๊ฐ(๋ค์ดํ์)์ ์ต์ํ ํ๋ ๊ฒ์ด ๊ถ๊ทน์ ์ผ๋ก ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
์์ง ํ์ฅ์ ๊ฒฝ์ฐ์๋ ์ด๋ฐ ์ฒ๋ฆฌ๊ฐ ๋ค์ ๋ํดํ ์์๋ก ์๋ฆฌ ์ก๊ณ ์์ต๋๋ค. ์๋ฒ ์์ฒด๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ ํ ๋ ์ด๋ฅผ ๋์ฒด ํด ์ค ์ ์๋ ์๋ฒ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ๋ง๋
ํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ธ๋ฐ ์ด ๋๋ฌธ์ ๋ณ๋์ ๋ชจ๋ํฐ๋ง์ด๋ ๋๋ฆฌ์(Proxy)๋ฅผ ๋๊ฒ ๋ฉ๋๋ค.
์์ง ํ์ฅ์ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ ๋์คํฌ์ ๋ฐ์ดํฐ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ๊ณ ๋ฐ์ดํฐ์๋ฒ ์์ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ๋ถ์ฌ ์ํ๊ฒ์ฌ(Health Check)์ดํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ํ์ฐจ ๋ฐ์ดํฐ๋ฒ ์ด์ค (Secondary or Slave or Stand by)๋ฅผ ํ์ฑํ(Idle,ย Promote to master)ํ์ฌ ์๋์ผ๋ก ์ ์ํ ํฉ๋๋ค. ์ด๋ ๋ค ํ๋๋ผ๋ ๋ฐ์ดํฐ์ผํฐ๊ฐ ์ง์ญ์ ์ผ๋ก ํ๊ณณ์ ์๋ค๋ฉด ์ฒ์ฌ์ง๋ณ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์๋น์ค๋ ๋ค์ด๋ฉ๋๋ค.
ํํ.. ์ด์ ์กฐ๊ธ๋ง ๋ ์ฝ์ผ๋ฉด ๋๋ฉ๋๋ค! ๋ณต์ต ์ฐจ์์์ ์๋ ๊ด๋ น ๋งํฌ๋ฅผ ์ดํด๋ณด์ธ์!
๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ (DBGuide)
NHN์ ์๊ณผ ๋ฐ: Sharding Platform (Naver D2)
DFS: Not a Distributed Database
์ด๋ค ๋ถ์ฐ ํ์ผ ์์คํ
์ ์ฌ์ฉํด์ผ ํ๋๊ฐ? (Naver D2)
ํด๋ฌ์คํฐ์ ๋ฆฌํ๋ฆฌ์ผ์ด์
์ ์ฐจ์ด๊ฐ ๋ญ๊ฐ์?
<๊ทธ๋ฆผ 4.1 slave ๊ด์ ์์์ failover ์์>
Fail-over ์ ๋ต์ ๋ํด์๋ ์๋ ๋ค์ํ๊ธฐ์ ์ฌ๊ธฐ์ ๋ชจ๋ ๊ฒ์ ์ค๋ช
๋๋ฆด ์๋ ์๊ณ , ๊ธฐํ๊ฐ ๋๋ฉด ์ถ๊ฐ ํฌ์คํ
์ ํ๊ณ ๋งํฌ๋ฅผ ์ด๊ณณ์ ์ฐ๊ฒฐํด๋๋ฆฌ๊ฒ ์ต๋๋ค.
์กฐ๊ธ ํน์ดํ fail-over ์ ๋ต์ผ๋ก๋ ๋ฐ๋๋งจ ์ค์์น(Deadman switch)๊ฐ ์์ต๋๋ค. ์ ๋ต์ด๋ผ๊ธฐ ๋ณด๋ค๋ ์ผ๋ฐ์ ์ธ fail-over๊ฐ ์ด์ ๊ทผ๊ฑฐํ์ฌ ๋์๊ฐ๋ค๋ผ๊ณ ์ค๋ช
๋๋ฆด ์ ์์ ๊ฒ ๊ฐ์๋ฐ์ DB ์์ Load Balencer๊ฐ ๋ถ์ด ์ด์์ ์ ๊ฐ์งํ์ฌ ๋ ํ๋ฆฌ์นด๋ฅผ ๋์ฒดํ๊ฑด M-M ๊ตฌ์ฑ์์ Master์ ์ด์์ ์ ๊ฐ์งํ์ฌ ์น๊ฒฉ๊ณผ์ ์ ๊ฑฐ์น๊ฑด ๋ ์ด์์ ๋
ธ๋๊ฐ์ ์ฝ์๋ ํจํท๊ณผ ๋ฐ์ก ์๊ฐ์ ์ ํ์ฌ ๊ทธ๊ฒ์ด ๋์ฐฉํ์ง ์์ผ๋ฉด ์ด์์ผ๋ก ๊ฐ์งํ์ฌ ๋ฐ๋๋งจ ์ค์์น๊ฐ ์ผ์ง๋ ๋ฐฉ์์
๋๋ค.
์๋น์ค์ ์์ ์ฑ์ด ๊ฐ์ฅ ์ค์ํ์ง๋ง ๋๋ฒ์งธ๋ก ์ค์ํ ๊ฒ์ ์ฑ๋ฅ์
๋๋ค. ์ฌ์ฉ์๋ ์ ์ ์ฆ๊ฐ์ ์ด๊ณ ์ ์ํ ์๋ต์ ๋ฐ๋ผ๊ณ ์๊ณ ์ฐ๋ฆฌ๋ ๋ ๋ง์ ์์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ง ๋์ ์ ๋ณด ์ป์ด ๋ค๋ฅธ ์
์ฒด์ ๊ฒฝ์ํด์ผ ํฉ๋๋ค.
ํผํฌ๋จผ์ค(Performance)๋ฅผ ํฅ์์ํค๋ ์ ๋ต๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก๋ Explain๊ณผ slow query ๋ก๊ทธ ๋ถ์์ ํตํด ์ฟผ๋ฆฌ ํ๋์ ์ต์ ํ ํ๋ ๊ฒ์ด ์์ผ๋ฉฐ ์ด๋ ๋ง์ ๋น์ฉ์ด ๋ค์ง๋ ์์ต๋๋ค. ๋ฌผ๋ก ์ด๊ฒ๋ ๋ฐฉ๋ฒ๋ก ์ด ๋ง์ต๋๋ค. (์ปค๋ฒ๋ง ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ปฌ๋ผ ์์ฒด์ ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๋ ๊ด์ , recency score๋ฅผ ๋๊ฑฐ๋ ๋ฑ)
๋๋ฒ์งธ๋ ํ๋(Tuning)์ด ์์ต๋๋ค. ๋๋ฌด ๋น์ฐํ๊ฒ ์ง๋ง ์ ์ผ ํจ์จ์ ์ธ ์ฑ๋ฅ์ ์ํด์๋ ์๋น์ค์ ํน์ฑ์ด ๋ง๊ฒ DB๊ฐ ์ธํ
๋๊ณ ๋์๊ฐ์ผ ํฉ๋๋ค. ์๋น์ค์ ๋ง๊ฒ ์คํ ๋ฆฌ์ง ์์ง ํ์
์ ๋ฐ๊พธ๊ฑฐ๋ ์ธ๋ฑ์ค๋ฅผ ์๋กญ๊ฒ ์ค์ ํ๊ฑฐ๋ ์ธ๋ฑ์ค ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๊พธ๊ฑฐ๋, ์์ถ ๋ฐฉ์์ ๋ฐ๊พธ๊ฑฐ๋ ๋ฒํผ ์บ์๋ฅผ ์์ ํ๋ ๋ฑ์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ธ๋ฒ์งธ๋ ์๋น์ค ๋ถ์ฐ ์ํคํ
์ฒ๋ฅผ ์ค๊ณํ์ค ์๋ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ถํฐ๋ ๋น์ฉ์ด ๋์๋๊ฒ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ์๋น์ค์ ํน์ฑ์ ๋ฐ๋ผ ์ ํํ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๋ฐ์ดํฐ์์ค์์ ๊ด๋ฆฌํ๊ณ ์ถ๋ค๋ฉด DW(Data warehouse)๋ฅผ, ๋น์ ํํ ์ ํํ ๊ด๊ณ์์ด ์ฌ๋ฌ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ํ๋ก์ฐ๋ฅผ ๊ตฌ์ถํด์ผ ํ๋ค๋ฉด ํ๋ก ๋ ์ด์ด๋ฅผ, ๋น์ ํํ ๋ฐ์ดํฐ๋ฅผ ๊ด๊ณ์ฒ๋ฆฌ ์์ด ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด MongoDB๋ฅผ, ์๋ง์ ๋ฐ์ดํฐ๋ฅผ K-V(Key-Value) ํํ๋ก ํ์ฅ์ฑ์๊ฒ ๋ถ์ฐ๊ธฐ๋ฐ ์์์ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด ์นด์ฐ๋๋ผ๋ฅผ ๊ณ ๋ คํ์ค ์๋ ์์ต๋๋ค. ์ด๋ฌํ ์ ํ์ ๊ฒฝ์ฐ์๋ ๊ฐ ์๊ตฌ์ฌํญ์ ์ฌ๋ฌ ์ ํ๊ตฐ์ด ์์ผ๋ฉฐ ๊ฐ๊ฐ์ ๋์กฐ๊ตฐ์ ๊ฐ ํ๋์ ๋ง๊ฒ ํ
์คํธ ํ์ ํ ์ฌ์ฉํ์๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๋ค๋ฒ์งธ๋ ์๋น์ค์ ๋ง๊ฒ๋ ์ถ๊ฐ ์๋น์ค๋ฅผ ๋ถ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ๋ก์ฐ๋ฅผ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ถํฐ๋ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค๊ฐ ์๋ ๋ค์ํ ์๋น์ค๋ฅผ ์ฐ๊ตฌํ๊ณ ์กฐํฉํด์ผ ํฉ๋๋ค. ์๋ฅผ๋ค์ด ์ฑ๋ฅ์ด ํผํฌํ์์ ์น์๊ณ (๋ณดํต ์คํ์ดํฌ ์น๋ค๊ณ ํฉ๋๋ค.) ๋ฐ์ดํฐ ์ฝ์
์ด ๋ง์ด ๋ฐ์ํ์ง๋ง ๊ด๊ณํ ์ฟผ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง ์๋ ์๋น์ค์์๋ (์ฑํ
์๋น์ค: ์ฑ๋ด, ๋ฉ์์ง๋ฑ์ ๋ํํ ์๋น์ค)์์๋ nosql์ด๋ ์๋จ์ queue๋ฅผ ๋ถ์ธ ์๋น์ค๋ฅผ ๊ณ ๋ คํ์ค ์ ์์ต๋๋ค. ์ฝ๊ธฐ ๋น๋ฒํ๊ณ ์์ ์ด ๊ฐ๊ฐํ ๋ฐ์ํ๋ค๋ฉด Redis๋ Memcached ์บ์ ๋ ์ด์ด๋ฅผ ์๋จ์ ๋ถ์ด๋ ๊ตฌ์ฑ์ ๊ณ ๋ ค ํด ๋ณด์ค ์๋ ์์ต๋๋ค. ์๋น์ค ์์
์ ์ฆ์์ฑ์ด ์๊ตฌ๋์ง ์๋๋ค๋ฉด MapReduce๋ฅผ ํตํ ๋ฐฐ์น ๋ฐฉ์์ ๊ณ ๋ คํ์ค ์๋ ์์ต๋๋ค.
NoSQL, DW, RealtimeDB, Serverless QueryEngine, Graph Database?!!!!?!
๋ชจ๋ ์๋ฃ๊ฐ ๊ทธ๋ ๋ฏ์ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง ํน์ ์ฟผ๋ฆฌ ์์ง์ ์ฅ๋จ์ ์ ๋ฅ ๋ค์ด๋ธํ์ฌ ๊ฒ์ฆํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ด ํฌ์คํธ๋ฅผ ํตํด โ์ฐ๋ฆฌ ์๋น์ค๋ ~~์ ๋ง๊ฒ ๋ค" ๋ผ๋ ํ๊ฐ์๋ฃ๋ก ์ฐ์ผ ์ ์์ต๋๋ค. HDD๋ฅผ ์ฃผ์ ํด์ฃผ์ธ์.
ํ์๋ ์ด๋ฐ ๋ถ๋ถ์ ์ ๋ฌธ๊ฐ๊ฐ ์๋๊ณ ๋ชจ๋ ๋ ์ด์ด๋ฅผ ๋ค ์ฌ์ฉํ ์ ๋๋ก ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ๊ฑฐ๋ํ์ง๋ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ค์ ํ๋ก๋์
์ ์ ์ฉํด๋ณด์ง ์๊ณ ๋ด๋ฆฌ๋ ๋ง์ฐํ ํ๊ฐ์ ๋ถ๊ฐํฉ๋๋ค.
์ ํต์ ์ธ RDBMS ์๋น์ค๋ฅผ ์ด์ฉํ๋ฉด์ ์๊ธด ๋ถํธ์ฌํญ๋ค (๋ณต์กํ ๊ด๊ณ ๊ตฌ์กฐ๋ก ์ธํด ์๊ธด ์ ์ฝ๋ค - ๋ถ์ฐ, ์ด ์ฉ๋ ์ ์ฝ, ํ
์ด๋ธ ์ฉ๋์ ์ฝ, ํ์ฅ์ ์ฝ, ์คํค๋ง๋ก ์ธํ ๋ฐ์ดํฐ ํ์์ ์ฝ ๋ฑ)์ ๋ฒ์ด๋๊ณ ์ ๊ด๊ณ์ ์ผ๋ฉ์ฌ ์์ง ์์, ๊ทธ๋ฆฌ๊ณ SQL์ธ์ ๋ค๋ฅธ ํํ์์ ์ง์ํ๋ ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋์ค๊ฒ ๋์๋๋ฐ ์ด๋ฅผ NoSQL (Not only SQL)์ด๋ผ ๋ถ๋ฆ
๋๋ค.
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ๋ฌ ์ข
๋ฅ๊ฐ ์๋๋ฐ ์ผ๋ฐ์ ์ผ๋ก RDBMS ์ฒ๋ผ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ๊ฐ์๋ฐ ์ธ๋ถ์ ์ผ๋ก ๊ฐ๊ฐ์ ๊ธฐ๋ฅ์ด ์ฐจ์ด๊ฐ ๋๋ ๊ฒ์ด ์๋๋ผ ์ ๋ง ํต์ฌ ๊ธฐ์ ๋ถํฐ ๊ทธ ๊ธฐ๋ฅ์ด ๋ค๋ฅธ ์ข
๋ฅ๋ค์ด ๋ง์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์๋ ค์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ MongoDB, Cassandra, HBase, Redis ๋ฑ์ด ์์ผ๋ฉฐ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ AWS DynamoDB, Google Cloud BigTable ๋ฑ์ด ์๊ณ IBM๋ DB2์์ NoSQL์ ๋ถ๋ถ์ ์ผ๋ก ์ง์ํ๋ค๊ณ ํ๋๋ฐ ์ ๊ฐ ์ฌ์ฉ์ํด๋ด์ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
NoSQL์ ACID๋ฅผ ์ง์ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ์์ ํ ์ง์ํด์ผํ๋ ์๋น์ค์ ์ ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. CAP ์ด๋ก ์ผ๋ก ๋ณผ ๋ ๋ณดํต ํ์ ์ฑ(Scalability)์ ์ํด ์ผ๊ด์ฑ(Consistency)์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
์์์ NoSQL์์๋ GraphQL ์ง์์ ํ๋ ๋ ํ๊ธฐ ์์ํ์ฌ ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ๋ฅผ ๊ณ ๋ คํ๋ ์
์ฒด์์๋ ํ
์คํธ๋ฅผ ์งํํด๋ณด๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ๊ฐ์ NoSQL๋ณ ์ฐจ์ด์ ์ด ์กด์ฌํ๋๋ฐ ๊ฐ๋ตํ ์์ฑํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
๋ผ์ด์ผ์ค:ย GNU AGPL v3.0 (Free, and Commercial), Open source
๋ฆฌํ๋ฆฌ์ผ์ด์
: ์ง์ (M-S)
์ค๋ฉ: ์ง์ (ํด์๊ธฐ๋ฐ)
์ฃผ๊ด์ ๋ด์ฉ: ๋ชฝ๊ณ ๋๋น๋ AGPL ๋ผ์ด์ผ์ค๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ (๋ฌผ๋ก ์ปค๋จธ์
๋ผ์ด์ผ์ค๋ ์์ต๋๋ค.) AGPL ๋ผ์ด์ผ์ค๋ ์์
์ ์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง.. ๋ชจ๋ ์์ค์ฝ๋๋ฅผ ๊ณต๊ฐํด์ผ ํ๋ ์๋ฌด๊ฐ ์์ต๋๋ค. (GPL์ ๊ฒฝ์ฐ ์๋ฒ ํต์ ์ ํ๋ ๊ฒฝ์ฐ ํํผ ํ ์ ์๋๋ฐ, AGPL์ ์์งค์์ด ๊ณต๊ฐํด์ผ ํฉ๋๋ค.) ์ด๋ ์ฌ์
์ ์์ด ๋ง์ด ๊ณ ๋ฏผํด์ผ ํ ํญ๋ชฉ์
๋๋ค. ๊ทธ ๋ฐ์ ๊ธฐ์ ์ ์ผ๋ก๋ ๋ชฝ๊ณ ๋๋น ํ์ผ์ด ๊นจ์ง๋ ์ด์๋ผ๋๊ฐ ๋ณต์กํ ์กฐ์ธ ๊ตฌํ ์ฝ๋๊ฐ ๊ฑฐ์ ์ด์ธ๊ธ ์ฝ๋๋ผ ๊ทธ๋ฐ ๋ถ๋ถ๋ง ๊ฐ๋น์ด ๊ฐ๋ฅํ๋ฉด ์ฌ์ฉํ๋ ๋ฐ ํฐ ์ง์ฅ์ ์๋ค๊ณ ๋ด
๋๋ค. (๊ฒ๋ ๊ฒ์ฃผ๊ณ ์ฌ์ฉํด๋ ์ข๋ค๋ก ๋๋ด๋ ํํํจ)
๋ผ์ด์ผ์ค:ย Apache License 2.0 (Free), Open source
์
์ฒด: Apache Software Foundation
๋ฆฌํ๋ฆฌ์ผ์ด์
: ์ง์ (replication_factor)
์ค๋ฉ: ์ง์ (ํด์๊ธฐ๋ฐ)
์ฃผ๊ด์ ๋ด์ฉ: ์นด์ฐ๋๋ผ๋ ๋ถ์ฐ์ ์ง์ ํ๋ ์ต์
์ด ๋น๊ต์ ๊ฐ๋จํ๊ณ ์ด๋ฅผ ์ค์ ํด ๋๊ธฐ๋ง ํด๋ ๊ณ ๊ฐ์ฉ์ฑ ๋ถ์ฐ ์๋น์ค๋ก ๋์๋์ด ์๋นํ ํธ๋ฆฌํ๊ธด ํ์ง๋ง ํธ๋์ญ์
๋ ๋ฏธ์ง์, Secondary Index๋ Range์ฟผ๋ฆฌ๋ฅผ ๋ฏธ์ง์ ์ถ๊ฐ Index ๋ฏธ์ง์ ๋ฑ๋ฑ์ Trade Off ํด์ผํ ์ฌํญ์ด ์์ผ๋ ๋์
์ ์ถฉ๋ถํ ๊ฒํ ํด์ผ ํฉ๋๋ค.
๋ผ์ด์ผ์ค:ย Apache License 2.0 (Free), Open source
์
์ฒด: Apache Software Foundation
๋ฆฌํ๋ฆฌ์ผ์ด์
: ์ง์
์ฃผ๊ด์ ๋ด์ฉ:ย ํ๋ก ์คํ์ ์ฌ์ฉํ๋ ์
์ฒด๋ผ๋ฉด ์์ธ ์ด์ ๊ฐ ๋ ์์ ์ ๋๋ก ์๋ ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉ ๋๋ ์์ง์
๋๋ค. HBase๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ผ ๋ญ ํ๋ก ๋ถ์ฐํ์ผ์์คํ
(HDFS) ์์ ์กด์ฌํ๋ ๊ฑฐ๋ํ ๋ฐ์ดํฐ์์ ๋น ๋ฅด๊ฒ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ผ ๋ ์ด๊ธฐ ๋๋ฌธ์ ํน์ง์ด ๋๋ ทํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ๋น์ฐํ๊ฒ ์ง๋ง HBase๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ธฐ๋ณธ์ ์ธ ํ๋ก์คํ์ ์ดํด๋ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ง์
์ฅ๋ฒฝ์ ์๋์ ์ผ๋ก ๋์ต๋๋ค. ์ ๊ธฐํ ๊ฒ์ HBase์์๋ TTL์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ๋ง๋ฃ์๊ฐ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก HBase๋ย secondary index๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ผ๋ฐ์ ์ผ๋ก RDBMS์์ ์ฌ์ฉํ๋ ๋ณต์กํ ๊ด๊ณ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌํํ์ค ์ ์์ต๋๋ค.
๋ผ์ด์ผ์ค: BSD 3-Clause (Free and Commercial), Open source
์
์ฒด:ย Salvatore Sanfilippo
๋ฆฌํ๋ฆฌ์ผ์ด์
:ย ์ง์ (M-S)
์ค๋ฉ:ย ๋ฏธ์ง์ (์ดํ๋ฆฌ์ผ์ด์
๋ ๋ฒจ์์ Hash๋ฅผ ํตํด ์ง์ํด์ผ ํจ)
์ฃผ๊ด์ ๋ด์ฉ: Redis๋ ์ธ๋ฉ๋ชจ๋ฆฌ ์บ์ DB์ด๊ธฐ ๋๋ฌธ์ ์ญํ ๊ตฐ์ด ๋๋ ทํฉ๋๋ค. ์ฐ์ ์ํ๊น์ด ์ ์ Redis๋ ์ฑ๊ธ ์ฐ๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ Redis ๋ช
๋ น ์ค ์ผ๋ถ๋ ๋ธ๋ฌํน์ ๊ฑธ๋๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ํ๋ก๋์
๋ ๋ฒจ์์ ์ด์ํ ๋ ์น๋ช
์ ์ผ ์ ์์ต๋๋ค. Redis๋ ํด๋ฌ์คํฐ๋ฅผ ํตํ ๋ถ์ฐ๊ณผ ์ผํฐ๋ฌ์ ํตํ Fail-over๋ฅผ ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ K-V, Hash, List, Set ๋ฑ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. RDB๋ AOF๋ผ๋ ์ฐ๋ ๋ฐฉ์์ ๊ฐ์ง๊ณ ์๋๋ฐ ๋ ๋ชจ๋ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ์๋ค๋ฉด ๋ ๋์ค ์ฌ์์์ ๋ง์ ์๊ฐ์ด ์์ ๋ ์ ์์ต๋๋ค. (์ ์ฅ์ ๊ฒฝ์ฐ childProcess๋ฅผ forkํ์ฌ ์งํํฉ๋๋ค. // AOF๋ rewrite์ ๊ฒฝ์ฐ์๋ง ์ด๋ ๊ฒ ๋์ํฉ๋๋ค.) ๊ฐ์ ์บ์ DB ๋ ๋ฒจ์ ์๋ Memcached๋ ๋น๊ตํด๋ณด๋ฉด ๋๋ถ๋ถ์ ์๋ต์๋์ ์ฑ๋ฅ์ ๊ฒฝ์ฐ ํฌ๊ฒ ์ฐจ์ด๋ ์์ต๋๋ค. Redis๋ replication์ ์๋ฌ์ ๋ํด์ ์ฒ๋ฆฌ ์๋ฌ๋ฅผ ํธ๋ค๋ง ํ ์ ์์ผ๋ฉฐ ๋์์ ์ฌ๋ฌ ๋ฆฌํ๋ฆฌ์ผ์ด์
๊ตฌํ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ํ ์๊น ๋ง์๋๋ ธ๋ฏ Redis๋ Memcached์ ๋น๊ตํ์์ ๋ ๋ง์ ๋ฐ์ดํฐ ํ์
์ ์ ๊ณตํ๊ณ ์๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ค๋ง Flush ํธ์ถ์ Memcached ๋์๋ฐฉ์๊ณผ ์ ํ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ธ๋ญํน์ด ๊ฑธ๋ ค ๋๋ฌธ์ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ Flush ํ ๊ฒฝ์ฐ ์๋น์ค ์์ฒด ๋์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ทธ ๋ฐ์๋ Redis๋ Memcached์ ๋นํด ๊ธฐ์กด ์ ์ฅ๋ ๋ฐ์ดํฐ ์ ์ง๋ฅผ ์ํ ๊ธฐ๋ฅ์ด ๋ง์ต๋๋ค.
๋ผ์ด์ผ์ค: BSD 3-Clause (Free), Open source
์
์ฒด:ย Danga_Interactive
๋ฆฌํ๋ฆฌ์ผ์ด์
: ์ง์ (repcached)
์ค๋ฉ: ๋ฏธ์ง์ (์ดํ๋ฆฌ์ผ์ด์
๋ ๋ฒจ์์ Hash๋ฅผ ํตํด ์ง์ํด์ผ ํจ)
์ฃผ๊ด์ ๋ด์ฉ: Memcached๋ Redis์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ๋ฉ๋ชจ๋ฆฌ ์บ์ DB ์์ญ์์ ์กด์ฌํ๊ณ ์์ต๋๋ค. Redis์๋ ๋ค๋ฅด๊ฒ ๋ฉ๋ชจ๋ฆฌ ๋ณธ์ฐ์ ๋ชฉ์ ์ ๋ง๋ ๊ฐ๋จํ K-V ํํ์
๋๋ค. Redis์ ๋น๊ต ํ ๊ฒฝ์ฐ ํฌ๊ฒ Flush all์ ๋์๋ฐฉ์์ด ๋ค๋ฅด๋ฉฐ Memcached์์ ํจ์ฌ ๋น ๋ฅด๊ฒ ๋์ํฉ๋๋ค. (Memcached์์๋ ์ค์ ๋ก ๋ฐ์ดํฐ Flush๋ฅผ ์ผ์ผํค์ง ์๊ณ timestamp๋ฅผ ๊ธฐ๋กํ๊ณ ์๋ค๊ฐ ๋์ค์ GET ๋์์ ๋ ์ด๋ฅผ ๋น๊ตํ์ฌ ์ญ์ ํฉ๋๋ค.) ๋ฐ๋ผ์ ์ด๋ฌํ ์ฐจ์ด์ ์ด ์คํ๋ ค ๋์์ฒ๋ฆฌ์ ์์ด ์๋์น ์์ ์คํ์ ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. Memcached์์๋ flush all์ expired time์ ์ต์
์ผ๋ก ์ค ์ ์๋๋ฐ ์ฌ์ ์ flush all๋ก ์ญ์ ํ๋ค ํ๋๋ผ๋ ์ดํ flush all [exptime] ์ต์
์ ํตํด ์์ง๊น์ง ์ญ์ ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ ์ํฌ ์ ์์ต๋๋ค. (๋ฌผ๋ก exptime์ ์ํด ์ธ์ ๊ฐ๋ ์ญ์ ๋ฉ๋๋ค.)
๋ผ์ด์ผ์ค: ์ ๋ฃ ๋ผ์ด์ผ์ค (์๊ธ๋ณด๊ธฐ)
์
์ฒด: Amazon Web Service (AWS)
๋ฆฌํ๋ฆฌ์ผ์ด์
: ์ง์ (Server-less ๊ตฌ์ฑ, ์์ฒด ๋ด๊ฒฐํจ์ฑ ์ง์)
์ค๋ฉ: ์ง์ (Server-less ๊ตฌ์ฑ, ์์ฒด ๋ถ์ฐ)
์ฃผ๊ด์ ๋ด์ฉ: DynamoDB๋ AWS์์ ์ ๊ณตํ๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ ๋ฒ ์ด์ค์ NoSQL DB ์
๋๋ค. ์ฌ๊ธฐ์ ํฐ ํน์ง์ DynamoDB๋ Server-less ํ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ ์ฉ๋, ๋ฌผ๋ฆฌ์ ์คํฉ ์ ํ์ด ์์ผ๋ฉฐ ์ฉ๋ ํฌ๊ธฐ, ์ฌ์ฉ์๊ฐ ์ง์ ํ ์ฒ๋ฆฌ๋(Through-put)์ ๋ง๊ฒ ์์์ ํ์ฅ๋๊ณ ํด๋ฌ์คํฐ๋ก ๊ด๋ฆฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ฉ์ฑ, ํ์ฅ์ฑ์ ์์ด์ ์ฌ์ฉ์๋ก ํ์ฌ๊ธ ๊ท์ฐฎ์ ์์
์ด ๋ง์ด ์๋ต๋๋ฉฐ Server-less์ด๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ์ ๋ง์ ๋น์ฉ์ด ๋๊ฐ ์ฐ๋ ค๊ฐ ์ฌ๋ผ์ง๋๋ค. ๋ํ Secondary index ์ง์์ Global, Local๋ก ๊ฐ๊ฐ ์ง์ํ๊ณ ์์ต๋๋ค. ๋ค๋ง ๊ด๋ฆฌํ ์๋น์ค๋ผ ๊ทธ๋ฐ์ง ๊ฐ์๊ธฐ ๋ง์ ์ฒ๋ฆฌ๋์ด ๋ฐ์ํ ๋ DynamoDB์์ ์ฆ์ ์ฒ๋ฆฌ๋์ ๋๋ฆด ์ ์๋ ๋ฌธ์ , ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ๋์์ง ์ฒ๋ฆฌ๋์ ๋ค์ ๋ฎ์ถ๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฝ์ด ์์ต๋๋ค.ย ๋ฐ๋ผ์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ค๋ฉด Warming up ์์
์ ํด์ผํ๊ณ ์ด๋ก ์ธํด ๋ถํ์ํ ๋น์ฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋๋ผ์ด ์ ์ด ํ๋ ์๋๋ฐ DynamoDB์์๋ ํธ๋์ญ์
์ ์ง์ํ๊ธฐ ์ํ Java ์ฝ๋๊ฐ ์ฌ๋ผ์ ์์ต๋๋ค.
๋ผ์ด์ผ์ค: ์ ๋ฃ ๋ผ์ด์ผ์ค (์๊ธ๋ณด๊ธฐ)
์
์ฒด: Google Cloud Platform (GCP)
๋ฆฌํ๋ฆฌ์ผ์ด์
: ์ง์ (Server-less ๊ตฌ์ฑ, ์์ฒด ๋ด๊ฒฐํจ์ฑ ์ง์)
์ค๋ฉ: ์ง์ (Server-less ๊ตฌ์ฑ, ์์ฒด ๋ถ์ฐ)
์ฃผ๊ด์ ๋ด์ฉ: Google Cloud Datastore๋ AWS DynamoDB๋ณด๋ค ์ฝ 4๋
์ ๋ ์ผ์ฐ ๋์จ ์๋น์ค์
๋๋ค. ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ก๋ ๋น์ฐํ๊ฒ๋ ์๊ธ์ฒญ๊ตฌ ๋ฐฉ์์ด ๋ค๋ฆ
๋๋ค. (AWS DynamoDB๋ Throughput ๋จ์ ์ฒญ๊ตฌ, Google Cloud Datastore๋ ์์ฒญ๋น ๊ณผ๊ธ) ์์ ์ ๋์ ๊ณผ๊ธ์ด๋ผ ์ด๊ธฐ ๋น์ฉ์ด ์ ๊ฒ ๋๋ ํฉ๋ฆฌ์ ์ธ ๊ตฌ์ฑ์ด์ง๋ง DynamoDB์ ๋น๊ต ํ ๋ ์์ฒญ์ด ๋ง์์ง ์๋ก Google Cloud Datastore ์๊ธ์ด ๋ ๋น์๋๋ค. (์์ ๋น์ ๋๊ตฌ์ผ!?)ย ๋ค๋ง secondary index๋ผ๋์ง Query ์ง์(GQL)์ด๋ผ๋์ง ํ NoSQL ์์๋ค์ด ๋ค๋ถํด์ย ์ด๋ฅผ ์๊ณ ์ฌ์ฉํ๋ฉด ์ ๋ง ์ ์ฉํ์ง๋ง ์ ์ ์๋ฒฝ์ ๋ด๋ฆฌ์ง ์์๋ค๋ ๋ง์ด ์ฆ๋ช
๋๋ฏ ์ด๋ฐ ์ข์ ๊ธฐ๋ฅ๋ค์ ๋ํ ์๋ฃ๊ฐ ํ์์ด ๋ถ์กฑํ ์ํ์
๋๋ค.
๋ผ์ด์ผ์ค: ์ ๋ฃ ๋ผ์ด์ผ์ค (์๊ธ๋ณด๊ธฐ)
์
์ฒด: Google Cloud Platform (GCP) Firebase
๋ฆฌํ๋ฆฌ์ผ์ด์
: ์ง์ (Server-less ๊ตฌ์ฑ, ์์ฒด ๋ด๊ฒฐํจ์ฑ ์ง์)
์ค๋ฉ: ์ง์ (Server-less ๊ตฌ์ฑ, ์์ฒด ๋ถ์ฐ)
์ฃผ๊ด์ ๋ด์ฉ: ์ต๊ทผ์ ์๋กญ๊ฒ ์ถ์๋ (๋ฒ ํ๋ก) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ํ์๋ Google Cloud Datastore์ ๋์ฒด ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ๋ง์ด ํผ๋ ๋์์ต๋๋ค. ์๋ฐํ๊ฒ Google Cloud Firestore์ ๊ฒฝ์ฐ์๋ Firebase์ ๋ถํธํจ ์ (Query์ ๋ถํธํจ, ๋ฐ์ดํฐ ๊ณ์ธต์ ๋ฌธ์ ๋ฑ)์ ๋ณด์ํ๊ธฐ ์ํ ๋ถ๋ถ์ด ์์ผ๋ฉฐ Firebase์ ๋ชฉ์ (Web, App์ ์ง์)์ ์์๋ฐ๊ธฐ ๋๋ฌธ์ Google Cloud Datastore ์ฐจ์ด๊ฐ ์์ต๋๋ค. (๋๊ตฐ๋ค๋ Cloud Firestore๋ Realtime์ ์ง์ํฉ๋๋ค!) ๋ฐ๋ผ์ Firebase Realtime Database์ ๋น๊ตํ๋ ๊ฒ์ด ๋ ๋ฐ๋์งํฉ๋๋ค.ย Cloud Firestore๋ Firebase ๋ฐ Cloud Function ๊ณผ ๊ฐ์ GCP ์ ํ์ ํธํํ ์ ์๊ฒ ๋ง๋ค์ด ์ก์ต๋๋ค.
์์ ์๋ ์ปดํจํฐ ํ๋์จ์ด์ ์ปดํจํ
ํ์๋ ์ฝํ๊ณ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ถ์ ํ ์ ์๋ ํ๊ฒฝ๋ ์ฌ๊ฑด๋ ์์์ต๋๋ค. ์ค๋ ๋ ์์๋ ์ปดํจํ
ํ์๋ ๋์์ก๊ณ ๋ํ ์ปดํจํ
์ ๋๋ ๊ต์ฅํ ์ ๋ ดํด์ก์ผ๋ฉฐ ๊ฐ์ํ ๊ธฐ์ ๊ณผ ๋ถ์ฐ ๊ธฐ์ ๋ ๋๋ ํ ๋์์ก๊ธฐ ๋๋ฌธ์ ๋ถ์ฐ ํ๊ฒฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ ๋ถ์ํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. DW๋ ๋ณดํต OLAP์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
Realtime DB๋ ์ค์๊ฐ์ฑ ํน์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋
น์ฌ ์ป์ด๋ธ ๊ฒฐ๊ณผ๋ฌผ์ด๋ผ ๋ณผ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ํน์ง์ผ๋ก๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ ์ด ๋ฐ์ํ๋ฉด ์ด๋ฅผ ํด๋ผ์ด์ธํธ์ ํธ์ํ์ฌ ๋๊ธฐํ ํ๋ ๊ธฐ๋ฅ์ด ๋ค์ด๊ฐ ์์ต๋๋ค. ๋๊ฒ์ Realtime DB๋ NoSQL ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ACID๋ฅผ ์๊ตฌํ๋ ์๋น์ค์์ ์ ์ฉํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ๋ณดํต ์ค์๊ฐ์ฑ์ด ์๊ตฌ๋๋ ๊ฒ์(์ง์ง๋ก ์ ๋ง๋ก ์ค์๊ฐ DB๋ก ๊ฒ์์ ๋ง๋๋ ์ฌ๋ก๋ค์ด ์์ต๋๋ค.), ๋ฉ์์ง ํ๋ซํผ(์ฑํ
, ์ฑ๋ด, CS ๋ฑ)์์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ํ์ ์ธ Realtime DB ์ข
๋ฅ
Druid (๊ฒํ ๊ฐ ํ์ํจ)
4. Serverless query engine
Serverless๋ผ๋ ์๊ธฐ๋ ์๋ฒ๊ฐ ์ง์ง๋ก ์๋๊ฒ ์๋๋ผ ์ฌ์ฉ์ (์์ง๋์ด)์ ์์ด์ ์๋ฒ๊ฐ ๊ฐ๋ ค์ ธ ์๊ณ ๋ ๊ทธ๊ฒ์ ์ ํ์๊ฐ ์๋๋ก ๊ด๋ฆฌ๋๊ณ ์๋ ์์ ๊ด๋ฆฌํ ์๋น์ค ์
๋๋ค. ๋ณดํต ์ด๋ฐ Serverless DB๋ Cloud ํ๊ฒฝ์์ ์ ๊ณต๋๊ณ ์์ผ๋ฉฐ ํด๋น ํ๊ฒฝ์ ํ์ผ์์คํ
(FS)์ ์ฟผ๋ฆฌ๋ฅผ ์์ฒญํ๋ฉด ๊ฑฐ๊ธฐ์ ์ต์ ํ๋ ์ฝ์ด ์ ๋์ ์๋ฒ๋ฅผ ๋ฐ์นํ์ฌ ์ฐ์ฐ์ ๋ถ์ฐํ๊ธฐ ๋๋ฌธ์ ์๋นํ ๋น ๋ฅธ ์ฟผ๋ฆฌ ์กฐํ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค. ๋ค๋ง ์ฝ์ด ์ ๋์ ์กฐ์์ด ๋ถ๊ฐ๋ฅ ํ๊ธฐ ๋๋ฌธ์ Scale ์กฐ์ ์ ํตํด ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.ย
๋ํ์ ์ธ Serverless query engine์ ์ข
๋ฅ
AWS Spectrum (*๋ฐ Serverless๋ผ๊ณ ํด์ผ ํ ๋ฏ ํฉ๋๋ค.)
Firebase Realtime Database
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๊ธด ์ด๋ ค์ฐ๋ ๋ถ๋ช
์ฟผ๋ฆฌ๋ฅผ ํตํด ์ง๊ณ, ์กฐ๊ฑด ๋ฑ์ ์ด์ฉํ์ฌ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฐ์ถํ๋ ์์ง์ ์นญํฉ๋๋ค. ๋ณดํต ๋ฐ๋ผ๋ถ๋ ์์์ด๊ฐ โInteractive Queryโ์ด๋ฉฐ ๊ณต์ฉ ๋ถ์ฐ ํ์ผ์์คํ
์์ ๋ฐ์ดํฐ ๋ ์ดํฌ(Data lake) ์ญํ ์ ํ๊ณ ๊ทธ๋ฅผ ์กฐํํ์ฌ ๊ฒฐ๊ณผ๋ฐ์ดํฐ๋ฅผ ๋ฝ๋ ์์ง์ Query engine์ด๋ผ ๋ถ๋ฆ
๋๋ค.
๋ํ์ ์ธ Query engine ์ข
๋ฅ
์์ ๊ฑฐ๋ก ํ ๋ชจ๋ Serverless query engine
์ต๊ทผ์ ์์ฃผ๋ณด์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์
๋๋ค. ํ์๋ ์๋กญ๊ฒ ๋์ค๋ ๋
ผ๋ฌธ์ ์ดํด๋ณด๋ ์คํ์ผ์ ์๋์ง๋ผ ์ด๊ฒ์ด ์ด๋์์ ๋ฐ์์ ์ ์ฐจ ์ถ์๋๊ณ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. DAG(Directed Acyclic Graph) ๊ธฐ๋ฐ์ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํํ๋ก ์ถ์๋๊ณ ์์ต๋๋ค.
๋ํ์ ์ธ Graph Database์ ์ข
๋ฅ
DynamoDB Titan (๊ฒ์ฆ ํ ์ฌ ์
๋ฐ์ดํธ ์์ )
์ฐธ๊ณ ํ๊ฑฐ๋ ์ฐ๊ด ๋ ํฌ์คํ
๋ชฉ๋ก
Amazon Redshift: Performance Tuning and Optimization (Slideshare)
แแ
ฉแแ
ณแซแแ
ฉแแ
ณ แแ
ฆแแ
ตแแ
ฅแแ
ฆแแ
ตแแ
ณ, แแ
ณแซแแ
ขแผ แแ
ฅแแ
ตแแ
ณแแ
ฆ แแ
ฅแบแแ
กแฏแแ
ณแฏ แแ
ขแแ
ตแฏแแ
ก. (Slideshare)
[์ผ์์ ๋
: ๋๋๊ณ ] ์๋ฒ ์ํคํ
์ฒ - SPOF ์๋ ๋ถ์ฐ MMORPG ์๋ฒ (Slideshare)
Apache Cassandra ํบ์๋ณด๊ธฐ - 1ํธ (NHN-Enterย Toast)
Apache Cassandra ํบ์๋ณด๊ธฐ - 2ํธ (NHN-Enterย Toast)
Apache Cassandra ํบ์๋ณด๊ธฐ - 3ํธ (NHN-Enter Toast)
Dremel: Interactive Analysis of Web-Scale Datasets (Research at Google)
Kafka New Producer API๋ฅผ ํ์ฉํ ์ ์ค ์๋ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์ ์ก (SKํ๋๋ ๊ธฐ์ ๋ธ๋ก๊ทธ)
๊ตฌ๊ธ ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ์คํ ์ด์์ ์คํธ๋กฑ ์ปจ์์คํด์์ ์ด๋ฒค์ธ์ผ ์ปจ์์คํด์์ ๊ท ํ์ก๊ธฐ (nurinamuโs the BLACK BOOK)
[๋ถ์ฐ์บ์] Redis ์ memcache์ flush๋ ์ ๋ค๋ฅผ๊น? (Charsyam's Blog)
ZooKeeper๋ฅผ ํ์ฉํ Redis Cluster ๊ด๋ฆฌ (Naver D2)
Memcached์ ํ์ฅ์ฑ ๊ฐ์ (Naver D2)
๊ธ๋ก๋ฒ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค Spanner (Naver D2)
์ ๋ ์ง์ฝ๋ฏน์ค๋ ๊ตฌ๊ธ์ฑ์์ง์ ์ ํํ๋ (Slideshare)
์นด์นด์คย โ๋ ๋์ค, ์๋ชป์ฐ๋ฉด ๋งํ๋ค" (ZDNet Korea)
Apache spark ์๊ฐ ๋ฐ ์ค์ต