데이터베이스 반정규화

I. 성능 향상을 위한 데이터 중복 허용, 반정규화

개념필요성
데이터베이스 정규화 후 성능향상, 개발편의성 등 위해 정규화기법 위배행위 의도적 수행 기법– 다수 Join시 성능하락 방지
– 개발 및 운영 단순화
– DB 검색 성능 향상

 

II. 반정규화 필요 대상 및 유형

가. 반정규화 필요 대상

구분필요 대상설명
접근빈도 측면고빈도 테이블– 단일 테이블 다수 접근
다수 프로세스– 특정 프로세스 중심
범위 측면일정 범위 조회– 범위 한정 Select, Update
통계성 작업– DW, OLAP 용 트랜잭션
성능측면다수 조인– 성능 하락 현상 발생

나. 반정규화 유형

구분유형설명
테이블 분할수평 분할– 레코드 단위로 분할
수직 분할– 컬럼 단위로 분할
테이블 중복통계 테이블 추가– DW, OLAP 데이터 용
진행 테이블 추가– 업무 프로세스 상태
컬럼기반 분할조회 빈도 기반– 고빈도 컬럼 분리
크기 기반 분할– 일정 용량 컬럼 분리
컬럼 중복중복 컬럼 추가– 자주 조회되는 컬럼 추가
파생 컬럼 추가– 연산 결과 별도 저장

 

III. 반정규화 절차

가. 반정규화 절차

나. 반정규화 세부 절차

절차방법설명
반정규화
대상 조사
– 범위 처리  빈도수 조사– 자주 사용되는 테이블에 접근
– 프로세스, 일정 범위만 조회
– 통계성 프로세스조사– 통계 정보 필요시 별도 통계 테이블(반정규화 테이블) 생성
– 테이블조인 개수 조사– 많은 조인으로 인해 조회작업
– 기술적 어려움 시 반정규화
– 대량 범위 처리– 테이블에 대량 데이터 범위
– 자주 처리하는 경우
다른방법
유도검토
– 뷰(View) 테이블– 많은 조인으로 인해 조회작업
– 기술적 어려움 시 뷰 검토
– 클러스터링 적용– 대량의 데이터를 클러스터링하여 저장(조회 중심)
– 인덱스 적용– 인덱스 통해 성능 확보 가능시 인덱스 조정
– 응용 어플리케이션– 응용 어플리케이션에서 로직 구현 방법을 변경
반정규화
적용
– 테이블 반정규화– 테이블 단위 반정규화
– 테이블 병합, 분할, 추가
– 속성 반정규화– 컬럼 단위 반정규화
– 중복, 파생 컬럼 추가
– 관계 반정규화– PK, FK 간 관계 반정규화
– 조회 관계 단순화, 중복

 

IV. 반정규화 시 고려사항

  • 정합성, 무결성 vs 성능, 테이블 단순화 Trade off
  • 성능, 모델 단순화 이점, 무결성 저하로 시스템 안정성하락 우려로 정규화 완료 상태에서 수행
  • 데이터 의미 변형/업무 규칙 감추어져서는 안됨
  • 데이터 무결성 유지 방안 마련 후 적용
  • 반정규화는 성능/관리 효율 증대, 데이터 일관성/정합성 위험 내포

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^