성능 데이터 모델링 개요
성능 데이터 모델링이란?
데이터베이스의 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것
성능 데이터 모델링 수행 절차
- 데이터 모델링을 할 때 정규화를 정확하게 수행한다.
- 데이터베이스 용량산정을 수행한다.
- 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
- 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
- 이력 모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.
- 성능 관점에서 데이터 모델을 검증한다.
정규화와 성능
정규화란?
- 데이터 베이스 설계에서 중복 요소를 찾아 제거하고 데이터를 구조화 하는 프로세스
제 1 정규화
- 하나의 속성은 반드시 하나의 값을 가져야 한다.
제 2 정규화
- 제 1 정규형을 만족
- 주식별자가 아닌 모든 속성이 주식별자에 완전 함수 종속 되어야 한다.
- 함수의 부분 종속을 분리하는 과정
- 제2 정규형을 만족하려면 모든 속성은 반드시 기본키 전부에 종속 되어야 한다.
제 3 정규화
- 제2 정규화를 만족하고 이행 함수 종속이 없어야 한다.
BCNF 정규화
반정규화와 성능
반정규화(역정규화)란?
- 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능 향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미함
- 데이터를 중복하여 성능을 향상시키는 기법
- 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정
반정규화 절차
1. 반정규화 대상 조사
- 범위 처리 빈도수 조사
- 대량의 범위 처리 조사
- 통계성 프로세스 조사
- 테이블 조인 개수
2. 다른 방법 유도 검토
- 뷰(VIEW) 테이블
- 클러스터링 적용
- 인덱스의 조정
- 응용프로그램(애플리케이션)
3. 반정규화 적용
대량 데이터에 따른 성능
로우체이닝
- 로우의 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 저장되어 있는 형태
- 불필요한 I/O가 많이 발생하여 성능이 저하됨
로우마이그레이션
- 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식
- 불필요한 I/O가 많이 발생하여 성능이 저하됨
분산 데이터베이스와 성능
분산 데이터베이스의 장점
- 지역 자치성, 점증적 시스템 용량 확장
- 신뢰성과 가용성
- 효용성과 융통성
- 빠른 응답 속도와 통신 비용 절감
- 데이터의 가용성과 신뢰성 증가
- 시스템 규모의 적절한 조절
- 각 지역 사용자의 요구수용 증대
분산 데이터베이스의 단점
- 소프트웨어 개발 비용 증가
- 잠재적인 오류 발생 가능성 증가
- 처리 비용 증대
- 설계, 관리의 복잡성과 비용 증가
- 불규칙한 응답 속도
- 통제의 어려움
- 데이터 무결성에 대한 위협