Partitioning, Sharding, Replication

๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฅ (Scaling)
ํ์ฅ(Scalling)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ๊ฐ์ ํ๋ ์ ๋ต์ด๋ค. ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ์์3๊ฐ์ ์ ๋ต์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
- Partitioning(Vertical Partitioning)
- Sharding(Horizontal Partitioning)
- Replication
1๏ธโฃ Partitioning
Partitioning์ ํ๋์ ํ ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถํ ํ์ฌ ์ ์ฅํ๋ ๊ธฐ์ ์ด๋ค.

1-1. (Vertical) Partitioning: ์ปฌ๋ผ(์ด) ๋ถํ
- ์ปฌ๋ผ(์ด) ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๋๋ค.
- ์: ์ฌ์ฉ์ ์ ๋ณด ํ ์ด๋ธ์ ๊ธฐ๋ณธ ์ ๋ณด์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ก ๋ถ๋ฆฌ
- ์ฅ์ : ํน์ ํ๋์ ๋ํ ์ฟผ๋ฆฌ ์ต์ ํ
- ๋จ์ : ํ ์ด๋ธ ๊ฐ ๊ด๊ณ๋ฅผ ์ฒ๋ฆฌํ๋ Join ์ฐ์ฐ ํ์
1-2. Sharding (Horizontal Partitioning): ๋ก์ฐ(ํ ๋ถํ )
Sharding์ ๋ก์ฐ(ํ)๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๋๋ ๋ฐฉ์์ผ๋ก, Shard๋ผ๋ ๋ ๋ฆฝ์ ๋ฐ์ดํฐ ๋จ์๋ก ๋ถ๋ฆฌ๋๋ค.
- Range-based Sharding: ๊ฐ์ ๋ฒ์์ ๋ฐ๋ผ ๋ถํ
- ์: userID๊ฐ 11000, 10012000์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ ๋ค๋ฅธ Shard์ ์ ์ฅ
- Hash-based Sharding: ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ท ๋ฑ ๋ถ๋ฐฐ
- ์: hash(userID) % 4๋ก 4๊ฐ์ Shard์ ๋ฐ์ดํฐ ์ ์ฅ

- Composite Sharding: Range-based์ Hash-based ํผํฉ ์ฌ์ฉ

2๏ธโฃ Replication
Replication์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ค์์ ๋ ธ๋์ ๋ณต์ฌํ์ฌ ์ ์ฅํ๋ ๊ธฐ์ ์ด๋ค.
- ์ฐ๊ธฐ ๋ ธ๋์ ์ฝ๊ธฐ ๋ ธ๋๋ฅผ ๋ถ๋ฆฌํด DB์ ๋ถํ๋ฅผ ๋ถ์ฐ์ํจ๋ค.
- MySQL์์ Mastar-Slave(Read, Standby)๋ก ๋๋์์ ๋์ ์ด์ โ DB๋ก๋ ๋ถ์ฐ
- ๋ฐ์ดํฐ ์ ์ฅ์๋ก๋ถํฐ์ ์ฝ๊ธฐ์ ์ ๋ฐ์ดํธ ์์ ์ ๋ถ๋ฆฌํ๋ ํจํด
2-1. Replication ๋์ ๋ฐฉ์
1. Primary Node
- ์ฐ๊ธฐ ์์ ์ ๋ด
- ๋ฐ์ดํฐ ์์ ์ Secondary Node์ ๋๊ธฐํ ์ํ
2. Secondary Node
- ์ฝ๊ธฐ ์์ ์ ๋ด
- ๋๊ธฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๊ธฐ ์ฒ๋ฆฌ
2-2. Replication ์ฅ์ ๊ณผ ๋จ์
์ฅ์ | ๋จ์ |
์ฝ๊ธฐ ๋ถํ ๋ถ์ฐ: ์ฝ๊ธฐ ์์ฒญ์ด ๋ง์ ์์คํ ์์ ์ฑ๋ฅ ์ต์ ํ | ๋ฐ์ดํฐ ๋๊ธฐํ ์ง์ฐ: ์ผ๊ด์ฑ์ด ์ค์ํ ์์คํ ์์๋ ๋๊ธฐํ ์ง์ฐ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ |
๊ณ ๊ฐ์ฉ์ฑ: Primary Node ์ฅ์ ์ Secondary Node๋ก ๋์ฒด ๊ฐ๋ฅ | ๊ตฌํ ๋ณต์ก์ฑ: ๋๊ธฐํ ๋ก์ง๊ณผ ์ฅ์ ์ฒ๋ฆฌ ๊ตฌํ ํ์ |
2-3. CQRS ํจํด (Command and Query Responsibility Segregation)

Replication์ ํ์ฉํ CQRS ํจํด์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ์์ ์ ๋ถ๋ฆฌํ์ฌ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ๊ทน๋ํ ํ๋ค.
- Command: Primary Node์์ ์ฐ๊ธฐ ์์ ์ํ
- Query: Secondary Node์์ ์ฝ๊ธฐ ์์ ์ํ

