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

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

文献发布时间:2023-06-19 19:30:30


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

技术领域

本申请涉及计算机领域,具体而言,涉及一种数据存储方法、装置和存储介质及电子设备。

背景技术

在时序数据的数据存储场景中,由于时序数据数量多、复杂性高,造成存储空间内的时序数据密度大,进而导致存储空间的利用率低下的问题出现。因此,存在数据存储效率较低的问题。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本申请实施例提供了一种数据存储方法、装置和存储介质及电子设备,以至少解决数据存储效率较低的技术问题。

根据本申请实施例的一个方面,提供了一种数据存储方法,包括:获取待存储或已存储的目标时序数据;对上述目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,其中,上述时序数据表用于记录各个时间维度下的时序数据;按照上述至少两个不同时间维度的时序数据表对上述目标时序数据进行降维存储。

根据本申请实施例的另一方面,还提供了一种数据存储装置,包括:获取单元,用于获取待存储或已存储的目标时序数据;处理单元,用于对上述目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,其中,上述时序数据表用于记录各个时间维度下的时序数据;存储单元,用于按照上述至少两个不同时间维度的时序数据表对上述目标时序数据进行降维存储。

作为一种可选的方案,上述处理单元,包括:第一处理模块,用于利用第一时间维度对上述目标时序数据进行时间降维处理,得到上述第一时间维度的第一时序数据表;第一获取模块,用于从上述第一时序数据表中获取上述第一时序数据表中记录的第一时序数据;第二处理模块,用于利用第二时间维度对上述第一时序数据进行时间降维处理,得到上述第二时间维度的第二时序数据表,其中,上述第二时序数据表中记录有第二时序数据。

作为一种可选的方案,上述第一处理模块,包括:第一聚合子模块,用于以第一时间单位对上述目标时序数据进行划分,并对划分后的目标时序数据进行聚合处理,得到多条第一时序数据集,其中,上述第一时序数据表中记录有上述多条第一时序数据集;上述第二处理模块,包括:第二聚合子模块,用于以第二时间单位对上述多条第一时序数据集进行划分,并对划分后的第一时序数据集进行聚合处理,得到多条第二时序数据集,其中,上述第二时序数据表中记录有上述多条第二时序数据集,其中,上述第二时间单位大于上述第一时间单位。

作为一种可选的方案,上述获取单元,包括:第二获取模块,用于获取已存储至第一数据库的第三时序数据,其中,上述目标时序数据包括上述第三时序数据,上述第三时序数据的数据格式为上述第一数据库匹配的第一存储数据格式;上述装置还包括:转换模块,用于在上述按照上述至少两个不同时间维度的时序数据表对上述目标时序数据进行降维存储之前,将上述第三时序数据的数据格式转换为第二数据库匹配的第二存储数据格式;上述存储单元,包括:存储模块,用于按照上述至少两个不同时间维度的时序数据表将上述第二存储数据格式的第三时序数据存储至上述第二数据库。

作为一种可选的方案,上述转换模块,包括:获取子模块,用于获取上述第二存储数据格式对应的第一数据结构;组装子模块,用于利用上述第一数据结构对上述第三时序数据的第二数据结构进行组装,得到上述第二存储数据格式的第三时序数据。

作为一种可选的方案,上述装置还包括:清理模块,用于在上述对上述目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表的过程中,对上述至少两个不同时间维度的时序数据表中的各个时序数据表设置过期时间,并在达到上述过期时间的情况下,对上述时序数据表进行清理。

作为一种可选的方案,上述装置还包括:显示模块,用于在上述对上述目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表之后,建立上述至少两个不同时间维度的时序数据表中的各个时序数据表对应的物化视图,并利用上述物化视图显示上述各个时间维度下的时序数据。

根据本申请实施例的又一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上数据存储方法。

根据本申请实施例的又一方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的数据存储方法。

在本申请实施例中,获取待存储或已存储的目标时序数据;对上述目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,其中,上述时序数据表用于记录各个时间维度下的时序数据;按照上述至少两个不同时间维度的时序数据表对上述目标时序数据进行降维存储;

