Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DATA PROCESSING METHOD, SYSTEM AND CLIENT
Document Type and Number:
WIPO Patent Application WO/2015/042909
Kind Code:
A1
Abstract:
Embodiments of the present invention provide a data processing method, a system and a client. A target storage node is determined in a manner of comparing a second vector that receives data with a first vector that corresponds to all storage nodes and is pre-stored on a client that receives the data. The target storage node no longer needs to be determined in a manner of sampling some fingerprint values from the data that is received, sending them to all the storage nodes in a data processing system for query and waiting for feedback from the storage nodes, thus preventing multiple times of interaction between the client and the storage nodes, improving deduplication performance, reducing network bandwidth occupation and reducing a delay in a meanwhile.

Inventors:
HUANG YAN (CN)
Application Number:
PCT/CN2013/084597
Publication Date:
April 02, 2015
Filing Date:
September 29, 2013
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F17/30
Foreign References:
CN103177111A2013-06-26
CN102833298A2012-12-19
CN103189867A2013-07-03
Other References:
See also references of EP 3015999A4
Download PDF:
Claims:
权 利 要 求

1、 一种数据处理方法, 所述方法应用于数据处理系统, 所述数据处理系统 包括至少一个客户端和多个存储节点,每个所述客户端和所述数据处理系统中 的每个所述存储节点连接,其特征在于,每个所述存储节点对应一个第一向量, 每个所述客户端上存储有所述数据处理系统中所有存储节点对应的第一向量, 所述方法包括: 至少一个所述客户端接收数据, 将所述数据划分为多个数据分块, 获取每 个数据分块的第二指纹值; 得到所述接收的数据对应的第二向量, 所述第二向量代表所述接收数据的 特征; 将所述第二向量与所述接收数据的客户端上存储的每个第一向量相比较, 确定目标存储节点 ,将所述多个数据分块对应的第二指纹值发送到所述目标存 储节点进行重复数据查找或者将所述目标存储节点中存储的数据分块对应的 第一指纹值加载到所述接收数据的客户端上进行重复数据查找。 2、 根据权利要求 1所述的方法, 其特征在于, 还包括: 获得所述接收的数据中不重复数据分块, 将所述获得的不重复数据分块以 及所述不重复数据分块对应的第三指纹值存储到所述接收数据的客户端的緩 存中; 当所述接收数据的客户端的緩存中存储的不重复数据分块满足预设的存储 条件时,得到所述緩存中不重复数据分块的第三向量, 所述第三向量代表緩存 中所有不重复数据分块的特征; 将所述第三向量和所述接收数据的客户端上存储的每个第一向量相比较, 确定用于存储所述緩存中的不重复数据分块以及所述緩存中不重复数据分块 对应的第三指纹值的存储节点。

3、 根据权利要求 1所述的方法, 其特征在于, 还包括: 获得所述接收数据中的不重复数据分块, 将所述不重复数据分块存储到所 述目标存储节点。

4、 根据权利要求 1或 2或 3所述的方法, 其特征在于, 每个所述第二指纹值 的每一位上的数值为一个特征字, 所述得到对应所述接收数据对应的第二向 量, 包括: 分别从每个所述第二指纹值中提取 N个特征字, N大于等于 1的整数; 在所有所述提取的特征字中, 将在所述第二指纹值中所处位置相同的所述 特征字相加, 获取 N个数值, 所述 N个数值组成对应所述接收数据的第二向量。

5、 根据权利要求 1或 2或 3所述的方法, 其特征在于, 每个所述第二指纹值 的每一位上的数值为一个特征字, 所述获取对应所述接收数据对应的第二向 量, 包括: 分别从每个所述第二指纹值中 N个特征字, N大于等于 1的整数; 在所有所述提取的特征字中,首先将所述提取的特征字中数值为 0的特征字 转换为 -1 , 然后将在所述第二指纹值所处位置相同的所述特征字相加, 获得 N 个数值, 所述 N个数值组成对应所述接收数据的第二向量。 6、 根据权利要求 1或 2或 3所述方法, 其特征在于, 所述将所述第二向量与 所述接收数据的客户端上存储的每个第一向量相比较,确定目标存储节点, 包 括: 确定所述第二向量和所述第一向量在同一个多维空间中的位置, 在所述多 维空间中将所述第二向量与所述第一向量进行比较,确定与所述第二向量距离 最近的至少一个第一向量或者与所述第二向量夹角余弦值最小的至少一个第 一向量, 所述至少一个第一向量对应的存储节点为目标存储节点。

7、 根据权利要求 1-6任一权利要求所述的方法, 其特征在于, 还包括: 接 收所述存储节点发送的对应所述第一向量的更新消息,所述第一向量的更新消 息由所述存储节点每隔预定周期根据所述存储节点中存储的数据更新所述存 储节点对应的所述第一向量后生成的,所述第一向量代表所述存储节点中存储 数据的特征。

