22
Indexing and Hashing Data Warehousing Lab. M.S. 2 HyunSuk Jung 2003.8.12

Indexing and Hashing

Embed Size (px)

DESCRIPTION

Indexing and Hashing. Data Warehousing Lab. M.S. 2 HyunSuk Jung 2003.8.12. 순서. Indexing Hashing Apache Xindice Plan. Index 를 사용하는 이유. 대부분의 query 들은 파일 안에 레코드들의 일 부분만을 참조한다 . 이러한 레코드들을 찾는 overhead 를 줄이기 위해 , 파일에 대해서 index 를 사용한다 . - PowerPoint PPT Presentation

Citation preview

Page 1: Indexing and Hashing

Indexing and Hashing

Data Warehousing Lab.M.S. 2 HyunSuk Jung

2003.8.12

Page 2: Indexing and Hashing

LaboratoryData Warehousing

순서 Indexing Hashing Apache Xindice Plan

Page 3: Indexing and Hashing

LaboratoryData Warehousing

Index 를 사용하는 이유 대부분의 query 들은 파일 안에 레코드들의

일 부분만을 참조한다 . 이러한 레코드들을 찾는 overhead 를 줄이기 위해 , 파일에 대해서 index 를 사용한다 .

Index-sequential 파일은 가장 오래된 index 기법이다 . Search-key 순서대로 레코드를 빠르게 검색하기 위해 레코드들이 순차적으로 저장된다 . 빠른 랜덤한 접근을 위해 index 구조를 사용한다 .

Page 4: Indexing and Hashing

LaboratoryData Warehousing

Index-sequential file

박유림정현숙조혜영

854-1234 박유림

854-1235 박유림123-1234 윤혜정316-4763 정현숙324-4764 정현숙324-4765 정현숙786-3455 조혜영786-3456 조혜영

Page 5: Indexing and Hashing

LaboratoryData Warehousing

Index 의 2 가지 유형 (1/2)1. Dense index : 모든 search-key 값 포함 .

박유림윤혜정정현숙조혜영

854-1234 박유림

854-1235 박유림123-1234 윤혜정316-4763 정현숙324-4764 정현숙324-4765 정현숙786-3455 조혜영786-3456 조혜영

Page 6: Indexing and Hashing

LaboratoryData Warehousing

Index 의 2 가지 유형 (2/2)2. Sparse index : 일부의 search-key 값 포함 .

박유림정현숙조혜영

854-1234 박유림

854-1235 박유림123-1234 윤혜정316-4763 정현숙324-4764 정현숙324-4765 정현숙786-3455 조혜영786-3456 조혜영

Page 7: Indexing and Hashing

LaboratoryData Warehousing

Primary index 와 secondary index

Search key 의 정렬 순서와 relation 의 정렬순서가 일치한다면 , 그때의 search-key 상의 index 를 primary index 라고 한다 . 그 외의 다른 index 를 secondary index 라고 한다 . Primary key 외의 다른 search key 를 사용하는 query 의 수행을 향상시킨다 . 그러다 데이터베이스의 수정 시 overhead 가 크다 .

Page 8: Indexing and Hashing

LaboratoryData Warehousing

B+-tree index Index-sequential 파일의 가장 큰 단점은

파일이 커질수록 수행이 감소된다는 것이다 . 이것을 극복하고자 , B+-tree index 를 사용한다 .

Balanced tree 형태 : tree 의 root 로부터 leaf까지의 모든 경로가 같은 길이이다 .

B+-tree 가 AVL tree 같은 balanced binary-tree 구조보다 훨씬 더 짧다 . 그래서 레코드를 가져오기 위한 disk access 가 더 적다 .

Page 9: Indexing and Hashing

LaboratoryData Warehousing

B+-tree 의 정의 Root node 는 차수가 m 인 경우 , 0, 2, 또는 m/2 이상의 sub tree 를 갖는다 . 루트와 leaf node 를 제외한 모든 node 는 m/2 이상의 sub tree 를 갖는다 . 모든 leaf node 는 동일한 레벨에 있다 . leaf 가 아닌 node 의 키 수는 sub tree 수보다 적다 . Leaf node 는 파일의 순차세트로서 모두 리스트로 연결되어 있다 .

Page 10: Indexing and Hashing

LaboratoryData Warehousing

B+-tree 예제 Key 값이 다음과 같을 때 B+-tree 를 만들어라 .

(2, 3, 5, 7, 11, 17, 19, 23, 29, 31) note: 한 node 안에 포인터의 수는 4 개이다 .

19

5 11 29

2 3 5 7 11 17 19 23 29 31 - Leaf node

- Root node

Nonleaf node

Index set

Sequence set

Insert 99

5 11 19

2 3 5 7 9 11 17 19 29 31

Page 11: Indexing and Hashing

LaboratoryData Warehousing

B+-tree index 의 특징 B+-tree 는 leaf node 를 찾기 위하여 경로를

제공하는 index set 과 tree 의 내부 node 를 포함하여 모든 node 를 순차적으로 leaf node 에 열거해 놓은 sequence set 으로 구성 .

Index set 은 leaf node 에 접근하기 위한 경로로만 사용하기 때문에 인덱스 부분에 속하는 node 의 search-key 값이 leaf node 의 sequence set 에 다시 나타난다 .

Sequence set 의 leaf node 는 순차적으로 연결된다 .

따라서 B+-tree 는 파일의 한 node 에 해당하는 레코드를 직접 및 순차적으로 접근하는 인덱스 파일 구성에 널리 사용 .

Page 12: Indexing and Hashing

LaboratoryData Warehousing

B-tree