利用上述数据存储方法,将获取到的时序诗句进行时间降维处理,得到重构改造后的多个不同时间维度的时序数据表,并基于多个不同时间维度的时序数据表进行时序数据的降维存储,进而达到了降低时序数据存储密度的目的,提高了时序数据存储空间的利用率,从而实现了提高数据存储的效率的技术效果,进而解决了数据存储效率较低的技术问题;

另,利用上述数据存储方法,通过提供多个不同时间维度的时序数据表,进而达到了减少时序数据存储量的过程中保证时序数据的精度的目的,从而实现了保障时序数据的准确性与降低时序数据的查询复杂度的技术效果。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例的一种可选的数据存储方法的应用环境的示意图;

图2是根据本申请实施例的一种可选的数据存储方法的流程的示意图;

图3是根据本申请实施例的一种可选的数据存储方法的示意图;

图4是根据本申请实施例的另一种可选的数据存储方法的示意图;

图5是根据本申请实施例的另一种可选的数据存储方法的示意图;

图6是根据本申请实施例的一种可选的数据存储装置的示意图;

图7是根据本申请实施例的一种可选的电子设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本申请实施例的一个方面,提供了一种数据存储方法,可选地,作为一种可选的实施方式,上述数据存储方法可以但不限于应用于如图1所示的环境中。其中,可以但不限于包括用户设备102以及服务器112,该用户设备102上可以但不限于包括显示器108、处理器106及存储器104,该服务器112包括数据库114以及处理引擎116。

具体过程可如下步骤:

步骤S102,用户设备102获取待存储或已存储的目标时序数据;

步骤S104-S106,通过网络110将目标时序数据发送至服务器112;

步骤S108,服务器112通过处理引擎对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,其中,时序数据表用于记录各个时间维度下的时序数据;

步骤S110,服务器112通过处理引擎按照至少两个不同时间维度的时序数据表对目标时序数据进行降维存储;

步骤S112-S114,通过网络110将对目标时序数据进行降维存储后对应的降维存储结果发送至用户设备102,用户设备102将目标时序数据的降维存储结果显示在显示器108,并将上述降维存储结果存储在存储器104。

除图1示出的示例之外,上述步骤可以由客户端、或服务器独立完成,也可以由客户端和服务器共同完成,如由客户端执行对目标时序数据的时间降维处理、降维存储等步骤,从而减轻服务器的处理压力。该用户设备102包括但不限于手持设备(如手机)、笔记本电脑、台式电脑、车载设备等,本申请并不限制用户设备102的具体实现方式。

可选地,作为一种可选的实施方式,如图2所示,数据存储方法包括:

S202,获取待存储或已存储的目标时序数据;

S204,对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,其中,时序数据表用于记录各个时间维度下的时序数据;

S206,按照至少两个不同时间维度的时序数据表对目标时序数据进行降维存储。

可选地,在本实施例中,上述数据存储方法可以但不限于应用在基于ClickHouse的GraphiteMergeTree表进行时序数据处理的应用场景下。可选地,ClickHouse使用GraphiteMergeTree执行引擎来存储时序数据,通过配置文件开启graphite_rollup,可存储Prometheus的数据,其中prometheus的数据格式是key-value格式的,同时GraphiteMergeTree引擎能够减少存储空间和提高Graphite数据的查询效率。

可选地,在本实施例中,上述数据存储方法还可以但不限于应用在基于ClickHouse自建时序表进行时序数据处理的应用场景下。可选地,利用时序表中需包含时间、过滤等条件的特性,建立时序表的语法格式:TAG字段、VALUE字段(必须是数值型)、对底层存储的特殊配置(主要是CK的索引和参数)。除了用户指定的字段外,还有一个隐含的time字段,专为时序保留。

需要说明的是,基于ClickHouse的GraphiteMergeTree引擎或自建时序表的方式,能够实现对时序数据的存储,但是实际存储过程中存在时序数据数量多、复杂性高,而造成存储空间内的时序数据密度大、以及存储空间的利用率低下的问题出现。因此,存在数据存储效率较低的问题。

对于上述数据存储效率较低的问题,可选地,基于上述数据存储方法,通过Prometheus拉取相应的时序数据并进行处理,通过对remote、storage、adapter源码进行改造,达到时序数据可按照不同的数据表字段进行数据解析与存储的目的。进一步,在ClickHouse中建立一张存储实时原数据的表,并对其设置数据过期时间,做到数据定期清理。

