Physical Database Design(1)

꾸Jun·2023년 11월 8일
0

📚 Database

목록 보기
14/20

Database Design Process

Conceptual database design -> Logical database design -> Physical database design



사진 출처

Physical Design Purpose, Goal

  • Purpose: logical schema를 데이터를 저장하고 꺼내기 위한 technical spec으로 바꾸는 것
  • Goal: 충분한 성능과 확실한 데이터 무결성, 보안성, 문제가 생겼을 때의 복구력을 제공하는 데이터 저장공간을 디자인
    • 구현은 physical database design에 포함되지 않음(아직까지 디자인)
    • DBA, 프로그래머 등 만드는데 관계있는 사람들이 들어가도 구현할 때 사용되어질 technical spec을 만듦


Physical Design Process

  • Input
    • normalization을 거친 relation
    • 예측된 크기
    • 각각의 attribute column의 정의
    • 쿼리가 실행되는데 얼마나 오래 delay 되느냐
    • 얼마나 보안이 필요한 데이터인가
    • 유실, 문제가 생겼을 때의 백업/회복력에 대한 니즈
    • 무결성
    • 사용되어질 DBMS 기술
  • Decisions
    • Attribute의 데이터 타입
    • 물리적인 record에 대한 설명
      • 언제나 logical design과 일치하지 않음
    • file organization
    • index 및 데이터베이스 구조
    • 효율적인 쿼리


Volume/Access Frequency Estimation

  • 각각의 테이블에 얼마나 많은 데이터가 들어가느냐
    • 현재 비즈니스 사이즈가 얼마인가를 고려
    • 향후 몇년간에 비즈니스가 얼마나 성장하느냐를 고려
  • 얼마나 자주 해당 테이블이 검색 되느냐
    • insert, delete, update, query
    • 데이터베이스에 수정이 일어나거나, 리포트를 만드는가, 쿼리를 얼마나 실행할 것인가를 고려(동시 접속자수, 고객이 물건을 사는 이벤트, 물건을 만드는 이벤트,,,)
  • 데이터 크기와 사용빈도는 매우 중요한 input이 됨
    • 특히 엄청 큰 스케일의 데이터베이스 시스템을 구현할 때 중요한 input이 됨(facebook, amazon, coupang,,,)
    • 시스템 개발 과정의 분석 과정에서 생성
  • AS-IS: 현재 사용하고 있는 시스템을 분석
  • To-BE: 앞으로 만들 것에 대해 분석
  • 정확한 숫자는 필수적이지 않음
    • 대략적인 예측치는 필요
    • 어디에 집중하는지 알기 위한 숫자들의 상대적인 크기
  • Volume estimation은 박스안에 숫자로, access frequency estimation은 점선과 숫자로 표시
  • 가령, attribute가 엄청 많거나, 엄청 길면 그것을 index를 활용하거나 적정하게 바꾸는 과정이 physical design에서 실행
  • 한 개를 부를 때 항상 다른 하나가 불러진다면 두 개를 합치는 denormalization도 physical design에서 실행


Designing Fields

  • Field: 프로그래밍 언어와 DBMS에 의해 인식되어지는 최소 단위의 데이터
    • composite attribute는 attribute 하나하나가 component
  • Field Design
    • Choosing data type
      • 모든 가능한 값들을 나타낼 수 있는지
      • 데이터 무결성 향상시키는 방법으로
      • 모든 데이터 조작을 도와주는 방법으로
      • 공간 낭비를 최소화
    • Coding, compression, encryption
    • Controlling data integrity
      • Default value: 정확한 값이 없다면 추정한 값
      • Range control: 허용가능한 값의 제한을 둠(constraints 또는 validation rule)
      • Null value control: 비어있는 필드를 허용하거나 금지
      • Referential integrity: foreign key와 primary key를 대응
    • Hanling the missing data
      • missing value의 추정한 값을 대신 채워넣음
      • missing value에 대한 report list를 만듦
      • 프로그램에서 missing value가 중요하지 않다면 무시


profile
꾸준🐢

0개의 댓글