8、 一种客户端, 所述客户端存在于一个数据处理系统中, 所述数据处理系 统还包括多个存储节点,所述客户端和所述数据处理系统中的每个所述存储节 点连接, 其特征在于, 每个所述存储节点对应一个第一向量, 所述客户端上存 储有所述数据处理系统中所有存储节点对应的第一向量; 所述客户端包括: 接收单元, 用于接收数据, 将数据划分为多个数据分块, 获取每个数据分 块的第二指纹值; 第二向量获得单元, 用于得到所述接收的数据对应的第二向量, 所述第二 向量代表所述接收数据的特征; 处理单元, 用于将所述第二向量与所述客户端上存储的每个第一向量相比 较,确定目标存储节点,将所述多个数据分块对应的第二指纹值发送到所述目 标存储节点进行重复数据查找或者将所述目标存储节点中存储的数据分块对 应的第一指纹值加载到所述客户端上进行重复数据查找。 9、 根据权利要求 8所述的客户端, 其特征在于, 还包括: 存储单元, 用于获得所述接收的数据中不重复数据分块, 将所述获得的不 重复数据分块以及所述不重复数据分块对应的第三指纹值存储到所述客户端 的緩存中;当所述客户端的緩存中存储的不重复数据分块满足预设的存储条件 时,得到所述緩存中不重复数据分块的第三向量, 所述第三向量代表緩存中所 有不重复数据分块的特征;将所述第三向量和所述客户端上存储的每个第一向 量相比较 ,确定用于存储所述緩存中的不重复数据分块以及所述緩存中不重复 数据分块对应的第三指纹值的存储节点。

10、 根据权利要求 8所述的客户端, 其特征在于, 还包括: 存储单元, 用于获得所述接收数据中的不重复数据分块, 将所述不重复数 据分块存储到所述目标存储节点。

11、 根据权利要求 8-10任一所述的客户端, 其特征在于, 每个所述第二指 纹值的每一位上的数值为一个特征字, 所述第二向量获得单元具体用于: 分别从每个所述第二指纹值中提取 N个特征字, N大于等于 1的整数; 在所有所述提取的特征字中, 将在所述第二指纹值中所处位置相同的所述 特征字相加, 获取 N个数值, 所述 N个数值组成对应所述接收数据的第二向量。 12、 根据权利要求 8-10任一所述的客户端, 其特征在于, 每个所述第二指 纹值的每一位上的数值为一个特征字, 所述第二向量获得单元具体用于: 分别从每个所述第二指纹值中提取 N个特征字, N大于等于 1的整数; 在所有所述提取的特征字中,首先将所述提取的特征字中数值为 0的特征字 转换为 -1 , 然后将在所述第二指纹值所处位置相同的所述特征字相加, 获得 N 个数值, 所述 N个数值组成对应所述接收数据的第二向量。

13、 根据权利要求 8-10任一所述的客户端, 其特征在于, 所述处理单元具 体用于: 确定所述第二向量和所述第一向量在同一个多维空间中的位置,在所 述多维空间中将所述第二向量与所述第一向量进行比较,确定与所述第二向量 距离最近的至少一个第一向量或者与所述第二向量夹角余弦值最小的至少一 个第一向量, 所述至少一个第一向量对应的存储节点为目标存储节点。

14、 一种数据处理系统, 其特征在于, 所述数据处理系统包括多个存储节 点和权利要求 8-10任一所述客户端, 每个所述存储节点对应一个第一向量, 每 个所述客户端上存储有所述数据处理系统中每个存储节点对应的第一向量,每 个所述客户端和所述数据处理系统中的每个所述存储节点连接。

15、 一种客户端, 其特征在于, 包括处理器, 存储器, 通信接口, 总线; 所述处理器、通信接口、存储器通过所述总线相互的通信;所述通信接口, 用于接收和发送数据; 所述存储器用于存储程序;

所述处理器用于执行所述存储器中的所述程序, 执行如权利要求 1-7任一 所述的方法。

Description:
一种数据处理方法、 系统及客户端 技术领域

本发明实施例涉及存储技术,尤其涉及一种数 据处理方法、系统及客户端。 背景技术

重复数据删除也称为智能压缩或单一实例存储 ,是一种可自动搜索重复数 据,将相同数据只保留唯一的一个副本, 并使用指向单一副本的指针替换掉其 他重复副本, 以达到消除冗余数据、 降低存储容量需求的存储技术。