需要说明的是,ClickHouse中的原数据表的数据通过物化视图和ReplicatedReplacingMergeTree引擎方式,建立相应的降维表来降低数据存储密度,从而达到数据降维存储的目的。

利用上述数据存储方法,将获取到的时序诗句进行时间降维处理,得到重构改造后的多个不同时间维度的时序数据表,并基于多个不同时间维度的时序数据表进行时序数据的降维存储,进而达到了降低时序数据存储密度的目的,提高了时序数据存储空间的利用率,从而实现了提高数据存储的效率的技术效果,进而解决了数据存储效率较低的技术问题;

另,利用上述数据存储方法,通过提供多个不同时间维度的时序数据表,进而达到了减少时序数据存储量的过程中保证时序数据的精度的目的,从而实现了保障时序数据的准确性与降低时序数据的查询复杂度的技术效果。

可选地,在本实施例中,目标时序数据可以但不限于为在不同时间上收集到的数据,用于所描述现象随时间变化的情况,可以但不限于用于反映某一事物、现象等随时间的变化状态或程度,可以但不限于用于按不同时间颗粒度对指标数据进行统计分析。

可选地,在本实施例中,目标时序数据可以但不限于包括单变量时序数据集、多元时间序列数据集;其中,单变量时序数据集用于指示只有一个变量的时间序列数据集,例如某地在某段时间内的最低日温度数据集,多元时间序列数据集用于指示包含多个变量的时间序列数据集,例如基于个人的EEG数据预测对应的脑电眼状态的状态数据集。

可选地,在本实施例中,目标时序数据可以但不限于为待存储的时间序列数据,即尚未存储的时间序列数据;目标时序数据还可以但不限于为已存储的时间序列数据,即已经存储的时间序列数据。

需要说明的是,对于尚未存储的目标时序数据,可以但不限于进行时间降维处理后,进行降维存储至指定存储空间;对于已经存储的目标时序数据,可以但不限于从当前存储空间中获取该目标时序数据,并进行时间降维处理、以及降维存储至与当前存储空间不同的指定存储空间。

可选地,在本实施例中,对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,可以但不限于利用第一时间维度对目标时序数据进行时间降维处理,得到第一时间维度的第一时序数据表;从第一时序数据表中获取第一时序数据表中记录的第一时序数据;利用第二时间维度对第一时序数据进行时间降维处理,得到第二时间维度的第二时序数据表,其中,第二时序数据表中记录有第二时序数据。

可选地,在本实施例中,不同时间维度可以但不限于包括第一时间维度、第二时间维度,其中,第二时间维度对应的时间单位大于第一时间维度对应的时间单位。

举例说明,第一时序数据表可以但不限于对应分钟维度,第一时序数据表的确定包括:以10分钟为一条数据,对10分钟内的数据做聚合操作,汇总成一条数据,得到包括多条数据的第一时序数据表,其中,每条数据对应10分钟内的聚合数据;

以及,第二时序数据表可以但不限于对应小时维度,第二时序数据表的确定包括:以1小时为一条数据,对1小时内的数据做聚合操作,汇总成一条数据,得到包括多条数据的第二时序数据表,其中,每条数据对应1小时内的聚合数据。

需要说明的是,第一时序数据表的确定方式,可以但不限于通过物化视图方式,从初始数据库中获取;第二时序数据表的确定方式,可以但不限于通过物化视图方式,基于第一时序数据表中获取。

需要说明的是,在存在对应第三时间维度的第三时序数据表、以及对应第四时间维度的第四时序数据表的情况下,且第三时间维度对应的时间单位大于第二时间维度对应的时间单位,第四时间维度对应的时间单位大于第三时间维度对应的时间单位,作为一种可选的方案,第三时序数据表的确定方式,可以但不限于通过物化视图方式,基于第二时序数据表中获取;以及,第四时序数据表的确定方式,可以但不限于通过物化视图方式,基于第三时序数据表中获取。

进一步举例说明,如图3所示,一种可选的数据存储方法,包括:

步骤S302,在获取到待处理的目标时序数据3002的情况下,基于目标时序数据3002执行第一时间降维处理,以得到第一时间维度对应的第一时序数据表3004;

