Database De-Normalization(반정규화)

2023. 6. 16. 20:26학습/Computer Science

Database De-Normalization(DB 반정규화)

 

 

 

반정규화 정의

  • 정규화된 논리 데이터 모델을 시스템 운영의 단수화를 위해 중복, 통합, 분할 등을 수행하는 데이터 모델링 기법
  • 완벽한 수준의 정규화를 진행하면 일관성과 안정성은 증가하지만 성능이 저하될 수 있으므로 성능 향상을 위해 테이블을 통합, 분할, 추가하는 과정이다.

반정규화가 필요한 경우

  1. 정규화에 충실하여 종속성과 활용성은 향상되었지만, 수행 속도가 느려진 경우이다.
  2. 다량의 범위나 특정 범위 데이터만 자주 처리해야 하는 경우이다.
  3. 집계 정보가 자주 요구되는 경우이다.

 

반정규화 유형

  1. 중복 테이블 추가
    1. 특정 범위의 데이터가 자주 처리되거나 많은 양의 데이터를 자주 처리하는 경우에 수행한다.
    2. 처리 범위를 줄이지 않고는 수행속도를 개선할 수 없는 경우에 수행한다.
    3. 중복 테이블을 추가하는 방법은 아래와 같다.
      1. 집계 테이블 추가
      2. 진행(이력관리) 테이블 추가
      3. 특정 부분만 포함하는 테이블 추가
  2. 테이블 조합
    1. 대부분의 데이터 처리가 둘 이상의 테이블에서 진행되는 경우에 수행한다.
    2. 데이터 액세스가 간편해지지만 row수가 증가하여 처리량이 증가하는 경우가 있을 수 있다.
    3. 데이터 편집 규칙이 복잡해질 수 있다.
  3. 테이블 분할
    1. 특정 컬럼의 사용빈도가 높은 경우에 수행한다.
    2. 사용자에 따라 특정 부분만 지속적으로 사용되는 경우에 수행한다.
    3. 테이블을 분할하는 방법은 수직 분할과 수평 분할이 있다.
      1. 수직 분할 : 컬럼을 사용빈도에 따라 나눔
      2. 수평 분할 : 데이터 범위를 사용빈도에 따라 나눔
    4. 상황에 따라 의도한 성능을 발휘하지 못할 수 있다.
    5. 데이터 처리가 아닌 검색에 중점을 두어 판단해야 한다.
  4. 테이블 제거
    1. 테이블의 재정의 및 기타 반정규화 수행으로 인해 더 이상 액세스되지 않는 테이블이 발생한 경우에 수행한다.
    2. 유지보수 단계에서 많이 발생하며, 관리 소홓이 주된 원인이 된다.
  5. 컬럼의 중복화
    1. 자주 사용되는 컬럼이 서로 다른 테이블에 분산되어 있어 액세스 범위가 넓어지는 경우에 수행한다.
    2. 기본키의 형태가 적절하지 않거나 너무 많은 컬럼으로 구성된 경우에 수행한다.
    3. 성능 향상을 위해 중복 컬럼이 필요한 경우에 수행
    4. 다른 해결 방법은 없는지 우선 검토
    5. 데이터 저장공간의 낭비 및 무결성을 해치지 않게 주의해야 한다.
728x90