CN103678293A - 一种数据存储方法及装置 - Google Patents

一种数据存储方法及装置 Download PDF

Info

Publication number
CN103678293A
CN103678293A CN201210314126.7A CN201210314126A CN103678293A CN 103678293 A CN103678293 A CN 103678293A CN 201210314126 A CN201210314126 A CN 201210314126A CN 103678293 A CN103678293 A CN 103678293A
Authority
CN
China
Prior art keywords
file
data
segmentation
data bag
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201210314126.7A
Other languages
English (en)
Other versions
CN103678293B (zh
Inventor
阮星华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201210314126.7A priority Critical patent/CN103678293B/zh
Publication of CN103678293A publication Critical patent/CN103678293A/zh
Application granted granted Critical
Publication of CN103678293B publication Critical patent/CN103678293B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据存储方法及装置。一种数据存储方法包括:预先选取编码算法,并对编码的取值区间进行分段;利用所述编码算法,对目标数据文件的标识信息进行编码;根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。应用本发明实施例提供的技术方案,预先选取适当的编码方式并且对编码的取值空间进行分段,然后根据对数据文件标识的编码结果,对处于同一分段中的数据文件进行整合存储。与现有技术相比,整合存储的方式减少了文件碎片,能够显著提高存储效率以及查询效率。

Description

一种数据存储方法及装置
技术领域
本发明涉及数据存储技术领域,特别是涉及一种数据存储方法及装置。 
背景技术
随着互联网的迅速发展,网络上的资源类型和数量不断增加。对于拥有数据资源的网站而言,对数据处理的各方面要求也在不断提高。例如,在海量数据的应用场景下,如何提高数据资源的存储效率、查询效率、处理效率、如何保证数据资源的稳定性,等等。 
以图片系统的数据存储为例,对于大规模的网站应用,例如用于改进图片搜索效果的图片标注系统,其需要处理的图片可能达到上百亿张甚至更高,这些图片分别从其他网站抓取,在图片标注系统进行处理后存储。这些图片的特点是数量大,且每个图片文件的体积相对较小,从存储的角度而言,大量以“碎片”形式的文件必然会影响存储效率。另一方面,存储的数据量越大,对于查询速度的影响也就越明显。 
发明内容
为解决上述技术问题,本发明实施例提供一种数据存储方法及装置,技术方案如下: 
本发明实施例提供一种数据存储方法,该方法包括: 
预先选取编码算法,并对编码的取值区间进行分段; 
利用所述编码算法,对目标数据文件的标识信息进行编码; 
根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。 
根据本发明方案的一种具体实施方式,所述对编码值位于相同分段的多个数据文件进行整合存储,包括: 
将编码值位于相同分段的多个数据文件整合存储为一个或多个文件数据包。 
根据本发明方案的一种具体实施方式,所述将编码值位于相同分段的多个数据文件整合存储为一个文件数据包,包括: 
在文件数据包大小超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分; 
在新划分得到的分段中,分别生成新的文件数据包并存储。 
根据本发明方案的一种具体实施方式,所述将编码值位于相同分段的多个数据文件整合存储为一个文件数据包,包括: 
在文件数据包所包含的数据文件数量超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分; 
在新划分得到的分段中,分别生成新的文件数据包并存储。 
根据本发明方案的一种具体实施方式,所述将编码值位于相同分段的多个数据文件整合存储为多个文件数据包,包括: 
在文件数据包大小超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。 
根据本发明方案的一种具体实施方式,所述将编码值位于相同分段的多个数据文件整合存储多个文件数据包,包括: 
在文件数据包所包含的数据文件数量超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。 
根据本发明方案的一种具体实施方式,所述方法还包括: 
为所述文件数据包生成索引信息,所述索引信息中至少包括:数据文件的索引键值、以及数据文件在文件数据包中的存储地址。 
根据本发明方案的一种具体实施方式,所述数据文件的索引键值为: 
该数据文件的标识信息、或者标识信息的编码值。 
根据本发明方案的一种具体实施方式,所述方法还包括: 
在生成索引信息后,根据数据文件的索引键值,对当前的索引信息进行 排序。 
根据本发明方案的一种具体实施方式,所述方法还包括: 
根据编码取值空间的分段结果以及对目标数据文件的编码结果,生成针对目标文件的多个任务包,所述任务包用于分配给不同的分布式任务执行模块。 
本发明实施例还提供一种数据存储装置,包括: 
分段单元,用于预先选取编码算法,并对编码的取值区间进行分段; 
编码单元,用于利用所述编码算法,对目标数据文件的标识信息进行编码; 
存储单元,用于根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。 
根据本发明方案的一种具体实施方式,所述存储单元,具体用于: 
将编码值位于相同分段的多个数据文件整合存储为一个或多个文件数据包。 
根据本发明方案的一种具体实施方式, 
所述分段单元具体用于:在文件数据包大小超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分; 
所述存储单元具体用于:在新划分得到的分段中,分别生成新的文件数据包并存储。 
根据本发明方案的一种具体实施方式, 
所述分段单元具体用于:在文件数据包所包含的数据文件数量超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分; 
所述存储单元具体用于:在新划分得到的分段中,分别生成新的文件数据包并存储。 
根据本发明方案的一种具体实施方式, 
所述存储单元具体用于:在文件数据包大小超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。 
根据本发明方案的一种具体实施方式, 
所述存储单元具体用于:在文件数据包所包含的数据文件数量超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。 
根据本发明方案的一种具体实施方式,所述装置还包括: 
索引信息生成单元,用于为所述文件数据包生成索引信息,所述索引信息中至少包括:数据文件的索引键值、以及数据文件在文件数据包中的存储地址。 
根据本发明方案的一种具体实施方式,所述数据文件的索引键值为: 
该数据文件的标识信息、或者标识信息的编码值。 
根据本发明方案的一种具体实施方式, 
所述索引信息生成单元,还用于在生成索引信息后,根据数据文件的索引键值,对当前的索引信息进行排序。 
根据本发明方案的一种具体实施方式,所述装置还包括: 
任务分配单元,用于根据编码取值空间的分段结果以及对目标数据文件的编码结果,生成针对目标文件的多个任务包,所述任务包用于分配给不同的分布式任务执行模块。 
应用本发明实施例提供的技术方案,预先选取适当的编码方式并且对编码的取值空间进行分段,然后根据对数据文件标识的编码结果,对处于同一分段中的数据文件进行整合存储。与现有技术相比,整合存储的方式减少了文件碎片,能够显著提高存储效率。 
进一步地,对于一个确定标识信息的数据文件,一旦编码方式确定,该数据文件所对应的分段也就确定了,那么在数据查询过程中,应用本发明方案,可以首先根据目标文件标识的定位该目标文件所处的分段,然后在相应的分段中进行查询,相对于现有技术在全量数据中进行查询的方式而言,应用本发明所提供的方案也有利于获得更高的查询效率。 
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。 
图1为本发明实施例数据存储方法的一种流程图; 
图2为本发明实施例目标文件列表示意图; 
图3为本发明实施例数据存储方法的第二种流程图; 
图4为本发明实施例文件数据包的一种索引结构示意图; 
图5为本发明实施例文件数据包的另一种索引结构示意图; 
图6为本发明实施例划分子分段的一种示意图; 
图7为本发明实施例数据存储系统的三级索引结构示意图; 
图8为本发明实施例分布式任务执行系统的结构示意图; 
图9为本发明实施例数据存储装置的一种结构示意图; 
图10为本发明实施例数据存储装置的第二种结构示意图; 
图11为本发明实施例数据存储装置的第三种结构示意图。 
具体实施方式
对于大规模的网站应用,例如前面所提到图片系统,需要存储的数据量非常大,这些数据分散于不同的文件中,每个文件的体积并不大,但是文件的数据很多,在各种存储体系中,过多的文件碎片都会对数据存储效率造成较大的影响,例如,在UNIX操作系统中,使用inode(索引节点)来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。inode的本质是一种结构体,它包含了与文件系统中各个文件相关的一些重要信息。在UNIX中的文件系统中,每一个文件都需要对应创建一个inode,当需要存储文件数量达到一定数量级时,会有相当一部分磁盘空间用于存储inode,在一定程度上成造成了磁盘空间的浪费,而且为数据的管理和维护也带来了难度。 
针对上述问题,本发明实施例提供一种数据存储方法,该方法可以包括以下步骤: 
预先选取编码算法,并对编码的取值区间进行分段; 
利用所述编码算法,对目标数据文件的标识信息进行编码; 
根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。 
应用本发明实施例提供的技术方案,预先选取适当的编码方式并且对编码的取值空间进行分段,然后根据对数据文件标识的编码结果,对处于同一分段中的数据文件进行整合存储。与现有技术相比,整合存储的方式减少了文件碎片,能够显著提高存储效率。 
进一步地,对于一个确定标识信息的数据文件,一旦编码方式确定,该数据文件所对应的分段也就确定了,那么在数据查询过程中,应用本发明方案,可以首先根据目标文件标识的定位该目标文件所处的分段,然后在相应的分段中进行查询,相对于现有技术在全量数据中进行查询的方式而言,应用本发明所提供的方案也有利于获得更高的查询效率。 
为了使本领域技术人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。 
图1所示为本发明实施例一种数据存储方法的示意图,该方法可以包括以下步骤: 
S101,预先选取编码算法,并对编码的取值区间进行分段; 
本发明的方案是,把需要存储的目标数据文件的某种标识,按照统一的编码体系进行编码,从而能够按照编码结果对目标文件进行分类处理。 
本发明实施例对于具体选择的编码方式并不需要进行限定,只需要保证:对于不同的文件资源(如图片、音频、网页等等)标识,其编码结果唯一即可,所以,至少应该保证:编码的取值空间大小>待处理的文件数量大小。 这里一般采用线性编码方式,例如MD5等哈希算法,以64位二进制编码为例,其编码取值空间的大小为: 
264=18,446,744,073,709,551,616 
可见,对于百亿至千亿数量级别的文件存储数量而言,64位编码的取值空间足以保证不同文件标识的编码值不同,一般来说,对于这种数量级的文件而言不会出现编码值重复的情况。当然,对于理论上可能出现的编码值重复情况,可以采用现有技术的中的编码/签名冲突解决算法来进行处理,保证最终的编码值不重复,本发明实施例对此并不需要进行详细介绍。 
另外,根据实际使用需求,也可以通过调整编码算法来控制取值空间的大小,例如将64位编码方式更换为128位编码方式、32位编码方式等等,本发明实施例对此并不需要进行限定。 
确定编码方式后,对编码的取值区间进行分段。根据本发明方案,分段的数量直接影响整合存储后的数量大小。在实施例中,采用简单的一种方式:将整个编码取值空间平均分为若干分段,每个分段对应一个整合存储的文件数据包。 
例如,对于大小为264的取值空间,按照以下方式分为8段: 
分段1: [ 0 , 2 64 × 1 8 )
分段2: [ 2 64 × 1 8 , 2 64 × 2 8 )
…… 
分段8: [ 2 64 × 7 8 , 2 64 )
S102,利用所述编码算法,对目标数据文件的标识信息进行编码; 
本发明实施例中的“标识信息”,其目的是用于区分不同的数据文件。例如,对于网络上的资源存储系统,其中的每个资源单位(例如一张图片、一段音频等等)可以用URL(Universal Resource Locator,统一资源定位符)的形式进行标识,不同的URL必然对应着不同的资源。当然,URL只是一 种“标识信息”具体的可用形式,URL对应的是一种在全互联网范围内统一使用的绝对标识,例如,如果只需在某系统内部区分不同的文件资源,那么也可以采用该系统自有的标识体系对文件进行标识,例如“本地存储路径+文件名”的形式,甚至仅仅是“文件名”的形式,本发明对此并不需要进行限定。 
假设当前需要存储的目标文件列表如图2所示,可见,需要处理的目标文件都是图片,每个目标文件的标识表现为不同的URL,根据预先选择的编码算法,分别对这些URL的进行编码计算,每个URL得到一个对应的编码结果。 
S103,根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。 
根据前面的说明,在选定的编码体系下,不同的文件标识信息,会对应计算得到不同的编码值(编码冲突的情况认为是小概率事件,如果出现这种情况可用现有技术中的冲突解决算法解决),根据计算得到的编码结果取值所在区间,可以将不同的目标文件分类到不同的分段中。 
根据本发明实施例的方案,每个分段区间对应一个整合存储单位,也就是说,分类到相同分段中的多个数据文件,会被整合存储为一个文件数据包,从而提高存储效率。当然,在本发明的其他实施方式中,也允许将相同分段中的多个(m个)数据文件,整合存储为多个(n个)文件数据包,可以理解的是,从数量上看,m应该是远大于n的。可见,本发明本发明实施例所提供的方案,将原有的海量文件整合存储为少数几个文件数据包,从而有效减少了文件碎片,提高了存储效率。 
应用上述存储方式,在数据查询过程中,可以首先根据待查询的目标文件的标识(例如URL),确定该目标文件在编码体系中所对应的分段,然后进一步在该分段内进行查询即可,而不需要在全量数据中进行查询,从而有效改善了数据查询效率。 
根据本发明的一种具体实施方式,还可以利用索引的方式,进一步提高 在分段内部的数据查询效率,参见图3所示,在生成整合文件数据包之后,还可以进一步包括步骤: 
S104,为整合生成的文件数据包生成索引信息。 
根据本发明实施例的方案,可以根据待查询的目标文件的标识,确定该目标文件在编码体系中所对应的分段。在本实施例中,进一步采用对文件数据包生成索引的方式,实现在每个分段内部快速定位文件。 
参见图4所示,右侧为一个文件数据包的存储结构,左侧为该文件数据包对应的索引信息结果。 
可见,该文件数据包由多个零散的数据文件连续存储而成,在该文件数据包中,每个文件对应一块存储空间,当然,不同的文件所占用的实际空间不一定相同。在索引信息中,对应每个文件,分别记录该文件的索引键值key以及该文件在文件数据包中的存储地址addr。 
根据本发明的一种具体实施方式,所记录的索引键值key可以是文件自身的标识(例如URL等),也可以是该标识的某种编码值,为便于管理,这里一般可以直接采用S102中的编码结果,当然如果仅从“提高查询效率”的角度考虑,这里也可以另行选用其他的编码方式,本发明对此并不需要进行限定。 
存储地址addr一般采用每个零散的数据文件在文件数据包中的存储偏移地址,该“偏移”是相对于文件数据包的首地址而言,假设首地址为0,那么根据所记录的地址偏移量,就可以定位到文件的实际存储地址。 
可选地,在索引信息中,还可以记录每个零散文件的实际大小,当然,该信息也可以在文件数据包中、在每个零散文件的存储位置上记录,本发明实施例对此并不需要进行限定。 
根据本实施例,假设每个分段对应一个整合存储的文件数据包,那么对于每个分段可以分别生成一个索引文件。在数据查询过程中,可以首先根据待查询的目标文件的标识,确定该目标文件在编码体系中所对应的分段。进一步地,在该分段中,通过查询索引文件,找到待查询的目标文件标识所对 应的key(如果采用标识的编码作为key,这里还需要先对待查询的目标文件标识进行编码处理),根据key所对应的addr以及文件的大小,就可以准确地从文件数据包提取出需要查询的数据文件。 
根据本发明的一种优选实施方式,为了进一步提高查询速度,还可以对索引信息进行优化排序。由于文件数据包中的文件都是即时添加的,因此在排列上并没有规律,在本实施例中,可以根据索引键值key,对索引信息进行排序。参见图5所示,key1、key2、key3…keyN是根据数据存储的先后顺序排列的,本身并没有特别的规律,根据本实施例方案,可以根据实际的key值大小进行升序或者降序排列。具体的排列操作执行时机可以是在每添加一个文件后进行排序,也可以是在系统空闲时进行排序,总之,排序后的索引信息,按照索引键值大小顺序进行排列,例如根据图5最右侧所示,从数值上看: 
key2<key3<key1<…<keyN 
排序后的索引信息,其索引键值按照大小顺序进行排列,因此在处理查询请求时,就可以利用例如“二分法”等方法,进一步提高查询效率。 
根据本发明实施例所提供的技术方案,是以编码取值的每个分段区间对应整合存储单位,当然在实际应用过程中,一个分段既可以生成一个文件数据包,也可以生成多个数据包。生成多个文件数据包的主要目的是:避免在一个文件数据包中所包含的内容过多,导致增加管理和维护难度。在实际应用过程中,可以利用以下两种策略在一个取值分段生成多文件数据包: 
1)根据文件数据包的大小进行划分: 
以图片存储为例,一个文件数据包中的零散文件,并不一定是同时处理的,对于一个确定分段而言,获得第一张图片后就创建了文件数据包1,后续每次获得属于该分段的新图片,就陆续将新图片添加至文件数据包1,当文件数据包1的大小达到某个预设阈值(例如1G、2G、4G…)后,则停止向文件数据包1中继续添加新图片,而是新生成文件数据包2,待文件数据 包2的大小达到预设阈值后,再新生成文件数据包3……如此重复,最终在该分段中,除最后一个还没有达到预设阈值的数据包n之外,其他的多个文件数据包1、2…n-1的大小相同,当然这里的“相同”在实际应用中应理解为“基本相同”,例如规定阈值为4G,那么如kb、M甚至更高级别的误差应该是允许。 
2)根据文件数据包的中所包含的文件数量进行划分: 
仍以图片存储为例,获得第一张图片后就创建了文件数据包1,后续每次获得属于该分段的新图片,就陆续将新图片添加至文件数据包1,当文件数据包1中所包含的图片数量达到某个预设阈值(例如50万张、100万张等等),则停止向文件数据包1中继续添加新图片,而是新生成文件数据包2,待文件数据包2中所包含的图片数量达到预设阈值后,再新生成文件数据包3……如此重复,最终在该分段中,除最后一个还没有达到预设阈值的数据包n之外,其他的多个文件数据包1、2…n-1的中所包含的图片数量相同。 
在本发明的优选实施方式中,对于在同一分段中存在多个文件的情况,还可以进一步对索引信息进行调整,具体而言,在每个分段中的索引信息中,除了需要记录每个零散文件的索引键值key、该文件在文件数据包中的存储地址addr之外,还需要对应记录该文件所在的文件数据包的标识。 
相应地,在查询过程中,则是首先在索引信息中找到待查询的目标文件标识所对应的key(如果采用标识的编码作为key,这里还需要先对待查询的目标文件标识进行编码处理),然后定位该目标文件所在的文件数据包,最后根据key所对应的addr以及文件的大小,到相应的文件数据包中提取出需要查询的数据文件。 
除了在一个分段生成多个文件数据包之外,在本发明的另一种实施方式中,还可以对已有分段进行进一步划分,例如图6所示,将已有的分段2进一步划分为分段2-1和分段2-2。然后在新划分得到的分段中,分别生成新的文件数据包用于存储。也就是说,在这种方式下,规定每个分段中只允许生 成一个文件数据包,但是分段大小可以动态调整。当然,如果从最初划分的分段来看,也可以理解为每个最大分段中,允许生成多个文件数据包。 
在实际应用过程中,可以利用以下两种策略在一个已有分段中进行再分段: 
1)根据文件数据包的大小进行再分段: 
仍然以图片存储为例,一个文件数据包中的零散文件,并不一定是同时处理的,对于一个确定分段1而言,获得第一张图片后就创建了文件数据包1,后续每次获得属于该分段1的新图片,就陆续将新图片添加至文件数据包1,当文件数据包1的大小达到某个预设阈值(例如1G、2G、4G…)后,则对分段1进行再次划分,假设划分为两个子分段:分别得到分段1-1和分段1-2,然后分别对应生成文件数据包1-1和文件数据包1-2,并且将原文件数据包1中的内容对应添加至文件数据包1-1和文件数据包1-2中,删除原文件数据包1,后续获得新图片后,则根据该图片的标识,将该图片添加至文件数据包1-1或者文件数据包1-2中。 
当然,可以理解的是,如果文件数据包1-1或者文件数据包1-2的大小再次超过预设阈值,则可以对相应的分段进行再次划分,例如将分段1-1进一步划分为1-1-1与1-1-2,等等。此外,值得注意的是:在进一步划分时,实际划分的分段数量也并不限于是两段,例如也可以是划分为三段、四段等等。 
2)根据文件数据包的中所包含的文件数量进行再分段: 
仍以图片存储为例,获得第一张图片后就创建了文件数据包1,后续每次获得属于该分段的新图片,就陆续将新图片添加至文件数据包1,当文件数据包1中所包含的图片数量达到某个预设阈值(例如50万张、100万张等等),则对分段1进行再次划分,假设划分为两个子分段:分别得到分段1-1和分段1-2,然后分别对应生成文件数据包1-1和文件数据包1-2,并且将原文件数据包1中的内容对应添加至文件数据包1-1和文件数据包1-2中,删除原文件数据包1,后续获得新图片后,则根据该图片的标识,将该图片添 加至文件数据包1-1或者文件数据包1-2中。 
当然,可以理解的是,如果文件数据包1-1或者文件数据包1-2中所包含的文件数量再次超过预设阈值,则可以对相应的分段进行再次划分,例如将分段1-1进一步划分为1-1-1与1-1-2,等等。此外值得注意的是,在进一步划分时,实际划分的分段数量也并不限于是两段,例如也可以是划分为三段、四段等等。 
在本发明的优选实施方式中,对于在同一分段中存在多个子分段文件的情况,还可以进一步对索引信息进行调整,具体而言,在每个分段中增加一级索引,用于记录该分段中的子分段信息。图7所示为本发明实施例存储系统的索引结构的一种示意图,其为三级索引结构: 
位于最左侧的是一级索引,其中记录的内容实际就是对编码取值空间的分段情况; 
位于中间的是二级索引,其中记录的内容为在某个分段中的子分段划分情况; 
位于最右侧的是三级索引,其中记录的内容为文件数据包中的文件信息,相当于图4或图5所示的内容。 
可以理解的是,多级索引的可以进一步提高检索效率,key的检索时间实际上主要花在(key,addr)这个最后一级索引文件的检索上,如果不分级,那么这个文件理论上最大有264条记录,那么查询时间会较长。如果分为二级索引,那么理论上最后一次索引文件,也就是格式为(key,addr)的那个文件大小会缩小为原来的1/8。因此当一个分段的最后一级索引文件变得很大的时候,就需要进行进一步的切分。如图7所示,进一步划分子分段之后,每个三级索引的大小进一步缩小为1/8的一半,也就是1/16,因此对于这部分数据,可以明显改善查询效率。 
本发明实施例所提供的对数据文件标识进行分段的方案,除了用于存储之外,还可以用于对数据的其他类型操作。例如,在分布式系统中,存在多 个可以独立执行任务的执行模块,其中每个执行模块可以表现为一台或多台计算机。由于数据文件存在处理需求,因此根据本发明方案,可以利用分段结果,生成针对目标文件的一个或者多个任务包,然后将任务包分发给不同的分布式任务执行模块。 
图8所示,为本发明实施例一种分布式系统的结构示意图。数据存储装置装置部署在总控机器上,总控机器可以对目标文件进行编码,并且根据编码结果进行分段,生成针对目标文件的多个任务包。 
总控机器上还维护有一个包含所有“执行机器”名单,记录着代表机器执行能力的数值(这个数值可以根据执行机器的CPU、内存、硬盘和历史执行任务时间计算得到),“执行机器”名单可以随时增减,代表机器加入或者退出执行机器集群; 
总控机器能够将图片的抓取和计算任务动态分解成“任务包”之后,以分布式的形式分发到不同的执行机器上运行,最后收集处理结果;其中总控机器序会根据各个执行机器的CPU、内存和历史执行记录等因素,决定分配的“任务包”大小,执行机器在执行完成之后,会在“结果包”中记录任务的执行时间,反馈给总控程序。例如,当前共有两台执行机其: 
执行机器A:CPU 1GHZ、内存1G、最近几次的平均执行时间为30分钟; 
执行机器B:CPU 2GHZ、内存1G、最近几次的平均执行时间为15分钟; 
那么总控程序在给执行机A和执行机B分配任务的时候,会按照1:2的数据量来分配任务,也就是执行B的近期处理能力强一些,效率高一些,就分配多一些的数据量;这样能够保证整体的处理时间最短。 
“任务包”是由总控机器根据执行机器的执行能力动态计算得到,“任务包”内包含需要执行机器处理的数据以及对应的程序脚本,程序脚本是由总控机器动态生成的;这里的“任务”可以包括多种形式,例如图片抓取、对图片计算“感知哈希”、对音频数据进行压缩、对网页进行过滤、对网页 进行编码转换等等,在生成和分配“任务包”的时候,总控程序会对待处理数据的关键字段(例如图片标注中的图片URL)进行排序,在排序之后再分段打包成“任务包”。目的是使得不同“任务包”中的数据有规律可循,降低后续的管理复杂度。 
“结果包”中包含执行机器处理后的数据,包括处理成功的数据以及执行失败的任务数据;其中,计算失败可以包括但不限于如下情况: 
1)由于网络原因导致图片、网页等抓取失败;在图片处理这个例子里面,总控机器分发给执行机的数据就是海量的图片url(也就是图片的链接地址),需要执行机去逐个抓取,这个抓取过程很有可能因为网络不稳定等原因导致失败; 
2)网页过滤,例如过滤掉网页中的广告结果,由于互联网上的网页无论从内容、编码上都存在多种多样的复杂情况,因此难免对于一些比较特别的网页会出现处理失败的情况; 
对于从各个“执行机器”上收集回来的执行失败的任务数据,总控机器将失败信息记录在一个文件中,汇总之后重新进行分配计算,重新分配的时候和之前分配次序不同,例如原先分配给执行机器A的失败任务数据会改为分配给执行机器B或者C。例如,对于包括包括网络数据抓取(例如图片抓取、网页抓取)等类型的任务,在执行机器A上抓取失败的图片,在执行机器B的网段上抓取可能能够成功。 
相应于上面的方法实施例,本发明还提供一种数据存储装置,参见图9所示,该装置可以包括: 
分段单元110,用于预先选取编码算法,并对编码的取值区间进行分段; 
本发明的方案是,把需要存储的目标数据文件的某种标识,按照统一的编码体系进行编码,从而能够按照编码结果对目标文件进行分类处理。 
本发明实施例对于具体选择的编码方式并不需要进行限定,只需要保证:对于不同的文件资源(如图片、音频、网页等等)标识,其编码结果唯一即 可,所以,至少应该保证:编码的取值空间大小>待处理的文件数量大小。这里一般采用线性编码方式,例如MD5等哈希算法,以64位二进制编码为例,其编码取值空间的大小为: 
264=18,446,744,073,709,551,616 
可见,对于百亿至千亿数量级别的文件存储数量而言,64位编码的取值空间足以保证不同文件标识的编码值不同,一般来说,对于这种数量级的文件而言不会出现编码值重复的情况。当然,对于理论上可能出现的编码值重复情况,可以采用现有技术的中的编码/签名冲突解决算法来进行处理,保证最终的编码值不重复,本发明实施例对此并不需要进行详细介绍。 
另外,根据实际使用需求,也可以通过调整编码算法来控制取值空间的大小,例如将64位编码方式更换为128位编码方式、32位编码方式等等,本发明实施例对此并不需要进行限定。 
确定编码方式后,对编码的取值区间进行分段。根据本发明方案,分段的数量直接影响整合存储后的数量大小。在实施例中,采用简单的一种方式:将整个编码取值空间平均分为若干分段,每个分段对应一个整合存储的文件数据包。 
例如,对于大小为264的取值空间,按照以下方式分为8段: 
分段1: [ 0 , 2 64 × 1 8 )
分段2: [ 2 64 × 1 8 , 2 64 × 2 8 )
…… 
分段8: [ 2 64 × 7 8 , 2 64 )
编码单元120,用于利用所述编码算法,对目标数据文件的标识信息进行编码; 
本发明实施例中的“标识信息”,其目的是用于区分不同的数据文件。例如,对于网络上的资源存储系统,其中的每个资源单位(例如一张图片、 一段音频等等)可以用URL(Universal Resource Locator,统一资源定位符)的形式进行标识,不同的URL必然对应着不同的资源。当然,URL只是一种“标识信息”具体的可用形式,URL对应的是一种在全互联网范围内统一使用的绝对标识,例如,如果只需在某系统内部区分不同的文件资源,那么也可以采用该系统自有的标识体系对文件进行标识,例如“本地存储路径+文件名”的形式,甚至仅仅是“文件名”的形式,本发明对此并不需要进行限定。 
假设当前需要存储的目标文件列表如图2所示,可见,需要处理的目标文件都是图片,每个目标文件的标识表现为不同的URL,根据预先选择的编码算法,分别对这些URL的进行编码计算,每个URL得到一个对应的编码结果。 
存储单元130,用于根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。 
根据前面的说明,在选定的编码体系下,不同的文件标识信息,会对应计算得到不同的编码值(编码冲突的情况认为是小概率事件,如果出现这种情况可用现有技术中的冲突解决算法解决),根据计算得到的编码结果取值所在区间,可以将不同的目标文件分类到不同的分段中。 
根据本发明实施例的方案,每个分段区间对应一个整合存储单位,也就是说,分类到相同分段中的多个数据文件,会被整合存储为一个文件数据包,从而提高存储效率。当然,在本发明的其他实施方式中,也允许将相同分段中的多个(m个)数据文件,整合存储为多个(n个)文件数据包,可以理解的是,从数量上看,m应该是远大于n的。可见,本发明本发明实施例所提供的方案,将原有的海量文件整合存储为少数几个文件数据包,从而有效减少了文件碎片,提高了存储效率。 
应用上述存储方式,在数据查询过程中,可以首先根据待查询的目标文件的标识(例如URL),确定该目标文件在编码体系中所对应的分段,然后进一步在该分段内进行查询即可,而不需要在全量数据中进行查询,从而有 效改善了数据查询效率。 
应用本发明实施例提供的技术方案,预先选取适当的编码方式并且对编码的取值空间进行分段,然后根据对数据文件标识的编码结果,对处于同一分段中的数据文件进行整合存储。与现有技术相比,整合存储的方式减少了文件碎片,能够显著提高存储效率。 
进一步地,对于一个确定标识信息的数据文件,一旦编码方式确定,该数据文件所对应的分段也就确定了,那么在数据查询过程中,应用本发明方案,可以首先根据目标文件标识的定位该目标文件所处的分段,然后在相应的分段中进行查询,相对于现有技术在全量数据中进行查询的方式而言,应用本发明所提供的方案也有利于获得更高的查询效率。 
参见图10所示,根据本发明方案的一种具体实施方式,所述数据存储装置还可以包括: 
索引信息生成单元140,用于为所述文件数据包生成索引信息。 
根据本发明实施例的方案,可以根据待查询的目标文件的标识,确定该目标文件在编码体系中所对应的分段。在本实施例中,进一步采用对文件数据包生成索引的方式,实现在每个分段内部快速定位文件。 
参见图4所示,右侧为一个文件数据包的存储结构,左侧为该文件数据包对应的索引信息结果。 
可见,该文件数据包由多个零散的数据文件连续存储而成,在该文件数据包中,每个文件对应一块存储空间,当然,不同的文件所占用的实际空间不一定相同。在索引信息中,对应每个文件,分别记录该文件的索引键值key以及该文件在文件数据包中的存储地址addr。 
根据本发明的一种具体实施方式,所记录的索引键值key可以是文件自身的标识(例如URL等),也可以是该标识的某种编码值,为便于管理,这里一般可以直接采用S102中的编码结果,当然如果仅从“提高查询效率”的角度考虑,这里也可以另行选用其他的编码方式,本发明对此并不需要进 行限定。 
存储地址addr一般采用每个零散的数据文件在文件数据包中的存储偏移地址,该“偏移”是相对于文件数据包的首地址而言,假设首地址为0,那么根据所记录的地址偏移量,就可以定位到文件的实际存储地址。 
可选地,在索引信息中,还可以记录每个零散文件的实际大小,当然,该信息也可以在文件数据包中、在每个零散文件的存储位置上记录,本发明实施例对此并不需要进行限定。 
根据本实施例,假设每个分段对应一个整合存储的文件数据包,那么对于每个分段可以分别生成一个索引文件。在数据查询过程中,可以首先根据待查询的目标文件的标识,确定该目标文件在编码体系中所对应的分段。进一步地,在该分段中,通过查询索引文件,找到待查询的目标文件标识所对应的key(如果采用标识的编码作为key,这里还需要先对待查询的目标文件标识进行编码处理),根据key所对应的addr以及文件的大小,就可以准确地从文件数据包提取出需要查询的数据文件。 
根据本发明的一种优选实施方式,为了进一步提高查询速度,还可以对索引信息进行优化排序。由于文件数据包中的文件都是即时添加的,因此在排列上并没有规律,在本实施例中,可以根据索引键值key,对索引信息进行排序。参见图5所示,key1、key2、key3…keyN是根据数据存储的先后顺序排列的,本身并没有特别的规律,根据本实施例方案,可以根据实际的key值大小进行升序或者降序排列。具体的排列操作执行时机可以是在每添加一个文件后进行排序,也可以是在系统空闲时进行排序,总之,排序后的索引信息,按照索引键值大小顺序进行排列,例如根据图5最右侧所示,从数值上看: 
key2<key3<key1<…<keyN 
排序后的索引信息,其索引键值按照大小顺序进行排列,因此在处理查询请求时,就可以利用例如“二分法”等方法,进一步提高查询效率。 
根据本发明实施例所提供的技术方案,是以编码取值的每个分段区间对应整合存储单位,当然在实际应用过程中,一个分段既可以生成一个文件数据包,也可以生成多个数据包。生成多个文件数据包的主要目的是:避免在一个文件数据包中所包含的内容过多,导致增加管理和维护难度。 
根据本发明方案的一种具体实施方式, 
所述分段单元110具体用于:在文件数据包大小超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分; 
所述存储单元130具体用于:在新划分得到的分段中,分别生成新的文件数据包并存储。 
以图片存储为例,一个文件数据包中的零散文件,并不一定是同时处理的,对于一个确定分段而言,获得第一张图片后就创建了文件数据包1,后续每次获得属于该分段的新图片,就陆续将新图片添加至文件数据包1,当文件数据包1的大小达到某个预设阈值(例如1G、2G、4G…)后,则停止向文件数据包1中继续添加新图片,而是新生成文件数据包2,待文件数据包2的大小达到预设阈值后,再新生成文件数据包3……如此重复,最终在该分段中,除最后一个还没有达到预设阈值的数据包n之外,其他的多个文件数据包1、2…n-1的大小相同,当然这里的“相同”在实际应用中应理解为“基本相同”,例如规定阈值为4G,那么如kb、M甚至更高级别的误差应该是允许。 
根据本发明方案的一种具体实施方式, 
所述分段单元110具体用于:在文件数据包所包含的数据文件数量超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分; 
所述存储单元130具体用于:在新划分得到的分段中,分别生成新的文件数据包并存储。 
仍以图片存储为例,获得第一张图片后就创建了文件数据包1,后续每次获得属于该分段的新图片,就陆续将新图片添加至文件数据包1,当文件数据包1中所包含的图片数量达到某个预设阈值(例如50万张、100万张等 等),则停止向文件数据包1中继续添加新图片,而是新生成文件数据包2,待文件数据包2中所包含的图片数量达到预设阈值后,再新生成文件数据包3……如此重复,最终在该分段中,除最后一个还没有达到预设阈值的数据包n之外,其他的多个文件数据包1、2…n-1的中所包含的图片数量相同。 
在本发明的优选实施方式中,对于在同一分段中存在多个文件的情况,所述索引生成单元140还可以进一步对索引信息进行调整,具体而言,在每个分段中的索引信息中,除了需要记录每个零散文件的索引键值key、该文件在文件数据包中的存储地址addr之外,还需要对应记录该文件所在的文件数据包的标识。 
相应地,在查询过程中,则是首先在索引信息中找到待查询的目标文件标识所对应的key(如果采用标识的编码作为key,这里还需要先对待查询的目标文件标识进行编码处理),然后定位该目标文件所在的文件数据包,最后根据key所对应的addr以及文件的大小,到相应的文件数据包中提取出需要查询的数据文件。 
除了在一个分段生成多个文件数据包之外,在本发明的另一种实施方式中,还可以对已有分段进行进一步划分,例如图6所示,将已有的分段2进一步划分为分段2-1和分段2-2。然后在新划分得到的分段中,分别生成新的文件数据包用于存储。也就是说,在这种方式下,规定每个分段中只允许生成一个文件数据包,但是分段大小可以动态调整。当然,如果从最初划分的分段来看,也可以理解为每个最大分段中,允许生成多个文件数据包。 
根据本发明方案的一种具体实施方式, 
所述存储单元130具体用于:在文件数据包大小超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。 
仍然以图片存储为例,一个文件数据包中的零散文件,并不一定是同时处理的,对于一个确定分段1而言,获得第一张图片后就创建了文件数据包1,后续每次获得属于该分段1的新图片,就陆续将新图片添加至文件数据包 1,当文件数据包1的大小达到某个预设阈值(例如1G、2G、4G…)后,则对分段1进行再次划分,假设划分为两个子分段:分别得到分段1-1和分段1-2,然后分别对应生成文件数据包1-1和文件数据包1-2,并且将原文件数据包1中的内容对应添加至文件数据包1-1和文件数据包1-2中,删除原文件数据包1,后续获得新图片后,则根据该图片的标识,将该图片添加至文件数据包1-1或者文件数据包1-2中。 
当然,可以理解的是,如果文件数据包1-1或者文件数据包1-2的大小再次超过预设阈值,则可以对相应的分段进行再次划分,例如将分段1-1进一步划分为1-1-1与1-1-2,等等。此外,值得注意的是:在进一步划分时,实际划分的分段数量也并不限于是两段,例如也可以是划分为三段、四段等等。 
根据本发明方案的一种具体实施方式, 
所述存储单元130具体用于:在文件数据包所包含的数据文件数量超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。 
仍以图片存储为例,获得第一张图片后就创建了文件数据包1,后续每次获得属于该分段的新图片,就陆续将新图片添加至文件数据包1,当文件数据包1中所包含的图片数量达到某个预设阈值(例如50万张、100万张等等),则对分段1进行再次划分,假设划分为两个子分段:分别得到分段1-1和分段1-2,然后分别对应生成文件数据包1-1和文件数据包1-2,并且将原文件数据包1中的内容对应添加至文件数据包1-1和文件数据包1-2中,删除原文件数据包1,后续获得新图片后,则根据该图片的标识,将该图片添加至文件数据包1-1或者文件数据包1-2中。 
当然,可以理解的是,如果文件数据包1-1或者文件数据包1-2中所包含的文件数量再次超过预设阈值,则可以对相应的分段进行再次划分,例如将分段1-1进一步划分为1-1-1与1-1-2,等等。此外值得注意的是,在进一步划分时,实际划分的分段数量也并不限于是两段,例如也可以是划分为三 段、四段等等。 
在本发明的优选实施方式中,对于在同一分段中存在多个子分段文件的情况,索引信息生成单元150还可以进一步对索引信息进行调整,具体而言,在每个分段中增加一级索引,用于记录该分段中的子分段信息。图7所示为本发明实施例存储系统的索引结构的一种示意图,其为三级索引结构: 
位于最左侧的是一级索引,其中记录的内容实际就是对编码取值空间的分段情况; 
位于中间的是二级索引,其中记录的内容为在某个分段中的子分段划分情况; 
位于最右侧的是三级索引,其中记录的内容为文件数据包中的文件信息,相当于图4或图5所示的内容。 
可以理解的是,多级索引的可以进一步提高检索效率,key的检索时间实际上主要花在(key,addr)这个最后一级索引文件的检索上,如果不分级,那么这个文件理论上最大有264条记录,那么查询时间会较长。如果分为二级索引,那么理论上最后一次索引文件,也就是格式为(key,addr)的那个文件大小会缩小为原来的1/8。因此当一个分段的最后一级索引文件变得很大的时候,就需要进行进一步的切分。如图7所示,进一步划分子分段之后,每个三级索引的大小进一步缩小为1/8的一半,也就是1/16,因此对于这部分数据,可以明显改善查询效率。 
参见图11所示,根据本发明方案的一种具体实施方式,所述数据存储装置还可以包括: 
任务分配单元150,用于根据编码取值空间的分段结果以及对目标数据文件的编码结果,生成针对目标文件的多个任务包,所述任务包用于分配给不同的分布式任务执行模块。 
本发明实施例所提供的对数据文件标识进行分段的方案,除了用于存储之外,还可以用于对数据的其他类型操作。例如,在分布式系统中,存在多 个可以独立执行任务的执行模块,其中每个执行模块可以表现为一台或多台计算机。由于数据文件存在处理需求,因此根据本发明方案,可以利用分段结果,生成针对目标文件的一个或者多个任务包,然后将任务包分发给不同的分布式任务执行模块。 
图8所示,为本发明实施例一种分布式系统的结构示意图。数据存储装置装置部署在总控机器上,总控机器可以对目标文件进行编码,并且根据编码结果进行分段,生成针对目标文件的多个任务包。 
总控机器上还维护有一个包含所有“执行机器”名单,记录着代表机器执行能力的数值(这个数值可以根据执行机器的CPU、内存、硬盘和历史执行任务时间计算得到),“执行机器”名单可以随时增减,代表机器加入或者退出执行机器集群; 
总控机器能够将图片的抓取和计算任务动态分解成“任务包”之后,以分布式的形式分发到不同的执行机器上运行,最后收集处理结果;其中总控机器序会根据各个执行机器的CPU、内存和历史执行记录等因素,决定分配的“任务包”大小,执行机器在执行完成之后,会在“结果包”中记录任务的执行时间,反馈给总控程序。例如,当前共有两台执行机其: 
执行机器A:CPU 1GHZ、内存1G、最近几次的平均执行时间为30分钟; 
执行机器B:CPU 2GHZ、内存1G、最近几次的平均执行时间为15分钟; 
那么总控程序在给执行机A和执行机B分配任务的时候,会按照1:2的数据量来分配任务,也就是执行B的近期处理能力强一些,效率高一些,就分配多一些的数据量;这样能够保证整体的处理时间最短。 
“任务包”是由总控机器根据执行机器的执行能力动态计算得到,“任务包”内包含需要执行机器处理的数据以及对应的程序脚本,程序脚本是由总控机器动态生成的;这里的“任务”可以包括多种形式,例如图片抓取、对图片计算“感知哈希”、对音频数据进行压缩、对网页进行过滤、对网页 进行编码转换等等,在生成和分配“任务包”的时候,总控程序会对待处理数据的关键字段(例如图片标注中的图片URL)进行排序,在排序之后再分段打包成“任务包”。目的是使得不同“任务包”中的数据有规律可循,降低后续的管理复杂度。 
“结果包”中包含执行机器处理后的数据,包括处理成功的数据以及执行失败的任务数据;其中,计算失败可以包括但不限于如下情况: 
1)由于网络原因导致图片、网页等抓取失败;在图片处理这个例子里面,总控机器分发给执行机的数据就是海量的图片url(也就是图片的链接地址),需要执行机去逐个抓取,这个抓取过程很有可能因为网络不稳定等原因导致失败; 
2)网页过滤,例如过滤掉网页中的广告结果,由于互联网上的网页无论从内容、编码上都存在多种多样的复杂情况,因此难免对于一些比较特别的网页会出现处理失败的情况; 
对于从各个“执行机器”上收集回来的执行失败的任务数据,总控机器将失败信息记录在一个文件中,汇总之后重新进行分配计算,重新分配的时候和之前分配次序不同,例如原先分配给执行机器A的失败任务数据会改为分配给执行机器B或者C。例如,对于包括包括网络数据抓取(例如图片抓取、网页抓取)等类型的任务,在执行机器A上抓取失败的图片,在执行机器B的网段上抓取可能能够成功。 
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。 
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。 
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。 
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。 

