会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 电脑零配件 / 重排序缓冲区 / 基于缓冲池的数据缓存排序在线处理方法

基于缓冲池的数据缓存排序在线处理方法

阅读:211发布:2020-05-13

IPRDB可以提供基于缓冲池的数据缓存排序在线处理方法专利检索,专利查询,专利分析的服务。并且基于缓冲池的数据缓存排序在线处理方法,属于互联网领域,为了解决目前常见的多线程下载软件对于下载数据乱序和重复的节目批量并发下载,不能实现基于内存的下载数据在线缓存、排序和去重,因而无法支持实时在线的识别、检索等处理的问题。本发明将所有缓冲区组织成缓冲区池,采用多个缓冲区缓存同一节目的下载数据。在接收节目数据包后,先查询节目的下载日志,若无新数据则丢弃不做任何处理,否则:首先选择合适的节目已有缓冲区接收数据,若无合适缓冲区且允许的情况下,申请新缓冲区接收数据;然后更新下载日志;最后调用分析处理模块将该缓冲区中排好的数据取走处理。重复上述过程,直至节目下载完成,将节目分配的缓冲区释放到缓冲区池中。?,下面是基于缓冲池的数据缓存排序在线处理方法专利的具体信息内容。

1.基于缓冲池的数据缓存排序在线处理方法,在计算机系统内存中设置缓冲池,缓冲池中设置多个缓冲区,所有缓冲区组织成链表集中管理,其特征在于,为每个节目创建下载日志,用于记录节目已下载数据的偏移量范围,并设置节目的生命周期初始值为k,k为自然数,且k>0,对接收到的节目下载数据进行基于缓冲池的数据缓存排序在线处理方法,包括以下步骤:步骤一、接收下载模块下载的节目数据包,节目数据包中含有的信息有节目ID、起始地址、字节数、偏移量,步骤二、查询节目的下载日志,判断所述节目数据包中的数据是否下载过,判断结果为是,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数据包;

判断结果为否,执行步骤三;

步骤三、获取所述节目数据包的信息,并写入下载日志,计算节目数据包中的下载数据与所有缓冲区的距离中的最小距离iMinDist,最小距离对应的缓冲区命名为PInBuffer;

步骤四、判断条件iMinDist<0是否成立,判断结果为是,执行步骤七,

判断结果为否,执行步骤五;

步骤五、判断iMinDist是否大于缓冲区申请阈值,且节目拥有的缓冲区数小于缓冲区数量上限,判断结果为是,则执行步骤六;

判断结果为否,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数据包;

步骤六、申请新的缓冲区,并且做如下赋值:PInBuffer=新申请缓冲区;

步骤七、将所述节目数据包中的新数据存入缓冲区PInBuffer中,并返回缓冲区PInBuffer中第一块连续数据的字节数、首字节指针,将节目数据包中的下载数据的偏移量范围记录到该节目的下载日志中,并将节目生命期重新置为初始值k;

步骤八、调用分析处理程序,从缓冲区PInBuffer中将排好序的连续字节数据取出,分析处理程序返回取出的字节数m;

步骤九、判断条件m>0是否成立,

判断结果为是,执行步骤十,

判断结果为否,结束本次操作,返回步骤一接收下一个节目数据包;

步骤十、删除缓冲区PInBuffer中的前m个字节数据,并更新缓冲区PInBuffer的状态信息;

重复执行步骤一至步骤十,同时系统周期的将节目的生命周期做减法操作,直至该节目的生命周期小于等于0,表示该节目下载完毕,释放该节目所占用的缓冲区,完成对该节目的数据缓存排序的在线处理。

2.根据权利要求1所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,获取所述节目数据包与所有缓冲区的距离中的最小距离iMinDist的过程为:按如下公式计算节目数据包与每个缓冲区块的距离Dist :Dist=min(数据包偏移量+数据包长度-缓冲区原始偏移量,数据包偏移量-缓冲区目前偏移量-缓冲区长度),其中,

缓冲区原始偏移量:是指缓冲区刚刚申请到时,所保存的第一个数据包的偏移量,即,缓冲区获取后保存的第一个字节数据的偏移量;

缓冲区目前偏移量:是指目前缓冲区中第一个字节数据对应的偏移量,将数据包与每个缓冲区块的距离Dist 中的最小值作为节目数据包与所有缓冲区的距离中的最小距离iMinDist。

3.根据权利要求1所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,步骤五缓冲区数量上限的设置方法为:缓冲区数量上限= ,

其中, 为大于1的系数,并根据缓冲池利用率动态调整其数值。

4.根据权利要求3所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,的动态调整过程为:当缓冲池利用率η 小于阈值 时,按一定幅度增加 的数值,如5%~50%;

当缓冲池利用率η 超过阈值 时,按一定幅度减小 的数值,如10%~50%;

其中,缓冲池利用率η 按如下公式计算:

阈值 的数值取0.6~0.9。

5.根据权利要求1所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,步骤六申请新的缓冲区的方法为:从缓冲池中缓冲区链表的头部或尾部取下一个缓冲区作为节目下载数据的新的缓冲区。

6.根据权利要求1所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,释放该节目所占用的缓冲区的方法为:当一个节目下载、处理完毕,将该节目申请的所有缓冲区依次挂到缓冲池中缓冲区链表的尾部或头部。

7.根据权利要求1所述的基于缓冲池的数据缓存排序在线处理方法,其特征在于,将所述节目数据包中的下载数据存入缓冲区PInBuffer中的过程为:步骤a、判断节目数据包的数据与缓冲区PInBuffer内已有数据是否不连续,即是否存在空白块,判断结果为是,则记录空白块的起始位置和长度,然后分别执行步骤b和步骤c,判断结果为否,则执行步骤d,再执行步骤f,步骤b、判断节目数据包中的数据与缓冲区PInBuffer内的已有的空白块是否有交叠,判断结果为是,则修正相应空白块的位置和长度,然后执行步骤d,判断结果为否,则执行步骤d,

步骤c、判断节目数据包中的数据是否覆盖缓冲区PInBuffer内的已有的空白块,判断结果为是,删除该空白块,然后执行步骤d,判断结果为否,执行步骤d,

步骤d、将所述节目数据包写入缓冲区PInBuffer内,步骤e、在缓冲区PInBuffer中具有空白块的情况下,判断缓冲区PInBuffer的空闲率是否小于空闲率阈值下限BufFull1,BufFull1取50%~85%,判断结果为是,将第一个空白块和第一块空白块之前的数据移出缓冲区PInBuffer,结束本次操作,判断结果为否,结束本次操作,步骤f、在缓冲区PInBuffer中无空白块的情况下,判断缓冲区PInBuffer的空闲率是否小于空闲率阈值上限BufFull2,BufFull2取90%~95%,判断结果为是,将缓冲区PInBuffer中的前h 个字节数据移除,结束本次操作,判断结果为否,结束本次操作,其中,h按如下公式计算:

上式中的c为比例系数阈值,满足如下关系:,

BufFull2满足条件:

说明书全文

基于缓冲池的数据缓存排序在线处理方法

技术领域

[0001] 本发明涉及基于缓冲池的数据缓存排序在线处理方法,具体包括数据的缓存、去重和排序方法,属于互联网领域。

背景技术

[0002] 近年来,随着计算机技术、网络技术、通信技术及多媒体技术的迅猛发展,多媒体信息的数据量急剧增多,互联网上存在着难以准确估计的大量的多媒体数据,既有以文件为单位可一次性全部获取的静态多媒体数据,也有以数据流的形式在网络中传输的动态多媒体数据。在对互联网中的多媒体数据进行分析处理时,需要首先将多媒体数据从互联网下载,然后分析处理。而且在多媒体数据分析处理中,通常需要具有一定长度的连续数据,才能解码出相应的视频、音频数据片段,以便进行多媒体数据的内容分析。为叙述方便,以下将网络中的静态多媒体文件或动态多媒体数据流通称为节目。
[0003] 目前常见的多线程下载软件,如迅雷、FlashGet等,通常采用按下载文件大小直接在硬盘上创建多媒体文件,而后以向硬盘文件填充的方式下载数据。当遇到下述情况时无法使用:(1)为了提高效率,采用多用户多线程的下载方式从网络中下载同一节目;
在多用户、多线程下载时,一方面节目的总下载速度快,另一方面每个线程下载的起始偏移量和速度都可能不同,因此一个节目的下载数据将会以偏移量分布近似随机的形式,乱序、重复地到达。所以,若采用文件缓存方式下载,同时读写的文件数量多、下载的数据量大、数据在文件中的写入位置频繁变化,因而硬盘读写速度将比通常情况慢很多,甚至低于网络媒体数据的下载速度,无法满足系统对下载数据量大的要求。
[0004] (2)为了提高效率,采用在线分析的方式,要求对接收到的节目数据进行实时分析处理;目前以文件方式接收下载数据的软件都是以数据下载为最终目标,不考虑需要尽快做分析处理的实时操作。但在互联网多媒体数据分析处理系统中,下载数据只是前端环节,下载后需要尽快分析处理,并且不同多媒体数据分析处理技术对被处理数据的连续长度有不同要求,采用文件方式接收下载数据无法及早从下载数据中降能处理的连续多媒体数据片段及早分析处理,即,无法满足系统对下载数据进行实时分析处理的要求,同时也不便于和系统中的分析处理模块接口。
[0005] (3)系统从互联网持续、海量地下载大量节目数据。
[0006] 在持续、大量地下载网络媒体数据的情况下,受计算机系统可用内存数量的限制,无法在内存中缓存整个媒体文件。
[0007] 此外,在采用多用户多线程的下载方式从网络中下载同一节目时,下载数据会存在大量重复,同时可能有少量丢失,在进行实时分析时也需要考虑采取相应的策略,而目前还没有较好的处理方法。

