해시 테이블

04.Database 2020. 6. 3. 10:41
728x90
반응형

해시테이블

 

 

 

#해시 : 키값에 직접 산술적인 연산을 적용하여 항목이 저장되어 있는 테이블의 주소를 계산하여 항목에 접근

#해시테이블 : 값의 연산에 의해 직접 접근이 가능한 구조

#해싱: 해시테이블을 이용한 탐색

#해시의 용도: 해시테이블, 암호화, 데이터 축약

#해시함수

- 나눗셈법 : 주소=입력값%테이블크기(h(k) = k mod M)

- 자릿수 접기

 

 

해시충돌  해결기법

 

#해시충돌: 해시 함수가 서로 다른 입력값에 대해 동일한 해시 테이블 주소를 반환하는 현상

#개방주소법(Open Addressing) : 오버플로우 발생시 다른 데이터 주소로 다시 해시시키는 방법(반복 수행)

#폐쇄주소법(Closed addressing) : 같은 데이터 주소내에서 끝까지 해결하는 방법 >> 체인법

 

체이닝

#정의: 오버플로우 발생시 링크드 리스트로 해결

#특징: 해시테이블은 링크드 리스트에 대한 포인터 관리

 

 

 

개방주소법

#정의: 충돌 발생시 다른 주소를 사용할 수 있도록 허용하는 충돌해결 알고리즘

1. 선형탐사(Linear Porbing): 충돌시 현재 주소에서 고정폭으로 다음 주소 이동

2. 제곱탐사(Quadratic Probing) : 충돌시 이동폭이 제곱수로 이동

# 제곱탐사의 한계(2차 클러스터) : 같은 해시 값을 갖는 데이터에 대해서는 2차 클러스터 형성 문제

     >> 클러스터를 제대로 방지할 수 있는 방법은 탐사할 주소의 규칙성을 없애는 것

3. 이중해싱(Double Hashing) : 2개의 해시 함수를 준비해서 하나는 최초의 주소를 얻을때 사용하고 다른 하나는 충돌이 일어났을때 탐사 이동폭을 얻기 위해 사용

#재해싱: 해시테이블의 크기를 늘리고, 늘어난 해시테이블의 크기에 맞추어 테이블내의 모든 데이터를 다시 해싱

 

728x90

'04.Database' 카테고리의 다른 글

NoSQL  (0) 2020.06.03
NOSQL - 카산드라  (0) 2020.06.03
소재 DB - 전산재료공학과 기계학습  (0) 2020.06.03
DB 확장성 - 쿼리오프 로딩 (Query-off Loading), 샤딩  (0) 2020.06.03
DB 성능개선  (0) 2020.06.03
Posted by Mr. Slumber
,