掌桥专利:专业的专利平台
掌桥专利
首页

数据存储及查询方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:39:06


数据存储及查询方法、装置、电子设备及存储介质

技术领域

本公开涉及计算机技术领域,具体涉及一种数据存储及查询方法、装置、电子设备及存储介质。

背景技术

随着基于位置的服务(LBS)等技术的快速发展,越来越多的终端设备连接至网络,由此产生了大规模的时空位置信息,如车辆轨迹、个人轨迹、群体活动、可穿戴设备的时空位置等。这些数据具有动态变化(数据写入频繁)、时空多维、规模巨大、价值随时间推移而衰减、空间搜索和时序查询相结合等特征。

相对于关系型数据库,HBase在应对大数据方面具有明显的优势,但同时其在多维度查询等方面具有劣势。因此,针对时空数据特征与应用场景,优化HBase对时空数据的存储及检索能力成为需要解决的问题之一。

发明内容

本公开实施例提供一种数据存储及查询方法、装置、电子设备及计算机可读存储介质。

第一方面,本公开实施例中提供了一种数据存储方法。

具体的,所述数据存储方法,包括:

获取待存储数据;其中,所述待存储数据为包括时间信息和空间信息的时空数据;

根据所述时间信息和空间信息生成索引数据,并更新数据统计信息;其中,所述索引数据包括时空索引和空时索引,所述数据统计信息包括时间维度上的第一数据统计信息以及空间维度上的第二数据统计信息。

进一步地,根据所述时间信息和空间信息生成索引数据,包括:

根据所述空间信息生成空间填充曲线编码;

根据所述时间信息和所述空间填充曲线编码生成所述索引数据。

进一步地,所述时空索引包括所述时间信息和所述空间信息,且所述时间信息位于所述空间信息之前;所述空时索引包括所述空间信息和所述时间信息,且所述空间信息位于所述时间信息之前。

进一步地,所述更新数据统计信息,包括:

根据所述时间信息匹配所述第一数据统计信息的时间范围,并更新所述第一数据统计信息中所匹配的时间范围内的第一数据统计量;和/或,

根据所述空间信息匹配所述第二数据统计信息,并更新所述第二数据统计信息中所匹配的空间范围内的第二数据统计量。

第二方面,本公开实施例中提供了一种数据查询方法。

具体的,所述数据查询方法,包括:

确定查询条件中待查询的时间范围和空间范围;

确定所述时间范围内的第一数据统计量,以及所述空间范围内的第二数据统计量;

根据所述第一数据统计量和第二数据统计量确定查询计划。

进一步地,确定所述时间范围内的第一数据统计量,以及所述空间范围内的第二数据统计量,包括:

获取时间维度上的第一数据统计信息和空间维度上的第二数据统计信息;

根据所述时间范围和所述第一数据统计信息确定所述第一数据统计量,并根据所述空间范围和所述第二数据统计信息确定第二数据统计量。

进一步地,根据所述第一数据统计量和第二数据统计量确定查询计划,包括:

根据所述第一数据统计量和所述第二数据统计量确定查询所要使用的索引数据;其中,所述索引数据包括时空索引和空时索引。

进一步地,所述时空索引包括时间信息和空间信息,且时间信息位于空间信息之前;所述空时索引包括空间信息和时间信息,且空间信息位于时间信息之前。

进一步地,所述空间信息为空间填充曲线编码。

进一步地,根据所述第一数据统计量和所述第二数据统计量确定查询所要使用的索引数据,包括:

在第一数据统计量大于第二数据统计量时,采用所述空时索引进行查询;和/或,

在第一数据统计量不大于所述第二数据统计量时,采用所述时空索引进行查询。

第三方面,本发明实施例中提供了一种数据存储装置。

具体的,所述数据存储装置,包括:

获取模块,被配置为获取待存储数据;其中,所述待存储数据为包括时间信息和空间信息的时空数据;

生成模块,被配置为根据所述时间信息和空间信息生成索引数据,并更新数据统计信息;其中,所述索引数据包括时空索引和空时索引,所述数据统计信息包括时间维度上的第一数据统计信息以及空间维度上的第二数据统计信息。

进一步地,所述生成模块,包括:

第一生成子模块,被配置为根据所述空间信息生成空间填充曲线编码;

第二生成子模块,被配置为根据所述时间信息和所述空间填充曲线编码生成所述索引数据。

