Chapter 16 데이터베이스 파일 인덱싱 기법, B-트리 및 B+-트리

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

이혁재 /KASA NoSQL. 요약 NoSQL 소개 데이타베이스 관련 문서 대상 : 클라이언트 프로그래머 NoSQL 소개 데이타베이스 관련 문서 대상 : 클라이언트 프로그래머.
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
Association Rule Sequential Pattern Classification Clustering Data Mining A B C D 2.
제주특별자치도 교육청 Messenger Manual
2014년도 주요법령 개정사항 (월) ~ (금) 대한전문건설협회 강원도회.
강사: 이종인 다우 교육원 전임강사 / 온디멘드 수석 컨설턴트 / FMG 수석 컨설턴트
1. 자료구조 개념 (1) 자료구조의 개요 1) 자료구조 ① 일련의 자료들을 조직하고 구조화하는 것 ② 자료의 표현과 그것과 관련된 연산 2) 자료구조에 따라 저장공간의 효율성과 프로그램의 실행시간이 달라짐 3) 어떠한 자료구조에서도 필요한 모든 연산들을 처리하는 것이.
Chapter 7 ARP and RARP.
8. 파일 인덱스: 탐색트리 (Search Tree)
Internet Protocol Version4
4. 데이터 기능 유형.
M원 탐색트리.
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
Chapter 5 SQL: 확장된 질의, 주장, 트리거, 뷰.
01 화일의 기본 개념 02 화일 저장장치 03 화일 입출력 제어 04 순차화일 05 화일의 정렬 06 화일의 합병
Chapter 4. Fundamental File Structure Concepts
Chapter 32 Analyzing Web Traffic
Delivery and Routing of IP Packets
쉽게 배우는 알고리즘 5장. 검색트리
Chapter 2 OSI 모델과 TCP/IP 프로토콜.
Data Modeling Database 활용을 위한 기초 이론 Database의 개요 Data Modeling
6장. 물리적 데이터베이스 설계 물리적 데이터베이스 설계
Internet Computing KUT Youn-Hee Han
DataStage 운영자 지침서 Operator’s Guide
7장 인덱스된 순차 화일.
Chapter 2. Finite Automata Exercises
숭실대학교 마이닝연구실 김완섭 2009년 2월 8일 아이디어  - 상관분석에 대한 연구
하둡 기반 빅데이터 처리 방법.
Chapter 10. 파일 시스템 인터페이스(File System Interface)
파일 시스템 인터페이스(File System Interface)
강사: 이종인 다우 교육원 전임강사 / 온디멘드 수석 컨설턴트 / FMG 수석 컨설턴트
안전한 생활 교과용도서의 이해 2015 개정 교육과정 초등학교 1~2학년군 (화)
제10,11,12장 파일시스템 디스크 스케줄링.
제10장 파일 시스템 인터페이스(File System Interface)
목차 INDEX 1. 회원가입 및 로그인 2. 업체정보 3. 제조검사 신청 4. 인보이스 5. 검사진행현황(현장검사 신청)
임상 시나리오를 통해 알아보는 「UpToDate」 사용법
데이터베이스 (Databases) 과목 개요 문양세 강원대학교 IT대학 컴퓨터과학전공.
정보 검색 연구 내용 및 연구 방향 충남대학교 정보통신공학부 맹 성 현 데이타베이스연구회 2000년도 춘계 튜토리얼
Introduction to Programming Language
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
User Datagram Protocol (UDP)
국제의료관광 관련 법, 제도.
McGraw-Hill Technology Education
관계 데이타 모델과 관계 데이타베이스 제약조건 충북대학교 구조시스템공학과 시스템공학연구실
Chapter 12 Memory Organization
2 배열과 구조.
광주대교구 대성동 본당 ‘사랑의 샘’ 꾸리아 소속 ‘사도의 모후pr.‘2000차주회
CHAPTER 04 파일 설계(FiLE Design).
C언어 응용 제 15 주 검색.
CHAP 12:탐색 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
데이터베이스 (Database) 과목 개요 문양세 강원대학교 IT대학 컴퓨터과학전공.
이산수학(Discrete Mathematics) 비둘기 집 원리 (The Pigeonhole Principle)
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
점화와 응용 (Recurrence and Its Applications)
1. 관계 데이터 모델 (1) 관계 데이터 모델 정의 ① 논리적인 데이터 모델에서 데이터간의 관계를 기본키(primary key) 와 이를 참조하는 외래키(foreign key)로 표현하는 데이터 모델 ② 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)

