1-2 데이터 모델과 성능

JUN·2023년 8월 30일
0

sql

목록 보기
3/6
📌 노랭이책 틀렸던 문제를 확인하며 개념 정리하는 페이지입니다

1절 성능 데이터 모델링의 개요

  1. 성능 데이터 모델링 순서
    1. 데이터모델링을 할 때 정규화를 정확히 수행
    2. 데이터베이스 용량산정 수행
    3. 트랜잭션의 유형 파악
    4. 트랜잭션 유형에 따라 반정규화 수행
    5. 이력모델 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행
    6. 성능관점에서 데이터 모델 검증

2절 정규화와 성능

3절 반정규화와 성능

  1. **반정규화 - 시스템의 성능향상과 개발, 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법.**

    • 과정 **: 대상 조사 → 다른 처리 방법 고려 → 다른 방법 없을 시 반정규화 적용**
    • 반정규화 판단 요소
      • 범위 처리 빈도수 조사 : 자주 사용하는 테이블에 접근하는 프로세스 수가 많고 일정한 범위만 자주 조회하는 경우
      • 대량의 범위 처리 조사 : 테이블에 대량의 데이터가 있고 대량의 데이터 범위를 자주 처리할때 성능을 보장할 수 없는 경우
        • 파티셔닝 고려(물리적 데이터 분리),
        • 클러스터링 고려(논리적 데이터 중복 저장, 데이터 분포도가 넓을수록 유리)
          • 처리 범위가 넓을 경우 → 단일 테이블 클러스터링
          • 조인 많이 발생 → 다중 테이블 클러스터링
      • 통계성 프로세스 조사 : 통계성 프로세스에 의해 통계정보를 필요로 할때
      • 테이블이이조인 개수 조사 : 테에블조게지치 게많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 때
        • 다중 테이블 클러스터링 고려
  2. 반정규화 기법

    • 테이블의 반정규화
      • 테이블 병합
        • 1:1 관계 테이블 병합, 1:M 관계 테이블 병합, 슈퍼/서브타입 테이블병합
      • 테이블 분할
        • 수직분할, 수평분할
      • 테이블 추가
        • 중복, 통계(sum, avg 등 미리 계산), 이력, 부분 테이블 추가
    • 칼럼의 반정규화
      • 중복칼럼 추가 : 조인 감소를 위해 중복된 칼럼 위치시킴.
      • 파생칼럼 추가 : Derived Column, 미리 값을 계산하여 칼럼에 보관
      • 이력 테이블 칼럼 추가 : 기능성 칼럼
      • PK에 의한 칼럼 추가 : 단일 PK안에 특정 값을 별도로 조회하는 경우 사용
      • 응용 시스템 오작동을 위한 칼럼 추가 : 이전 데이터를 임시적으로 중복 보관
    • 관계 비정규화
      • 중복관계 추가 : 조인할때 성능저하를 예방하기 위해 추가적인 관계를 맺는 방법

4절 대량 데이터에 따른 성능

5절 데이터베이스 구조와 성능

****슈퍼/서브타입 데이터 모델 (Extended ER모델)****

최근에 분석단계에서 데이터 모델링을 할 때 자주 쓰이는 모델링 방법. 데이터량이 10만건 이하로 아주 작다면 트랜잭션의 성격을 고려하지 않고 하나로 묶음. 하지만 많다면 트랜잭션의 유형에 따라 물리적 변환을 시행해야함.

  • 정의 : 공통의 부분을 슈퍼타입으로 모델링하고 슈퍼타입으로부터 상속받아 다른 엔터티와 차이가 있는 속성은 별도의 서브 엔터티로 구성하는 모델링.
  • 장점 : 물리적 데이터 모델로 변환 시 선택의 폭을 넓힐 수 있음
  • 슈퍼/서브타입 논리적 데이터 모델을 물리적으로 변환 시 성능이 저하되는 경우
    1. 트랜잭션은 항상 일괄로 처리하는데 테이블은 개별로 처리되어 union연산에 의해 성능저하
    2. 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합되어 불필요하게 많은 양의 데이터가 집약되어 있는 경우 성능저하
    3. 트랜잭션은 항성 슈퍼+서브 타입을 공통으로 처리하는데 개별로 유지되어 있거나 하나의 테이블로 집약되어 있어 성능이 저하되는 경우.

→ 그렇다면 어떤 것을 고려하여 성능저하를 예방해야 하는가 답은 ****데이터의 양 & 트랜잭션의 유형****

  1. 슈퍼타입, 서브타입을 개별로 처리하는 경우 개별 테이블로 분리하여 1대1 관계를 맺도록 한다.
  2. 슈퍼타입 + 서브타입에 대해 발상하는 트랜잭션은 슈퍼+서브 타입 테이블로 구성
  3. 전체를 하나로 묶어 트랜잭션이 발생할 때에는 하나의 테이블로 구성
profile
순간은 기록하고 반복은 단순화하자 🚀

0개의 댓글