[SQLD] - 1과목 2장 데이터 모델과 성능

Yean·2023년 11월 3일
0

자격증

목록 보기
2/4
post-thumbnail

🌳1. 성능 데이터 모델링의 개요

1. 성능 데이터 모델링

DB 성능향상을 위한 사항이 데이터 모델링에 반영되도록 하는 것.

2. 수행 시점

분석 / 설계 단계, 성능 데이터 모델링 시점이 늦어질수록 재업무 비용이 증가.

3. 고려 사항

정규화 수행, DB 용량 산정과 트랜잭션 유형 파악을 통한 반정규화 수행.
정규화는 무조건 해야 함.

🌳2. 정규화와 성능

1. 정규화 (Normalization)

데이터 분해 과정, 이상 현상 제거.
데이터 일관성, 중복, 유연성. 중복 제거하여 독립성 확보

정규형(NF: Normal Form)

  • 정규화로 도출된 데이터 모델이 갖춰야 할 특성. 함수적 종속성에 근거

2. 함수적 종속성(FD)

결정자와 종속자의 관계.
결정자의 값으로 종속자의 값을 알 수 있음.

다치 종속 (MVD: Multivalued Dependency)

  • 여러 칼럼이 동일한 결정자의 종속자.

3. 정규화 이론

  1. 1차 2차 3차 보이스코드 정규화는 함수적 종속성에 근거
  2. 4차 정규화는 다치 종속 제거
  3. 5차 정규화는 조인에 의한 이상현상 제거하여 정규화 수행

1차 정규화

  • 속성의 원자성 확보. 다중값 속성 분리. 기본키를 잡는 과정.
    한칸에 하나씩 = 원자성 확보.

2차 정규화

  • 부분함수 종속성 제거. 일부 기본키에만 종속된 속성 분리.
    기본키가 하나의 칼럼일 때 생략. = 기본키가 2개 이상인 경우에만 발생.
    부분함수 종속성 제거 = 새로운 테이블 도출

3차 정규화

  • 이행 함수 종속성 제거. 종속관계가 있는 일반 속성 분리. 주식별자와 관련성 가장 낮음.
    기본키 제외 칼럼 간 종속성 발생. 1,2정규화 거친 후 진행

보이스코드 정규화(BCNF)

  • 후보키가 기본키 속성 중 일부에 함수적 종속일 때 다수의 주식별자 분리.

4차, 5차 정규화

  • 다치 종속 분리, 결합 종속 분리

4. 정규화와 성능

정규화는 입출력 데이터의 양을 줄여 성능을 향상.
정규화로 인한 성능 향상

  • 유연성 증가 : 원칙에 충실
    재활용 가능성 증가 : 개념 세분화
    데이터 중복 치소화
    입력, 수정, 삭제 시 성능 향상

정규화로 인한 성능 저하

  • 조회 시 처리 조건에 따라 성능 저하 발생 가능.
    데이터 조회 시 조인 유발해 CPU와 메모리 많이 사용하게 됨.
    => 반정규화로 해결 가능.
    조인이 발생해도 인덱스 사용해 조인 연산 수행하면 성능 상 단점 거의 없음.
    정규화 통해 필요한 인덱스 수 줄일 수 있음.
    정규화를 통해 소량의 테이블이 생성된다면 성능 상 유리할 수 있음.

🌳3. 반정규화와 성능

1. 반정규화(Denormalization)

성능 향상 위해 데이터 중복을 허용해 조인을 줄이는 DB 성능 향상 방법.
데이터의 무결성을 희생하고 조회 성능 향상 = 유연성 저하.
반정규화 사용 이유

  • 수행 속도 느려진 경우. 다량의 범위 자주 처리.
    특정 범위 데이터만 자주 처리.
    요약, 집계 정보 자주 사용.

2. 절차

  1. 반정규화 대상 조사 - 데이터 처리 범위 및 통계성 등 조사
  2. 다른 방법 검토 - 뷰, 클러스터링, 인덱스, 애플리케이션
  3. 반정규화 적용 - 정규화 수행 후 반정규화 수행

3. 기법

  1. 반정규화
  • 테이블 병합
    • 1:1 관계
    • 1:N 관계 : 많은 데이터 중복 발생.
    • 슈퍼, 서브 타입
  • 테이블 분할
    • 수직, 수평 분할
  • 테이블 추가
    • 중복 = 업무나 서버가 다를 때 중복 테이블 생성. 원격 조인 제거
    • 통계
    • 이력
    • 부분 = 자주 이용하는 칼럼으로 구성된 테이블 생성
  1. 칼럼 반정규화
  • 중복 칼럼 추가
    파생 칼럼 추가 = 필요 값 미리 계산한 칼럼 추가
    이력 테이블 칼럼 추가
    PK에 의한 칼럼 추가 = PK의 종속자를 일반속성으로 생성
    응용 시스템의 오작동을 위한 칼럼 추가
  1. 관계 반정규화
  • 데이터 무결성 보장 가능
    중복 관계 추가

🌳4. 대용량 데이터에 따른 성능

