CN108628969A - 一种空间关键字索引方法及平台、存储介质 - Google Patents
一种空间关键字索引方法及平台、存储介质 Download PDFInfo
- Publication number
- CN108628969A CN108628969A CN201810375415.5A CN201810375415A CN108628969A CN 108628969 A CN108628969 A CN 108628969A CN 201810375415 A CN201810375415 A CN 201810375415A CN 108628969 A CN108628969 A CN 108628969A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- node
- data block
- target
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种空间关键字索引方法,所述方法包括:根据预设的空间划分方法,构建双层索引结构;其中,双层索引结构包括:数据索引层和数据存储层,数据索引层用于索引数据存储层中存储数据的数据块;基于双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果;其中,查询条件包括查询关键字。
Description
技术领域
本发明涉及空间数据库技术领域,尤其涉及一种空间关键字索引方法及平台、存储介质。
背景技术
为了满足用户对于空间和文本的检索需求,提高数据检索效率,通常通过空间关键字索引方法来同时索引空间信息和关键字信息。例如,用户可以在某一应用中一个指定的区域内搜索某一电影的名字,从而得到该区域内上映这部电影的影院信息。
在现有技术中,空间关键字索引方法主要是基于R-树(R-Tree)或者四叉树(Quad-Tree)。基于R-Tree或者Quad-Tree的空间关键字索引方法都是集中的构建一个树形的空间索引结构,在索引结构的节点上加上数据内容关键字,并将数据存储在索引的叶节点,索引的叶节点对应一些存储数据的数据块(Block),而索引的数据就存储在Block中。
然而,现有的空间关键字索引方法,其索引结构复杂,且索引时并不关注空间数据之间的关联性。随着索引数据的不断增长,查询效率较低,索引效果不佳。
发明内容
为解决上述技术问题,本发明实施例期望提供一种空间关键字索引方法及平台、存储介质,基于双层索引结构进行空间关键字索引,将面向数据的索引转换为面向数据块的索引,并在数据块内进行倒排索引,查询效率较高,提升了索引效果。
本发明的技术方案是这样实现的:
本发明实施例提供了一种空间关键字索引方法,所述方法包括:
根据预设的空间划分方法,构建双层索引结构;其中,所述双层索引结构包括:数据索引层和数据存储层,所述数据索引层用于索引所述数据存储层中存储数据的数据块;
基于所述双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果;其中,所述查询条件包括查询关键字。
在上述方案中,所述数据存储层中存储数据的数据块内,按照倒排索引的存储方式进行数据存储。
在上述方案中,所述查询条件中还包括查询区域,所述基于所述双层索引结构,对获取到的查询条件进行空间关键字索引,包括:
在所述数据索引层中查询与所述查询区域相交的目标查询节点,并从所述数据存储层获取与所述目标查询节点关联的待过滤数据块集合;
对所述待过滤数据块集合中不含所述查询关键字的数据块进行过滤,获得待选数据块集合;
根据所述查询区域和所述查询关键字,对所述待选数据块集合中的数据块内的数据进行过滤。
在上述方案中,所述基于预设的空间划分方法,构建双层索引结构之后,所述方法还包括:
当收集到待插入数据时,根据所述待插入数据的空间位置信息在所述数据索引层中查找目标插入节点,并在所述数据存储层中查找所述目标插入节点对应的关联数据块;
当所述关联数据块不具备存储所述待插入数据的空间,且所述关联数据块的数目小于预设阈值时,在所述数据存储层中增加数据块;
将所述待插入数据插入所述数据存储层中增加的数据块,并将所述数据存储层中增加的数据块与所述目标插入节点关联。
在上述方案中,所述在所述数据存储层中查找所述目标插入节点对应的关联数据块之后,所述方法还包括:
当所述关联数据块不具备存储所述待插入数据的空间,且所述关联数据块的数量等于所述预设阈值时,按照预设分裂方法将所述目标插入节点进行分裂,生成子节点;
将所述待插入数据插入所述子节点。
在上述方案中,所述在所述数据存储层中查找所述目标插入节点对应的关联数据块之后,所述方法还包括:
当所述关联数据块具备存储所述待插入数据的空间时,将所述待插入数据插入所述关联数据块。
本发明实施例还提供了一种空间关键字索引平台,所述平台包括:处理器、存储器和存储总线;
所述通信总线用于实现所述处理器和所述存储器之间的连接通信;
所述处理器用于执行所述存储器中存储的空间关键字索引程序,以实现以下步骤:
根据预设的空间划分方法,构建双层索引结构;其中,所述双层索引结构包括:数据索引层和数据存储层,所述数据索引层用于索引所述数据存储层中存储数据的数据块;基于所述双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果;其中,所述查询条件中包括查询关键字。
在上述平台中,所述数据存储层中存储数据的数据块内,按照倒排索引的存储方式进行数据存储;所述查询条件中还包括查询区域,所述处理器,具体用于执行所述空间关键字索引程序,以实现以下步骤:
在所述数据索引层中查询与所述查询区域相交的目标查询节点,并从所述数据存储层获取与所述目标查询节点关联的待过滤数据块集合;对所述待过滤数据块集合中不含所述查询关键字的数据块进行过滤,获得待选数据块集合;根据所述查询区域和所述查询关键字,对所述待选数据块集合中的数据块内的数据进行过滤。
在上述平台中,所述处理器在所述根据预设的空间划分方法,构建双层索引结构之后,还用于执行所述空间关键字索引程序,以实现以下步骤:
当收集到待插入数据时,根据所述待插入数据的空间位置在所述数据索引层中信息查找目标插入节点,并在所述数据存储层中查找所述目标插入节点对应的关联数据块;当所述联数据块不具备存储所述待插入数据的空间,且所述关联数据块的数目小于预设阈值时,在所述数据存储层中增加数据块;将所述待插入数据插入所述数据存储层中增加的数据块,并将所述数据存储层中增加的数据块与所述目标插入节点关联;
当所述关联数据块不具备存储所述待插入数据的空间,且所述关联数据块的数量等于所述预设阈值时,按照预设分裂方法将所述目标插入节点进行分裂,生成四个子节点;将所述待插入数据插入所述四个子节点中相应的子节点;
当所述关联数据块具备存储所述待插入数据的空间时,将所述待插入数据插入所述关联数据块。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可以被一个或者多个处理器执行,以实现上述空间关键字索引方法。
由此可见,在本发明的技术方案中,根据预设的空间划分方法,构建双层索引结构;其中,双层索引结构包括:数据索引层和数据存储层,数据索引层用于索引数据存储层中存储数据的数据块;基于双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果;其中,查询条件包括查询关键字。也就是说,本发明实施例提供的技术方案,基于双层索引结构进行空间关键字索引,将面向数据的索引转换为面向数据块的索引,查询效率较高,提升了索引效果。此外,本发明实施例提供的技术方案中,当需要进行索引更新时,通过增加数据块的机制来取代现有的数据块分裂机制,还可以降低索引的更新开销。
附图说明
图1为本发明实施例提供的一种空间关键字索引方法的流程示意图;
图2为本发明实施例提供的一种示例性的双层索引结构的示意图;
图3为本发明实施例提供的一种示例性的索引空间划分的示意图;
图4为本发明实施例提供的一种示例性的QB-Tree的结构示意图;
图5为本发明实施例提供的一种示例性的QB-Tree中节点的存储结构示意图;
图6为本发明实施例提供的一种示例性的关联Block信息的存储结构示意图;
图7为本发明实施例提供的一种示例性的Block的结构示意图;
图8为本发明实施例提供的一种示例性的倒排项的存储结构示意图;
图9为本发明实施例提供的一种索引更新的流程示意图;
图10为本发明实施例提供的一种示例性的分裂Block实现索引更新的示意图;
图11为本发明实施例提供的一种示例性的增加Block实现索引更新的示意图;
图12为本发明实施例提供的一种空间关键字索引平台的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例一
本发明实施例提供了一种空间关键字索引方法。图1为本发明实施例提供的一种空间关键字索引方法的流程示意图。如图1所示,主要包括以下步骤:
S101、根据预设的空间划分方法,构建双层索引结构;其中,双层索引结构包括:数据索引层和数据存储层,数据索引层用于索引数据存储层中存储数据的数据块。
在本发明的实施例中,进行空间关键字索引的基础是根据预设的空间划分方法,构建双层索引结构,从而基于双层索引结构,进行空间关键字索引。
需要说明的是,基于Hadoop平台具备优良的冗余备份、负载均衡和查询路由等内部机制,在本发明的实施例中,构建空间关键字索引的平台可以为Hadoop平台。
需要说明的是,在本发明的实施例中,Hadoop平台构建的双层索引结构中,一层为数据索引层,另一层为数据存储层,通过双层索引结构实现索引任务。其中,数据索引层的具体表现形式为结构树。
具体的,在本发明的实施例中,Hadoop平台对Quad-Tree进行了改造,更改了Quad-Tree存储数据的方式和存储结构,形成针对Block的四叉树(Quad-Tree for Block,QB-Tree),QB-Tree与Quad-Tree类似,均是对索引空间进行四等分。其中,每个节点的子节点可以表示为东北(northeast,NE)、西北(northwest,NW)、东南(southeast,SE)与西南(southwest,SW)四个象限,但是,在QB-Tree中,当节点中存储的数据达到一个Block的存储空间时,就会将这些数据写入Block,再将节点与写入数据的若干个Block相关联。QB-Tree也就是双层索引结构中的数据索引层。而QB-Tree节点各自对应的关联Block分布在集群中,具体存储在数据节点(DataNode),构成了双层索引结构中的数据存储层。
图2为本发明实施例提供的一种示例性的双层索引结构的示意图。如图2所示,双层索引结构中的数据索引层QB-Tree为全局索引,数据索引层中每一个节点包含的索引空间采用其对应的最小外包矩形(Minmum Bounding Rectangle,MBR)来表示,每个节点的子节点表示为NE、NW、SE与SW四个象限,节点中可能存储有数据,即空间对象,也可能未存储数据,即为空(NULL)。双层索引结构中的数据存储层为局部索引,QB-Tree中的节点与Block相关联,Block内存储有具体的数据,需要说明的是,Hadoop平台中的名称节点(NameNode)保存DataNode内所有Block的内存映射,从而在进行空间关键字索引时进行相关查询。NameNode维护着整个数据索引层。
需要说明的是,在本发明的实施例中,每个QB-Tree节点除了存储节点的相关信息外,还需要存储节点的关联Block的相关信息,如关联Block的身份标识号(Identification,ID)、时间戳等信息。Hadoop平台还为QB-Tree设置每个节点的关联Block的阈值,以限制节点的关联Block的数量,具体的预设阈值本发明实施例不作限定。
需要说明的是,在本发明的实施例中,QB-Tree中每个节点由三个部分组成,表示为:QBN=(ID,NodeInfo,DataInfo),其中,ID表示节点的编号,NodeInfo表示节点的相关信息,可以包括节点的层次、空间划分范围和子节点指针等,DataInfo表示节点关联Block的信息。
图3为本发明实施例提供的一种示例性的索引空间划分的示意图。如图3所示,索引空间内有{A,…,J}个空间对象,设每个节点存储两个空间对象,即可得到图3所示的空间划分。图4为本发明实施例提供的一种示例性的QB-Tree的结构示意图。如图4所示,基于图3所示的索引空间划分,则生成的QB-Tree如图4所示,A与B先插入根节点,因为根节点达到了存储阈值2,所以将根节点分裂成四个子节点,使(C,D)、(E,F)、(G,H)分别插入相应的子节点。根据图3所示的索引空间划分结果,根节点的NE象限的子节点和SE象限不需要再插入空间对象,根节点的NW象限的子节点插入(C,D),根节点的SW象限的子节点插入(E,F),根节点的SE象限的子节点插入(G,H)。而根节点的SW象限的子节点还要进一步插入(I,J,K),当插入(I,J,K)这三个对象时,则要先分裂根节点的SW象限的子节点,再分别插入数据。可以看出QB-Tree在生长的过程中并不会像Quad-Tree一样分裂存储的数据,这种特性会极大地降低索引结构的维护开销。
图5为本发明实施例提供的一种示例性的QB-Tree中节点的存储结构示意图。如图5所示,QB-Tree节点存储了节点的类型、层号、节点ID、父节点ID、边界矩形、子节点ID以及关联Block信息。其中节点类型以0、1、2分别表示根节点、中间节点、叶节点;节点ID用Z-value和层号来表示,Z-value用于表示一个节点所覆盖的区域,以00、01、10、11分别表示NW、NE、SW、SE四个象限,设根节点表示为0000,那么根节点的四个子节点可分别被表示为010000、010100、011000、011100,其中前两位为节点的层号,可以根据数据量的大小调整层号与Z-value的位数。边界矩形表示了该节点所覆盖的区域。父节点ID则表示指向该节点的父节点,通过此值可以找到一个QB-Tree节点的父节点,类似地,子节点ID则表示该节点所指向的子节点,通过此值可以找到一个QB-Tree节点的子节点。
图6为本发明实施例提供的一种示例性的关联Block信息的存储结构示意图。如图6所示,关联Block信息描述了QB-Tree中节点对应的关联Block的信息。由于通过Block ID来唯一的标识Block,因此,在关联Block信息中记录关联Block的ID。布隆过滤器(BloomFilter)是一个很长的位向量。构造哈希函数的种子,由任意随机数生成。时间戳记录Block的建立时间,填满标志标识Block是否已经填满,其中,0表示不满,1表示已满。
需要说明的是,在本发明的实施例中,在数据存储层中,与数据索引层QB-Tree中节点关联的各个Block内,可以按照倒排索引的存储方式进行数据存储。
图7为本发明实施例提供的一种示例性的Block的结构示意图。如图7所示,可将Block内的存储区域划分了3个部分:第一块区域是存储该Block的一些元数据信息,其中保存了三个存储区域各自的起始位置,第二块区域是存储Block内的倒排索引,该倒排索引由Block内的空间对象生成,第三块区域是对真实数据进行的列式存储,空间数据含有多种属性,将空间数据按照其属性进行列存储,即将不同空间对象的相同属性存储在一起。例如图7中将不同空间对象的ID存储在一起,将不同空间对象的空间坐标c存储在一起,将不同空间对象的文本信息Text存储在一起。当查询请求只发生在某几个属性上时可以优化数据的读取效率。
需要说明的是,在本发明的实施例中,如图7所示,对于倒排索引可以分为两部分:一是关键字集合,可以使用哈希表或者搜索树的方式对其索引,加快关键字的查找;二是每个关键字所对应的倒排链表,其倒排项的存储结构可以设计为一个三元组:IndexIterm=(ID,c,p),由空间对象ID,空间对象的空间坐标c,空间对象在实际数存储区域的偏移量p,三部分组成。
图8为本发明实施例提供的一种示例性的倒排项的存储结构示意图。如图8所示,倒排项包括了空间对象的ID、空间对象坐标、数据偏移量和该空间对象在倒排表中的前驱与后继节点ID,共48Byte。为了提升索引读取的效率,在读取索引时,每次都能读取整数个Block,其中,该Block为操作系统中的Block,而非上述与QB-Tree节点关联的Block。所以设计每个磁盘块都存储整数个倒排项,例如,实验环境是Linux系统,Linux系统的磁盘块默认大小为4KB,所以将倒排项的大小设为64B,使操作系统中一个Block可以存储整数个倒排项,优化索引的读取效率。
S102、基于双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果;其中,查询条件包括查询关键字。
在本发明的实施例中,Hadoop平台构建了双层索引结构之后,可以基于双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果。
需要说明的是,在本发明的实施例中,Hadoop平台可以直接收集查询条件,查询条件可以自主设置,具体的查询条件本发明实施例不作限定。
可以理解的是,在本发明的实施例中,Hadoop平台获取了查询条件,从而基于双层索引结构进一步进行空间关键字索引,实际上就是从空间信息和文本信息两个层面上进行的索引。
需要说明的是,在本发明的实施例中,查询条件不仅包括查询关键字,还包括查询区域。
具体的,在本发明的实施例中,Hadoop平台首先在数据索引层中查询与查询区域相交的目标查询节点,并从数据存储层获取与目标查询节点关联的待过滤Block集合,之后,对待过滤Block集合中不含查询关键字的Block进行过滤,获得待选Block集合,最后,根据查询区域和查询关键字,对待选Block集合中的Block内的数据进行过滤。
需要说明的是,在本发明的实施例中,Hadoop平台在获取到查询条件时,实际上需要向内部的Hadoop系统发出查询请求,通过该系统来获取待选Block集合。
需要说明的是,在本发明的实施例中,Hadoop平台通过Hadoop系统先在NameNode的内存中查询数据索引层,即步骤S101中的QB-Tree,并在QB-Tree中查询与查询区域相交的目标查询节点,再从数据存储层获取与目标查询节点关联的待过滤Block集合。
具体的,在本发明的实施例中,Hadoop平台通过Hadoop系统在QB-Tree中根据查询区域,查询与查询区域相交的目标查询节点。其中,给定的查询条件为Q(Region,W),其中,Region为查询区域,W为查询关键字。系统针对QB-Tree中的节点,首先判断节点是否与查询区域相交,如果不相交即终止查询,如果相交,则确定该节点为与查询区域相关的目标查询节点,获得该节点的关联Block,加入待过滤Block集合,之后,判断该节点是否有子节点,如果不存在子节点则结束查询,如果存在子节点,该子节点也为目标查询节点,再次执行上述对该节点的操作,直至之后某一节点没有子节点,即操作到叶节点时结束查询,获得最终的待过滤Block集合。
需要说明的是,在本发明的实施例中,Hadoop平台通过Hadoop系统获得待过滤Block集合之后,针对待过滤Block集合中的每一个Block执行Block过滤算法,根据BloomFilter进行过滤,获得待选Block集合。
需要说明的是,在本发明的实施例中,在QB-Tree的每个节点中,均存储有与该节点关联的每一个Block各自对应的Bloom Filter。
具体的,在本发明的实施例中,根据Bloom Filter的Block过滤算法为:首先初始化待选Block集合,之后,针对待过滤Block集合中的每一个Block,根据Block对应的节点存储的DataInfo,获取Block对应的Bloom Filter和Hash函数因子,之后为查询关键字生成对应的Bloom Filter,将两个Bloom Filter进行比较,如果比较通过则获取该Block的BlockID,放入待选Block集合,如果比较不通过,则过滤下一个,直至完成过滤,获得最终待选Block集合。
需要说明的是,在本发明的实施例中,Hadoop平台通过Hadoop系统获得待选Block集合之后,将进一步根据查询区域和查询关键字,对待选Block集合中的Block内的数据进行过滤。
具体的,在本发明的实施例中,根据待选Block集合,Hadoop平台通过Hadoop系统生成MapReduce任务,并对待选Block集合执行MapReduce任务,将待选Block集合中的Block分散到集群中进行并行查询。由于根据步骤S101中的图7可知,每一个Block内按照倒排索引的存储方式进行数据存储。因此,在查询时可以很容易的进行倒排列表的归并与排序,根据Block内的倒排索引,迅速的将不符合查询条件的数据过滤掉,保留剩余符合的数据。最终针对每一个Block执行完成之后,就获得了最终的索引结果。具体的生成并执行MapReduce任务为现有技术,在此不再赘述。
可以理解的是,在本发明的实施例中,将面向数据的索引转换为面向Block的索引,通过数据索引层和数据存储层的双层索引结构可以有效的提升索引的效率。
进一步的,在本发明的实施例中,图9为本发明实施例提供的一种索引更新的流程示意图。如图9所示,在步骤S101之后,还可以包括步骤S901~S903,以实现索引更新。具体步骤如下:
S901、当收集到待插入数据时,根据待插入数据的空间位置信息在数据索引层中查找目标插入节点,并在数据存储层中查找目标插入节点对应的关联数据块。
在本发明的实施例中,Hadoop平台在构造双层索引结构之后,当收集到待插入数据时,可以根据待插入数据的空间位置信息在数据索引层QB-Tree中查找目标插入节点,之后,在数据存储层中查找目标插入节点对应的关联Block。
可以理解的是,在本发明的实施例中,Hadoop平台在索引空间中插入新的数据时,会导致索引的改变。在现有技术中,都将数据存储在叶节点中,而数据更新时会发生叶节点的分裂或者合并,对于Hadoop平台,数据存储在Block中,当增加可索引的数据时,会导致存储数据的Block分裂,增加了索引更新的开销。因此,本发明通过增加Block的机制来取代分裂Block的机制,从而降低索引的更新开销。
S902、当关联数据块不具备存储待插入数据的空间,且关联数据块的数目小于预设阈值时,在数据存储层中增加数据块。
在本发明的实施例中,Hadoop平台在数据存储层中查找目标插入节点对应的关联Block之后,当目标插入节点对应的关联Block不具备存储待插入数据的空间,且目标插入节点对应的关联Block的数量小于预设阈值时,在数据存储层中增加Block。
需要说明的是,在本发明的实施例中,增加的Block实际上是一个新的Block,其内部未存储任何数据。
需要说明的是,在本发明的实施例中,预设阈值为目标插入节点的关联Block的数量的最大值,具体的预设阈值本发明实施例不作限定。
可以理解的是,在本发明的实施例中,目标插入节点对应的关联Block不具备存储待插入数据的空间,实际上就是关联Block的存储容量不足以存储待插入数据。因此,若此时目标插入节点对应的关联Block的数量并未达到预设阈值时,即可在数据存储层中增加Block。
可以理解的是,在本发明的实施例中,QB-Tree增加Block的机制省去了Block分裂机制的开销。具体的,设分裂一次Block的平均开销为SB,申请一个新的Block的平均开销为WB,分裂一次Block的开销Costs如公式(1)所示:
Costs=SB+n×AB+n×WB (1)
其中,n为分裂Block后得到的Block数量。而在本发明中,增加一次Block的开销Costa如公式(2)所示:
Costa=AB+WB (2)
根据公式(1)和公式(2)可以得到:
Costa<Costs (3)
即根据公式(3)可知,分裂一次Block的开销大于增加一次Block的开销。随着大量数据的不断插入,分裂Block的次数会迅速上升,将会造成极大的开销,而本发明中的增加Block机制,只会在目标插入节点的关联Block均填满,无法插入待插入数据时才发生,远远小于分裂Block的开销。
S903、将待插入数据插入数据存储层中增加的数据块,并将数据存储层中增加的数据块与目标插入节点关联。
在本发明的实施例中,Hadoop平台在数据存储层中增加了Block之后,可以将待插入数据插入增加的Block,并将该Block与目标插入节点关联,即将该Block作为目标插入节点的一个关联Block。
可以理解的是,在本发明的实施例中,在增加Block后,直接将待插入数据插入增加的Block中。然而,待插入数据本身应该是插入到目标插入节点的关联Block中,与目标插入节点建立起关联,因此,需要将插入待插入数据的增加的Block与目标插入节点建立关联关系,在进行索引时,才能够调用。
图10为本发明实施例提供的一种示例性的分裂Block实现索引更新的示意图。图11为本发明实施例提供的一种示例性的增加Block实现索引更新的示意图。如图10所示,现有技术中,在数据存储层中,节点3分裂成四个节点,分别为节点5、节点6、节点7和节点8。当节点6的关联Block无法存储待插入数据时,直接将关联Block进行了分裂,从而插入待插入数据,而如图11所示,在本发明中,在数据存储层中,当节点6的关联Block无法存储待插入数据,且关联Block的数目小于预设阈值时,增加一个Block,来存储待插入数据,并将增加的Block与节点6关联。
需要说明的是,在本发明的实施例中,在步骤S901之后,还可以包括步骤S904~S905,具体步骤如下:
S904、当关联数据块不具备存储待插入数据的空间,且关联数据块的数量等于预设阈值时,按照预设分裂方法将目标插入节点进行分裂,生成子节点。
在本发明的实施例中,Hadoop平台在数据存储层中查找目标插入节点对应的关联Block之后,当关联Block不具备存储待插入数据的空间,且关联Block的数量等于预设阈值时,按照预设分裂方法将目标插入节点进行分裂,生成子节点。
可以理解的是,在本发明的实施例中,QB-Tree中的节点都存在关联Block的数量的限定,一旦关联Block的数量达到预设阈值时,才开始进行节点分裂,从而避免直接分裂节点,开销过大。
需要说明的是,在本发明的实施例中,QB-Tree是基于Quad-Tree所构建的,因此,当需要对目标插入节点进行分裂时,可以直接将目标插入节点分裂成四个子节点。
S905、将待插入数据插入子节点。
在本发明的实施例中,Hadoop平台在对目标插入节点进行分裂,之后,将待插入数据插入子节点。
需要说明的是,在本发明的实施例中,目标插入节点分裂,可以生成的四个子节点,实际上表示的是不同的空间,因此,需要将待插入数据插入到四个节点中其自身对应的空间的子节点,从而完成待插入数据的插入。
可以理解的是,在本发明的实施例中,目标插入节点分裂生成的四个子节点是直接与目标插入节点关联的,因此,当进行索引时,可以直接通过目标插入节点进一步索引其子节点,获得数据。
需要说明的是,在本发明的实施例中,在步骤S901之后,还可以包括步骤S906,具体步骤如下:
S906、当关联数据块具备存储待插入数据的空间时,将待插入数据插入关联数据块。
在本发明的实施例中,Hadoop平台在数据存储层中查找目标插入节点对应的关联Block之后,目标插入节点对应的关联Block可能有足够的容量存储待插入数据,因此,此时可以不需要进行增加Block,或者分裂目标插入节点的操作,直接将待插入数据插入关联Block,实现索引的更新。
本发明实施例提供了一种空间关键字索引方法,根据预设的空间划分方法,构建双层索引结构;其中,双层索引结构包括:数据索引层和数据存储层,数据索引层用于索引数据存储层中存储数据的数据块;基于双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果;其中,查询条件包括查询关键字。也就是说,本发明实施例提供的空间关键字索引方法,基于双层索引结构进行空间关键字索引,将面向数据的索引转换为面向数据块的索引,查询效率较高,提升了索引效果。此外,本发明实施例提供的空间关键字索引方法中,当需要进行索引更新时,通过增加数据块的机制来取代现有的数据块分裂机制,还可以降低索引的更新开销。
实施例二
图12为本发明实施例提供的一种空间关键字索引平台的结构示意图。如图12所示,所述平台包括:处理器1201、存储器1202和存储总线1203;
所述通信总线1203用于实现所述处理器1201和所述存储器1202之间的连接通信;
所述处理器1201用于执行所述存储器1202中存储的空间关键字索引程序,以实现以下步骤:
根据预设的空间划分方法,构建双层索引结构;其中,所述双层索引结构包括:数据索引层和数据存储层,所述数据索引层用于索引所述数据存储层中存储数据的数据块;基于所述双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果;其中,所述查询条件中包括查询关键字。
可选的,所述数据存储层中存储数据的数据块内,按照倒排索引的存储方式进行数据存储;所述查询条件中还包括查询区域,所述处理器1201,具体用于执行所述空间关键字索引程序,以实现以下步骤:
在所述数据索引层中查询与所述查询区域相交的目标查询节点,并从所述数据存储层获取与所述目标查询节点关联的待过滤数据块集合;对所述待过滤数据块集合中不含所述查询关键字的数据块进行过滤,获得待选数据块集合;根据所述查询区域和所述查询关键字,对所述待选数据块集合中的数据块内的数据进行过滤。
可选的,所述处理器1201在所述根据预设的空间划分方法,构建双层索引结构之后,还用于执行所述空间关键字索引程序,以实现以下步骤:
当收集到待插入数据时,根据所述待插入数据的空间位置在所述数据索引层中信息查找目标插入节点,并在所述数据存储层中查找所述目标插入节点对应的关联数据块;当所述联数据块不具备存储所述待插入数据的空间,且所述关联数据块的数目小于预设阈值时,在所述数据存储层中增加数据块;将所述待插入数据插入所述数据存储层中增加的数据块,并将所述数据存储层中增加的数据块与所述目标插入节点关联;
当所述关联数据块不具备存储所述待插入数据的空间,且所述关联数据块的数量等于所述预设阈值时,按照预设分裂方法将所述目标插入节点进行分裂,生成四个子节点;将所述待插入数据插入所述四个子节点中相应的子节点;
当所述关联数据块具备存储所述待插入数据的空间时,将所述待插入数据插入所述关联数据块。
本发明实施例提供了一种空间关键字索引平台,根据预设的空间划分方法,构建双层索引结构;其中,双层索引结构包括:数据索引层和数据存储层,数据索引层用于索引数据存储层中存储数据的数据块;基于双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果;其中,查询条件包括查询关键字。也就是说,本发明实施例提供的空间关键字索引平台,基于双层索引结构进行空间关键字索引,将面向数据的索引转换为面向数据块的索引,查询效率较高,提升了索引效果。此外,本发明实施例提供的空间关键字索引平台,当需要进行索引更新时,通过增加数据块的机制来取代现有的数据块分裂机制,还可以降低索引的更新开销。
本发明实施例还提供可一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可以被一个或者多个处理器执行,以实现上述空间关键字索引方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种空间关键字索引方法,其特征在于,所述方法包括:
根据预设的空间划分方法,构建双层索引结构;其中,所述双层索引结构包括:数据索引层和数据存储层,所述数据索引层用于索引所述数据存储层中存储数据的数据块;
基于所述双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果;其中,所述查询条件包括查询关键字。
2.根据权利要求1所述的方法,其特征在于,所述数据存储层中存储数据的数据块内,按照倒排索引的存储方式进行数据存储。
3.根据权利要求1所述的方法,其特征在于,所述查询条件中还包括查询区域,所述基于所述双层索引结构,对获取到的查询条件进行空间关键字索引,包括:
在所述数据索引层中查询与所述查询区域相交的目标查询节点,并从所述数据存储层获取与所述目标查询节点关联的待过滤数据块集合;
对所述待过滤数据块集合中不含所述查询关键字的数据块进行过滤,获得待选数据块集合;
根据所述查询区域和所述查询关键字,对所述待选数据块集合中的数据块内的数据进行过滤。
4.根据权利要求1所述的方法,其特征在于,所述基于预设的空间划分方法,构建双层索引结构之后,所述方法还包括:
当收集到待插入数据时,根据所述待插入数据的空间位置信息在所述数据索引层中查找目标插入节点,并在所述数据存储层中查找所述目标插入节点对应的关联数据块;
当所述关联数据块不具备存储所述待插入数据的空间,且所述关联数据块的数目小于预设阈值时,在所述数据存储层中增加数据块;
将所述待插入数据插入所述数据存储层中增加的数据块,并将所述数据存储层中增加的数据块与所述目标插入节点关联。
5.根据权利要求4所述的方法,其特征在于,所述在所述数据存储层中查找所述目标插入节点对应的关联数据块之后,所述方法还包括:
当所述关联数据块不具备存储所述待插入数据的空间,且所述关联数据块的数量等于所述预设阈值时,按照预设分裂方法将所述目标插入节点进行分裂,生成子节点;
将所述待插入数据插入所述子节点。
6.根据权利要求4所述的方法,其特征在于,所述在所述数据存储层中查找所述目标插入节点对应的关联数据块之后,所述方法还包括:
当所述关联数据块具备存储所述待插入数据的空间时,将所述待插入数据插入所述关联数据块。
7.一种空间关键字索引平台,其特征在于,所述平台包括:处理器、存储器和存储总线;
所述通信总线用于实现所述处理器和所述存储器之间的连接通信;
所述处理器用于执行所述存储器中存储的空间关键字索引程序,以实现以下步骤:
根据预设的空间划分方法,构建双层索引结构;其中,所述双层索引结构包括:数据索引层和数据存储层,所述数据索引层用于索引所述数据存储层中存储数据的数据块;基于所述双层索引结构,对获取到的查询条件进行空间关键字索引,得到索引结果;其中,所述查询条件中包括查询关键字。
8.根据权利要求7所述的平台,其特征在于,所述数据存储层中存储数据的数据块内,按照倒排索引的存储方式进行数据存储;所述查询条件中还包括查询区域,所述处理器,具体用于执行所述空间关键字索引程序,以实现以下步骤:
在所述数据索引层中查询与所述查询区域相交的目标查询节点,并从所述数据存储层获取与所述目标查询节点关联的待过滤数据块集合;对所述待过滤数据块集合中不含所述查询关键字的数据块进行过滤,获得待选数据块集合;根据所述查询区域和所述查询关键字,对所述待选数据块集合中的数据块内的数据进行过滤。
9.根据权利要求7所述的平台,其特征在于,所述处理器在所述根据预设的空间划分方法,构建双层索引结构之后,还用于执行所述空间关键字索引程序,以实现以下步骤:
当收集到待插入数据时,根据所述待插入数据的空间位置在所述数据索引层中信息查找目标插入节点,并在所述数据存储层中查找所述目标插入节点对应的关联数据块;当所述联数据块不具备存储所述待插入数据的空间,且所述关联数据块的数目小于预设阈值时,在所述数据存储层中增加数据块;将所述待插入数据插入所述数据存储层中增加的数据块,并将所述数据存储层中增加的数据块与所述目标插入节点关联;
当所述关联数据块不具备存储所述待插入数据的空间,且所述关联数据块的数量等于所述预设阈值时,按照预设分裂方法将所述目标插入节点进行分裂,生成四个子节点;将所述待插入数据插入所述四个子节点中相应的子节点;
当所述关联数据块具备存储所述待插入数据的空间时,将所述待插入数据插入所述关联数据块。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可以被一个或者多个处理器执行,以实现权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810375415.5A CN108628969B (zh) | 2018-04-24 | 2018-04-24 | 一种空间关键字索引方法及平台、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810375415.5A CN108628969B (zh) | 2018-04-24 | 2018-04-24 | 一种空间关键字索引方法及平台、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108628969A true CN108628969A (zh) | 2018-10-09 |
CN108628969B CN108628969B (zh) | 2022-05-06 |
Family
ID=63694527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810375415.5A Active CN108628969B (zh) | 2018-04-24 | 2018-04-24 | 一种空间关键字索引方法及平台、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108628969B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111221813A (zh) * | 2018-11-27 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 数据库索引以及数据库查询的处理方法、装置及设备 |
CN111444180A (zh) * | 2020-03-20 | 2020-07-24 | 复旦大学 | 一种双层结构的索引及其查询方法 |
CN112115227A (zh) * | 2020-08-14 | 2020-12-22 | 咪咕文化科技有限公司 | 数据的查询方法、装置、电子设备及存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1838124A (zh) * | 2006-02-20 | 2006-09-27 | 南京联创科技股份有限公司 | 海量数据内存数据库中快速定位的网格+t树索引的方法 |
US20080192050A1 (en) * | 2007-02-09 | 2008-08-14 | Paul Emery Schardt | Efficient and Flexible Data Organization for Acceleration Data Structure Nodes |
US20090060345A1 (en) * | 2007-08-30 | 2009-03-05 | Leica Geosystems Ag | Rapid, spatial-data viewing and manipulating including data partition and indexing |
CN101587487A (zh) * | 2009-04-22 | 2009-11-25 | 北京四方继保自动化股份有限公司 | 一种电网图形动态分布索引的实现方法 |
CN101916299A (zh) * | 2010-09-01 | 2010-12-15 | 中国地质大学(武汉) | 一种基于文件系统的三维空间数据存储管理方法 |
CN102567434A (zh) * | 2010-12-31 | 2012-07-11 | 百度在线网络技术(北京)有限公司 | 一种数据块处理方法 |
CN103678638A (zh) * | 2013-12-20 | 2014-03-26 | 厦门雅迅网络股份有限公司 | 一种基于磁盘的对象缓存方法 |
CN103853796A (zh) * | 2012-12-07 | 2014-06-11 | 中国电信股份有限公司 | 数据插入方法和装置 |
CN104376112A (zh) * | 2014-11-27 | 2015-02-25 | 苏州大学 | 一种路网上空间关键字检索的方法 |
CN105404675A (zh) * | 2015-11-20 | 2016-03-16 | 苏州大学 | Ranked反近邻空间关键字查询方法及装置 |
WO2016101797A1 (zh) * | 2014-12-25 | 2016-06-30 | 高德软件有限公司 | 一种电子地图编译方法及装置 |
KR20170085786A (ko) * | 2016-01-15 | 2017-07-25 | 한국전자통신연구원 | 빅 데이터 플랫폼에서 공간 데이터 분산 저장 시스템 및 그 방법 |
CN107423368A (zh) * | 2017-06-29 | 2017-12-01 | 中国测绘科学研究院 | 一种非关系数据库中的时空数据索引方法 |
-
2018
- 2018-04-24 CN CN201810375415.5A patent/CN108628969B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1838124A (zh) * | 2006-02-20 | 2006-09-27 | 南京联创科技股份有限公司 | 海量数据内存数据库中快速定位的网格+t树索引的方法 |
US20080192050A1 (en) * | 2007-02-09 | 2008-08-14 | Paul Emery Schardt | Efficient and Flexible Data Organization for Acceleration Data Structure Nodes |
US20090060345A1 (en) * | 2007-08-30 | 2009-03-05 | Leica Geosystems Ag | Rapid, spatial-data viewing and manipulating including data partition and indexing |
CN101587487A (zh) * | 2009-04-22 | 2009-11-25 | 北京四方继保自动化股份有限公司 | 一种电网图形动态分布索引的实现方法 |
CN101916299A (zh) * | 2010-09-01 | 2010-12-15 | 中国地质大学(武汉) | 一种基于文件系统的三维空间数据存储管理方法 |
CN102567434A (zh) * | 2010-12-31 | 2012-07-11 | 百度在线网络技术(北京)有限公司 | 一种数据块处理方法 |
CN103853796A (zh) * | 2012-12-07 | 2014-06-11 | 中国电信股份有限公司 | 数据插入方法和装置 |
CN103678638A (zh) * | 2013-12-20 | 2014-03-26 | 厦门雅迅网络股份有限公司 | 一种基于磁盘的对象缓存方法 |
CN104376112A (zh) * | 2014-11-27 | 2015-02-25 | 苏州大学 | 一种路网上空间关键字检索的方法 |
WO2016101797A1 (zh) * | 2014-12-25 | 2016-06-30 | 高德软件有限公司 | 一种电子地图编译方法及装置 |
CN105404675A (zh) * | 2015-11-20 | 2016-03-16 | 苏州大学 | Ranked反近邻空间关键字查询方法及装置 |
KR20170085786A (ko) * | 2016-01-15 | 2017-07-25 | 한국전자통신연구원 | 빅 데이터 플랫폼에서 공간 데이터 분산 저장 시스템 및 그 방법 |
CN107423368A (zh) * | 2017-06-29 | 2017-12-01 | 中国测绘科学研究院 | 一种非关系数据库中的时空数据索引方法 |
Non-Patent Citations (2)
Title |
---|
JENS SCHNEIDER等: ""A Versatile and Efficient GPU Data Structure for Spatial Indexing"", 《IEEE TRANSACTIONS ON VISUALIZATION AND COMPUTER GRAPHICS ( VOLUME: 23, ISSUE: 1, JAN. 2017)》 * |
潘伟等: ""移动GIS的空间数据索引研究与实现"", 《电脑知识与技术》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111221813A (zh) * | 2018-11-27 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 数据库索引以及数据库查询的处理方法、装置及设备 |
WO2020108345A1 (zh) * | 2018-11-27 | 2020-06-04 | 阿里巴巴集团控股有限公司 | 数据库索引以及数据库查询的处理方法、装置及设备 |
CN111221813B (zh) * | 2018-11-27 | 2023-06-23 | 阿里巴巴集团控股有限公司 | 数据库索引以及数据库查询的处理方法、装置及设备 |
US11995059B2 (en) | 2018-11-27 | 2024-05-28 | Alibaba Group Holding Limited | Database index and database query processing method, apparatus, and device |
CN111444180A (zh) * | 2020-03-20 | 2020-07-24 | 复旦大学 | 一种双层结构的索引及其查询方法 |
CN111444180B (zh) * | 2020-03-20 | 2022-12-16 | 复旦大学 | 一种双层结构的索引及其查询方法 |
CN112115227A (zh) * | 2020-08-14 | 2020-12-22 | 咪咕文化科技有限公司 | 数据的查询方法、装置、电子设备及存储介质 |
CN112115227B (zh) * | 2020-08-14 | 2024-05-24 | 咪咕文化科技有限公司 | 数据的查询方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108628969B (zh) | 2022-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100523735C (zh) | 一种基于小网格路网组织结构的快速地图匹配方法 | |
CN104199986B (zh) | 基于hbase和geohash的矢量数据空间索引方法 | |
CN109299113B (zh) | 具有存储感知的混合索引的范围查询方法 | |
US8843445B2 (en) | Storage system for storing data in a plurality of storage devices and method for same | |
US8099421B2 (en) | File system, and method for storing and searching for file by the same | |
CN108628969A (zh) | 一种空间关键字索引方法及平台、存储介质 | |
US20130031229A1 (en) | Traffic reduction method for distributed key-value store | |
US20130297570A1 (en) | Method and apparatus for deleting duplicate data | |
CN106503196A (zh) | 云环境下可扩展存储索引结构的构建和查询方法 | |
CN102096711A (zh) | 数据库中构建树形结构目录的方法 | |
CN104346444B (zh) | 一种基于路网反空间关键字查询的最佳选址方法 | |
JP2015069461A (ja) | 情報処理装置 | |
CN106960020B (zh) | 一种创建索引表的方法及设备 | |
CN108446308A (zh) | 可扩展分布式数据库的系统和方法 | |
CN112395288B (zh) | 基于希尔伯特曲线的r树索引合并更新方法、装置及介质 | |
CN108920105B (zh) | 基于社区结构的图数据分布式存储方法及装置 | |
CN102591958B (zh) | 基于tcam的确定性有穷状态自动机的匹配方法和装置 | |
CN100479436C (zh) | 静态多接口范围匹配表的管理维护方法 | |
CN108205571A (zh) | 键值数据表的连接方法及装置 | |
CN107704475A (zh) | 多层分布式非结构化数据存储方法、查询方法及装置 | |
CN107273443A (zh) | 一种基于大数据模型元数据的混合索引方法 | |
CN109951577A (zh) | 指派拓扑地址的方法和服务器,相应程序及服务器集群 | |
JP6006740B2 (ja) | インデックス管理装置 | |
CN110765073A (zh) | 分布式存储系统的文件管理方法、介质、设备及装置 | |
CN102999542B (zh) | 多媒体数据高维索引及kNN检索方法 |
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 |