时间序列数据的处理方法和装置与流程

文档序号:11458623阅读:181来源:国知局
时间序列数据的处理方法和装置与流程

本申请涉及存储技术领域,尤其涉及一种时间序列数据的处理方法和装置。



背景技术:

随着互联网技术的快速发展,越来越多的业务可以通过网络实现。在很多业务场景中,需要对用户的业务操作情况进行累计、分析,以预测、预判用户未来的业务倾向。比如:可以累计用户的操作金额以判断是否存在风险;可以累计用户对商品的浏览情况,以预测用户想要购买的商品等。

相关技术中,在对用户的业务数据进行累计、计算时,通常需要先在数据库中查询之前的数据,然后再进行累计、计算等操作,然而,对数据库频繁的读写操作对系统的容量、响应的影响都非常大。



技术实现要素:

有鉴于此,本申请提供一种时间序列数据的处理方法和装置。

具体地,本申请是通过如下技术方案实现的:

一种时间序列数据的处理方法,所述方法包括:

在接收到时间序列数据后,确定所述时间序列数据的时间戳;

判断缓存中是否存在匹配所述时间戳的时间序列缓存桶,所述时间序列缓存桶用于缓存对应业务时段内的时间序列数据,所述业务时段的时长是预设的固定时长;

若缓存中存在匹配所述时间戳的时间序列缓存桶,则将所述时间序列数据更新到所述时间序列缓存桶中;

根据预设的策略将所述时间序列缓存桶中的数据更新到数据库中。

一种时间序列数据的处理装置,所述装置包括:

时间戳确定单元,在接收到时间序列数据后,确定所述时间序列数据的时间戳;

缓存桶判断单元,判断缓存中是否存在匹配所述时间戳的时间序列缓存桶,所述时间序列缓存桶用于缓存对应业务时段内的时间序列数据,所述业务时段的时长是预设的固定时长;

第一更新单元,若缓存中存在匹配所述时间戳的时间序列缓存桶,则将所述时间序列数据更新到所述时间序列缓存桶中;

第二更新单元,根据预设的策略将所述时间序列缓存桶中的数据更新到数据库中。

由以上描述可以看出,本申请可以将时间序列数据存储到匹配其时间戳的时间序列桶中,并根据预设的策略将所述时间序列缓存桶中的数据更新到数据库中,通过时间序列缓存桶的缓存机制以减少对数据库的访问,确保系统的容量、响应不受到影响。

附图说明

图1是本申请一示例性实施例示出的一种时间序列数据的处理方法的流程示意图。

图2是本申请一示例性实施例示出的一种用于时间序列数据的处理装置的一结构示意图。

图3是本申请一示例性实施例示出的一种时间序列数据的处理装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

相关技术中,可以在系统中缓存用户业务操作的相关数据,后续再更新到数据库中。然而,由于系统缓存存在淘汰、丢失等问题,这样的实现方式无法确保数据的一致性。若采用可靠的缓存,又会导致存储成本过高。

相关技术中,还可以采用数据文件的形式保存用户业务操作的相关数据,然而采用数据文件的方式就需要考虑宕机、容灾等问题,存储成本也很高。

针对上述问题,本申请提供一种时间序列数据的处理方案。

图1是本申请一示例性实施例示出的一种时间序列数据的处理方法的流程示意图。

请参考图1,时间序列数据的处理方法可以应用在服务提供商部署的服务器或者服务器集群中,包括以下步骤:

步骤101,在接收到时间序列数据后,确定所述时间序列数据的时间戳。

在本实施例中,服务器可以接收到其他业务系统发送的用户业务操作数据,比如:其他业务系统可以在用户执行业务操作后,将用户的业务操作数据通过消息的方式发送给所述服务器。当然,在实际实现中,也可以通过其他方式将用户的业务操作数据发送给所述服务器,本申请对此不作特殊限制。

在本实施例中,其他业务系统通常会按照用户业务操作时间的先后顺序将户业务操作数据发送给所述服务器,因此,服务器接收到的业务操作数据通常是时间序列数据,携带有时间戳。为便于描述,后续将所述业务操作数据统称为时间序列数据。举例来说,所述时间序列数据可以是用户的登录数据,所述时间戳通常为登录时间;所述时间序列数据还可以是用户消费数据,所述时间戳通常为消费时间。

在本实施例中,服务器在接收到时间序列数据后,可以确定所述时间序列数据的时间戳。

步骤102,判断缓存中是否存在匹配所述时间戳的时间序列缓存桶,所述时间序列缓存桶用于缓存对应业务时段内的时间序列数据,所述业务时段的时长是预设的固定时长。

步骤103,若缓存中存在匹配所述时间戳的时间序列缓存桶,则将所述时间序列数据更新到所述时间序列缓存桶中。

在本实施例中,服务器可以在缓存中建立多个时间序列缓存桶,所述时间序列缓存桶可用于缓存对应业务时段内的时间序列数据,所述业务时段的时长为预设的固定时长。换言之,每个时间序列缓存桶所对应业务时间的时长均相同。所述固定时长的取值可以由开发人员根据业务需求设置,比如:1小时、1分钟等。在本例中,缓存中时间序列缓存桶的最多数量也可以由开发人员根据业务需求进行设置,比如:2个、3个等。

