空间数据库索引技术
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章
空间数据库索引技术
1
空间数据索引技术
2
B树索引
可扩展的哈希索引
3
4 5
空间填充曲线
1
5.1 空间数据索引技术
• 空间索引是指根据空间要素的地理位置、形状或 空间对象之间的某种空间关系,按一定的顺序排 列的一种数据结构,一般包括空间要素标识,外 包络矩形以及指向空间要素的指针。 • 空间索引的理解:可以想象一本书,其中书的内 容就相当于表里的数据,而书前面的目录就相当 于该表的索引。 • 空间索引目的是为了在GIS系统中快速定位到所 选中的空间要素,从而提高空间操作的速度和效 率。
21 23
磁盘块9
29 32
磁盘块10
36 37
磁盘块11 6
40 43
磁盘12
56 60
磁盘13
磁盘块5
磁盘块6
磁盘块8
2.B树的插入
初始B树( t = 3)
G M P X
范 围
1<=根结点的关键字个数<=5 2<=非根结点的关键字个数<=5
A
C
D
E
JKNORSTU V
Y
Z
未超出范围,直接插入。
n=0
n=1
n=2
n=3
图5-33 Hilbert曲线示例
谢谢
26
T XT X
x
A B D E J
C
L C
L
P
K
N
O
Q R S
U
V
Y
Z
y
14
5.3 可扩展的哈希索引
•网格文件是一种典型的基于哈希的存取方式,它是 由包含很多与数据桶相联系的单元的网格目录来实 现的。
•对于二维空间为平行于x或y轴的直线,这一超平面 将数据空间划分为两个子空间。所有的边界一起将 整个数据空间划分成许多k维的矩形子空间,这些矩 形子空间称为网格目录,由一个k维的数组表示。
最小度用t(t>=2)来表示, 最小度数即内结点中结 点最小孩子数目
5.2.3
B树的操作
1.搜索B树
例子:查找21
磁 15 35 盘 块 p2 p3 1 p1
磁 盘 块 2
3
p1 p2
9
p3
磁 盘 块 3
19
p1 p2
28
p3
磁 盘 块 4
39
p1 p2
44
p3
1
2
6
8
10 11
磁盘块7
16
18
网格文件查找
先找到涉及网格单元,并提取相应的数据页,然后比较数 据页的牧鞭是否满足查询要求即可。
网格文件插入
先进行一次精确查询定位该数据项插入的网格单元,提取 对应的数据页(数据桶存放的磁盘页)。若该磁盘页有空 间,将数据插入。若没有足够空间,则要根据与该页的联 系的单元的数目来分裂该数据页。
网格文件删除
5.2.1 B树索引的结构
5.2.2 B树索引的性质
1.每个结点的关键字是升 序排列 2.含有n个关键字的结点, 都包含n+1个指针指向其 孩子 3.叶子结点没有孩子,所有的叶子都处在同一层 4.父结点中第i个关键字 ≥ 第i个孩子的所有关键字 父结点中第i个关键字 ≤ 第i+1个孩子的所有关键字 5. 1 ≤ 根结点的关键字的个数≤2t – 1 t - 1≤非根结点的关键字的个数≤2t - 1
插入B
G M P X
A B
C
D
E
J
K
N
O
R
S
T
U V
Y
Z
7
插入Q
范 围
1<=根结点的关键字个数<=5 2<=非根结点的关键字个数<=5
G
M
P
T
X
A B C
D
E
J
K
N
O
R R S Q
T S
U V U
V
Y
Z
超出范围分裂,分裂为各含有t-1个关键字的结点, 中间关键字提升到其双亲结点中,然后将关键字插入。
D
J E G J
K
N
O
Q R S
U
V
Y
Z
12
左右兄弟够借,借调 关键字不在内结点x中,在子树中 左右兄弟不够借,合并
删除B
左右够 借,借调
x
C E
L
P
T
X
A BC
E
J
K
N
O
Q R S
U
V
Y
Z
y
代表未画 出的子树
13
左右兄弟够借,借调
关键字不在内结点x中,在子树中
左右兄弟不够借,合并
删除D
P
左右不 够借, 合并
需要借 关键字不在内结点x中, 在子树中
不需要借
10
关键字在叶结点中,直接删除
P
初始B树 (t=3)
C
G
M
T
X
A B
D
E
F
J
K L
N
O
Q R S
U
V
Y
Z
删除F
1<=根结点的关键字个数<=5 2<=非根结点的关键字个数<=5
P
C
G
M
T
X
A B
D
E F
J
K L
N
O
Q R S
U
V
Y
Z
11
◆左孩子够借,
(a)行排序
(b)Hilbert排序
图5-30 几种常用的空间填充编码方法
(c)Z排序
1) Z-ordering曲线(peano曲线)
• Z-排序(Z-ordering)技术将数据空间循环分解 到更小的子空间(被称为Peano Cell),每个子 空间根据分解步骤依次得到一组数字,称为该子 空间的Z-排序值。 • 子空间有不同的大小,Z-排序有不同的长度,显 然,子空间越大,相应的Z-排序值越短。这里, 分辨率(resolution)是指最大的分解层次,它 决定了Z-排序值的最大长度。
在网格文件中删除一个数据,也要进性一次精确查找确定 该数据所在正确的网格单元,提取对应数据页,从数据页 中删除该目标。
D5
D4
D6
网格文件插入目录示意图
5.4 空间填充曲线
• 空间填充曲线是一种重要的近似表示方法,将数据 空间划分成大小相同的网格,再根据一定的方法将 这些网格编码,每个格指定一个唯一的编码,并在 一定程度上保持空间邻近性,即相邻的网格的标号 也相邻,一个空间对象由一组网格组成。 这样可以将多维的空间数据降维表示到一维空间当 中。 • 理想的空间映射方法是:在多维空间中聚集的空间 实体,经过填充曲线编码以后,在一维空间中仍然 是聚集的。
5.3可扩展的哈希索引
• 目录项(即网格目录数组的元素)和网格单元之间 具有一对一的关系。网格目录的每一网格单元包含 一个外存页的地址,对应着一个数据桶,一般一个 数据桶为硬盘上一个磁盘页,这一外存页存储了包 含了网格单元的数据目标,称为数据页。
• 数据页所对应的一个或多个网格单元称之为存储区 域,存储区域两两不相交。每个数据桶往往可以包含 着几个相邻的单元,存储多个网格单元的目标,只 要这几个网格单元一起形成一矩形的区域。
2n ×2n个分区, 编号为0~2n ×2n-1
n=0
n=1
n=2
n=3
图5-31 Z-排序示例
2) Hilbert曲线
• 与Z-排序类似,Hilbert曲线也是一种空间填 充曲线,它利用一个线性序列来填充空间,其 构造过程如图5-33所示。 • 实验证明,Hi1bert曲线的方法比Z-排序好一 些,因为它没有斜线。不过Hilbert曲线算法 的计算量要比Z-排序复杂。
5.2 B树索引
B树索引是一个典型的树结构,始终是平衡的,也 就是说从Root节点到Leaf节点的任何一个路径都是 等距离的。 其包含的组件主要是: 叶子节点(Leaf node):包含的条目直接指 向表里的数据行。 分支节点(Branch node):包含的条目指向 索引里其他的分支节点或者是叶子节点。 根节点(Root node):一个B树索引只有一个 根节点,它实际就是位于树的最顶端的分支节点。
够借, 借调 关键字在内结点x中 不够借
借调直接前驱
◆左孩子不够借,右孩子
够借,借调直接后继 合并
删除G
若左右孩子不够借, 将右孩子合并到左孩子中去,并将所删关 键字做为左孩子的中间关键字,删除关键字,释放右孩子。
P
1<=根结点的关键字个数<=5 2<=非根结点的关键字个数<=5
T X
x
C
G
L
A B
8
插入W 自顶向下进行插入,分裂沿途中的每个满结点
P
x
T T XX
x x
U V W Y Z
G M G
M
P
A B C
D
E
J
K
N
O
R
S
x
9
3.B树的删除
自顶向下的方式进行删除 关键字在终端结点中,直接删除
◆左孩子够借,
够借, 借调
B树的删除
关键字在内结点x中
不够借
借调直接前驱 ◆左孩子不够借,右孩子 够借,借调直接后继 合并 左右兄弟够借,借调 左右兄弟不够借,合并
空间数据库索引技术
1
空间数据索引技术
2
B树索引
可扩展的哈希索引
3
4 5
空间填充曲线
1
5.1 空间数据索引技术
• 空间索引是指根据空间要素的地理位置、形状或 空间对象之间的某种空间关系,按一定的顺序排 列的一种数据结构,一般包括空间要素标识,外 包络矩形以及指向空间要素的指针。 • 空间索引的理解:可以想象一本书,其中书的内 容就相当于表里的数据,而书前面的目录就相当 于该表的索引。 • 空间索引目的是为了在GIS系统中快速定位到所 选中的空间要素,从而提高空间操作的速度和效 率。
21 23
磁盘块9
29 32
磁盘块10
36 37
磁盘块11 6
40 43
磁盘12
56 60
磁盘13
磁盘块5
磁盘块6
磁盘块8
2.B树的插入
初始B树( t = 3)
G M P X
范 围
1<=根结点的关键字个数<=5 2<=非根结点的关键字个数<=5
A
C
D
E
JKNORSTU V
Y
Z
未超出范围,直接插入。
n=0
n=1
n=2
n=3
图5-33 Hilbert曲线示例
谢谢
26
T XT X
x
A B D E J
C
L C
L
P
K
N
O
Q R S
U
V
Y
Z
y
14
5.3 可扩展的哈希索引
•网格文件是一种典型的基于哈希的存取方式,它是 由包含很多与数据桶相联系的单元的网格目录来实 现的。
•对于二维空间为平行于x或y轴的直线,这一超平面 将数据空间划分为两个子空间。所有的边界一起将 整个数据空间划分成许多k维的矩形子空间,这些矩 形子空间称为网格目录,由一个k维的数组表示。
最小度用t(t>=2)来表示, 最小度数即内结点中结 点最小孩子数目
5.2.3
B树的操作
1.搜索B树
例子:查找21
磁 15 35 盘 块 p2 p3 1 p1
磁 盘 块 2
3
p1 p2
9
p3
磁 盘 块 3
19
p1 p2
28
p3
磁 盘 块 4
39
p1 p2
44
p3
1
2
6
8
10 11
磁盘块7
16
18
网格文件查找
先找到涉及网格单元,并提取相应的数据页,然后比较数 据页的牧鞭是否满足查询要求即可。
网格文件插入
先进行一次精确查询定位该数据项插入的网格单元,提取 对应的数据页(数据桶存放的磁盘页)。若该磁盘页有空 间,将数据插入。若没有足够空间,则要根据与该页的联 系的单元的数目来分裂该数据页。
网格文件删除
5.2.1 B树索引的结构
5.2.2 B树索引的性质
1.每个结点的关键字是升 序排列 2.含有n个关键字的结点, 都包含n+1个指针指向其 孩子 3.叶子结点没有孩子,所有的叶子都处在同一层 4.父结点中第i个关键字 ≥ 第i个孩子的所有关键字 父结点中第i个关键字 ≤ 第i+1个孩子的所有关键字 5. 1 ≤ 根结点的关键字的个数≤2t – 1 t - 1≤非根结点的关键字的个数≤2t - 1
插入B
G M P X
A B
C
D
E
J
K
N
O
R
S
T
U V
Y
Z
7
插入Q
范 围
1<=根结点的关键字个数<=5 2<=非根结点的关键字个数<=5
G
M
P
T
X
A B C
D
E
J
K
N
O
R R S Q
T S
U V U
V
Y
Z
超出范围分裂,分裂为各含有t-1个关键字的结点, 中间关键字提升到其双亲结点中,然后将关键字插入。
D
J E G J
K
N
O
Q R S
U
V
Y
Z
12
左右兄弟够借,借调 关键字不在内结点x中,在子树中 左右兄弟不够借,合并
删除B
左右够 借,借调
x
C E
L
P
T
X
A BC
E
J
K
N
O
Q R S
U
V
Y
Z
y
代表未画 出的子树
13
左右兄弟够借,借调
关键字不在内结点x中,在子树中
左右兄弟不够借,合并
删除D
P
左右不 够借, 合并
需要借 关键字不在内结点x中, 在子树中
不需要借
10
关键字在叶结点中,直接删除
P
初始B树 (t=3)
C
G
M
T
X
A B
D
E
F
J
K L
N
O
Q R S
U
V
Y
Z
删除F
1<=根结点的关键字个数<=5 2<=非根结点的关键字个数<=5
P
C
G
M
T
X
A B
D
E F
J
K L
N
O
Q R S
U
V
Y
Z
11
◆左孩子够借,
(a)行排序
(b)Hilbert排序
图5-30 几种常用的空间填充编码方法
(c)Z排序
1) Z-ordering曲线(peano曲线)
• Z-排序(Z-ordering)技术将数据空间循环分解 到更小的子空间(被称为Peano Cell),每个子 空间根据分解步骤依次得到一组数字,称为该子 空间的Z-排序值。 • 子空间有不同的大小,Z-排序有不同的长度,显 然,子空间越大,相应的Z-排序值越短。这里, 分辨率(resolution)是指最大的分解层次,它 决定了Z-排序值的最大长度。
在网格文件中删除一个数据,也要进性一次精确查找确定 该数据所在正确的网格单元,提取对应数据页,从数据页 中删除该目标。
D5
D4
D6
网格文件插入目录示意图
5.4 空间填充曲线
• 空间填充曲线是一种重要的近似表示方法,将数据 空间划分成大小相同的网格,再根据一定的方法将 这些网格编码,每个格指定一个唯一的编码,并在 一定程度上保持空间邻近性,即相邻的网格的标号 也相邻,一个空间对象由一组网格组成。 这样可以将多维的空间数据降维表示到一维空间当 中。 • 理想的空间映射方法是:在多维空间中聚集的空间 实体,经过填充曲线编码以后,在一维空间中仍然 是聚集的。
5.3可扩展的哈希索引
• 目录项(即网格目录数组的元素)和网格单元之间 具有一对一的关系。网格目录的每一网格单元包含 一个外存页的地址,对应着一个数据桶,一般一个 数据桶为硬盘上一个磁盘页,这一外存页存储了包 含了网格单元的数据目标,称为数据页。
• 数据页所对应的一个或多个网格单元称之为存储区 域,存储区域两两不相交。每个数据桶往往可以包含 着几个相邻的单元,存储多个网格单元的目标,只 要这几个网格单元一起形成一矩形的区域。
2n ×2n个分区, 编号为0~2n ×2n-1
n=0
n=1
n=2
n=3
图5-31 Z-排序示例
2) Hilbert曲线
• 与Z-排序类似,Hilbert曲线也是一种空间填 充曲线,它利用一个线性序列来填充空间,其 构造过程如图5-33所示。 • 实验证明,Hi1bert曲线的方法比Z-排序好一 些,因为它没有斜线。不过Hilbert曲线算法 的计算量要比Z-排序复杂。
5.2 B树索引
B树索引是一个典型的树结构,始终是平衡的,也 就是说从Root节点到Leaf节点的任何一个路径都是 等距离的。 其包含的组件主要是: 叶子节点(Leaf node):包含的条目直接指 向表里的数据行。 分支节点(Branch node):包含的条目指向 索引里其他的分支节点或者是叶子节点。 根节点(Root node):一个B树索引只有一个 根节点,它实际就是位于树的最顶端的分支节点。
够借, 借调 关键字在内结点x中 不够借
借调直接前驱
◆左孩子不够借,右孩子
够借,借调直接后继 合并
删除G
若左右孩子不够借, 将右孩子合并到左孩子中去,并将所删关 键字做为左孩子的中间关键字,删除关键字,释放右孩子。
P
1<=根结点的关键字个数<=5 2<=非根结点的关键字个数<=5
T X
x
C
G
L
A B
8
插入W 自顶向下进行插入,分裂沿途中的每个满结点
P
x
T T XX
x x
U V W Y Z
G M G
M
P
A B C
D
E
J
K
N
O
R
S
x
9
3.B树的删除
自顶向下的方式进行删除 关键字在终端结点中,直接删除
◆左孩子够借,
够借, 借调
B树的删除
关键字在内结点x中
不够借
借调直接前驱 ◆左孩子不够借,右孩子 够借,借调直接后继 合并 左右兄弟够借,借调 左右兄弟不够借,合并