进一步地,所述时空索引包括所述时间信息和所述空间信息,且所述时间信息位于所述空间信息之前;所述空时索引包括所述空间信息和所述时间信息,且所述空间信息位于所述时间信息之前。

进一步地,所述生成模块,包括:

第一匹配子模块,被配置为根据所述时间信息匹配所述第一数据统计信息的时间范围,并更新所述第一数据统计信息中所匹配的时间范围内的第一数据统计量;和/或,

第二匹配子模块,被配置为根据所述空间信息匹配所述第二数据统计信息,并更新所述第二数据统计信息中所匹配的空间范围内的第二数据统计量。

第四方面,本发明实施例中提供了一种数据查询装置。

具体的,所述数据查询装置,包括:

第一确定模块,被配置为确定查询条件中待查询的时间范围和空间范围;

第二确定模块,被配置为确定所述时间范围内的第一数据统计量,以及所述空间范围内的第二数据统计量;

第三确定模块,被配置为根据所述第一数据统计量和第二数据统计量确定查询计划。

进一步地,所述第二确定模块,包括:

第一获取子模块,被配置为获取时间维度上的第一数据统计信息和空间维度上的第二数据统计信息;

第一确定子模块,被配置为根据所述时间范围和所述第一数据统计信息确定所述第一数据统计量,并根据所述空间范围和所述第二数据统计信息确定第二数据统计量。

进一步地,所述第三确定模块,包括:

第三确定子模块,被配置为根据所述第一数据统计量和所述第二数据统计量确定查询所要使用的索引数据;其中,所述索引数据包括时空索引和空时索引。

进一步地,所述时空索引包括时间信息和空间信息,且时间信息位于空间信息之前;所述空时索引包括空间信息和时间信息,且空间信息位于时间信息之前。

进一步地,所述空间信息为空间填充曲线编码。

进一步地,所述第三确定子模块,被配置为,包括:

第一查询子模块,被配置为在第一数据统计量大于第二数据统计量时,采用所述空时索引进行查询;和/或,

第二查询子模块,被配置为在第一数据统计量不大于所述第二数据统计量时,采用所述时空索引进行查询。

所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,数据存储装置或数据查询装置的结构中包括存储器和处理器,所述存储器用于存储一条或多条支持数据存储装置或数据查询装置执行上述第一方面中数据存储方法或第二方面中数据查询方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述数据存储装置或数据查询装置还可以包括通信接口,用于数据存储装置或数据查询装置与其他设备或通信网络通信。

第五方面,本公开实施例提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现第一方面和/或第二方面所述的方法。

第六方面,本公开实施例提供了一种计算机可读存储介质,用于存储上述任一装置所用的计算机指令,其包含用于执行上述第一方面中数据存储方法和/或第二方面中数据查询方法所涉及的计算机指令。

本公开实施例提供的技术方案可以包括以下有益效果:

本公开实施例中,针对具有时间信息和空间信息的时空数据提出了数据存储方案和数据查询方案。在数据存储过程中,根据待存储数据的时间信息和空间信息生成两种索引结构,即时空索引和空时索引,同时还根据时间信息和空间信息更新数据统计信息;而在数据查询过程中,首先确定查询条件中待查询的时间范围和/或空间范围,并确定该时间范围和/或空间范围内的数据统计信息,进而根据数据统计信息确定查询计划。通过本公开实施例,在存储具有时间信息和空间信息的多维时空数据时,采用时空索引和空时索引两种不同的索引数据进行存储,而在查询的时候支持空间和/或时间条件各种查询模式,同时还能够根据时间和空间两个不同维度范围内数据量的大小确定查询计划,提高了查询效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:

图1示出根据本公开一实施方式的数据存储方法的流程图;

图2示出根据图1所示实施方式的步骤S102的流程图;

图3示出根据本公开一实施方式的数据查询方法的流程图;

图4示出根据图3所示实施方式的步骤S302的流程图;

图5示出根据本公开一实施方式实现基于Hbase存储的时空索引构建与查询优化的整体架构示意图;

图6示出根据本公开一实施方式的数据存储装置的结构框图;

图7示出根据本公开一实施方式的数据查询装置的结构框图;

图8是适于用来实现根据本公开一实施方式的数据存储方法和/或数据查询方法的电子设备的结构示意图。

具体实施方式

下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。

在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。

另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。

图1示出根据本公开一实施方式的数据存储方法的流程图。如图1所示,该数据存储方法包括以下步骤:

