물리적인 설계 단계에서는 논리적인 설계의 데이터 구조를 보조 기억 장치상의 파일(물리적인 데이터 모델)로 사상합니다. 예상 빈도를 포함하여 데이터베이스 질의와 트랜잭션들을 분석합니다. 조인 연산들의 속도를 향상하고, 사장 빈번하게 사용되는 애트리뷰트들에 중점을 둡니다. 데이터에 대한 효율적인 접든을 제공하기 위하여 저장 구조와 접근 방법들을 다룹니다. 물리적인 데이터베이스 설계는 특정 DBMS의 특성을 고려하여 진행됩니다.
대부분의 경우에 논리적인 데이터베이스 설계는 물리적인 데이터베이스 설계로 사상됩니다. 그러나 데이터베이스의 사용 패턴에 관한 정보를 추가로 알게 됨에 따라 시스템 성능을 향상할 수 있습니다. 만일 현재 사용하고 있는 DBMS가 ANSI/SPARC모델을 잘 따른다면 이런 변화로 인해 논리적인 설계가 변경될 필요는 없습니다.
질의를 효율적으로 지원하기 위해서 인덱스 구조를 적절히 사용해야 합니다. 너무 많은 인덱스를 정의하면 데이터베이스를 갱신할 때 시간이 많이 걸리기 때문입니다. 너무 적은 인덱스를 정의하면 검색 연산이 효율적으로 지원되지 않습니다.
데이터베이스는 파일들의 집합으로 저장됩니다. 각 파일들은 일반적으로 동일한 유형의 레코드들의 모임으로 이루어지며 각 레코드들은 연관된 필드들의 모임입니다. 동일한 개수의 필드와 일정한 크기를 갖는 필드들로 이뤄진 고정 길이 레코드, 각 레코드마다 서로 다른 필드 개수를 갖거나 각 필드의 길이가 가변적인 가변 길이 레코드로 구분합니다. 파일들은 일반적으로 디스크와 같은 보조 기억 장치에 저장됩니다.
DBMS는 운영 체제와 상호 작용을 하면서 디스크로부터 데이터를 읽어옵니다. 운영체제의 구성요소들 중에서 파일 시스템이 DBMS와 상호 작용을 합니다. 파일 시스템은 디스크, 테이프, CD-ROM 등의 보조 기억 장치에서 저장 공간을 관리합니다. 파일 시스템이 제공하는 일반적인 서비스에는 프로그램이 요청한 공간의 할당, 데이터에 대한 접근 제공, 가용 데이터에 대한 개요 제공 등이 있습니다.
01. 보조 기억 장치
사용자가 원하는 데이터를 검색하기 위해서 DBMS는 디스크 상의 데이터베이스로부터 사용자가 원하는 데이터를 포함하고 있는 블록을 읽어서 주기억 장치로 가져와야 합니다. 데이터가 변경된 경우에는 블록들을 디스크에 다시 기록해야 합니다. 보조 기억 장치에서 주기억 장치로 이동하는 데이터의 단위는 블록입니다. 블록 크기는 운영 체제에 따라 다르며, 그 크기는 512바이트부터 수 킬로바이트까지 다양한데 전형적인 블록 크기는 4,096바이트입니다. 각 파일은 고정된 크기의 블록들로 나누어져 저장됩니다.
이때, 주기억 장치는 매우 빠르다는 장점이 있지만 용량이 적어 전체 데이터베이스(심지어 한 릴레이션 전체)를 저장할 수 없다는 단점이 있으며, 주기억 장치는 휘발성이어서 컴퓨터 시스템이 다운된 경우에는 내용이 모두 없어지므로 데이터베이스는 디스크에 저장하여 관리해야 합니다.
디스크에서 임의의 블록을 읽어오거나 기록하는 데 걸리는 시간은 탐구 시간(seek time), 회전 지연 시간(rotational delay), 전송 시간(transfer time)의 합입니다. 탐구 시간은 원하는 실린더 위에 디스크 헤드가 놓일 때까지 걸리는 시간입니다. 전형적인 디스크에서 약 5~10ms 정도 소요됩니다. 회전 지연 시간은 원하는 블록이 디스크 헤드 밑에 올 때까지 걸리는 시간입니다. 평균적으로 1/2 회전 시간만큼 걸립니다. 7200 rpm 회전 속도의 디스크에서 약 4.2ms 정도 소요됩니다. 전송 시간은 블록을 주기억 장치로 전송하는 데 걸리는 시간입니다. 전송 시간은 블록 크기와 버스 속도에 따라 달라집니다. 디스크 접근에 소요되는 시간을 감소시키기 위해서는 평균 회전 지연 시간을 줄이고, 블록 전송 횟수를 감소시켜야 합니다.
02. 버퍼 관리와 운영 체제
데이터베이스는 일반적으로 너무 커서 주기억 장치에 적재할 수 없으므로 보조 기억 장치에 저장합니다. 디스크 입출력은 컴퓨터 시스템에서 가장 속도가 느린 작업이므로 기억 장치에 저장합니다. 디스크 입출력은 컴퓨터 시스템에서 가장 속도가 느린 작업이므로 입출력 횟수를 줄이는 것이 DBMS의 성능을 향상시키는 데 매우 중요합니다. 가능하면 많은 블록들을 주기억 장치에 유지하거나 자주 참조되는 블록들을 주기억 장치에 유지하면 블록 전송 횟수를 줄일 수 있습니다. 버퍼는 디스크 블록들을 저장하는 데 사용되는 주기억 장치 공간이며 버퍼 관리자는 운영 체제의 구성요소로서 주기억 장치 내에서 버퍼 공간을 할당하고 관리하는 일을 맡습니다.
03. 디스크상에서 파일의 레코드 배치
릴레이션의 애트리뷰트는 고정 길이 또는 가변 길이의 필드로 표현됩니다. 연관된 필드들이 모여서 고정 길이 또는 가변 길이의 레코드가 됩니다. 레코드는 투플에 대응되며 한 릴레이션을 구성하는 레코드들의 모임이 파일이라고 부르는 블록들의 모임에 저장됩니다.
블록 크기는 일반적으로 레코드 크기보다 훨씬 크므로 많은 레코드들이 한 블록에 들어갑니다. 만일 레코드 길이가 블록 크기를 초과한다면 한 레코드를 두 개 이상의 블록에 걸쳐서 저장합니다. 이런 레코드를 신장된 레코드(spanned record)라고 부릅니다. BLOB(Binary Large Object)으로 선언된 애트리뷰트는 이미지(GIF, JPG), 동영상(MPEG, RM)등 대규모 크기의 데이터를 저장하는 데 사용됩니다. BLOB은 실린더 상에서 인접한 블록들을 할당하여 저장합니다.
오라클에서 BLOB의 최대 크기는 8TB~128TB이기 때문에 한 레코드 전체를 한 번에 검색한다는 가정이 더 이상 성립하지 않습니다. BLOB 데이터는 한 번에 여러 블록씩 나눠서 검색합니다.
채우기 인수(fill factor)는 각 블록에 레코드를 채우는 공간의 비율을 말합니다. 한 블록에 레코드를 가득 채우지 않고 빈 공간을 남겨두는 이유는 나중에 레코드가 삽입될 때 기존의 레코드들을 이동하는 하는 가능성을 줄이기 위한 것입니다.
[IT 공부하기/데이터베이스] - 물리적 데이터베이스 설계에 대하여(2)
물리적 데이터베이스 설계에 대하여(2)
04. 파일 조직 파일 조직은 파일 내의 데이터를 보조 기억 장치에 블록과 레코드들로 배치하는 것입니다. 전형적인 파일 조직의 유형으로는 히프 파일(heap file), 순차 파일(sequential file), 인덱스 된
soonirism.tistory.com
'💕IT 공부하기 > 데이터베이스' 카테고리의 다른 글
물리적 데이터베이스 설계에 대하여(3) (0) | 2022.09.12 |
---|---|
물리적 데이터베이스 설계에 대하여(2) (0) | 2022.09.09 |
논리적 설계:ER스키마를 관계 모델의 릴레이션들로 사상 (0) | 2022.09.07 |
ER 모델의 다른 표기법과 새발 표기법 (0) | 2022.09.06 |
ER모델에 대해 알고계신가요? (3) (0) | 2022.09.05 |