데이터베이스 분할
데이터베이스 분할(Partitioning) 또는 파티셔닝은 데이터베이스를 여러 부분으로 분할하는 것이다. 데이터베이스 분할은 중요한 튜닝기법으로 데이터가 너무 커져서, 조회하는 시간이 길어질 때 또는 관리 용이성, 성능, 가용성 등의 향상을 이유로 행해지는 것이 일반적이다. 분할된 각 부분을 ‘파티션’이라고 부른다.
가장 일반적인 것은 분산 데이터베이스 분할이다. 각 파티션은 여러 노드에 분산 배치되어 사용자가 각 노드에서 로컬 트랜잭션을 수행할 수 있다. 이것은 가용성과 보안을 유지하면서 특정 뷰에 관한 일반 트랜잭션의 성능을 향상시킨다. 데이터베이스의 분할, 각각 (테이블, 인덱스, 트랜잭션 로그를 각각 유지했다) 작은 데이터베이스가 되도록 분할 방법과 하나의 테이블만 같이 선택된 요소만 분리하는 방법이 있다.
수평 분할(horizontal partitioning)은 하나의 테이블의 각 행을 다른 테이블에 분산시키는 것이다. 예를 들어 방대한 고객 데이터 테이블을 성별에 따라 ‘남녀’로 나누어 CustomerMen과 CustomerWomen 두 개의 테이블로 분할한다. 테이블은 2개로 분할되지만, 모든 고객을 나타내기 위해 양자를 결합한 뷰를 생성하면 된다.
수직 분할(vertical partitioning)은 테이블의 일부 열을 빼내는 형태로 분할한다. 관계의 정규화는 본질적으로 수직 분할에 관련된 과정이다. 수직 분할에는 여러 저장 장치를 사용할 수도 있고, 예를 들어 별로 사용되지 않는 열이나 매우 자릿수가 많은 열을 다른 장치에 두는 등의 조치를 생각할 수 있다. 명시적으로 하거나, 암묵적으로 하는 경우도 있지만, 이런 종류의 분할을 ‘열 분할’(row splitting)이라고도 부른다. 자주 묻는 수직 분할 열 내용의 사용 빈도에 따라 분할하는 것이다. 분할된 테이블들을 포함하는 뷰를 생성하면 원래의 경우보다 성능이 저하되지만, 사용 빈도가 높은 데이터에만 액세스할 경우 성능이 향상된다. 예를 들어, 뉴스를 서비스할 때, 고객들은 최근의 데이터를 가장 많이 조회할 것이다. 이 경우 1개월 전의 데이터를 다른 테이블에 두면, 훨씬 효율적으로 검색할 수 있을 것이다.
분할 기준
[편집]강력한 데이터베이스 관리 시스템은 분할에 대해 각종 기준 (분할 기법)을 제공하고 있다. 분할은 ‘분할 키(partitioning key)’를 사용한다. 자주 묻는 분할 기준으로 다음의 것이 있다.
- 범위 분할 (range partitioning)
- 분할 키 값이 범위 내에 있는지 여부로 구분한다. 예를 들어, 우편 번호를 분할 키로 수평 분할하는 경우이다.
- 목록 분할 (list partitioning)
- 값 목록에 파티션을 할당 분할 키 값을 그 목록에 비추어 파티션을 선택한다. 예를 들어, Country 라는 컬럼의 값이 Iceland , Norway , Sweden , Finland , Denmark 중 하나에 있는 행을 빼낼 때 북유럽 국가 파티션을 구축 할 수 있다.
- 해시 분할 (hash partitioning)
- 해시 함수의 값에 따라 파티션에 포함할지 여부를 결정한다. 예를 들어, 4개의 파티션으로 분할하는 경우 해시 함수는 0-3의 정수를 돌려준다.
- 합성 분할 (composite partitioning)
- 상기 기술을 결합하는 것을 의미하며, 예를 들면 먼저 범위 분할하고, 다음에 해시 분할 같은 것을 생각할 수 있다. 컨시스턴트 해시법은 해시 분할 및 목록 분할의 합성으로 간주 될 수 있고 키 공간을 해시 축소함으로써 일람할 수 있게 한다.