发明内容

[0008] 本发明为了解决从互联网以多用户、多线程方式下载大量多媒体节目数据时,目前常见的多线程下载软件对于下载数据乱序和重复的节目批量并发下载,不能实现基于内存的下载数据在线缓存、排序和去重,因而无法支持实时在线的识别、检索等处理的问题,本发明提供了基于缓冲池对数据进行缓存排序的在线处理方法。
[0009] 本发明在计算机系统内存中设置缓冲池,缓冲池中设置多个缓冲区,所有缓冲区组织成链表集中管理,为每个节目创建下载日志,用于记录节目已下载数据的偏移量范围,并设置节目的生命周期初始值为k,k为自然数,且k>0,对接收到的节目下载数据进行基于缓冲池的数据缓存排序在线处理方法,包括以下步骤:步骤一、接收下载模块下载的节目数据包,节目数据包中含有的信息有节目ID、起始地址、字节数、偏移量,
步骤二、查询节目的下载日志,判断所述节目数据包中的数据是否下载过,判断结果为是,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数据包;
判断结果为否,执行步骤三;
步骤三、获取所述节目数据包的信息,并写入下载日志,计算节目数据包中的下载数据与所有缓冲区的距离中的最小距离iMinDist,最小距离对应的缓冲区命名为PInBuffer;
步骤四、判断条件iMinDist<0是否成立,
判断结果为是,执行步骤七,
判断结果为否,执行步骤五;
步骤五、判断iMinDist是否大于缓冲区申请阈值,且节目拥有的缓冲区数小于缓冲区数量上限,
判断结果为是,则执行步骤六;
判断结果为否,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数据包;
步骤六、申请新的缓冲区,并且做如下赋值:PInBuffer=新申请缓冲区;
步骤七、将所述节目数据包中的新数据存入缓冲区PInBuffer中,并返回缓冲区PInBuffer中第一块连续数据的字节数、首字节指针,将节目数据包中的下载数据的偏移量范围记录到该节目的下载日志中,并将节目生命期重新置为初始值k;
步骤八、调用分析处理程序,从缓冲区PInBuffer中将排好序的连续字节数据取出,分析处理程序返回取出的字节数m;
步骤九、判断条件m>0是否成立,
判断结果为是,执行步骤十,
判断结果为否,结束本次操作,返回步骤一接收下一个节目数据包;
步骤十、删除缓冲区PInBuffer中的前m个字节数据,并更新缓冲区PInBuffer的状态信息;
重复执行步骤一至步骤十,同时系统周期的将节目的生命周期做减法操作,直至该节目的生命周期小于等于0,表示该节目下载完毕,释放该节目所占用的缓冲区,完成对该节目的数据缓存排序的在线处理。
[0010] 本发明的优点:①在系统全局设立缓冲池,内存使用量可控;②每个节目独立管理,采用多个缓冲区对同一节目的下载数据进行缓存、排序与去重,根据下载数据的到达情况自动申请增加缓冲区,能自适应于节目的多线程、多用户下载特点;③实时性好,每次接收到新的数据包都将缓冲区内排好序的数据长度等信息送给实时分析处理模块,以便数据能被尽早处理;④对数据缺失采取尽最大努力策略等待其到达。

附图说明

[0011] 图1是本发明方法流程图。

具体实施方式

