Chapter 10. Indexed Sequential File Access and Prefix B+-Trees

Slides:



Advertisements
Similar presentations
10. 다차원 공간 화일. 2  격자 화일 (Grid file)  정적, 동적 상황에 모두 적합 – 완전 일치 질의 (exact match query) – 범위 질의 (range query)
Advertisements

알고리즘 기본 개념 정렬 알고리즘 탐색 알고리즘 알고리즘 복잡도.
2.6 탐색(Search) 1. 순차검색 (Sequential Search, Linear Search)
UNIX 운영 체제의 설계 - Chapter 4. 파일의 내부 표현
T-tree 엄종진 강원대학교 컴퓨터과학과.
제14장 동적 메모리.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
4. 순차 화일.
연결리스트(linked list).
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
11.텍스트를 위한 화일.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
제 11 장 다원 탐색 트리.
1. 화일의 기본개념.
7장 인덱스된 순차 화일.
CHAPTER 5 트리(Tree).
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
자료구조: CHAP 7 트리(1) 순천향대학교 컴퓨터공학과 하 상 호.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
<소스코딩(Source Coding)> 제4장 가변길이 코드
11장. 1차원 배열.
CHAP 7: 트 리 (1) 한 성 대 학 교 정보통신공학과 봉 정 식.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
11.텍스트를 위한 화일.
DBMS 기능 DBMS 구성 요소 물리적 저장 구조
JA A V W. 03.
인터넷응용프로그래밍 JavaScript(Intro).
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Tree & Heap SANGJI University Kwangman Ko
8장. 상호 배타적 집합의 처리.
24장. 파일 입출력.
01 화일의 기본 개념 02 화일 저장장치 03 화일 입출력 제어 04 순차화일 05 화일의 정렬 06 화일의 합병
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
USN(Ubiquitous Sensor Network)
4 장 신호(Signals) 4.1 아날로그와 디지털(Analog and Digital)
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
9.다중 키 화일.
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 27).
데이터 동적 할당 Collection class.
1과목 데이터베이스 강사 이 민 욱.
6장. 물리적 데이터베이스 설계 물리적 데이터베이스 설계
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
Chapter 10 데이터 검색1.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
DNA의 구조와 역할 (1) DNA : 이중 나선 구조로 수많은 뉴클레오타이드의 결합으로 이루어져 있다.
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
6. 데이터베이스의 내부적 운영.
웹과 모바일 홈페이지의 이해와 제작 폰트_레이아웃
9 브라우저 객체 모델.
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
Numerical Analysis Programming using NRs
Prefix B- 트리 학과 : 컴퓨터과학과 학번 : 이름 : 이 수진.
트리 (Logical) Data Structures Linear list Tree Graph Linear structures
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
제 4 장 Record.
 6장. SQL 쿼리.
9장 파일 시스템 이성연.
eBooks on EBSCOhost 이용매뉴얼
C++ Espresso 제15장 STL 알고리즘.
6 객체.
11. 트리.
Presentation transcript:

Chapter 10. Indexed Sequential File Access and Prefix B+-Trees

Contents Indexed Sequential Access Maintaining a Sequence Set Adding a Simple Index to the Sequence Set The Content of the Index: Separators Instead of Keys The Simple Prefix B+-Tree Simple Prefix B+-Tree Maintenance Index Set Block Size Internal Structure of Index Set Blocks: A Variable-Order B-Tree Loading a Simple Prefix B+-Tree B+-Trees B-Trees, B+-Trees, and Simple Prefix B+-Trees in Perspective

1. Indexed Sequential Access 인덱스 순차 화일(indexed sequential file) 구조 인덱스화(indexed) : 키에 대해 인덱스된 레코드의 집합 순차적(sequential) : 물리적으로 연속된 레코드 두 가지 관점 중 하나를 선택 인덱스 순차 접근 방법 두 가지 방식을 모두 포함

2. Maintaining a Sequence Set 레코드들의 순서화된 집합 (1) 블럭의 이용 레코드들을 블럭으로 모음 레코드의 삽입 => 오버플로우(overflow) 발생 레코드의 삭제 => 언더플로우(underflow) 발생

Maintaining a Sequence Set <Figure 10.1> 순차 집합에서 삽입과 삭제로 인한 블럭의 분할과 병합 Block 1 ADAMS . . . BAIRD . . . BIXBY . . . BOONE . . . Block 2 BYNUM . . . CARSON . . . COLE . . . DAVIS . . . Block 3 DENVER . . . ELLIS . . . (a) Block 1 ADAMS . . . BAIRD . . . BIXBY . . . BOONE . . . Block 2 BYNUM . . . CARSON . . . CARTER . . . Block 3 DENVER . . . ELLIS . . . Block 4 COLE . . . DAVIS . . . (b) Block 1 ADAMS . . . BAIRD . . . BIXBY . . . BOONE . . . Block 2 BYNUM . . . CARSON . . . CARTER . . . Block 3 Available for reuse Block 4 COLE . . . DENVER . . . ELLIS . . . (c)

Maintaining a Sequence Set (2) 블럭 크기의 선택 블럭 : 입출력 연산의 기본 단위 고려1 메모리가 한 번에 여러 개의 블럭들을 가질 수 있어야 함 고려2 순차 집합에서 임의 접근 문제 합리적 제안 : 블럭을 클러스터의 크기로 잡음

3. Adding a Simple Index to the Sequence Set 레코드의 키가 주어질 때 그 레코드를 포함하는 블럭 찾는 방법 각 블럭의 마지막 레코드의 키로 고정길이 인덱스를 형성 <Figure 10.2> 각 블럭에서 키의 범위를 보여주는 블럭들의 순서 ADAMS-BERNE FOLKS-GADDIS BOLEN-CAGE CAMP-DUTTON EMBRY-EVANS FABER-FOLK 1 2 3 4 5 6 Key Block number BERNE CAGE DUTTON EVANS FOLK GADDIS 1 2 3 4 5 6 <Figure 10.3> 위 순차 집합에서의 단순 인덱스

Adding a Simple Index to the Sequence Set 인덱스가 메모리에 유지되어야 하는 이유 이진 탐색을 통해 레코드를 찾음 블럭이 갱신됨에 따라 인덱스도 갱신 필요 인덱스를 메모리에 포함하지 못하는 경우 인덱스의 구조를 페이지로 나누어 다룸 B-트리는 메모리에 전부 포함하지 못하는 인덱스를 다루기 좋은 화일 구조 블럭의 순차집합에 대한 B-트리 인덱스를 이용

4. Content of the Index: Separators Instead of Keys 이 장에서 구성하려는 인덱스 목적 : 특정한 키를 가지고 레코드를 탐색할 때 효율적 순차 집합에 대해 일종의 지도(road map)처럼 작용한다 인덱스 집합에서는 키를 가질 필요가 없음 분리자(separator) 필요 Separators: BO CAM E F FOLKS ADAMS-BERNE FOLKS-GADDIS BOLEN-CAGE CAMP-DUTTON EMBRY-EVANS FABER-FOLK 1 2 3 4 5 6 <Figure 10.4> 순차 집합에서 블럭들간의 분리자

The Content of the Index: Separators Instead of Keys 분리자를 가변길이로 다룰 경우 인덱스 구조에서 가장 짧은 분리자 (shortest separator)를 이용 분리자에 따른 검색 규칙 탐색 키와 분리자와의 관계 결정 키 < 분리자 키 = 분리자 키 > 분리자 왼쪽 검색 오른쪽 검색 오른쪽 검색

5. The Simple Prefix B+-Tree B-트리 인덱스 + 순차집합 => 단순 전위 B+-트리 단순 전위 B+-트리(simple prefix B+-Tree) 단순 전위 : 인덱스 집합이 가장 짧은 분리자를 포함 키의 복사가 아닌 키의 prefix 를 포함

Simple Prefix B+-Tree Maintenance <Figure 10.7> 단순 전위 B+-트리를 형성하는 순차 집합을 위한 B-트리 인덱스 집합

6. Simple Prefix B+-Tree Maintenance (1) 순차 집합에서 한 블럭에 국한된 변화 병합을 일으키지 않는 레코드의 삭제 순차 집합 블럭 수가 변하지 않음 블럭간 레코드의 이동이 없음 따라서 인덱스 집합도 그대로 유지됨 예) EMBRY, FOLKS 레코드의 삭제 (Figure 10.8) 분할을 일으키지 않는 레코드의 삽입 위의 예와 같은 효과 인덱스 집합은 변하지 않음

Simple Prefix B+-Tree Maintenance <Figure 10.8> 순차 집합에서 EMBRY와 FOLKS 레코드를 삭제는 인덱스 집합을 변화시키지 않음 ERVIN-EVANS