在步骤S101中,获取待存储数据;其中,待存储数据为包括时间信息和空间信息的时空数据;

在步骤S102中,根据时间信息和空间信息生成索引数据,并更新数据统计信息;其中,索引数据包括时空索引和空时索引,数据统计信息包括时间维度上的第一数据统计信息以及空间维度上的第二数据统计信息。

开源的GeoMesa作为空间大数据处理框架,其所采用的Z2/ZX2索引支持空间查询,而采用的Z3/ZX3索引支持时空查询;其中Z3/ZX3索引是通过对空间信息(x,y)和时间信息t三者相互交替组合而形成,因此无法只根据时间条件进行查询,若根据时间条件查询时,必须指定空间范围查询条件;如上所述,Z3/ZX3索引为了兼顾时间和空间的查询平衡,采用了交叉编码的方式,提高了通用性,但降低了特定场景下的性能。

在查询优化层,GeoMesa查询策略为基于启发式规则的优化方式(Rule-BasedOptimization,简称为RBO),而非基于代价的优化方式(Cost-Based Optimization,简称为CBO)。其基于规则的优化方式为:时空查询使用Z3/ZX3索引、空间查询使用Z2/ZX2索引、时序查询使用Z3/ZX3索引、属性等值查询采用属性索引。这种查询策略没有考虑数据的实际分布情况,即使同一个查询语句在相同数据规模的场景下,由于数据分布情况不同,会导致查询效率差别很大。

因此,本公开实施例提出了上述数据存储方案,针对具有时间信息和空间信息的时空数据,在存储过程中根据时间信息和空间信息生成两种索引数据,即时空索引和空时索引,并且更新时间维度和空间维度上所建立的数据统计信息,使得每存储一个时空数据,都会在时间和空间两个维度上对所存储的数据总量进行统计,能够支持根据时间和空间两个维度上的数据统计信息评估代价的方式制定查询计划,提高了查询效率。

本实施例中,待存储数据可以是包括时间信息和空间信息的时空数据,例如轨迹数据。时间信息可以是产生该时空数据的时间戳,而空间信息可以是该时空数据对应的对象在上述时间所对应的空间位置坐标,例如车辆轨迹点的时间信息和空间位置信息。

由于时空数据包括时间信息和空间信息两个维度上的数据,因此可以采用HBase等非关系数据库进行存储,并且为了满足能够从时间和/或空间两个维度上进行查询的需求,也即既能够基于时间条件对时空数据进行查询,也能够基于空间条件对时空数据进行查询,还能结合时间条件和空间条件对时空数据进行查询的,本公开实施例提出的数据存储方案中引入了基于时间信息和空间信息生成的时空索引和空时索引两种索引结构。其中时空索引为优先基于时间信息生成的索引数据,而空时索引为优先基于空间信息生成的索引数据,在查询过程中,可以单独利用时间条件或者优先使用时间条件对时空索引进行查询,也可以单独利用空间位置条件或者优先使用空间位置条件对空时索引进行查询。

在一实施例中,时空索引包括时间信息和空间信息,且时间信息位于空间信息之前;空时索引包括空间信息和时间信息,且空间信息位于时间信息之前。而时空索引和空时索引两种索引结构中时间信息和空间信息具有固定的位置以及位数,例如时空索引结构中时间信息的起始位置为第n位,n大于等于0,n等于0时时空索引结构的初始位置就是时间信息的起始位置,而假设时间信息占用x个数据位,空间信息占用y个数据位时,时间信息在时空索引中占据第n至n+x位,而空间信息在时空索引中的起始位置为n+x+1,空间信息在时空索引中占据第n+x+1至n+x+1+y位;同样,在空时索引结构中空间信息的起始位置为第n位,空时信息在空时索引中占据第n至n+y位,而时间信息的起始位置为n+y+1位,时间信息在空时索引中占据第n+y+1至n+y+1+x位。

例如,待存储数据的时间信息为“20190523”,而空间信息为“东经116°20′、北纬39°56′”,则时空索引可以为“20190523116203956”,而空时索引为“11620395620190523”。可以理解的是,此处仅是举例说明,实际应用中,时间信息的精度可能到秒级,而空间信息则可以是由多维空间位置坐标转换得到的一维空间信息。还可以理解的是,时空索引和空时索引中还可以设置有其他索引信息,例如每条索引数据在整个索引表中所在的分片ID等。