[0012] 具体实施方式一:下面结合图1说明本实施方式,本实施方式在计算机系统内存中设置缓冲池,缓冲池中设置多个缓冲区,所有缓冲区组织成链表集中管理,为每个节目创建下载日志,用于记录节目已下载数据的偏移量范围,并设置节目的生命周期初始值为k,k为自然数,且k>0,对接收到的节目下载数据进行基于缓冲池的数据缓存排序在线处理方法,包括以下步骤:步骤一、接收下载模块下载的节目数据包,节目数据包中含有的信息有节目ID、起始地址、字节数、偏移量,
步骤二、查询节目的下载日志,判断所述节目数据包中的数据是否下载过,判断结果为是,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数据包;
判断结果为否,执行步骤三;
步骤三、获取所述节目数据包的信息,并写入下载日志,计算节目数据包中的下载数据与所有缓冲区的距离中的最小距离iMinDist,最小距离对应的缓冲区命名为PInBuffer;
获取所述节目数据包与所有缓冲区的距离中的最小距离iMinDist的过程为:
按如下公式计算节目数据包与每个缓冲区块的距离Dist :
Dist=min(数据包偏移量+数据包长度-缓冲区原始偏移量,
数据包偏移量-缓冲区目前偏移量-缓冲区长度),
其中,
缓冲区原始偏移量:是指缓冲区刚刚申请到时,所保存的第一个数据包的偏移量,即,缓冲区获取后保存的第一个字节数据的偏移量;
缓冲区目前偏移量:是指目前缓冲区中第一个字节数据对应的偏移量,
将数据包与每个缓冲区块的距离Dist 中的最小值做为节目数据包与所有缓冲区的距离中的最小距离iMinDist。
[0013] 步骤四、判断条件iMinDist<0是否成立,判断结果为是,执行步骤七,
判断结果为否,执行步骤五;
步骤五、判断iMinDist是否大于缓冲区申请阈值,且节目拥有的缓冲区数小于缓冲区数量上限,
判断结果为是,则执行步骤六;
判断结果为否,则丢弃所述节目数据包不做任何处理,返回步骤一接收下一个节目数据包;
步骤六、申请新的缓冲区,并且做如下赋值:PInBuffer=新申请缓冲区;
步骤七、将所述节目数据包中的新数据存入缓冲区PInBuffer中,并返回缓冲区PInBuffer中第一块连续数据的字节数、首字节指针,将节目数据包中的下载数据的偏移量范围记录到该节目的下载日志中,并将节目生命期重新置为初始值k;
步骤八、调用分析处理程序,从缓冲区PInBuffer中将排好序的连续字节数据取出,分析处理程序返回取出的字节数m;
步骤九、判断条件m>0是否成立,
判断结果为是,执行步骤十,
判断结果为否,结束本次操作,返回步骤一接收下一个节目数据包;
步骤十、删除缓冲区PInBuffer中的前m个字节数据,并更新缓冲区PInBuffer的状态信息;
重复执行步骤一至步骤十,同时系统周期的将节目的生命周期做减法操作,直至该节目的生命周期小于等于0,表示该节目下载完毕,释放该节目所占用的缓冲区,完成对该节目的数据缓存排序的在线处理。
[0014] 采用多缓冲区的方式缓存同一节目的下载数据,并进行缓存排序与去重操作:每个缓冲区对应一个偏移量,接收从该偏移量开始以缓冲区长度为范围区间的数据,并根据接收数据的偏移量写入缓冲区,即相当于在节目上有多个长度一定的接收窗口,落在接收窗口内的数据才会被相对应的缓冲区接收、排序,并同时记录在该节目的下载日志中,落在窗口外的数据则被丢弃。随着数据接收、排序的进行,每当缓冲区接收了新数据后,都返回缓冲区首部连续数据的长度,若满足处理程序对长度的要求,则移出缓冲区,修正缓冲区的偏移量,即缓冲区对应的接收窗口在节目上向前移动,移动的长度为从缓冲区中取走的数据字节数。因为在此过程中对下载的节目数据包都按其自身的在节目中的偏移量在缓冲区中进行缓存操作,因此,虽然下载的数据可能是随机的形式,是乱序的,但经过缓冲池中处理过的数据都是排好序的了。
[0015] 考虑数据下载中会存在大量重复,为避免重复处理,在内存中为每个节目创建一个接收数据的下载日志,用于记录节目已接收到的全部数据的偏移量区间范围。当有下载数据包到达时,首先搜索该下载日志,对于已接收偏移量范围内的数据丢弃不作任何处理,对于新数据进行缓冲区重排操作。这样能有效减少对重复的数据的反复重排和处理。
[0016] 步骤一所述的节目数据包由下载模块下载后,在利用多媒体分析处理模块进行数据处理之前,先利用本发明所述的缓存排序算法进行缓存、排序和去重。本发明的根本思想是在缓冲池中进行处理,然后再发送给多媒体分析处理模块进行分析处理的实时操作,以便及时对网络数据做出相应管理操作,或者分析后再存储到硬盘上,这样处理过的数据已经排好序、去掉了重复数据,可以直接存在硬盘上,避免了在硬盘上频繁操作,读写速度慢情况的发生。
[0017] 为了控制对内存的消耗,并充分利用系统的内存资源,在系统全局设置缓冲区池:根据系统可用于内存和单个缓冲区大小,创建一定数量的缓冲区,并组织成链表形式集中管理,作为缓冲池。在节目下载过程中,使用的所有缓冲区均从该缓冲池中申请得到,当下载结束后释放所有缓冲区给缓冲池。关于缓冲池的具体情况如下:
(1)缓冲池创建:根据系统可用于内存大小,申请一个大的内存区块,在区块内部划分缓冲区,并将缓冲区组织成链表形式集中管理,作为缓冲池。同时,在系统需要同时处理的下载节目数量上限确定的情况下,根据缓冲池规模(创建时的缓冲区总数)、缓冲池利用率动态设置每个节目所能使用的缓冲区数量上限为:

其中: 是大于1的系数,在系统运行过程中,根据缓冲池的利用率动态调整其数值。
[0018] 的动态调整过程为:当缓冲池利用率η 小于阈值 时,按一定幅度增加 的数值,如5%~50%;
当缓冲池利用率η 超过阈值 时,按一定幅度减小的数值,如10%~50%;
其中,缓冲池利用率η 按如下公式计算:

阈值 的数值取0.6~0.9。
[0019] (2)缓冲区申请:在节目下载过程中,需要申请新缓冲区时,从缓冲池中缓冲区链表的头部或尾部取下一个缓冲区作为节目下载数据的新的缓冲区;(3)节目缓冲区释放:当一个节目下载、处理完毕,将其申请的所有缓冲区依次挂到缓冲池中缓冲区链表的尾部或头部。
[0020] 在缓冲区接收数据时,若接收到的数据存在空白区块,即,接收到的数据与已有数据不连续,则记录空白块的起始位置和长度,并尽最大努力等待空白块内的数据到达。接收数据时,缓冲区内的空白块可能有多个。若缓冲区即将写满,而缓冲区空白块的数据仍未到达,这可能是下载数据发生了丢失无法到达,而且空白块之前的数据长度不足,用户无法使用,此时必须腾出空间接收新下载数据,则将第一个空白块和之前的数据移出缓冲区。
[0021] 具体将所述节目数据包中的新数据存入缓冲区PInBuffer中的过程为:步骤a、判断节目数据包的数据与缓冲区PInBuffer内已有数据是否不连续,即是否存在空白块,
判断结果为是,则记录空白块的起始位置和长度,然后分别执行步骤b和步骤c,判断结果为否,则执行步骤d,再执行步骤f,
步骤b、判断节目数据包中的数据与缓冲区PInBuffer内的已有的空白块是否有交叠,判断结果为是,则修正相应空白块的位置和长度,然后执行步骤d,
判断结果为否,则执行步骤d,
步骤c、判断节目数据包中的数据是否覆盖缓冲区PInBuffer内的已有的空白块,判断结果为是,删除该空白块,然后执行步骤d,
判断结果为否,执行步骤d,
步骤d、将所述节目数据包写入缓冲区PInBuffer内,
步骤e、在缓冲区PInBuffer中具有空白块的情况下,判断缓冲区PInBuffer的空闲率是否小于空闲率阈值下限BufFull1,BufFull1取50%~85%,
判断结果为是,将第一个空白块和第一块空白块之前的数据移出缓冲区PInBuffer,结束本次操作,判断结果为否,结束本次操作,
步骤f、在缓冲区PInBuffer中无空白块的情况下,判断缓冲区PInBuffer的空闲率是否小于空闲率阈值上限BufFull2,BufFull2取90%~95%,
判断结果为是,将缓冲区PInBuffer中的前h 个字节数据移除,结束本次操作,判断结果为否,结束本次操作,
其中,h按如下公式计算:

上式中的c为比例系数阈值,满足如下关系:

BufFull2满足条件:

高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用