서울, 1964년 겨울 -김승옥.
서울, 1964년 겨울 -김승옥.
서울, 1964년 겨울 -김승옥.
▶서류관리 프로그램 1. 로그인….2 2. 서류등록 … 서류도착 서류스티커발행
데이터 베이스의 내부 구조.
Python Tutorial 4: Data Structures
유예 X-FILE *조사자* 1301권희원 1315이예지 1317장아정 1322홍자현.
책을 읽읍시다  탈향 진지하게 설명해드림 1303 김소희 1309박지호 1315이지수.
2016년 제1차 운영위원회 평택시건강가정 ∙다문화가족지원센터
Chapter 4. Energy and Potential
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
가상 기억장치 (Virtual Memory)
CHAPTER 4 관계 데이터 모델과 관계 데이터베이스 제약조건. CHAPTER 4 관계 데이터 모델과 관계 데이터베이스 제약조건.
Presentation transcript:

Chapter 16 데이터베이스 파일 인덱싱 기법, B-트리 및 B+-트리 2018-12-07 Chapter 16 데이터베이스 파일 인덱싱 기법, B-트리 및 B+-트리 Copyright © 2004 Ramez Elmasri and Shamkant Navathe

Chapter Outline 단일-단계 순서 인덱스들의 유형 기본 인덱스 클러스터링 인덱스 보조 인덱스 다단계 인덱스 B-트리와 B+-트리를 이용한 동적 다단계 인덱스 다중키 인덱스

그림 15.7 NAME 필드를 순서키로 갖는 EMPLOYEE 레코드들로 구성된 순서 화일의 일부 목록

