샤드(Shard)는 데이터베이스 분야에서 거대한 데이터를 수평적으로 분할하여 저장하는 작은 단위 또는 그 파편을 의미한다. 이는 '샤딩(Sharding)'이라는 과정을 통해 생성되며, 단일 데이터베이스 서버가 처리할 수 있는 용량과 성능의 한계를 극복하기 위해 고안된 기술이다. 방대한 데이터를 여러 대의 서버에 나누어 분산 저장함으로써 전체 시스템의 부하를 조절하고 처리 효율을 높이는 것이 샤드의 핵심 목적이다.
일반적인 데이터베이스 파티셔닝이 단일 시스템 내에서 테이블을 논리적으로 나누는 것이라면, 샤딩은 데이터를 물리적으로 서로 다른 서버에 분산하여 저장하는 방식을 취한다. 이는 하드웨어의 성능을 높이는 수직 확장(Scale-up)이 비용 대비 효율이 떨어지거나 기술적 한계에 부딪혔을 때, 저렴한 사양의 서버를 여러 대 연결하는 수평 확장(Scale-out)을 가능하게 한다. 각 서버는 전체 데이터 중 자신의 샤드에 해당하는 부분만 관리하므로 데이터 읽기와 쓰기 속도가 향상된다.
데이터를 샤드로 분할하기 위해서는 '샤드 키(Shard Key)'라는 기준 데이터가 필요하다. 샤드 키는 특정 행이 어느 샤드에 저장될지를 결정하는 지표로 사용되며, 주로 사용자 ID, 지역 정보, 또는 생성 날짜 등이 활용된다. 효율적인 시스템 운영을 위해서는 데이터가 각 샤드에 균등하게 분배되어야 한다. 만약 특정 샤드에만 데이터가 집중되는 '핫스팟(Hotspot)' 현상이 발생하면 해당 서버에 과부하가 걸려 전체 시스템 성능이 저하될 수 있으므로 정교한 분배 알고리즘 설계가 요구된다.
샤딩은 무한한 확장성을 제공한다는 강력한 장점이 있지만, 시스템 운영의 복잡성을 증대시킨다는 단점도 존재한다. 여러 샤드에 분산된 데이터를 동시에 조회하거나 수정해야 하는 '교차 샤드 쿼리'는 성능 저하를 유발하며 구현이 까다롭다. 또한 데이터의 일관성을 유지하기 위한 트랜잭션 관리가 어려워지며, 특정 샤드 서버가 고장 났을 때 데이터 손실을 방지하기 위한 복제 및 복구 전략이 별도로 마련되어야 한다.
최근 샤드 기술은 블록체인 분야에서도 확장성 문제를 해결하기 위한 핵심 기술로 주목받고 있다. 이더리움과 같은 주요 블록체인 네트워크는 네트워크 전체의 트랜잭션 처리 속도를 높이기 위해 샤딩 도입을 추진해 왔다. 블록체인 샤딩은 전체 네트워크를 여러 개의 샤드로 분리하여 각 노드가 모든 거래를 검증할 필요 없이 자신이 속한 샤드의 거래만 검증하게 함으로써, 보안성을 유지하면서도 처리 속도를 비약적으로 향상하는 것을 목표로 한다.