샤딩은 대규모 데이터 세트를 작고 관리하기 쉬운 조각으로 분할 하는 것이다. 쉽게 말하면, 데이터를 '나누어서' 보관하는 방법이다.
데이터가 많아질 경우, 한 서버내에 다 보관하기 어려울 수 있다. 가령, 그 많은 데이터를 처리하기 위한 CPU, 메모리, 디스크용량 등을 더이상 확장하기 어려운 상황이 생길 수 있다
이런 경우, 데이터를 나누어서 여러 곳에 분산하여 확장 할 수 있다. 다만, 여러 곳에 분산하기 위해서는 여러 서버를 관리해야하는 비용과 복잡성, 오버헤드가 있기 마련이다. 데이터를 취합하기 위해서는 여러 노드로부터 데이터를 취합해야하는 오버헤드도 발생할 수 있다.
일반적으로 샤딩은 저장소(스토리지)의 분산과 부하 분산이라는 두가지 목적이 있다. 하지만, 샤딩이 모든 성능 문제를 해결하는 것은 아니며, 추가적인 복잡성과 오버헤드를 발생시키므로 왜 샤딩을 해야하는지 이해하는 것이 중요하다.