성능 데이터 모델링의 개요

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

  • 수행시점 : 분석/설계 단계, 성능 데이터 모델링 시점이 늦어질수록 재업무 비용이 증가한다.
  • 고려 사항 : 정규화 수행, DB 용량 산정과 트랜잭션 유형 파악을 통한 반정규화 수행, 정규화는 무조건 수행되어야한다. (데이터모델 구조, 대용량의 데이터, 인덱스 특성)

정규화와 성능

정규화(Normalization) : 다양한 유형의 검사를 통해 데이터 모델을 좀 더 구조화하고 개선시켜 나가는 절차. 중복성 제거, 관심사 별로 처리되는 경욱 많아 성능이 향상된다.

  • 정규형(NF, Normal Form) : 정규화로 도출된 데이터 모델이 갖춰야할 특성
  • 함수적 종속성(FD, Functional Dependency) : 결정자와 종속자의 관계, 결정자의 값으로 종속자의 값을 알 수 있음
    • 다치 종속(MVD, Multivalued Dependency) : 여러 칼럼이 동일한 결정자의 종속자일 때
  • 정규화 이론
    • 1차 2차 3차 보이스코드정규화는 함수적 종속성에 근거
    • 4차 정규화는 다치 종속을 제거
    • 5차 정규화는 조인에 의한 이상현상을 제거해 정규화 수행
      1. 1차 정규화 : 속성의 원자성 확보, 다중값 속성을 분리
      2. 2차 정규화 : 부분 함수 종속성 제거, 일부 기본키에만 종속된 속성으 ㄹ분리, 기본키가 하나의 칼럼일 때 생략 가능
      3. 3차 정규화 : 이행 함수 종속성 제거, 서로 종속관계가 있는 일반 속성을 분리함, 주식별자와 관련성이 가장 낮음
      4. 보이스 코드 정규화(BCNF, Boyce-Codd Normal Form) : 후보키가 기본키 속성 중 일부에 함수적 종속일 때 다수의 주식별자의 분리함
      5. 4차 정규화, 5차 정규화 : 다치 종속 분리, 결합 종속 분리
  • 정규화 성능 : 정규화는 입출력 데이터 양을 줄여 성능 향상 [조회/입력,수정,삭제] 2가지로 분류
    • 정규화로 인한 성능 향상
      • 입력,수정,삭제 시 성능은 항상 향상 됨
      • 유연성 증가 : High Cohension & Loose Coupling 원칙에 충실해짐
      • 재활용 가능성 증가 : 개념이 세분화 됨
      • 데이터 중복 최소화
    • 정규화로 인한 성능 저하
      • 조회 시 처리 조건에 따라 성능 저하가 발생할 수도 있음 ⇒ 데이터 조회 시 조인을 유발하여 CPU와 메모리를 많이 사용하게 됨
        • 반정규화로 해결 가능
        • 조인이 발생하더라도 인덱스를 사용하여 조인 연산을 수행하면 성능 상 단점이 거의 없고, 정규화를 통해 필요한 인덱스의 수를 줄일 수 있음
        • 정규화를 통해 소량의 테이블이 생성된다면 성능 상 유리할 수 있음(반정규화된 테이블의 성능이 더 떨어지는 경우)

반정규화와 성능

데이터 중복을 허용하여 조인을 줄이는 DB 성능 향상 방법, 데이터의 무결성을 희생하고 조회 성능 향상, 프로젝트의 설계 단계에서 반정규화를 적용한다.(구축 및 시험단계에서 적용시 노력비용이 증대한다.)

  • 절차
    1. 반정규화 대상 조사 : 데이터 처리 범위 및 통계성 등 조사(범위 처리 빈도수, 대량 범위 처리, 통계성 프로세스, 테이블 조인 개수)
    2. 다른 방법 검토 : 뷰, 클러스터링, 인덱스 조정, 애플리케이션
    3. 반정규화 적용 : 정규화 수행 후 반정규화 수행
  • 기법
    • 테이블 반정규화
      • 테이블 병합
        • 1:1 관계 테이블 병합
        • 1:N 관계 테이블 병합 → 많은 데이터 중복 발생
        • 슈퍼타입/서브타입 테이블 병합
      • 테이블 분할 : 수직분할(칼럼단위, 테이블 1:1로 분리), 수평분할(로우단위)
      • 테이블 추가
        • 중복 테이블 : 업무나 서버가 다를 때 중복 테이블 생성(원격 조인 제거)
        • 통계 테이블 : SUM, AVG 등 미리 계산, 조회 시 성능 향상
        • 이력 테이블 : 마스터 테이블 레코드 중복하여 이력 테이블에 존재
        • 부분 테이블 : 자주 이용하는 칼럼으로 구성된 테이블 생성
    • 칼럼 반정규화
      • 중복 칼럼 추가
      • 파생 칼럼 추가 : 필요한 값 미리 계산한 칼럼(Derived 칼럼) 추가
      • 이력 테이블 칼럼 추가 : 기능성 칼럼(최근값 여부, 시작 및 종료일자 등) 추가
      • PK에 의한 칼럼 추가:PK의 종속자를 일반속성으로 생성
      • 응용 시스템의 오작동을 위한 칼럼 추가 : 이전 데이터 임시적 중복보관(원래값 복구 용도)
    • 관계 반정규화 : 데이터 무결성 보장 가능(정규화가 잘 정의된 데이터 모델에서 성능이 저하된 경우 존재)
      • 중복 관계 추가

