파티셔닝
하나의 테이블을 여러개의 테이블로 변환하는 기술. 쿼리실행의 효율성을 높이기 위해서 데이터를 쉽게 찾아올 수 있도록 물리적으로 테이블을 분할하는것.
•
수직 파티셔닝
데이터베이스의 테이블을 열(Column) 단위로 나누는 것
많은 컬럼이 존재한다면 디스크의 여러 블록에 데이터가 저장되므로 I/O 성능 저하를 불러올 수 있다.
로우 체이닝(Row Chaining)
길이가 너무 커서 하나의 블록에 저장되지 못하고 다수의 블록에 나누어져 저장
로우 마이그레이션(Row Migration)
수정된 데이터를 해당 데이터 블록에 저장하지 못하고 다른 블록의 빈 공간에 저장
•
수평 파티셔닝
데이터베이스의 테이블을 행(Row) 단위로 나누는 것
검색 속도 향상.
Partitioning Types
•
By Range - 특정 범위에 따라 데이터를 분할하는 방식
•
By List - 특정 파티션 키 값의 리스트를 기반으로 데이터를 분할
•
By Hash - 파티션 키의 해시 값을 기반으로 데이터를 분할 (데이터가 고르게 분포되도록 보장가능)
Sharding Types
•
By Range - 데이터를 특정 값의 범위에 따라 샤드로 분할
•
By List - 특정 값 목록에 따라 데이터를 샤드로 분할
•
By Hash - 해시 함수는 데이터베이스 키를 해싱하여 샤드를 결정
Partitioning vs Sharding
파티셔닝은 단일 데이터베이스 내에서 테이블을 더 작은 부분으로 나누는 것
샤딩은 여러 데이터베이스 서버에 걸쳐 데이터를 분할하는 것
특징 | 파티셔닝 (Partitioning) | 샤딩 (Sharding) |
데이터베이스 위치 | 단일 데이터베이스 인스턴스 내 | 여러 데이터베이스 서버에 걸쳐 |
주요 목적 | 성능 최적화, 관리 용이성 | 수평적 확장성 |
관리 방법 | 같은 인스턴스 내에서 파티션별로 관리 | 각 샤드는 독립적으로 관리 |
복잡성 | 상대적으로 낮음 | 상대적으로 높음 |
용도 | 특정 쿼리 성능 최적화, 테이블 관리 용이 | 대규모 시스템에서 부하 분산 및 확장성 유지 |