14. ํ์ฅ ๊ฐ๋ฅํ NoSQL ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ณตํ๋ DynamoDB
14. ํ์ฅ ๊ฐ๋ฅํ NoSQL ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ณตํ๋ DynamoDB ๊ด๋ จ
DynamoDB๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ณตํ๋ ์๋น์ค์ ๋๋ค. DynamoDB๋ ์๋ง์กด์์ ๊ฐ๋ฐํ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฉฐ ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ์ค์น, ์ด์, ํ์ฅํ์ง ์์๋ ์ํ ๋ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ ์๋น์ค์ ๋๋ค.
ํ๋ฆฌ ํฐ์ด์์ ์ฌ์ฉ ๊ฐ๋ฅ
DynamoDB๋ ํ๋ฆฌ ํฐ์ด์์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. 2014๋ 4์ ๊ธฐ์ค์ผ๋ก ๋งค๋ฌ ์คํ ๋ฆฌ์ง 100MB, ์ฐ๊ธฐ ์ฉ๋ 5์ ๋, ์ฝ๊ธฐ ์ฉ๋ 10์ ๋์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
DynamoDB๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ๋ ์ฑ๋ฅ๊ณผ ํธ์์ฑ, ๋๊ท๋ชจ DB ๊ตฌ์ถ์ ํ์ํ ๋น์ฉ์ ์ ๊ฐํ๋๋ฐ ์์ต๋๋ค. ์ฝ๊ธฐ์ ์ฐ๊ธฐ๊ฐ ๋งค์ฐ ๋น๋ฒํ๊ณ ์ฒ๋ฆฌ ์๋๊ฐ ๋นจ๋ผ์ผ ํ๋ ํ๊ฒฝ, ์์ ์ฉ๋์ ๋ฐ์ดํฐ๊ฐ ๋งค์ฐ ๋ง์ ๋, ๊ณ ๊ฐ์ฉ์ฑHigh Availability์ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฒด์ ์ผ๋ก ์ด์ํ๊ธฐ์๋ ๋ถ๋ด๋ ๋ ์ ํฉํฉ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ฐ์ผ ๊ฒ์๊ณผ ์์ ๋คํธ์ํฌ์ ๊ฐ์ ์๋น์ค์ ์ ์ฉํฉ๋๋ค. ๋จ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์ Transaction, ์กฐ์ธJoin๊ณผ ๊ฐ์ ๋ณต์กํ ์ฟผ๋ฆฌ๊ฐ ํ์ํ ํ๊ฒฝ์๋ ์ ํฉํ์ง ์์ต๋๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ ์, ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์์ผ ํฉ๋๋ค. ๋ํ, ํ ์ด๋ธ๊ฐ์ ๊ด๊ณ๋ฅผ Primary Key์ Foreign Key๋ฅผ ์ด์ฉํ์ฌ ์ ์ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋งSchema๋ผ๊ณ ํฉ๋๋ค. ๊ทธ๋์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฏธ๋ฆฌ ์ ํด์ง ์คํค๋ง์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ผ ํ๊ณ , ์คํค๋ง์ ๋ง์ง ์์ผ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ธฐ์กด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋ฌ๋ฆฌ ์คํค๋งSchema๊ฐ ์ ํด์ ธ ์์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ทธ๋ฆผ 14-1์์ ๋ณด๋ ๊ฒ๊ณผ ๊ฐ์ด ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ๋ ์ ์ฉํฉ๋๋ค. ๋ฌผ๋ก ์ ํํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋ ๋ฉ๋๋ค.
DynamoDB๋ ๋ฆฌ์ ๋ณ๋ก ์์ฑํ ์ ์์ผ๋ฉฐ ์ฑ๋ฅ๊ณผ ๊ฐ์ฉ์ฑ์ ์ํด ๋ฐ์ดํฐ๋ฅผ 3๊ณณ์ ๊ฐ์ฉ ์์ญAZ์ ๋ณต์ ํ์ฌ ์ ์ฅํฉ๋๋ค. ๊ฐ์ฉ ์์ญ์ด ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ ์ ์งํ๋๋ผ๋ DB๋ฅผ ์ ์์ ์ผ๋ก ์ฌ์ฉํ ์๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋์ ๊ฐ์ฉ์ฑ๊ณผ ์ง์์ฑ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
DynamoDB๋ ์ ์ฅํ ์ ์๋ ๋ฐ์ดํฐ ์ฉ๋์ ์ ํ์ด ์์ต๋๋ค. ๋ฐ์ดํฐ ์ฉ๋์ด ์ฆ๊ฐํ๋ฉด DynamoDB๊ฐ ์์์ ์คํ ๋ฆฌ์ง๋ฅผ ๋๋ฆฌ๊ณ ํด๋ฌ์คํฐ๋ฅผ ํ์ฅํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ์ํต๋๋ค.
๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ ์ด๋ธ์ ์ฉ๋์ด ์ปค์ง๋ฉด ์ค๋ฉSharding์ด๋ผ๋ ๋ฐฉ๋ฒ์ ํตํด ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐํด์ ์ ์ฅํ์์ต๋๋ค. ๊ทธ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ ์ค๋ฉ์ ์ง์ ๊ตฌํํ๊ฑฐ๋, DB์์ ์ง์ํ๋ ์ค๋ฉ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ ๋ฑ ๊ฐ๋ฐ๊ณผ ์ด์์ด ์๋นํ ๋ฒ๊ฑฐ๋ก์ ์ต๋๋ค. DynamoDB๋ ์ด๋ฐ ๊ฒ๋ค์ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ๋์ด๋๋ ๊ฒ์ ๋ํด ์ ๊ฒฝ์ ์ธ ํ์๊ฐ ์์ต๋๋ค.
์ค๋ฉ
์ค๋ฉ(Sharding)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถํ (ํํฐ์ ๋)ํ์ฌ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์๋ฒ ํ๋์ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํ๊ธฐ๋ ์ฝ์ง ์์ผ๋ฏ๋ก ์ฌ๋ฌ๋์ ๋ถํ ํ์ฌ ์ ์ฅํด์ผํฉ๋๋ค. ํ ์ด๋ธ ๋ณ๋ก ์๋ฒ๋ฅผ ๋ถํ ํ๋ ๋ฐฉ์, ์ฌ์ฉ์ ์ด๋ฆ ์, ๋ ์ง ์ ๋ฑ์ผ๋ก ๋ถํ ํ๋ ๋ฐฉ์, ํด์ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถํ ํ๋ ๋ฐฉ์ ๋ฑ ๋ค์ํ ๋ฐฉ์์ด ์์ต๋๋ค.
DynamoDB๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฒ๋ฆฌ๋์ ์ง์ ์ง์ ํ ์ ์์ต๋๋ค. ํธ๋ํฝ์ด ์ฆ๊ฐํ์ฌ ์ฌ์ฉ๋์ด ๋ง์์ง๋ฉด ์ฒ๋ฆฌ๋์ ๋๋ฆฌ๋ฉด ๋๊ณ , ์ฌ์ฉ๋์ด ์ ์ด์ง๋ฉด ์ฒ๋ฆฌ๋์ ์ค์ผ ์ ์์ต๋๋ค. ์ง์ ํ ์ฒ๋ฆฌ๋์ DynamoDB๊ฐ ์์์ ์ผ๊ด๋๊ฒ ์ ์งํฉ๋๋ค. ์์ธํ ์๊ธ์ AWS ์ฌ์ดํธ์ ์๊ธํ๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋ฐ๋๋๋ค.
DynamoDB์ SSD
DynamoDB์ ๋ชจ๋ ๋ฐ์ดํฐ๋ SSD(Solid State Drive)์ ์ ์ฅ๋ฉ๋๋ค.
DynamoDB ํ ์ด๋ธ ์ฒ๋ฆฌ๋ ๋ณ๊ฒฝ
์ด๋ฏธ ์์ฑ๋ DynamoDB ํ ์ด๋ธ์ ์ฒ๋ฆฌ๋์ ํ๋ฒ์ ์ต๋ 2๋ฐฐ์ฉ ๋์ผ ์ ์์ต๋๋ค(์ฒ๋ฆฌ๋์ ๋์ด๋ ํ์๋ ์ ํ์ด ์์ต๋๋ค). ๊ฐ์๊ธฐ ํธ๋ํฝ์ด ๋ง์์ ธ์ ์ฒ๋ฆฌ๋์ ๋์ด๋ ค๊ณ ํด๋ ๊ธฐ๋ณธ ์ฒ๋ฆฌ๋์ด ๋ฎ๊ฒ ์ค์ ๋ ์ํ์์๋ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌ๋์ ๋์ผ ์ ์์ต๋๋ค. ๋ํ, ์ฒ๋ฆฌ๋์ ๋์ฌ๋ ๋ฐ์๋๋๋ฐ ์๊ฐ์ด ๊ฝค ๊ฑธ๋ฆฝ๋๋ค. ๋ฐ๋ผ์ ์ค๋ฌด์์๋ ์ฒ๋ฆฌ๋์ ๋๋ํ ์ค์ ํด์ผ ํฉ๋๋ค.
์ฒ๋ฆฌ๋์ ๋ฎ์ถ ๋์๋ ํ๋ฒ์ ์ต์ ์น๊น์ง ๋ฎ์ถ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฒ๋ฆฌ๋์ ๋ฎ์ถ๋ ํ์๋ ํ๋ฃจ์ 4๋ฒ์ผ๋ก ์ ํ๋์ด ์์ต๋๋ค.