본문 바로가기
정보처리/소프트웨어개발

데이터 입출력 구현 물리 데이터 저장소 설계

by 피갓자 2025. 4. 16.

데이터 입출력 구현 물리 데이터 저장소 설계
데이터 입출력 구현 물리 데이터 저장소 설계

물리 데이터 모델 설계

물리 데이터 모델링 개념

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

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

1. 개체를 테이블로 변환

  • 일반적으로 테이블과 개체 명칭을 동일하게 하는 것을 권고
  • 개체는 한글명을 사용
  • 테이블은 소스 코드의 가독성을 위해 영문명을 사용

2. 속성을 컬럼으로 변환

  • 개발자와 사용자 간 의사소통을 위해 표준화된 약어를 사용하도록 권고
  • SQL 예약어 사용은 피해야 함
  • SQL 문장 가독성을 높이기 위해 컬럼 명칭은 되도록 짧은 것을 권고
  • 컬럼명으로 복합 단어를 사용할 때 미리 정의된 표준에 의해 명명해야 함

3. UID를 기본키로 변환

  • 개체의 UID에 해당하는 모든 속성에 대해 기본키로 선언
  • Not Null, Unique 등의 제약 조건을 추가로 정의
  • 관계에 의한 외래키가 기본키에 포함될 수 있음

4. 관계를 외래키로 변환

  • 외래키명은 기본키 이름을 그대로 사용하나 다른 의미를 가질 때 변경 가능
  • 순환 관계에서 자신의 기본키는 외래키로 정의

5. 컬럼 유형과 길이 정의

  • CHAR : 최대 2,000바이트의 고정길이 문자열 저장 가능
  • VARCHAR2 : 최대 4,000바이트의 가변 길이 문자열 저장 가능
  • NUMBER : 38 자릿수의 숫자 저장 가능
  • DATE : 날짜 값을 저장
  • BLOB, CLOB : 바이너리(Binary), 텍스트 데이터 최대 4GB까지 저장

6. 반정규화 수행

  • 중복 테이블 추가 : 집계 테이블 추가, 특정 부분만 포함하는 테이블 추가
  • 테이블 조합 : 1:1 관계 테이블 조합, 1:M 관계 테이블 조합, 슈퍼 타입/서브 타입 테이블 조합
  • 테이블 분할 : 수직 분할/수평 분할
  • 테이블 제거 : 테이블 재정의, 접근하지 않는 테이블 제거
  • 컬럼 중복화 : 조인 성능 향상을 위한 중복 허용

물리 데이터 저장소 구성

데이터베이스 무결성

데이터베이스 무결성(Database Integrity) 개념

  • 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 성질
  • 데이터의 무결성을 유지하는 것은 데이터베이스 관리 시스템(DBMS)의 중요한 기능이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지
  • 무결성은 권한이 있는 사용자로부터 데이터베이스를 보호

데이터베이스 무결성 종류

체 무결성(Entity Integrity)

  • 한 엔티티에서 같은 기본 키(PK)를 가질 수 없거나, 기본 키(PK)의 속성이 NULL을 허용할 수 없는 제약조건
  • 기본 키(Primary Key), 유니크 인덱스(Unique Index)

조 무결성(Referential Integrity)

  • 외래 키가 참조하는 다른 개체의 기본 키에 해당하는 값이 기본 키값이나 NULL이어야 하는 제약 조건
  • 외래 키(Foreign Key)

성 무결성(Attribute Integrity)

  • 속성의 값은 기본값, NULL 여부, 도메인(데이터 타입, 길이)이 지정된 규칙을 준수해야 하는 제약 조건
  • 체크(CHECK), NULL/NOT NULL, 기본값(DEFAULT)

용자 정의 무결성(User-Defined Integrity)

  • 사용자의 의미적 요구사항을 준수해야 하는 제약 조건
  • 트리거(Trigger), 사용자 정의 데이터 타입(User Defined Data Type)

무결성(Key Integrity)

  • 한 릴레이션에 같은 키값을 가진 튜플들을 허용할 수 없는 제약 조건
  • 유니크(Unique)

키(Key) 개념

데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성

키 특성

  • 유일성(Unique) : 식별자에 의해 엔티티 내에 모든 튜플을 유일하게 구분하는 특성
  • 최소성(Minimality) : 최소한의 속성으로 식별자를 구성하는 특성

키 종류

  • 기본 키(PK, Primary Key) : 테이블의 각 튜플을 고유하게 식별하는 컬럼
  • 대체 키(AK, Alternate Key) : 후보 키 중에서 기본 킬로 선택되지 않은 키
  • 후보 키(CK, Candidate Key) : 테이블에거 각 튜플을 구별하는 데 기준이 되는 컬럼, 기본 키와 대체 키를 합친 키
  • 슈퍼 키(SK, Super Key) : 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못하는 키
  • 외래 키(FK, Foreign Key) : 테이블 간의 참조 데이터 무결성을 위한 제약 조건, 한 릴레이션의 컬럼이 다른 릴레이션의 기본 키로 이용되는 키

인덱스(Index) 설계

인덱스 개념

  • 검색 연산의 최적화를 위해 데이터베이스 내 열에 대한 정보를 구성한 데이터구조
  • 인덱스를 통해 전체 데이터의 검색 없이 필요한 정보에 대해 신속한 조회가 가능

인덱스 적용 기준

  • 인덱스 분포도가 10~15% 이내인 경우
  • 분포도가 범위 이상이더라도 부분처리를 목적으로 하는 경우
  • 조회 및 출력 조건으로 사용되는 컬럼인 경우
  • 인덱스 자동 생성 기본키와 Unique 키의 제약 조건을 사용할 경우

인덱스 컬럼 선정

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

파티셔닝

파티셔닝(Partitioning) 개념

  • 테이블 또는 인덱스 데이터를 파티션(Partition) 단위로 나누어 저장하는 기법

파티션의 유형

인지 파티셔닝(Range Partitioning, 범위 파티셔닝)

  • 연속적인 숫자나 날짜를 기준으로 하는 파티셔닝 기법
  • 손쉬운 관리 기법을 제공하여 관리 시간의 단축이 가능

시 파티셔닝(Hash Partitioning)

  • 파티션 키의 해시 함수 값에 의한 파티셔닝 기법
  • 균등한 데이터 분할이 가능하고 질의 성능 향상 가능

스트 파티셔닝(List Partitioning, 목록 파티셔닝)

  • 특정 파티션에 저장될 데이터에 대한 명시적 제어가 가능한 파티셔닝 기법
  • 분포도가 비슷하고 데이터가 많은 SQL에서 컬럼의 조건이 많이 들어오는 경우 유용

포지트 파티셔닝(Composite Partitioning, 조합 파티셔닝)

  • 레인지 파티셔닝, 해시 파티셔닝, 리스트 파티셔닝 중 2개 이상의 파티셔닝을 결합하는 파티셔닝 기법
  • 큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산할 수 있음

운드로빈(Round-Robin)

  • 라운드로빈으로 회전하면서 새로운 행을 파티션에 할당하는 기법
  • 파티션에 행의 고른 분포를 원할 때 사용

파티션의 장점

  • 능 향상 : 엑세스 범위를 줄여 성능 향상
  • 용성 향상 : 전체 데이터의 훼손 가능성 감소 및 데이터 가용성 향상
  • 업 가능 : 분할 영역을 독립적으로 백업하고 복구 가능
  • 합 감소 : 디스크 스트라이핑(Disk Striping)으로 입출력 성능 향상, 디스크 컨트롤러에 대한 경합 감소