SQLD 자격증 1과목 데이터 모델링의 이해 개념정리 - 02 데이터 모델과 성능 파트 요약

2020. 8. 31. 15:56SQL/SQLD - 데이터 모델링

SQLD 시험 대비 1과목 요약

데이터 모델과 성능 개념 요약

정규화(Normalization)

정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법

데이터를 분해하는 과정이다.

 

정규화는 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법이다.

정규화를 수행하면 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소화할 수 있다.

 

정규화 절차

제1정규화 : 속성(Attribute)의 원자성을 확보한다.  기본키(PK)를 설정한다.

제2정규화: 기본키가 2개 이상의 속성으로 이루어진 경우, 부분함수 종속성을 분해한다.

제3정규화: 기본키를 제외한 칼럼 간에 종속성을 제거한다. 이행 함수 종속성을 제거한다.

BCNF : 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해한다.

제4정규화: 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중 값 종속성을 제거한다.

제5정규화: 조인에 의해서 종속성이 발생되는 경우 분해한다.

 

 

정규화의 문제점

정규화는 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유연성을 높임.

정규화는 데이터 조회시에 조인을 유발하기 때문에 CPU와 메모리를 많이 사용.

조인으로 인하여 성능이 저하되는 문제를 반정규화로 해결할 수 있다.

반정규화는 데이터를 중복시키기 때문에 또 다른 문제점을 발생시킨다.

 

하나의 테이블에 너무 많은 칼럼이 추가되면, 한 개 행의 크기가 데이터베이스 관리 시스템

입출력 단위인 블록의 크기를 넘어서게 된다.

그렇게 되면 한 개의 행을 읽기 위해서 여러 개의 블록을 읽어야 한다.

한 행을 읽기 위해서 여러 개의 블록을 읽게 되면 디스크 입출력이 증가하기 때문에

성능이 떨어지게 된다. 반정규화는 이러한 문제점을 유발한다.

 

위의 문제를 해결하는 방법은 테이블을 분해해야 한다.

정리하면, 정규화는 입출력 데이터의 양을 줄여서 성능을 향상시킬 수 있는 것이다.

 

 

 

 

반정규화(De-Normalization)

데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 방법

반정규화는 조회 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다.

 

반정규화를 수행하는 경우

정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우

다량의 범위를 자주 처리해야 하는 경우

특정 범위의 데이터만 자주 처리하는 경우

요약/집계 정보가 자주 요구되는 경우

 

반정규화 절차

대상 조사 및 검토 -> 다른 방법 검토(클러스터링, 뷰, 인덱스 튜닝 등) -> 반정규화 수행

 

반정규화 기법

1) 계산된 칼럼 추가: 총판매액, 평균잔고 등을 미리 계산하고 특정 칼럼에 추가

2) 테이블 수직분할: 하나의 테이블을 두 개 이상의 테이블로 분할한다.

3) 테이블 수평분할: 하나의 테이블에 있는 값을 기준으로 테이블을 분할한다.

4) 테이블 병합: 1:1, 1대 N, 슈퍼 타입과 서브타입 관계 테이블 하나로 병합해서 성능 향상

   슈퍼 타입 및 서브 타입 변환 방법

    OneToOne Type : 슈퍼 타입과 서브타입 개별 테이블 도출, 테이블 수가 많아 조인 많다.(테이블 3개)

    Plus Type : 슈퍼타입과 서브 타입 테이블 도출, 조인 발생 (테이블 2개 : 슈퍼타입 + 서브타입)

    Single Type : 슈퍼 타입과 서브 타입을 하나의 테이블로 도출한다. 입출력 성능이 나쁘다.(테이블 1개)

 

*파티션 기법

데이터베이스에서 파티션을 사용하여 테이블을 분할할 수 있다.

논리적으로는 하나의 테이블이지만 여러 개의 데이터 파일에 분산되어 저장된다.

 

Range Partition : 데이터 값의 범위를 기준으로 파티션을 수행한다.

List Partition : 특정한 값을 지정하여 파티션을 수행한다.

Hash Partition : 해시 함수를 적용하여 파티션을 수행한다.

Composite Parititon : 범위와 해시를 복합적으로 사용하여 파티션을 수행한다.

 

*파티션 테이블의 장점

데이터 조회 시에 액세스 범위가 줄어들기 때문에 성능이 향상된다.

데이터가 분할되어 있기 때문에 Input / Output의 성능이 향상된다.

각 파티션을 독립적으로 백업 및 복구가 가능하다.

 

분산 데이터베이스

분산 데이터베이스 장점과 단점

 

장점

 - 지역 자치성, 시스템 용량 확장 용이

 - 신뢰성과 가용성

 - 효용성과 융통성

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

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

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

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

 

단점

  - 소프트웨어 개발 비용 많다.

  - 오류의 잠재성 증대

  - 처리 비용의 증대

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

  - 불규칙한 응답 속도

  - 통제의 어려움

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

 

 

분산 데이터베이스의 투명성 종류

분할 투명성 : 고객은 하나의 논리적 릴레이션이 여러 단편으로 분할되어

                     각 단편의 사본이 여러 시스템에 저장되어 있음을 인식할 필요가 없다.

 

위치 투명성 : 고객이 사용하려는 데이터의 저장 장소를 명시할 필요가 없다.

                     고객은 데이터가 어느 위치에 있더라도 동일한 명령을 사용하여 데이터에 접근할 수 있다.

 

지역사상 투명성 : 지역 DBMS와 물적 데이터베이스 사이의 사상이 보장됨에 따라

                           각 지역 시스템 이름과 무관한 이름이 사용 가능하다. 

 

중복 투명성 : 데이터베이스 객체가 여러 시스템에 중복되어 존재함에도

                     고객과는 무관하게 데이터의 일관성이 유지된다.

 

장애 투명성 : 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도

                    데이터의 무결성(데이터의 정확성과 일관성 유지, 보증)은 보장된다.

 

병행 투명성 : 여러 고객의 응용 프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을

                     수행하는 경우에도 결과에 이상이 없다.