성능데이터 모델링

김두나·2023년 8월 29일

데이터베이스

목록 보기
4/6

NO.1

1. 성능 데이터 모델링

  • 목적 : 데이터 베이스 성능 향상
  • 설계 단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블 통합, 테이블 분할, 조인구조, PK등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것

2. 수행 시점

  • 분석/설계 단계에서 부터 성능에 대한 데이터 모델 설계를 하지 않으면 시간이 지날수록 성능 개선의 비용이 증가

3. 성능 데이터 모델링 고려사항

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

NO.2

1. 정규화와 성능

1) 정규화란?

  • 데이터 분해 과정, 이상현상 제거
  • 목적 : 삽입, 삭제, 갱신 이상현상 방지

2) 정규화 종류

  • 제 1 정규형 : 모든 속성은 반드시 하나의 값을 가져야 한다.
ex) 
이름생년월일직업
개코녀19900802배우,피아니스트,가수

-> 하나의 속성 직업에 여러 속성값을 사용하면 안됨

이름생년월일
개코녀19900802

-->겹치는 속성은 따로 빼내서 생성

이름순번직업
개코녀1배우
개코녀2피아니스트
개코녀3가수
ex) 
이름생년월일SNS1SNS2SMS3
개코녀19900802인스타그램카카오톡유튜브

-> 유사한 속성이 반복되어서도 안됨

이름생년월일
개코녀19900802

-->유사한 속성은 따로 빼내서 생성

이름SNS
개코녀인스타그램
개코녀카카오톡
개코녀유튜브
  • 제2정규형 : 엔티티의 일반 속성은 주식별자 전체에 종속적이어야 한다.

    • 결정자 -> 종속자(함수종속성)

      ex)

      [주문상세]

      주문번호(PK)상품번호(PK)상품명
      210001156SQL전문가 가이드
      210002157데이터아키텍처 전문가 가이드
      210003156SQL전문가 가이드
      210004156SQL전문가 가이드
      210005156SQL전문가 가이드
      210006158데이터 분석 전문가 가이드

      -> 상품명(일반속성)은 2개의 기본키 중 상품 번호에 함수 종속성을 가지고 있음. 즉 상품 번호에 의해서만 결정

      [상품]

      상품번호상품명
      156SQL 전문가 가이드
      157데이터아키텍처 전문가 가이드
      158데이터 분석 전문가 가이드

      [주문 상세]

      주문번호상품번호
      210001156
      210002157
      210003156
      210004156
      210005156
      210006158
  • 제3정규형 : 엔티티의 일반속성 간에는 서로 종속적이지 않는다.

    • 제2정규형을 만족한다.

    • 기본키를 제외한 속성들 간에 이행종속성은 없어야한다.

      ex)

      주문번호(PK)상품번호상품명
      210001156SQL전문가 가이드
      210002157데이터아키텍처 전문가 가이드
      210003156SQL전문가 가이드
      210004156SQL전문가 가이드
      210005156SQL전문가 가이드
      210006158데이터 분석 전문가 가이드

      --> 주문번호를 알면 상품번호를 알 수 있다 -> 상품번호를 알면 상품명을 알 수 있다.
      --> 즉 주문번호를 알면 상품명을 알 수 있다.

    NO.3

    1.반정규화와 성능

    1) 반정규화의 정의

    • 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능 향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법
      • 데이터 무결성이 깨질 수 있음
      • 경로가 너무 멀어 조인으로 인한 성능 저하가 예상 될 때
      • 컬럼을 계산하여 읽을 때 성능 저하가 예상 될 때
      • 입력/수정/삭제 뿐 아니라 조회 성능 향상 시킴

    2) 반정규화 기법

  • 테이블 반정규화

    분류식별자설명
    테이블 병합1:1 관계 태이블 병합1:1 관계를 통합해 성능 향상
    1:M관계 테이블 병합1:M관계 통합해 성능 향상
    슈퍼/서브타입 테이블 병합슈퍼/서브 관계를 통합 해 성능 향상
    테이블 분할수직분할컬럼 단위를 테이블을 디스크 i/o분산 처리 하기 위해 테이블을 1:1로 분리해 성능 향상
    수평분할로우 단위로 집중 발생되는 트랜잭션을 분석해 디스크 i/o 및 데이터 접근을 효율성을 높여 성능을 향상하기 위해 로우 단위로 테이블을 쪼갬
    테이블 추가중복 테이블 추가다른 업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복하여 원격 조인을 제거해 성능 향상
    통계 테이블 추가SUM, AVG등을 미리 수행해 계산해 둠으로써 조회시 성능을 향상
    이력테이블 추가이력테이블 중 마스터 테이블에 존재하는 레코드를 중복해 이력 테이블에 존재하는 방법은 반 정규화의 유형
    부분 테이블 추가하나의 테이블의 전체 칼럼 중 자주 이용하는데, 자주이용하는 집중화된 칼럼들이 있을 때 디스크 i/o를 줄이기 위해 해당 컬럼들을 모아놓은 별도의 반 정규화된 테이블 생성
  • 컬럼 반정규화

    • 중복 칼럼 추가 : 조인 횟수를 감소시키기 위해 다른 테이블의 중복되는 칼럼을 저장
    • 파생 칼럼 추가 : 값의 계산으로 인한 성능 저하 예방, 예상값을 미리 계산해 중복 칼럼 저장(Derived 칼럼)
    • 이력테이블 칼럼 추가 : 기능성 칼럼, 대량 이력 데이터 처리의 성능 향상을 위해 종료 여부, 최근값 여부 등의 칼럼 추가로 저장
    • PK의 의미적 분리를 위한 칼럼 추가 : PK가 복합 의미를 갖는 경우 단일 속성 구성 발생, 구성요소 값의 조회 성능향상을 위해 일반 속성 추가
    • 데이터 복구를 위한 칼럼 추가 : 사용자의 실수 또는 응용프로그램 오류로 인해 데이터가 잘못 처리된 경우 원래 값으로 복구하기 위해 이전 데이터를 임시로 중복 저장

