본문 바로가기

자격증/정보처리기사 4과목

4-17강. 물리 데이터베이스 설계-데이터베이스 반정규화

과목4. 데이터베이스 구축, 17강. 물리 데이터베이스 설계-데이터베이스 반정규화

 

[ 목차 ]

1. 반정규화

2. 반정규화 절차

3. 테이블 반정규화

4. 칼럼의 반정규화

5. 관계 반정규화

 

1. 반정규화

1) 정규화된 엔터티, 속성, 관계를 시스템의 성능 향상, 개발, 운영을 단순화하기 위해 데이터모델을 통합(병합)하는 프로세스

2) 데이터의 정합성과 무결성을 우선으로 할지 데이터베이스 구성의 단순화와 성능을 우선으로 할지 결정하는 것

3) 논리 모델링에서 수행된 정규화 모델이 시스템의 성능 향상, 개발 과정의 편의성, 운영의 단순화를 목적으로 수행되는 의도적인 정규화 원칙 위배 행위를 의미

4) 성능 향상과 관리의 효율성이 증가하나 데이터의 일관성, 정합성 저하와 유지를 위한 비용이 별도로 발생

 

2. 반정규화 절차

1) 반 정규화 대상 조사

  1] 범위 처리 빈도수 조사 : 자주 사용되는 테이블에 접근하는 프로세스 수가 많고 일정한 범위만을 조회하는 경우

  2] 대량의 범위 처리 조사 : 대량의 ㅈ데이터 범위를 자주 처리하는 경우

  3] 통계성 프로세스 조사 : 별도의 통계 테이블 고려

  4] 테이블 조인 개수 : 지나치게 많은 조인이 걸려 데이터 조회 작업이 어려운 경우

2) 다른 방법 유도 검토

  1] 뷰 테이블 : 지나치게 많은 조인이 걸려 데이터 조회 작업이 어려운 경우

  2] 클러스터링 또는 인덱스 적용 : 파티셔닝 기법을 사용해 대량의 데이터를 pk 성격에 따라 부분적인 테이블로 분리 

  3] 어플리케이션 : 로직을 변경하여 성능을 향상

3) 반정규화 적용

  1] 테이블 반정규화

  2] 속성의 반정규화

  3] 관계의 반정규화

 

3. 테이블 반정규화

1) 테이블 병합

  1] 조인되는 경우가 많아서 테이블을 합치는 것이 성능에 유리할 경우

  2] 1:1 관계 테이블 병합

  3] 1:M 관계 테이블 병합

  4] 슈퍼/서브 타입 관계 테이블 병합

2) 테이블 분할

  1] 테이블에서 특정 속성들만 집중적으로 접근할 경우 테이블을 분할

  2] 장점 : 접근 빈도, 잠김 현상, 경합 현상의 감소를 가져옴

  3] 단점 : 분할된 테이블의 전체 조회 시 union을 사용해야 하므로 성능이 느려짐

  4] 수직 분할 : 특정 속성들만 접근이 낮을 경우 칼럼을 쪼개서 테이블을 생성

  5] 수평 분할 : 스키마는 동일하지만 그 데이터 값을 이용하는 방법이 로우별로 구분지어지는 경우

3) 테이블 추가

  1] 중복 테이블 추가 : 다른 업무, 서버의 경우 동일한 테이블 구조를 중복하여 원격조인을 제거해 성능을 향상

  2] 통계 테이블 추가 : sum, avg 등을 미리 수행하여 자동 계산해둠으로써 조회 시 성능 향상

  3] 이력 테이블 추가 : 마스터 테이블에 존재하는 레코드를 중복하여 이력테이블에 존재하는 방법(ex. 급여 인상 전, 후)

  4] 부분 테이블 추가 : 하나의 테이블의 전체의 칼럼 중 자주 이용하는 집중화된 칼럼들이 있을 때 디스크 I/O를 줄이기 위해 해당 칼럼들을 모아 놓은 별도의 반정규화 된 테이블

 

4. 칼럼의 반정규화

1) 중복 칼럼 추가

  1] 조인에 의한 성능저하를 예방하기 위해 즉, 조인을 감소시키기 위해 중복된 칼럼을 추가

  2] 자주 사용하는 칼럼을 추가

  3] 조회 경로 단축을 위해 중복 칼럼을 추가

2) 파생 칼럼 추가

  1] 트랜잭션이 처리되는 시점에 계산에 의해 발생되는 성능저하를 예방하기 위해 미리 값을 계산하여 칼럼에 보관

  2] 연산된 결과를 주로 사용하는 경우 미리 연산을 하여 중복 칼럼을 생성

3) 이력 테이블 칼럼 추가

  1] 대량의 데이터를 처리할 때 불특정 날 조회나 최근 값을 조회할 때 나타날 수 있는 성능저하를 예방하기 위해 이력 테이블에 기능성 칼럼을 추가

  2] 최근 값 여부, 시작과 종료일자 등

4) PK에 의한 칼럼 추가

  1] 복합의미를 갖는 PK를 단일 속성으로 구성하였을 대 발생

  2] 단일 PK안에서 특정 값을 별도로 조회하는 경우 성능저하가 발생

  3] PK안에 데이터가 존재하지만 성능향상을 위해 일반속성으로 포함하는 방법이 PK에 의한 칼럼 추가

5) 응용시스템 오작동을 위한 칼럼 추가

  1] 업무적으로는 의미가 없지만 사용자가 데이터를 처리하다가 잘못 처리하여 원래 값으로 복구하기 원하는 경우 이전 데이터를 임시적으로 중복하여 보관하는 방법

 

5. 관계 반정규화

1) 데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만 이 때 발생할 수 있는 성능저하를 예방하기 위해 중복 관계를 추가하는 방법

2) 테이블과 칼럼의 반정규화는 데이터 무결성에 영향을 미치지만 관곈의 반정규화는 무결성 영ㅇ향을 미치지 않음