테이블 반정규화 중 테이블 분할 관련

1. 블록

테이블의 데이터 저장 단위

2. 대량 데이터 발생으로 인한 현상

블록 I/O 횟수 증가 => 디스크 I/O 가능성 상승. (디스크 I/O 시 성능 저하)

  • 로우 체이닝 : 행 길이가 너무 길어 여러 블록에 걸쳐 저장.
    로우 마이그레이션 : 수정된 데이터가 해당 블록이 아닌 다른 블록의 빈 공간에 저장.

3. 테이블 분할

반정규화 기법

  • 수직 분할 : 칼럼 단위로 테이블 분할해 I/O 감소. 많은 수의 칼럼이 있는 경우 사용.
    수평 분할 : 행 단위로 테이블 분할해 I/O 감소.

4. 파티셔닝(Partitioning)

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

  • Rang Partition : 데이터 값의 범위를 기준으로 분할
    List Partition : 특정 값 기준으로 분할
    Hash Partition : 해시 함수를 적용하여 분할. DBMS가 알아서 분할 관리. 데이터 위치 알 수 없음.
    Composite Partition : 여러 파티션 기법을 복합적으로 사용하여 분할

파티션 인덱스

  • Global, Local Index : 여러 파티션에서 단일 인덱스 사용. 파티션 별로 각자 인덱스 사용.
    Prefixed, Non-Prefixed Index : 파티션 키와 인덱스 키 동일. 서로 구분.

🌳5. DB 구조와 성능

1. 슈퍼타입/ 서브타입 데이터 모델 변환을 통한 성능 향상

  • 슈퍼 /서브 타입 데이터 모델
    • 속성을 할당해 배치하는 수평 분할된 형태의 모델.
    • 변환을 통해 정확한 업무 표현, 물리적 모델링 시 선택의 폭 넓힘.
  • 변환 기준
    • 데이터 양, 트랜잭션 유형
  • 변환 기술
    • 1:1 타입 - 개별로 처리하는 트랜잭션에 대해 개별 테이블 구성. 슈퍼타입과 서브타입 각각 필요한 속성과 유형에 적합한 데이터만 가지도록 분리해 1:1 관계.
    • 슈퍼/서브 타입 - 슈퍼타입과 서브타입을 공통으로 처리하는 트랜잭션에 대해 슈퍼타입과 서브타입 각각의 테이블 구성.
    • All in One 타입(Single type) - 일괄 처리하는 트랜잭션에 대해 단일 테이블 구성.

2. PK/FK 칼럼 순서 조절을 통한 성능 향상

등호 조건이나 BETWEEN 조건이 걸리는 칼럼을 앞으로 이동

3. 인덱스 특성을 고려한 PK/FK DB 성능 향상

물리적인 테이블에 FK 제약을 걸어 인덱스 생성

🌳6. 분산 DB 데이터에 따른 성능

1. 분산 DB

분산된 DB를 하나의 가상 시스템으로 사용할 수 있도록 한 DB.
물리적 사이트는 분산되어 있으나 논리적으로 동일한 시스템.
과거에는 위치 중심이었으나 현재는 업무 필요에 따라 분산 설계.

  • 설계 방식
    • 상향식 - 지역 스키마 작성 후 전역 스키마 작성
    • 하향식 - 전역 스키마 작성 후 지역 스키마 작성
  • 장점
    • 신뢰성과 가용성 증가
    • 빠른 응답 속도와 통신비용 절감
    • 용량 확장 용이
  • 단점
    • 관리 및 통제 어려움
    • 데이터 무결성 관리 어려움
    • S/W 개발 비용 및 처리 비용 증가
    • 불규칙한 응답 속도

2. 분산 DB의 투명성

  • 분할 투명성 : 하나의 논리적 관계가 분할되어 사본이 여러 사이트에 저장
  • 위치 투명성 : 데이터 저장 장소가 명시되지 않아도 됨
  • 지역사상 투명성 : 지역 DBMS와 물리적 DB 사이 사상 보장
  • 중복 투명성 : DB 객체 중복 여부 몰라도 됨
  • 장애 투명성 : 구성요소의 장애에 무관하게 트랜잭션 원자성 유지
  • 병행 투명성 : 다수의 트랜잭션 동시 수행시 결과의 일관성 유지. 병렬 아님

3. 분산 DB 적용 기법

  • 테이블 위치 분산 : 설계된 테이블의 위치 분산
  • 테이블 분할 분산 : 테이블을 쪼개서 분산
    • 수평 분할
    • 수직 분할
  • 테이블 복제 분산 : 동일한 테이블을 다른 지역이나 서버에서 동시 생성. 원격지 조인을 내부 조인으로 변경하여 성능 향상
    • 부분 복제
    • 광역 복제
  • 테이블 요약 분산
    • 분석 요약 - 사이트 별 요약정보를 본사에서 통합해 전체 요약정보 산출
    • 통합 요약 - 사이트 별 정보를 본사에서 통합해 전체 요약정보 산출
profile
정리하는 공간

0개의 댓글