SQL

[SQLD] 과목 1. 데이터 모델링의 이해 2) 데이터 모델과 성능

랩실외톨이 2021. 3. 18. 04:35
반응형

SQLD 시험 대비용 개념정리

출처: SQL 자격검정 실전문제, 한국데이터산업진흥원

 

-성능데이터모델링

  • 성능향상 목적으로 설계 단계부터 성능과 관련된 사항이 데이터 모델링에 반영되게 함
  • 데이터 증가가 빠를수록 성능저하에 따른 성능개선비용 증가
  • 데이터모델은 성능을 튜닝하면서 변경이 될 수 있음
  • 분석/설계 단계에서 성능을 고려한 데이터 모델링을 수행할 경우, 성능 저하에 따른 Rework 비용을 최소화할 수 있음

 

 

-성능데이터모델링 수행절차

  1. 정규화
  2. 용량산정
  3. 트랜잭션
  4. 반정규화
  5. 조정
  6. 검증

 

 

-성능데이터 모델링 할 때 고려사항

  • 용량산정: 전체적인 DB에 발생되는 트랜잭션의 유형과 양을 분석하는 자료
  • 물리적 데이터 모델링시 PK/FK의 칼럼의 순서조정, FK인덱스 생성 등은 성능 향상을 위해 중요함
  • 이력데이터는 시간에 따라 반복적으로 발생, 대량 데이터가 될 가능성이 높아 성능을 고려하여 추가 설계를해야 함
  • 데이터 모델링의 정규화는 중복된 데이터를 제거하기 때문에 조회 성능 향상

 

 

출처: porimp.tistory.com/entry/SQLD정규화Normalization정규화와-성능

 

(SQLD)정규화(Normalization)/정규화와 성능

1.    정규화(Normalization) 정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 벙법이며, 데이터를 분해하는 과정 데이터 중복을 제거하고 데이터 모델의 독립성

porimp.tistory.com

-정규화

  • 1정규화: 속성의 원자성을 확보(모든 도메인이 원자값), 기본키를 설정 (대상: 중복속성에 대한 분리, 로우단위의 중복, 칼럼 단위로 중복이 되는 경우)
  • 2정규화: 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거함
  • 3정규화: 기본키를 제외한 칼럼 간에 종속성을 제거함, 이행 함수 종속성을 제거
  • BCNF: 기본키를 제외하고 후보키가 있는 경우(모든 결정자가 후보키), 후보키가 기본키를 종속시키면 분해됨
  • 4정규화: 여러 칼럼들이 하나의 칼람을 종속시키는 경우 분해하여 다중값 종속성을 제거(다치종속 제거)
  • 5정규화: 조인에 의해서 종속성이 발생되는 경우 분해

 

+정규형과 정규화는 다르다. 정규형은 이미 정규화를 거친 형태를 뜻함

 

 

 

-반정규화

  • 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발, 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법
  • 데이터를 중복하여 성능을 향상시키기 위한 기법

 

 

-반정규화를 하는 이유(무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 적용하는 이유)

  • 데이터를 조회할 때 디스크 I/O량이 많아서 성능 저하가 발생하는 경우
  • 경로가 너무 멀어 조인으로 인한 성능 저하가 발생하는 경우
  • 칼럼을 계산하여 읽을 때 성능 저하가 발생하는 경우

 

 

-반정규화를 고려할 때 판단요소

  • 반정규화 정보에 대한 재현의 적시성으로 판단
  • 다수 테이블에 대한 다량의 조인이 불가피하므로 데이터 제공의 적시성 확보를 위해 반정규화 필수
  • 하나의 결과셋을 추출하기 위해 다량의 데이터를 탐색하는 처리가 반복적으로 빈번하게 발생하면 반정규화를 해야함

 

 

-테이블의 반정규화 기법

  • 테이블 병합(1:1, 1:M 관계, 슈퍼/서브타입)
  • 테이블 분할(수직, 수평)
  • 테이블 추가(중복,  통계, 이력, 부분)

 

Q. 자주 이용하는 집중화된 칼럼들이 있을 때 디스크 I/O를 줄이기 위해 해당 칼럼들을 별도로 모아놓는 반정규화 기법

A. 부분테이블 추가

 

 

