CN115858472A - 一种数据处理方法、装置、服务器及介质 - Google Patents
一种数据处理方法、装置、服务器及介质 Download PDFInfo
- Publication number
- CN115858472A CN115858472A CN202211466529.3A CN202211466529A CN115858472A CN 115858472 A CN115858472 A CN 115858472A CN 202211466529 A CN202211466529 A CN 202211466529A CN 115858472 A CN115858472 A CN 115858472A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- fragment data
- fragment
- target
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种数据处理方法、装置、服务器及介质。方法包括:在接收到目标上传文件的第一个分片数据之后创建一个临时文件;针对在第一个分片数据后所上传的目标上传文件的每个分片数据,基于分片数据的分片编号和分片大小确定分片数据在目标文件中的偏移位置;在接收到客户端发送的指示信息之后,基于第一个分片数据的偏移位置将第一个分片数据写入目标文件中。该方法通过比较第一个和第二个分片数据的长度确定分片大小,以基于分片大小确定每个分片数据的偏移位置,并基于偏移位置将分片数据直接写入至目标文件中,避免了为每个分片数据创建一个临时文件而增加了服务器负担的问题,提高了数据处理的效率。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、服务器及介质。
背景技术
随着技术的发展和需求的增加,两个节点之间(如客户端和服务器之间)数据传输的数据量也越来越大,而数据量的增大就会伴随出现有传输超时情况。
目前,为了避免这种超时情况,对于数据量较大的大文件,客户端可以采用将一个大文件分成多个分片数据,然后再上传这些分片数据至服务器。服务器在收到分片数据后,将这些分片数据分别写入到一个临时文件中;所有分片数据上传完毕后,服务器可以将这些临时文件里面的分片数据再一一写入到另一个文件中,以合并为一个完整的文件,至此完成大文件的上传。
然而,在上述方法过程中,由于服务器需要为每个分片数据创建一个临时文件来临时保存这些分片数据,并且在上传完所有分片数据后还要合并这些分片数据,从而增加了服务器负担,降低了所上传大文件的处理效率。
发明内容
本发明实施例提供了一种数据处理方法、装置、服务器及介质,以提高数据处理的效率。
根据本发明实施例的一方面,提供了一种数据处理方法,包括:
在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将所述第一个分片数据保存至所述临时文件中,所述目标上传文件为客户端要上传给服务器的文件,所述目标上传文件包括多个分片数据;
在接收到所述目标上传文件的第二个分片数据之后,基于所述第一个分片数据的长度和所述第二个分片数据的长度,确定所述目标上传文件的分片大小;
针对在所述第一个分片数据后所上传的,所述目标上传文件的每个分片数据,基于所述分片数据的分片编号和所述分片大小,确定所述分片数据在目标文件中的偏移位置,并基于所述偏移位置将所述分片数据写入所述目标文件中;
在接收到客户端发送的指示信息之后,基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中,所述指示信息指示客户端将所述目标上传文件的最后一个分片数据上传完毕。
根据本发明实施例的另一方面,提供了一种数据处理装置,包括:
创建模块,用于在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将所述第一个分片数据保存至所述临时文件中,所述目标上传文件为客户端要上传给服务器的文件,所述目标上传文件包括多个分片数据;
确定模块,用于在接收到所述目标上传文件的第二个分片数据之后,基于所述第一个分片数据的长度和所述第二个分片数据的长度,确定所述目标上传文件的分片大小;
第一写入模块,用于针对在所述第一个分片数据后所上传的,所述目标上传文件的每个分片数据,基于所述分片数据的分片编号和所述分片大小,确定所述分片数据在目标文件中的偏移位置,并基于所述偏移位置将所述分片数据写入所述目标文件中;
第二写入模块,用于在接收到客户端发送的指示信息之后,基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中,所述指示信息指示客户端将所述目标上传文件的最后一个分片数据上传完毕。
根据本发明实施例的另一方面,提供了一种服务器,所述服务器包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的数据处理方法。
根据本发明实施例的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的数据处理方法。
本发明实施例的技术方案,首先在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将第一个分片数据保存至临时文件中,目标上传文件为客户端要上传给服务器的文件,目标上传文件包括多个分片数据;然后在接收到目标上传文件的第二个分片数据之后,基于第一个分片数据的长度和第二个分片数据的长度,确定目标上传文件的分片大小;之后针对在第一个分片数据后所上传的,目标上传文件的每个分片数据,基于分片数据的分片编号和分片大小,确定分片数据在目标文件中的偏移位置,并基于偏移位置将分片数据写入目标文件中;最后在接收到客户端发送的指示信息之后,基于第一个分片数据的偏移位置将第一个分片数据写入目标文件中,指示信息指示客户端将目标上传文件的最后一个分片数据上传完毕。该方法通过比较第一个和第二个接收到的分片数据的长度确定分片大小,以基于分片大小确定目标上传文件的每个分片数据的偏移位置,并基于偏移位置将分片数据直接写入至目标文件中以完成目标上传文件的接收处理,避免了为每个分片数据创建一个临时文件而增加了服务器负担的问题,提高了数据处理的效率。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种数据处理方法的流程示意图;
图2为本发明实施例二提供的一种数据处理方法的流程示意图;
图3为本发明实施例二提供的一种数据处理方法的实现示意图;
图4为本发明实施例三提供的一种数据处理装置的结构示意图;
图5为本发明实施例四提供的一种服务器的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种数据处理方法的流程示意图,该方法可适用于对客户端上传的数据进行处理以提高数据处理效率的情况,该方法可以由数据处理装置来执行,其中该装置可由软件和/或硬件实现,并一般集成在服务器上。
如图1所示,本发明实施例一提供的一种数据处理方法,该方法包括如下步骤:
S110、在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将所述第一个分片数据保存至所述临时文件中。
在本实施例中,服务器也可认为是服务端,可以与客户端之间建立通信连接。目标上传文件可理解为客户端要上传给服务器的文件;此处对目标上传文件的大小不作具体限定,如可以是10兆(Mbyte,MB)、100MB或200MB等。目标上传文件可以包括多个分片数据。分片数据可理解为将目标上传文件进行切分后所得的数据;如目标上传文件为11MB,按照固定的分片大小(如可以是5MB)来切分成一段一段大小相等的数据;可理解的是,最后一段数据不一定会是5MB,因为目标上传文件的大小不一定可以按照分片大小均分,故最终可以得到两段5MB的数据和1段1MB的数据,这三段数据可认为是将目标上传文件进行切分后所得到的3个分片数据,也就是说,目标上传文件可包括多个分片数据。
第一个分片数据可理解为服务器第一个接收到的目标上传文件的分片数据。可理解的是,由于客户端上传分片数据的方式具有不确定性,故各个分片数据不一定是按照切分的前后顺序上传的,也就是说,不一定是第一个切分出来的分片数据就是第一个能被服务器接收到的分片数据,因此服务器所接收的第一个分片数据不一定是目标上传文件第一个切分出来的分片数据,可能是目标上传文件所包括的任意一个分片数据。临时文件可理解为临时创建的用于保存第一个分片数据的文件。
服务器在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将第一个分片数据保存至临时文件中。此处对如何将第一个分片数据保存至临时文件中不作具体限定,如可以将第一个分片数据写入临时文件,以暂时保存,以待后续备用。
S120、在接收到所述目标上传文件的第二个分片数据之后,基于所述第一个分片数据的长度和所述第二个分片数据的长度,确定所述目标上传文件的分片大小。
在本实施例中,第二个分片数据可理解为服务器第二个接收到的目标上传文件的分片数据。分片数据的长度可理解为分片数据的大小,如5MB大小。分片大小可理解为将目标上传文件切分时所按照的固定大小。
由于第一个接收到的分片数据有可能是1MB的分片数据,因此不能直接依据第一个分片数据来判定目标上传文件的分片大小,且目标上传文件被切分后最多会存在一个长度小于分片大小的分片数据,因此可以根据第一个分片数据的长度和第二个分片数据的长度来判断目标上传文件的分片大小。
此处对如何基于第一个分片数据的长度和第二个分片数据的长度,确定目标上传文件的分片大小不作具体限定。如可以将第一个分片数据的长度和第二个分片数据的长度中,最大的长度确定为目标上传文件的分片大小,如第一个分片数据的长度是5MB,第二分片数据的长度是1MB,则5MB即为最大的长度,故5MB即可确定为目标上传文件的分片大小;可理解的是,若是第一个分片数据的长度和第二个分片数据的长度相等,则最大的长度可以是第一个分片数据的长度或第二个分片数据的长度。
S130、针对在所述第一个分片数据后所上传的,所述目标上传文件的每个分片数据,基于所述分片数据的分片编号和所述分片大小,确定所述分片数据在目标文件中的偏移位置,并基于所述偏移位置将所述分片数据写入所述目标文件中。
在本实施例中,分片编号可理解为分片数据被切分时,表征切分顺序先后的编号;每个分片数据对应一个分片编号,如客户端在切分目标上传文件时,从目标上传文件的文件首端开始切分,第一个切分出来的分片数据编号可以为0,第二个切分出来的分片数据编号可以为1,以此类推。分片编号可以指示所对应分片数据在目标上传文件的位置。
目标文件可理解为服务器所创建的用于合并和保存各个分片数据的文件。偏移位置可理解为分片数据在目标文件中的写入位置;分片数据写入目标文件中,所占用的大小可以用分片数据的长度来表征,因此偏移位置也可用分片数据的长度来表征;具体如分片数据的偏移位置为5MB,偏移位置是相对于目标文件首端开始的,首端可认为是0MB位置处,因此可将该分片数据在目标文件的5MB位置处开始写入。其中可理解的是,分片数据在目标文件中的位置顺序与分片数据在目标上传文件中的位置顺序是相同和相应的,如目标上传文件中第一个被切分出的分片数据,在目标上传文件的位置,与这第一个被切分出的分片数据写入至目标文件的位置,是相同和相应的。
针对在第一个分片数据后所上传的,目标上传文件的每个分片数据,可以基于该分片数据的分片编号和分片大小,确定该分片数据在目标文件中的偏移位置,并基于偏移位置将分片数据写入目标文件中。此处对如何基于分片数据的分片编号和分片大小,确定分片数据在目标文件中的偏移位置不作具体限定;如可以将该分片数据对应的分片编号和分片大小的乘积值,作为该分片数据在目标文件中的偏移位置。此处对如何基于偏移位置将分片数据写入目标文件中也不作具体限定,如可以在分片数据所对应的偏移位置处,将该分片数据写入至目标文件中,如若分片数据的偏移位置为5MB,则可以在目标文件的5MB位置处开始写入分片数据。
S140、在接收到客户端发送的指示信息之后,基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中。
在本实施例中,指示信息可以指示客户端将目标上传文件的最后一个分片数据上传完毕。
在第一个分片数据后所上传的,目标上传文件的每个分片数据均写入目标文件之后,此时还差第一个分片数据没有被写入目标文件中,可理解的是,只有第一个分片数据也写入目标文件中,才可表明目标上传文件的所有分片数据已被服务器合并为一个目标文件,即目标上传文件已被服务器接收完成;因此,在接收到客户端发送的指示信息之后,可以基于第一个分片数据的偏移位置将第一个分片数据写入目标文件中,以完成目标上传文件的完全接收。
此处对如何基于第一个分片数据的偏移位置将第一个分片数据写入目标文件中不作具体限定,如可以先基于第一个分片数据的分片编号和分片大小确定出第一个分片数据对应的偏移位置,在此基础上,可以在第一个分片数据对应的偏移位置处开始将第一个分片数据写入目标文件。
本发明实施例一提供的一种数据处理方法,首先在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将第一个分片数据保存至临时文件中,目标上传文件为客户端要上传给服务器的文件,目标上传文件包括多个分片数据;然后在接收到目标上传文件的第二个分片数据之后,基于第一个分片数据的长度和第二个分片数据的长度,确定目标上传文件的分片大小;之后针对在第一个分片数据后所上传的,目标上传文件的每个分片数据,基于分片数据的分片编号和分片大小,确定分片数据在目标文件中的偏移位置,并基于偏移位置将分片数据写入目标文件中;最后在接收到客户端发送的指示信息之后,基于第一个分片数据的偏移位置将第一个分片数据写入目标文件中,指示信息指示客户端将目标上传文件的最后一个分片数据上传完毕。该方法通过比较第一个和第二个接收到的分片数据的长度确定分片大小,以基于分片大小确定目标上传文件的每个分片数据的偏移位置,并基于偏移位置将分片数据直接写入至目标文件中以完成目标上传文件的接收处理,避免了为每个分片数据创建一个临时文件而增加了服务器负担的问题,提高了数据处理的效率。
实施例二
图2为本发明实施例二提供的一种数据处理方法的流程示意图,本实施例二在上述各实施例的基础上进行细化。在本实施例中,对基于第一个分片数据的长度和第二个分片数据的长度,确定目标上传文件的分片大小的过程、基于分片数据的分片编号和分片大小,确定分片数据在目标文件中的偏移位置的过程、以及基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中的过程进行了具体描述。需要说明的是,未在本实施例中详尽描述的技术细节可参见上述任意实施例。如图2所示,该方法包括:
如图2所示,本发明实施例二提供的一种数据处理方法,包括如下步骤:
S210、在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将第一个分片数据保存至临时文件中。
S220、在接收到目标上传文件的第二个分片数据之后,比较第一个分片数据的长度和第二个分片数据的长度,将最大的长度确定为目标上传文件的分片大小。
在本实施例中,在接收到目标上传文件的第二个分片数据之后,可以通过比较第一个分片数据的长度和第二个分片数据的长度,将最大的长度确定为目标上传文件的分片大小。如若第一个分片数据和第二个分片数据的长度相同,则可以将第一个分片数据的长度或第二个分片数据的长度确定为目标上传文件的分片大小。
S230、针对在第一个分片数据后所上传的,目标上传文件的每个分片数据,将分片数据的分片编号和分片大小之间的乘积值,确定为分片数据在目标文件中的偏移位置,并基于偏移位置将分片数据写入目标文件中。
在本实施例中,针对在第一个分片数据后所上传的,目标上传文件的每个分片数据,可以将该分片数据的分片编号和分片大小之间的乘积值,确定为该分片数据在目标文件中的偏移位置,并基于该分片数据对应的偏移位置将该分片数据写入目标文件中。
S240、在接收到客户端发送的指示信息之后,基于第一个分片数据的分片编号和分片大小,确定第一个分片数据在目标文件中的偏移位置。
在本实施例中,在接收到客户端发送的指示信息之后,表明客户端已将所述目标上传文件的最后一个分片数据上传完毕,此时可以将第一个分片数据写入目标文件中以完成目标上传文件的各个分片数据的合成,可以先基于第一个分片数据的分片编号和分片大小,确定第一个分片数据在目标文件中的偏移位置。
S250、在第一个分片数据对应的偏移位置处开始将第一个分片数据写入目标文件。
在本实施例中,在第一个分片数据对应的偏移位置处开始将第一个分片数据写入目标文件。可理解的是,在目标上传文件的所有分片数据都写入目标文件之后,可表明目标上传文件接收完成。
本发明实施例二提供的一种,具体化了基于第一个分片数据的长度和第二个分片数据的长度,确定目标上传文件的分片大小的过程、基于分片数据的分片编号和分片大小,确定分片数据在目标文件中的偏移位置的过程、以及基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中的过程。该方法通过每个分片数据的分片编号和分片大小,能够确定分片数据在目标文件中的偏移位置,以基于分片数据的偏移位置将分片数据写入目标文件中,以完成目标上传文件的接收,避免了为每个分片数据创建一个临时文件而增加了服务器负担的问题,提高了数据处理的效率。
可选的,该方法还包括:
针对目标上传文件的每个分片数据,在将分片数据写入目标文件之后,将分片数据的元数据信息保存至数据库中,元数据信息至少包括分片数据对应的文件标识和分片数据名称,文件标识指示分片数据所属目标上传文件。
本实施例中,文件标识可以指示分片数据所属目标上传文件,也就是说,文件标识可认为是指示目标上传文件的唯一标识,一个目标上传文件对应一个文件标识。元数据信息可理解为用于描述分片数据属性的信息,用来支持如指示存储位置、历史数据、资源查找和文件纪录等功能。此处对元数据信息的具体内容不作限定,如可以至少包括分片数据对应的文件标识、分片数据名称、分片编号和分片数据长度等信息。其中,分片数据名称可理解为唯一指示分片数据的名称;分片数据长度可理解为分片数据的长度(或大小)。
针对目标上传文件的每个分片数据,在将该分片数据写入目标文件之后,可以将该分片数据的元数据信息保存至数据库中,以待后续备用。
可选的,该方法还包括:
响应于客户端的查询请求,基于查询请求所指示的文件标识,从数据库中查询文件标识所对应目标上传文件中已上传分片数据的元数据信息,并将元数据信息返回至客户端。
本实施例中,查询请求可理解为用于查询分片数据写入情况的请求。已上传分片数据可理解为客户端已上传的,并已被服务端接收完成的分片数据;可理解的是,已上传分片数据的元数据信息已保存至数据库中。
服务器响应于客户端的查询请求,可以基于查询请求所指示的文件标识,从数据库中查询该文件标识所对应目标上传文件中的已上传分片数据(如可以包括多个已上传分片数据),并将已上传分片数据对应的元数据信息作为查询的结果返回至客户端。可理解的是,客户端根据所返回的元数据信息可以判断哪些分片数据已写入目标文件中,即表明已被服务器接收完成。相应的,若是在数据库中查询不到任何分片数据及其对应的元数据信息,可返回一个空结果给客户端,客户端基于这个空结果可以得知文件标识所对应目标上传文件中的分片数据均未被服务器接收完成。
可选的,在基于第一个分片数据的偏移位置将第一个分片数据写入目标文件中之后,还包括:清除临时文件和数据库中目标上传文件所对应各分片数据的元数据信息。
本实施例中,在基于第一个分片数据的偏移位置将第一个分片数据写入目标文件中之后,目标上传文件的各个分片数据已全部写入目标文件中,目标上传文件已被服务器接收完毕,此时为了避免资源的占用和浪费,可以清除临时文件和数据库中目标上传文件所对应各分片数据的元数据信息。
可选的,目标上传文件在客户端被基于分片大小切分为多个分片数据;
各分片数据是由客户端通过串行或并行的方式上传到服务器的。
本实施例中,目标上传文件可以在客户端被基于分片大小切分为多个分片数据。在切分之后,各分片数据可以是由客户端通过串行或并行的方式上传到服务器的。
以下对本发明进行示例性说明。
本发明提出了一种新型的对象存储网关分片数据实时合并方法,包括识别分片数据大小和直接合并分片数据。
一、在客户端这一侧:
客户端上传大文件到服务端。首先判断要上传的文件是否大文件;如果是小文件(如小于10MB的文件可以是小文件,此处对此不作限定)可以直接调用相应的上传接口上传到服务端。如果是大文件,客户端可以将大文件(即目标上传文件)切分成若干大小相等的分片数据(最后一段分片数据除外,最后一段分片数据的长度可能小于或等于其他一段分片数据的长度)。然后,调用CreateMultipartUpload接口(即分片数据上传启动接口)获取uploadid(上传大文件标识,即文件标识);其中客户端调用CreateMultipartUpload接口通知服务端做好接收大文件的分片数据的准备;同时服务端返回指示大文件上传的文件标识(Identity,ID)给客户端(即返回uploadid给客户端)。有了文件标识后,调用UploadPart接口(即分片数据上传接口),将所有分片数据串行或并行上传到服务端(即服务器);其中客户端可以循环调用上传分片数据接口上传分片数据,直到所有分片数据全部上传完毕。
可理解的是,由于客户端上传分片数据的方式具有不确定性,所以服务端收到的分片数据的顺序也就有不确定性。也就是说,不能根据服务端收到的第一个分片数据的长度确定该大文件的分片大小。
二、在服务端这一侧:
首先,识别大文件分片数据大小。服务端接收到第一个分片数据后,为该大文件创建一个临时文件(临时文件的大小可以与第一个分片数据的大小一致),并且把该第一个分片数据临时保存到刚创建的文件目录里。记录下该分片数据的uploadid、objectname(即分片数据名称)、partNumber(即分片编号)和Content-Length(即分片数据长度)等元数据信息到数据库。服务端收到第二个分片数据后,将第二个分片数据的Content-Length与第一分片数据的Content-Length进行比较大小,哪个Content-Length大,那么该Content-Length值就是该大文件的分片大小(即partSize);并将这个分片大小存入到数据库,以备后面步骤使用。
然后,服务端直接合并各个分片数据。根据分片大小,通过公式offset=partNumber*partSize,计算出第二个分段文件的偏移位置;其中offset表示偏移位置。利用稀疏文件特性,根据第二个分片数据在目标文件中的偏移位置,将第二个分片数据直接写入到目标文件对应的偏移位置;并可以同时在数据库里面添加第二个分片数据的元数据信息,以为ListParts接口提供数据源。服务器(即服务端)收到第三个分片数据后,不再进行分片大小的识别过程,而是从数据库直接查询该大文件的分片大小。之后以此类推,后面的分片数据的写入过程和第二个分片数据操作一致,直到大文件的所有分片数据上传完成。
其中,在分片数据上传过程中,客户端可调用ListParts接口(即分片数据上传列表查询接口)查询已上传完成的分片数据的元数据信息。服务端根据客户端传入的uploadid信息,去数据库查询uploadid所对应大文件中已上传完成的分片数据的元数据信息,并将这元数据信息返回给客户端。客户端根据所拿到的已上传分片数据的元数据信息后,可以确定哪些分片数据需要继续上传,哪些分片数据已上传完毕。
最后,客户端上传完大文件的最后一个分片数据后,调用CompleteMultipartUpload接口(即分片数据上传完成接口)以指示信息的形式通知服务端最后一个分片数据已上传完成,此时服务端可以将第一个分片数据从临时文件中读取出来,去数据库查询分片大小以根据偏移位置的计算公式计算出第一个分片数据的偏移位置,以基于该偏移位置将第一个分片数据写入至目标文件中,以完成所有分片数据的合并。在合并完所有的分片数据后,服务端可以清除掉所创建的临时文件、临时分片数据和该大文件相关的各个分片数据的元数据信息。至此,完成了大文件分段上传的所有流程。
图3为本发明实施例二提供的一种数据处理方法的实现示意图。如图3所示,客户端基于分片大小(如x MB)将目标上传文件切分为n个分片数据(即分片数据1、分片数据2、分片数据3、……、分片数据n);分片数据1、分片数据2、分片数据3、……和分片数据n的长度分别是x MB、x MB、x MB、……、y MB,其中y小于或等于x。每个分片数据上传到服务端之后,服务端基于每个分片数据所对应的偏移位置将每个分片数据写入目标文件中,相应的,同时将每个分片数据对应的元数据信息(即元数据信息1、元数据信息2、元数据信息3、……、元数据信息n)保存至数据库中以待备用;其中数据库中还包括有分片大小,以用于服务端基于分片大小和每个分片数据的分片编号计算对应的偏移位置。
本发明实施例,通过对比两个分片数据的长度可以得到分片大小,根据分片大小和分片编号可以计算出该分片数据在目标文件中的偏移位置,直接将分片数据写入到目标文件对应的偏移位置,从而能够高效实时合并分片数据,避免了为每个分片数据创建一个临时文件的问题,减小了系统开销。
实施例三
图4为本发明实施例三提供的一种数据处理装置的结构示意图,该装置可由软件和/或硬件实现。如图4所示,该装置包括:
创建模块310,用于在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将所述第一个分片数据保存至所述临时文件中,所述目标上传文件为客户端要上传给服务器的文件,所述目标上传文件包括多个分片数据;
确定模块320,用于在接收到所述目标上传文件的第二个分片数据之后,基于所述第一个分片数据的长度和所述第二个分片数据的长度,确定所述目标上传文件的分片大小;
第一写入模块330,用于针对在所述第一个分片数据后所上传的,所述目标上传文件的每个分片数据,基于所述分片数据的分片编号和所述分片大小,确定所述分片数据在目标文件中的偏移位置,并基于所述偏移位置将所述分片数据写入所述目标文件中;
第二写入模块340,用于在接收到客户端发送的指示信息之后,基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中,所述指示信息指示客户端将所述目标上传文件的最后一个分片数据上传完毕。
在本实施例中,该装置首先通过创建模块310,在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将第一个分片数据保存至临时文件中,目标上传文件为客户端要上传给服务器的文件,目标上传文件包括多个分片数据;然后通过确定模块320,在接收到目标上传文件的第二个分片数据之后,基于第一个分片数据的长度和第二个分片数据的长度,确定目标上传文件的分片大小;之后通过第一写入模块330,针对在第一个分片数据后所上传的,目标上传文件的每个分片数据,基于分片数据的分片编号和分片大小,确定分片数据在目标文件中的偏移位置,并基于偏移位置将分片数据写入目标文件中;最后通过第二写入模块340,在接收到客户端发送的指示信息之后,基于第一个分片数据的偏移位置将第一个分片数据写入目标文件中,指示信息指示客户端将目标上传文件的最后一个分片数据上传完毕。该装置通过比较第一个和第二个接收到的分片数据的长度确定分片大小,以基于分片大小确定目标上传文件的每个分片数据的偏移位置,并基于偏移位置将分片数据直接写入至目标文件中以完成目标上传文件的接收处理,避免了为每个分片数据创建一个临时文件而增加了服务器负担的问题,提高了数据处理的效率。
可选的,确定模块320,包括:
大小确定单元,用于比较所述第一个分片数据的长度和所述第二个分片数据的长度,将最大的长度确定为所述目标上传文件的分片大小。
可选的,所述分片编号指示所对应分片数据在所述目标上传文件的位置;相应的,第一写入模块330,包括:
第一位置确定单元,用于将所述分片数据的分片编号和所述分片大小之间的乘积值,确定为所述分片数据在目标文件中的偏移位置。
可选的,第二写入模块340,包括:
第二位置确定单元,用于基于所述第一个分片数据的分片编号和所述分片大小,确定所述第一个分片数据在目标文件中的偏移位置;
写入单元,用于在所述第一个分片数据对应的偏移位置处开始将所述第一个分片数据写入所述目标文件。
可选的,该装置还包括:
保存模块,用于针对所述目标上传文件的每个分片数据,在将所述分片数据写入所述目标文件之后,将所述分片数据的元数据信息保存至数据库中,所述元数据信息至少包括所述分片数据对应的文件标识和分片数据名称,所述文件标识指示所述分片数据所属目标上传文件。
可选的,该装置还包括:
查询模块,用于响应于所述客户端的查询请求,基于所述查询请求所指示的文件标识,从所述数据库中查询所述文件标识所对应目标上传文件中已上传分片数据的元数据信息,并将所述元数据信息返回至所述客户端。
可选的,该装置还包括:
清除模块,用于在基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中之后,清除所述临时文件和所述数据库中所述目标上传文件所对应各分片数据的元数据信息。
可选的,所述目标上传文件在所述客户端被基于分片大小切分为多个分片数据;
各所述分片数据是由所述客户端通过串行或并行的方式上传到所述服务器的。
本发明实施例所提供的数据处理装置可执行本发明任意实施例所提供的数据处理方法,具备执行方法相应的功能模块和有益效果。
实施例四
图5为本发明实施例四提供的一种服务器的结构示意图。服务器旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。服务器还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图5所示,服务器10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储服务器10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
服务器10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许服务器10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如数据处理方法。
在一些实施例中,数据处理方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到服务器10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的数据处理方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在服务器上实施此处描述的系统和技术,该服务器具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给服务器。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (11)
1.一种数据处理方法,其特征在于,应用于服务器,所述方法包括:
在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将所述第一个分片数据保存至所述临时文件中,所述目标上传文件为客户端要上传给服务器的文件,所述目标上传文件包括多个分片数据;
在接收到所述目标上传文件的第二个分片数据之后,基于所述第一个分片数据的长度和所述第二个分片数据的长度,确定所述目标上传文件的分片大小;
针对在所述第一个分片数据后所上传的,所述目标上传文件的每个分片数据,基于所述分片数据的分片编号和所述分片大小,确定所述分片数据在目标文件中的偏移位置,并基于所述偏移位置将所述分片数据写入所述目标文件中;
在接收到客户端发送的指示信息之后,基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中,所述指示信息指示客户端将所述目标上传文件的最后一个分片数据上传完毕。
2.根据权利要求1所述的方法,其特征在于,基于所述第一个分片数据的长度和所述第二个分片数据的长度,确定所述目标上传文件的分片大小,包括;
比较所述第一个分片数据的长度和所述第二个分片数据的长度,将最大的长度确定为所述目标上传文件的分片大小。
3.根据权利要求1所述的方法,其特征在于,所述分片编号指示所对应分片数据在所述目标上传文件的位置;相应的,
基于所述分片数据的分片编号和所述分片大小,确定所述分片数据在目标文件中的偏移位置,包括:
将所述分片数据的分片编号和所述分片大小之间的乘积值,确定为所述分片数据在目标文件中的偏移位置。
4.根据权利要求1所述的方法,其特征在于,基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中,包括:
基于所述第一个分片数据的分片编号和所述分片大小,确定所述第一个分片数据在目标文件中的偏移位置;
在所述第一个分片数据对应的偏移位置处开始将所述第一个分片数据写入所述目标文件。
5.根据权利要求1所述的方法,其特征在于,还包括:
针对所述目标上传文件的每个分片数据,在将所述分片数据写入所述目标文件之后,将所述分片数据的元数据信息保存至数据库中,所述元数据信息至少包括所述分片数据对应的文件标识和分片数据名称,所述文件标识指示所述分片数据所属目标上传文件。
6.根据权利要求5所述的方法,其特征在于,还包括:
响应于所述客户端的查询请求,基于所述查询请求所指示的文件标识,从所述数据库中查询所述文件标识所对应目标上传文件中已上传分片数据的元数据信息,并将所述元数据信息返回至所述客户端。
7.根据权利要求1所述的方法,其特征在于,在基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中之后,还包括:
清除所述临时文件和所述数据库中所述目标上传文件所对应各分片数据的元数据信息。
8.根据权利要求1所述的方法,其特征在于,
所述目标上传文件在所述客户端被基于分片大小切分为多个分片数据;
各所述分片数据是由所述客户端通过串行或并行的方式上传到所述服务器的。
9.一种数据处理装置,其特征在于,配置于服务器,包括:
创建模块,用于在接收到目标上传文件的第一个分片数据之后,创建一个临时文件,并将所述第一个分片数据保存至所述临时文件中,所述目标上传文件为客户端要上传给服务器的文件,所述目标上传文件包括多个分片数据;
确定模块,用于在接收到所述目标上传文件的第二个分片数据之后,基于所述第一个分片数据的长度和所述第二个分片数据的长度,确定所述目标上传文件的分片大小;
第一写入模块,用于针对在所述第一个分片数据后所上传的,所述目标上传文件的每个分片数据,基于所述分片数据的分片编号和所述分片大小,确定所述分片数据在目标文件中的偏移位置,并基于所述偏移位置将所述分片数据写入所述目标文件中;
第二写入模块,用于在接收到客户端发送的指示信息之后,基于所述第一个分片数据的偏移位置将所述第一个分片数据写入所述目标文件中,所述指示信息指示客户端将所述目标上传文件的最后一个分片数据上传完毕。
10.一种服务器,其特征在于,所述服务器包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的数据处理方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-8中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211466529.3A CN115858472A (zh) | 2022-11-22 | 2022-11-22 | 一种数据处理方法、装置、服务器及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211466529.3A CN115858472A (zh) | 2022-11-22 | 2022-11-22 | 一种数据处理方法、装置、服务器及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115858472A true CN115858472A (zh) | 2023-03-28 |
Family
ID=85664946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211466529.3A Pending CN115858472A (zh) | 2022-11-22 | 2022-11-22 | 一种数据处理方法、装置、服务器及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858472A (zh) |
-
2022
- 2022-11-22 CN CN202211466529.3A patent/CN115858472A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113961510B (zh) | 一种文件处理方法、装置、设备及存储介质 | |
CN114398520A (zh) | 数据检索方法、系统、装置、电子设备及存储介质 | |
CN116226150A (zh) | 基于分布式数据库的数据处理方法、装置、设备和介质 | |
CN115878035A (zh) | 一种数据读取方法、装置、电子设备及存储介质 | |
CN115510036A (zh) | 数据迁移方法、装置、设备以及存储介质 | |
CN114564149B (zh) | 一种数据存储方法、装置、设备及存储介质 | |
CN115639966A (zh) | 一种数据写入方法、装置、终端设备及存储介质 | |
CN115905322A (zh) | 业务处理方法、装置、电子设备及存储介质 | |
CN116383207A (zh) | 一种数据标签管理方法、装置、电子设备和存储介质 | |
CN115525659A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN115858472A (zh) | 一种数据处理方法、装置、服务器及介质 | |
CN115617800A (zh) | 数据读取方法、装置、电子设备及存储介质 | |
CN114691781A (zh) | 一种数据同步方法、系统、装置、设备及介质 | |
CN112714163B (zh) | 数据传输方法、装置、电子设备和介质 | |
CN114897666A (zh) | 图数据存储、访问、处理方法、训练方法、设备及介质 | |
CN114443910A (zh) | 数据存储方法、搜索方法、装置和电子设备 | |
CN113220230B (zh) | 数据导出方法及其装置、电子设备以及存储介质 | |
CN116595110A (zh) | 一种数据存储方法、装置、电子设备及存储介质 | |
CN115438099A (zh) | 一种数据读取方法、装置、数据库节点及介质 | |
CN116361388A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN117931805A (zh) | 一种数据处理方法、装置、电子设备和存储介质 | |
CN118093048A (zh) | 一种多模块启动管理方法、装置、设备及介质 | |
CN117743032A (zh) | 一种数据备份处理方法、装置、设备及介质 | |
CN115544418A (zh) | 一种网页数据同步方法、装置、电子设备及存储介质 | |
CN114564485A (zh) | 基于Elastic Search的用户数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |