데이터 모델과 성능(1과목-2)

hoon·2024년 10월 23일

sqld

목록 보기
2/10

성능 데이터 모델링 진행 순서

–정규화를 정확하게 수행

  • 주요 관심사별로 테이블을 분산시킴

–데이터베이스 용량산정 수행

  • 각 엔터티에 어느 정도의 트랜잭션이 들어오는지 파악

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

  • CRUD 매트릭스 활용

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

  • 테이블, 속성, 관계 변경

–이력모델의 조정, 인덱스를 고려한 PK/FK의 순서 조정, 슈퍼타입/서브타입 조정 등 수행

  • 성능 관점에서 데이터 모델 최종 검증

DBMS의 발전

–1960년대

  • Flowchart 중심의 개발 방법 사용
  • 파일 구조를 통해 데이터를 저장하고 관리

–1970년대

  • 데이터베이스 관리 기법이 처음 출현
  • 계층형(Hierarchical), 망형(Network) 데이터베이스 제품 상용화

–1980년대

  • 관계형(Relational) 데이터베이스 상용화
  • Oracle, Sybase, DB2 등의 제품 사용

–1990년대

  • Oracle, Sybase, Informix, DB2, Teradata, SQL Server 외 많은 제품 출현
  • 객체 관계형 데이터베이스 발전

도메인 제약 (Domain Constraints)

–속성 값은 원자성(atomicity)을 가지며, 도메인에서 정의된 값이어야 함

–Composite Attribute와 Multivalued Attribute는 허용되지 않음

  • cf) 주소 = 시군구 + 상세주소

–Null 값은 허용됨 (Not Null이 아닌 경우)

키 제약 (Key Constraints)

–릴레이션의 모든 튜플(Tuples)은 서로 식별 가능해야 함

개체 무결성 제약 (Entity Integrity Constraints)

–기본키 (PK – Primary Key) 는 NOT NULL & UNIQUE 이어야 함

참조 무결성 제약 (Referential Integrity Constraints)

–외래키 (FK – Foreign Key)

  • 릴레이션 R1이 릴레이션 R2를 참조하는 경우, R2의 기본키는 R1 에서 외래키로 사용됨
  • FK는 자기 자신이 속한 릴레이션을 참조할 수도 있음

–릴레이션 R1 이 릴레이션 R2 를 참조하는 경우, R1 의 FK는…

  • (1) Null 이거나
  • (2) Null 이 아닌 경우 R2 에 실제로 존재하는 값으로 구성되어야 함

정규화

–목적: 삽입/삭제/갱신 이상현상 방지

–함수적 종속성(FD, Functional Dependency)에 기반

–종류

  • 1NF: 모든 값이 원자값을 가짐
  • 2NF: 부분함수종속 제거
  • 3NF: 이행함수종속 제거

→식별자가 아닌 속성(주식별자의 일부 또는 일반속성)이 결정자 역할을 하는 함수 종속 제거 → 3NF

–2차 정규화를 통해 2NF를 생성하는 예

-3차 정규화를 통해 3NF를 생성하는 예

–정규화 효과

  • 데이터 중복 감소 à 성능 향상
  • 데이터가 관심사별로 묶임 à 성능 향상
  • 조회 질의에서 조인이 많이 발생 à 성능 저하

→ 정규화를 통해 일반적으로 성능이 향상되나, 조회의 경우 처리 조건에 따라 성능이 향상되거나 저하됨

반정규화의 정의

–반정규화(=역정규화 = Denormalization)

–정규화된 엔터티, 속성, 관계에 대해 성능 향상을 목적으로 중복, 통합, 분리를 수행하는 데이터 모델링 기법

  • cf) 비정규화: 정규화를 아예 수행하지 않음

특징

–테이블, 칼럼, 관계의 반정규화를 종합적으로 고려해야 함

  • 일반적으로 속성(칼럼)의 중복을 시도함

–과도한 반정규화 → 데이터 무결성을 침해하게 됨

반정규화의 사전 절차

–다른 방법 유도

  • 뷰(View) 생성: 뷰 자체가 성능 향상을 가져오지는 않음, 를 재사용할 때 성능 향상 신중하게 설계된 뷰
  • 클러스터링: 자주 사용되는 테이블의 데이터를 디스크의 같은 블록에 저장
  • 인덱스의 조정: 인덱스 추가, 삭제 및 순서 조정
  • 응용 애플리케이션: 데이터 처리를 위한 로직 변경

반정규화 기법

–칼럼 반정규화

  • 중복칼럼 추가
  • 파생칼럼 추가
  • 이력테이블칼럼 추가
  • PK의 의미적 분리를 위한 칼럼 추가
  • 데이터 복구를 위한 칼럼 추가

–테이블 반정규화

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

–관계 반정규화

  • 중복관계 추가

분산 데이터베이스의 개념

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

0개의 댓글