본문 바로가기

개발/Database

DB Sharding

샤딩(Sharding)은 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산 저장하는 방법을 말한다.

Horizontal Partitioning 이라고 볼 수 있다.

 

샤딩(Sharding)을 적용하게 되면 프로그래밍, 운영적 복잡도는 증가.

분산이 잘 되지 않을 경우, 한쪽으로 Data 가 집중되어 Hotspot 이 발생.

 

샤딩은 Shard Key를 어떻게 정의하는지에 따라 데이터의 효율적인 분산을 결정.

 

- Hash Sharding

Shard Key : Database id 를 Hashing (Cluster 안의 Node 개수로 Hash 크기 결정)

Cluster 의 Node 개수의 변경에 따라 ReSharding 이 필요할 수 있다.


- Dynamic Sharding

Naming 을 기준으로 Sharding 이 가능하며 Locator Service 을 통해 Shard Key를 얻을 수 있다.

Node 확장에 유연한 구조이며 Locator Service 에 Shard Key 만 추가하면 된다. (기존 Shard Key는 변경이 없음.) 

(참고, HDFS - Name Node, MongoDB - ConfigServer)

Data Relocation 시 Locatore Service 의 Shard Key Table 도 일치시켜야 한다.

Locator 의존성이 높다.

 

- Entity Group

Key-Value가 아닌 다양한 객체로 구성된 경우 Application의 복잡도를 줄이는 방향으로 Sharding 하는 방법이 Entity Group 이다.

하나의 물리적인 Shard에 쿼리를 진행할 경우 효과적이며 강한 응집도를 가진다.

사용자의 증가에 따른 확장성이 좋은 Partitioning 이다.

cross-partition 쿼리는 single partition 쿼리보다 consistency 의 보장과 성능을 잃는다.

 

# 참고자료

medium.com/@jeeyoungk/how-sharding-works-b4dec46b3f6

'개발 > Database' 카테고리의 다른 글

MySQL sysbench 부하테스트  (0) 2021.02.03
고가용성 (High Availability)  (0) 2020.11.12
DB Sharding  (0) 2020.11.09
MySQL 8.0 Remote 설정  (0) 2020.09.23
MySQL 8.0 Requested authentication method unknown to the client 이슈 해결  (0) 2020.09.23
Lock  (0) 2020.09.01