[ 목차 ]
1. 반정규화의 정의
2. 무결성이 깨질 위험을 감수하고 데이터를 중복하여 반정규화 하는 경우
3. 반정규화의 적용방법
4. 반정규화의 기법
1. 반정규화의 정의
1) 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정
2) 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상, 개발, 운영의 단순화를 위해 중복, 통합, 분리 등을 수행
3) 데이터 무결성이 깨질 가능성이 있기 때문에 반드시 데이터 무결성을 보장할 수 있는 방법을 고려한 후에 적용
4) 정규화와 Trade-Off 관계이며 정규화만을 강조하면 성능의 이슈가 발생, 반정규화만을 강조하면 무결정 깨짐 위험
2. 무결성이 깨질 위험을 감수하고 데이터를 중복하여 반정규화 하는 경우
1) 기본적으로 정규화가 입력/수정/삭제에 대한 성능 향상 뿐만 아니라 조회에 대한 성능 향상시키는 역할을 하지만 정
규화만 수행시 엔터티, 관계의 수가 많아져 일부 여러 개의 조인이 걸려야만 데이터를 가져오는 경우가 존재하며, 업
무적으로 조회에 대한 처리성능이 중요하다고 판단될 때 부분적으로 반정규화를 수행
2) 데이터 조회 시 디스크 I/O량이 많아서 성능이 저하될 것 예상되는 경우 반정규화 수행
3) 경로가 너무 멀어 조인으로 인한 성능저하가 예상되는 경우 반정규화 수행
4) 칼럼을 계산하여 읽을 때 성능이 저하될 것을 예상 되는 경우 반정규화 수행
보통 칼럼의 반정규화만 많이 진행되나 테이블, 관계의 반정규화를 종합적으로 고려해야 함
3. 반정규화의 적용방법
1) 반정규화 대상 조사
1] 전체 데이터 양을 조사하고 그 데이터 해당 프로세스 처리 시 성능저하가 나타날 수 있는지 검증
2] 데이터가 대량이고 성능 저하가 예상되면 아래를 고려하여 반정규화를 선택
3] 자주 사용되는 테이블에 접근하는 프로세스 수가 많고 항상 일정한 범위만을 조회하는 경우
4] 테이블에 대량의 데이터가 있고 데이터 범위를 자주 처리하는 경우 처리범위를 일정하게 줄이지 않으면 성능을 보
장할 수 없는 경우
5] 통계성 프로세스에 의해 통계 정보를 필요로 할 때 별도의 통계테이블(반정규화)을 생성
6] 테이블에 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려운 경우
2) 다른 방법유도 검토
1] 무결성을 개뜨릴 위험을 제어하기 위해 반정규화를 결정하기 이전에 성능을 향상시킬 다른 방법(아래와 같은) 모색
2] 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 뷰를 사용하여 해결
3] 대량의 데이터처리, 부분처리에 의해 성능이 저하되는 경우 클러스터링을 적용하거나 인덱스를 조정하여 성능향상
4] 대량의 데이터는 Primary Key의 성격에 따라 부분적인 테이블로 분리(파티셔닝 기법)
5] 응용 애플리케이션에서 로직을 구사하는 방법을 적용하여 조회의 성능을 향상
클러스터링 : 대량의 데이터를 특정 클러스터링 팩트에 의해 저장방식을 다르게 하는 방법으로 데이터를 입력/수
정/삭제하는 경우 성능이 많이 저하되기 때문에 조회중심 테이블이 아니라면 생성 X
파티셔닝 : 물리적인 저장기법에 따라 데이터가 특정기준에 의해 다르게 저장하는 방법
3) 반정규화 적용
1] 테이블, 속성, 관계에 대해 반정규화를 적용할 수 있으며 테이블, 속성, 관계를 추가, 분할, 제거할 수도 있음
4. 반정규화의 기법
1) 테이블 반정규화
2) 칼럼 반정규화
3) 관계 반정규화
1] 다른 반정규화와 달리 데이터 무결성에 영향을 미치지 않음
2] 데이터 전체가 관계로 연결, 관계가 서로 먼 친척간에 조인관계가 빈번하게 되어 성능저하가 예상되면 사용
'자격증 > SQLD' 카테고리의 다른 글
SQLD 1과목 2-5장. 데이터베이스 구조와 성능 (0) | 2020.02.28 |
---|---|
SQLD 1과목 2-4장. 대량 데이터에 따른 성능 (0) | 2020.02.28 |
SQLD 1과목 2-2장. 정규화와 성능 (0) | 2020.02.28 |
SQLD 1과목 2-1장. 성능데이터 모델링의 개요 (0) | 2020.02.28 |
SQLD 1과목 1-5장. 식별자 (0) | 2020.02.27 |