[sqld] 2. 데이터 모델과 성능

·2022년 4월 3일
0

SQL개발자자격증

목록 보기
2/4
  • 성능 데이터 모델링이란?

  • 데이터모델링을 할 때 어떤 작업 유형에 따라 성능향상을 도모해야하는지 목표를 분명하게 해야 정확한 성능 향상 모델링을 할 수 있다.

  • 성능이 저하되는 데이터 모델
  1. 잘못 설계된 데이터 모델 구조

  2. 대용량 데이터를 가진 구조

  3. 인덱스의 특성을 무시한 인덱스 생성

  • 성능 데이터 모델링 고려사항 순서
  1. 데이터 모델링을 할 때 정규화를 정확하게 수행

  2. 데이터베이스 용량 산정을 수행 👉🏼 어떤 엔티티에 데이터가 집중되는지

  3. 데이터베이스에 발생되는 트랜잭션의 유형을 파악

  4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행

  5. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행

  6. 성능 관점에서 데이터 모델을 검증 👉🏼 충분하게 성능이 고려되었는지

  • 정규화 (Normalization)

!정처산기 필기 공부할 때 외웠던 도부이결다조😂 이제는 완전히 이해하고 넘어가기!

mangkyu.tistory.com/110

정규화 단계 이해는 이 블로그 포스팅이 쉽게 잘 설명되어있어 이해가 쏙쏙!

  • 1차 정규형 : 모든 속성의 도메인이 원자 값이 되어야 한다.

    (원자값이 아닌 도메인 분해해서 원자 값으로 만들어 준다.)

  • 2차 정규형 : 1차 정규형 진행 + 부분 함수 종속성 제거

👇🏼 2차 정규화 - 정규화테이블{관서번호, 관리점번호, 관서명, 상태, 관서등록일자} 👇🏼

  • 3차 정규화 : 제 2 정규화 진행 + PK에 의존하지 않고 일반컬럼에 의존하는 컬럼들을 분리 ( = 이행 함수 종속 제거)

  • 반정규화(Denormalization)

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

반정규화는 데이터를 중복하여 성능을 향상시키기 위한 기법이라고 정의할 수 있고, 좀 더 넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미한다.

데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행하게 된다.

  • 반정규화 기법

테이블 반정규화

✔️테이블 병합 👉🏼 1:1 관계 병합, 1:M 관계 병합, 슈퍼/서브타입 병합

✔️테이블 분할 👉🏼 수직분할(컬럼단위, 테이블 1:1 분리), 수평분할(로우단위)

✔️테이블 추가

👉🏼 중복테이블 : 동일한 테이블 구조 중복 원격 조인 제거

👉🏼 통계테이블 : SUM, AVG 등 미리 계산 & 조회 시 성능 향상

👉🏼 이력테이블 : 마스터 테이블 레코드 중복하여 이력테이블에 존재

👉🏼 부분테이블 : 전체 컬럼 중 자주 이용하는 컬럼들을 모아놓은 별도 테이블

컬럼 반정규화

✔️중복컬럼 추가 👉🏼 조인을 감소시키기 위해 중복 컬럼 위치 시킴

✔️파생컬럼 추가👉🏼 계산에 의한 성능저하 예방 미리 계산하여 컬럼에 보관 (Derived 컬럼)

✔️이력테이블 컬럼추가 👉🏼 기능성 컬럼 (최근 값 여부, 시작 및 종료일자 등) 추가

✔️PK에 의한 컬럼 추가 👉🏼 복합의미 PK 단일 속성 구성 시 발생. 일반 속성으로 PK 데이터 추가

✔️응용시스템 오작동 위한 컬럼추가 👉🏼 이전 데이터 임시적 중복 보관 (원래 값 복구 용도)

관계 반정규화

✔️중복관계 추가 👉🏼 여러 경로를 거친 조인을 방지하기 위해 추가적인 관계를 맺음.

  • 반정규화 절차

  1. 반정규화 대상조사
  • 범위처리빈도수 조사

  • 대량의 범위 처리 조사

  • 통계성 프로세스 조사

  • 테이블 조인 개수

  1. 다른 방법 유도 검토
  • 뷰(VIEW) 테이블

  • 클러스터링 적용

  • 인덱스의 조정

  • 응용애플리케이션

  1. 반정규화 적용
  • 테이블 반정규화

  • 속성의 반정규화

  • 관계의 반정규화

  • 슈퍼/서브타입 데이터 모델

  • 업무를 구성하는 데이터를 공통/차이점 특징 고려하여 효과적으로 표현 가능하기 때문에 자주 쓰이고 있다.

  • 부모의 속성 중에 더 작은 그룹으로 분리해서 관리할 필요가 있는 속성이 있을 때, 슈퍼타입 또는 서브 타입 단위로 모델링하는 것.

  • Extended ER모델이라고도 부른다.

  • 공통 부분 = 슈퍼타입으로 모델링 ( 전체를 하나의 테이블로 관리)

  • 공통으로부터 상속받아 다른 엔티티와 차이가 있는 속성에 대해 별도의 서브 엔티티로 구분하여 표현 = 서브타입(엔티티)

  • 슈퍼/서브타입 데이터 모델의 변환기술

  • 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성 (One to One Type)

  • 슈퍼타입+서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼타입+서브타입 테이블로 구성 (Plus Type)

  • 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성 (Single Type)

  • 분산 데이터베이스란?

데이터베이스 시스템 구축 시에 한 대의 물리적 시스템에 데이터베이스 관리 시스템을 설치하고 여러 명의 사용자가 데이터베이스 관리 시스템에 접속하여 데이터베이스를 사용하는 구조를 중앙 집중형 데이터베이스라고 한다.

그에 반해, 물리적으로 떨어진 데이터베이스에 네트워크로 연결하여 단일 데이터베이스 이미지를 보여주고 분산된 작업 처리를 수행하는 데이터베이스를 분산 데이터 베이스라고 한다.

데이터베이스 분산 설계는 다음과 같은 경우에 적용하면 효과적이다.

  • 성능이 중요한 사이트에 적용해야 한다.

  • 공통코드, 기준정보, 마스터 데이터 등에 대해 분산환경을 구성하면 성능이 좋아진다.

  • 실시간 동기화가 요구되지 않을 때 좋다. 거의 실시간(Near Real Time)의 업무적인 특징을 가지고 있을 때도 분산 환경을 구성할 수 있다.

  • 특정 서버에 부하가 집중이 될 때 부하를 분산할 때도 좋다.

  • 백업 사이트(Disaster Recover Site)를 구성할 때 간단하게 분산기능을 적용하여 구성할 수 있다.

  • 분산 데이터베이스 장단점

장점

  1. 지역 자치성, 점증적 시스템 용량 확장

  2. 신뢰성과 가용성

  3. 효용성과 융통성

  4. 빠른 응답 속도와 통신비용 절감

  5. 데이터의 가용성과 신뢰성 증가

  6. 시스템 규모의 적절한 조절

  7. 각 지역 사용자의 요구 수용 증대

단점

  1. 소프트웨어 개발 비용

  2. 오류의 잠재성 증대

  3. 처리 비용의 증대

  4. 설계, 관리의 복잡성과 비용

  5. 불규칙한 응답 속도

  6. 통제의 어려움

  7. 데이터 무결성에 대한 위협

0개의 댓글