海量片段数据汇聚的系统和方法技术方案

技术编号:7345847 阅读:205 留言:0更新日期:2012-05-18 01:24
本发明专利技术针对两种海量片段数据分别公开了海量片段数据汇聚的系统,包括客户端的片段上传模块,服务器端的缓存模块、验证库模块、文件存储模块、片段接收模块、片段处理模块、片段合并模块、片段汇聚模块;相应的本发明专利技术还分别公开了海量片段数据汇聚的方法。本发明专利技术采用消息队列服务、内存库、文件型数据库及守护进程等多种技术,能够高效的处理和合并海量片段数据。并采用严谨的合并策略,保证合并的正确性。

【技术实现步骤摘要】

本专利技术涉及计算机数据库领域,尤其涉及一种对海量片段数据进行处理,对其合并和汇聚的系统和方法。
技术介绍
在计算机领域中有这样一类文件,称其为片段,它们是某个整体文件或数据的一部分。且分为两种1、片段自身无独立意义,必须完全合并后,组成的整体才有意义。例如多媒体文件图片、视频、音乐。当上传时,为了上传速度快,以及少占用网络带宽,将其拆分为若干个小文件片段,然后分别上传这个文件片段,服务器端接收片段后,将其按照一定的规则合并。将合并后的完整文件保存在服务器端。此类片段是先有整体——切割为个体——上传到服务器端——服务器端将其重新汇聚为整体2、片段自身可以有独立意义,合并成后的完整文件也有意义。如包含数据信息的文本文件(xml格式等),这些文本文件可以单独产生,可以单独阅读和使用,而将其合并后,合并后的完整文本则是其它信息的合集。可以整体使用。此类片段是先有个体——上传到服务器端——服务器端将其汇聚为整体以上两种片段文件的数量都是不定的,由于上传片段的客户端不同,以及网络延时等原因,服务器端也是无序接收到这些片段的。因此对于此类文件,不仅其片段需要统计分析和保存,还需将其按照一定规则进行合并。对合并后的最终结果再进行相应处理和保存。当海量该类无序片段数据需要处理时,不仅需要处理的单个片段多,而且涉及到片段的合并规则,合并后的二次分析、统计以及保存,并且需要保证合并的正确性,单个片段需要验重,保证相同的片段只能被合并一次。不能将不是一个整体的片段合并为一体,因此这是一个复杂的处理过程,因此需要一种高效、快速、逻辑清晰的方法或框架。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种,本专利技术采用消息队列服务、内存库、文件型数据库及守护进程等多种技术,能够高效的处理和合并海量片段数据。并采用严谨的合并策略,保证合并的正确性。首先是针对第一种(片段自身无独立意义)海量片段数据的处理1、由于片段是某一文件的一部分,因此要带有此文件的唯一标识,好能通过此唯一标识识别出此片段属于哪个文件。本文称其为父ID,将父ID作为上传的片段文件名,每个片段上传时都带有此父ID。此ID将伴随片段数据走完整个处理流程。2、对于第一种片段(片段自身无独立意义),即被切割为片段的,将被切割的原始文件的MD5值作为文件的唯一标识,即片段的父ID3、服务器端接收到片段后,按照片段的MD5值到片段缓存库中进行验重,如果此片段在缓存库中已有,则不处理。即节省了服务器资源,又保证了不重复合并。合并时按照父ID 进行合并,即将具有相同父ID的片段合并在一起。对于第一种海量片段数据,本专利技术提供了一种海量片段数据汇聚的系统,包括客户端的片段上传模块,服务器端的缓存模块、验证库模块、文件存储模块、片段接收模块、片段处理模块、片段合并模块、片段汇聚模块;所述片段上传模块将片段数据上传到服务器端,所述片段数据带有片段数据信息,包括片段数据的父ID,所述片段数据的父ID为片段数据所属文件的HASH值;其中,此模块部署在客户端,按照策略,每个片段都带有父ID,然后将片段上传到服务器端。所述缓存模块包括3个消息队列,片段数据队列、待合并片段队列和合并结果待处理队列;所述消息队列采用后进先出的原则。其中,片段数据队列片段数据队列存放接收后未作任何处理的片段数据,队列采用后进先出的原则。待合并片段队列待合并片段队列存放验重后,等待合并操作的片段数据。队列采用后进先出的原则。合并结果待处理队列队列存放已合并后的数据信息,队列采用后进先出的原则。为了提高队列的读取和写入速度,此处可使用内存级缓存库。所述验证库模块存放已接收片段数据的HASH值; 其中,此处存放的是验重后的。数据不会有冗余。所述文件存储模块包括三部分,文件位置库、文件缓存库和文件最终存储库;所述文件位置库记录已接收到的片段数据信息,以及合并后的文件存放的位置是在文件缓存库中或者在文件最终存储中;文件缓存库存放尚未包含所有片段的文件;文件最终存储库保存包含所有片段的文件;其中,片段最终处理结果都是文件,互相之间都是独立的,没有复杂的关系,且是海量级别的数据,因而不适合存储在传统的关系型数据库中。所以将其存储于文件型数据库中。文件可以按访问频度分为两种,一种是尚未合并完全部片段的文件,这样的文件在之后的处理过程中会被经常的读取和更新,通常称之为热数据。另一种是合并完全部片段的文件,以后读取和更新的频度较低,称之为冷数据。热数据在所有文件数据中所占的比率较低,且读写频繁,所以将其存放在速度较快但空间有限的缓存库中较好。冷数据比率较高,读写次数有限,所以将其存放在速度一般但空间充足的文件级存储中较好。因此文件存储模块分三部分文件位置库、文件缓存库和文件最终存储。文件位置库记录已接收到的文件的片段信息,以及合并后的文件存放的位置,是存放在文件缓存库中还是文件最终存储中。文件缓存库存放尚未包含所有片段的文件,即热数据。文件最终存储上保存包含所有片段的文件,即冷数据。所述片段接收模块接收客户端上传的片段数据并存入片段数据队列队尾;也就是说,片段接收模块主要是接收上传的片段,接收的片段的接口可以采用http、 https、ssh、ftp、smb等服务。服务接收到片段后,将此片段存入片段数据队列队尾。片段接收模块不做其它工作,保证接收模块的高效性,能够实时接收所有其它服务传送过来的片段,将其放入队列中缓存并等待被处理。不会造成因为片段处理不过来,而无法接收新的片段。所述片段处理模块从片段数据队列队头获取片段数据,并计算所述片段数据的 HASH值,验证所述HASH值是否已经存放在验证库模块中,如果是则丢弃所述片段数据,否则将所述片段数据的HASH值存入验证库模块,并将所述片段数据存入待合并片段队列队尾;例如,从片段数据队列队头获取片段,并对片段数据做MD5,将其MD5值向片段验证库验证该片段是否已经接收过,如果片段验证库中有此MD5值,则此片段已经接收过,则不再重复处理此片段。减少冗余数据对系统的压力。若无此MD5值,则此片段没有接收过,先将此片段的MD5值存入片段验证库,以便下次验证,然后将此片段存入待合并片段队列队尾。所述片段合并模块从待合并片段队列队头获取片段数据,如果所获取的片段数据父ID未存在于文件位置库中,则将所述片段数据存入文件缓存库、文件位置库记录所述片段数据信息;否则从文件缓存库中取出与所述片段数据父ID相同的文件数据和所述片段数据进行合并,并将合并后的文件数据存入合并结果待处理队列队尾;也就是说,从待合并片段队列队头获取数据,先从文件位置库(内存库)查看此片段的父ID是否存在,若不存在,则表明此文件的片段第一次来,因而此文件只有一个片段,不需要合并操作,将片段作为初始文件存入文件缓存库。若此片段的父ID存在,则从文件缓存库中将此文件已合并的结果取出,并和刚从队列取出的片段进行合并,并将结果存入合并结果待处理队列队尾。所述片段汇聚模块从合并结果待处理队列队头获取文件数据,计算所述文件数据的HASH与文件数据的父ID进行对比,若所述文件数据的HASH与文件数据的父ID不相等, 则将所述文件数据存入文件缓存库;否则若所述文件数据的HASH与文件数据的父ID相等, 则将所述文件数据存入文件最终存储库,并更本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:王亮孙晋超杨祖明张栗伟
申请(专利权)人:北京安天电子设备有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术