본문 바로가기
Back/DB

[DB] Sharding (샤딩)

by 오엥?은 2023. 4. 27.
반응형

Shading

샤딩은 수평 분할(Horizontal Partitioning)과 동일하며, 인덱스의 크기를 줄이고, 작업 동시성을 늘리기 위한 것이다.

수평 분할이란 스키마가 같은 데이터를 두 개 이상의 테이블에 나누어 저장하는 디자인을 말한다. 데이터베이스를 샤딩하게 되면 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 샤드에 어떤 데이터가 저장될 지를 샤드키를 기준으로 분리한다.

 

샤딩과 수평적 파티셔닝과의 차이점은 수평적 파티셔닝은 동일한 DB 서버 내에서 테이블을 분할하는 것이고, 샤딩은 DB 서버를 분할한다는 것이다. 즉, DB 서버의 부하를 분산할 수 있다.

 

 

◽ 요구사항

: 샤딩을 하기 위해서는 아래의 공통된 요구사항이 필요하다.

 

• 라우팅을 위해 구분할 수 있는 유일한 키값이 있어야 한다.

• 설정으로 쉽게 증설이 가능해야 한다.

 

 

◽ Sharding의 종류

 

① 모듈러 샤딩 (Modular Sharding)

 : PK를 모듈러 연산한 결과로 DB를 라우팅하는 방식이다.

 

• 레인지 샤딩에 비해 데이터가 균일하게 분산된다.

• DB를 추가 증설하는 과정에서 이미 적재된 데이터의 재정렬이 필요하다.

 

모듈러 샤딩은 데이터량이 일정 수준에서 유지될 것으로 예상되는 데이터 성격을 가진 곳에 적용할 때 어울린다.

데이터가 균일하게 분산된다는 점은 트래픽을 안정적으로 소화하면서도 DB 리소스를 최대한 활용할 수 있다는 것을 의미한다.

 

 

 

② 레인지 샤딩 (Range Sharding)

 : PK의 범위를 기준으로 DB를 특정하는 방식이다.

 

모듈러 샤딩에 비해 기본적으로 증설에 재정렬 비용이 들지 않는다.

일부 DB에 데이터가 몰릴 수 있다.

 

레인지 샤딩의 가장 큰 장점은 증설 작업에 드는 큰 비용이 들지 않는다는 점이다. (데이터가 급격하게 증가할 여지가 있다면 좋은 방법)

다만 활성 유저가 몰린 DB로 트래픽이나 데이터량이 몰릴 수 있다. 적절한 Range 기준을 잡는 것이 중요하다.

 

 

③ 디렉토리 샤딩 (Directory Based Sharding)

 : 디렉토리 샤딩은 별도의 조회 테이블을 사용해서 샤딩을 하는 방식이다.

 

• 샤딩에 사용되는 시스템이나 알고리즘을 사용할 수 있다.

• 샤드를 동적으로 추가하는 것도 비교적 쉽다.

• 모든 읽기 및 쓰기 쿼리 전에 조회 테이블을 참조해야 하므로 오버헤드가 발생한다.

◽ Sharding의 장점과 단점

• 장점

① 응답시간

 : 컴퓨팅이 여러 대이기 때문에 처리 속도가 향상된다.

② HA (High Availability) 의 용이성

 : 컴퓨터의 replica를 진행하여 HA 구성하기가 용이하다.

③ 자원의 효율적인 사용

 : 리소스가 작거나 클 때 데이터 베이스를 붙이거나 떼면 돼서 필요 시에 scaling in, out 이 용이하다.

 

• 단점

① 데이터 핫스팟

 : 데이터를 여러 대 분리해서 저장해야 하는데, DB를 한 곳만 집중되어서 사용되는 경우가 생길 수 있다. 

② 운영 복잡도

 : 리소스를 분산해서 관리하다보니 운영 복잡도가 증가한다.

③ 비용

 : 물리적 샤드로 추가하는 컴퓨터가 많을 수록 인프라 비용이 발생한다.

④ 애플리케이션 복잡도

 : 개발자와 관리자가 커뮤니케이션 할 리소스가 늘어난다.

 

 

 

 

 

참고 https://jaehoney.tistory.com/245

반응형

'Back > DB' 카테고리의 다른 글

[DB] JPA  (0) 2023.05.12
[DB] MyBatis  (0) 2023.05.09
[DB] JdbcTemplate  (0) 2023.05.08
[DB] H2 데이터베이스 설치  (0) 2023.05.04
[DB] Replication (복제)  (0) 2023.04.27