juuuding

[데이터베이스] CH 6 물리적 데이터베이스 설계 (1) 본문

컴퓨터공학/데이터베이스

[데이터베이스] CH 6 물리적 데이터베이스 설계 (1)

jiuuu 2023. 5. 16. 10:57

물리적 데이터 베이스 설계

 - 논리적인 설계의 데이터 구조를 보조 기억 장치 상의 화일(물리적 데이터 모델)로 사상함

 - 예상 빈도를 포함하여 데이터베이스 질의와 트랜잭션들을 분석함

 - 데이터에 대한 효율적인 접근을 제공하기 위하여 저장 구조와 접근 방법들을 다룸

 - 특정 DBMS의 특성을 고려하여 진행됨

 - 질의를 효율적으로 지원하기 위해서 인덱스 구조를 적절히 사용함

 

 

 보조 기억 장치

 

1. 보조 기억 장치

 - 원하는 데이터를 검색하기 위해 DBMS는 디스크 상의 데이터베이스로부터 원하는 데이터를 포함하는 블록을 읽어서 주기억 장치로 가져옴

 - 데이터가 변경된 경우 블록들을 다시 디스크에 기록함

 - 블록의 크기는 512B ~ , 전형적인 블록의 크기는 4096B = 4KB

 - 각 화일은 고정된 크기의 블록들로 나누어져서 저장됨

 - 디스크는 데이터베이스를 장기간 보관하는 주된 보조 기억 장치

 

 

2. 자기 디스크

 - 디스크는 자기 물질로 만들어진 여러 개의 판들로 구성

 - 각 면마다 디스크 헤드가 있고, 각 판은 트랙과 섹터로 구별

 - 정보는 트랙을 따라 저장됨

 - 여러 개의 디스크 면 중에서 같은 지름을 갖는 트랙들을 실린더라고 부름

 - 블록은 하나 이상의 섹터로 구성

 - 디스크에서 블록을 읽거나 기록하는데 걸리는 시간 = seek time + rotational delay + transfer time

 

 

 

 버퍼 관리와 운영 체제

 

1. 버퍼 관리와 운영 체제

 - 디스크 입출력은 굉장히 속도가 느린 작업, 따라서 입출력 횟수를 줄이는 것이 DBMS 성능을 향상하는데 중요

 - 가능한 많은 블록들을 주기억 장치에 유지하거나, 자주 참조되는 블록들을 주기억 장치에 유지하면 블록 전송 횟수 줄일 수 있음

 - 버퍼는 디스크 블록들을 저장하는데 사용되는 주기억 장치 공간 

 - 버퍼 관리자는 운영 체제의 구성 요소로서 주기억 장치 내에서 버퍼 공간을 할당하고 관리하는 일을 맡음

 - 버퍼 관리를 위해 흔히 사용되는 알고리즘은 LRU(가장 최근에 사용되지 않은 데이터 삭제) but 항상 우수한 성능 X

 

 

 

 디스크상에서 화일의 레코드 배치

 

1. 디스크 상에서 화일의 레코드 배치

 - 릴레이션의 애트리뷰트는 고정 길이 또는 가변 길이 필드로 표현됨

 - 연관된 필드끼리 모여서 고정 길이 또는 가변 길이 레코드가 됨

 - 한 릴레이션을 구성하는 레코드들의 모임이 화일이라고 부르는 블록들의 모임에 저장됨

  * 화일 = 블록들의 모임

화일의 구조

 

 - 한 화일에 속하는 블록들이 반드시 인접해 있을 필요는 없음

 - 인접한 블록들을 읽는 경우에는 seek time과 rotational delay가 들지 않기 때문에 입출력 속도가 빠르므로 블록들이 인접하도록 한 화일의 블록들을 재조직 할 수 있음

 

 

2. BLOB (Binary Large Object)

 - 이미지 (GIF, JPG), 동영상 (MPEG, RM) 등 대규모 크기의 데이터를 저장하는데 사용됨

 - BLOB의 최대 크기는 오라클에서 8TB ~ 128TB

 

 

3. 채우기 인수

 - 각 블록에 레코드를 채우는 공간의 비율

 - 나중에 레코드가 삽입될 때 기존의 레코드들을 이동하는 가능성을 줄이기 위해서

 

 

