포스트

23. 물리 DB 모델링

23. 물리 DB 모델링

DB 무결성

개념

  • 데이터의 정확성, 일관성, 유효성이 유지되는 것

  • 데이터의 무결성을 유지하는 것은 DBMS의 중요한 기능

  • 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지

종류

개체 무결성 | Entity Integrity

  • 모든 릴레이션은 기본키로 선택된 컬럼을 가져야 함

  • 기본키는 중복되지 않은 고유한 값을 가져야 함

  • 릴레이션의 기본키는 NULL 값을 허용하지 않음

참조 무결성 | Referential Integrity

  • 외래키 값은 NULL이거나 참조하는 릴레이션의 기본키 값과 동일해야 함

  • 각 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없음

참조 무결성 제약조건

제한 | Restrict
문제가 되는 연산을 거절
연쇄 | Cascade
참조되는 릴레이션에서 튜플을 삭제하고 참조하는 릴레이션에서 이 튜플을 참조하는 튜플도 함께 삭제
널값 | Nullify
참조되는 릴레이션에서 튜플을 삭제하고 참조하는 릴레이션에서 이 튜플을 참조하는 튜플들의 외래키에 NULL 등록
기본값 | Default
NULL을 넣는 대신에 디폴트 값을 등록

도메인 무결성 | Domain Integrity

  • 속성들의 값은 정의된 도메인에 속한 값이어야 함

  • 성별이라는 컬럼에는 남, 여 를 제외한 데이터는 제한되어야 함

고유 무결성 | Unique Integrity

  • 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성 값들이 서로 달라야 함

키 무결성 | Key Integrity

  • 하나의 릴레이션에는 적어도 하나의 키가 존재해야 함

릴레이션 무결성 | Relational Integrity

  • 삽입, 삭제, 갱신과 같은 연산을 수행하기 전과 후에 대한 상태의 제약

Key

개념

  • DB에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 컬럼

종류

후보키 | Candidate Key

  • 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합

  • 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야 함

  • 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 함

기본키 | Primary Key

  • 후보키 중에서 선택한 주키(Main Key)

  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성

  • NULL 값을 가질 수 없음(개체 무결성)

  • 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음(개체 무결성)

대체키 | Alternate Key

  • 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키

  • 보조키 라고도 함

슈퍼키 | Super Key

  • 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키

  • 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족시키지 못함

외래키 | Foreign Key

  • 관계를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성

  • 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구로 사용

  • 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없음(참조 무결성 조건)


컬럼 속성

개념

  • 릴레이션에서 정보를 나타내는 최소 단위로, 각 열의 상태나 특성을 나타내는 항목

  • 릴레이션에서 특정한 단순 자료형의 일련의 데이터값과 릴레이션에서의 각 열

  • 컬럼은 열이 어떻게 구성되어야 할지에 대한 구조를 제공

  • 관계형 DB 용어에서 컬럼과 같은 의미로 사용되는 것은 속성(Attribute)

특징

  • 시스템을 구축하려는 업무 프로세스에 필요한 정보로 구성

  • 하나의 속성은 하나의 속성값만을 가짐

    • 여러 개의 속성값이 들어가면 별도의 테이블로 분리

분류

기본 속성 : 업무로부터 추출한 모든 속성
설계 속성 : 코드성 데이터, 릴레이션 식별용 일련번호
파생 속성 : 다른 속성에 영향을 받아 발생하는 속성(계산값, 합계, 재고 등)

세부 의미에 따른 분류

단순 속성 : 나이, 성별같이 다른 속성들로 구성될 수 없는 단순한 속성
복합 속성 : 주소와 같이 시, 구, 동 처럼 여러 세부 속성들로 구성될 수 있는 속성

구성방식에 따른 분류

Primary Key Attribute : 릴레이션에서 튜플을 유일하게 구분할 수 있는 속성
Foreign Key Attribute : 다른 릴레이션과의 관계에서 참조하고 있는 속성
일반 속성 : 릴레이션에 포함된 속성 중, PK와 FK가 아닌 속성

