有效地寻找空间得分最佳的实体的制作方法

文档序号:8323940阅读:188来源:国知局
有效地寻找空间得分最佳的实体的制作方法
【技术领域】
[0001]本公开一般地涉及在关系型数据库中的空间数据的操纵,并且更具体地涉及基于空间和实体过滤标准两者有效地寻找实体。
【背景技术】
[0002]关系型数据库是在行和列的表格中存储相关的数据的电子数据库,并且允许在具有匹配字段的表格之间建立链接使得可以同时询问多个表格。许多关系型数据库采用某个版本的SQL语言,该SQL语言是适于管理数据的专用编程语言。SQL代码可以由关系型数据库系统来实现,所述关系型数据库系统执行作为分离的过程并且由客户端应用访问。例如,SQL代码可以由可从开源获得的MySQL?数据库系统、可从Oracle公司获得的Oracle数据库或者可从Microsoft公司获得的Microsoft SQL Server数据库系统执行。替代地,SQL代码可以由通过自持的编程库实现的关系型数据库系统实现,所述自持的编程库可以被集成在客户端应用其自身之内。例如,SQL代码可以由在公共域中可获得的SQLite?嵌入式SQL数据库系统来执行。
[0003]除其他使用之外,关系型数据库还可以被利用来存储描述在多维空间中的实体的位置、形状和方向的空间数据。实体的位置、形状和方向通常使用空间参考系统表示。除其他功能之外,空间参考系统还提供坐标系(例如,笛卡尔坐标系),通过其可以限定空间信息。例如,在实体上的点可由X轴、y轴和Z轴坐标限定。
[0004]存储在关系型数据库中的空间数据通常使用被设计成加快空间询问的空间索引来进行索引。经常,空间索引被结构化为R树(R-tree)。R树是以使用边界框(boundingbox)为前提的一种平衡树数据结构。边界框是多维空间的区域,所述多维空间的区域从相关实体或实体群组的最小程度跨越到相关实体或实体群组的最大程度。通常,边界框与所采用的坐标系的轴线对齐,并且因此被称为轴对齐的边界框(AABB)。例如,在2D空间数据中,特定实体的边界框可以是从实体的最小X轴坐标跨越到其最大X轴坐标并且从其最小I轴坐标跨越到其最大I轴坐标的矩形。在3D空间数据的情况下,特定实体的边界框可以是从所述实体的最小X轴坐标跨越到其最大X轴坐标、从其最小I轴坐标跨越到其最大I轴坐标并且从其最小z轴坐标跨越到其最大z轴坐标的矩形棱柱。
[0005]在其最低级别处的R树具有包括一个或多个单独实体的叶节点。如果叶节点包括单个实体,则该叶节点的边界框仅仅是该单独实体自身的边界框。如果叶节点包括多个实体,则该叶节点的边界框是包围了被包括在该叶节点中的单独实体的所有边界框的最小尺寸的框。在较高的级别处,R树包括表示叶节点的群组的内部节点或者其他内部节点。每个内部节点的边界框是包围了该群组的所有边界框的最小尺寸的框。在R树的最高级别处是根节点。根节点的边界框是包围了由R树进行索引的所有实体的所有边界框的最小尺寸的框。
[0006]使用R树的搜索一般在根节点处开始,并且通过树的各级别向下进行。例如,如果用户期望寻找定位于感兴趣的区域(即,询问框)内的实体,则基于该询问框启动搜索询问。在根节点处,做出哪些较低级别的内部节点具有与询问框重叠的边界框的确定。搜索然后进行到这些较低级别的内部节点,在其处确定哪些更低级别的内部节点具有与询问框重叠的边界框。过程沿R树往下继续,通过与可能存在的级别一样多的级别,直到最终遇到叶节点为止。相对于询问框测试被包括在所遇到的叶节点中的单独实体的边界框,并且如果它们的边界框与询问框重叠,则将相应的实体放置到针对搜索询问的结果集合中。
[0007]除了简单的搜索询问,还可以使用与包括空间数据的关系型数据库有关的空间索引来执行各种其他类型的操作。例如,有时可期望寻找满足空间和实体过滤标准两者的特定数量(“X”)的“最佳”实体,其中“最佳”是基于得分确定的。一旦被找到,这样的“X个最佳”实体可以被加载并且被用于各种目的。
[0008]虽然使用在许多关系型数据库系统(例如,SQL数据库系统)中提供的操作符来寻找满足空间和实体过滤标准两者的特定数量的“最佳”实体(“X个最佳”)是可能的,但通常这样的操作是十分低效的。“蛮干”方法可以是:返回满足空间标准和实体过滤标准两者的所有实体,计算每个返回的实体的得分,根据得分对列表进行排序,并且在第一 “X”个实体之后截断列表。在SQL中实现该蛮干方法的一种方式是经由“ORDER BY”和“UMIT”子句,与用于计算得分的用户函数组合。应当明显地看出,这种方式可以是非常低效的并且耗费大量的存储器和处理资源。替代技术可以是采用迭代的“试凑法”方法。在通常的“试凑法”方法中,针对得分选择任意的阈值。询问被执行,其中相对于空间和实体过滤标准比较每个实体,并且相对于所述任意阈值比较其得分。其得分少于所述阈值的实体被拒绝。询问结果将是满足空间和实体过滤标准的某个数量(“Y”)的实体。所返回的实体的数量(“Y”)与实体的期望的数量(“X”)比较。如果返回了比所期望的数量多的实体,则以增量增加所述阈值并且重新执行询问。可以重复该过程直到所返回的实体的数量(“Y”)少于或等于实体的期望的数量(“X”)为止。
[0009]这样的“试凑法”方法的一般的低效率的加重(compound)在于其准确度和低效率是不可预测的。在不同的情况下可能需要不同数量的迭代。迭代的数量可以取决于开始阈值、阈值的增量以及数据本身。如果所述增量过大,则结果可能是小于“X”但相差任意数量的实体的数量“Y”。在此情况下,在结果中“错失”了“Y-X”个实体。如果增量过小,则迭代的数量可以是不可预测地大。许多客户端应用不佳地适于处理由迭代数量的变化产生的不可预测的性能。
[0010]相应地,存在针对解决这些缺陷和其他缺陷的改进的技术的需要。

