1.本发明涉及数据处理技术领域,尤其涉及时间序列数据的存储方法及装置。
背景技术:2.本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.内存数据库广泛应用于实时性要求很高的应用场景,如,系统监控、客户体验提升以及交易安全风控中;将时间序列数据以一定结构存储在内存数据库中,使用时直接获取这些数据进行计算加工、统计出需要的指标结果。
4.现有的时间序列数据存储方式存在以下问题:内存存储成本高,当数据量越来越大而后续的指标计算又需要这些数据时,内存数据库使用的内存越来越大、集群规模也越来越大,统计效率降低,成本效益比变低。
技术实现要素:5.本发明实施例提供一种时间序列数据的存储方法,用以节省时间序列数据存储占用的内存,进而能够提高数据存储的可靠性和数据处理的效率,该方法包括:
6.定时从预存储的配置文件中获取整理周期符合预设的处理周期的目标配置信息,所述预存储的配置文件包括:多条配置信息,每条配置信息包括:数据处理类型、唯一对应的键表达式和整理周期,各条配置信息对应的键表达式不同;
7.根据所述目标配置信息的键表达式,从目标数据库中获得多条原始时间序列数据;
8.若所述目标配置信息的数据处理类型唯一,则根据该数据处理类型,得到所述多条原始时间序列数据唯一对应的目标时间序列数据并存储至所述目标数据库中,删除各条原始时间序列数据。
9.进一步地,所述根据所述目标配置信息的键表达式,从目标数据库中获得多条原始时间序列数据,包括:
10.从目标数据库中获得多条主键符合所述键表达式的原始时间序列数据,所述键表达式包括:主键的起始字符。
11.进一步地,所述若所述目标配置信息的数据处理类型唯一,则根据该数据处理类型,得到所述多条原始时间序列数据唯一对应的目标时间序列数据并存储至所述目标数据库中,包括:
12.若所述目标配置信息的数据处理类型为获取值最大的预设条数的原始时间序列数据,则从所述多条原始时间序列数据中获得获取值最大的预设条数的原始时间序列数据确定为所述目标时间序列数据的值,并根据当前日期确定所述目标时间序列数据的键;
13.将所述目标时间序列数据的键值对存储在所述目标数据库中。
14.进一步地,在所述根据所述目标配置信息的键表达式,从目标数据库中获得多条
原始时间序列数据之后,还包括:
15.若所述目标配置信息的数据处理类型为多种,则分别应用各种数据处理类型对所述多条原始时间序列数据进行处理,得到多条目标时间序列数据,所述数据处理类型和目标时间序列数据一一对应;
16.删除各条原始时间序列数据。
17.进一步地,所述的时间序列数据的存储方法,还包括:
18.接收数据处理请求;
19.判断所述目标数据库中是否存在所述数据处理请求对应的原始时间序列数据和目标时间序列数据,若是,则根据所述数据处理请求对应的原始时间序列数据和目标时间序列数据,得到该数据处理请求对应的数据处理结果。
20.本发明实施例还提供一种时间序列数据的存储装置,用以节省时间序列数据存储占用的内存,进而能够提高系统的可靠性,该装置包括:
21.获取模块,用于定时从预存储的配置文件中获取整理周期符合预设的处理周期的目标配置信息,所述预存储的配置文件包括:多条配置信息,每条配置信息包括:数据处理类型、唯一对应的键表达式和整理周期,各条配置信息对应的键表达式不同;
22.提取模块,用于根据所述目标配置信息的键表达式,从目标数据库中获得多条原始时间序列数据;
23.第一存储模块,用于若所述目标配置信息的数据处理类型唯一,则根据该数据处理类型,得到所述多条原始时间序列数据唯一对应的目标时间序列数据并存储至所述目标数据库中,删除各条原始时间序列数据。
24.进一步地,所述提取模块包括:
25.获取单元,用于从目标数据库中获得多条主键符合所述键表达式的原始时间序列数据,所述键表达式包括:主键的起始字符。
26.进一步地,所述第一存储模块包括:
27.确定单元,用于若所述目标配置信息的数据处理类型为获取值最大的预设条数的原始时间序列数据,则从所述多条原始时间序列数据中获得获取值最大的预设条数的原始时间序列数据确定为所述目标时间序列数据的值,并根据当前日期确定所述目标时间序列数据的键;
28.存储单元,用于将所述目标时间序列数据的键值对存储在所述目标数据库中。
29.进一步地,所述的时间序列数据的存储装置,还包括:
30.第二存储模块,用于若所述目标配置信息的数据处理类型为多种,则分别应用各种数据处理类型对所述多条原始时间序列数据进行处理,得到多条目标时间序列数据,所述数据处理类型和目标时间序列数据一一对应;
31.删除模块,用于删除各条原始时间序列数据。
32.本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述时间序列数据的存储方法。
33.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述时间序列数据的存储方法。
34.本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述时间序列数据的存储方法。
35.本发明实施例中的时间序列数据的存储方法及装置,与现有技术中直接将原始时间序列数据存储在数据库中的技术方案相比,通过定时从预存储的配置文件中获取整理周期符合预设的处理周期的目标配置信息,所述预存储的配置文件包括:多条配置信息,每条配置信息包括:数据处理类型、唯一对应的键表达式和整理周期,各条配置信息对应的键表达式不同;根据所述目标配置信息的键表达式,从目标数据库中获得多条原始时间序列数据;若所述目标配置信息的数据处理类型唯一,则根据该数据处理类型,得到所述多条原始时间序列数据唯一对应的目标时间序列数据并存储至所述目标数据库中,删除各条原始时间序列数据,能够将原始时间序列数据进行处理后再存储,能够降低时间序列数据的数据量,能够节省时间序列数据存储占用的内存,进而能够提高数据存储的可靠性和数据处理的效率;具体地,能够避免由于存储压力造成的系统故障,通过提前的数据整理加工,可大大缩小交易数据的存储,大大减少内存使用,同时保证获取到需要数据的时效,能够提高接下来时间序列数据处理的效率。
附图说明
36.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
37.图1是本技术实施例中的时间序列数据的存储方法的流程示意图;
38.图2是本技术另一实施例中的时间序列数据的存储方法的流程示意图;
39.图3是本技术实施例中的时间序列数据的存储方法的步骤301和步骤302的流程示意图;
40.图4是本技术又一实施例中的时间序列数据的存储方法的流程示意图;
41.图5是本技术实施例中的时间序列数据的存储装置的结构示意图;
42.图6是现有技术一种举例中的时间序列数据的存储方法的逻辑示意图;
43.图7是本技术一种举例中的时间序列数据的存储方法的逻辑示意图。
具体实施方式
44.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
45.为了便于对本方案的理解,首先,对与本方案相关的技术内容进行说明。
46.内存数据库:将数据放在内存中直接操作的数据库;相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能;常见的内存数据库有redis、memcached和aerospike等。
47.时序统计或计算:对时间序列数据进行统计和计算,比如,最近两小时的交易总金额,近三天的交易金额最大值或最小值,当月登陆交易的ip归属城市列表等。
48.key:所有的内存数据库都是key-value键值对结构,只是叫法有所不同;在此统一称其键值为key,每个key都有自己初始的ttl(time to live,生命周期)。
49.目前主要有两种方式,对时间序列数据进行存储和处理,从而加工出指标:
50.第一种:当前计算指标可以根据上期计算指标结果和当前交易数据计算得到:
51.tn=f(t
n-1
,dn)
52.其中,t表示指标,d表示交易数据,下标为n表示当前,n-1表示上一次。
53.这类指标有:按天统计的交易笔数、按小时统计的交易金额最大值、上一次登陆时间(设备id、ip所属省份)等。
54.第二种:计算指标须用到前期(不仅一期)交易数据和当前交易数据计算得到:
55.tn=f(d1…
n-1,dn)
56.这类指标有:当前交易ip的归属城市是否在x分钟前的历史ip的归属城市列表中、当前设备是否在x个月内历史设备清单中、最近3月交易金额的平均值。
57.耗费内存最大的是第2种格式,当前的解决方案主要有两种:
58.1、利用时序数据库(time series database,如influxdb)。
59.缺点:大多数此类数据库不成熟,另外需要重新搭建新的数据库环境、对交易数据进行迁移;重新投资建设,成本较大且稳定性无法保障。
60.2、内存数据库保存所有可能用到的明细数据,利用分裂key方式(每个key ttl即time to live不同)或访问时清理过期数据。
61.分裂key方式:比如,最近3个月交易金额的平均值;每月的交易数据放在同一个key里,不同月份的数据在不同的key中;通过设定ttl,3个月前的数据会自动过期清理。
62.访问时清理过期数据:当数据被访问到时,根据数据中记录的时间戳自动清理过期数据。
63.不管哪种方式,当数据统计时间跨度大(如,三月,甚至一年)时,保存这些数据需要耗费大量内存。
64.为了解决上述现有技术中存在的问题,本技术实施例提供一种时间序列数据的存储方法及装置,通过梳理使用到的内存数据库的原始数据结构和保存加工后数据的数据结构并为之设计流转方法、代码实现;开发使用到的整理函数库(包括数据整理用与数据访问用,一般成对实现);形成原子性整理脚本(如内存数据库不支持原子化多个命令,还需扩展开发);在现有基础架构下(仍适用原内存数据库,比较稳定),根据配置表或配置文件,采用提前、定时、按时段计算的方式将原始时间序列数据进行提取、加工、压缩,保留有用的数据,删掉原始数据,以释放内存,提高内存利用率。
65.需要说明的是,本技术公开的时间序列数据的存储方法及装置可用于金融技术领域,也可用于除金融技术领域之外的任意领域,本技术公开的时间序列数据的存储方法及装置的应用领域不做限定。本技术技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
66.为了节省时间序列数据存储占用的内存,进而能够提高数据存储的可靠性和数据处理的效率,本实施例提供一种执行主体是时间序列数据的存储装置的时间序列数据的存储方法,该时间序列数据的存储装置包括但不限于服务器,如图1所示,该方法具体包含有如下内容:
67.步骤101:定时从预存储的配置文件中获取整理周期符合预设的处理周期的目标配置信息,所述预存储的配置文件包括:多条配置信息,每条配置信息包括:数据处理类型、唯一对应的键表达式和整理周期,各条配置信息对应的键表达式不同。
68.具体地,所述配置文件可以根据实际需要预先存储在时间序列数据的存储装置中;在一种举例中,所述配置文件的数据结构可以如表1所示:
69.表1
[0070][0071][0072]
具体地,所述预设的处理周期可以为:每天或每周,如,每周一的零点或者每天的零点;所述整理周期可以为:小时、天、周和月中的一种;若预设的处理周期为每天的零点,则可以从所述预存储的配置文件中获得整理周期为天或小时的配置信息作为目标配置信息;若预设的处理周期为每周一的零点,则可以从所述预存储的配置文件中获得整理周期为周、天和小时中的一种的配置信息作为目标配置信息。
[0073]
步骤102:根据所述目标配置信息的键表达式,从目标数据库中获得多条原始时间序列数据。
[0074]
具体地,所述键表达式用于对时间序列数据进行分类,每条时间序列数据对应的键表达式唯一;所述目标数据库可以是一独立服务器中的内存数据库,如,redis、memcached和aerospike等内存数据库,可以用于实时存储时间序列数据;所述原始时间序列数据可以是目标数据库中目标配置信息的键表达式对应的时间序列数据;时间序列数据可以是在时间上分布的一系列数值,带有时间信息,如时间戳,这些数据按时间顺序收集,用于描述对象随时间变化的情况,如,用户交易数据,可以包括:交易金额和交易ip归属地等,可以理解的是,在执行完成目标用户的交易过程之后,可以将所述目标用户的用户交易数据存储在所述目标数据库中作为时间序列数据。进一步地,为了提高数据传输的效率,可以根据所述目标配置信息的键表达式,确定目标数据库中的多条原始时间序列数据,将原始时序数据压缩后发送至时间序列数据的存储装置中,在时间序列数据的存储装置中解压缩。
[0075]
步骤103:若所述目标配置信息的数据处理类型唯一,则根据该数据处理类型,得到所述多条原始时间序列数据唯一对应的目标时间序列数据并存储至所述目标数据库中,删除各条原始时间序列数据。
[0076]
具体地,目标配置信息的数据处理类型可以包括:min、arvage、max、max(n)、min
(n)、diff等中的至少一个;所述目标时间序列数据可以为哈希结构,目标时间序列数据的键可以为当前日期,目标时间序列数据的值可以为根据数据处理类型对所述多条原始时间序列数据进行处理之后的结果;若所述目标配置信息的数据处理类型唯一,则可以采用原子化执行方式,根据该数据处理类型,得到所述多条原始时间序列数据唯一对应的目标时间序列数据并存储至所述目标数据库中,删除各条原始时间序列数据,以保证存储目标时间序列数据和删除原始时间序列数据均正确执行。
[0077]
为了进一步提高提取原始序列数据的可靠性,参见图2,在本技术一个实施例中,步骤102包括:
[0078]
步骤201:从目标数据库中获得多条主键符合所述键表达式的原始时间序列数据,所述键表达式包括:主键的起始字符。
[0079]
具体地,可以从目标数据库中获得主键的起始字符与所述键表达式中的主键的起始字符相同的原始时间序列数据。
[0080]
为了节省时间序列数据存储占用的内存,参见图3,在本技术一个实施例中,步骤103所述的若所述目标配置信息的数据处理类型唯一,则根据该数据处理类型,得到所述多条原始时间序列数据唯一对应的目标时间序列数据并存储至所述目标数据库中,包括:
[0081]
步骤301:若所述目标配置信息的数据处理类型为获取值最大的预设条数的原始时间序列数据,则从所述多条原始时间序列数据中获得获取值最大的预设条数的原始时间序列数据确定为所述目标时间序列数据的值,并根据当前日期确定所述目标时间序列数据的键。
[0082]
具体地,所述目标配置信息的数据处理类型为获取值最大的预设条数的原始时间序列数据相当于目标配置信息的数据处理类型为max(n);所述预设条数可以根据实际需要进行设置,本技术对此不作限制,如,预设条数为10;所述当前日期可以为当前系统时间对应的日期;所述目标时间序列数据的键可以由其对应的键表达式和当前日期组成。
[0083]
步骤302:将所述目标时间序列数据的键值对存储在所述目标数据库中。
[0084]
为了提高时间序列数据存储的可靠性,在本技术一个实施例中,参见图4,在步骤102之后,还包括:
[0085]
步骤401:若所述目标配置信息的数据处理类型为多种,则分别应用各种数据处理类型对所述多条原始时间序列数据进行处理,得到多条目标时间序列数据,所述数据处理类型和目标时间序列数据一一对应。
[0086]
步骤402:删除各条原始时间序列数据。
[0087]
举例来说,若所述目标配置信息的数据处理类型包括:求最小值min和求平均值arvage,则在所述多条原始时间序列数据完成求最小值处理和求平均值处理之后,在删除所述多条原始时间序列数据。
[0088]
为了提高数据处理的效率,在本技术一个实施例中,在步骤300之后还包括:接收数据处理请求;判断所述目标数据库中是否存在所述数据处理请求对应的原始时间序列数据和目标时间序列数据,若是,则根据所述数据处理请求对应的原始时间序列数据和目标时间序列数据,得到该数据处理请求对应的数据处理结果。
[0089]
具体地,所述数据处理请求可以包含有包括:待处理键表达式及其对应的数据处理类型;可以判断所述目标数据库中是否存在符合所述待处理键表达式的原始时间序列数
据和目标时间序列数据,若是,则根据符合所述待处理键表达式的原始时间序列数据、目标时间序列数据和数据处理类型,得到该数据处理请求对应的数据处理结果;若所述目标数据库中存在符合所述待处理键表达式的原始时间序列数据,不存在目标时间序列数据,则根据符合所述待处理键表达式的原始时间序列数据和数据处理类型,得到该数据处理请求对应的数据处理结果;若所述目标数据库中存在符合所述待处理键表达式的目标时间序列数据,不存在原始时间序列数据,则根据符合所述待处理键表达式的目标时间序列数据和数据处理类型,得到该数据处理请求对应的数据处理结果。
[0090]
为了节省时间序列数据存储占用的内存,进而能够提高数据存储的可靠性和数据处理的效率,本技术提供一种时间序列数据的存储方法的应用实例,具体描述如下:
[0091]
步骤11:将原始交易数据存储至原始交易数据表中,所述原始交易数据包括:交易唯一标识、交易金额和交易时间。
[0092]
具体地,所述交易唯一标识可以相当于原始交易数据的键,交易金额、交易时间可以相当于原始交易数据的值value。
[0093]
步骤12:若当前系统时间符合预设的处理周期时,从预存储的配置文件中获取整理周期符合预设的处理周期的目标配置信息;所述预设的处理周期为每天零点,所述目标配置信息中的键表达式为:"keya*",数据处理类型包括:max(10)和arvage。
[0094]
如,当前系统时间为零点,则确定当前系统时间符合预设的处理周期。
[0095]
步骤13:从原始交易数据表中获取交易唯一标识的起始字符为"keya"的原始交易数据。
[0096]
步骤14:根据目标配置信息中的数据处理类型,从原始交易数据中获得交易金额最大的10条原始交易数据作为第一目标交易数据的值,当前日期作为第一目标交易数据的键存储在第一目标交易数据表中,将所述多条原始交易数据中的交易金融的平均值作为第二目标交易数据的值当前日期作为第一目标交易数据的键存储在第二目标交易数据表中。
[0097]
步骤15:删除原始交易数据表中的所述原始交易数据。
[0098]
步骤16:接收交易数据处理请求,所述交易数据处理请求包括:数据处理信息。
[0099]
具体地,数据处理信息可以为获取最近3月交易金额的平均值;
[0100]
步骤17:根据所述交易数据处理请求,从第二目标交易数据表中获得最近3月内的第二目标交易数据;判断所述原始交易数据表交易数据处理请求对应的原始交易数据是否为空,若否,则从所述原始交易数据表中获得所有所述交易数据处理请求对应的原始交易数据。
[0101]
步骤18:根据所述最近3月内的第二目标交易数据和所有交易数据,确定最近3月交易金额的平均值。
[0102]
本发明实施例中还提供了一种时间序列数据的存储装置,如下面的实施例所述。由于该装置解决问题的原理与时间序列数据的存储方法相似,因此该装置的实施可以参见时间序列数据的存储方法的实施,重复之处不再赘述。
[0103]
参见图5,在本技术一个实施例中,所述时间序列数据的存储装置包括:
[0104]
获取模块10,用于定时从预存储的配置文件中获取整理周期符合预设的处理周期的目标配置信息,所述预存储的配置文件包括:多条配置信息,每条配置信息包括:数据处理类型、唯一对应的键表达式和整理周期,各条配置信息对应的键表达式不同;
[0105]
提取模块20,用于根据所述目标配置信息的键表达式,从目标数据库中获得多条原始时间序列数据;
[0106]
第一存储模块30,用于若所述目标配置信息的数据处理类型唯一,则根据该数据处理类型,得到所述多条原始时间序列数据唯一对应的目标时间序列数据并存储至所述目标数据库中,删除各条原始时间序列数据。
[0107]
在本技术一个实施例中,所述提取模块包括:
[0108]
获取单元,用于从目标数据库中获得多条主键符合所述键表达式的原始时间序列数据,所述键表达式包括:主键的起始字符。
[0109]
在本技术一个实施例中,所述第一存储模块包括:
[0110]
确定单元,用于若所述目标配置信息的数据处理类型为获取值最大的预设条数的原始时间序列数据,则从所述多条原始时间序列数据中获得获取值最大的预设条数的原始时间序列数据确定为所述目标时间序列数据的值,并根据当前日期确定所述目标时间序列数据的键;
[0111]
存储单元,用于将所述目标时间序列数据的键值对存储在所述目标数据库中。
[0112]
在本技术一个实施例中,所述的时间序列数据的存储装置,还包括:
[0113]
第二存储模块,用于若所述目标配置信息的数据处理类型为多种,则分别应用各种数据处理类型对所述多条原始时间序列数据进行处理,得到多条目标时间序列数据,所述数据处理类型和目标时间序列数据一一对应;
[0114]
删除模块,用于删除各条原始时间序列数据。
[0115]
为了进一步说明本方案,本技术提出一种时间序列数据的存储装置的应用实例,在本应用实例中,数据提前计算模块实现的功能可以相当于上述获取模块、提取模块和第一存储模块结合实现的功能,该装置具体包含有:
[0116]
数据提前计算模块,用于定时(根据配置文件定义的整理周期的最小粒度,比如每小时)读取配置文件中满足需要进行数据提前计算的key,对key进行整理。
[0117]
如,key a用于“当前设备id是否在x个月内历史设备清单”,这个指标中用于存储x个月内历史设备清单,原始数据会保存所有的交易设备id和时间戳。通过提前计算,转换为key b,其为hash结构,hash的key为日期,值value里面储存这个日期出现过的去重的设备id清单。
[0118]
提前计算完成后,调用内存数据库提供交易一致性保证的脚本(如redis中的lua脚本),删除原key a中的数据并存入key b。
[0119]
数据访问模块,用于当客户端需要获取相应的指标所使用的key时,通过数据访问模块访问内存数据库;数据访问模块将请求转化为访问key a 和key b两个key的数据,整理后返回给客户端。
[0120]
为了进一步说明本方案,结合上述应用实例提供的时间序列数据的存储装置,本技术提供一种时间序列数据的存储方法的应用实例,具体包含有:
[0121]
步骤21:配置人员参数化配置key之间的转化关系表,以及其他字段,存储到持久化的配置文件中(存储方式可以是数据库或文件)。
[0122]
步骤22:数据提前计算模块和数据访问模块加载变更的配置文件到内存中。
[0123]
具体地,可以在每次时间序列数据的存储装置启动时加载。
[0124]
步骤23:key的转化处理,可以根据配置文件中的最小整理周期定期触发本步骤:
[0125]
1)扫描配置文件,读取符合本处理周期处理的所有key记录并按整理周期从小到大依次处理;比如,本处理周期为0点,则处理整理周期为天和小时的记录;如果本处理周期为周一的0点,则处理整理周期为周、天和小时的记录,依次类推
……
[0126]
2)根据配置文件进行整理,形成整理命令并发送给内存数据库执行。
[0127]
(一)读取第一条key记录,扫描内存数据库中所有符合key的表达式keya*的所有key并依次进行如下处理。
[0128]
(二)读取key中所有时间戳为当前时间整点至上一个时间整点的所有记录,得到值为最大的10条记录的列表(即max(10)函数实现的功能,这些函数都可以根据需要开发、添加)。
[0129]
(三)将得到的列表存储到key b中,其记录的hash key为当月(如202108),如果该hash key已有值,则将其和上一步得到的列表进行max(10)运算,最终得到一个最多包含有10条记录的列表作为该hash key的value。
[0130]
(四)将添加hash key和value到key b命令与删除key b中的原始记录的命令组合形成一个完成的整理命令,并将其发送给内存数据库进行原子化执行。
[0131]
(五)如上一个整点至上上个整点也有记录(一般为上一个整理周期未正常处理完成),则也需要重复(二)、(三)、(四)过程,直至第一条配置记录处理完毕。
[0132]
步骤24:数据访问模块接收前端访问key的请求,如果是key a,则除了会取key a中的max(10)记录,也会取符合条件的key b中的max(10)记录(至于hget几个key由前端请求的时间区间决定),并一起运算得到最后的max(10)返回给前端。
[0133]
如图6所示,在现有技术的一种举例中,获取客户a最近三个月(90天)的平均交易金额的过程为:获取客户a四个月内的所有key,过滤掉不合条件的记录,即过滤掉记录“500元2021-12-01 18:06.007”以及“77元2021-12-07 16:22.01986”,进行汇总计算,得到最近三个月(90天)的平均交易金额:avg(86,133,1000,0.6,19,20.1,188,0.6)。
[0134]
如图7所示,在本技术一种举例中,获取客户a最近三个月(90天)的平均交易金额的过程为:获取客户a涉及到的所有key a和key b,过滤掉key b中不合条件的记录,即过滤掉记录“500元2021-12-01”以及“77元2021-12-07”,根据key a和key b进行汇总计算,得到最近三个月(90天)的平均交易金额:avg=sum(86,1133,0.6,19,208.1,0.6)/sum(1,2,1,1,2,1);其中,key b是根据配置按天对key a进行整理后得到的,整理完成后可以删除key b对应的整理前的key a;可以通过key a索引查询到key b,也可以预先设定对应关系,如,key b的主键为“keya_day”,即key a的主键和日期组合。
[0135]
由上述描述可知,本应用实例提供的时间序列数据的存储方法,整理函数库(包括数据整理用与数据访问用,一般成对实现);在整理数据时(添加加工的数据和删除原始数据)要保证原子性。
[0136]
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述时间序列数据的存储方法。
[0137]
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述时间序列数据的存储方法。
[0138]
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述时间序列数据的存储方法。
[0139]
由上述描述可知,本技术提供的时间序列数据的存储方法及装置,能够将原始时间序列数据进行处理后再存储,能够降低时间序列数据的数据量,能够节省时间序列数据存储占用的内存,进而能够提高数据存储的可靠性和数据处理的效率;具体地,能够避免由于存储压力造成的系统故障,通过提前的数据整理加工,可大大缩小交易数据的存储,大大减少内存使用,同时保证获取到需要数据的时效,能够提高接下来时间序列数据处理的效率。
[0140]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0141]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0142]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0143]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0144]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。