반응형
# SQLD 2과목_1 데이터 모델과 성능
## 성능 데이터 모델링
- 데이터베이스 성능 향상을 목적으로, 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것.
- 데이터의 증가가 빠를수록, 성능저하에 따른 성능개선비용은 증가한다.
- 데이터모델은 성능을 튜닝하면서 변경 될 수 있는 특징이 있다.
- 분석/설계 단계에서 고려한 데이터 모델링을 수행할 경우 성능 저하에 따른 Rework 비용을 최소화 할 수 있는 기회를 갖게 된다.
## 성능을 고려한 데이터모델링 순서
- 데이터 모델링을 할 때 정규화를 정확하게 수행
- 데이터베이스 용량산정 수행
- 데이터베이스에 발생되는 트랜잭션 유형 파악
- 용량과 트랜잭션의 유형에 따라 반정규화 수행
- 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 수행
- 성능관점에서 데이터 모델 검증
## 성능데이터 모델링 고려사항
- 용량산정은 전체 데이터베이스에 발생되는 트랜잭션의 유형과 양을 분석하는 자료가 되므로, 성능데이터 모델링을 할 때 중요한 작업이 될 수 있다.
- 물리적인 데이터 모델링을 할 때 PK/FK의 칼럼 순서조정, FK인덱스 생성 등은 성능향상을 위한 데이터 모델링 작업에 중요한 요소가 된다.
- 이력데이터는 시간에 따라 반복적으로 발생되기 때문에 대량의 데이터일 가능성이 높아 특별히 성능을 고려하여 칼럼 등을 추가하도록 설계한다.
- 중복된 데이터를 제거하면 조회능력을 향상시킬수 있다.
## 1차 정규화 대상
- 중복 속성에 대한 분리 / 로우 단위의 중복 / 칼럼 단위의 중복이 되는 경우가 1차 정규화의 대상이다.
## 반 정규화
- 정규화된 엔터티, 속성, 관계에 대한 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법.
- 데이터를 중복하여 성능을 향상 시키기 위한 기법.
- 넓은 의미의 반정규화는 성능을 향상 시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미.
- 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나, 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행한다.
## 칼럼의 반정규화 기법
- 중복 칼럼 추가
- 파생 칼럼 추가
- 이력테이블 칼럼 추가
- PK에 의한 칼럼 추가
- 응용시스템 오작동을 위한 칼럼 추가
## 반정규화 절차
- 반정규화 대상 조회 : 범위 처리 빈도수 조사 / 대량의 범위 처리 조사 / 통계성 프로세스 조사 / 테이블 조인 개수
- 다른 방법유도 검토 : 뷰 테이블 / 클러스터링 적용 / 인덱스의 조정 / 응용애플리케이션
- 반정규화 적용 : 테이블 / 속성 / 관계 반정규화
## 로우체이닝이 발생할 정도로 한 테이블에 많은 칼럼이 존재할 경우 조회성능저하가 발생할 수 있다. 트랜잭션이 접근하는 칼럼유형을 분석하여 1:1로 테이블을 분리하면 디스크 I/O가 줄어 조회 성능을 향상 시킬 수 있다.
## 파티셔닝
- 데이터 액세스 성능을 향상시키기 위해 적용하는 방법
- 하나의 테이블에 많은 양의 데이터가 저장되면 인덱스를 추가, 테이블을 몇 개로 쪼개도 성능이 저하되는 경우가 있다. 이때 논리적으로 하나의 테이블이지만 물리적으로 여러 개의 테이블로 분리하여 데이터 액세스 성능도 향상시키고, 데이터 관리방법도 개선할 수 있도록 테이블에 적용하는 기법이다.
## 반정규화 대상에 대한 다른 방법으로 처리
- 지나치게 많은 조인으로 데이터 조회 작업이 기술적으로 어려울 경우 뷰를 사용하면 해결할 수 있다.
- 대량의 데이터 처리나 부분처리에 의해 성능이 저하된 경우 클러스터링을 적용하거나 인덱스를 조정해 성능을 향상할 수 있다.
- 대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리할 수 있다. 파티셔닝 기법을 적용하여 성능저하를 방지.
- 응용 애플리케이션에서 로직을 구사하는 방법을 변경해 성능을 향상시킬 수 있다.
## 슈퍼/서브 타입 데이터 모델의 변환기술
- 개별로 발생되는 트랜잭션에 대해 개별 테이블 구성
- 슈퍼타입 + 서브타입에 대해 발생되는 트랜잭션에 대해 슈퍼타입 + 서브타입 테이블 구성
- 전체를 하나로 묶어 트랜잭션이 발생할 경우 하나의 테이블로 구성
## PK순서를 결정하는 기준은 인덱스 정렬구조를 이해한 상태에서 인덱스를 효율적으로 이용할 수 있도록 PK순서를 지정해야 한다. 인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 나타낼 수 있다. 앞쪽에 위치한 속성 값이 가급적 '=' 아니면 최소한 범위 'BETWEEN', '<>'가 들어와야 인덱스를 이용할 수 있다.
## 분산 데이터베이스 장단점
- 장점
- 지역 자치성, 점증적 시스템 용량 확장
- 신뢰성과 가용성
- 효용성과 융통성
- 빠른 응답 속도와 통신비용 절감
- 데이터의 가용성과 신뢰성 증가
- 시스템 규모의 적절한 조절
- 각 지역 사용자의 요구수용 증대
- 단점
- 소프트웨어 개발 비용
- 오류의 잠재성 증대
- 처리 비용의 증대
- 설계, 관리의 복잡성과 비용
- 불규칙한 응답 속도
- 통제의 어려움
- 데이터 무결성에 대한 위협
반응형
'자격증 > SQLD & SQLP 자격증' 카테고리의 다른 글
SQLD 2과목_3 SQL 활용 (0) | 2021.09.04 |
---|---|
SQLD 2과목_2 SQL 기본 (0) | 2021.09.04 |
SQLD 1과목 데이터 모델링의 이해 정리 (0) | 2021.09.02 |
SELECT 문장 실행 순서 (0) | 2021.08.26 |
데이터 모델링의 기능, 모델링의 중요성, 모델링 시 유의사항, 모델링의 3단계 (0) | 2021.08.26 |