Simple Prefix B+-Tree Maintenance (2) 인덱스 집합에서 여러 개의 블럭을 수반하는 변화 블럭의 수가 늘어난 경우 (블럭의 분할) 새로운 분리자가 인덱스 집합에 삽입되어야 함 블럭의 수가 줄어든 경우 (블럭의 병합) 하나의 분리자가 반드시 인덱스 집합으로부터 제거되어야 함 레코드가 블럭 사이에서 재분배된 경우 인덱스 집합에서 분리자의 값이 반드시 변경되어야 함 인덱스 집합의 수정을 요구

Simple Prefix B+-Tree Maintenance 분할을 일으키는 삽입 예제 <Figure 10.9> 블럭1에 대한 삽입은 분할을 일으키고 그 결과로 블럭 7이 생성 블럭의 추가는 인덱스 집합에서 새로운 분리자를 요구 분리자 AY의 삽입은 B-트리 인덱스 집합에서 노드의 분할을 일으킴 그 결과로 BO가 루트로 상승

Simple Prefix B+-Tree Maintenance 병합을 일으키는 삭제 예제 <Figure 10.10> 블럭2에서의 삭제는 언더플로우를 일으키고 블럭2와 3의 병합을 일으킴 병합 후에 블럭3은 더 이상 필요없기 때문에 분리자 CAM 제거 CAM의 제거는 인덱스 집합 노드들의 병합을 일으킴 루트로부터 분리자 BO를 다시 내려오게 함

7. Index Set Block Size 인덱스 집합 블럭 (index set block) 인덱스 집합 노드의 물리적 크기 = 순차 집합에서 블럭 크기 순차 집합 (sequence set) 블럭과 같은 크기를 사용하는 이유 가장 잘 맞는 블럭의 크기는 인덱스 집합에도 가장 좋음 가상 단순 전위 B+-트리를 생성하기 위한 버퍼링 방법의 구현을 쉽게 해줌

8. Internal Structure of Index Set Blocks: A Variable-Order B-Tree 가변적 차수를 가지는 인덱스 집합 분리자가 가변이지만 이진 탐색을 할 수 있도록 블럭 구조화 분리 인덱스: 가변길이 개체가 이진 탐색을 수행 예) Aa, Ba, Bro, C, Ch, Cra, Dele, Edi, Err, Fa, Fle RBN (relative block number : 상대 블럭 번호) 고정 길이 블럭을 참조 N개의 분리자 => N+1 개의 자식, N+1개의 상대 블럭 번호 인덱스 집합 블럭 (Index set block) 검색하려는 순차 집합으로 유도 AaBaBroCChCraDeleEdiErrFaFle 00 02 04 07 08 10 13 17 20 23 25 Concatenated separators Index to separators

Internal Structure of Index Set Blocks: A Variable-Order B-Tree 인덱스 집합 블럭 구조 분리자, 분리자의 인덱스, RBN의 결합 분리자 개수 (separator count): 이진 탐색을 위해 중간 원소를 찾는데 필요 분리자 전체 길이 (total length of separators): 인덱스 시작을 찾기 위해 필요 Separator count Total length of separators AaBaBroCChCraDeleEdiErrFaFle 00 02 04 07 08 10 13 17 20 23 25 B00 B01 B02 B03 B04 B05 B06 B07 B08 B09 B10 B11 11 28 Separators Index to separators Relative block numbers <Figure 10.12> 인덱스 집합 블럭의 구조

Internal Structure of Index Set Blocks: A Variable-Order B-Tree 검색 예 Beck 키를 갖는 레코드를 찾는 경우 Figure 10.12 의 인덱스 집합 블럭을 검색 1. 분리자 계수와 분리자 전체 길이를 통해 중간에 위치한 인덱스를 찾음 2. 이진 탐색 수행 – Beck는 Ba와 Bro 사이에 있음 3. Figure 10.13을 통해 검색하려는 다음 블럭이 RBN 벡터 B02 위치에 저장됨을 알 수 있음 Separator subscript: B00 As B01 Ba B02 Bro B03 C B04 Ch B05 Cra B06 Dele B07 Edi B08 Err B09 Fa B10 Fle B11 0 1 2 3 4 5 6 7 8 9 10 <Figure 10.13> 분리자와 상대 블럭 번호 사이의 개념적인 관계

9. Loading a Simple Prefix B+-Tree 1. 순차 집합에 블럭들을 추가, 순차 집합과 인덱스 집합에서 블럭을 분할 재분배하여 구성 각 삽입에 대해 트리를 탐색 후 트리를 재구성 재분배, 분할이 상대적으로 비쌈 2. 정렬된 화일 사용하여 순차 집합에 레코드를 하나씩 저장 작업 블럭이 채워졌을 때, 새로운 블럭에서 시작 두 개의 순차 집합 블럭 간의 차이를 통해 shortest separator 결정

