时间:2022-10-31 18:30:01 | 来源:信息时代
时间:2022-10-31 18:30:01 来源:信息时代
空间查询处理 : 对数据库中大量的空间对象进行高效检索的过程。空间数据库的查询处理与关系数据库之间的主要区别是: ①空间数据库没有固定的算子集合可以充当查询计算的基本构件;②空间数据库要处理大量的复杂对象,这些对象具有空间范围,而且不能自然地排序成一维数组;③检测空间谓词需要用到计算代价高昂的算法,所以不能再假定I/O代价远超CPU代价。
1.空间查询操作的步骤
空间查询操作通常采用过滤精炼算法以高效地处理空间查询中所包含复杂数据类型。该算法的处理步骤为:
(1)过滤步骤: 空间对象表示为相对简单的近似(approximations),比如最小外接矩形,其结果是真实结果集的超集,也称为候选集。空间谓词也可以被替换成一个近似以简化查询优化器。有些空间算子,例如inside(在内部),north-of(在北部),buffer(缓冲区分析)可以近似成相应最小外接矩形之间的交叠关系。这样的转换能够保证最终结果中的元组不会在过滤步骤中被排除掉。
(2)精炼步骤: 检查候选集中每个元素的精确几何信息和精确的空间谓词。这通常需要使用计算密集型的算法。这一步骤有时可以在空间数据库以外的某个应用程序(如GIS)中进行,该应用程序会用到空间数据库在过滤步骤产生的候选集。
2. 空间查询操作的类型
空间查询主要包括以下四种类型的操作:
(1)更新操作:标准数据库操作(修改、创建等)。
(2)空间选择操作: 又分为点和范围两种。①点查询: 给定一个查询点P,找出所有包含它的空间对象O: PQ(p)={O|p∈O.G≠0},其中O.G为对象O的几何信息。②范围或区域查询: 给定一个查询多边形P,找出所有与之相交的空间对象O:PQ(p)={O|O.G∩P.G≠0}。当查询多边形是一个矩形时,称这个查询为矩形窗口查询。这些查询有时也称作范围查询。
(3)空间连接操作: 空间连接是更为重要的算子之一,类似于关系数据库中的连接算子。当两个表R和S基于一个空间谓词θ连接时,则该连接被称为空间连接。R⋈θS={(O,O’)|O∈R,O′∈S,θ(O.G,O′.G)}空间连接的一个变形是地图叠加(map overlay),它也是GIS中的一个重要算子。这个操作组合了两个空间对象集合以形成一个新的集合。这些新对象的集合的“边界”由叠加操作所指定的非空间属性来决定。
(4)空间聚集操作: 通常是最近邻居搜索问题的变体。给定一个对象O′,找出所有距离O′最近的对象O:NNQ(O′)={O|∀O″:dist(d.G,O.G)≤dist(O′.G,O″.G)}。
3. 空间操作采取的策略
除了更新操作是数据库的标准操作之外,上述其他空间操作都需要针对于空间数据和组织结构的不同而采取不同的策略:
(1)空间选择操作: 针对包含待查关系的文件的不同组织,空间选择有以下三个方法: ①数据未排序且没有索引: 采用穷举法(brute force)扫描整个文件并检查每一条记录是否满足谓词。根据关系的大小,两步(过滤加精炼)处理可能对计算相交谓词非常有用。这个处理与没有过滤而处理整个对象相比,代价是非常低的,扫描的代价为O(n)。对于点查询,过滤步骤包括检验一个点在矩形中的操作。②数据建立了空间索引: 使用空间索引(如R-树)可以避免扫描整个文件从而减少系统代价。采用搜索树的点查询通常可以在O(log n)时间内完成处理。使用索引树时查询的代价依赖于许多因素,包括数据矩形的分布、查询窗口的大小、树的高度以及用于构造索引树结点的组装算法等。采用R-树的一个缺点是不同分支的最小外接矩形允许交叠,这就可能导致沿着索引树的不同分支进行搜索。R-树的一个变体R+-树就避免了内部结点的交叠,R+-树的主要问题是数据矩形可能在多个内部结点上存在复本,这会导致搜索时间和结点溢出的增加。③空间填充曲线散列: 空间填充曲线通常的例子就是z曲线和Hilbert曲线,但它们都不具备如下属性: 即所有在多维空间中“位置邻近”的记录在映射后的范围空间中仍保持邻近。一旦数据按空间填充曲线“排序”,B树索引就可以用于排序后的记录以加快搜索速度。点查询的代价为O(logB(n)),其中B为分块因子。范围查询的代价大约为