需要说明的是,目标时序数据3002可以但不限于为待存储或已存储的时序数据;

步骤S304,在获取到第一时序数据表3004的情况下,基于第一时序数据表3004执行第二时间降维处理,以得到第二时间维度对应的第二时序数据表3006;

需要说明的是,第二时间维度对应的时间单位大于第一时间维度对应的时间单位,例如,在第一时间维度对应分钟维度的情况下,第二时间维度对应小时维度或天数维度等;

步骤S306,在获取到第一时序数据表3004、以及第二时序数据表3006的情况下,按照上述不同时间维度的时序数据表对目标时序数据进行降维存储;

需要说明的是,本实施例中实际并不限定不同时间维度的时序数据表的具体数量,可以理解的是,不同时间维度的时序数据表,至少包括上述第一时序数据表3004、以及第二时序数据表3006在内的两个时序数据表。

通过本申请提供的实施例,获取待存储或已存储的目标时序数据;对上述目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,其中,上述时序数据表用于记录各个时间维度下的时序数据;按照上述至少两个不同时间维度的时序数据表对上述目标时序数据进行降维存储;利用上述数据存储方法,将获取到的时序诗句进行时间降维处理,得到重构改造后的多个不同时间维度的时序数据表,并基于多个不同时间维度的时序数据表进行时序数据的降维存储,进而达到了降低时序数据存储密度的目的,提高了时序数据存储空间的利用率,从而实现了提高数据存储的效率的技术效果,进而解决了数据存储效率较低的技术问题;另,利用上述数据存储方法,通过提供多个不同时间维度的时序数据表,进而达到了减少时序数据存储量的过程中保证时序数据的精度的目的,从而实现了保障时序数据的准确性与降低时序数据的查询复杂度的技术效果。

作为一种可选的方案,对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,包括:

S1,利用第一时间维度对目标时序数据进行时间降维处理,得到第一时间维度的第一时序数据表;

S2,从第一时序数据表中获取第一时序数据表中记录的第一时序数据;

S3,利用第二时间维度对第一时序数据进行时间降维处理,得到第二时间维度的第二时序数据表,其中,第二时序数据表中记录有第二时序数据。

可选地,在本实施例中,不同时间维度的时序数据表包括第一时间维度的第一时序数据表、第二时间维度的第二时序数据表,其中,第二时间维度对应的时间单位大于第一时间维度对应的时间单位,例如,在第一时间维度对应分钟维度的情况下,第二时间维度对应小时维度或天数维度等。

可选地,在利用第一时间维度对目标时序数据进行时间降维处理,得到第一时间维度的第一时序数据表之后,基于第一时序数据表中记录的第一时序数据,利用第二时间维度对第一时序数据进行时间降维处理,得到第二时间维度的第二时序数据表。

需要说明的是,利用第二时间维度对第一时序数据进行时间降维处理,得到第二时间维度的第二时序数据表之后,基于第二时序数据表中记录的第二时序数据,利用第三时间维度对第二时序数据进行时间降维处理,得到第三时间维度的第三时序数据表,其中,第三时间维度对应的时间单位大于第二时间维度对应的时间单位,例如,在第二时间维度对应小时维度的情况下,第三时间维度对应天数维度或月数维度等。

进一步举例说明,如表1所示,10分钟表的确定方式,是在分钟维度上通过物化视图方式,从初始数据表中获取数据,并以十分钟作为第一时间单位,对十分钟内的数据做聚合操作,汇总成一条数据集,进而得到多条数据集,从而确定包括上述多条数据集的10分钟表,其中,10分钟表的数据存储时间为1个月。

如表1所示,1小时表的确定方式,可以为在小时维度上通过物化视图方式,从10分钟表中获取数据,并以1小时作为第二时间单位,对1小时内的数据做聚合操作,汇总成一条数据集,进而得到多条数据集,从而确定包括上述多条数据集的1小时表,其中,1小时表的数据存储时间为3个月。

如表1所示,4小时维度的确定方式,还可以为在小时维度上通过物化视图方式,从1小时表中获取数据,并以4小时作为第三时间单位,对4小时内的数据做聚合操作,汇总成一条数据集,进而得到多条数据集,从而确定包括上述多条数据集的4小时表,其中,4小时表的数据存储时间为6个月。

