ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD] 2.데이터 모델과 성능
    자격증 2021. 11. 15. 16:33

    성능 데이터모델링

    • 데이터베이스 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것
    • 데이터의 증가가 빠를수록 성능 저하에 따른 성능개선비용은 증가한다
    • 데이터모델은 성능을 튜닝하면서 변경될 수 있다
    • 분석/설계 단계에서 성능을 고려한 데이터모델링을 수행할 경우 성능 저하에 따른 Rework 비용을 최소화 할 수 있는 기회를 가지게 된다

    성능 데이터모델링 순서

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

    성능 데이터모델링 고려사항

    • 기본적으로 중복된 데이터를 제거함으로써 조회성능을 향상시킬 수 있다.
    • 용량산정은 전체적인 데이터베이스에 발생되는 트랜잭션의 유형과 양을 분석하는 자료가 되므로 성능데이터 모델링을 할 때 중요한 작업이 될 수 있다.
    • 물리적인 데이터 모델링을 할 때 PK/FK의 칼럼의 순서조정, FK 인텍스 생성 등은 성능 향상을 위한 데이터 모델링 작업에 중요한 요소가 된다.
    • 이력데이터는 시간에 따라 반복적으로 발생되기 때문에 대량 데이터일 가능성이 높아 특별히 성능을 고려하여 칼럼 등을 추가하도록 설계해야 한다.

    정규화

     

    [Database] 정규화(Normalization) 쉽게 이해하기

    지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz

    mangkyu.tistory.com

     

    반정규화

    • 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능향상, 개발, 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법
    • 데이터를 중복하여 성능을 향상시키기 위한 기법
    • 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합 분리 등을 수행하는 모든 과정
    • 데이터 무결성이 꺠질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O 량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나 컬럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행한다.
    • 과도한 반정규화는 오히려 데이터의 일관성 및 정합성이 저하시킴

    반정규화를 고려할 때 판단요소

    • 반정규화 정보에 대한 재현의 적시성으로 판단한다. 예를 들어, 빌링의 잔액(balance)은 다수 테이블에 대한 다량의 조인이 불가피하므로 데이터 제공의 적시성 확보를 위한 필수 반정규화 대상 정보이다.
    • 다량 데이터 탐색의 경우 인덱스가 아닌 파티션 및 데이터 클러스터링 등의 다양한 물리 저장 기법을 활용하여 성능 개선을 유도할 수 있다. 다만, 하나의 결과셋을 추출하기 위해 다량의 데이터를 탐색하는 처리가 반복적으로 빈번하게 발생한다면 이때는 반정규화를 고려하는 것이 좋다.
    • 이전 또는 이후 위치의 레코드에 대한 탐색은 window function으로 접근 가능하다
    • 집계 테이블 이외에도 다양한 유형(다수 테이블의 키 연결 테이블 등)에 대하여 반정규화 테이블 적용이 필요할 수 있다

    테이블의 반정규화

    • 테이블 병함 : 1:1 관계 테이블 병함 / 1:M 관계 테이블병합 / 슈퍼서브타입 테이블 병합
    • 테이블 분할 : 수직분할 / 수평분할
    • 테이블 추가 : 중복테이블 추가 / 통계테이블 추가 / 이력테이블 추가 / 부분테이블 추가

    칼럼의 반정규화

    • 중복칼럼 추가 / 파생칼럼 추가 / 이력테이블 칼럼 추가 / PK에 의한 컬럼 추가 / 응용시스템 오작동을 위한 컬럼 추가

    반정규화의 대상에 대해 다른 방법으로 처리

    • 지나치게 많은 조인(JOIN)이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 VIEW를 사용하면 이를 해결할 수 있다.
    • 대량의 데이터처리나 부분처리에 의해 성능이 저하되는 경우에 클러스터링을 적용하거나 인덱스를 조정함으로써 성능을 향상시킬 수 있다.
    • 대량의 데이터는 Primary Key 의 성격에 따라 부분적인 테이블로 분리할 수 있다. 즉 파티셔닝 기법(Partitioning)이 적용되어 성능저하를 방지할 수 있다.
    • 파티셔닝기법 : 하나의 테이블에 많은 양의 데이터가 저장되면 인덱스를 추가하고 테이블을 몇개로 쪼개도 성능이 저하되는 경우가 있다. 이때 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 테이블로 분리하여 데이터 엑세스 성능도 향상시키고 , 데이터 관리방법도 개선할 수 있더록 테이블에 적용하는 기법
    • 응용 애플리케이션에서 로직을 구사하는 방법을 변경함으로써 성능을 향상시킬 수 있다.

    대량 데이터 발생에 다른 테이블 분할

    • 로우체이닝 : 로우의 길이가 길어서 데이터 블록 하나에 데이터를 모두 저장하지 않고 두 개 이상의 블록에 하나의 로우가 저장되는 형태
    • 로우마이그레이션 : 데이터 블록에서 수정 발생 시 수정된 데이터의 길이가 길어 해당 데이터 블록에 저장하지 못하여 다른 블록의 빈 공간을 찾아 저장하는 방식

    논리데이터모델의 슈퍼타입과 서브타입 데이터 모델 → 물리적 테이블 형식으로 변환

    • 트랜잭션은 항상 전체를 대상으로 일괄 처리하는데 테이블은 서브타입별로 개별 유지하는 것으로 변환하면 Union 연산에 의해 성능이 저하될 수 있다.
    • 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합하여 변환하면 불필요하게 많은 양의 데이터가 집적되어 있어 성능이 저하될 수 있다.
    • 트랜잭션은 항상 슈퍼+서브 타입을 함께 처리하는데 개별로 유지하면 조인에 의해 성능이 저하될 수 있다.
    • 트랜잭션은 항상 전체를 통합하여 분석 처리하는데 슈퍼-서브타입이 하나의 테이블로 통합되어 있으면 하나의 테이블에 집적된 데이터만 읽어 처리할 수 있기 때문에 다른 형식에 비해 더 성능이 우수하다.

    PK순서 결정하는 기준

    • 인덱스 정렬구조를 이해한 상태에서 인덱스를 효율적으로 이용할 수 있도록 PK순서를 지정해야한다
    • 인덱스의 특징은 여러개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 나타낼 수 있다
    • 앞쪽에 위치한 속성 값이 가급적 '=' 아니면 최소한 범위 'BETWEEN' '< >'가 들어와야 인덱스를 이용할 수 있는 것이다

    분산 데이터베이스

    • 여러 곳으로 분산되어 있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
    • 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임
    • 데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역 여러 노드로 위치시켜 사용성/성능 등을 극대화 시킨 데이터베이스
    • 공통코드, 기준정보 등 마스터 데이터는 분산데이터베이스에 복제분산을 적용한다
    • 거의 실시간(Near Real Time) 업무적인 특성을 가지고 있을 때 분산 데이터베이스를 사용하여 구성할 수 있다. 
    • 백업 사이트를 구성할 떄 간단하게 분산기능을 적용하여 구성할 수 있다.

    분산 데이터베이스 장점

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

    분산 데이터베이스 단점

    • 소프트웨어 개발 비용
    • 오류의 잠재성 증대
    • 처리 비용의 증대
    • 설계, 관리의 복잡성과 비용
    • 불규칙한 응답 속도
    • 통제의 어려움
    • 데이터 무결성에 대한 위협

     

    728x90

    '자격증' 카테고리의 다른 글

    [SQLD] 4.SQL 활용  (0) 2021.11.18
    [SQLD] 3.SQL 기본  (0) 2021.11.18
    [SQLD] 1.데이터 모델링의 이해  (0) 2021.11.15
    정보처리 산업기사 실기 [ 신기술 동향 ]  (0) 2021.09.22
    정보처리 산업기사 필기 5  (0) 2021.08.12
Designed by Tistory.