Domain

  • 속성이 가질 수 있는 값의 범위

속성명 부여 원칙

  • 해당 업무에서 사용하는 이름을 부여

  • 서술식 속성명은 사용하지 않음

  • 약어사용은 가급적 제한

  • 전체 데이터 모델에서 유일성을 확보하는 것이 좋음


반정규화

개념

  • DB 정규화 이후, 성능향상과 개발 편의성 등 정규화 기법에 위배되는 수행기법

  • 정규화된 개체, 속성, 관계를 시스템의 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법

고려사항

  • 데이터의 중복이 발생하여 데이터 수정 시 무결성이 꺠질 수 있음

  • 읽기 속도는 향상되지만, 삽입 & 삭제 & 수정 속도는 느려짐

  • 저장공간의 효율이 떨어짐

  • 테이블이 크고 복잡해져 유지보수가 어려움

  • 과도한 반정규화는 오히려 성능을 저하시킴

  • 반정규화를 위해서는 사전에 데이터의 일관성과 무결성을 우선으로 할지, DB의 성능과 단순화를 우선으로 할지 결정해야 함

적용 순서

  1. 반정규화 대상 조사
  • 자주 사용하는 테이블에 접근하는 프로세스의 수가 많고 항상 일정 범위만을 조회하는 경우

  • 테이블에 대량의 데이터가 있고, 대량의 데이터 범위를 자주 처리하는 경우

  • 통계 정보를 필요로 할 때

  • 지나치게 많은 조인이 걸려 있을 때

  1. 다른 방법으로 유도
  • 성능을 고려한 뷰를 생성하고, 뷰를 통해 접근하게 함으로 성능저하 위험 예방

  • 인덱스나 클러스터링을 통한 성능 향상

  • 파티셔닝 고려

  • 어플리케이션의 로직을 변경하여 성능 향상

  1. 반정규화 수행

유형

테이블 분할

  • 수평 분할 : 레코드 단위로 분할

  • 수직 분할 : 컬럼 단위로 분할

테이블 중복

  • 통계 테이블 추가 : DW, OLAP 데이터 용

  • 진행 테이블 추가 : 업무 프로세스 상태

컬럼기반 분할

  • 조회 빈도 기반 : 고빈도 컬럼 분리

  • 크기 기반 분할 : 일정 용량 컬럼 분리

컬럼 중복

  • 중복 컬럼 추가 : 자주 조회되는 컬럼 추가

  • 파생 컬럼 추가 : 연산 결과 별도 저장


물리테이터 모델 품질 기준

개요

  • 물리데이터 모델은 시스템 성능에 대해 직접적인 영향을 미치기 때문에 향후에 발생할 수 있는 성능 문제를 사전에 검토

  • 물리데이터 모델 품질 기준의 목적은 성능과 오류 예방의 관점으로 나눌 수 있음

항목

정확성

  • 데이터 모델이 표기법에 따라 정확하게 표현되었는지 검토

  • 업무영역, 요구사항이 정확하게 반영되었는지 검토

완전성

  • 데이터 모델의 구성요소를 정의하는데 있어서 누락을 최소화

  • 업무영역, 요구사항 반영에 있어서 누락을 없앰

준거성

  • 제반 준수 요건들이 누락 없이 정확하게 준수되었음을 의미

최신성

  • 데이터 모델이 현행 시스템의 최신 상태를 반영하고 있고 이슈사항들이 지체없이 반영되고 있음을 의미

일관성

  • 여러 영역에서 공통 사용되는 데이터 요소가 전사 수준에서 한 번만 정의되고, 이를 여러 다른 영역에서 참조하고 활용되면서 모델 표현상의 일관성을 유지하고 있음을 의미

