CN103246730A - 文件存储方法和设备、文件发送方法和设备 - Google Patents
文件存储方法和设备、文件发送方法和设备 Download PDFInfo
- Publication number
- CN103246730A CN103246730A CN201310170445XA CN201310170445A CN103246730A CN 103246730 A CN103246730 A CN 103246730A CN 201310170445X A CN201310170445X A CN 201310170445XA CN 201310170445 A CN201310170445 A CN 201310170445A CN 103246730 A CN103246730 A CN 103246730A
- Authority
- CN
- China
- Prior art keywords
- file
- stored
- cryptographic hash
- data block
- tabulation
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明的实施方式提供了一种文件存储方法。该方法包括:响应于接收发送设备发送的、针对待存储文件的数据块计算的哈希值列表,判断待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配;如果不匹配,则通知发送设备从待存储文件中与第一个不匹配的哈希值对应的数据块开始发送待存储文件的内容,直至待存储文件的内容结束,并根据接收到的数据块来存储待存储文件。本发明的实施方式通过文件级别的存储方式,可以以较小的代价维护文件索引,从而降低接收设备的处理资源和性能开销。此外,本发明的实施方式提供了一种文件存储设备,例如,服务器。此外,本发明的实施方式还提供了一种文件发送方法,以及一种文件发送设备,例如客户端。
Description
技术领域
本发明的实施方式涉及互联网领域,更具体地,本发明的实施方式涉及文件存储方法和设备、文件发送方法和设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
在互联网高速发展的今天,利用互联网进行设备之间的数据交互也越来越普遍,例如,不同用户之间可能会采用不同的客户端传输文件,或者,用户还可能会通过客户端向服务器上传文件,再或者,服务器之间可能还会存在文件互相传输和共享的情况。以用户通过客户端向服务器上传文件为例,对于服务器来讲,服务器可以保存多个用户通过多个客户端上传的图片或者文字等,并且其可以与海量客户端进行文件交互,或者将保存的文件提供给更多的用户进行下载。
一般情况下,因为网络环境比较复杂,各个设备之间的对于文件的存储情况并不一致,所以为了避免文件各个设备之间的重复传输,在接收设备方可以将文件分成若干数据块进行存储,这样的话,发送设备如果需要发送某个文件至接收设备进行存储,就需要先将该文件的各个数据块的哈希值都发送给接收设备,由接收设备根据哈希值判断该文件的某个或者某些数据块,与自身存储的某个或某些数据块是否重复,在存在数据块重复的情况下,就不再需要发送设备重复发送该文件中这些重复的数据块。
发明内容
但是,本发明人在研究过程中发现,在现有技术中采用的在接收设备方进行数据块级别的存储方式,需要为每一个数据块都建立对应的索引,而在接收设备方实现海量数据块对应的索引维护的代价非常大,就会导致接收设备的处理资源和性能开销较大。进一步地,接收设备在查询一个文件的时候,因为数据块索引量较大,就需要接收设备耗费更多的资源来查找一个文件,使得文件查找的复杂度很高,因此文件查询效率也就较低。再进一步地,因为采用数据块级别的存储方式,会使得一个文件的多个数据块一般情况下并不是连续存储的,这就使接收设备在读取文件的时候的磁盘输入输出(IO,Input/Output)代价相对较高,这就影响了接收设备对文件的读取效率,同时也会占用较多的接收设备的磁盘IO资源。
再从发送设备来看,由于文件在接收设备方并不是连续存储的,而是分散为各个数据块进行存储,所以发送设备在发送文件之前,需要计算待存储文件的全部数据块的哈希值并将其传送给接收设备,才能使接收设备判断得出都有哪些数据块存在重复的结果,而这对于发送设备来讲,就意味着那些不重复的数据块的哈希值也需要发送给接收设备,这无形中也会降低发送设备向接收设备发送文件的效率。
为此,非常需要一种改进的文件存储方法和设备,以及一种改进的文件发送方法和设备,以解决现有技术的文件存储方法导致的接收设备的处理资源和性能开销较大这一技术问题。进一步地,在文件存储至接收设备之后,还能提高接收设备端的文件查询效率。进一步地,还能提高发送设备发送文件的效率。
在本上下文中,本发明的实施方式期望提供一种文件存储方法和设备,以及一种文件发送方法和设备。
在本发明实施方式的第一方面中,提供了一种文件存储方法,例如可以包括:响应于接收发送设备发送的、针对待存储文件的数据块计算的哈希值列表,判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配;如果不匹配,则通知所述发送设备从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,直至所述待存储文件的内容结束,并根据接收到的数据块来存储所述待存储文件。
在本发明的一个实施方式中,其中,所述待存储文件中的数据块按照文件内容从前到后的顺序进行排序,且所述待存储文件中的数据块按照预设的发送顺序划分为若干数据块集合;所述判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配,包括:按照所述各数据块集合的发送顺序以及数据块集合内各数据块的排序,依次判断所述各数据块集合中各个数据块的哈希值是否与所述已存储文件的哈希值列表中的各个哈希值匹配;其中,所述已存储文件的哈希值列表中各个哈希值的排列顺序与所述待存储文件的各数据块的排序相同。
在本发明的另一实施方式中,其中,所述待存储文件中的第一个数据块集合中仅包括第一个数据块;则所述依次判断所述各数据块集合中各个数据块的哈希值是否与所述已存储文件的哈希值列表中的各个哈希值匹配,包括:判断所述待存储文件的第一个数据块的哈希值是否与所述已存储文件的哈希值列表中的第一个哈希值匹配,如果是,则针对发送设备继续发送的其他数据块集合,依次判断所述其他数据块集合中各个数据块的哈希值是否与对应的所述已存储文件的哈希值列表中的其他哈希值匹配。
在本发明的另一实施方式中,其中,如果所述待存储文件的第一个数据块的哈希值与所述已存储文件的哈希值列表中的第一个哈希值不匹配,则所述根据接收到的数据块来存储所述待存储文件,包括:将所述接收到的数据块确定为所述待存储文件的全部内容;存储所述待存储文件。
在本发明的再一实施方式中,其中,所述已存储文件的文件标识、存储路径和哈希值列表保存在元数据索引表中,则所述方法例如还可以包括:将所述待存储文件的文件标识、存储路径和哈希值列表对应保存至所述元数据索引表中。
在本发明的另一实施方式中,其中,所述待存储文件的哈希值列表包括针对所述待存储文件的部分或全部数据块计算的哈希值;如果所述待存储文件的所述哈希值列表包括针对所述待存储文件的部分数据块计算的哈希值,且所述待存储文件的所述哈希值列表与所述已存储文件的哈希值列表匹配,例如还可以包括:通知所述发送设备继续发送针对所述待存储文件的剩余部分或剩余全部数据块计算的哈希值列表。
在本发明的又一个实施方式中,其中,所述根据接收到的数据块来存储所述待存储文件,包括:将所述接收到的数据块确定为第一文件内容,并和第二文件内容组合为所述待存储文件,其中,所述第二文件内容拷贝自所述已存储文件中与所述待存储文件中匹配的文件内容;存储所述待存储文件。
在本发明的又一个实施方式中,其中,所述待存储文件的哈希值列表包括针对所述待存储文件的部分或全部数据块计算的哈希值;如果所述待存储文件的所述哈希值列表包括针对所述待存储文件的全部数据块计算的哈希值,且所述待存储文件的哈希值列表和已存储文件的哈希值列表匹配,例如还可以包括:将所述已存储文件的存储路径返回至所述发送设备。
在本发明的再一个实施方式中,其中,所述已存储文件的文件标识、存储路径和哈希值列表保存在元数据索引表中。
在本发明的再一个实施方式中,所述元数据索引表还包括已存储文件的引用计数,则将所述已存储文件的存储路径返回至发送设备之后,还包括:将所述已存储文件对应的引用计数增加一。
在本发明实施方式的第二方面中,提供了一种文件发送方法,包括:以数据块为单位计算并发送待存储文件的哈希值列表至接收设备,以便所述接收设备判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配;响应于从所述接收设备接收判断结果为不匹配的通知,从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始向所述接收设备发送所述待存储文件的内容,直至所述待存储文件的内容结束。
在本发明的一个实施方式中,其中,所述待存储文件按照预设的分块方式划分为若干数据块,所述若干数据块按照文件内容从前到后的顺序进行排序,且所述若干数据块按照预设的发送顺序划分为若干数据块集合;所述以数据块为单位计算并发送待存储文件的哈希值列表至接收设备,包括:计算第一个数据块集合的哈希值列表并发送至接收设备;计算第二个数据块集合的哈希值列表,并响应于接收设备在所述第一个数据块集合的哈希值列表与已存储文件的哈希值列表匹配的情况下返回的通知,继续发送第二个数据块集合的哈希值列表,直至在所述接收设备的判断结果为不匹配的情况下接收到接收设备发送的通知,或者,所述待存储文件匹配完毕。
在本发明的再一个实施方式中,在所述接收设备的判断结果为匹配的情况下,例如还可以包括:接收所述接收设备返回的所述已存储文件的存储路径。
在本发明实施方式的第三方面中,提供了一种文件存储设备,例如可以包括:判断模块,配置用于响应于接收发送设备发送的、针对待存储文件的数据块计算的哈希值列表,判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配;通知模块,配置用于在所述判断模块的结果为不匹配的情况下,通知所述发送设备从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,直至所述待存储文件的内容结束;存储模块,配置用于根据接收到的数据块来存储所述待存储文件。
在本发明的另一实施方式中,其中,所述待存储文件中的数据块按照文件内容从前到后的顺序进行排序,且所述待存储文件中的数据块按照预设的发送顺序划分为若干数据块集合;所述判断模块,包括:获取子模块,配置用于获取所述各数据块集合的发送顺序以及数据块集合内各数据块的排序;第一判断子模块,配置用于按照所述各数据块集合的发送顺序以及数据块集合内各数据块的排序,依次判断所述各数据块集合中各个数据块的哈希值是否与所述已存储文件的哈希值列表中的各个哈希值匹配;其中,所述已存储文件的哈希值列表中各个哈希值的排列顺序与所述待存储文件的各数据块的排序相同。
在本发明的另一实施方式中,其中,所述待存储文件中的第一个数据块集合中仅包括第一个数据块;则所述第一判断子模块,包括:第二判断子模块,配置用于判断所述待存储文件的第一个数据块的哈希值是否与所述已存储文件的哈希值列表中的第一个哈希值匹配;第三判断子模块,配置用于在所述第二判断子模块的结果为是的情况下,针对发送设备继续发送的其他数据块集合,依次判断所述其他数据块集合中各个数据块的哈希值是否与对应的所述已存储文件的哈希值列表中的其他哈希值匹配。
在本发明的另一个实施方式中,其中,如果所述待存储文件的第一个数据块的哈希值与所述已存储文件的哈希值列表中的第一个哈希值不匹配,则所述存储模块,包括:第一确定子模块,配置用于将所述接收到的数据块确定为所述待存储文件的全部内容;第一存储模块,配置用于存储所述待存储文件。
在本发明的再一个实施方式中,其中,所述已存储文件的文件标识、存储路径和哈希值列表保存在元数据索引表中,则所述存储模块,则所述存储模块例如还可以包括:保存子模块,用于将所述待存储文件的文件标识、存储路径和哈希值列表对应保存至所述元数据索引表中。
在本发明的另一实施方式中,其中,所述待存储文件的哈希值列表包括针对所述待存储文件的部分或全部数据块计算的哈希值;如果所述待存储文件的所述哈希值列表包括针对所述待存储文件的部分数据块计算的哈希值,且所述待存储文件的所述哈希值列表与所述已存储文件的哈希值列表匹配,例如还可以包括:通知模块,配置用于通知所述发送设备继续发送针对所述待存储文件的剩余部分或剩余全部数据块计算的哈希值列表。
在本发明的另一实施方式中,其中,所述存储模块,包括:第二确定子模块,配置用于将所述接收到的数据块确定为第一文件内容,并和第二文件内容组合为所述待存储文件,其中,所述第二文件内容拷贝自所述已存储文件中与所述待存储文件中匹配的文件内容;第二存储子模块,配置用于存储所述待存储文件。
在本发明的另一实施方式中,其中,所述待存储文件的哈希值列表包括针对所述待存储文件的部分或全部数据块计算的哈希值;如果所述待存储文件的所述哈希值列表包括针对所述待存储文件的全部数据块计算的哈希值,且所述待存储文件的哈希值列表和已存储文件的哈希值列表匹配,例如还可以包括:返回模块,配置用于将所述已存储文件的存储路径返回至所述发送设备。
在本发明的另一实施方式中,所述已存储文件的文件标识、存储路径和哈希值列表保存在元数据索引表中,所述元数据索引表还包括已存储文件的引用计数,还包括:增加模块,配置用于将所述已存储文件对应的引用计数增加一。
在本发明实施方式的第四方面中,提供了一种文件发送设备,包括:预处理模块,配置用于以数据块为单位计算并发送待存储文件的哈希值列表至接收设备,以便所述接收设备判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配;发送模块,配置用于响应于从所述接收设备接收判断结果为不匹配的通知,从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始向所述接收设备发送所述待存储文件的内容,直至所述待存储文件的内容结束。
在本发明的一实施方式中,其中,所述待存储文件按照预设的分块方式划分为若干数据块,所述若干数据块按照文件内容从前到后的顺序进行排序,且所述若干数据块按照预设的发送顺序划分为若干数据块集合;所述预处理模块,包括:第一计算子模块,配置用于计算第一个数据块集合的哈希值列表并发送至接收设备;第二计算子模块,配置用于计算第二个数据块集合的哈希值列表;发送子模块,配置用于在所述第二计算子模块进行计算的同时,响应于接收设备在所述第一个数据块集合的哈希值列表与已存储文件的哈希值列表匹配的情况下返回的通知,继续发送第二个数据块集合的哈希值列表,直至在所述接收设备的判断结果为不匹配的情况下接收到接收设备发送的通知,或者,所述待存储文件匹配完毕。
在本发明的另一实施方式中,在所述接收设备的判断结果为匹配的情况下,例如还可以包括:接收模块,配置用于接收所述接收设备返回的所述已存储文件的存储路径。
在本实施方式中,在接收设备方采用文件级别的存储方式,可以实现以较小的处理资源和性能维护文件索引,从而降低接收设备在查询一个文件时的复杂度,以提高查询效率。进一步地,因为采用文件级别的存储方式,会使一个文件的多个数据块实现连续存储,这就降低了接收设备在读取文件的时候的磁盘输入输出(IO,Input/Output)代价,从而可以提升接收设备对文件的读取效率,同时也不会占用过多的接收设备的磁盘IO资源。同时对于发送设备来讲,其待存储文件如果没有数据块与已存储文件重复,也不需要全部计算待存储文件的哈希值,而只需要计算第一个数据块的哈希值即可,从而可以降低发送设备计算哈希值的开销,也能够缩短发送设备向接收设备发送待存储文件的时间,从而改善用户发送待存储文件的用户体验。
进一步地,对于发送设备来讲,其计算数据块的哈希值和上传数据块的哈希值也可以并行进行,又进一步提升上传效率,改善用户通过发送设备与接收设备的交互体验。并且,对于待存储文件和已存储文件部分匹配或者全部匹配的情况下,发送设备只需要发送部分待存储文件并通过已存储文件中的匹配部分实现待存储文件的存储,甚至可以在全部匹配的情况下不发送待存储文件,这样就能降低接收设备与发送设备之间的网络流量。
进一步地,在接收设备方,相同的已存储文件可以只存储一份,其存储的次数可以通过引用计数的字段进行标示,这样也能降低接收设备方的存储开销,从而保证接收设备的处理效率。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了适于实现本发明实施方式的示例性计算系统100的框图;
图2示意性地示出了本发明的实施方式的一个示例性应用场景的框架示意图;
图3示意性地示出了根据本发明文件存储方法一实施方式的方法流程图;
图4示意性地示出了根据本发明文件存储方法又一实施方式的方法流程图;
图5示意性地示出了根据本发明文件发送方法一实施方式的方法流程图;
图6示意性地示出了根据本发明文件发送方法一实施方式中一步骤的方法流程图;
图7示意性地示出了根据本发明文件发送方法又一实施方式的方法流程图;
图8示意性地示出了本发明一实施方式的文件存储设备(例如,服务器)的结构框架图;
图9示意性地示出了本发明一实施方式的文件存储设备中判断模块801的结构框架图;
图10示意性地示出了本发明一实施方式的文件存储设备中第一判断子模块902的结构框架图;
图11示意性地示出了本发明一实施方式的文件存储设备中存储模块803的结构框架图;
图12示意性地示出了本发明又一实施方式的文件存储设备(例如,服务器)的结构框架图;
图13示意性地示出了本发明一实施方式的文件存储设备中存储模块803的结构框架图;
图14示意性地示出了本发明一实施方式的文件发送设备(例如,客户端)的结构框架图;
图15示意性地示出了本发明又一实施方式的文件发送设备(例如,客户端)的结构框架图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算系统100可以包括:中央处理单元(CPU)101、随机存取存储器(RAM)102、只读存储器(ROM)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施方式的方法的流程图和设备(或系统)的框图描述本发明的实施方式。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
根据本发明的实施方式,提出了一种文件存储方法和设备,以及一种文件发送方法和设备。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,因为现有技术中采用在接收设备方进行数据块级别的存储方式,进而导致在接收设备方实现海量数据块对应的索引维护的代价非常大,使得接收设备对文件进行查询的效率较低,进一步地,也会使接收设备需要占用较多的磁盘IO资源来实现文件的读取。而对于发送设备来说,也需要在发送文件之前,计算待存储文件的全部数据块的哈希值并将其传送给接收设备,而这就意味着那些不重复的数据块的哈希值也需要发送给接收设备,这无形中也会降低发送设备向接收设备发送文件的效率。
而如果在接收设备方能够采用文件级别的存储,即是以文件为单位对不同的数据进行区分,而文件是包括多个数据块的,对于接收设备方只需要针对不同的文件维护不同的索引即可,从而与维护数据块索引相比,可以大大降低维护代价,也能够提高接收设备查询文件的效率。并且,因为文件之间的某个或者某些数据块允许重复,所以对于发送设备来说,在发送文件的时候只需要先发送部分数据块的哈希值,以便发送设备无需计算并发送不重复的数据块对应的哈希值,即可以只向接收设备发送不重复的那部分数据块,这样也能提升发送设备向接收设备发送文件的效率。
进一步地,在接收设备方实现文件级别的存储方式也会使文件中的多个数据块都能实现连续存储,相应地,接收设备在查询同一个文件的时候,就可以在连续的物理空间内实现,就减少了接收设备在读取文件的时候的磁盘IO代价,使得文件查找的复杂度降低,因此在能够提升文件查询效率的同时,也不会占用较多的接收设备的磁盘IO资源。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图2,图2是本发明的实施方式的一个示例性应用场景的框架示意图。例如,接收设备为服务器201,而实现文件发送的发送设备为客户端202,其中,用户通过客户端202与服务器201进行交互。本领域技术人员可以理解,图2所示的框架示意图仅是本发明的实施方式可以在其中得以实现的一个示例。本发明实施方式的适用范围不受到该框架任何方面的限制。
需要注意的是,此处的客户端202可以是现有的、正在研发的或将来研发的、能够通过任何形式的有线或无线连接(例如,Wi-Fi、LAN、WAN、因特网等)与服务器201交互的任何客户端,包括但不限于:现有的、正在研发的或将来研发的、台式计算机、膝上型计算机、移动终端(包括智能手机、非智能手机、各种平板电脑)等。
还需要注意的是,此处的服务器201仅是现有的、正在研发的或将来研发的、能够向用户提供邮件服务的设备的一个示例。本发明的实施方式在此方面不受任何限制。
在本发明的一个实施方式中,服务器201可以响应于接收客户端202发送的、针对待存储文件的数据块计算的哈希值列表,判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配,如果不匹配,则通知所述发送设备客户端202从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,直至所述待存储文件的内容结束,并根据接收到的数据块来存储所述待存储文件。
示例性方法
下面结合图2的应用场景,参考图3来描述根据本发明示例性实施方式的文件存储方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
参考图3所示,为本发明公开的文件存储方法一实施方式的流程图,本实施方式具体例如可以包括:
步骤301:响应于接收发送设备发送的、针对待存储文件的数据块计算的哈希值列表,判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配,如果不匹配,进入步骤302。
在本实施方式中,所述文件存储方法可以应用于接收设备方,例如,可以是客户端向服务器上传文件的服务器,也可以是两个服务器之间进行文件共享时接收文件的服务器,还可以是两个客户端进行文件发送时接收文件的客户端,等等。对于发送设备来讲,在需要发送待存储文件到接收设备方进行存储的时候,可以先按照特定的方式将待存储文件分块为若干数据块,并将这若干数据块按照文件内容从前到后的顺序进行排序,并且再将所述待存储文件中的数据块按照预设的发送顺序划分为若干数据块集合。
其中,对于待存储文件的数据块划分的特定方式,可以有很多种,例如可以按照固定大小的划分方式,即是划分后的若干数据块具有同样的大小;还可以根据文件大小按照比例来划分,即是将文件的1%(当然也可以是其他的比例)的大小作为一个数据块;还可以按照所需要划分数据块的个数的划分方式,例如,将某个文件划分为100个数据块,等等。采用何种划分方式不影响本发明实施方式的实现,本发明因此不对划分的特定方式进行任何限定。
在本发明的实施方式中,接收设备方判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配,具体可以按照发送设备方对各数据块集合的发送顺序以及数据块集合内各数据块的排序,依次来判断所述各数据块集合中各个数据块的哈希值是否与所述已存储文件的哈希值列表中的各个哈希值匹配。例如,某个待存储文件存在数据块集合S1={数据块n1、数据块n2},S2={数据块n3、数据块n4},......S5={数据块n9,数据块n10},可见该待存储文件共有10个数据块,每两个数据块属于一个数据块集合,而这五个数据块集合的发送顺序依次为:S1、S2、......S5,那么接收设备方就可以现对数据块集合S1中的两个数据块n1和n2的哈希值进行匹配,而在数据块集合S1的内部,则可以按照数据块的排序,先匹配数据块n1的哈希值,再匹配数据块n2的哈希值。
其中,需要说明的是,因为接收设备方在对哈希值进行匹配的时候,是将发送设备方发送的待存储文件的哈希值列表与自身已存储文件的哈希值列表中的各个哈希值进行匹配,那么就需要接收设备方的已存储文件中的各个哈希值的排列顺序与所述待存储文件的各数据块的排序相同。在本实施方式中,如果接收设备方判断得到待存储文件的某个或者某些数据块集合的哈希值列表与已存储文件的哈希值列表是匹配的,那就说明这些数据块在接收设备方已经存储了,因此,这些匹配的哈希值对应的数据块的内容就不需要后续由发送设备方进行发送。
在本发明的一个优选实施方式中,接收设备方发送的待存储文件中的第一个数据块集合中可以仅包括第一个数据块,则所述依次判断所述各数据块集合中各个数据块的哈希值是否与所述已存储文件的哈希值列表中的各个哈希值匹配的实现,可以为:先判断待存储文件的第一个数据块的哈希值是否与已存储文件的哈希值列表中的第一个哈希值匹配,如果是,说明待存储文件的第一个数据块已经在已存储文件中进行存储,接收设备方就可以通知发送设备方继续发送数据块集合的哈希值列表,接收设备方同时也可以针对发送设备继续发送的其他数据块集合,再按照发送设备方对各数据块集合的发送顺序以及数据块集合内各数据决的排序,依次来判断所述其他数据块集合中各个数据块的哈希值是否与对应的所述已存储文件的哈希值列表中的其他哈希值匹配。
而对于第一个数据块的哈希值就不匹配的情况,说明发送设备方当前发送的待存储文件与接收设备方的每一个文件都完全不相同,在这种情况下,发送设备方可以直接通知接收设备方将待存储文件的所有数据块都发送给自己进行存储。
步骤302:通知所述发送设备从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,直至所述待存储文件的内容结束,并根据接收到的数据块来存储所述待存储文件。
在本发明的实施方式中,如果接收设备方判断得到待存储文件的哈希值列表与自身存储的已存储文件的哈希值列表不匹配的情况下,说明待存储文件中有部分或者全部的数据块与接收设备方的已存储文件的数据块内容不重复,那么接收设备方就可以通知发送设备从待存储文件中与第一个不匹配的哈希值对应的数据块开始再发送待存储文件的内容,直至接收设备方将待存储文件的内容发送结束,再由接收设备方根据接收到的数据块来存储所述待存储文件。
在本实施方式中,因为有可能出现第一个数据块的哈希值就不匹配的情况,此种情况下,接收设备方就可以将接收到的数据块确定为待存储文件的全部内容并直接将其进行存储。而如果存在部分数据块的哈希值匹配而其他数据块的哈希值不匹配的情况,说明发送设备方发送的那部分数据块只是待存储文件与已存储文件中不重复的那部分数据块,而重复的那部分数据块就需要接收设备方从已存储文件中获取得到,并将重复的那部分数据块与接收到的不重复的那部分数据块组合为待存储文件,进而再将该待存储文件进行存储。
在本实施方式中,因为接收设备方是以文件为单位进行存储的,所以只需针对文件维护其索引即可,因此相比维护各个数据块的索引的方式大大降低了维护索引的代价,从而降低接收设备在查询一个文件时的复杂度,以提高查询效率。而对于发送设备来说,其待存储文件如果有部分数据块与已存储文件重复,那么在实现时也不会将待存储文件的全部数据块的哈希值都进行计算并发送,当接收设备方判断有数据块的哈希值不匹配的时候,就通知发送设备直接从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,这样既不需要发送设备发送待存储文件的全部数据块的哈希值,也不需要发送设备发送待存储文件的全部数据块,从而提高发送设备向接收设备发送文件的效率。
进一步地,在本实施方式中,接收设备实现文件级别的存储方式,也使一个文件中的多个数据块可以实现连续存储,相应的,接收设备在查询某个文件的时候,也就可以在连续的物理空间内实现,这就降低了接收设备在读取文件的时候的磁盘输入输出(IO,Input/Output)所耗费的代价,从而可以提升接收设备对文件的读取效率,同时也不会占用过多的接收设备的磁盘IO资源。
参考图4所示,为本发明公开的文件存储方法又一实施方式的流程图,本实施方式具体例如可以包括:
步骤401:响应于接收发送设备发送的、针对待存储文件的数据块计算的哈希值列表,判断所述待存储文件的第一个数据块的哈希值是否与所述已存储文件的哈希值列表中的第一个哈希值匹配,如果否,则进入步骤402,如果是,则进入步骤404。
在本实施方式中,其中发送设备以客户端,而接收设备以服务器为例,并且对于待存储文件,假设共划分为n个数据块,其中n为大于1的整数。而每一个数据块都对应一个哈希值,例如数据块1对应的哈希值为h1,而数据块2对应的哈希值为h2,以此类推,数据块n对应的哈希值为hn。那么,待存储文件的完整哈希值列表为Hn={h1,h2,......,hn}。对于客户端来讲,因为其是以数据块集合为顺序发送哈希值列表的,所以假设当前客户端已经完成发送的哈希值的最大编号为hi,其中,i应当小于或者等于n。
为了实现待存储文件的哈希值列表与已存储文件的哈希值列表的匹配,在服务器端可以维护一个已存储文件的元数据索引表,如表1所示。
表1
在表1中,该元数据索引表可以包含四个主要字段,分别是文件第一个数据块的哈希值h1、文件id、文件的哈希值列表Hn和存放已存储文件的文件路径。其中,“文件id”字段是元数据索引表的唯一主键,即根据“文件id”进行匹配时,可以快速获得一个或零个文件元数据记录(即是表1中的一行元数据),“第一个数据块哈希值h1”字段是索引键,因为文件虽然是唯一的,但是不同文件所包括的第一个数据块内容有可能是相同的,所以根据“第一个数据块哈希值h1”字段进行匹配,可以快速获得若干个匹配的文件元数据记录。可以理解的是,其中表1中文件的“哈希值列表Hn”中的各个哈希值的排序,应当与客户端发送的待存储文件中各个数据块的哈希值的顺序相同。优选地,该元数据索引表还可以包括文件的“引用计数”字段,该字段可以表示某一个已存储文件在服务器端存储了多少次。
在本实施方式中,假设客户端的第一个数据块集合中只包括第一个数据块,那么客户端在计算第一个数据块的哈希值之后,就将第一个数据块的哈希值h1发送给服务器,而服务器则用该h1的值在元数据索引表中进行检索,假设和h1值匹配的文件记录集合为S。如果S为空,即无匹配文件的记录,则进入步骤402;如果S不为空,则说明存在已存储文件的第一个数据块的哈希值与待存储文件的第一个数据块的哈希值相同,则进入步骤404。
步骤402:通知所述发送设备从所述待存储文件的第一个数据块开始发送所述待存储文件的内容,直至所述待存储文件的内容结束,进入步骤403。
在本实施方式中,如果待存储文件的第一个数据块的哈希值都无法匹配,那么说明客户端的待存储文件对于服务器端来讲都是全新的内容,此时服务器就可以通知客户端从所述待存储文件的第一个数据块开始发送所述待存储文件的内容,即是要求客户端上传整个待存储文件的内容。
步骤403:将所述接收到的数据块确定为所述待存储文件的全部内容,进入步骤408。
当客户端将整个待存储文件的内容发送完毕之后,服务器可以将接收到的数据块确定为待存储文件的全部内容,然后进入步骤408进行存储。优选地,在此种情况下,服务器还可以在元数据索引表中增加一条属于待存储文件的新的元数据记录。
步骤404:通知所述发送设备继续发送针对所述待存储文件的剩余部分或剩余全部数据块计算的哈希值列表,进入步骤405。
而如果待存储文件的第一个数据块的哈希值是否与所述已存储文件的哈希值列表中的第一个哈希值匹配,则服务器可以通知客户端继续计算并发送待存储文件的后续数据块的哈希值,并按照预先设定的发送顺序依次分批发送到服务器端。
步骤405:针对发送设备继续发送的其他数据块集合,按照所述各数据块集合的发送顺序以及数据块集合内各数据块的排序,依次判断所述其他数据块集合中各个数据块的哈希值是否与对应的所述已存储文件的哈希值列表中的其他哈希值匹配,如果匹配且待存储文件的哈希值列表还未发送完毕,则返回步骤404,如果匹配且待存储文件的哈希值列表发送完毕,则进入步骤409;如果不匹配,则进入步骤406。
对于S不为空的情况,服务器端则针对客户端继续计算并发送的其他数据块集合,每接收到客户端发送的一个数据块集合的哈希值列表,就按照各数据块集合的发送顺序以及数据块集合内各数据块的排序,判断数据块集合中各个数据块的哈希值是否与对应的所述已存储文件的哈希值列表中的其他哈希值匹配,即是将当前接收到的待存储文件的哈希值列表Hi与S中所有文件记录的哈希值列表Hn进行匹配,对于Hn中前i个哈希值与Hi不匹配的文件记录将从S中清除,如果完成比较后S依然不为空,即是已存储文件和待存储文件的哈希值列表匹配且待存储文件的哈希值列表还未发送完毕,则返回步骤404继续通知所述发送设备继续发送针对所述待存储文件的剩余部分或剩余全部数据块计算的哈希值列表,而如果匹配且待存储文件的哈希值列表发送完毕,说明待存储文件和已存储文件的最后一个数据块的哈希值也比较完毕,所有的哈希值均匹配说明待存储文件和已存储文件相同,此时进入步骤409。而如果出现了S为空的情况,说明已经不再有已存储文件的哈希值与待存储文件的哈希值匹配,此时进入步骤406。
步骤406:通知所述发送设备从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,直至所述待存储文件的内容结束,进入步骤407。
服务器就可以通知客户端从待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,直至所述待存储文件的内容结束。具体实现时,可以记录之前S中被清除的已存储文件中与Hi匹配度最高的文件记录F的id(F)以及Hi与Hn(F)不相匹配的第一个哈希值的序号j,然后通知客户端从第j个哈希值对应的数据块开始传输后续的待存储文件的数据块,直到待存储文件的全部数据块传输完毕。
步骤407:将所述接收到的数据块确定为第一文件内容,并和第二文件内容组合为所述待存储文件,其中,所述第二文件内容拷贝自所述已存储文件中与所述待存储文件中匹配的文件内容,进入步骤408。
因为在元数据索引表中,根据文件id可以唯一确定一个源数据记录,那么在该唯一确定的元数据记录中就有存在一个“文件路径”,服务器器端根据文件F的文件路径,可以拷贝文件F中前j-1个数据块到新的文件Fx,然后将从客户端接收到的全部数据块追加到Fx后,形成完整的新的文件Fx,即是客户端需要发送到服务器进行存储的待存储文件。
优选地,服务器还可以将Fx的元数据记录插入到表1所示的元数据索引表中。
步骤408:存储所述待存储文件。
在待存储文件形成之后,服务器再存储待存储文件,文件存储流程结束。
需要说明的是,在从步骤403进入步骤408进行待存储文件的存储时,因为待存储文件对于服务器来讲,其所有的数据块都是全新,所以在这种情况下,执行完步骤408之后,还需要在元数据索引表中增加一条待存储文件的元数据索引记录,以将所述待存储文件的文件标识、存储路径和哈希值列表对应保存至所述元数据索引表中的新的元数据索引记录中。
步骤409:将所述已存储文件的存储路径返回至所述发送设备。
在本步骤中,当服务器接收到了待存储文件的完整哈希值列表,且S至少有一个文件Fy的哈希值列表与待存储文件的完整哈希值列表完全匹配,说明客户端待发送给服务器的待存储文件的内容与服务器至少一个已存储文件完全一样,则此时服务器就直接将任意一个相同的已存储文件的存储路口返回至客户端即可,不再需要客户端重复上传与自身已存储文件相同的文件数据块。
步骤410:将所述已存储文件对应的引用计数增加一。
本实施方式中,如果服务器直接将所述已存储文件的存储路径返回给客户端,那么优选地,服务器还可以在元数据索引表中将该已存储文件的引用计数字段的数值加一,说明已存储文件在服务器的存储次数。
本实施方式中,不仅在服务器端采用文件级别的存储方式,可以实现以较小的维护文件索引,从而降低接收设备的处理资源和性能开销。同时对于发送设备来讲,其待存储文件如果没有数据块与已存储文件重复,也不需要全部计算待存储文件的哈希值,而只需要计算第一个数据块的哈希值即可,从而可以降低客户端计算哈希值的开销,也能够缩短客户端向服务器上传待存储文件的时间,从而改善用户上传待存储文件的用户体验。并且,对于客户端来讲,其计算数据块的哈希值和上传数据块的哈希值也可以并行进行,又进一步提升上传效率,改善用户通过客户端与服务器的交互体验。并且,对于待存储文件和已存储文件部分匹配或者全部匹配的情况下,客户端只需要上传部分待存储文件并通过已存储文件中的匹配部分实现待存储文件的存储,甚至可以在全部匹配的情况下不上传待存储文件,这样就能降低客户端与服务器的网络流量。进一步地,在服务器端,相同的已存储文件可以只存储一份,其存储的次数可以通过引用计数的字段进行标示,这样也能降低服务器端的存储开销,从而保证服务器端的处理效率。
参考图5所示,为本发明公开的文件发送方法一实施方式的流程图,本实施方式具体例如可以包括:
步骤501:以数据块为单位计算并发送待存储文件的哈希值列表至接收设备,以便所述接收设备判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配,如果接收设备的判断结果为不匹配,则进入步骤502。
在本实施方式中,是与图3所示意的文件存储方法的实施方式对应的并在发送设备方实施的文件发送方法。其中,发送设备方,例如,可以是客户端向服务器上传文件的客户端,也可以是两个服务器之间进行文件共享时发送文件的服务器,还可以是两个客户端进行文件发送时发送文件的客户端,等等。对于发送设备来讲,在需要发送待存储文件到接收设备方进行存储的时候,可以先按照特定的方式将待存储文件分块为若干数据块,并将这若干数据块按照文件内容从前到后的顺序进行排序,并且再将所述待存储文件中的数据块按照预设的发送顺序划分为若干数据块集合。
需要说明的是,对于待存储文件的数据块划分的特定方式,可以有很多种,例如可以按照固定大小的划分方式,即是划分后的若干数据块具有同样的大小;还可以根据文件大小按照比例来划分,即是将文件的1%(当然也可以是其他的比例)的大小作为一个数据块;还可以按照所需要划分数据块的个数的划分方式,例如,将某个文件划分为100个数据块,等等。采用何种划分方式不影响本发明实施方式的实现,本发明因此不对划分的特定方式进行任何限定。
可以理解的是,在发送设备以何种方式划分数据块需要与接收设备方的已存储文件的哈希值列表的数据块的排序相一致。具体的,发送设备对于数据块集合的发送顺序的设定等,可以参考图3所示的实施方式中的详细介绍,在此不再赘述。
在本发明的实施方式中,参考图6所示,为发送设备方以数据块为单位计算并发送待存储文件的哈希值列表至接收设备的流程图,具体可以包括:
步骤601:计算第一个数据块集合的哈希值列表并发送至接收设备。
发送设备方在将待存储文件划分为若干数据块集合之后,首先只计算第一个数据块集合中各个数据块的哈希值列表并发送至接收设备,其中,第一数据块集合中的数据块个数可以是一个,也可以是多个。发送设备方将第一个数据块集合的哈希值列表发送给接收设备方之后,接收设备方进行待存储文件与已存储文件的哈希值列表的匹配过程,可以参考图3以及图4所示的实施方式。
步骤602:计算第二个数据块集合的哈希值列表,并响应于接收设备在所述第一个数据块集合的哈希值列表与已存储文件的哈希值列表匹配的情况下返回的通知,继续发送第二个数据块集合的哈希值列表,直至在所述接收设备的判断结果为不匹配的情况下接收到接收设备发送的通知,或者,所述待存储文件匹配完毕。
发送设备方在将第一个数据块集合的哈希值列表计算并发送至接收设备之后,就可以开始计算第二个数据块集合的哈希值列表,如果接收设备判断得到第一个数据块集合的哈希值列表与已存储文件的哈希值列表匹配,就会通知发送设备接着发送后续的数据块集合的哈希值列表,而如果接收设备对于某一个数据块集合的判断结果为不匹配,则接收设备会通知发送设备开始从第一个不匹配的哈希值对应的数据块开始发送待存储文件,此时发送设备就无需接着计算和发送待存储文件的哈希值列表,或者,一直到待存储文件的所有数据块的哈希值都发送完毕。
接着返回图5,进入步骤502:响应于从所述接收设备接收判断结果为不匹配的通知,从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始向所述接收设备发送所述待存储文件的内容,直至所述待存储文件的内容结束。
在接收设备接收到接收设备的判断结果为不匹配的通知的情况下,接收设备开始从所述待存储文件中与第一个不匹配的哈希值对应的数据块向所述接收设备发送所述待存储文件的内容,直至所述待存储文件的内容结束。
优选地,参考图7所示,如果在步骤501中,在接收设备的判断结果为匹配的情况下,还包括:
步骤701:接收所述接收设备返回的所述已存储文件的存储路径。
如果待存储文件的所有哈希值都与已存储文件的所有哈希值匹配,说明待存储文件与接收设备方至少一个已存储文件存在相同的情况,那么发送设备无需再向接收设备发送该待存储文件,直接接收设备方返回的已存储文件的存储路径即可。
在本实施方式中,对于发送设备来说,其待存储文件如果有部分数据块与接收设备方的已存储文件重复,那么就不需要将待存储文件的全部数据块的哈希值都进行计算并发送,当接收设备方判断有数据块的哈希值不匹配的时候,就通知发送设备直接从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,这样既不需要发送设备发送待存储文件的全部数据块的哈希值,也不需要发送设备发送待存储文件的全部数据块,从而提高发送设备向接收设备发送文件的效率。
其中,接收设备方为服务器且发送设备为客户端进行文件发送的具体示例,可以参考图4所示的实施方式,在此不再赘述。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图8,图8是本发明实施方式公开的文件存储设备(例如,服务器)的一实施方式的结构示意图,本发明示例性实施方式的、文件发送设备,具体例如可以包括:
判断模块801,配置用于响应于接收发送设备发送的、针对待存储文件的数据块计算的哈希值列表,判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配。
其中,所述待存储文件中的数据块按照文件内容从前到后的顺序进行排序,且所述待存储文件中的数据块按照预设的发送顺序划分为若干数据块集合;则所述判断模块801,参考图9所示,具体可以包括:
获取子模块901,配置用于获取所述各数据块集合的发送顺序以及数据块集合内各数据块的排序;
第一判断子模块902,配置用于按照所述各数据块集合的发送顺序以及数据块集合内各数据块的排序,依次判断所述各数据块集合中各个数据块的哈希值是否与所述已存储文件的哈希值列表中的各个哈希值匹配;其中,所述已存储文件的哈希值列表中各个哈希值的排列顺序与所述待存储文件的各数据块的排序相同。
其中,假设所述待存储文件中的第一个数据块集合中仅包括第一个数据块;则所述第一判断子模块902,参考图10所示,具体可以包括:
第二判断子模块1001,配置用于判断所述待存储文件的第一个数据块的哈希值是否与所述已存储文件的哈希值列表中的第一个哈希值匹配;
第三判断子模块1002,配置用于在所述第二判断子模块的结果为是的情况下,针对发送设备继续发送的其他数据块集合,依次判断所述其他数据块集合中各个数据块的哈希值是否与对应的所述已存储文件的哈希值列表中的其他哈希值匹配。
第一通知模块802,配置用于在所述判断模块的结果为不匹配的情况下,通知所述发送设备从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,直至所述待存储文件的内容结束。
存储模块803,配置用于根据接收到的数据块来存储所述待存储文件。
其中,如果所述待存储文件的第一个数据块的哈希值与所述已存储文件的哈希值列表中的第一个哈希值不匹配,则所述存储模块803,参考图11所示,具体可以包括:
第一确定子模块1101,配置用于将所述接收到的数据块确定为所述待存储文件的全部内容;
第一存储子模块1102,配置用于存储所述待存储文件。
其中,所述已存储文件的文件标识、存储路径和哈希值列表保存在元数据索引表中,则所述存储模块,在第一存储子模块1102存储待存储文件之后,还可以包括:保存子模块,用于将所述待存储文件的文件标识、存储路径和哈希值列表对应保存至所述元数据索引表中。
其中,所述待存储文件的哈希值列表包括针对所述待存储文件的部分或全部数据块计算的哈希值;如果所述待存储文件的所述哈希值列表包括针对所述待存储文件的部分数据块计算的哈希值,且所述待存储文件的所述哈希值列表与所述已存储文件的哈希值列表匹配,则参考图12所示,所述设备还可以包括:
第二通知模块1201,配置用于通知所述发送设备继续发送针对所述待存储文件的剩余部分或剩余全部数据块计算的哈希值列表。
其中,所述存储模块803,具体可以包括:
第二确定子模块1301,配置用于将所述接收到的数据块确定为第一文件内容,并和第二文件内容组合为所述待存储文件,其中,所述第二文件内容拷贝自所述已存储文件中与所述待存储文件中匹配的文件内容;
第二存储子模块1302,配置用于存储所述待存储文件。
其中,所述待存储文件的哈希值列表包括针对所述待存储文件的部分或全部数据块计算的哈希值;如果所述待存储文件的所述哈希值列表包括针对所述待存储文件的全部数据块计算的哈希值,且所述待存储文件的哈希值列表和已存储文件的哈希值列表匹配,参考图12所示,所述文件存储设备还可以包括:
返回模块1202,配置用于将所述已存储文件的存储路径返回至所述发送设备。
所述已存储文件的文件标识、存储路径和哈希值列表保存在元数据索引表中,所述元数据索引表还包括已存储文件的引用计数,还可以包括:
增加模块1303,配置用于将所述已存储文件对应的引用计数增加一。
根据本发明的某些实施方式,可见,本发明实施方式提供的文件存储设备(例如,服务器),因为是以文件为单位进行存储的,所以只需针对文件维护其索引即可,因此相比维护各个数据块的索引的方式大大降低了维护索引的代价,从而降低文件存储设备的处理资源和性能开销。
进一步地,在本实施方式中,文件存储设备实现文件级别的存储方式,也使一个文件中的多个数据块可以实现连续存储,相应的,文件存储设备在查询某个文件的时候,也就可以在连续的物理空间内实现,这就不需要文件存储设备耗费那么多存储资源来查找文件,降低了文件查找的复杂度,因此提升了文件查询效率。
进一步地,在文件存储设备上(例如服务器),相同的已存储文件可以只存储一份,其存储的次数可以通过引用计数的字段进行标示,这样也能降低文件存储设备(例如服务器)端的存储开销,从而保证服务器端的处理效率。
参考图14所示,为本发明提供的文件发送设备(例如,客户端)的一实施方式的结构框图,本实施方式具体例如还可以包括:
预处理模块1401,配置用于以数据块为单位计算并发送待存储文件的哈希值列表至接收设备,以便所述接收设备判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配;
其中,所述待存储文件按照预设的分块方式划分为若干数据块,所述若干数据块按照文件内容从前到后的顺序进行排序,且所述若干数据块按照预设的发送顺序划分为若干数据块集合;所述预处理模块,具体可以包括:第一计算子模块,配置用于计算第一个数据块集合的哈希值列表并发送至接收设备;第二计算子模块,配置用于计算第二个数据块集合的哈希值列表;以及,发送子模块,配置用于在所述第二计算子模块进行计算的同时,响应于接收设备在所述第一个数据块集合的哈希值列表与已存储文件的哈希值列表匹配的情况下返回的通知,继续发送第二个数据块集合的哈希值列表,直至在所述接收设备的判断结果为不匹配的情况下接收到接收设备发送的通知,或者,所述待存储文件匹配完毕。
发送模块1402,配置用于响应于从所述接收设备接收判断结果为不匹配的通知,从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始向所述接收设备发送所述待存储文件的内容,直至所述待存储文件的内容结束。
其中,在所述接收设备的判断结果为匹配的情况下,参考图15所示,所述文件发送设备还可以包括:
接收模块1501,配置用于接收所述接收设备返回的所述已存储文件的存储路径。
可见,本发明实施方式提供的文件发送设备(例如,客户端),其待存储文件如果有部分数据块与已存储文件重复,那么在实现时也不会将待存储文件的全部数据块的哈希值都进行计算并发送,当文件存储设备判断有数据块的哈希值不匹配的时候,就通知文件发送设备直接从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,这样既不需要文件发送设备发送待存储文件的全部数据块的哈希值,也不需要文件发送设备发送待存储文件的全部数据块,从而提高文件发送设备向接收设备(例如服务器)发送文件的效率。
应当注意,尽管在上文详细描述中提及了设备(例如,服务器,或者客户端)的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (25)
1.一种方法,包括:
响应于接收发送设备发送的、针对待存储文件的数据块计算的哈希值列表,判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配;
如果不匹配,则通知所述发送设备从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,直至所述待存储文件的内容结束,并根据接收到的数据块来存储所述待存储文件。
2.根据权利要求1所述的方法,其中,所述待存储文件中的数据块按照文件内容从前到后的顺序进行排序,且所述待存储文件中的数据块按照预设的发送顺序划分为若干数据块集合;所述判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配,包括:
按照所述各数据块集合的发送顺序以及数据块集合内各数据块的排序,依次判断所述各数据块集合中各个数据块的哈希值是否与所述已存储文件的哈希值列表中的各个哈希值匹配;其中,所述已存储文件的哈希值列表中各个哈希值的排列顺序与所述待存储文件的各数据块的排序相同。
3.根据权利要求2所述的方法,其中,所述待存储文件中的第一个数据块集合中仅包括第一个数据块;则所述依次判断所述各数据块集合中各个数据块的哈希值是否与所述已存储文件的哈希值列表中的各个哈希值匹配,包括:
判断所述待存储文件的第一个数据块的哈希值是否与所述已存储文件的哈希值列表中的第一个哈希值匹配,如果是,则针对发送设备继续发送的其他数据块集合,依次判断所述其他数据块集合中各个数据块的哈希值是否与对应的所述已存储文件的哈希值列表中的其他哈希值匹配。
4.根据权利要求3所述的方法,其中,如果所述待存储文件的第一个数据块的哈希值与所述已存储文件的哈希值列表中的第一个哈希值不匹配,则所述根据接收到的数据块来存储所述待存储文件,包括:
将所述接收到的数据块确定为所述待存储文件的全部内容;
存储所述待存储文件。
5.根据权利要求4所述的方法,其中,所述已存储文件的文件标识、存储路径和哈希值列表保存在元数据索引表中,还包括:
将所述待存储文件的文件标识、存储路径和哈希值列表对应保存至所述元数据索引表中。
6.根据权利要求1~3所述的方法,其中,所述待存储文件的哈希值列表包括针对所述待存储文件的部分或全部数据块计算的哈希值;如果所述待存储文件的所述哈希值列表包括针对所述待存储文件的部分数据块计算的哈希值,且所述待存储文件的所述哈希值列表与所述已存储文件的哈希值列表匹配,还包括:
通知所述发送设备继续发送针对所述待存储文件的剩余部分或剩余全部数据块计算的哈希值列表。
7.根据权利要求6所述的方法,其中,所述根据接收到的数据块来存储所述待存储文件,包括:
将所述接收到的数据块确定为第一文件内容,并和第二文件内容组合为所述待存储文件,其中,所述第二文件内容拷贝自所述已存储文件中与所述待存储文件中匹配的文件内容;
存储所述待存储文件。
8.根据权利要求1~3所述的方法,其中,所述待存储文件的哈希值列表包括针对所述待存储文件的部分或全部数据块计算的哈希值;如果所述待存储文件的所述哈希值列表包括针对所述待存储文件的全部数据块计算的哈希值,且所述待存储文件的哈希值列表和已存储文件的哈希值列表匹配,还包括:
将所述已存储文件的存储路径返回至所述发送设备。
9.根据权利要求8所述的方法,其中,所述已存储文件的文件标识、存储路径和哈希值列表保存在元数据索引表中。
10.根据权利要求9所述的方法,所述元数据索引表还包括已存储文件的引用计数,则将所述已存储文件的存储路径返回至发送设备之后,还包括:
将所述已存储文件对应的引用计数增加一。
11.一种方法,包括:
以数据块为单位计算并发送待存储文件的哈希值列表至接收设备,以便所述接收设备判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配;
响应于从所述接收设备接收判断结果为不匹配的通知,从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始向所述接收设备发送所述待存储文件的内容,直至所述待存储文件的内容结束。
12.根据权利要求11所述的方法,其中,所述待存储文件按照预设的分块方式划分为若干数据块,所述若干数据块按照文件内容从前到后的顺序进行排序,且所述若干数据块按照预设的发送顺序划分为若干数据块集合;所述以数据块为单位计算并发送待存储文件的哈希值列表至接收设备,包括:
计算第一个数据块集合的哈希值列表并发送至接收设备;
计算第二个数据块集合的哈希值列表,并响应于接收设备在所述第一个数据块集合的哈希值列表与已存储文件的哈希值列表匹配的情况下返回的通知,继续发送第二个数据块集合的哈希值列表,直至在所述接收设备的判断结果为不匹配的情况下接收到接收设备发送的通知,或者,所述待存储文件匹配完毕。
13.根据权利要求11所述的方法,在所述接收设备的判断结果为匹配的情况下,还包括:
接收所述接收设备返回的所述已存储文件的存储路径。
14.一种设备,包括:
判断模块,配置用于响应于接收发送设备发送的、针对待存储文件的数据块计算的哈希值列表,判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配;
通知模块,配置用于在所述判断模块的结果为不匹配的情况下,通知所述发送设备从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始发送所述待存储文件的内容,直至所述待存储文件的内容结束;
存储模块,配置用于根据接收到的数据块来存储所述待存储文件。
15.根据权利要求14所述的设备,其中,所述待存储文件中的数据块按照文件内容从前到后的顺序进行排序,且所述待存储文件中的数据块按照预设的发送顺序划分为若干数据块集合;所述判断模块,包括:
获取子模块,配置用于获取所述各数据块集合的发送顺序以及数据块集合内各数据块的排序;
第一判断子模块,配置用于按照所述各数据块集合的发送顺序以及数据块集合内各数据块的排序,依次判断所述各数据块集合中各个数据块的哈希值是否与所述已存储文件的哈希值列表中的各个哈希值匹配;其中,所述已存储文件的哈希值列表中各个哈希值的排列顺序与所述待存储文件的各数据块的排序相同。
16.根据权利要求15所述的设备,其中,所述待存储文件中的第一个数据块集合中仅包括第一个数据块;则所述第一判断子模块,包括:
第二判断子模块,配置用于判断所述待存储文件的第一个数据块的哈希值是否与所述已存储文件的哈希值列表中的第一个哈希值匹配;
第三判断子模块,配置用于在所述第二判断子模块的结果为是的情况下,针对发送设备继续发送的其他数据块集合,依次判断所述其他数据块集合中各个数据块的哈希值是否与对应的所述已存储文件的哈希值列表中的其他哈希值匹配。
17.根据权利要求16所述的设备,其中,如果所述待存储文件的第一个数据块的哈希值与所述已存储文件的哈希值列表中的第一个哈希值不匹配,则所述存储模块,包括:
第一确定子模块,配置用于将所述接收到的数据块确定为所述待存储文件的全部内容;
第一存储子模块,配置用于存储所述待存储文件。
18.根据权利要求17所述的设备,其中,所述已存储文件的文件标识、存储路径和哈希值列表保存在元数据索引表中,则所述存储模块,还包括:
保存子模块,用于将所述待存储文件的文件标识、存储路径和哈希值列表对应保存至所述元数据索引表中。
19.根据权利要求14~16任一项所述的设备,其中,所述待存储文件的哈希值列表包括针对所述待存储文件的部分或全部数据块计算的哈希值;如果所述待存储文件的所述哈希值列表包括针对所述待存储文件的部分数据块计算的哈希值,且所述待存储文件的所述哈希值列表与所述已存储文件的哈希值列表匹配,还包括:
通知模块,配置用于通知所述发送设备继续发送针对所述待存储文件的剩余部分或剩余全部数据块计算的哈希值列表。
20.根据权利要求19所述的设备,其中,所述存储模块,包括:
第二确定子模块,配置用于将所述接收到的数据块确定为第一文件内容,并和第二文件内容组合为所述待存储文件,其中,所述第二文件内容拷贝自所述已存储文件中与所述待存储文件中匹配的文件内容;
第二存储子模块,配置用于存储所述待存储文件。
21.根据权利要求14~16任一项所述的设备,其中,所述待存储文件的哈希值列表包括针对所述待存储文件的部分或全部数据块计算的哈希值;如果所述待存储文件的所述哈希值列表包括针对所述待存储文件的全部数据块计算的哈希值,且所述待存储文件的哈希值列表和已存储文件的哈希值列表匹配,还包括:
返回模块,配置用于将所述已存储文件的存储路径返回至所述发送设备。
22.根据权利要求21所述的设备,所述已存储文件的文件标识、存储路径和哈希值列表保存在元数据索引表中,所述元数据索引表还包括已存储文件的引用计数,还包括:
增加模块,配置用于将所述已存储文件对应的引用计数增加一。
23.一种设备,包括:
预处理模块,配置用于以数据块为单位计算并发送待存储文件的哈希值列表至接收设备,以便所述接收设备判断所述待存储文件的哈希值列表和已存储文件的哈希值列表是否匹配;
发送模块,配置用于响应于从所述接收设备接收判断结果为不匹配的通知,从所述待存储文件中与第一个不匹配的哈希值对应的数据块开始向所述接收设备发送所述待存储文件的内容,直至所述待存储文件的内容结束。
24.根据权利要求23所述的设备,其中,所述待存储文件按照预设的分块方式划分为若干数据块,所述若干数据块按照文件内容从前到后的顺序进行排序,且所述若干数据块按照预设的发送顺序划分为若干数据块集合;所述预处理模块,包括:
第一计算子模块,配置用于计算第一个数据块集合的哈希值列表并发送至接收设备;
第二计算子模块,配置用于计算第二个数据块集合的哈希值列表;
发送子模块,配置用于在所述第二计算子模块进行计算的同时,响应于接收设备在所述第一个数据块集合的哈希值列表与已存储文件的哈希值列表匹配的情况下返回的通知,继续发送第二个数据块集合的哈希值列表,直至在所述接收设备的判断结果为不匹配的情况下接收到接收设备发送的通知,或者,所述待存储文件匹配完毕。
25.根据权利要求23所述的设备,在所述接收设备的判断结果为匹配的情况下,还包括:
接收模块,配置用于接收所述接收设备返回的所述已存储文件的存储路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310170445.XA CN103246730B (zh) | 2013-05-08 | 2013-05-08 | 文件存储方法和设备、文件发送方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310170445.XA CN103246730B (zh) | 2013-05-08 | 2013-05-08 | 文件存储方法和设备、文件发送方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103246730A true CN103246730A (zh) | 2013-08-14 |
CN103246730B CN103246730B (zh) | 2016-08-10 |
Family
ID=48926250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310170445.XA Active CN103246730B (zh) | 2013-05-08 | 2013-05-08 | 文件存储方法和设备、文件发送方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103246730B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412929A (zh) * | 2013-08-16 | 2013-11-27 | 蓝盾信息安全技术股份有限公司 | 一种海量数据的存储方法 |
CN103916483A (zh) * | 2014-04-28 | 2014-07-09 | 中国科学院成都生物研究所 | 一种针对编码冗余存储系统的自适应数据存储与重构方法 |
CN104113594A (zh) * | 2014-07-04 | 2014-10-22 | 北京思特奇信息技术股份有限公司 | 一种基于js上传组件的文件上传方法及系统 |
CN104811425A (zh) * | 2014-01-27 | 2015-07-29 | 中兴通讯股份有限公司 | 一种多媒体传输的方法及终端、服务器 |
CN104994442A (zh) * | 2015-07-06 | 2015-10-21 | 无锡天脉聚源传媒科技有限公司 | 一种传输视频文件的方法及装置 |
CN107357929A (zh) * | 2017-07-27 | 2017-11-17 | 广东欧珀移动通信有限公司 | 文件读取方法、移动终端及可读存储介质 |
CN108241640A (zh) * | 2016-12-23 | 2018-07-03 | 航天星图科技(北京)有限公司 | 一种分布式的文件存储方法 |
CN108806730A (zh) * | 2018-06-29 | 2018-11-13 | 广州酷狗计算机科技有限公司 | 音频处理方法、装置及计算机可读存储介质 |
CN109194674A (zh) * | 2018-09-20 | 2019-01-11 | 浪潮电子信息产业股份有限公司 | 一种通信数据的处理方法及装置 |
CN109324998A (zh) * | 2018-09-18 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种文件处理方法、装置及系统 |
CN110633052A (zh) * | 2019-09-05 | 2019-12-31 | 北京达佳互联信息技术有限公司 | 一种存储嵌入参数的方法及装置 |
CN111090628A (zh) * | 2019-12-20 | 2020-05-01 | 上海米哈游网络科技股份有限公司 | 一种数据处理方法、装置、存储介质及电子设备 |
CN111949629A (zh) * | 2020-07-22 | 2020-11-17 | 金钱猫科技股份有限公司 | 一种面向边缘云的文件存储方法及终端 |
CN113127421A (zh) * | 2021-04-01 | 2021-07-16 | 山东英信计算机技术有限公司 | 一种存储系统检索文件内容的方法和设备 |
CN114064572A (zh) * | 2021-11-12 | 2022-02-18 | 苏州慧工云信息科技有限公司 | 一种基于哈希算法的对象存储方法及系统 |
CN114564446A (zh) * | 2022-03-01 | 2022-05-31 | 清华大学 | 一种文件存储的方法、装置、系统及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504670A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 数据操作方法、系统、客户端和数据服务器 |
CN102469142A (zh) * | 2010-11-16 | 2012-05-23 | 英业达股份有限公司 | 重复数据删除程序的数据传输方法 |
CN102495894A (zh) * | 2011-12-12 | 2012-06-13 | 成都市华为赛门铁克科技有限公司 | 重复数据查找方法、装置及系统 |
CN102834803A (zh) * | 2009-11-23 | 2012-12-19 | 皮斯佩斯有限公司 | 在分布式存储系统中去除文件的重复的装置及方法 |
GB2493832A (en) * | 2011-08-10 | 2013-02-20 | Replify Ltd | A data de-duplication system using chunks |
US8402250B1 (en) * | 2010-02-03 | 2013-03-19 | Applied Micro Circuits Corporation | Distributed file system with client-side deduplication capacity |
-
2013
- 2013-05-08 CN CN201310170445.XA patent/CN103246730B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504670A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 数据操作方法、系统、客户端和数据服务器 |
CN102834803A (zh) * | 2009-11-23 | 2012-12-19 | 皮斯佩斯有限公司 | 在分布式存储系统中去除文件的重复的装置及方法 |
US8402250B1 (en) * | 2010-02-03 | 2013-03-19 | Applied Micro Circuits Corporation | Distributed file system with client-side deduplication capacity |
CN102469142A (zh) * | 2010-11-16 | 2012-05-23 | 英业达股份有限公司 | 重复数据删除程序的数据传输方法 |
GB2493832A (en) * | 2011-08-10 | 2013-02-20 | Replify Ltd | A data de-duplication system using chunks |
CN102495894A (zh) * | 2011-12-12 | 2012-06-13 | 成都市华为赛门铁克科技有限公司 | 重复数据查找方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
胡建军: "一种改进Go-Back-N ARQ策略研究", 《计算机应用与软件》, 15 July 2011 (2011-07-15), pages 1 - 2 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412929A (zh) * | 2013-08-16 | 2013-11-27 | 蓝盾信息安全技术股份有限公司 | 一种海量数据的存储方法 |
CN104811425A (zh) * | 2014-01-27 | 2015-07-29 | 中兴通讯股份有限公司 | 一种多媒体传输的方法及终端、服务器 |
CN103916483A (zh) * | 2014-04-28 | 2014-07-09 | 中国科学院成都生物研究所 | 一种针对编码冗余存储系统的自适应数据存储与重构方法 |
CN104113594A (zh) * | 2014-07-04 | 2014-10-22 | 北京思特奇信息技术股份有限公司 | 一种基于js上传组件的文件上传方法及系统 |
CN104994442A (zh) * | 2015-07-06 | 2015-10-21 | 无锡天脉聚源传媒科技有限公司 | 一种传输视频文件的方法及装置 |
CN108241640B (zh) * | 2016-12-23 | 2022-04-08 | 中科星图股份有限公司 | 一种分布式的文件存储方法 |
CN108241640A (zh) * | 2016-12-23 | 2018-07-03 | 航天星图科技(北京)有限公司 | 一种分布式的文件存储方法 |
CN107357929A (zh) * | 2017-07-27 | 2017-11-17 | 广东欧珀移动通信有限公司 | 文件读取方法、移动终端及可读存储介质 |
CN108806730A (zh) * | 2018-06-29 | 2018-11-13 | 广州酷狗计算机科技有限公司 | 音频处理方法、装置及计算机可读存储介质 |
CN109324998A (zh) * | 2018-09-18 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种文件处理方法、装置及系统 |
CN109194674A (zh) * | 2018-09-20 | 2019-01-11 | 浪潮电子信息产业股份有限公司 | 一种通信数据的处理方法及装置 |
CN110633052B (zh) * | 2019-09-05 | 2023-09-19 | 北京达佳互联信息技术有限公司 | 一种存储嵌入参数的方法及装置 |
CN110633052A (zh) * | 2019-09-05 | 2019-12-31 | 北京达佳互联信息技术有限公司 | 一种存储嵌入参数的方法及装置 |
CN111090628A (zh) * | 2019-12-20 | 2020-05-01 | 上海米哈游网络科技股份有限公司 | 一种数据处理方法、装置、存储介质及电子设备 |
CN111090628B (zh) * | 2019-12-20 | 2023-11-14 | 上海米哈游网络科技股份有限公司 | 一种数据处理方法、装置、存储介质及电子设备 |
CN111949629A (zh) * | 2020-07-22 | 2020-11-17 | 金钱猫科技股份有限公司 | 一种面向边缘云的文件存储方法及终端 |
CN111949629B (zh) * | 2020-07-22 | 2024-03-22 | 金钱猫科技股份有限公司 | 一种面向边缘云的文件存储方法及终端 |
CN113127421A (zh) * | 2021-04-01 | 2021-07-16 | 山东英信计算机技术有限公司 | 一种存储系统检索文件内容的方法和设备 |
CN114064572A (zh) * | 2021-11-12 | 2022-02-18 | 苏州慧工云信息科技有限公司 | 一种基于哈希算法的对象存储方法及系统 |
CN114064572B (zh) * | 2021-11-12 | 2024-03-19 | 苏州慧工云信息科技有限公司 | 一种基于哈希算法的对象存储方法及系统 |
CN114564446B (zh) * | 2022-03-01 | 2022-12-27 | 清华大学 | 一种文件存储的方法、装置、系统及存储介质 |
CN114564446A (zh) * | 2022-03-01 | 2022-05-31 | 清华大学 | 一种文件存储的方法、装置、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103246730B (zh) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103246730A (zh) | 文件存储方法和设备、文件发送方法和设备 | |
JP6734946B2 (ja) | 情報を生成するための方法及び装置 | |
US20170109371A1 (en) | Method and Apparatus for Processing File in a Distributed System | |
CN103118140A (zh) | 将文件分享给关系圈外其他用户终端的方法、系统及装置 | |
US20170308620A1 (en) | Making graph pattern queries bounded in big graphs | |
CN111490878A (zh) | 密钥生成方法、装置、设备及介质 | |
CN105677635A (zh) | 用于自然语言交互的方法、设备及系统 | |
CN103136342A (zh) | 应用程序app的搜索方法、系统以及搜索服务器 | |
US20170070349A1 (en) | Signature verification for data set components using probabilistic data structures | |
US8447857B2 (en) | Transforming HTTP requests into web services trust messages for security processing | |
CN104079623B (zh) | 多级云存储同步控制方法及系统 | |
CN109842652A (zh) | 一种文件的上传方法、终端、云服务器和计算机存储介质 | |
CN108776665B (zh) | 一种数据处理方法及装置 | |
CN114139040A (zh) | 一种数据存储及查询方法、装置、设备及可读存储介质 | |
CN104205071A (zh) | 信息处理系统、信息处理方法、通信终端、服务器和控制方法以及其控制程序 | |
CN102970380A (zh) | 获取云存储文件的媒体数据的方法以及云存储服务器 | |
CN106332556B (zh) | 传输云端文件的方法、终端及云端服务器 | |
US10212036B2 (en) | Performance testing method, performance testing apparatus performing the same and storage medium storing the same | |
CN116108042A (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN113794566B (zh) | 一种可再投票的二元共识方法、装置、及存储介质 | |
CN113407702B (zh) | 员工合作关系强度量化方法、系统、计算机和存储介质 | |
CN117009430A (zh) | 数据管理方法、装置和存储介质及电子设备 | |
WO2015078124A1 (zh) | 一种网络数据处理方法及装置 | |
CN111291230A (zh) | 特征处理方法、装置、电子设备及计算机可读存储介质 | |
CN112416945A (zh) | 基于大数据平台的数据处理方法、系统和计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |