一种数据压缩提供方法与流程

文档序号:14863686发布日期:2018-07-04 09:29阅读:217来源:国知局
一种数据压缩提供方法与流程

本发明属于数据压缩领域,尤其涉及一种数据压缩提供方法。



背景技术:

信息压缩技术指使用较少位(bits)或字节(bytes)来表示信息的技术。压缩方法可检测并运用存在于信息中的结构,来建立一个较精简的表示方法,使得原始信息可重新建构成一个压缩后的版本。于一个信息传递环境中,信息压缩变得越来越重要。信息压缩技术可降低关联于带宽需求、输入/输出前置时间与通信延迟的成本,换句话说,可使用较少的时间来传递压缩后的信息。因此,需要一种信息压缩方法及系统,用以有效地压缩信息。

现有技术中的数据压缩提供方法不能基于数据接收端存储资源的可用情况进行数据压缩,都是以牺牲程序内存的基础上实现压缩效率的提升。基于上述诸多问题,现在亟需一种新的数据压缩提供方法,能够在开始进行数据压缩时考虑数据接收方的存储资源的可用情况,在获取数据接收端的接收能力的情况下,进行数据的分块压缩,使用可用有限的内存在较短时间完成同等数据的压缩,在不降低性能的情况下,降低程序的内存占用,使得运用较少机器就可以在较少时间进行数据压缩。

【发明数据】

为了解决现有技术中的上述问题,本发明采用的技术方案如下:一种数据压缩提供方法,其特征在于,该方法包括如下步骤:

步骤1:选择常用接收端或非常用接收端对客户端用户进行数据提供,以及基于数据优先级选择一个或多个常用接收端进行数据加载;

步骤2:数据源基于控制平台的选择,获取相应质量等级的数据,将该质量等级的数据进行分块和压缩后提供到相应常用接收端;

步骤3:常用接收端接收数据源提供的数据块,并将接收到的数据块按顺序保存到本地存储空间中;

进一步的,数据的优先级反映了数据源希望将数据提供给接收端的意愿的强烈,提供的意愿越强烈则优先级越高。

进一步的,该优先级由控制平台或数据端设置。

进一步的,对数据进行分块需要考虑接收端的可用存储资源情况。

进一步的,该可用存储资源情况包括接收端的可用接收缓存空间大小。

进一步的,该可用存储资源情况包括接收端的可用存储端口情况。

进一步的,当接收端的可用存储资源较多时将数据切分成较大的块,反之则切分成较小的块。

进一步的,该可用存储资源情况由接收端提供,该可用存储资源情况是实时发生变化的。

进一步的,接收端提供的可用存储资源情况为其分配给该数据端当次数据提供的存储资源情况,而非实际的所有可用存储资源情况。

进一步的,对数据进行分块需要考虑接收端的可用计算资源情况。

本发明的有益效果包括:能够在开始进行数据压缩时考虑数据接收端的存储/计算资源的可用情况,在获取数据接收端的接收能力的情况下,进行数据的分块压缩,使用可用有限的内存在较短时间完成同等数据的压缩,在不降低性能的情况下,降低程序的内存占用,使得运用较少机器就可以在较少时间进行数据压缩。

【附图说明】

此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:

图1是本发明的一种数据压缩提供方法的流程图;

图2是本发明的一种数据压缩提供系统的结构图。

【具体实施方式】

下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。

参见附图1,其示出了本发明的一种数据压缩提供方法的基本步骤:

步骤1:选择常用接收端或非常用接收端对客户端用户进行数据提供,以及基于数据优先级选择一个或多个常用接收端进行数据加载;

步骤2:数据源基于控制平台的选择,获取相应质量等级的数据,将该质量等级的数据进行分块和压缩后提供到相应常用接收端;

步骤3:常用接收端接收数据源提供的数据块,并将接收到的数据块按顺序保存到本地存储空间中;

参见附图2,是本发明所应用的一种数据压缩提供系统,该系统包括一个或多个数据源,一个或多个控制平台,一个或多个接收端,一个或者多个客户端。

基于上述系统,下面对本发明的一种数据压缩提供方法进行详细说明:

(1)客户端通过数据请求界面发出针对指定数据的数据请求,该请求中携带数据标识;该数据请求被发送给控制平台;数据请求中携带所请求的数据的需求参数(q,s);其中,q为数据质量,s为到达速度;其中,数据质量限定的所请求的数据的呈现质量,通常,数据质量越高数据的大小越大;而到达速度限定数据到达客户端的加载速度;数据质量和到达速度之间可能存在矛盾,当数据质量较高时,可能需要牺牲到达速度;

优选的:该数据请求界面通过客户端的应用程序、网页、特定功能来呈现,该呈现的数据由数据源提供;

