비 정규화 / 반 정규화(De-Normalization)
본문 바로가기
CS/Database

비 정규화 / 반 정규화(De-Normalization)

by IYK2h 2022. 6. 10.
728x90

비 정규화 / 반 정규화(De-Normalization)개념

비 정규화는 정규화된 엔티티, 속성, 관계에 대해 성늘 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법

비 정규화, 역 정규화라고도 불린다.

특징

장점

  • 비 정규화된 데이터 구조는 성능 향상과 괄리의 효울성이 증가

단점

  • 데이터의 일관성 및 정합석 저하
  • 유지를 위한 비용이 별도로 발생하여 성능에 나쁜 영향을 미칠 수 있음

기법

테이블

  • 테이블 병합
    • 1:1 관계, 1:N 관계를 통합하여 조인 횟수를 줄여 성능을 향상
    • 슈퍼타입/서브타입 테이블 통합을 통해 성능 향상
  • 테이블 분할
    • 테이블을 수직 또는 수평으로 분할하는 것으로 파티셔닝이라고 한다.
      종류 설명
      수평분할 테이블 분할에 레코드 기준으로 활용
      수직 분할 하나의 테이블이 가지는 컬럼의 개수가 증가하는 경우
      갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 보안을 정용해야하는 속성 분
  • 중복 테이블 추가
    • 대량의 데이터들에 대한 집계합수(Group By, Sum 등)를 사용하여 실시간 통계정보를 계산하는 경우에 효과적인 수행을 위해 별도의 통계 테이블을 두거나 중복 테이블을 추가
      종류 설명
      집계 테이블 추가 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것으로, 트리거의 오버헤드에 유의 필요
      진행 테이블 추가 이력 관리 등의 목적으로 추가하는 테이블로, 적절한 데이터양의 유지와 활용도를 높이기 위해 기본키를 적절히 설정
      특정 부분만을
      포함하는 테이블 추가
      데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성

컬럼

  • 컬럼 중복화
    • 조인 성능 향상을 위한 중복 허용

관계

  • 중복 관계 추가
    • 데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만, 이때 발생할 수 있는 성능 저하를 예방하기 위해 추가적 관계를 맺는 방법
728x90

'CS > Database' 카테고리의 다른 글

NoSQL (Not Only SQL)  (0) 2022.06.17
데이터 모델의 구성요소  (0) 2022.06.14
Oracle 권한 및 역할  (0) 2022.01.21
트랜잭션  (0) 2022.01.14
함수 종속성  (0) 2022.01.07

댓글