1. 반정규화(Denormalization) 개념
- 정규화된 엔티티 타입, 속성, 관계에 대해 시스템의 성능향상과 개발 및 운영의 단순화를 위해 데이터 모델을 통합하는 프로세스
- 적정 수준의 정규화 이후에 질의성능 향상을 위해 일부 데이터에 대하여 중복을 허용하는 정규화의 역작업이다.
2. 반정규화 실행 이유
- 성능 저하: 데이터 조회 시 디스크 I/O량이 많아서 성능저하가 발생, 경로가 너무 멀어 조인으로 인한 성능 저하
- 접근 효율성: 과도한 정규화로 인해 데이터 분산화, 정상적인 정규화를 통한 고객의 품질 요구사항 충족이 어려운 경우
3. 반정규화 실행 절차
- 대상 조사 → 다른 적용방법 검토 → 반정규화 적용
4. 반정규화 종류
- 테이블 수직 분할: 원래 1개의 테이블로 있던 것을 요약-상세사항 등의 형태로 2개의 테이블로 분할
- 데이터 수평 분할: 스키마는 동일하지만, 전체-상세 등 형태로 전체 데이터 사이즈를 고려하여 n개의 테이브롤 분할
- 중복 테이블 추가: 시간이 오래 걸리는 통계 데이터를 주기적으로 Batch-Job을 이용하여 별도로 구성
- 중복 컬럼 추가: 자주 사용되는 컬럼의 중복으로 추가. 단, 별도의 데이터 정합성 관리 필요
- 파생 컬럼 추가: 응용 어플리케이션에서 실시간으로 SUM 로직 구현을 통해 총금액 계산이 가능하지만, 성능저하 방지를 위해 미리 계산하여 컬럼에 보관
- PK컬럼에 의한 추가: 복합키가 존재하지만, 너무 복잡한 PK로 인해 성능저하 발생, 대체키(surrogate key)로 PK를 만들고 일반송석으로 이동
- 중복관계 추가: 조인을 여러 번 해야만 고객정보를 읽을 수 있을 때, 접근 경로 단축을 위해 중복관계를 추가함
'Computer Science > Database' 카테고리의 다른 글
[JDBC] JDBC (Java Database Connectivity) (0) | 2023.01.12 |
---|---|
[데이터베이스 핵심 요약] 10. 인덱스(index) (0) | 2022.11.13 |
[데이터베이스 핵심 요약] 8. 정규화(Normalization)와 함수적 종속성 (0) | 2022.11.13 |
[데이터베이스 핵심 요약] 7. 데이터 무결성 (Data Integrity) (0) | 2022.11.12 |
[데이터베이스 핵심 요약] 6. NoSQL (0) | 2022.11.12 |