IT/지식

[CS] 지식 - 1 (정규화)

생각없이 해도 생각보다 좋다. 2023. 10. 20. 09:27

데이터 모델과 성능

정규화

정규화

  • 데이터 일관성, 데이터 중복 제거, 데이터 독립성 확보, 데이터 유연성 확보 등을 위한 방법
  • 데이터를 분해하는 과정
  • 정규화를 하지 않아 생기는 문제를 이상현상(Anomaly)라고 한다.

    정규화 절차

  • 제1정규화
    • 기본키를 찾는다.
  • 제2정규화
    • 기본키가 2개 이상의 속성으로 이루어지고 나머지 모든 속성이 식별자에 종속된 경우, 부분 함수 종속성을 분해한다. 해당 경우가 아니면 제2정규화는 생략한다.
    • 기본키를 분해하며 해당 기본키에 종속된 칼럼들을 같이 분해하여 새로운 테이블을 만든다.
  • 제3정규화(실질적 수행 마지막 단계)
    • 기본키를 제외한 컬럼 간에 종속성을 제거한다. (이행 함수 종속성)
  • BCNF(Boyce-Codd Normal Form)
    • 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해한다.
  • 제4정규화
    • 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 종속성을 제거한다.
  • 제5정규화
    • 조인에 의해서 종속성이 발생되는 경우 분해한다.

정규화의 성능

정규화의 문제점

  • 정규화된 데이터는 모두 분해된 테이블에 있기 때문에 조회 작업(SELECET) 시 JOIN을 유발한다. 이로인해 CPU, 메모리 등 자원 소모가 크다
    • JOIN 시 자원 소모가 큰 이유는 프로그램 관점에서 결국 중첩 반복문을 사용하는 것이기 때문이다.
    • 이를 해결하기 위해 INDEX, OPTIMIZER와 같은 툴을 사용하거나 반정규화를 진행함
    • 반정규화를 하면 JOIN을 최소화할 수 있지만, COLUMN이 과도해질 경우, 이 또한 성능 저하를 유발한다. (디스크 입출력 증가)

반정규화

반정규화

  • 성능 향상을 위해 데이터 중복을 허용하고 join을 줄이는 방법
  • SELECT 속도는 향상되지만, 데이터 모델의 유연성이 낮아짐

    반정규화를 수행하는 경우

  • 정규화 때문에 수행 속도가 느려지는 경우
  • 다량의 범위를 자주 처리해야 하는 경우
  • 특정 범위의 데이터만 자주 처리하는 경우
  • 요약/집계 정보가 자주 요구되는 경우

    반정규화 기법

  1. 계산 결과를 직접 칼럼으로 추가
  2. 데이터 수직 분할 : 하나의 테이블을 기본키는 유지하고 칼럼만 분할하여 새로운 테이블을 분할
  3. 데이터 수평 분할 : 칼럼에 있는 값에서 특정 기준을 잡고(범위 설정) 테이블을 분할
  4. 테이블 병합 : 1:1 관계, 1:N 관계 테이블 병합 혹은 부모-자식(super-sub)관계 테이블을 병합
    • Super type 및 Sub type 변환 방법
      • OnoToOne Type : 싹 다 분해
      • Plus Type : 적당히 분해
      • Single Type : 분해 안 함

        파티션; Partition

  • 논리적으로는 하나의 테이블이지만, 여러 개의 데이터 파일에 분산되어 저장시키는 기법
  • 파티션 종류
    • Range partition
    • List partition
    • Hash partition
    • Composite partition : range, hash 복합 사용 기법
  • 파티션의 장점
    • 성능 향상
    • 파티션 별로 독립적인 백업 및 복구 가능

분산 데이터베이스

데이터베이스의 구조

  • 중앙 집중형 데이터베이스
  • 분산 데이터베이스

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

  • 분할 투명성
  • 위치 투명성
  • 지역 사상 투명성
  • 중복 투명성
  • 장애 투명성
  • 병행 투명성

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

  • 상향식 설계 방식 : 지역 스키마 작성 => 전역 스키마 작성 => 분산 데이터베이스 구축
  • 하향식 설계 방식 : 전역 스키마 작성 => 지역 스키마 작성 => 분산 데이터베이스 구축

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

  • 장점
    • 신뢰성, 가용성이 높다. (가용성: 서비스를 정상적으로 제공할 수 있는 상태)
    • 병렬 처리로 인한 빠른 응답 속도
    • 확장성이 좋다
  • 단점
    • 관리와 통제가 어렵다
    • 보안에 취약하다
    • 무결성 관리가 어렵다 (무결성: 완전, 일관, 정확)
    • 설계가 복잡하다

'IT > 지식' 카테고리의 다른 글

[CS] 지식 - 3 (자료구조_List)  (0) 2023.10.20
[IT] 지식 - 3 (오류,에러 수정 방식, +문제 추가)  (0) 2023.10.20
[CS] 지식 - 2 (SQL)  (0) 2023.10.20
[IT] 지식 - 2 (스케줄링)  (0) 2023.10.20
[IT] 지식 - 1 (ver.문제)  (0) 2023.10.20