SlideShare a Scribd company logo
1 of 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

More Related Content

What's hot

PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
Satoshi Nagayasu
 
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectYAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
Ryo Ito
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
VMware Tanzu Korea
 
ログイン前セッションフィクセイション攻撃の脅威と対策
ログイン前セッションフィクセイション攻撃の脅威と対策ログイン前セッションフィクセイション攻撃の脅威と対策
ログイン前セッションフィクセイション攻撃の脅威と対策
Hiroshi Tokumaru
 

What's hot (20)

SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更
 
강의자료 스마트폰 기초(2012.12.05)
강의자료 스마트폰 기초(2012.12.05)강의자료 스마트폰 기초(2012.12.05)
강의자료 스마트폰 기초(2012.12.05)
 
FIWARE勉強会 20190913
FIWARE勉強会 20190913FIWARE勉強会 20190913
FIWARE勉強会 20190913
 
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
 
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
 
한국어 문서 추출요약 AI 경진대회- 좌충우돌 후기
한국어 문서 추출요약 AI 경진대회- 좌충우돌 후기한국어 문서 추출요약 AI 경진대회- 좌충우돌 후기
한국어 문서 추출요약 AI 경진대회- 좌충우돌 후기
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
에너지절약 스마트아이 제안서
에너지절약 스마트아이 제안서에너지절약 스마트아이 제안서
에너지절약 스마트아이 제안서
 
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
 
Iocp advanced
Iocp advancedIocp advanced
Iocp advanced
 
Code igniter + ci phpunit-test
Code igniter + ci phpunit-testCode igniter + ci phpunit-test
Code igniter + ci phpunit-test
 
SASによるインメモリ分散並列処理 レコメンドプロシジャ入門
SASによるインメモリ分散並列処理 レコメンドプロシジャ入門SASによるインメモリ分散並列処理 レコメンドプロシジャ入門
SASによるインメモリ分散並列処理 レコメンドプロシジャ入門
 
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectYAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
 
こわくない同時実行制御
こわくない同時実行制御こわくない同時実行制御
こわくない同時実行制御
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
 
법령 온톨로지의 구축 및 검색
법령 온톨로지의 구축 및 검색법령 온톨로지의 구축 및 검색
법령 온톨로지의 구축 및 검색
 
ログイン前セッションフィクセイション攻撃の脅威と対策
ログイン前セッションフィクセイション攻撃の脅威と対策ログイン前セッションフィクセイション攻撃の脅威と対策
ログイン前セッションフィクセイション攻撃の脅威と対策
 
ASTERIA WARP開発前に知っておくべき10の鉄則(AUG関西支部編)
ASTERIA WARP開発前に知っておくべき10の鉄則(AUG関西支部編)ASTERIA WARP開発前に知っておくべき10の鉄則(AUG関西支部編)
ASTERIA WARP開発前に知っておくべき10の鉄則(AUG関西支部編)
 

Recently uploaded

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
Wonjun Hwang
 

Recently uploaded (6)

오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
 

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