时间间隔的数据查询方法、装置及索引构建方法、装置
技术领域
本申请涉及基于云存储的数据检索技术领域,特别涉及时间间隔的数据查询方法、装置及索引构建方法、装置。
背景技术
随着大数据时代的到来,人们不仅开始探索新的IT技术和架构,还更加重视海量数据的挖掘和利用。各个行业、各个领域的快速发展,导致积累的数据越来越多,数据量增速越来越快。据国际数据公司(IDC)统计,2015年全球被创建和被复制的数据总量达到近8ZB,是2010年的7倍多,2011年的4倍多。这一增长趋势,在社交媒体和网页历史存档中体现的尤为明显,数据总量呈指数级增长的态势,如何快速、高效地从海量数据中查询到用户需要的信息数据,是目前研究的重要课题。
现有技术中,通常是根据给定的一个或者一组关键字,从预先设定的数据库中查询到跟所述关键字相关的网页对象或者Web对象。例如:搜索引擎可以根据给定的一组关键字,返回K个文本相关的网页对象。但是,在网页历史文档或者Web文档中,往往不仅包含文本信息,还包含时间间隔信息。时间间隔的意义可以体现在记录有效的网页版本、标记社交媒体的热点等。例如,在Twitter中,热门tweets和热门事件往往会附加有效的时间间隔,记录tweets和事件的访问频度超过某一阈值的时间区间,用户可以利用时间间隔查询并获取热门tweets并追踪时间的发展历程。现有基于云存储的时间间隔数据查询方法由于存数据分布各异,查询性能不稳定。不同的数据集合,间隔的密度和分布各异,上述查询算法在数据密集和分散的区域表现的性能差异可以达到10倍左右,查询性能不稳定。
目前,时间间隔查询的索引技术主要以本地磁盘为存储介质,例如时间检索(TimeIndex)技术、多路搜索树(Multi-Version B-Tree)技术等,但是现有技术中的时间间隔检索技术的数据量小、可扩展性低,查询吞吐量十分有限,不能适用于目前的大数据环境和数据高并发场景。
发明内容
本申请实施例的目的在于提供时间间隔的数据查询方法、装置及索引构建方法、装置,可以满足基于云平台的大数据高扩展性和高并发性的检索需求,快速筛选时间间隔对象,提高数据查询效率。
本申请实施例提供的时间间隔的数据查询方法、装置及索引构建方法、装置是这样实现的:
一种时间间隔的数据查询方法,所述方法包括:
获取待查询时间间隔;
将所述待查询时间间隔在基于索引间隔对象的键值对构建的第一排序索引中查询出与所述待查询时间间隔存在相交、包含关联关系的第一索引间隔对象结果集;
将所述待查询时间间隔在基于索引间隔对象的键值对构建的第二线段树索引中查询出与所述待查询时间间隔存在覆盖关联关系的第二索引间隔对象结果集;
将查询出的所述第一索引间隔对象结果集及所述第二索引间隔对象结果集合并之后作为所述待查询时间间隔的查询结果。
一种时间间隔的索引构建方法,所述方法包括:
获取索引间隔对象及所述索引间隔对象的时间间隔;
提取所述索引间隔对象的时间间隔的时间端点,分别以所述索引间隔对象的两个时间端点取值生成所述索引间隔对象的键值对,以所述索引间隔对象的键值对构建第一排序索引;
以所述索引间隔对象的键值对对应的时间间隔为叶子节点,根据时间间隔中时间端点的大小顺序进行叶子节点排序生成线段二叉树,以及,若索引间隔对象的时间间隔覆盖所述线段二叉树节点对应的时间间隔,则将所述索引间隔对象存储在所述线段二叉树节点中,将所述线段二叉树作为构建的第二线段树索引;
将所述第一排序索引和所述第二线段树索引以键值对的形式进行存储,构建成时间间隔的数据索引。
一种时间间隔的数据查询装置,所述装置包括:
待查询时间间隔获取单元,用于获取待查询时间间隔;
第一结果集构建单元,用于将所述待查询时间间隔在基于索引间隔对象的键值对构建的第一排序索引中查询出与所述待查询时间间隔存在相交、包含关联关系的第一索引间隔对象结果集;
第二结果集构建单元,用于将所述待查询时间间隔在基于索引间隔对象的键值对构建的第二线段树索引中查询出与所述待查询时间间隔存在覆盖关联关系的第二索引间隔对象结果集;
数据集合并单元,用于将查询出的所述第一索引间隔对象结果集及所述第二索引间隔对象结果集合并之后作为所述待查询时间间隔的查询结果。
一种时间间隔的索引构建装置,所述装置包括:
索引间隔对象获取单元,用于获取索引间隔对象及所述索引间隔对象的时间间隔;
排序索引构建单元,用于提取所述索引间隔对象的时间间隔的时间端点,分别以所述索引间隔对象的两个时间端点取值生成所述索引间隔对象的键值对,以所述索引间隔对象的键值对构建第一排序索引;
二叉树索引构建单元,用于以所述索引间隔对象的键值对对应的时间间隔为叶子节点,根据时间间隔中时间端点的大小顺序进行叶子节点排序生成线段二叉树,以及,用于若索引间隔对象的时间间隔覆盖所述线段二叉树节点对应的时间间隔,则将所述索引间隔对象存储在所述线段二叉树节点中,以及,用于将所述线段二叉树作为构建的第二线段树索引;
数据索引构建单元,用于将所述第一排序索引和所述第二线段树索引以键值对的形式进行存储,构建成时间间隔的数据索引。
本申请提供的时间间隔的数据查询方法、装置及索引构建方法、装置,可以先利用时间间隔到索引间隔对象的反向索引方式获取时间间隔与所述待查询时间间隔呈相交、包含关联关系的索引间隔对象,然后利用线段树索引结构获取时间间隔与所述待查询时间间隔呈覆盖关联关系的索引间隔对象,将合并后的索引间隔对象作为待查询时间间隔的最终检索结果。所述反向索引方式将时间端点作为关键词,可以快速检索到与所述时间端点对应的索引间隔对象,大大提高检索效率。所述线段树型索引结构与基于云平台的key/value的存储模型相匹配,利用高效的读取和扫描操作就可以大大提高时间间隔的检索效率,所述线段树型的索引结构可以满足大数据高扩展性和高并发性的检索需求。将反向索引方式与线段树型索引方式相结合,不仅可以满足基于云平台的大数据高扩展性和高并发性的检索需求,快速筛选时间间隔对象,还能够在较大规模的集群获得更好的性能,大大提高检索效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的时间间隔的数据查询方法的一种实施例的方法流程示意图;
图2是本申请提供的索引间隔对象与待查询时间间隔三种关联关系的示意图;
图3是本申请提供的构建第一排序索引方法的一种实施例的流程图;
图4是本申请提供的索引间隔对象查询方法的一种实施例的方法流程图;
图5是本申请提供的构建第二线段树索引方法的一种实施例的方法流程图;
图6是本申请提供的查询覆盖关系的索引间隔对象方法的一种实施例的方法流程图;
图7是本申请提供的将表2所示的索引间隔对象设置成线段树索引结构的示意图;
图8是本申请提供的根据S201-S204的方法进行检索的流程示意图;
图9是本申请提供的时间间隔的索引构建方法的一种实施例的方法流程图;
图10是本申请提供的时间间隔的数据查询装置的一种实施例的模块结构示意图;
图11是本申请提供的第一结果集构建单元的一种实施例的模块结构示意图;
图12是本申请提供的第一结果集构建单元的另一种实施例的模块结构示意图;
图13是本申请提供的第二结果集构建单元的一种实施例的模块结构示意图;
图14是本申请提供的第二结果集构建单元的另一种实施例的模块结构示意图;
图15是本申请提供的时间间隔的索引构建装置的一种实施例的模块结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
当数据规模暴增且增速过快时,传统的数据存储和检索手段越来越难满足实时的需求。云计算(Cloud Computing)平台为海量数据的存储和管理提供了可扩展可伸缩的解决方案。云计算作为一种基于因特网的服务模式,可以将分布式计算技术,网络存储技术,负载均衡技术,虚拟化技术结合在一起,成为信息数据时代的新产物。云计算的实现技术,可以将计算任务拆分,动态分配到各个分布式计算节点上,充分利用、调度资源,按需应用和访问。云计算的实现技术不仅使得云计算具备良好的扩展性和可靠性,而且可以实现多用户共享资源,计算成本低廉。本申请挖掘了时间间隔的key/value数据存储特征,将时间间隔拆分为键值对形式进行存储,并构建两层索引结构,可以有效利用云存储的特点进行筛选排除,很大程度上提升查询性能。本申请可以基于key/value云存储,提供了一种提升时间间隔查询性能的索引结构及查询算法,采用设计了两层索引结构,充分适配key/value的云存储模式,基于该索引结构的查询算法能够有效提升查询性能。
本申请提出一种时间间隔的数据查询方法、装置及索引构建方法、装置。下面结合附图对本申请所述的时间间隔的数据查询方法进行详细的说明。图1是本申请提供的时间间隔的数据查询方法的一种实施例的方法流程示意图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际中的时间间隔的数据查询过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本申请提供的一种时间间隔的数据查询方法的一种实施例如图1所示,本申请实施例可以基于key/value云存储,提供一种提升时间间隔查询性能的索引结构及查询算法,采用设计了两层索引结构,充分适配key/value的云存储模式,基于该索引结构的查询算法能够有效提升查询性能。具体的,本申请实施例提供的所述方法可以包括:
S1:获取待查询时间间隔。
具体的实施过程中,可以从索引间隔对象中查询与所述待查询时间间隔相关联的数据对象。每个索引间隔对象对应于一个时间间隔,所述时间间隔通常可以包括时间起点和时间终点。与所述待查询时间间隔相关联的索引间隔对象一般包括相交、包含以及覆盖三种关联关系。当所述索引间隔对象对应的时间间隔与待查询时间间隔有部分重合时,所述索引间隔对象与所述待查询时间间隔相交;当所述索引间隔对象对应的时间间隔属于所述待查询时间间隔时,所述待查询时间间隔包含所述索引间隔对象对应的时间间隔;当所述待查询时间间隔属于所述索引间隔对象对应的时间间隔,所述索引间隔对象对应的时间间隔覆盖所述待查询时间。图2是本申请提供的索引间隔对象与待查询时间间隔三种关联关系的示意图,如图2所示,对于给定的查询时间间隔,除索引间隔对象a、b外,索引间隔对象c、d、e、f、g、h、i均与所述查询时间间隔相关,可以作为所述查询时间间隔的检索结果。在上述检索结果中,c属于包含关系,d、e属于覆盖关系,f、g、h、i属于相交关系。
本实施例中,可以获取待查询时间间隔,为后续的查询处理提供必要的数据支持。
S2:将所述待查询时间间隔在基于索引间隔对象的键值对构建的第一排序索引中查询出与所述待查询时间间隔存在相交、包含关联关系的第一索引间隔对象结果集。
在本实施例中,当索引间隔对象与所述待查询时间间隔为相交、包含的关系类型时,所述索引间隔对象对应的时间间隔的至少一个端点位于所述待查询时间间隔中。因此,本实施例中在查找与所述待查询时间间隔相交、包含两种关联关系的索引间隔对象时,可以判断所述索引间隔对象对应的时间间隔是否有端点位于所述待查询时间间隔内,当判断结果为是时,所述索引间隔对象与所述待查询时间间隔为相交或者包含关联关系。
基于上述判断方法,本实施例提供一种构建第一排序索引的方法,图3是本申请提供的构建第一排序索引方法的一种实施例的流程图。如图3所示,可以采用下述方式构建所述第一排序索引:
S11:获取索引间隔对象及所述索引间隔对象的时间间隔。
由上述可知,每个索引间隔对象对应着一个时间间隔,所述时间间隔包括时间起点和时间终点,所述时间起点和时间终点也是所述时间间隔的时间端点。
在本申请的一个实施例中,所述索引间隔对象可以包含下述属性:
所述索引间隔对象的唯一标识符;所述索引间隔对象对应的时间间隔;所述索引间隔对象的统计信息;所述索引间隔对象的文本表述信息。
所述唯一标识符可以为标识所述索引间隔对象唯一性的字符串,在数据库中,可以利用所述唯一标识符表示所述索引间隔对象。所述时间间隔可以表示为二维向量(x,y),分别代表所述时间间隔的时间起点和时间终点。所述索引间隔对象的统计信息可以包括所述索引间隔对象的访问频度、点击率、更新次数等信息,可以用于获取过滤的参考阈值。在索引过程中,所述索引间隔对象的文本表述信息可以为包含关键字和访问频度的序列。
S12:提取所述索引间隔对象的时间间隔的时间端点,分别以所述索引间隔对象的两个时间端点取值生成所述索引间隔对象的键值对,以索引间隔对象的键值对构建第一排序索引。
在本实施例中,可以提取每个索引间隔对象对应的时间间隔的时间端点,所述时间端点可以包括时间起点和时间终点。本实施例中,可以分别以所述索引间隔对象的两个时间端点取值生成所述索引间隔对象的键值对。例如,对于索引间隔对象w,对应的时间间隔为[5,22],提取索引间隔对象w的时间端点为5和22,可以构建两对键值对,分别为5:w和22:w。在生成所有索引间隔对象的键值对之后,可以以时间端点为键值对中键的取值,合并所述时间端点对应的索引间隔对象,构建第一排序索引。例如,索引间隔对象z对应的时间间隔为[15,22],构建z的键值对为15:z和22:z。那么在构建第一排序索引时,键22对应的索引间隔对象包括w和z。
利用本实施例方法构建的所述第一排序索引,可以将传统的从索引间隔对象到时间间隔的索引结构转换成从时间间隔到索引间隔对象的反向索引结构,利用所述反向索引结构,可以以时间端点为关键词,快速查询到与所述时间端点成键值对的索引间隔对象,提高查询效率。
在本申请的另一个实施例中,所述第一排序索引可以被设置成:
将所述键值对按照键的取值大小顺序存储在数据库中。
将所述第一排序索引的键值对中键的取值按照从小到大的顺序排列,在查询到某个位置时,可以停止以下的查询,可以进一步减少查询时间,提高查询效率。
基于所述构建的第一排序索引,本申请提供一种索引间隔对象的查询方法,图4是本申请提供的索引间隔对象查询方法的一种实施例的方法流程图,如图4所述,所述将所述待查询时间间隔在基于索引间隔对象的键值对构建的第一排序索引中查询出与所述待查询时间间隔存在相交、包含关联关系的第一索引间隔对象结果集可以包括:
S21:从所述第一排序索引中获取满足键的取值与所述待查询时间间隔的取值范围相匹配的第一键值对。
在本实施例中,当所述待查询时间间隔包含时间端点时,可以确定以所述时间端点键为时间间隔端点的索引间隔对象与所述待查询时间间隔为相交或者包含的关联关系。具体的,可以判断所述时间端点的值是否与所述待查询时间间隔的取值范围相匹配。例如,对于待查询时间间隔(a,b),从所述第一排序索引中获取满足a<rowkey<b的第一键值对,a为所述待查询时间间隔的时间起点,b为所述待查询时间间隔的时间终点,rowkey为所述第一排序索引中的键值对中键的取值。当然,在上述举例中,所述待查询时间间隔还可以为(a,b]、[a,b)、[a,b]中的任意一个。
S22:将所述第一键值对所对应的索引间隔对象添加至所述第一索引间隔对象结果集。
当判断结果为所述时间端点的值大于等于所述待查询时间间隔的时间起点、小于等于所述查询时间间隔的时间终点时,可以将所述时间端点对应的索引间隔对象添加至第一索引间隔对象结果集。需要说明的是,当所述待查询时间间隔与某个索引间隔对象为包含关系时,也就是所述索引间隔对象的两个时间端点均包含在所述待查询时间间隔内,由于所述索引间隔对象与其对应的两个时间端点均构成键值对,那么,在查询过程中,所述索引间隔对象被两次添加至所述第一索引间隔对象结果集中。本实施例中,可以只保留其中一个于所述第一索引间隔对象结果集中。
下面通过一个具体的应用场景来说明查询相交和包含关系的索引间隔对象方法,表1是本申请应用场景中提供的索引间隔对象与时间间隔的对应表。如表1所示,每个索引间隔对象对应着一个时间间隔。
表1:索引间隔对象与时间间隔对应表
根据上述S11-S12的方法步骤,提取索引间隔对象对应的时间间隔的时间端点,生成如表2所示的时间端点与索引间隔对象对应的第一排序索引表。如表2所示,索引间隔对象被构建成两对以时间间隔为键的键值对:{a:rx=b}和{b:lx=a},其中,rx=b表示对象x的时间终点值为b;同理,lx=a表示对象x的时间起点值为a。
在本实施例场景中,设置待查询时间间隔为[16,21],根据上述S101的方法,判断所述时间端点键值是否包含于所述待查询时间间隔内。判断结果为时间端点15、18、20均包含所述待查询时间间隔[16,21]内,根据上述S102的方法,将时间端点18、20对应的索引间隔对象添加至第一索引间隔对象结果集中。根据表2所示,时间端点18、20分别对应于索引间隔对象z、x,此时,第一索引间隔对象结果集包含x、z两个索引间隔对象。
表2:时间端点与索引间隔对象对应的第一排序索引表
时间端点 |
索引间隔对象 |
5 |
rw=22 |
10 |
rx=20 |
15 |
ry=25 |
18 |
rz=22 |
20 |
lx=10 |
22 |
lw=5,lz=18 |
25 |
ly=15 |
本实施例方法通过将索引间隔对象到时间间隔的索引方式转换成时间间隔到索引间隔对象的索引方式,用户在检索与待查询时间间隔相交、包含关联的索引间隔对象时,不必遍历所有索引间隔对象,只需要将时间端点作为关键词,就可以通过判断所述待查询时间间隔是否包含所述时间端点就可以检索到对应的索引间隔对象,大大提高检索效率。
S3:将所述待查询时间间隔在基于索引间隔对象的键值对构建的第二线段树索引中查询出与所述待查询时间间隔存在覆盖关联关系的第二索引间隔对象结果集。
根据步骤S21-S22的方法步骤,可以检索到与所述待查询时间间隔为相交、包含关联关系的索引间隔对象。步骤S21中,当rowkey<a或者rowkey>b时,所述时间端点对应的索引间隔对象可能与所述待查询时间间隔无关联,也有可能与所述待查询时间间隔为覆盖关系。通过S3的方法,可以从提取时间间隔覆盖所述待查询时间间隔的第二索引间隔对象结果集。
首先,本实施例提供一种构建第二线段树索引的方法,图5是本申请提供的构建第二线段树索引方法的一种实施例的方法流程图,如图5所示,可以采用下述方式构建所述第二线段树索引:
S101:以所述索引间隔对象的键值对对应的时间间隔为叶子节点,根据时间间隔中时间端点的大小顺序进行叶子节点排序生成线段二叉树。
S102:若索引间隔对象的时间间隔覆盖所述线段二叉树节点对应的时间间隔,则将所述索引间隔对象存储在所述线段二叉树节点中。
S103:将所述线段二叉树作为构建的第二线段树索引并以键值对的形式进行存储。
本实施例中,可以将所述预设索引间隔对象集设置成线段树型索引结构。具体地,所述线段树型索引结构可以为完全二叉树存储结构,所述完全二叉树存储结构复杂度较低,执行效率较高,可以满足本申请中的检索效率要求。在完全二叉树式的线段树型索引结构的建立过程中,可以将线段树的叶子节点设置为最短的时间间隔,并且从左至右有序排列。在所述线段树中,中间节点索引的时间间隔是所述中间节点左、右孩子节点时间间隔的并集。当某个索引间隔对象对应的时间间隔覆盖某个节点的时间间隔时,可以将所述索引间隔对象对应的唯一标识符,如文档ID值存储于所述节点中。最后,将所述线段二叉树以键值对的形式存储于数据库中,所述键值对的存储模式不仅与基于云平台的key/value的存储模型相匹配,还可以满足扩展性和高并发的需求。
基于上述构建的第二线段树索引,本申请提供一种查询与待查询时间间隔覆盖关系的索引间隔对象的方法,图6是本申请提供的查询覆盖关系的索引间隔对象方法的一种实施例的方法流程图。如图6所示,所述将所述待查询时间间隔在基于索引间隔对象的键值对构建的第二线段树索引中查询出与所述待查询时间间隔存在覆盖关联关系的第二索引间隔对象结果集包括::
S201:获取构建的第二线段树索引中线段树的根节点,将所述根节点设置为当前节点。
所述线段树索引结构的建立方式为由下至上,线段树的查询方式为从上至下。首先可以获取所述线段树的根节点,并将所述根节点设置为当前节点。
S202:若所述当前节点的孩子节点对应的时间间隔与所述待查询时间间隔有重合部分,则判断所述孩子节点中存储的索引间隔对象的时间间隔是否覆盖所述待查询时间间隔。
S203:若所述判断的结果为是,则将所述孩子节点存储的所述索引间隔对象添加至第二索引间隔对象结果集,并将所述当前节点的孩子节点重新设置为当前节点。
S204:从所述重新设置的当前节点的孩子节点中继续查找时间间隔覆盖所述待查询时间间隔的索引间隔对象,并添加至所述第二索引间隔结果集,直至查找到当前节点索引线路的叶子节点。
下面将通过具体的应用场景来说明上述S201-S204的方法,图7是本申请提供的将表2所示的索引间隔对象设置成线段树索引结构的示意图。如图7所示,根据表2所述的时间端点,将所述线段树的叶子节点设置成最短的时间间隔,包括:[5,10]、[10,15]、[15,18]、[18,20]、[20,22]、[22,25]、[25,30]。[5,10]和[10,15]的中间节点为10,分别将[5,10]和[10,15]设置为中间节点10的左孩子节点和右孩子节点,中间节点10对应的时间间隔为[5,15]。其他节点的设置方式与上述方法相同,在此不再赘述。如表1所示,索引间隔对象w对应的时间间隔为[5,22],中间节点15对应的时间间隔为[5,20],索引间隔对象w对应的时间间隔完全覆盖中间节点15的时间间隔,可以将索引间隔对象的文档ID值存储与所述中间节点15中。需要说明的是,当索引间隔对象覆盖某个中间节点时,可以只将所述索引间隔对象的文档ID值存储于所述中间节点中,而不必存储于所述中间节点的左孩子节点和右孩子节点中,避免索引间隔对象的重复存储。例如图7所示的线段树中,可以将索引间隔对象w的文档ID值存储于中间节点15以及叶子节点[20,22]中。
在本实施例应用场景中,同样设置待查询时间间隔为[16,21],图8是本申请提供的根据S201-S204的方法进行检索的流程示意图。如图8所示,将根节点20设置为当前节点,根节点20的左孩子节点15对应的时间间隔为[5,20],与待查询时间间隔[16,21]有重合部分。如图8所示,中间节点15中存储的索引间隔对象w对应的时间间隔[5,22]覆盖所述待查询时间间隔[16,21],将索引间隔对象w添加至第二索引间隔对象结果集,并将根节点20的左孩子节点15设置为当前节点。当前节点15的左孩子节点10对应的时间间隔为[5,15],与所述待查询时间间隔[16,21]无重合部分,然后读取到当前节点15的右孩子节点18对应的时间间隔为[15,20],与所述待查询时间间隔[16,21]有重合部分。读取到中间节点18中存储着索引间隔对象x和y,判断索引间隔对象x对应的时间间隔不覆盖所述待查询时间间隔,索引间隔对象y对应的时间间隔覆盖所述待查询时间间隔,将索引间隔对象y添加至第二索引间隔对象结果集,并将所述中间节点18设置为当前节点。以下步骤2-7的判断方法与步骤1-2的判断方法相同,在此不再赘述。最终可以确定第二索引间隔对象结果集包含w、y两个索引间隔对象。
本实施例中,通过线段树型索引结构查询与待查询时间间隔呈覆盖关联关系的索引间隔对象,线段树型在数据库中的存储结构与基于云平台的key/value的存储模型相匹配,利用高效的读取和扫描操作就可以大大提高时间间隔的检索效率,所述线段树型的索引结构可以满足大数据高扩展性和高并发性的检索需求。
S4:将查询出的所述第一索引间隔对象结果集及所述第二索引间隔对象结果集合并之后作为所述待查询时间间隔的查询结果。
在上述实施例应用场景中,所述第一索引间隔对象结果集包含x、z两个索引间隔对象,所述第二索引间隔对象结果集包含w、y两个索引间隔对象,合并所述第一索引间隔对象结果集和第二索引间隔对象结果集,得到对时间间隔[16,21]的检索结果为索引间隔对象w、x、y和z。
本申请提供的时间间隔的数据查询方法,可以先利用时间间隔到索引间隔对象的反向索引方式获取时间间隔与所述待查询时间间隔呈相交、包含关联关系的索引间隔对象,然后利用线段树索引结构获取时间间隔与所述待查询时间间隔呈覆盖关联关系的索引间隔对象,将合并后的索引间隔对象作为待查询时间间隔的最终检索结果。所述反向索引方式将时间端点作为关键词,可以快速检索到与所述时间端点对应的索引间隔对象,大大提高检索效率。所述线段树型索引结构与基于云平台的key/value的存储模型相匹配,利用高效的读取和扫描操作就可以大大提高时间间隔的检索效率,所述线段树型的索引结构可以满足大数据高扩展性和高并发性的检索需求。将反向索引方式与线段树型索引方式相结合,不仅可以满足基于云平台的大数据高扩展性和高并发性的检索需求,快速筛选时间间隔对象,还能够在较大规模的集群获得更好的性能,大大提高检索效率。
基于上述时间间隔的数据查询方法,本申请还提出了一种时间间隔的索引构建方法,图9是本申请提供的时间间隔的索引构建方法的一种实施例的方法流程图,如图9所示,所述方法可以包括:
S1001:获取索引间隔对象及所述索引间隔对象的时间间隔。
S1002:提取所述索引间隔对象的时间间隔的时间端点,分别以所述索引间隔对象的两个时间端点取值生成所述索引间隔对象的键值对,以所述索引间隔对象的键值对构建第一排序索引。
S1003:以所述索引间隔对象的键值对对应的时间间隔为叶子节点,根据时间间隔中时间端点的大小顺序进行叶子节点排序生成线段二叉树,以及,若索引间隔对象的时间间隔覆盖所述线段二叉树节点对应的时间间隔,则将所述索引间隔对象存储在所述线段二叉树节点中,将所述线段二叉树作为构建的第二线段树索引;
S1004:将所述第一排序索引和所述第二线段树索引以键值对的形式进行存储,构建成时间间隔的数据索引。
上述S1001-S1002的实施方式可以参考S11-S12,S1003的实施方式可以参考S101-S103,在此不再赘述。
本申请提供的时间间隔的索引构建方法,可以构建得到第一排序索引与第二线段树索引相结合的两层索引结构,根据所述第一排序索引可以将时间端点作为关键词,可以快速检索到与所述时间端点对应的索引间隔对象,大大提高检索效率。根据所述第二线段树索引结构与基于云平台的key/value的存储模型相匹配,利用高效的读取和扫描操作就可以大大提高时间间隔的检索效率,所述第二线段树索引可以满足大数据高扩展性和高并发性的检索需求。将反向索引方式与线段树型索引方式相结合,不仅可以满足基于云平台的大数据高扩展性和高并发性的检索需求,快速筛选时间间隔对象,还能够在较大规模的集群获得更好的性能,大大提高检索效率。
基于本申请实施例所述的时间间隔的数据查询方法,本申请还提供一种时间间隔的数据查询装置。图10是本申请提供的时间间隔的数据查询装置的一种实施例的模块结构示意图,如图10所示,所述装置100可以包括:
待查询时间间隔获取单元101,用于获取待查询时间间隔;
第一结果集构建单元102,用于将所述待查询时间间隔在基于索引间隔对象的键值对构建的第一排序索引中查询出与所述待查询时间间隔存在相交、包含关联关系的第一索引间隔对象结果集;
第二结果集构建单元103,用于将所述待查询时间间隔在基于索引间隔对象的键值对构建的第二线段树索引中查询出与所述待查询时间间隔存在覆盖关联关系的第二索引间隔对象结果集;
数据集合并单元104,用于将查询出的所述第一索引间隔对象结果集及所述第二索引间隔对象结果集合并之后作为所述待查询时间间隔的查询结果。
本申请提供的时间间隔的数据查询装置,可以先利用时间间隔到索引间隔对象的反向索引方式获取时间间隔与所述待查询时间间隔呈相交、包含关联关系的索引间隔对象,然后利用线段树索引结构获取时间间隔与所述待查询时间间隔呈覆盖关联关系的索引间隔对象,将合并后的索引间隔对象作为待查询时间间隔的最终检索结果。所述反向索引方式将时间端点作为关键词,可以快速检索到与所述时间端点对应的索引间隔对象,大大提高检索效率。所述线段树型索引结构与基于云平台的key/value的存储模型相匹配,利用高效的读取和扫描操作就可以大大提高时间间隔的检索效率,所述线段树型的索引结构可以满足大数据高扩展性和高并发性的检索需求。将反向索引方式与线段树型索引方式相结合,不仅可以满足基于云平台的大数据高扩展性和高并发性的检索需求,快速筛选时间间隔对象,还能够在较大规模的集群获得更好的性能,大大提高检索效率。
本申请还提供了第一结果集构建单元的一种实施例,图11是本申请提供的第一结果集构建单元的一种实施例的模块结构示意图,如图11所示,所述第一结果集构建单元102可以包括:
索引间隔对象获取单元111,用于获取索引间隔对象及所述索引间隔对象的时间间隔;
排序索引构建单元112,用于提取所述索引间隔对象的时间间隔的时间端点,分别以所述索引间隔对象的两个时间端点取值生成所述索引间隔对象的键值对,以所述索引间隔对象的键值对构建第一排序索引。
利用本实施例第一结果集构建单元102构建的所述第一排序索引,可以将传统的从索引间隔对象到时间间隔的索引结构转换成从时间间隔到索引间隔对象的反向索引结构,利用所述反向索引结构,可以以时间端点为关键词,快速查询到与所述时间端点构成键值对的索引间隔对象,提高查询效率。
在本申请的一个实施例中,所述第一排序索引可以被设置成:
将所述键值对按照键的取值大小顺序存储在数据库中。
将所述第一排序索引中的键的取值按照从小到大的顺序排列,在查询到某个位置时,可以停止以下的查询,可以进一步减少查询时间,提高查询效率。
本申请针对第一排序索引结构,可以在所述第一排序索引结构进行数据查询,图12是本申请提供的第一结果集构建单元的另一种实施例的模块结构示意图,如图12所示,所述第一结果集构建单元102还可以包括:
键值对获取单元121,用于从所述第一排序索引中获取满足键的取值与所述待查询时间间隔的取值范围相匹配的第一键值对;
第一对象添加单元122,用于将所述第一键值对所对应的索引间隔对象添加至所述第一索引间隔对象结果集。
本实施例提供的第一结果集构建单元102通过将索引间隔对象到时间间隔的索引方式转换成时间间隔到索引间隔对象的索引方式,用户在检索与待查询时间间隔相交、包含关联的索引间隔对象时,不必遍历所有索引间隔对象,只需要将时间端点作为关键词,就可以通过判断所述待查询时间间隔是否包含所述时间端点就可以检索到对应的索引间隔对象,大大提高检索效率。
本申请还提供了第二结果集构建单元一个实施例,图13是本申请提供的第二结果集构建单元的一种实施例的模块结构示意图,如图13所示,所述第二结果集构建单元103可以包括:
二叉树生成单元131,用于以所述索引间隔对象的键值对对应的时间间隔为叶子节点,根据时间间隔中时间端点的大小顺序进行叶子节点排序生成线段二叉树;
对象存储单元132,用于若索引间隔对象的时间间隔覆盖所述线段二叉树节点对应的时间间隔,则将所述索引间隔对象存储在所述线段二叉树节点中;
二叉树存储单元133,用于将所述线段二叉树作为构建的第二线段树索引并以键值对的形式进行存储。
本申请针对第二线段树索引结构,可以在所述第二线段树索引结构进行数据查询,图14是本申请提供的第二结果集构建单元的另一种实施例的模块结构示意图,如图14所示,所述第二结果集构建单元还可以包括:
当前节点设置单元141,用于获取构建的第二线段树索引中线段树的根节点,将所述根节点设置为当前节点;
判断单元142,用于若所述当前节点的孩子节点对应的时间间隔与所述待查询时间间隔有重合部分,则判断所述孩子节点中存储的索引间隔对象的时间间隔是否覆盖所述待查询时间间隔;
第二对象添加单元143,用于若所述判断单元判断的结果为是,则将所述孩子节点存储的所述索引间隔对象添加至第二索引间隔对象结果集,并将所述当前节点的孩子节点重新设置为当前节点;
重复查找单元144,用于从所述重新设置的当前节点的孩子节点中继续查找时间间隔覆盖所述待查询时间间隔的索引间隔对象,并添加至所述第二索引间隔结果集,直至查找到当前节点索引线路的叶子节点。
本实施例通过提供的第二结果集构建单元通过线段树型索引结构查询与待查询时间间隔呈覆盖关联关系的索引间隔对象,线段树型在数据库中的存储结构与基于云平台的key/value的存储模型相匹配,利用高效的读取和扫描操作就可以大大提高时间间隔的检索效率,所述线段树型的索引结构可以满足大数据高扩展性和高并发性的检索需求。
基于本申请实施例所述的时间间隔的索引构建方法,本申请还提供一种时间间隔的索引构建装置。图15是本申请提供的时间间隔的索引构建装置的一种实施例的模块结构示意图,如图15所示,所述装置150可以包括:
索引间隔对象获取单元151,用于获取索引间隔对象及所述索引间隔对象的时间间隔。
排序索引构建单元152,用于提取所述索引间隔对象的时间间隔的时间端点,分别以所述索引间隔对象的两个时间端点取值生成所述索引间隔对象的键值对,以所述索引间隔对象的键值对构建第一排序索引。
二叉树索引构建单元153,用于以所述索引间隔对象的键值对对应的时间间隔为叶子节点,根据时间间隔中时间端点的大小顺序进行叶子节点排序生成线段二叉树,以及,用于若索引间隔对象的时间间隔覆盖所述线段二叉树节点对应的时间间隔,则将所述索引间隔对象存储在所述线段二叉树节点中,以及用于将所述线段二叉树作为构建的第二线段树索引;
数据索引构建单元154,用于将所述第一排序索引和所述第二线段树索引以键值对的形式进行存储,构建成时间间隔的数据索引。
本申请提供的时间间隔数据查询的索引构建装置,可以构建得到第一排序索引与第二线段树索引相结合的两层索引结构,根据所述第一排序索引可以将时间端点作为关键词,可以快速检索到与所述时间端点对应的索引间隔对象,大大提高检索效率。根据所述第二线段树索引结构与基于云平台的key/value的存储模型相匹配,利用高效的读取和扫描操作就可以大大提高时间间隔的检索效率,所述第二线段树索引可以满足大数据高扩展性和高并发性的检索需求。将反向索引方式与线段树型索引方式相结合,不仅可以满足基于云平台的大数据高扩展性和高并发性的检索需求,快速筛选时间间隔对象,还能够在较大规模的集群获得更好的性能,大大提高检索效率。
尽管本申请内容中提到实施例中的完全二叉树索引的数据构建、数据库中以键值对的数据存储设置、时间间隔判断、二叉树节点数据判断等之类的数据存储、构建、交互、处理的描述,但是,本申请并不局限于必须是完全符合行业实施例所描述的数据展示、处理的情况。某些页面设计语言或实施例描述的基础上略加修改后的实施方案也可以实行上述实施例相同、等同或相近、或变形后可预料的实施效果。当然,即使不采用上数据处理、判断的方式,只要符合本申请上述各实施例的数据设置、信息交互和信息判断反馈方式,仍然可以实现相同的申请,在此不再赘述。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的单元、装置,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,本申请中所述的某一单元模块也可以将实现同一功能的模块由多个子模块或子模块的组合实现。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。