举例来说,假设,时间序列数据为用户对某链接的访问次数,所述固定时长为1小时,时间序列缓存桶1可以用于存储各用户在2016年12月23日01:00:00至01:59:59这段时间对该链接的访问次数。时间序列缓存桶2可以用于存储各用户在2016年12月23日02:00:00至02:59:59这段时间对该链接的访问次数,依次类推。

在本实施例中,所述时间序列缓存桶的存储结构可以为key-value结构,以上述时间序列缓存桶1为例,可参考表1所示的存储结构。

表1

在本实施例中,若缓存中存在匹配所述时间戳的时间序列缓存桶,则可以将所述时间序列数据更新到所述时间序列缓存桶中。假设,所述时间序列数据为用户1在2016年12月23日01:50:59访问该链接,则可以先从时间序列缓存桶1中获取已存储的用户1的访问次数3次,然后加上本次访问,用户1的访问次数变为4次,进而可以将用户1的访问次数由3更新为4。

当然,在实际应用中,时间序列缓存桶中时间序列数据的更新方式并不限于累计,具体可以根据业务需求进行设置,本申请对此不作特殊限制。

步骤104,根据预设的策略将所述时间序列缓存桶中的数据更新到数据库中。

在本实施例中,服务器可以采用异步等方式将时间序列缓存桶中的时间序列数据更新到数据库中,本申请对此不作特殊限制。

由以上描述可以看出,本申请可以将时间序列数据存储到匹配其时间戳的时间序列桶中,并根据预设的策略将所述时间序列缓存桶中的数据更新到数据库中,通过时间序列缓存桶的缓存机制以减少对数据库的访问,确保系统的容量、响应不受到影响。

以下通过时间序列缓存桶的维护、时间序列数据的乱序、系统宕机三个方面,对本申请的技术方案进行详细描述。

一、时间序列缓存桶的维护

在本实施例中,所述时间序列缓存桶的维护可以包括:建立、删除。

1)时间序列缓存桶的建立

在一个例子中,可以以时间序列缓存桶的业务时段的时长为周期进行时间序列缓存桶的建立。

表2

举例来说,仍假设业务时段的时长是1小时,请参考表2,可以在2016年12月23日01:00:00建立时间序列缓存桶1,时间序列缓存桶1对应的业务时段为2016年12月23日01:00:00至2016年12月23日01:59:59。在2016年12月23日02:00:00是可以建立时间序列缓存桶2,该时间序列缓存桶2对应的业务时段为2016年12月23日02:00:00至2016年12月23日02:59:59。

在另一个例子中,在到达上述时间周期时,也可以先不建立时间序列缓存桶,而在是接收到时间戳匹配对应业务时段的时间序列数据后,再进行时间序列缓存桶的建立。

仍以上述时间序列缓存桶1为例,在2016年12月23日02:00:00时,可以先不建立时间序列缓存桶2。假设,在2016年12月23日02:20:00接收到时间戳为2016年12月23日02:18:00的时间序列数据,确定当前缓存中不存在匹配该时间戳的时间序列缓存桶,而该时间戳又晚于时间序列缓存桶1对应的业务时段,则可以建立时间序列缓存桶2,对应的业务时段为2016年12月23日02:00:00-02:59:59,并将所述时间序列数据更新到时间序列缓存桶2中。

2)时间序列缓存桶的删除

在本实施例中,管理人员可以预先设置缓存中时间序列缓存桶的最多数量,当缓存中时间序列缓存桶的数量超出所述预设的最多数量(预设数量)时,可以进行时间序列缓存桶的删除,以节省缓存空间。

在一个例子中,可以在建立新的时间序列缓存桶后,判断当前缓存中时间序列缓存桶的数量是否大于所述最多数量,若小于等于,则无需处理。若大于,则可以在确定当前缓存中建立时间最早的时间序列缓存桶中的时间序列数据已更新到数据库中后,删除所述建立时间最早的时间序列缓存桶。换言之,在本例中,可以按照时间先后的顺序进行时间序列缓存桶的删除。当然,在删除之前还需确保其中存储的时间序列数据已全部更新到数据库中。

二、时间序列数据的乱序

在正常情况下,服务器会按照时间戳先后的顺序依次接收到的时间序列数据,比如:就某一天而言,服务器通常会先接收到时间戳为01:02:08的时间序列数据,然后才会接收到时间戳为01:05:56的时间序列数据。

然而,当发送时间序列数据的其他业务系统故障,或者网络出现故障时,可能会导致时间序列数据乱序的情况。仍以表2所示的时间序列缓存桶为例,假设用户1在2016年12月23日01:56:18访问了该链接,而这条时间序列数据在2016年12月23日02:07:00才被服务器接收到。此时,服务器确定缓存中存在匹配01:56:18的时间序列缓存桶1,进而可以将这条时间序列数据更新到时间序列缓存桶1中,即将时间序列缓存桶1中用户1的访问次数加1。