如表1所示,1天表的确定方式,是在天数维度上通过物化视图方式,从4小时表中获取数据,并以1天作为第四时间单位,对1天内的数据做聚合操作,汇总成一条数据集,进而得到多条数据集,从而确定包括上述多条数据集的1天表,其中,1天表的数据存储时间为1年。

表1

需要说明的是,利用上述数据存储方法,将获取到的时序诗句进行时间降维处理,得到重构改造后的多个不同时间维度的时序数据表,并基于多个不同时间维度的时序数据表进行时序数据的降维存储,进而达到了降低时序数据存储密度的目的,提高了时序数据存储空间的利用率,从而实现了提高数据存储的效率的技术效果,进而解决了数据存储效率较低的技术问题;

需要说明的是,每个表的数据的时间颗粒度不同,用户可查询出针对不同时长和步长的数据,进而用户能够根据自身需求,基于适合的时间维度,进行数据查询操作,从而实现了降低时序数据的查询复杂度、以及提高时序数据的查询效率的技术效果。

通过本申请提供的实施例,利用第一时间维度对目标时序数据进行时间降维处理,得到第一时间维度的第一时序数据表;从第一时序数据表中获取第一时序数据表中记录的第一时序数据;利用第二时间维度对第一时序数据进行时间降维处理,得到第二时间维度的第二时序数据表,其中,第二时序数据表中记录有第二时序数据。在基于多个不同时间维度的时序数据表进行时序数据的降维存储,而达到降低时序数据存储密度的目的,以及提高时序数据存储空间的利用率的基础上,还通过层次递进的时序数据表的建立方式,提高了用户进行数据操作的操作效率。

作为一种可选的方案,利用第一时间维度对目标时序数据进行时间降维处理,得到第一时间维度的第一时序数据表,包括:

S1,以第一时间单位对目标时序数据进行划分,并对划分后的目标时序数据进行聚合处理,得到多条第一时序数据集,其中,第一时序数据表中记录有多条第一时序数据集;

利用第二时间维度对第一时序数据进行时间降维处理,得到第二时间维度的第二时序数据表,包括:

S2,以第二时间单位对多条第一时序数据集进行划分,并对划分后的第一时序数据集进行聚合处理,得到多条第二时序数据集,其中,第二时序数据表中记录有多条第二时序数据集,其中,第二时间单位大于第一时间单位。

通过本申请提供的实施例,以第一时间单位对目标时序数据进行划分,并对划分后的目标时序数据进行聚合处理,得到多条第一时序数据集,其中,第一时序数据表中记录有多条第一时序数据集;以第二时间单位对多条第一时序数据集进行划分,并对划分后的第一时序数据集进行聚合处理,得到多条第二时序数据集,其中,第二时序数据表中记录有多条第二时序数据集,其中,第二时间单位大于第一时间单位。在基于多个不同时间维度的时序数据表进行时序数据的降维存储,而达到降低时序数据存储密度的目的,以及提高时序数据存储空间的利用率的基础上,还通过层次递进的数据聚合处理以及时序数据表的建立,提高了用户进行数据操作的操作效率。

作为一种可选的方案,获取待存储或已存储的目标时序数据,包括:

S1,获取已存储至第一数据库的第三时序数据,其中,目标时序数据包括第三时序数据,第三时序数据的数据格式为第一数据库匹配的第一存储数据格式;

在按照至少两个不同时间维度的时序数据表对目标时序数据进行降维存储之前,方法还包括:

S2,将第三时序数据的数据格式转换为第二数据库匹配的第二存储数据格式;

按照至少两个不同时间维度的时序数据表对目标时序数据进行降维存储,包括:

S3,按照至少两个不同时间维度的时序数据表将第二存储数据格式的第三时序数据存储至第二数据库。

可选地,在本实施例中,目标时序数据可以但不限于为已存储至第一数据库的第三时序数据,其中,第三时序数据的数据格式为第一数据库匹配的第一存储数据格式。

可选地,在本实施例中,在对第三时序数据进行降维存储之前,对第三时序数据的数据格式进行转换,转换为第二数据库匹配的第二存储数据格式,其中,第二数据库为用于存储降维处理后的第三时序数据。

