블로그 이미지
충남대학교대학원 컴퓨터공학과 박사1년차 석박사통합과정 데이터베이스시스템연구실 Yim, Hyung-jun

Hash Operations in Database System

Research & Paper | 2009/09/29 17:32 | Posted by Yim, Hyung-jun

[용어]

- table(relation): DB를 이루는 기본적인 단위
- tuple(row, record): table의 각 행
- attribute(column, field): relation을 구성하는 요소
- bucket: 하나의 주소를 갖는 파일의 한 구역을 의미(한 개 혹은 보다 많은 레코드를 저장할 수 있는 저장 공간의 단위), 버킷의 크기는 같은 주소에 포함될 수 있는 레코드 수를 의미
- slot: 한 개의 레코드를 저장할 수 있는 공간으로, n개의 슬롯이 모여 하나의 버킷을 형성
- collision: 서로 다른 두 개 이상의 레코드가 같은 주소를 갖는 현상
- synonym: 같은 home address를 갖는 레코드들의 집합
- overflow: 계산된 home address의 bucket을 구성하는 slot이 여러 개 일 때 collision은 발생해도 overflow는 발생하지 않을 수 있음


[Hash]

- 키값을 난수로 변환하여 필요한 주소를 산출하는 직접 주소법
- 해시 함수를 이용하여 데이터베이스에서 자료를 색인하고 신속하게 자료를 검색하는데 사용

[Hash Function]

- 임의의 길이에 이진 문자열을 고정된 길이의 이진 문자열로 매핑하여 주는 함수
- 검색키에 있는 문자를 이진으로 표현한 후에 계산 수행
- h는 K를 B에 대응시키는 함수
 ■ K: 모든 검색키 값의 집합
 ■ B: 모든 버켓 주소의 집합
 ■ h: 해시 함수
- 레코드 키 값(k) → 해싱 함수 h(k)→ 해상표의 상대주소
- hash의 사용
 ■ 해시 파일 구조: 레코드의 검색키 값에 대한 함수 계산을 통해 원하는 레코드를 가진 디스크 블록의 주소를 직접 얻을 수 있음
 ■ 해시 인덱스 구조: 검색키들과 관련된 포인터들을 해시 파일 구조로 조직화할 수 있음

[Hash File Organization]

- 해시 파일 구조는 이름을 키로 갖는 account 파일의 해시 함수는 다음과 같다.
- 레코드의 분배가 균등해야 함 (그렇지 않으면, 하나의 버켓에 몰려있는 현상이 있을 수 있어 특정 버켓에 있는 레코드를 모두 검색해야 하는 문제점이 있을 수 있음)



[Hash Index]

- 검색키, 이와 연관된 포인터를 해시 파일 구조 안에 구성
- 2차 해시 인덱스는 다음과 같다.


[Hash Table]

- 레코드의 저장을 위한 자료구조로써 해상함수로부터 계산된 함수값에 해당하는 위치에 각 레코드를 한 개 이상 보관할 수 있는 버켓(bucket)들로 구성된 기억 공간이며, 주어진 key값을 가지고 해당 레코드를 빠르게 검색하기 위한 수단을 제공하며 레코드의 삽입과 삭제가 용이
- 해시 테이블은 파일의 레코드의 키 값에 대응하는 해시주소와 레코드를 저장하는 공간은 버켓으로 구성
- 포인터를 사용하여 구현하는 경우에는 실제의 레코드 대신에 레코드가 저장되어있는 메모리 포인터를 저장
- 파일 내의 키 값에 해시함수를 적용하여 해시주소를 생성



- 해슁의 절차
 ■ 파일 내 모든 레코드의 키 값을 해시함수를 사용해 해시주소Hash Address를 구한다. 
 ■ 해시주소로 해시 테이블을 구성, 해시주소의 버켓에 레코드를 입력한다. 
 ■ 검색대상 레코드의 키 값에 해시함수를 적용, 해시주소를 구한다. 
 ■ 해시 테이블에서 해시주소로 레코드를 검색 

- 해시 테이블: 해시 테이블의 크기는 파일의 크기보다 커야한다. 왜냐하면, 주어진 n개의 레코드에 대해 n개의 해시주소를 생성하기 위한 해시함수는 찾는 것은 불가능하기 때문이다. 대부분의 경우에는 일정한 범위에 산발적으로 데이터가 분포하기 때문에 이러한 분포를 가진 데이터를 함수를 적용하여 최대한 밀집된 범위의 주소로 매핑하는 것은 한계가 있다.
- 해시 테이블의 크기가 적어지는 경우에는 서로 다른 키 값에 대해 동일 해시주소가 생성되는 경우가 발생하는데 이러한 현상을 해시충돌Hash Collision이라고 한다.

- 해시 테이블의 검색 속도는 O(1+n/m)으로 표현
 ■ m은 slot의 개수
 ■ n은 원소의 개수
 ■ n/m은 흔히 load factor로 표현





[참고]

'Research & Paper' 카테고리의 다른 글

DFA and NFA  (0) 2009/09/30
Hash Operations in Database System  (0) 2009/09/29
Performance Analysis  (0) 2009/09/23
Challenge in 20s Ph.D.  (2) 2009/09/18
EndNote X2 사용기  (0) 2009/08/03
VLDB, SIGMOD, ICDE Paper Search  (0) 2008/09/30