在现有技术中, 重复数据删除技术被大量应用于备份、虚拟桌 面等应用环 境。数据处理系统是由多个存储节点构成,每 个存储节点都有自己的重删处理 引擎和存储介质, 例如硬盘, 当需要将数据写入到某个文件时, 在緩存中将数 据进行分块得到多个数据分块,计算出每个数 据分块的指纹值,将每个数据分 块的指纹中抽样出一部分指纹值发送到数据处 理系统中的所有物理节点中去 查询; 从查询结果中获取重复指纹值最多的目标物理 节点, 然后将抽样出的元 数据信息对应的数据分组中的所有数据分块信 息发送到所述目标物理节点进 行重复数据查询。

发明人通过研究发现, 现有技术的集群重删技术中, 需要将抽样的指纹 值发送到所有物理节点上去查询, 导致在重删过程中, 物理节点间交互次数太 多,当数据处理系统中的物理节点较多的情况 下,每个物理节点在执行重删时, 计算量会随着数据处理系统中物理节点的增加 而增加, 导致系统重删性能下 发明内容

本发明实施例提供一种数据处理方法、 系统及客户端, 提高重删性能。 第一方面, 本发明实施例提供一种数据处理方法, 所述方法应用于数据处 理系统, 所述数据处理系统包括至少一个客户端和多个 存储节点,每个所述客 户端和所述数据处理系统中的每个所述存储节 点连接,每个所述存储节点对应 一个第一向量,每个所述客户端上存储有所述 数据处理系统中所有存储节点对 应的第一向量, 所述方法包括: 至少一个所述客户端接收数据, 将所述数据划分为多个数据分块, 获取每 个数据分块的第二指纹值; 得到所述接收的数据对应的第二向量, 所述第二向量代表所述接收数据的 特征;

将所述第二向量与所述接收数据的客户端上存 储的每个第一向量相比较, 确定目标存储节点,将所述多个数据分块对应 的第二指纹值发送到所述目标存 储节点进行重复数据查找或者将所述目标存储 节点中存储的数据分块对应的 第一指纹值加载到所述接收数据的客户端上进 行重复数据查找。 结合第一方面, 本发明实施例提供了第一可能方式中, 还包括: 获得所述接收的数据中不重复数据分块, 将所述获得的不重复数据分块以 及所述不重复数据分块对应的第三指纹值存储 到所述接收数据的客户端的緩 存中; 当所述接收数据的客户端的緩存中存储的不重 复数据分块满足预设的存储 条件时,得到所述緩存中不重复数据分块的第 三向量, 所述第三向量代表緩存 中所有不重复数据分块的特征;

将所述第三向量和所述接收数据的客户端上存 储的每个第一向量相比较, 确定用于存储所述緩存中的不重复数据分块以 及所述緩存中不重复数据分块 对应的第三指纹值的存储节点。 结合第一方面的第一种可能方式,本发明实施 例提供的第二种可能方式中, 每个所述第二指纹值的每一位上的数值为一个 特征字,所述得到对应所述接收 数据对应的第二向量, 包括: 分别从每个所述第二指纹值中提取 N个特征字, N大于等于 1的整数; 在所有所述提取的特征字中,将在所述第二指 纹值中所处位置相同的所述 特征字相加, 获取 N个数值, 所述 N个数值组成对应所述接收数据的第二向量。 结合第一方面的第一种可能方式,本发明实施 例提供的第三种可能方式中, 所述将所述第二向量与所述接收数据的客户端 上存储的每个第一向量相比较, 确定目标存储节点, 包括:

确定所述第二向量和所述第一向量在同一个多 维空间中的位置,在所述多 维空间中将所述第二向量与所述第一向量进行 比较,确定与所述第二向量距离 最近的至少一个第一向量或者与所述第二向量 夹角余弦值最小的至少一个第 一向量, 所述至少一个第一向量对应的存储节点为目标 存储节点。 第二方面, 本发明实施例提供一种客户端, 所述客户端存在于一个数据处 理系统中, 所述数据处理系统还包括多个存储节点, 所述客户端和所述数据处 理系统中的每个所述存储节点连接,每个所述 存储节点对应一个第一向量, 所 述客户端上存储有所述数据处理系统中所有存 储节点对应的第一向量; 所述客户端包括: 接收单元, 用于接收数据, 将数据划分为多个数据分块, 获取每个数据分 块的第二指纹值; 第二向量获得单元, 用于得到所述接收的数据对应的第二向量, 所述第二 向量代表所述接收数据的特征;

处理单元,用于将所述第二向量与所述客户端 上存储的每个第一向量相比 较,确定目标存储节点,将所述多个数据分块 对应的第二指纹值发送到所述目 标存储节点进行重复数据查找或者将所述目标 存储节点中存储的数据分块对 应的第一指纹值加载到所述客户端上进行重复 数据查找。

结合第二方面, 本发明实施例提供了第一种可能的实施方式, 所述客户端 还包括:

存储单元, 用于获得所述接收的数据中不重复数据分块, 将所述获得的不 重复数据分块以及所述不重复数据分块对应的 第三指纹值存储到所述客户端 的緩存中;当所述客户端的緩存中存储的不重 复数据分块满足预设的存储条件 时,得到所述緩存中不重复数据分块的第三向 量, 所述第三向量代表緩存中所 有不重复数据分块的特征;将所述第三向量和 所述客户端上存储的每个第一向 量相比较,确定用于存储所述緩存中的不重复 数据分块以及所述緩存中不重复 数据分块对应的第三指纹值的存储节点。 结合第二方面以及第二方面的第一种可能方式 , 本发明实施例提供了第二 种可能方式,每个所述第二指纹值的每一位上 的数值为一个特征字, 所述第二 向量获得单元具体用于: 分别从每个所述第二指纹值中提取 N个特征字, N大于等于 1的整数; 在所有所述提取的特征字中,将在所述第二指 纹值中所处位置相同的所述 特征字相加, 获取 N个数值, 所述 N个数值组成对应所述接收数据的第二向量。

结合第二方面以及第二方面所提供的第一种可 能方式,本发明实施例提供 第三种可能方式, 所述处理单元具体用于: 确定所述第二向量和所述第一向量 在同一个多维空间中的位置,在所述多维空间 中将所述第二向量与所述第一向 量进行比较,确定与所述第二向量距离最近的 至少一个第一向量或者与所述第 二向量夹角余弦值最小的至少一个第一向量, 所述至少一个第一向量对应的存 储节点为目标存储节点。

第三方面, 本发明实施例提供了一种数据处理系统, 所述数据处理系统包 括多个存储节点和前面所述客户端,每个所述 存储节点对应一个第一向量,每 个所述客户端上存储有所述数据处理系统中每 个存储节点对应的第一向量,每 个所述客户端和所述数据处理系统中的每个所 述存储节点连接。

第四方面, 本发明实施例还提供一种客户端, 包括处理器, 存储器, 通信 接口, 总线;

所述处理器、通信接口、存储器通过所述总线 相互的通信;所述通信接口, 用于接收和发送数据; 所述存储器用于存储程序;

所述处理器用于执行所述存储器中的所述程序 , 执行如前面所述第一 方面中任一所述的方法。 本发明实施例通过接收数据的第二向量和接收 数据的客户端上预先存储 有所有存储节点对应的第一向量进行比较的方 式来确定目标存储节点,而不再 需要从接收的数据中抽样出一部分指纹值发送 到数据处理系统中所有存储节 点上去查询的方式以及等待存储节点的反馈来 确定目标存储节点,从而避免了 客户端与存储节点之间的多次交互,提高了重 删性能, 而且减少网络带宽占用 的同时, 降低了时延。 附图说明

为了更清楚地说明本发明实施例或现有技术中 的技术方案,下面将对实施 例或现有技术描述中所需要使用的附图作一简 单地介绍, 显而易见地, 下面描 述中的附图是本发明的一些实施例,对于本领 域普通技术人员来讲,在不付出 创造性劳动性的前提下, 还可以根据这些附图获得其他的附图。

图 1-A为本发明实施例提供的数据处理系统的架构 示意图;

图 1 -B为本发明实施例提供的另一种数据处理系统 架构示意图; 图 2-A为本发明实施例所提供的一种数据处理系统 中数据处理方法的流程 图;

图 2-B为本发明实施例所提供的另一种数据处理系 统中数据处理方法的流 程图;

图 3为本发明实施例提供给的第二向量计算方法 意图;

图 4为本发明实施例提供的第二向量和第一向量 行比较的示意图; 图 5为本发明实施例所提供客户端的结构示意图

图 6为本发明实施例提供的客户端的结构示意图 具体实施方式

为使本发明实施例的目的、技术方案和优点更 加清楚, 下面将结合本发明 实施例中的附图,对本发明实施例中的技术方 案进行清楚、完整地描述,显然, 所描述的实施例是本发明一部分实施例, 而不是全部的实施例。基于本发明中 的实施例 ,本领域普通技术人员在没有作出创造性劳动 提下所获得的所有其 他实施例, 都属于本发明保护的范围。

本发明实施例提供一种数据处理系统,数据处 理系统包括至少一个客户端 和多个存储节点,客户端和存储节点的部署方 式可以有多种。本发明实施例提 供两种部署方式, 例如, 如图 1-A所示, 方式一: 每个客户端通过网络与存储 节点连接,数据处理系统中每个存储节点对应 一个第一向量,每个客户端中存 储有数据处理系统中所有存储节点对应的第一 向量,客户端可以作为一个软件 或硬件设备部署在用户侧。 由存储节点组成的系统可以称为集群存储系统 , 由 存储节点和客户端组成的系统可以称为数据处 理系统。