-칼럼의 반정규화 기법

  • 중복칼럼 추가
  • 파생칼럼 추가
  • 이력테이블 칼럼 추가
  • PK에 의한 칼럼 추가
  • 응용시스템 오작동을 위한 칼럼 추가

 

 

-반정규화 절차

 

1. 반정규화 대상조사

  • 범위처리빈도수 조사
  • 대량의 범위 처리 조사
  • 통계성 프로세스 조사
  • 테이블 조인 개수

 

2. 다른 방법유도 검토

  • 뷰 테이블
  • 클러스터링 적용
  • 인덱스의 조정
  • 응용 어플리케이션

 

3. 반정규화 적용

  • 테이블 반정규화
  • 속성의 반정규화
  • 관계의 반정규화

 

 

-반정규화 기법

  • 중복 칼럼을 추가: 조인감소를 위해 여러 테이블에 동일한 칼럼을 넣음
  • 파생 칼럼을 추가: 조회 성능을 우수하게 하기 위해 미리 계산된 칼럼을 넣음
  • 이력 테이블 칼럼 추가: 최신값을 처리하는 이력의 특성을 고려, 기능성 칼럼을 추가

 

 

-반정규화의 대상에 대해 다른 방법으로 처리

  • 지나치게 많은 조인이 걸려 데이터 조회가 어려울 경우 ->  뷰 사용
  • 대량의 데이터처리나 부분처리에 의해 성능이 저하되는 경우 -> 클러스터링 적용 or 인텍스 조정
  • 대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리 가능 => 파티셔닝 기법
  • 응용 애플리케이션에서 로직을 구사하는 방법을 변경

 

 

Q. 하나의 테이블에 많은 양의 데이터가 저장되는 경우 성능저하를 처리하는 법

A. 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 테이블로 분리하여 데이터 엑세스 성능도 향상, 데이터 관리 방법도 개선할 수 있도록 테이블에 적용하는 파티셔닝 기법을 사용

 

 

-슈퍼/서브 타입 데이터 모델의 변환기술 (논리적 모델 -> 물리적 모델)

  • 개별로 발생되는 트랜잭션 => 개별 테이블로 구성
  • 슈퍼 + 서브 타입에 대해 발생되는 트랜잭션 => 슈퍼 + 서브타입 테이블로 구성
  • 전체를 하나로 묶어 발생된느 트랜잭션 => 하나의 테이블로 구성

 

 

*UNION ALL: 두 개의 쿼리문의 값을 하나로 묶어 출력

*UNION: 중복되는 값을 제외한 두 개의 쿼리문의 결과값을 하나로 묶어 출력

 

 

-PK순서를 결정하는 기준

인덱스의 특징: 여러 개의 속성이 하나의 인덱스로 구성되어 있을때, 앞쪽에 위치한 속성의 값이 비교자로 있어야

인덱스가 설계된 순서 그대로 생성되어있는 경우, 즉 값의 범위에 따라 인덱스가 일정하게 정렬되어 있는 경우

  1. = (한 개의 값 지정) 
  2. 범위 ( BETWEEN A and B) or <> (not)

 

 

-분산 데이터베이스 

 

장점

  • 지역 자치성, 점증적 시스템 용량 확장
  • 신뢰성과 가용성
  • 효용성과 융통성
  • 빠른 응답 속도와 통신비용 절감
  • 데이터의 가용성과 신뢰성 증가
  • 시스템 규모의 적절한 조절
  • 각 지역 사용자의 요구 수용 증대

 

 

단점

  • 소프트웨어 개발 비용
  • 오류의 잠재성 증대
  • 처리 비용의 증대
  • 설계, 관리의 복잡성과 비용
  • 불규칙한 응답 속도
  • 통제의 어려움
  • 데이터 무결성에 대한 위협

 

 

*조인을 많이 하는 CASE

성능 향상을 위해 FK와 관계없이 인덱스 생성이 필요

 

 

-분산 데이터베이스 환경

  • 마스터 데이터는 분산데이터베이스에 복제분산 적용 (원격지에서 접근이 빈번하다)
  • 실시간 업무적인 특성을 가지고 있을때, 분산 데이터베이스를 사용
  • 백업 사이트 구성 시 간단하게 분산기능을 적용하여 구성

 

 

 

 

 

 

반응형