2. Sharding : 메모리 한계 돌파
저장해야 할 데이터가 많은데, 단순히 master 노드의 replication 으로는 더 많은 데이터들을 저장하고 관리할 수 없다. 즉 데이터가 하나의 서버 메모리를 초과하면, 데이터를 여러 서버에 나누어 담아야 한다.
이를 Sharding이라고 한다.
그렇다면 어떻게 데이터를 분산 저장할 것인가?
- 개념: 100GB 데이터를 32GB 서버 4대에 25GB씩 나누어 저장한다.
- 문제: 저장할 때 어떻게 나눠담고, 읽을 때 어떤 키가 4대 중 어디에 있는지 어떻게 알지?
- 이 문제를 데이터 분산 알고리즘에 따라 Consistent Hashing과 Redis Cluster로 갈라진다.
2.1. 계층 구조 정리
가장 먼저 샤딩의 개념에서 파생되는 용어들의 계층 구조를 정리해보자.
- 목표 : Sharding (샤딩)
데이터가 너무 많으니 여러 노드에 나눠서 저장하자
- 해결 방법 : 어떻게 나눌 것인가?
- Modular Sharding / Range Sharding / Indexed Sharding
- Consistent Hashing (일관된 해싱) → 클라이언트 주도 분산, Hash Ring, VNode 사용
- Hash Slot (해시 슬롯) → Redis Cluster(서버 주도)가 채택한 방식
2.2. Modular, Range, Indexed Sharding