t-tree

17
T-tree 엄엄엄 엄엄엄엄엄 엄엄엄엄엄엄

Upload: hayes-padilla

Post on 01-Jan-2016

266 views

Category:

Documents


1 download

DESCRIPTION

T-tree. 엄종진 강원대학교 컴퓨터과학과. T-tree 란. T-tree( binary tree with many elements in a node) = B-tree+ AVL-tree B - tree 장점 폭이 넓고 깊이는 얕은 트리 구조 : 데이터를 접근할 때 필요한 트리의 노드 수를 최소화 하는 장점이 있다 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: T-tree

T-tree

엄종진강원대학교 컴퓨터과학과

Page 2: T-tree

T-tree 란• T-tree( binary tree with many elements in a node) = B-tree+ AVL-tree• B - tree• 장점 폭이 넓고 깊이는 얕은 트리 구조 : 데이터를 접근할 때 필요한 트리의 노드 수를 최소화 하는

장점이 있다 또한 , 디스크 사용의 효율성을 위하여 , 각 노드의 크기는 보통 디스크 페이지 크기에

대응되도록 구현된다 . 즉 , B- 트리 인덱스는 디스크 I/O 회수를 줄이면서 디스크 공간을 적 게 사용하는 것에 초점이 맞추어진 것이다 .

• 단점 B- 트리는 균형 (balance) 을 맞추기 위하 여 각 노드들간의 데이터 이동의 양과 회수가 많아 지게

된다

• AVL- tree( 높이 균형 이진트리 )• 장점 삽입삭제 연산시간이 짧음 검색시간 O(logN)• 단점 저장공간의 효율성이 떨어짐

Page 3: T-tree

T-tree 란

• T-tree기존의 B-tree 와 AVL-tree 로부터 진화이진 검색과 높이 균형을 가지는 AVL-tree 의 성질을 가짐한 노드안에 여러 개의 데이터를 가지는 B-tree 의 성질을 가짐

• T-tree 의 노드내부 노드- 오른쪽 , 왼쪽 서브 트리를 가짐 . - 내부 노드에 포함될 수 있는 데이터의 개수는 T 트리 생성할 때 결정 .반쪽 리프 노드- 방향과 상관없이 한쪽 서브 트리 만을 갖는다 .리프 노드

Page 4: T-tree

T-tree 구성

data1 data2 data3 ... data n

control

Left Child Ptr Right Child Ptr

Parent Ptr

• T-tree 구성

노드 최고작은값 노드 최고 큰값

최고작은값보다 작으면 왼쪽 자식노드

최고큰값보다 크면 오른쪽 자식노드

Page 5: T-tree

T-tree 의 구조

data1 data2 data3 ... data n

control

Left Child Ptr Right Child Ptr

Parent Ptr

data1 data2 data n

node

Data row

Memory Data block

1000 홍길동 740212-1327233 포인터

1000 ...

Page 6: T-tree

T-tree 검색 알고리즘• 검색• T-tree 의 검색은 이진 트리에서의 검색과 유사

• 이진 트리에서는 한 개의 값만을 비교• T-tree 에서는 그 노드의 가장 작은 값과 가장 큰 값을 비교

• 알고리즘• 검색은 항상 트리의 루트 (root) 부터 시작한다 . • 만약 검색하려는 값이 그 노드의 가장 작은 값보다 작으면

왼쪽 서브 트리로 이동하여 계속해서 검색을 한다 . • 그렇지 않고 만약 검색 값이 그 노드의 가장 큰 값보다

크면 오른쪽 서브 트리로 이동하여 계속 검색한다 . • 그렇지 않으면 현재 노드에서 찾는다 .

Page 7: T-tree

T-tree 검색 알고리즘

20 21 22 23

7 8 9 10

1 3 5 6 13 14 15 16

38 39 40 41

30 31 32 33 45 46 47

50

1. 14 찾기

20>14 왼쪽 자식노드로 이동

10<14 오른쪽 자식노드로 이동

13<14<16 사이의값 노드에서 검색

Page 8: T-tree

T-tree 삽입 알고리즘

• 새로운 값이 삽입되고 나면 균형 (balance) 인지를 검사• 만약 삽입 후에 불균형 (unbalance) 이 되면 적당한 재균형 (rebala

nce) 연산

• 알고리즘• 삽입할 위치를 찾는다 . • 만약 삽입할 노드가 발견되면 , 삽입할 수 있는 여분의 방이

있는지를 검사하여 적당한 여분의 방이 있으면 삽입하고 종료한다 .

• 그렇지 않으면 , 가장 작은 아이템을 제거하고 삽입하려는 값을 삽입한 후 그 노드 단말 노드 (leaf) 에 제거한 값을 삽입한다 .

Page 9: T-tree

T-tree 삽입 알고리즘

• 만약 트리가 비어 있고 삽입할 값의 경계가 없으면 가장 나중에 삽입한다 . 만약 이 삽입된 값이 적당하면 그 값이 새로운 가장 작은 값이 되던지 아니면 가장 큰 값이 될 수도 있다 .

• 그렇지 않으면 새로운 노드를 생성한다 .

• 만약 새로운 단말 노드가 첨가되면 단말 노드부터 루트까지의 경로에 대한 균형을 검사한다 .

Page 10: T-tree

