2. KAIST IT 아카데미 C Programming B반
목차
학습 목표
R 트리 변형트리
R+ 트리
R+ 검색, 삭제, 장점
R* 트리
R* 트리 개선사항, 장점
2
3. KAIST IT 아카데미 C Programming B반
학습 목표
R 트리의 삽입과 삭제의 효율성, 노드 간의 겹치
는 영역으로 인해 검색비용 등을 해결하는 R 변형
트리
3
4. KAIST IT 아카데미 C Programming B반
R 트리 변형 트리
대표적 R 트리 변형 구조
R+ 트리
R 트리에서 노드간의 겹치는 영역을 없앰
k-d-B 트리의 특징이 접목
R* 트리
R 트리의 삽입 삭제 알고리즘 개선
4
5. KAIST IT 아카데미 C Programming B반
R+ 트리
R 트리의 MBR 의 겹침으로 검색 성능이 저하됨을 해결
같은 레벨의 노드 간에 겹침을 허용하지 않는다
겹치는 데이터는 리프 노드에 중복저장
R 트리와 다른 점
① R+ 트리의 노드는 적어도 ½이상의 엔트리로 채워져 있다
는 것을 보장해주지 않는다
② R+ 트리의 중간 노드의 엔트리들의 MBR 은 겹치지 않는
다
③ R+ 트리의 데이터 객체는 하나 이상의 리프노드에 저장될
수 있다.
5
9. KAIST IT 아카데미 C Programming B반
R+ 트리
R + 검색 1
9
3개의 노드 검색
R1 R2
R3 R4 R5 R6 R7 R8
r1 r13 r4 r6 r14 r4 r7 r12 r2 r10 r11 r3 r9 r11
a
b c
ed gf h
r4 r5 r8
i
11. KAIST IT 아카데미 C Programming B반
R+ 트리
R + 검색 2
11
임의의 영역에 중첩되는 데이터 객체를 모두 검색하는
범위 검색질의의 경우 R 트리와 같이 여러 경로를 탐색
12. KAIST IT 아카데미 C Programming B반
R+ 트리
R 트리 검색 (점 검색 질의)
12
13. KAIST IT 아카데미 C Programming B반
R+ 트리
R 트리 검색 (점 검색 질의)
13
14. KAIST IT 아카데미 C Programming B반
R+ 트리
R + 검색 3(점 검색 질의)
14
15. KAIST IT 아카데미 C Programming B반
R+ 트리
R + 검색 3(점 검색질의)
15
16. KAIST IT 아카데미 C Programming B반
R + 트리의 삽입
일반적으로 R 트리보다 복잡함
하나의 데이터가 여러 리프를 중복 저장할 경우가 있기
때문
데이터 삽입 시
데이터 객체를 삽입 해야 될 리프 노드를 찾음
삽입하는 데이터 객체의 MBR이 중간 노드의 MBR과 중첩되면
중첩된 MBR을 통하는 모든 경로를 따라 도달하는 모든 리프노드
에
중복 저장해야만 된다.
삽입 해야 될 데이터객체의 MBR이 기존노드의 MBR 에 포함되
지
않으면 기존 MBR을 확장해서 다시 조정
리프노드가 만원이면 R 트리와 같이 노드 분할 해야 한다.
16
17. KAIST IT 아카데미 C Programming B반
R + 트리의 삭제
데이터 삭제
삭제해야 될 객체가 둘 이상의 리프 노드에 중복 저장되어 있을
수 있어, 해당 리프 노드 전부를 탐색해서 해당 객체를 모두 삭제
삭제 연산이 많이 수행된 뒤 공간활용도를 위해 주기적으로
서브트리들을 재구성
17
18. KAIST IT 아카데미 C Programming B반
R + 장 단점
R+ 장점
MBR 이 겹치는 문제점을 해결
불필요한 노드 탐색을 줄임
R+ 단점
R+ 트리의 경우 노드 분할이 하위 노드로 파급될 수 있음
리프 노드에 중복 저장되는 데이터 객체의 수는 데이터의 분포,
수에
영향을 받아 성능이 저하될 수 있음
18
19. KAIST IT 아카데미 C Programming B반
R* 트리
R 트리 보다 효율적으로 개선하기 위하여 제안
삽입이나 삭제 연산 과정에서 부모 노드 MBR이 효율적으로
확장 될 수 있도록 관련 알고리즘을 개선한 R 트리
R 트리
중간 노드의 MBR을 최소로 하는 것, 중첩이 되는 영역의 크
기를 최소화 하는 것이 성능향상에 큰 영향을 가진다.
두 가지를 동시에 최소화하는 것은 매우 어려움
기존 R 트리에서는 삽입과 삭제로 인해 MBR 크기조정을
MBR의 면적이 최소가 되도록 하는 기준
19
20. KAIST IT 아카데미 C Programming B반
R* 트리
R 트리 질의 처리시 고려해야 할 사항
① 면적의 최소화 : 경로를 높은 레벨에서 일찍 결정함으로써
탐색경로를 줄임
② 중첩영역의 최소화 : 탐색 경로 수를 줄임
③ 둘레길이 최소화 : 정사각형에 가까운 모양이 됨으로써 긴
직사각형의 MBR 보다 상위 레벨에서 묶기 편함
④ 저장공간 활용도의 최적화 : 트리 노드 수를 줄일 수 있고,
트리의 높이를 낮아지게 함
20
22. KAIST IT 아카데미 C Programming B반
R* 트리의 개선 사항
ChooseLeaf()알고리즘 개선
22
R 트리(면적 최소화) R* 트리(중첩 영역 최소화)
데이터 삽입을 위한 리프 노드를 선택 시
데이터 객체를 포함한 MBR의 면적 크기가
가장 작게 증가하는 노드를 루트에서부터
차례대로 최종적으로 리프 노드를 선택
중간 노드를 선택 하는 경우 R 트리와 동일
리프 노드 선택 시 에는 중첩 영역의 증가를
최소화 하는 MBR을 선택
중첩영역의 증가가 같으면 기존의 면적
최소화를 기초로 선택
23. KAIST IT 아카데미 C Programming B반
R* 트리의 개선 사항
노드 분할 알고리즘 변경
① 분할 축(split axis) 선택
: 분할된 두 MBR 의 둘레 길이의 합이 최소가 되는 축을
분할 축으로 결정한다.(둘레 길이 최소화)
② 분할 인덱스(split index) 선택
: 선택된 분할 축을 따라 엔트리를 두 그룹으로 분할
우선 중첩영역이 가장 작은 분할을 선택(중첩영역 최소화)
중첩영역의 크기가 같은 경우 면적이 가장 작은 분할을 선택
(면적 최소화)
23
24. KAIST IT 아카데미 C Programming B반
R* 트리의 개선 사항
노드 분할 알고리즘 변경
24
b 5
3
4
2
1
a
b 5
3
4
2
1
5
3
4
2
1
b 5
3
4
2
1
b
a
aa
X-axis
Y-axis
Node capacity : 4
Minimun : 3
25. KAIST IT 아카데미 C Programming B반
R* 트리의 개선 사항
노드 분할 알고리즘 변경
(중첩영역의 중가가 최소화 일 경우 면적의 합이 최소화를
선택)
25
a
b 5
3
4
2
1
5
3
4
2
1
b
a
X-axis Y-axis
26. KAIST IT 아카데미 C Programming B반
R* 트리의 개선 사항
강제 재삽입 전략(1/2)
R 트리 경우 데이터 객체의 삽입 순서에 따라 트리의 모양이
다름-> 삽입된 트리에 의해 만들어진 MBR 들에 의하여 다음
에 삽입 될 데이터 객체의 위치가 정해지기 때문
객체의 삽입순서를 달리 한다면 노드의 분할 없이도 객체를 삽
입할 수 있는 경우 오버플로우가 발생해 노드를 분할하는 문제
가 발생 할 수 있음
26
27. KAIST IT 아카데미 C Programming B반
R* 트리의 개선 사항
강제 재삽입 전략(2/2)
R* 트리는 엔트리의 삽입 도중 오버플로우 발생시 노드 분할 전
강제 재삽입을 시도
루트가 아닌 경우, 노드에 삽입되어야 할 (M+1)개의 엔트리 중에
노드의 중심에서 가장 멀리 떨어져있는 p개의 엔트리를 삭제하
고
노드의 MBR을 재조정
재조정이 끝난 후 삭제된 p개의 엔트리를 강제로 재삽입
27
28. KAIST IT 아카데미 C Programming B반
R* 트리의 개선 사항
강제 재삽입 전략
28
r1
r3
r2
r4
r5
r6
R2 R3
R1
r1
r3
r2
r4
r5
r6
R2 R3
R1
29. KAIST IT 아카데미 C Programming B반
R* 트리의 개선 사항
강제 재삽입 전략
29
R1
R2 R3
r5 r6 r4r1 r2 r3
A
B
C D
r4
30. KAIST IT 아카데미 C Programming B반
R* 트리의 개선 사항
강제 재삽입 전략
30
R1
R2 R3
r5 r6 r1r4 r2 r3
A
B
C D
31. KAIST IT 아카데미 C Programming B반
R* 트리의 개선 사항
강제 재삽입 이점
중첩영역이 감소
: 자신의 노드 바깥쪽에 위치한 엔트리를 인접 노드와 교환하게 되
는
것이 되므로 결과적으로 노드의 중첩영역을 줄일 수 있다.
분할 비용이 감소
: 노드의 분할 빈도를 줄이게 되므로 노드 분할 비용을 줄일 수 있
다
MBR 모양이 정사각형에 근사
: 바깥쪽의 엔트리를 재삽입함으로써 노드의 MBR 모양이 정사각
형에 가깝게 되고 질의 처리 성능 향상을 가져옴
31
32. KAIST IT 아카데미 C Programming B반
R* 트리 장점
R* 트리의 장점
R 트리의 기본구조, 연산을 그대로 유지
일부 알고리즘을 수정하거나 추가한 것으로 구현이 간단함
R 트리의 여러 변형 중에 가장 널리 사용됨
32