728x90
반응형
Overview
DB의 Sharding에 대해서 알아보고 원리에 대해서 공부해본다.
DB 샤딩(Sharding)이란?
데이터베이스 샤딩은 매우 큰 데이터베이스를 샤드라고 하는 더 작고, 빠르고, 관리하기 쉬운 부분으로 분리하는 데이터베이스 파티셔닝 유형이다. 샤드라는 단어는 전체의 작은 부분을 의미한다.
각 샤드는 독립적인 데이터베이스이며, 샤드가 집합적으로 전체 데이터베이스를 구성한다. 샤딩은 모놀리식 데이터베이스 설정보다 데이터 증가 및 관련 로드를 더 효과적으로 관리하는 데 도움이 되므로 확장성 솔루션으로 사용된다.
샤딩 작동 방식
샤딩에 대한 가장 일반적인 접근 방식은 다음과 같다.
- 키 기반(또는 해시 기반) 샤딩(Key-Based (or Hash-Based) Sharding): 각 행에는 행과 연결된 샤딩 키의 해시를 기반으로 샤드가 할당됩니다. 이는 간단하고 균일한 배포를 보장하지만 융통성이 없을 수 있다.
- 범위 기반 샤딩(Range-Based Sharding): 특정 키의 범위에 따라 데이터를 분할한다. 이는 액세스 패턴이 대체로 범위 기반인 경우(예: 날짜 범위)에 유용하다.
- 목록 기반 샤딩(List-Based Sharding): 데이터는 값 목록을 기반으로 분할된다. 예를 들어 각 국가의 데이터를 특정 샤드에 할당할 수 있다.
- 디렉터리 기반 샤딩(Directory-Based Sharding): 조회 서비스는 각 데이터 조각의 샤드 위치를 결정한다. 이를 통해 유연성이 향상되고 단순한 키, 범위 또는 목록 방법 이상의 복잡한 기준을 수용할 수 있다.
샤딩 동작 방식
- 클라이언트는 로드 밸런서에 데이터 요청을 보낸다.
- 로드 밸런서는 어느 샤드가 데이터의 어떤 부분을 보유하고 있는지 알고 있는 디렉터리 서비스에 요청을 전달한다.
- 샤딩 논리에 따라 디렉터리 서비스는 쿼리를 적절한 데이터베이스 샤드(DB1, DB2 또는 DB3)로 보낸다.
- 선택한 샤드는 요청을 처리하고 데이터를 클라이언트에 직접 반환한다.
이 설정을 통해 시스템은 쿼리를 효율적으로 관리하고 라우팅하여 여러 데이터베이스 샤드에 걸쳐 로드 균형을 조정할 수 있다.
Reference
https://aws.amazon.com/ko/what-is/database-sharding/
https://nadermedhatthoughts.medium.com/understand-database-sharding-the-good-and-ugly-868aa1cbc94c
728x90
반응형
'Database' 카테고리의 다른 글
PostgreSQL 개념 및 특징(with MySQL) (0) | 2024.03.29 |
---|---|
MongoDB란? (2) | 2023.05.20 |
DB 스키마란?(Schema) (0) | 2023.04.21 |
Mariadb란? (사용법) (0) | 2022.01.14 |