或者, 方式二, 如图 1-B所示, 客户端可以是作为硬件装置集成在存储节 点上,也可以作为软件功能模块部署在存储节 点上。 集成了客户端的集群存储 系统, 也可以称为数据处理系统。 客户端接收用户发来的数据后进行处理。 本 发明实施例中提供的一种数据处理系统 10包括至少一个客户端 101,102, ,10η,以及多个存储节点 111, 112, , 11η; 每个客户端通过接口 接收用户发来的数据, 所述接口可以是标准协议接口, 例如网络文件系统 ( Network File System, NFS )协议接口; 其中, 每个存储节点对应一个第一 向量, 所述第一向量代表对应存储节点中所存储数据 的特征。 在本实施例中, 每个客户端上存储有数据处理系统中所有存储 节点对应的第一向量,为描述方 便, 将数据处理系统中存储节点中存储的数据对应 的指纹值称为第一指纹值, 所述每个客户端和数据处理系统中的每个存储 节点连接,例如网络连接或其他 方式的连接。

数据处理系统中每个存储节点上存储有数据分 块,以及每个数据分块对应 的指故值。

其中, 每一个存储节点对应的第一向量可以是在初始 化时进行人为设定, 可以将每个存储节点对应的第一向量均勾地分 布在多维空间中 ,但具体如何分 配用户可以在初始化时根据实际情况确定, 本发明实施例不做限定。

在具体应用中 ,数据处理系统中的客户端可以是作为一个单 的实体独立 于存储节点,也可以将客户端作为一个软件模 块部署到存储节点中,也可以部 署在其他硬件上, 通过网络和数据处理系统中的存储节点相连。

图 2-A和图 2-B为本发明实施例提供的一种数据处理系统中 数据处理方法 的流程图, 以所述数据处理系统中一个客户端(以下称为 "第一客户端" )为 执行主体为例, 如图 2A和 2B所示, 本发明实施例的方法可以包括:

步骤 201 : 接收数据, 将数据划分为多个数据分块, 获取每个数据分块的 指纹值, 划分得到的所述数据分块对应的指纹值为第二 指纹值;

其中, 为了从描述上区别于存储节点中存储的数据对 应的第一指纹值,将 根据所述客户端接收的数据得到的指纹值称为 第二指纹值;并以数据处理系统 中第一客户端为例来描述本发明实施例的执行 过程;所述数据分块对应的第二 指纹值代表了对应数据分块的特征; 获取第二指纹的方法现有技术中有多种, 例如, 通过计算数据分块的哈希值, 将哈希值作为对应数据分块的指纹值。 步骤 202: 得到所述接收的数据对应的第二向量, 所述第二向量代表所述 接收的数据的特征;

其中, 每个所述第二指纹值中每一位上的数值为一个 特征字, 获取所述接 收的数据的第二向量, 可以通过以下方法:

分别从每个第二指纹值中提取 N个特征字, N可以是大于等于 1的整数; 在 所有提取的特征字中, 将在所述第二指纹值所处位置相同的所述特征 字相加, 获得 N个数值, 所述 N个数值组成 N维数组形成对应所述接收数据的第二向量。

此外,仍然将每个所述第二指纹值中每一位上 的数值为一个特征字, 获取 所述接收的数据的第二向量,还可以通过以下 方式来获取所述接收数据对应的 第二向量:

分别从每个第二指纹值中提取 N个特征字, N个特征字可以是大于等于 1的 整数; 在所有提取的特征字中, 首先将所述提取的特征字中数值为 0的特征字 转换为 -1 , 然后将在所述第二指纹值所处位置相同的所述 特征字相加, 获得 N 个数值, 所述 N个数值组成 N维数组形成对应所述接收数据的第二向量。 户可以根据实际情况和需要选择, 例如: 如果每个第二指纹值为 160位的情况 下, 可以提取第二指纹值的最低 64位上的 64个特征字, 也可以是高位上的 64 个特征字, 也可以是提取第二指纹中 160位特征字。

步骤 203: 将所述第二向量与所述第一客户端上存储的每 个第一向量相比 较,确定目标存储节点,将所述多个数据分块 对应的第二指纹值发送到所述目 标存储节点进行重复数据查找或者将所述目标 存储节点中存储的数据分块对 应的第一指纹值加载到所述第一客户端上进行 重复数据查找; 需要说明的是, 获取所述接收的数据的第二向量, 可以获取一个或多个, 如果将所述接收的数据划分为几个部分,针对 每一个部分的数据获取一个第二 向量, 多个部分就可能得到多个第二向量, 当获取多个第二向量时, 针对每一 个第二向量的具体实施方式和一个第二向量的 具体操作相同,只是在确定目标 存储节点时, 多个第二向量会确定多个目标存储节点,每个 第二向量对应一个 目标存储节点, 步骤 203中, 所述将所述多个数据分块对应的第二指纹值发 送 到所述目标存储节点进行重复数据查找, 就相应地为: 将第二向量对应部分数 据的第二指纹发送到对应的目标存储节点进行 重复数据查找。