(2)控制平台向该客户端对应的常用接收端组发送数据查询请求,每个常用接收端组根据数据标识从本地目录中查找客户端请求的数据,如果查找到所请求的数据,则返回所请求数据的数据质量作为响应,否则不做响应;

控制平台保存客户端及其常用接收端组的对应表;每个客户端对应的常用接收端组可能是相同或不同的(不同包括完全不同和部分不同);该对照表被控制平台实时更新;常用接收端组中的常用接收端选自和客户端之间的通信开销小于第一阈值的接收端;常用接收端做出一次响应,则其命中率增加1;每过一个时间周期命中率减少第一预设值,此时,如果命中率小于第二预设值,则将该命中率小于第二预设值的接收端从客户端对应的常用接收端组中删除;如果一接收端和该客户端之间的通信开销小于第一阈值,则将其增加入该客户端对应的常用接收端组,并将其命中率设置为一初始值;优选的:该初始值大于第二预设值;该第一预设值和第二预设值由控制平台设置;

(3)基于常用接收端的响应,选择常用接收端或非常用接收端对客户端用户进行数据提供,以及基于数据优先级选择一个或多个常用接收端进行数据加载;常用接收端和非常用接收端是相对的和动态变化的,一个接收端对一个客户端来说是常用的,对另一个客户端来说可能是不常用的,此时是常用的,进行一次更新后可能就不是常用的;

如果控制平台接收到常用接收端的响应,则根据响应常用接收端li及其返回的数据质量qli和需求参数(q,s)选择一个常用接收端提供数据;具体的:根据公式(1)计算每个响应常用接收端的平衡系数bi,其中ci为接收端li和客户端之间的通信开销;该通信开销值为动态值,需要定期的进行实时更新,w1为调整值,该调整值为控制平台设置的预设值;选择bi最小的常用接收端作为所选择的常用接收端;该常用接收端所能提供的数据质量以及到达速度和客户端的需求最接近;

优选的:当一个常用接收端能够提供多个质量等级的数据时,针对每个质量等级均计算该平衡系数值;其中,质量等级分为n个等级,分别为q1~qn;

如果控制平台接没有收到任何一个常用接收端的响应,则根据数据优先级等级ht选择一个或者多个常用接收端进行数据加载,并选择一个非常用接收端提供数据;其中优先级分为m个等级;该优先级反映了内容受用户喜爱的程度,受用户喜爱的程度越高,该优先级越高,反之则越低;优选的:该优先级反映了数据端希望将数据提供给客户端意愿的强烈程度;

选择一个非常用接收端,具体为:获取通信开销ci小于第二阈值的非常用接收端中能够提供数据质量等级大于等于q的非常用接收端组,如果组中元素的个数小于1,则通知用户等待;此时用户需要等待常用接收端数据加载后进行数据提供;否则,从该非常用接收端组中选择通信开销ci最小的非常用接收端作为所选择的非常用接收端;由该非常用接收端为客户端提供数据,具体为:获取大小为sb的数据块block,其中该sb=(w2×q)/min{ci},w2为调节因子,通信开销较大的情况下,先发送较小的数据块;如果该非常用接收端能够提供的数据质量大于q,则将该数据块block先进行有损压缩,将该数据块压缩为质量等级q的数据块q_block,然后对该经过有损压缩后的数据块q_block进行无损压缩成为数据块c_q_block,然后将该数据块c_q_block供给客户端;

根据数据优先级ht等级(ht为ht1~htm,其中ht1优先级最低,htm优先级最高)选择一个或者多个常用接收端进行数据加载,具体为:

(a)如果数据优先级p1×htm<ht=<htm;首先选择通信开销ci最小的常用接收端加载质量等级为q的数据,然后获取剩余常用接收端组中每个常用接收端的可用存储空间,将可用存储空间从大到小排列,选择排列前n-1的常用接收端分别加载除了质量等级q之外的n-1个质量等级的数据,每个常用接收端加载一个质量等级的数据;其中,p1为第一比率值;优选的:p1=90%;

(b)如果数据优先级p2×htm<ht=<p1×htm;首先选择通信开销ci最小的常用接收端加载质量等级为q的数据,然后获取剩余常用接收端组中每个常用接收端的可用存储空间,将可用存储空间从大到小排列,选择排列前(n-1)mod2的常用接收端分别加载除了质量等级q之外的(n-1)mod2个质量等级的数据,每个常用接收端加载一个质量等级的数据;

其中,p2为第二比率值;优选的:p1=80%;