可选地,在本实施例中,对第三时序数据的数据格式进行转换,可以但不限于基于第二存储数据格式对应的第一数据结构,对第三时序数据的第二数据结构进行组装,进而得到第二存储格式的第三时序数据。

通过本申请提供的实施例,获取已存储至第一数据库的第三时序数据,其中,目标时序数据包括第三时序数据,第三时序数据的数据格式为第一数据库匹配的第一存储数据格式;将第三时序数据的数据格式转换为第二数据库匹配的第二存储数据格式;按照至少两个不同时间维度的时序数据表将第二存储数据格式的第三时序数据存储至第二数据库。对于已存储的目标时序数据,进行数据获取以及存储格式的转换之后,进而执行降维存储,防止了直接降维存储导致数据格式与存储空间格式不兼容的问题,实现了提高数据存储的效率的技术效果。

作为一种可选的方案,将第三时序数据的数据格式转换为第二数据库匹配的第二存储数据格式,包括:

S1,获取第二存储数据格式对应的第一数据结构;

S2,利用第一数据结构对第三时序数据的第二数据结构进行组装,得到第二存储数据格式的第三时序数据。

通过本申请提供的实施例,获取第二存储数据格式对应的第一数据结构;利用第一数据结构对第三时序数据的第二数据结构进行组装,得到第二存储数据格式的第三时序数据,防止了直接降维存储导致数据格式与存储空间格式不兼容的问题,实现了提高数据存储的效率的技术效果。

作为一种可选的方案,在对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表的过程中,方法还包括:

S1,对至少两个不同时间维度的时序数据表中的各个时序数据表设置过期时间,并在达到过期时间的情况下,对时序数据表进行清理。

需要说明的是,在对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表的过程中,对至少两个不同时间维度的时序数据表中的各个时序数据表设置过期时间,并在达到过期时间的情况下,对时序数据表进行清理。

进一步举例说明,如上述表1所示,10分钟表的数据存储时间(过期时间)为1个月,1小时表的过期时间为3个月,4小时表的过期时间为6个月,1天表的过期时间为1年。

通过本申请提供的实施例,对至少两个不同时间维度的时序数据表中的各个时序数据表设置过期时间,并在达到过期时间的情况下,对时序数据表进行清理。进而达到时序数据的时效性的目的,以及降低存储空间的数据存储压力,从而实现了提高数据存储的效率的技术效果。

作为一种可选的方案,在对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表之后,方法还包括:

S1,建立至少两个不同时间维度的时序数据表中的各个时序数据表对应的物化视图,并利用物化视图显示各个时间维度下的时序数据。

可选地,在本实施例中,物化视图可以但不限于用于获取、存储以及显示各个时间维度下的时序数据。

需要说明的是,本实施例并不限制物化视图的具体创建方式、查询冲洗方式、刷新方式、日志建立方式、分区方式等操作。

通过本申请提供的实施例,建立至少两个不同时间维度的时序数据表中的各个时序数据表对应的物化视图,并利用物化视图显示各个时间维度下的时序数据。

作为一种可选的方案,将上述数据存储方法应用在基于ClickHouse的复杂时间序列的数据存储降维场景下,以实现对于复杂时间序列数据的存储以及实时查询数据时,通过数据存储降维技术达到查询分析数据时的高效性、可靠性、准确性。如图4所示,具体步骤包括:

步骤1,基于原始的时序数据402(metric数据)生成目标实例404;

步骤2,Prometheus模块408基于Exporter模块,以pull的方式拉取目标实例404的数据;

步骤3,在Prometheus模块获取上述数据后,通过Adapter410将上述数据远端存储到ClickHouse模块412;

需要说明的是,Adapter模块410用于转换Prometheus模块408发送的数据,按照ClickHouse模块412中的数据库表字段的结构进行数据转换,并组装成相应的数据结构数据;

需要说明的是,在ClickHouse模块412接收到上述Adapter模块410转换格式后的数据后,将上述处理后的数据存储到Oodata表414中,数据为原始数据,并设置TTL过期时间;

