ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 반정규화
    SQL 2020. 3. 2. 01:24

    반정규화란?

     

    - 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능향상과 개발, 운영의 단순화를 위해 중복, 통합, 분리 등을

     

      수행하는 데이터 모델링 기법


    협의의 반정규화란?

     

    데이터를 중복하여 성능을 향상시키기 위한 기법


    넓은 의미의 반정규화란?

     

    데이터를 중복하여 성능을 향상시키기 위한 기법


    언제 사용?

     

    1. 정규화만을 수행하여 엔터티의 개수가 증가하고 관계가 많아져 일부 여러 개의 조인이 걸려야만

     

       데이터를 가져오는 경우

     

     2. 정규화의 함수적 종속관계는 위반하지 않지만 데이터의 중복성을 증가시켜야만 데이터 조회의 

     

       성능을 향상시키는 경우


    사용하는 이유?

     

    데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는

     

    데이터를 조회할 때 디스크 I/O양이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나

     

    칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행한다.

     


    반정규화를 기술적으로 수행하지 않은 경우 발생

     

     1. 성능이 저하된 데이터베이스가 생성될 수 있다.

     

     2. 구축단계나 시험단계에서 반정규화를 적용할 때 수정에 따른 노력비용이 많이 들게 된다.

     


    반정규화 적용전 주의사항

     

    - 보통 프로젝트에서는 칼럼 중복을 통해서 반정규화를 많이 수행

     

      * 개발을 하다가 SQL문장 작성이 복잡해지고 그에 따라 SQL 단위 선능 저하가 예상되어 다른 테이블에서 조인

     

      하여 가져와야 할 칼럼을 기준이 되는 테이블에 중복하여 SQL문장을 단순히 처리하기 위해 요청되는 경우가 많기때문

     

      그러나, 이렇게 무별하게 칼럼의 반정규화를 많이 하게 되는 것은 데이터에 대한 무결성을 깨뜨리는 결정적인 역할을

     

      하는 경우가 다수 존재

     

      반정규화에 대한 필요성이 결정되면, 칼럼의 반정규화 뿐 아니라 테이블의 반정규화 관계의 반정규화를 종합적으로

     

      고려하여 적용해야 한다. 또한, 반정규화를 막연하게 중복을 유도하는 것만을 수행하기 보다는 성능을 

     

       향상시킬 수 있는 다른 방법들 또한 고려해야 한다.

     

     - 반정규화 적용시 데이터 무결성을 보장할수 있는 방법을 고려해야 한다.

     

       정규화와 반정규화 사이에는 Trade-Off 관계, 즉 마치 저울 추가 양쪽에 존재하여 한쪽이 무거워지면

     

       다른 쪽은 위로 올라가는 것처럼 정규화만을 강조하다 보면 성능의 이슈가 발생,

     

       반정규화만을 과도하게 적용하면 데이터 무결성이 깨질 수 있는 위험성 증가

     


    반정규화 절차

     

     


    반정규화의 기법

     

    1. 테이블 반정규화

     

     

    2. 칼럼 반정규화

     

     

    3. 관계 반정규화

     

     -  테이블, 칼럼의 반정규화는 데이터 무결성에 영향을 미치게 되나, 관계의 반정규화는 데이터 무결성을 깨뜨릴

     

         위험을 갖지 않고서도 데이터 처리의 성능을 향상시킬 수 있음

     

     - 데이터 모델 전체가 관꼐로 연결되어 있고, 관계가 서로 먼 친척간에 조인관계가 빈번하게 되어 성능저하가

     

       예상이 된다면, 관계의 반정규화를 통해 성능향상 도모 필요

     

     

    나중에 공부할거

     

    1. 정규화가 잘 정의된 데이터 모델에서 성능이 저하될 수 있는 경우

     

    2. 정규화가 잘 정의된 데이터 모델에서 성능이 저하된 경우

    'SQL' 카테고리의 다른 글

    SQL문 처리과정  (0) 2020.02.24
    효율적인 쿼리 검색!!!!!  (1) 2020.02.20
    계층 쿼리 누적 합 구하기  (1) 2020.02.20
    계층형 쿼리 (Hierarchiacal Query)  (0) 2020.02.18
    달력 쿼리  (0) 2020.02.17

    댓글

Designed by Tistory.