티스토리 뷰
* 반정규화?
반정규화는 비정규화, 역정규화라고도 한다. 여기서 반은 반대하다의 의미이다.
데이터 무결성이 깨질 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 것은 데이터를 조회할 때 디스크 IO량이 많아서 성능이 저하된다든지, 경로가 너무 멀어 조인으로 인한 성능 저하가 예상된다든지, 컬럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우에 성능 저하를 막기 위해서이다.
기본적으로 정규화는 입력/수정/삭제 성능을 향상시킬 뿐만 아니라 조회 성능도 향상시키는 역할을 한다. 그러나 정규화를 수행하면 엔티티타입의 갯수가 증가하고 관계가 많아져 여러 개의 조인이 걸려야마 데이터를 가져오는 경우가 있다. 이럴 때 비즈니스적으로 조회 처리 성능이 중요하다고 판단되면 부분적으로 반정규화를 고려하게 된다. 또한 정규화의 함수적 종속관계는 위반하지 않지만 데이터의 중복성을 증가시켜야만 데이터 조회의 성능이 향상되는 경우가 있다. 이럴 때 반정규화를 통해서 성능을 향상시킬 수 있다.
- 어떻게 적용하는가?
반정규화란 시스템의 성능 향상과 개발 및 운영의 단순화를 위해 정규화된 엔티티타입, 속성, 관계에 대해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법을 의미한다.
좁은 의미의 반정규화는 데이터를 중복하여 성능을 향상시키는 기법을 의미하며,
더 넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미한다.
반정규화를 적용할 때는 데이터 무결성이 깨질 가능성이 많기 때문에 반드시 데이터 무결성을 보장할 수 있는 방법을 고려한 이후에 적용해야한다.
정규화와 반정규화 사이에는 Trade-Off 관계가 성립되는 경우가 많다. 정규화만을 강조하다 보면 성능 이슈가 발생할 수 있고, 반정규화를 과도하게 적용하다 보면 데이터 무결성이 깨질 위험이 증가한다. 따라서 반정규화를 적용할 때는 데이터 무결성의 중요함을 인식하고 데이터 무결성이 충분히 유지될 수 있도록 프로세스 처리시의 안정성을 먼저 확인해야 한다.
- 반정규화 절차
1. 반정규화 대상 조사 : 범위 처리 빈도수 조사, 대량의 범위 처리 조사, 통계성 프로세스 조사, 테이블 조인 개수
2. 다른 방법 유도 검토 : 뷰 테이블 클러스터링 조정, 인덱스 조정, 응용 애플리케이션
3. 반정규화 적용 : 테이블 반정규화, 속성의 반정규화, 관계의 반정규화
'Database' 카테고리의 다른 글
substring을 사용하여 다른 테이블의 자른 문자열과 함께 조회 (0) | 2017.12.15 |
---|---|
[Postgresql] sequence 초기화 / insert (0) | 2016.11.09 |