타오름
조각보
타오름
전체 방문자
오늘
어제
  • 조각보
    • DEVELOPER B 🌱
      • Programming
      • Java
      • Spring | SpringBoot
      • JPA
      • Database
      • DS | Algorithms
      • CS
      • Git | Github
      • IDE

블로그 메뉴

  • HOME
  • TAG
         
        

CALENDAR

        
«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
    

티스토리

hELLO · Designed By 정상우.
타오름

조각보

[SQLD] 성능 - 대량 데이터, 데이터베이스 구조, 분산 데이터베이스 요약
DEVELOPER B 🌱/Database

[SQLD] 성능 - 대량 데이터, 데이터베이스 구조, 분산 데이터베이스 요약

2021. 8. 25. 23:03

 

 

1. 대량 데이터에 따른 성능 

 

 

> 대량 데이터 발생에 따른 테이블 분할 개요

   

    -  아무리 설계가 잘되어 있는 데이터 모델이라고 하더라도 대량의 데이터가 하나의 테이블에 집약되어 있고 하나의 하드웨어 공간에 저장되어 있으면 성능 저하를 피하기가 힘들다.

    - 하나의 테이블에 대량의 데이터가 존재하는 경우에는 인덱스의 tree 구조가 너무 커져서 효율성이 떨어져 데이터를 처리할 때 디스크 I/O를 많이 유발하게 된다. 또한 한 테이블에 많은 수의 칼럼이 존재하게 되면 데이터가 디스크의 여러 블록에 존재하므로 디스크에서 데이터를 읽는 I/O량이 많아지게 되어 성능이 저하된다.

 

 

> 한 테이블에 많은 수의 칼럼을 가지고 있으면 성능 저하

 

    - 칼럼 수가 많은 테이블에서 데이터를  처리하게ㅐ 되면 디스크 I/O량이 증가하여 성능이 저하됨. 

    - 정규화를 통해 해결. 

    - 1:1 테이블 분할 통해 성능 개선

    - 파티셔닝을 통한 성능 개선 : 프로그램은 하나의 테이블에 접근하면 내부적으로 range로 구분된 테이블에서 트랜잭션 처리 

 

 

> 테이블 대한 수평분할 / 수직 분할의 절차

 

    - 데이터 모델링을 완성한다.

    - 데이터베이스 용량산정을 한다. 

    - 대량 데이터가 처리되는 테이블에 대해서 트랜잭션 처리 패턴을 분석한다. 

    - 칼럼 단위로 집중화된 처리가 발생하는지, 로우 단위로 집중화된 처리가 발생되는지 분석하여 집중화된 단위로 테이블을 분리하는것을 검토한다. 

 

 

 

2. 데이터베이스 구조와 성능

 

 

> 슈퍼타입 / 서브타입 모델의 변환 방법

 

    - 성능을 고려한 슈퍼타입과 서브타입의 모델 변환의 방법은 세가지 => 1:1 타입, 슈퍼+ 서브타입 , All in One 타입

   

 

> 슈퍼타입 / 서브타입 모델의 변환 기준

 

    - 슈퍼/서브타입을 성능을 고려한 물리적인 데이터 모델로 변환하는 기준은 데이터 양과 해당 테이블에 발생되는 트랜잭션의 유형에 따라 결정해야한다. 

 

 

> 슈퍼타입 / 서브타입 데이터 모델의 변환타입 비교 

 

구분 OnetoOne Type Plus Type Single Type
특징 개별 테이블 유지 슈퍼 + 서브타입 테이블  하나의 테이블
확장성 우수함 보통 나쁨
조인 성능 나쁨 나쁨 우수함
I/O량 성능 좋음 좋음 나쁨
관리용이성 좋지않음 좋지않음 좋음
트랜잭션 유형에 따른
선택 방법
개별 테이블로 접근이 많은 경우 선택 슈퍼 + 서브 형식으로 데이터를 처리하는 경우 선택 전체를 일괄적으로 처리하는 경우 선택

 

 

> 인덱스 특성을 고려한 PK/FK 데이터 베이스 성능향상

  

    - 인덱스 : 데이터를 조회할 때 가장 효과적으로 처리될 수 있도록 접근 경로를 제공하는 오브젝트. 일반적으로 데이터베이스 테이블에서는 균형 잡힌 트리구조의 B*Tree 구조를 많이 사용

    - 인덱스가 정렬되어 있는 특징으로 인해 데이터베이스 설계에 이 특징을 따라 설계에 반영해야 할 요소에 대해서는 반드시 알고 있어야 좋은 데이터 모델을 만들어 낼 수 있게 된다.

    - 프로젝트에서 PK/FK 설꼐는 업무적 의미로도 매우 중요한 의미를 가지고 있지만 데이터 접근할 때 경로를 제공하는 성능의 측면에서도 중요한 의미를 가지고 있기 때문에 성능을 고려한 데이터베이스 설계가 될 수 있도록 설계단계 말에 칼럼의 순서를 조정할 필요가 있다. 

 

 

 

3. 분산 데이터 베이스

 

 

> 분산 데이터 베이스의 개요

 

   - 여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스

   - 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임

 

 

