一种数据存储方法及装置制造方法

文档序号:6488289阅读:111来源:国知局
一种数据存储方法及装置制造方法
【专利摘要】本发明公开了一种数据存储方法及装置。一种数据存储方法包括:预先选取编码算法,并对编码的取值区间进行分段;利用所述编码算法,对目标数据文件的标识信息进行编码;根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。应用本发明实施例提供的技术方案,预先选取适当的编码方式并且对编码的取值空间进行分段,然后根据对数据文件标识的编码结果,对处于同一分段中的数据文件进行整合存储。与现有技术相比,整合存储的方式减少了文件碎片,能够显著提高存储效率以及查询效率。
【专利说明】一种数据存储方法及装置
【技术领域】
[0001]本发明涉及数据存储【技术领域】,特别是涉及一种数据存储方法及装置。
【背景技术】
[0002]随着互联网的迅速发展,网络上的资源类型和数量不断增加。对于拥有数据资源的网站而言,对数据处理的各方面要求也在不断提高。例如,在海量数据的应用场景下,如何提高数据资源的存储效率、查询效率、处理效率、如何保证数据资源的稳定性,等等。
[0003]以图片系统的数据存储为例,对于大规模的网站应用,例如用于改进图片搜索效果的图片标注系统,其需要处理的图片可能达到上百亿张甚至更高,这些图片分别从其他网站抓取,在图片标注系统进行处理后存储。这些图片的特点是数量大,且每个图片文件的体积相对较小,从存储的角度而言,大量以“碎片”形式的文件必然会影响存储效率。另一方面,存储的数据量越大,对于查询速度的影响也就越明显。

【发明内容】

