File Structures 강의. File Structures. 강의 내용 직접 화일 (Ch. 8 in “ 파일 구조” ) 다중키 화일 (Ch. 9 in “ 파일 구조” ) 다차원 공간 화일 (Ch. 10 in “ 파일 구조” ) 텍스트를 위한 화일 (Ch. 11 in “ 파일 구조” ) 데이타베이스 (Ch.12 in “ 파일구조” ). 직접 파일 (Direct File ) 의 개념 (1/5). Hash Structures. 임의 접근 파일 (random access file) - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Advanced Data Structuresby Yang-Sae Moon
Page 1
File Structures File Structures 강의강의
강의 내용• 직접 화일 (Ch. 8 in “ 파일 구조” )
• 다중키 화일 (Ch. 9 in “ 파일 구조” )
• 다차원 공간 화일 (Ch. 10 in “ 파일 구조” )
• 텍스트를 위한 화일 (Ch. 11 in “ 파일 구조” )
• 데이타베이스 (Ch.12 in “ 파일구조” )
File Structures
Advanced Data Structuresby Yang-Sae Moon
Page 2
직접 파일직접 파일 (Direct File )(Direct File ) 의 개념의 개념 (1/5)(1/5)
임의 접근 파일 (random access file)
• 임의의 레코드에 그 레코드의 키 값을 사용하여 그 키 값을 가지는 레코드에 랜덤하게( 직접적으로 ) 접근할 수 있는 파일(= 직접 파일 (direct file), 직접 접근 파일 (direct access file))
• 다른 레코드를 참조하지 않고도 , 개개의 레코드에 접근 가능 (↔ 순차 접근 파일 )
인덱스 활용• 인덱스된 파일 (indexed file): 별도로 관리되는 인덱스를 이용하여 레코드에 직접
접근
• 인덱스된 순차 파일 (indexed sequential file): 인덱스를 이용한 임의 접근 /순차 접근을 모두 지원 (B+- 트리 )
해싱 (hashing) 활용• 상대 파일 (relative file): 물리적 주소 대신에 상대적인 번호 /값으로 접근 가능
( 예 : 레코드 번호 = 10 위치 ( 주소 ) = 10 x 100 bytes = 1000)
• 해시 파일 (hash file)
- 키 값을 사용하여 레코드의 저장 주소 생성 . 상대 파일을 주로 활용함 .
- 협의의 의미에서의 직접 파일
Hash Structures
Advanced Data Structuresby Yang-Sae Moon
Page 3
상대화일
-- 레코드의 상대적인 정보 ( 상대적인 레코드 번호 ) 를 사용하여 레코드에 접근
상대 레코드 번호 (relative record number)
• 파일이 시작되는 첫 번째 레코드를 1번으로 지정 , 이것을 기준으로 다음 레코드들에 2, 3, 4, …, n 의 순서를 지정 (= 상대 주소 (relative address))
• 레코드의 논리적 순서와 물리적 순서는 무관 , 즉 , 레코드들이 키 값에 따라 물리적으로 정렬되어 있을 필요는 없음
Hash Structures직접 파일직접 파일 (Direct File )(Direct File ) 의 개념의 개념 (2/5)(2/5)
Advanced Data Structuresby Yang-Sae Moon
Page 4
사상 함수 (mapping function)
A: 키 값 주소 // A(key) = address
• 레코드 기록 시 : 키 값 → 레코드가 저장될 주소
• 레코드 검색 시 : 키 값 → 레코드가 저장되어있는 주소
• 모든 레코드에 직접 접근 가능
→ 주기억 장치의 데이터 구조에서 활용이 가능함( 실제 , 교환기의 DBMS 에서는 이러한 간략하면서 Powerful 한 액세스 방법을 사용함 )
사상 함수의 구현 방법 (will be explained in the next slides)
• 직접 사상 (direct mapping)
• 디렉토리 검사 (directory lookup)
• 계산 (computation) 을 이용한 방법 해싱
Hash Structures직접 파일직접 파일 (Direct File )(Direct File ) 의 개념의 개념 (3/5)(3/5)
Advanced Data Structuresby Yang-Sae Moon
Page 5
직접 사상 (Direct Mapping)
• 절대 주소 (absolute address) 이용
− 키 값은 그 자체가 레코드의 실제 주소임
− 레코드가 파일에 처음 저장될 때 레코드의 주소에 해당하는 < 실린더 번호 , 디스크 번호 , 블록 번호 >, 즉 절대 주소가 결정됨
• 장점 : 간단하며 처리 시간이 거의 걸리지 않음
• 단점 : 물리적 저장장치에 의존적(→ 특수한 경우를 제외하고는 , 잘 사용되지 않음 )
Hash Structures직접 파일직접 파일 (Direct File )(Direct File ) 의 개념의 개념 (4/5)(4/5)
Advanced Data Structuresby Yang-Sae Moon
Page 6
디렉토리 검사 (Directory Lookup)
• < 키 값 , ( 상대 ) 주소 > 의 쌍을 엔트리로 하는 테이블 ( 디렉토리 ) 을 유지
• 검색 절차 : 디렉토리에서 키 값 검색 → 키 값에 대응되는 레코드 번호 ( 상대 주소 ) 구함 → 레코드 접근
Hash Structures
• 장점 : 빠른 검색
• 단점 : 삽입 비용이 크며 , 종종 파일과 디렉토리 재구성 필요
• 구현 예
− < 키 값 , 레코드 번호 > 쌍을 엔트리로 갖는 배열
− 디렉토리 엔트리는 키 값으로 정렬
− 순차 접근은 가능하나 의미는 없음
직접 파일직접 파일 (Direct File )(Direct File ) 의 개념의 개념 (5/5)(5/5)
Advanced Data Structuresby Yang-Sae Moon
Page 7
Hash Structures해싱 개요 해싱 개요 (1/2)(1/2)
Advanced Data Structuresby Yang-Sae Moon
Page 8
해싱 함수 (Hashing Function)
• 키 공간을 주소 공간으로 사상 (mapping)
h( 키 값 ) = 주소 , 주소 ⊂ 유효 주소 공간 (effective address space)
• 키 값들을 한정된 주소 공간으로 균등하게 분산시키는 것이 핵심
Hash Structures해싱 개요 해싱 개요 (2/2)(2/2)
Advanced Data Structuresby Yang-Sae Moon
Page 9
버킷 크기 (bucket size):하나의 주소를 가진 저장 구역 (= 버킷 ) 에 저장할 수 있는 레코드 수
적재 밀도 (loading density):총 저장 용량에 대한 실제로 저장되는 레코드 수의 비율
해싱 함수 (hashing function):레코드 키 값으로부터 레코드가 저장된 위치 ( 주소 ) 를 생성하는 방법
오버플로우 (overflow) 해결 방법 :주어진 주소 공간이 만원 (full) 이 된 경우의 해결 방법
Hash Structures해싱 사용 시 고려사항해싱 사용 시 고려사항
Advanced Data Structuresby Yang-Sae Moon
Page 10
버킷 (bucket): 하나의 주소를 가진 하나의 저장 구역
• 하나 이상 지정된 개수의 레코드 저장함
• 동일 버킷 내의 레코드들은 모두 동일한 버킷 주소를 가짐
• 한 파일을 구성하는 구성하는 버킷 수가 그 파일의 주소 공간이 됨
버킷 크기 (bucket size)
• 통상적으로 한 번의 접근 (I/O Access) 으로 버킷 내에 있는 모든 레코드들을
전송할 수 있는 크기로 결정
• 저장 장치의 물리적 특성과 연관
• 일반적으로 한 개의 블록 ( 혹은 페이지 ) 크기로 설정됨
Hash Structures버킷 크기 버킷 크기 (1/2)(1/2)
Advanced Data Structuresby Yang-Sae Moon
Page 11
충돌 (collision)
• 두 개의 상이한 레코드가 동일한 버킷으로 해싱되는 경우
• 동거자 (synonyms): 같은 주소로 해싱되어 충돌된 키 값들을 일컬음
• 버킷이 만원일 때는 충돌이 문제가 됨 → 오버플로우 (overflow) 발생
버킷 크기를 크게하면
• 오버플로우가 감소하는 장점이 있으나 ,
• 저장 공간의 효율이 감소되고 , 버킷 내 레코드 탐색 시간이 증가하는 단점이
있음
Hash Structures버킷 크기 버킷 크기 (2/2)(2/2)
Advanced Data Structuresby Yang-Sae Moon
Page 12
적재 밀도 (loading density) (= 패킹 밀도 (packing density))
• N : 버킷의 수
• c : 버킷의 용량 ( 하나의 버킷에 저장될 수 있는 레코드 개수 )(c x N = 파일에 저장 가능한 총 레코드 수 )
• K : 파일에 저장된 레코드 수
Hash Structures적재 밀도 적재 밀도 (1/2)(1/2)
적재 밀도 =
저장된 레코드 수
파일 저장 공간의 총 용량
=K
< 1c x N
Advanced Data Structuresby Yang-Sae Moon
Page 13
적재 밀도가 높으면 ,
• 삽입 시 접근 수가 증가함 ( 이미 레코드가 저장된 주소에 해싱될 경우가 많기 때문 )
• 검색 시 접근 수가 증가함 ( 원치 않는 레코드가 저장된 주소에 해싱될 경우가 많기 때문 )
적재 밀도가 낮으면 , 공간 효율이 떨어짐
실험 결과에 따르면 , 적재 밀도 > 70% 이면 충돌이 너무 잦음 30% 정도의 예비 공간이 필요함
예 ) 학생 레코드 검색 시스템
• 학생 수가 최대 60,000 명 , 예비 공간 30%, 버킷 크기 12
• 적정 버킷 수 = 60,000 / 0.7 / 12 = 7143
Hash Structures적재 밀도 적재 밀도 (2/2)(2/2)
Advanced Data Structuresby Yang-Sae Moon
Page 14
해싱 함수 ( 변환 함수 ): 키 버킷 주소• 해싱 함수 계산 시간 << 보조기억장치 ( 예 : 디스크 ) 의 버킷 접근 시간
• 모든 주소에 대한 균일한 분포를 가지는 것이 가장 중요한 요소임
주소 변환 과정• 단계 ① : 키가 숫자가 아닌 경우 ( 예를 들어 , 스트링인 경우 ), 키를 정수 값 (A) 으로
변환
키 → A
• 단계 ② : 변환된 정수 A 를 해싱 함수를 사용하여 주소 공간의 정수 B 로 변환
A → B (B : 균일 분포로 변환 )
• 단계 ③ : 얻어진 정수 B 를 주소공간의 실제범위에 맞게 조정
B 조정상수 → 주소 ( 실제 목표 주소로 변환 )
• 예 ) “kim”
− 단계 ① : ‘k’11, ‘i’9, ‘m’13, “kim” 11913
− 단계 ② : h(11973) = 11973 % 1000 = 973 (0 h(key) 999)
− 단계 ③ : 973 x 0.5 = 486 (0 address 499)
Hash Structures해싱 함수해싱 함수 (Hashing Function)(Hashing Function)
Advanced Data Structuresby Yang-Sae Moon
Page 15
나머지 함수 = 제산 잔여 (divide and remainder)
• 주소 = key value mod divisor (h(k) = k % d)
• 0 h(k) divisor – 1
Divisor ( 제수 )
• Divisor 자체가 직접 주소 공간의 크기를 결정 (0 ~ divisor - 1)
• 충돌 가능성이 가장 작은 것으로 선택
− 소수 (prime number)
− 20 보다 작은 소수를 인수로 갖지 않는 비소수( 예 : 5003 5000 에 가까우면서 20 이하의 소수를 인수로 갖지 않는 비소수 )
적당한 성능을 위한 적재 밀도는 0.7 ~ 0.8
• n 개의 레코드 1.25n 주소 공간 (1/1.25 = 80% 인 경우 )
• 적재 밀도와 주소 공간을 고려하여 divisor 를 결정함
Hash Structures나머지 함수 나머지 함수 (Modular Function) (Modular Function) (1/2)(1/2)
Advanced Data Structuresby Yang-Sae Moon
Page 16
Divisor 를 결정과 이에 따른 해싱의 예
• 레코드 개수가 4,000 개 , 적재 밀도 = 80%
• 주소 공간 = 4,000 / 0.8 = 5,000 개 주소 공간이 필요
• Divisor = 5,003(20 이하의 수를 인자로 갖지 않는 수 중에서 5,000 에 가장 가까운 수를 선택한 경우 )
Hash Structures나머지 함수 나머지 함수 (Modular Function) (Modular Function) (2/2)(2/2)