需要说明的是,在ClickHouse模块412中,建立物化视图及对应的不同时间维度的降维表,通过物化视图方式对Odata表412的数据按照时间维度一级一级的进行数据降维,得到降维表416;

需要说明的是,降维表416通过ReplicatedReplacingMergeTree引擎方式对数据做降维处理,设置不同的主键合并策略,从而做到把相同合并策略的数据进行合并,从而达到数据降维;

还需要说明的是,用户可通过简单SQL查询不同降维表的数据,每个表的数据的时间颗粒度不同,可查询出针对不同时长和步长的历史数据。

可选地,在本实施例中,由于时序数据的一大特点为按不同时间颗粒度对指标数据进行统计分析,则利用上述数据存储方法,按照不同时间维度存储数据可大大提高数据查询效率。同时此方案在服务器少、集群节点少的场景下有明显的优势,方案中包括提前预聚合相关数据,做到减少数据存储空间,同时减少可能由于数据表过大而出现的查询效率问题,在不降低数据精度与质量的前提下,完成了对复杂时间序列数据存储的降维处理。

作为一种可选的方案,将上述数据存储方法应用在基于ClickHouse的复杂时间序列的数据存储降维模块中,如图5所示,上述数据存储降维模块包括数据采集组件502、Adapter组件504、以及ClickHouse组件506。

其中,数据采集组件502用于通过Prometheus拉取目标实例的指标数据;Adapter组件504用于转换Prometheus发送的数据,对时序数据的数据结构进行转换;ClickHouse组件506:是对存储的数据进行不同维度的降维处理,具体的不同维度表的说明如上述表1所示,本实施例不做赘述。

需要说明的是,Adapter组件504可以但不限于用于:

Remote_Storage_Adapter数据结构处理设计。

需要说明的是,ClickHouse组件506中可以但不限于:

包括转换格式后的Odata数据表以及各个时间维度对应的物化视图和降维表。

需要说明的是,针对remote_storage_adapter源码进行改造,实现与ClickHouse数据库时序表中的列字段一一对应,做到Prometheus拉取的时间序列数据以ClickHouse表的字段进行解析,达到按照不同类型、不同数值、不同标签存储时间序列数据的目的。

采用ClickHouse的物化视图和ReplicatedReplacingMergeTree引擎方式,实现在较少集群节点下,对数据进行降维存储,从而实现数据高吞吐写入、高效实时查询、降低存储空间以及降低高成本部署。

可以理解的是,在本申请的具体实施方式中,涉及到用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

根据本申请实施例的另一个方面,还提供了一种用于实施上述数据存储方法的数据存储装置。如图6所示,该装置包括:

获取单元602,用于获取待存储或已存储的目标时序数据;

处理单元604,用于对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,其中,时序数据表用于记录各个时间维度下的时序数据;

存储单元606,用于按照至少两个不同时间维度的时序数据表对目标时序数据进行降维存储。

具体实施例可以参考上述数据存储装置中所示示例,本示例中在此不再赘述。

作为一种可选的方案,上述处理单元604,包括:

第一处理模块,用于利用第一时间维度对目标时序数据进行时间降维处理,得到第一时间维度的第一时序数据表;

第一获取模块,用于从第一时序数据表中获取第一时序数据表中记录的第一时序数据;

第二处理模块,用于利用第二时间维度对第一时序数据进行时间降维处理,得到第二时间维度的第二时序数据表,其中,第二时序数据表中记录有第二时序数据。

具体实施例可以参考上述数据存储方法中所示示例,本示例中在此不再赘述。

作为一种可选的方案,上述第一处理模块,包括:

第一聚合子模块,用于以第一时间单位对目标时序数据进行划分,并对划分后的目标时序数据进行聚合处理,得到多条第一时序数据集,其中,第一时序数据表中记录有多条第一时序数据集;

上述第二处理模块,包括:

第二聚合子模块,用于以第二时间单位对多条第一时序数据集进行划分,并对划分后的第一时序数据集进行聚合处理,得到多条第二时序数据集,其中,第二时序数据表中记录有多条第二时序数据集,其中,第二时间单位大于第一时间单位。

具体实施例可以参考上述数据存储方法中所示示例,本示例中在此不再赘述。

作为一种可选的方案,上述获取单元602,包括:

