[ 비 순서 파일 (히프 파일) ]

 삽입된 순서대로 레코드를 파일 내에 배치하는 것으로서 파일의 마지막에 새로운 레코드를 삽입한다.

 파일의 마지막에 삽입하므로, 새로운 레코드를 삽입하는 연산은 매우 효율적이다.

 임의의 탐색 조건으로 레코드를 탐색하는 연산에서는 블록 단위로 파일 전체를 선형 탐색해야 한다. 선형 탐색은 시간이 많이 걸리는 작업이다. 이 기법은 평균 파일 블록의 반을 탐색하기 때문에 비 효율 적이다.

 어떤 필드 값 순서대로 모든 레코드를 판독하기 위하여 파일에 대한 정렬된 사본을 생성한다. 방대한 양 의 디스크 파일을 정렬하는 것은 시간이 많이 걸리는 연산이므로 외부 정렬을 위한 특별한 기법들을 사용

 비 신장 블록과 연속 할당 방식을 사용하는 비 순서 고정 길이 레코드들로 구성된 파일에서 그 위치를 이 용하여 한 레코드를 접근 하는 방법은 레코드의 상대적인 위치에 의해 직접적으로 레코드에 쉽게 접근할 수 있으며 이 파일을 상대 파일 또는 직접 파일이라 한다.

 

[ 순서 파일 (순차 파일) ]

 레코드 필드들 중에서 순서 필드라고 하는 한 필드 값의 순서대로 디스크에 물리적으로 정렬할 수 있다.

 순서 필드가 파일의 키 필드이면 이런 필드를 파일의 순서 키라 한다. 각 레코드마다 유일한 값을 갖는 필드를 키 필드라 한다.

 비 순서 파일에 비하여 몇 가지 장점을 가진다.

  - 정렬 연산이 불 필요 하므로 정렬된 키 값들의 순서로 레코드들을 판독하는 연산이 매우 효율적이다.

  - 현재 레코드에서 정렬된 키 순서로 다음 레코드를 찾을 때 보통 별도의 부가적인 블록 접근이 필요하지 않다. 그 이유는 현재 레코드가 블록의 마지막에 위치하지 않는다면 다음 레코드는 현재 레코드와 같은 블록에 위치 하기 때문이다.

  - 순서 키 필드의 값을 기반으로 탐색 조건을 사용할 때 이진 탐색을 사용하면 더 빠르게 원하는 레코드 를 검색 할 수 있다.

 디스크 사의 파일에서 이진 탐색은 레코드들보다는 블록들에 대해서 수행된다. 평균적으로 log2b개의 블록을 접근하는 이진 탐색은 선형 탐색보다 더 좋은 성능을 보인다.(b는 블록의 총 개수)

 해당 조건을 만족 하는 모든 레코드가 파일 내에서 연속적으로 저장되어 있기 때문에 정렬된 키 값의 순 서대로 판독하는 연산은 매우 효율적이다.

 다른 비 순서 필드의 값을 기반으로 레코드들을 임의 접근하거나 순서 접근 하지 못한다. 이 경우 임의 접근을 위해서는 선형 탐색을 사용하고, 비 순서 필드의 순서대로 레코드들을 접근하기 위해서는 파일을 (그 비순서 필드순으로) 정렬한 사본을 별도로 만들어야 한다.

 레코드들을 물리적으로 정렬된 상태로 유지해야 하므로 레코드 삽입과 삭제 연산 비용이 매우 크다.

 레코드를 삽입하기 위해서는 순서 필드 값을 기반으로 삽입 할 정확한 위치를 찾고 그 위치에 새로운 레 코드를 삽입하기 위하여 공간을 마련한다.

 레코드들이 정렬된 상태로 추가되어야 하기 때문에, 평균적으로 레코드의 1/2에 해당되는 레코드들을 이 동시켜야 하기 때문에 삽입 비용이 비싸다.

 삽입 연산을 좀더 효율적으로 수행하기 위해

  - 각 블록 내에 레코드 삽입을 위한 빈 공간을 유지한다. 그러나 이런 빈 공간을 모두 사용하면 근본적인 문제가 다시 발생한다.

  - 오버플로 파일 또는 트랜잭션 파일이라고 하는 임시 비 순서 파일을 만들어 삽입 연산을 수행하는 방식 도 자주 사용된다. 새로운 레코드들을 오버플로 파일의 마지막에 삽입하고 정기적으로 파일 재조직 시 에 마스터파일과 오버플로 파일을 정렬하고 합병한다. 합병은 비용이 매우 많이 드는 작업이다.

 레코드 필드 값을 수정하는 연산은 그 레코드를 삭제한 다음, 새로운 순서 필드 값을 갖는 레코드를 삽 입한다. 즉, 탐색조건과 수정하는 필드의 특성에 영향을 받는다.

 레코드 삭제시 빈 공간을 메우기 위해 레코드들을 실제로 이동하지 않고 삭제 표시자를 사용할 수 있다.

 데이터베이스 응용에서 기본 인엑스라 부르는 인덱스된 순차 파일을 사용하지 않으면 순서 파일을 거의 사용하지 않는다.

 

댓글이나 공감 남겨주는 사람 착한사람

'학사 그리고 석사 > 데이터베이스' 카테고리의 다른 글

해싱 기법 (2)  (0) 2019.09.19
해싱 기법 (1)  (0) 2019.09.19
파일에 대한 연산  (0) 2019.09.19
레코드  (1) 2019.09.19
디스크 저장  (0) 2019.09.19

+ Recent posts