> 분산 데이터 베이스의 투명성

 

   - 분할 투명성(단편화) : 하나의 논리적 Relation이 여러 단편으로 분할되어 각 단편의 사본이 여러 site에 저장

   - 위치 투명성 : 사용하려는 데이터의 저장 장소 명시 불필요. 위치 정보가 System Catalog에 유지되어야 함

   - 지역사상 투명성 : 지역 DBMS와 물리적 DB 사이에 Mapping 보장

   - 중복 투명성 : DB 객체가 여러 사이트에 중복 되 있는지 알 필요가 없는 성질

   - 장애 투명성 : 구성요소의 장애에 무관한 트랜잭션의 원자성 유지

   - 병행 투명성 : 다수 트랜잭션 동시 수행시 결과의 일관성 유지

 

 

> 분산 데이터 베이스의 장단점

 

   > 장점

      - 지역 자치성, 점층적 시스템 용량 확장

      - 신뢰성과 가용성

      - 효율성과 융통성

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

      - 데이터의 가용성과 신뢰성 증가

      - 시스템 규모의 적절한 조절

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

   > 단점

      - 소프트웨어 개발 비용

      - 오류의 잠재성 증대

      - 처리 비용의 증대

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

      - 불규칙한 응답 속도

      - 통제의 어려움

      - 데이터 무결성에 대한 위협

 

 

> 데이터베이스 분산 구성의 가치

 

    - 데이터를 분산 환경으로 구성하였을 때 가장 핵심적인 가치는 바로 통합된 데이터 베이스에서 제공할 수 없는 빠른 성능를 제공한다는 점

    - 원거리 또는 다른 서버에 접속하여 처리하므로 인해 발생되는 네트워크 부하 및 트랜잭션 집중에 따른 성능 저하의 원인을 분산된 데이터베이스 환경을 구축하므로 빠른 성능을 제공하는것이 가능해진다.

 

 

> 테이블 위치 분산

  

    - 테이블 위치 분산은 테이블의 구조는 변하지 않는다.

    - 테이블이 다른 데이터베이스에 중복되어 생성되지 않는다.

    - 설계된 테이블의 위치를 각각 다르게 위치시키는 것이다. 

 

 

> 테이블 분할 - 수평 분할

    

    - 지사에 따라 테이블을 특정 칼럼의 값을 기준으로 로우를 분리한다. 칼럼은 분리되지 않는다. 모든 데이터가 각 지사별로 분리되어 있는 형태를 가지고 있다.

   - 각 지사에 있는 데이터와 다른 지사에 있는 데이터가 항상 배타적으로 존재. 데이터를 한군데 집합시켜 놓아도 PK에 의해 중복이 발생되지 않는다. 

 

 

> 테이블 분할 - 수직 분할

  

   - 지사에 따라 테이블 칼럼을 기준으로 칼럼을 분리한다. 로우 단위로는 분리되지 않는다. 모든 데이터가 각 지사별로 분리되어 있는 형태를 가지고 있다.

   - 칼럼을 기준으로 분할하였기 때문에, 각각의 테이블에는 동일한 PK 구조와 값을 가지고 있어야 한다.

 

 

> 테이블 복제 분산 - 부분 복제

 

    - 통합된 테이블을 한군데에 가지고 있으면서 각 지사별로는 지사에 해당된 로우를 가지고 있는 형태이다.

    - 지사에 존재하는 데이터는 반드시 본사에 존재하게 된다. 즉 본사의 데이터는 지사데이터의 합이 되는 것이다. 

    - 각 지사에서 데이터 처리가 용이할 뿐만 아니라 전체 데이터에 대한 통합처리도 본사에 있는 통합 테이블을 이용하게 되므로 여러 테이블에 조인이 발생하지 않는 빠른 작업 수행이 가능해진다.

 

 

> 테이블 복제 분산 - 광역 복제

  

    - 합된 테이블을 한군데에 가지고 있으면서 각 지사에도 본사와 동일한 데이터를 모두 가지고 있는 형태

    - 지사에 존재하는 데이터는 반드시 본사에 존재하게 된다. 모든 지사에 있는 데이터량과 본사에 있는 데이터량 동일

    - 본사와 지사 모두 동일한 정보를 가지고 있으므로 본사나 지사나 데이터 처리에 특별한 제약을 받지 않는다.

 

 

> 테이블 요약 분산 -  분석 요약 

 

   - 분석 요약은 각 지사별로 존재하는 요약 정보를 본사에 통합하여 다시 전체에 대해서 요약 정보를 산출하는 방법

 

 

> 테이블 요약 분산 - 통합 요약

 

    - 각 지사별로 존재하는 다른 내용의 정보를 본사에 통합하여 다시 전체에 대해서 요약정보를 산출하는 방법

 

 

> 분산 데이터베이스 적용이 효과적인 경우

 

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

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

   - 실시간 동기화가 요구되지 않을 때

   - 특정 서버에 부하가 집중이 될때 부하를 분산하면 좋음

   - 백업 사이트를 구성할 때

 

 

출처 : 한국데이터산업진흥원 게시자료

저작자표시 비영리 변경금지 (새창열림)
    'DEVELOPER B 🌱/Database' 카테고리의 다른 글
    • [SQLD] 데이터 정의어(DDL) 요약
    • [SQLD] 관계형 데이터 베이스 개요 요약
    • [SQLD] 성능 데이터 모델링 (정규화, 반정규화) 요약
    • [SQLD] 엔터티, 속성, 관계, 식별자 요약
    타오름
    타오름

    티스토리툴바