数据的动态存储方法、装置及计算设备与流程

文档序号:12363997阅读:267来源:国知局
数据的动态存储方法、装置及计算设备与流程

本申请涉及互联网技术领域,尤其涉及一种数据的动态存储方法、装置及计算设备。



背景技术:

随着互联网技术的快速发展,基于互联网的各类应用及业务系统也在日常运营中生成大量的结构化和非结构化的数据。由于海量规模的数据可以蕴含极大的应用价值,因此互联网公司都在利用实时计算相关技术对海量数据进行实时数据分析。在做数据分析的过程中,需要对数据进行去重处理,例如,独立访客(Unique Visitor,简称为UV)统计、订单号去重等,当数据量较少时,可以通过哈希表或者位图等数据结构快速计算上述UV统计、订单号去重等,并且不会成为计算设备的瓶颈。

但在海量数据条件下,受制于计算设备物理内存大小的限制,如果需要高性能的数据去重,尤其是连续时间窗口内的数据去重,对计算设备的物理内存是一个很大的挑战。



技术实现要素:

有鉴于此,本申请提供一种新的技术方案,可以解决在数据处理过程中计算设备的内存消耗较大的技术问题。

为实现上述目的,本申请提供技术方案如下:

根据本发明的第一方面,提出了一种数据的动态存储方法,包括:

在检测到新的时间片时,确定存储矩阵中当前已记录的多个时间片的个 数;

如果所述多个时间片的个数等于所述存储矩阵的阶数,将所述多个时间片的存储时长最长的数据从所述存储矩阵中删除;

将所述多个时间片中的剩余时间片对应的数据顺次移动一个时间片,将所述新的时间片的数据填充到所述多个时间片中的存储时长最短的数据的位置。

根据本发明的第二方面,提出了一种数据的动态存储装置,包括:

第一确定模块,用于在检测到新的时间片时,确定存储矩阵中当前已记录的多个时间片的个数;

删除模块,用于如果所述第一确定模块确定的所述多个时间片的个数等于所述存储矩阵的阶数,将所述多个时间片的存储时长最长的数据从所述存储矩阵中删除;

动态存储模块,用于将所述删除模块删除后的多个时间片中的剩余时间片对应的数据顺次移动一个时间片,将所述新的时间片的数据填充到所述多个时间片中的存储时长最短的数据的位置。

根据本发明的第三方面,提出了一种计算设备,所述计算设备包括:

处理器;用于存储所述处理器可执行指令的存储器;

其中,所述处理器,用于在检测到新的时间片时,确定存储矩阵中当前已记录的多个时间片的个数;

如果所述多个时间片的个数等于所述存储矩阵的阶数,将所述多个时间片的存储时长最长的数据从所述存储矩阵中删除;

将所述多个时间片中的剩余时间片对应的数据顺次移动一个时间片,将所述新的时间片的数据填充到所述多个时间片中的存储时长最短的数据的位置。

由以上技术方案可见,本申请在检测到新的时间片时,通过将多个时间片的存储时长最长的数据从存储矩阵中删除,将多个时间片中的剩余时间片对应的数据顺次移动一个时间片,将新的时间片的数据填充到多个时间片中 的存储时长最短的数据的位置,由此实现了在接收到流动的数据后,可以确保在内存中可以对数据进行实时计算或者去重处理,大大降低计算设备在数据处理过程中的内存消耗。

附图说明

图1A示出了根据本发明的一示例性实施例的数据的动态存储方法的流程示意图;

图1B示出了根据本发明的一示例性实施例的如何在存储矩阵动态存储时间片的数据的示意图;

图2A示出了根据本发明的又一示例性实施例的数据的动态存储方法的流程示意图;

图2B示出了根据本发明的又一示例性实施例的如何将存储矩阵映射为一维数组的示意图;

图2C示出了根据本发明的又一示例性实施例的如何在存储矩阵动态存储时间片的数据的示意图;

图3示出了根据本发明的一示例性实施例的计算设备的结构示意图;

图4示出了根据本发明的一示例性实施例的数据的动态存储装置的结构示意图;

图5示出了根据本发明的又一示例性实施例的数据的动态存储装置的结构示意图。

具体实施方式

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

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

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

本申请在检测到新的时间片时,通过将多个时间片的存储时长最长的数据从存储矩阵中删除,将多个时间片中的剩余时间片对应的数据顺次移动一个时间片,将新的时间片的数据填充到多个时间片中的存储时长最短的数据的位置,由此实现了在接收到流动的数据后,可以确保计算设备在内存中可以对数据进行实时计算或者去重处理,大大降低计算设备在数据处理过程中的内存消耗。

为对本申请进行进一步说明,提供下列实施例:

图1A示出了根据本发明的一示例性实施例的数据的动态存储方法的流程示意图,图1B示出了根据本发明的一示例性实施例的如何在存储矩阵动态存储时间片的数据的示意图;如图1A所示,包括如下步骤:

步骤101,在检测到新的时间片时,确定存储矩阵中当前已记录的多个时间片的个数。

在一实施例中,本实施例中的时间片与时间窗口为等同的概念,时间片是在时间戳的基础上按照一定时间长度划分得到的关于时间的一种表述形式,例如,1小时为3600秒,一个时间片可以为任意秒的时间长度。

在一实施例中,假定检测到时间片T4的数据需要存储到存储矩阵中, 存储矩阵可以为图1B所示的三角矩阵,如图1B所示,在连续的时间片内,假定方向时间片从左向右增长,第0行表示相对应的当前时间片的数据量,例如,对于第0行中的第0列,表示时间片T0的数据(对应图1B中的“T0”的单元格内的数据),对于第0行中的第1列,表示时间片T1的数据(对应图1B中的“T1”的单元格内的数据),对于第0行中的第2列,表示时间片T2的数据(对应图1B中的“T2”的单元格内的数据),对于第0行中的第3列,表示时间片T3的数据(对应图1B中的“T3”的单元格内的数据);对于三角矩阵的第N列中每一行中的数据量表示第N个时间片与所有前N-1个时间片的数据增量(也即,数据去重后对应的增量数据),例如,对于第1行第2列,表示时间片T1有并且时间片T0无的增量数据(对应图1B中的“T1有T0无”的单元内的增量数据),以此类推,从而可以通过三角矩阵确定时间片T0到T3这段时间内去重后的增量数据时,只需要计算三角矩阵中T0到T3的对角线上单元格的增量数据之和。本申请仅以包含四个时间片并且对应的存储矩阵为4*4的三角矩阵为例进行示例性说明,本领域技术人员可以理解的是,可以通过本申请计算任意连续个数的时间片内的去重后的增量数据,因此时间片的个数并不能形成对本申请的限制。例如,T0时间片内的访客为a、b、a、c,T1时间片内的访客为a、c、d、e、f,则T1时间片相较于之前的T0时间片的增量数据为d、e、f。在一实施例中,可以通过计数器记录存储矩阵中当前已记录的多个时间片的个数n。

步骤102,如果多个时间片的个数等于存储矩阵的阶数,将多个时间片的存储时长最长的数据从存储矩阵中删除。

在一实施例中,存储矩阵的阶数可以根据具体业务需求以及计算设备的具体应用环境来确定,在条件允许时,例如,需要查看M天之内的去重后的访问量,计算设备需要对M天之内的访问数据进行去重处理,若一个时间片的时长为L,则存储矩阵的阶数N可以由M和L来确定,例如,N>=M/L,从而可以确保计算设备将M天之内的数据进行去重处理。在一实施例中,如果多个时间片的个数n等于存储矩阵的阶数N,则说明存储矩阵当前已经存 满数据,如图1B所示,在检测到时间片T4的数据需要存储到存储矩阵中时,需要删除存储矩阵已存储的时间片的数据,从而将T4时间片的数据存储到存储矩阵中。

在一实施例中,可以对存储在存储矩阵中的时间片的数据的最后访问时间点以时间列表的方式进行记录,根据存储矩阵内已存储的时间片的数据的时间列表来确定多个时间片的存储时长最长的数据,在另一实施例中,还可以记录存储在存储矩阵中的时间片内的数据的存储时间点相对于协调世界时时间0点的时间偏移量,根据偏移量列表确定多个时间片中的存储时长最长的时间片,例如,确定T0时间片在时间列表或者偏移量列表存储矩阵中存储的时间最长,此时可以将T0时间片的数据删除。

步骤103,将多个时间片中的剩余时间片对应的数据顺次移动一个时间片,将新的时间片的数据填充到多个时间片中的存储时长最短的数据的位置。

如图1B所示,再将T0时间片的数据删除后,依次将T1时间片的数据存储到T0时间片对应的存储位置,将T2时间片的数据存储到T1时间片对应的存储位置,T2时间片的数据存储到T1时间片对应的存储位置,并将T4时间片的数据存储到T3时间片对应的存储位置。

由上述描述可知,在流式计算中,由于计算设备无法确定接收数据的时间点,并且由于计算设备的物理硬件的限制,也不能存储计算设备接收到的全部数据,本实施例在检测到新的时间片时,通过将多个时间片的存储时长最长的数据从存储矩阵中删除,将多个时间片中的剩余时间片对应的数据顺次移动一个时间片,将新的时间片的数据填充到多个时间片中的存储时长最短的数据的位置,由此实现了在接收到流动的数据后,可以确保在内存中可以对数据进行实时计算或者去重处理,大大降低计算设备在数据处理过程中的内存消耗。

图2A示出了根据本发明的又一示例性实施例的数据的动态存储方法的流程示意图,图2B示出了根据本发明的又一示例性实施例的如何将存储矩阵映射为一维数组的示意图,图2C示出了根据本发明的又一示例性实施例 的如何在存储矩阵动态存储时间片的数据的示意图;如图2A所,包括如下步骤:

步骤201,在检测到新的时间片时,确定存储矩阵中当前已记录的多个时间片的个数,如果多个时间片的个数等于存储矩阵的阶数,执行步骤202,如果多个时间片的个数小于存储矩阵的阶数,执行步骤207。

步骤201的描述请参考上述步骤101的描述,在此不再详述。

步骤202,如果多个时间片的个数等于存储矩阵的阶数,确定多个时间片相对于时间0点的多个时间偏移量。

步骤203,根据多个偏移量确定多个时间片中的存储时长最长的时间片。

在步骤202和步骤203中,在一实施例中,时间偏移量可以为从协调世界时1970年1月1日0时0分0秒起至现在的总秒数,记录存储在存储矩阵中的时间片内的数据的存储时间点相对于协调世界时时间0点的时间偏移量对应的偏移量列表,通过偏移量列表所记录的偏移时间的大小来确定存储时长最长的时间片。

步骤204,将多个时间片的存储时长最长的数据从存储矩阵中删除。

步骤205,将多个时间片中的剩余时间片对应的数据顺次移动一个时间片,将新的时间片的数据填充到多个时间片中的存储时长最短的数据的位置。

步骤204和步骤205的描述请参见上述步骤102和步骤103的描述,在此不再详述。

步骤206,将所述存储矩阵中所存储的所述多个时间片对应的数据从二维数组映射成一维数组,流程结束。

在一实施例中,如图2B所示,本申请所采用的存储矩阵可以为三角矩阵,在线性代数中,三角矩阵是方形矩阵的一种,三角矩阵分上三角矩阵和下三角矩阵两种。上三角矩阵的对角线左下方的系数全部为零,下三角矩阵的对角线右上方的系数全部为零。由于三角矩阵有一半的空间为常数C,因此本申请中将C视为0,并且方形矩阵的另外一半的非零元素个数为(N*(N+1))/2,其中,N表示三角矩阵的阶数。因此,通过将N阶矩阵转换为 二维数组S2[N][N]进行存储,其中,零元素不存储,非零元素通过一定的压缩规则将二维数组元素S2[i][j]映射到一维数组S1[k]中,其中,i<=N,j<=N,k<=(N*(N+1))/2。本实施例中的压缩规则如下:

假定n代表矩阵阶数,下三角矩阵元素用二维数组的方法表示成S2[i][j],则S2[i][j]到一维数组元素S1[k]的映射规则如等式1所示:

步骤207,将新的时间片中的数据根据多个时间片的时间增长的方向顺次存储在存储矩阵中,流程结束。

如图2B所示,在存储矩阵的阶数较大时,存储矩阵的空间尚未存满,可以根据时间片中的数据结合最后访问数据的时间列表,按照时间片增长的方向依次将时间片中的数据存储到存储矩阵中,进而将通过映射规则将矩阵对应的二维数据映射成一维数组,将数据以一维数组的方式存储。

本实施例在具有上述实施例的有益技术效果的基础上,通过将二维矩阵映射为一维数组,可以将减少存储数据所需的内存空间,通过动态调整压缩后的一维数组,使其一直维持成一个三角矩阵,从而可以确保存储矩阵在对时间片对应的数据进行去重等处理时的有效性。

通过上述实施例,由于存储矩阵时时刻刻会发生变化,因此通过动态调整压缩后的一维数组,可以降低存储矩阵中的连续时间片对应的数据需要去重处理等过程中的空间复杂度,进而解决了计算设备的内存开销过高的问题。

对应于上述的数据的动态存储方法,本申请还提出了图3所示的根据本申请的一示例性实施例的计算设备的示意结构图。请参考图3,在硬件层面,该计算设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据的动态存储装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定 于各个逻辑单元,也可以是硬件或逻辑器件。

请参见图4,为根据本发明的一示例性实施例的数据的动态存储装置的结构示意图;如图4所示,该数据的动态存储装置可以包括:第一确定模块41、删除模块42、动态存储模块43。其中:

第一确定模块41,用于在检测到新的时间片时,确定存储矩阵中当前已记录的多个时间片的个数;

删除模块42,用于如果第一确定模块41确定的多个时间片的个数等于存储矩阵的阶数,将多个时间片的存储时长最长的数据从存储矩阵中删除;

动态存储模块43,用于将删除模块42删除后的多个时间片中的剩余时间片对应的数据顺次移动一个时间片,将新的时间片的数据填充到多个时间片中的存储时长最短的数据的位置。

请参见图5,为根据本发明的又一示例性实施例的数据的动态存储装置的结构示意图;如图5所示,在上述图4所示实施例的基础上,装置还可包括:

第二确定模块44,用于确定多个时间片相对于时间0点的多个时间偏移量;

第三确定模块45,用于根据多个偏移量确定多个时间片中的存储时长最长的时间片,以供删除模块42将多个时间片的存储时长最长的数据从存储矩阵中删除。

在一实施例中,装置还可包括:

更新模块46,用于在动态存储模块43将将新的时间片的数据填充到多个时间片中的存储时长最短的数据的位置后,更新存储矩阵中的多个时间片各自对应的时间偏移量。

在一实施例中,装置还可包括:

映射模块47,用于在动态存储模块43将新的时间片的数据填充到多个时间片中的存储时长最短的数据的位置之后,将存储矩阵中所存储的多个时间片对应的数据从二维数组映射成一维数组。

在一实施例中,动态存储模块43还用于如果第一确定模块41确定的多个时间片的个数小于存储矩阵的阶数,将新的时间片中的数据根据多个时间片的时间增长的方向顺次存储在存储矩阵中。

上述实施例可见,本申请在实时计算过程中,通过约束时间片的长度来减少存储矩阵所需的内存空间,通过动态存储的方式解决时间片个数大于矩阵阶数时不能够继续存储新的时间片的数据的问题,通过将存储矩阵映射为一维数组,可以降低一半的内存空间,在计算设备的内存敏感或者计算设备需要处理的数据量巨大的情况下,可以有效降低内存的占用率。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

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

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