X

데이터베이스 반정규화

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

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

 

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

가. 반정규화 필요 대상

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

나. 반정규화 유형

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

 

III. 반정규화 절차

가. 반정규화 절차

나. 반정규화 세부 절차

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

 

IV. 반정규화 시 고려사항

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