其中, 步骤 203中将所述第二向量与所述第一向量进行比较 的方法, 可以 是: 方法一: 确定所述第二向量和所述第一向量在同一个多 维空间中的位置, 在多维空间中将所述第二向量与所述第一向量 进行比较,确定与所述第二向量 距离最近的至少一个第一向量, 所对应的存储节点为目标存储节点, 或, 方法 二: 确定所述第二向量和所述第一向量在多维空间 中的位置,将所述第二向量 与所述第一向量进行比较,确定与所述第二向 量夹角余弦值最小的至少一个第 一向量对应的存储节点为目标存储节点;

其中, 与所述第二向量距离最近的第一向量, 可以确定一个, 也可以确定 多个, 需要用户根据实际情况预先设定需要确定的数 量, 例如, 确定与所述第 二向量距离最近的 2个第一向量,这 2个第一向量分别对应的存储节点为目标存 储节点。

本发明实施例中的所述第二向量和所述第一向 量的维度可以是相同,也可 以是不同, 如果不同的情况下, 需要通过补零的方式将维度补齐使得所述第一 向量和所述第二向量在同一个多维空间中可以 确定所在的位置,两个向量可以 进行比较。

为了提高第一向量反应对应存储节点中存储数 据的特征的准确度,本实施 例的方法中, 还可以包括:

存储节点每隔预定周期根据所述存储节点中存 储的数据,更新所述存储节 点对应的所述第一向量, 所述第一向量代表所述存储节点中存储数据的 特征, 将更新后的所述存储节点对应的所述第一向量 通知所述客户端;客户端会接收 到存储节点发送的对应第一向量的更新消息。

具体的更新方式, 和计算接收数据的第二向量的方法可以相同。

本发明实施例通过获取接收到的数据对应的第 二向量,将第二向量和接收 到数据的客户端上存储的数据处理系统中所有 的存储节点对应的第一向量进 行比较,通过向量的比较方式来确定目标存储 节点,认为目标存储节点上存储 的数据和所述接收的数据之间相似度相对较高 ,将目标存储节点中的数据作为 和接收的数据进行比较的对象, 因此, 目标存储节点也被称为相似存储节点。 本发明实施例中, 第二向量反映了接收数据的特征, 一个第一向量对应一个存 储节点可以用于反映了对应存储节点存储数据 的特征,在多维空间中,通过第 二向量和第一向量的比较,也就是接收数据的 特征和存储节点上已经存储数据 的特征进行比较, 因此, 可以得到与接收的数据特征最接近的第一向量 对应的 存储节点, 并将该存储节点作为相似存储节点。

本发明实施例通过接收数据的第二向量和所有 存储节点对应的第一向量 进行比较的方式来确定目标存储节点,而不再 需要从接收的数据中抽样出一部 分指纹值发送到数据处理系统中所有存储节点 上去查询的方式来确定目标存 储节点, 从而避免了客户端与存储节点之间的多次交互 , 提高了重删性能, 而 且减少网络带宽占用的同时, 降低了时延。

本发明实施例中, 获取接收到的数据对应的第二向量, 第二向量代表了接 收到的数据作为一个整体的特征,而每个存储 节点在初始化时预设了对应的第 一向量,在经过重复数据查找后, 获得需要存储到数据处理系统中的不重复数 据分块, 对不重复数据分块如何存储, 本发明实施例提供了两种方式, 参见图 2-A, 方式 A:

计算需要存储的不重复数据分块的对应的向量 ,然后根据和存储节点对应 的第一向量进行比较, 确定存储不重复数据的第二目标存储节点, 因此, 本发 明实施例还可以包括:

步骤 204A: 获得所述接收的数据中不重复数据分块, 将所述获得的不重 复数据分块以及所述不重复数据分块对应的第 三指纹值存储到所述第一客户 端的緩存中;

步骤 205A: 当所述第一客户端的緩存中存储的不重复数据 分块满足预设 的存储条件时, 获取所述緩存中不重复数据分块的第三向量, 所述第三向量代 表緩存中所有不重复数据分块的特征;

步骤 206 A: 将所述第三向量和所述第一客户端上存储的每 个第一向量相 比较,确定用于存储所述緩存中的不重复数据 分块以及所述緩存中不重复数据 分块对应的第三指纹的存储节点。

其中,确定用于存储所述緩存中的不重复数据 分块以及所述緩存中不重复 数据分块对应的第三指纹的存储节点的方法, 和确定前面所述的目标地节点的 方法才目同。