Claims (20)

1.一种数据存储方法,其特征在于,包括:
预先选取编码算法,并对编码的取值区间进行分段;
利用所述编码算法,对目标数据文件的标识信息进行编码;
根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。
2.根据权利要求1所述的方法,其特征在于,所述对编码值位于相同分段的多个数据文件进行整合存储,包括:
将编码值位于相同分段的多个数据文件整合存储为一个或多个文件数据包。
3.根据权利要求2所述的方法,其特征在于,所述将编码值位于相同分段的多个数据文件整合存储为一个文件数据包,包括:
在文件数据包大小超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分;
在新划分得到的分段中,分别生成新的文件数据包并存储。
4.根据权利要求2所述的方法,其特征在于,所述将编码值位于相同分段的多个数据文件整合存储为一个文件数据包,包括:
在文件数据包所包含的数据文件数量超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分;
在新划分得到的分段中,分别生成新的文件数据包并存储。
5.根据权利要求2所述的方法,其特征在于,所述将编码值位于相同分段的多个数据文件整合存储为多个文件数据包,包括:
在文件数据包大小超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。
6.根据权利要求2所述的方法,其特征在于,所述将编码值位于相同分段的多个数据文件整合存储多个文件数据包,包括:
在文件数据包所包含的数据文件数量超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
为所述文件数据包生成索引信息,所述索引信息中至少包括:数据文件的索引键值、以及数据文件在文件数据包中的存储地址。
8.根据权利要求2所述的方法,其特征在于,所述数据文件的索引键值为:
该数据文件的标识信息、或者标识信息的编码值。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在生成索引信息后,根据数据文件的索引键值,对当前的索引信息进行排序。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据编码取值空间的分段结果以及对目标数据文件的编码结果,生成针对目标文件的多个任务包,所述任务包用于分配给不同的分布式任务执行模块。
11.一种数据存储装置,其特征在于,包括:
分段单元,用于预先选取编码算法,并对编码的取值区间进行分段;
编码单元,用于利用所述编码算法,对目标数据文件的标识信息进行编码;
存储单元,用于根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。
12.根据权利要求11所述的装置,其特征在于,所述存储单元,具体用于:
将编码值位于相同分段的多个数据文件整合存储为一个或多个文件数据包。
13.根据权利要求12所述的装置,其特征在于,
所述分段单元具体用于:在文件数据包大小超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分;
所述存储单元具体用于:在新划分得到的分段中,分别生成新的文件数据包并存储。
14.根据权利要求12所述的装置,其特征在于,
所述分段单元具体用于:在文件数据包所包含的数据文件数量超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分;
所述存储单元具体用于:在新划分得到的分段中,分别生成新的文件数据包并存储。
15.根据权利要求12所述的装置,其特征在于,
所述存储单元具体用于:在文件数据包大小超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。
16.根据权利要求12所述的装置,其特征在于,
所述存储单元具体用于:在文件数据包所包含的数据文件数量超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。
17.根据权利要求12所述的装置,其特征在于,所述装置还包括:
索引信息生成单元,用于为所述文件数据包生成索引信息,所述索引信息中至少包括:数据文件的索引键值、以及数据文件在文件数据包中的存储地址。
18.根据权利要求12所述的装置,其特征在于,所述数据文件的索引键值为:
该数据文件的标识信息、或者标识信息的编码值。
19.根据权利要求17所述的装置,其特征在于,
所述索引信息生成单元,还用于在生成索引信息后,根据数据文件的索引键值,对当前的索引信息进行排序。
20.根据权利要求11所述的装置,其特征在于,所述装置还包括:
任务分配单元,用于根据编码取值空间的分段结果以及对目标数据文件的编码结果,生成针对目标文件的多个任务包,所述任务包用于分配给不同的分布式任务执行模块。
CN201210314126.7A 2012-08-29 2012-08-29 一种数据存储方法及装置 Active CN103678293B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210314126.7A CN103678293B (zh) 2012-08-29 2012-08-29 一种数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210314126.7A CN103678293B (zh) 2012-08-29 2012-08-29 一种数据存储方法及装置

