8第八讲 高维索引结构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
D
F
G
1、从要分裂的节点 中首先选择两个数据, 作为分裂后的新节点 的种子;
原则:其最小 外接矩形面积 最大的两个。
E
P
G D
2、依次从剩余的数据选 择这样的项:两个新节点 为了容纳下该项,需要扩 大的面积之差最大。 然后将该数据放入面积需 要扩大较小的节点中。 28
G D
P
G D
P
ECUST--Jing Zhang
构造索引结构:必要的、可行的 通过重新组织数据,减小磁盘访问代价,提高查询速度
ECUST--Jing Zhang
索引结构
4
关于“索引”
索引的主要用途是查找数据。利用索引可以有效地 管理大量的数据,并快速的从这些数据中查找到特 定的数据。 影响查询效率的关键因素是磁盘的I/O次数,利用 索引技术可以有效的减少I/O次数 传统数据库的索引结构:
F K G B E H J I M D E F G
2:到达叶子节点后, 如节点中仍有剩余的 空间,则将数据插入, 然后依次修改祖先节 点中的相应项的数据。
A D
A B C
H I J K
L M wk.baidu.comO
O
L
N C
ECUST--Jing Zhang
3:如果叶子节点中已经没有足够的空 间,则要进行分裂操作,并产生一个 新的项,插入到其父节点中
ECUST--Jing Zhang
刚才的数据生成的B树
6
首先,将根结 点读入内存
14 19
28 将该叶子 结点读入 内存
24 33
共需要两次 I/O操作
2 3 5 7 14 16 19 20 22
ECUST--Jing Zhang
24 27 29
33 34 38 39
索引结构的本质:空间换时间
7
F D
G
3、如其中一个新节点中所 包含的数据太少,使得需 要把所有剩余的放入才能 达到节点规定的最小项的 数目,则将剩余的所有数 据放入该节点。
E
P
F D E
G
P
29
ECUST--Jing Zhang
R-tree
30
R-tree算法主要存在以下缺陷:
内部节点存在重叠现象,由于节点间数据的相互重 叠,在进行查询的时候,可能要遍历多条路径,查 找多个叶子节点,最坏的情况下,要遍历所有的路 径。 R-tree只对20维以下的数据较为有效,当维数逐渐 增大的时候,内部节点中的重叠现象迅速恶化,导 致查询性能急剧下降,使索引变的毫无意义,也就 是通常所说的“维数灾难”。
L M N
影响查询效率的主要因素:
1、重叠区域 ( Overlap ):导致查询时遍历多个路径 2、死空间 (dead space):导致查询时遍历不必要的路径
为了提高查询效率,在构建R-tree的时候要尽量减少重 叠区域和死空间的面积
19
ECUST--Jing Zhang
20
1:向R-tree中插入一个数据,首先从根 节点出发,在所经过的所有内部节点中 选择这样的项:它所指向的子节点为了 容纳下该数据面积需要扩大的最小;如出 现相同的情况,则选择面积较小的那个。
18
查询定义:对于给定的查 询区域q, 查询所有与q相交 的数据。
A D
F
K G B J I
从根节点开始,对所 有内部节点,查找所 有与q相交的项所指 向的子节点;到达叶 子节点后,输出所有 与q相交的数据。
E
H
A B C
M N L C
ECUST--Jing Zhang
D E F G
H I J K
R-tree及其变种,kd-tree,Quad-tree, GC-Tree等
基于近似的索引结构
VA-File, LPC-File, CVA-File, VA+-File等
基于降维的索引方法
Pyramid-Technique ,iMinMax(θ) ,iDistance 等
基于聚类的索引方法
Clindex,VQ-Index 等
C
22 ECUST--Jing Zhang
1: 2: 3: 4:
H I J K +R
H I J
+ R K
生成一个新的项S,插入到父节点中 由于此时根节点已经没有剩余的空间,根节点要发生分裂
A Q B C
+S
A C
+ B Q S
23
ECUST--Jing Zhang
U
A D E F
T
U T K G
R-tree
14
1984年由Guttman提出 是B+-tree树在高维数据空间的扩展 是一种高度平衡树 用原始数据的最小边界矩形表示数据 其插入、删除、更新操作都类似于B+-tree树 能够有效支持的数据的维数:20维以下 可以进行点查询和范围查询
ECUST--Jing Zhang
R-tree
R*-tree的改进之一 提出了强制重新插入的概念 在数据的插入过程中,如果节点出现了溢出, 并不马上对该节点进行分裂操作,而是将节点 中一定比例的项从节点中删除,重新插入到树 中,如果在这次重新插入的过程中,该层的所 有节点中又出现了溢出,此时再考虑对节点进 行分裂。 另:SS-tree以及SR-tree又改进了该算法,即判 断是否进行分裂时,并不是看该层节点中是否 已经有节点进行过重新插入,而是根据该节点 是否进行过重新插入。
R+-tree
35
R+-tree存在的问题
插入的时候可能向几个叶子节点中插入数据 在内部节点分裂的时候,不仅要考虑分裂对祖先节 点的影响,还要考虑对孩子节点的影响,复杂度远 远大于R-tree。 当维数较高,数据较为密集的时候,R+-tree的效率 远比想象中差的多。
ECUST--Jing Zhang
采用了clipping的方法,即一个数据可以被分割开来,同时 存放在几个不同的叶子节点中。解决了R-tree中内部节点 重叠的问题。 不要求节点内必须包含大于等于最大节点的一半的数据。 叶子节点可能重复。
R+-tree比R-tree具有更好的查找性能(特别是对点 查询),但是比R-tree占据更多的存储空间 支持点查询和范围查询
A D E H J I M N L
25
F
K G B
如节点中已经没有 足够多的项,则将 该节点从树中删除, 并将节点中的所有 项重新插入到树中。
A B C
D E F G
ECUST--Jing Zhang
H I J K
L M N
C
分裂算法
分裂算法希望能使以后 的查询操作中,尽量少 的对分裂后的两个子节 点同时进行查询。 决定是否对子节点进行 查询访问,要根据查询 区域是否与子节点的 MBR相交来决定
ECUST--Jing Zhang
高维数据的特点
9
一维数据索引结构无法适用于高维数据 高维数据的特点:
具有复杂的结构:有可能是高维空间的一个点, 也有可能是复杂的图形 无法对高维数据排序:即不能找到一个合适的方 法,使得在高维空间相近的数据在排序后仍然相 近
很难找到一种排序规则来完全表 明这4个点的空间位置关系,更不 用说高维空间中的点
R树类索引结构上实现最近邻查询的方法 多维索引方法的演变
ECUST--Jing Zhang
为何需要索引结构?
3
实际应用需要索引结构
在关系数据库中用B-Tree提高查询速度 在GIS中采用R-Tree快速查询离某城市最近的河流 在图象检索系统中用VA-File快速查询相似图象
海量的、静态的 海量的、静态的多媒体数据库
ECUST--Jing Zhang
A D
F
K G B
A D
F
K G B J I
E
H
J I
E
H P
M N L C N
M
L C
33
ECUST--Jing Zhang
A B C P
D E F G
I J K
L M N
G H
节点之间没有了重 叠,因此可以在查 询的时候提高效率。
34
ECUST--Jing Zhang
B树:键值一维排序,不能搜索多维空间 哈希表:数值精确匹配,不能进行范围查询
ECUST--Jing Zhang
一个简单的B树
5
一个B树的简单的例子:
数据
24,33,16,2,7,20,22,3,5,27, 39,34,38,14,29,19
每四个数据占用一个磁盘页 16个数据占用了四个磁盘页 查找数据28 需要四次I/O操作
R*-tree
36
R*-tree采用了R-tree一样的结构 R*-tree对R-tree的改进
引入强制重新插入机制对R-Tree的性能进行改进 在选择插入路径时同时考虑矩形的面积、空白区 域和重叠的大小
R*-tree是所有拥有R-tree同样结构的索引中最 成功的一种 支持点查询和范围查询
ECUST--Jing Zhang
13
Packed R-tree
P-tree
DA S-tree B R-tree Cell tree X-tree
TV -tree R+-tree Parallel R-tree SS-tree SR-tree R*-tree A -tree
M -tree
Slim-tree
ECUST--Jing Zhang
R Q
J I
B
S A C B S Q
P
H
M N
O
L D E F N M O L H I J KH I J G P
C
24 ECUST--Jing Zhang
2:如删除后节点 1:从R-tree中删除一个数据,首先要进 中仍有足够多的项, 行一次精确匹配查询,查找在R-tree中 则依次修改祖先节 是否存在该数据,如不存在,删除失败; 点中的数据,删除 如存在,则从叶子节点中删除该数据 结束;
划分和有序组织数据 | 减少不必要磁盘访问 | 节省查询时间
ECUST--Jing Zhang
高维数据
8
什么是高维数据?
高维数据就是高维空间的数据 图形数据库中的数据
两维空间中的点、线、矩形 三维空间中的点、立方体、球
应用领域如:CAD , 医学
多媒体数据库中的特征矢量
高维空间的点数据 应用领域如:图象检索
第八章 高维数据索引结构
张静 (Jingzhang@ecust.edu.cn)
主要内容
2
研究索引结构的动机 高维数据索引结构
R-tree A-tree R*-tree
高维数据索引结构的概念 树形索引结构
- SR-tree - X-tree - k-d-tree -SS-tree
VA-File类索引结构 基于降维的索引方法 基于聚类的索引方法
15
表示数据的方法
由于高维数据类型复杂,无法在索引结构中直接表 示原始数据,在R-tree中用原始数据的最小外接矩 形(MBR: Minimal Bounding Rectangle)来表示数据。
ECUST--Jing Zhang
R-tree
16
R-tree结构的特点:
M表示节点中可存放项的数目的最大值,m (m<=M/2)表示最小值,则一个节点中必须包含 m—M个项,根节点除外。 根节点至少包含两个项,除非它是叶子节点 所有的叶子节点在同一层上
ECUST--Jing Zhang
高维数据索引结构的发展
10
70年代随着在CAD中处理大量的图形数据而出 现的。 近年来应用领域越来越广泛,尤其在多媒体数 据库方面。 30多年来,人们提出了近百种高维数据索引结 构。
ECUST--Jing Zhang
高维索引结构的一种简单分类
11
树形的高维索引结构
等等
ECUST--Jing Zhang
高维数据的查询方法
12
查询类型
点查询
特征矢量,精确匹配
范围查询
特征矢量,查询范围
K近邻查询
特征矢量,整数k
不同高维索引结构对应不同的查询方法,有些索引结 构可支持以上三种不同类型的查询,有些只支持其中 一种或两种查询方法
ECUST--Jing Zhang
R树类索引结构
ECUST--Jing Zhang
R-tree的变种
31
为了能够减少内部节点之间的重叠问题,在Rtree的基础上又相继提出了以下一些索引结构:
R+ -tree R* -tree X -tree SS-tree SR-tree A-tree
ECUST--Jing Zhang
R+-tree
32
采用R-tree一样的结构 与R-tree的不同之处
分裂算法的原则:分裂之后使两个子节 点所覆盖的区域面积之和尽量的小。
26
ECUST--Jing Zhang
第一种分裂算法:穷尽组合法
对每一种分裂的可能情况都进行一 次计算,从中选择最好的一种做为 分裂结果。 优点:分裂效果好 缺点:时间代价过大
27
ECUST--Jing Zhang
A
第二种分裂算法:二次花费算法
ECUST--Jing Zhang
一个R树的例子
17
名称:内部结点 索引结点 目录结点 特点:不包含实 际的数。
A D
F
K G B A B C J I
E
H
M N L C
D E F G
H I J K
L M N
名称:叶子结点 特征:包含实际数据或者 指向实际数据的指针
ECUST--Jing Zhang
A D
F
K G
E
P
Q
H J I
B
A B C
M N
D E F G
H I J K
L M NO
O P
L
21
C
ECUST--Jing Zhang
1:
D E F G
+P
D E F
+ G P
2: 生成一个新的项Q,插入到父节点中
A D
F
K G
R Q
B J I A Q B C
E
P
H
M N
O
L D E F G P H I J K L M NO
相关文档
最新文档