2022.02.11 - [database] - [SQLD] 정규화(Normalization)
반정규화는 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발(Development)과 운영(Maintenance)의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다. 반정규화는 데이터를 중복하여 성능을 향상시키기 위한 기법이라고 정의할 수 있고 좀 더 넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등응ㄹ 수행하는 모든 과정을 의미한다.
데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나 컬럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행하게 된다.
테이블의 반정규화
기법분류 | 반정규화 기법 |
테이블 명함 | 1:1 관계 테이블병합 |
1:M 관계 테이블병합 | |
슈퍼/서브타입 테이블병합 | |
테이블 분할 | 수직분할 |
수평분할 | |
테이블 추가 | 중복테이블 추가 |
통계테이블 추가 | |
이력테이블 추가 | |
부분테이블 추가 |
컬럼의 반정규화
반정규화 기법 |
중복컬럼 추가 |
파생컬럼 추가 |
이력테이블 컬럼추가 |
PK에 의한 컬럼추가 |
응용시스템 오작동을 위한 컬럼 추가 |
반정규화 절차
1. 반정규화 대상조사
- 범위처리빈도수 조사
- 대량의 범위 처리 조사
- 통계성 프로세스 조사
- 테이블 조인 개수
2. 다른 방법유도 검토
- 뷰(VIEW) 테이블
- 클러스터링 적용
- 인덱스의 조정
- 응용애플리케이션
3. 반정규화의 적용
- 테이블 반정규화
- 속성의 반정규화
- 관계의 반정규화
반정규화의 대상에 대해 다른방법으로 처리
- 지나치게 많은 조인(JOIN)이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 뷰(VIEW)를 사용하면 이를 해결할 수도 있다.
- 대량의 데이터처리나 부분처리에 의해 성능이 저하되는 경우에 클러스터링을 적용하거나 인덱스를 조정함응로써 성능을 향상시킬 수 있다.
- 대량의 데이터는 Primary Key의 성격에 따라 부분적인 테이블로 분리할 수 있다. 즉 파티셔닝 기법(Partitioning)이 적용되어 성능저하를 방지할 수 있다.
- 응용 애플리케이션에서 로직을 구사하는 방법을 변경함으로써 성능을 향상시킬 수 있다.
'database > SQLD' 카테고리의 다른 글
[SQLD] Database 에서의 NULL (0) | 2022.02.14 |
---|---|
[SQLD] 단일행 함수, 다중행 함수 (0) | 2022.02.13 |
[SQLD] 정규화(Normalization) (0) | 2022.02.11 |
[SQLD] 식별자 (0) | 2022.02.11 |
[SQLD] 관계형 데이터베이스, DML, DDL, TCL (0) | 2022.02.10 |
댓글