本发明实施例涉及数据处理技术,尤其涉及一种基于大数据的数据压缩方法、设备及介质。
背景技术:
互联网技术(internettechnology,it)运维工作中有一个很重要内容是对系统中的各主机设备的运行状态以及网络负载等信息进行实时监控和记录,获取各主机设备的指标数据,以实现异常情况的及时告警、故障诊断以及数据挖掘等功能。
由于数据采集点众多,采集间隔短,导致实时监测的指标数据的数据量非常庞大。当系统节点很多、指标定义很多时,指标数据将会有极大的数据量,将会占用极大的存储空间。
技术实现要素:
本发明实施例提供一种基于大数据的数据压缩方法、设备及介质,以实现对指标数据进行压缩存储,在减少存储空间的浪费的同时,不丢失数据。
第一方面,本发明实施例提供了一种基于大数据的数据压缩方法,包括:
在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,待压缩历史指标数据包括以日为单位的多个指标数据集合,指标数据集合包括在对应日期所采集的全部指标数据,指标数据集合中的指标数据按照时间顺序排列;
根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数;
根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储。
第二方面,本发明实施例还提供了一种计算机设备,包括处理器和存储器,存储器用于存储指令,当指令执行时使得处理器执行以下操作:
在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,待压缩历史指标数据包括以日为单位的多个指标数据集合,指标数据集合包括在对应日期所采集的全部指标数据,指标数据集合中的指标数据按照时间顺序排列;
根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数;
根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储。
第三方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现:
在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,待压缩历史指标数据包括以日为单位的多个指标数据集合,指标数据集合包括在对应日期所采集的全部指标数据,指标数据集合中的指标数据按照时间顺序排列;
根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数;
根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储。
本发明实施例的技术方案,通过在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,待压缩历史指标数据包括以日为单位的多个指标数据集合,然后根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数,根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储,可以针对待压缩历史指标数据,根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储,可以通过众数压缩存储方式将指标数据集合中大量重复出现的众数进行压缩存储,并且可以通过短时记忆压缩存储方式在可接受误差范围内将偏离众数的指标数据集合再利用短时记忆的数据压缩方法进行压缩,可以在减少指标数据的存储空间的浪费的同时不丢失指标数据。
附图说明
图1a为一种主机设备日常的cpu使用率趋势图。
图1b为一种主机设备促销活动时的cpu使用率趋势图。
图1c为一种cpu使用率指标原始数据样例。
图1d为一种数据价值曲线图。
图1e为本发明实施例一提供的一种基于大数据的数据压缩方法的流程图。
图1f为本发明实施例一提供的一种对目标指标数据集合中的指标数据进行压缩存储的流程图。
图1g为本发明实施例一提供的一种cpu使用率采集数据。
图1h为本发明实施例一提供的一种主机设备日常的cpu使用率趋势图。
图1i为本发明实施例一提供的一种主机设备在促销活动日期当天的cpu使用率趋势图。
图2为本发明实施例二提供的一种基于大数据的数据压缩方法的流程图。
图3为本发明实施例三提供的一种基于大数据的数据压缩装置的结构示意图。
图4为本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
本文使用的术语“指标”是目标对象在特定时间点或特定时间范围的某规则下的特征值或计算值。示例性的,目标对象可以为系统中的各主机设备,指标可以为某一时间点系统中的各主机设备的中央处理器(centralprocessingunit,cpu)使用率、内存使用率等。
本文使用的术语“指标数据”是基于时间序列的指标数据。示例性的,指标数据可以为每5秒钟的主机设备的cpu使用率、内存使用率等。
本文使用的术语“众数”是一批数据集合中出现次数最多的数。示例性的:数据集合为{1,2,1,3,4,5,1,8},该数据集合中1的出现次数最多,则数据集合的众数为1。
本文使用的术语“大数据压缩请求”是用于请求对待压缩历史指标数据进行压缩存储的操作请求。
本文使用的术语“待压缩历史指标数据”是在当前时间下,全部未进行压缩存储的历史指标数据。历史指标数据是除了当日采集的指标数据之外的全部指标数据。待压缩历史指标数据包括以日为单位的多个指标数据集合。指标数据集合包括在对应日期所采集的全部指标数据。指标数据集合中的指标数据按照时间顺序排列。示例性的,采集主机设备1年(365天)的每1分钟的cpu使用率作为待压缩历史指标数据。待压缩历史指标数据包括以日为单位的365个指标数据集合。指标数据集合包括在对应日期所采集的每1分钟的cpu使用率。指标数据集合中的每1分钟的cpu使用率按照时间顺序排列。
本文使用的术语“预设的数据分片范围大小参数”是用于进行众数压缩存储的压缩参数,用于对基于时间序列的指标数据进行分片。在进行众数压缩存储时,针对众数选举样本中的每一个指标数据集合,根据预设的数据分片范围大小参数对指标数据集合中的指标数据进行分片,将指标数据集合中的指标数据分成多个指标数据分片,并按照时间顺序,确定与各指标数据分片对应的数据分片下标;将众数选举样本中的各指标数据集合中的相同数据分片下标的指标数据分片进行合并,得到与各数据分片下标对应的指标数据合并集合;获取各指标数据合并集合中出现次数最多的指标数据,作为与对应数据分片下标对应的众数。
预设的数据分片范围大小参数的大小取决于指标数据集合中的指标数据的数量。如果指标数据集合中的指标数据的数量偏少,可以适当调大预设的数据分片范围大小参数。示例性的,预设的数据分片范围大小参数为5分钟。以日为单位的指标数据集合的时间范围为0:00:00到23:59:59。根据预设的数据分片范围大小参数对指标数据集合中的指标数据进行分片,将指标数据集合中的指标数据分成多个指标数据分片,即以5分钟为间隔,将指标数据集合的时间范围0:00:00到23:59:59分成288个指标数据分片。在指标数据分片的时间范围内采集的指标数据即为属于该指标数据分片的指标数据。
本文使用的术语“数据分片下标”是指标数据分片的下标。示例性的,预设的数据分片范围大小参数为5分钟。以日为单位的指标数据集合的时间范围为0:00:00到23:59:59。以5分钟为间隔,将指标数据集合的时间范围0:00:00到23:59:59分成288个指标数据分片,按照时间顺序分别将各指标数据分片的下标记作1-288。
本文使用的术语“短时记忆基数”是用于进行短时记忆数据压缩的基数。获取各指标数据集合中的第一条指标数据的指标值作为与各指标数据集合对应的短时记忆基数。在数据压缩存储过程中,如果当前指标数据不在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的指标值设置为与目标指标数据集合对应的新的短时记忆基数。
本文使用的术语“标记字段”是用于对指标数据的压缩存储方式进行标记的字段。标记字段可以设置为众数标记、短时记忆标记或者原始数据标记。众数标记代表通过众数压缩存储方式对指标数据进行压缩存储。短时记忆标记代表通过短时记忆压缩存储方式对指标数据进行压缩存储。原始数据标记代表未对指标数据进行压缩,以原始数据格式存储指标数据的指标值。
本文使用的术语“众数选举样本”是用于确定与各数据分片下标对应的众数的多个指标数据集合。在以日为单位的多个指标数据集合中,随机获取设定数量的指标数据集合作为众数选举样本。
本文使用的术语“短时记忆基数的上下浮动可接受百分比范围”是用于进行短时记忆压缩存储的压缩参数,是允许指标数据的指标值的查询值与真实值的偏差比例。通常短时记忆基数的上下浮动可接受百分比范围的值越大,短时记忆压缩存储方式的压缩率越高。数据查询时的失真度也越高。需要根据业务需求,在压缩率和失真度上寻找一个平衡点。示例性的,短时记忆基数的上下浮动可接受百分比范围为5%。
为了便于理解,将本发明实施例的主要发明构思进行简述。
基于时间序列的指标数据通常是规律稳定的,且指标数据的范围确定。示例性的,系统中的主机设备的cpu使用率大部分时候是有规律的。图1a为一种主机设备日常的cpu使用率趋势图。图1b为一种主机设备促销活动时的cpu使用率趋势图。总的来说:主机设备的cpu使用率、内存使用率这一类基于时间序列的指标数据,通常每日的变化趋势都是相近的。偶尔因为一些特殊活动其变化趋势会有差异。示例性的,在电商促销活动时,电商系统的流量是远高于平时的。电商系统中的主机设备的cpu使用率的变化趋势会因为电商促销活动,与日常的cpu使用率的变化趋势有差异。
现有技术针对基于时间序列的指标数据进行存储时,直接以原始数据格式存储,不考虑存储空间,不做压缩,采用大数据存储引擎存储,再定期清理历史冷数据(例如,删除历史冷数据)。图1c为一种cpu使用率指标原始数据样例。图1c展现了100台机器cpu使用率指标原始数据样例。100台机器,每5秒钟采集一次cpu使用率的指标数据。那一天就有近似173万条数据产生。一个月就有近似5184万条数据,一年就有近似6.22亿条数据。而cpu使用率大多数情况下是有规律的。显然现有技术直接以原始数据格式存储带来极大的空间浪费,且意义不大。
基于时间序列的指标数据(比如cpu使用率),大部分情况下每日的变化趋势是相似的,以日为单位,每天存一份相似的指标数据是存储空间的浪费。
基于时间序列的指标数据(比如cpu使用率),大部分情况下,短时间内是相对稳定的(比如晚上0点之后系统闲置时,cpu使用率趋近于0),该连续区间每个采集点都存一份相似的指标数据是存储空间的浪费。
此外,现有技术定期清理历史冷数据的方式,会导致历史数据丢失。而客户通常希望历史数据依旧保存。因为数据可能当时没有找到利用价值,不代表后续没有。
发明人针对现有技术中直接以原始数据格式存储,定期清理历史冷数据的指标数据存储方式带来极大的空间浪费,导致历史数据丢失的问题,考虑是否可以通过一种方法对基于时间序列的指标数据进行压缩存储,以在减少存储空间的浪费的同时不丢失一条数据。
图1d为一种数据价值曲线图。热数据是最近生成的,会常用到的数据。热数据的价值最高。温数据是已经过了一段时间,偶尔会用到的数据。冷数据是过了很长时间,极少情况会用到的数据。热数据是价值最高的数据,是当时会频繁使用的数据,因此在存储的时候,更多的是考虑查询效率。温数据、冷数据是偶尔用到的数据,因此在存储的时候,更多考虑的是数据压缩,减少数据存储空间占用。
当日采集的指标数据即为热数据。以原始数据格式存储当日采集的指标数据,便于数据查询时,即查即用。历史指标数据是除了当日采集的指标数据之外的全部指标数据。历史指标数据即为温数据或者冷数据。对历史指标数据进行压缩存储,以在减少存储空间的浪费的同时不丢失一条数据,并提供友好高效的数据查询服务。
基于上述思考,发明人创造性的提出,在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,待压缩历史指标数据包括以日为单位的多个指标数据集合,指标数据集合包括在对应日期所采集的全部指标数据,指标数据集合中的指标数据按照时间顺序排列;根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数;根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储。这样做的好处是:针对当日采集的指标数据不做压缩,即查即用;针对待压缩历史指标数据,通过根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储,可以将指标数据集合中大量重复出现的众数进行压缩存储,并且在可接受误差范围内将偏离众数的指标数据集合再利用短时记忆的数据压缩方法进行压缩,并且支持参数配置调整指标数据集合的压缩率和准确性,非常好的解决了每日趋势变化相似,短时间指标值稳定的基于时间序列的指标数据的压缩存储。
实施例一
图1e为本发明实施例一提供的一种基于大数据的数据压缩方法的流程图。本发明实施例可适用于对指标数据进行压缩存储的情况,该方法可以由本发明实施例提供的基于大数据的数据压缩装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在计算机设备中。如图1e所示,本发明实施例的方法具体包括:
步骤101、在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据。
待压缩历史指标数据包括以日为单位的多个指标数据集合,指标数据集合包括在对应日期所采集的全部指标数据,指标数据集合中的指标数据按照时间顺序排列。
待压缩历史指标数据是在当前时间下,全部未进行压缩存储的历史指标数据。历史指标数据是除了当日采集的指标数据之外的全部指标数据。待压缩历史指标数据包括以日为单位的多个指标数据集合。指标数据集合包括在对应日期所采集的全部指标数据。指标数据集合中的指标数据按照时间顺序排列。
大数据压缩请求是用于请求对待压缩历史指标数据进行压缩存储的操作请求。可选的,在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,包括:在检测到大数据压缩请求时,获取除了当日采集的指标数据之外的未进行压缩存储的全部指标数据,作为与大数据决策请求对应的待压缩历史指标数据。
指标数据于时间序列的指标数据。示例性的,指标数据可以为每5秒钟的主机设备的cpu使用率、内存使用率等。
在一个具体实例中,指标数据为主机设备的每1分钟的cpu使用率。待压缩历史指标数据包括以日为单位的365个指标数据集合。指标数据集合包括在对应日期所采集的每1分钟的cpu使用率。指标数据集合中的每1分钟的cpu使用率按照时间顺序排列。
步骤102、根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数。
可选的,根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数,可以包括:在以日为单位的多个指标数据集合中,随机获取设定数量的指标数据集合作为众数选举样本;针对众数选举样本中的每一个指标数据集合,根据预设的数据分片范围大小参数对指标数据集合中的指标数据进行分片,将指标数据集合中的指标数据分成多个指标数据分片,并按照时间顺序,确定与各指标数据分片对应的数据分片下标;将众数选举样本中的各指标数据集合中的相同数据分片下标的指标数据分片进行合并,得到与各数据分片下标对应的指标数据合并集合;获取各指标数据合并集合中出现次数最多的指标数据,作为与对应数据分片下标对应的众数。
众数选举样本是用于确定与各数据分片下标对应的众数的多个指标数据集合。在一个具体实例中,待压缩历史指标数据包括以日为单位的3650个指标数据集合。在以日为单位的3650个指标数据集合中,随机获取300个指标数据集合作为众数选举样本。
预设的数据分片范围大小参数是用于进行众数压缩存储的压缩参数,用于对基于时间序列的指标数据进行分片。预设的数据分片范围大小参数的大小取决于指标数据集合中的指标数据的数量。如果指标数据集合中的指标数据的数量偏少,可以适当调大预设的数据分片范围大小参数。
在一个具体实例中,预设的数据分片范围大小参数为5分钟。以日为单位的指标数据集合的时间范围为0:00:00到23:59:59。根据预设的数据分片范围大小参数对指标数据集合中的指标数据进行分片,将指标数据集合中的指标数据分成多个指标数据分片,即以5分钟为间隔,将指标数据集合的时间范围0:00:00到23:59:59分成288个指标数据分片。在指标数据分片的时间范围内采集的指标数据即为属于该指标数据分片的指标数据。
数据分片下标是指标数据分片的下标。在一个具体实例中,预设的数据分片范围大小参数为5分钟。以日为单位的指标数据集合的时间范围为0:00:00到23:59:59。以5分钟为间隔,将指标数据集合的时间范围0:00:00到23:59:59分成288个指标数据分片,按照时间顺序分别将各指标数据分片的下标记作1-288。
众数是一批数据集合中出现次数最多的数。示例性的:数据集合为{1,2,1,3,4,5,1,8},该数据集合中1的出现次数最多,则数据集合的众数为1。
可选的,获取各指标数据合并集合中出现次数最多的指标数据,作为与对应数据分片下标对应的众数,并对与各数据分片下标对应的众数进行存储。
可选的,将与各数据分片下标对应的众数存储至预设的数据表中。
步骤103、根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储。
标记字段是用于对指标数据的压缩存储方式进行标记的字段。标记字段可以设置为众数标记、短时记忆标记或者原始数据标记。众数标记代表通过众数压缩存储方式对指标数据进行压缩存储。短时记忆标记代表通过短时记忆压缩存储方式对指标数据进行压缩存储。原始数据标记代表未对指标数据进行压缩,以原始数据格式存储指标数据的指标值。
可选的,根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储,可以包括:按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据;判断当前指标数据是否是所属指标数据分片的数据分片下标对应的众数;如果当前指标数据是与所属指标数据分片的数据分片下标对应的众数,则将当前指标数据的标记字段设置为众数标记;返回执行按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据的操作,直至完成对目标指标数据集合中的全部指标数据的处理。
可选的,根据当前指标数据的数据时间,获取当前指标数据所属指标数据分片的数据分片下标对应的众数,判断当前指标数据是否是所属指标数据分片的数据分片下标对应的众数。
如果当前指标数据是与所属指标数据分片的数据分片下标对应的众数,则将当前指标数据的标记字段设置为众数标记。即如果当前指标数据是与所属指标数据分片的数据分片下标对应的众数,则在存储时,存储当前指标数据的众数标记即可。在进行当前指标数据的指标值查询时,若查询结果为众数标记,则返回对应的众数的数值。
一个整数类型数值占32个比特,一个双精度浮点型数值占64个比特。而众数标记位只需要1个比特即可存储。因此,目标指标数据集合中的众数的比例越大,数据压缩率越大。
可选的,在判断当前指标数据是否是与所属指标数据分片的数据分片下标对应的众数之后,可以还包括:如果当前指标数据不是与所属指标数据分片的数据分片下标对应的众数,则判断当前指标数据是否在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内;如果当前指标数据在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为短时记忆标记;返回执行按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据的操作,直至完成对目标指标数据集合中的全部指标数据的处理。
短时记忆基数是用于进行短时记忆数据压缩的基数。可选的,获取目标指标数据集合中的第一条指标数据的指标值作为与目标指标数据集合对应的短时记忆基数,并对与目标指标数据集合对应的短时记忆基数进行存储。
可选的,将与目标指标数据集合对应的短时记忆基数存储至基数值字段。
短时记忆基数的上下浮动可接受百分比范围是用于进行短时记忆压缩存储的压缩参数,是允许指标数据的指标值的查询值与真实值的偏差比例。通常短时记忆基数的上下浮动可接受百分比范围的值越大,短时记忆压缩存储方式的压缩率越高。数据查询时的失真度也越高。需要根据业务需求,在压缩率和失真度上寻找一个平衡点。示例性的,短时记忆基数的上下浮动可接受百分比范围为5%。
判断当前指标数据是否在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内。如果当前指标数据在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为短时记忆标记。即如果当前指标数据在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则在存储时,存储当前指标数据的短时记忆标记即可。在进行当前指标数据的指标值查询时,若查询结果为短时记忆标记,则返回对应的短时记忆基数的数值。
一个整数类型数值占32个比特,一个双精度浮点型数值占64个比特。而短时记忆标记只需要1个比特即可存储。因此,目标指标数据集合中连续区间的指标数据的指标值越稳定,数据压缩率越大。
可选的,在判断当前指标数据是否在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内之后,可以还包括:如果当前指标数据不在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为原始数据标记,存储当前指标数据的指标值,并将当前指标数据的指标值设置为与目标指标数据集合对应的新的短时记忆基数;返回执行按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据的操作,直至完成对目标指标数据集合中的全部指标数据的处理。
如果当前指标数据不在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为原始数据标记,存储当前指标数据的指标值,并将当前指标数据的指标值设置为与目标指标数据集合对应的新的短时记忆基数。即如果当前指标数据不在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则在存储时,存储当前指标数据的指标值原值,并且并将当前指标数据的指标值设置为与目标指标数据集合对应的新的短时记忆基数。
图1f为本发明实施例一提供的一种对目标指标数据集合中的指标数据进行压缩存储的流程图。如图1f所示,对目标指标数据集合中的指标数据进行压缩存储具体包括:
步骤1、按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据。
步骤2、判断当前指标数据是否是所属指标数据分片的数据分片下标对应的众数:如果当前指标数据是与所属指标数据分片的数据分片下标对应的众数,则执行步骤3;如果当前指标数据不是与所属指标数据分片的数据分片下标对应的众数,则执行步骤4。
步骤3、将当前指标数据的标记字段设置为众数标记。
步骤4、判断当前指标数据是否在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内:如果当前指标数据在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则执行步骤5;如果当前指标数据不在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则执行步骤6。
步骤5、将当前指标数据的标记字段设置为短时记忆标记。
步骤6、将当前指标数据的标记字段设置为原始数据标记,存储当前指标数据的指标值,并将当前指标数据的指标值设置为与目标指标数据集合对应的新的短时记忆基数。
在一个具体实例中,针对以日为单位的各指标数据集合执行以下操作:按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据。定位当前指标数据所属指标数据分片的数据分片下标。判断当前指标数据是否是所属指标数据分片的数据分片下标对应的众数。如果当前指标数据是与所属指标数据分片的数据分片下标对应的众数,则将当前指标数据的标记字段设置为众数标记“10”。如果当前指标数据不是与所属指标数据分片的数据分片下标对应的众数,则判断当前指标数据是否在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内。如果当前指标数据在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为短时记忆标记“01”。如果当前指标数据不在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为原始数据标记“00”,存储当前指标数据的指标值,并将当前指标数据的指标值设置为与目标指标数据集合对应的新的短时记忆基数,存储至基数值字段。在进行指标数据的指标值查询时,若指标数据的标记字段为众数标记“10”,则定位指标数据所属指标数据分片的数据分片下标,读取与该数据分片下标对应的众数的数值,并返回众数的数值。在进行指标数据的指标值查询时,若指标数据的标记字段为短时记忆标记“01”,则读取与该指标数据对应的短时记忆基数的数值,并返回短时记忆基数的数值。在进行指标数据的指标值查询时,若指标数据的标记字段为原始数据标记“00”,则读取该指标数据的指标值,并返回该指标数据的指标值。
为了验证上述方案的数据压缩的效果,采集了生产线10个主机设备(同一应用)1年(365天)的cpu使用率采集数据进行数据压缩。主机设备cpu使用率采集逻辑:每分钟采集一次。数据的原始格式如图1g所示。每个主机设备每天都有一份如图1g所示的数据,则10个主机设备一年的数据量有5256000条数据,占用80mb大小的存储空间。
针对10个主机设备,分别随机抽样了10天的数据,发现每日cpu使用率的趋势图都非常接近于图1h。在公司促销活动日期当天,cpu使用率趋势图如图1i所示。
数据压缩目标为:针对不同主机设备在每日的同一时刻大部分情况指标值相似的数据,通过众数压缩存储方式对指标数据进行压缩存储。针对每日流量在短时范围内变化不大的连续区间,通过短时记忆压缩存储方式对指标数据进行压缩存储。
每个主机设备(10个主机设备)各随机取30天的指标数据,共计300天的指标数据。即随机获取300个指标数据集合作为众数选举样本。预设的数据分片范围大小参数为5分钟。以5分钟为间隔,将各指标数据集合的时间范围0:00:00到23:59:59分成288个指标数据分片,并按照时间顺序分别将各指标数据分片的下标记作1-288。在指标数据分片的时间范围内采集的指标数据即为属于该指标数据分片的指标数据。将众数选举样本中的各指标数据集合中的相同数据分片下标的指标数据分片进行合并,得到与各数据分片下标对应的指标数据合并集合。获取各指标数据合并集合中出现次数最多的指标数据,作为与对应数据分片下标对应的众数。
针对以日为单位的各指标数据集合(共300天的数据)执行以下操作:按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据。定位当前指标数据所属指标数据分片的数据分片下标。判断当前指标数据是否是所属指标数据分片的数据分片下标对应的众数。如果当前指标数据是与所属指标数据分片的数据分片下标对应的众数,则将当前指标数据的标记字段设置为众数标记“10”。如果当前指标数据不是与所属指标数据分片的数据分片下标对应的众数,则判断当前指标数据是否在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内。如果当前指标数据在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为短时记忆标记“01”。如果当前指标数据不在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为原始数据标记“00”,存储当前指标数据的指标值,并将当前指标数据的指标值设置为与目标指标数据集合对应的新的短时记忆基数,存储至基数值字段。
数据压缩结果为:数据压缩后,占用存储空间6.36mb。
以前10个主机设备的指标数据各自存储,各自有60(分)*24(时)*365个查询键值,共计5256000个查询键值。由于每个主机设备的趋势图都相似,采用众数压缩存储方式压缩后,理论上查询键值可以只为时间,不需带上系统编号,因此10份键值数据,可以以一份存储。即查询键值理论上可以压缩为原来的1/10。
cpu使用率以双精度浮点型数值的数据格式存储,每个指标值占用64个比特。采用上述方案压缩后。理论上,大部分数据都只需要存储2个比特的标记位。少部分数据存储2个比特的标记位和64个比特的指标值。可以认为在数据量足够大的情况下,指标值数据最大能将原始数据压缩为原来的1/32。
本发明实施例提供了一种基于大数据的数据压缩方法,通过在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,待压缩历史指标数据包括以日为单位的多个指标数据集合,然后根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数,根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储,可以针对待压缩历史指标数据,根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储,可以通过众数压缩存储方式将指标数据集合中大量重复出现的众数进行压缩存储,并且可以通过短时记忆压缩存储方式在可接受误差范围内将偏离众数的指标数据集合再利用短时记忆的数据压缩方法进行压缩,可以在减少指标数据的存储空间的浪费的同时不丢失指标数据。
实施例二
图2为本发明实施例二提供的一种基于大数据的数据压缩方法的流程图。本发明实施例可以与上述一个或者多个实施例中各个可选方案结合,在本发明实施例中,根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数,可以包括:在以日为单位的多个指标数据集合中,随机获取设定数量的指标数据集合作为众数选举样本;针对众数选举样本中的每一个指标数据集合,根据预设的数据分片范围大小参数对指标数据集合中的指标数据进行分片,将指标数据集合中的指标数据分成多个指标数据分片,并按照时间顺序,确定与各指标数据分片对应的数据分片下标;将众数选举样本中的各指标数据集合中的相同数据分片下标的指标数据分片进行合并,得到与各数据分片下标对应的指标数据合并集合;获取各指标数据合并集合中出现次数最多的指标数据,作为与对应数据分片下标对应的众数。
如图2所示,本发明实施例的方法具体包括:
步骤201、在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据。
待压缩历史指标数据包括以日为单位的多个指标数据集合,指标数据集合包括在对应日期所采集的全部指标数据,指标数据集合中的指标数据按照时间顺序排列。
步骤202、在以日为单位的多个指标数据集合中,随机获取设定数量的指标数据集合作为众数选举样本。
众数选举样本是用于确定与各数据分片下标对应的众数的多个指标数据集合。在一个具体实例中,待压缩历史指标数据包括以日为单位的3650个指标数据集合。在以日为单位的3650个指标数据集合中,随机获取300个指标数据集合作为众数选举样本。
步骤203、针对众数选举样本中的每一个指标数据集合,根据预设的数据分片范围大小参数对指标数据集合中的指标数据进行分片,将指标数据集合中的指标数据分成多个指标数据分片,并按照时间顺序,确定与各指标数据分片对应的数据分片下标。
预设的数据分片范围大小参数是用于进行众数压缩存储的压缩参数,用于对基于时间序列的指标数据进行分片。预设的数据分片范围大小参数的大小取决于指标数据集合中的指标数据的数量。如果指标数据集合中的指标数据的数量偏少,可以适当调大预设的数据分片范围大小参数。
在一个具体实例中,预设的数据分片范围大小参数为5分钟。以日为单位的指标数据集合的时间范围为0:00:00到23:59:59。根据预设的数据分片范围大小参数对指标数据集合中的指标数据进行分片,将指标数据集合中的指标数据分成多个指标数据分片,即以5分钟为间隔,将指标数据集合的时间范围0:00:00到23:59:59分成288个指标数据分片。在指标数据分片的时间范围内采集的指标数据即为属于该指标数据分片的指标数据。
数据分片下标是指标数据分片的下标。在一个具体实例中,预设的数据分片范围大小参数为5分钟。以日为单位的指标数据集合的时间范围为0:00:00到23:59:59。以5分钟为间隔,将指标数据集合的时间范围0:00:00到23:59:59分成288个指标数据分片,按照时间顺序分别将各指标数据分片的下标记作1-288。
步骤204、将众数选举样本中的各指标数据集合中的相同数据分片下标的指标数据分片进行合并,得到与各数据分片下标对应的指标数据合并集合。
各指标数据合并集合中包括各指标数据集合中的相同数据分片下标的指标数据。
步骤205、获取各指标数据合并集合中出现次数最多的指标数据,作为与对应数据分片下标对应的众数。
众数是一批数据集合中出现次数最多的数。示例性的:数据集合为{1,2,1,3,4,5,1,8},该数据集合中1的出现次数最多,则数据集合的众数为1。
可选的,获取各指标数据合并集合中出现次数最多的指标数据,作为与对应数据分片下标对应的众数,并对与各数据分片下标对应的众数进行存储。
可选的,将与各数据分片下标对应的众数存储至预设的数据表中。
步骤206、根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储。
本发明实施例提供了一种基于大数据的数据压缩方法,通过在以日为单位的多个指标数据集合中,随机获取设定数量的指标数据集合作为众数选举样本,然后针对众数选举样本中的每一个指标数据集合,根据预设的数据分片范围大小参数对指标数据集合中的指标数据进行分片,将指标数据集合中的指标数据分成多个指标数据分片,并按照时间顺序,确定与各指标数据分片对应的数据分片下标;将众数选举样本中的各指标数据集合中的相同数据分片下标的指标数据分片进行合并,得到与各数据分片下标对应的指标数据合并集合;获取各指标数据合并集合中出现次数最多的指标数据,作为与对应数据分片下标对应的众数,可以根据随机获取的设定数量的指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数。
实施例三
图3为本发明实施例三提供的一种基于大数据的数据压缩装置的结构示意图。该装置可采用软件和/或硬件的方式实现,并一般可集成在计算机设备中。如图3所示,所述装置包括:数据获取模块301、数据分片模块302以及数据压缩模块303。
其中,数据获取模块301,用于在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,待压缩历史指标数据包括以日为单位的多个指标数据集合,指标数据集合包括在对应日期所采集的全部指标数据,指标数据集合中的指标数据按照时间顺序排列;数据分片模块302,用于根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数;数据压缩模块303,用于根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储。
本发明实施例提供了一种基于大数据的数据压缩装置,通过在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,待压缩历史指标数据包括以日为单位的多个指标数据集合,然后根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数,根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储,可以针对待压缩历史指标数据,根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储,可以通过众数压缩存储方式将指标数据集合中大量重复出现的众数进行压缩存储,并且可以通过短时记忆压缩存储方式在可接受误差范围内将偏离众数的指标数据集合再利用短时记忆的数据压缩方法进行压缩,可以在减少指标数据的存储空间的浪费的同时不丢失指标数据。
在上述各实施例的基础上,数据分片模块302可以包括:样本获取单元,用于在以日为单位的多个指标数据集合中,随机获取设定数量的指标数据集合作为众数选举样本;数据分片单元,用于针对众数选举样本中的每一个指标数据集合,根据预设的数据分片范围大小参数对指标数据集合中的指标数据进行分片,将指标数据集合中的指标数据分成多个指标数据分片,并按照时间顺序,确定与各指标数据分片对应的数据分片下标;分片合并单元,用于将众数选举样本中的各指标数据集合中的相同数据分片下标的指标数据分片进行合并,得到与各数据分片下标对应的指标数据合并集合;众数确定单元,用于获取各指标数据合并集合中出现次数最多的指标数据,作为与对应数据分片下标对应的众数。
在上述各实施例的基础上,基于大数据的数据压缩装置可以还包括:基数获取模块,用于获取各指标数据集合中的第一条指标数据的指标值作为与各指标数据集合对应的短时记忆基数。
在上述各实施例的基础上,数据压缩模块303可以包括:数据获取单元,用于按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据;众数判断单元,用于判断当前指标数据是否是与所属指标数据分片的数据分片下标对应的众数;第一标记设置单元,用于如果当前指标数据是与所属指标数据分片的数据分片下标对应的众数,则将当前指标数据的标记字段设置为众数标记;操作返回单元,用于返回执行按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据的操作,直至完成对目标指标数据集合中的全部指标数据的处理。
在上述各实施例的基础上,数据压缩模块303可以还包括:基数判断单元,用于如果当前指标数据不是与所属指标数据分片的数据分片下标对应的众数,则判断当前指标数据是否在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内;第二标记设置单元,用于如果当前指标数据在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为短时记忆标记;操作返回单元,用于返回执行按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据的操作,直至完成对目标指标数据集合中的全部指标数据的处理。
在上述各实施例的基础上,数据压缩模块303可以还包括:第三标记设置单元,用于如果当前指标数据不在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为原始数据标记,存储当前指标数据的指标值,并将当前指标数据的指标值设置为与目标指标数据集合对应的新的短时记忆基数;操作返回单元,用于返回执行按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据的操作,直至完成对目标指标数据集合中的全部指标数据的处理。
上述基于大数据的数据压缩装置可执行本发明任意实施例所提供的基于大数据的数据压缩方法,具备执行基于大数据的数据压缩方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四提供的一种计算机设备的结构示意图,如图4所示,该计算机设备包括处理器410、存储器420、输入装置430和输出装置440;计算机设备中处理器410的数量可以是一个或多个,图4中以一个处理器410为例;计算机设备中的处理器410、存储器420、输入装置430和输出装置440可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种基于大数据的数据压缩方法对应的程序指令/模块(例如,一种基于大数据的数据压缩装置中的数据获取模块301、数据分片模块302以及数据压缩模块303)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的一种基于大数据的数据压缩方法。也即,该程序被处理器执行时实现:在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,待压缩历史指标数据包括以日为单位的多个指标数据集合,指标数据集合包括在对应日期所采集的全部指标数据,指标数据集合中的指标数据按照时间顺序排列;根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数;根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储。
存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入,可以包括键盘和鼠标等。输出装置440可包括显示屏等显示设备。
在上述各实施例的基础上,处理器410是设置为通过以下方式根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数:在以日为单位的多个指标数据集合中,随机获取设定数量的指标数据集合作为众数选举样本;针对众数选举样本中的每一个指标数据集合,根据预设的数据分片范围大小参数对指标数据集合中的指标数据进行分片,将指标数据集合中的指标数据分成多个指标数据分片,并按照时间顺序,确定与各指标数据分片对应的数据分片下标;将众数选举样本中的各指标数据集合中的相同数据分片下标的指标数据分片进行合并,得到与各数据分片下标对应的指标数据合并集合;获取各指标数据合并集合中出现次数最多的指标数据,作为与对应数据分片下标对应的众数。
在上述各实施例的基础上,处理器410还执行以下操作:获取各指标数据集合中的第一条指标数据的指标值作为与各指标数据集合对应的短时记忆基数。
在上述各实施例的基础上,处理器410是设置为通过以下方式根据所述与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储:按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据;判断当前指标数据是否是所属指标数据分片的数据分片下标对应的众数;如果当前指标数据是与所属指标数据分片的数据分片下标对应的众数,则将当前指标数据的标记字段设置为众数标记;返回执行按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据的操作,直至完成对目标指标数据集合中的全部指标数据的处理。
在上述各实施例的基础上,处理器410在判断当前指标数据是否是与所属指标数据分片的数据分片下标对应的众数之后,还执行以下操作:如果当前指标数据不是与所属指标数据分片的数据分片下标对应的众数,则判断当前指标数据是否在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内;如果当前指标数据在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为短时记忆标记;返回执行按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据的操作,直至完成对目标指标数据集合中的全部指标数据的处理。
在上述各实施例的基础上,处理器410在判断当前指标数据是否在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内之后,还执行以下操作:如果当前指标数据不在与目标指标数据集合对应的短时记忆基数的上下浮动可接受百分比范围内,则将当前指标数据的标记字段设置为原始数据标记,存储当前指标数据的指标值,并将当前指标数据的指标值设置为与目标指标数据集合对应的新的短时记忆基数;返回执行按时间顺序在目标指标数据集合中获取一条指标数据作为当前指标数据的操作,直至完成对目标指标数据集合中的全部指标数据的处理。
实施例五
本发明实施例五还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的基于大数据的数据压缩方法。当然,本发明实施例所提供的一种计算机可读存储介质,其可以执行本发明任意实施例提供的一种基于大数据的数据压缩方法中的相关操作。也即,该计算机程序被处理器执行时实现:在检测到大数据压缩请求时,获取与大数据决策请求对应的待压缩历史指标数据,待压缩历史指标数据包括以日为单位的多个指标数据集合,指标数据集合包括在对应日期所采集的全部指标数据,指标数据集合中的指标数据按照时间顺序排列;根据以日为单位的多个指标数据集合、以及预设的数据分片范围大小参数,得到与各数据分片下标对应的众数;根据与各数据分片下标对应的众数、以及与各指标数据集合对应的短时记忆基数,确定各指标数据集合中的指标数据的标记字段,对各指标数据集合中的指标数据进行压缩存储。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述一种基于大数据的数据压缩装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。