【发明内容】

[0011 ] 在一个实施例中,满足空间标准(例如,“视界锥(view cone),,)和实体过滤标准两者的特定数量(“X”)的“最佳”实体被有效地找到,其中“最佳”是基于根据每个实体的边界框与询问框的关系计算的空间得分来确定的。
[0012]响应于指示期望的“最佳”实体的特定数量(“X”)的询问语句,创建反向通道对象。反向通道对象维持空间标准(例如,视界锥)的指示、最近的空间得分以及包括特定数量(“X”)的“最佳”实体和它们的得分的当前的分类图。针对在空间索引(例如,R树)中将被考虑的每个目标(例如,节点和实体),相对于空间标准测试目标的边界框。如果经受测试的目标的边界框不符合空间标准(例如,不与视界锥相交),则经受测试的目标被排除在进一步考虑之外。如果目标是节点,则该节点以及从它所指向的任何较低级别的节点以及被包括在该节点以及较低级别的节点中的任何实体也可以被排除在进一步考虑之外。
[0013]如果经受测试的目标的边界框符合空间标准(例如,与视界锥相交),则针对该目标计算空间得分。相对于在“最佳”实体的当前的分类图中的最小得分比较该目标的空间得分。如果所述得分小于在当前的分类图中的最小得分,并且如果所述图当前保持了特定数量(“X”)的实体,则经受测试的目标被排除在进一步考虑之外。如果目标是节点,则该节点以及从它所指向的任何较低级别的节点以及被包括在该节点以及较低级别的节点中的任何实体也可以被排除在进一步考虑之外。
[0014]如果所述空间得分不小于在当前的分类图中的最小得分,或者如果所述图当前保持了小于特定数量(“X”)的实体,并且该目标是实体,则相对于实体过滤标准测试所述实体。如果所述实体符合实体过滤标准,则该实体被视为可接受。当前的分类图被更新以存储该实体以及其分数。如果当前的分类图是满的(已经保持了 “X”个实体),则丢弃在当前的分类图中的最低得分实体来为新的实体让出空位。
[0015]在空间索引中的所有目标(例如,节点和实体)已经被测试或者被排除在考虑之外之后,当前的分类图保持满足空间标准和实体过滤标准两者的特定数量(“X”)的“最佳”实体,以它们的空间得分被排序。当前的分类图被返回作为最终结果。
【附图说明】
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1