❗Sharding(샤딩)이란?
대규모 데이터베이스를 처리할 때 성능과 확장성을 확보하기 위해 데이터를 분할하는 기법이다.
- 데이터 분할 목적: 단일 데이터베이스 서버가 처리할 수 있는 용량이나 트래픽에 한계가 있을 때 이를 극복하기 위해 데이터를 여러 개의 작은 데이터베이스로 나누어 분산 처리
- 수평적 분할(Sharding): 데이터를 수평으로 나누어 각각의 분할된 데이터베이스(샤드, shard)가 독립적으로 작동하며 적은 양의 데이터를 처리하게 함으로써 성능을 향상시키고 확장성을 높임
- 예시: 고객 정보 100만 건을 4개의 샤드로 나누면 각 샤드는 약 25만 건의 데이터를 저장하고 처리
❗ Sharding의 장점
확장성(Scalability) | 데이터를 여러 서버에 분산하여 저장하고 처리할 수 있어서 서버 성능에 한계를 느끼는 경우 새로운 서버를 추가하는 방식으로 수평적 확장이 가능해짐 |
성능 향상 | 데이터를 분할하면 각 샤드에 저장된 데이터의 양이 줄어들어 데이터 조회 및 쓰기 작업이 더 빨라짐 |
가용성(Availability) | 데이터가 여러 샤드로 분산되어 있으므로 특정 샤드에 장애가 발생하더라도 다른 샤드들이 계속해서 데이터를 제공할 수 있어 시스템의 가용성이 높아짐 |
❗ Sharding의 단점
복잡성 증가 | 데이터를 여러 샤드에 분산하여 저장하는 만큼 데이터 조회나 쓰기 작업이 복잡해질 수 있음 각 샤드에 데이터를 어떻게 나눌 것인지, 샤드 간의 트랜잭션 관리를 어떻게 할지에 대한 고민 필요 |
운영 관리의 어려움 | 데이터베이스 서버가 여러 개로 나누어지므로 각 샤드의 데이터 동기화, 백업, 모니터링 등의 운영 관리가 복잡해질 수 있음 |
조인(Join) 연산의 비효율성 | 샤드 간의 데이터를 조인해야 하는 경우 각 샤드에서 데이터를 수집하고 이를 결합하는 작업이 필요하므로 성능이 저하될 수 있음 |
❗ Sharding 전략
범위 기반 샤딩(Range-based Sharding) | 특정 범위의 데이터를 기준으로 샤드를 나누는 방식 사용자 ID가 11000인 데이터를 하나의 샤드에, 12000인 데이터를 다른 샤드에 저장하는 방식 |
해시 기반 샤딩(Hash-based Sharding) | 데이터를 해시 함수로 변환하여 균등하게 샤드에 분산하는 방식 데이터의 분포를 고르게 하기 위해 많이 사용됨 |
지리적 샤딩(Geographic Sharding) | 지리적 위치를 기준으로 샤드를 나누는 방식 유럽 지역의 데이터를 하나의 샤드에, 미국 지역의 데이터를 다른 샤드에 저장할 수 있음 |
❗샤딩이 필요한 경우
- 데이터베이스의 크기가 커져서 하나의 서버로는 감당하기 힘든 경우
- 트래픽이 증가하여 데이터 읽기/쓰기 성능이 저하된 경우
- 수평적 확장을 통해 더 많은 서버를 추가하여 성능을 높여야 하는 경우
샤딩은 대규모 데이터베이스 시스템에서 자주 사용되는 중요한 기법이며 특히 NoSQL 데이터베이스나 빅데이터를 처리하는 시스템에서 많이 도입된다.
728x90
반응형
'🔻Computer Science > Database' 카테고리의 다른 글
[Database] RDBMS vs NoSQL (1) | 2024.09.14 |
---|