데이터 모델 (2) 물리 데이터베이스

이주희·2022년 9월 29일
0

CS

목록 보기
45/66

물리 데이터 모델링

논리 모델을 적용하고자 하는 기술에 맞도록 상세화해 가는 과정


1. 물리 데이터 모델링 변환 절차

(1) 개체를 테이블로 변환

  • 일반적으로 테이블과 개체 명칭을 동일하게 하는 것을 권고한다.

  • 개체는 한글명을 사용, 테이블은 영문명을 사용한다.


(2) 속성을 컬럼으로 변환

  • 개발자와 사용자 간 의사소통을 위해 표준화된 약어 사용을 권고한다.

  • SQL 예약어를 사용하지 않고, 컬럼 명칭은 짧게, 복합 단어는 미리 정의된 표준에 의해 명명한다.


(3) UID를 기본키로 변환

  • 개체의 UID에 해당하는 모든 속성에 대해 기본키로 선언한다.

  • Not Null, Unique 등 제약조건을 추가로 정의한다.


(4) 관계를 외래키로 변환

  • 외래키명은 기본키 이름을 그대로 사용하나, 다른 의미를 가질 경우 변경 가능하다.

(5) 컬럼 유형과 길이 정의

  • CHAR, VARCHAR2, NUMBER, DATE, BLOB/CLOB
    • CHAR : 고정 길이 문자열(무조건 자릿수를 채워야 한다.)
    • VARCHAR2 : 가변 길이 문자열

(6) 반 정규화 수행

  • 성능 향상과 개발 및 운영의 단순화를 위해 데이터 모델을 통합하는 반 정규화를 선택적으로 수행

Super Type

모든 서브 타입으로 상속되는 공통 속성(일반화)

Sub Type

개체의 전체 집합에서 일부만 모아놓은 부분 속성(상세화)


2. 물리 데이터 저장소 구성

2-1. 테이블 제약 조건 Constraint

참조무결성 제약 조건

  • 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건이다.

  • 두 개의 릴레이션이 기본키, 외래키를 통해 참조 관계를 형성할 경우,
    참조하는 외래키의 값은 항상 참조되는 릴레이션에 기본키로 존재해야 한다.

(1) 제한 Restricted

  • 참조무결성 원칙을 위배하는 연산을 거절하는 옵션

(2) 연쇄 Casacade

  • 참조되는 릴레이션에서 튜플을 삭제하고, 참조되는 릴레이션에서 이 튜플을 참조하는 튜플들도 함께 삭제하는 옵션

(3) 널 값 Nullify

  • 참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 릴레이션에서 해당 튜플을 참조하는 튜플들의 외래 키에 NULL 값을 넣는 옵션

  • NOT NULL인 경우, 삭제 연산을 거절한다.


2-2. 인덱스

  • 검색 연산의 최적화를 위해 DB 내 컬럼에 대한 정보를 구성한 구조

  • 인덱스를 통해 전체 데이터 검색 없이 필요한 정보에 대해 신속한 조회 가능

  • 인덱스 적용 기준: 인덱스의 적정한 분포도는 10~15%

    분포도 = (1 / 컬럼 종류) X 100%

인덱스 컬럼 선정

  • 분포도가 좋은 컬럼은 단독적으로 생성
  • 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성
  • 결합 인덱스는 구성되는 컬럼 순서 선정에 유의
  • 가능한 한 수정이 빈번하지 않은 컬럼을 선정

2-3. 뷰

  • 가상의 테이블

  • 뷰 사용에 따라 수행 속도에 문제가 발생할 수 있다.

  • 뷰의 조건은 최적의 액세스 경로를 사용할 수 있도록 한다.


2-4. 클러스터 Cluster

  • 인덱스의 단점을 해결한 기법으로, 분포도가 넓을수록 오히려 유리

  • 액세스 기법이 아니라 액세스 효율 향상을 위한 물리적 저장 방법

  • 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약 가능

  • 대량의 범위를 자주 액세스하는 경우

  • 인덱스를 사용한 처리 부담이 되는 넓은 분포도에 활용

  • 여러 개의 테이블이 빈번하게 조인을 일으킬 때 활용

클러스터 설계 시 고려사항

  • 검색 효율은 높여주나 입력, 수정, 삭제 시 부하가 증가한다.
  • UNION, DISTINCT, ORDER BY, GROUP BY가 빈번한 컬럼이면 검토 대상
  • 수정이 자주 발생하지 않는 칼럼에 적용
  • 처리 범위가 넓어 문제가 발생하는 경우 단일 테이블 클러스터링을 고려
  • 조인이 많아 문제가 발생되는 경우 다중 테이블 클러스터링을 고려

2-5. 파티셔닝 Partitioning

  • 대용량의 테이블을 파티션이라는 보다 작은 논리적인 단위로 나누어 성능 저하 방지 및 관리를 상대적으로 보다 용이하게 하고자 하는 기법

  • 장점: 성능 향상, 가용성 향상, 백업 가능, 경합 감소

(1) 레인지 파티셔닝

  • 연속적인 숫자나 날짜를 기준으로 하는 파티셔닝

(2) 해시 파티셔닝

  • 파티션 키의 해시 함수 값에 의한 파티셔닝

  • 균등한 데이터 분할이 가능하고, 질의 성능이 향상 가능하다.

  • 파티션을 위한 범위가 없는 데이터에 적합하다.

(3) 리스트 파티셔닝

  • 특정 파티션에 저장될 데이터에 대한 명시적 제어가 가능한 파티셔닝

(4) 컴포지트 파티셔닝 Composite Partitioning

  • 2개 이상의 파티셔닝을 결합하는 파티셔닝

(5) 라운드로빈 파티셔닝 Round-Robin Partitioning

  • 라운드로빈 분할로 회전하면서 새로운 행이 파티션에 할당되는 방식

  • 행의 고른 분포를 원할 때 사용


2-6. 디스크 Disk

  • 정확한 용량을 산정하여 디스크 사용의 효율을 높인다.

  • 업무량이 집중되어 있는 디스크를 분리하여 설계한다.

  • 입출력 경합을 최소화하여 데이터의 접근 성능을 향상시킨다.

  • 디스크 구성에 따라 테이블스페이스 개수와 사이즈 등을 결정한다.

  • 파티션 수행 테이블은 별도로 분류한다.

profile
🍓e-juhee.tistory.com 👈🏻 이사중

0개의 댓글