반정규화의 정의
1. 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능향상과 개발(Development)과 운영(Maintenance)의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법을 의미한다.
2. 협의의 반정규화는 데이터를 중복하여 성능을 향상시키기 위한 기법이라고 정의할 수 있고, 좀 더 넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미한다.
3. 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상될때, 또는 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행하게 된다.
- 중복성의 원리를 활용하여 데이터 조회시 성능을 향상시키는 역할을 할 수 있다.
반정규화 절차
1. 반정규화도 난이도가 높은 데이터 모델링의 실무 기술이다.
2. 반정규화에 대한 필요성이 결정이 되면 칼럼의 반정규화 뿐만 아니라 테이들의 반정규화와 관계의 반정규화를 종합적으로 고려하여 적용한다.
3. 반정규화를 막연하게 중복을 유도하는 것만을 수행하기 보다는 성능을 향상시킬 수 있는 다른 방법들을 고려하고 그 이후에 반정규화를 적용하도록 해야 한다.
1) 반정규화 대상 조사
- 범위 처리 빈도수 조사
- 대량의 범위 처리 조사
- 통게성 프로세스 조사
- 테이블 조인 개수
2) 다른 방법 유도 검토
- 뷰 테이블
- 클러스터링 적용
- 인덱스 조정
- 응용 어플리케이션
3) 반정규화 적용
- 테이블 반정규화
- 속성 반정규화
- 관계 반정규화
=> 반정규화의 대상을 조사하고 다른 방법을 적용할 수 있는지 검토한 이후에 반정규화를 적용해야 한다.
테이블 반정규화
칼럼의 반정규화
관계 반정규화
테이블과 칼럼의 반정규화는 데이터 무결성에 영향을 미치게 되나, 관계의 반정규화는 데이터 무결성을 깨뜨릴 위험을 갖지 않고서도 데이터 처리의 성능을 향상시킬 수 있는 반정규화 기법이다.
반정규화를 적용할 때 기억해야 할 것은 데이터를 입력, 수정, 삭제할 때는 성능이 떨어진다는 점, 그리고 데이터의 무결성 유지에 주의해야한다.
'으쌰으쌰💪 > SQL' 카테고리의 다른 글
데이터 모델과 성능 - 데이터베이스 구조와 성능 (0) | 2023.08.21 |
---|---|
데이터 모델과 성능 - 대량 데이터에 따른 성능 (0) | 2023.08.17 |
데이터 모델과 성능 - 정규화와 성능 (0) | 2023.08.16 |
데이터 모델과 성능 - 성능 데이터 모델링 개요 (0) | 2023.08.16 |
데이터 모델링 - 연습문제 오답노트 (0) | 2023.08.15 |