(c)如果数据优先级p3×htm<ht=<p2×htm;首先选择通信开销ci最小的常用接收端加载质量等级为q的数据,然后获取剩余可用存储空间最大的常用接收端用于加载质量等级qn的数据,获取可用存储空间最小的常用接收端用于加载质量等级q1的数据;其中,p3为第三比率值;优选的:p1=50%;

(d)如果数据优先级ht=<p3×htm;则选择通信开销ci最小的常用接收端加载质量等级为q的数据,其中,p3为第三比率值;优选的:p1=50%;

(4)数据源基于控制平台的选择,获取相应质量等级的数据,将该质量等级的数据进行分块和压缩后提供到相应常用接收端;具体为:针对每个需要向其提供数据的常用接收端,数据源首先创建提供进程,该进程获取该常用接收端的可用接收缓存大小siz_buf,根据公式(2)计算数据分块大小siz_blk,其中cpmin_qk为质量等级qk数据对应的最小压缩率,pc为冗余百分比,pc为和压缩算法对应的预设值;

siz_blk=siz_buf/(cpmin_qk×(1+pc))(2)

进程将数据按从头到尾的顺序分成多个大小为siz_blk的块,不足1块大小的数据分成1块;在数据源的发送缓存空间中申请大小为siz_buf的空间,进程逐个的获取每个分块,将该分块经过压缩后保存到该大小为siz_buf的发送缓存空间中,然后将该压缩后的分块发送到对应的常用接收端中;在发送完成后,将该大小为siz_buf的空间释放后,进程进入休眠状态,在接收到常用接收端接收完成的消息后,该进程被唤醒并继续下一数据块的获取、压缩和发送,直到所有的数据块均被处理完毕为止;

由于数据源面向所有的接收端,因此其发送缓存空间非常有限,通过进程异步唤醒的方式,使得发送缓存空间在时间维度和空间维度上均可以实现共享,从而增加了空间的利用度;

优选的:质量等级及其对应的最小压缩率关联的保存在对照表中,该对照表保存在数据源的本地存储中;优选的pc=10%;

(5)常用接收端用于计算可用接收缓存大小siz_buf,接收数据源提供的数据块,并将接收到的数据块按顺序保存到本地存储空间中;具体为:常用接收端基于公式(3)计算可用接收缓存大小siz_buf;其中,qk为控制平台分配的要加载的数据质量,buf_all为该常用接收端当前全部可用接收缓存大小,par_cur为当前正在进行的并行加载的数量,par_all为该常用接收端支持的最大并行加载的数量;

siz_buf=buf_all×(qk/qk+q1)/(par_all-par_cur)(3)

常用接收端创建接收进程,该接收进程在接收缓存空间中申请大小为siz_buf的空间,将接收到的数据块存放在该空间中,接收完毕后该接收到的数据块按数据的逻辑顺序和数据标识关联保存载本地缓存空间中;常用接收端在当前数据块接收完毕后,发送数据块接收完毕消息给数据源以继续后续数据块的提供;该申请的大小为siz_buf的空间在数据加载过程中一直保留而不释放,直到数据对应的所有数据块均加载完毕后,进程释放该申请的接收缓存空间并结束接收进程;

常用接收端需要留出少量的空间,在超出支持的最大并行度之外还能允许最低服务质量的数据加载;在超出最大并行度之外的加载效率会大大降低,从而其服务质量相对较低;

(6)接收质量等级为q的数据的常用接收端提供数据给客户端;具体的:当该接收质量等级为q的数据的常用接收端接收到的数据块为所选择非常用接收端还没有提供给客户端的数据时,停止该非常用接收端的数据提供,改为由该常用接收端进行数据提供;也就是说:当常用接收端的加载速度追赶上非常用接收端的提供速度时,进行提供接收端的切换;

(7)客户端获取常用接收端或非常用接收端提供的数据块,将接收到的数据块进行解压缩后按数据的逻辑顺序和数据标识关联后保存在本地存储空间中;接收到的数据块不需要全部到齐,只要符合呈现顺序的数据块已经接收完毕,就可以将该数据块按呈现顺序呈现给用户;

还包括热点数据主动推送的步骤:

(8)数据源将新的热点数据提供给各个接收端;具体的:数据源获取活跃度高于第一活跃值的接收端组,获取该接收端组中每个接收端的可用存储空间大小,基于该存储空间的大小为该接收端提供相应质量的等级的数据;优选的:为可用存储空间较大的接收端提供质量等级较高的数据;

本发明的一种数据压缩提供方法,能够在开始进行数据压缩时考虑数据接收端的存储/计算资源的可用情况,在获取数据接收端的接收能力的情况下,进行数据的分块压缩,使用可用有限的内存在较短时间完成同等数据的压缩,在不降低性能的情况下,降低程序的内存占用,使得运用较少机器就可以在较少时间进行数据压缩。

以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。

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