B+-tree 와 유사 B-tree 의 장점 : search-key 값의 중복되는 공간을 제거 . B-tree 의 단점은 전체적으로 복잡한 점이다 . 그래서 시스템 디자이너들은 거의 B+-tree를 더 좋아한다 .

Page 13: Indexing and Hashing

LaboratoryData Warehousing

B-tree 예제 (2, 3, 5, 7, 11, 17, 19, 23, 29, 31)

7 23

2 3 5 11 17 19 29 31

7 bucket 23 bucket

3 bucket 5 bucket 11 bucket2 bucket 17 bucket 19 bucket 29 bucket 31 bucket

Page 14: Indexing and Hashing

LaboratoryData Warehousing

Hashing

순차적인 파일 구성은 데이터를 가져오기 위해 index 구조를 필요로 한다 . 반대로 hashing 을 기반으로 한 파일 구성은 찾고자 하는 record 의 search key 값을 함수에 넣어 직접 데이터의 주소를 찾도록 한다 .

좋은 hash function 은 search key 값이 bucket 에 골고루 분배되도록 할당하는 것이다 .

Page 15: Indexing and Hashing

LaboratoryData Warehousing

Static hashing

Bucket 의 수가 고정되어 있는 hash 함수를 사용한다 . 그런 hash function 은 쉽게 특정부분이 커지는 것을 허용할 수 없다 . 이를 수정하기 위해 여러 동적 hashing 기술이 있다 . 그 중 한 예가 extendable

hashing 이다 . 데이터 크기에 따라 bucket이 쪼개지고 모아지면서 데이터베이스 크기를 조절한다 .

Page 16: Indexing and Hashing

LaboratoryData Warehousing

Hashing 예제 search-key 값이 다음과 같은 레코드를 포함하는 파일을 extenda

ble hashing 을 이용해서 이 파일에 대한 extendable hash 구조를 보여라 .

2, 3, 5, 7, 11, 17, 19, 23, 29, 31 h(x) = x mod 8 이며 , bucket 은 3 개의 레코드를 가질 수 있다 .

2 17

000 001 010 011 100

111 110 101

2 7 23 31

2 5 29

3 3 11 19

3 2

Page 17: Indexing and Hashing

LaboratoryData Warehousing

ToXin

대부분의 인덱스 기법이 단지 제한된 query 의 클래스만을 지원하는 query processing 단계를 지원할 수 있었다 . 이러한 한계를 극복하기 위해서 Toxin 을 개발했다 .

Toxin 은 모든 query processing 단계에서 데이터베이스의 총체적인 path 구조를 완전히 활용하는 XML data 에 대한 인덱싱 기법이다 . Toxin 은 두 가지 타입의 구조를 구성한다 .

Page 18: Indexing and Hashing

LaboratoryData Warehousing

Toxin ToXin 의 두가지

구성요소 VT: value table IT: instance tabl

e x/publications/is

sue/y 뿐만 아니라 x/issue/y 에 매치하는 경로도 찾을 수 있다 .

Forward, backward 검색 가능

Page 19: Indexing and Hashing

LaboratoryData Warehousing

Apache Xindice Xindice 는 B-tree 기반 . XPath Query Engine: 문서 집합을 XPath 로 쿼리하기 위해서 사용함 . XML Indexing: 많은 문서에 대해서 쿼리의 수행을 향상 시키기 위해서

element 와 attribute 값을 인덱스로 정의할 수 있다 . XML:DB XUpdate Implementation: 데이터베이스에 XML 을 저장할 때

전체 문서를 검색할 필요없이 그 데이터만 변화시키길 원할 때가 있을 것이다 . XUpdate 는 데이터의 서버 측면 업데이트를 원할 때 사용하는 기법이다 .

Java XML:DB API Implementation: 자바 프로그래머를 위해서 Xindice는 XML:DB API 를 공급한다 .

XML Objects: XML Objects 는 서버에 여분의 기능을 추가하여 서버 확장 기법을 제공한다 . 그리고 데이터베이스 엔진안에서 복잡한 연산을 실행할 수 있거나 서버에 현재 존재하지 않는 기능을 추가할 수 있다 .

Command Line Management Tools: 관리자를 돕기 위해 Xindice 는 command line 조종 관리 툴을 제공한다 . XML:DB API 를 통해서 할 수 있는 모든 것은 command line 을 통해 할 수 있다 .

Page 20: Indexing and Hashing

LaboratoryData Warehousing

Plan

Xindice 는 XPath 와 Xupdate 를 지원하는데 XQuery 를 지원할 수 있도록 한다 .

XQuery 를 지원하는 새로운 index 기법을 연구 , 구현한다 .

Xindice 를 기반으로 해서 제안한 방법을 실험한다 .

Page 21: Indexing and Hashing

LaboratoryData Warehousing

Xindice

Data storage (key, value)

Page 22: Indexing and Hashing

LaboratoryData Warehousing

포함질의 간접포함질의 : 엘리먼트들 , 애트리뷰트들 , 그리고 그것들의

내용을 이루는 텍스트 단어들간의 포함관계가 간접 포함관계( 조상 - 자손 관계 ) 로만 이루어진 질의 . Ex) /companies//profile//’scanners’

직접포함질의 : 직접 포함관계 ( 부모 - 자식 관계 ) 로 이루어진 질의 . Ex) /companies/company/profile/description/’printers’

완전포함질의 : 완전 포함관계로만 이루어진 질의 Ex) //symbol=‘AAPL’

K- 근접 포함질의 : 텍스트 단어간의 근접도에 기반을 둔 질의 Ex) (k=3): Distance(“printers”,”scanners”)<=3