3๏ธโฃ ๊ฒฐ๋ก
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฅ ์ ๋ต์ ์์คํ ์ ๊ท๋ชจ์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ ํ๋์ด์ผ ํ๋ค.
Partitioning, Sharding, Replication์ ๊ฐ๊ฐ ๊ณ ์ ์ ์ฅ์ ๊ณผ ๋จ์ ์ด ์์ผ๋ฉฐ ์ ์ ํ ์กฐํฉํ์ฌ ์ฌ์ฉํด์ผ ํ๋ค.
- Partitioning: ๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ์ต์ ํ ๋ฐ ๊ด๋ฆฌ ์ฉ์ด์ฑ ์ ๊ณต
- Sharding: ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ฒ๋ฆฌํ๋ฉฐ ์ํ์ ํ์ฅ ๊ธฐ๋ฅ
- Replication: ์ฝ๊ธฐ / ์ฐ๊ธฐ ๋ถ๋ฆฌ๋ฅผ ํตํด ์ฑ๋ฅ๊ณผ ๊ฐ์ฉ์ฑ ์ต์ ํ
์ต์ ํธ๋๋:
- Sharding์ ๊ธฐ์กด NoSQL ์ค์ฌ์์ ๋ฒ์ด๋ CockroachDB, MySQL ๋ฑ RDBMS์์๋ ๋๋ฆฌ ์ฑํ๋๊ณ ์๋ค.
- Replication์ CQRS ํจํด์ ํตํด ์ดํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ๊ทน๋ํํ๋ค.
โน๏ธ ์ฐธ๊ณ
[ASAC 6๊ธฐ ๊ฐ์์๋ฃ]
CQRS ํจํด - AWS ๊ท๋ฒ์ ์ง์นจ
์ด ํ์ด์ง์ ์์ ์ด ํ์ํ๋ค๋ ์ ์ ์๋ ค ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ค๋ง์์ผ ๋๋ ค ์ฃ์กํฉ๋๋ค. ์ ๊น ์๊ฐ์ ๋ด์ด ์ค๋ช ์๋ฅผ ํฅ์์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ง์ํด ์ฃผ์ญ์์ค.
docs.aws.amazon.com
'๐ปDEV-STUDY > DataBase' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋์์ฑ ์ ์ด (Concurrency Control) (1) | 2024.11.29 |
---|---|
[DB] ํธ๋์ญ์ Isolation Level (0) | 2024.11.28 |
[DB] ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค & ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2024.11.22 |
Partitioning, Sharding, Replication

๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฅ (Scaling)
ํ์ฅ(Scalling)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ๊ฐ์ ํ๋ ์ ๋ต์ด๋ค. ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ์์3๊ฐ์ ์ ๋ต์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
- Partitioning(Vertical Partitioning)
- Sharding(Horizontal Partitioning)
- Replication
1๏ธโฃ Partitioning
Partitioning์ ํ๋์ ํ ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถํ ํ์ฌ ์ ์ฅํ๋ ๊ธฐ์ ์ด๋ค.

1-1. (Vertical) Partitioning: ์ปฌ๋ผ(์ด) ๋ถํ
- ์ปฌ๋ผ(์ด) ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๋๋ค.
- ์: ์ฌ์ฉ์ ์ ๋ณด ํ ์ด๋ธ์ ๊ธฐ๋ณธ ์ ๋ณด์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ก ๋ถ๋ฆฌ
- ์ฅ์ : ํน์ ํ๋์ ๋ํ ์ฟผ๋ฆฌ ์ต์ ํ
- ๋จ์ : ํ ์ด๋ธ ๊ฐ ๊ด๊ณ๋ฅผ ์ฒ๋ฆฌํ๋ Join ์ฐ์ฐ ํ์
1-2. Sharding (Horizontal Partitioning): ๋ก์ฐ(ํ ๋ถํ )
Sharding์ ๋ก์ฐ(ํ)๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๋๋ ๋ฐฉ์์ผ๋ก, Shard๋ผ๋ ๋ ๋ฆฝ์ ๋ฐ์ดํฐ ๋จ์๋ก ๋ถ๋ฆฌ๋๋ค.
- Range-based Sharding: ๊ฐ์ ๋ฒ์์ ๋ฐ๋ผ ๋ถํ
- ์: userID๊ฐ 11000, 10012000์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ ๋ค๋ฅธ Shard์ ์ ์ฅ
- Hash-based Sharding: ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ท ๋ฑ ๋ถ๋ฐฐ
- ์: hash(userID) % 4๋ก 4๊ฐ์ Shard์ ๋ฐ์ดํฐ ์ ์ฅ

- Composite Sharding: Range-based์ Hash-based ํผํฉ ์ฌ์ฉ