由于时空索引中时间信息位于空间信息之前,因此以时间条件优先查询时,可以基于该时间条件查询时空索引;而以空间位置条件优先查询时,可以基于该空间位置条件查询空时索引。

例如,查询条件中时间条件为“20190523”,而空间条件为“116203956”,则优先使用时间条件查询时,可以将时间条件“20190523”与时空索引中时间信息的起始位置起的8位数据进行匹配,并从得到的第一候选结果中,将空间位置条件“116203956”与时空索引中空间信息的起始位置起的9位数据进行匹配,最终得到查询结果;而优先使用空间位置条件查询时,可以将空间位置条件“116203956”与空时索引中空间信息的起始位置起的9位数据进行匹配,并从得到的第二候选结果中,将时间条件“20190523”与空时索引中时间信息的起始位置起的8位数据进行匹配,最终得到查询结果。

从上面的举例说明可以看出,假如优先使用时间条件与时空索引匹配得到的第一候选结果的数据量较为庞大,而优先使用空间位置条件与空时索引匹配得到的第二候选结果的数据量较小,则进行二次查询时(从第一候选结果和第二候选结果中进一步查询)优先使用时间条件进行查询的性能显然要低于使用空间位置条件进行查询的性能。为此,本公开实施例在存储时空数据时,每存储一个时空数据,都会更新数据统计信息。而该数据统计信息则是从时间和空间两个维度上统计得到的数据,包括时间维度上的第一数据统计信息和空间维度上的第二数据统计信息。

在时间维度上的第一数据统计信息可以包括所存储的所有数据在不同时间范围内的第一数据统计量,也即第一数据统计信息包括时间信息位于不同时间范围内的第一数据统计量;而空间维度上的第二数据统计信息包括所存储的所有数据在不同空间范围内的第二数据统计量,也即第二数据统计信息包括空间信息位于不同空间范围内的第一数据统计量。

例如,当前待存储数据的时间信息为“20190523”,空间信息为“116203956”,则可以将第一数据统计信息中“20190523”所落入的时间范围内的数据统计量加1,将第二数据统计信息中“116203956”所落入的空间范围内的数据统计量加1。

本公开实施例中,针对具有时间信息和空间信息的时空数据提出了数据存储方案和数据查询方案。在数据存储过程中,根据待存储数据的时间信息和空间信息生成两种索引结构,即时空索引和空时索引,同时还根据时间信息和空间信息更新数据统计信息;而在数据查询过程中,首先确定查询条件中待查询的时间范围和/或空间范围,并确定该时间范围和/或空间范围内的数据统计信息,进而根据数据统计信息确定查询计划。通过本公开实施例,在存储具有时间信息和空间信息的多维时空数据时,采用时空索引和空时索引两种不同的索引数据进行存储,而在查询的时候支持空间和/或时间条件各种查询模式,同时还能够根据时间和空间两个不同维度范围内数据量的大小确定查询计划,提高了查询效率。

在本实施例的一个可选实现方式中,如图2所示,步骤S102中根据时间信息和空间信息生成索引数据的步骤,进一步包括以下步骤:

在步骤S201中,根据空间信息生成空间填充曲线编码;

在步骤S202中,根据时间信息和空间填充曲线编码生成索引数据。

该可选的实现方式中,空间填充曲线是指用一维曲线包含整个二维甚至多维空间的一种函数曲线。而根据不同的排列规则,可以得到不同的空间填充曲线,例如Z-order曲线、Peano曲线以及Hilbert曲线等。以Hilbert曲线为例,其用于将多维空间中的空间信息转换为一维空间中的曲线编码,例如二维空间坐标(x,y)表示一个单元格中的点,与其对应的曲线编码d则代表该点在Hilbert曲线上的位置。

为了建立空间信息的索引数据,可以预先根据空间填充曲线的编码规则将多维空间中的空间信息转换成一维空间中对应的一个曲线编码,之后再根据该曲线编码与时间信息生成索引。例如,上述例子中的空间信息“东经116°20′、北纬39°56′”,利用Hilbert曲线的编码规则可以转换成一个编码S,在时空索引和空时索引中由编码S代替上述空间信息。通过将多维空间信息转换成一维曲线编码,能够简化索引数据,进而简化数据的存储以及查询过程,提高数据存储及查询效率。

