참고 사이트
https://aws.amazon.com/ko/what-is/database-sharding/
아키텍처 패턴 (분산 컴퓨팅)
분산 컴퓨팅 (Ditributed Computing)
- 하나의 대형 컴퓨터에서 처리할 작업을 지역적으로 분산된 여러 개의 컴퓨터를 묶어서 네트워크를 통해 분산 처리
- 성능 확대 및 고가용성
샤딩(Sharding)
- 하나의 대규모 분산 데이터베이스 시스템에서 여러 서버에 데이터를 분산 저장하는 기술
- 여러 개의 DB에 쪼개서 저장
- 파티션과 유사 개념
- DB별 병렬처리 가능
- 데이터 세트를 쪼개서 분산하여 여러 샤드에 저장 → 병목 현상 해결!
- 비공유 아키텍처 기반 → 각 물리적 샤드는 독립적으로 작동하여 다른 샤드 인식X
샤딩이 중요한 이유
- 데이터베이스의 병목 현상을 해결하기 위해 여러 샤드에서 더 작은 데이터 세트를 병렬로 처리하는 요구 증가
샤딩 장점
- 응답 시간 개선 (데이터 검색 시간 감소)
- 전체 서비스 중단 방지 (가용성)
- 효율적인 크기 조정 (데이터베이스 탄력적 확장)
샤딩 단점
- 두 개 이상의 샤드에 대한 JOIN 연산 불가
- 자동 증가 등은 샤드별로 달라질 수 있음
- 샤드 키 행 값은 update하면 안됨
- 하나의 트랜잭션에서 두 개 이상의 샤드에 접근할 수 없음
고객 레코드의 데이터세트를 포함하는 샤딩되지 않은 데이터베이스
고객 ID | 이름 | 시/도 |
1 | John | 캘리포니아 |
2 | Jane | 워싱턴 |
3 | Paulo | 애리조나 |
4 | Wang | 조지아 |
위의 데이터세트를 쪼개서 샤딩에 저장 ~!
고객 레코드의 데이터세트를 포함하는 샤딩된 데이터베이스
컴퓨터 A
고객 ID | 이름 | 시/도 |
1 | John | 캘리포니아 |
2 | Jane | 워싱턴 |
컴퓨터 B
고객 ID | 이름 | 시/도 |
3 | Paulo | 애리조나 |
4 | Wang | 조지아 |
분할된 데이터 청크를 논리적 샤드이다. 이 샤드들을 저장하는 시스템을 물리적 샤드 또는 데이터베이스 노드라고 한다.
하나의 물리적 샤드는 여러 개의 논리적 샤드를 포함할 수 있다.
뭘 이용해서 데이터세트를 쪼개나요? → 샤드 키 !!
샤드 키
- 샤드 키를 이용하여 데이터 세트를 분할하는 방법을 결정함
샤딩 방법
- 범위 기반 샤딩
이름 | 샤드 키 |
A ~ I로 시작 | A |
J ~ S로 시작 | B |
T ~ Z로 시작 | C |
장점: 상대적으로 구현이 쉬움!
단점: 큰 단위로 분할하므로 물리적 노드에서 데이터가 오버로드 될 수 있음. A는 샤드 C보다 훨씬 많은 수의 데이터 행이 포함됨.
- 해시 샤딩
고객 레코드를 해시 값이 1과 2인 두 개의 샤드로 분리 가능
이름 | 해시 값 |
John | 1 |
Jane | 2 |
Paulo | 1 |
Wang | 2 |
장점: 물리적 샤드 간에 데이터를 고르게 분산함에 초점을 둠
단점: 의미에 따라 데이터베이스를 분할하지 X
'DB' 카테고리의 다른 글
[DB] 분산 컴퓨팅 (Hadoop) (0) | 2024.07.01 |
---|