juuuding
[데이터베이스] CH 6 물리적 데이터베이스 설계 (1) 본문
■ 물리적 데이터 베이스 설계
- 논리적인 설계의 데이터 구조를 보조 기억 장치 상의 화일(물리적 데이터 모델)로 사상함
- 예상 빈도를 포함하여 데이터베이스 질의와 트랜잭션들을 분석함
- 데이터에 대한 효율적인 접근을 제공하기 위하여 저장 구조와 접근 방법들을 다룸
- 특정 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;
* 탐색 키를 기반으로 탐색: 효율, 삽입/삭제/탐색키가 아닌 필드를 사용하여 탐색: 시간 많이 소요
'컴퓨터공학 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] CH 7 릴레이션 정규화 (2) (1) | 2023.05.17 |
---|---|
[데이터베이스] CH 7 릴레이션 정규화 (1) (1) | 2023.05.17 |
[데이터베이스] CH 6 물리적 데이터베이스 설계 (2) (0) | 2023.05.16 |
[데이터베이스] CH 1 데이터베이스 시스템 (2) (0) | 2023.04.07 |
[데이터베이스] CH 1 데이터베이스 시스템 (1) (0) | 2023.04.06 |