CN106796589A - 空间数据对象的索引方法和系统 - Google Patents
空间数据对象的索引方法和系统 Download PDFInfo
- Publication number
- CN106796589A CN106796589A CN201580027410.8A CN201580027410A CN106796589A CN 106796589 A CN106796589 A CN 106796589A CN 201580027410 A CN201580027410 A CN 201580027410A CN 106796589 A CN106796589 A CN 106796589A
- Authority
- CN
- China
- Prior art keywords
- data object
- spatial data
- window
- inquiry
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了用于索引数据空间的空间数据对象的索引方法系统,以及用于对空间数据对象的索引进行操作的方法和系统。其中一种方法包括:根据相应的空间数据对象的尺寸将每个空间数据对象与多个分区中的一个相关联,并且基于与所述空间数据对象相关联的分区,将每个空间数据对象映射到索引键。用于对空间数据对象的索引进行操作的方法和系统有助于对空间数据对象的高效选择或操作。
Description
相关申请的交叉引用
本申请要求享有于2014年5月30日提交的申请号为2014902064的澳大利亚专利申请的优先权,所述申请在此通过引用将其全部内容并入本文。
技术领域
本发明涉及一种用于索引空间数据对象的索引方法和系统,以及在空间数据的索引上进行操作的方法和系统。
背景技术
在现代计算机学中,空间数据对象通常在应用程序或系统中用于表示实际生活对象或抽象要素。这样的应用程序或系统的实例包括计算机辅助设计(CAD)软件程序,医学成像系统和地理制图系统。在许多情况下,空间数据对象被存储在计算机的数据库中,并且使用索引(indices)以便于对空间数据对象的高效选择或操纵。对替代的索引方法或系统存在着需求。
发明内容
为了便于对空间数据对象高效的选择或操作,本发明提供了用于索引空间数据对象的索引方法和系统,以及用于对空间数据的索引进行操作的方法和系统方法和系统。在第一方面,本发明提供一种于索引数据空间的空间数据对象的索引方法,包括:
根据相应的空间数据对象的尺寸,将每个空间数据对象与多个分区中的一个相关联;和
基于与所述空间数据对象相关联的分区,将每个空间数据对象映射到索引键。
通过将空间数据对象与多个分区相关联,可以以逐个分区的形式进行多种操作;例如,在分离的多个分区上有效进行多个窗口查询,而不是单个窗口查询覆盖数据空间中的所有空间数据对象。在许多情况下,对包括各种尺寸的许多空间数据对象的大数据空间,以逐个分区的形式进行操作是更有效的。
在一个实施例中,所述索引方法还包括:
获得至少一个空间数据对象;和存储至少一个索引键。
在一个实施例中,每个空间数据对象的尺寸是相应的空间数据对象的最大范围。
在一个实施例中,所述索引方法还包括:
确定空间数据对象尺寸的累积分布;和
将所述累积分布分成多个分区。
在一个实施例中,所述确定空间数据对象尺寸的累积分布包括:
对所述数据空间的空间数据对象进行采样;
确定每个采样的空间数据对象的尺寸;和
确定所述采样的空间数据对象尺寸的累积分布。
在一个实施例中,将所述累积分布分成多个分区包括:
计算多个分区的多个集合的成本模型;和
基于所述成本模型,在所述多个分区的集合中选择一个。
在一个实施例中,所述索引方法还包括:
将每个空间数据对象的位置映射到均匀分布的多个映射位置中的一个,并且
其中,基于与所述空间数据对象相关联的分区和所述空间数据对象的映射位置,将每个空间数据对象映射到索引键。
在一个实施例中,每个空间数据对象的位置是所述空间数据对象的中心位置。
在一个实施例中,所述索引方法还包括:
对所述数据空间的空间数据对象进行采样;
确定每个采样的空间数据对象的位置;
确定采样的空间数据对象位置的累积分布;和
基于所述采样的空间数据对象位置的累积分布确定累积映射函数,用于将空间数据对象位置映射到均匀分布的映射位置。
在一个实施例中,每个空间数据对象都是N维数据对象,其中N是大于或等于2的整数。
在第二方面,本发明提供了一种用于索引数据空间的空间数据对象的索引系统,包括:
分区关联模块,用于根据相应的空间数据对象的尺寸,将每个空间数据对象关联到多个分区中的一个分区;和
对象映射模块,用于基于与所述空间数据对象相关联的所述分区,将各个空间数据对象映射到索引键。
在一个实施例中,所述索引系统还包括:
数据获取模块,用于从数据存储器中获取至少一个空间数据对象;和
索引存储模块,用于在索引存储器中存储至少一个索引键。
在一个实施例中,每个空间数据对象的尺寸是相应的空间数据对象的最大范围。
在一个实施例中,所述索引系统还包括:
数据尺寸分布模块,用于确定空间数据对象尺寸的累积分布;和
数据分区模块,用于将所述累积分布分成多个分区。
在一个实施例中,所述数据尺寸分布模块包括:
数据尺寸采样子模块,用于对空间数据对象进行采样;
数据尺寸子模块,用于确定每个采样的空间数据对象的尺寸;和
数据尺寸分布子模块,用于确定所述采样的空间数据对象尺寸的累积分布。
在一个实施例中,所述数据分区模块包括:
成本计算子模块,用于计算多个分区的集合的成本模型;和
分区选择子模块,用于基于由所述成本计算模块进行的计算,选择所述多个分区集合中的一个。
在一个实施例中,所述索引系统还包括:
数据位置映射模块,用于将每个空间数据对象的位置映射到均匀分布的多个映射的位置中的一个,并且
其中,所述对象映射模块适应于基于与所述空间数据对象相关联的分区和所述空间数据对象的映射位置,将每个空间数据对象映射到相应的索引键。
在一个实施例中,所述每个空间数据对象的位置是相应的空间数据对象的中心位置。
在一个实施例中,所述索引系统还包括:
数据位置采样子模块,用于对空间数据对象进行采样;
数据位置处理子模块,用于确定每个采样的空间数据对象的位置;
数据位置分配子模块,用于确定所述采样的空间数据对象位置的累积分布;和
数据位置映射函数子模块,用于基于所述采样的空间数据对象位置的所述累积分布,确定累积映射函数,用于将空间数据对象位置映射到均匀分布的映射位置。
在一个实施例中,每个空间数据对象都是N维数据对象,其中N是大于或等于2的整数。
在一个实施例中,所述索引系统还包括:
树存储器,用于存储树键;和
索引模块,用于索引索引键作为树的条目。
在一个实施例中,所述树键被布置为B+树。
在第三方面,本发明提供一种对与多个分区相关联的空间数据对象的索引进行操作的方法,包括:
接收对空间数据对象的查询;
基于相应分区的尺寸特性和所接收的查询,确定要对与每个分区相关联的空间数据对象进行的经调整的查询;和
对每个分区进行经调整的查询。
在一个实施例中,每个分区的所述尺寸特性是相应分区中的空间数据对象的最大尺寸。
在一个实施例中,所述操作是对空间数据对象的窗口查询。
在一个实施例中,所述查询是对空间数据对象的窗口查询。
在一个实施例中,所述查询的窗口是矩形的窗口。
在一个实施例中,基于相应分区的尺寸特性和所接收的查询,确定要对与每个分区相关联的空间数据对象进行的经调整的查询包括:形成具有矩形窗口的窗口查询。
在一个实施例中,经调整的查询的矩形窗口是通过扩展所接收的查询的所述矩形窗口来形成的。
在实施例中,幅度相当于与所述相应分区相关联的空间数据对象的最大尺寸的一半。
在一个实施例中,所述基于相应分区的尺寸特性和所接收的查询,确定要对与每个分区相关联的空间数据对象进行的经调整的查询还包括:将所述经调整的查询的矩形窗口的至少一个位置映射到均匀分布的多个映射位置中的至少一个。
在一个实施例中,所述经调整的查询的矩形窗口的每个角位置被映射到映射位置。
在一个实施例中,对每个分区进行所述经调整的查询包括确定索引键范围的列表,所述索引键范围的列表包括代表可能与所述经调整的查询的所述窗口相交的空间数据对象的索引键。
在一个实施例中,所述索引键的列表是通过将分区的一个区域的索引键加入索引键的列表来确定。
在一个实施例中,如果所述经调整的查询的窗口覆盖了所述区域,则所述区域的索引键被添加到所述索引键的列表中。
在一个实施例中,所述索引键的列表由以下确定:将一个区域子分割成多个子区域;和
添加所述经调整的查询的窗口所覆盖的每个所述子区域的索引键。
在一个实施例中,所述索引键的列表是通过加入以下来确定的:索引键对、索引键对的第一键和索引键对的第二键,所述第一键表示经调整的查询的窗口的入口点,所述第二键表示经调整的查询的窗口的入口点之后的下一个出口点。
在一个实施例中,每个空间数据对象都是N维数据对象,其中N是大于或等于2的整数。
在第四方面,本发明提供一种用于对与多个分区相关联的空间数据对象的索引进行操作的索引系统,包括:
查询接收模块,用于接收对空间数据对象的查询;
查询调整模块,用于基于相应分区的尺寸特性和所接收的查询,确定要对与每个分区相关联的空间数据对象进行的经调整的查询;和
查询处理模块,用于对每个分区进行所述经调整的查询。
在一个实施例中,每个分区的所述尺寸特性是相应分区中空间数据对象的最大尺寸。
在一个实施例中,所述操作是窗口查询。
在一个实施例中,所述查询是窗口查询。
在一个实施例中,所述查询的窗口是矩形的窗口。
在一个实施例中,所述查询调节模块包括调整的窗口形成子模块,用于形成具有矩形窗口的窗口查询。
在一个实施例中,所述经调整的窗口形成子模块通过扩展接收的查询的矩形窗口来形成经调整的查询的矩形窗口。
在一个实施例中,所述调整的窗口形成子模块通过以与相应分区相关联的空间数据对象的最大尺寸的一半为幅度来扩展接收的查询的矩形窗口,形成经调整的查询的矩形窗口。
在一个实施例中,所述查询调整模块还包括窗口位置映射子模块,用于将经调整的查询的所述矩形窗中的至少一个位置映射到均匀分布的的多个映射位置中的至少一个。
在一个实施例中,通过将所述经调整的查询的矩形窗口的每个角位置映射到映射位置,所述窗口位置映射子模块将所述经调整的查询的矩形窗中的至少一个位置映射到均匀分布的的多个映射位置中的至少一个。
在一个实施例中,所述查询处理模块包括索引键列表处理模块,用于确定索引键范围的列表,所述索引键范围的列表包括代表可能与所述经调整的查询的窗口相交的空间数据对象的索引键。
在一个实施例中,所述索引键列表处理模块通过将分区的一个区域的索引键加入索引键的列表来确定所述索引键的列表。
在一个实施例中,如果所述经调整的查询的窗口覆盖了所述区域,则所述索引键列表处理模块添加所述区域的索引键。
在一个实施例中,所述查询处理模块还包括:子分割处理模块,用于将一个区域子分割成多个子区域;和索引键列表处理模块,其通过添加所述经调整的查询的窗口所覆盖的每个子区域的索引键,确定所述索引键的列表。
在一个实施例中,所述索引键列表处理模块通过添加索引键对来确定所述索引键的列表,所述索引键对的第一键表示所述经调整的查询的窗口的入口点,所述索引键对的第二键表示所述经调整的查询的窗口的入口点之后的下一个出口点。
在一个实施例中,每个空间数据对象都是N维数据对象,其中N是大于或等于2的整数。
在一个实施例中,每个空间数据对象对应于B+树中的一个条目。
在第五方面,本发明提供一种用于索引数据空间的空间数据对象的索引方法,包括:
将每个空间数据对象的位置映射到均匀分布的多个映射位置中的一个;和
基于空间数据对象的位置被映射到的所述位置,将每个空间数据对象映射到索引键。
在第六方面,本发明提供一种用于索引数据空间的空间数据对象的索引系统,包括:
数据位置映射模块,用于将每个空间数据对象的位置映射到均匀分布的多个映射位置中的一个;和
对象映射模块,用于基于所述空间数据对象的位置被映射到的位置,将每个空间数据对象映射到索引键。
在第七方面,本发明提供一种用于对数据空间的空间数据对象的索引进行操作的方法,包括:
接收对空间数据对象的查询;
将查询的至少一个位置映射到均匀分布的多个映射位置中的至少一个;
基于所述至少一个映射位置进行查询。
在第八方面,本发明提供一种用于对数据空间的空间数据对象的索引进行操作的索引系统,包括:
查询接收模块,用于接收对空间数据对象的查询;
窗口位置模块,用于将查询的至少一个位置映射到均匀分布的多个映射位置中的至少一个;
查询处理模块,用于基于所述至少一个映射位置进行查询。
在第九方面,本发明提供一种在执行时实现以上任何一种方法的计算机程序代码。
在第十方面,本发明提供一种包括以上计算机程序代码的计算机可读存储介质。
附图说明
现在将通过示例的方式参照附图描述结合本发明的一个或多个方面的实施方式,其中:
图1示出了一种用于索引空间数据对象的索引系统的示意图,具有数据存储器和索引存储器;
图2示出了空间数据对象和索引键之间的关系的示例性结构;
图3示出了另一种用于索引空间数据对象的索引系统的示意图;
图4更详细地示出了图3的数据尺寸分布模块和数据分区模块的示意图;
图5示出了用于索引空间数据对象的步骤的流程图;
图6示出了包括数据位置映射模块的另一种索引系统的示意图;
图7示出了另一种用于索引空间数据对象的索引系统的示意图;
图8示出了另一种用于索引空间数据对象的索引系统的示意图;
图9示出了一种用于对空间数据对象的索引进行操作的索引系统的示意图;
图10示出了图9的查询调整模块的示意图;
图11示出了对与多个分区相关联的空间数据对象的索引进行操作的步骤的流程图;
图12示出了基于多个均匀分布的映射位置索引空间数据对象的步骤的流程图;
图13示出了对数据空间中的空间数据对象的索引进行操作的步骤的流程图;
图14示出了要对三个分区进行的经调整的查询的一个示例的示意图;
图15示出了用于确定代表可能与经调整的查询的窗口相交的空间数据对象的索引键范围的列表的递归算法的示意图;
图16示出了另一种用于确定代表可能与经调整的查询的窗口相交的空间数据对象的索引键范围的列表的方法的示意图;
图17示出了索引三个空间数据对象的一个示例的示意图;
图18示出了表示一系列数据集的实际和估计的分页存取之间的差异的三个曲线图;
图19示出了构造分段映射函数的一个示例;
图20示出了访问与在B+树中连续索引的窗口查询相交的对象的一个示例;
图21示出了二维空间中对应希尔伯特曲线的变化的数据集基数、对象大小和窗口查询选择性下的pcur值的一个示例;
图22示出了根据本发明一实施例的成本模型的准确性;
图23示出了根据本发明一实施例的累积映射对窗口查询性能的影响;
图24示出了根据本发明一实施例的EdgeMapRange窗口的查询性能的影响;
图25示出了根据本发明一实施例的响应时间性能;
图26示出了根据本发明一实施例的分页存取性能;
图27示出了根据本发明一实施例的独立索引实现的均匀二维数据集的查询性能;
图28示出了根据本发明一实施例的独立索引实现的均匀二维数据集的索引设置时间;
图29示出了根据本发明一实施例的其它二维数据集和参数设置的查询处理时间;
图30示出了根据本发明一实施例的三维数据集的查询处理时间;
图31示出了根据本发明一实施例的PostgreSQL实现中索引的窗口查询性能;和
图32示出了根据本发明一实施例的DBMS实现的索引的窗口查询性能。
具体实施方式
下面参照附图在本发明的实施例中清楚并全面地描述本发明的实施例的技术方案。显然,所描述的实施例仅仅是本发明的一部分而不是全部的实施方式。基于本发明的实施方式,由本领域技术人员没有作出创造性劳动所获得的所有其它实施方式,都落入本发明的保护范围之内。
在图1至8中,示出了一种用于索引数据空间的空间数据对象的索引系统的实施例。一个空间数据对象是任何N维数据对象,其中,N是大于或等于2的整数。
本领域技术人员将理解,该索引系统可以以各种方式,包括以软件、硬件、固件或者它们的组合来实现或提供。此外,该索引系统的各个组件(如具体模块)不需要全部以相同的方式提供。还应当注意的是,该索引系统可以是分布式,包括位于多个国家。
典型地,可以设想,在计算系统上执行软件程序代码以实现索引系统,所述计算系统包括硬件,所述硬件包括处理器、存储器、硬盘、网络接口等。例如,索引系统可以通过在计算系统上安装软件程序产品来提供。在使用时,该计算系统中的处理器执行安装在硬盘中的软件程序,在所述计算系统的存储器中暂时地缓存采样的空间数据对象的尺寸,并从经由计算系统的网络接口连接的、位于远端的数据存储器获得空间数据对象。
图1功能性地示出了根据本发明一实施例的索引系统的示意图。
在最宽泛的层次,索引系统10包括两个主要模块:分区关联模块20和对象映射模块30。
分区关联模块20被设置成根据一个空间数据对象的尺寸将该空间数据对象与多个分区中的一个相关联。在一个实施例中,空间数据对象的尺寸是该空间数据对象的最大范围,多个分区是一个或多个空间数据对象可以与其相关联的多个互斥的群组。
具体地,令O为D维空间数据对象的一个集合。给定一空间数据对象o∈O,o的尺寸定义为o在所有维度中的最大范围。在形式上,
|o|=max{o.u1-o.l1,o.u2-o.l2,o.uD-o.lD} (1)
这里,o.uj和o.li表示o在第j维中的上限和下限。
O的分区布局,由f表示,由分区的数量f.n和分区尺寸值的矢量构成。其中,f.di表示分区尺寸值,这意味着尺寸小于或等于f.di的任何空间数据对象都属于分区i。令pn(o)为返回与空间数据对象相关联的分区数的函数,于是
pn(o)=i,f.d1-1<|o|≤f.di (2)
例如,O中的空间数据对象被分成三个分区,即,f.n=3。这三个分区中的最大空间数据对象尺寸分别是13、28和55。因此,对象被分离的尺寸值是13、28和55,即,
如图1所示,分区关联模块20与对象映射模块30通信,对象映射模块30被设置成基于与该空间数据对象相关联的分区将一个空间数据对象映射到一个索引键。因此,在使用时,基于由分区关联模块20所关联的相应分区,对象映射模块30将多个空间数据对象映射到多个索引键。在一个实施例中,对象映射模块30使用空间填充曲线(例如Z曲线或希尔伯特曲线)将空间数据对象映射到索引键;正在进行的映射利用的是所使用的具体的空间填充曲线的映射函数。在概念上,使用空间填充曲线可以被认为是将整个数据空间分割成多个块;索引键表示各个块。典型地,索引键代表空间填充曲线要用多少步以到达该块。在这样的实施例中,空间数据对象的中心位置(有时称为“中心”)被根据该中心位置位于数据空间的哪个块而映射到索引键。在一个实施例中,两个不同分区的块(或者索引键)通过“偏移量(offsetting)”来进行区分;例如,如果第一分区的最后一块(或索引键)为63,则第二分区的第一块(或索引键)为64。
在图1所示的实施例中,分区关联模块20和对象映射模块30是独立的形式(即,模块20、30独立于数据存储器40和索引存储器50)。然而,可以设想,该索引系统也可以是包含数据存储器和索引存储器两者或其中任一的形式。分区关联模块20和对象映射模块30可在连接到但是独立于数据存储器和/或索引存储器的计算系统中实现。用于对空间数据的索引进行操作的系统有助于高效地选择或操作空间数据对象。
图2更详细地示出了根据本发明一实施例的空间数据对象与索引键之间的关系。在该图中,数据存储器40包括由索引系统10索引的多个空间数据的对象42、44、46。这些索引键52、54、56作为索引键1、索引键9和索引键k被存储在索引存储器50中。每个索引键52、54、56对应于数据存储器40中的一个空间数据对象。在使用空间填充曲线映射空间数据对象的实施例中,每个索引键表示数据空间内与一个空间数据对象(取决于该对象的尺寸,完全地或部分地)相交的一个具体的块。
示出的所述多个索引键52、54、56中的每一个与包含分区A 60、分区C 64和分区E68的多个分区之一相关联。如图所示,每个分区可理解为包括与特定尺寸的空间数据对象相对应的索引键的单独的索引。
通过根据空间数据对象的尺寸来加以分区,可以更有效地对索引进行某些逐分区的操作。例如,窗口查询可以根据可能存在于一个具体分区内的空间数据对象的尺寸来进行调整。
图3示出了索引系统12的另一个实施例的示意图。如前面所讨论的,数据存储器和/或索引存储器可以结合地作为索引系统的一部分或独立于索引系统而实现。在本实施例中,索引系统12包含用于存储多个空间数据对象的数据存储器40和用于存储多个索引键的索引存储器50。
该索引系统12也具有上述分区关联模块20和对象映射模块30之外的几个附加模块。
首先,存在两个用于与数据存储器40和索引存储器50通信的模块:设置成从数据存储器40获取一个或多个空间数据对象的数据获取模块43,以及设置成将一个或多个索引键存储在索引存储器50中的索引存储模块53。如图所示,数据存储器40与数据获取模块43通信,且索引存储模块53与索引存储器50通信。这允许数据获取模块43获得存储在数据存储器40中的空间数据对象,并允许索引存储模块将索引键存储在索引存储器50中。
除了这两个模块43、53,索引系统12还包括数据尺寸分布模块22和数据分区模块24。这些模块确定多个分区,每个分区都具有“尺寸特性”。在本实施例中,数据尺寸分布模块22被设置成确定空间数据对象的尺寸的累积分布。该累积分布表示尺寸小于或等于一组升序的尺寸的空间数据对象所占的比例。数据分区模块被设置成将累积分布分成多个分区。
合起来,数据尺寸分布模块22和数据分区模块24提供用于建立或者重新配置多个分区的设置,所述多个分区根据空间数据对象的尺寸是否小于或等于该分区的具体尺寸(有时被称为该分区的最大空间数据对象尺寸)来对空间数据对象进行分组。
本领域技术人员将理解,模块22、24可以在独立于模块20、30的计算系统中;即,可以有仅包含数据尺寸分布模块22和数据分区模块24的单独的系统。
在图3中,索引系统12也包括分区关联模块20和对象映射模块30。如图所示,从数据获取模块43获取的多个空间数据对象可以(直接通过分区关联模块20)与一个分区相关联和/或用于(通过数据尺寸分布模块22和数据分区模块24)建立或重新配置多个分区,供分区关联模块20使用。因此,该实施例不仅用于建立或重新配置用于分离空间数据对象的多个分区,还用于根据每个空间数据对象的尺寸索引空间数据对象。具有这两种功能可以是有益的;例如,可以为了一组空间数据对象建立或重新配置特定的多个分区以提供最佳性能(例如,可以建立一组分区,以便在搜遍索引键时提供快速的响应时间,或者使所需的分页存取次数次数最少)。
图4更详细地示出了图3的数据尺寸分布模块22和数据分区模块24的示意图。
数据尺寸分布模块22包括数据尺寸采样子模块21、数据尺寸子模块23和数据尺寸分布子模块25:数据尺寸采样子模块21被设置成对图3的数据获取模块43所获得的数据对象进行采样。(要注意,图3中的其它模块没有在图4中示出。然而,虚线连接线用于表示数据尺寸分布模块22的数据尺寸采样子模块21与图3中的数据获取模块43通信。)通常,采样的对象存储在存储阵列中。
该数据尺寸子模块23被设置成确定由数据尺寸采样子模块21采样的空间数据对象的尺寸。
数据尺寸分布子模块25被设置成确定由数据尺寸子模块23确定的尺寸的累积分布。在一实施例中,数据尺寸分布子模块25通过对一组升序的空间数据对象尺寸中尺寸等于或小于具体空间数据对象尺寸的空间数据对象的数目进行计数来确定累积分布。
由数据尺寸分布子模块25确定的累积分布可以以各种方式被分隔,以提供多种分区。一种方法是将分布均匀地分成大小相等的块。或者,可以使用成本模型(cost model)评估不同的分区集合,以确定哪个集合将提供最佳的计算性能,从而选择由成本模型分析出的最佳的集合。
由于不同的分区配置可能导致不同的查询性能,因此找到一个合适的分区配置是非常重要的。使用成本模型是有利的,因为它允许基于成本模型的结果对多个分区集合进行比较和/或排序,从而确定合适的或优化的多个分区。
在本实施例中,数据分区模块23包括成本计算子模块27和分区选择子模块29:成本计算子模块27被设置成基于由数据尺寸分布模块所确定的累积分布来计算一组多个分区的成本模型。在本实施例中,分区模块23中的数据包括成本计算子模块27和分区选择子模块29:成本计算子模块27被设置成基于由数据尺寸分布模块确定的累积分布计算多个分区的集合的成本模型。在本实施例中,可专门为了找到执行窗口查询的一个分区集合的目的来确定成本模型。在一个实施例中,成本计算子模块可以仅通过以“蛮力(brute-force)”计算的方式来计算成本模块(即,循环遍历不同的分区数目和不同的分区值的集合)。因此,对于每个分区集,可以计算执行特定操作的成本,从而可以选择性能最佳的设置。分区选择子模块29被设置成基于由成本计算子模块27得到的计算结果而选择多个分区中的一个。在多个分区中所做的选择可被发送到图3中的分区关联模块20。
在下文中,提供了通过使用成本模型找到合适的分区配置的一个示例。
首先,使用采样来获取O中的对象的尺寸分布。令S1为O上的一个随机样本集。然后,估计O中对象的尺寸分布。如果S1中有nd个尺寸小于或等于d的对象,那么O中大约有个尺寸小于或等于d的对象,其中|O|和|S1|分别表示O和|S1|的基数。然后,使用两层循环来穷举搜寻最佳的分区配置。外层循环遍历分区的不同数目(从1到nmax),同时内层的for-循环为每一个选择的分区数目遍历不同组合的分区尺寸值。这里,nmax是预定的系统参数,表示分区的最大可能数目,而分区尺寸值是从采样步骤中得到的S1中对象的尺寸。在每次遍历中,用给定的分区的数目和分区尺寸值作为配置的输入,用成本模型返回配置的成本。完成两层循环后,即找到最佳的分区配置。
由于分区的数目通常较少,对于许多被测试的数据集和设置,分区的数目一般为3或4,并且分区尺寸值的数目也不是太大,一般低于500,上述的分区配置选择过程只需要几十秒即可完成。由于分区配置选择过程仅在索引建立时完成一次,因此代价是可以接受的。
令表示由上述算法找到的最佳分区配置。然后,将O分成个分区,其中第i个分区包含尺寸小于或等于f.di的对象。作为展开的结果,只需要检查对象的中心是否在展开的窗口查询中。这将查询具有非零扩展(non-zero extents)的对象的问题转换成了查询点对象的问题。
图5是示出了根据一实施例的包括建立多个分区的索引空间数据对象的步骤的流程图。
在步骤100,首先获取空间数据对象。如先前所讨论的,在步骤110,可以使用所获取的空间数据对象来设置或建立空间数据对象的累积分布尺寸。该确定过程包括,对所获得的空间数据对象进行采样112,确定样本中每一个对象的尺寸114,以及确定尺寸的累积分布116。然后,在步骤120将该累积分布分成多个分区。为此,在步骤122使用成本模型来计算多个分区的多个集合中每个集合的成本,并且基于计算的结果选择其中一个集合。一旦确定了多个分区,则在步骤120根据各个对象的尺寸将每个空间数据对象与一个分区相关联。然后在步骤140,基于对象所关联的分区,将该对象映射到索引键。然后,最终在步骤150存储该索引键以便未来访问。
图6示出了索引系统14的另一个实施例的示意图。索引系统14包括位置映射模块60,其被设置成将来自数据获取模块43的一个空间数据对象的位置映射到均匀分布的多个映射位置中的一个位置。在本实施例中,对象映射模块32被配置成不仅基于与所述空间数据对象相关联的分区映射每个空间数据对象,还映射空间数据对象的映射位置。
将来自数据获取模块43的空间数据对象的位置映射到均匀分布的多个映射位置是有利的。如果利用空间填充曲线将映射位置(表示数据空间中的空间数据对象的位置)划分成离散的块,则所需大块数量可能更少;也就是说,如果利用空间填充曲线将空间数据对象的位置直接划分成离散的块,则所需小块数量可能更多。具有的块数较少时,通常意味着可以使用较小的索引来表示块。
该数据位置映射模块60可以不带分区关联模块20而单独与对象映射模块32联用。在仅具有数据位置映射模块60的实施例中,对象映射模块32可被设置成基于空间数据对象的映射位置将该空间数据对象映射到索引键。
图17示出了索引三个空间数据对象的示例,包括将每个对象与一个分区相关联,将每个空间数据对象的位置映射到均匀分布的多个映射位置中的一个,以及基于空间数据对象所关联的分区及其映射位置将每个空间数据对象映射到一个索引键。图17中,对象A的最大范围小于第一分区的最大空间数据对象尺寸(即“尺寸特性”),因此它与第一分区相关联。对象A的中心(在利用映射函数被映射到均匀分布的多个映射位置中的一个之后)根据空间填充曲线(在该示例中为Z曲线)是在块35。因此,对象A被映射为索引键35(或由索引键35表示)。对象B的最大范围大于第一分区的最大空间数据对象尺寸,但小于第二分区的最大空间数据对象尺寸,因此它与第二分区相关联。对象B的中心位于所述第二分区的块4,但由于它在第二分区中,对象的索引键的偏移量是第一分区中块的数目。在该示例中,可以根据以下方程来计算第i分区应偏移的块数:
其中,di是分区i的最大空间数据对象尺寸,D是数据空间(和该数据空间的空间数据对象)的维数,并且n表示分区的数目。
因此,在图17中,第二分区的偏移量为64,从而对象B由索引键68来表示。
要注意,因为第二分区的数据空间内的块的数量不是2的幂,故而基为2的空间填充曲线不能正好地填满块。在该第二分区中,沿着每个维度有个块,但仅使用了前个块。这意味着,在这个示例中,在第二分区的数据空间之外有未使用的块。本领域的技术人员应当理解,在本示例中,具有未使用的块使得空间填充曲线的计算更加简便。
图7示出了如何可以建立均匀分布的多个映射位置的索引系统16的一个实施例。在该实施例中,索引系统16还包括数据位置采样子模块62,数据位置处理子模块64,数据位置分配模块66和数据位置映射子模块68。
该数据位置采样子模块62被设置为对从数据获取模块43获取的空间数据对象进行采样。数据位置处理子模块64被设置成确定由数据位置采样子模块62所采样的空间数据对象的位置。在一个实施例中,数据位处理子模块64被设置成确定每个空间数据对象的中心位置。然后这些位置被发送到数据位置分配子模块66。
该数据位置分配子模块66被设置成确定所采样的空间数据对象位置的累积分布。通常,累积分布是通过计算位置沿着每个维度的近似累积分布来确定的。设想到的是,理想地,位置的实际累积分布是确定的而不是依靠近似的。然而,在实践中通常很难(并且在很多情况下不可能)确定实际的累积分布。
为了执行映射,数据位映射功能子模块68被设置成逼近一个累积映射函数,该累积映射函数基于由数据位置分配子模块66所确定的空间数据对象位置的累积分布,用于将空间数据对象位置映射到均匀分布的映射位置。在一个实施例中,由数据位置映射函数子模块68所逼近的、用于将一个空间数据对象的位置映射到均匀分布的多个映射位置中的一个位置的累积映射函数为:
其中
xn=[xT] (5)
xf=xT-xn (6)
并且,x是要被映射的空间数据对象的位置,i表示第i分区,d是维度,T是中心采样的分区(divisions)的数目,CM1...n[1...n][0...T]表示累积映射值的阵列。
此外,累积映射函数也可以是:
k=[o·cj×nb] (8)
此处,o·c是待映射空间对象的位置,i表示第i分区,d是维度,nb为中心采样的分区的数目,表示累积映射值的阵列,|S|代表采样的空间对象的数目。
要注意,如果o.cj=1,则k=nb,因此bk+1将是未定义的。在这种情况下,cdfi,j(o.c)不是用上述方程计算,而是直接定义为1。
图8示出了索引系统的另一个实施例的示意图。在该实施例中,索引系统18包括多个模块,用于:将空间数据对象与分区30相关联,设置或重新配置多个分区21、23、25、27、29,将空间数据对象的位置映射到的位置20,以及确定将空间数据对象位置映射到均匀分布的多个映射位置62、64、66、68的映射函数。
在本实施例中,结合了用于设立或重新配置多个分区21、23、25、27、29以及用于确定将空间数据对象位置映射到均匀分布的多个映射位置62、64、66、68的映射函数的模块。
如前面所讨论的,可以用成本函数来确定一组合适的或优化的分区。在一个实施例中,对于窗口宽度q和分区尺寸di(di为分区i的最大空间数据对象尺寸),可以根据以下方程计算预期分页存取成本的成本函数:
其中,Pc为具体空间填充曲线的聚类特性,f是一个分页中的空间数据对象的数量(有时也称为“叶节点扇出”(leaf node fanout)),u为平均节点利用率,D是数据空间中的空间数据对象的维数,以及N(di)是小于di的空间数据对象的总数。
此外,上述方程可以由下面的方程所替代:
此处,n是分区的总数,Pc为具体空间填充曲线的聚类特性,Ni表示第i分区中对象的数量,|q|表示查询窗口q的大小,di表示第i分区的分区尺寸,D是数据空间中空间数据对象的维数,f是一个分页中的空间数据对象的数目(有时也称为“引线节点扇出”(lead nodefanout))。
为了计算上述成本函数,可以使用对具体的空间填充曲线Pc的聚类特性的估计。在一个实施例中,这种估计是通过实验获得的;即,Pc可以通过对多个数据集的仿真用试验的方法求近似;数据集是上述成本函数的上述参数的不同的变化情况,改变数据集基数(不同空间数据对象的数目),窗口选择性(窗口查询区域与数据空间面积之比)和对象范围。然后,通过设法使预期平均分页存取(用上述成本函数来计算)与根据试验观察到的平均页面访问之间的误差最小来确定Pc的值。图18示出了三幅图,表示当数据集基数、窗口选择性和对象范围在一定值域内变化时,实际的和估计的分页存取之间的差异。
二维和三维中的希尔伯特曲线和Z曲线的PC(和每个PC的相应误差)的例子列于下表。
表1:不同空间填充曲线的PC值
使用上述成本函数和来自上表的PC值,可以为任何分区尺寸di的集合计算任何具有宽度q的窗口(或任何具有边长q的超立方体查询)的成本。
此外,上述表格可以由下表替代。
表2:不同空间填充曲线的PC值
PC | 误差 | |
希尔伯特曲线,二维 | 1.5722 | 5.45% |
Z曲线,二维 | 1.8817 | 8.24% |
希尔伯特曲线,三维 | 3.2014 | 6.65% |
Z曲线,三维 | 3.5883 | 7.15% |
返回参照图8,该实施例还包含树存储器51和用于将来自对象映射模块51的索引键索引为B+树中的条目(entry)的索引模块43。本领域技术人员将理解,这些条目可能不被设置为B+树,而是任何一维的树都是适合的。在许多情况下,将索引键映射为树中的条目是有利的,因为已经有许多基于B+树结构的现有系统。因此,索引系统18可以仅是现有的数据库管理系统(DBMS)的顶部上增加的另外一层。
在图9和图10中,提供有示出了索引系统11的示意图,该索引系统11用于对由该索引系统索引的空间数据对象的索引进行操作。
在一种情况下,该操作可以是窗口查询。本领域技术人员将理解,窗口查询可以具有任何形状的窗口。通常情况下,实施例采用矩形窗。然而,具有其它窗口形状的查询可以用于查询二维数据对象。这与用于查询高维数据对象(N维数据对象,其中N大于或等于3)的窗口查询是相似的情况;用于查询高维数据对象的窗口查询可以具有任何高维形状的窗口。通常,可以设想到,典型的窗口查询具有超矩形的窗口。
图9和图10示出了操作和查询都是窗口查询的一个实施例。然而,可以设想到,该操作可包括其它操作,如更新索引、向索引中插入新的空间数据对象等。进一步的,可以设想到,多个操作可以在由所述索引系统所索引的多个相关数据空间上进行。例如,由索引系统所索引的第一索引和第二索引之间可以建立关联。例如,第一索引的空间数据对象可表示一个地理区域中的餐厅,第二索引的空间数据对象可表示在同一地理区域中的停车场,使得在所述第一索引上进行的窗口查询(例如,定位特定区域内的餐厅)可以加入到在第二索引上进行的一个或多个窗口查询(例如,定位位于具体区域内的餐厅附近的停车场)。也就是说,定位餐厅的窗口查询可用于生成一个或多个后续窗口查询以定位那些靠近停车场的餐厅。
首先参考图9,索引系统11包括查询接收模块70、查询调整模块80和查询处理模块90。
该查询接收模块70被设置成接收对空间数据对象的查询。查询调节模块80被设置成基于每个分区的尺寸特性和所接收的查询来确定要对与各分区相关联的空间数据对象进行的经调整的查询。通常,每个分区的尺寸特性是各分区中的空间数据对象的最大尺寸。查询处理模块90被设置成每个分区进行经调整的查询。
在使用时,查询接收模块70向查询调整模块80发送查询,进而基于各分区的尺寸特性和所接收的查询确定要对与每个分区相关联的空间数据对象进行的经调整的查询。
然后查询处理模块90对每个分区进行由查询调整模块80调整的查询。通过遍历与索引相关联的每个分区,索引系统从而对索引的所有空间数据对象的进行查询。
现在参考图10,其中更详细地示出了图9的查询调整模块80。查询调整模块80包括调整窗口形成子模块82和窗口位置映射子模块84。
该调整窗口形成子模块82被设置为形成具有矩形窗口的窗口查询,该矩形窗口沿着每个维度每个方向上的分区中扩展了对象的最大尺寸的一半。设想到,形成沿着每个维度每个方向上的分区中对象的最大尺寸的一半而扩展的窗口,可以捕捉可与所接收的窗口查询相交的所有可能对象。
图10中包含了调整后的窗口查询的示意。在左上角,示出了数据空间90和表示接收的窗口查询的窗口的窗口92。在右手侧,示出了五个数据空间,每个对应于一个分区。在每一个数据空间中,示出了调整后的窗口的查询93A、93B、93C、93D或93E。
该窗口位置映射子模块被设置成将调整后的查询的矩形窗口的至少一个位置映射到均匀分布的多个映射位置中的至少一个。在一个实施例中,这是通过使用由模块62、64、66、68所确定的映射函数来映射窗口而进行的。在一个实施例中,窗口位置映射子模块84映射每个窗口的每个角的位置。
图14示出了在三个分区上进行的经调整的查询的一个示例。对于每个分区310、320、330,调整的窗口查询315、325、335是通过如下而形成的:在所有四个方向将接收的窗口查询300的窗口扩展了分区的最大空间数据对象尺寸的一半(调整的窗口查询受限制不能扩展到数据空间外),并且将调整的窗口的每个角位置映射到均匀分布的多个映射的位置中的一个。在该图中,每个分区被示出为具有表示索引键的多个块(索引键和块通过使用Z曲线的映射而得到,例如,第一分区310包括块0至63)。表示与调整的窗相交的块的每个索引键被列入索引键范围的列表中(即,作为表示索引键的一个连续集合的范围)。在图14中,列表从而为{[2,3],[6,6],[8,12],[14,14]}。然后,将对这些索引键范围进行分区中的空间数据对象的查询。
在使用空间填充曲线(例如,Z曲线或希尔伯特曲线)映射数据空间的实施例中,一种进行经调整的查询的方法将是扫描或遍历窗口查询中的每个块。然而,这种方法将需要调用每个块的空间填充曲线的映射函数。
若要规避扫描或遍历每个块,则如果使用Z曲线映射数据空间,则可以使用递归算法进行经调整的查询,以减少对Z曲线映射函数的调用。例如,如果分区完全由窗口查询的窗口覆盖,则整个分区的索引键范围被添加到表示“候选块”的列表中,其可能或可能不与空间数据对象相交(索引键范围可以通过调用该区域的第一个和最后一个块上的Z曲线的映射函数来确定)。如果该窗口不完全覆盖分区而是仅覆盖分区的一部分,那么如果成本模型预测分区内的空间数据对象的查询成本超过1个分页存取,则将分区分成2D个更小的区域(其中D是空间数据对象的维数)。由于这个划分策略与空间填充曲线如何划分数据空间相同,因此对应于每个子区域的键范围是非常容易计算的。例如,令二维数据空间由阶数λ=3的空间填充曲线索引。那么,数据空间的键范围是|0,2λD-1|=[0,63],而其四个子区域的键范围是:
它们分别等于[0;15],[16;31],[32;47]和[48;63]。如果窗口未完全覆盖较小的区域,代表着该较小区域的索引键将被丢弃。在一个实施例中,用于预测空间数据对象的查询成本的成本模型是
其中,Pc为具体空间填充曲线的聚类性质,f是一个分页中的空间数据对象的数目(有时也被称为“叶节点扇出”),u为平均节点利用率,D是数据空间中空间数据对象的维数,以及N(di)是小于di的空间数据对象的总数。
此外,上述方程可以由以下方程所替代
此处,n是分区的总数,Pc为具体空间填充曲线的聚类性质,Ni表示第i分区中对象的数量,cdfi,j(.)表示用来计算如前面所定义的对象位置的映射位置的函数,q.uj表示查询窗口q在第j维度的上界,q.lj表示查询窗口q在第j维度的下界,di表示第i分区的分区尺寸,D是数据空间中空间数据对象的维数,f是一个分页中的空间数据对象的数目(有时也被称为“叶节点扇出”)。
如果窗口仅部分地覆盖较小的区域,则成本模型被用于预测对该区域内的空间数据对象进行查询的额外成本:如果所预测的成本小于1个分页存取,则所述区域被视为等同于完全由窗口覆盖,并且添加该区域的索引键;如果成本超过1个分页存取,则该区域被再次划分为2D个更小的区域,并且递归地重复上述过程,直到区域尺寸达到单个块,在这种情况下,该块的键可能被添加或不被添加(取决于它是否与窗口查询相交)。
图15示出了上述递归算法在具体分区中使用的一个示例。最初,分区被子划分成4个子区域,因为成本模型预测查询与分区相关联的空间数据对象多于1个分页存取。接着,两个最左侧子区域的索引键被丢弃,因为它们与调整后的窗口查询完全没有相交,并且其它两个子区域由于进一步的成本模型预测而再次被划分为更多子区域。观察右下角子区域,它包含与调整后的窗口查询不相交的两个子区域(因此,代表着覆盖这两个子区域的块的索引键被丢弃)、被窗口查询覆盖的一个子区域(因此,代表着覆盖该子区域的块的索引键同样被添加)、以及其中所预测的成本模型小于1个分页存取的一个被部分覆盖的子区域(并且,代表着覆盖该子区域的块的索引键同样被添加)。相同的过程被应用于右上方子区域,直至得到{[24,27],[30,30],[48,51],[52,55]},此即为与窗口查询相交的索引键范围的一个大致列表。与扫描或遍历每个块相比,上述的方法(本文中也简称为RoughMapRange)可通过放宽对应于窗口查询的键范围来减少窗口查询的计算成本。
在使用希尔伯特曲线映射数据空间的实施例中,一种执行经调整的查询的方法是只考虑边缘块来计算索引键范围的列表。如果已使用希尔伯特曲线(或其它连续曲线)映射数据空间,这样的方法通常是有利的,因为每个范围的索引键与总是在查询窗口的边缘上的索引键相对应。在一个实施例中,该方法将考察每个边缘块,以确定该块是否为查询窗口的入口或出口点。要确定索引键是否为入口/出口值,可以用逆希尔伯特映射函数来检查前一个/下一个值是否在查询窗口之外。如果是,则应当将该索引键添加到列表中。然后,每个入口点和每个出口点被添加到索引键的有序列表(由于一个点可能即是入口点又是出口点,故而该点可以被添加两次)。在观察各边缘块的最后,该列表将有偶数个索引键(因为入口点和出口点的数目必须相等)。然后,该列表可用于通过配对列表中的条目来构造索引键范围的列表。
图16示出了用于具体分区的上述方法的一个示例。从左上角开始考察数据空间,索引键24被两次添加到(最初为空的)列表,因为该块既是调整后的窗口的入口点也是出口点,这使得该列表成为[24,24]。接着,索引键27仅是入口点,因此列表变成[24,24,27]。索引键29既不是入口点也不是出口点,因此它不被添加到列表中。最终,该列表变成[8,11,24,24,27,36,39,40,45,46,50,55]。在配对列表中的索引键之后,即得到了与经调整的窗口相交的索引键的索引键范围列表。
与扫描或遍历每个块(下文简称ScanMapRange)相比,上述方法(下文简称EdgeMapRange)可以降低复杂性。为了对上述执行调整后的查询的方法进行一个简单的复杂性分析,不妨假设窗口查询是超正方形,并且令nc为窗口查询一侧上的单元的数量,则窗口查询中有nc D个单元,并且ScanMapRange中调用C()的次数为O(nc D)。上述方法中C()/C-1()的调用次数为O(nc D-1)。当D=2时,改善是最明显的,其中ScanMapRange中的调用次数为O(nc 2),而EdgeMapRange中的调用次数为O(nc)。
图11是示出了对空间数据对象的索引进行操作的步骤的流程图。
首先,在步骤200,接收到查询。然后,在步骤210,基于每个分区的尺寸特性和接收到的查询,为各分区确定经调整的查询。在步骤212,对于每个分区,经调整的查询是通过形成具有新窗口的查询而确定的。在步骤214,此窗口的至少一个位置被映射到均匀分布的多个映射位置中的至少一个。在步骤230,映射之后,对分区中的空间数据对象进行经调整的查询。
图12是示出了基于多个均匀分布的映射位置索引空间数据对象的步骤的流程图。
首先,在步骤132,将每个空间数据对象的位置映射到多个映射位置中的一个。然后,在步骤142,基于各空间数据对象的映射位置,将每个空间数据对象映射到一个索引键。
将每个空间数据对象的位置映射到均匀(或大致均匀地)分布的多个映射位置中的一个的目的是,实现分区中对象的均匀(或大致均匀)分布。累积分布函数(CDF)被用于映射,因此该映射被称为累积映射。
该累积分布函数cdf(x)返回小于或等于x的数据所占的百分比。在每个维度j中,定义映射cdfj(o),它返回中心坐标小于或等于维度j中o的中心坐标的对象所占的百分比。令<o1,o2,…,O|O|>为O中多个对象按照维度j中它们的中心坐标递增顺序的排列。则,
各对象的CDF值在1维空间内均匀地分布在[0,1]之内。因此,实现了生成均匀分布的映射。要注意,映射之后,整个数据空间被映射成单位超立方体空间。
获取累积映射的准确CDF需要对所有对象进行排序,这开销较大。或者,可以仅计算少数坐标值处的CDF值,这可以通过对数据集的扫描来获得,并因此避免了排序。然后,这些CDF值可用来构造近似于映射的准确CDF的分段映射函数(PMF)。
在下文中,如图19所示,利用构造分段映射函数的示例来说明如何构造PMF。
维度j中的数据域平均地分成nb个段(buckets)。段的边界坐标用来计算PMF。在图19(a)中,示出了对维度中的对象中心进行映射,维度X中的数据域[0,10]被分成5个段,边界坐标为0,2,4,6,8和10。为了计算它们的CDF值,首先计算累积计数,其等于坐标小于或等于边界坐标的对象的数量。在该图中,白色点表示维度j中对象的中心坐标。边界坐标的累积计数分别为0,2,4,6,8和10,其可以通过扫描一次坐标来获得。划分对象的总数,10,得到边界坐标的下列CDF值:0,3/10,6/10,8/10,9/10,1。然后,在维度Y上标绘边界坐标的CDF值(由虚线交汇处的点表示),并通过线段连接标绘出的点,这产生了折线,其显示为从原点出发的粗黑折线。该折线对应着用于逼近映射所用CDF的PMF。如Y轴上的黑色点所示,在该函数进行映射之后,对象大致均匀地分布在数据域[0,1]内。
形式上,用于逼近精确的CDF的PMF定义如下。令j为映射的当前维度,|Z|j为第j维度上的数据域的大小,为段的nb+1个边界坐标,bk.c为bk(k=0,...,nb)的累积计数。然后,给出对象o,它在第j维度上的中心o.c位于o.cj,其中令o.c为段k。
在第j维度上用来将对象o的o.c映射成分区i的PMF,由cdfi,j(o.c)表示,其形式上定义如下。
这里,Oi表示分区i的一组对象。要注意,如果o.cj=|Z|j,则k=nb并因此bk+1将是未定义的。在这种情况下,不利用式(15)计算cdfi,j(o.c),而是直接将其定义为1。
为了进一步降低计算PMF的成本,可以仅计算小样本集合S2上的PMF。然后,cdfi,j(o.c)变成:
图19(b)示出了映射之前的情况,图19(c)示出了映射之后的情况。可以看出,在累积映射之后,偏斜分布的二维数据集变成均匀(大致均匀)的数据集。PMF值对CDF值的近似比由ρ表示,其推导如下。在段边界,PMF和CDF有相同的值。近似比ρ为1。对于两个段边界之间的一点,ρ推导如下。假设两个相邻段边界坐标bk和bk+1之间的对象以它们的中心坐标升序排列。令o为第m个对象,并且令l为其到bk的距离。o的中心的CDF值为o的中心的PMF值也可通过式(15)计算。然后,
根据上面的方程,ρ的准确值取决于特定对象能够获得的l和m的值。然后进一步导出与任何特定对象无关的ρ的上限和下限。由于1≤m≤bk+1.C-bk.C且0<l<bk+1-bk,有:
因此,段的数量和一段内对象的数量限定了ρ的两个边界,并且当构造PMF以达到某一ρ值时,这些边界可以用来帮助确定参数值。
在累积映射后,再用空间填充曲线映射每个分区的对象,从而得到索引键。该映射的输入是累积映射后的对象o的坐标,而输出则是o的空间填充曲线值。来自不同的分区的曲线值是通过将前(i-1)th个分区中的网格单元的总数添加到分区i的曲线值而分隔的。这样,只需要一个B+树即可索引来自所有分区的对象。
这部分的挑战是为每个分区确定空间填充曲线的阶数。查询处理算法涉及两个概念性的阶段:
(i)找出与窗口查询相交的单元,然后根据这些单元,
(ii)找出与窗口查询相交的对象。
单元较大(阶数较小)的空间填充曲线具有的单元较少,并将使得阶段(i)成本较低,但它在每个小单元中也有更多个对象,并因此使得阶段(ii)成本较高。单元较小(阶数较大)的空间填充曲线在阶段(i)成本较高,但在阶段(ii)成本较低。
为了实现两个步骤的成本平衡,建议使用分区尺寸值作为单元尺寸。直观上是让单元足够大到包含一个对象,但又不能过大,以避免在查询处理中出现太多的误中。这样,每个对象将只有一个索引键。如此可减小用来存储这些键的B+树的大小,并且提高查询处理效率。要注意,索引针对的是对象中心。每个对象中心都在一个单元中,并且每个对象已经只有一个索引键。似乎单元尺寸甚至可以低于从而尽可能限制查询处理中的误中。但是,查询处理需要窗口查询扩展。这有效地返还给对象它们的范围。如果单元太小,窗口查询的扩展部分将覆盖许多额外的单元,这将导致对窗口查询进行映射的额外成本过高。
接下来,确定分区i的空间填充曲线的阶数,由λi.表示。对应于该空间填充曲线的概念性网格应覆盖整个数据空间。阶数为λi的空间填充曲线在每一侧具有个单元,并且每个单元的边长为令|Z|为数据域的尺寸。那么,λi应满足这意味着
如图17所示,一个分区具有0.28的分区尺寸值,因此单元尺寸为0.28。为了覆盖边长为1的数据空间,该空间填充曲线的阶数应该是
要注意,所得的空间填充曲线概念性网格可以比数据空间大一点,这意味着右侧或底部的单元与数据空间重叠的区域可能较小。其结果是,该单元包含的对象数量可能较少,因而导致索引键分布不均匀。然而,单元的重叠区域较小也意味着该单元与查询窗口相交的概率较小。因此,网格的多余空间对查询处理性能的影响是有限的。
现在有一个空间填充曲线,具有个单元。这也是分区i的网格单元的数量。那么,前ith个分区的网格单元的总数,由vi表示,计算为:
添加vi-1到分区i中的对象的曲线值,以避免不同分区的索引键范围之间的重叠。其结果,在空间填充曲线映射和曲线值添加之后,得到分区i中的对象o的索引键,由ssi(o)表示,计算如下:
此处,返回累积映射之后的对象o的中心坐标,Ci(·)返回数据空间中的给定点的空间填充曲线值。函数Ci(·)取决于分区i的空间填充曲线的类型和顺序。一旦获得了所有对象的索引键,将它们放入B+树,以索引对象。
图17示出一个示例,其中分区的数目是3并且用于三个分区的空间填充曲线(尤其是Z-曲线)的阶数分别是3、2和1。累积映射之后,分区1中对象o1的中心是在单元35,即,如图17(a)所示。由于没有先前的分区,即v0=0,直接分配给对象o1键35。因此,ssi(o1)=35。分区2中对象o2的中心位于(b)中的单元4,即但是分区1已经占据了曲线值0到63,即v1=64。因此,分配ssi(o2)=4+64=68。同理,ssi(o3)=0+80=80。
作为一个示例,算法1总结了尺寸分区索引过程。
(1)确定分区尺寸。该算法首先从O采样一个集合S1,这需要的时间和空间为O(|S1|)(行1至3)。以S1中的对象的尺寸分布作为O的尺寸分布的近似。基于该近似的尺寸分布,使用成本模型通过对处理不同配置下的窗口的查询的预期成本进行计算和比较,来搜索最佳尺寸分区配置(行4至23)。此处,对于每个可能的分区数目n,使用以词典编纂顺序从|S1|个对象中生成尺寸为n的所有组合的算法,生成分区尺寸值的不同组合。其时间复杂度为O(nC(|S1|,n)),其中O(C(|S1|,n))部分表示生成组合的复杂度,O(n)部分表示一个组合的成本模型计算的复杂度。空间复杂度为O(nmax),其对应生成组合所使用的chosen[]辅助阵列。为了进一步减少生成组合的计算成本,首先建立对象尺寸的直方图,然后生成直方图的分区尺寸组合,使得组合的数量减少。在最佳分区配置确定后,数据集O根据被分区成个分区,这需要的时间和空间为O(|O|)(行24)。
(2)累积映射。每个分区的对象首先通过累积映射进行映射,以达到近似均匀分布(行25至29)。此处,对S2集合进行采样并且计算近似的CDF函数需要O(D|S2|)的时间和空间。对D个维度完成这些,使用了的时间和空间总计O(D|S2|)。一个对象的累积映射需要时间O(D)和空间O(D+nb),其中O(nb)表示用于存储边界坐标的空间。对所有对象进行映射,这需要时间O(D|O|)和空间O(D|O|+nb)。
(3)空间填充曲线映射和对象索引。随后,对象通过空间填充曲线映射被映射(行30和31),以生成索引键。该映射的时间复杂度和空间复杂度是O(|O|time(C))和O(|O|space(C)),其中O(time(C))和O(space(C))分别表示计算曲线值映射函数C(·)的时间复杂度和空间复杂度。所生成的键被送入B+树,以索引O(line32)中的对象,这需要时间O(|O|log|O|)和空间O(|O|)。
图13是示出了用于对根据本发明一实施例的数据空间的空间数据对象的索引进行操作的步骤的流程图。
首先,存步骤202,接收到对数据空间的空间数据对象的查询。然后,在步骤216,该查询的至少一个位置被映射到多个映射位置中的至少一个。在步骤232,基于至少一个映射位置进行查询。
本发明领域的技术人员将会理解的是,在不脱离本发明的精神和范围的情况下,可以进行多种修改,具体而言,显而易见的是,可以利用本发明的实施例的某些特征以形成进一步的实施例。
例如,如果需要,图8和图9的索引系统可以包含将索引键映射到B+树中的入口的附加模块。
此外,用于索引空间数据对象的索引系统可以仅包括:用于将每个空间数据对象的位置映射到多个均匀分布的映射位置中的一个的数据映射模块,和基于空间数据对象的位置被映射到的位置将每个空间数据的对象映射到索引键的对象映射模块。在这方面,一种用于对空间数据对象的索引进行操作的系统,所述空间数据对象由所述系统索引,所述系统仅包括,用于接收具有至少一个位置的查询接收模块,用于将查询的至少一个位置映射到均匀分布的多个映射位置中的至少一个的查询映射模块,以及基于至少一个映射位置进行查询的查询处理模块。
进一步的,应当理解的是,用于预测对空间数据对象的查询的成本模型假设前提有:(i)用于索引上述空间数据对象的方法中被索引对象的中心(其可以称为尺寸分区索引,简称SSI)遵循大致均匀的分布,(ii)给定相同的窗口查询,SSI的在不同分区配置中的性能对比主要由这些配置中所使用的不同空间填充曲线决定。由于采用了累积映射将对象的中心变换到各对象大致均匀分布的空间,因此假设(i)是成立的。由于空间填充曲线的查询性能从根本上由称为聚类性质的曲线的固有性质决定,因此假设(ii)是成立的。
下面,详细描述用于预测空间数据对象的查询成本的成本模型。
处理窗口查询的分页存取总数由α表示,是处理所有分区上的查询的分页存取次数的总和。用αi表示分区i的分页存取的次数。
令nq为窗与口查询q相交的对象的数量。αi随nq增加。
1.连续的情况。
假设与q相交的nq个对象在B+树中连续地被索引,并且树中的一个节点(一个分页)的容量是Cmax。导出αi的期望如下,由E(αi)表示。
如图20所示,q可以覆盖或个节点,取决于nq和节点中nq个对象的起始位置,由s表示,s=0,1,...,m,...Cmax-1。此处,s=m表示nq个对象中具有最小键的对象被放置在一个节点的第m个入口。将nq改写为k=0,1,...,l,...Cmax-1。
那么,
其中,p(k=l,s=m)表示k=l且s=m的概率,并且αi,l,m表示当k=l且s=m时,分区i上访问查询的叶节点的数目。
对于随机的窗口查询,Cartesian空间[0,Cmax-1]×[0,Cmax-1]中的k和s的任何组合的p(k,s)应该是相同的,即,
因此,
接下来,为l的每一个值导出并且将所得值相加得到E(αi)的值。
(i)当l=0时,如果m=0,则否则,
(ii)当l=1,时,不论m的值为多少,
(iii)当l=2时,如果m=(Cmax-1),则(即,前两个和最后两个对象分别驻留在一个节点,而其余的对象驻留在个节点;否则,
(iv)同理,当l>2时,如果m≥Cmax-l+1,则否则,
将αi,l,m的值相加,得到:
因此,
因此,平均来说,访问叶节点的个数是由于在B+树中,叶节点的数量比非叶节点的数量大得多,并且Cmax通常是相当大的,从而
2.一般情况。
更一般地,与q相交的对象在B+树中不是连续地被索引,因为窗口查询中的对象没有严格连续的曲线值。例如,在图16中,窗口查询含有曲线值为分为多个段的对象。在这种情况下,索引这些对象的节点数目比由式(23)估计的数量大。因此,αi增加。这种增加的规模由pcur表示,是通过多少个与窗口查询相交的对象具有连续的曲线值以及多少个对象没有而确定的,这进而通过用于对象映射的空间填充曲线的聚类性质而确定。对不同类型的空间填充曲线的聚类性质的研究已经表明,不同类型的曲线在窗口查询中的对象的曲线值中具有不同程度的连续性。要导出接近形式的公式来计算每个空间填充曲线的连续程度并精确地预测其对分页存取增加的规模的影响,即便有可能,也将是非常困难的。然而,由于分页存取增加的规模是具体空间填充曲线的固有属性,故而是恒定的。所以pcur的值可根据经验得到。
接下来,为了将αi用公式表示为nq、Cmax和pcur的函数,分析αi如何随nq和Cmax而变化。假定数据对象均匀地分布在数据空间中,并且这些对象均匀地分布在B+树的叶节点中。然后,给定窗口查询q,包含与q相交的对象的叶节点数量由A表示,其正比于q在D维空间中的体积(如果D=2,则为面积)。因此,A∝v(q)。同时,与窗口查询nq交叉的对象数目也正比于v(q),即nq∝v(q)。因此,A∝nq。
由于对象均匀地分布在树节点中,A与树节点容量成反比,即结合A∝nq,得
处理窗口查询q需要访问包含与q相交的对象的叶节点和一些非叶节点。由于B+树中叶节点的数量比非叶节点的数量大得多,为处理q,而访问的树节点的个数αi约等于为处理q而访问的叶节点个数,即αi≈A。因此,根据以上分析,还确定了一般情况下分页存取增加的规模pcur是常量。因此,
由此,概括方程(23),得到
下面,将详细说明如何确定成本模型中的参数。
首先,导出与q相交的对象数目nq,然后导出一般情况下分页存取增加的规模pcur。
1.与窗口查询相交的对象数目(nq)。
基于窗口查询q所重叠的数据空间的比例,导出nq。大意是,在数据对象均匀分布的空间中,包含在窗口中的对象的比例大约是由窗口重叠的数据空间的比例。在SSI中,累积映射之后,对象接近均匀分布。因此,其中,ni、||q||和||Z||分别表示分区i中的对象数量,窗口查询的面积(或体积),以及数据空间的面积(或体积)。由于累积映射后的数据空间||Z||的面积(或体积)变为1,它具有:
nq≈ni||q|| (25)
1)推导||q||。基于q在每个维度j的下界q.lj和上界q.uj的位置,可以进行上述窗口查询扩展和对q的累积映射,以获得||q||。形式上,
此处,cdfi,·表示用于分区i中的累积映射的CDF的集合,而di表示分区i的分区尺寸值。
当使用成本模型来确定分区配置时,还没有具体的窗口查询q,因此也没有q·lj或q·uj的任何具体位置。此时需要q·lj和q·uj的所有位置的积分。形式上,
此处,|Z|j表示维度j上的数据空间范围。
2)简化||q||。式(27)给出了分区配置选择的q的准确大小。然而,这是一个计算开销较高的方程。因为在配置选择中需要频繁使用成本模型,故||q||的计算简化如下。成本模型假定数据对象是均匀分布的。q的不同位置对数据集的不同分区所具有的选择性效果应当是相似的;q的位置上的积分和累积映射不太影响不同分区之间的成本的比较结果。因此,在式(27)中丢弃积分和CDF,并用|q|j代替q.lj和q.uj来表示维度j上g的范围,于是有
分区配置选择不存在具体的窗口查询,因此|q|没有对应值。使用超正方形形状的“典型的窗口查询”的尺寸,由表示。直观上,只需要比较SSI的不同分区配置的成本,即可帮助确定最佳配置。相同的“典型的窗口查询”应对计算不同配置的成本具有相同的效果,并因此不改变不同配置的相对成本。因此,||q||进一步简化为,
这个方程计算的额外开销较低。在实验研究中,结果表明的值对配置选择结果的影响非常小。
2.一般情况下的分页存取增加的规模(pcur)。
要了解某种类型的空间填充曲线的pcur的值,用曲线实现SSI,然后使用被实现的SSI进行窗口查询。记录分页存取的实际次数,并将其与连续情况下的成本模型所估计的次数(式(23),即进行比较。观察与连续情况相比时,一般情况下的分页存取增加的规模有多大。
图21示出了改变数据集基数、对象尺寸和窗口查询选择性来了解二维空间中的希尔伯特曲线的结果,其中|~o|表示从一些真实的数据集获得的平均对象尺寸。在该图中,分页存取的实际次数和估计次数分别由“实际”和“估计”表示。可以观察到,实际数量始终约比估计数量大0.6倍。计算每个数据点的增加规模,并取平均作为pcur的值,这导致Pcur=1.5722。在一般情况下的成本模式(式(24):中使用这个值,并重新估计对于不同设置的分页存取次数。通过比较实际次数和估计次数,结果表明最大误差率只有5.45%。
类似地,分别得到了在2-维空间和3-维空间中Z-曲线和希尔伯特曲线的pcur值。这些值及其相应的最大成本模型估计误差列于表2中。所实现的小估计误差率(即,8.24%以内)说明使用pcur和成本模型是成立的。
然后,nq和pcur可以整合到式(7)中,以获得成本模型的最终形式。
对于分区配置选择,使用成本模型的简化版,其中,nq通过式(8)和(12)来计算:
对于窗口查询成本估算,使用成本模型的完整版,其中,nq通过式(8)和(9)来计算:
通过上述对计算系统的描述,该方法的其它方面将是显而易见的。本领域的技术人员还将理解,该系统可以用程序代码实现。程序代码可以以多种方式来提供,例如软件程序产品,其包括诸如如盘或存储器等的计算机可读存储介质;或作为数据信号(例如,通过从服务器发送该数据信号)。例如,索引系统可以通过包含配置成要被执行的程序代码的软件程序产品来提供,使得软件程序安装在用作数据库管理系统(DBMS)的计算系统上。
由本申请的实施例提供的用于索引数据空间的空间数据对象的索引方法可以在完整的DBMS(full-fledgedDBMS)中实现,而不修改DBMS内核,详细描述如下。
创建一个表来存储空间对象的最小边界矩形(MBR),其中个MBR的每个维度上的下边界和的上边界都存储在单独的列中。需要另一列来存储用于将MBR与其相应的空间对象相关联的唯一ID。这些是在没有空间支持的情况下使得在完整DBMS上能够进行空间查询所需的全部列。另外,SSI需要表中的列ssi_key来存储MBR的SSI键。下面是创建存储SSI的2D对象的一个示例SQL语句。
可以创建多个表用来存储用于SSI键计算的参数。如方程(5)所示,参数包括分区的数目f.n、数据维数D、用于构建CDF的样本的数量|S2|、用于构建CDF的段的数量nb、每个维度中的数据空间大小|Z|j、每个分区的空间填充曲线的阶数λi、在前i个分区中使用的网格单元的总数vi,以及每个段边界坐标的累积计数bk.c。创建用来存储这些参数的表的示例SQL语句如下:
给定一个数据集,用来:(i)产生用于SSI键计算的参数;(ii)计算每条记录的SSI键;以及(iii)通过DBMS′编程接口,如ODBC,将参数和SSI键插入DBMS中的数据库表的C语言程序。
上述程序也可用于数据维护。当新的数据记录到达时,该程序计算SSI键以便记录,并且生成用来将其插入数据库表的INSERT语句;当要删除记录时,记录的id被传递给程序,并且程序生成用来从数据库表中删除记录的DELETE语句;当记录的MBR被更新时,程序首先基于新的MBR计算用于记录的新的SSI键,然后生成用来更新数据库表中的记录的UPDATE语句。下面是用于数据维护的示例SQL语句,如下:
此处,<i_lower_1,i_upper_1>、……、<i_lower_k,i_upper_k>表示该窗口查询映射到的空间填充曲线值的范围。最后的AND语句是需要的,因为在ssi_key上的比较可能会返回误报,这需要由窗口查询直接过滤。
要注意的是,上述SSI的实施是在现有的DMBS之上,其不改变DBMS的内核。事务管理问题讨论如下。有了上面SSI实现,空间数据库操作(即插入、更新、删除和窗口查询)分两个步骤进行:(i)由前文的C语言程序计算一个对象的SSI键,或者在一个窗口的查询的情况下计算一组键范围,并生成相应的SQL语句;(ii)DBMS执行生成的SQL语句来更新索引。包含上述空间操作的事务的完整ACID属性可以通过应用事务模型来实现,如2PL和DBMS之外的故障恢复机制,例如,可以是在DBMS被查询的应用层中,或在封装了到DBMS的访问的服务层中。如果应用在应用层中,可以使用许多平台,如用于JavaEE的Spring,其负责业务逻辑中的事务管理,因此只需要很少的额外工作量。如果应用在一个独立的服务层,能够避免大规模的工作量,因为可以利用B+树在DBMS中的实现来提供第二步骤中的ACID属性。总体上,对于上述的SSI实现,在DBMS之外只需少量工作量即可实现事务管理。另选地,可将SSI索引技术集成到DBMS的内核(而不是加到DBMS之上),并由DBMS处理事务管理和故障恢复问题。这可以提供更高的SSI索引技术效率。
除了支持ACID属性,SSI对到RDBMS的事务吞吐量带来的负面影响不大。具体地,对所述记录和锁定问题讨论如下。对于处理窗口查询时进行锁定,SSI和基于映射的竞争性的方法,例如XZ-ordering法,都将查询窗口映射到用于在B+树上进行搜索的一组键值,其可能导致在执行事务时相应值的共享的锁定。这种锁定的成本取决于由不同方法所生成的键值的数量。给定相同的查询,生成键值较多的方法的锁定开销可能较大,并因此具有的并行度也较低。给定相同的数据分布和查询,不同的以映射为基础的方法应当产生相同数量的键范围,因为一个窗口查询内的连续空间填充曲线的分段数不随映射方法而变。注意到SSI具有分布变换步骤,其使得数据更均匀,所以相比其它的映射方法,SSI倾向于产生的连续空间填充曲线的分段数更少。这是由实验结果证实的。具体细节请参考“SSI集成在DBMS中时的性能”。当处理相同的查询SSI时,通常涉及的分页存取较少,即误中较少。因此,预计SSI在并行度和锁定开销方面的表现能够不弱于其它以映射为基础的方法。在并行控制方面,基于R树的方法对于SSI是没有竞争性的,因为R树从根本上比B+树更复杂。R树中与MBR之间的重叠可能会导致许多节点被并行访问,因此在查询中被锁定。
实验研究
下文中,将展示对SSI的实验研究的结果。首先,研究了不同组成部分对SSI性能的影响,然后,将SSI的查询处理效率与某些现有的作为一个独立的空间索引实现的空间索引的查询处理效率进行对比,最后,SSI被集成到两个非专门设计的DBMS中,并且将查询处理效率与两个DBMS的空间组件的查询处理效率进行对比。对于每一个实验,运行200个窗口查询并且报告分页存取的平均次数和响应时间。
作为一个示例,该实验系统具有Intel CoreTM 2 Duo E600的处理器、2GB的RAM和分页为4096字节的7200RPM SATA硬盘。所有的算法都是用C语言实现,并且在Linux 2.6.24下使用GCC 4.2.3编译。每个浮点类型的变量占主内存4个字节。默认索引不使用缓存(允许操作系统中的I/O缓存)。在研究缓存大小所带来的影响的实验中,将缓存大小从0变化到1200个分页,并且用直接I/O来绕过操作系统的I/O缓存,即,使用系统函数open()来打开数据文件并设置O_DIRECT标记。
使用了从R树Portal3获得的三个真实数据集:德国地势数据集、Tiger/Line LA河流和铁路数据集,以及Tiger流数据集。这些数据集包含76,999、128,971和194,971个二维的MBR,并且分别由“等高线图(Hypsography)”,“轨道(Railway)”和“河流(Stream)”数据集表示。从二维真实数据集生成三维真实数据集的过程如下。对于一个真实的数据集中的的每个对象o,使用从相同的数据集中随机选择的对象的大小,作为o在第三维度中的范围。然后,将第三维度中的对象随机放置在[0,|Z|]范围内,其中|Z|表示相应的二维真实数据集的数据空间大小。
还分别产生了具有均匀和Zipfian分布的二维和三维的合成数据集。在均匀数据集中,每个维度中的对象坐标和范围遵循在[0,1]范围内的均匀分布。在Zipfian数据集中,每个维度中的对象坐标和范围遵循[0,1]范围内的Zipfian分布。数据集基数从25,000变化至10,000,000,并且Zipfian数据集的偏度(skewness)参数由θd表示,从0.2变化至0.8。此外,为了评估对象的长宽比分布的影响,生成Zipfian数据集,其中对象的长宽比也遵循Zipfian分布并且偏度参数θa从0.2变化至0.8。
对于窗口查询性能的研究,生成选择性从0.01%变化至10%的的窗口查询。
测试Z-曲线和希尔伯特曲线作为SSI中使用的空间填充曲线。为了约束索引构造和SSI键计算时间,在尺寸分区阶段,设置分区的最大数目nmax为4,尺寸分布估计|S1|的样本集基数设置为min{|O|,50log2|O|};在累积映射阶段,为构造累积映射函数,将块的数目设置为min{|O|,51og2|O|},样本集基数|S2|设置为min{|O|,25log2|O|};在成本模型中,设置典型的窗口查询大小为1。
表3总结了实验中使用的参数,其中默认值以粗体表示。
表3 实验中使用的数据集和参数
SSI的组成的影响
此处,三个SSI组成的影响表现在查询处理性能:成本模型、累积映射以及MapRange算法。
成本模型的影响
1)典型的窗口大小。
在分区配置选择时,典型的窗口查询大小在成本模型中使用。在本组实验中,验证了的特定值的选择对配置选择的结果影响不大。的值从变化到并且观察由成本模型选择的分区配置。对不同的数据集重复该实验,发现每个数据集所选择的分区配置几乎总是相同的。这是因为,虽然当改变时,单个分区配置的估计成本会变化,但是不同的分区配置的比较成本保持不变,因此选择结果不会改变。
对于选择结果有变的情况,用被选的不同配置设置SSI并且测量它们的查询处理性能。表4示出了分页数量访问的相对标准偏差和二维数据集不同配置的SSI的响应时间(三维数据集得到的结果类似,因此略去)。
表4 改变典型窗口尺寸时的相对标准偏差
可以看出,因所选择的配置不同而导致的SSI性能差异较小。页面的访问次数仅发生小于1.1%的变化,而响应时间仅发生小于3%的变化。因此,即使是在的具体值的选择可能会导致非最优的分区配置的极少数情况下,其对SSI的性能的影响也非常小。
2)成本模型的准确性
接下来,对具有不同参数设置的不同数据集的评估本成本模型的准确性。记录发生的实际分页存取次数(由“实际”表示),然后将它们与由成本模型所估计的分页存取次数(由“估计”表示)相比较。如图22所示,观察到的分页存取的次数与本成本模型所估计的相应次数非常近似。二维数据集上的相对误差为30%以内。尤其对于均匀的数据集,误差是最小的,而对于Zipfian和真实数据集,误差稍大。这是预想到的,因为本成本模型基于均匀的数据分布。对于非均匀的数据集,累积映射可以有助于获得大致均匀的分布,但毕竟不是严格的均匀分布。因此,成本模型的精度稍微降低。然而,正如以下实验将显示的,所达到的成本模型精度足以产生显著优于其它空间索引的索引结构。对三维数据集的实验显示出类似的模式,因此略去。
累积映射的影响
评价具有累积映射和不具有累积映射的SSI的查询处理性能,以此支持使用累积映射的正确性。如图23所示,大多数情况下具有累积映射的SSI在分页存取次数和响应时间两个方面都优于不具有累积映射的SSI。对于具有Zipfian分布和较大基数的数据集,累积映射的效果是最明显的(对具有400,000个对象的Zipfian数据,响应时间有多达60%的改进,可参见图23(b))。这是因为基于映射的索引在偏度较高的数据上表现并不理想,但对于累积映射,会实现高效的基于映射的索引。
真实数据集上也有相当的改善(当查询选择性为10%时,响应时间上有37%的改善,可比照图23(c)),由于实际数据通常是偏斜分布的。对于均匀的数据集,累积映射的影响最小。具有累积映射的SSI略慢,因为它需要窗口查询上的累积映射(计算方程(3)),但几乎观察不到不同(比照图23(a)和23(d))。
MapRange算法的影响
为了评估不同MapRange算法的性能,将查询选择性从0.01%改变至10%。测量SSI中的5个MapRange算法处理窗口查询的响应时间和分页存取次数,5个算法即,ScanMapRange,EdgeMapRange,RoughMapRange,GetNextH和GetNextZ。在结果中,使用“S”,“E”,“R”,“H”和“Z”分别表示这五个算法。此处显示了窗口查询映射以及B+树搜索的时间,分别由“映射”和“查询”表示。此处,GetNextH是改编自希尔伯特曲线的calculate nextmatch算法[Lawder和King,2001年]的一种MapRange算法,GetNextZ[Ramsak等,2000年]是用于Z曲线(参见空间填充曲线)的一种现有的MapRange算法。更具体地,Lawder和King的算法进行了如下的调整,以便其可以在不访问B+树索引因而不访问任何磁盘页面的情况下映射窗口查询。
令q为窗口查询,Z为整个数据空间。使用Z\q表示Z中未被q覆盖的区域。映射开始于将0送到calculate next match算法来寻找q内的第一个希尔伯特值,由h0.表示。然后,把Z\q作为窗口查询,并将h0送入calculate next match来寻找Z\q内大于h0.的第一个希尔伯特值,由h1表示。该值h1也是存在的下一个希尔伯特值。现在有被q覆盖的希尔伯特值区间[h0,h1-1]。然后将h1送入calculate next match,并重复上述步骤,以通过q确定下一个calculate next match。这个过程将继续进行,直到calculate next match到达曲线的末端,这将给出由q封闭的所有希尔伯特值区间。以上配置的算法是GetNextH。要注意,重点研究不需要访问数据页的MapRange算法。因此,不考虑映射期间访问数据分页的现有算法。
1)首先,将希尔伯特曲线上EdgeMapRange与ScanMapRange和GetNextH相比较。在这组实验中,只报告响应时间,因为这三种方法具有相同的分页存取次数,由于它们产生用于B+树搜索的键范围的过程不同,但生成相同的键范围。
对于二维数据(图24(a)至24(c)),两种MapRange算法显示出非常相似的表现,当查询选择性增加时,EdgeMapRange逐渐显示出其优势。对于三维数据(图24(d)至24(f)),EdgeMapRange平均优于ScanMapRange 2倍(请注意,“查询”的时间很短,在这些图中几乎无法辨认到)。这些观察结果可作如下解释。当数据的维数和查询选择性都很低时,窗口查询是非常小的。因此,所有三种算法只计算若干单元的曲线值。查询处理的主要成本是MapRange之后的B+树搜索,这对于三种算法的任何一个都是相同的。当窗口查询变大时,所计算的曲线值的数量增加,并且该成本成为查询处理的主导因素。而EdgeMapRange计算的曲线值较少。于是,EdgeMapRange的表现逐渐超过了ScanMapRange。GetNextH也计算的曲线值虽然也较少,但它每个计算都花费的时间更多。因此,EdgeMapRange也优于GetNextH。当数据维数增长时,EdgeMapRange和GetNextH的曲线值计算次数较少远慢于ScanMapRange的曲线值计算增长。结果就是,对于三维数据,EdgeMapRange和GetNextH都显著优于ScanMapRange。同时,GetNextH比EdgeMapRange计算的曲线值更少,这弥补了它每次计算相对较高的成本。因此,GetNextH和EdgeMapRange具有类似的表现。
2)接下来,用RoughMapRange对比ScanMapRange和GetNextZ。报告响应时间和分页存取次数来评估通过RoughMapRange在响应时间上所实现的性能增益,以及分页存取额外开销的量。
图25示出了响应时间。对于二维数据,当查询选择性小于1%时,三种方法的响应时间同样小。当查询选择性变大时,ScanMapRange的响应时间增加得最快而RoughMapRange的响应时间增加得最慢。GetNextZ的响应时间在两者之间。对于三维数据,RoughMapRange表现出更清晰的优势。它优于ScanMapRange一个量级并且优于GetNextZ 3倍以上。这是因为ScanMapRange过多地调用三维数据的C()函数,而RoughMapRange根本不调用C()函数。GetNextZ不直接调用C()函数,但它需要一些类似于C()函数的计算。
图26示出了分页存取性能。RoughMapRange具有的分页存取次数稍大,因为它放宽了生成键范围的过程。然而,可以看出,RoughMapRange具有少得多的整体查询响应时间,这是因为它的低计算成本远远超过较小的额外分页存取次数所产生的开销。GetNextZ像ScanMapRange一样生成相同的索引键范围,因此这两种算法的分页存取次数是相同的。
SSI作为独立的实施方案时的性能
此处,评估各种索引方法的性能作为独立的实施方案。实验考虑10种方法:利用Z曲线的SSI(由“SSI-Z”表示),利用希尔伯特曲线的SSI(由“SSI-H”表示),Bdual树(由“B-dual”表示),顺序扫描(由“Scan”表示),R*树(由“R*tree”表示),利用阶数为2至5的空间填充曲线的Dual-变换(分别由“DT-2”到“DT-5”表示)和尺寸分区空间连接(由“SSSJ”表示)。
对二维数据集的实验
图27示出了改变数据集基数的二维均匀数据的查询性能。SSSJ、B-dual和其它方法的反应时间分别在图27(a)、(b)和(c)这三幅图中表示,而不是在同一幅图中,因为它们所在的范围非常不同。从这些图中可以看出,SSSJ表现最差。对于只有25,000个对象的数据集,它的响应时间为几十毫秒。考虑到在实际系统中,通常有几万用户同时进行查询,这样的响应时间太慢,以致于不能提供令人满意的用户体验。B-dual、Scan、DT-3和DT-5稍快一些(DT-2和DT-4的响应时间在DT-3和DT-5之间,因此被省略)。SSI-Z和SSI-H显著地优于上述所有方法。对于1百万个对象的数据集,它们的响应时间大约为1毫秒。R*树最接近SSI方法。对于1百万个对象的数据集,它的响应时间大约为10毫秒。
这些方法的相应分页存取次数分别在图27(d)、(e)和(f)中示出。虽然分页存取的性能差异的规模与响应时间的性能差异的规模有所不同,但SSI方法也在分页存取中表现出良好的性能。R*树显示的分页存取次数最小,而SSI方法的分页存取分页存取次数与R*树的分页存取次数非常接近。
该索引建立时间在图28中示出,其中任何索引都没有使用批量加载。正如预期的,具有查询处理时间高的方法具有的索引设置时间较低。具体来说,扫描法根本不需要任何设置时间,SSSJ,B-dual和DT方法都可以在约80秒内索引1百万个对象。SSI-Z和SSI-H稍微慢一些,用90和144秒建立对1百万个对象的索引;R*树是最慢的,其需要229秒来做同样的事。考虑到查询处理时间中高的性能增益,以及很长一段时间内仅需进行一次索引设置,故而SSI方法略高的设置成本是值得的。
由于重点要获得低查询响应时间,因此在以下的实验中,略去了分页存取和索引设置时间结果,以保持本文的简洁,因为它们具有与上述实验相似的表现。另外,由于其它方法是高度缺乏竞争力的,此处将只显示以下组实验的R*树、SSI-H和SSI-Z的结果。
图29表示其它的二维数据集和参数设置的查询处理时间。具体而言,在图29(a)中,缓冲页的数量从0变化至1024。在该组实验中,R*树、SSI-Z和SSI-H的索引页的数目分别是682、869和838,并且每种方法的缓存的索引的百分比从0%变化至100%。在图29中,改变均匀数据集的窗口查询选择性。在图29(c)至(f)中,改变基数、对象大小分布的偏度、对象长宽比分布的偏度和Zipfian数据集的窗口查询选择性。在图29(g)至(i)中,改变真实数据集的窗口查询选择性。
从这些图中可以看出SSI方法在大多数情况下优于R*树。只有当查询选择性非常小(即,小于0.1%)或对象尺寸分布非常偏斜时,R*树才会表现出较小的响应时间(参见图29(b)、(d)和(e))。同时,当改变实验参数值时,SSI方法表现出相对稳定的性能。这显示出SSI方法的鲁棒性。
对三维数据集的实验
图30示出了对三维数据集的查询处理时间。在各种方法中,SSSJ和B-dual的表现与它们在对二维数据集的实验中同样不佳,并因此被省略。DT-5在几小时后也无法完成。DT-5之所以如此慢,是因为它包含6维数据空间中阶数为5的空间填充曲线的曲线值映射。因此,也不包含在结果中。
图30(a)示出了改变数据集基数的结果。像上面的实验一样,可以看出SSI-Z和R*树具有的响应时间最小,并且它们都显著优于其它方法。DT-2是接近的而DT-4是最差的。DT-3的响应时间在DT-2和DT-4之间,因此被省略。可以观察到,SSI-H表现出的性能竞争力较差。这是因为三维空间中希尔伯特曲线上的曲线值映射的复杂度相对较高,从而主导了查询处理成本。还可以看出,SSI-H的响应时间在数据集基数增加时是相当稳定的。因此,随着数据集基数增加,它变得更接近其它方法的响应时间。
在图30(b)中,将缓冲页面的数量从0改变到1200。由于在该图中R*树、SSI-Z和SSI-H的索引页数目分别是977、1131和1128,每个方法的缓冲的索引的百分比在0%至100%范围内。可以观察到,由于使用了更多个缓冲页,所有方法的响应时间均降低。SSI-Z和R*树总是表现出相似的性能,而当使用缓冲页较少时,SSI-H也表现出类似于R*树的性能,其中I/O时间变成在查询处理成本中的主导。
从图30(c)至(e),改变基数,对象大小分布的偏度和Zipfian数据集上对象长宽比分布的偏度。SSI-Z、SSI-H和R*树的相对表现类似于均匀数据集上的相对表现。
在图30(f)中,改变真实数据的查询选择性。R*树和SSI-Z再次表现出相近的性能,并且当查询选择性变大时(即大于1%),SSI-Z表现得更好。这是因为,当查询选择性增加时,R*树的基于树的修剪(pruning)迅速减少。
基于以上,实验结果可以总结如下。
——SSI方法在响应时间和网页访问方面在各种数据集和实验环境中均优于其它基于映射的索引方法多个数量级。
——当与R*树相比时,SSI方法表现出有竞争力的性能。对于二维数据,在大多数情况下(即,当数据集基数大于50,000或查询选择性大于0.1%时),它们优于R*树。对于三维数据,在大多数情况下SSI-Z具有与R*树非常相似的性能,并且在数据集基数较大时优于R*树;SSI-H表现出竞争力较差的性能,但仍接近于其中数据集基数或窗口查询选择性较大的SSI-Z。
SSI集成在DBMS中时的性能
为了评估SSI在完整DBMS上时的性能,在两个DBMS上实现SSI。一个是来自科研界的PostgreSQL,另一个是来自商用的DBMS。
在每个DBMS上,对三个索引方法的性能进行了评价:
——SSI:如在实施例中所解释的SSI的DBMS实现是在完整的DBMS中实现的,不修改DBMS内核。
——标准:DBMS的标准数据索引组件,其中对象存储在如在完整DBMS中实现、不修改DBMS内核的实施例中所描述的数据库表中。但取代在SSI键上创建B+树索引的是,这种方法在每个约束列对象MBR上创建一个B+树索引(即,数据库表的每个MBR约束列一个B+树)。当接到窗口查询时(以SQL查询的形式,如在完整DBMS中实现、不修改DBMS内核的实施例中所实现的,但没有SSI键的谓词),DMBS自动选择合适的B+树,以评估该查询。
——R-树。DBMS的内置空间组件(具体地,指R-树)。
PostgreSQL
如图31所示,当在PostgreSQL上实现时,SSI始终优于R-树和PostgreSQL的标准数据索引组件。与PostgreSQL的标准数据索引组件相比,SSI平均快两倍多(请注意图中坐标轴采用的是对数标度)。SSI的响应时间的增长远慢于数据集基数的增加。可以观察到,PostgreSQL中的R-树表现出的性能比标准的数据索引组件更差。当研究R树用于索引的情况下PostgreSQL的查询处理过程时,可以发现,查询优化器更偏向于使用顺序扫描来处理窗口的查询,而不是使用R-树索引。一个可能的原因是,PostgreSQL的查询优化器还没有得到关于使用R-tree索引的成本的精确估计,因此,它在大多数情况下是保守的,故使用顺序扫描来代替。发现这其实是PostgreSQL社群中许多用户所观察到的普遍现象。
DBMS
这里,遵照官方文档的说明在商用DBMS中创建R-树被以索引空间对象。如图32所示,当数据集基数和查询选择性改变时,SSI再次优于R-树索引以及商用DBMS中使用的标准索引。可以观察到,数据偏度越大,SSI的优点越显著(达到了数量级的程度,如图32(c)和(d)所示)。这是由于采用了累积映射来产生大致均匀分布,从而减少了查询处理的过滤阶段的误报。
在以下的权利要求和本发明的前述描述中,除了由于语言表达或必要推断而产生的上下文需要,否则单词“包括”或如“包含”或“含有”的变体用于表示开放性包含的意思,即说明所述特征的存在,但不排除本发明的各种实施例中存在的或附加的进一步的特征。
Claims (61)
1.一种用于索引数据空间的空间数据对象的索引方法,包括:
根据相应的空间数据对象的尺寸,将每个空间数据对象与多个分区中的一个相关联;以及
基于与所述空间数据对象相关联的分区,将每个空间数据对象映射到索引键。
2.根据权利要求1所述的方法,还包括:
获得至少一个空间数据对象;以及
存储至少一个索引键。
3.根据权利要求1或2所述的方法,其中,每个空间数据对象的尺寸是相应的空间数据对象的最大范围。
4.根据权利要求1至3中任一项所述的方法,还包括:
确定空间数据对象尺寸的累积分布;以及
将所述累积分布分成多个分区。
5.根据权利要求4所述的方法,其中,确定空间数据对象尺寸的累积分布包括:
对所述数据空间的空间数据对象进行采样;
确定每个采样的空间数据对象的尺寸;以及
确定所述采样的空间数据对象尺寸的累积分布。
6.根据权利要求4所述的方法,其中,将所述累积分布分成多个分区包括:
计算多个分区的集合的成本模型;以及
基于所述成本模型,在所述多个分区的集合中选择一个。
7.根据权利要求1至6中任一项所述的方法,还包括:
将每个空间数据对象的位置映射到均匀分布的多个映射位置中的一个,并且
其中,基于与所述空间数据对象相关联的分区以及所述空间数据对象的映射位置,将每个空间数据对象映射到索引键。
8.根据权利要求7所述的方法,其中,每个空间数据对象的位置是所述空间数据对象的中心位置。
9.根据权利要求7或8所述的方法,还包括:
对所述数据空间的空间数据对象进行采样;
确定每个采样的空间数据对象的位置;
确定所述采样的空间数据对象位置的累积分布;以及
基于所述采样的空间数据对象位置的所述累积分布,确定累积映射函数,用于将空间数据对象位置映射到均匀分布的映射位置。
10.根据权利要求1至9中任一项所述的方法,其中,每个空间数据对象都是N维数据对象,其中N是大于或等于2的整数。
11.一种用于索引数据空间的空间数据对象的索引系统,包括:
分区关联模块,用于根据相应的空间数据对象的尺寸,将各个空间数据对象关联到多个分区中的一个分区;以及
对象映射模块,用于基于与所述空间数据对象相关联的所述分区,将每个空间数据对象映射到索引键。
12.根据权利要求11所述的系统,还包括:
数据获取模块,用于从数据存储器中获取至少一个空间数据对象;以及
索引存储模块,用于在索引存储器中存储至少一个索引键。
13.根据权利要求11或12所述的系统,其中,所述每个空间数据对象的尺寸是相应的空间数据对象的最大范围。
14.根据权利要求11至13中任一项所述的系统,还包括:
数据尺寸分布模块,用于确定空间数据对象尺寸的累积分布;以及
数据分区模块,用于将所述累积分布分成多个分区。
15.根据权利要求14所述的系统,其中,所述数据尺寸分布模块包括:
数据尺寸采样子模块,用于对空间数据对象进行采样;
数据尺寸子模块,用于确定每个采样的空间数据对象的尺寸;以及
数据尺寸分布子模块,用于确定所述采样的空间数据对象尺寸的累积分布。
16.根据权利要求14所述的系统,其中,所述数据分区模块包括:
成本计算子模块,用于计算多个分区集合的成本模型;以及
分区选择子模块,用于基于由所述成本计算模块进行的计算,选择所述多个分区集合中的一个。
17.根据权利要求11至16中任一项所述的系统,还包括:
数据位置映射模块,用于将每个空间数据对象的位置映射到均匀分布的多个映射位置中的一个,并且
其中,所述对象映射模块适应于基于与所述空间数据对象相关联的分区以及所述空间数据对象的映射位置,将每个空间数据对象映射到相应的索引键。
18.根据权利要求17所述的系统,其中,所述每个空间数据对象的位置是相应的空间数据对象的中心位置。
19.根据权利要求17或18所述的系统,还包括:
数据位置采样子模块,用于对空间数据对象进行采样;
数据位置处理子模块,用于确定每个采样的空间数据对象的位置;
数据位置分配子模块,用于确定所述采样的空间数据对象位置的累积分布;以及
数据位置映射函数子模块,用于基于所述采样的空间数据对象位置的所述累积分布,确定累积映射函数,用于将空间数据对象位置映射到均匀分布的映射位置。
20.根据权利要求11至19中任一项所述的系统,其中,每个空间数据对象都是N维数据对象,其中N是大于或等于2的整数。
21.根据权利要求11至20任一项所述的系统,还包括:
树存储器,用于存储树键;以及
索引模块,用于索引索引键作为树的条目。
22.根据权利要求21所述的方法,其中,所述树键被布置为B+树。
23.一种对与多个分区相关联的空间数据对象的索引进行操作的方法,包括:
接收对空间数据对象的查询;
基于相应分区的尺寸特性以及所接收的查询,确定要对与每个分区相关联的空间数据对象进行的经调整的查询;以及
对每个分区进行经调整的查询。
24.根据权利要求23所述的方法,其中,每个分区的所述尺寸特性是相应分区中的空间数据对象的最大尺寸。
25.根据权利要求23或24所述的方法,其中,所述操作是对空间数据对象的窗口查询。
26.根据权利要求23至25中任一项所述的方法,其中,所述查询是对空间数据对象的窗口查询。
27.根据权利要求26所述的方法,其中,所述查询的窗口是矩形的窗口。
28.根据权利要求26或27所述的方法,其中,基于相应分区的尺寸特性以及所接收的查询,确定要对与每个分区相关联的空间数据对象进行的经调整的查询包括:形成具有矩形窗口的窗口查询。
29.根据权利要求28所述的方法,其中,经调整的查询的所述矩形窗口是通过扩展所接收的查询的所述矩形窗口来形成的。
30.根据权利要求29所述的方法,其中,幅度相当于与所述相应分区相关联的空间数据对象的最大尺寸的一半。
31.根据权利要求28至30中任一项所述的方法,其中,基于相应分区的尺寸特性以及所接收的查询,确定要对与每个分区相关联的空间数据对象进行的经调整的查询还包括:将所述经调整的查询的矩形窗口的至少一个位置映射到均匀分布的多个映射位置中的至少一个。
32.根据权利要求31所述的方法,其中,经调整的查询的矩形窗口的每个角位置被映射到映射位置。
33.根据权利要求28至32中任一项所述的方法,其中,对每个分区进行经调整的查询包括确定索引键范围的列表,所述索引键范围的列表包括代表可与所述经调整的查询的所述窗口相交的空间数据对象的索引键。
34.根据权利要求33所述的方法,其中,所述索引键的列表是通过将分区的一个区域的索引键加入索引键的列表来确定。
35.根据权利要求34所述的方法,其中,如果所述经调整的查询的窗口覆盖了所述区域,则所述区域的索引键被添加到所述索引键的列表中。
36.根据权利要求33所述的方法,其中,所述索引键的列表由以下确定:
将一个区域子分割成多个子区域;以及
添加所述经调整的查询的窗口所覆盖的每个子区域的索引键。
37.根据权利要求33所述的方法,其中,所述索引键的列表是通过加入以下来确定的:索引键对、索引键对的第一键以及索引键对的第二键,所述第一键表示经调整的查询的窗口的入口点,所述第二键表示经调整的查询的窗口的入口点之后的下一个出口点。
38.根据权利要求23至32中任一项所述的方法,其中,每个空间数据对象都是N维数据对象,其中N是大于或等于2的整数。
39.一种用于对与多个分区相关联的空间数据对象的索引进行操作的索引系统,包括:
查询接收模块,用于接收对空间数据对象的查询;
查询调整模块,用于基于相应分区的尺寸特性以及所接收的查询,确定要对与每个分区相关联的空间数据对象进行的经调整的查询;以及
查询处理模块,用于对每个分区进行经调整的查询。
40.根据权利要求39所述的系统,其中,每个分区的所述尺寸特性是相应分区中空间数据对象的最大尺寸。
41.根据权利要求39或40所述的系统,其中,所述操作是窗口查询。
42.根据权利要求39至41中任一项所述的系统,其中,所述查询是窗口查询。
43.根据权利要求42所述的方法,其中,所述查询的窗口是矩形的窗口。
44.根据权利要求42或43所述的系统,其中,所述查询调节模块包括调整的窗口形成子模块,用于形成具有矩形窗口的窗口查询。
45.根据权利要求44所述的系统,其中,所述经调整的窗口形成子模块通过扩展接收的查询的矩形窗口来形成经调整的查询的矩形窗口。
46.根据权利要求45所述的系统,其中,所述调整的窗口形成子模块通过以与相应分区相关联的空间数据对象的最大尺寸的一半为幅度来扩展接收的查询的矩形窗口,形成经调整的查询的矩形窗口。
47.根据权利要求44至46中任一项所述的系统,其中,所述查询调整模块还包括窗口位置映射子模块,用于将经调整的查询的所述矩形窗中的至少一个位置映射到均匀分布的的多个映射位置中的至少一个。
48.根据权利要求47所述的系统,其中,通过将所述经调整的查询的矩形窗口的每个角位置映射到映射位置,所述窗口位置映射子模块将所述经调整的查询的矩形窗中的至少一个位置映射到均匀分布的的多个映射位置中的至少一个。
49.根据权利要求44至48中任一项所述的系统,其中,所述查询处理模块包括索引键列表处理模块,用于确定索引键范围的列表,所述索引键范围的列表包括代表可能与所述经调整的查询的窗口相交的空间数据对象的索引键。
50.根据权利要求49所述的系统,其中,所述索引键列表处理模块通过将分区的一个区域的索引键加入索引键的列表来确定所述索引键的列表。
51.根据权利要求50所述的系统,其中,如果所述经调整的查询的窗口覆盖了所述区域,则所述索引键列表处理模块添加所述区域的索引键。
52.根据权利要求49所述的系统,其中,所述查询处理模块还包括:子分割处理模块,用于将一个区域子分割成多个子区域;以及索引键列表处理模块,其通过添加所述经调整的查询的窗口所覆盖的每个子区域的索引键,确定所述索引键的列表。
53.根据权利要求49所述的系统,其特征在于,所述索引键列表处理模块通过添加索引键对来确定所述索引键的列表,所述索引键对的第一键表示所述经调整的查询的窗口的入口点,所述索引键对的第二键表示所述经调整的查询的窗口的所述入口点之后的下一个出口点。
54.根据权利要求39至53中任一项所述的系统,其中,每个空间数据对象都是N维数据对象,其中N是大于或等于2的整数。
55.根据权利要求39至54中任一项所述的系统,其中,每个空间数据对象对应于B+树中的一个条目。
56.一种用于索引数据空间的空间数据对象的索引方法,包括:
将每个空间数据对象的位置映射到均匀分布的多个映射位置中的一个;以及
基于空间数据对象的位置被映射到的所述位置,将每个空间数据对象映射到索引键。
57.一种用于索引数据空间的空间数据对象的索引系统,包括:
数据位置映射模块,用于将每个空间数据对象的位置映射到均匀分布的多个映射位置中的一个;以及
对象映射模块,用于基于所述空间数据对象的位置被映射到的位置,将每个空间数据对象映射到索引键。
58.一种用于对数据空间的空间数据对象的索引进行操作的方法,包括:
接收对空间数据对象的查询;
将查询的至少一个位置映射到均匀分布的多个映射位置中的至少一个;
基于所述至少一个映射位置进行查询。
59.一种用于对数据空间的空间数据对象的索引进行操作的索引系统,包括:
查询接收模块,用于接收对空间数据对象的查询;
窗口位置模块,用于将查询的至少一个位置映射到均匀分布的多个映射位置中的至少一个;
查询处理模块,用于基于所述至少一个映射位置进行查询。
60.一种在执行时实现权利要求1至10、23至38、56以及58中任一项所述的方法的计算机程序代码。
61.一种计算机可读存储介质,包括根据权利要求60所述的计算机程序代码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2014902064A AU2014902064A0 (en) | 2014-05-30 | Easily Implementable Indexing and Query Processing Methods and Systems for Spatial Data Objects | |
AU2014902064 | 2014-05-30 | ||
PCT/CN2015/075795 WO2015180531A1 (en) | 2014-05-30 | 2015-04-02 | Indexing methods and systems for spatial data objects |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106796589A true CN106796589A (zh) | 2017-05-31 |
CN106796589B CN106796589B (zh) | 2021-01-15 |
Family
ID=54698050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580027410.8A Expired - Fee Related CN106796589B (zh) | 2014-05-30 | 2015-04-02 | 空间数据对象的索引方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10394787B2 (zh) |
CN (1) | CN106796589B (zh) |
WO (1) | WO2015180531A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111209645A (zh) * | 2018-11-06 | 2020-05-29 | 百度在线网络技术(北京)有限公司 | 眩晕体感建模数据采集装置和方法、终端和存储介质 |
US11416553B2 (en) * | 2019-03-28 | 2022-08-16 | Amazon Technologies, Inc. | Spatial indexing |
US11436217B2 (en) | 2019-03-28 | 2022-09-06 | Amazon Technologies, Inc. | Ordered append-only log based data storage |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015180531A1 (en) * | 2014-05-30 | 2015-12-03 | Hubei University Of Education | Indexing methods and systems for spatial data objects |
US9703856B2 (en) | 2014-07-07 | 2017-07-11 | Sap Se | Hilbert curve partitioning for parallelization of DBSCAN |
WO2017086983A1 (en) * | 2015-11-19 | 2017-05-26 | Hewlett Packard Enterprise Development Lp | Prediction models for concurrency control types |
US10108637B2 (en) * | 2016-03-08 | 2018-10-23 | International Business Machines Corporation | Spatial-temporal storage system, method, and recording medium |
CN111587429B (zh) * | 2017-12-29 | 2023-12-05 | 北京嘀嘀无限科技发展有限公司 | 用于关联数据集的系统和方法 |
US11015935B2 (en) * | 2018-12-17 | 2021-05-25 | Loon Llc | Wind data based flight maps for aircraft |
CN111555861B (zh) * | 2020-04-30 | 2023-04-18 | 山东师范大学 | 基于位置隐私保护的云环境下圆形范围查询方法及系统 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1352432A (zh) * | 2000-11-15 | 2002-06-05 | 三星电子株式会社 | 索引和搜索特征向量空间的方法 |
US20050147240A1 (en) * | 2004-01-05 | 2005-07-07 | Rakesh Agrawal | System and method for order-preserving encryption for numeric data |
US20050222978A1 (en) * | 2004-03-31 | 2005-10-06 | Tal Drory | Method and apparatus for querying spatial data |
US20080040406A1 (en) * | 2001-09-19 | 2008-02-14 | Bmc Software, Inc. | System and method for controlling free space distribution by key range within a database |
CN101266607A (zh) * | 2008-05-09 | 2008-09-17 | 东北大学 | 基于最大间隙空间映射的高维数据索引方法 |
CN101520801A (zh) * | 2009-01-14 | 2009-09-02 | 中国科学院地理科学与资源研究所 | 一种数据库空间几何对象存取方法 |
CN101593220A (zh) * | 2008-05-28 | 2009-12-02 | 北京华大九天软件有限公司 | 一种超大规模集成电路版图数据的管理方法 |
CN101655821A (zh) * | 2009-08-04 | 2010-02-24 | 中兴通讯股份有限公司 | 一种解决地址空间映射哈希地址冲突的方法及装置 |
CN101673307A (zh) * | 2009-10-21 | 2010-03-17 | 中国农业大学 | 空间数据索引方法及系统 |
US20100114905A1 (en) * | 2008-11-03 | 2010-05-06 | Elvin Slavik | Method, System, and Product for Managing Spatial Data in a Database |
CN101751457A (zh) * | 2008-11-28 | 2010-06-23 | 国际商业机器公司 | 信息处理设备、数据库系统、信息处理方法 |
CN103092853A (zh) * | 2011-10-31 | 2013-05-08 | 中国移动通信集团公司 | 一种空间索引的建立方法、使用方法及装置 |
CN103365911A (zh) * | 2012-04-06 | 2013-10-23 | 腾讯科技(深圳)有限公司 | 一种基于二维分块结构地图空间索引的方法和系统 |
CN103714145A (zh) * | 2013-12-25 | 2014-04-09 | 中国地质大学(武汉) | 关系型和Key-Value型数据库空间数据索引方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5963956A (en) * | 1997-02-27 | 1999-10-05 | Telcontar | System and method of optimizing database queries in two or more dimensions |
US6233367B1 (en) * | 1998-09-09 | 2001-05-15 | Intel Corporation | Multi-linearization data structure for image browsing |
US6625611B1 (en) * | 2000-03-15 | 2003-09-23 | Cadence Design Systems, Inc. | Method and apparatus for representing multidimensional data |
US7167856B2 (en) * | 2001-05-15 | 2007-01-23 | Jonathan Keir Lawder | Method of storing and retrieving multi-dimensional data using the hilbert curve |
US7567972B2 (en) * | 2003-05-08 | 2009-07-28 | International Business Machines Corporation | Method and system for data mining in high dimensional data spaces |
US8214371B1 (en) * | 2003-07-18 | 2012-07-03 | Teradata Us, Inc. | Spatial indexing |
US7594281B1 (en) * | 2004-04-14 | 2009-09-29 | Larry & Brenda Stinson | Explosion and fire extraction safety garment |
US7822776B2 (en) * | 2005-12-31 | 2010-10-26 | Michael Wayne Martin | Multidimensional dynamic clustering (MDDC) |
US8118773B2 (en) * | 2006-03-21 | 2012-02-21 | Tyco Healthcare Group Lp | Oral administration device |
US10929501B2 (en) * | 2013-08-08 | 2021-02-23 | Sap Se | Managing and querying spatial point data in column stores |
US9578600B2 (en) * | 2014-02-13 | 2017-02-21 | Samsung Electronics Co., Ltd | Method and apparatus for providing advanced indication for ePDCCH |
WO2015180531A1 (en) * | 2014-05-30 | 2015-12-03 | Hubei University Of Education | Indexing methods and systems for spatial data objects |
US20150370857A1 (en) * | 2014-06-18 | 2015-12-24 | Anisoara Nica | Multi-dimensional data statistics |
-
2015
- 2015-04-02 WO PCT/CN2015/075795 patent/WO2015180531A1/en active Application Filing
- 2015-04-02 CN CN201580027410.8A patent/CN106796589B/zh not_active Expired - Fee Related
-
2016
- 2016-03-09 US US15/065,710 patent/US10394787B2/en not_active Expired - Fee Related
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1352432A (zh) * | 2000-11-15 | 2002-06-05 | 三星电子株式会社 | 索引和搜索特征向量空间的方法 |
US20080040406A1 (en) * | 2001-09-19 | 2008-02-14 | Bmc Software, Inc. | System and method for controlling free space distribution by key range within a database |
US20050147240A1 (en) * | 2004-01-05 | 2005-07-07 | Rakesh Agrawal | System and method for order-preserving encryption for numeric data |
US20050222978A1 (en) * | 2004-03-31 | 2005-10-06 | Tal Drory | Method and apparatus for querying spatial data |
CN101266607A (zh) * | 2008-05-09 | 2008-09-17 | 东北大学 | 基于最大间隙空间映射的高维数据索引方法 |
CN101593220A (zh) * | 2008-05-28 | 2009-12-02 | 北京华大九天软件有限公司 | 一种超大规模集成电路版图数据的管理方法 |
US20100114905A1 (en) * | 2008-11-03 | 2010-05-06 | Elvin Slavik | Method, System, and Product for Managing Spatial Data in a Database |
CN101751457A (zh) * | 2008-11-28 | 2010-06-23 | 国际商业机器公司 | 信息处理设备、数据库系统、信息处理方法 |
CN101520801A (zh) * | 2009-01-14 | 2009-09-02 | 中国科学院地理科学与资源研究所 | 一种数据库空间几何对象存取方法 |
CN101655821A (zh) * | 2009-08-04 | 2010-02-24 | 中兴通讯股份有限公司 | 一种解决地址空间映射哈希地址冲突的方法及装置 |
CN101673307A (zh) * | 2009-10-21 | 2010-03-17 | 中国农业大学 | 空间数据索引方法及系统 |
CN103092853A (zh) * | 2011-10-31 | 2013-05-08 | 中国移动通信集团公司 | 一种空间索引的建立方法、使用方法及装置 |
CN103365911A (zh) * | 2012-04-06 | 2013-10-23 | 腾讯科技(深圳)有限公司 | 一种基于二维分块结构地图空间索引的方法和系统 |
CN103714145A (zh) * | 2013-12-25 | 2014-04-09 | 中国地质大学(武汉) | 关系型和Key-Value型数据库空间数据索引方法 |
Non-Patent Citations (2)
Title |
---|
BO. WAN ETC: "Combination of Partition Table and Grid Index in Large-Scale Spatial Database Query", 《2009 FIRST INTERNATIONAL CONFERENCE ON INFORMATION SCIENCE AND ENGINEERING》 * |
陈楠: "时空数据库中移动对象的索引和查询技术研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111209645A (zh) * | 2018-11-06 | 2020-05-29 | 百度在线网络技术(北京)有限公司 | 眩晕体感建模数据采集装置和方法、终端和存储介质 |
CN111209645B (zh) * | 2018-11-06 | 2024-03-29 | 百度在线网络技术(北京)有限公司 | 眩晕体感建模数据采集装置和方法、终端和存储介质 |
US11416553B2 (en) * | 2019-03-28 | 2022-08-16 | Amazon Technologies, Inc. | Spatial indexing |
US11436217B2 (en) | 2019-03-28 | 2022-09-06 | Amazon Technologies, Inc. | Ordered append-only log based data storage |
Also Published As
Publication number | Publication date |
---|---|
US10394787B2 (en) | 2019-08-27 |
US20160203173A1 (en) | 2016-07-14 |
WO2015180531A1 (en) | 2015-12-03 |
CN106796589B (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106796589A (zh) | 空间数据对象的索引方法和系统 | |
US7373353B2 (en) | Reducing index size for multi-level grid indexes | |
Papadias et al. | Efficient OLAP operations in spatial data warehouses | |
CN109492060A (zh) | 一种基于MBTiles的地图瓦片存储方法 | |
CN102867066B (zh) | 数据汇总装置和数据汇总方法 | |
CN108009265B (zh) | 一种云计算环境下的空间数据索引方法 | |
CN110147377A (zh) | 大规模空间数据环境下基于二级索引的通用查询算法 | |
CN110175175A (zh) | 一种基于spark的分布式空间二级索引与范围查询算法 | |
CN110134683A (zh) | 关系数据库中海量要素存储的分区优化研究方法及系统 | |
CN108764307A (zh) | 自然最近邻优化的密度峰值聚类方法 | |
CN115545543A (zh) | 多灾种集成的自然灾害风险评估分析系统 | |
CN108733781A (zh) | 基于内存计算的集群时态数据索引方法 | |
CN107818338A (zh) | 一种面向地图综合的建筑物群组模式识别的方法及系统 | |
CN114461826A (zh) | 一种基于改进的z曲线编码的切片检索方法及系统 | |
CN104809210B (zh) | 一种基于分布式计算框架下海量数据加权top‑k查询方法 | |
Liu et al. | Efficiently learning spatial indices | |
US20180149485A1 (en) | Road distance systems and methods | |
CN113377883A (zh) | 一种基于学习索引模型的多维数据查询方法 | |
Wang et al. | GLIN: a lightweight learned indexing mechanism for complex geometries | |
CN115840752B (zh) | 一种全球航空导航数据的存储及查询方法 | |
CN118013063B (zh) | 地理空间动态分区影像数据存储与检索方法、系统及设备 | |
Yang et al. | Distributed grid-based k nearest neighbour query processing over moving objects | |
Yang et al. | Non-Uniform Spatial Partitions and Optimized Trajectory Segments for Storage and Indexing of Massive GPS Trajectory Data | |
CN116303434A (zh) | 基于网格r树混合索引构建方法、检索方法和装置 | |
Lasek | An Extended Version of the LVA-Index |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210115 |
|
CF01 | Termination of patent right due to non-payment of annual fee |