Computer Science/Database, SQL

[HUFS/데이터베이스] #14 데이터베이스 설계

성중 2021. 11. 10. 19:43

데이터베이스 생명 주기 및 설계 단계

설계 단계는 개념적/논리적/물리적 설계로 나뉘며

  • 개념적 설계 단계에서는 E-R 다이어그램 스키마 설계(정적) 및 트랜잭션 모델링(동적),
  • 논리적 설계 단계에서는 목표 DBMS(관계형 DB)의 스키마 설계 및 트랜잭션 인터페이스 설계,
  • 물리적 설계 단계에서는 목표 DBMS에 맞는 물리적 설계 및 트랜잭션 세부 설계가 진행된다

 

* 목표 DBMS는 관계형 DB 중에서도 Oracle, DB2, mySQL 등 다양하다!

 

데이터베이스를 설계할 때 고려사항은 다음과 같다

  • 무결성(integrity): 데이터의 모든 제약조건을 만족시켜야 함
  • 일관성(consistency): 데이터간 응답(트랜잭션의 시작과 끝)이 일치해야 함
  • 회복(recovery): 컴퓨터 셧다운 및 응용프로그램 장애에 대한 복구

 

이 외에도 불법 접근을 막는 보안, 응답 시간, 저장 공간, 처리도에 따른 효율성,  프로그램의 응용과 데이터의 확장이 가능한 데이터베이스 성장 등이 있다

 

요구조건 분석

요구조건 분석 단계의 순서는 다음과 같다

설문지, 인터뷰, 회의 등을 통한 요구조건의 수집 및 문서화

기관의 경영 목표와 제약 조건의 파악

공식적인 요구조건 명세의 작성 및 검토 (작업-데이터 관계, 제약조건, 유일성, 함수 종속성 등)

 

작업-데이터 관계 예시

개념적 설계

개념적 설계 단계는 E-R 모델을 만드는 것을 최종 목표이며 2가지 방법이 있다

  1. 뷰 통합 방법(하향식 방법): 각 부문별 뷰를 식별 및 모델링 후 집단화, 일반화해 통합한다
  2. 애트리뷰트 합성 방법(상향식 방법): 작업-데이터에서 개체와 키, 관계성을 식별해 합성한다

집단화와 일반화

+ 트랜잭션 모델링을 통한 트랜잭션 식별 및 명세(처리 중심 동적인 설계)

 

논리적 설계

논리적 설계 단계는 개념적 스키마로부터 RDBMS가 처리할 수 있는 논리적 스키마를 생성한다

  1. E-R 모델을 목표 DBMS의 DDL(논리적 데이터 모델)로 변환한다
  2. 입출력과 기능적 형태를 정의해 트랜잭션 인터페이스를 설계한다
  3. 스키마의 평가 및 정제를 수행한다 (정량적 정보를 통한 성능 평가)

* 정량적 정보는 데이터 양, 처리 빈도수, 처리 작업량 / 평가 기준은 논리적 레코드 접근, 데이터 전송량, DB 크기

 

독립된 릴레이션 사이 공통 애트리뷰트로 관계(relationship) 표현

물리적 설계

물리적 설계 단계에서는 논리적 스키마로부터 효율적인 내부 스키마를 설계한다

~ 기본적 데이터 단위는 저장 레코드이며 레코드의 양식, 집중(clustering), 접근 경로를 설계

여러 인덱싱 기법, 디스크 상의 레코드 집중화, 포인터, 해싱(hashing) 등의 옵션이 있으며

응답 시간, 저장 공간의 효율화, 트랜잭션 처리도 등을 고려해야 한다!

 

DB 설계 과정 요약

데이터베이스의 저장과 접근

직접 접근 저장 장치: 디스크, SSD 등 특정 위치의 데이터를 빠르게 읽을 수 있는 장치

비휘발성(전원이 꺼져도 유지)이며 온라인 서비스로 빠르게 접근할 수 있다

 

임의 접근 시간 = seek time + rotational delay + block transfer time

* 디스크 배치, 저장 방법으로 접근 횟수를 최소화하는 것이 성능 향상의 핵심이다!

 

데이터베이스의 접근 과정 (릴레이션 별로 file로 저장된다/레코드의 요구와 반환)

데이터베이스의 각 테이블이 파일(file)로 저장되며 이는 페이지 세트로 구성된다

 

호출 관계
데이터베이스 초기 적재 후 디스크 배치도
삽입/삭제 연산 뒤의 디스크 배치도 (I: S6, C6 / D: S2, S4)
페이지 헤드에 ‘다음 페이지’ 포인터를 포함시킨 경우 (연결 리스트: 간단하지만 느림)

하나의 페이지에 여러 개의 레코드를 저장할 수 있고 레코드가 페이지보다 큰 경우 LOB로 저장

레코드 연산으로 한 페이지에서 빈 공간이 생기면 압축, 삽입될 때는 내부에서 바로 정렬

 

현재 페이지 번호 / 다음 페이지 번호 / 레코드 개수 기준으로

슬롯 페이지에서 가변 길이 레코드를 저장할 수 있다

 

RID(레코드의 물리적 아이디) = 페이지 번호 + 오프셋(슬롯 번호)