대용량 데이터에 따른 성능

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

  • 대량 데이터 발생에 따른 테이블 분할
    • 수직분할 : 컬럼 단위로 분할하여 I/O 경감, 너무 많은 수의 칼럼이 있는 경우 사용
    • 수평분할 : 로우 단위로 분할하여 I/O 경감
      • 파티셔닝 : 테이블 수평분할 기법, 논리적으로는 하나의 테이블이지만 물리적으로 여러 데이터 파일에 분산 저장, 데이터 조회 범위를 줄여 성능 향상
        • Range Partition : 데이터 값의 범위를 기준으로 분할
        • List Partition : 특정한 값을 기준으로 분할
        • Hash Partition : 해시 함수를 적용하여 분할, DBMS가 알아서 분할 관리, 데이터 위치를 알 수 없음
        • Composite Partition : 여러 파티션 기법을 복합저긍로 사용하여 분할
        • 파티션 인덱스
          • Global Index, Local Index : 여러 파티션에서 단일 인덱스 사용, 파티션 별로 각자 인덱스 사용
          • Prefixed Index, Non-Prefixed Index : 파티션키와 인덱스키 동일, 파티션키와 인덱스키 구분
  • 성능 저하의 원인
    • 하나의 테이블에 데이터 대량 집중 : 테이블 구조 너무 커져 효율성 ↓, 디스크 I/O ↑
    • 하나의 테이블에 여러개의 컬럼 존재 : 디스크 점유량 ↑, 데이터 읽는 I/O량 ↑
    • 대량의 데이터가 처리되는 테이블 : SQL문장에서 데이터 처리 위한 I/O량 ↑, 인덱스 구성
    • 대량의 데이터가 하나의 테이블에 존재 : 인덱스의 크기 ↑, 성능저하
    • 칼럼이 많아지는 경우 : 로우 체이닝, 로우 마이그레이션 발생
  • 테이블에 대한 수직/수평 분할 절차
    • 데이터 모델 완성
    • 데이터베이스 용량 산정
    • 대량의 데이터가 처리되는 테이블에 대해 트랜잭션 처리 패턴을 분석
    • 칼럼 단위로 집중화된 처리가 발생하는지, 로우 단위로 발생하는지 분석하여 테이블 분리
      • 칼럼 수 많을 경우 → 1:1 형태 수직 분할
      • 칼럼 수 적지만 데이터 용량이 많을 경우 → 파티셔닝 고려

데이터베이스 구조와 성능

  • 슈퍼/서브타입 데이터 모델 : 업무를 구성하는 데이터를 공통점과 차이점을 고려해 효과적 표현이 가능하다. 속성을 할당하여 배치하는 수평 분할된 형태의 모델, 변환을 통해 정확하게 업무를 표현할 수 있고 물리적 모델링 시 선택의 폭을 넓힐 수 있다.
    • 슈퍼 타입 : 공통 속성
    • 서브 타입 : 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성
    • 변환 기준 : 데이터 양, 트랜잭션 유형
    • 변환 기술
      • 1:1 타입 : 개별로 처리하는 트랜잭션에 대해 개별 테이블 구성, 슈퍼 타입과 서브타입 각각 필요한 속성과 유형에 적합한 데이터만 가지도록 분리하여 1:1 관계를 갖도록 함
      • 슈퍼/서브 타입 : 슈퍼타입과 서브타입을 공통으로 처리하는 트랜잭션에 대해 슈퍼타입과 서브타입 각각의 테이블 구성
      • All in One 타입(싱 타입) : 일괄 처리하는 트랜잭션에 대해 단일 테이블 구성
    • 성능저하 원인
      • 트랜잭션은 일괄처리 테이블은 개별로 유지되어 Union 연산에 의해 성능 저하
      • 트랜잭션은 서브타입 개별로 처리, 테이블은 하나로 통합되어 불필요한 많은 데이터
      • 트랜잭션은 슈퍼+서브타입을 공통으로 처리, 테이블은 개별로 유지됨 or 하나로 집약
    • 슈퍼/서브타입의 변환 기준
      • 데이터의 양과 해당 테이블에 발생되는 트랜잭션 유형
      • 데이터가 소량 : 데이터 처리 유연성 고려하여 가급적 1:1 관계 유지
      • 데이터가 대량 : 3가지의 변화방법(개별 테이블, 슈퍼+서브 테이블, 하나의 테이블)
    • 쪼개질수록 확장성, 조인 성능, I/O 성능이 올라가고 관리 용이성이 줄어든다.
  • PK/FK 칼럼 순서 조절을 통한 성능 향상 : 등호 조건이나 BETWEEN 조건이 걸리는 칼럼을 앞으로 이동(여러 조건이 있을 경우 등호 조건이 걸리는 칼럼을 선두로 이동)
    • PK/FK 설계 중요성 : 데이터 접근할 때 접근경로 제공, 설계단계 마지막에 칼럼 순서를 조정
    • PK 순서의 중요성 : 물리적인 모델링 단계에서 스스로 생성한 PK 이외에 상속 PK 순서도 주의 ⇒ PK 조정하지 않을 경우 조회 조건에 따라 인덱스를 처리하는 범위가 달라지고 PK 순서를 인덱스 특징에 맞게 생성하지 않고 자동으로 생성하게 되면 테이블에 접근하는 트랜잭션이 비효율적인 인덱스에 의하여 인덱스를 넓은 범위로 스캔하거나 풀 스캔하게된다.
    • FK 순서의 중요성 : 조인의 경로 제공 역할 수행, 조회 조건 고려하여 반드시 인덱스 생성
  • 인덱스 특성을 고려한 PK/FK DB 성능 향상 : 물리적인 테이블에 FK 제약을 걸어 인덱스 생성
    • 인덱스 중요성 : 데이터 조작시 가장 효과적으로 처리될 수 있돌고 접근 경로를 제공하는 오브젝트 ⇒ 물리적 테이블에 FK 제약이 걸려있지 않을 경우 인덱스 미생성으로 성능이 저하된다.

분산 데이터베이스와 성능

분산 데이터베이스는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역에서 노드로 위치시켜 사용성과 성능을 극대화 시킨 데이터베이스이다. 물리적으로 site를 분산되어있으나 논리적으로는 동일한 시스템이다. 업무 특징에 따라 위치 중심혹은 업무 필요에 의한 분산을 설계한다.

  • 투명성 6가지
    • 분할 투명성(단편화) : 하나의 논리적 릴레이션을 여러 단편으로 분할, 그 사본을 여러 site에 저장
    • 위치 투명성 : 사용하려는 데이터의 저장 장소 알 필요 X, 위치 정보 시스템 카탈로그에 유지
    • 지역사상 투명성 : 지역 DBMS, 물리적 DB 사이 사상 보장, 각 지역시스템 이름과 무관한 이름 사용 가능
    • 중복 투명성 : DB 객체가 여러 site에 중복되어있는지 알 필요가 없다.
    • 장애 투명성 : 구성요소(DBMS, 컴퓨터)의 장애에 무관하게 트랜잭션 원자성 유지
    • 병행 투명성 : 다수 트랜잭션 동시 수행시 결과의 일관성 유지(타임스탬프, 분산 2단계 locking을 이용하여 구현)
  • 설계 방식
    • 상향식 : 지역 스키마 작성 후 전역 스키마 작성
    • 하향식 : 전역 스키마 작성 후 지역사상 스키마 작성
  • 장단점
    • 장점 : 신뢰성과 가용성 증가, 빠른 응답 속도와 통신비용 절감, 용량 확장 용이
    • 단점 : 관리 및 통제 어려움, 데이터 무결성 관리 어려움, S/W 개발 비용 및 처리 비용 증가, 불규칙한 응답 속도
  • 적용 기법
    • 테이블 위치 분산: 설계된 테이블의 위치를 분산(구조 변경 x, 중복 생성x, 정보 이용 형태가 각 위치별로 차이가 있을 경우 사용, 테이블 위치를 파악할 수 있는 도식화된 위치별 데이터베이스 문서 필요)
    • 테이블 분할 분산 : 테이블을 쪼개서 분산(위치만 다른 곳에 두는 것이 아니라 각각의 테이블을 쪼개어서 분산)
      • 수평 분할 : 특정 칼럼의 값 기준으로 로우 단위 분리, 자사별로 사용하는 로우가 다를 때 사용
      • 수직 분할 : 칼럼 단위로 분리
    • 테이블 복제 분산 : 동일한 테이블을 다른 지역이나 서버에서 동시 생성함, 원격지 조인을 내부 조인으로 변경하여 성능 향상
      • 부분 복제 : 마스터 DB에서 테이블의 일부 내용만 다른 지역이나 서버에 위치
      • 광역 복제 : 통합된 테이블은 본사가 가지고 있으며 각 지사에 보사와 동일한 데이터를 분배한다.
    • 테이블 요약 분산
      • 분석 요약 : 사이트 별 요약 정보를 본사에서 통합하여 전체 요약정보 산출
      • 통합 요약 : 사이트 별 정보를 본사에서 통합하여 전체 요약정보 산출
profile
긍정적인 생각, 적극적인 생활

0개의 댓글