정규화(Normalization)


  • 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정
  • 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법
  • 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유연성을 높임
  • 정규화 수행시 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소화할 수 있음
  • 제1정규화부터 제5정규화까지 있지만, 실질적으로 제3정규화까지만 수행

정규화 절차

정규화 절차 설명
제1정규화 - 속성의 원자성 확보
- 기본키 설정
제2정규화 - 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거(분해)
- 기본키가 하나의 칼럼으로 이루어지면 제2정규화는 생략
제3정규화 - 기본키를 제외한 칼럼 간에 종속성을 제거
- 이행 함수 종속성을 제거
BCNF 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해
제4정규화 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 종속성 제거
제5정규화 조인에 의해 종속성이 발생되는 경우 분해

정규화의 문제점: 정규화는 데이터 조회(SELECT) 시에 조인(Join)을 유발하기에 CPU와 메모리를 많이 사용.

반정규화(De-Normalization)


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

조회(SELECT) 속도를 향상하지만, 데이터 모델의 유연성은 낮아짐

반정규화를 수행하는 경우

  • 정규화에 충실하면 종속성, 활용성은 향상되지만 숙도가 느려지는 경우
  • 다량의 범위를 자주 처리해야 하는 경우
  • 특정 범위의 데이터만 자주 처리하는 경우
  • 요약/집계 정보가 자주 요구되는 경우

반정규화 절차

  • 대상 조사 및 검토: 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상 조사
  • 다른 방법 검토: 반정규화를 수행하기 전에 다른 방법이 있는지 검토(클러스터링, 뷰, 인덱스 튜닝, 응용프로그램, 파티션 검토)
  • 반정규화 수행: 테이블, 속성, 관계 등을 반정규화

반정규화 기법

  • 계산된 칼럼 추가
  • 테이블 수직 분할: 하나의 테이블을 두 개 이상의 테이블로 분할 (칼럼을 분할하여 새로운 테이블 생성)
  • 테이블 수평 분할: 하나의 테이블에 있는 값을 기준으로 테이블 분할
  • 테이블 병합: 테이블을 하나의 테이블로 병합하여 성능 향상

파티션(Partition) 기법

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

파티션을 사용하면 논리적으로는 하나의 테이블이지만 여러 개의 데이터 파일에 분산되어 저장됨.

기법 설명
Range Partition 데이터 값의 범위를 기준으로 파티션 수행
List Partition 특정한 값을 지정하여 파티션 수행
Hash Partition 해시 함수를 적용하여 파티션 수행
Composite Partition 범위와 해시를 복합적으로 사용하여 파티션 수행

파티션 테이블의 장점

  • 데이터 조회 시 액세스 범위가 줄어들기에 성능 향상
  • 데이터가 분할되어 있기에 I/O(Input/Output)의 성능 향상
  • 각 파티션을 독립적으로 백업 및 복구 가능

테이블 병합

  • 1대1 관계의 테이블을 하나의 테이블로 병합하여 성능 향상
  • 1대N 관계의 테이블을 병합하여 성능 향상, 많은 양의 데이터 중복이 발생
  • 슈퍼 타입과 서브 타입 관계가 발생하면 테이블을 통합하여 성능 향상

Super Type, Sub Type: 엔터티에 중복되는 값을 상속 Super Type은 부모, Sub Type은 자식으로 생각하면 됨

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

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

분산 데이터베이스


  • 중앙 집중형 데이터베이스: 한 대의 물리적 시스템에 DBMS를 설치하고 여러 명의 사용자가 DBMS에 접속하여 데이터베이스를 사용하는 구조
  • 분산 데이터베이스: 물리적으로 떨어진 데이터베이스에 네트워크로 연결하여 단일 데이터베이스 이미지를 보여 주고 분산된 작업 처리를 수행하는 데이터베이스

DBMS: 데이터베이스 관리 시스템

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

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

분산 데이터베이스 설계 방식

  • 상향식 설계 방식: 지역 스키마 작성 후 향후 전역 스키마를 작성하여 분산 데이터베이스 구축
  • 하향식 설계 방식: 전역 스키마 작성 후 해당 지역 사상 스키마를 작성하여 분산 데이터베이스 구축

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

장점

  • 데이터베이스 신뢰성과 가용성이 높음
  • 분산 데이터베이스가 병렬 처리를 수행하기에 빠른 응답 가능
  • 분산 데이터베이스를 추가하여 시스템 용량 확장이 쉬움

단점

  • 데이터베이스가 여러 네트워크를 통해 분리되어 있기에 관리와 통제가 어려움
  • 보안관리가 어려움
  • 데이터 무결성 관리가 어려움
  • 데이터베이스 설계가 복잡