4. 고정 길이 레코드

 - 레코드 i를 접근하기 위해서는 n*(i-1) +1의 위치에서 레코드를 읽음 (n:레코드의 크기, i: 레코드의 인덱스)

  * 고정 길이 레코드이기 때문에 계산 가능

 

 

5. 화일 내의 클러스터링 (intra-file clustering)

 - 한 화일 내에서 함께 검색될 가능성이 높은 레코드들을 디스크 상에서 물리적으록 가까운 곳에 모아두는 것

 

 

6. 화일 간의 클러스터링 (inter-file clustering)

 - 논리적으로 연관되어 함께 검색될 가능성이 높은 두 개 이상의 화일에 속한 레코드들을 디스크 상에서 물리적으로 가까운 곳에 저장하는 것

 

 

 

 화일 조직

 

* 화일 조직의 유형 : 히프 화일, 순차 화일, 인덱스된 순차 화일

 

1. 히프 화일

 - 가장 단순한 화일 조직

 - 레코드들이 삽입된 순서대로 화일에 저장됨

 - 삽입: 새로 삽입되는 레코드는 화일의 가장 끝에 첨부됨

 - 검색: 원하는 레코드를 찾기 위해서는 모든 레코드들을 순차적으로 접근해야 함

 - 삭제: 원하는 레코드를 찾은 후에 그 레코드를 삭제하고, 삭제된 레코드가 차지하던 공간 재사용 X

 - 좋은 성능을 유지하기 위해 히프 화일 주기적 재조직 해야함

 

1-1. 히프 화일의 성능

 - 히프 화일은 질의에서 모든 레코드들을 참조하고, 레코드들을 접근하는 순서는 중요하지 않을 때 효율적

  * 검색 시 모든 레코드를 순차적으로 접근하기 때문

 - 특정 레코드를 검색하는 경우에는 히프 화일이 비효율적

  * 히프 화일에 b개의 블록이 있으면, 원하는 블록을 찾기 위해 평균 b/2개의 블록을 읽어야 함

 - 몇 개의 레코드들을 검색하는 경우에도 비효율적

  * 조건에 맞는 레코드를 이미 한 개 이상 검색했더라도 화일의 마지막 블록까지 읽어서 원하는 레코드가 존재하는가를 확인해야하기 때문에 b개의 블록을 모두 읽어야 함

 - 급여의 범위를 만족하는 레코드들을 모두 검색하는 아래의 질의도 EMPLOYEE 릴레이션의 모든 레코드들을 접근해야함

SELECT EMPNAME, TITLE
FROM EMPLOYEE
WHERE SALARY >= 3000000 AND SALARY <= 4000000;

* 삽입: 효율적, 삭제/ 탐색/ 순차 탐색/ 특정 레코드 검색: 시간 많이 소요

 

 

2. 순차 화일

 - 레코드들이 하나 이상의 필드 값에 따라 순서대로 저장된 화일

 - 레코드들이 일반적으로 레코드의 탐색 키 값의 순서에 따라 저장

 - 탐색 키는 순차 화일을 정렬하는데 사용되는 필드를 의미

 - 삽입 연산은 연산하려는 레코드의 순서를 고려해야 하기 때문에 시간이 많이 걸릴 수 있음

 - 삭제 연산은 삭제된 레코드가 사용하던 공간을 빈 공간으로 남기기 때문에 히프 화일의 경우와 마찬가지로 주기적으로 순차 화일을 재조직해야 함 

 - 기본 인덱스가 순차 화일에 정의되지 않는 한 순차 화일은 데이터베이스 응용을 위해 거의 사용되지 않음

 

2-1. 순차 화일의 성능

- EMPLOYEE 화일이 EMPNO의 순서대로 저장되어 있을 때 첫 번째 SELECT문은 이진탐색을 이용할 수 있고, 두 번째 SELECT문의 WHERE절에 사용된 SALARY는 저장 순서와 무관하기 때문에 화일 전체를 탐색해야 함

 * WHERE절에 탐색키의 조건이 있으면 이진 탐색 가능

 

SELECT TITLE
FROM EMPLOYEE
WHERE EMPNO = 1365;

SELECT EMPNAME, TITLE
FROM EMPLOYEE
WHERE SALARY >= 3000000 AND SALARY <= 4000000;

* 탐색 키를 기반으로 탐색: 효율, 삽입/삭제/탐색키가 아닌 필드를 사용하여 탐색: 시간 많이 소요