샤딩 Sharding
과제에서 "DB는 샤딩하지 않는다"라는 조건이 있음
의미
동일한 스키마를 가지고 있는 여러대의 데이터베이스 서버들에 데이터를 작은 단위로 나누어 분산 저장하는 기법. 대규모 데이터베이스를 여러 머신에 저장하는 프로세스
사용자가 많아져서 데이터 볼륨이 너무 커지면, 데이터베이스에서 병목 현상이 발생함. 작은 청크로 분할하여 여러 데이터베이스 서버에 저장함으로써 이 한계를 극복함
쪼개진 한개의 데이터베이스를 샤드라고 표현함
장단점
응답시간 개선 : 검색하는 전체 데이터 수(튜플 수)가 적어지기 때문에 특정 정보를 검색하거나 쿼리를 실행하는 데 걸리는 시간이 단축 됨
전체 서비스 중단 방지 : 데이터베이스가 여러 서버로 나뉘어 있기 때문에, 하나의 서버에 문제가 생겨도 다른 서버들은 동작할 수 있음(보통 한 샤드를 두개 이상의 서버에 복제해서 운영하기 때문에, 샤드 중 하나를 사용할 수 없어도 대체 샤드에서 데이터에 엑세스 함)
다루기 어려움 : 여러개의 머신의 데이터에 접근해서 데이터를 조합해야하므로 다루기 어려울 수 있음
데이터 쏠림 가능 : 의도치 않게 특정 샤드에 데이터가 몰리게 될 수도 있음
vs 파티셔닝
파티셔닝도 데이터베이스를 나눠서 저장하는 것이긴 한데, 동일한 서버(머신)에 정장함. 샤딩은 다른 서버(머신)에 저장흐는 구조임
작동
단일 데이터 셋을 샤드키를 기준으로 샤드로 분할함
각 샤드는 노드라고 불리는 서버(머신)에 각각 저장됨
데이터베이스에 접근하려는 어플리케이션은 샤드키를 기준으로 노드에 접근하여 샤드의 데이터를 받아옴
참고문헌
Last updated