Publications (2)

Publication Number Publication Date
CN103678293A true CN103678293A (zh) 2014-03-26
CN103678293B CN103678293B (zh) 2020-03-03

Family

ID=50315902

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210314126.7A Active CN103678293B (zh) 2012-08-29 2012-08-29 一种数据存储方法及装置

Country Status (1)

Country Link
CN (1) CN103678293B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461920A (zh) * 2014-12-09 2015-03-25 杭州华为数字技术有限公司 一种存储数据的方法及装置
CN105302889A (zh) * 2015-10-16 2016-02-03 北京奇虎科技有限公司 数据存储结构的转换方法及装置
CN105550245A (zh) * 2015-12-08 2016-05-04 四川长虹电器股份有限公司 基于Android平台网络图片加载及缓存的优化系统及方法
CN106126574A (zh) * 2016-06-16 2016-11-16 深圳市矽伟智科技有限公司 图片的识别方法、系统及物联网摄像设备
CN106407226A (zh) * 2015-07-31 2017-02-15 华为技术有限公司 一种数据处理方法、备份服务器及存储系统
CN106559634A (zh) * 2015-09-30 2017-04-05 杭州海康威视数字技术股份有限公司 用于交通卡口视频监控的数据存储方法及装置
CN106649528A (zh) * 2016-10-20 2017-05-10 浙江宇视科技有限公司 图片写入和读取方法、装置
CN107480771A (zh) * 2017-08-07 2017-12-15 北京中星微电子有限公司 基于深度学习的激活函数的实现方法及装置
CN109325032A (zh) * 2018-09-18 2019-02-12 厦门市美亚柏科信息股份有限公司 一种索引数据存储及检索方法、装置及存储介质
CN109840245A (zh) * 2019-01-31 2019-06-04 中铁工程装备集团有限公司 一种基于分片存储和折半索引的数据查询引擎
CN112527743A (zh) * 2020-12-04 2021-03-19 中国航空工业集团公司成都飞机设计研究所 一种基于构型码的文件构型控制方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101373473A (zh) * 2008-09-03 2009-02-25 北京星网锐捷网络技术有限公司 减少嵌入式系统闪存中文件数量的方法及系统
CN101452465A (zh) * 2007-12-05 2009-06-10 高德软件有限公司 大批量文件数据存放和读取方法
CN101854388A (zh) * 2010-05-17 2010-10-06 浪潮(北京)电子信息产业有限公司 一种集群存储中并行访问大量小文件的方法及系统
CN102332029A (zh) * 2011-10-15 2012-01-25 西安交通大学 一种基于Hadoop的海量可归类小文件关联存储方法
CN102419775A (zh) * 2011-12-22 2012-04-18 厦门雅迅网络股份有限公司 一种海量小文件的存储与检索方法
CN102646121A (zh) * 2012-02-23 2012-08-22 武汉大学 结合RDBMS和Hadoop云存储的两级存储方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452465A (zh) * 2007-12-05 2009-06-10 高德软件有限公司 大批量文件数据存放和读取方法
CN101373473A (zh) * 2008-09-03 2009-02-25 北京星网锐捷网络技术有限公司 减少嵌入式系统闪存中文件数量的方法及系统
CN101854388A (zh) * 2010-05-17 2010-10-06 浪潮(北京)电子信息产业有限公司 一种集群存储中并行访问大量小文件的方法及系统
CN102332029A (zh) * 2011-10-15 2012-01-25 西安交通大学 一种基于Hadoop的海量可归类小文件关联存储方法
CN102419775A (zh) * 2011-12-22 2012-04-18 厦门雅迅网络股份有限公司 一种海量小文件的存储与检索方法
CN102646121A (zh) * 2012-02-23 2012-08-22 武汉大学 结合RDBMS和Hadoop云存储的两级存储方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
F·W·阿伦等: "一种便于文献存贮和检索利用的文献索引—描述符分段", 《计算机与图书馆》 *
王晨: "Linux下海量小文件存储及检索优化技术的研究与应用", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
赵跃龙等: "一种性能优化的小文件存储访问策略的研究", 《计算机研究与发展》 *
黄焕如: "字符串分段索引一次完成法", 《微计算机信息》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461920A (zh) * 2014-12-09 2015-03-25 杭州华为数字技术有限公司 一种存储数据的方法及装置
CN104461920B (zh) * 2014-12-09 2019-04-12 杭州华为数字技术有限公司 一种存储数据的方法及装置
CN106407226A (zh) * 2015-07-31 2017-02-15 华为技术有限公司 一种数据处理方法、备份服务器及存储系统
CN106559634B (zh) * 2015-09-30 2019-12-03 杭州海康威视数字技术股份有限公司 用于交通卡口视频监控的数据存储方法及装置
CN106559634A (zh) * 2015-09-30 2017-04-05 杭州海康威视数字技术股份有限公司 用于交通卡口视频监控的数据存储方法及装置
CN105302889B (zh) * 2015-10-16 2019-06-04 北京奇虎科技有限公司 数据存储结构的转换方法及装置
CN105302889A (zh) * 2015-10-16 2016-02-03 北京奇虎科技有限公司 数据存储结构的转换方法及装置
CN105550245A (zh) * 2015-12-08 2016-05-04 四川长虹电器股份有限公司 基于Android平台网络图片加载及缓存的优化系统及方法
CN106126574A (zh) * 2016-06-16 2016-11-16 深圳市矽伟智科技有限公司 图片的识别方法、系统及物联网摄像设备
CN106649528A (zh) * 2016-10-20 2017-05-10 浙江宇视科技有限公司 图片写入和读取方法、装置
CN107480771A (zh) * 2017-08-07 2017-12-15 北京中星微电子有限公司 基于深度学习的激活函数的实现方法及装置
CN107480771B (zh) * 2017-08-07 2020-06-02 北京中星微人工智能芯片技术有限公司 基于深度学习的激活函数的实现方法及装置
CN109325032A (zh) * 2018-09-18 2019-02-12 厦门市美亚柏科信息股份有限公司 一种索引数据存储及检索方法、装置及存储介质
CN109840245A (zh) * 2019-01-31 2019-06-04 中铁工程装备集团有限公司 一种基于分片存储和折半索引的数据查询引擎
CN109840245B (zh) * 2019-01-31 2020-12-18 中铁工程装备集团有限公司 一种基于分片存储和折半索引的数据查询引擎
CN112527743A (zh) * 2020-12-04 2021-03-19 中国航空工业集团公司成都飞机设计研究所 一种基于构型码的文件构型控制方法

