정의
샤딩이란 대규모 데이터베이스를 여러 머신에 저장하는 프로세스이다. 단일 머신 또는 데이터베이스 서버는 제한된 양의 데이터만 저장하고 처리할 수 있는데, 데이터베이스 샤딩은 데이터를 샤드라고 하는 더 작은 청크로 분할하고 여러 데이터베이스 서버에 저장함으로써 이러한 한계를 극복한다.
애플리케이션이 성장함에 따라 애플리케이션 사용자 수와 애플리케이션에 저장되는 데이터의 양도 시간이 갈수록 증가한다. 데이터 볼륨이 너무 커지고 애플리케이션을 사용하여 동시에 정보를 읽거나 저장하려고 하는 사용자가 너무 많아지면 데이터베이스에서 병목 현상이 발생하게 되는데 여러 샤드에서 더 작은 데이터 세트를 병렬처리 하여 데이터베이스 샤딩을 사용하면 트래픽 분산이 되어 장애를 국소화 시킬 수 있다.
특장점
- 응답 시간 개선 :
대규모 단일 데이터베이스에서는 데이터를 검색하는 데 시간이 오래 걸린다. 데이터를 찾기 위해 여러 행을 검색하게 되는 데, 데이터 샤드는 일반 데이터베이스에 비해 행 수가 적어서 특정 정보를 검색하거나 쿼리를 실행하는 데 걸리는 시간이 단축된다. - 전체 서비스 중단 방지 :
데이터베이스를 호스팅하는 컴퓨터에서 장애가 발생하면 데이터베이스를 사용하는 애플리케이션에서도 오류가 발생하게된다. 데이터베이스 샤딩은 데이터베이스의 일부를 다른 컴퓨터에 배포함으로써 이 같은 문제를 방지한다. 컴퓨터 중 하나에서 장애가 발생하더라도 정상 작동하는 다른 샤드를 사용하여 작동할 수 있으므로 애플리케이션이 중단되지 않는다. 샤딩은 샤드 간 데이터 복제와 함께 사용되는 경우가 많은데, 샤드 중 하나를 사용 못하더라도 대체 샤드에서 데이터에 액세스하고 복원할 수 있다. - 효율적인 크기 조정 :
데이터베이스가 확장되면 더 많은 컴퓨팅 리소스를 소비하고 결국 스토리지의 최대 용량에 도달하게 된다. 유지 관리를 위해 애플리케이션을 종료하지 않고도 런타임에 새 샤드를 추가할 수 있다.
파티셔닝과의 차이점
파티셔닝은 동일한 DB 내에서 공간을 나누어 데이터를 분리하지만 샤딩은 DB 자체를 나누고 데이터를 분리하는 방식이다.
예를 들어 타코야끼 집에서 장사를 하는 데 사람들이 몰리면 메뉴 A 메뉴 B를 나누어 두 사람이 각자 다른 메뉴를 만들어 주는 것이 파티셔닝이라고 하면 샤딩은 2호점을 내어 1호점에선 A 메뉴 2호점에선 B 메뉴를 만들어 주는 것이 샤딩이라고 생각이 든다. (예시가 조금 틀린것 같긴 하지만 ...)
3줄 요약
샤딩은 부하 분산, 가용성, DB 안정성을 위해서 사용하는 DB 데이터 분산 방식이라고 보면 될듯. 대신 파티셔닝과 다른 점은 서버 한 개에 데이터가 나누어지는 것이 아니라 여러 서버에 작은 데이터를 집어넣는 것으로 이해가 된다.
[참고]
'CS 지식' 카테고리의 다른 글
PDU(Protocol Data Unit)란? (0) | 2023.06.26 |
---|---|
Heap과 Stack이란 (0) | 2023.06.26 |
Openshift 란? (0) | 2023.05.20 |
Swagger란? (0) | 2023.05.15 |
Jar 파일이란? (0) | 2023.05.05 |