-
Sharding이란??
- 데이터베이스 저장기법 중 하나.
- 데이터나 웹 검색 엔진의 수평 분할.
- 개개인의 데이터베이스 서버 인스턴스에서 부하 분산을 위해 보유하고 있다.
- 전체 네트워크를 분할한 뒤 트랜잭션을 영역별로 저장하고 이를 병렬적으로 처리하여 블록체인에 확장성을 부여하는 온체인 솔루션.
- 데이터를 Shard라는 단위로 나눠서 저장하고 처리한다. (분산처리기법)
- 프로그래밍, 운영적인 복잡도는 높아지는 단점이 있다.
MongoDB Sharding
- 전체 성능에 영향을 주지 않고 대용량의 데이터를 효율적으로 관리하는 방법.
- Sharding 구성을 위한 요소 : Shard, Mongos, Config Server
- Mongos : 클라이언트의 요청이 있을 경우 요청에 맞는 Shard로 라우팅
- Config Server : 전체 클러스터의 메타 데이터, 구성 설정 등을 저장하는 서버
- Sharding + ReplicaSet으로 구성된다.
- 하나의 Document는 하나의 Shard에 저장되어 Shard간 데이터 복제는 없다.
- 여러개의 config 서버 구성을 권장한다.
- Shard Key : 데이터를 분산하는 범위의 키로 복수 지정할 수 있다.
- 키에 어떤 범위의 어떤 데이터가 어떤 Shard에 저장 되었는지 MongoDB가 관리하고 데이터의 편차에 따라 자동 관리한다.
- Chunk : Collection을 여러 조각으로 파티션하고 각 조각을 여러 Shard 서버에 분산해서 저장하는데 이 데이터 조각을 Chunk라고 한다.
참고자료