在本实施例的一个可选实现方式中,步骤S102中更新数据统计信息的步骤,进一步包括以下步骤:

根据时间信息匹配第一数据统计信息的时间范围,并更新第一数据统计信息中所匹配的时间范围内的第一数据统计量;和/或,

根据空间信息匹配第二数据统计信息,并更新第二数据统计信息中所匹配的空间范围内的第二数据统计量。

该可选的实现方式中,数据统计信息是针对一个数据库中所存储的所有时空数据的数据量的统计信息,其包括时间维度上的第一数据统计信息和空间维度上的第二数据统计信息。

在一些实施例中,可以采用直方图表示第一数据统计信息和第二数据统计信息。第一数据统计信息对应的直方图表示在预先划分好的不同时间范围内所存储的时空数据的第一数据统计量,该直方图的横坐标为时间范围,而纵坐标为第一数据统计量;而第二数据统计信息对应的直方图表示在预先划分好的不同空间范围内所存储的时空数据的第二数据统计量,该直方图的横坐标为空间范围,纵坐标为第二数据统计量。

因此,在数据库中存入时空数据时,可以对第一数据统计信息和第二数据统计信息进行更新,例如存储一个新的时空数据,则通过将该时空数据的时间信息与第一数据统计信息中的时间维度进行匹配,确定该时空数据的时间信息所对应的时间范围,进而更新该时间范围内的第一数据统计量,也即将该第一数据统计量加1;此外还可以将该时空数据的空间信息与第二数据统计信息的空间维度进行匹配,并确定该时空数据的空间信息所对应的空间范围,进而更新该空间范围内的第二数据统计量,也即将第二数据统计量加1。

图3示出根据本公开一实施方式的数据查询方法的流程图。如图3所示,该数据查询方法包括以下步骤:

在步骤S301中,确定查询条件中待查询的时间范围和/或空间范围;

在步骤S302中,确定时间范围内的第一数据统计量,以及空间范围内的第二数据统计量;

在步骤S303中,根据第一数据统计量和第二数据统计量确定查询计划。

本实施例提出了针对上述数据存储方法中所存储的时空数据的数据查询方法。针对上述数据存储方法所存储的时空数据进行查询时,查询条件中可以仅包括待查询的时间范围和空间范围。

在接收到查询语句以后,可以从查询语句的查询条件中确定待查询的时间范围和空间范围,进而确定该时间范围内的第一数据统计量和第二数据统计量,再根据数据统计信息确定查询计划。

该时间范围内的第一数据统计量可以是数据库中与查询条件中的时间范围相匹配的存储数据的数据量,第二数据统计量可以是数据库中与查询条件中的空间范围相匹配的存储数据的数据量,在确定了上述第一数据统计量和第二数据统计量以后可以制定逻辑查询计划,逻辑查询计划可以包括但不限于如下两种:基于时空索引优先采用时间范围进行查询,并进一步从查询得到的结果中使用空间范围进行二次查询;基于空时索引优先采用空间范围进行查询,并进一步从查询得到的结果中使用时间范围进行二次查询。例如,可以根据上述第一数据统计量和第二数据统计量评估采用上述两种逻辑查询计划所要付出的代价,进而选择更优的逻辑查询计划。当然可以理解的是,在实际查询过程中,还可以根据所使用的物理资源、查询条件中的其他限制条件等制定更加精细的逻辑查询计划和物理查询计划,在此不做限制。

该数据查询方法中所涉及的一些细节还可以参见上述对数据存储方法的描述,在此不再赘述。

在本实施例的一个可选实现方式中,如图4所示,步骤S302,即确定时间范围内的第一数据统计量,以及空间范围内的第二数据统计量的步骤,进一步包括以下步骤:

在步骤S401中,获取时间维度上的第一数据统计信息和空间维度上的第二数据统计信息;

在步骤S402中,根据时间范围和第一数据统计信息确定第一数据统计量,并根据空间范围和第二数据统计信息确定第二数据统计量。

该可选的实现方式中,参见上述对数据存储方法的描述可知,在存储时空数据的同时,生成了时间维度上的第一数据统计信息和空间维度上的第二时间统计信息。在确定了查询条件中的时间范围和空间范围后,可以将该时间范围与第一数据统计信息的时间维度进行匹配,进而确定该时间范围内的第一数据统计量,而将该空间范围与第二数据统计信息的空间维度进行匹配,进而确定该空间范围内的第二数据统计量。

