본문 바로가기

SQL/SQLD.

[SQLD] 데이터 모델링의 이해 -4

728x90

데이터 모델링

성능 데이터 모델링

데이터베이스 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영 될 수 있도록 하는 것을 의미하며 모델링을 중심으로 튜닝한다.

성능 데이터 모델링 절차

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

정규화

정규화란 데이터를 분해하는 과정이다. 데이터의 일관성을 유지하고 데이터 중복을 최소화하며 데이터의 유연성을 최대화 하기위해 수행한다.

정규화 절차

정규화 절차 설명
제 1정규화 - 속성의 원자성 확보
- PK(기본키) 설정
제 2정규화 - 기본키가 2개 이상의 속성으로 이루어진경우, 부분 함수 종속성 제거
제 3정규화 - 기본키를 제외한 칼럼 간에 종속성 제거
- 이행 함수 종속성 제거
BCNF - 후보키가 아닌 결정자 제거
제 4정규화 - 여러 칼럼들이 하나의 칼럼 종속시 다중값 종속성 제거
제 5정규화 - 조인에 의해 종속성 발생시 제거
  • 정규화가 끝난 형태를 정규형이라고 한다.
🔥     복합키, 부분 함수 종속성 문제 -> 2차 정규화
          속성 중복 문제 -> 1차 정규화
          후보키 문제 -> BCNF

정규화 문제점

정규화는 데이터 조회 (SELECT)시에 조인을 유발해 CPU와 메모리를 많이 사용하게 된다. 정규화 수행시 테이블을 분해해서 데이터 중복을 제거하므로 데이터 모델의 유연성을 높인다.

반정규화

데이터 중복을 허용하며 조인을 줄이는 데이터베이스 성능 향상 방법이다. 데이터 조회(SELECT) 속도를 향상시키지만 데이터 모델의 유연성은 낮아진다.

반정규화를 적용할 때는 기본적으로 데이터 무결성이 깨질 가능성이 많이 있기 때문에 반드시 데이터 무결성을 보장할 수 있는 방법을 고려한 이후에 반정규화를 적용하도록 해야 한다.  반정규화를 막연하게 수행하기 보다 충분한 조사 후 예를 들어 클러스터링이나 인덱스, 응용시스템 처리 같은 성능 향상이 가능 한 다른 방법들을 먼저 고려한 이후에 수행한다.

반정규화 기법

슈퍼 타입 및 서브 타입

슈퍼/서브타입 데이터 모델(Extended ER모델)은 데이터 모델링을 할 때 자주 쓰이는 모델링 방법이다. 업무를 구성하는 데이터의 특징을 공통과 차이점의 특징을 고려하여 표현이 가능하다. 공통 부분은 슈퍼타입으로 모델링하고, 상속받아 다른 릴레이션과 차이가 있는 속성들을 별도의 서브 릴레이션으로 구분해 업무를 확실히 구분짓고 물리적인 데이터 모델로 변환시 선택의 폭이 넓어지는 장점이 있다.

 

변환 방법

변환 방법 설명
OneToOne Type - 슈퍼 타입과 서브 타입을 개별 테이블로 도출
- 테이블의 수가 많아서 조인이 많이 발생, 관리 어려움
Plus Type - 슈퍼 타입과 서브 타입 테이블로 도출
- 조인이 발생하고 관리가 어렵다
Single Type - 슈퍼 타입과 서브 타입을 하나의 테이블로 도출
- 조인 성능이 좋고 관리가 편리하지만 입출력 성능이 나쁨

 

변환타입 비교

트랜잭션 특성을 고려하지 않고 테이블이 설계되었기 때문에 슈퍼/서브타입에 대한 변환을 잘못하면 성능이 저하될 수 있다. 이는 3가지 경우의 수로 정리할 수 있다.

  1. 트랜잭션은 항상 일괄로 처리하는데 테이블은 개별로 유지되어 Union 연산에 의해 성능이 저하될 수 있다.
  2. 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합되어 있어 불필요하게 많은 양의 데이터 때문에 성능이 저하된다.
  3. 트랜잭션은 항상 슈퍼+서브타입을 공통으로 처리하는데 개별로 유지되어 있거나 하나의 테이블로 집약되어있어 성능이 저하된다.

분산 데이터 베이스

물리적으로 떨어진 데이터베이스에 네트워크로 연결하여 단일 데이터베이스 이미지를 보여주고 분산된 작업 처리를 수행하는 데이터베이스이다. 

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

투명성 설명
분할 투명성 - 고객은 하나의 논리적 릴레이션이 여러 단편으로 분할되어 각 단편의 사본이 여러 시스템에 저장되어 있음을 인식할 필요가 없다.
위치 투명성 - 고객이 사용하려는 데이터의 저장 장소를 명시할 필요가 없다
- 고객은 데이터가 어느 위치에 있더라도 동일한 명령을 사용하여 데이터에 접근할 수 있어야 한다.
지역 사상 투명성 - 지역 DBMS와 물리적 데이터베이스 사이의 사상이 보장됨에 따라 각 지역 시스템 이름과 무관한 이름이 사용 가능하다
중복 투명성 - 데이터베이스 객체가 여러 시스템에 중복되어 존재함에도 고객과는 무관하게 데이터의 일관성 유지
장애 투명성 - 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도 데이터 무결성은 보장된다
병행 투명성 - 여러 고객의 응용 프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없다.

 

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

장점 단점
- 데이터베이스 신뢰성과 가용성 높음
- 분산 데이터베이스가 병렬 처리를 수행하기 때문에 빠른 응답 가능
- 분산 데이터베이스를 추가하여 시스템 용량 확장이 쉽다
- 데이터베이스가 여러 네트워크를 통해 분리되어 있기 때문에 관리와 통제가 어렵다
- 보안관리가 어렵다
- 데이터 무결성 관리가 어렵다
- 데이터베이스 설계가 복잡하다

 

728x90
반응형

'SQL > SQLD.' 카테고리의 다른 글

[SQLD] SQL 활용 - JOIN  (0) 2023.03.17
[SQLD] SQL기본  (0) 2023.03.17
[SQLD] 데이터 모델링의 이해 -3  (0) 2023.03.17
[SQLD] 데이터 모델링의 이해 -2  (0) 2023.03.16
[SQLD] 데이터 모델링의 이해-1  (0) 2023.03.16