샤딩과 파티셔닝 모두 대용량 데이터베이스의 가용성, 성능 등을 위해 활용되는 데이터베이스 관리 기법이다.
수평적 파티셔닝이라고도 알려진 샤딩은 데이터베이스의 스키마를 나눠서 샤드라 불리는 더 작은 데이터 조각들을 여러 인스턴스/서버에 걸쳐 분산 배치하는 기법이다.
샤드들은 샤드 키에 기반해 각 샤드에 배치되는데, 지리적/인구학적 요소나, 요구사항에 따라 결정하면 된다
파티셔닝은 데이터베이스를 나누는 여러 기법을 가르키는 말이지만, 주로 수직 파티셔닝이라는 의미로 쓰인다. 수직 파티셔닝은 데이터베이스 인스턴스를 더 작은 테이블 또는 파티션으로 나누는 기법이다.
Range Partitioning: 특정 컬럼의 값의 범위로 데이터베이스를 나눈다
(예) id
컬럼을 기준으로 범위를 나눠 파티셔닝한다
PARTITION BY RANGE (id) (
PARTITION p_0 VALUES LESS THAN (150000),
PARTITION p_1 VALUES LESS THAN (250000),
PARTITION p_2 VALUES LESS THAN (MAXVALUE)
);
List Partitioning: 각 파티션에 값의 집합을 배정하여 이를 기준으로 데이터베이스를 나눈다
파티셔닝의 단점 또한 데이터베이스 분리로 인한 복잡성 증가다
파티셔닝과 샤딩은 대용량 데이터베이스를 작게 나누는 공통된 목적을 서로 다른 접근으로 성취한다
https://planetscale.com/learn/articles/sharding-vs-partitioning-whats-the-difference
https://mariadb.com/kb/en/list-partitioning-type/