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

Weitere ähnliche Inhalte

Was ist angesagt?

TIAD 2016 : Network automation with Ansible and OpenConfig/YANG
TIAD 2016 : Network automation with Ansible and OpenConfig/YANGTIAD 2016 : Network automation with Ansible and OpenConfig/YANG
TIAD 2016 : Network automation with Ansible and OpenConfig/YANGThe Incredible Automation Day
 
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜Takahiro Inoue
 
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...Ryuichi Yasunaga
 
3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめTetsuya Hasegawa
 
LoRaWAN 土壌&ECセンサ - LSE01日本語ユーザーマニュアル
LoRaWAN 土壌&ECセンサ - LSE01日本語ユーザーマニュアルLoRaWAN 土壌&ECセンサ - LSE01日本語ユーザーマニュアル
LoRaWAN 土壌&ECセンサ - LSE01日本語ユーザーマニュアルCRI Japan, Inc.
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説貴仁 大和屋
 
Accelerate SDN/NFV Network ~ネットワーク高速化のアレコレ~ - OpenStack最新情報セミナー 2016年3月
Accelerate SDN/NFV Network ~ネットワーク高速化のアレコレ~ - OpenStack最新情報セミナー 2016年3月 Accelerate SDN/NFV Network ~ネットワーク高速化のアレコレ~ - OpenStack最新情報セミナー 2016年3月
Accelerate SDN/NFV Network ~ネットワーク高速化のアレコレ~ - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史Takashi Takizawa
 
LoRaWAN ドアセンサ LDS02 日本語ユーザーマニュアル
LoRaWAN ドアセンサ LDS02 日本語ユーザーマニュアルLoRaWAN ドアセンサ LDS02 日本語ユーザーマニュアル
LoRaWAN ドアセンサ LDS02 日本語ユーザーマニュアルCRI Japan, Inc.
 
PrometheusによるKubernetes環境の異常検知改善.pptx
PrometheusによるKubernetes環境の異常検知改善.pptxPrometheusによるKubernetes環境の異常検知改善.pptx
PrometheusによるKubernetes環境の異常検知改善.pptxTakashiTsukamoto4
 
SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】ProjectDC-01
 
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜LINE Corporation
 
eBPFは何が嬉しいのか
eBPFは何が嬉しいのかeBPFは何が嬉しいのか
eBPFは何が嬉しいのかYutaro Hayakawa
 
さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢ytanno
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011Hiroh Satoh
 
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成Takashi Kanai
 
A 30-minute Introduction to NETCONF and YANG
A 30-minute Introduction to NETCONF and YANGA 30-minute Introduction to NETCONF and YANG
A 30-minute Introduction to NETCONF and YANGTail-f Systems
 

Was ist angesagt? (20)

TIAD 2016 : Network automation with Ansible and OpenConfig/YANG
TIAD 2016 : Network automation with Ansible and OpenConfig/YANGTIAD 2016 : Network automation with Ansible and OpenConfig/YANG
TIAD 2016 : Network automation with Ansible and OpenConfig/YANG
 
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
 
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
 
3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ
 
AI/ML O-RAN Cloud-Native Automation
AI/ML O-RAN Cloud-Native AutomationAI/ML O-RAN Cloud-Native Automation
AI/ML O-RAN Cloud-Native Automation
 
LoRaWAN 土壌&ECセンサ - LSE01日本語ユーザーマニュアル
LoRaWAN 土壌&ECセンサ - LSE01日本語ユーザーマニュアルLoRaWAN 土壌&ECセンサ - LSE01日本語ユーザーマニュアル
LoRaWAN 土壌&ECセンサ - LSE01日本語ユーザーマニュアル
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 
Accelerate SDN/NFV Network ~ネットワーク高速化のアレコレ~ - OpenStack最新情報セミナー 2016年3月
Accelerate SDN/NFV Network ~ネットワーク高速化のアレコレ~ - OpenStack最新情報セミナー 2016年3月 Accelerate SDN/NFV Network ~ネットワーク高速化のアレコレ~ - OpenStack最新情報セミナー 2016年3月
Accelerate SDN/NFV Network ~ネットワーク高速化のアレコレ~ - OpenStack最新情報セミナー 2016年3月
 
#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史
 
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
 
LoRaWAN ドアセンサ LDS02 日本語ユーザーマニュアル
LoRaWAN ドアセンサ LDS02 日本語ユーザーマニュアルLoRaWAN ドアセンサ LDS02 日本語ユーザーマニュアル
LoRaWAN ドアセンサ LDS02 日本語ユーザーマニュアル
 
PrometheusによるKubernetes環境の異常検知改善.pptx
PrometheusによるKubernetes環境の異常検知改善.pptxPrometheusによるKubernetes環境の異常検知改善.pptx
PrometheusによるKubernetes環境の異常検知改善.pptx
 
SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】
 
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
 
eBPFは何が嬉しいのか
eBPFは何が嬉しいのかeBPFは何が嬉しいのか
eBPFは何が嬉しいのか
 
Router commands
Router commandsRouter commands
Router commands
 
さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
 
A 30-minute Introduction to NETCONF and YANG
A 30-minute Introduction to NETCONF and YANGA 30-minute Introduction to NETCONF and YANG
A 30-minute Introduction to NETCONF and YANG
 

R변경구조

  • 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
  • 6. KAIST IT 아카데미 C Programming B반 R+ 트리  R + 구조 6
  • 7. KAIST IT 아카데미 C Programming B반 R+ 트리  R + 트리 7
  • 8. KAIST IT 아카데미 C Programming B반 R+ 트리  R + 검색 8
  • 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
  • 10. KAIST IT 아카데미 C Programming B반 R+ 트리  R + 검색 2 10
  • 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
  • 21. KAIST IT 아카데미 C Programming B반 R* 트리  R* 트리 21
  • 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
  • 33. KAIST IT 아카데미 C Programming B반 Q & A 33