Clustering, Replication
Sharding
Partitioning
๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ ์ฅ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ฒ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๊ฐ ์ฃฝ์ผ๋ฉด ์ด๋ป๊ฒ ๋์ํ์ง?
์ ๋น๋กฏ๋ ์๊ฐ์ผ๋ก Clustering ๋ฐฉ์์ด ๋์ค๊ฒ ๋์๋ค
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ๋ง๋ค์! โ ํด๋ฌ์คํฐ๋ง
Clustering์ ์ฅ์
-
๋ฐ์ดํฐ ์ค๋ณต
Replication์ด ์ ์ฉ๋ Clustering ๊ธฐ๋ฒ์์ โ๋ฐ์ดํฐ ์ค๋ณตโ์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์ฌ์ด์ ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ํด ์ผ์ด๋๋ค. ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์๋ฒ์ ์ค๋ณต ์ ์ฅํ๋ฏ๋ก์จ ํ๋์ ์๋ฒ๊ฐ ๊ณ ์ฅ๋๋๋ผ๋ ๋ค๋ฅธ ์๋ฒ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์ ์๋ค. (RDB์์ "๋ฐ์ดํฐ ์ค๋ณต"์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ํด์ง๋ ์์์ด์ง๋ง, Clustering์ "๋ฐ์ดํฐ ์ค๋ณต"์ ์ฅ์ ๊ทน๋ณต ์ญํ ์ ์์๋ผ ํ ์ ์๋ค.)
-
๋ก๋ ๋ฐธ๋ฐ์ฑ
์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ก ๋ถํ๋ฅผ ๋ถ์ฐ์์ผ ์ฌ์ฉ์์ ์์ฒญ์ ๋ ๋ง์ด ์์ฉํ ์ ์๋ค.
-
๋์ ๊ฐ์ฉ์ฑ
์ฌ๋ฌ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ๊ฐ์ง๋ฏ๋ก ๋์ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ๋ค.
Clustering (Active - Active)
์ฌ๋ฌ ๋๋ก ๋๋ ์๋ฒ๋ฅผ Active(๋์์ค) ์ํ๋ก ๋๋ ๋ฐฉ์์ด๋ค.
์ฅ์
-
๋ฌด์ค๋จ ์๋น์ค ๊ฐ๋ฅ
ํ๋์ ์๋ฒ๊ฐ ์ฃฝ๋๋ผ๋ ๋ค๋ฅธ Active ์๋ฒ๊ฐ ๋์ ์์ฒญ์ ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ค๋จ์์ด ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์๋ค
-
์ฑ๋ฅ์ ์ธ ์ธก๋ฉด์์ ์ด๋
์๋ฒ 2๋๊ฐ ์ด์๋๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋ค. ์ด๋ ๋ฆฌ์์ค ์๋ชจ๊ฐ ํฌ๋ค๋ ๋จ์ ์ ๊ฐ๊ธฐ๋ ํ์ง๋ง ์ฑ๋ฅ์ ์ธ ์ธก๋ฉด์์ ์ด๋์ด ์๋ค
๋จ์
-
๋ณ๋ชฉ ํ์
๋ ๋์ ์๋ฒ๊ฐ ํ๋์ ์ ์ฅ์๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋ณ๋ชฉํ์์ด ๋ฐ์ํ ์ ์๋ค
-
๋น์ฉ ๋ฌธ์
๋ ๋์ ์๋ฒ๋ฅผ ๋์์ ์ด์ฉํด์ผํ๊ธฐ ๋๋ฌธ์ ๋น์ฉ์ด ๋ง์ด ๋ ๋ค
Clustering (Active - Standby)
ํ๋์ ์๋ฒ๋ง Active ์ํ๋ก ๋๊ณ , ๋ค๋ฅธ ์๋ฒ๋ Stand by ์ํ๋ก ๋๋ ๋ฐฉ์์ด๋ค. ๋ง์ฝ Active ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋, Standby ์ํ์ ์๋ฒ๋ฅผ Active ์๋ฒ๋ก ์ ํํ๋ค.
- Standby ์ํ : ๋์ํ์ง ์๋ ๋๊ธฐ ์ํ
์ฅ์
-
๋น์ฉ ์ ๊ฐ
Standby ์๋ฒ๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ Active-Active ๋ฐฉ์๋ณด๋ค ๋น์ฉ์ ์ ๊ฐํ ์ ์๋ค.
๋จ์
-
์ ํ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฐ๋ค
Active ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ฒจ Standby ์๋ฒ๋ฅผ Active ์๋ฒ๋ก ์ ํํ๋๋ฐ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฐ๋ค (์์ญ์ด ~ ์์ญ๋ถ)
์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์์ค๋๋ฉด ์ด๋ป๊ฒ ๋์ํ์ง?
์ ๋น๋กฏ๋ ์๊ฐ์ผ๋ก Replication ๋ฐฉ์์ด ๋ฑ์ฅํ๋ค
- ์๋ฒ๊ฐ ์ฃฝ์์ ๋ ์๋น์ค ์ ๊ณต ๋ฌธ์ โ ์๋ฒ๋ฅผ ์ฌ๋ฌ ๋ ๋๋ Clustering์ผ๋ก ํด๊ฒฐํ ์ ์๊ณ ,
- ๋ฐ์ดํฐ ์์ค๋ฌธ์ โ ์ ์ฅ์๋ฅผ ๋ณต์ ํ๋ Replication ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
Replication (๋จ์ ๋ฐฑ์ )
๊ธฐ๋ณธ์ ์ธ Replication ๋ฐฉ์์ Master DB(Primary DB)
์ Slave DB(Secondary DB)
๋ก ๊ตฌ์ฑ๋๋ค.
- ์ฌ์ฉ์๊ฐ Master DB๋ก CRUD๋ฅผ ์์ฒญํ๋ฉด ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ Slave DB์ ๋๊ธฐํํ๋ค.
- Slave DB๋ ๋จ์ํ ๋ฐฑ์ ๋ฐ ์กฐํ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
Primary DB
์ ๋ณต์ฌ๋ณธ์Replica
๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Replication์ ์ฌ์ฉํ๋ ์ด์
-
๋ฐ์ดํฐ ์ ์ค์ ๋ง๊ธฐ ์ํด์
๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ Replica์ ๋ณต์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋๋ผ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์ผํ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ ์ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
-
Replica๊ฐ Primary DB์ ์ญํ ์ ํ ์ ์๋ค.
Primary DB์ ๋ฌธ์ ๊ฐ ์๊ฒจ ๋์ํ์ง ์์ ๊ฒฝ์ฐ, Replica ์ค ํ๋๊ฐ Primary DB๊ฐ ๋ ์ ์๋ค.
-
์๋ต ์ง์ฐ ์๊ฐ์ ์ค์ผ ์ ์๋ค
์ฌ๋ฌ ๊ตฐ๋ฐ์์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์๋ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ํ๋ฉด, ๋ฌผ๋ฆฌ์ ์ธ ์์น์ ๊ด๊ณ์์ด ๋น ๋ฅธ ์๋ต ์๋๋ฅผ ๋ณด์ฅํ๋ค.
Replication Lag & ๋ฐ์ดํฐ ์ผ๊ด์ฑ
Primary DB์์ Secondary DB๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ Replication Lag
๋ผ ํ๋ค.
- ํธ๋์ญ์
1์ด ์ํ๋์ด Primary DB์ ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ๋ฉด ๋๊ธฐํ๋ฅผ ์ํด Secondary DB์ ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ๊ธฐ ์ํด ํธ๋์ญ์
2๊ฐ ์ํ๋๋ค. โ ์ด๋, ํธ๋์ญ์
2๊ฐ ์ํ๋๋ ์๊ฐ์
Replication Lag
๋ผ๊ณ ํ๋ค.
Replica๊ฐ ๋ง์ผ๋ฉด Replication Lag ์๊ฐ์ด ๊ธธ์ด์ง๋ค. ๊ฒฐ๊ตญ ์๊ฐ์ฐจ์ ์ํด Primary DB์ Secondary DB์์ ๋์ผ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋๋ฏ๋ก ๋ฐ์ดํฐ ์ผ๊ด์ฑ
์ 100% ์งํค์ง ๋ชปํ๋ค.
Synchronous Replication & Asynchronous Replication
-
Synchronous Replication
์ฌ์ฉ์๊ฐ Primary DB๋ก ๋ฐ์ดํฐ ์ฐ๊ธฐ ์์ฒญ์ ๋ณด๋์ ๋, Primary DB๊ฐ ๋ชจ๋ Replica์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฉํ ๋ค ์ฐ๊ธฐ ์์ฒญ์ ๋ํ ์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค.
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ง๋ง
- Replica์ ๋ชจ๋ ๋ฐ์ํ๊ธฐ์ ๊น์ง ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฐ๋ค. (๋ง์ฝ ํ๋์ Replica์ ๋ฐ์ดํฐ ๊ฐฑ์ ๋์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์ฐ๊ธฐ ์์ฒญ ์์ฒด๊ฐ ์คํจํ๋ค)
๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด ์ค์ํ ์์คํ ์์
Synchronous Replication
๋ฐฉ์์ ์ฌ์ฉํ๋ค. -
Asynchronous Replication
์ฌ์ฉ์๊ฐ ์ฐ๊ธฐ ์์ฒญ์ ๋ณด๋์ ๋, Primary DB์๋ง ์ ์ฉ ํ ๋ฐ๋ก ์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค. ์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๋ธ ํ ๋๋จธ์ง Replica์ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ฐ์ํ๋ค.
- ๋ฐ์ดํฐ ์ฐ๊ธฐ ์ฐ์ฐ ์๋๊ฐ ๋น ๋ฅด๋ค.(์๋ต์ด ๋น ๋ฅด๋ค)
- Secondary DB๋ Primary DB ๋ณด๋ค ์ต์ ๋ฐ์ดํฐ ๋ฐ์์ด ๋๋ฆด ์ ๋ฐ์ ์๋ค. โ ์ด์ ๊ฐ์ ์ง์ฐํ์์ Lag์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํผํฌ๋จผ์ค๊ฐ ์ค์ํ ์์คํ ์์
Synchronous Replication
๋ฐฉ์์ ์ฌ์ฉํ๋ค.
ํ๋์ ํฐ table์ 'ํํฐ์
(partition)'์ด๋ผ๋ ์์ ๋จ์๋ก ๋๋์ด ๊ด๋ฆฌ ๊ธฐ๋ฒ์ Partitioning
์ด๋ผ๊ณ ํ๋ค.
- Partitioning ๊ธฐ๋ฒ์ ํตํด ์ํํธ์จ์ด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถ์ฐ ์ฒ๋ฆฌํ์ฌ ์ฑ๋ฅ์ด ์ ํ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ๊ด๋ฆฌ๋ฅผ ๋ณด๋ค ์์ํ๊ฒ ํ ์ ์๊ฒ ๋์๋ค
Partitioning ๊ธฐ๋ฒ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
๋ฐ์ดํฐ์ ๊ท๋ชจ ๋ํ ๋์ฉ๋ํ ๋๋ฉด์, ๊ธฐ์กด์ ์ฌ์ฉํ๋ DB ์์คํ ์ย ์ฉ๋(storage)์ ํ๊ณ์ ์ฑ๋ฅ(performance)์ ์ ํ๋ฅผ ์ผ์ผ์ผฐ๋ค.
VLDB(Very Large DBMS)์ ๊ฐ์ด ํ๋์ DBMS์ ๋๋ฌด ํฐ table์ด ๋ค์ด๊ฐ๋ฉด์ ์ฉ๋๊ณผ ์ฑ๋ฅ ์ธก๋ฉด์์ ๋ง์ ์ด์๊ฐ ๋ฐ์ํ๊ฒ ๋์๊ณ , ์ด๋ฐ ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก Partitioning
๊ธฐ๋ฒ์ด ๋ฑ์ฅํ๋ค.
Partitioning์ ๋ชฉ์
-
ํน์ DML๊ณผ Query์ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.
์ฃผ๋ก ๋์ฉ๋ Data WRITE ํ๊ฒฝ์์ ํจ์จ์ ์ด๊ณ , ํนํ, Full Scan์์ ๋ฐ์ดํฐ Access์ ๋ฒ์๋ฅผ ์ค์ฌ ์ฑ๋ฅ ํฅ์์ ๊ฐ์ ธ์จ๋ค.
-
๋ฌผ๋ฆฌ์ ์ธ ํํฐ์ ๋์ผ๋ก ์ธํด ์ ์ฒด ๋ฐ์ดํฐ์ ํผ์ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ค๊ณ ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ์ด ํฅ์๋๋ค
๊ฐ ๋ถํ ์์ญ(partition๋ณ๋ก)์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฑ์ ํ๊ณ ๋ณต๊ตฌํ ์ ์๋ค.
-
ํฐ table๋ค์ ์ ๊ฑฐํ์ฌ ๊ด๋ฆฌ๋ฅผ ์ฝ๊ฒ ํด์ค๋ค.
Partitioning ์ฅ๋จ์
์ฅ์
- ํํฐ์ (partition)'์ด๋ผ๋ ์์ ๋จ์๋ก ๋๋์ด ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์์คํ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ค์ด ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ์ด ํฅ์๋๋ค.
- partition ๋จ์๋ก I/O ๋ถ์ฐ์ด ๊ฐ๋ฅํ์ฌ UPDATE ์ฑ๋ฅ์ ํฅ์์ํจ๋ค
- ๋ฐ์ดํฐ ์ ์ฒด ๊ฒ์ ์ ํ์ํ ๋ถ๋ถ๋ง ํ์ํ๊ธฐ ๋๋ฌธ์ Full Scan์์ ๋ฐ์ดํฐ Access์ ๋ฒ์๋ฅผ ์ค์ฌ ์ฑ๋ฅ ํฅ์์ ๊ฐ์ ธ์จ๋ค.
๋จ์
- table๊ฐ JOIN์ ๋ํ ๋น์ฉ์ด ์ฆ๊ฐํ๋ค.
Vertical Partitioning
ํ๋์ ํ ์ด๋ธ์์ ํฌ๊ธฐ๊ฐ ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ฑฐ๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ Attribute๋ฅผ ๋ ๋ฆฝ์ ์ธ ํ ์ด๋ธ๋ก ์ชผ๊ฐ๋ ๋ฐฉ์์ด๋ค.
- ํฌ๊ธฐ๊ฐ ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ Attribute :
BLOB
,Text
- ๋ฏผ๊ฐํ ๋ฐ์ดํฐ : ํจ์ค์๋
๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง Column์ ๊ฒ์ํ ๋ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ Vertical Partitioning์ ํตํด ์๋ฒ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
Horizontal Partitioning
Sharding๊ณผ ๋์ผํ ๊ฐ๋ ์ผ๋ก ์คํค๋ง(schema)๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๋๋์ด ์ ์ฅํ๋ ๊ฒ์ ๋งํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ถ์ฐ ์ ์ฅ ๊ธฐ์ ์์ ํํฐ์ ๋์ ์ํ ๋ถํ ์ ์๋ฏธํ๋ค.
- ๋ณดํต ์ํ ๋ถํ ์ ํ๋ค๊ณ ํ์ ๋๋ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์์ ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ๋ฅผ ์ง์นญํ๋ค.
Partitioning์ ์ธ์ ์ฌ์ฉํ ๊น?
- ํ
์ด๋ธ์ ํฌ๊ธฐ๊ฐ
2 GB
๋ณด๋ค ํฐ ๊ฒฝ์ฐ ํํฐ์ ๋์ ๊ณ ๋ คํด์ผํ๋ค. - ํน์ ๊ธฐ๊ฐ์ ๋ด์ฉ๋ง Updateํ ์ ์๊ณ , ์ด์ ๊ธฐ๊ฐ์ ๋ด์ฉ์ Read๋ง ๊ฐ๋ฅํ ๊ฒฝ์ฐ ํํฐ์ ๋์ ๊ณ ๋ คํด์ผํ๋ค. (Read๋ง ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ค์ ๋ค๋ฅธ ํ ์ด๋ธ๋ก ํํฐ์ ๋ํ๋ค)
๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์์ ๊ฒ์์ด ๋๋ฆฐ๋ฐ,, ๋ ๋น ๋ฅด๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น?
๋ผ๋ ์๊ฐ์์ ๋น๋กฏ๋์ด Sharding ๋ฐฉ์์ด ๋ฑ์ฅํ๋ค.
- ๋น ๋ฅธ ๊ฒ์์ ์ํด Table์ ๋๋์ โ Sharding
Sharding
ํ ์ด๋ธ์ Row(ํ) ๋จ์๋ก ๋๋์ด์ ์ฌ๋ฌ Shard์ ์ ์ฅํ๋ ๋ฐฉ์์ด๋ค.
- ํ๊ฒ ๋ฐ์ดํฐ๊ฐ ์ด๋ค Shard์ ์กด์ฌํ๋์ง๋ง ์๋ฉด ๊ฒ์์ ๋น ๋ฅด๊ฒ ์งํํ ์ ์๋ค
Sharding ํ์ดํผ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ๊ณ ๋ คํด์ผํ ์ฌํญ โ Shard Key
๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ป๊ฒ ๋ถ์ฐ์์ผ ์ ์ฅํ ์ง
๋ถ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฝ์ ์ง
Shard Key๋ ์ฌ๋ฌ Shard๋ฅผ ์ ํํ ์ง ๊ฒฐ์ ํ๋ ํค์ด๋ค. Shard Key ๊ฒฐ์ ๋ฐฉ์์ ๋ฐ๋ผ Sharding ๋ฐฉ๋ฒ์ด ๋๋๋ค.
Hash Sharding
Hash Function์ ์ฌ์ฉํ์ฌ Shard Key๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ์์ด๋ค.
Shard n
์์ n์ Shard Key์ด๋ค.
์ฅ์
-
๊ตฌํ์ด ๊ฐ๋จํ๋ค
Shard์ ์ ๋งํผ ํด์ฑํ์ฌ Shard Key๋ฅผ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ๊ตฌํ์ด ๊ฐ๋จํ๋ค
๋จ์
-
Shard๊ฐ ๋์ด๋๋ฉด ๊ธฐ์กด์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ค์ ๋ํ ์ ํฉ์ฑ์ด ๊นจ์ง๋ค.
Shard์ ๊ฐ์๊ฐ ๋์ด๋๋ฉด Hash Function์ ๊ณ์ฐ ๋ฐฉ์๋ ๋ณํ๊ธฐ ๋๋ฌธ์(
Id % Shard ๊ฐ์
) ๊ธฐ์กด์ ์ ์ฅ๋ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๋ค. โ ๊ธฐ์กด์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ค์ ๋ํ ์ ํฉ์ฑ ๊นจ์ง๋ค.Shard๋ฅผ ํ์ฅํ ๊ฒฝ์ฐ, Hash Sharding์ ์ฌ์ฉํ์ฌ Shard key๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ์์ ์ ์ ํ์ง ์๋ค.
-
Hash Function์ผ๋ก Shard Key๋ฅผ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ ํจ์จ์ด ์ข์ง ์๋ค
ํน์ Shard์ ๋ฐ์ดํฐ๊ฐ ๋ชฐ๋ฆด ์ ์๋ค.
Dynamic Sharding
Hash Sharding ๋ฐฉ์์ ํ์ฅ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Dynamic Sharding ๋ฐฉ์์ด ๋ฑ์ฅํ๋ค.
Locator Service
๋ผ๋ ํ ์ด๋ธ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Shard Key๋ฅผ ๊ฒฐ์ ํ๋ค.
์ฅ์
-
Shard ํ์ฅ์ ์ ์ฐํ๋ค
Shard๋ฅผ ์ถ๊ฐํ ๋, Locator Service์ ํด๋น Shard ์ ๋ณด๋ง ์ถ๊ฐํ๋ฉด ๋๋ค
๋จ์
-
Locator Service ์ ์์กด์ ์ธ ๋ฐฉ์์ด๋ค
๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐฐ์นํ ๊ฒฝ์ฐ, Locator Service๋ ๋๊ธฐํํด์ผํ๋ค.
Locator Service์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ(๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ Shard๋ฅผ ๊ณ ๋ฅด๋๋ฐ ๋ฌธ์ ๋ฐ์), DB์๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค
Hash Sharding, Dynamic Sharding์ ๊ฒฝ์ฐ key-value ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ NoSQL์ ์ ํฉํ ๋ฐฉ์์ด๋ค.
Entity Group
Entity Group์ ๊ด๊ณ๊ฐ ์๋ Entity๋ฅผ ๊ฐ์ Shard์ ์ ์ฅํ๋ ๋ฐฉ์์ด๋ค.
์ฅ์
๋จ์ผ Shard ๋ด์์ ์ฟผ๋ฆฌ๊ฐ ํจ์จ์ ์ด๊ณ ๊ฐํ ์์ง๋๋ฅผ ๊ฐ์ง๋ค
๋จ์
-
๋ค๋ฅธ Shard์ Entity์ ์ฐ๊ด๋ ๊ฒฝ์ฐ ๋นํจ์จ์ ์ด๋ค
์๋ก ๋ค๋ฅธ Shard ์์ Entity์ ์ฐ๊ด๋ ์ฟผ๋ฆฌ๋ฅผ ์ํํ ๊ฒฝ์ฐ ๋นํจ์จ์ ์ด๋ค.
Sharding์ ์ธ์ ํ ๊น?
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋ง์์ index ์ฌ์ด์ฆ๊ฐ ํฐ ๊ฒฝ์ฐ ์ค๋ฉ์ ๊ณ ๋ คํ๋ค. (index ์ฌ์ด์ฆ๋ฅผ ์ค์ฌ ์ ๊ทผ ์๋๋ฅผ ๋ํ๋ค)
- ์ง์ญ๋ณ๋ก
์ค๋ฉ์ ๋ฐ์ดํฐ๋ฅผ ํ๊ณณ์์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์กฐ์ํ๋๋ฐ์ ๋ณต์ก๋๋ฅผ ๋ํ๋ค. ๋ฐ๋ผ์ ์ค๋ฉ์ ์ฐ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํผํฌ๋จผ์ค๋ฅผ ์ฌ๋ฆด ๋ค๋ฅธ ๋ฐฉ๋ฒ(vertical partitioning, storage ํค์ฐ๊ธฐ)์ ์์๋ณด๊ณ ์ฌ์ฉํด์ผ ํ๋ค.
[10๋ถ ํ ์ฝํก] ๐จโ๐ปํ๋ธ๋ฆฌ์ Sharding, Clustering, Replication
Clustering vs Replicationย vs Sharding
์ค๋ฉ ์์คํ ๊ฐ์, NHN์ ์๊ณผ ๋ฐ: Sharding Platform, MySQL Shard ๋ฐ์ดํฐ ์ฌ๋ถ๋ฐฐ
[DB] DB ํํฐ์ ๋(Partitioning)์ด๋, Database์ ํํฐ์ ๋(Partitioning)์ด๋?
ClusterReplicationPartitioning.md
Clustering์ด ๋ฌด์์ธ๊ฐ์?
Replication์ด ๋ฌด์์ธ๊ฐ์?
Sharding์ด ๋ฌด์์ธ๊ฐ์?
Partitioning์ด ๋ฌด์์ธ๊ฐ์?