论文部分内容阅读
【摘要】本论文以查询模型为分析对象,并对空间索引进行了分析,结合本单位的实际情况,对空间查询的优化进行了探讨。
【关键词】空间数据库,索引,查询优化
中图分类号:G250文献标识码: A
一、前言
近年来,OracleSpatial的空间数据库正在不断的完善,但依然存在一些问题和不足需要改进,在技术快速发展的新时期,不断完善OracleSpatial的空间数据库的索引与查询优化,对空间数据库的发展有着重要意义。
二、查询模型
OracleSpatial使用双层查询模型来解决空间查询问题,即初级过滤操作和二级过滤操作。经过两次过滤,将返回精确的查询结果集,在的级操作过滤步骤中,近似匹配满足条件的一组候选对象,这些对象有可能满足给定的空间查询要求,其结果集是精确查询的父集。
选择近似表示的条件为:如果对象A与对象B的近似满足一种关系,那么对象A与对象B就可能具有那种空间关系。例如,如果近似表示是分离的,那么对象A和对象B就将是分离的,但是如果近似表示非分离的,对象A和对象B仍可能是分离的。然后通过二次过滤,对初次过滤结果再次求精,就得到实体间的精确空间关系。使用这样的二次过滤策略有几项优点:空间对象一般都很大,因此要占用大量主内存。空间对象的近似表示在载入内存时占用的时间和空间要少的多。对空间对象的计算一般都很复杂,计算花费很大。对象越复杂,计算空间关系就越复杂。使用近似对象的计算一般会很快,需要的计算周期也要短的多。
三、空间索引
OracleSpatial将空间索引功能引入数据库引擎,是一项重要特征。空间索引是根据空间准则把搜索限制在各表(或数据空间)内的一种机制。对于在与查询区域重叠的数据空间中查找对象之类的查询,要对其做出有效处理就需要索引。这由一个查询多边形(封闭定位)定义。第二种类型的查询(空间连接)是从两个数据空间内找出对象对,这两个数据空间在空间范围内互动。OracleSpatial为建立空间数据的索引提供了基于线性四叉树的索引方案和基于参考树的索引方案。
1、四叉树索引
线性四叉树索引把几何对象映射到一组编号的“瓦片”(title)。二维空间中的一个瓦片就是一个方框,它的四边形与两条坐标轴正交。所有几何体得以存在的坐标空间以一种规则的分级方式进行分解。坐标范围(即坐标空间)可视为一个矩形。在第一级分解中将此矩形沿每一坐标方向分为两半,形成四个“子瓦片”,被称为“四分片”。在接下来的每一级分解中,每一个四分片由被沿每一坐标方向分成两半,再形成四个子瓦片。顾名思义,四叉树的4叶结构可以用来构造索引树。此过程持续进行,直到某些终止条件(如瓦片的大小)得以满足。这些瓦片可以用z-排序方案或等价方案进行线性排序,从而产生线性四叉树。
2、参考树索引
除了提供四叉树索引功能之外,OracleSpatial还提供了参考树索引。参考树索引既可以用来代替四叉树索引,也可以与四叉树索引并用。此外,参考树索引还可用于对数据进行三维和四维索引,这对于解决石油勘探、体系结构、工程设计以及许多其他科学应用中的问题至关重要。
3、可扩展索引
应用程序可在Oracle数据库内(以表的形式)或Oracle数据库外(以文件形式)存储索引数据。应用程序通过管理、检索和使用索引数据来计算用户查询。实质上,应用程序控制着域索引的结构和语义内容。数据库系统通过与应用程序交互来创建、维护和使用域索引。
域索引数据最好存储在数据库中,这样,它就可以处理物理存储。
四、空间查询的优化
1、空间查询优化的原理
我们已经知道了Oracle在空间查询过程中会采用双重过滤的优化方法,而在实际应用的空间查询中,查询条件往往包含一些一维查询的条件的限制。当把查询直接提交给Oracle数据库进行执行时,Oracle数据库并不会区分一维查询的条件和空间查询的条件,直接进行一次過滤与二次过滤,得到查询的数据,而在一次过滤时,往往要过滤的数据量就可能会很大,因此会十分耗时。如果当空间查询中包含普通一维查询条件时,或许可以利用一维查询条件使得执行一次过滤时的数据量减少,从而减少空间查询所需消耗的时间,提高空间查询的效率。优化原理也正是基于上个段落中提到的想法,当空间查询包含普通一维查询时,将空间查询分两步进行:第一步,根据一维查询的条件执行普通一维查询,将查询得到的结果存入临时表中;第二步,根据空间查询的条件,对创建的临时表进行查询,得到原查询应得到的结果。如果,当根据一维查询的条件执行普通一维查询的所得到的数据较原查询一次过滤时需处理的数据量有明显减少时,便可起到减少时间、提高效率的优化作用。
2、空间查询优化的技术支持
OCI是Oracle提供的调用接口,英文全称为OracleCallInterface。它是Oracle数据库的最底层数据访问接口,在各类访问接口中,功能最全、效率最高,却也最复杂,但是OCI却提供了很好的灵活性和高效性,为用户的二次开发提供了很好的平台。
3、空间查询优化程序的设计
(一)、程序流程
空间查询优化程序接收输入的空间查询SQL语句,判定其是否符合优化程序的优化条件。如果不符合优化的条件,则直接执行SQL语句,进行空间查询;如果需要优化,则进入优化程序。首先,分析输入的SQL语句,提取语句中要查询的列、需要查询的表格、查询条件中关于空间查询的限制以及关于普通一维查询的限制;然后,根据已提取出的内容,生成新的SQL语句;最后提交给Oracle数据库执行,将结果显示出来并存入文件中。
(二)、可优化的条件
当查询的条件中包含两个或两个以上的约束,并且约束条件中至少有一个为空间查询的约束时,即可实行优化,否则的话,程序将不会进行任何优化,直接把SQL语句直接提交给Oracle数据库执行。
4、空间查询优化程序的实现
(一)、SQL语句的分析与优化
由于SQL语句良好的语法结构和空间查询函数的结构特点,因此很容易将空间查询的SQL语句进行分析,例如,可以很清楚的知道所要查询的内容在select——from字段之间,所查询的表在from——where之间,查询的约束条件在where字段之后;而约束条件的区分则依靠空间查询函数的特点——以“sdo_xxx”作为函数的开始。在分析过程中,由于要进行字符串的匹配,为了提高匹配的效率,在匹配过程中采用了KMP算法。
(二)、优化语句的生成
优化语句的生成分两步执行。生成优化语句的第一步是根据普通一维查询的约束条件,将所要查询的表的符合约束条件的所有内容存入到临时表中。
(三)、提交优化后的SQL语句
优化工作的最后一步为将优化后的SQL语句提交给数据库执行,显示查询结果并将结果写入到文件中。在输出的过程中,必须知道每一列的类型才可以输出结果。类型的明确通过调用OCI提供的OCIAttrGet函数实现,将每一列的类型记录到对应的标识列类型的数组中,在输出时,根据列的类型将相应的值写入用于输出的变量中,显示在屏幕上、存储在文件中。整个优化工作完成,结束会话,断开与数据库的连接,程序结束。
五、结束语
空间数据库发展至关重要,因此,基于OracleSpatial的空间数据库的索引与查询优化,要不断提高技术水平,加强对空间数据库的索引与查询的重视,促进OracleSpatial的空间数据库应用水平的提高。
参考文献
[1]潘农菲.基于OracleSpatial的GIS空间数据处理及应用系统开发[J].计算机工程,2002
[2]王宝武,董慧君.基于OracleSpatial的web实现方案[J].信息技术与信息化,2007
[3]梁鸿,丁仁伟,郑红霞.OracleSpatial空间数据库的设计及应用[J].测绘科学,2005
【关键词】空间数据库,索引,查询优化
中图分类号:G250文献标识码: A
一、前言
近年来,OracleSpatial的空间数据库正在不断的完善,但依然存在一些问题和不足需要改进,在技术快速发展的新时期,不断完善OracleSpatial的空间数据库的索引与查询优化,对空间数据库的发展有着重要意义。
二、查询模型
OracleSpatial使用双层查询模型来解决空间查询问题,即初级过滤操作和二级过滤操作。经过两次过滤,将返回精确的查询结果集,在的级操作过滤步骤中,近似匹配满足条件的一组候选对象,这些对象有可能满足给定的空间查询要求,其结果集是精确查询的父集。
选择近似表示的条件为:如果对象A与对象B的近似满足一种关系,那么对象A与对象B就可能具有那种空间关系。例如,如果近似表示是分离的,那么对象A和对象B就将是分离的,但是如果近似表示非分离的,对象A和对象B仍可能是分离的。然后通过二次过滤,对初次过滤结果再次求精,就得到实体间的精确空间关系。使用这样的二次过滤策略有几项优点:空间对象一般都很大,因此要占用大量主内存。空间对象的近似表示在载入内存时占用的时间和空间要少的多。对空间对象的计算一般都很复杂,计算花费很大。对象越复杂,计算空间关系就越复杂。使用近似对象的计算一般会很快,需要的计算周期也要短的多。
三、空间索引
OracleSpatial将空间索引功能引入数据库引擎,是一项重要特征。空间索引是根据空间准则把搜索限制在各表(或数据空间)内的一种机制。对于在与查询区域重叠的数据空间中查找对象之类的查询,要对其做出有效处理就需要索引。这由一个查询多边形(封闭定位)定义。第二种类型的查询(空间连接)是从两个数据空间内找出对象对,这两个数据空间在空间范围内互动。OracleSpatial为建立空间数据的索引提供了基于线性四叉树的索引方案和基于参考树的索引方案。
1、四叉树索引
线性四叉树索引把几何对象映射到一组编号的“瓦片”(title)。二维空间中的一个瓦片就是一个方框,它的四边形与两条坐标轴正交。所有几何体得以存在的坐标空间以一种规则的分级方式进行分解。坐标范围(即坐标空间)可视为一个矩形。在第一级分解中将此矩形沿每一坐标方向分为两半,形成四个“子瓦片”,被称为“四分片”。在接下来的每一级分解中,每一个四分片由被沿每一坐标方向分成两半,再形成四个子瓦片。顾名思义,四叉树的4叶结构可以用来构造索引树。此过程持续进行,直到某些终止条件(如瓦片的大小)得以满足。这些瓦片可以用z-排序方案或等价方案进行线性排序,从而产生线性四叉树。
2、参考树索引
除了提供四叉树索引功能之外,OracleSpatial还提供了参考树索引。参考树索引既可以用来代替四叉树索引,也可以与四叉树索引并用。此外,参考树索引还可用于对数据进行三维和四维索引,这对于解决石油勘探、体系结构、工程设计以及许多其他科学应用中的问题至关重要。
3、可扩展索引
应用程序可在Oracle数据库内(以表的形式)或Oracle数据库外(以文件形式)存储索引数据。应用程序通过管理、检索和使用索引数据来计算用户查询。实质上,应用程序控制着域索引的结构和语义内容。数据库系统通过与应用程序交互来创建、维护和使用域索引。
域索引数据最好存储在数据库中,这样,它就可以处理物理存储。
四、空间查询的优化
1、空间查询优化的原理
我们已经知道了Oracle在空间查询过程中会采用双重过滤的优化方法,而在实际应用的空间查询中,查询条件往往包含一些一维查询的条件的限制。当把查询直接提交给Oracle数据库进行执行时,Oracle数据库并不会区分一维查询的条件和空间查询的条件,直接进行一次過滤与二次过滤,得到查询的数据,而在一次过滤时,往往要过滤的数据量就可能会很大,因此会十分耗时。如果当空间查询中包含普通一维查询条件时,或许可以利用一维查询条件使得执行一次过滤时的数据量减少,从而减少空间查询所需消耗的时间,提高空间查询的效率。优化原理也正是基于上个段落中提到的想法,当空间查询包含普通一维查询时,将空间查询分两步进行:第一步,根据一维查询的条件执行普通一维查询,将查询得到的结果存入临时表中;第二步,根据空间查询的条件,对创建的临时表进行查询,得到原查询应得到的结果。如果,当根据一维查询的条件执行普通一维查询的所得到的数据较原查询一次过滤时需处理的数据量有明显减少时,便可起到减少时间、提高效率的优化作用。
2、空间查询优化的技术支持
OCI是Oracle提供的调用接口,英文全称为OracleCallInterface。它是Oracle数据库的最底层数据访问接口,在各类访问接口中,功能最全、效率最高,却也最复杂,但是OCI却提供了很好的灵活性和高效性,为用户的二次开发提供了很好的平台。
3、空间查询优化程序的设计
(一)、程序流程
空间查询优化程序接收输入的空间查询SQL语句,判定其是否符合优化程序的优化条件。如果不符合优化的条件,则直接执行SQL语句,进行空间查询;如果需要优化,则进入优化程序。首先,分析输入的SQL语句,提取语句中要查询的列、需要查询的表格、查询条件中关于空间查询的限制以及关于普通一维查询的限制;然后,根据已提取出的内容,生成新的SQL语句;最后提交给Oracle数据库执行,将结果显示出来并存入文件中。
(二)、可优化的条件
当查询的条件中包含两个或两个以上的约束,并且约束条件中至少有一个为空间查询的约束时,即可实行优化,否则的话,程序将不会进行任何优化,直接把SQL语句直接提交给Oracle数据库执行。
4、空间查询优化程序的实现
(一)、SQL语句的分析与优化
由于SQL语句良好的语法结构和空间查询函数的结构特点,因此很容易将空间查询的SQL语句进行分析,例如,可以很清楚的知道所要查询的内容在select——from字段之间,所查询的表在from——where之间,查询的约束条件在where字段之后;而约束条件的区分则依靠空间查询函数的特点——以“sdo_xxx”作为函数的开始。在分析过程中,由于要进行字符串的匹配,为了提高匹配的效率,在匹配过程中采用了KMP算法。
(二)、优化语句的生成
优化语句的生成分两步执行。生成优化语句的第一步是根据普通一维查询的约束条件,将所要查询的表的符合约束条件的所有内容存入到临时表中。
(三)、提交优化后的SQL语句
优化工作的最后一步为将优化后的SQL语句提交给数据库执行,显示查询结果并将结果写入到文件中。在输出的过程中,必须知道每一列的类型才可以输出结果。类型的明确通过调用OCI提供的OCIAttrGet函数实现,将每一列的类型记录到对应的标识列类型的数组中,在输出时,根据列的类型将相应的值写入用于输出的变量中,显示在屏幕上、存储在文件中。整个优化工作完成,结束会话,断开与数据库的连接,程序结束。
五、结束语
空间数据库发展至关重要,因此,基于OracleSpatial的空间数据库的索引与查询优化,要不断提高技术水平,加强对空间数据库的索引与查询的重视,促进OracleSpatial的空间数据库应用水平的提高。
参考文献
[1]潘农菲.基于OracleSpatial的GIS空间数据处理及应用系统开发[J].计算机工程,2002
[2]王宝武,董慧君.基于OracleSpatial的web实现方案[J].信息技术与信息化,2007
[3]梁鸿,丁仁伟,郑红霞.OracleSpatial空间数据库的设计及应用[J].测绘科学,2005