인덱스 - 접근 경로 단일 단계 인덱스는 데이터 화일내의 레코드를 효과적으로 찾도록 도와주는 보조 화일임 인덱스는 보통 화일내의 한 필드에 대해 정의된다 (여러 필드에 대해 정의될 수도 있음 인덱스는 <필드값, 레코드에 대한 주소>로 구성된 엔트리들을 저장한 화일이다. 인덱스는 화일에 대한 접근 경로(access path) 라고 불린다

인덱스 - 접근 경로 (계속) 인덱스 엔트리는 실제 레코드 크기보다 훨씬 작기 때문에, 인덱스 화일은 데이터 화일보다 훨씬 적은 디스크 블록을 차지한다. 인덱스에 대한 이진 탐색으로 데이터 화일의 해당 레코드에 대한 주소를 얻을 수 있다. 인덱스는 밀집 또는 희소 인덱스가 될 수 있다. 밀집 인덱스는 데이터 화일내의 모든 탐색 키 값 (즉, 모든 레코드)에 대한 인덱스 엔트리를 갖는다. 희소 (또는 비밀집) 인덱스는 탐색 값의 일부에 대해서만 인덱스 엔트리를 갖는다.

인덱스 - 접근 경로 (계속) 예: 주어진 데이터 화일: EMPLOYEE(NAME, SSN, ADDRESS, JOB, SAL, ... ) 데이터 화일에 대한 가정: 레코드 크기 R=150 바이트 블록 크기 B=512 바이트 레코드 개수 r=30000 레코드 얻을 수 있는 값: 블럭킹 인수 Bfr= B div R= 512 div 150= 3 레코드/블럭 화일의 블록 수 b= (r/Bfr)= (30000/3)= 10000 블럭 SSN 필드에 대한 인덱스에서, 필드 크기 VSSN=9 바이트 라고 가정하고, 레코드 포인터 크기 PR=7 바이트 라고 가정한다. 그러면: 인덱스 엔트리 크기 RI=(VSSN+ PR)=(9+7)=16 바이트 인덱스 블럭킹 인수 BfrI= B div RI= 512 div 16= 32 엔트리/블럭 인덱스 블록 수 b= (r/ BfrI)= (30000/32)= 938 블럭 이진 탐색시 접근할 블록 수 log2bI= log2938= 10 블록 이 비용은 다음의 평균 선형 탐색 비용보다 훨씬 적은 비용임: (b/2)= 30000/2= 15000 블록 접근 만약 화일의 레코드들이 정렬되어 있으면, 이에 대한 이진 탐색 비용은 다음과 같다: log2b= log230000= 15 블록 접근

단일 단계 인덱스의 유형 기본 인덱스 순서화일에 대해 정의할 수 있는 인덱스이다. 이 데이터 화일은 키 필드 순으로 정렬돼 있어야 한다. 데이터 화일의 각 블록에 대해 하나의 엔트리를 가지며, 블록 앵커라 불리는 각 블록의 첫 번째 레코드에 대한 키 필드 값을 엔트리로 갖는다. 각 블록의 마지막 레코드를 블록 앵커로 사용하는 방식을 이용할 수도 있다. 전체 탐색 값이 아니라 데이터 화일의 각 블록에 대해 하나의 엔트리 (즉, 블록의 앵커 레코드에 대한 키 값)을 가지므로, 기본 인덱스는 비밀집(희소) 인덱스이다.

그림 16.1 그림 15.7에 있는 화일의 순서키 필드에 대한 기본 인덱스

단일 단계 인덱스의 유형(계속) 클러스터링 인덱스 순서 화일에 대해 정의할 수 있다. 데이터 화일은 각 레코드에 대해 구별된 값을 갖지 않는 필드(즉, 키가 아닌 필드)에 따라 정렬된다. 해당 필드에 올 수 있는 각 값의 종류별(each distint value)로 하나의 인덱스 엔트리를 포함하며, 이 엔트리에는 그 필드 값을 가진 레코드들이 저장된 첫번째 블록에 대한 주소를 포함한다. 클러스터링 인덱스는 삽입과 삭제가 상대적으로 간단한 비밀집 인덱스의 한 예이다.

클러스터링 인덱스는 밀집 또는 비밀집 인덱스 교재 영어 원서 (p.615, ) 클러스터링 인덱스는 밀집 또는 비밀집 인덱스 교재 영어 원서 (p.615, ) A dense index has an index entry for every search key value (and hence every record) in the data file. A sparse (or nondense) index has index entries for only some of the search values. A sparse index has fewer entries than the number of recods in the file. Thus, a clustering index is another example of a nondense index because it has an entry for every distinct value of the indexing field, which is a nonkey.

위키피디아 A dense index in databases is a file with pairs of keys and pointers for every record in the data file. Every key in this file is associated with a particular pointer to a record in the sorted data file. In clustered indices with duplicate keys, the dense index points to the first record with that key.[3] A sparse index in databases is a file with pairs of keys and pointers for every block in the data file. Every key in this file is associated with a particular pointer to the block in the sorted data file. In clustered indices with duplicate keys, the sparse index points to the lowest search key in each block.

그림 16.2 EMPLOYEE 화일의 키가 아닌 필드 DEPTNUMBER에 대한 클러스터링 인덱스

그림 16.3 같은 클러스터링 필드값을 갖는 레코드들의 각 그룹을 위해 별도의 블록 클러스터를 가지는 클러스터링 인덱스

단일 단계 인덱스의 유형(계속) 보조 인덱스 보조 인덱스는 기본 접근 방법이 이미 존재하는 화일을 접근하는 보조 수단을 제공한다. 보조 인덱스는 후보 키나 모든 레코드에 대해 유일한 값을 갖는 필드 또는 중복된 값을 갖는 키가 아닌 필드에 대해 만들 수 있다. 보조 인덱스는 두 개의 필드로 구성된 순서 화일이다. 첫 번째 필드는 인덱스 필드인 데이터 화일의 비순서 필드와 같은 데이터 타입이다. 두 번째 필드는 블록 포인터이거나 레코드 포인터이다. 같은 화일에 여러 개의 보조 인덱스가 존재할 수 있다. 엔트리에는 레코드에 대한 보조키 값과 레코드가 저장되어 있는 블록 또는 레코드 자체에 대한 포인터가 있으므로, 키 필드에 대한 보조 인덱스는 밀집 인덱스이다.

그림 16.4 화일의 비순서 키 필드에 대한 밀집 보조 인덱스(블록 포인터를 갖는 경우)

그림 16.5 인덱스 엔트리들이 고정 길이이고 유일한 필드값들을 갖도록 하나의 간접 단계를 이용하여 구현된, 키가 아닌 필드에 대한 보조 인덱스(레코드 포인터를 갖는 경우)

표 16.2 인덱스 유형의 특징

다단계 인덱스 단일 단계 인덱스가 순서 화일이므로, 이 인덱스 자체에 대한 기본 인덱스를 만들 수 있다; 이 경우, 원래 인덱스 화일은 첫번째 단계 인덱스라 부르고 그 인덱스에 대한 인덱스는 두번째 단계 인덱스라 부른다. 위와 같은 과정을 반복하면 모든 엔트리를 한 블록에 저장할 수 있는 단계가 생기고, 이 단계의 블록을 최상위 단계라고 한다. 다단계 인덱스는 첫번째 단계 인덱스가 어떤 인덱스 유형(기본 인덱스, 클러스터링 인덱스, 보조 인덱스)이든지 사용할 수 있다.

그림 16.6 ISAM (Indexed Sequential Access Method) 조직과 유사한 2-단계 기본 인덱스

다단계 인덱스 이러한 다단계 인덱스는 탐색 트리 형태를 갖는다. 그러나 인덱스의 모든 단계가 순서 화일이므로, 새로운 인덱스 엔트리에 대한 삽입과 삭제가 매우 복잡하다는 문제점이 있다.

그림 16.8 서브트리에 대한 포인터를 갖는 탐색 트리의 한 노드

그림 16.9 차수가 p = 3인 탐색 트리

B-트리와 B+-트리를 사용한 동적 다단계 인덱스 이들 자료 구조들은 새로운 탐색 키의 삽입과 삭제를 효율적으로 처리할 수 있는 탐색 트리의 변형이다. B-트리와 B+-트리 자료 구조에서 각 노드는 하나의 디스크 블록을 할당하여 저장한다. 각 노드가 최소한 절반 이상 차 있도록 보장하여 저장 효율을 높일 수 있는 방식이다.

B-트리와 B+-트리를 사용한 동적 다단계 인덱스(계속) 완전히 차 있지 않는 노드에 삽입하는 것은 간단히 처리될 수 있다; 만약 노드가 차 있으면 삽입을 위해 두 노드로 분할한다. 노드 분할은 트리의 다른 단계로 파급될 수 있다. 삭제시 절반이상 차 있게 되는 노드에 대한 삭제는 간단히 처리될 수 있다. 삭제시 노드가 절반이하로 차게되면 이 노드를 이웃 노드들과 합병해야 한다.

B-트리와 B+-트리의 차이점 B-트리에서는 모든 단계의 노드들이 데이터 레코드들에 대한 포인터들을 갖는다.

그림 16.10 B-트리 구조 (a) q – 1개의 탐색값을 갖는 B-트리의 한 노드 (b) 차수 p = 3인 B-트리(삽입 순서는 8, 5, 1, 7, 3, 12, 9, 6이다.)

그림 16.11 B+-트리의 노드 (a) q – 1개의 탐색값을 갖는 내부 노드 (b) q – 1의 탑색값과 q – 1의 데이터 포인터를 가지는 B+-트리의 리프 노드

그림 16.12 p = 3이고 pleaf = 2인 B+-트리에 대한 삽입의 예

그림 16.13 B+-트리에서 삭제하는 예

다중키 인덱스 애트리뷰트들의 어떤 조합이 자주 사용되면 이런 애트리뷰트들의 조합에 의한 키 값을 이용하여 효율적인 접근을 제공할 수 있는 접근 구조를 구축하는 생성하는 것이 유용하다. 다중 속성에 대한 순서화된 인덱스 인덱스가 < A1, A2, …, An>의 애트리뷰트에서 생성되었다면 탐색키 값은 n개의 키값을 갖는 튜플(< V1, V2, ……, An>)이 된다. 튜플을 구성하는 각 키 값은 사전적(lexicographic) 순서를 갖는다. 분할 해싱 정적 외부 해싱의 확장된 형태이며, 동등 비교에만 적합하다. n개의 요소로 이루어진 키에 대해 해시 함수는 n개의 별도의 해시 주소를 갖는 결과를 생성한다. 버켓주소는 이런 주소들의 결합이다. 주소의 일부와 부합되는 적절한 버켓을 탐색하여 원하는 복합 탐색키를 찾을 수 있다. 애트리뷰트의 수를 쉽게 확장할 수 있다는 점과 각 애트리뷰트를 위한 어떤 별도의 접근 구조를 유지할 필요가 없다는 장점이 있다. 어떠한 구성 애트리뷰트에 대해서도 범위 질의를 할 수 없다는 단점이 있다.

다중키 인덱스(계속) 그리드 화일 EMPLOYEE 화일을 격자 화일로 구성 이 방법은 선형 눈금을 따라 여러 값의 그룹에 대응되는 셀들의 집합으로 사상되는 범위 질의에 특히 유용하다. 그리드 화일은 다중키 접근에 걸리는 시간을 줄일 수 있는 효율적인 방법이다. 그리드 화일은 그리드 배열 구조를 위해 많은 공간을 필요로 한다. 더욱이 동적 화일에서는 화일을 자주 재조직해야 하므로 유지보수 비용이 많이 증가한다.

다른 인덱스 유형 해시 인덱스 해싱을 기반으로 인덱스와 유사한 접근 구조를 만듬 인덱스 엔트리는 (키값, 레코드 포인터)로 구성됨 인덱스 엔트리에 대한 탐색은 해시 탐색 알고리즘 사용함

다른 인덱스 유형 (계속) 비트맵 인덱스 다중키에 대한 질의에 널리 사용함 많은 개수의 행을 가진 릴레이션을 위해 사용됨 보통 적은 수의 유일한 값들을 갖는 열들에 대해 만들어짐 한 열의 특정 값을 갖는 레코드들을 비트맵으로 표현함

다른 인덱스 유형 (계속) 함수 기반 인덱싱 어떤 필드 또는 필드 모임에 함수를 적용한 결과 값들이 인덱스의 키가 되는 인덱스

인덱스에 관한 일반적인 몇가지 이슈들 논리적 인덱스와 물리적 인덱스 물리적 인덱스 : 인덱스 엔트리들이 물리적 레코드 주소를 나타내는 물리적 포인터를 가짐. 엔트리 = <K, Pr> 논리적 인덱스 : 인덱스 엔트리들이 레코드 주소대신에 대응하는 레코드의 기본 파일 조직에 사용하는 필드의 값을 가짐. 엔트리 = <K, Kp>, Kp는 또 다른 레코드에 대한 키 값.