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) 저장공간의 효율성이 떨어짐
T-tree 란 T-tree T-tree 의 노드 기존의 B-tree와 AVL-tree로부터 진화 내부 노드 -오른쪽, 왼쪽 서브 트리를 가짐. -내부 노드에 포함될 수 있는 데이터의 개수는 T트리 생성할 때 결정. 반쪽 리프 노드 -방향과 상관없이 한쪽 서브 트리 만을 갖는다. 리프 노드
T-tree 구성 T-tree 구성 노드 최고작은값 노드 최고 큰값 최고작은값보다 작으면 왼쪽 자식노드 최고큰값보다 크면 오른쪽 자식노드
T-tree의 구조 … node Data row Memory Data block 1000 홍길동 740212-1327233 data n Data row Memory Data block 1000 홍길동 740212-1327233 포인터 ...
T-tree 검색 알고리즘 검색 T-tree의 검색은 이진 트리에서의 검색과 유사 알고리즘 이진 트리에서는 한 개의 값만을 비교 T-tree에서는 그 노드의 가장 작은 값과 가장 큰 값을 비교 알고리즘 검색은 항상 트리의 루트(root)부터 시작한다. 만약 검색하려는 값이 그 노드의 가장 작은 값보다 작으면 왼쪽 서브 트리로 이동하여 계속해서 검색을 한다. 그렇지 않고 만약 검색 값이 그 노드의 가장 큰 값보다 크면 오른쪽 서브 트리로 이동하여 계속 검색한다. 그렇지 않으면 현재 노드에서 찾는다.
T-tree 검색 알고리즘 1. 14 찾기 20>14 왼쪽 자식노드로 이동 10<14 오른쪽 자식노드로 이동 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 20>14 왼쪽 자식노드로 이동 10<14 오른쪽 자식노드로 이동 13<14<16 사이의값 노드에서 검색
T-tree 삽입 알고리즘 새로운 값이 삽입되고 나면 균형(balance)인지를 검사 만약 삽입 후에 불균형(unbalance)이 되면 적당한 재균형(rebalance) 연산 알고리즘 삽입할 위치를 찾는다. 만약 삽입할 노드가 발견되면, 삽입할 수 있는 여분의 방이 있는지를 검사하여 적당한 여분의 방이 있으면 삽입하고 종료한다. 그렇지 않으면, 가장 작은 아이템을 제거하고 삽입하려는 값을 삽입한 후 그 노드 단말 노드(leaf)에 제거한 값을 삽입한다.
T-tree 삽입 알고리즘 만약 트리가 비어 있고 삽입할 값의 경계가 없으면 가장 나중에 삽입한다. 만약 이 삽입된 값이 적당하면 그 값이 새로운 가장 작은 값이 되던지 아니면 가장 큰 값이 될 수도 있다. 그렇지 않으면 새로운 노드를 생성한다. 만약 새로운 단말 노드가 첨가되면 단말 노드부터 루트까지의 경로에 대한 균형을 검사한다.
T-tree 삽입 알고리즘 1. 51삽입 45 46 47 50 51 정렬 45를 왼쪽 자식 노드로 분할 20 21 22 23 51>23 오른쪽 자식노드로 이동 7 8 9 10 38 39 40 41 51>41 오른쪽 자식노드로 이동 1 3 5 6 13 14 15 16 30 31 32 33 45 46 47 50 46 47 50 51 45 46 47 50 51 정렬 45를 왼쪽 자식 노드로 분할 45
T-tree 삭제 알고리즘 삭제 알고리즘은 삽입 알고리즘과 유사 삭제할 아이템을 찾아서 삭제한 후, 필요하다면 재균형을 실행 삭제할 값을 가지고 있는 노드를 찾는다. 만약 삭제 연산이 언더플로우를 야기 시키지 않는다면 단순히 그 값을 삭제하고 종료한다. 그렇지 않고 만약 중간 노드(internal node)라면, 그 값을 삭제하고 단말 노드 또는 한쪽 단말 노드로부터 작은 값들 중에서 가장 큰 값을 가지고 온다.
T-tree 삭제 알고리즘 만약 단말 노드 또는 한쪽 단말 노드가 있으면 아이템을 삭제한다. 만약 노드가 한쪽 단말 노드이고 한 단말 노드와 병합시킬 수 있다면, 두 개의 노드를 한 개의 노드로 병합하고 다른 한 노드는 버리고 마지막 단계를 처리한다. 그렇지 않으면 노드를 풀어주고 트리를 재균형하기 위해서 마지막 단계를 처리한다. 단말 노드로부터 루트로 모든 노드에 대해서 높이가 1 보다 크면 로테이션 연산을 실행한다. 균형 검사는 모든 노드들에 대해서 균형을 검사한다.
T-tree 삭제 알고리즘 39 삭제 23<39 오른쪽 자식노드로 이동 왼쪽자식노드에서 가장큰값을 가져와서 노드를 채운다 20 21 22 23 23<39 오른쪽 자식노드로 이동 왼쪽자식노드에서 가장큰값을 가져와서 노드를 채운다 38<39<41 검색후 삭제 7 8 9 10 38 39 40 41 33 38 40 41 1 3 5 6 13 14 15 16 30 31 32 33 30 31 32 45 46 47 50
T-tree의 재균형 T-tree에서의 재균형 연산은 AVL-tree와 유사 LL , LR 로테이션 단말 노드가 첨가 또는 삭제 되면 항상 검사 삽입시, 트리의 재균형은 대부분 한번의 로테이션이 요구 삭제시, 다른 노드에도 영향을 주기 때문에 균형이 될 때까지 로테이션을 수행
T-tree의 장점/단점 T-tree의 장점 단점 B트리가 해당 레코드를 포함하는데이터 페이지를 가르키고 있는데 반해 T-tree의 해당 각각의 엔트리는 해당 레코드의 메모리 주소를 직접 포인팅하고 있기 때문에 T-tree 인덱스는논리적 주소를 물리적 주소로 변환하는 작업없이 원하는 레코드를 빠르게 접근할수 있다. T-tree는 인덱스 노드에 키값을 포함하지 않고 직접 메모리내의 레코드를 포인팅하고 있기 때문에 메모리 사용량을 줄일수있다. 또한 인덱스 전체가 메모리에 상주하므로 디스크 입출력을 하지 않는다 메모리의 효율성과 삽입/삭제 시간의 융통성을 가짐 -삽입시 발생할 수 있는 오버플로우(overflow) 감소 -삭제시 발생할 수 있는 언더플로우(underflow) 감소 단점 1차원 데이터에만 가능한 색인
T-tree 사용예(MMDBMS) MMDBMS(메인메모리 DBMS) 출현 배경 고속 데이터 처리에 대한 요구 증가 응용시스템의 복잡도 증가 고속처리를 요구하는 응용분야 증가 메모리 대용량화 및 가격의 현실화 주기억장치 기술의 발전 메모리 크기 제한 문제 극복 64비트 운영체제의 등장 정의 주기억장치에 모든 데이터를 상주시키는 데이터베이스 시스템
T-tree 사용예(MMDBMS) 메인메모리 데이터베이스 시스템은 연산에 필요한 모든 데이터가 메인메모리에 올라와 있기 때문에, 인덱스 구조의 핵심은 전체적인 계산 시간을 줄이고 메모리 사용량을 줄이는 데 있다. 이러한 요구에 의해, 메인메모리 데이터베이스에는 B-트리의 장점과 AVL-트리의 장점을 결합한 T-트리가 사용된다. T-트리는 B-트리에 비해 폭이 좁고 깊이는 깊은 구조를 가지는데, 이것은 데이터를 접근할 때 필요한 계산 시간을 최소화 하는 장점이 있다. 이러 한 구조는 균형을 유지하기 위해 필요한 회전(Rotation) 연산 비용을 메인메모리 구조에 최 적화한 것으로, 데이터 검색뿐만 아니라 데이터 변경에 따른 인덱스 구조 변경에 필요한 시간을 최소화하는 장점이 있다.