We.TIL 39 : 비정규화(denormalization)

김기욱·2020년 9월 19일
0

We.TIL

목록 보기
60/69

비정규화

'역정규화'라고도 부르며 이전에 정규화된 데이터베이스에서 성능을 개선하기 위해 사용하는 전략이다.
가장 큰 목적은 '조회'성능의 향상이며, 이 때문에 짧은 시간에 많은 양의 조회 트랜잭션이 발생하는 웹페이지에서 많이 쓰이는 편이다.

통합화와의 차이

테이블(엔티티)를 합치는 것은 비정규화나 통합화나 똑같아 보인다. 하지만 두 가지는 분명하게 다른 개념이다. 통합화란 '분리될 필요가 없는 데이터들' '통합했을 때 성능이 좋아지는 데이터들'을 합치는 것이다. 그러므로 올바른 통합화는 논리적으로도 성능적으로도 좋은 영향을 준다.

그에 반해 비정규화는 종류가 다양하긴하지만 기본적으로 '데이터의 중복'을 허용하며 조회성능을 향상하는데 역점을 둔다. 굳이 데이터를 합칠 필요가 없고 정규화 모델이 데이터무결성 원칙에 좋을지라도 조회성능의 향상이 중복데이터의 존재보다 훨씬 중요한 경우 비정규화를 쓰게된다.

그리고 '비정규화'는 엔티티를 분해/생성하는 경우도 존재한다. 조회가 빈번한 속성, 요약엔터티 등등으로 분해 혹은 생성을 하며, 필요한 경우에 조회속도 향상을 꾀한다.

비정규화의 종류

1) One to One 관계의 엔티티 결합

2) Many to One 관계의 엔티티 결합

3) 엔티티 분해

4) 요약엔티티 생성

5) 중복속성 채택

6) 추출속성 채택
: 중복속성, 추출속성은 똑같이 중복데이터다. 다만 추출속성은 기존속성의 Sum, Avg, Min 등의
연산된 값들이라고 생각하면 된다.

profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글