2๏ธโฃ Replication
Replication์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ค์์ ๋ ธ๋์ ๋ณต์ฌํ์ฌ ์ ์ฅํ๋ ๊ธฐ์ ์ด๋ค.
- ์ฐ๊ธฐ ๋ ธ๋์ ์ฝ๊ธฐ ๋ ธ๋๋ฅผ ๋ถ๋ฆฌํด DB์ ๋ถํ๋ฅผ ๋ถ์ฐ์ํจ๋ค.
- MySQL์์ Mastar-Slave(Read, Standby)๋ก ๋๋์์ ๋์ ์ด์ โ DB๋ก๋ ๋ถ์ฐ
- ๋ฐ์ดํฐ ์ ์ฅ์๋ก๋ถํฐ์ ์ฝ๊ธฐ์ ์ ๋ฐ์ดํธ ์์ ์ ๋ถ๋ฆฌํ๋ ํจํด
2-1. Replication ๋์ ๋ฐฉ์
1. Primary Node
- ์ฐ๊ธฐ ์์ ์ ๋ด
- ๋ฐ์ดํฐ ์์ ์ Secondary Node์ ๋๊ธฐํ ์ํ
2. Secondary Node
- ์ฝ๊ธฐ ์์ ์ ๋ด
- ๋๊ธฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๊ธฐ ์ฒ๋ฆฌ
2-2. Replication ์ฅ์ ๊ณผ ๋จ์
์ฅ์ | ๋จ์ |
์ฝ๊ธฐ ๋ถํ ๋ถ์ฐ: ์ฝ๊ธฐ ์์ฒญ์ด ๋ง์ ์์คํ ์์ ์ฑ๋ฅ ์ต์ ํ | ๋ฐ์ดํฐ ๋๊ธฐํ ์ง์ฐ: ์ผ๊ด์ฑ์ด ์ค์ํ ์์คํ ์์๋ ๋๊ธฐํ ์ง์ฐ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ |
๊ณ ๊ฐ์ฉ์ฑ: Primary Node ์ฅ์ ์ Secondary Node๋ก ๋์ฒด ๊ฐ๋ฅ | ๊ตฌํ ๋ณต์ก์ฑ: ๋๊ธฐํ ๋ก์ง๊ณผ ์ฅ์ ์ฒ๋ฆฌ ๊ตฌํ ํ์ |
2-3. CQRS ํจํด (Command and Query Responsibility Segregation)

Replication์ ํ์ฉํ CQRS ํจํด์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ์์ ์ ๋ถ๋ฆฌํ์ฌ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ๊ทน๋ํ ํ๋ค.
- Command: Primary Node์์ ์ฐ๊ธฐ ์์ ์ํ
- Query: Secondary Node์์ ์ฝ๊ธฐ ์์ ์ํ

3๏ธโฃ ๊ฒฐ๋ก
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฅ ์ ๋ต์ ์์คํ ์ ๊ท๋ชจ์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ ํ๋์ด์ผ ํ๋ค.
Partitioning, Sharding, Replication์ ๊ฐ๊ฐ ๊ณ ์ ์ ์ฅ์ ๊ณผ ๋จ์ ์ด ์์ผ๋ฉฐ ์ ์ ํ ์กฐํฉํ์ฌ ์ฌ์ฉํด์ผ ํ๋ค.
- Partitioning: ๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ์ต์ ํ ๋ฐ ๊ด๋ฆฌ ์ฉ์ด์ฑ ์ ๊ณต
- Sharding: ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ฒ๋ฆฌํ๋ฉฐ ์ํ์ ํ์ฅ ๊ธฐ๋ฅ
- Replication: ์ฝ๊ธฐ / ์ฐ๊ธฐ ๋ถ๋ฆฌ๋ฅผ ํตํด ์ฑ๋ฅ๊ณผ ๊ฐ์ฉ์ฑ ์ต์ ํ
์ต์ ํธ๋๋:
- Sharding์ ๊ธฐ์กด NoSQL ์ค์ฌ์์ ๋ฒ์ด๋ CockroachDB, MySQL ๋ฑ RDBMS์์๋ ๋๋ฆฌ ์ฑํ๋๊ณ ์๋ค.
- Replication์ CQRS ํจํด์ ํตํด ์ดํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ๊ทน๋ํํ๋ค.
โน๏ธ ์ฐธ๊ณ
[ASAC 6๊ธฐ ๊ฐ์์๋ฃ]
CQRS ํจํด - AWS ๊ท๋ฒ์ ์ง์นจ
์ด ํ์ด์ง์ ์์ ์ด ํ์ํ๋ค๋ ์ ์ ์๋ ค ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ค๋ง์์ผ ๋๋ ค ์ฃ์กํฉ๋๋ค. ์ ๊น ์๊ฐ์ ๋ด์ด ์ค๋ช ์๋ฅผ ํฅ์์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ง์ํด ์ฃผ์ญ์์ค.
docs.aws.amazon.com
'๐ปDEV-STUDY > DataBase' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋์์ฑ ์ ์ด (Concurrency Control) (1) | 2024.11.29 |
---|---|
[DB] ํธ๋์ญ์ Isolation Level (0) | 2024.11.28 |
[DB] ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค & ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2024.11.22 |