T-tree 삽입 알고리즘

20 21 22 23

7 8 9 10

1 3 5 6 13 14 15 16

38 39 40 41

30 31 32 33 45 46 47

50

1. 51 삽입

51>23 오른쪽 자식노드로 이동

51>41 오른쪽 자식노드로 이동

45 46 47 50 51 정렬 45 를 왼쪽 자식 노드로 분할

45

46 47 50 51

Page 11: T-tree

T-tree 삭제 알고리즘• 삭제 알고리즘은 삽입 알고리즘과 유사

• 삭제할 아이템을 찾아서 삭제한 후 , 필요하다면 재균형을 실행

• 알고리즘• 삭제할 값을 가지고 있는 노드를 찾는다 . • 만약 삭제 연산이 언더플로우를 야기 시키지 않는다면 단순히 그

값을 삭제하고 종료한다 . • 그렇지 않고 만약 중간 노드 (internal node) 라면 , 그 값을

삭제하고 단말 노드 또는 한쪽 단말 노드로부터 작은 값들 중에서 가장 큰 값을 가지고 온다 .

Page 12: T-tree

T-tree 삭제 알고리즘• 만약 단말 노드 또는 한쪽 단말 노드가 있으면 아이템을

삭제한다 . • 만약 노드가 한쪽 단말 노드이고 한 단말 노드와 병합시킬 수

있다면 , 두 개의 노드를 한 개의 노드로 병합하고 다른 한 노드는 버리고 마지막 단계를 처리한다 .

• 그렇지 않으면 노드를 풀어주고 트리를 재균형하기 위해서 마지막 단계를 처리한다 .

• 단말 노드로부터 루트로 모든 노드에 대해서 높이가 1 보다 크면 로테이션 연산을 실행한다 . 균형 검사는 모든 노드들에 대해서 균형을 검사한다 .

Page 13: T-tree

T-tree 삭제 알고리즘

20 21 22 23

7 8 9 10

1 3 5 6 13 14 15 16

30 31 32 33

45 46 47 50

39 삭제

23<39 오른쪽 자식노드로 이동

38<39<41 검색후 삭제왼쪽자식노드에서 가장큰값을 가져와서 노드를 채운다

30 31 32

38 39 40 41 33 38 40 41

Page 14: T-tree

T-tree 의 재균형

• T-tree 에서의 재균형 연산은 AVL-tree 와 유사• LL , LR 로테이션• 단말 노드가 첨가 또는 삭제 되면 항상 검사• 삽입시 , 트리의 재균형은 대부분 한번의

로테이션이 요구• 삭제시 , 다른 노드에도 영향을 주기 때문에

균형이 될 때까지 로테이션을 수행

Page 15: T-tree

T-tree 의 장점 / 단점• T-tree 의 장점• B 트리가 해당 레코드를 포함하는데이터 페이지를 가르키고 있는데 반해 T-tree 의 해당

각각의 엔트리는 해당 레코드의 메모리 주소를 직접 포인팅하고 있기 때문에 T-tree 인덱스는논리적 주소를 물리적 주소로 변환하는 작업없이 원하는 레코드를 빠르게 접근할수 있다 .

• T-tree 는 인덱스 노드에 키값을 포함하지 않고 직접 메모리내의 레코드를 포인팅하고 있기 때문에 메모리 사용량을 줄일수있다 . 또한 인덱스 전체가 메모리에 상주하므로 디스크 입출력을 하지 않는다

• 메모리의 효율성과 삽입 / 삭제 시간의 융통성을 가짐

- 삽입시 발생할 수 있는 오버플로우 (overflow) 감소- 삭제시 발생할 수 있는 언더플로우 (underflow) 감소

• 단점1 차원 데이터에만 가능한 색인

Page 16: T-tree

T-tree 사용예 (MMDBMS)• MMDBMS(메인메모리 DBMS)• 출현 배경

• 고속 데이터 처리에 대한 요구 증가• 응용시스템의 복잡도 증가• 고속처리를 요구하는 응용분야 증가

• 메모리 대용량화 및 가격의 현실화• 주기억장치 기술의 발전

• 메모리 크기 제한 문제 극복• 64 비트 운영체제의 등장

• 정의• 주기억장치에 모든 데이터를 상주시키는 데이터베이스 시스템

Page 17: T-tree

T-tree 사용예 (MMDBMS)• 메인메모리 데이터베이스 시스템은 연산에 필요한 모든

데이터가 메인메모리에 올라와 있기 때문에 , 인덱스 구조의 핵심은 전체적인 계산 시간을 줄이고 메모리 사용량을 줄이는 데 있다 . 이러한 요구에 의해 , 메인메모리 데이터베이스에는 B- 트리의 장점과 AVL-트리의 장점을 결합한 T- 트리가 사용된다 . T- 트리는 B-트리에 비해 폭이 좁고 깊이는 깊은 구조를 가지는데 , 이것은 데이터를 접근할 때 필요한 계산 시간을 최소화 하는 장점이 있다 . 이러 한 구조는 균형을 유지하기 위해 필요한 회전 (Rotation) 연산 비용을 메인메모리 구조에 최 적화한 것으로 , 데이터 검색뿐만 아니라 데이터 변경에 따른 인덱스 구조 변경에 필요한 시간을 최소화하는 장점이 있다 .