DB

[DB] 분산 컴퓨팅 (샤딩)

jih0ssang 2024. 7. 1. 21:15

참고 사이트

https://aws.amazon.com/ko/what-is/database-sharding/

 

 

 

아키텍처 패턴 (분산 컴퓨팅)

 

분산 컴퓨팅 (Ditributed Computing)

  • 하나의 대형 컴퓨터에서 처리할 작업을    지역적으로 분산된 여러 개의 컴퓨터를 묶어서 네트워크를 통해 분산 처리
  • 성능 확대 및 고가용성

 

샤딩(Sharding)

  • 하나의 대규모 분산 데이터베이스 시스템에서  여러 서버에 데이터를  분산 저장하는 기술
  • 여러 개의 DB에 쪼개서 저장
  • 파티션과 유사 개념
  • DB별 병렬처리 가능
  • 데이터 세트를 쪼개서 분산하여 여러 샤드에 저장   → 병목 현상 해결!
  • 비공유 아키텍처 기반  → 각 물리적 샤드는 독립적으로 작동하여 다른 샤드 인식X

 

샤딩이 중요한 이유

  • 데이터베이스의 병목 현상을 해결하기 위해 여러 샤드에서 더 작은 데이터 세트를 병렬로 처리하는 요구 증가

 

샤딩 장점

  • 응답 시간 개선 (데이터 검색 시간 감소)
  • 전체 서비스 중단 방지 (가용성)
  • 효율적인 크기 조정 (데이터베이스 탄력적 확장)


샤딩 단점

  • 두 개 이상의 샤드에 대한 JOIN 연산 불가
  • 자동 증가 등은 샤드별로 달라질 수 있음
  • 샤드 키 행 값은 update하면 안됨
  • 하나의 트랜잭션에서 두 개 이상의 샤드에 접근할 수 없음

 


 

고객 레코드의 데이터세트를 포함하는   샤딩되지 않은 데이터베이스

고객 ID 이름 시/도
1 John 캘리포니아
2 Jane 워싱턴
3 Paulo 애리조나
4 Wang 조지아

 

 

위의 데이터세트를 쪼개서 샤딩에 저장 ~!

 

 

 

 

고객 레코드의 데이터세트를 포함하는   샤딩된 데이터베이스

 

컴퓨터 A

고객 ID 이름 시/도
1 John 캘리포니아
2 Jane 워싱턴

 

 

 

컴퓨터 B

고객 ID 이름 시/도
3 Paulo 애리조나
4 Wang 조지아

 

 

분할된 데이터 청크를 논리적 샤드이다. 이 샤드들을 저장하는 시스템을 물리적 샤드 또는 데이터베이스 노드라고 한다.

하나의 물리적 샤드는 여러 개의 논리적 샤드를 포함할 수 있다.

 

 

 

뭘 이용해서 데이터세트를 쪼개나요?  → 샤드 키 !!

 

 

샤드 키

  • 샤드 키를 이용하여 데이터 세트를 분할하는 방법을 결정함

 

 

 

 

샤딩 방법

  • 범위 기반 샤딩
이름 샤드 키 
A ~ I로 시작 A
J ~ S로 시작 B
T ~ Z로 시작 C

 

장점: 상대적으로 구현이 쉬움!

단점: 큰 단위로 분할하므로 물리적 노드에서 데이터가 오버로드 될 수 있음. A는 샤드 C보다 훨씬 많은 수의 데이터 행이 포함됨.

 

 

 

  • 해시 샤딩

고객 레코드를 해시 값이 1과 2인 두 개의 샤드로 분리 가능

이름 해시 값
John 1
Jane 2
Paulo 1
Wang 2

 

장점: 물리적 샤드 간에 데이터를 고르게 분산함에 초점을 둠

단점: 의미에 따라 데이터베이스를 분할하지 X

 

 

 

 

'DB' 카테고리의 다른 글

[DB] 분산 컴퓨팅 (Hadoop)  (0) 2024.07.01