성능 데이터 모델링
- 데이터베이스 성능 향상을 위해 설계 단계부터 성능과 관련된 모든 사항을 고려하여 데이터 모델링 수행
- 정규화, 반정규화, 테이블 통합 및 분할, 조인 구조, PK/FK 설정 등
▶ 수행시점
- 사전에 할 수록 비용이 들지 않음 (빠를수록 좋음)
- 분석/설계 단계에서 성능 모델링 수행하면 재업무 비용 최소화 가능
▶ 고려사항
- 정규화 : 데이터를 주요 관심사별로 분산 시키는 효과
- 용량산정 : 어떤 엔터티(Table)에 데이터가 집중됐는지 파악
- 트랜잭션 유형 파악 : CRUD 매트릭스/시퀀스 다이어그램 활용, 데이터 조회에 필요한 조인 관계 등 파악
- 반정규화 : 테이블, 속성, 단계에 대해 포괄적인 반정규화 방법 적용
- 이력모델 조정, 인덱스를 고려한 PK/FK 순서 조정, 슈퍼/서브타입 조정 등 수행
- 성능관점 모델 검증 : 충분히 성능이 고려되었는지 확인
정규화(Normalization)
- 데이터 정합성을 위해 엔터티를 작은 단위로 분리하는 과정
*데이터 정합성: 데이터의 정확성과 일관성을 유지하고 보장하는 것 - 데이터 조회성능은 처리조건에 따라 향상/저하 됨
- 입력/수정/삭제 성능은 일반적으로 향상 됨
▶ 종류
- 제1정규형(1NF) : 모든 속성은 반드시 하나의 값만 가짐
- 제2정규형(2NF) : 부분함수종속성 제거 (주식별자가 복합식별자인 경우 문제 발생 가능)
- 제3정규형(3NF) : 이행함수종속성 제거 (주식별자를 제외하고 일반속성 간 종속성 발생 문제)
▶ 정규화의 효과
- 데이터 중복 감소 및 관심사별로 묶임으로 성능 향상
- 입력/수정/삭제시 성능 향상
- 조회 질의에서 조인이 많이 발생하여 성능 저하 (조회의 경우 처리조건에 따라 향상/저하)
반정규화(De-Normalization)
- 데이터의 조회 성능을 향상하기 위해 데이터의 중복 허용 및 데이터 그룹핑하는 과정
- 조회성능은 향상될 수 있지만 입력/수정/삭제 성능은 저하될 수 있음
- 데이터 정합성 이슈 발생 가능 (과도한 반정규화는 데이터 무결성 침해)
- 정규화 이후에 수행
▶ 절차
- 반정규화 대상조사 - 다른 방법유도 검토 - 반정규화 적용
▶ 대상조사
- 범위처리빈도수 조사
- 대량의 범위 처리 조사
- 통계성 프로세스 조사
- 테이블 조인 개수
▶ 다른 방법유도 검토
- 뷰(VIEW) 테이블
- 클러스터링 적용
- 인덱스의 조정
- 응용애플리케이션
▶ 반정규화 적용
- 테이블 반정규화
- 테이블 병합 : (1:1, 1:M) 관계 테이블 병합, 슈퍼 서브 타입 테이블 병합
- 테이블 분할 : 수직 분할(속성 분할), 수평 분할(인스턴스 분할, 파티셔닝)
- 테이블 추가 : 중복, 통계, 이력, 부분 테이블 추가
- 컬럼 반정규화
- 중복 컬럼 추가 : 업무 프로세스상 많은 JOIN이 필요한 경우 고려 (조인 횟수 감소)
- 파생 컬럼 추가 : 프로세스 수행시 부하가 염려되는 계산값을 미리 컬럼으로 추가 (계산으로 인한 성능 저하 예방)
- 이력 테이블 컬럼 추가 : 최신 데이터 여부 등 조회 기준이 될 것으로 판단되는 컬럼 미리 추가 (속도 저하 예방)
- 관계 반정규화(중복관계 추가)
- 업무 프로세스상 많은 JOIN이 필요하여 중복 관계를 추가하는 것이 성능 측면에서 유리한 경우
- 데이터 무결성 보장 가능, 데이터 처리 성능 향상 (테이블/컬럼 반정규화는 데이터 무결성에 영향을 미침)
'분석가 Step 0. 자격증 > SQLD' 카테고리의 다른 글
[1장] 분산 데이터베이스 (0) | 2023.03.22 |
---|---|
[1장] 반정규화, 대량 데이터에 따른 성능 (0) | 2023.03.22 |
[1장] 데이터 모델링의 이해 4절 (0) | 2023.03.17 |
[1장] 데이터 모델링의 이해 3절 (0) | 2023.03.17 |
[1장] 데이터 모델링의 이해 2절 (0) | 2023.03.17 |