SQLD 정리 - 2. 데이터 모델과 성능

영준·2020년 3월 15일
0

성능 데이터 모델링 개요

성능 데이터 모델링이란?

데이터베이스의 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것

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

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

정규화와 성능

정규화란?

  • 데이터 베이스 설계에서 중복 요소를 찾아 제거하고 데이터를 구조화 하는 프로세스

제 1 정규화

  • 하나의 속성은 반드시 하나의 값을 가져야 한다.

제 2 정규화

  • 제 1 정규형을 만족
  • 주식별자가 아닌 모든 속성이 주식별자에 완전 함수 종속 되어야 한다.
  • 함수의 부분 종속을 분리하는 과정
  • 제2 정규형을 만족하려면 모든 속성은 반드시 기본키 전부에 종속 되어야 한다.

제 3 정규화

  • 제2 정규화를 만족하고 이행 함수 종속이 없어야 한다.

BCNF 정규화

  • 릴레이션의 모든 결정자가 후보키인 릴레이션

반정규화와 성능

반정규화(역정규화)란?

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

반정규화 절차

1. 반정규화 대상 조사

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

2. 다른 방법 유도 검토

  • 뷰(VIEW) 테이블
  • 클러스터링 적용
  • 인덱스의 조정
  • 응용프로그램(애플리케이션)

3. 반정규화 적용

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

대량 데이터에 따른 성능

로우체이닝

  • 로우의 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 저장되어 있는 형태
  • 불필요한 I/O가 많이 발생하여 성능이 저하됨

로우마이그레이션

  • 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식
  • 불필요한 I/O가 많이 발생하여 성능이 저하됨

분산 데이터베이스와 성능

분산 데이터베이스의 장점

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

분산 데이터베이스의 단점

  • 소프트웨어 개발 비용 증가
  • 잠재적인 오류 발생 가능성 증가
  • 처리 비용 증대
  • 설계, 관리의 복잡성과 비용 증가
  • 불규칙한 응답 속도
  • 통제의 어려움
  • 데이터 무결성에 대한 위협
profile
자바 백엔드 개발자입니다.

0개의 댓글