NoSQL์ด ์ ํํ๊ธฐ ์์ํ ์ง๋ ๋ฒ์จ ์ฌ๋ฌ ํด๊ฐ ์ง๋ฌ๊ณ ๋ง๋น๋ ธ๊ธฐ ๋์ผ์์๋ Redis๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ฒ๋ฐ์ธ ์๋ฒ ์์ง 2๋ MariaDB์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ๊ทธ๋ ๊ฒ ๊ฒฐ์ ํ ์ฃผ๋ ์ด์ ๋ ์ ๋ขฐ์ฑ์ ๋๋ค. ์๋ ๋งํฌ์ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ธ์.
-
http://www.quora.com/Quora-Infrastructure/Why-does-Quora-use-MySQL-as-the-data-store-instead-of-NoSQLs-such-as-Cassandra-MongoDB-or-CouchDB/answer/Adam-DAngelo
(๋ฒ์ญ: http://yonght.tumblr.com/post/47028978120/nosql-vs-mysql )
๋ง๋น๋ ธ๊ธฐ ๋์ผ์์๋ Redis๋ฅผ ๋งค์ฐ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์ต๋๋ค. Redis ์์์ ๋ณต์กํ ๋ฃจ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๊ฒ ๋๋ฉด์ ๋์์ฑ ๋ฌธ์ ์ DB ์ ๊ทผ ์ง์ฐ์๊ฐ ๋ฌธ์ ์์ ํด๋ฐฉ๋์๊ณ , Redis ์คํฌ๋ฆฝํธ๋ฅผ ๊ฒ์ ์๋ฒ์์ ๋งค๋ํ๊ฒ ํธ์ถํ ์ ์์ด์ ๋จ๊ธฐ ์์ฐ์ฑ๋ ๋์ด๋ ํจ๊ณผ๋ฅผ ๋๋ ธ์ต๋๋ค.
๊ทธ๋ฌ๋ ํธ๋์ญ์ ์ ์ ์ฉํ ์ ์๋ค๋ ์ ๋๋ฌธ์ ๋ผ์ด๋ธ ์๋น์ค์ ํ์ฉํ๊ธฐ์๋ ์ํํฉ๋๋ค. ์ค์ ๋ก ๋ง๋น๋ ธ๊ธฐ ๋์ผ์์๋ Redis ์คํฌ๋ฆฝํธ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง๋ ์ฌ๊ณ ๊ฐ ์์๊ณ , ๊ณ ํต์ค๋ฌ์ด ๋ฐ์ดํฐ ๋ณต์ ์์ ์ ๊ฑฐ์ณค์ต๋๋ค.
ํธ๋์ญ์ ์ด๋ผ๋ ๊ฐ๋ ์ด ์์ต๋๋ค. ์ํ ์ก๊ธ ๊ฐ์ ๊ฒ์ด ํธ๋์ญ์ ์ ์ํฉ๋๋ค. ๋ง๋ฆฌ๊ฐ ํผ๊ฑฐ์ค์๊ฒ ๋์ ๋ณด๋์ผ๋ฉด, ๋ง๋ฆฌ์ ๊ณ์ข์์ ๋์ด ์ค์ด๋๋ ์ผ๊ณผ ํผ๊ฑฐ์ค์ ๊ณ์ข์์ ๋์ด ๋์ด๋๋ ์ผ์ด ํจ๊ป ๋ฐ์ํด์ผ ํฉ๋๋ค. ๋ง๋ฆฌ์ ๊ณ์ข์์ ๋์ด ์ค๊ธฐ๋ง ํ๊ณ ํผ๊ฑฐ์ค์ ๊ณ์ข์์ ๋ณํ๊ฐ ์๋ค๊ฑฐ๋, ๊ทธ ๋ฐ๋๊ฐ ๋์ด์๋ ์๋ฉ๋๋ค. SQLServer๋ MySQL ๋ฑ์ RDBMS๋ ํธ๋์ญ์ ์ ์ง์ํ๊ธฐ ๋๋ฌธ์, ์ ์ ์ ์์คํ ์ฌ์ฐ์ ์์์ ์ผ๋ก ์ ์ฅํ๋ฉด์ ๋ค๋ฅธ ์ ์ ์์ ๊ฑฐ๋๋ฅผ ์์ ํ๊ฒ ๊ตฌํํ๊ธฐ ์ข์ต๋๋ค.
DB ์ฅ๋น ํ ๋๊ฐ ๋ผ ์ ์๋ ์ฑ๋ฅ์๋ ํ๊ณ๊ฐ ์์ต๋๋ค. ๊ฒ์์ด ๋๋ฐ๋ฌ์ ๋, DB ์ฅ๋น๊ฐ ๋ชจ๋ ์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด์, ๊ฒ์์ด ์ฌ๊ฐํ๊ฒ ๋๋ ค์ง๊ฒ ๋๊ณ , ์ฌ์ง์ด๋ ๊ฒ์ ์๋ฒ๊ฐ ์ด๋ฐ ์ํฉ์ ๋ฒํฐ์ง ๋ชปํ๊ณ ์ฃฝ์ด๋ฒ๋ฆฌ๊ธฐ๋ ํฉ๋๋ค. ๊ฒ์์ด ์๋ ์ผ๋ฐ์ ์ธ ์คํํธ์ ์์๋ DB ์ฅ๋น ํ ๋๋ง ์ฌ์ฉํ๋๋ก ์๋ฒ๋ฅผ ๋ง๋ค๊ณ , ์ ์ ๊ฐ ์ ์ ๋ง์์ง์ ๋ฐ๋ผ ์ฅ๋น ์ฌ๋ฌ ๋๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ์ฝ๋๋ฅผ ๊ณ ์น๋ฉด ๋์ง๋ง, ๊ฒ์์ ์ถ์ ์งํ์ ์ ์ ๊ฐ ๋ชฐ๋ฆฌ๊ณ , ๋ค๋ฆ๊ฒ ๋์ฒํ๊ธฐ์๋ ์๊ฐ์ด ๋ถ์กฑํ๋ฉฐ, ์ด ๋๋ฅผ ๋์น๋ฉด ์๋นํ ์์ ์ ์ (๊ทธ๋ฆฌ๊ณ ์๋น ๋ถ๋ถ์ ๋งค์ถ)๋ฅผ ์์ ์๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ, RDBMS์์ ํธ๋์ญ์ ์ ํ ๋์ DB ์ฅ๋น์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. RDBMS์ ํธ๋์ญ์ ๊ธฐ๋ฅ์ ๋น์ผ ๋ฒ์ ์์๋ง ์ธ ์ ์๊ฑฐ๋, ์ฌ๋ฌ DB ์ฅ๋น์ ๊ฑธ์ณ์ ์ฌ์ฉํ์ง ๋ชปํ๊ฑฐ๋, ์ฌ์ฉํ๋ ค๊ณ ํด๋(*1) ์ฑ๋ฅ์ด ํฌ๊ฒ ๋จ์ด์ง๋๋ค. ์์ ์จ๋ผ์ธ ๊ฒ์์ ํฌ๊ฒ MMORPG์ ์บ์ฃผ์ผ ๊ฒ์์ผ๋ก ๊ตฌ๋ถํ๋ ์์ ์๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๊ฑฑ์ ํ ํ์๊ฐ ๋ณ๋ก ์์์ต๋๋ค. MMORPG๋ค์ ๊ฒ์์ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ๋ ผ๋ฆฌ ์๋ฒ๋ก ๋๋๊ณ , ๊ฐ๊ฐ์ ๋ ผ๋ฆฌ ์๋ฒ์ ์ํ๋ ๋ฐ์ดํฐ๋ ํ ๋์ DB ์ฅ๋น์ ๋ชฐ์๋ฃ์ด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์บ์ฃผ์ผ ๊ฒ์์ ์ฌ๋ฌ ์ ์ ๋ฅผ ๋์์ผ๋ก ํ๋ ํธ๋์ญ์ ์ ์ธ ์ผ์ด ๋ณ๋ก ์์ด์ ๋ฌธ์ ๊ฐ ๋์ง ์์์ต๋๋ค.
*1: ๋ถ์ฐ ํธ๋์ญ์ , ํน์ XA ํธ๋์ญ์ ์ด๋ผ๊ณ ํฉ๋๋ค. ์ ๋ ์ด๊ฑธ ์ง์ ๊ฒช์ด๋ณด์ง๋ ๋ชปํ๊ณ , ์์ง๋ ์ ๋๋ฆด ์๋ฐ์ ์๋์ง, ์ ํํ ์ด๋ค ๊ฒฝ์ฐ์ ๋๋ฆฐ์ง ๊ถ๊ธํฉ๋๋ค. ๋ง๋น๋ ธ๊ธฐ ๋์ผ์ ๋ง๋ค๋ฉด์ ๊ฒฝํ ๋ง์ DBA ์ธ ๋ถ๊ป ์๋ฌธํด๋ดค์ ๋ ์ ๋ถ ๊ทผ์ฒ์๋ ๊ฐ์ง ๋ง๋ผ๊ณ ์กฐ์ธํด ์ฃผ์ ์ ์ฌ์ฉ์ ํฌ๊ธฐํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์์ฆ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋จ์ผ ์๋ฒ์ด๋ฉด์ ๋ฐฑ์๋ ํ๋ ์ด(๋ฉํ๊ฒ์)๊ฐ ๋ณต์กํ ๊ฒ์์ด ๋์ด๋ฌ์ต๋๋ค. ๋ชจ๋ฐ์ผ ๊ฒ์์ด ๋์ฒด๋ก ๊ทธ๋ ์ต๋๋ค. ์ด๋ฐ ๊ฒ์์ ์ ํต์ ์ธ ๋ฐฉ์์ผ๋ก RDBMS๋ฅผ ์ฌ์ฉํด์ ๋ง๋ค๊ธฐ๊ฐ ์ฝ์ง ์์ต๋๋ค. ๋ง์ ๊ฒ์ ์๋ฒ๋ค์ด NoSQL์ ์ฌ์ฉํด์ ๋ง๋ค์ด์ก์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ฒ๋ฐ์ธ ์๋ฒ ์์ง 2๋ MariaDB๋ฅผ ์ฐ๋, ์์ง์ด ์ค๋ฉ(์ํ ํํฐ์ ๋), ๋ถ์ฐ ํธ๋์ญ์ , ๋ํ๋จผํธ ๋ณ๊ฒฝ ๋ก๊ทธ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๋ ๋ฐฉ์์ ํํ์ต๋๋ค.
๋ฐ์ดํฐ ๋๊ธฐํ ๋ฐฉ์์ ํฌ๊ฒ ๋๊ด์ ๋๊ธฐํ์ ๋น๊ด์ ๋๊ธฐํ๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
๋๊ด์ ๋๊ธฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ผ๋จ ๊ณ ์ณ ๋ณด๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํ๋ ์ฌ์ด์ ๋ค๋ฅธ ๊ณณ์์ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์น์ง ์์์ผ๋ฉด ๊ทธ๋๋ก ๋๋ฉฐ, ๋ค๋ฅธ ๊ณณ์์ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ณค์ผ๋ฉด ๋กค๋ฐฑํ๊ณ ์ฒ์๋ถํฐ ๋ค์ ์์ํฉ๋๋ค. ๋๊ด์ ๋๊ธฐํ ๋ฐฉ์์ ์ฌ์๋ ํ๋ฅ ์ด ๋ฎ์ ๊ฒฝ์ฐ ์์คํ ์ ์ฒด์ ์ฑ๋ฅ์ด ์ข์ง๋ง, ์ฌ์๋ ๊ณผ์ ์ ๋ฒ๊ทธ๊ฐ ์์ ๊ฒฝ์ฐ ์ฌํํ๊ธฐ ๋งค์ฐ ํ๋ค๋ค๋ ์ฌ๊ฐํ ๋จ์ ์ด ์์ต๋๋ค.
๋น๊ด์ ๋๊ธฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์น๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ๋ฝ์ ์ก์์, ๋ค๋ฅธ ๊ณณ์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ๊ณ ์น์ง ๋ชปํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๋น๊ด์ ๋๊ธฐํ์๋ ๋ฌธ์ ๋ ์์ต๋๋ค.
- ๋ฝ ๋น ๋จ๋ฆฌ๊ธฐ: ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฑด๋๋ฆด ๋ ์ด๋ค ๋ฝ์ ์ก์์ผ ํ ์ง์ ๊ดํ ๊ท์น์ ์ง์ผ์ผ ํฉ๋๋ค.
- ๋ฐ๋๋ฝ: ๋ฝ์ ์ก๋ ์์๋ฅผ ์ ํํ ์ง์ผ์ผ ํฉ๋๋ค.
- ๊ณผ๋ํ ๋ฝ์ผ๋ก ์ธํ ์ฑ๋ฅ ์ ํ: ๋ฝ ๋จ์๋ฅผ ํฌ๊ฒ ์ก์์๋ก(coarse-grained) ์์คํ ์ ์ฒด์์ ๋์์ ์งํํ ์ ์๋ ํธ๋์ญ์ ์๊ฐ ๊ฐ์ํฉ๋๋ค. ๊ทน๋จ์ ์ธ ์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. DB ์ ์ฒด๋ฅผ ํ๋์ ๋ฝ์ผ๋ก ๊ฐ์๋ค๊ณ ์๊ฐํด ๋ด ์๋ค. ์ด๋ ๊ฒ ํด๋ ๋์์ด ์๋ชป๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ฌ๋ ๋์์ ์งํํ ์ ์๋ ํธ๋์ญ์ ์ ๋จ ํ๋์ ๋๋ค. ํธ๋์ญ์ ํ ๋ฒ์ 10ms ๊ฑธ๋ฆฐ๋ค๊ณ ์น๋ฉด ๋ ์์คํ ์ ์ฒด๊ฐ ์ด๋น 100ํธ๋์ญ์ ๋ฐ์ ์ฒ๋ฆฌ๋ฅผ ๋ชปํ๊ฒ ๋ฉ๋๋ค.
2๋ฒ๊ณผ 3๋ฒ์ ์๋ก ๊ธด์ฅ ๊ด๊ณ์ ์์ต๋๋ค. ๋ฝ ๋จ์๋ฅผ ํฌ๊ฒ ์ค์ ํ ์๋ก ์์คํ ์ ์ฒด์ ํธ๋์ญ์ ์ฒ๋ฆฌ๋์ด ๊ฐ์ํ๊ณ , ๋ฝ ๋จ์๋ฅผ ์๊ฒ ์ค์ ํ ์๋ก ์ก์์ผ ๋๋ ๋ฝ์ ์ข ๋ฅ๊ฐ ๋ง์์ ธ์ ์์๋ฅผ ์ ํํ ๋ง์ถ๊ธฐ๊ฐ ์ด๋ ค์์ง๋๋ค.
๊ทธ๋ฌ๋ ๋น๊ด์ ๋๊ธฐํ ๋ฐฉ์์ ์๋ ๋ฌธ์ ๋ ์์ง API๋ฅผ ์ฌ๋ ค๊น๊ฒ ์ค๊ณํด์ ๋ง์ ์ ์์ต๋๋ค.
์ค๋ฒ๋ฐ์ธ ์๋ฒ ์์ง 2์ ๋ฐ์ดํฐ ๋๊ธฐํ ๋ฐฉ์์ ์๋์ ๊ฐ์ด ์์ฝํ ์ ์์ต๋๋ค.
- ๋ฝ ๊ธฐ๋ฐ ๋น๊ด์ ๋๊ธฐํ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฝ์ ์ก๊ณ ํธ๋ ์ผ์ ์์ง์ด ์๋์ผ๋ก ์คํํฉ๋๋ค.
- ๋ฐ๋๋ฝ์ ๋ฐฉ์งํ๊ธฐ ์ํด, ํธ๋์ญ์ ์์ํ ๋ ์ด๋ค ์ข ๋ฅ์ ๋ฝ์ ์ก์์ง ๋ฏธ๋ฆฌ ๊ฒฐ์ ํ๊ณ , ์ค๊ฐ์ ๋ฝ์ ์ถ๊ฐํ ๋๋ ๋ฏธ๋ฆฌ ์ ์ํ ์์๋๋ก๋ง ํ์ฉํฉ๋๋ค.
- ๋ฝ ๋จ์๋ฅผ ๋๋ฌด ์ธ๋ถํํ๋ฉด 2๋ฒ์ด ๊ณ ํต์ค๋ฌ์์ง๋ฏ๋ก, ๋ฝ ๋จ์๊ฐ ์ ๋นํ ์ฑ๊ธฐ๋๋ก (coarse-grained) ํฉ๋๋ค. ์ด๋ฐ ์์น์ ๋ฐ๋ผ ์ ์ ํ ๋ช ์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ Document์ ๋ด๋๋ก ๊ถ์ฅํ๊ณ , Document ๋จ์๊ฐ ๊ณง ๋ฝ ๋จ์๊ฐ ๋๋๋ก ํ๊ณ , ๊ธ๋ก๋ฒ ํ ์ด๋ธ์์๋ ๊ฐ๋ณ ํ์ด ๋ฝ ๋จ์๊ฐ ๋๋๋ก ํ์ต๋๋ค.
์์ง์ด ์ ๊ณตํ๋ API๋ง ๊ฐ์ง๊ณ ํ๋ก๊ทธ๋๋ฐํ๋ฉด ๋ฐ์ดํฐ ์ ํฉ์ฑ์ด ๊นจ์ง๋ ๊ฒฝ์ฐ๋ ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ค๋ง, ์๋ชป ์ฌ์ฉํ์ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ๋จ์ด์ง ์๋ ์์ต๋๋ค. ์ด๋ฅผํ ๋ฉด, ๋ชจ๋ ์ ์ ๊ฐ ์ ๊ทผํ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๋ํ๋จผํธ์ ๋ชฐ์๋ฃ์ผ๋ฉด ๋งค์ฐ ๋๋ ค์ง๋๋ค. ์ด๋ฐ ์ ์ ์ดํดํ๊ณ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ก์์ผ ํฉ๋๋ค.