본문 바로가기
IT 자격증 공부/SQLD

SQLD - 데이터 모델과 성능2(반정규화)

by 코딩하는 랄로 2023. 8. 22.
728x90

반정규화(De-Normalization)

반정규화란, 데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다. 

 

정규화와는 반대되는 개념이기 때문에, 반정규화를 할 시 데이터의 무결성을 해칠 수 있다는 단점이 있지만 SELECT 등의 성능을 향상 시킬 수 있다는 장점이 있다.

 

 

 

반정규화를 수행하는 경우

  • 정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우
  • 다량의 범위를 자주 처리해야 하는 경우
  • 특정 범위의 데이터만 자주 처리되는 경우
  • 요약/집계 정보가 자주 요구되는 경우

 

 

 

반정규화 절차

반정규화는 데이터의 무결성을 해치기 때문에 위와 같이 반정규화 수행이 필요한 상황이 왔다고 해서 무조건적으로 수행하지 않는다. 

 

반정규화를 진행하기 전, 사용할 수 있는 여러 방법 등을 검토해보고 마지막 방법으로 반정규화를 진행하는 것이다.

 

  • 먼저, 대상 조사 및 검토를 진행한다. 데이터 처리 범위, 통계성 등을 확인해서 반정규화가 필요한 대상을 조사하는 단계이다.
  • 반정규화 수행 전 다른 방법을 찾는다. 클러스터링, 뷰, 인덱스, 튜닝, 응용 프로그램, 파티션 등 다른 방법들을 검토하는 단계이다.
  • 반정규화를 수행한다. 다른 방법들이 없을 경우, 반정규화를 실시한다.

 

 

 

반정규화 기법

반정규화에는 여러 기법들이 있다. 상황에 따라 필요한 기법을 이용하여 반정규화를 수행하면 된다.

 

  • 계산된 칼럼 추가 : 다른 테이블에서 계산된 값을 특정 테이블에 추가하는 기법이다.
  • 테이블 수직분할 : 하나의 테이블을 두개 이상의 테이블로 분할한다. 칼럼을 분할하여 새로운 테이블을 만든느 기법이다.
  • 테이블 수평분할 : 하나의 데이블에 있는 값을 기준으로 테이블을 분할하는 방법이다.
    • 파티션 기법 : 데이터베이스에서 파티션을 사용하여 테이블을 분할할 수 있다. 파티션을 사용하면 논리적으로 하나의 테이블이지만 여러 개의 데이터 파일에 분산된어 저장된다.
  • 테이블 병합 :
    • 1대1, 1대N 관계의 테이블을 하나의 테이블로 병합해서 성능을 향상시킨다. 성능이 향상되지만 많은 양의 중복 테이블이 발생한다.
    • 슈퍼타입과 서브타입 관계가 발생하면 테이블을 통합하여 성능을 향상시킨다.
      • 예를 들어 고객 엔터티가 존재할 때 개인고객과 법인 고객으로 분류된다고 가정해보자. 이 때 고객 엔터티는 슈퍼 타입이고 개인고객과 법인 고객은 서브타입인 것이다. 
      • 슈퍼타입과 서브타입의 관계는 배타적 관계와 포괄적 관계가 있는데, 배타적 관계는 고객이 개인고개이가나 법인 고객인 경우를 의미하고 포괄적 관계는 고객이 개인고객일 수도 있고 법인 고객일 수도 있는 것이다.
    • 변환 방법
      • OneToOne(1:1) : 슈퍼타입과 서브타입을 개별 테이블로 도출, 테이블 수가 많아서 조인이 많이 발생하고 관리가 어려움
      • Plus Type(슈퍼+서브) : 슈퍼타입과 서브타입 테이블로 도출, 조인이 발생하고 관리가 어렵다.
      • Single Type(All in one) : 슈퍼타입과 서브타입을 하나의 테이블로 도출, 조인성능이 좋고 관리가 편리하지만, 입출력 성능이 나쁘다.

 

 

 

파티션 기법

반정규화 기법 중 하나인 파티션 기법 또한 여러가지 기법을 가진다.

  • range partition : 데이터 값의 범위를 기준으로 파티션을 수행
  • list partition : 특정한 값을 지정하여 파티션을 수행
  • hash partition : 해시함수를 적용하여 파티션을 수행
  • composite partition : 범위와 해시를 복합적으로 사용하여 파티션을 수행

 

해시함수

해시함수는 임의의 길이를 갖는 메세지를 입력받아 고정된 길이의 해시 값을 출력하는 함수이다. 암호 알고리즘에는 키가 사용되지만, 해시 함수는 키를 사용하지 않으므로 같은 입력에 대해서는 항상 같은 출력이 나오게 된다.

 

이러한 해시함수를 사용하는 목적은 메세지의 오류나 변조를 탐지할 수 있는 무결성을 제공하기 위해 사용된다.

 

 

파티션 테이블의 장점

  • 테이블 조회 시에 엑세스 범위가 줄어드릭 때문에 성능이 향상된다,
  • 데이터가 분화되어 있기 때문에 I/O의 성능이 향상된다.
  • 각 파티션을 독립적으로 백업 및 복구가 가능하다.

 

 

 

2023.08.22 - [IT 자격증 공부/SQLD] - SQLD - 데이터 모델과 성능3(분산데이터베이스)

 

SQLD - 데이터 모델과 성능3(분산데이터베이스)

분산 데이터베이스 데이터베이스 시스템 구축 시에 한 대의 물리적 시스템에 데이터베이스 관리 시스템(DBMS)을 설치하고 여러 명의 사용자가 데이터베이스 관리 시스템에 접속하여 데이터베이

codingralro.tistory.com

 

728x90