值得说明的是,对緩存中不重复数据分块的第 三向量, 可以获取一个也可 以获取多个, 但获取一个时, 将緩存中的所有不重复数据对应一个第三向量 ; 也可以是将緩存中不重复数据分块划分为多个 部分,每一个部分确定一个对应 的一个第三向量;每一个部分按照本发明实施 例提供的方法分别确定用于存储 数据分块的对应存储节点。

其中,预设的存储条件可以是緩存中存储的数 据达到在硬盘中预置的一个 存储条带的大小, 或者在硬盘中的一个存储单元的大小等, 本发明实施例对预 设的存储条件不做限定。

本发明实施例中,初始化时为每一个存储节点 分配了对应的第一向量, 因 为第一向量需要反映对应存储节点上所存储数 据的特征, 因此,通过获取反映 不重复数据特征的第三向量,将第三向量和所 有第一向量相比较,确定用于存 储不重复数据的存储节点。

参见图 2-B, 方式 B: 因为客户端在某一次接收的数据, 其数据本身之间 通常会有连续性, 因此数据本身的相似度较高, 因此, 可以将在某一次接收的 数据中查找到的不重复的数据, 直接存储到进行重复数据查找的目标存储节 点, 因此, 本发明实施例还可以包括:

步骤 204B, 获得所述接收数据中的不重复数据分块, 将所述不重复数据 分块存储到所述目标存储节点。

其中, 方式 A和方式 B中, 接收到目标存储节点返回的在第二指纹值中查 找到的不重复的指纹值,不重复指纹值对应的 数据分块就被认为是不重复数据 分块, 因此最终获得所述接收数据中不重复数据分块 。

下面结合具体实现方式的举例,对本实施例的 中如何获得第二向量以及目 标存储节点进行举例说明。对接收的数据进行 分块之后,从数据分块对应的第 二指纹值中提取最低 64位的特征字, 参见图 3 , 将从每个第二指纹值提取的特 征字中,在第二指纹值中所处位置相同的所述 特征字相加,指纹 FW1中第一位 特征字和 FW2至 FWn中第一位特征字相加, 得到数值 A01 , 指纹值 FW1中的第 二位特征字和 FW2至 FWn中第二位特征字相加, 得到数值 A02, 依次计算, 得 到 64个数值 A03 , A04 , A64, 将获得的 64个数值, 将 64个数值组成一个

64维的数组形成对应所述接收数据的第二特 向量 A; 参见图 4, 在一个 64维 空间中确定第二特征向量 A的位置, 计算第二特征向量 A和存储节点对应的第 一向量之间的距离, 两个多维空间向量之间的距离的计算方法可以 是: dtsli

其中, X, Y表示两个向量, i=l,2……, n;确定巨离最小的 第一向量 B或者与第一向量 A夹角余弦值最小的第一向量 B, 第一向量 B所对应 的存储节点就确定为目标存储节点。

本发明实施例提供的本发明实施例通过接收数 据的第二向量和接收数据 的客户端上预先存储所有存储节点对应的第一 向量进行比较的方式来确定目 标存储节点,而不再需要从接收的数据中抽样 出一部分指纹值发送到数据处理 系统中所有存储节点上去查询的方式以及等待 存储节点的反馈来确定目标存 储节点, 从而避免了客户端与存储节点之间的多次交互 , 提高了重删性能, 而 且减少网络带宽占用的同时, 降低了时延。 参见图 5,本发明实施例提供一种用于执行上述实施例 描述的数据处理方 法的客户端, 所述客户端存在于一个数据处理系统中, 所述数据处理系统包括 至少一个客户端和多个存储节点,每个所述存 储节点对应一个第一向量,每个 所述客户端上存储有所述数据处理系统中所有 存储节点对应的第一向量,所述 存储节点中存储的数据对应的指紋值为第一指 紋值,每个所述客户端和所述数 据处理系统中的每个所述存储节点连接;

所述客户端包括:

接收单元 501 , 用于接收数据, 将数据划分为多个数据分块, 获取每个数 据分块的第二指纹值; 第二向量获得单元 502,用于得到所述接收的数据对应的第二向量 所述第 二向量代表所述接收数据的特征;

处理单元 503 , 用于将所述第二向量与所述客户端上存储的每 个第一向量 相比较,确定目标存储节点, 将所述多个数据分块对应的第二指纹值发送到 所 述目标存储节点进行重复数据查找或者将所述 目标存储节点中存储的数据分 块对应的第一指纹值加载到所述第一客户端上 进行重复数据查找。

所述客户端还可以包括:

