CN111061758B - 数据存储方法、装置及存储介质 - Google Patents
数据存储方法、装置及存储介质 Download PDFInfo
- Publication number
- CN111061758B CN111061758B CN201811204394.7A CN201811204394A CN111061758B CN 111061758 B CN111061758 B CN 111061758B CN 201811204394 A CN201811204394 A CN 201811204394A CN 111061758 B CN111061758 B CN 111061758B
- Authority
- CN
- China
- Prior art keywords
- data
- level
- low
- time
- processing unit
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据存储方法、装置及存储介质,属于数据处理技术领域。所述方法包括:从数据源获取多条数据,每条数据携带时间戳;根据该每条数据的时间戳,对该多条数据进行分类处理,得到多组数据;对该多组数据中的每组数据进行聚合统计,得到多个聚合数据;通过多个数据处理单元对该多个聚合数据进行分类存储,其中,该多个数据处理单元中的每个数据处理单元由内存和磁盘组成,每个数据处理单元中存储的聚合数据的类型相同。如此,在后续数据查询时,可以基于需要查询的数据的时间戳,从对应的数据处理单元中进行查询,提高了数据查询效率。
Description
技术领域
本发明实施例涉及数据处理技术领域,特别涉及一种数据存储方法、装置及存储介质。
背景技术
随着计算机技术的快速发展,数据规模急剧膨胀,各个领域中的数据量越来越大,数据类型也越来越多。为了满足数据的存储需求,可以通过数据立方体来实现数据存储,其中,该数据立方体是一类多维矩阵,即可以存储多个维度的数据。
在相关技术中,通过数据立方体存储数据的实现方式可以包括:存储设备获取需要存储的数据,对获取到的数据进行聚合统计处理,得到对应的聚合数据。之后,可以将所得到的聚合数据与数据立方体中已有的数据进行合并,并将合并后的数据存储至该数据立方体中。
然而,在上述实现方式中,如果数据立方体中存储的数据量非常大,后续当从该数据立方体中查询数据时,需要耗费较长的时间。
发明内容
本发明实施例提供了一种数据存储方法、装置及存储介质,可以解决相关技术中查询数据时需要花费较差时间的问题。所述技术方案如下:
第一方面,提供了一种数据存储方法,所述方法包括:
从数据源获取多条数据,每条数据携带时间戳;
根据所述每条数据的时间戳,对所述多条数据进行分类处理,得到多组数据;
对所述多组数据中的每组数据进行聚合统计,得到多个聚合数据;
通过多个数据处理单元对所述多个聚合数据进行分类存储,其中,每个数据处理单元中存储的聚合数据的类型相同。
可选地,所述根据所述每条数据的时间戳,对所述多条数据进行分类处理,包括:
从所述多条数据的时间戳中获取最新时间;
确定包含所述最新时间且区间长度为预设阈值的目标时间区间;
根据所述每条数据的时间戳和所述目标时间区间,对所述多条数据进行分类处理。
可选地,所述确定包含所述最新时间且区间长度为预设阈值的目标时间区间,包括:
当所述最新时间处于预先存储的区间长度为所述预设阈值的时间区间内时,将所述时间区间确定为所述目标时间区间;
当所述最新时间大于所述时间区间的右值时,确定所述最新时间与所述时间区间的右值之间的时间差值;确定所述时间区间的左值与所述时间差值之间的时间和;将所述时间区间的右值更新为所述最新时间,以及将所述时间区间的左值更新为所述时间和;将更新后的时间区间确定为所述目标时间区间。
可选地,所述根据所述每条数据的时间戳和所述目标时间区间,对所述多条数据进行分类处理,包括:
将所述多条数据中时间戳指示的时间小于所述目标时间区间左值的数据确定为高层级数据,以及将所述多条数据中时间戳指示的时间处于所述目标时间区间内的数据确定为低层级数据。
可选地,当所述每条数据的时间戳指示的时间均包括年、月、日、时、分、秒多个时间粒度,所述目标时间区间以日为时间粒度时,所述对所述多组数据中的每组数据进行聚合统计,得到多个聚合数据,包括:
基于年、月、日三个时间粒度,按照不同的时间层级和数据属性,对所述高层级数据进行聚合统计,得到多个第一高聚合数据,以及基于年、月、日、时、分、秒六个时间粒度,按照不同的时间层级和数据属性,对所述低层级数据进行聚合统计,得到多个第二高聚合数据和多个第一低聚合数据,不同时间层级包括不同维度的时间粒度。
可选地,当所述多个数据处理单元包括高层级数据处理单元和低层级数据处理单元时,所述通过多个数据处理单元对所述多个聚合数据进行分类存储,包括:
获取每个聚合数据中的行健,所述每个聚合数据的行健是在聚合统计时生成的,用于指示所述每个聚合数据对应的时间层级和数据属性;
基于每个第一高聚合数据和每个第二高聚合数据中的行健,通过所述高层级数据处理单元对所述多个第一高聚合数据和所述多个第二高聚合数据进行存储,以及基于每个第一低聚合数据中的行健,通过所述低层级数据处理单元对所述多个第一低聚合数据进行存储。
可选地,所述基于每个第一高聚合数据和每个第二高聚合数据中的行健,通过所述高层级数据处理单元对所述多个第一高聚合数据和所述多个第二高聚合数据进行存储,包括:
将所述多个第一高聚合数据和所述多个第二高聚合数据中行健相同的高聚合数据进行合并,得到多个第三高聚合数据;
对于所述多个第三高聚合数据中的每个第三高聚合数据,查询所述高层级数据处理单元的内存中是否存储有与所述每个第三高聚合数据的行健相同的数据;
当所述高层级数据处理单元的内存中存储有与所述每个第三高聚合数据的行健相同的数据时,将查询到的数据与所述每个第三高聚合数据进行合并,将合并后的数据存储至所述高层级数据处理单元的内存中。
可选地,所述查询所述高层级数据处理单元的内存中是否存储有与所述每个第三高聚合数据的行健相同的数据之后,还包括:
当所述高层级数据处理单元的内存中未存储有与所述每个第三高聚合数据的行健相同的数据时,从所述高层级数据处理单元的磁盘中获取与所述每个第三高聚合数据的行健相同的数据;
将获取的数据与所述每个第三高聚合数据进行合并,将合并后的数据存储至所述所述高层级数据处理单元的内存中。
可选地,所述基于每个第一低聚合数据中的行健,通过所述低层级数据处理单元对所述多个第一低聚合数据进行存储,包括:
将所述多个第一低聚合数据中行健相同的第一低聚合数据进行合并,得到多个第二低聚合数据;
对于所述多个第二低聚合数据中的每个第二低聚合数据,查询所述低层级数据处理单元的内存中是否存储有与所述每个第二低聚合数据的行健相同的数据;
当所述低层级数据处理单元的内存中存储有与所述每个第二低聚合数据的行健相同的数据时,将查询到的数据与所述每个第二低聚合数据进行合并,将合并后的数据存储至所述低层级数据处理单元的内存中。
可选地,所述查询所述低层级数据处理单元的内存中是否存储有与所述每个第二低聚合数据的行健相同的数据之后,还包括:
当所述低层级数据处理单元的内存中未存储有与所述每个第二低聚合数据的行健相同的数据时,从所述低层级数据处理单元的磁盘中获取与所述每个第二低聚合数据的行健相同的数据;
将获取的数据与所述每个第二低聚合数据进行合并,将合并后的数据存储至所述所述低层级数据处理单元的内存中。
可选地,所述方法还包括:
当所述高层级数据处理单元的内存中的数据量达到预设数量阈值,或者所述低层级数据处理单元的内存中的数据量达到所述预设数量阈值时,将所述高层级数据处理单元的内存中的数据存储至所述高层级数据处理单元的磁盘中,以及将所述低层级数据处理单元的内存中的数据存储至所述低层级数据处理单元的磁盘中。
第二方面,提供了一种数据存储装置,所述装置包括:
获取模块,用于从数据源获取多条数据,每条数据携带时间戳;
分类处理模块,用于根据所述每条数据的时间戳,对所述多条数据进行分类处理,得到多组数据;
聚合统计模块,用于对所述多组数据中的每组数据进行聚合统计,得到多个聚合数据;
分类存储模块,用于通过多个数据处理单元对所述多个聚合数据进行分类存储,其中,每个数据处理单元中存储的聚合数据的类型相同。
可选地,所述分类处理模块用于:
从所述多条数据的时间戳中获取最新时间;
确定包含所述最新时间且区间长度为预设阈值的目标时间区间;
根据所述每条数据的时间戳和所述目标时间区间,对所述多条数据进行分类处理。
可选地,所述分类处理模块用于:
当所述最新时间处于预先存储的区间长度为所述预设阈值的时间区间内时,将所述时间区间确定为所述目标时间区间;
当所述最新时间大于所述时间区间的右值时,确定所述最新时间与所述时间区间的右值之间的时间差值;确定所述时间区间的左值与所述时间差值之间的时间和;将所述时间区间的右值更新为所述最新时间,以及将所述时间区间的左值更新为所述时间和;将更新后的时间区间确定为所述目标时间区间。
可选地,所述分类处理模块用于:
将所述多条数据中时间戳指示的时间小于所述目标时间区间左值的数据确定为高层级数据,以及将所述多条数据中时间戳指示的时间处于所述目标时间区间内的数据确定为低层级数据。
可选地,所述聚合统计模块用于:
当所述每条数据的时间戳指示的时间均包括年、月、日、时、分、秒多个时间粒度,所述目标时间区间以日为时间粒度时,基于年、月、日三个时间粒度,按照不同的时间层级和数据属性,对所述高层级数据进行聚合统计,得到多个第一高聚合数据,以及基于年、月、日、时、分、秒六个时间粒度,按照不同的时间层级和数据属性,对所述低层级数据进行聚合统计,得到多个第二高聚合数据和多个第一低聚合数据,不同时间层级包括不同维度的时间粒度。
可选地,所述分类存储模块用于:
当所述多个数据处理单元包括高层级数据处理单元和低层级数据处理单元时,获取每个聚合数据中的行健,所述每个聚合数据的行健是在聚合统计时生成的,用于指示所述每个聚合数据对应的时间层级和数据属性;
基于每个第一高聚合数据和每个第二高聚合数据中的行健,通过所述高层级数据处理单元对所述多个第一高聚合数据和所述多个第二高聚合数据进行存储,以及基于每个第一低聚合数据中的行健,通过所述低层级数据处理单元对所述多个第一低聚合数据进行存储。
可选地,所述分类存储模块用于:
将所述多个第一高聚合数据和所述多个第二高聚合数据中行健相同的高聚合数据进行合并,得到多个第三高聚合数据;
对于所述多个第三高聚合数据中的每个第三高聚合数据,查询所述高层级数据处理单元的内存中是否存储有与所述每个第三高聚合数据的行健相同的数据;
当所述高层级数据处理单元的内存中存储有与所述每个第三高聚合数据的行健相同的数据时,将查询到的数据与所述每个第三高聚合数据进行合并,将合并后的数据存储至所述高层级数据处理单元的内存中。
可选地,所述分类存储模块用于:
当所述高层级数据处理单元的内存中未存储有与所述每个第三高聚合数据的行健相同的数据时,从所述高层级数据处理单元的磁盘中获取与所述每个第三高聚合数据的行健相同的数据;
将获取的数据与所述每个第三高聚合数据进行合并,将合并后的数据存储至所述所述高层级数据处理单元的内存中。
可选地,所述分类存储模块用于:
将所述多个第一低聚合数据中行健相同的第一低聚合数据进行合并,得到多个第二低聚合数据;
对于所述多个第二低聚合数据中的每个第二低聚合数据,查询所述低层级数据处理单元的内存中是否存储有与所述每个第二低聚合数据的行健相同的数据;
当所述低层级数据处理单元的内存中存储有与所述每个第二低聚合数据的行健相同的数据时,将查询到的数据与所述每个第二低聚合数据进行合并,将合并后的数据存储至所述低层级数据处理单元的内存中。
可选地,所述分类存储模块用于:
当所述低层级数据处理单元的内存中未存储有与所述每个第二低聚合数据的行健相同的数据时,从所述低层级数据处理单元的磁盘中获取与所述每个第二低聚合数据的行健相同的数据;
将获取的数据与所述每个第二低聚合数据进行合并,将合并后的数据存储至所述所述低层级数据处理单元的内存中。
可选地,所述分类存储模块用于:
当所述高层级数据处理单元的内存中的数据量达到预设数量阈值,或者所述低层级数据处理单元的内存中的数据量达到所述预设数量阈值时,将所述高层级数据处理单元的内存中的数据存储至所述高层级数据处理单元的磁盘中,以及将所述低层级数据处理单元的内存中的数据存储至所述低层级数据处理单元的磁盘中。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述第一方面所述的数据存储方法。
第四方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据存储方法。
本发明实施例提供的技术方案带来的有益效果是:
从数据源获取携带时间戳的多条数据,根据每条数据的时间戳,对该多条数据进行分类处理,得到多组数据。对该多组数据中的每组数据进行聚合统计,之后,通过由内存和磁盘组成的多个数据处理单元,对该多个聚合数据进行分类存储,使得每个数据处理单元中存储的聚合数据的类型相同。如此,在后续数据查询时,可以基于需要查询的数据的时间戳,从对应的数据处理单元中进行查询,提高了数据查询效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种数据存储方法的流程图;
图2是根据一示例性实施例示出的一种数据处理单元的示意图;
图3是根据一示例性实施例示出的一种数据存储装置的结构示意图;
图4是根据一示例性实施例示出的一种存储设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例提供的数据存储方法进行详细介绍之前,先对本发明实施例涉及的名词、应用场景和实施环境进行简单介绍。
首先,对本发明实施例涉及的名词进行简单介绍。
Spark Streaming:一种可以对数据进行批量处理的计算引擎,其基本原理是把输入的数据以某一时间间隔进行批量处理,当批量处理的时间间隔缩短至秒级时,即可用于处理实时数据流。可以支持从多种数据源获取数据。
数据源:可以包括Kafka、Flume、Twitter、ZeroMQ、Kinesis以及TCP sockets。
数据立方体:是一类多维矩阵,可以用于数据分析与索引,能够支持对元数据进行任意多关键字实时索引。数据立方体可以由内存和磁盘(分布式数据库)组成,以基于该内存和磁盘实现多维数据存储。
其次,对本发明实施例涉及的应用场景进行简单介绍。
为了能够适应数据的多维度发展,相关技术领域提出了通过数据立方体来存储数据。然而,当数据立方体存储的数据量非常大时,如果从数据立方体中查询数据需要花费较长时间。并且,在相关技术中,通过数据立方体存储数据时,一般将数据存储至数据立方体的分布式数据库中,譬如,该分布式数据库为HBase等。如此,当分布式数据库的性能达到瓶颈时,就会增加数据立方体的更新时间,降低系统的吞吐量。并且,对分布式数据库频繁读写将会影响其性能。为此,本发明实施例提供了一种数据存储方法,可以解决上述问题,其具体实现请参见如下图1所示的实施例。
接下来,对本发明实施例涉及的实施环境进行简单介绍。
本发明实施例提供的数据存储方法可以由存储设备来执行,该存储设备中包括多个数据处理单元,以通过该多个数据处理单元来存储数据。其中,该多个数据处理单元中的每个数据处理单元均由内存和磁盘组成。在一些实施例中,数据处理单元可以为上述数据立方体。进一步地,该存储设备还可以包括Spark Streaming,以通过该Spark Streaming从数据源获取数据。
在介绍完本发明实施例涉及的名词、应用场景和实施环境后,接下来将结合附图对本发明实施例提供的数据存储方法进行详细介绍。
图1是根据一示例性实施例示出的一种数据存储方法的流程图,这里以该数据存储方法通过上述存储设备实现为例进行说明,该数据存储方法可以包括如下几个实现步骤:
步骤101:从数据源获取多条数据,每条数据携带时间戳。
在一些实施例中,存储设备可以通过Spark Streaming从数据源获取该多条数据,譬如,当该数据源为kafka时,通过Spark Streaming从kafka读取多条数据,该多条数据中的每条数据均携带时间戳。其中,该每条数据的时间戳可以用于指示该每条数据的生成时间。
步骤102:根据该每条数据的时间戳,对该多条数据进行分类处理,得到多组数据。
为了对该多条数据进行区分存储,存储设备根据每条数据的时间戳对该多条数据进行分类。在一些实施例中,其具体实现可以包括如下几个实现步骤:
1021:从该多条数据的时间戳中获取最新时间。
在一些实施例中,可以根据近期数据和旧数据两种数据类型对该多条数据进行分类,也就是说,可以将该多条数据中属于近期数据的分为一类,以及将属于旧数据的分为一类,为此,需要确定一个近期时间范围。
为了确定这个近期时间范围,从该多条数据的时间戳中获取最新时间,换句话说,从该多条数据的时间戳中获取最晚时间。譬如,该多条数据包括第一数据、第二数据、第三数据和第四数据,该第一数据的时间戳指示的时间为2017年6月25日,该第二数据的时间戳指示的时间为2017年6月29日,该第三数据的时间戳指示的时间为2017年7月2日,该第四数据的时间戳指示的时间为2017年7月5日,则该存储设备获取最新时间为2017年7月5日。
1022:确定包含该最新时间且区间长度为预设阈值的目标时间区间。
在一些实施例中,确定包含该最新时间且区间长度为预设阈值的目标时间区间的具体实现可以包括如下几种可能的实现方式:
第一种实现方式:当该最新时间处于预先存储的区间长度为该预设阈值的时间区间内时,将该时间区间确定为该目标时间区间。
其中,该预设阈值可以由用户根据实际需求进行设置,也可以由该存储设备默认设置,本发明实施例对此不做限定。譬如,该预设阈值可以为30天。
如果该最新时间处于该时间区间内,则说明相对于该批获取的多条数据,预先存储的该时间区间为近期时间范围,此时,可以直接将预先存储的时间区间确定为待确定的目标时间区间,其中,该目标时间区间即相当于是上述近期时间范围。
第二种实现方式:当该最新时间大于该时间区间的右值时,确定该最新时间与该时间区间的右值之间的时间差值,确定该时间区间的左值与该时间差值之间的时间和,将该时间区间的右值更新为该最新时间,以及将该时间区间的左值更新为该时间和,将更新后的时间区间确定为该目标时间区间。
当该最新时间大于该时间区间的右值,说明需要对预先存储的时间区间进行更新,以重新确定目标时间区间,在这里,相当于将该时间区间向右滑动该最新时间个单位。譬如,假设预先存储的时间区间为[7月1日,7月15日],该最新时间为7月16日,则可以确定该目标时间区间为[7月2日,7月16日]。
进一步地,在该种实现方式中,由于重新确定了近期时间范围,因此,为了便于后续可以基于重新确定的近期时间范围,对下一批数据进行处理,该存储设备确定该目标时间区间后,可以将预先存储的时间区间更新为该目标时间区间。
进一步地,在上述实现方式中,存储设备在确定目标时间区间之前,还可以查询是否存在该时间区间。当存在该时间区间,按照上述两种实现方式来确定目标时间区间。反之,若不存在该时间区间,该存储设备可以根据该最新时间和上述区间长度,生成该目标时间区间。譬如,可以确定该最新时间与预设阈值之间的差值,之后,将该最新时间确定为目标时间区间的右值,以及将所确定的差值确定为该目标时间区间的左值。
1023:根据该每条数据的时间戳和该目标时间区间,对该多条数据进行分类处理。
为了对获取的多条数据进行区分存储,这里按照每条数据的时间戳和所确定的目标时间区间,对多条数据进行分类。在实施中,将该多条数据中时间戳指示的时间小于该目标时间区间左值的数据确定为高层级数据,以及将该多条数据中时间戳指示的时间处于该目标时间区间内的数据确定为低层级数据。
不难理解,当某条数据的时间戳所指示的时间小于该目标时间区间左值时,说明该条数据是目标时间区间之前的数据,可以认为该条数据为旧数据,这里将该类数据划分为高层级数据。此外,当某条数据的时间戳所指示的时间处于该目标时间区间内时,可以认为该条数据为近期的数据,这里将该类数据划分为低层级数据。如此,经过数据分类处理后得到了两组数据。
步骤103:对该多组数据中的每组数据进行聚合统计,得到多个聚合数据。
在这里,需要对上述得到的高层级数据和低层级数据这两组数据进行聚合统计。在一种可能的实现方式中,当该每条数据的时间戳指示的时间均包括年、月、日、时、分、秒多个时间粒度,该目标时间区间以日为时间粒度时,基于年、月、日三个时间粒度,按照不同的时间层级和数据属性,对该高层级数据进行聚合统计,得到多个第一高聚合数据,以及基于年、月、日、时、分、秒六个时间粒度,按照不同的时间层级和数据属性,对该低层级数据进行聚合统计,得到多个第二高聚合数据和多个第一低聚合数据。其中,不同时间层级包括不同维度的时间粒度。
通常情况下,一些旧数据可能不需要做精细统计,因此,可以只基于年、月、日这几个大时间粒度进行聚合统计,而近期的数据一般需要做精细地统计,因此,可以基于年、月、日、时、分、秒多个时间粒度进行聚合统计。也就是说,这里将基于不同时间粒度,按照不同的时间层级和数据属性对分类得到的两组数据分别进行聚合统计。
为了便于理解,这里以数据属性是一维的为例进行说明。对于该高层级数据,存储设备根据基于年、月、日三个时间粒度,按照不同的时间层级和数据属性进行聚合统计。其中,该不同的时间层级包括第一时间层级、第二时间层级和第三时间层级,该第一时间层级包括年这一时间粒度,该第二时间层级包括年、月两个时间粒度,该第三时间层级包括年、月、日三个时间粒度。
也就是说,对于该高层级数据中包括的每条数据,该存储设备根据第一时间层级和数据属性,对该每条数据进行聚合统计,得到该第一时间层级对应的第一高聚合数据;根据第二时间层级和数据属性,对该每条数据进行聚合统计,得到该第二时间层级对应的第一高聚合数据;根据第三时间层级和数据属性,对该每条数据进行聚合统计,得到该第三时间层级对应的第一高聚合数据。
此外,对于低层级数据,该存储设备根据年、月、日、时、分、秒六个时间粒度,按照不同的时间层级和数据属性进行聚合统计。此时,该不同时间层级不仅包括上述第一时间层级、第二时间层级和第三时间层级,还包括第四时间层级、第五时间层级和第六时间层级,该第四时间层级包括年、月、日、时四个时间粒度,该第五时间层级包括年、月、日、时、分五个时间粒度,该第六时间层级包括年、月、日、时、分、秒六个时间粒度。
也就是说,对于该低层级数据中包括的每条数据,该存储设备根据第一时间层级和数据属性,对该每条数据进行聚合统计,得到该第一时间层级对应的第二高聚合数据;根据第二时间层级和数据属性,对该每条数据进行聚合统计,得到该第二时间层级对应的第二高聚合数据;根据第三时间层级和数据属性,对该每条数据进行聚合统计,得到该第三时间层级对应的第二高聚合数据;根据第四时间层级和数据属性,对该每条数据进行聚合统计,得到该第四时间层级对应的第一低聚合数据;根据第五时间层级和数据属性,对该每条数据进行聚合统计,得到该第五时间层级对应的第一低聚合数据;根据第六时间层级和数据属性,对该每条数据进行聚合统计,得到该第六时间层级对应的第一低聚合数据。
需要说明的是,这里是以该数据属性是一维为例进行说明,在另一些实施例中,当该数据属性为多维时,还需要结合不同维度的数据属性进行聚合统计。譬如,以该数据属性为二维,对高层级数据进行聚合统计为例,此时,需要根据上述第一时间层级进行聚合统计;根据第一时间层级和第一维度的数据属性进行聚合统计;根据第一时间层级和第二维度的数据属性进行聚合统计;根据第一时间层级、第一维度的数据属性和第二维度的数据属性进行聚合统计。同理,该存储设备基于第二时间层级,结合两个维度的数据属性进行聚合统计,以及基于第三时间层级,结合两个维度的数据属性进行聚合统计,如此,可以得到12个第一高聚合数据。
还需要说明的是,上述仅是以根据不同时间粒度,按照不同的时间层级和数据属性进行聚合统计为例进行说明,在另一实施例中,还可以根据不同时间粒度,按照不同的时间层级、数据属性和数据属性值进行聚合统计,譬如,当该数据属性为年龄时,该数据属性值可以为年龄值等。
步骤104:当该多个数据处理单元包括高层级数据处理单元和低层级数据处理单元时,获取每个聚合数据中的行健,该每个聚合数据的行健是在聚合统计时生成的,用于指示该每个聚合数据对应的时间层级和数据属性。
其中,该多个数据处理单元中的每个数据处理单元由内存和磁盘组成,每个数据处理单元中存储的聚合数据的类型相同。譬如,当该多个数据处理单元包括高层级数据处理单元和低层级数据处理单元时,请参考图2,该图2根据一示例性实施例示出的一种数据处理单元的示意图。
为了将得到的聚合数据分类存储至高层级数据处理单元和低层级数据处理单元中,存储设备获取在聚合统计过程中生成的行健。这里要说明的是,在聚合统计过程中,当基于的时间层级和数据属性相同,且该时间层级对应的时间处于同一时间范围内(譬如,均处于同一天)时,所生成的行健也相同。譬如,当第一数据是基于2017年7月和某数据属性进行聚合统计,以及第二数据也是基于2017年7月和该数据属性进行聚合统计时,聚合统计后所得到的两个聚合数据的行健相同。
步骤105:基于每个第一高聚合数据和每个第二高聚合数据中的行健,通过该高层级数据处理单元对该多个第一高聚合数据和该多个第二高聚合数据进行存储。
在存储过程中,将该多个第一高聚合数据和该多个第二高聚合数据存储至高层级数据处理单元中,也就是说,将对高层级数据聚合统计得到的高聚合数据和对低层级数据聚合统计得到的部分高聚合数据存储至同一个数据处理单元中。
在一些实施例中,基于每个第一高聚合数据和每个第二高聚合数据中的行健,通过该高层级数据处理单元对该多个第一高聚合数据和该多个第二高聚合数据进行存储的具体实现可以包括:将该多个第一高聚合数据和该多个第二高聚合数据中行健相同的高聚合数据进行合并,得到多个第三高聚合数据,将该多个第三高聚合数据存储至该高层级数据处理单元中。
也就是说,在将高聚合数据存储至高层级数据处理单元中时,不是直接与高层级数据处理单元中的数据进行合并,而是在满足一定的条件下才进行合并。如前文所述,在聚合统计过程中,当基于的时间层级和数据属性相同,且该时间层级对应的时间处于同一时间范围内时,所生成的行健也相同。在本发明实施例中,将具有相同行健的高聚合数据进行合并,得到多个第三高聚合数据,以便于在将该多个第三高聚合数据存储至该高层级数据处理单元时,可以将行健相同的高聚合数据进行合并。如此,可以方便用户后续可以一次性查询到相同时间层级且处于同一时间范围内的多条数据,避免需要在查询时再进行合并,提高了数据查询效率。
进一步地,将该多个第三高聚合数据存储至该高层级数据处理单元中的具体实现可以包括:对于该多个第三高聚合数据中的每个第三高聚合数据,查询该高层级数据处理单元的内存中是否存储有与该每个第三高聚合数据的行健相同的数据,当该高层级数据处理单元的内存中存储有与该每个第三高聚合数据的行健相同的数据时,将查询到的数据与该每个第三高聚合数据进行合并,将合并后的数据存储至该高层级数据处理单元的内存中。
为了避免对磁盘的频繁读写,本发明实施例先在内存中对高聚合数据进行合并,也即是,查询该高层级数据处理单元的内存中是否存储有与每个第三高聚合数据的行健相同的数据。如果存在,则直接在内存中将行健相同的高聚合数据进行合并,并将合并后的高聚合数据存储至内存中。
进一步地,当该高层级数据处理单元的内存中未存储有与该每个第三高聚合数据的行健相同的数据时,从该高层级数据处理单元的磁盘中获取与该每个第三高聚合数据的行健相同的数据,将获取的数据与该每个第三高聚合数据进行合并,将合并后的数据存储至该该高层级数据处理单元的内存中。
步骤106:基于每个第一低聚合数据中的行健,通过该低层级数据处理单元对该多个第一低聚合数据进行存储。
在数据存储过程中,将经过聚合统计所得到的多个第一低聚合数据存储至低层级数据处理单元中。进一步地,存储设备基于每个第一低聚合数据中的行健,通过该低层级数据处理单元对该多个第一低聚合数据进行存储,其具体实现过程可以包括:将该多个第一低聚合数据中行健相同的第一低聚合数据进行合并,得到多个第二低聚合数据,将该多个第二低聚合数据存储至该低层级数据处理单元中。
同理,在将第一低聚合数据存储至低层级数据处理单元中时,也不是直接与低层级数据处理单元中的数据进行合并,而是在满足一定的条件下进行合并。如前文所述,在聚合统计过程中,当基于的时间层级和数据属性相同,且该时间层级对应的时间处于同一时间范围内时,所生成的行健也相同。在本发明实施例中,将具有相同行健的第一低聚合数据进行合并,得到多个第二低聚合数据,以便于在将该多个第二低聚合数据存储至该低层级数据处理单元时,可以将行健相同的低聚合数据进行合并。如此,可以方便用户后续可以一次性查询到相同时间层级且处于同一时间范围内的多条数据,避免需要在查询时再进行合并,提高了数据查询效率。
进一步地,上述将该多个第二低聚合数据存储至该低层级数据处理单元中的具体实现可以包括:对于该多个第二低聚合数据中的每个第二低聚合数据,查询该低层级数据处理单元的内存中是否存储有与该每个第二低聚合数据的行健相同的数据;当该低层级数据处理单元的内存中存储有与该每个第二低聚合数据的行健相同的数据时,将查询到的数据与该每个第二低聚合数据进行合并,将合并后的数据存储至该低层级数据处理单元的内存中。
为了避免对磁盘的频繁读写,本发明实施例先在内存中对低聚合数据进行合并,也即是,查询该低层级数据处理单元的内存中是否存储有与每个第二低聚合数据的行健相同的数据。如果存在,则直接在内存中将行健相同的低聚合数据进行合并,并将合并后的数据存储至内存中。
进一步地,当该低层级数据处理单元的内存中未存储有与该每个第二低聚合数据的行健相同的数据时,从该低层级数据处理单元的磁盘中获取与该每个第二低聚合数据的行健相同的数据;将获取的数据与该每个第二低聚合数据进行合并,将合并后的数据存储至该该低层级数据处理单元的内存中。
进一步地,当该高层级数据处理单元的内存中的数据量达到预设数量阈值,或者该低层级数据处理单元的内存中的数据量达到预设数量阈值时,将该高层级数据处理单元的内存中的数据存储至该高层级数据处理单元的磁盘中,以及将该低层级数据处理单元的内存中的数据存储至该低层级数据处理单元的磁盘中。
其中,该预设数量阈值可以由用户根据实际需求自定义设置,也可以由该存储设备默认设置,本发明实施例对此不做限定。
如此,将合并后的高聚合数据先存储至高层级数据处理单元的内存中,以及将合并后的低聚合数据先存储至低层级数据处理单元的内存中,只有当该高层级数据处理单元的内存所存储的数据达到一定数值,或者当该低层级数据处理单元的内存所存储的数据达到一定数值时,在将内存中的数据写入磁盘中,如此可以减少与磁盘之间的交互次数。并且,在查询高聚合数据或低聚合数据时,先从内存中查询,当在内存中未查询到时,再将从磁盘中查询,避免对磁盘频繁读写,提高了系统性能。此外,采用该种存储方式还可以减少高层级数据处理单元对磁盘的使用量,以及低层级数据处理单元对磁盘的使用量。
需要说明的是,上述步骤105和步骤106之间没有先后执行顺序。
另外,还需要说明的是,上述步骤104至步骤106用于实现通过多个数据处理单元对该多个聚合数据进行分类存储的操作。
进一步地,在处理每一批数据的过程中,当目标时间区间更新时,该存储设备还可以将低层级数据处理单元中不属于该目标时间区间内的数据删除,如此,可以节省低层级数据处理单元的存储空间。
进一步地,为了保证从数据源获取的数据是不重复的,可以在处理完所获取的一批数据后,记录所获取的数据的偏移量,该偏移量用于指示当前获取的数据在数据源中的位置。如此,待下次从该数据源获取数据时,可以根据所记录的偏移量,获取下一批数据。譬如,若数据源中的数据是按照顺序编号的,本次获取了5条数据,则该偏移量为5,即下一次从第六条数据开始获取。
在本发明实施例中,从数据源获取携带时间戳的多条数据,根据每条数据的时间戳,对该多条数据进行分类处理,得到多组数据。对该多组数据中的每组数据进行聚合统计,之后,通过由内存和磁盘组成的多个数据处理单元,对该多个聚合数据进行分类存储,使得每个数据处理单元中存储的聚合数据的类型相同。如此,在后续数据查询时,可以基于需要查询的数据的时间戳,从对应的数据处理单元中进行查询,提高了数据查询效率。
图3是根据一示例性实施例示出的一种数据存储装置的结构示意图,该数据存储装置可以由软件、硬件或者两者的结合实现。该数据存储装置可以包括:
获取模块310,用于从数据源获取多条数据,每条数据携带时间戳;
分类处理模块320,用于根据所述每条数据的时间戳,对所述多条数据进行分类处理,得到多组数据;
聚合统计模块330,用于对所述多组数据中的每组数据进行聚合统计,得到多个聚合数据;
分类存储模块340,用于通过多个数据处理单元对所述多个聚合数据进行分类存储,其中,所述多个数据处理单元中的每个数据处理单元由内存和磁盘组成,每个数据处理单元中存储的聚合数据的类型相同。
可选地,所述分类处理模块320用于:
从所述多条数据的时间戳中获取最新时间;
确定包含所述最新时间且区间长度为预设阈值的目标时间区间;
根据所述每条数据的时间戳和所述目标时间区间,对所述多条数据进行分类处理。
可选地,所述分类处理模块320用于:
当所述最新时间处于预先存储的区间长度为所述预设阈值的时间区间内时,将所述时间区间确定为所述目标时间区间;
当所述最新时间大于所述时间区间的右值时,确定所述最新时间与所述时间区间的右值之间的时间差值;确定所述时间区间的左值与所述时间差值之间的时间和;将所述时间区间的右值更新为所述最新时间,以及将所述时间区间的左值更新为所述时间和;将更新后的时间区间确定为所述目标时间区间。
可选地,所述分类处理模块320用于:
将所述多条数据中时间戳指示的时间小于所述目标时间区间左值的数据确定为高层级数据,以及将所述多条数据中时间戳指示的时间处于所述目标时间区间内的数据确定为低层级数据。
可选地,所述聚合统计模块330用于:
当所述每条数据的时间戳指示的时间均包括年、月、日、时、分、秒多个时间粒度,所述目标时间区间以日为时间粒度时,基于年、月、日三个时间粒度,按照不同的时间层级和数据属性,对所述高层级数据进行聚合统计,得到多个第一高聚合数据,以及基于年、月、日、时、分、秒六个时间粒度,按照不同的时间层级和数据属性,对所述低层级数据进行聚合统计,得到多个第二高聚合数据和多个第一低聚合数据,不同时间层级包括不同维度的时间粒度。
可选地,所述分类存储模块340用于:
当所述多个数据处理单元包括高层级数据处理单元和低层级数据处理单元时,获取每个聚合数据中的行健,所述每个聚合数据的行健是在聚合统计时生成的,用于指示所述每个聚合数据对应的时间层级和数据属性;
基于每个第一高聚合数据和每个第二高聚合数据中的行健,通过所述高层级数据处理单元对所述多个第一高聚合数据和所述多个第二高聚合数据进行存储,以及基于每个第一低聚合数据中的行健,通过所述低层级数据处理单元对所述多个第一低聚合数据进行存储。
可选地,所述分类存储模块340用于:
将所述多个第一高聚合数据和所述多个第二高聚合数据中行健相同的高聚合数据进行合并,得到多个第三高聚合数据;
对于所述多个第三高聚合数据中的每个第三高聚合数据,查询所述高层级数据处理单元的内存中是否存储有与所述每个第三高聚合数据的行健相同的数据;
当所述高层级数据处理单元的内存中存储有与所述每个第三高聚合数据的行健相同的数据时,将查询到的数据与所述每个第三高聚合数据进行合并,将合并后的数据存储至所述高层级数据处理单元的内存中。
可选地,所述分类存储模块340用于:
当所述高层级数据处理单元的内存中未存储有与所述每个第三高聚合数据的行健相同的数据时,从所述高层级数据处理单元的磁盘中获取与所述每个第三高聚合数据的行健相同的数据;
将获取的数据与所述每个第三高聚合数据进行合并,将合并后的数据存储至所述所述高层级数据处理单元的内存中。
可选地,所述分类存储模块340用于:
将所述多个第一低聚合数据中行健相同的第一低聚合数据进行合并,得到多个第二低聚合数据;
对于所述多个第二低聚合数据中的每个第二低聚合数据,查询所述低层级数据处理单元的内存中是否存储有与所述每个第二低聚合数据的行健相同的数据;
当所述低层级数据处理单元的内存中存储有与所述每个第二低聚合数据的行健相同的数据时,将查询到的数据与所述每个第二低聚合数据进行合并,将合并后的数据存储至所述低层级数据处理单元的内存中。
可选地,所述分类存储模块340用于:
当所述低层级数据处理单元的内存中未存储有与所述每个第二低聚合数据的行健相同的数据时,从所述低层级数据处理单元的磁盘中获取与所述每个第二低聚合数据的行健相同的数据;
将获取的数据与所述每个第二低聚合数据进行合并,将合并后的数据存储至所述所述低层级数据处理单元的内存中。
可选地,所述分类存储模块340用于:
当所述高层级数据处理单元的内存中的数据量达到预设数量阈值,或者所述低层级数据处理单元的内存中的数据量达到所述预设数量阈值时,将所述高层级数据处理单元的内存中的数据存储至所述高层级数据处理单元的磁盘中,以及将所述低层级数据处理单元的内存中的数据存储至所述低层级数据处理单元的磁盘中。
在本发明实施例中,从数据源获取携带时间戳的多条数据,根据每条数据的时间戳,对该多条数据进行分类处理,得到多组数据。对该多组数据中的每组数据进行聚合统计,之后,通过由内存和磁盘组成的多个数据处理单元,对该多个聚合数据进行分类存储,使得每个数据处理单元中存储的聚合数据的类型相同。如此,在后续数据查询时,可以基于需要查询的数据的时间戳,从对应的数据处理单元中进行查询,提高了数据查询效率。
需要说明的是:上述实施例提供的数据存储装置在实现数据存储方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是根据一示例性实施例示出的一种存储设备的结构示意图。具体来讲:
存储设备400包括中央处理单元(CPU)401、包括随机存取存储器(RAM)402和只读存储器(ROM)403的系统存储器404,以及连接系统存储器404和中央处理单元401的系统总线405。存储设备400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)406,和用于存储操作系统413、应用程序414和其他程序模块415的大容量存储设备407。
基本输入/输出系统406包括有用于显示信息的显示器408和用于用户输入信息的诸如鼠标、键盘之类的输入设备409。其中显示器408和输入设备409都通过连接到系统总线405的输入输出控制器410连接到中央处理单元401。基本输入/输出系统406还可以包括输入输出控制器410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器410还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备407通过连接到系统总线405的大容量存储控制器(未示出)连接到中央处理单元401。大容量存储设备407及其相关联的计算机可读介质为存储设备400提供非易失性存储。也就是说,大容量存储设备407可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器404和大容量存储设备407可以统称为存储器。
根据本申请的各种实施例,存储设备400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即存储设备400可以通过连接在系统总线405上的网络接口单元411连接到网络412,或者说,也可以使用网络接口单元411来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。所述一个或者一个以上程序包含用于进行本申请实施例提供的数据存储方法。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行上述图1所示实施例提供的数据存储方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图1所示实施例提供的数据存储方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (19)
1.一种数据存储方法,其特征在于,所述方法包括:
从数据源获取多条数据,每条数据携带时间戳;
根据所述每条数据的时间戳,对所述多条数据进行分类处理,得到多组数据;
对所述多组数据中的每组数据进行聚合统计,得到多个聚合数据,其中,所述多个聚合数据包括多个第一高聚合数据、多个第二高聚合数据和多个第一低聚合数据;
获取每个聚合数据中的行健,所述每个聚合数据的行健是在聚合统计时生成的,用于指示所述每个聚合数据对应的时间层级和数据属性;
将所述多个第一高聚合数据和所述多个第二高聚合数据中行健相同的高聚合数据进行合并,得到多个第三高聚合数据;
对于所述多个第三高聚合数据中的每个第三高聚合数据,查询高层级数据处理单元的内存中是否存储有与所述每个第三高聚合数据的行健相同的数据;
当所述高层级数据处理单元的内存中存储有与所述每个第三高聚合数据的行健相同的数据时,将查询到的数据与所述每个第三高聚合数据进行合并,将合并后的数据存储至所述高层级数据处理单元的内存中;
基于每个第一低聚合数据中的行健,通过低层级数据处理单元对所述多个第一低聚合数据进行存储。
2.如权利要求1所述的方法,其特征在于,所述根据所述每条数据的时间戳,对所述多条数据进行分类处理,包括:
从所述多条数据的时间戳中获取最新时间;
确定包含所述最新时间且区间长度为预设阈值的目标时间区间;
根据所述每条数据的时间戳和所述目标时间区间,对所述多条数据进行分类处理。
3.如权利要求2所述的方法,其特征在于,所述确定包含所述最新时间且区间长度为预设阈值的目标时间区间,包括:
当所述最新时间处于预先存储的区间长度为所述预设阈值的时间区间内时,将所述时间区间确定为所述目标时间区间;
当所述最新时间大于所述时间区间的右值时,确定所述最新时间与所述时间区间的右值之间的时间差值;确定所述时间区间的左值与所述时间差值之间的时间和;将所述时间区间的右值更新为所述最新时间,以及将所述时间区间的左值更新为所述时间和;将更新后的时间区间确定为所述目标时间区间。
4.如权利要求2或3所述的方法,其特征在于,所述根据所述每条数据的时间戳和所述目标时间区间,对所述多条数据进行分类处理,包括:
将所述多条数据中时间戳指示的时间小于所述目标时间区间左值的数据确定为高层级数据,以及将所述多条数据中时间戳指示的时间处于所述目标时间区间内的数据确定为低层级数据。
5.如权利要求4所述的方法,其特征在于,当所述每条数据的时间戳指示的时间均包括年、月、日、时、分、秒多个时间粒度,所述目标时间区间以日为时间粒度时,所述对所述多组数据中的每组数据进行聚合统计,得到多个聚合数据,包括:
基于年、月、日三个时间粒度,按照不同的时间层级和数据属性,对所述高层级数据进行聚合统计,得到所述多个第一高聚合数据,以及基于年、月、日、时、分、秒六个时间粒度,按照不同的时间层级和数据属性,对所述低层级数据进行聚合统计,得到所述多个第二高聚合数据和所述多个第一低聚合数据,不同时间层级包括不同维度的时间粒度。
6.如权利要求1所述的方法,其特征在于,所述查询高层级数据处理单元的内存中是否存储有与所述每个第三高聚合数据的行健相同的数据之后,还包括:
当所述高层级数据处理单元的内存中未存储有与所述每个第三高聚合数据的行健相同的数据时,从所述高层级数据处理单元的磁盘中获取与所述每个第三高聚合数据的行健相同的数据;
将获取的数据与所述每个第三高聚合数据进行合并,将合并后的数据存储至所述高层级数据处理单元的内存中。
7.如权利要求1所述的方法,其特征在于,所述多个聚合数据还包括第二低聚合数据,所述基于每个第一低聚合数据中的行健,通过低层级数据处理单元对所述多个第一低聚合数据进行存储,包括:
将所述多个第一低聚合数据中行健相同的第一低聚合数据进行合并,得到所述多个第二低聚合数据;
对于所述多个第二低聚合数据中的每个第二低聚合数据,查询所述低层级数据处理单元的内存中是否存储有与所述每个第二低聚合数据的行健相同的数据;
当所述低层级数据处理单元的内存中存储有与所述每个第二低聚合数据的行健相同的数据时,将查询到的数据与所述每个第二低聚合数据进行合并,将合并后的数据存储至所述低层级数据处理单元的内存中。
8.如权利要求7所述的方法,其特征在于,所述查询所述低层级数据处理单元的内存中是否存储有与所述每个第二低聚合数据的行健相同的数据之后,还包括:
当所述低层级数据处理单元的内存中未存储有与所述每个第二低聚合数据的行健相同的数据时,从所述低层级数据处理单元的磁盘中获取与所述每个第二低聚合数据的行健相同的数据;
将获取的数据与所述每个第二低聚合数据进行合并,将合并后的数据存储至所述低层级数据处理单元的内存中。
9.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述高层级数据处理单元的内存中的数据量达到预设数量阈值,或者所述低层级数据处理单元的内存中的数据量达到所述预设数量阈值时,将所述高层级数据处理单元的内存中的数据存储至所述高层级数据处理单元的磁盘中,以及将所述低层级数据处理单元的内存中的数据存储至所述低层级数据处理单元的磁盘中。
10.一种数据存储装置,其特征在于,所述装置包括:
获取模块,用于从数据源获取多条数据,每条数据携带时间戳;
分类处理模块,用于根据所述每条数据的时间戳,对所述多条数据进行分类处理,得到多组数据;
聚合统计模块,用于对所述多组数据中的每组数据进行聚合统计,得到多个聚合数据,其中,所述多个聚合数据包括多个第一高聚合数据、多个第二高聚合数据和多个第一低聚合数据;
分类存储模块,用于:
获取每个聚合数据中的行健,所述每个聚合数据的行健是在聚合统计时生成的,用于指示所述每个聚合数据对应的时间层级和数据属性;
将所述多个第一高聚合数据和所述多个第二高聚合数据中行健相同的高聚合数据进行合并,得到多个第三高聚合数据;
对于所述多个第三高聚合数据中的每个第三高聚合数据,查询高层级数据处理单元的内存中是否存储有与所述每个第三高聚合数据的行健相同的数据;
当所述高层级数据处理单元的内存中存储有与所述每个第三高聚合数据的行健相同的数据时,将查询到的数据与所述每个第三高聚合数据进行合并,将合并后的数据存储至所述高层级数据处理单元的内存中;
基于每个第一低聚合数据中的行健,通过低层级数据处理单元对所述多个第一低聚合数据进行存储,其中,每个数据处理单元中存储的聚合数据的类型相同。
11.如权利要求10所述的装置,其特征在于,所述分类处理模块用于:
从所述多条数据的时间戳中获取最新时间;
确定包含所述最新时间且区间长度为预设阈值的目标时间区间;
根据所述每条数据的时间戳和所述目标时间区间,对所述多条数据进行分类处理。
12.如权利要求11所述的装置,其特征在于,所述分类处理模块用于:
当所述最新时间处于预先存储的区间长度为所述预设阈值的时间区间内时,将所述时间区间确定为所述目标时间区间;
当所述最新时间大于所述时间区间的右值时,确定所述最新时间与所述时间区间的右值之间的时间差值;确定所述时间区间的左值与所述时间差值之间的时间和;将所述时间区间的右值更新为所述最新时间,以及将所述时间区间的左值更新为所述时间和;将更新后的时间区间确定为所述目标时间区间。
13.如权利要求11或12所述的装置,其特征在于,所述分类处理模块用于:
将所述多条数据中时间戳指示的时间小于所述目标时间区间左值的数据确定为高层级数据,以及将所述多条数据中时间戳指示的时间处于所述目标时间区间内的数据确定为低层级数据。
14.如权利要求13所述的装置,其特征在于,所述聚合统计模块用于:
当所述每条数据的时间戳指示的时间均包括年、月、日、时、分、秒多个时间粒度,所述目标时间区间以日为时间粒度时,基于年、月、日三个时间粒度,按照不同的时间层级和数据属性,对所述高层级数据进行聚合统计,得到所述多个第一高聚合数据,以及基于年、月、日、时、分、秒六个时间粒度,按照不同的时间层级和数据属性,对所述低层级数据进行聚合统计,得到所述多个第二高聚合数据和所述多个第一低聚合数据,不同时间层级包括不同维度的时间粒度。
15.如权利要求10所述的装置,其特征在于,所述分类存储模块用于:
当所述高层级数据处理单元的内存中未存储有与所述每个第三高聚合数据的行健相同的数据时,从所述高层级数据处理单元的磁盘中获取与所述每个第三高聚合数据的行健相同的数据;
将获取的数据与所述每个第三高聚合数据进行合并,将合并后的数据存储至所述高层级数据处理单元的内存中。
16.如权利要求10所述的装置,其特征在于,所述多个聚合数据还包括多个第二低聚合数据,所述分类存储模块用于:
将所述多个第一低聚合数据中行健相同的第一低聚合数据进行合并,得到所述多个第二低聚合数据;
对于所述多个第二低聚合数据中的每个第二低聚合数据,查询所述低层级数据处理单元的内存中是否存储有与所述每个第二低聚合数据的行健相同的数据;
当所述低层级数据处理单元的内存中存储有与所述每个第二低聚合数据的行健相同的数据时,将查询到的数据与所述每个第二低聚合数据进行合并,将合并后的数据存储至所述低层级数据处理单元的内存中。
17.如权利要求16所述的装置,其特征在于,所述分类存储模块用于:
当所述低层级数据处理单元的内存中未存储有与所述每个第二低聚合数据的行健相同的数据时,从所述低层级数据处理单元的磁盘中获取与所述每个第二低聚合数据的行健相同的数据;
将获取的数据与所述每个第二低聚合数据进行合并,将合并后的数据存储至所述低层级数据处理单元的内存中。
18.如权利要求10所述的装置,其特征在于,所述分类存储模块用于:
当所述高层级数据处理单元的内存中的数据量达到预设数量阈值,或者所述低层级数据处理单元的内存中的数据量达到所述预设数量阈值时,将所述高层级数据处理单元的内存中的数据存储至所述高层级数据处理单元的磁盘中,以及将所述低层级数据处理单元的内存中的数据存储至所述低层级数据处理单元的磁盘中。
19.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现权利要求1-9所述的任一项方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811204394.7A CN111061758B (zh) | 2018-10-16 | 2018-10-16 | 数据存储方法、装置及存储介质 |
PCT/CN2019/111510 WO2020078395A1 (zh) | 2018-10-16 | 2019-10-16 | 数据存储方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811204394.7A CN111061758B (zh) | 2018-10-16 | 2018-10-16 | 数据存储方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111061758A CN111061758A (zh) | 2020-04-24 |
CN111061758B true CN111061758B (zh) | 2023-10-20 |
Family
ID=70296391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811204394.7A Active CN111061758B (zh) | 2018-10-16 | 2018-10-16 | 数据存储方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111061758B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552722A (zh) * | 2020-05-06 | 2020-08-18 | 山东汇贸电子口岸有限公司 | 粒度数据的处理方法及装置 |
CN111966677B (zh) * | 2020-06-28 | 2024-04-19 | 北京百度网讯科技有限公司 | 数据报表的处理方法、装置、电子设备及存储介质 |
CN112241410A (zh) * | 2020-10-22 | 2021-01-19 | 曙光信息产业(北京)有限公司 | 数据存储方法、数据索引的构建方法、装置、计算机设备 |
CN113010373B (zh) * | 2021-01-25 | 2023-08-22 | 腾讯科技(深圳)有限公司 | 数据监测方法、装置、电子设备及存储介质 |
CN117009755B (zh) * | 2023-10-07 | 2023-12-19 | 国仪量子(合肥)技术有限公司 | 波形数据的处理方法、计算机可读存储介质和电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7165065B1 (en) * | 2000-07-14 | 2007-01-16 | Oracle Corporation | Multidimensional database storage and retrieval system |
CN101533406A (zh) * | 2009-04-10 | 2009-09-16 | 北京锐安科技有限公司 | 一种海量数据查询方法 |
CN103678402A (zh) * | 2012-09-21 | 2014-03-26 | 厦门雅迅网络股份有限公司 | 一种海量数据下数据实时统计的方法 |
US9384203B1 (en) * | 2015-06-09 | 2016-07-05 | Palantir Technologies Inc. | Systems and methods for indexing and aggregating data records |
CN106484875A (zh) * | 2016-10-13 | 2017-03-08 | 广州视源电子科技股份有限公司 | 基于molap的数据处理方法及装置 |
CN106528847A (zh) * | 2016-11-24 | 2017-03-22 | 北京集奥聚合科技有限公司 | 一种海量数据的多维度处理方法及系统 |
CN106569733A (zh) * | 2015-10-12 | 2017-04-19 | 北京国双科技有限公司 | 缓存数据的处理方法和装置 |
CN106648446A (zh) * | 2015-10-30 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种用于时序数据的存储方法、装置及电子设备 |
CN108446305A (zh) * | 2018-01-30 | 2018-08-24 | 上海天旦网络科技发展有限公司 | 多维度统计业务数据的系统和方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133876B2 (en) * | 2001-06-12 | 2006-11-07 | The University Of Maryland College Park | Dwarf cube architecture for reducing storage sizes of multidimensional data |
US8024287B2 (en) * | 2008-06-27 | 2011-09-20 | SAP France S.A. | Apparatus and method for dynamically materializing a multi-dimensional data stream cube |
US20110093511A1 (en) * | 2009-10-21 | 2011-04-21 | Tapper Gunnar D | System and method for aggregating data |
US9965503B2 (en) * | 2015-08-12 | 2018-05-08 | International Business Machines Corporation | Data cube generation |
US20170061315A1 (en) * | 2015-08-27 | 2017-03-02 | Sas Institute Inc. | Dynamic prediction aggregation |
US10970280B2 (en) * | 2015-10-07 | 2021-04-06 | International Business Machines Corporation | Query plan based on a data storage relationship |
-
2018
- 2018-10-16 CN CN201811204394.7A patent/CN111061758B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7165065B1 (en) * | 2000-07-14 | 2007-01-16 | Oracle Corporation | Multidimensional database storage and retrieval system |
CN101533406A (zh) * | 2009-04-10 | 2009-09-16 | 北京锐安科技有限公司 | 一种海量数据查询方法 |
CN103678402A (zh) * | 2012-09-21 | 2014-03-26 | 厦门雅迅网络股份有限公司 | 一种海量数据下数据实时统计的方法 |
US9384203B1 (en) * | 2015-06-09 | 2016-07-05 | Palantir Technologies Inc. | Systems and methods for indexing and aggregating data records |
CN106569733A (zh) * | 2015-10-12 | 2017-04-19 | 北京国双科技有限公司 | 缓存数据的处理方法和装置 |
CN106648446A (zh) * | 2015-10-30 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种用于时序数据的存储方法、装置及电子设备 |
CN106484875A (zh) * | 2016-10-13 | 2017-03-08 | 广州视源电子科技股份有限公司 | 基于molap的数据处理方法及装置 |
CN106528847A (zh) * | 2016-11-24 | 2017-03-22 | 北京集奥聚合科技有限公司 | 一种海量数据的多维度处理方法及系统 |
CN108446305A (zh) * | 2018-01-30 | 2018-08-24 | 上海天旦网络科技发展有限公司 | 多维度统计业务数据的系统和方法 |
Non-Patent Citations (2)
Title |
---|
一种基于Spark的分布式时态索引方法;郑晓东;王梅;陈德华;张碧莹;;计算机应用与软件(第05期) * |
郑晓东 ; 王梅 ; 陈德华 ; 张碧莹 ; .一种基于Spark的分布式时态索引方法.计算机应用与软件.2018,(第05期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111061758A (zh) | 2020-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
CN108932257B (zh) | 多维度数据的查询方法及装置 | |
CN109241159B (zh) | 一种数据立方体的分区查询方法、系统及终端设备 | |
US11636083B2 (en) | Data processing method and apparatus, storage medium and electronic device | |
CN107301214B (zh) | 在hive中数据迁移方法、装置及终端设备 | |
CN107729399B (zh) | 数据处理的方法和装置 | |
US20240126817A1 (en) | Graph data query | |
TW201800967A (zh) | 分布式流式資料處理的方法和裝置 | |
CN110389967B (zh) | 数据存储方法、装置、服务器及存储介质 | |
CN110704675B (zh) | 对象管理方法、装置、计算机设备和存储介质 | |
CN109815240B (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
US20210064592A1 (en) | Computer storage and retrieval mechanisms using distributed probabilistic counting | |
CN111563115B (zh) | 一种分布式数据库中数据分布信息的统计方法及装置 | |
CN117390011A (zh) | 报表数据处理方法、装置、计算机设备和存储介质 | |
CN114297196B (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN110990394B (zh) | 分布式面向列数据库表的行数统计方法、装置和存储介质 | |
CN115454353A (zh) | 一种面向空间应用数据的高速写入及查询方法 | |
CN109063201B (zh) | 一种基于混合存储方案的impala在线交互式查询方法 | |
CN112035471B (zh) | 一种事务处理方法及计算机设备 | |
CN109933580B (zh) | 训练数据生成方法、装置及服务器 | |
WO2020078395A1 (zh) | 数据存储方法、装置及存储介质 | |
CN114185890B (zh) | 一种数据库检索方法、装置、存储介质及电子设备 | |
CN113177143B (zh) | 时序数据访问方法、装置、存储介质及电子设备 | |
CN111459411B (zh) | 数据迁移方法、装置、设备及存储介质 |
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 |