Loading a Simple Prefix B+-Tree 정렬된 화일을 사용한 적재의 예 순차 집합 블럭과 순차 집합에서 유도된 shortest separator로 구성된 인덱스 집합 형성 분리자(ALW, ASP, BET) 인덱스 집합이 꽉 찬 상태, 다음 분리자는 CAT ALWASPBET 00 03 06 Next separator : CAT Next sequence set block: ACCESS-ALSO ALWAYS-ASK ASPECT-BEST BETTER-CAST CATCH-CHECK <Figure 10.14> 순차 집합이 적재될 때 초기 인덱스 집합 블럭의 형성

Loading a Simple Prefix B+-Tree CAT을 추가하기 위해 하나의 부모 노드 필요 상위 레벨 블럭은 곧바로 순차 집합을 가리킬 수 없음 분리자가 없는 인덱스 블럭 생성 두 레벨에서의 작업 현상(working-on-two-levels phenomenon) CAT 00 -1 -1 ALWASPBET 00 03 06 -1 -1 -1 분리자가 없는 인덱스 블럭 ACCESS-ALSO ALWAYS-ASK ASPECT-BEST BETTER-CAST CATCH-CHECK <Figure 10.15> 순차 집합이 점점 커지면서 동시에 형성되는 두 개의 인덱스 집합 레벨

Loading a Simple Prefix B+-Tree <Figure 10.16> 순차 집합에서 구성되었던 인덱스 집합의 지속적인 성장

Loading a Simple Prefix B+-Tree 정렬된 화일을 사용하는 적재 과정의 잇점 결과가 순차적으로 기록 적재시 어떤 블럭도 재구성할 필요가 없음 두 가지 부가적인 장점 (적재된 후의 성능과 관계됨) 순차 적재 과정은 원하는 블럭 효율성을 선택할 수 있음 임의 삽입은 평균 67~80% 사이의 꽉 찬 블럭 생성 순차 적재 과정은 블럭의 빈 공간 위치나 양을 제어할 수 있음 인덱스집합 블럭이 물리적으로 인접한 순차 집합 블럭 화일내의 공간적 지역성을 가능케 함 탐색을 최소화

10. B+-Trees 단순 전위 B+-트리를 사용하는 이유 B+-트리의 변형 (분리자로 prefix를 사용함) 인덱스 집합에서 분리자 역할과 순차 집합에서 키 역할 구분 인덱스 집합을 가능한 한 얕게(swallow) 만들기 위해 인덱스 집합 블럭에 가능한 한 많은 분리자 저장 B+-트리를 선호하는 이유 (분리자로 키의 복사본을 사용) 순차 집합에서 키의 고정길이 복사본을 분리자로 사용 분리자를 가변길이로 사용하는데 드는 오버헤드 비용이 큼

11. B-Trees, B+-Trees, and Simple Prefix B+-Trees 공유하는 특징 페이지화된 인덱스 구조 : 트리가 얕고 넓은 특징을 지님 높이에 있어 균형을 유지 상향식으로 생성되고, 균형은 분할, 합병, 재분배를 사용 2-3분할, 재분배를 통해 공간 효율성을 가짐 메모리에 가장 최근에 사용한 블럭들을 유지하는 가상 트리 구조로 구현 가능 가변길이 레코드를 처리할 수 있는 방법

B-Trees, B+-Trees, and Simple Prefix B+-Trees in Perspective 차이점 B-트리 구현이 간단함, 인덱싱의 상속효과, B-트리 넓이의 최대화 순차 접근에 대해 비효율적 관련된 정보를 가진 B-트리는 한 원소는 키, 다른 한 원소는 관련된 정보 B+-트리 모든 키와 레코드 정보가 순차 집합으로 표현 키와 레코드 정보는 트리 부분인 상위 레벨에 존재하지 않음 인덱스 집합은 순차 집합의 경계를 나타내는 분리자를 포함 순차 집합이 키 순서에 의해 레코드에 접근하는 순차적인 방법 제공 단순 전위 B+-트리 B+-트리에 비해 인덱스 내에 많은 키를 갖게 되므로, 트리를 얕게 구성 반드시 가변길이 필드를 지원하는 인덱스 집합 블럭을 이용