파티션(데이터베이스)

Partition (database)
관리자 도구의 환경에서 MySQL에 있는 테이블의 파티셔닝 옵션.

파티션은 논리 데이터베이스 또는 그 구성 요소를 구별되는 독립된 부분으로 나누는 것이다. 데이터베이스 파티셔닝은 일반적으로 관리성, 성능 또는 가용성[1] 이유 또는 로드 밸런싱을 위해 수행된다. 각 파티션이 여러 노드에 걸쳐 분산될 수 있는 분산형 데이터베이스 관리 시스템에서 인기가 있으며, 노드의 사용자가 파티션에서 로컬 트랜잭션을 수행하고 있다. 이는 가용성과 보안을 유지하면서 특정 데이터 보기를 포함하는 정기적인 트랜잭션을 수행하는 사이트의 성능을 향상시킨다.

분할 기준

현재의 고급 관계형 데이터베이스 관리 시스템은 데이터베이스를 분할하는 다른 기준을 제공한다. 그들은 파티셔닝 키를 가지고 특정 기준에 따라 파티션을 할당한다. 몇 가지 일반적인 기준은 다음과 같다.

  • 범위 파티셔닝: 파티션 키가 특정 범위 내에 있는지 확인하여 파티션을 선택한다. 예를 들어 "zipcode" 열의 값이 70000에서 799999 사이인 모든 에 대한 파티션이 있을 수 있다. 그것은 일부 속성의 값 간격(범위)에 근거하여 튜플을 분배한다. 해싱에서와 같이 정확한 일치 쿼리를 지원하는 것 외에도 범위 쿼리에 적합하다. 예를 들어, "A1과 A2 사이"라는 술어가 있는 쿼리는 튜플을 포함하는 유일한 노드에 의해 처리될 수 있다.
  • 목록 분할: 파티션에 값 목록이 할당됨 파티션 키에 이러한 값 중 하나가 있으면 파티션이 선택된다. 예를 들어, 열이 있는 모든 행 Country 어느 쪽이든 Iceland, Norway, Sweden, Finland 또는 Denmark 북유럽 국가들을 위한 칸막이를 만들 수 있을 것이다.
  • 복합 파티셔닝: 예를 들어 먼저 범위 파티셔닝을 적용한 다음 해시 파티셔닝을 적용하여 위의 파티셔닝 스키마의 특정 조합을 허용한다. 일관된 해싱은 해시가 키 공간을 나열할 수 있는 크기로 줄이는 해시와 목록 분할의 합성어로 간주할 수 있다.
  • 라운드 로빈 파티셔닝: 가장 간단한 전략으로 균일한 데이터 분포를 보장한다. 와 함께 n 파티션, i삽입 순서의 튜플이 파티션에 할당됨 (i mod n). 이 전략은 병렬로 수행되는 관계에 대한 순차적 접근을 가능하게 한다. 그러나 술어에 근거한 개별 튜플에 직접 접근하려면 전체 관계에 접근해야 한다.
  • 해시 파티셔닝: 파티션 번호를 산출하는 일부 속성에 해시 함수를 적용한다. 이 전략은 선택 속성에 대한 정확한 일치 쿼리를 정확히 하나의 노드로 처리하고 다른 모든 쿼리는 모든 노드에서 병렬로 처리할 수 있도록 한다.

분할 방법

분할은 별도의 작은 데이터베이스를 구축하거나(각각 자체 테이블, 인덱스트랜잭션 로그 포함) 선택된 요소(예: 하나의 테이블)를 분할하여 수행할 수 있다.

  • 수평 분할은 다른 행을 다른 표에 넣는 것을 포함한다. 예를 들어 ZIP 코드가 5만 미만인 고객은 CustomerEast에, ZIP 코드가 5만 이상인 고객은 CustomerWest에 저장된다. 두 개의 파티션 테이블은 CustomerEast와 Customer이다.웨스트, 모든 고객에 대한 완전한 뷰를 제공하기 위해 두 가지 모두에 대해 조합이 있는 가 만들어질 수도 있다.
  • 수직 분할은 열이 적은 테이블을 만들고 나머지 열을 저장하기 위해 추가 테이블을 사용하는 것을 포함한다.[1] 일반적으로 이러한 관행을 정상화라고 한다. 그러나 수직 분할은 이미 정규화된 상태에서도 더 확장되고 열을 분할한다. 행이 열에 의해 분할되고 명시적이거나 암묵적으로 수행될 수 있기 때문에 이러한 유형의 분할을 "행 분할"이라고도 한다. 수직 파티셔닝을 실현하기 위해 구별되는 물리적 머신을 사용할 수 있다. 자주 사용하지 않는 열이나 매우 넓은 열을 다른 기계에 저장해, 예를 들면, 다른 기계에 상당한 양의 메모리를 차지하는 것이 수직 분할의 방법이다. 수직 분할의 일반적인 형태는 동적 데이터에서 정적 데이터를 분리하는 것인데, 특히 동적 데이터가 정적만큼 자주 사용되지 않는 테이블의 경우 전자가 후자보다 접근 속도가 빠르기 때문이다. 새로 생성된 두 테이블에 걸쳐 뷰를 생성하면 성능 저하가 있는 원래 테이블이 복원되지만 정적 데이터에 액세스하는 것만으로도 성능이 향상된다. 기둥 데이터베이스는 각 열이 자체 테이블에 저장될 때까지 수직으로 분할된 데이터베이스로 간주할 수 있다.

참고 항목

참조

  1. ^ a b Shamkant Navathe, Stefano Ceri, Gio Wiederhold, 1984년 스탠퍼드 대학교 Jinglie Dou의 "데이터베이스 설계를 위한 수직 분할 알고리즘"