활용성

  • 작성된 모델과 그 설명 내용이 이해관계자에게 의미를 충분하게 전달될 수 있음을 의미

  • 업무 변화 시에 설계 변경이 최소화되도록 유연하게 설계되었음을 의미

데이터 품질 관리

대상

  • 데이터 값 : 데이터 현상, 데이터 구조적 값

  • 데이터 주소 : 각 단계별 데이터 구조

  • 데이터 관리 프로세스 : 데이터 정의, 변경, 평가 프로세스

지표

  • 정확성 : 실세계를 정확히 반영

  • 일관성 : 동일 데이터 간 불일치 미존재

  • 유용성 : 요구되는 데이터 충족

  • 접근성 : 원하는 데이터를 손쉽게 이용

  • 적시성 : 최신성 유지

  • 보안성 : 외부 요인으로부터 데이터 보호


CRUD 분석

개념

  • 데이터 처리 기능인 Create, Read, Update, Delete를 묶어서 표현

  • 시스템 구축 시 프로세스와 DB에 저장되는 데이터 사이의 의존관계를 표현하는 표

  • 시스템을 구축하기 위해 해당 업무에 어떤 데이터가 존재하는지 무엇이 영향을 받는지 분석

  • DB에 영향을 주는 생성, 읽기, 갱신, 삭제 연산으로 프로세스와 테이블 간에 매트릭스를 만들어서 트랜잭션을 분석

필요성

모델링 작업 검증

  • 분석 단계의 데이터 모델과 업무 프로세스 모델에 대한 작업 검증

테스트 시 사용

  • 테스트 자료로 사용되며, 각 테스트 단위별 데이터의 변화를 확인

인터페이스 현황 파악

  • 전체 업무의 인터페이스 파악

SQL 성능 튜닝

개념

  • SQL 문을 최적화하여 빠른 시간 내에 원하는 결과값을 얻기 위한 작업

  • 주어진 H / W 환경을 통해 처리량과 응답속도를 개선하기 위해 수행

접근 방법

부하의 감소 : 동일한 부하를 보다 효율적인 방법을 수행
부하의 조정 : 부하 정도에 따라 업무를 조정하는 방법
부하의 병렬 수행 : 부하가 많이 걸리는 부분을 병렬로 처리하는 방법

튜닝 영역

DB 설계 튜닝 : DB 설계 단계에서 성능을 고려하여 설계
DB 환경 : 성능을 고려하여 메모리나 블록 크기 등을 지정
SQL 문장 튜닝 : 성능을 고려하여 SQL 문장 작성

Optimizer

  • 사용자가 질의한 SQL 문에 대해 최적의 실행 방법을 결정하는 역할을 수행

  • 실행 계획을 결정

옵티마이저 구분

규칙 기반 옵티마이저 | Rule Based Optimizer

  • 규칙(우선순위)를 가지고 실행 계획을 생성
  • 인덱스 유무, 연산자, 객체 등을 참조하여 우선순위를 부여

비용 기반 옵티마이저 | Cost Based Optimizer

  • SQL 문을 처리하는데 필요한 비용이 가장 적은 실행 계획을 선택하는 방식
  • 소요시간이나 자원 사용량을 가지고 실행 계획 생성
  • 테이블, 인덱스, 컬럼 등의 다양한 객체 통계정보와 시스템 통계정보 활용

튜닝 절차

  1. 시스템 현황 분석
  2. 문제점 탐지 및 원인 분석
  3. 목표 설정
  4. 튜닝 시행
  5. 결과 분석

Row Migration / Row Chaining

Row Migration

  • 데이터가 수정되면서 데이터가 더 커져서 기존 block에 못들어가는 경우

  • 다른 블록에 데이터를 넣고, 기존 블록 위치에는 링크를 남김

Row Chaining

  • 컬럼이 너무 길어서 DB BLOCK 사이즈보다 길어진 경우 블록 두 개에 이어서 한 행이 저장
이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.