NO.4

1.대량 데이터에 따른 성능

1) 성능저하 원인

  • 하느이 테이블에 데이터 대량 집중 : 테이블 크기가 너무 커져서 효율성 떨어지고 디스크 i/o량 높아짐

  • 하나의 테이블에 여러개의 컬럼 존재 : 디스크 점유랑 많아지고 데이터 읽는 i/o량 높아짐

  • 대량의 데이터가 하나의 테이블에 존재 : 인텍스 크기가 커지고, 성능이 저하됨

  • 컬럼이 많아지는 경우 : 로우 체이닝, 로우 마이그레이션 발생

    2) 해결방안

  • 한 테이블에 많은 칼럼 -> 수직분할

  • 대량 데이터 저장 문제 -> 파티셔닝, PK에 의한 테이블 분할

  • 대량 데이터 발생에 따른 테이블 분할

  • 수직분할 : 컬럼 단위로 분할하여 I/O 경감

  • 수평분할 : 로우 단위로 분할해 I/O 경감

    3) 파티셔닝

  • 테이블 수평 분할 기법(로우 단위), 논리적으로는 하나의 테이블 이지만 물리적으로는 여러 데이터 파일에 분산저장, 데이터 조회범위를 줄여 성능 향상시킴.

    NO.5

    1.데이터베이스 구조와 성능

    1) 데이터 베이스 성능 저하 원인 3가지

  • union 연산

  • 조인

  • 불필요하게 많은 데이터 집적

    2) 슈퍼타입, 서브타입 데이터 모델 변환을 통한 성능 향상

  • 변환 기준 : 데이터의 양, 트랜잭션 유형

  • 데이터 소량 : 데이터 처리 유연성을 고려해 가급적 1:1 유지

  • 데이터 대량 : 3가지 변환 방법(개별테이블, 슈퍼+서브타입 테이블, 하나의 테이블)

    구분One to oneplussingle
    특징개별테이블 유지슈퍼+서브타입테이블하나의 통합 테이블
    확장성우수보통나쁨
    조인필요수많음보통적음
    I/O 성능 저하양호양호나쁨
    관리용이성나쁨나쁨좋음

    => 분리가 잘될수록

    1. 성능이 좋다.
    2. DISK I/O 성능이 좋다.
    3. 조인성능과 관리 용이성은 떨어진다.

    NO.6

    1.분산 데이터 베이스와 성능

    1) 분산 데이터베이스의 개념

  • 물리적으로 분산된 데이터베이스를 하나의 논리적 시스템으로 사용

  • 빠른 네트워크 환경을 이용해 데이터베이스를 여러 지역에서 노드로 위치시켜 사용성과 성능을 극대화 하는 데이터베이스

    2) 분산데이터베이스의 장단점

    정점단점
    지역 자치성 증가소프트웨어 개발 비용 증가
    점증적 시스템 용량 확장 가능오류 잠재성 증대
    신뢰성, 가용성, 효용성, 융통성처리 비용 증대
    빠른 응답 속도, 통신비용 절감불규칙한 응답속도
    용량 확장이 쉽다.통제 어려움
    각 지역 사용자의 요구 수용 가능데이터 무결성 유지 어려움

    3) 분산 DB의 투명성

  • 분할 투명성 : 하나의 논리적 관계가 분할 되어, 각 단편의 사본이 여러 사이트에 저장

  • 위치 투명성 : 사용하려는 데이터 저장 장소가 명시되지 않아도 됨.

  • 지역사상 투명성 : 지역 DBMS와 물리적 DB사이의 사상이 보장됨

  • 중복 투명성 : DB객체 중복 여부 몰라도 됨

  • 장애 투명성 : 구성요소(DBMS, 컴퓨터)의 장애에 무관하게 트랜잭션의 원자성이 유지됨

  • 병행 투명성 : 다수의 트랜잭션을 동시에 수행했을 때 결과의 일관성 유지.

0개의 댓글