Shard의 사전적 의미는 조각, 파편으로 Database Sharding이란 데이터베이스나 웹 검색 엔진의 데이터의 수평 분할이다. 개개의 파티션은 샤드(shard) 또는 데이터베이스 샤드(database shard)로 부른다. 각 샤드는 개개의 데이터베이스 서버 인스턴스에서 부하 분산을 위해 보유하고 있다.
샤딩에서 데이터베이스를 분할하는 방법은 크게 4가지가 있다. Horizontal Partitioning이란 한 테이블의 row들을 여러개의 서로 다른 테이블로 분리하는 것이다. 또, 테이블별로 서버를 분할하는 방식인 Vertical Partitioning이 있다. 이는 구현이 간단하고 전체 시스템에 큰 변화는 없지만, 각 서버의 데이터가 거대해지면 추가 샤딩이 필요해진다는 단점이 있다.
Key Based Sharding은 Hash Based Sharding이라고도 불리며 새로 쓰인 데이터로부터 value를 받아 해당 데이터가 어느 shard로 갈지 결정하는 hash 함수와 연결하는 방식이다. 올바른 shard에 일관성 있는 방식으로 들어갈 수 있도록 entry를 위치시키기 위해, hash 함수에 들어가는 value들은 같은 column에서 나와야 한다. 이 column을 shard key라고 부른다.
Range Based Sharding은 주어진 value의 범위를 기반으로 데이터를 쪼개는 것으로, 가장 큰 장점은 실행이 비교적 간단하다는 것이다. 또한, original 데이터베이스 뿐 아니라 서로가 똑같은 스키마를 가지게 된다.하지만 데이터베이스를 골고루 분배하지는 못하기 때문에 데이터베이스 hotspots가 생길 수 있다.