득이공간
[데이터베이스] 6장. 물리적 데이터베이스 설계 본문
해당 게시물은 김태연 교수님의 '데이터베이스' 강의를 수강하며
학습한 내용을 개인적으로 정리한 글입니다.
📌 목차 - 6장. 물리적 데이터베이스 설계
6-1. 보조 기억 장치
6-2. 버퍼 관리와 운영 체제
6-3. 디스크 상에서 화일의 레코드 배치
6-4. 화일 조직
6-5. 단일 단계 인덱스
6-6. 다단계 인덱스
📌 6-1. 보조 기억 장치
* 물리적 데이터베이스 설계
- 논리적인 설계의 데이터 구조 -> 보조 기억 장치상의 화일(물리적인 데이터 모델)로 사상
* 보조기억장치
- 주기억 장치 <-> 디스크 - 테이프
- 자기 디스크(hard disk) : 각 판은 트랙, 섹터로 구분됨. 탐구 시간(seek time), 회전 지연 시간(rotational delay), 전송 시간(transfer time)
📌 6-2. 버퍼 관리와 운영 체제
* 버퍼 관리와 운영 체제
- 버퍼 : 디스크 블록들을 저장하는데 사용되는 주기억 장치 공간
- LRU 알고리즘
📌 6-3. 디스크 상에서 화일의 레코드 배치
* 디스크 상에서 화일의 레코드 배치
- 릴레이션의 애트리뷰트는 고정 길이 또는 가변 길이의 필드로 표현된다.
- BLOB(Binary Large Object) : 이미지, 동영상 등 대규모 크기의 데이터를 저장
- 채우기 인수 : 각 블록에 레코드를 채우는 공간의 비율
- 고정 길이 레코드 : 레코드 i를 접근하기 위해서는 n*(i-1)+1의 위치에서 레코드를 읽는다.
- 지연 관리 방법 (이동 필요 없음) : 삭제된 공간을 관리하기 위해 free list를 관리
- 화일 내의 클러스터링(intra-file clustering) : 한 화일 내에서 함께 검색될 가능성이 높은 레코드들을 디스크 상에서 물리적으로 가까운 곳에 모아두는 것
- 화일 간의 클러스터링(inter-file clustering) : 논리적으로 연관되어 함께 검색될 가능성이 높은 두 개 이상의 화일에 속한 레코드들을 디스크 상에서 물리적으로 가까운 곳에 저장하는 것
📌 6-4. 화일 조직
* 히프 화일(heap file-비순서 화일)
- 레코드들이 삽입된 순서대로 화일에 저장된다.
- 질의에서 모든 레코드들을 참조하고, 레코드들을 접근하는 순서는 중요하지 않을 때 사용한다.
- 특정 레코드를 검색하는 경우에는 비효율적이다.
- 삽입 : 효율적
- 삭제,탐색,순서대로검색,특정레코드검색 : 비효율적
* 순차 화일(sequential file)
- 레코드들이 하나 이상의 필드 값에 따라 순서대로 저장된다.
- 탐색 키(search key) 값의 순서에 따라 저장된다.
- 탐색 키를 기반으로 검색 : 효율적
- 삽입, 삭제, 탐색 키가 아닌 필드를 사용해서 탐색 : 비효율적
* 인덱스된 순차 화일(indexed sequential file)
📌 6-5. 단일 단계 인덱스
* 단일 단계 인덱스
- 인덱스를 통해서 임의의 레코드를 접근할 수 있다.
- 단일 단계 인덱스의 각 엔트리 = <탐색 키, 레코드에 대한 포인터>
- 인덱스는 데이터 화일과는 별도의 화일에 저장된다.
- 탐색 키는 어떤 애트리뷰트로든 쓸 수 있다.
- 기본 인덱스(primary index) : 탐색 키가 데이터 화일의 기본 키인 인덱스
- 클러스터링 인덱스(clustering index) : 탐색 키 값에 따라 정렬된 데이터 화일에 대해서 정의된다.
- 보조(밀집) 인덱스(secondary index) : 탐색 키 값에 따라 정렬되지 않은 데이터 화일에 대해서 정의된다.
- 희소 인덱스 vs 밀집 인덱스 : 희소 인덱스는 각 데이터 블록마다 한 개의 엔트리를 갖고, 밀집 인덱스는 각 레코드마다 한 개의 엔트리를 가진다.
- 클러스터링 인덱스 vs 보조 인덱스 : 클러스터링은 범위 질의에 좋고 보조 인덱스는 일부 질의에 대해서는 화일을 접근할 필요 없이 처리할 수 있다.
📌 6-6. 다단계 인덱스
* 다단계 인덱스
- 인덱스 자체가 클 경우에는 인덱스를 탐색하는 시간도 오래 걸릴 수 있다.
- 마스터 인덱스(master index) : 가장 상위 단계 인덱스, 한 개의 블록
- B+-트리를 사용한다.
- SQL 인덱스 정의문 : CREATE TABLE문에서 PRIMARY KEY절로 명시한 애트리뷰트에 대해서는 DBMS가 자동적으로 기본 인덱스를 생성한다. 다른 애트리뷰트에 추가로 인덱스를 정의하기 위해서는 DBMS마다 다소 구문이 다른 CREATE INDEX문을 사용해야 한다.
* 직접 화일(hash file)
'CS > DB' 카테고리의 다른 글
[데이터베이스] 8장. 뷰와 시스템 카탈로그 (1) | 2024.02.27 |
---|---|
[데이터베이스] 7장. 릴레이션 정규화 (1) | 2024.02.27 |
[데이터베이스] 5장. 데이터베이스 설계와 ER 모델 (1) | 2024.02.27 |
[데이터베이스] 4장. SQL (0) | 2024.02.27 |
[데이터베이스] 3장. 관계 대수 (0) | 2024.02.27 |