存储单元 504, 用于获得所述接收的数据中不重复数据分块, 将所述获得 的不重复数据分块以及所述不重复数据分块对 应的第三指纹值存储到所述客 户端的緩存中;当所述客户端的緩存中存储的 不重复数据分块满足预设的存储 条件时, 获取所述緩存中不重复数据分块的第三向量, 所述第三向量代表緩存 中所有不重复数据分块的特征;将所述第三向 量和所述客户端上存储的每个第 一向量相比较,确定用于存储所述緩存中的不 重复数据分块以及所述緩存中不 重复数据分块对应的第三指纹值的存储节点。

本发明实施例还提供了另一种客户端, 其结构和上述客户端相同, 所不同 的是, 所述存储单元 504的功能有所不同, 所述存储单元 504, 用于获得所述接 收数据中的不重复数据分块, 将所述不重复数据分块存储到所述目标存储节 点。

其中, 所述处理单元 503具体用于确定所述第二向量和所述第一向量 在同 一个多维空间中的位置,在所述多维空间中将 所述第二向量与所述第一向量进 行比较,确定与所述第二向量距离最近的至少 一个第一向量或者与所述第二向 量夹角余弦值最小的至少一个第一向量,所述 至少一个第一向量对应的存储节 点为目标存储节点。

本发明实施例所提供的客户端,其详细的工作 原理和前述方法实施例相同, 在这里仅对客户端的结构做描述, 详细描述可参考前述方法实施例中的描述。

本发明实施例还提供一种数据处理系统, 参见附图 1-A和 1-B, 所述数据处 理系统包括多个存储节点和前面实施例所述客 户端,每个所述存储节点对应一 个第一向量,每个所述客户端上存储有所述数 据处理系统中所有存储节点对应 的第一向量, 所述存储节点中存储的数据对应的指故值为第 一指故值,每个所 述客户端和所述数据处理系统中的每个所述存 储节点连接。

参见图 6, 本发明实施例还提供一种客户端 600, 包括处理器 61 , 存储器 62, 通信接口 63 , 通信总线 64;

所述处理器 61、 通信接口 63、 存储器 62通过所述通信总线 64相互的通信; 所述通信接口, 用于接收和发送数据;

所述存储器用于存储程序; 存储器 62可能包含高速 RAM存储器, 也可 能还包括非易失性存储器( non-volatile memory ) , 例如至少一个磁盘存储 器;

所述处理器 61用于执行所述存储器中的所述程序,执行如 述方法实施 例所提供的方法。 本发明实施例提供的实施例通过接收数据的第 二向量和接收数据的客户 端上预先存储所有存储节点对应的第一向量进 行比较的方式来确定目标存储 节点,而不再需要从接收的数据中抽样出一部 分指纹值发送到数据处理系统中 所有存储节点上去查询的方式以及等待存储节 点的反馈来确定目标存储节点, 从而避免了客户端与存储节点之间的多次交互 ,提高了重删性能, 减少网络带 宽占用的同时, 降氐了时延。

在本申请所提供的几个实施例中, 应该理解到, 所揭露的系统、 装置和 方法, 可以通过其它的方式实现。 例如, 以上所描述的装置实施例仅仅是 示意性的, 例如, 所述单元的划分, 仅仅为一种逻辑功能划分, 实际实现 时可以有另外的划分方式, 例如多个单元或组件可以结合或者可以集成到 另一个系统, 或一些特征可以忽略, 或不执行。 另一点, 所显示或讨论的 相互之间的耦合或直接耦合或通信连接可以是 通过一些通信接口, 装置或 单元的间接耦合或通信连接, 可以是电性, 机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可 以不是物理上分开的,作 为单元显示的部件可以是或者也可以不是物理 单元, 即可以位于一个地方, 或者也可以分布到多个网络单元上。 可以根据实际的需要选择其中的部分 或者全部单元来实现本实施例方案的目的。

另外, 在本发明各个实施例中的各功能单元可以集成 在一个处理单元 中, 也可以是各个单元单独物理存在, 也可以两个或两个以上单元集成在 一个单元中。

所述功能如果以软件功能单元的形式实现并作 为独立的产品销售或使 用时, 可以存储在一个计算机可读取存储介质中。 基于这样的理解, 本发 明的技术方案本质上或者说对现有技术做出贡 献的部分或者该技术方案的 部分可以以软件产品的形式体现出来, 该计算机软件产品存储在一个存储 介质中, 包括若干指令用以使得一台计算机设备(可以 是个人计算机, 服 务器, 或者网络设备等)执行本发明各个实施例所述 方法的全部或部分步 骤。而前述的存储介质包括: U盘、移动硬盘、只读存储器(ROM, Read-Only Memory ) 、 随机存取存储器 (RAM, Random Access Memory ) 、 磁碟或 者光盘等各种可以存储程序代码的介质。

以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限于 此, 任何熟悉本技术领域的技术人员在本发明揭露 的技术范围内, 可轻易 想到变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本发明的保 护范围应所述以权利要求的保护范围为准。