第二获取模块,用于获取已存储至第一数据库的第三时序数据,其中,目标时序数据包括第三时序数据,第三时序数据的数据格式为第一数据库匹配的第一存储数据格式;

上述装置还包括:

转换模块,用于在按照至少两个不同时间维度的时序数据表对目标时序数据进行降维存储之前,将第三时序数据的数据格式转换为第二数据库匹配的第二存储数据格式;

上述存储单元606,包括:

存储模块,用于按照至少两个不同时间维度的时序数据表将第二存储数据格式的第三时序数据存储至第二数据库。

具体实施例可以参考上述数据存储方法中所示示例,本示例中在此不再赘述。

作为一种可选的方案,上述转换模块,包括:

获取子模块,用于获取第二存储数据格式对应的第一数据结构;

组装子模块,用于利用第一数据结构对第三时序数据的第二数据结构进行组装,得到第二存储数据格式的第三时序数据。

具体实施例可以参考上述数据存储方法中所示示例,本示例中在此不再赘述。

作为一种可选的方案,上述装置还包括:

清理模块,用于在对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表的过程中,对至少两个不同时间维度的时序数据表中的各个时序数据表设置过期时间,并在达到过期时间的情况下,对时序数据表进行清理。

具体实施例可以参考上述数据存储方法中所示示例,本示例中在此不再赘述。

作为一种可选的方案,上述装置还包括:

显示模块,用于在对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表之后,建立至少两个不同时间维度的时序数据表中的各个时序数据表对应的物化视图,并利用物化视图显示各个时间维度下的时序数据。

具体实施例可以参考上述数据存储方法中所示示例,本示例中在此不再赘述。

根据本申请实施例的又一个方面,还提供了一种用于实施上述数据存储方法的电子设备,如图7所示,该电子设备包括存储器702和处理器704,该存储器702中存储有计算机程序,该处理器704被设置为通过计算机程序执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

S1,获取待存储或已存储的目标时序数据;

S2,对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,其中,时序数据表用于记录各个时间维度下的时序数据;

S3,按照至少两个不同时间维度的时序数据表对目标时序数据进行降维存储。

可选地,本领域普通技术人员可以理解,图7所示的结构仅为示意,电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图7其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图7中所示更多或者更少的组件(如网络接口等),或者具有与图7所示不同的配置。

其中,存储器702可用于存储软件程序以及模块,如本申请实施例中的数据存储方法和装置对应的程序指令/模块,处理器704通过运行存储在存储器702内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据存储方法。存储器702可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器702可进一步包括相对于处理器704远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器702具体可以但不限于用于存储目标时序数据、时间维度、时序数据表等信息。作为一种示例,如图7所示,上述存储器702中可以但不限于包括上述数据存储装置中的获取单元602、处理获取单元604、存储单元606。此外,还可以包括但不限于上述数据存储装置中的其他模块单元,本示例中不再赘述。

可选地,上述的传输装置706用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置706包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置706为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。

此外,上述电子设备还包括:显示器708,用于显示上述目标时序数据、时间维度、时序数据表等信息;和连接总线710,用于连接上述电子设备中的各个模块部件。

在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(Peer To Peer,简称P2P)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。

根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序/指令,该计算机程序/指令包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理器执行时,执行本申请实施例提供的各种功能。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,电子设备的计算机系统仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

计算机系统包括中央处理器(Central Processing Unit,CPU),其可以根据存储在只读存储器(Read-Only Memory,ROM)中的程序或者从存储部分加载到随机访问存储器(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器中,还存储有系统操作所需的各种程序和数据。中央处理器、在只读存储器以及随机访问存储器通过总线彼此相连。输入/输出接口(Input/Output接口,即I/O接口)也连接至总线。

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

特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理器执行时,执行本申请的系统中限定的各种功能。

根据本申请的一个方面,提供了一种计算机可读存储介质,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。

可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:

S1,获取待存储或已存储的目标时序数据;

S2,对目标时序数据进行时间降维处理,得到至少两个不同时间维度的时序数据表,其中,时序数据表用于记录各个时间维度下的时序数据;

S3,按照至少两个不同时间维度的时序数据表对目标时序数据进行降维存储。

可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

技术分类

06120115936763