큰 Table, Index를 관리하기 쉬운 단위로 분리하는 방법
파티션은 데이터를 여러 테이블이나 데이터베이스 등으로 나누는 것
샤딩은 수평적 파티셔닝(Horizontal partitioning)의 일종.
어떤 인스턴스 또는 DB에서 데이터를 찾을지 알기 위한 어떤 논리나 식별자를 이용해 스키마를 여러 인스턴스와 서버에 복제하는 것. 어떤 논리나 식별자는 흔히 샤드 키라고 부른다.
일반적으로 키없는 논리?는 알파벳으로 나누는 건데, A-D 는 1 , E-G는 2 등등..
소비자 데이터는 이 것이 적합한데, 어떤 문자들이 다른 문자들 보다 더 자주 쓰인다는 것을 고려하지 않으면 크기가 다르게 표현될 수 있다.
(내 생각 : Z,X 등등 이런건 잘 많이 안쓰이는데, a,e,i,o,u 같은건 많이 쓰임. 근데 이런걸 똑같이 고려하면 크기가 균등하지 않을 수 있다는 것 같다)
다른 일반적인 방법은 유니크한 키 사용을 보장하는 시스템이나 논리를 쓰는 것이다
범위
Benefits
데이터의 개수를 기준으로 나누어 Partitioning한다.
데이터의 개수가 작아지고 따라서 index의 개수도 작아지게 된다. 자연스럽게 성능은 향상된다.
Disadvantages
서버간의 연결과정이 많아진다.
데이터를 찾는 과정이 기존보다 복잡하기 때문에 latency가 증가하게 된다.
하나의 서버가 고장나게 되면 데이터의 무결성이 깨질 수 있다.
테이블의 컬럼을 기준으로 나누어 Partitioning한다.
정규화하는 과정도 이와 비슷하다고 볼 수 있지만 Vertical Partitioning은 이미 정규화된 Data를 분리하는 과정이다.
자주 사용하는 컬럼등을 분리시켜 성능을 향상시킬 수 있다.
출처 :https://stackoverflow.com/questions/20771435/database-sharding-vs-partitioning
https://nesoy.github.io/articles/2018-02/Database-Partitioning
https://seokbeomkim.github.io/posts/partition-and-sharding/
https://lee-mandu.tistory.com/475