在本实施例的一个可选实现方式中,步骤S303,即根据第一数据统计量和第二数据统计量确定查询计划的步骤,进一步包括以下步骤:

根据第一数据统计量和第二数据统计量确定查询所要使用的索引数据;其中,索引数据包括时空索引和空时索引。

该可选的实现方式中,时空索引为优先基于时间信息生成的索引数据,而空时索引为优先基于空间信息生成的索引数据,在查询过程中,可以单独利用时间条件或者优先使用时间条件对时空索引进行查询,也可以单独利用空间位置条件或者优先使用空间位置条件对空时索引进行查询。

在一实施例中,时空索引包括时间信息和空间信息,且时间信息位于空间信息之前;空时索引包括空间信息和时间信息,且空间信息位于时间信息之前。而时空索引结构和空时索引结构中时间信息和空间信息具有固定的位置以及位数,例如时空索引结构中时间信息的起始位置为第n位,n大于等于0,n等于0时时空索引结构初始位置就是时间信息的起始位,而假设时间信息占用x个数据位,空间信息占用y个数据位时,时间信息在时空索引中占据第n至n+x位,而空间信息在时空索引中的起始位置为n+x+1,空间信息在时空索引中占据第n+x+1至n+x+1+y位;同样,在空时索引结构中空间信息的起始位置为第n位,空时信息在空时索引中占据第n至n+y位,而时间信息的起始位置为n+y+1位,时间信息在空时索引中占据第n+y+1至n+y+1+x位。

例如,待存储数据的时间信息为“20190523”,而空间信息为“东经116°20′、北纬39°56′”,则时空索引可以为“20190523116203956”,而空时索引为“11620395620190523”。可以理解的是,此处仅是举例说明,实际应用中,时间信息的精度可能到秒级,而空间信息则可以是由多维空间位置坐标转换得到的一维空间信息。

由于时空索引中时间信息位于空间信息之前,因此以时间条件优先查询时,可以基于该时间条件查询时空索引;而以空间位置条件优先查询时,可以基于该空间位置条件查询空时索引。

例如,查询条件中时间条件为“20190523”,而空间条件为“116203956”,则优先使用时间条件查询时,可以将时间条件“20190523”与时空索引中时间信息的起始位置起的8位数据进行匹配,并从得到的第一候选结果中,将空间位置条件“116203956”与时空索引中空间信息的起始位置起的9位数据进行匹配,最终得到查询结果;而优先使用空间位置条件查询时,可以将空间位置条件“116203956”与空时索引中空间信息的起始位置起的9位数据进行匹配,并从得到的第二候选结果中,将时间条件“20190523”与空时索引中时间信息的起始位置起的8位数据进行匹配,最终得到查询结果。

因此,在确定第一数据统计量和第二数据统计量之后,可以根据第一数据统计量和第二数据统计量评估查询代价,进而选择代价较小的索引数据进行查询。

在本实施例的一个可选实现方式中,空间信息为空间填充曲线编码。

该可选的实现方式中,空间填充曲线是指用一维曲线包含整个二维甚至多维空间的一种函数曲线。而根据不同的排列规则,可以得到不同的空间填充曲线,例如Z-order曲线、Peano曲线以及Hilbert曲线等。以Hilbert曲线为例,其用于将多维空间中的空间信息转换为一维空间中的曲线编码,例如二维空间坐标(x,y)表示一个单元格中的点,与其对应的曲线编码d则代表该点在Hilbert曲线上的位置。

为了检索方便,在建立索引数据时,将多维空间信息转换成一维曲线编码,如Hilbert曲线编码后生成索引数据。因此,在检索时也可以将查询条件中的空间范围转换成维曲线编码,如Hilbert曲线编码后,从时空索引或者空时索引中进行查询。

在本实施例的一个可选实现方式中,根据第一数据统计量和第二数据统计量确定查询所要使用的索引数据的步骤,进一步包括以下步骤:

在第一数据统计量大于第二数据统计量时,采用空时索引进行查询;和/或,

在第一数据统计量不大于第二数据统计量时,采用时空索引进行查询。

该可选的实现方式中,在第一数据统计量大于第二数据统计量时,如果优先使用空间范围查询空时索引所得到的数据量大小为第二数据统计量,而优先使用时间范围查询时空索引所得到的数据量大小为第一数据统计量,在第二数据统计量大小的查询结果中再次使用时间范围进行查询的话,所消耗的时间要小于在第一数据统计量大小的查询结果中再次使用空间范围进行查询所消耗的时间,因此这种情况下可以采用空时索引进行查询。

