병렬 데이터베이스란

성능 개선을 목적으로 병렬 컴퓨팅을 통해 데이터 적재, 색인 빌드, 쿼리 평가 등의 데이터베이스 기능들을 수행한다.

특징

  • 다수의 마이크로프로세서를 동시에 사용하여 데이터 처리를 고속으로 수행한다.
  • 주로 멀티프로세서 구조를 통한 병렬 처리를 가리킨다.
  • 그외에 공유 메모리 구조, 공유 디스크 구조, 비공유 구조 등이 있다.

데이터베이스 분할(파티셔닝)

데이터베이스를 여러 부분으로 분할하는 것이다.

목적

데이터베이스 분할은 중요한 튜닝기법으로 데이터가 너무 커져서, 조회하는 시간이 길어질 때 또는 관리 용이성, 성능, 가용성 등의 향상을 이유로 행해지는 것이 일반적이다. 분할된 각 부분을 '파티션'이라고 부른다.

특징

  • 가장 일반적인 것은 분산 데이터베이스 분할 이다. 각 파티션은 여러 노드에 분산 배치되어 사용자가 각 노드에서 로컬 트랜잭션을 수행할 수 있다. 이것은 가용성과 보안을유지 하면서 특정 뷰에 관한 일반 트랜잭션의 성능을 향상시킨다.
  • 파티션 각각이 작은 데이터베이스가 되도록 분할하는 방법과 하나의 테이블만 같이 선택된 요소만 분리하는 방법이 있다.

행과 열로 분할 기법 구분

수평 분할

하나의 테이블의 각 을 다른 테이블에 분산시키는 것이다. 예를 들어 방대한 고객 데이터 테이블을 성별에 따라 '남녀'로 나누어 CustomerMen과 CustomerWomen 두 개의 테이블로 분할한다. 테이블은 2개로 분할되지만, 모든 고객을 나타내기 위해 양자를 결합한 뷰를 생성하면 된다.

수직 분할

테이블의 일부 을 빼내는 형태로 분할한다. 관계의 정규화는 본질적으로 수직 분할에 관련된 과정이다. 수직 분할에는 여러 저장 장치를 사용할 수도 있고, 예를 들어 별로 사용되지 않는 열이나 매우 자릿수가 많은 열을 다른 장치에 두는 등의 조치를 생각할 수 있다. 명시적으로 하거나, 암묵적으로 하는 경우도 있지만, 이런 종류의 분할을 ‘열 분할’(row splitting)이라고도 부른다. 자주 묻는 수직 분할 열 내용의 사용 빈도에 따라 분할하는 것이다. 분할된 테이블들을 포함하는 뷰를 생성하면 원래의 경우보다 성능이 저하되지만, 사용 빈도가 높은 데이터에만 액세스할 경우 성능이 향상된다. 예를 들어, 뉴스를 서비스할 때, 고객들은 최근의 데이터를 가장 많이 조회할 것이다. 이 경우 1개월 전의 데이터를 다른 테이블에 두면, 훨씬 효율적으로 검색할 수 있을 것이다.

분할 키 기준 분할 기법 구분

범위 분할

분할 키 값이 범위 내에 있는지 여부로 구분한다.

예를 들어, 우편 번호를 분할 키로 수평분할하는 경우이다. 또한 일별, 월별, 분기별 등의 순차적인 데이터를 관리하는 테이블에 많이 사용된다.

목록 분할

특정 컬럼의 특정 값을 기준으로 파티셔닝을 하는 방식이다.

예를 들어, Country 라는 컬럼의 값이 Iceland , Norway , Sweden , Finland , Denmark 중 하나에 있는 행을 빼낼 때 북유럽 국가 파티션을 구축 할 수 있다.

특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능하며 주로 이질적인 값이 많지 않고 분포도가 비슷하고 대소문자를 구분하는데 허용문자 외 다른 문자를 입력시 에러가 발생한다. 다양한 SQL의 액세스 패스에서 해당 컬럼의 조건이 많이 들어오는 경우에 유용하게 사용된다.

해시 분할

특정 컬럼 값에 해시 함수를 적용하여 분할하는 방식으로, 데이터의 관리 보다는 성능 향상에 목적을 둔다.

예를 들어, 4개의 파티션으로 분할하는 경우 해시 함수는 0-3의 정수를 돌려준다.

레인지 파티셔닝은 각 범위에 따라 데이터의 양이 일정하지 않아 분포도가 일정하지 않은 단점이 있지만, 해시 파티셔닝은 이러한 단점을 보완하여 일정한 분포도를 가진 파티션으로 나누고, 균등한 분포도를 가질 수 있도록 조율하여 병렬 프로세싱으로 성능을 높인다. 실제로 분포도를 정의하기 어려운 테이블을 파티셔닝을 할 때 많이 이용하고 2의 제곱수로 파티셔닝하는 것이 일반적이다. 해시 파티셔닝으로 구분된 파티션들은 동일한 논리, 물리적 속성을 가진다. 또한 레인지 파티션과 달리 각 파티션에 지정된 값들을 데이터베이스 관리 시스템이 결정하므로 각 파티션에 어떤 값들이 들어있는지 알 수가 없다. 하지만 대용량의 분포도가 일정치 않은 테이블을 마이그레이션 할 때는 프로그램 병렬 방식과 유용하게 쓰일 수 있다.

합성 분할

상기 기술을 결합하는 것을 의미한다. 예를 들면 먼저 범위 분할을 하고, 다음에 해시 분할 같은 것을 생각한다. 컨시스턴트 해시법은 해시 분할 및 목록 분할의 합성으로 간주 될 수 있고 키 공간을 해시 축소하므로써 알람할 수 있게 한다.

라운드로빈 분할

라운드로빈 분할은 파티션에 행의 고른 분포를 원할 때 사용한다. 그러나, 해시분할과 달리 분할 칼럼을 명시할 필요가 없다. 라운드 로빈 분할로 회전하면서 새로운 행이 파티션에 할당된다. 테이블은 기본키가 반드시 필요하진 않다.

참고 자료

라운드로빈

관련 문제

병렬 데이터베이스 환경 중 수평 분할에서 활용되는 분할 기법이 아닌 것은?

 1.    라운드-로빈
 2.    범위 분할
 3.    예측 분할
 4.    해시 분할

3

'데이터베이스' 카테고리의 다른 글

데이터 무결성  (0) 2021.07.14
데이터베이스의 설계 단계  (0) 2021.07.14
스키마 정의 및 종류  (0) 2021.07.14
django - mariadb on AWS EC2 연동  (0) 2021.06.06
Previewing  (0) 2018.03.01