又假设,基于表2的示例,管理人员预先设置缓存中时间序列缓存桶的最多数量是2,则在2016年12月23日03:00:00时,可建立时间序列缓存桶3,并在确定时间序列缓存桶1中的时间序列数据均已更新到数据库后,删除时间序列缓存桶1,形成表3所示的时间序列缓存桶。

表3

若用户1在2016年12月23日01:56:18访问该链接的这条时间序列数据在2016年12月23日03:07:00才被服务器接收到,此时,服务器确定缓存中不存在匹配01:56:18的时间序列缓存桶,而该时间戳01:56:18又早于时间序列缓存桶2所对应的业务时段,则可以将该时间序列数据直接更新到数据库中,以确保数据准确。

三、系统宕机

在本实施例中,服务器在宕机重启后,缓存中的所有时间序列缓存桶都会丢失,在这种情况下,服务器可以先确定最新更新到缓存中的时间序列数据的时间戳,然后再确定该时间戳所属的业务时段,后续若接收到属于该业务时段的时间序列数据,则可以直接将其更新到数据库中,直至该业务时段结束后,建立新的时间序列缓存桶。其中,所述最新更新到缓存中的时间序列数据的时间戳可以通过统计确定,比如:连续统计10分钟确定该时间戳,或者统计预设数量的时间序列数据并将最新的时间戳确定为该时间戳,再或者可以将已更新到数据库中的最新的时间序列数据的时间戳确定为该时间戳等,本申请对此不作特殊限制。

仍以表2所示的时间序列缓存桶为例,假设系统在2016年12月23日02:46:08宕机,02:48:08成功重启,重启后缓存中不存在任何时间序列缓存桶。又假设,服务器重启后确定的最新更新到缓存中的时间序列数据的时间戳为2016年12月23日02:28:08,则该时间戳所属的业务时段为02:00:00-02:59:59。后续,服务器若接收到时间戳属于该业务时段的时间序列数据,则可以直接将该时间序列数据更新到数据库中。在2016年12月23日03:00:00时,可以建立业务时段为03:00:00-03:59:59的时间序列缓存桶。

由以上描述可以看出,采用本申请提供的时间序列数据的处理方案,可以解决时间序列数据乱序、系统宕机等异常情况下的数据更新,无需增加额外的存储成本。

与前述时间序列数据的处理方法的实施例相对应,本申请还提供了时间序列数据的处理装置的实施例。

本申请时间序列数据的处理装置的实施例可以应用在服务器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在服务器的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本申请时间序列数据的处理装置所在服务器的一种硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的服务器通常根据该服务器的实际功能,还可以包括其他硬件,对此不再赘述。

图3是本申请一示例性实施例示出的一种时间序列数据的处理装置的框图。

请参考图3,所述时间序列数据的处理装置200可以应用在图2所示的服务器中,包括有:时间戳确定单元201、缓存桶判断单元202、第一更新单元203、第二更新单元204、第一建立单元205、缓存桶删除单元206、第三更新单元207、第四更新单元208、宕机处理单元209以及第二建立单元210。

其中,时间戳确定单元201,在接收到时间序列数据后,确定所述时间序列数据的时间戳;

缓存桶判断单元202,判断缓存中是否存在匹配所述时间戳的时间序列缓存桶,所述时间序列缓存桶用于缓存对应业务时段内的时间序列数据,所述业务时段的时长是预设的固定时长;

第一更新单元203,若缓存中存在匹配所述时间戳的时间序列缓存桶,则将所述时间序列数据更新到所述时间序列缓存桶中;

第二更新单元204,根据预设的策略将所述时间序列缓存桶中的数据更新到数据库中。

第一建立单元205,以所述固定时长为时间周期,在到达所述时间周期时,建立新的时间序列缓存桶。

缓存桶删除单元206,在建立新的时间序列缓存桶后,判断当前缓存中时间序列缓存桶的数量是否大于预设数量;若当前缓存中时间序列缓存桶的数量大于预设数量,则在确定当前缓存中建立时间最早的时间序列缓存桶中的时间序列数据已更新到数据库中后,删除所述建立时间最早的时间序列缓存桶。

第三更新单元207,当所述缓存中不存在匹配所述时间戳的时间序列缓存桶时,若确定所述时间戳早于当前缓存中建立时间最早的时间序列缓存桶所对应的业务时段,则将所述时间序列数据更新到数据库中。

第四更新单元208,当所述缓存中不存在匹配所述时间戳的时间序列缓存桶时,若确定所述时间戳晚于当前缓存中建立时间最晚的时间序列缓存桶所对应的业务时段,则建立匹配所述时间戳的新的时间序列缓存桶,并将所述时间序列数据更新到所述新的时间序列缓存桶中。

宕机处理单元209,在宕机重启后,确定最新更新到缓存中的时间序列数据的时间戳;若在所述时间戳所属的业务时段内接收到时间序列数据,则将所述时间序列数据更新到数据库中。

第二建立单元210,在经过所述时间戳所属的业务时段后,建立新的时间序列缓存桶。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1