同样地,在第一数据统计量不大于第二数据统计量时,如果优先使用时间范围查询时空索引所得到的数据量大小为第一数据统计量,而优先使用空间范围查询空时索引所得到的数据量大小为第二数据统计量,在第一数据统计量大小的查询结果中再次使用空间范围进行查询的话,所消耗的时间要小于在第二数据统计量大小的查询结果中再次使用时间范围进行查询所消耗的时间,因此这种情况下可以采用时空索引进行查询。

图5示出根据本公开一实施方式实现基于Hbase存储的时空索引构建与查询优化的整体架构示意图。如图5所示,在数据写入也即数据存储的逻辑如下:

1)由索引生成器创建两张索引表,分别为时空索引(TS)和空时索引(ST),其格式如下:

时空索引:在HBase中时空索引表的行键(rowkey)的结构为:shard+timestamp+S2编码,shard为该条索引数据在整个索引表中所在的分片ID,用于防止HBase热点存在;timestamp为10位整型时间戳(秒级),S2编码为google S2空间算法得到的ID,其是为了将该时空索引中的二维空间信息转换成一维曲线编码,用于简化索引数据。

空时索引:在HBase中空时索引表的行键(rowkey)的结构为:shard+S2编码+timestamp。时空索引和空时索引的区别在于,时空索引中时间信息在前而空间信息在后,因此时空索引在查询条件中的时间范围小且空间范围大时查询性能较优,而空时索引中空间信息在前时间信息在后,因此空时索引在查询条件中的空间范围小且时间范围大时查询性能较优。

2)索引生成器生成上述两张索引表之后,由元数据管理器负责生成直方图。

a)对于空间信息来说,其空间直方图信息含义为:在各个划分的空间区域中,存储数据出现的频率;空间直方图的构建过程为:1、初始化一个直方图数据块,该直方图数据块可理解为由及其元数据组成的数组,其中size表示存储数据的数量,对应于上述实施例中的第二数据统计信息,bounds表示空间范围;2、用S2算法为每个存储数据匹配到一个表示空间范围的一维ID,也即S2编码;该ID表示一个空间范围;3、将该空间范围的ID以及数量更新到直方图数组中。

b)对于时间信息来说,其时间直方图信息含义为:在各个划分的时间区域中,存储数据出现的频率,时间直方图的构建过程与空间直方图的构建过程类似,只是bounds表示的是时间范围,size对应于上述实施例中的第一数据统计信息。

3)数据持久化层负责将空间数据写入到索引表中,将元数据管理器生成的直方图信息写入到直方图信息表中,且同时会对直方图信息进行缓存。

数据查询的逻辑如下:

1)查询转换器将从客户端接收到的SQL、API等中的查询条件翻译后,启动代价评估流程

2)代价评估器基于数据存储时生成的上述直方图信息(包括空间直方图和时间直方图),通过主要考虑数据在各个区域内的分布情况来决定查询索引。当查询条件既包含时间条件又包含空间条件时,通过代价评估器可以决定使用时空索引(TS)还是空时索引(ST),具体流程如下:解析出查询条件中的时间范围和空间范围;读取时间直方图信息,评估该时间范围内的第一数据统计量;读取空间直方图信息,评估该时间范围内的第二数据统计量;

3)计划生成器基于代价评估器生成的代价信息,也即查询条件中时间范围内的第一数据统计量和空间范围内第二数据统计量生成逻辑查询计划和物理查询计划,其中,逻辑查询计划可以包括但不限于如下两种:基于时空索引优先采用时间范围进行查询,并进一步从查询得到的结果中使用空间范围进行二次查询;基于空时索引优先采用空间范围进行查询,并进一步从查询得到的结果中使用时间范围进行二次查询;物理查询计划依据物理资源以及其他查询条件的限制等制定从数据库的物理层面进行查询的计划;最终根据逻辑查询计划和物理查询计划扫描时空索引表和/或空时得到查询结果。

底层的RegionServer为Hbase数据库部署在物理服务器上的存储分区,数据存储过程中数据被实际存储在这些分区中,数据查询过程中从这些分区中查询得到结果。

下述为本公开装置实施例,可以用于执行本公开方法实施例。

