자격증/정보처리기사 실기

[데이터입출력구현] 2. 물리 데이터 저장소 설계

염두리안 2023. 9. 9. 13:28
728x90
반응형


키워드
물리 데이터 모델 설게 / 물리 데이터 모델링 변환 절차 / 물리 데이터 저장소 구성 / 데이터 무결성 / 개체, 참조, 속성, 사용자 정의, 키 무결성 / 키 종류 / 인덱스 설계 / 파티셔닝

물리 데이터 모델 설계 (★★★)

  • 개념 - 논리모델을 적용하고자 하는 기술에 맞도록 상세화해가는 과정
  • 물리 데이터 모델링 변환 절차
    1. 개체를 테이블로 변환) 테이블과 개체 명 동일시 하는 것을 권고 / 개체는 한글 사용 / 테이블은 소스 가독성 위해 영문명 사용
    2. 속성을 컬럼으로 변환) 표준화된 약어 사용 권고 / SQL 예약어 사용 피하기 / 컬럼 명칭은 되도록 짧게
    3. UID를 기본키로 변환) 개체의 UID에 해당하는 모든 속성에 대해 기본키로 선언 / Not Null, Unique 등의 제약조건을 추가로 정의 / 관계에 의한 외래키가 기본키에 포함될 수 있음
    4. 관계를 외래키로 변환) 외래키명은 기본키 이름을 그대로 사용하나 다른 의미를 가질 경우 변경 가능 / 순환관계에서 자신의 기본키는 외래키로 지정
    5. 컬럼 유형과 길이 정의) 적절한 유형 정의, 데이터의 최대 길이 파악해 길이 설정 / CHAR(2000바이트 고정 문자열), VARCHAR2(4000바이트 가변 길이 문자열), NUMBER(38 자릿수 숫자 저장 가능), DATE(날짜값), BLOB&CLOB(바이너리, 텍스트 데이터 최대 4GB 저장)
    6. 반 정규화 수행) 시스템 성능 향상, 개발, 운영 단순화 위해 데이터 모델 통합하는 반정규화 수행 / 중복 테이블 추가, 테이블 조합, 테이블 분할, 테이블 제거, 컬럼 중복화

물리 데이터 저장소 구성 (★☆☆)

  • 데이터 무결성 - DB에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 성질
    • 개체 무결성(Entity Integrity) : 한 엔티티에서 같은 기본 키를 가질 수 없거나, 기본키 속성이 NULL을 허용할 수 없는 제약 조건 / 기본키, 유니크 인덱스
    • 참조 무결성(Referential Integrity) : 외래키가 참조하는 다른 개체의 기본 키에 해당하는 값이 기본키 값이나 NULL 이어야 하는 제약 조건 / 외래키
    • 속성 무결성(Attribute Integrity) : 속성의 값은 기본값, NULL 여부, 도메인이 지정된 규칙을 준수해야 하는 제약 조건 / 체크, NULL, NOT NULL, 기본값(DEFUALT)
    • 사용자 정의 무결성(User-Defined Integrity) : 사용자의 의미적 요구사항을 준수해야 하는 제약조건 / 트리거, 사용자 정의 데이터 타입
    • 키 무결성(Key Integrity) : 한 릴레이션에 같은 키 값을 가진 튜플들을 허용할 수 없는 제약 조건 / 유니크
  • 키 - DB에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성
    • 속성 - 유일성(식별자에 의해 엔티티 타입 내에 모든 엔티티들이 유일하게 구분) / 유일성(최소한의 속성으로 식별자 구성)
    • 종류
      • 기본키(Primary Key) : 테이블의 각 튜플들을 고유하게 식별하는 컬럼
      • 대체키(Altermate Key) : 후보키 중 기본키로 선택되지 않은 키
      • 후보키(Candidate Key) : 테이블에서 각 튜플을 구별하는 데 기준이 되는 컬럼 / 기본키와 대체키를 합친 키
      • 슈퍼키(Super Key) : 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성 만족 X
      • 외래키(Foreign Key) : 테이블 간의 참조 데이터 무결성을 위한 제약 조건 / 한 릴레이션에서의 컬럼이 다른 릴레이션의 기본 키로 이용되는 키
  • 인덱스 설계 - 검색 연산 최적화 위해 DB 내 열에 대한 정보를 구성한 데이터 구조
    • 적용 기준) 인덱스 분포도가 10~15% 이내인 경우 아래 수식 참고 / 분포도가 범위 이상이더라도 부분처리를 목적으로 하는 경우, 조회&출력 조건으로 사용되는 컬림인 경우, 인덱스 자동 생성 기본키와 유니크 키의 제약조건을  사용할 경우 적용
      • 분포도 = (1 / (컬럼 값의 종류)) * 100
      • 분포도 = (컬럼 값의 평균 ROW 수) / (테이블의 총 ROW 수) * 100
    • 선정) 분포도가 좋은 컬럼은 단독 생성 / 자주 조합되어 사용되는 결합 인덱스로 생성 / 결합 인덱스는 구성되는 컬럼 순서 선정에 유의 / 가능한 한 수정이 빈번하지 않은 컬럼 선정
  • 파티셔닝 - 테이블, 인덱스 데이터를 파티션 단위로 나눠 저장하는 기법 / 성능 향상, 가용성 향상, 백업 가능, 경합 감소와 같은 장점 있음
    • 레인지 파티셔닝) 연속적인 숫자, 날짜 기준으로 파티셔닝 / 손쉬운 관리 기법 제공해 관리 시간의 단축 가능
    • 해시 파티셔닝) 파티션 키의 해시 함수 값에 의한 파티셔닝 / 균등한 데이터 분할 가능, 질 성능 향상 가능
    • 리스트 파티셔닝) 특정 파티션에 저장될 데이터에 대한 명시적 제어가 가능한 파티셔닝 / 분포도가 비슷하고 데이터가 많은 SQL에서 컬럼 조건이 많이 들어오는 경우 유용 / ex. 한국&중국&일본 → 아시아, 노르웨이, 스웨덴 → 북유럽
    • 컴포지트 파티셔닝) 레인지, 해시, 리스트 파티셔닝 중 2개 이상의 파티셔닝을 결합하는 기법  / 큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산
    • 라운드로빈) 회전하면서 새로운 행을 파티션에 할당하는 기법 / 파티션 행의 고른 분포 원할 때 사용
728x90
반응형