[Database] Sharding & Replication & Clustering
DB Sharding, Replication, Clustering
๐Partitioning
ํํฐ์
๋์ ์ผ๋ฐ์ ์ผ๋ก DB ํ
์ด๋ธ์ ์์ ๋ถ๋ถ์ผ๋ก ์ฌ๋ฌ ๊ฐ ๋๋๋ ๊ฒ์ ๊ฐ๋ฆฌํด.
Column์ ๊ธฐ์ค์ผ๋ก ๋๋๋ Vertical Partitioning(์์ง)๊ณผ Row๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋๋ Horizontal Partioning(์ํ)์ด ์๋ค.
๐Sharding
์ค๋ฉ์ ์ํ ํํฐ์
๋์ ํน์ํ ํํ. Shard key๋ผ๊ณ ์๋ ค์ง ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋๋จ. Shard key ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ์ฌ๋ฌ Sharding์ด ์์.
์ค๋ฉ์ ์ฌ๋ฌ ์๋ฒ์ ์คํค๋ง๊ฐ ๋ณต์ ๋จ. ๋ฐ์ดํฐ๋ Shard key๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฌ ๋
ธ๋๋ค์ ๋๋์ด ์ ์ฅ๋จ.
๊ฒ์ ์์ฒญ์ ๋ํ ๋ถํ๋ฅผ ์๋ก ๋ค๋ฅธ ์ค๋๊ฐ ์๋ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐํ ์ ์์.
์คํค๋ง๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ DB ํ์ฅ์ ์์ด์๋ ์ ์ฉ์ด ์ฌ์.
๐Replication
์ฌ๋ฌ ๊ฐ์ DB๋ฅผ ์์ง์ ์ธ ๊ตฌ์กฐ(Master - Slave)๋ก ๊ตฌ์ถํ๋ ๋ฐฉ์
- Master Node๋
์ฐ๊ธฐ์์ ๋ง์ ์ฒ๋ฆฌ, Slave Node๋์ฝ๊ธฐ์์ ๋ง์ ์ฒ๋ฆฌ. - ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ
- ์ฅ์
- DB ์์ฒญ์ ๋๋ถ๋ถ์ด Read์ด๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ์ ์ด์
- ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ด์๋์ด ์ง์ฐ ์๊ฐ์ด ๊ฑฐ์ ์์
- ๋จ์
- ๋ ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ๊ฐ ๋ณด์ฅ๋์ง ์์ ์ผ๊ด์ฑ์๋ ๋ฐ์ดํฐ๋ฅผ ์ป์ง ๋ชปํ ์ ์๋ค.
- Master ๋ ธ๋๊ฐ ๋ค์ด๋๋ฉด ๋ณต๊ตฌ ๋ฐ ๋์ฒ๊ฐ ๊น๋ค๋ก์
๐ปMySQL์ Replication

- Master ๋ ธ๋์ ์ฐ๊ธฐ ํธ๋์ญ์ ์ด ์ํ๋จ
- Master ๋ ธ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ํธ๋์ญ์ ์ ๋ํ ๋ก๊ทธ๋ฅผ ํ์ผ์ ๊ธฐ๋ก(BIN LOG)
- Slave ๋ ธ๋์ IO Thread๋ Master ๋ ธ๋์ ๋ก๊ทธ ํ์ผ(BIN LOG)๋ฅผ ํ์ผ(Replay Log)์ ๋ณต์ฌํ๋ค.
- Slave ๋ ธ๋์ SQL Thread๋ ํ์ผ(Replay Log)๋ฅผ ํ ์ค์ฉ ์ฝ์ผ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
๐Clustering
์ฌ๋ฌ ๊ฐ์ DB๋ฅผ ์ํ์ ์ธ ๊ตฌ์กฐ๋ก ๊ตฌ์ถํ๋ ๋ฐฉ์
- ํด๋ฌ์คํฐ๋ง์ ๋ถ์ฐ ํ๊ฒฝ์ ๊ตฌ์ฑํด Single point of failure์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ Fail Over ์์คํ ์ ๊ตฌ์ถํ๊ธฐ ์ํด์ ์ฌ์ฉ๋จ
- ๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