图6示出根据本公开一实施方式的数据存储装置的结构框图。如图6所示,该数据存储装置包括:

获取模块601,被配置为获取待存储数据;其中,待存储数据为包括时间信息和空间信息的时空数据;

生成模块602,被配置为根据时间信息和空间信息生成索引数据,并更新数据统计信息;其中,索引数据包括时空索引和空时索引,数据统计信息包括时间维度上的第一数据统计信息以及空间维度上的第二数据统计信息。

本实施例中的数据存储装置与上述实施例中数据存储方法对应一致,具体细节可以参见上述实施例对数据存储方法的描述,在此不再赘述。

在本实施例的一个可选实现方式中,生成模块,包括:

第一生成子模块,被配置为根据空间信息生成空间填充曲线编码;

第二生成子模块,被配置为根据时间信息和空间填充曲线编码生成索引数据。

在本实施例的一个可选实现方式中,时空索引包括时间信息和空间信息,且时间信息位于空间信息之前;空时索引包括空间信息和时间信息,且空间信息位于时间信息之前。

在本实施例的一个可选实现方式中,生成模块,包括:

第一匹配子模块,被配置为根据时间信息匹配第一数据统计信息的时间范围,并更新第一数据统计信息中所匹配的时间范围内的第一数据统计量;和/或,

第二匹配子模块,被配置为根据空间信息匹配第二数据统计信息,并更新第二数据统计信息中所匹配的空间范围内的第二数据统计量。

上述本实施例中的各个可选的实现方式中对于数据存储装置的进一步描述也与上述对数据存储方法的描述对应一致,具体细节可参见上述对数据存储方法的描述,在此不再赘述。

图7示出根据本公开一实施方式的数据查询装置的结构框图。如图7所示,该数据查询装置包括:

第一确定模块701,被配置为确定查询条件中待查询的时间范围和/或空间范围;

第二确定模块702,被配置为确定时间范围内的第一数据统计量,以及空间范围内的第二数据统计量;

第三确定模块703,被配置为根据第一数据统计量和第二数据统计量确定查询计划。

本实施例中的数据查询装置与上述实施例中数据查询方法对应一致,具体细节可以参见上述实施例对数据查询方法的描述,在此不再赘述。

在本实施例的一个可选实现方式中,第二确定模块,包括:

第一获取子模块,被配置为获取时间维度上的第一数据统计信息和空间维度上的第二数据统计信息;

第一确定子模块,被配置为根据时间范围和第一数据统计信息确定第一数据统计量,并根据空间范围和第二数据统计信息确定第二数据统计量。

在本实施例的一个可选实现方式中,第三确定模块,包括:

第三确定子模块,被配置为根据第一数据统计量和第二数据统计量确定查询所要使用的索引数据;其中,索引数据包括时空索引和空时索引。

在本实施例的一个可选实现方式中,时空索引包括时间信息和空间信息,且时间信息位于空间信息之前;空时索引包括空间信息和时间信息,且空间信息位于时间信息之前。

在本实施例的一个可选实现方式中,空间信息为空间填充曲线编码。

在本实施例的一个可选实现方式中,第三确定子模块,包括:

第一查询子模块,被配置为在第一数据统计量大于第二数据统计量时,采用空时索引进行查询;和/或,

第二查询子模块,被配置为在第一数据统计量不大于第二数据统计量时,采用时空索引进行查询。

上述本实施例中的各个可选的实现方式中对于数据查询装置的进一步描述也与上述对数据查询方法的描述对应一致,具体细节可参见上述对数据查询方法的描述,在此不再赘述。

图8是适于用来实现根据本公开实施方式的数据存储方法和/或数据查询方法的电子设备的结构示意图。

如图8所示,电子设备800包括处理器(如CPU、GPU、FPGA等)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行本公开上述数据存储方法和数据查询方法的实施方式中的各种处理。在RAM803中,还存储有电子设备800操作所需的各种程序和数据。处理器801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。

以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。

特别地,根据本公开的实施方式,上文参考本公开实施方式中的任一方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,计算机程序包含用于执行本公开实施方式中数据存储方法和数据查询方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。

附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,程序被一个或者一个以上的处理器用来执行描述于本公开的数据存储方法和数据查询方法。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

相关技术
  • 数据存储方法和装置、数据查询方法和装置、数据结构、电子设备及计算机可读存储介质
  • 数据存储及查询方法、装置、电子设备及存储介质
技术分类

06120113008192