[ 디스크 파일을 위한 외부 해싱 ]

 디스크 장치의 특성에 맞게 목표 주소 공간을 버켓들로 구성하고 각 버켓에는 다수의 레코드를 유지한다.

 버켓은 디스크 블록 한 개나 연속적인 블록들의 묶음으로 이루어진다. 해시 함수에서는 버켓에 디스크 블 록 한 개나 연속적인 블록들의 묶음으로 이루어진다.

 해시 함수에서는 버켓에 절대 블록 주소를 할당하는 대신에 해시 키가 K인 레코드를 해시 함수 i=h(K)에 의해 결정된 버켓 i에 저장한다.

 버켓이 가득차고 삽입할 새로운 레코드가 이 버켓으로 해시될 경우 충돌이 발생한다. 충돌된 레코드는 오버플로 버켓에 저장하고 각 버켓에서 오버플로된 레코드들은 연결 리스트로 구성한다.

 단점

  - 실제 레코드 수가 버켓 공간에 비해 작으면 많은 공간이 사용되지 않은 채로 남아 있을 것이고 매우 크 면 자주 충돌이 발생하고 오버플로 레코드들에 대한 연결리크트의 길이가 늘어나므로 레코드들을 검색 하는 속도가 느려진다.

  - 해시 키에 따른 순차적 접근은 매우 비효율적이며 레코드의 정렬이 요구된다.

 

[ 동적 및 확장 해싱 파일 ]

 정적 해싱은 해시 주소 공간이 고정되어 파일을 동적으로 확장하고 축소하는 것이 어렵다. 이 문제를 해 결하는 기법으로는 확장 가능 해싱, 선형 해싱이 있다.

 이런 해싱 기법들은 해시 함수 적용 결과가 음이 아닌 정수이고 이를 이진수로 표현할 수 있다는 이점을 활용한다. 해시 함수 적용 결과인 이진수 표현을 기반으로 접근 구조를 구성한다. 2진수 표현을 레코드에 대한 해시값이라 한다.

 이진수 표현을 레코드에 대한 해시값이라 한다. 이진수 표현은 비트열로 구성된다. 레코드 해시 값에서 선행하는 비트들의 값을 기반으로 레코드들을 버켓들에 분배한다.

 확장 가능 해싱

  - 확장 가능 해싱에서는 2 d개의 버켓 주소 배열을 가지는 디렉토리를 유지하는데, 여기서 d는 디렉토리 의 전역 깊이이다. 해시값의 처음 d개의 비트에 해당하는 정수값이 디렉토리 엔트리를 결정하기 위한 배열의 인덱스로 사용된다.

  - 디렉토리 엔트리 내의 주소는 해당 레코드를 저장하고 있는 버켓 주소를 나타낸다. 그러나 2 d개의 디 렉토리 엔트리가 서로 다른 버켓을 유지할 필요는 없다.

  - 처음 2 d개의 비트가 동일한 해시값을 갖는 여러 디렉토리 엔트리로 해시되는 모든 레코드를 하나의 버 켓에 저장할 수 잇으면 여러 디렉토리 엔트리에 같은 버켓 주소를 유지한다. 각 버켓에 저장하는 지역 깊이 d’는 버켓 내의 레코드가 기반으로 하는 비트수를 나타낸다.

  - 어떤 레코드를 삭제한 후, 모든 버켓에 대해 d>d’인 경우 디렉토리 배열내의 엔트리 수는 절반이 되 다.

  - 대부분의 레코드 검색은 두 개의 블록 접근(디렉토리에 대한 블록 접근, 버켓에 대한 블록 접근)을 필 요로 한다.

 

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

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

RAID의 구조와 레벨  (0) 2019.09.20
RAID 기술  (0) 2019.09.20
해싱 기법 (1)  (0) 2019.09.19
비 순서 파일과 순서 파일  (0) 2019.09.19
파일에 대한 연산  (0) 2019.09.19

+ Recent posts