[0004]为解决上述技术问题,本发明实施例提供一种数据存储方法及装置,技术方案如下:
[0005]本发明实施例提供一种数据存储方法,该方法包括:
[0006]预先选取编码算法,并对编码的取值区间进行分段;
[0007]利用所述编码算法,对目标数据文件的标识信息进行编码;
[0008]根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。
[0009]根据本发明方案的一种【具体实施方式】,所述对编码值位于相同分段的多个数据文件进行整合存储,包括:
[0010]将编码值位于相同分段的多个数据文件整合存储为一个或多个文件数据包。
[0011]根据本发明方案的一种【具体实施方式】,所述将编码值位于相同分段的多个数据文件整合存储为一个文件数据包,包括:
[0012]在文件数据包大小超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分;
[0013]在新划分得到的分段中,分别生成新的文件数据包并存储。
[0014]根据本发明方案的一种【具体实施方式】,所述将编码值位于相同分段的多个数据文件整合存储为一个文件数据包,包括:
[0015]在文件数据包所包含的数据文件数量超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分;
[0016]在新划分得到的分段中,分别生成新的文件数据包并存储。
[0017]根据本发明方案的一种【具体实施方式】,所述将编码值位于相同分段的多个数据文件整合存储为多个文件数据包,包括:
[0018]在文件数据包大小超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。
[0019]根据本发明方案的一种【具体实施方式】,所述将编码值位于相同分段的多个数据文件整合存储多个文件数据包,包括:
[0020]在文件数据包所包含的数据文件数量超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。
[0021]根据本发明方案的一种【具体实施方式】,所述方法还包括:
[0022]为所述文件数据包生成索引信息,所述索引信息中至少包括:数据文件的索引键值、以及数据文件在文件数据包中的存储地址。
[0023]根据本发明方案的一种【具体实施方式】,所述数据文件的索引键值为:
[0024]该数据文件的标识信息、或者标识信息的编码值。
[0025]根据本发明方案的一种【具体实施方式】,所述方法还包括:
[0026]在生成索引信息后,根据数据文件的索引键值,对当前的索引信息进行排序。
[0027]根据本发明方案的一种【具体实施方式】,所述方法还包括:
[0028]根据编码取值空间的分段结果以及对目标数据文件的编码结果,生成针对目标文件的多个任务包,所述任务包用于分配给不同的分布式任务执行模块。
[0029]本发明实施例还提供一种数据存储装置,包括:
[0030]分段单元,用于预先选取编码算法,并对编码的取值区间进行分段;
[0031]编码单元,用于利用所述编码算法,对目标数据文件的标识信息进行编码;
[0032]存储单元,用于根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。
[0033]根据本发明方案的一种【具体实施方式】,所述存储单元,具体用于:
[0034]将编码值位于相同分段的多个数据文件整合存储为一个或多个文件数据包。
[0035]根据本发明方案的一种【具体实施方式】,
[0036]所述分段单元具体用于:在文件数据包大小超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分;
[0037]所述存储单元具体用于:在新划分得到的分段中,分别生成新的文件数据包并存储。
[0038]根据本发明方案的一种【具体实施方式】,
[0039]所述分段单元具体用于:在文件数据包所包含的数据文件数量超过预设阈值的情况下,对当前文件数据包所对应的分段进行再次划分;
[0040]所述存储单元具体用于:在新划分得到的分段中,分别生成新的文件数据包并存储。
[0041]根据本发明方案的一种【具体实施方式】,
[0042]所述存储单元具体用于:在文件数据包大小超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。
[0043]根据本发明方案的一种【具体实施方式】,
[0044]所述存储单元具体用于:在文件数据包所包含的数据文件数量超过预设阈值的情况下,在当前文件数据包所对应的分段中生成新的文件数据包并存储。
[0045]根据本发明方案的一种【具体实施方式】,所述装置还包括:[0046]索引信息生成单元,用于为所述文件数据包生成索引信息,所述索引信息中至少包括:数据文件的索引键值、以及数据文件在文件数据包中的存储地址。
[0047]根据本发明方案的一种【具体实施方式】,所述数据文件的索引键值为:
[0048]该数据文件的标识信息、或者标识信息的编码值。
[0049]根据本发明方案的一种【具体实施方式】,
[0050]所述索引信息生成单元,还用于在生成索引信息后,根据数据文件的索引键值,对当前的索引信息进行排序。
[0051]根据本发明方案的一种【具体实施方式】,所述装置还包括:
[0052]任务分配单元,用于根据编码取值空间的分段结果以及对目标数据文件的编码结果,生成针对目标文件的多个任务包,所述任务包用于分配给不同的分布式任务执行模块。
[0053]应用本发明实施例提供的技术方案,预先选取适当的编码方式并且对编码的取值空间进行分段,然后根据对数据文件标识的编码结果,对处于同一分段中的数据文件进行整合存储。与现有技术相比,整合存储的方式减少了文件碎片,能够显著提高存储效率。
[0054]进一步地,对于一个确定标识信息的数据文件,一旦编码方式确定,该数据文件所对应的分段也就确定了,那么在数据查询过程中,应用本发明方案,可以首先根据目标文件标识的定位该目标文件所处的分段,然后在相应的分段中进行查询,相对于现有技术在全量数据中进行查询的方式而言,应用本发明所提供的方案也有利于获得更高的查询效率。
【专利附图】

【附图说明】
[0055]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0056]图1为本发明实施例数据存储方法的一种流程图;
[0057]图2为本发明实施例目标文件列表示意图;
[0058]图3为本发明实施例数据存储方法的第二种流程图;
[0059]图4为本发明实施例文件数据包的一种索引结构示意图;
[0060]图5为本发明实施例文件数据包的另一种索引结构示意图;
[0061]图6为本发明实施例划分子分段的一种示意图;
[0062]图7为本发明实施例数据存储系统的三级索引结构示意图;
[0063]图8为本发明实施例分布式任务执行系统的结构示意图;
[0064]图9为本发明实施例数据存储装置的一种结构示意图;
[0065]图10为本发明实施例数据存储装置的第二种结构示意图;
[0066]图11为本发明实施例数据存储装置的第三种结构示意图。
【具体实施方式】
[0067]对于大规模的网站应用,例如前面所提到图片系统,需要存储的数据量非常大,这些数据分散于不同的文件中,每个文件的体积并不大,但是文件的数据很多,在各种存储体系中,过多的文件碎片都会对数据存储效率造成较大的影响,例如,在UNIX操作系统中,使用inode (索引节点)来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。inode的本质是一种结构体,它包含了与文件系统中各个文件相关的一些重要信息。在UNIX中的文件系统中,每一个文件都需要对应创建一个inode,当需要存储文件数量达到一定数量级时,会有相当一部分磁盘空间用于存储inode,在一定程度上成造成了磁盘空间的浪费,而且为数据的管理和维护也带来了难度。
[0068]针对上述问题,本发明实施例提供一种数据存储方法,该方法可以包括以下步骤:
[0069]预先选取编码算法,并对编码的取值区间进行分段;
[0070]利用所述编码算法,对目标数据文件的标识信息进行编码;
[0071]根据编码结果,对编码值位于相同分段的多个数据文件进行整合存储。
[0072]应用本发明实施例提供的技术方案,预先选取适当的编码方式并且对编码的取值空间进行分段,然后根据对数据文件标识的编码结果,对处于同一分段中的数据文件进行整合存储。与现有技术相比,整合存储的方式减少了文件碎片,能够显著提高存储效率。
[0073]进一步地,对于一个确定标识信息的数据文件,一旦编码方式确定,该数据文件所对应的分段也就确定了,那么在数据查询过程中,应用本发明方案,可以首先根据目标文件标识的定位该目标文件所处的分段,然后在相应的分段中进行查询,相对于现有技术在全量数据中进行查询的方式而言,应用本发明所提供的方案也有利于获得更高的查询效率。
[0074]为了使本领域技术人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。
[0075]图1所示为本发明实施例一种数据存储方法的示意图,该方法可以包括以下步骤:
[0076]S101,预先选取编码算法,并对编码的取值区间进行分段;
[0077]本发明的方案是,把需要存储的目标数据文件的某种标识,按照统一的编码体系进行编码,从而能够按照编码结果对目标文件进行分类处理。
[0078]本发明实施例对于具体选择的编码方式并不需要进行限定,只需要保证:对于不同的文件资源(如图片、音频、网页等等)标识,其编码结果唯一即可,所以,至少应该保证:编码的取值空间大小>待处理的文件数量大小。这里一般采用线性编码方式,例如MD5等哈希算法,以64位二进制编码为例,其编码取值空间的大小为:
[0079]264=18,446,744,073,709,551,616
[0080]可见,对于百亿至千亿数量级别的文件存储数量而言,64位编码的取值空间足以保证不同文件标识的编码值不同,一般来说,对于这种数量级的文件而言不会出现编码值重复的情况。当然,对于理论上可能出现的编码值重复情况,可以采用现有技术的中的编码/签名冲突解决算法来进行处理,保证最终的编码值不重复,本发明实施例对此并不需要进行详细介绍。
[0081]另外,根据实际使用需求,也可以通过调整编码算法来控制取值空间的大小,例如将64位编码方式更换为128位编码方式、32位编码方式等等,本发明实施例对此并不需要进行限定。[0082]确定编码方式后,对编码的取值区间进行分段。根据本发明方案,分段的数量直接影响整合存储后的数量大小。在实施例中,采用简单的一种方式:将整个编码取值空间平均分为若干分段,每个分段对应一个整合存储的文件数据包。
[0083]例如,对于大小为264的取值空间,按照以下方式分为8段:
【权利要求】
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所述的装置,其特征在于,所述装置还包括: 任务分配单元,用于根据编码取值空间的分段结果以及对目标数据文件的编码结果,生成针对目标文件的多个任务包,所述任务包用于分配给不同的分布式任务执行模块。
【文档编号】G06F17/30GK103678293SQ201210314126
【公开日】2014年3月26日 申请日期:2012年8月29日 优先权日:2012年8月29日
【发明者】阮星华 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1