[ 비 순서 파일 (히프 파일) ]
▪ 삽입된 순서대로 레코드를 파일 내에 배치하는 것으로서 파일의 마지막에 새로운 레코드를 삽입한다.
▪ 파일의 마지막에 삽입하므로, 새로운 레코드를 삽입하는 연산은 매우 효율적이다.
▪ 임의의 탐색 조건으로 레코드를 탐색하는 연산에서는 블록 단위로 파일 전체를 선형 탐색해야 한다. 선형 탐색은 시간이 많이 걸리는 작업이다. 이 기법은 평균 파일 블록의 반을 탐색하기 때문에 비 효율 적이다.
▪ 어떤 필드 값 순서대로 모든 레코드를 판독하기 위하여 파일에 대한 정렬된 사본을 생성한다. 방대한 양 의 디스크 파일을 정렬하는 것은 시간이 많이 걸리는 연산이므로 외부 정렬을 위한 특별한 기법들을 사용
▪ 비 신장 블록과 연속 할당 방식을 사용하는 비 순서 고정 길이 레코드들로 구성된 파일에서 그 위치를 이 용하여 한 레코드를 접근 하는 방법은 레코드의 상대적인 위치에 의해 직접적으로 레코드에 쉽게 접근할 수 있으며 이 파일을 상대 파일 또는 직접 파일이라 한다.
[ 순서 파일 (순차 파일) ]
▪ 레코드 필드들 중에서 순서 필드라고 하는 한 필드 값의 순서대로 디스크에 물리적으로 정렬할 수 있다.
▪ 순서 필드가 파일의 키 필드이면 이런 필드를 파일의 순서 키라 한다. 각 레코드마다 유일한 값을 갖는 필드를 키 필드라 한다.
▪ 비 순서 파일에 비하여 몇 가지 장점을 가진다.
- 정렬 연산이 불 필요 하므로 정렬된 키 값들의 순서로 레코드들을 판독하는 연산이 매우 효율적이다.
- 현재 레코드에서 정렬된 키 순서로 다음 레코드를 찾을 때 보통 별도의 부가적인 블록 접근이 필요하지 않다. 그 이유는 현재 레코드가 블록의 마지막에 위치하지 않는다면 다음 레코드는 현재 레코드와 같은 블록에 위치 하기 때문이다.
- 순서 키 필드의 값을 기반으로 탐색 조건을 사용할 때 이진 탐색을 사용하면 더 빠르게 원하는 레코드 를 검색 할 수 있다.
▪ 디스크 사의 파일에서 이진 탐색은 레코드들보다는 블록들에 대해서 수행된다. 평균적으로 log2b개의 블록을 접근하는 이진 탐색은 선형 탐색보다 더 좋은 성능을 보인다.(b는 블록의 총 개수)
▪ 해당 조건을 만족 하는 모든 레코드가 파일 내에서 연속적으로 저장되어 있기 때문에 정렬된 키 값의 순 서대로 판독하는 연산은 매우 효율적이다.
▪ 다른 비 순서 필드의 값을 기반으로 레코드들을 임의 접근하거나 순서 접근 하지 못한다. 이 경우 임의 접근을 위해서는 선형 탐색을 사용하고, 비 순서 필드의 순서대로 레코드들을 접근하기 위해서는 파일을 (그 비순서 필드순으로) 정렬한 사본을 별도로 만들어야 한다.
▪ 레코드들을 물리적으로 정렬된 상태로 유지해야 하므로 레코드 삽입과 삭제 연산 비용이 매우 크다.
▪ 레코드를 삽입하기 위해서는 순서 필드 값을 기반으로 삽입 할 정확한 위치를 찾고 그 위치에 새로운 레 코드를 삽입하기 위하여 공간을 마련한다.
▪ 레코드들이 정렬된 상태로 추가되어야 하기 때문에, 평균적으로 레코드의 1/2에 해당되는 레코드들을 이 동시켜야 하기 때문에 삽입 비용이 비싸다.
▪ 삽입 연산을 좀더 효율적으로 수행하기 위해
- 각 블록 내에 레코드 삽입을 위한 빈 공간을 유지한다. 그러나 이런 빈 공간을 모두 사용하면 근본적인 문제가 다시 발생한다.
- 오버플로 파일 또는 트랜잭션 파일이라고 하는 임시 비 순서 파일을 만들어 삽입 연산을 수행하는 방식 도 자주 사용된다. 새로운 레코드들을 오버플로 파일의 마지막에 삽입하고 정기적으로 파일 재조직 시 에 마스터파일과 오버플로 파일을 정렬하고 합병한다. 합병은 비용이 매우 많이 드는 작업이다.
▪ 레코드 필드 값을 수정하는 연산은 그 레코드를 삭제한 다음, 새로운 순서 필드 값을 갖는 레코드를 삽 입한다. 즉, 탐색조건과 수정하는 필드의 특성에 영향을 받는다.
▪ 레코드 삭제시 빈 공간을 메우기 위해 레코드들을 실제로 이동하지 않고 삭제 표시자를 사용할 수 있다.
▪ 데이터베이스 응용에서 기본 인엑스라 부르는 인덱스된 순차 파일을 사용하지 않으면 순서 파일을 거의 사용하지 않는다.
댓글이나 공감 남겨주는 사람 착한사람