Overview of Physical Storage Media
데이터의 이동 : CPU ↔ 메인메모리 ↔ 디스크
- 디스크에서 필요한 데이터가 있는 블록을 메인 메모리로 이동
- 메인 메모리에서 CPU가 원하는 데이터를 찾음
Blocks : 데이터에 접근하고 이동하는 기본 단위 - DB 시스템은 블록의 전환 최소화를 추구함
Buffer : 메인메모리의 영역으로, 디스크의 블록을 복사해해서 저장한다
Buffer manager : 메인메모리 안의 버퍼 공간을 할당하는 서브 시스템
Buffer manage의 동작
- 필요한 블록이 현재 버퍼 안에 있는 경우, 블록의 주소를 반환
- 필요한 블록이 현재 버퍼 안에 없는 경우
- 버퍼에 공간을 할당한다
- 필요한 경우 새 블록과 교체함
- Replaced block written back to disk only if it was modified since the most recent time that it was written to/fetched from the disk
- 디스크에서 블록을 읽어오고, 블록을 반환
- 버퍼에 공간을 할당한다
Buffer-Replacement Policy - LRU(Least Recently used)
- 버퍼의 블록을 교체할 때, 가장 오래된 블록을 새 블록으로 교체함
File Organization
데이터베이스는 파일의 집합으로 구성되고, 파일은 일정 크기의 블록(Page)들로 나뉘어짐
블록은 몇몇의 레코드를 포함하고, 레코드는 엔티티와 속성으로 작성됨
Fixed-length records
고정길이 레코드의 경우 레코드의 크기를 쉽게 예측 가능하다. (5+20+20+8)
i 번째 레코드에 접근하려면 n*(i-1) byte 를 찾으면 됨
free list : 레코드를 제거했을 때, 제거된 레코드의 주소를 연결리스트로 구현 (처음 시작은 header, 다음은 레코드)
Variable-length records
header에 가변 속성의 정보가 담김 : 가변 속성의 시작 주소(offset), 길이 정보(length)
Null bitmap : 몇 번째 속성이 null인지 알려준다.
- 0001 : 첫 번째 속성이 null인 경우, 0101: 첫번째, 세번째 속성이 null인 경우
Slotted Page Structure
variable length records를 저장하는 방법
header가 갖는 정보
- 레코드의 갯수
- Free space의 끝 지점
- 각 레코드의 위치와 크기
레코드가 추가될 경우
- 헤더의 레코드 갯수가 올라감
- free space 앞 부분에 record의 정보가 들어감 (위치, 크기)
- free space 뒷 부분에 실제 record가 들어감
레코드가 삭제될 경우
레코드가 삭제될 경우, 헤더의 레코드 정보에 -1을 표시.
빈 공간보다 크기가 같거나 작은 레코드를 넣으면 빈 공간에 레코드가 들어간다. (크기가 더 작을 경우엔 메모리가 낭비됨)
빈 공간보다 크기가 클 경우엔 free space에 레코드를 저장
Organization of Records in Files
sequential file organization
- search-key로 레코드를 정렬
- 레코드가 많아져 블록을 초과(overflow)할경우 새로운 블록을 생성하고 거기다가 레코드를 넣음
Data-Dictionary Storage
데이터에 관한 정보를 저장하는 곳 - meta data를 저장
- relation(테이블) 정보 : 테이블 이름, 각 속성의 이름 타입 길이, 뷰의 정의와 이름, 조건들
- 유저 정보
- 등등
메타데이터 또한 relation으로 관리된다
reference : 상명대학교 김종욱 교수님
'컴퓨터과학 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] Indexing and Hashing (0) | 2021.12.19 |
---|---|
[데이터베이스] Entity-Relationship Model - 모델링, ERD, 관계형 스키마 (0) | 2021.12.14 |
[데이터베이스] Data Analytics with SQL - DW, OLAP (0) | 2021.12.05 |
[데이터베이스] SQL 총정리 1 (0) | 2021.10.27 |
[MySQL] SQL 추가 문법 정리 - 프로그래머스 SQL 고득점 kit (0) | 2021.03.01 |
댓글