CN112817962A - 基于对象存储的数据存储方法、装置和计算机设备 - Google Patents
基于对象存储的数据存储方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN112817962A CN112817962A CN202110280863.9A CN202110280863A CN112817962A CN 112817962 A CN112817962 A CN 112817962A CN 202110280863 A CN202110280863 A CN 202110280863A CN 112817962 A CN112817962 A CN 112817962A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- fingerprint
- storage
- stored
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于对象存储的数据存储方法、装置、计算机设备和存储介质。通过获取数据文件和索引文件,利用预设分块策略将待存储的数据分为至少一个数据块,将每个数据块的数据指纹发至去重服务器,去重服务器查询数据指纹是否存在并返回客户端查询结果,若否,客户端将数据指纹对应的数据块存储至数据文件,将存储位置发至去重服务器;是则将数据指纹写入索引文件,将数据文件和索引文件中的至少一种发至对象存储中进行存储。相较于传统的在存储数据时利用本地存储设备进行数据删除和存储,本方案利用数据指纹确定待存储的数据的存储文件类型,利用对象存储对数据进行存储,由于对象存储的高可靠和弹性扩展的特征,提高了数据存储的存储性能。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种基于对象存储的数据存储方法、装置、计算机设备和存储介质。
背景技术
数据库是用于存储数据的一种数据集合,数据库中通常会存储有各种重要的数据,并且数据库中存储的数据通常会有重复数据,在对数据进行存储时,若重复的数据过多,会导致存储空间的利用效率下降,因此通常需要对重复的数据进行删除。目前当数据中存在重复数据时,通常是直接在本地存储设备,例如本地硬盘中进行数据删除,然而这种方法容易受到硬盘空间大小的限制,导致数据存储的性能较低。
因此,目前的数据存储方法存在存储性能低的缺陷。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高数据存储性能的基于对象存储的数据存储方法、装置、计算机设备和存储介质。
一种基于对象存储的数据存储方法,应用于客户端,所述方法包括:
响应于针对待存储的数据的数据存储请求,向去重服务器发送数据文件请求;所述数据文件请求用于指示所述去重服务器根据所述待存储的数据生成对应的待存储文件;所述数据包括至少一个数据块;所述待存储文件包括至少一种文件类型;
根据预设分块策略,将所述待存储的数据分为至少一个数据块;
针对每个所述数据块,获取该数据块对应的数据指纹,并将所述数据指纹发送至所述去重服务器;所述去重服务器用于查询所述数据指纹是否存在并返回查询结果;
根据所述查询结果,将所述数据块和/或所述数据指纹存储至对应文件类型的待存储文件;
将所述待存储文件发送至对象存储中进行存储。
在其中一个实施例中,所述待存储文件的文件类型包括:待存储的数据文件以及待存储的索引文件;所述待存储的数据文件用于存储所述待存储的数据;所述待存储的索引文件用于存储所述待存储的数据对应的数据指纹;
所述根据所述查询结果,将所述数据块和/或所述数据指纹存储至对应文件类型的待存储文件,包括:
若查询结果为否,将所述数据指纹对应的数据块存储至所述数据文件,将所述数据指纹写入所述索引文件,并将所述数据块在所述数据文件中的存储位置发送至所述去重服务器,否则将所述数据指纹写入所述索引文件。
在其中一个实施例中,所述将所述数据指纹对应的数据块存储至所述数据文件之后,还包括:
若所述数据文件的剩余存储空间小于所述待存储的数据中的数据块的数据大小,将所述数据文件发送至所述对象存储进行存储;
向所述去重服务器发送所述存储位置以及新的数据文件请求;所述去重服务器用于将所述存储位置存储至所述数据文件对应的元数据中,并向所述客户端发送新的待存储的数据文件。
在其中一个实施例中,还包括:
响应于数据读取指令,从所述对象存储中获取所述数据读取指令对应的索引文件;
根据所述索引文件,获取至少一个数据指纹,将所述至少一个数据指纹发送至所述去重服务器;所述去重服务器用于根据所述至少一个数据指纹,查询所述数据指纹对应的数据块的位置并返回;
根据所述去重服务器返回的所述位置,从所述对象存储中获取对应的数据块。
在其中一个实施例中,还包括:
向所述去重服务器发送数据更改指令,并从所述对象存储中获取待更改的索引文件;所述去重服务器用于根据所述数据更改指令,生成待更改的数据文件并返回;所述数据更改指令包括更改位置;
获取所述待更改的索引文件中与所述更改位置对应的待更改的数据指纹,并向所述去重服务器发送所述待更改的数据指纹;所述去重服务器用于根据所述待更改的数据指纹,查询对应的待更改的数据块位置并返回;
根据所述待更改的数据块位置,从所述对象存储中获取对应的待更改的数据块,并根据所述更改位置,对所述待更改的数据块进行更改,得到更改后的数据块;
根据所述更改后的数据块,生成对应的更改后的数据指纹;
根据所述更改后的数据指纹,查询所述待更改的索引文件,若所述更改后的数据指纹未被任一数据块引用,将所述更改后的数据指纹存储至所述待更改的索引文件,得到更改后的索引文件,并将所述更改后的数据指纹发送至所述去重服务器;所述去重服务器用于查询所述更改后的数据指纹是否已存在,并向所述客户端返回查询结果;
若所述查询结果为否,将所述更改后的数据块写入所述待更改的数据文件,得到更改后的数据文件;
将所述更改后的索引文件以及所述更改后的数据文件存储至所述对象存储。
一种基于对象存储的数据存储方法,应用于去重服务器,所述方法包括:
响应于客户端发送数据文件请求,生成对应的待存储的数据文件以及待存储的索引文件;
获取所述客户端发送的针对所述至少一个数据块生成的数据指纹,并在指纹数据库中查询所述数据指纹是否存在;
若是,向所述客户端返回查询结果,根据所述数据指纹,在所述指纹数据库中更新所述数据指纹的引用数;
若否,向所述客户端返回查询结果,获取所述客户端发送的针对所述数据指纹对应的数据块在所述数据文件中的存储位置,将所述存储位置以及所述数据指纹存储至所述指纹数据库中。
在其中一个实施例中,还包括:
获取所述客户端发送的删除指令;所述删除指令包括待删除的数据的存储文件信息;
从对象存储中获取所述待删除的数据对应的索引文件,并从所述索引文件中获取所述待删除的数据中的待删除的数据块对应的待删除的数据指纹;
删除所述待删除的数据指纹对所述待删除的数据块的引用关系,并删除所述待删除的数据对应的索引文件;
还包括:
若任一所述待删除的数据块与所述待删除的数据指纹均不存在引用关系,获取所述待删除的数据块对应的目标数据文件,将所述目标数据文件中有效数据块的计数减一;
还包括:
若所述目标数据文件中有效数据块的计数为零,在所述目标数据文件对应的元数据中删除所述目标数据文件的信息。
在其中一个实施例中,还包括:
获取所述数据文件中冗余数据占比大于预设值的待回收的数据文件;所述待回收的数据文件包括至少一个数据块;所述冗余数据占比表征所述数据文件中与任一所述数据指纹均不存在引用关系的数据块占所述数据文件中所有数据块的占比;
针对每个所述数据块,获取该数据块对应的数据指纹,根据所述数据指纹,判断所述数据指纹对应的引用数;所述引用数表征与所述数据指纹存在关联关系的数据块的数量;
若所述引用数不为零,确定所述数据块为有效数据块,将所述有效数据块写入新的数据文件,并根据所述有效数据块在所述新的数据文件中的存储位置,更新所述有效数据块对应的数据指纹,根据至少一个所述有效数据块,得到更新后的数据文件;
若所述引用数为零,确定所述数据块为冗余数据块,从所述冗余数据块对应的索引文件中删除所述冗余数据块对应的数据指纹,根据至少一个所述冗余数据块,得到回收后的数据文件;
将所述更新后的数据文件存储至所述对象存储中,并删除所述回收后的数据文件。
一种基于对象存储的数据存储装置,应用于客户端,所述装置包括:
发送模块,用于响应于针对待存储的数据的数据存储请求,向去重服务器发送数据文件请求;所述数据文件请求用于指示所述去重服务器根据所述待存储的数据生成对应的待存储的数据文件以及待存储的索引文件;所述数据包括至少一个数据块;所述待存储的数据文件用于存储所述待存储的数据;所述待存储的索引文件用于存储所述待存储的数据对应的数据指纹;
划分模块,用于根据预设分块策略,将所述待存储的数据分为至少一个数据块;
获取模块,用于针对每个所述数据块,获取该数据块对应的数据指纹,并将所述数据指纹发送至所述去重服务器;所述去重服务器用于查询所述数据指纹是否存在并返回查询结果;
判断模块,用于若查询结果为否,将所述数据指纹对应的数据块存储至所述数据文件,并将所述数据块在所述数据文件中的存储位置发送至所述去重服务器,否则将所述数据指纹写入所述索引文件;
存储模块,用于将所述数据文件和/或所述索引文件发送至对象存储中进行存储。
一种基于对象存储的数据存储装置,应用于去重服务器,所述装置包括:
生成模块,用于响应于客户端发送数据文件请求,生成对应的待存储的数据文件以及待存储的索引文件;
获取模块,用于获取所述客户端发送的针对所述至少一个数据块生成的数据指纹,并在指纹数据库中查询所述数据指纹是否存在;
第一确定模块,用于若是,向所述客户端返回查询结果,根据所述数据指纹,在指纹数据库中更新所述数据指纹的引用数;
第二确定模块,用于若否,向所述客户端返回查询结果,获取所述客户端发送的针对所述数据指纹对应的数据块在所述数据文件中的存储位置,将所述存储位置以及所述数据指纹存储至所述指纹数据库中。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
上述基于对象存储的数据存储方法、装置、计算机设备和存储介质,通过在接收到数据存储请求时,获取去重服务器针对待存储的数据生成的待存储的数据文件以及待存储的索引文件,根据预设分块策略,将待存储的数据分为至少一个数据块,并针对每个数据块,将该数据块对应的数据指纹发送至去重服务器,去重服务器可以查询数据指纹是否存在并向客户端返回查询结果,若查询结果为否,客户端可以将数据指纹对应的数据块存储至数据文件,并将存储位置发送至去重服务器;若是则将数据指纹写入索引文件,并将数据文件和索引文件中的至少一种发送至对象存储中进行存储。相较于传统的在存储数据时利用本地存储设备进行数据删除和存储的方式,本方案利用数据指纹确定待存储的数据的存储文件类型,并利用对象存储对数据进行存储,由于对象存储的高可靠和弹性扩展的特征,从而实现提高数据存储的存储性能的效果。
附图说明
图1为一个实施例中基于对象存储的数据存储方法的应用环境图;
图2为一个实施例中去重服务器的结构示意图;
图3为一个实施例中对象存储的结构示意图;
图4为一个实施例中基于对象存储的数据存储方法的流程示意图;
图5为一个实施例中读取数据步骤的流程示意图;
图6为一个实施例中更改数据步骤的流程示意图;
图7为一个实施例中基于对象存储的数据存储方法的流程示意图;
图8为一个实施例中删除数据步骤的流程示意图;
图9为一个实施例中回收冗余数据步骤的流程示意图;
图10为另一个实施例中基于对象存储的数据存储方法的流程示意图;
图11为又一个实施例中基于对象存储的数据存储方法的流程示意图;
图12为再一个实施例中基于对象存储的数据存储方法的流程示意图;
图13为一个实施例中基于对象存储的数据存储装置的结构框图;
图14为另一个实施例中基于对象存储的数据存储装置的结构框图;
图15为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的基于对象存储的数据存储方法,可以应用于如图1所示的应用环境中。其中,客户端102、去重服务器104和对象存储106之间可以通过网络进行相互,例如通过云服务进行相互通信,例如通过包括而不限于TCP、HTTP等各种通信协议进行通信,客户端102和去重服务器104使用对象存储106提供的标准API接口进行对象存储106上对象的操作。客户端102可以获取针对待存储数据的数据存储请求,并在接收到该请求时,向去重服务器104发送数据文件请求,去重服务器104可以在接收到数据文件请求后,生成待存储数据对应的待存储文件,包括待存储的数据文件以及待存储的索引文件,并将生成的数据文件和索引文件发送至客户端102,客户端102可以将待存储数据分为至少一个数据块,并针对每个数据块,获取对应的数据指纹,将数据指纹发送至去重服务器104进行查询,并根据去重服务器104的查询结果,将数据块和数据指纹存储至对应文件类型的待存储文件、或将数据指纹存储至对应的待存储文件,客户端102还可以将待存储文件发送至对象存储106中进行存储。其中,客户端102通过与去重服务器104配合,对要存储的数据进行重复数据删除处理,删除重复数据后的数据可以存储到对象存储106中,客户端102是数据存取的发起者,去重服务器104负责指纹的管理和数据对象的管理,为客户端102提供指纹查询和匹配服务,对象存储106负责存储实际的数据和索引数据。
在一个实施例中,去重服务器104的结构可以如图2所示,图2为一个实施例中去重服务器的结构示意图。去重服务器104中可以包括索引服务、数据对象管理、回收服务和指纹/元数据存储等结构。在一个实施例中,对象存储106的结构可以如图3所示,图3为一个实施例中对象存储的结构示意图。包括数据对象data的存储结构,以及索引对象index的存储结构,其中数据对象可以是根据数据文件形成的对象,索引对象可以是根据索引文件形成的对象。其中,客户端102可以但不限于是各种个人计算机、笔记本电脑、智能手机和平板电脑,去重服务器104以及对象存储106均可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图4所示,提供了一种基于对象存储的数据存储方法,以该方法应用于图1中的客户端为例进行说明,包括以下步骤:
步骤S202,响应于针对待存储的数据的数据存储请求,向去重服务器104发送数据文件请求;数据文件请求用于指示去重服务器104根据待存储的数据生成对应的待存储文件;数据包括至少一个数据块;待存储文件包括至少一种文件类型。
其中,数据存储请求可以是当需要对数据进行存储时触发的请求,该请求可以由用户触发,也可以由***按照一定规律触发。客户端102可以在查询到数据存储请求时,获取待存储的数据,并向去重服务器104发送数据文件请求。去重服务器104可以接收该数据文件请求,而数据文件请求中可以包括待存储的数据的相关信息,例如数据的名称等,去重服务器104生成与待存储的数据对应的待存储文件。具体地,客户端102在需要存储数据或文件时,可以向去重服务器104申请数据对象名称,该数据对象名称可以是一个可写的对象名称,去重服务器104可以保证一个数据对象名称只会分配给一个客户端102。其中待存储文件包括至少一种文件类型,例如可以包括待存储的数据文件,也可以包括待存储的索引文件,并且,上述待存储的数据可以是数据块格式,待存储的数据包括至少一个数据块。其中,待存储的数据文件用于存储待存储的数据;待存储的索引文件用于存储待存储的数据对应的数据指纹;数据指纹可以是指数据块的指纹,可以用于表征数据块的存储位置和引用数等信息。上述客户端102接收到待存储文件后,可以在本地打开数据待存储文件,例如打开数据文件和索引文件,或打开索引文件,从而可以缓存需要上传到对象存储106中的数据块和索引数据。
其中,如图2所示,上述去重服务器104可以包括多个模块,例如索引服务模块、数据对象管理模块、回收服务模块和指纹/元数据存储模块等。其中,索引服务模块可以为客户端102提供指纹查询、匹配和提交服务;数据对象管理模块可以用于为客户端102生成并分配可用的数据文件用于写入上述待存储的数据;回收服务模块可以用于提供冗余数据块、数据文件的回收;指纹/元数据存储模块可以用于存储数据指纹和其他元数据,其中数据指纹包括数据块的指纹、数据块存储的位置信息,该位置包括对象存储106中存储该数据块的数据对象和数据块在该数据对象中的偏移、以及数据块的引用数据等;其他元数据包括数据对象管理相关的必要信息,例如数据块文件中数据的个数,有效数据块的个数等。
步骤S204,根据预设分块策略,将待存储的数据分为至少一个数据块。
其中,待存储的数据可以是需要存储至对象存储106中的数据,待存储的数据中可以包括至少一个数据块,客户端102需要从待存储的数据中提取出其中的数据块,从而对数据块进行存储。例如,客户端102可以在原始数据中心,通过预设的分块策略,将待存储的数据分为至少一个数据块。从而客户端102可以基于至少一个数据块对数据进行存储。
步骤S206,针对每个数据块,获取该数据块对应的数据指纹,并将数据指纹发送至去重服务器104;去重服务器104用于查询数据指纹是否存在并返回查询结果。
其中,数据指纹可以是待存储的数据对应的指纹,例如可以是待存储的数据中的各个数据块对应的指纹,客户端102可以针对上述从待存储的数据中提取的数据块,获取该数据块对应的数据指纹,例如通过指纹算法计算该数据块对应的数据指纹。客户端102可以将数据指纹发送至去重服务器104中,去重服务器104可以在接收到客户端102发送的数据指纹后,查询该数据块对应的数据指纹是否在去重服务器104中已存在,例如去重服务器104可以通过其中的索引服务模块,在指纹/元数据存储模块中查询客户端102发送的数据指纹是否存在,并向客户端102返回查询结果,例如已存在或不存在。另外,客户端102将上述数据块的数据指纹发送至去重服务器104后,去重服务器104还可以将该数据指纹暂存。
步骤S208,根据查询结果,将数据块和/或数据指纹存储至对应文件类型的待存储文件。
其中,查询结果可以是上述去重服务器104对数据块对应的数据指纹是否已存在的查询结果。客户端102可以根据该查询结果,对数据块、数据指纹存储至相应的待存储文件。例如,在一个实施例中,根据查询结果,将数据块和/或数据指纹存储至对应文件类型的待存储文件,包括:若查询结果为否,将数据指纹对应的数据块存储至数据文件,将数据指纹写入索引文件,并将数据块在数据文件中的存储位置发送至去重服务器104,否则将数据指纹写入索引文件。在本实施例中,客户端102在查询到查询结果为否,即数据指纹不存在时,可以将待存储的数据对应的数据块存储至上述数据文件中,并将数据指纹写入索引文件,还可以将数据块在数据文件中的存储位置发送至去重服务器104;若客户端102查询到查询结果为是,即指纹已存在时,客户端102可以将该数据指纹写入索引文件,并继续获取和查询下一个数据块,直到数据块获取完毕。具体地,客户端102若接收到查询结果为该指纹在服务器中不存在,客户端102可以数据块写入数据文件,并记录数据块在数据文件中的位置。若查询结果为已存在,则客户端102可以将数据指纹的信息写入索引文件,并继续获取待存储的数据中的下一个数据块。
上述数据文件的容量可以是有限的,当上述数据文件的大小达到预设大小时,例如剩余空间不足以存储下一个数据块时,客户端102可以进行数据文件的重新获取以及数据文件的存储。例如,在一个实施例中,将数据指纹对应的数据块存储至数据文件之后,还包括:若数据文件的剩余存储空间小于待存储的数据中的数据块的数据大小,将数据文件发送至对象存储106进行存储;向去重服务器104发送存储位置以及新的数据文件请求;去重服务器104用于将存储位置存储至数据文件对应的元数据中,并向客户端发送新的待存储的数据文件。本实施例中,客户端102可以在数据指纹不存在时,将数据块存储到数据文件中,而当数据文件达到预设大小,例如数据文件的剩余容量不足以存储下一个数据块时,客户端102可以将已使用的数据文件上传至对象存储106中的特定位置,生成数据对象,并将数据文件的相关信息发送至去重服务器104,去重服务器104可以将数据对象的信息记录到元数据中,即该元数据与数据文件对应,去重服务器104可以将数据对象包含的指纹列表暂存,其中指纹列表中包括多个数据指纹。此外,去重服务器104可以根据客户端102发送的数据文件请求,生成新的待存储的数据文件,并向客户端102发送该新的数据文件,从而客户端102可以在新的数据文件中进行数据块的写入。
步骤S210,将待存储文件发送至对象存储106中进行存储。
其中,待存储文件可以是客户端102存储待存储的数据中的数据块和数据指纹的文件,待存储文件中可以包括数据文件以及索引文件。客户端102可以将待存储的文件发送至对象存储106中进行存储。例如,客户端102可以在所有待存储的数据处理完成后,将最后一个数据文件关闭并上传至对象存储106中进行存储,并将数据文件对应的数据对象的相关信息发送至去重服务器104,客户端102可以关闭索引文件,并将索引文件上传至对象存储106中的特定位置,从而实现数据文件和索引文件在对象存储106中进行存储。并且,去重服务器104在接收到最后一个数据文件的相关信息后,可以将上述信息记录到数据块对应的元数据,并且去重服务器104可以将已存在的指纹更新指纹/元数据存储模块中该指纹的引用数;并将不存在的指纹在指纹/元数据存储模块中***一条新的指纹记录。
另外,如图3所示,上述对象存储106可以用于存储去重之后的数据以及数据的索引数据,对象存储106的具体存储结构可以包括数据对象data和索引对象index的存储结构。其中,客户端102在写入数据时,生成的数据对象可以存储在/data/前缀之下,其对象名称由去重服务器104统一分配;待存储的数据对应的索引数据存储为/index/前缀之下的索引对象,索引对象的命名可以使用待存储的数据的名称,也可以按照一定的规则自动生成或者由去重服务器104分配。需要说明的是,图3只是实际数据和索引数据在对象存储106上存储的一种实施结构,实际使用中可以根据需要采用其他的存储结构。
上述基于对象存储的数据存储方法中,通过在接收到数据存储请求时,获取去重服务器针对待存储的数据生成的待存储的数据文件以及待存储的索引文件,根据预设分块策略,将待存储的数据分为至少一个数据块,并针对每个数据块,将该数据块对应的数据指纹发送至去重服务器,去重服务器可以查询数据指纹是否存在并向客户端返回查询结果,若查询结果为否,客户端可以将数据指纹对应的数据块存储至数据文件,并将存储位置发送至去重服务器;若是则将数据指纹写入索引文件,并将数据文件和索引文件中的至少一种发送至对象存储中进行存储。相较于传统的在存储数据时利用本地存储设备进行数据删除和存储的方式,本方案利用数据指纹确定待存储的数据的存储文件类型,并利用对象存储对数据进行存储,由于对象存储的高可靠和弹性扩展的特征,从而实现提高数据存储的存储性能的效果。
在一个实施例中,上述方法还包括:响应于数据读取指令,从对象存储中获取数据读取指令对应的索引文件;根据索引文件,获取至少一个数据指纹,将至少一个数据指纹发送至去重服务器;去重服务器用于根据至少一个数据指纹,查询数据指纹对应的数据块的位置并返回;根据去重服务器返回的位置,从对象存储中获取对应的数据块。
本实施例中,客户端102可以对待存储的数据进行存储,例如存储到对象存储106中,并且可以对已存储的数据进行读取。如图5所示,图5为一个实施例中读取数据步骤的流程示意图。数据读取指令可以是由用户触发的指令,用于从对象存储106中读取数据,客户端102可以接收数据读取指令,其中数据读取指令中可以包括需要读取的数据的相关信息,例如需要读取的数据的索引信息等,客户端102可以从对象存储106中获取数据读取指令对应的索引文件,客户端102可以对索引文件进行解析,得到其中存储的至少一个数据指纹,客户端102可以将从索引文件中得到的至少一个数据指纹发送至去重服务器104,去重服务器104可以根据客户端102发送的至少一个指纹,查询数据指纹对应的数据块的位置并返回查询到的位置,其中,客户端102可以将数据指纹逐个读取并发送至去重服务器104中进行查询,也可以是完全读取后一并发送至去重服务器104进行查询。客户端102在根据数据指纹得到需要读取的数据的位置后,可以根据该位置从对象存储106中读取相应位置的数据块,从而实现数据的读取。具体地,当客户端102需要读取文件时,客户端可以根据数据读取指令,从对象存储106下载需要读取的文件的索引文件,并解析其中的索引数据,得到数据块指纹信息列表,客户端102可以针对需要读取的文件用到的数据块,使用这些数据块的数据指纹向去重服务器104查询数据块信息,并获取数据块在对象存储106中的实际存储位置,该存储位置包括数据对象的名称和数据块在数据对象中的存储位置。从而客户端102可以根据上述存储位置,从对象存储106中读取数据块。
另外,当客户端102需要从随机位置读取数据时,客户端102可以根据读取的位置偏移从索引文件中跳过偏移之前的数据块,从有效数据开始的数据块开始读取数据。
通过本实施例,客户端102可以利用数据文件以及索引文件将数据存储至对象存储106中,并且可以利用索引文件从对象存储106中读取数据,从而提高了数据存储和读取的性能。
在一个实施例中,还包括:向去重服务器104发送数据更改指令,并从对象存储106中获取待更改的索引文件;去重服务器104用于根据数据更改指令,生成待更改的数据文件并返回;数据更改指令包括更改位置;获取待更改的索引文件中与更改位置对应的待更改的数据指纹,并向去重服务器104发送待更改的数据指纹;去重服务器104用于根据待更改的数据指纹,查询对应的待更改的数据块位置并返回;根据待更改的数据块位置,从对象存储106中获取对应的待更改的数据块,并根据更改位置,对待更改的数据块进行更改,得到更改后的数据块;根据更改后的数据块,生成对应的更改后的数据指纹;根据更改后的数据指纹,查询待更改的索引文件,若更改后的数据指纹未被任一数据块引用,将更改后的数据指纹存储至待更改的索引文件,得到更改后的索引文件,并将更改后的数据指纹发送至去重服务器104;去重服务器104用于查询更改后的数据指纹是否已存在,并向客户端返回查询结果;若查询结果为否,将更改后的数据块写入待更改的数据文件,得到更改后的数据文件;将更改后的索引文件以及更改后的数据文件存储至对象存储106。
本实施例中,客户端102可以将数据写入数据文件并将数据指纹写入索引文件,并存储至对象存储106中,实现数据的存储。客户端102还可以对已经存储的数据进行更改。如图6所示,图6为一个实施例中更改数据步骤的流程示意图。客户端102可以接收数据更改指令,其中更改指令中可以包括需要更改的数据的更改位置,客户端102可以向去重服务器104发送数据更改指令,同时从对象存储106中获取待更改的索引文件。去重服务器104可以根据数据更改指令,生成待更改的数据文件并将该数据文件返回至客户端102中。具体地,客户端102开始改写文件时,可以向去重服务器104申请数据文件,获取去重服务器104返回的数据文件并在本地打开数据文件待写。其中,数据文件可以是用于存储更改后的数据的文件。
客户端102还可以获取待更改的索引文件,并从该索引文件中获取待更改的数据指纹,例如,客户端102可以从对象存储106下载索引对象,并从中解析索引文件中的数据,获取其中与更改位置对应的待更改的数据指纹,具体地,客户端102可以根据当前需要更改的位置,从上述得到的索引文件中获取需要改写更改的数据块的指纹信息,并使用该数据块指纹向去重服务器104查询该数据块的相关信息。例如数据块在对象存储106中的位置信息,去重服务器104可以根据客户端102发送的数据指纹,查询待更改的数据块的位置并向客户端102发送该数据块位置。
客户端102可以在通过去重服务器104得到待更改的数据块位置后,可以利用该数据块位置,从对象存储106中获取对应的待更改的数据块,并根据上述需要更改的位置,对待更改的数据块进行更改,例如从需要更改的位置开始改写数据,从而得到更改后的数据块。
客户端102还可以将更改后的数据进行存储。客户端102可以根据更改后的数据块,生成对应的更改后的数据指纹。例如,客户端102可以在改写待数据块结尾,或改写完毕时,利用上述指纹算法计算改写后的数据块指纹。其中,上述索引文件中可以记录有数据文件中用到的数据块、数据块的指纹列表和数据块在原始文件中的相对位置,去重服务器104中的指纹数据库记录有各数据块的指纹、实际存储位置和引用信息;当删除文件时,客户端102可以根据索引文件中记录的数据块对应的指纹列表,逐个操作指纹数据库中各个数据块的引用数减1,当某个数据块的引用数为0时,则表示该数据块已没有文件使用,可以从数据文件中删除以释放物理存储空间,当文件引用的所有数据块均经过上述处理后,可以删除文件对应的索引数据。客户端102得到数据块指纹后,可以从索引文件中查找该数据指纹是否已经被任一数据块引用,若该数据指纹未被任一数据块引用,则客户端102可以将更改后的数据指纹存储至待更改的索引文件,即将新的数据指纹存放至新的索引文件,从而得到更改后的索引文件;客户端102还可以将更改后的数据指纹发送至去重服务器104,去重服务器104可以暂存该数据指纹,并利用该数据指纹,查询该指纹是否已存在,并向客户端102返回查询结果。客户端102可以接收来自去重服务器104的查询结果,当查询结果为该指纹不存在时,客户端102可以将更改后的数据块写入待更改的数据文件中,即将改写后的数据块存储至新的数据文件中,从而得到更改后的数据文件,客户端102还可以将更改后的数据文件以及更改后的索引文件存储至上述对象存储106中,从而实现对数据的改写和更改。另外,由于数据文件的大小有限,当数据文件大小达到预设大小时,客户端102可以将更改后的数据文件上传至对象存储106并将数据文件的相关信息发送至去重服务器104,若还存在需要改写或更改的数据,去重服务器104向客户端102发送新的待更改的数据文件,从而客户端102可以在新的待更改的数据文件中存储改写后的数据块。
另外,客户端102还可以将更改后的数据块对应的数据指纹信息更新至更改后的索引文件中的相应位置。当更改完毕时,客户端102将更改后的索引文件发送至对象存储106中进行存储。当上述更改完成时,客户端102可以将不再引用的数据指纹提交到去重服务器104中,去重服务器104可以接收不再引用的数据指纹的相关信息并释放不再引用的数据指纹。
通过本实施例,客户端102可以从对象存储106中获取需要更改的数据,利用数据文件存储更改后实际数据,以及利用索引文件存储更改后的指纹信息,并将数据文件和索引文件存储在对象存储106中进行存储,由于对象存储的高可靠和弹性扩展的特征,实现了提高数据的更改和存储的性能的效果。
在一个实施例中,如图7所示,图7为一个实施例中基于对象存储的数据存储方法的流程示意图。提供了一种基于对象存储的数据存储方法,以该方法应用于图1中的去重服务器为例进行说明,包括以下步骤:
步骤S302,响应于客户端102发送数据文件请求,生成对应的待存储的数据文件以及待存储的索引文件。
步骤S304,获取客户端102发送的针对至少一个数据块生成的数据指纹,并在指纹数据库中查询数据指纹是否存在。
步骤S306,若是,向客户端102返回查询结果,根据所数据指纹,在指纹数据库中更新数据指纹的引用数。
步骤S308,若否,向客户端102返回查询结果,获取客户端102发送的针对数据指纹对应的数据块在数据文件中的存储位置,将存储位置以及数据指纹存储至指纹数据库中。
关于本实施例中对基于对象存储的数据存储方法的限定可以参考上述以客户端102为例的对基于对象存储的数据存储方法的限定,在此不再赘述。
上述基于对象存储的数据存储方法中,通过在接收到数据存储请求时,获取去重服务器针对待存储的数据生成的待存储的数据文件以及待存储的索引文件,根据预设分块策略,将待存储的数据分为至少一个数据块,并针对每个数据块,将该数据块对应的数据指纹发送至去重服务器,去重服务器可以查询数据指纹是否存在并向客户端返回查询结果,若查询结果为否,客户端可以将数据指纹对应的数据块存储至数据文件,并将存储位置发送至去重服务器;若是则将数据指纹写入索引文件,并将数据文件和索引文件中的至少一种发送至对象存储中进行存储。相较于传统的在存储数据时利用本地存储设备进行数据删除和存储的方式,本方案利用数据指纹确定待存储的数据的存储文件类型,并利用对象存储对数据进行存储,由于对象存储的高可靠和弹性扩展的特征,从而实现提高数据存储的存储性能的效果。
在一个实施例中,上述方法还包括:获取客户端102发送的删除指令;删除指令包括待删除的数据的存储文件信息;从对象存储106中获取待删除的数据对应的索引文件,并从索引文件中获取待删除的数据中的待删除的数据块对应的待删除的数据指纹;删除待删除的数据指纹对待删除的数据块的引用关系,并删除待删除的数据对应的索引文件。
本实施例中,如图8所示,图8为一个实施例中删除数据步骤的流程示意图。客户端102可以对已经存储的数据进行删除,例如通过去重服务器104对数据进行删除。客户端102需要删除数据时,可以向去重服务器104发送包括待删除的数据的存储文件信息的删除指令,请求去重服务器104删除文件。去重服务器104接收到该删除指令后,可以从对象存储106中获取待删除的数据对应的索引文件,解析该索引文件,从而在索引文件中获取待删除的数据中待删除的数据块对应的数据指纹,例如待删除的数据文件引用的数据块指纹信息列表。去重服务器104可以删除上述待删除的数据块对应的数据指纹与该数据块的引用关系。例如,去重服务器104可以针对数据指纹列表,将上述待删除数据块的引用数减1,从而更新指纹数据库,由于一个指纹可以有多个引用数,每个引用数代表存在一个该指纹对应的数据块,因此去重服务器104可以通过减少引用数的方式实现待删除数据块的删除。当去重服务器104对所有需要删除的数据块处理完毕后,可以在对象存储106中删除上述待删除的数据对应的索引对象。
另外,在一个实施例中,若任一待删除的数据块与待删除的数据指纹均不存在引用关系,获取待删除的数据块对应的目标数据文件,将目标数据文件中有效数据块的计数减一。本实施例中,一个数据指纹可以引用多个数据块,去重服务器104在进行数据删除时,若检测到该数据指纹引用的数据块的引用数不为0,则去重服务器104可以继续处理下一个数据块;当去重服务器104检测到上述引用数为0时,则说明该数据指纹没有引用的数据块,即数据文件中的有效数据块减少,去重服务器104可以获取上述待删除的数据块对应的目标数据文件,并将目标数据文件的有效数据块的计数减1。
另外,在一个实施例中,还包括:若目标数据文件中有效数据块的计数为零,在目标数据文件对应的元数据中删除目标数据文件的信息。本实施例中,去重服务器104若检测到上述有效数据块的计数为0时,则说明当前的目标数据文件中不存在有效数据块,此时去重服务器104可以在对象存储106中删除该目标数据文件对应的数据对象,并从元数据的数据文件信息中删除目标数据文件的信息记录。
通过上述实施例,去重服务器104可以利用对象存储106得到需要删除的数据对应的信息,并通过索引文件和数据文件进行数据的删除,从而提高了数据删除的效率。
在一个实施例中,还包括:获取数据文件中冗余数据占比大于预设值的待回收的数据文件;待回收的数据文件包括至少一个数据块;冗余数据占比表征数据文件中与任一数据指纹均不存在引用关系的数据块占数据文件中所有数据块的占比;针对每个数据块,获取该数据块对应的数据指纹,根据数据指纹,判断数据指纹对应的引用数;引用数表征与数据指纹存在关联关系的数据块的数量;若引用数不为零,确定数据块为有效数据块,将有效数据块写入新的数据文件,并根据有效数据块在新的数据文件中的存储位置,更新有效数据块对应的数据指纹,根据至少一个有效数据块,得到更新后的数据文件;若引用数为零,确定数据块为冗余数据块,从冗余数据块对应的索引文件中删除冗余数据块对应的数据指纹,根据至少一个冗余数据块,得到回收后的数据文件;将更新后的数据文件存储至对象存储106中,并删除回收后的数据文件。
本实施例中,如图9所示,图9为一个实施例中回收冗余数据步骤的流程示意图。由于对象存储106中的对象一旦生成无法改写,我们没有办法像使用块设备那样从数据文件中释放部分数据块,只能等到一个数据文件中的所有数据块都不再被引用时,删除该数据文件以回收空间。这样势必会造成大量冗余数据块无法及时回收,为了及时回收冗余数据块占用的存储空间,提高存储利用效率,去重服务器104可以对冗余数据块进行回收。去重服务器104可以获取数据文件中冗余数据占比大于预设值的数据文件,作为待回收的数据文件。例如,去重服务器104可以从元数据信息中获取冗余数据占比超过预设值的数据文件列表。其中,待回收的数据文件中可以包括至少一个数据块,上述冗余数据占比可以表征该数据文件中与任一数据指纹均不存在引用关系的数据块占数据文件中所有数据块的占比。
去重服务器104可以针对每个上述待回收的数据文件中的数据块,获取该数据块对应的数据指纹,判断该数据指纹对应的引用数。例如,去重服务器104可以获取上述数据文件中的数据块信息列表,利用数据块的数据指纹,查询指纹数据库,确认该数据块是否为冗余数据块,即查询该数据指纹的数据块引用数是否为0。其中该引用数可以表征与数据指纹存在关联关系的数据块的数量。
若上述引用数不为0,则去重服务器104可以确定该数据块为有效数据块,去重服务器104可以将该有效数据块写入新的数据文件,形成新的数据对象,同时去重服务器104可以根据存储在新的数据文件中该有效数据块的存储位置,更新指纹数据库中该数据块对应的数据指纹。上述新的数据文件中可以包括至少一个有效数据块,去重服务器104可以根据上述至少一个有效数据块,得到更新后的数据文件,并且去重服务器104还可以将更新后的数据文件上传至对象存储106中进行存储。
若上述引用数为0,则去重服务器104可以确定该数据块为冗余数据块,去重服务器104可以在该冗余数据块对应的索引文件中,删除该冗余数据块对应的数据指纹,例如从指纹数据库中删除该数据块的相关记录。上述冗余数据块可以为至少一个,去重服务器104可以根据至少一个上述冗余数据块,得到回收后的数据文件,即回收后的数据文件中包含至少一个冗余数据块。去重服务器104可以将回收后的数据文件进行删除。
通过本实施例,去重服务器104可以将对象存储106中的冗余数据块进行删除,降低了存储空间的冗余度,从而实现提高数据存储性能的效果。
在一个实施例中,如图10所示,图10为另一个实施例中基于对象存储的数据存储方法的流程示意图。本实施例包括以下流程:
客户端102在需要存储数据时,可以向去重服务器104发送通知信号,使得去重服务器104生成数据对象名称;去重服务器104为客户端102分配数据对象名称,客户端102在本地打开去重服务器104生成并发送的待存储的数据文件和待存储的索引文件。客户端102从原始数据中按照一定的策略获取待存储的数据块,针对每个数据块,应用指纹算法计算该数据块的指纹,客户端102将该数据块的数据指纹发送至去重服务器104,去重服务器104暂存该数据指纹,并查询该数据指纹是否存在,将查询结果返回至客户端102。客户端102接收到查询结果后,若结果为已存在,则客户端102将数据块对应的数据指纹信息写入到上述索引文件中,并继续获取下一个数据块;若为不存在,客户端102可以将数据块写入到数据文件中,并记录数据块在数据文件中的位置。
当上述数据文件的大小达到预设值时,客户端102可以将数据文件上传到对象存储106指定位置,生成数据对象;将数据文件信息提交到去重服务器104,去重服务器104可以将数据对象信息记录到元数据,并将数据对象中包含的指纹列表暂存;去重服务器104分配新的数据对象名称给客户端102,客户端102在本地打开新的数据文件待写;该数据块的数据指纹信息写入到索引文件,并继续获取下一个数据块。当所有数据处理完毕之后,客户端102将最后一个数据文件关闭并上传到对象存储106,提交数据对象信息到去重服务器104中的指纹数据库。同时,客户端102关闭索引文件并将索引文件上传至对象存储106的指定位置;去重服务器104记录最后一个数据文件信息到元数据,针对暂存的指纹列表做如下操作:对于已存在的指纹,更新去重服务器104的指纹数据库中该数据指纹的引用数;对于不存在的指纹,在上述指纹数据库中***一条新的指纹记录。
通过本实施例,客户端102和去重服务器104利用数据指纹确定待存储的数据的存储文件类型,并利用对象存储对数据进行存储,由于对象存储的高可靠和弹性扩展的特征,从而实现提高数据存储的存储性能的效果。
在一个实施例中,如图11所示,图11为又一个实施例中基于对象存储的数据存储方法的流程示意图。本实施例中的基于对象存储的数据存储方法,可以应用于上述去重服务器104具有一定的存储、带宽和处理能力的场景,包括以下流程:
客户端102在需要存储数据时,可以向去重服务器104发送通知信号,使得去重服务器104生成数据对象名称;去重服务器104为客户端102分配数据对象名称,并在去重服务器104中打开对应的待存储的索引文件,用于缓存该文件的索引数据;客户端102在收到去重服务器分配的数据对象名称后,可以在本地打开数据文件,用于缓存需要存储到对象存储106中的数据块;客户端102可以从待存储的数据中按照一定的分块策略,获取待存储的数据块,并利用设定的指纹算法,计算数据块的数据指纹,并将该数据指纹提交到去重服务器104中;去重服务器104将客户端102提交的数据指纹按照顺序写入到索引文件中,并加入暂存的指纹列表,在指纹数据库中查询该指纹是否已存在,并将查询结果返回给客户端102。
客户端102接收到查询结果后,可以根据查询结果的不同执行不同的步骤;例如,若查询结果为提交的数据指纹在***中已存在,则客户端102可以继续获取下一个待存储的数据块;若为不存在,则客户端102可以将待存储的数据块写入数据文件中,并记录数据块在数据文件中的存储位置。当上述数据文件的大小达到预设大小时,客户端102可以将数据文件上传至对象存储106中的设定位置,并提交数据文件信息到去重服务器104中的指纹数据库。
上述指纹数据库可以将数据文件信息保存到元数据中,并将指纹的存储位置更新到暂存的指纹列表。同时去重服务器104可以为客户端102重新分配新的数据对象名称并生成新的数据文件,客户端102可以在本地打开数据文件进行待写。当所有的数据块按照上述过程处理完毕后,客户端102可以将最后一个数据文件关闭,并上传至对象存储106中,再讲数据文件信息提交到去重服务器104。去重服务器104可以记录最后一个数据文件的相关信息到元数据,并更新最后的指纹列表,关闭索引文件,将数据文件和索引文件上传至对象存储106中,将暂存的指纹列表更新或***至指纹数据库。
通过本实施例,客户端102以及去重服务器104利用数据指纹确定待存储的数据的存储文件类型,并利用对象存储对数据进行存储,由于对象存储的高可靠和弹性扩展的特征,从而实现提高数据存储的存储性能的效果。
在一个实施例中,如图12所示,图12为再一个实施例中基于对象存储的数据存储方法的流程示意图。本实施例中的基于对象存储的数据存储方法,可以应用于当去重服务器104具有充足的存储、带宽和处理性能的场景。包括以下步骤:
客户端102在需要存储数据时,可以向去重服务器104发送通知信号,使得去重服务器104生成数据对象名称;去重服务器104为客户端102分配数据对象名称,并在去重服务器104中打开对应的待存储的数据文件和待存储的索引文件;客户端102从待存储的数据中,按照一定的分块策略获取数据块,并根据设定的指纹算法,计算数据块的数据指纹,将该数据指纹提交到去重服务器104中;去重服务器104可以从指纹数据库中查询该数据指纹是否存在,当数据指纹已存在时,可以将该数据指纹的信息写入到索引文件中,当数据指纹不存在时,可以请求客户端102上传数据块;客户端102可以根据数据指纹的查询结果,确定是否需要上传数据块,若不需要上传,则客户端102可以继续下一个数据块的数据指纹处理;若需要上传数据块,则客户端102可以将数据块发送至去重服务器104中。去重服务器104可以获取接受到的数据块对应的数据指纹,与客户端102提交的数据指纹进行对比,若数据指纹一致,则将数据块写入上述数据文件,并将指纹写入索引文件。当上述数据文件的大小达到预设数值时,去重服务器104可以将数据文件上传至对象存储106中,并记录数据文件的相关信息到元数据中,并分配和打开一个新的待存储的数据文件进行上述数据块的存储处理。当上述所有数据块均处理完毕时,客户端102可以向去重服务器104发送处理完成指令,去重服务器104接收到该指令后,可以将最后的数据文件进行关闭,并上传至对象存储106中;将索引文件关闭,并上传至对象存储106中,并将指纹列表更新或***到指纹数据库中。
通过本实施例,客户端102以及去重服务器104利用数据指纹确定待存储的数据的存储文件类型,并利用对象存储对数据进行存储,由于对象存储的高可靠和弹性扩展的特征,从而实现提高数据存储的存储性能的效果。
应该理解的是,虽然图4-图12的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4-图12中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图13所示,提供了一种基于对象存储的数据存储装置,包括:发送模块500、划分模块502、获取模块504、判断模块506和存储模块508,其中:
发送模块500,用于响应于针对待存储的数据的数据存储请求,向去重服务器104发送数据文件请求;数据文件请求用于指示去重服务器104根据待存储的数据生成对应的待存储文件;数据包括至少一个数据块;待存储文件包括至少一种文件类型。
划分模块502,用于根据预设分块策略,将待存储的数据分为至少一个数据块。
获取模块504,用于针对每个数据块,获取该数据块对应的数据指纹,并将数据指纹发送至去重服务器104;去重服务器104用于查询数据指纹是否存在并返回查询结果。
判断模块506,用于根据查询结果,将数据块和/或数据指纹存储至对应文件类型的待存储文件。
存储模块508,用于将待存储文件发送至对象存储106中进行存储。
在一个实施例中,上述判断模块506,具体用于若查询结果为否,将数据指纹对应的数据块存储至数据文件,将数据指纹写入索引文件,并将数据块在数据文件中的存储位置发送至去重服务器,否则将数据指纹写入索引文件。
在一个实施例中,上述装置还包括:新增模块,用于若数据文件的剩余存储空间小于待存储的数据中的数据块的数据大小,将数据文件发送至对象存储进行存储;向去重服务器发送存储位置以及新的数据文件请求;去重服务器用于将存储位置存储至数据文件对应的元数据中,并向客户端发送新的待存储的数据文件。
在一个实施例中,上述装置还包括:读取模块,用于响应于数据读取指令,从对象存储中获取数据读取指令对应的索引文件;根据索引文件,获取至少一个数据指纹,将至少一个数据指纹发送至去重服务器;去重服务器用于根据至少一个数据指纹,查询数据指纹对应的数据块的位置并返回;根据去重服务器返回的位置,从对象存储中获取对应的数据块。
在一个实施例中,上述装置还包括:改写模块,用于向去重服务器104发送数据更改指令,并从对象存储106中获取待更改的索引文件;去重服务器104用于根据数据更改指令,生成待更改的数据文件并返回;数据更改指令包括更改位置;获取待更改的索引文件中与更改位置对应的待更改的数据指纹,并向去重服务器104发送待更改的数据指纹;去重服务器104用于根据待更改的数据指纹,查询对应的待更改的数据块位置并返回;根据待更改的数据块位置,从对象存储106中获取对应的待更改的数据块,并根据更改位置,对待更改的数据块进行更改,得到更改后的数据块;根据更改后的数据块,生成对应的更改后的数据指纹;根据更改后的数据指纹,查询待更改的索引文件,若更改后的数据指纹未被任一数据块引用,将更改后的数据指纹存储至待更改的索引文件,得到更改后的索引文件,并将更改后的数据指纹发送至去重服务器104;去重服务器104用于查询更改后的数据指纹是否已存在,并向客户端返回查询结果;若查询结果为否,将更改后的数据块写入待更改的数据文件,得到更改后的数据文件;将更改后的索引文件以及更改后的数据文件存储至对象存储106。
在一个实施例中,如图14所示,提供了一种基于对象存储的数据存储装置,包括:生成模块600、获取模块602、第一确定模块604和第二确定模块606,其中:
生成模块600,用于响应于客户端102发送数据文件请求,生成对应的待存储的数据文件以及待存储的索引文件。
获取模块602,用于获取客户端102发送的针对至少一个数据块生成的数据指纹,并在指纹数据库中查询数据指纹是否存在。
第一确定模块604,用于若是,向客户端102返回查询结果,根据所数据指纹,在指纹数据库中更新数据指纹的引用数。
第二确定模块606,用于若否,向客户端102返回查询结果,获取客户端102发送的针对数据指纹对应的数据块在数据文件中的存储位置,将存储位置以及数据指纹存储至指纹数据库中。
在一个实施例中,上述装置还包括:删除模块,用于获取客户端102发送的删除指令;删除指令包括待删除的数据的存储文件信息;从对象存储106中获取待删除的数据对应的索引文件,并从索引文件中获取待删除的数据中的待删除的数据块对应的待删除的数据指纹;删除待删除的数据指纹对待删除的数据块的引用关系,并删除待删除的数据对应的索引文件。
在一个实施例中,上述装置还包括:第一检测模块,用于若任一待删除的数据块与待删除的数据指纹均不存在引用关系,获取待删除的数据块对应的目标数据文件,将目标数据文件中有效数据块的计数减一。
在一个实施例中,上述装置还包括:第二检测模块,用于若目标数据文件中有效数据块的计数为零,在目标数据文件对应的元数据中删除目标数据文件的信息。
在一个实施例中,上述装置还包括:回收模块,用于获取数据文件中冗余数据占比大于预设值的待回收的数据文件;待回收的数据文件包括至少一个数据块;冗余数据占比表征数据文件中与任一数据指纹均不存在引用关系的数据块占数据文件中所有数据块的占比;针对每个数据块,获取该数据块对应的数据指纹,根据数据指纹,判断数据指纹对应的引用数;引用数表征与数据指纹存在关联关系的数据块的数量;若引用数不为零,确定数据块为有效数据块,将有效数据块写入新的数据文件,并根据有效数据块在新的数据文件中的存储位置,更新有效数据块对应的数据指纹,根据至少一个有效数据块,得到更新后的数据文件;若引用数为零,确定数据块为冗余数据块,从冗余数据块对应的索引文件中删除冗余数据块对应的数据指纹,根据至少一个冗余数据块,得到回收后的数据文件;将更新后的数据文件存储至对象存储106中,并删除回收后的数据文件。
关于基于对象存储的数据存储装置的具体限定可以参见上文中对于基于对象存储的数据存储方法的限定,在此不再赘述。上述基于对象存储的数据存储装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是客户端,其内部结构图可以如图15所示。该计算机设备包括通过***总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的客户端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种基于对象存储的数据存储方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述的基于对象存储的数据存储方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的基于对象存储的数据存储方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种基于对象存储的数据存储方法,其特征在于,应用于客户端,所述方法包括:
响应于针对待存储的数据的数据存储请求,向去重服务器发送数据文件请求;所述数据文件请求用于指示所述去重服务器根据所述待存储的数据生成对应的待存储文件;所述数据包括至少一个数据块;所述待存储文件包括至少一种文件类型;
根据预设分块策略,将所述待存储的数据分为至少一个数据块;
针对每个所述数据块,获取该数据块对应的数据指纹,并将所述数据指纹发送至所述去重服务器;所述去重服务器用于查询所述数据指纹是否存在并返回查询结果;
根据所述查询结果,将所述数据块和/或所述数据指纹存储至对应文件类型的待存储文件;
将所述待存储文件发送至对象存储中进行存储。
2.根据权利要求1所述的方法,其特征在于,所述待存储文件的文件类型包括:待存储的数据文件以及待存储的索引文件;所述待存储的数据文件用于存储所述待存储的数据;所述待存储的索引文件用于存储所述待存储的数据对应的数据指纹;
所述根据所述查询结果,将所述数据块和/或所述数据指纹存储至对应文件类型的待存储文件,包括:
若查询结果为否,将所述数据指纹对应的数据块存储至所述数据文件,将所述数据指纹写入所述索引文件,并将所述数据块在所述数据文件中的存储位置发送至所述去重服务器,否则将所述数据指纹写入所述索引文件。
3.根据权利要求2所述的方法,其特征在于,所述将所述数据指纹对应的数据块存储至所述数据文件之后,还包括:
若所述数据文件的剩余存储空间小于所述待存储的数据中的数据块的数据大小,将所述数据文件发送至所述对象存储进行存储;
向所述去重服务器发送所述存储位置以及新的数据文件请求;所述去重服务器用于将所述存储位置存储至所述数据文件对应的元数据中,并向所述客户端发送新的待存储的数据文件。
4.根据权利要求1所述的方法,其特征在于,还包括:
响应于数据读取指令,从所述对象存储中获取所述数据读取指令对应的索引文件;
根据所述索引文件,获取至少一个数据指纹,将所述至少一个数据指纹发送至所述去重服务器;所述去重服务器用于根据所述至少一个数据指纹,查询所述数据指纹对应的数据块的位置并返回;
根据所述去重服务器返回的所述位置,从所述对象存储中获取对应的数据块。
5.根据权利要求1所述的方法,其特征在于,还包括:
向所述去重服务器发送数据更改指令,并从所述对象存储中获取待更改的索引文件;所述去重服务器用于根据所述数据更改指令,生成待更改的数据文件并返回;所述数据更改指令包括更改位置;
获取所述待更改的索引文件中与所述更改位置对应的待更改的数据指纹,并向所述去重服务器发送所述待更改的数据指纹;所述去重服务器用于根据所述待更改的数据指纹,查询对应的待更改的数据块位置并返回;
根据所述待更改的数据块位置,从所述对象存储中获取对应的待更改的数据块,并根据所述更改位置,对所述待更改的数据块进行更改,得到更改后的数据块;
根据所述更改后的数据块,生成对应的更改后的数据指纹;
根据所述更改后的数据指纹,查询所述待更改的索引文件,若所述更改后的数据指纹未被任一数据块引用,将所述更改后的数据指纹存储至所述待更改的索引文件,得到更改后的索引文件,并将所述更改后的数据指纹发送至所述去重服务器;所述去重服务器用于查询所述更改后的数据指纹是否已存在,并向所述客户端返回查询结果;
若所述查询结果为否,将所述更改后的数据块写入所述待更改的数据文件,得到更改后的数据文件;
将所述更改后的索引文件以及所述更改后的数据文件存储至所述对象存储。
6.一种基于对象存储的数据存储方法,其特征在于,应用于去重服务器,所述方法包括:
响应于客户端发送数据文件请求,生成对应的待存储的数据文件以及待存储的索引文件;
获取所述客户端发送的针对所述至少一个数据块生成的数据指纹,并在指纹数据库中查询所述数据指纹是否存在;
若是,向所述客户端返回查询结果,根据所述数据指纹,在所述指纹数据库中更新所述数据指纹的引用数;
若否,向所述客户端返回查询结果,获取所述客户端发送的针对所述数据指纹对应的数据块在所述数据文件中的存储位置,将所述存储位置以及所述数据指纹存储至所述指纹数据库中。
7.根据权利要求6所述的方法,其特征在于,还包括:
获取所述客户端发送的删除指令;所述删除指令包括待删除的数据的存储文件信息;
从对象存储中获取所述待删除的数据对应的索引文件,并从所述索引文件中获取所述待删除的数据中的待删除的数据块对应的待删除的数据指纹;
删除所述待删除的数据指纹对所述待删除的数据块的引用关系,并删除所述待删除的数据对应的索引文件;
还包括:
若任一所述待删除的数据块与所述待删除的数据指纹均不存在引用关系,获取所述待删除的数据块对应的目标数据文件,将所述目标数据文件中有效数据块的计数减一;
还包括:
若所述目标数据文件中有效数据块的计数为零,在所述目标数据文件对应的元数据中删除所述目标数据文件的信息。
8.根据权利要求7所述的方法,其特征在于,还包括:
获取所述数据文件中冗余数据占比大于预设值的待回收的数据文件;所述待回收的数据文件包括至少一个数据块;所述冗余数据占比表征所述数据文件中与任一所述数据指纹均不存在引用关系的数据块占所述数据文件中所有数据块的占比;
针对每个所述数据块,获取该数据块对应的数据指纹,根据所述数据指纹,判断所述数据指纹对应的引用数;所述引用数表征与所述数据指纹存在关联关系的数据块的数量;
若所述引用数不为零,确定所述数据块为有效数据块,将所述有效数据块写入新的数据文件,并根据所述有效数据块在所述新的数据文件中的存储位置,更新所述有效数据块对应的数据指纹,根据至少一个所述有效数据块,得到更新后的数据文件;
若所述引用数为零,确定所述数据块为冗余数据块,从所述冗余数据块对应的索引文件中删除所述冗余数据块对应的数据指纹,根据至少一个所述冗余数据块,得到回收后的数据文件;
将所述更新后的数据文件存储至所述对象存储中,并删除所述回收后的数据文件。
9.一种基于对象存储的数据存储装置,其特征在于,应用于客户端,所述装置包括:
发送模块,用于响应于针对待存储的数据的数据存储请求,向去重服务器发送数据文件请求;所述数据文件请求用于指示所述去重服务器根据所述待存储的数据生成对应的待存储的数据文件以及待存储的索引文件;所述数据包括至少一个数据块;所述待存储的数据文件用于存储所述待存储的数据;所述待存储的索引文件用于存储所述待存储的数据对应的数据指纹;
划分模块,用于根据预设分块策略,将所述待存储的数据分为至少一个数据块;
获取模块,用于针对每个所述数据块,获取该数据块对应的数据指纹,并将所述数据指纹发送至所述去重服务器;所述去重服务器用于查询所述数据指纹是否存在并返回查询结果;
判断模块,用于若查询结果为否,将所述数据指纹对应的数据块存储至所述数据文件,并将所述数据块在所述数据文件中的存储位置发送至所述去重服务器,否则将所述数据指纹写入所述索引文件;
存储模块,用于将所述数据文件和/或所述索引文件发送至对象存储中进行存储。
10.一种基于对象存储的数据存储装置,其特征在于,应用于去重服务器,所述装置包括:
生成模块,用于响应于客户端发送数据文件请求,生成对应的待存储的数据文件以及待存储的索引文件;
获取模块,用于获取所述客户端发送的针对所述至少一个数据块生成的数据指纹,并在指纹数据库中查询所述数据指纹是否存在;
第一确定模块,用于若是,向所述客户端返回查询结果,根据所述数据指纹,在指纹数据库中更新所述数据指纹的引用数;
第二确定模块,用于若否,向所述客户端返回查询结果,获取所述客户端发送的针对所述数据指纹对应的数据块在所述数据文件中的存储位置,将所述存储位置以及所述数据指纹存储至所述指纹数据库中。
11.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110280863.9A CN112817962B (zh) | 2021-03-16 | 2021-03-16 | 基于对象存储的数据存储方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110280863.9A CN112817962B (zh) | 2021-03-16 | 2021-03-16 | 基于对象存储的数据存储方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817962A true CN112817962A (zh) | 2021-05-18 |
CN112817962B CN112817962B (zh) | 2022-02-18 |
Family
ID=75863296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110280863.9A Active CN112817962B (zh) | 2021-03-16 | 2021-03-16 | 基于对象存储的数据存储方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817962B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114442931A (zh) * | 2021-12-23 | 2022-05-06 | 天翼云科技有限公司 | 一种数据重删方法及***、电子设备、存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129664B (zh) * | 2022-09-01 | 2022-11-29 | 湖南兴天电子科技股份有限公司 | 数据记录设备、数据文件管理方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160330530A1 (en) * | 2008-11-26 | 2016-11-10 | David Harrison | Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device |
CN106843773A (zh) * | 2017-02-16 | 2017-06-13 | 天津书生云科技有限公司 | 存储方法和分布式存储*** |
CN109445703A (zh) * | 2018-10-26 | 2019-03-08 | 黄淮学院 | 一种基于块级数据去重的Delta压缩存储组件 |
US10572348B2 (en) * | 2015-04-14 | 2020-02-25 | Commvault Systems, Inc. | Efficient deduplication database validation |
CN111522502A (zh) * | 2019-02-01 | 2020-08-11 | 阿里巴巴集团控股有限公司 | 数据去重方法、装置、电子设备及计算机可读存储介质 |
CN111966649A (zh) * | 2020-10-21 | 2020-11-20 | 中国人民解放军国防科技大学 | 一种高效去重的轻量级在线文件存储方法及装置 |
-
2021
- 2021-03-16 CN CN202110280863.9A patent/CN112817962B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160330530A1 (en) * | 2008-11-26 | 2016-11-10 | David Harrison | Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device |
US10572348B2 (en) * | 2015-04-14 | 2020-02-25 | Commvault Systems, Inc. | Efficient deduplication database validation |
CN106843773A (zh) * | 2017-02-16 | 2017-06-13 | 天津书生云科技有限公司 | 存储方法和分布式存储*** |
CN109445703A (zh) * | 2018-10-26 | 2019-03-08 | 黄淮学院 | 一种基于块级数据去重的Delta压缩存储组件 |
CN111522502A (zh) * | 2019-02-01 | 2020-08-11 | 阿里巴巴集团控股有限公司 | 数据去重方法、装置、电子设备及计算机可读存储介质 |
CN111966649A (zh) * | 2020-10-21 | 2020-11-20 | 中国人民解放军国防科技大学 | 一种高效去重的轻量级在线文件存储方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114442931A (zh) * | 2021-12-23 | 2022-05-06 | 天翼云科技有限公司 | 一种数据重删方法及***、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112817962B (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10635359B2 (en) | Managing cache compression in data storage systems | |
US11531482B2 (en) | Data deduplication method and apparatus | |
US9965394B2 (en) | Selective compression in data storage systems | |
US9317218B1 (en) | Memory efficient sanitization of a deduplicated storage system using a perfect hash function | |
US8751763B1 (en) | Low-overhead deduplication within a block-based data storage | |
US9430164B1 (en) | Memory efficient sanitization of a deduplicated storage system | |
US20170208052A1 (en) | Hybrid cloud file system and cloud based storage system having such file system therein | |
CN105190573A (zh) | 存储数据的减少冗余 | |
CN112817962B (zh) | 基于对象存储的数据存储方法、装置和计算机设备 | |
CN111198856B (zh) | 文件管理方法、装置、计算机设备和存储介质 | |
CN108415986B (zh) | 一种数据处理方法、装置、***、介质和计算设备 | |
CN111125033B (zh) | 一种基于全闪存阵列的空间回收方法及*** | |
US11409766B2 (en) | Container reclamation using probabilistic data structures | |
WO2020215580A1 (zh) | 一种分布式全局数据去重方法和装置 | |
CN113094372A (zh) | 数据存取方法、数据存取控制装置及数据存取*** | |
CN103197987A (zh) | 一种数据备份的方法、数据恢复的方法及*** | |
US11093453B1 (en) | System and method for asynchronous cleaning of data objects on cloud partition in a file system with deduplication | |
CN111158606B (zh) | 存储方法、装置、计算机设备和存储介质 | |
CN114936010B (zh) | 数据处理方法、装置、设备及介质 | |
US10423533B1 (en) | Filtered data cache eviction | |
CN115421648A (zh) | 内存垃圾回收方法、装置、设备、存储介质和程序产品 | |
CN116756137B (zh) | 大规模数据对象存储的重删方法、***及设备 | |
CN117149724B (zh) | 一种云环境***重复数据删除的方法及*** | |
US20230342293A1 (en) | Method and system for in-memory metadata reduction in cloud storage system | |
US10740015B2 (en) | Optimized management of file system metadata within solid state storage devices (SSDs) |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: Data storage method, device and computer equipment based on object storage Effective date of registration: 20221021 Granted publication date: 20220218 Pledgee: Industrial Bank Co.,Ltd. Guangzhou Development Zone sub branch Pledgor: Guangzhou Dingjia Computer Technology Co.,Ltd. Registration number: Y2022980018838 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |