CN113542422A - 数据存储方法、装置、存储介质及电子装置 - Google Patents
数据存储方法、装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN113542422A CN113542422A CN202110815815.5A CN202110815815A CN113542422A CN 113542422 A CN113542422 A CN 113542422A CN 202110815815 A CN202110815815 A CN 202110815815A CN 113542422 A CN113542422 A CN 113542422A
- Authority
- CN
- China
- Prior art keywords
- data
- segment
- checksum
- storage
- uploading
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储方法、装置、存储介质及电子装置。该方法包括:判断存储端是否已存储分段上传的目标分段数据;在存储端已存储目标分段数据的情况下,获取待上传数据中与目标分段数据不同的数据,得到增量数据;将增量数据上传至存储端。通过本申请,解决了相关技术中的数据分段上传方式在数据覆盖上传过程中耗费资源量大、上传效率低的问题。
Description
技术领域
本申请涉及数据存储技术领域,具体而言,涉及一种数据存储方法、装置、存储介质及电子装置。
背景技术
随着互联网应用的高速发展,各应用系统产生的各种影像、图片、音频、视频、文档文件等非结构化数据呈现“爆炸性”增长的势态。海量数据的出现和数据复杂度的增加,对于高效、及时的存储和处理的要求不断提升。而对象存储由于其访问便捷、存储成本低、对象数量支持上千亿、易扩展等特点,受到了广泛的关注和发展,其中,AWS(Amazon WebServices)推出了S3(Simple Storage Service)对象存储服务,AWS S3凭借其简单、易用的S3 API成为事实上的标准,各主流云存储服务提供商都兼容AWS S3的协议。如今,AWS S3已广泛应用于备份、存储、归档、以及灾难恢复等各种场景中。
在云存储服务中,一个常见的操作是数据上传,AWS S3提供了一次性上传和分段上传。对于小数据量的上传,可以采用简单的一次性上传;对于大数据量的上传,分段上传可以避免因网络环境不好导致的一直需要从文件起始位置开始上传的问题,还能使用多线程对不同分段数据进行并发发送,提高网络吞吐量,降低发送时间。
但是当分段上传的对象进行覆盖上传时,会重新按照分段上传的流程上传所有分段和数据,而在S3的常见应用场景周期性备份中,通常客户端数据只是进行了部分修改,即使数据并没有进行修改或者仅部分数据进行了修改,也会按照分段上传流程上传所有的数据片。对于大文件而言,重复多次全量上传会占用大量的网络带宽,若我们已经分段上传过的文件仅做了很小的改动,标准的S3分段上传仍然会进行全量的上传。因此标准的S3分段上传并不能很好地解决大文件覆盖上传的问题。
针对相关技术中的数据分段上传方式进行数据覆盖上传时耗费资源量大、上传效率低的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供一种数据存储方法、装置、存储介质及电子装置,以解决相关技术中的数据分段上传方式在数据覆盖上传过程中耗费资源量大、上传效率低的问题。
根据本申请的一个方面,提供了一种数据存储方法。该方法包括:判断存储端是否已存储分段上传的目标分段数据;在存储端已存储目标分段数据的情况下,获取待上传数据中与目标分段数据不同的数据,得到增量数据;将增量数据上传至存储端。
可选地,目标分段数据中至少包括一个分段数据,每个分段数据的大小为第一预设数据量,待上传数据的大小大于第一预设数据量,获取待上传数据中与目标分段数据不同的数据,得到增量数据包括:将待上传数据按照第二预设数据量进行分片,得到多个分片数据,其中,第二预设数据量大于第一预设数据量;获取每个分片数据中与目标分段数据不同的数据,得到多个子增量数据;由多个子增量数据组成增量数据。
可选地,目标分段数据中的各个分段数据关联有校验和,各个分段数据关联有校验和构成目标校验和列表,获取每个分片数据中与目标分段数据不同的数据,得到多个子增量数据包括:从分片数据的首端每次移动第三预设数据量,直至分片数据的尾端,并在每次移动之后按照第一预设数据量进行一次分块,得到多个第一分块数据;分别计算每个第一分块数据的校验和,并获取与目标校验和列表中的校验和匹配的第一分块数据;将多个第一分块数据中的匹配的第一分块数据删除,得到子增量数据。
可选地,在获取每个分片数据中与目标分段数据不同的数据,得到多个子增量数据之后,该方法还包括:将相邻两个分片数据中的前一分片数据的尾端子增量数据和后一分片数据的首端子增量数据进行合并,得到合并数据;获取合并数据中与目标分段数据不同的数据,并将不同的数据确定为合并数据对应的子增量数据。
可选地,目标分段数据中至少包括一个分段数据,每个分段数据的大小为第一预设数据量,在判断存储端是否已存储分段上传的目标分段数据之后,该方法还包括:在存储端不存在目标分段数据的情况下,将待上传数据按照第一预设数据量进行切分,得到多个分段数据,并计算每个分段数据的校验和;将每个分段数据和分段数据的校验和上传至存储端。
可选地,将增量数据上传至存储端包括:将增量数据按照第一预设数据量进行切分,得到多个分段数据,并计算每个分段数据的校验和;将每个分段数据和分段数据的校验和上传至存储端。
可选地,在将每个分段数据和分段数据的校验和上传至存储端之后,该方法还包括:根据分段数据的校验和判断多个分段数据中是否存在相同的分段数据,在具有相同的分段数据的情况下,对相同的分段数据执行去重操作。
根据本申请的另一方面,提供了一种数据存储装置。该装置包括:判断单元,用于判断存储端是否已存储分段上传的目标分段数据;获取单元,用于在存储端已存储目标分段数据的情况下,获取待上传数据中与目标分段数据不同的数据,得到增量数据;第一上传单元,用于将增量数据上传至存储端。
根据本发明实施例的另一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,程序运行时控制非易失性存储介质所在的设备执行一种数据存储方法。
根据本发明实施例的另一方面,还提供了一种电子装置,包含处理器和存储器;存储器中存储有计算机可读指令,处理器用于运行计算机可读指令,其中,计算机可读指令运行时执行一种数据存储方法。
通过本申请,采用以下步骤:判断存储端是否已存储分段上传的目标分段数据;在存储端已存储目标分段数据的情况下,获取待上传数据中与目标分段数据不同的数据,得到增量数据;将增量数据上传至存储端,解决了相关技术中的数据分段上传方式在数据覆盖上传过程中耗费资源量大、上传效率低的问题。通过获取待上传数据中的增量数据,进而达到了减少数据覆盖上传过程中的资源消耗,提高上传效率的效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的数据存储方法的流程图;
图2是根据本申请实施例提供的可选的数据存储方法的示意图;
图3是根据本申请实施例提供的可选的数据存储方法的示意图;
图4是根据本申请实施例提供的数据存储方法中对待上传数据进行分片的示意图;
图5是根据本申请实施例提供的数据存储方法中通过rsync算法确定每个分片数据中的子增量数据的示意图;
图6是根据本申请实施例提供的数据存储方法中待上传数据的每个分片数据的校验和示意图;
图7是根据本申请实施例提供的可选的数据存储方法的示意图;
图8是根据本申请实施例提供的数据存储装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请的实施例,提供了一种数据存储方法。
图1是根据本申请实施例的数据存储方法的流程图。如图1所示,该方法包括以下步骤:
步骤S102,判断存储端是否已存储分段上传的目标分段数据。
具体地,分段上传的目标分段数据是按照预设的数据量对大文件进行分段后上传的数据,目标分段数据中包含多个分段数据,每个分段数据关联有校验和,目标分段数据关联有校验和列表。
而当大文件还未上传至存储端,或者存储端采用的是相关技术中的标准S3分段上传方法上传数据,未计算分段数据的校验和,存储端则不存在目标分段数据。
可选地,在本申请实施例提供的数据存储方法中,目标分段数据中至少包括一个分段数据,每个分段数据的大小为第一预设数据量,在判断存储端是否已存储分段上传的目标分段数据之后,该方法还包括:在存储端不存在目标分段数据的情况下;将待上传数据按照第一预设数据量进行切分,得到多个分段数据,并计算每个分段数据的校验和;将每个分段数据和分段数据的校验和上传至存储端。
具体的,本实施例中将按照第一预设数据量进行数据切分、同时计算检验数据的分段上传方式称为快速分段上传,在一种可选的实施方式中,如图2所示,是根据本申请实施例提供的可选的数据存储方法的示意图,也即快速分段上传的示意图,本实施例中的快速分段上传具体可以通过以下步骤实现:
步骤一:初始化分段上传:在标准的3S分段上传的原有参数上新增参数:快速分段上传标识(fast)、第一预设数据量(r-part-size),需要说明的是,若指定fast以及r-part-size,则表示启用快速分段上传,当后续上传的分段数据大小等于r-part-size时,计算对应分段数据的弱校验和、强校验和,并保存到存储服务端;若不指定fast和r-part-size,那么执行标准的S3分段上传流程。
具体地,标准的S3分段上传流程包括:将待上传文件按照一定大小进行分段;使用初始化分段上传接口(CreateMultipartUpload API)初始化一个分段上传任务;使用分段上传接口(UploadPart API)来并发上传分段,单个分段的大小可以限制为5MB到5GB;完成分段上传或者终止分段上传。
步骤二:分段上传:对于客户端来说,分段上传参数和标准的S3分段上传一致,但是为了充分利用快速分段上传的功能,可以尽可能将上传的分段数据的大小设置为r-part-size。对于存储端来说,若初始化分段上传时指定了fast参数,那么存储端除了存储分段数据之外,还会新增操作:检查上传的数据的大小是否等于初始化快速分段上传指定的r-part-size,若相等则计算该分段数据的弱校验和、强校验和,并存储到分段信息中;此外,取消每个分段最小5MB的限制。
步骤三:完成分段上传:对于客户端来说,与标准的S3分段上传一致。对于存储端来说,若启用了快速分段上传,那么需要将分段上传过程中计算的弱校验和、强校验和合并,组成一个弱校验和、强校验和列表,作为元数据,当使用元数据查询接口(Head ObjectAPI)查询时,向客户端返回元数据。在合并过程中,若发现存在强校验和一致的分段数据,可以在后台启用一个去重的任务,删除多余的分段数据副本,提高存储空间的利用率。
通过本实施例,在大文件第一次快速分段上传时,计算和存储每个分段数据的校验和,在第一次快速分段上传完成后,存储端存储有大文件的分段数据,也即目标分段数据,同时,在大文件的元数据中记录相关分段数据的校验和列表,从而为后续的数据覆盖上传时通过元数据确定待上传数据在存储端是否已存储提供数据基础。
步骤S104,在存储端已存储目标分段数据的情况下,获取待上传数据中与目标分段数据不同的数据,得到增量数据。
为了提高获取增量数据的效率,可选地,在本申请实施例提供的数据存储方法中,目标分段数据中至少包括一个分段数据,每个分段数据的大小为第一预设数据量,待上传数据的大小大于第一预设数据量,获取待上传数据中与目标分段数据不同的数据,得到增量数据包括:将待上传数据按照第二预设数据量进行分片,得到多个分片数据,其中,第二预设数据量大于第一预设数据量;获取每个分片数据中与目标分段数据不同的数据,得到多个子增量数据;由多个子增量数据组成增量数据。
具体地,当存储端已存储有采用快速分段上传的目标分段数据的情况下,可以通过Head Object API查询目标分段数据的弱校验和、强校验和列表,在客户端执行rsync算法查找出客户端的文件修改的增量数据,并使用快速分段上传上传增量数据。
在一种可选的实施方式中,如图3所示,是根据本申请实施例提供的可选的数据存储方法的示意图,也即增量数据的查找以及上传的示意图,本实施例中增量数据的查找以及上传具体可以通过以下步骤实现:
步骤一:初始化分段上传:指定参数fast和r-part-size,并启用快速分段上传,其中r-part-size从Head Object API返回参数中获取。
步骤二:采用rsync切片工具检查增量数据:具体地,为了实现增量上传,在客户端运行rsync切片工具,通过rsync切片工具对待上传文件进行切分,并执行rsync算法,检查出待上传文件相对与存储端中的目标分段数据的增量部分,然后执行增量部分的分段上传。
其中,如图4所示,是根据本申请实施例提供的数据存储方法中对待上传数据进行分片的示意图,也即rsync切片工具的工作流程图:具体地,为了防止增量数据检测过程影响快速分段上传的速度,提高增量查找效率,采用rsync切片工具对原始大文件进行分片,比如按照1000*r-part-size的大小进行等大小切割,切割后可对所有分片执行并发rsync检查,得到检查结果,其中,灰色为已存储的数据块,白色为增量数据块。
需要说明的是,由于采用rsync切片工具进行切分为随机分片,可能导致边界处附近的数据本来存储端已经存在,但由于随机分段被误认为是增量数据,因而,需要对分片数据的边界进行单独处理,可选地,在本申请实施例提供的数据存储方法中,在获取每个分片数据中与目标分段数据不同的数据,得到多个子增量数据之后,该方法还包括:将相邻两个分片数据中的前一分片数据的尾端子增量数据和后一分片数据的首端子增量数据进行合并,得到合并数据;获取合并数据中与目标分段数据不同的数据,并将不同的数据确定为合并数据对应的子增量数据。
也即,若上一个分片的最后一个数据块为增量且下一个分片的第一个数据块为增量,将两个增量数据合成一个分片,再次执行rsync算法。
步骤三:分段上传:对于客户端来说,根据rsync切片工具返回的分片对应的数据块列表,执行并发分段上传。若该数据块在存储端已存在,则在分段上传的时候只需要指定对应的强校验和即可,无需上传数据;否则上传对应的数据块。对于存储端来说,若接收到的请求里只有强校验和,没有数据部分,则根据指定的强校验和,查找到对应的数据块,返回上传成功;对于有数据部分的请求,处理逻辑和之前一样:若数据块的大小和r-part-size一致,则存储端除了存储数据块之外,还需要计算该分段的弱校验和、强校验和,并存储到分段信息中;同时,考虑到增量的数据块可能很小,取消每个分段最小5MB的限制。
步骤四:完成分段上传:为了避免数据冗余,可选地,在将每个分段数据和分段数据的校验和上传至存储端之后,该方法还包括:根据分段数据的校验和判断多个分段数据中是否存在相同的分段数据,在具有相同的分段数据的情况下,对相同的分段数据执行去重操作。
具体地,对于客户端来说,不做修改。对于存储端来说,需要将分段上传过程中计算的弱校验和、强校验和合并,组成一个弱校验和、强校验和列表,作为新的大文件的元数据。同样,在合并过程中,若发现存在有强校验和一致的数据块,可以在后台启用一个去重的任务,删除多余的数据块副本,提高存储空间的利用率。
通过本实施例,当分段大文件在进行覆盖上传的时候,对比已上传的大文件和待覆盖上传的大文件,查找出两者的不同数据块,在进行覆盖上传的时候只需要上传增量数据,相同的数据无需重复上传,提高大文件覆盖上传的效率。
步骤S106,将增量数据上传至存储端。
为了使得增量数据可以在后续覆盖上传数据时被感知到,可选地,在本申请实施例提供的数据存储方法中,将增量数据上传至存储端包括:将增量数据按照第一预设数据量进行切分,得到多个分段数据,并计算每个分段数据的校验和;将每个分段数据和分段数据的校验和上传至存储端。
具体地,对rsync检测出的增量数据段进行分段处理,将增量按照r-part-size的大小进行等大小分段切割。所有步骤完成后,就将待上传的大文件分割成了如4右侧所示的分段,其中灰色的分片为存储端已存在的分段,大小均为r-part-size,无需重复上传;白色的分段为增量数据,大小不等,最大为r-part-size,需要上传。
本申请实施例提供的数据存储方法,通过判断存储端是否已存储分段上传的目标分段数据;在存储端已存储目标分段数据的情况下,获取待上传数据中与目标分段数据不同的数据,得到增量数据;将增量数据上传至存储端,解决了相关技术中的数据分段上传方式在数据覆盖上传过程中耗费资源量大、上传效率低的问题。通过获取待上传数据中的增量数据,进而达到了减少数据覆盖上传过程中的资源消耗,提高上传效率的效果。
可以通过rsync算法确定每个分片中的子增量数据,可选地,在本申请实施例提供的数据存储方法中,目标分段数据中的各个分段数据关联有校验和,各个分段数据关联有校验和构成目标校验和列表,获取每个分片数据中与目标分段数据不同的数据,得到多个子增量数据包括:从分片数据的首端每次移动第三预设数据量,直至分片数据的尾端,并在每次移动之后按照第一预设数据量进行一次分块,得到多个第一分块数据;分别计算每个第一分块数据的校验和,并获取与目标校验和列表中的校验和匹配的第一分块数据;将多个第一分块数据中的匹配的第一分块数据删除,得到子增量数据。
为了提高匹配效率,可选地,在本申请实施例提供的数据存储方法中,将第一分块数据的弱校验和与目标校验和列表中的各个弱校验和进行比较;在目标校验和列表中不存在与第一分块数据的弱校验和相同的弱校验和的情况下,确定匹配失败;在目标校验和列表中存在与第一分块数据的弱校验和相同的弱强校验和的情况下,将第一分块数据的强校验和与相同的弱校验和所对应的强校验和进行比较;在第一分块数据的强校验和与相同的弱校验所对应的强校验和不相同的情况下,确定第一分块数据与目标校验和列表中的校验和不匹配。
在一种可选的实施方式中,如图5所示,是根据本申请实施例提供的数据存储方法中通过rsync算法确定每个分片数据中的子增量数据的示意图,具体地,对存储端已存储的每个分段数据计算两个校验和(checksum):弱校验和(32位的rolling checksum)(可以使用Adler-32算法计算rolling checksum)和强校验和(128位的md5hash),得到checksum列表,得到如图6所示的根据本申请实施例提供的数据存储方法中待上传数据的每个分片数据的校验和示意图。
同步时存储端把文件的checksum列表传给客户端,这个列表里包括:rollingchecksum(32bits),md5 checksum(128bits)。客户端在收到这个列表后,对待上传文件做同样的checksum计算,然后和存储端传回的的checksum列表做对比;同步客户端拿到存储端的checksum数组后,把这个数据存到一个哈希表中,取待上传的分片数据(fileSrc)的第一个文件块(和存储端的切片大小一样)做rolling checksum计算后在哈希表中查找;如果在表中含有匹配项,说明发现在存储端文件中有潜在相同的文件块,再比较md5的checksum(以避免rolling checksum发生碰撞),若rolling checksum和md5都相同,则说明存储端文件中有相同的数据块;若rolling checksum在哈希表中没有匹配项,就表示存储端不存在该数据块,rsync算法会向后偏移一个字节继续做文件块的匹配校验。当rsync算法移动到客户端文件的结尾时,就找出了客户端文件和存储端文件的相同数据块和不同数据块。
通过本实施例,根据指定的r-part-size,以及存储端返回的弱校验和、强校验和列表,对分片分别进行rsync算法比对,找到存储端已存在的大小为r-part-size的分片,以及增量分片,实现了位于两个不同位置的文件的相同数据块以及不同数据块的快速比较。
图7是根据本申请实施例的可选的数据存储方法的流程图。如图7所示,该方法包括:
在用户每一次进行大文件分段上传前,首先检查存储端该大对象是否已存在;若不存在或者采用的是普通S3分段上传,可以使用快速分段进行第一次对象上传;若该大对象已存在并且采用的是快速分段上传,可进一步向存储端请求已上传的分段的弱校验和、强校验和列表,然后在客户端运行rsync算法找到增量数据,使用快速分段上传上传增量数据。
其中,第一次快速分段上传具体地通过以下步骤实现:
步骤一:初始化分段上传:在标准的3S分段上传的原有参数上新增参数:快速分段上传标识(fast)、第一预设数据量(r-part-size),需要说明的是,若指定fast以及r-part-size,则表示启用快速分段上传,当后续上传的分段数据大小等于r-part-size时,计算对应分段数据的弱校验和、强校验和,并保存到存储服务端;若不指定fast和r-part-size,那么执行标准的S3分段上传流程。
具体地,标准的S3分段上传流程包括:将待上传文件按照一定大小进行分段;使用初始化分段上传接口(CreateMultipartUpload API)初始化一个分段上传任务;使用分段上传接口(UploadPart API)来并发上传分段,单个分段的大小可以限制为5MB到5GB;完成分段上传或者终止分段上传。
步骤二:分段上传:对于客户端来说,分段上传参数和标准的S3分段上传一致,但是为了充分利用快速分段上传的功能,可以尽可能将上传的分段数据的大小设置为r-part-size。对于存储端来说,若初始化分段上传时指定了fast参数,那么存储端除了存储分段数据之外,还会新增操作:检查上传的数据的大小是否等于初始化快速分段上传指定的r-part-size,若相等则计算该分段数据的弱校验和、强校验和,并存储到分段信息中;此外,取消每个分段最小5MB的限制。
步骤三:完成分段上传:对于客户端来说,与标准的S3分段上传一致。对于存储端来说,若启用了快速分段上传,那么需要将分段上传过程中计算的弱校验和、强校验和合并,组成一个弱校验和、强校验和列表,作为元数据,当使用元数据查询接口(Head ObjectAPI)查询时,向客户端返回元数据。在合并过程中,若发现存在强校验和一致的分段数据,可以在后台启用一个去重的任务,删除多余的分段数据副本,提高存储空间的利用率。
其中,覆盖上传的流程可以通过以下步骤实现:
步骤一:初始化分段上传:指定参数fast和r-part-size,并启用快速分段上传,其中r-part-size从Head Object API返回参数中获取。
步骤二:采用rsync切片工具检查增量数据:具体地,为了实现增量上传,在客户端运行rsync切片工具,通过rsync切片工具对待上传文件进行切分,并执行rsync算法,检查出待上传文件相对与存储端中的目标分段数据的增量部分,然后执行增量部分的分段上传。
步骤三:分段上传:对于客户端来说,根据rsync切片工具返回的分片对应的数据块列表,执行并发分段上传。若该数据块在存储端已存在,则在分段上传的时候只需要指定对应的强校验和即可,无需上传数据;否则上传对应的数据块。对于存储端来说,若接收到的请求里只有强校验和,没有数据部分,则根据指定的强校验和,查找到对应的数据块,返回上传成功;对于有数据部分的请求,处理逻辑和之前一样:若数据块的大小和r-part-size一致,则存储端除了存储数据块之外,还需要计算该分段的弱校验和、强校验和,并存储到分段信息中;同时,考虑到增量的数据块可能很小,取消每个分段最小5MB的限制。
步骤四:完成分段上传:对于客户端来说,不做修改。对于存储端来说,需要将分段上传过程中计算的弱校验和、强校验和合并,组成一个弱校验和、强校验和列表,作为新的大文件的元数据。同样,在合并过程中,若发现存在有强校验和一致的数据块,可以在后台启用一个去重的任务,删除多余的数据块副本,提高存储空间的利用率。
通过本申请实施例,大文件在第一次分段上传时计算和存储分段数据块的校验和,分段上传完成时在大文件元数据中记录相关分段的校验和列表;在后续的覆盖上传时,首先查询存储服务器某对象是否已存在,若存在进一步向存储服务器获取该对象的校验和列表,然后在客户端运行rsync算法,查找出待上传的大文件与存储端已存储的对象两者间的不同数据块,在覆盖上传时只需要上传增量数据块,实现大文件的快速覆盖上传。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种数据存储装置,需要说明的是,本申请实施例的数据存储装置可以用于执行本申请实施例所提供的用于数据存储方法。以下对本申请实施例提供的数据存储装置进行介绍。
图8是根据本申请实施例的数据存储装置的示意图。如图8所示,该装置包括:判断单元10、获取单元20和第一上传单元30。
具体地,判断单元10,用于判断存储端是否已存储分段上传的目标分段数据。
获取单元20,用于在存储端已存储目标分段数据的情况下,获取待上传数据中与目标分段数据不同的数据,得到增量数据。
第一上传单元30,用于将增量数据上传至存储端。
本申请实施例提供的数据存储装置,通过判断单元10判断存储端是否已存储分段上传的目标分段数据;获取单元20在存储端已存储目标分段数据的情况下,获取待上传数据中与目标分段数据不同的数据,得到增量数据;第一上传单元30将增量数据上传至存储端,解决了相关技术中的数据分段上传方式在数据覆盖上传过程中耗费资源量大、上传效率低的问题,通过获取待上传数据中的增量数据,进而达到了减少数据覆盖上传过程中的资源消耗,提高上传效率的效果。
可选地,在本申请实施例提供的数据存储装置中,目标分段数据中至少包括一个分段数据,每个分段数据的大小为第一预设数据量,待上传数据的大小大于第一预设数据量,获取单元20包括:分片模块,用于将待上传数据按照第二预设数据量进行分片,得到多个分片数据,其中,第二预设数据量大于第一预设数据量;第一获取模块,用于获取每个分片数据中与目标分段数据不同的数据,得到多个子增量数据;组成模块,用于由多个子增量数据组成增量数据。
可选地,在本申请实施例提供的数据存储装置中,目标分段数据中的各个分段数据关联有校验和,各个分段数据关联有校验和构成目标校验和列表,第一获取模块包括:分块子模块,用于从分片数据的首端每次移动第三预设数据量,直至分片数据的尾端,并在每次移动之后按照第一预设数据量进行一次分块,得到多个第一分块数据;匹配子模块,用于分别计算每个第一分块数据的校验和,并获取与目标校验和列表中的校验和匹配的第一分块数据;将多个第一分块数据中的匹配的第一分块数据删除,得到子增量数据。
可选地,在本申请实施例提供的数据存储装置中,该装置还包括:合并模块,用于在获取每个分片数据中与目标分段数据不同的数据,得到多个子增量数据之后,将相邻两个分片数据中的前一分片数据的尾端子增量数据和后一分片数据的首端子增量数据进行合并,得到合并数据第二获取模块,用于获取合并数据中与目标分段数据不同的数据,并将不同的数据确定为合并数据对应的子增量数据。
可选地,在本申请实施例提供的数据存储装置中,目标分段数据中至少包括一个分段数据,每个分段数据的大小为第一预设数据量,该装置还包括:切分单元,用于在判断存储端是否已存储分段上传的目标分段数据之后,在存储端不存在目标分段数据的情况下,将待上传数据按照第一预设数据量进行切分,得到多个分段数据,并计算每个分段数据的校验和;第二上传单元,用于将每个分段数据和分段数据的校验和上传至存储端。
可选地,在本申请实施例提供的数据存储装置中,第一上传单元30包括:切分模块,用于将增量数据按照第一预设数据量进行切分,得到多个分段数据,并计算每个分段数据的校验和;上传模块,用于将每个分段数据和分段数据的校验和上传至存储端。
可选地,在本申请实施例提供的数据存储装置中,上传模块还包括:去重子模块,用于在将每个分段数据和分段数据的校验和上传至存储端之后,根据分段数据的校验和判断多个分段数据中是否存在相同的分段数据,在具有相同的分段数据的情况下,对相同的分段数据执行去重操作。
所述数据存储装置包括处理器和存储器,上述判断单元10、获取单元20和第一上传单元30等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决相关技术中的数据分段上传方式在数据覆盖上传过程中耗费资源量大、上传效率低的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请实施例还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,程序运行时控制非易失性存储介质所在的设备执行一种数据存储方法。
本申请实施例还提供了一种电子装置,包含处理器和存储器;存储器中存储有计算机可读指令,处理器用于运行计算机可读指令,其中,计算机可读指令运行时执行一种数据存储方法。本文中的电子装置可以是服务器、PC、PAD、手机等。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
判断存储端是否已存储分段上传的目标分段数据;
在所述存储端已存储所述目标分段数据的情况下,获取待上传数据中与所述目标分段数据不同的数据,得到增量数据;
将所述增量数据上传至所述存储端。
2.根据权利要求1所述的方法,其特征在于,所述目标分段数据中至少包括一个分段数据,每个所述分段数据的大小为第一预设数据量,所述待上传数据的大小大于所述第一预设数据量,所述获取待上传数据中与所述目标分段数据不同的数据,得到增量数据包括:
将所述待上传数据按照第二预设数据量进行分片,得到多个分片数据,其中,所述第二预设数据量大于所述第一预设数据量;
获取每个所述分片数据中与所述目标分段数据不同的数据,得到多个子增量数据;
由所述多个子增量数据组成所述增量数据。
3.根据权利要求2所述的方法,其特征在于,所述目标分段数据中的各个所述分段数据关联有校验和,各个所述分段数据关联有校验和构成目标校验和列表,所述获取每个所述分片数据中与所述目标分段数据不同的数据,得到多个子增量数据包括:
从分片数据的首端每次移动第三预设数据量,直至所述分片数据的尾端,并在每次移动之后按照所述第一预设数据量进行一次分块,得到多个第一分块数据;
分别计算每个所述第一分块数据的校验和,并获取与所述目标校验和列表中的校验和匹配的第一分块数据;
将所述多个第一分块数据中的所述匹配的第一分块数据删除,得到所述子增量数据。
4.根据权利要求2所述的方法,其特征在于,在所述获取每个所述分片数据中与所述目标分段数据不同的数据,得到多个子增量数据之后,所述方法还包括:
将相邻两个分片数据中的前一分片数据的尾端子增量数据和后一分片数据的首端子增量数据进行合并,得到合并数据;
获取所述合并数据中与所述目标分段数据不同的数据,并将所述不同的数据确定为所述合并数据对应的子增量数据。
5.根据权利要求1所述的方法,其特征在于,所述目标分段数据中至少包括一个分段数据,每个所述分段数据的大小为第一预设数据量,在所述判断存储端是否已存储分段上传的目标分段数据之后,所述方法还包括:
在所述存储端不存在所述目标分段数据的情况下;
将所述待上传数据按照所述第一预设数据量进行切分,得到多个分段数据,并计算每个所述分段数据的校验和;
将每个所述分段数据和所述分段数据的校验和上传至所述存储端。
6.根据权利要求2所述的方法,其特征在于,所述将所述增量数据上传至所述存储端包括:
将所述增量数据按照所述第一预设数据量进行切分,得到多个分段数据,并计算每个所述分段数据的校验和;
将每个所述分段数据和所述分段数据的校验和上传至所述存储端。
7.根据权利要求6所述的方法,其特征在于,在所述将每个所述分段数据和所述分段数据的校验和上传至所述存储端之后,所述方法还包括:
根据分段数据的校验和判断所述多个分段数据中是否存在相同的分段数据,在具有相同的分段数据的情况下,对所述相同的分段数据执行去重操作。
8.一种数据存储装置,其特征在于,包括:
判断单元,用于判断存储端是否已存储分段上传的目标分段数据;
获取单元,用于在所述存储端已存储所述目标分段数据的情况下,获取待上传数据中与所述目标分段数据不同的数据,得到增量数据;
第一上传单元,用于将所述增量数据上传至所述存储端。
9.一种非易失性存储介质,其特征在于,所非易失性存储介质包括存储的程序,其中,所述程序运行时控制所述非易失性存储介质所在的设备执行权利要求1至7中任意一项所述的数据存储方法。
10.一种电子装置,其特征在于,包含处理器和存储器,所述存储器中存储有计算机可读指令,所述处理器用于运行所述计算机可读指令,其中,所述计算机可读指令运行时执行权利要求1至7中任意一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110815815.5A CN113542422B (zh) | 2021-07-19 | 2021-07-19 | 数据存储方法、装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110815815.5A CN113542422B (zh) | 2021-07-19 | 2021-07-19 | 数据存储方法、装置、存储介质及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113542422A true CN113542422A (zh) | 2021-10-22 |
CN113542422B CN113542422B (zh) | 2023-10-17 |
Family
ID=78128791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110815815.5A Active CN113542422B (zh) | 2021-07-19 | 2021-07-19 | 数据存储方法、装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113542422B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117176713A (zh) * | 2023-06-12 | 2023-12-05 | 广州番禺职业技术学院 | 基于对象存储系统的数据传输方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110191633A1 (en) * | 2010-02-01 | 2011-08-04 | International Business Machines Corporation | Parallel debugging in a massively parallel computing system |
CN102571709A (zh) * | 2010-12-16 | 2012-07-11 | 腾讯科技(北京)有限公司 | 文件上传的方法、客户端、服务器及系统 |
CN105912268A (zh) * | 2016-04-12 | 2016-08-31 | 韶关学院 | 一种基于自匹配特征的分布式重复数据删除方法及其装置 |
CN106528125A (zh) * | 2016-10-26 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种数据文件的增量更新方法和服务器、客户端以及系统 |
CN108762798A (zh) * | 2017-04-25 | 2018-11-06 | 腾讯科技(深圳)有限公司 | 一种增量更新文件的方法及装置 |
CN112395266A (zh) * | 2019-08-19 | 2021-02-23 | 中移(苏州)软件技术有限公司 | 一种数据文件处理方法、第一服务器及计算机存储介质 |
CN113055433A (zh) * | 2021-02-02 | 2021-06-29 | 新华三信息技术有限公司 | 一种文件传输方法、装置、设备及机器可读存储介质 |
-
2021
- 2021-07-19 CN CN202110815815.5A patent/CN113542422B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110191633A1 (en) * | 2010-02-01 | 2011-08-04 | International Business Machines Corporation | Parallel debugging in a massively parallel computing system |
CN102571709A (zh) * | 2010-12-16 | 2012-07-11 | 腾讯科技(北京)有限公司 | 文件上传的方法、客户端、服务器及系统 |
CN105912268A (zh) * | 2016-04-12 | 2016-08-31 | 韶关学院 | 一种基于自匹配特征的分布式重复数据删除方法及其装置 |
CN106528125A (zh) * | 2016-10-26 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种数据文件的增量更新方法和服务器、客户端以及系统 |
CN108762798A (zh) * | 2017-04-25 | 2018-11-06 | 腾讯科技(深圳)有限公司 | 一种增量更新文件的方法及装置 |
CN112395266A (zh) * | 2019-08-19 | 2021-02-23 | 中移(苏州)软件技术有限公司 | 一种数据文件处理方法、第一服务器及计算机存储介质 |
CN113055433A (zh) * | 2021-02-02 | 2021-06-29 | 新华三信息技术有限公司 | 一种文件传输方法、装置、设备及机器可读存储介质 |
Non-Patent Citations (2)
Title |
---|
M. KAEO;DOUBLE SHOT SECURITY, INC.;: "Operational Security Current Practices draft-ietf-opsec-current-practices-07", IETF * |
鄂金龙: "异构云存储服务协同的数据传输优化研究", 中国博士论文全文数据库 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117176713A (zh) * | 2023-06-12 | 2023-12-05 | 广州番禺职业技术学院 | 基于对象存储系统的数据传输方法及系统 |
CN117176713B (zh) * | 2023-06-12 | 2024-03-19 | 广州番禺职业技术学院 | 基于对象存储系统的数据传输方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113542422B (zh) | 2023-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019075978A1 (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
US11176102B2 (en) | Incremental virtual machine metadata extraction | |
US9910906B2 (en) | Data synchronization using redundancy detection | |
US10284433B2 (en) | Data synchronization using redundancy detection | |
CN110347651B (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
CN109408115B (zh) | 一种基于容器环境中迁移对象的方法及计算系统 | |
US10091293B2 (en) | Rapid cloud-based image centralization | |
EP3432132B1 (en) | Data storage method and device | |
CN105376277A (zh) | 一种数据同步方法及装置 | |
US9983948B2 (en) | Caching of backup chunks | |
US20150127661A1 (en) | Rapid cloud-based image centralization | |
CN114461599A (zh) | 分段数据存储方法、装置、存储介质及电子装置 | |
CN108810055B (zh) | 一种大文件传输方法及装置 | |
JP2020506444A (ja) | 期限切れバックアップ処理方法及びバックアップサーバ | |
CN111033459A (zh) | 针对广域网优化的基于微服务的去重 | |
CN112632008A (zh) | 一种数据分片的传输方法、装置及计算机设备 | |
CN111881448A (zh) | 恶意文件的确定方法及装置 | |
US11392617B2 (en) | Recovering from a failure of an asynchronous replication node | |
US10664349B2 (en) | Method and device for file storage | |
CN113535068A (zh) | 数据读取方法和系统 | |
CN113542422B (zh) | 数据存储方法、装置、存储介质及电子装置 | |
WO2015096847A1 (en) | Method and apparatus for context aware based data de-duplication | |
CN111708763B (zh) | 分片集群的数据迁移方法、装置和分片集群系统 | |
CN113411364B (zh) | 资源获取方法、装置及服务器 | |
US11003504B2 (en) | Scaling virtualization resource units of applications |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100094 101, floors 1-5, building 7, courtyard 3, fengxiu Middle Road, Haidian District, Beijing Applicant after: Beijing Xingchen Tianhe Technology Co.,Ltd. Address before: 100097 room 806-1, block B, zone 2, Jinyuan times shopping center, indigo factory, Haidian District, Beijing Applicant before: XSKY BEIJING DATA TECHNOLOGY Corp.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |