Distributed Relational Database

Kooks·2025년 11월 7일

Database

목록 보기
1/2
post-thumbnail

Clinet는 초기에 단일 데이터베이스를 사용한다.

❓서비스가 활성화되어 단일 DB로 처리하기엔 큰 부담이 생기게 되었을 때, 저장해야 할 데이터와 트래픽이 많아졌다면???

❗️가장 간단한 방법으로 Scale-Up을 고려해볼 수 있다.

❓얼마 후 서비스가 더욱 활성화되면서 단일 DB로 처리하기엔 큰 부담이 생기게 되었다. 저장해야 할 데이터와 트래픽이 계속 많아 진다면???

❗️이번에도 Scale-Up을 고려해볼 수 있지만, 장비를 무한정 Scale-Up하는 것은 한계가 있다. 한계로 인해 Scale-Out을 고려해볼 수 있다. 장비를 어러 대 사용하여 수평확장하는 것이다.

2대의 DB로 운용되어 Client의 요청은 각 DB로 분살될 수 있고, 데이터베이스에 대한 하나의 분산 시스템이 구성된 것이다.

❓그렇다면 데이터는 각 DB에 어떻게 분산될 수 있을까?

샤딩을 이용하여 데이터를 여러 DB에 분산할 수 있다. 그리고 샤딩된 각각의 데이터 단위를 샤드라고 부른다.

샤딩(Sharding): 데이터를 여러 데이터베이스에 분산하여 저장하는 기술
샤드(Shard): 샤딩된 각각의 데이터 단위

Sharding

Vertical Sharding

수직 샤딩(Vertical Sharding): 데이터를 수직으로 분할하는 방식(컬럼 단위) article_id 식별자를 이용하여 분산 저장

  • 상위 샤드 -> board_id, created_at
  • 하위 샤드 -> title, content

각 샤드가 적은 수의 컬럼을 저장하므로, 성능 및 공간 이점이 생긴다.
하지만, 데이터의 분리로 인해 조인 또는 트랜잭션 관리가 복잡해질 수 있다. 수직으로 분할되므로 수평적 확장에 제한이 있다.

Horizontal Sharding


수평 샤딩(Horizontal Sharding): 데이터를 수평으로 분할하는 방식(행 단위) 으로 분산 저장

  • 하위 샤드 -> article_id 1 ~ 5000
  • 상위 샤드 -> article_id 5000 ~ 10000

각 샤드에 데이터가 분산 저장되므로 성능 및 공간 이점이 생긴다.
하지만, 데이터의 분리로 인해 조인 또는 트랜잭션 관리가 복잡해질 수 있다. 수평으로 분할되므로 수평적 확장에 용이하다.

항목수직 샤딩수평 샤딩
샤딩수직으로 분할(컬럼 단위)수평으로 분할(행 단위)
확장성제한용이
장점각 샤드로 데이터 분산되므로, 성능 및 공간 이점(동일)
단점조인 또는 트랜잭션 관리 등의 어려움(동일)
profile
I'm kooks

0개의 댓글