파티셔닝(Partitioning)이란?
큰 데이터베이스나 테이블을 더 작고 관리하기 쉬운 구성 요소로 분할하는 데이터베이스 관리 기법이다. 이 과정을 통해 데이터를 물리적으로 여러 부분으로 나누어 각 파티션을 독립적으로 관리할 수 있게 된다. 파티셔닝은 데이터베이스의 성능을 향상시키고, 관리를 용이하게 하며, 데이터의 접근성을 개선하는 데 도움이 된다.
파티셔닝의 유형:
범위 파티셔닝(Range Partitioning)
- 특정 범위를 기준으로 데이터를 분할
- 범위는 일반적으로 숫자, 날짜, 시간 등으로 지정
- 범위 파티셔닝을 사용하여 주문 데이터를 연도별로 분할할 수 있으며, 각 연도별 데이터는 해당 연도 범위에 속하는 주문만을 저장할 수 있게 된다.
- ex.
- 날짜 범위: 2020년 데이터, 2021년 데이터, 2022년 데이터 등으로 나누어 각기 다른 파티션에 저장.
- 가격 범위: 가격이 $0
$100, $101$500, $501 이상 등으로 구분하여 각 가격 범위에 해당하는 상품 데이터를 분리하여 저장.
- Range 파티셔닝은 특정 연도의 데이터에 빈번히 접근하거나 해당 연도의 데이터를 아카이브할 필요가 있을 때 매우 유용하다.
리스트 파티셔닝(List Partitioning)
- 사전에 정의된 데이터 값 목록에 따라 데이터를 분할
- 각 파티션에 특정 값 목록에 해당하는 데이터가 저장
- 예를 들어, 국가 코드, 지역 이름 등
- ex.
- 국가 코드: 'US', 'UK', 'JP' 등의 국가 코드를 기준으로 각 국가에 해당하는 사용자 데이터를 분리하여 저장.
- 지역명: '동부', '서부', '중부' 등으로 구분된 지역명을 기준으로 판매 데이터를 파티셔닝.
- List 파티셔닝은 특정 분류에 따라 데이터에 빠르게 접근할 수 있게 해주며, 관리가 쉽고 데이터 보안을 강화하는 데에도 도움을 줄 수 있다.
- 예를 들어, 특정 국가의 사용자 데이터에 대한 접근을 제한하거나 특정 조건을 만족하는 데이터만 빠르게 검색할 수 있습니다.
해시 파티셔닝(Hash Partitioning)
- 해시 함수를 사용하여 데이터를 분할
- 해시 값에 따라 데이터를 균등하게 분배
- 이 방법은 각 데이터 항목의 키 값을 해시 함수에 입력하여 반환된 해시 값에 기반하여 해당 데이터가 저장될 파티션을 결정
- 해시 파티셔닝은 데이터를 균등하게 분배하는데 효과적이며, 대용량 데이터 처리 시 로드 밸런싱에 유용
- ex.
- 데이터베이스에서 사용자 ID를 기준으로 데이터를 분배할 때, 해시 함수를 사용하여 각 사용자의 데이터를 다양한 파티션에 균일하게 배분할 수 있다. 이렇게 함으로써, 어떤 특정 파티션에 부하가 집중되는 것을 방지할 수 있다.
복합 파티셔닝(Composite Partitioning)
- 위의 파티셔닝 방법을 두 개 이상 조합하여 사용합니다.
- 범위 파티셔닝과 리스트 파티셔닝을 조합하거나, 범위 파티셔닝 후에 해시 파티셔닝을 적용할 수 있다.
- ex.
- 범위 + 리스트: 상품 데이터를 먼저 출시 연도별로 범위 파티셔닝하고, 각 연도별 파티션 내에서 상품 카테고리별로 리스트 파티셔닝을 적용할 수 있다. 이렇게 하면 특정 연도의 특정 카테고리 상품을 빠르게 찾을 수 있다.
- 범위 + 해시: 고객 데이터를 먼저 지역별로 범위 파티셔닝한 후, 각 지역 파티션 내에서 고객 ID를 기준으로 해시 파티셔닝하여 데이터를 분산시킬 수 있다.
- Composite 파티셔닝은 데이터의 특성과 접근 패턴을 고려하여 적절한 파티셔닝 방식을 조합함으로써 데이터베이스의 성능을 최적화하고, 데이터 관리를 용이하게 할 수 있다.
- 데이터가 크고 복잡한 경우, 특히 검색과 업데이트가 빈번하게 이루어지는 환경에서 효과적인 방법이다.
'DataBase > SQLD' 카테고리의 다른 글
분산 데이터베이스의 투명성 (1) | 2024.04.23 |
---|---|
정규화(Normalization) (0) | 2024.04.23 |
반정규화(Denormalization) (0) | 2024.04.23 |
식별자 (Identifiers) (0) | 2024.04.23 |
속성 (Attribute) (0) | 2024.04.23 |