[데이터베이스시스템] 데이터 저장과 파일
물리적 저장장치
- 구성
- 데이터 접근 속도, 용량을 기준으로 다양한 장치로 구성
- 광학 디스크, 자기 테이프 / 자기 디스크, 플래시 메모리 / 메인 메모리 / 캐시 / 레지스터
- 좌측에 있는 순서대로 저장용량이 큼
- 우측에 있는 순서대로 속도가 빠르고, 가격이 비쌈
- 좌측에 있는 순서대로 저장용량이 큼
- 데이터 접근 속도, 용량을 기준으로 다양한 장치로 구성
- 특징
1) 휘발성
- 캐시 : 고비용 저장장치로 빠른 접근 속도를 보장
- 메인 메모리 : 실제 프로그램과 데이터 적재 공간
2) 비휘발성
- 플래쉬 메모리 : 메인 메모리와 유사하나 비휘발성
- 자기 디스크 : 데이터베이스 전체의 안정적으로 저장
- 광학 디스크 드라이브 : CD, DVD, Blue-ray 등
- 테이프 장치 : 용량이 크고 저렴하나 순차 접근 방식으로 접근이 매우 느림
파일
-
데이터베이스 구성요소
1) 파일
- 데이터를 영구적으로 저장하기 위해 사용되는 가장 기초적인 논리적 구조
2) 블럭
- 파일을 고정적인 길이로 분할하여 생기는 균등한 크기의 데이터 묶음
- 일반적으로 메모리와 디스크간 데이터 전송 단위로 결정
3) 레코드
- 블럭을 구성하는 요소
- 더 이상 분리될 수 없는 최소 데이터 저장 단위
-
레코드
- 고정길이 레코드
- 고정적인 바이트 수를 갖는 레코드를 저장하는 기법
-
n번째 데이터 접근 : (n-1) * (고정길이) + 1
- 블럭의 길이가 레코드 길이로 정확히 나눠지지 않을때 잔여 공간 할당 방법
- 잔여 공간을 그대로 비워두는 방법 : 남은 공간이 낭비 됨
- 레코드를 두 블럭에 나누어 저장하는 방법 : 레코드 접근 시 두 블럭에 접근해야 함. 속도저하 발생
- 잔여 공간을 그대로 비워두는 방법 : 남은 공간이 낭비 됨
- 레코드 삭제 시
- 해당 레코드가 저장된 위치에 빈공간이 생성
- 장시간 레코드의 삽입 및 삭제가 발생하면 저장 공간에 큰 낭비가 발생
- 대처방안
- 마지막 레코드로 공백 대체 (순서가 달라지는 문제 발생. 검색시 시간 증가)
- 삭제 레코드 이후의 레코드를 이동 (상위 레코드가 변경될 수록 오버헤드가 커짐)
- 가용 리스트 관리 (연결리스트를 사용하여 공백리스트를 따로 관리)
- 마지막 레코드로 공백 대체 (순서가 달라지는 문제 발생. 검색시 시간 증가)
- 해당 레코드가 저장된 위치에 빈공간이 생성
- 고정길이 레코드
- 가변 길이 레코드
- 블럭에 저장되는 레코드의 길이가 서로 다른 레코드를 할당하는 방법
- 가변 길이 레코드가 사용되는 상황
- 한 블럭 내에 저장되는 레코드 유형이 둘 이상
- 길이가 고정되지 않은 컬럼의 개수가 하나 이상
- 레코드가 멀티셋을 허용한 컬럼을 가질 때 (멀티셋=레코드의 컬럼값이 여러 개인 컬럼)
- 한 블럭 내에 저장되는 레코드 유형이 둘 이상
- 블럭에 저장되는 레코드의 길이가 서로 다른 레코드를 할당하는 방법
- 파일의 구조화
- 파일 구조화 방법의 종류
- 힙 파일 구조 : 저장순서 고려없이 파일 내 임의의 위치에 배치 (저장속도 가장빠름, 탐색효율 가장낮음)
- 순차 파일 구조 : 레코드들이 탐색키 기준으로 정렬되어 저장 (가장 많이 사용됨)
- 해시 파일구조 : 해시 함수를 사용하여 블럭 주소를 계산 (함수에 따라 성능차 다름)
- 파일 구조화 방법의 종류
- 순차파일 구조
- 레코드가 검색키 순서대로 정렬
- 레코드가 파일에 삽입되는 시점에서 키 값이 부여
- 장점
- 검색키에 대한 정렬 연산이 불필요, 키 값들의 순서로 레코드를 반독하는 연산에 효율적
- 현재 레코드에서 정렬된 키 순서로 다음 레코드를 찾을 때 부가적인 블럽 접근이 불필요
- 이진 탐색을 사용하면 더 빠르게 레코드를 검색
- 검색키에 대한 정렬 연산이 불필요, 키 값들의 순서로 레코드를 반독하는 연산에 효율적
- 단점
- 레코드 삽입, 삭제에 많은 비용 소요
- 레코드 삽입, 삭제에 많은 비용 소요
- 레코드가 검색키 순서대로 정렬