Also Published As

Publication number Publication date
CN103678293B (zh) 2020-03-03

Similar Documents

Publication Publication Date Title
CN103678293A (zh) 一种数据存储方法及装置
CN108304444B (zh) 信息查询方法及装置
CN104750708B (zh) 一种时空数据的索引建立方法、查询方法、装置及设备
CN102402605B (zh) 用于搜索引擎索引的混合分布模型
CN105447113B (zh) 一种基于大数据的信息分析方法
CN106528787B (zh) 一种基于海量数据多维分析的查询方法及装置
CN102725755B (zh) 文件访问方法及系统
CN103838867A (zh) 日志处理方法和装置
CN104951512A (zh) 一种基于互联网的舆情数据采集方法及系统
CN105512283A (zh) 数据质量管理控制方法及装置
US10108634B1 (en) Identification and removal of duplicate event records from a security information and event management database
CN102750326A (zh) 一种基于精简策略的集群系统的日志管理优化方法
CN104424229A (zh) 一种多维度拆分的计算方法及系统
CN104765749A (zh) 一种数据存储方法及装置
CN103064933A (zh) 数据查询方法及系统
KR20130049111A (ko) 분산 처리를 이용한 포렌식 인덱스 방법 및 장치
CN112632129A (zh) 一种码流数据管理方法、装置及存储介质
WO2013106595A2 (en) Processing store visiting data
CN110727727A (zh) 一种数据库的统计方法及装置
CN105808773A (zh) 一种新闻推送方法及装置
CN103077254A (zh) 网页获取方法和装置
CN103853838A (zh) 一种数据处理方法和装置
CN103823807A (zh) 一种去除重复数据的方法、装置及系统
CN104462096A (zh) 舆情监测分析方法和装置
CN103200269A (zh) 互联网信息统计方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant