基于数据指纹整合的去重的制作方法

文档序号:30434967发布日期:2022-06-15 19:51阅读:132来源:国知局
基于数据指纹整合的去重1.相关申请交叉引用2.本技术要求于2019年7月30日递交的申请号为62/880,486的美国临时专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
:3.本发明涉及用于改进数据存储空间管理的数据归约技术,包括基于数据指纹(如与所述相同数据的多个副本相关联的指纹)整合的数据去重技术。
背景技术
::4.随着各行各业数字处理技术的进步,计算设备将生成更多数据,并且将消耗更多功率来处理增加的数据量。为了应对数据增加导致的运营成本增加,存储设备供应商增加了相应的数据归约方法,如去重和压缩技术,以缩减存储的实际数据,从而降低运营成本。5.去重是一种节省数据存储空间的技术。存储系统中存储的重复数据占用大量硬盘空间,使用了更多处理资源。通过采用去重技术,只存储一份重复数据副本,从而提高存储系统的效率。压缩是一种使用特定编码机制表示数据或源代码的技术。与未编码的数据比特(或其它信息)相比,所述特定编码机制减小了存储容量。6.去重和压缩可以在在线模式和后处理模式这两种模式下执行。在在线模式下,执行去重和压缩以实时处理用户数据,然后将数据写入存储设备,从而减少磁盘写入次数。在后处理模式下,首先将用户数据写入存储设备,在系统空闲时从系统中读取数据,并执行去重和压缩。7.然而,现有去重和压缩技术具有增加内存消耗和处理时延等缺点。更具体地,在线去重对数据进行实时处理,从而缩短处理时延并提高内存资源使用率。此外,后处理模式去重增加了读写操作次数,从而导致读写放大率提高。技术实现要素:8.现描述各种示例从而以简化的形式引入概念的选择,这些概念将在以下具体实施方式中进行进一步的描述。本
发明内容的目的不在于识别权利要求书保护的主题的关键特征或必要特征,也不在于限制权利要求书保护的主题的范围。9.根据本发明的第一方面,提供了一种用于在通信网络中执行数据去重的计算机实现的方法。所述方法包括将密码哈希函数应用于数据,以生成所述数据的指纹。将地址映射表项存储在第一表中。所述地址映射表项将分配给所述数据的逻辑单元号(logicalunitnumber,lun)的逻辑块地址(logicalblockaddress,lba)映射到持久存储所述数据的存储位置的物理块地址(pba)。将所述指纹作为键同时将所述数据的位置令牌作为值存储在第二表中的键值项中。所述位置令牌包括所述存储位置的所述lba和所述pba。为响应检测到所述第二表中的附加键值项包括所述指纹,修改所述第二表中的所述键值项中的所述值,以包括所述附加键值项中的附加位置令牌。所述附加位置令牌与持久存储所述数据的第二存储位置的第二lba和第二pba相关联。将所述第一表中的第二地址映射表项中的所述第二lba从所述第二pba重映射到所述指纹。10.根据所述第一方面,在所述方法的第一种实现方式中,基于检测到所述第二表中的所述附加键值项包括所述指纹,使用所述lba从所述存储位置检索所述数据。将所述指纹作为键同时将所述检索数据作为值存储在第三表中的键值项中。11.根据所述第一方面或所述第一方面的上述任一种实现方式,在所述方法的第二种实现方式中,所述第三表是指纹表。向所述通信网络中的多个网络节点发送指纹清除请求。为响应所述指纹清除请求,从所述多个网络节点接收当前使用的指纹。基于所述当前使用的指纹并基于存储在所述指纹表以及与所述多个网络节点中的每个网络节点相关联的指纹表中的指纹列表,生成过时指纹列表。所述当前使用的指纹是在发送所述指纹清除请求之前由所述多个网络节点使用的指纹。12.根据所述第一方面或所述第一方面的上述任一种实现方式,在所述方法的第三种实现方式中,为响应所述指纹清除请求,从所述多个网络节点接收新引用的指纹。所述新引用的指纹是在发送所述指纹清除请求之后由所述多个网络节点使用的指纹。13.根据所述第一方面或所述第一方面的上述任一种实现方式,在所述方法的第四种实现方式中,所述当前使用的指纹和所述新引用的指纹基于所述多个网络节点中的每个网络节点的成员身份检查数据结构生成。14.根据所述第一方面或所述第一方面的上述任一种实现方式,在所述方法的第五种实现方式中,基于所述过时指纹和所述新引用的指纹列表,生成待删除(to-be-deleted,tbd)指纹列表。基于所述tbd指纹列表,更新所述指纹表。15.根据所述第一方面或所述第一方面的上述任一种实现方式,在所述方法的第六种实现方式中,所述方法还包括验证所述第二lba映射到所述第二pba,并验证所述第二存储位置的所述第二pba与所述数据相关联。所述验证成功后,重映射所述第一表中的所述第二lba,以映射到所述指纹。16.根据所述第一方面或所述第一方面的上述任一种实现方式,在所述方法的第七种实现方式中,扫描(或读取)所述第一表中的多个地址映射表项。所述多个地址映射表项包括所述第二地址映射表项,所述第二地址映射表项包括所述第二lba和所述第二pba。基于在所述扫描期间检测到所述第二lba未映射到所述第二pba,对持久存储在所述第二存储位置中的所述数据执行垃圾回收。17.根据所述第一方面或所述第一方面的上述任一种实现方式,在所述方法的第八种实现方式中,所述lba位于地址空间的多个逻辑地址分片中的一个逻辑地址分片内。所述地址空间在所述通信网络中的多个网络节点之间分配。所述方法还包括将所述密码哈希函数应用于所述lba和所述lun的标识(identification,id),以确定第一哈希。基于所述第一哈希,选择所述多个网络节点中的第一网络节点,所述第一网络节点存储所述第一表。18.根据所述第一方面或所述第一方面的上述任一种实现方式,在所述方法的第九种实现方式中,将所述密码哈希函数应用于所述指纹,以确定第二哈希。基于所述第二哈希,选择所述多个网络节点中的第二网络节点,所述第二网络节点存储所述第二表。19.根据本发明的第二方面,提供了一种用于在通信网络中执行数据去重的系统,所述系统包括:存储器,用于存储指令;与所述存储器通信的一个或多个处理器。所述一个或多个处理器执行所述指令,将密码哈希函数应用于数据,以生成所述数据的指纹。将地址映射表项存储在第一表中。所述地址映射表项将分配给所述数据的逻辑单元号(logicalunitnumber,lun)的逻辑块地址(logicalblockaddress,lba)映射到持久存储所述数据的存储位置的物理块地址(pba)。将所述指纹作为键同时将所述数据的位置令牌作为值存储在第二表中的键值项中。所述位置令牌包括所述存储位置的所述lba和所述pba。为响应检测到所述第二表中的附加键值项包括所述指纹,修改所述第二表中的所述键值项中的所述值,以包括所述附加键值项中的附加位置令牌。所述附加位置令牌与持久存储所述数据的第二存储位置的第二lba和第二pba相关联。将所述第一表中的第二地址映射表项中的所述第二lba从所述第二pba重映射到所述指纹。20.根据所述第二方面,在所述系统的第一种实现方式中,基于检测到所述第二表中的所述附加键值项包括所述指纹,使用所述lba从所述存储位置检索所述数据。21.根据所述第二方面或所述第二方面的上述任一种实现方式,在所述系统的第二种实现方式中,将所述指纹作为键同时将所述检索数据作为值存储在第三表中的键值项中。22.根据所述第二方面或所述第二方面的上述任一种实现方式,在所述系统的第三种实现方式中,验证所述第二lba映射到所述第二pba,并验证所述第二存储位置的所述第二pba与所述数据相关联。23.根据所述第二方面或所述第二方面的上述任一种实现方式,在所述系统的第四种实现方式中,基于所述验证,重映射所述第一表中的所述第二lba,以映射到所述指纹。24.根据所述第二方面或所述第二方面的上述任一种实现方式,在所述系统的第五种实现方式中,扫描(或读取)所述第一表中的多个地址映射表项。所述多个地址映射表项包括所述第二地址映射表项,所述第二地址映射表项包括所述第二lba和所述第二pba。基于在所述扫描期间检测到所述第二lba未映射到所述第二pba,对持久存储在所述第二存储位置中的所述数据执行垃圾回收。25.根据本发明的第三方面,提供了一种存储用于在通信网络中执行数据去重的指令的非易失性计算机可读介质,所述指令在由多个计算设备中的一个计算设备的一个或多个处理器执行时,使所述一个或多个处理器执行操作。所述操作包括将密码哈希函数应用于数据,以生成所述数据的指纹。将地址映射表项存储在第一表中。所述地址映射表项将分配给所述数据的逻辑单元号(logicalunitnumber,lun)的逻辑块地址(logicalblockaddress,lba)映射到持久存储所述数据的存储位置的物理块地址(pba)。将所述指纹作为键同时将所述数据的位置令牌作为值存储在第二表中的键值项中。所述位置令牌包括所述存储位置的所述lba和所述pba。为响应检测到所述第二表中的附加键值项包括所述指纹,修改所述第二表中的所述键值项中的所述值,以包括所述附加键值项中的附加位置令牌。所述附加位置令牌与持久存储所述数据的第二存储位置的第二lba和第二pba相关联。将所述第一表中的第二地址映射表项中的所述第二lba从所述第二pba重映射到所述指纹。26.根据所述第三方面,在所述非易失性计算机可读介质的第一种实现方式中,所述lba位于地址空间的多个逻辑地址分片中的一个逻辑地址分片内,所述地址空间在所述通信网络中的多个网络节点之间分配。27.根据所述第三方面,在所述非易失性计算机可读介质的第二种实现方式中,所述指令被执行时,还使所述一个或多个处理器执行以下操作,包括:将所述密码哈希函数应用于所述lba和所述lun的标识(identification,id),以确定第一哈希;基于所述第一哈希,选择所述多个网络节点中的第一网络节点,所述第一网络节点存储所述第一表。28.根据所述第三方面,在所述非易失性计算机可读介质的第三种实现方式中,所述指令被执行时,还使所述一个或多个处理器执行以下操作,包括:将所述密码哈希函数应用于所述指纹,以确定第二哈希;基于所述第二哈希,选择所述多个网络节点中的第二网络节点,所述第二网络节点存储所述第二表。29.在不脱离本发明范围的前提下,任何一个前述示例都可以与任何一个或多个其它前述示例结合以创建新的实施例。附图说明30.在不一定按比例绘制的附图中,相同的数字可以在不同的视图中描述类似的组件。附图通常以示例而非限定的方式示出了本文中讨论的各种实施例。31.图1示出了一些示例性实施例提供的使用提供去重功能的去重服务模块和元数据服务模块的网络架构的简要系统概述;32.图2示出了一些示例性实施例提供的元数据服务模块的框图;33.图3示出了一些示例性实施例提供的去重服务模块的框图;34.图4示出了一些示例性实施例提供的元数据服务模块与去重服务模块之间关于去重功能的交互的框图;35.图5示出了一些示例性实施例提供的包括在元数据服务模块中生成地址映射表以及在去重服务模块中填充和整合机会表的去重功能的框图;36.图6示出了一些示例性实施例提供的适于执行图5所示去重功能的方法的流程图;37.图7示出了一些示例性实施例提供的包括使用机会表生成指纹表并重映射地址映射表以促进垃圾回收的去重功能的框图;38.图8示出了一些示例性实施例提供的适于执行图7所示去重功能的方法的流程图;39.图9示出了一些示例性实施例提供的可与清除指纹表中的过时表项结合使用的指纹清除过程;40.图10示出了一些示例性实施例提供的适于执行图9所示指纹清除过程的方法的流程图;41.图11示出了一些示例性实施例提供的适于在通信网络中执行去重的方法的流程图;42.图12示出了一些示例性实施例提供的可与本文描述的各种设备硬件结合使用的代表性软件架构的框图;43.图13示出了一些示例性实施例提供的用于实现算法和执行方法的设备的电路的框图。具体实施方式44.首先应当理解的是,尽管下文提供一项或多项实施例的说明性实现方式,但结合图1至图13描述的所公开系统和/或方法可以使用任何数量的技术来实现,无论该技术是当前已知还是尚不存在。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。45.在下面的描述中,参考构成本文一部分的附图,这些附图通过图示的方式示出了可以实施的具体实施例。这些实施例将充分详细描述,使本领域技术人员能够实施本发明主题,应当理解的是可以使用其它实施例并且在不脱离本发明的范围的情况下可以做出结构上、逻辑上、电学上的改变。因此,以下描述的示例性实施例并不当作限定,本发明的范围由所附权利要求书界定。46.本文中使用的术语“基于网络的服务基础设施”包括多个网络设备(也称为主机、网络节点或服务器),所述多个网络设备提供分布式存储容量,并将数据去重功能作为服务提供给终端接收者(例如,服务基础设施的客户)社区,其中,所述终端接收者通过网络与所述服务基础设施中的所述网络设备通信耦合。所述服务基础设施的客户可以使用一个或多个计算设备(也称为客户设备或用户设备)访问和管理所述服务基础设施通过所述网络提供的服务(包括分布式存储和去重)。所述客户设备、所述网络和所述基于网络的服务基础设施可以统称为“网络架构”。所述服务基础设施的客户也可以称为“用户”。47.本文中使用的术语“数据指纹”(或“指纹”)是指数据的密码哈希,其可以通过将密码函数应用于所述数据来生成。本文中使用的术语“指纹表”是指键值表,其中,指纹作为键存储,且对应的数据作为值存储。48.本文所公开的去重技术使用地址映射表、指纹表和数据结构(称为机会表)。49.所述地址映射表是键值表,用于存储与接收的数据相关联的逻辑单元号(logicalunitnumber,lun)的逻辑块地址(logicalblockaddress,lba)与对应于所述lba的物理块地址(physicalblockaddress,pba)或所述数据的指纹之间的映射。例如,所述lba作为键存储,所述值可以是所述pba或所述指纹。更具体地,如果所述数据未进行去重,则所述值为对应于所述lba的所述pba。如果所述数据进行了去重,则所述指纹作为所述值存储,以便可以通过使用所述指纹访问所述指纹表中的所述数据。所述地址映射表也称为lun地址映射表(或lamt)。50.所述机会表用作过滤器,用于在将与重复数据相关联的指纹存储在所述指纹表中并消耗系统资源之前丢弃所述指纹。在这方面,本文所讨论的去重技术使用所述机会表来识别一旦存储在所述指纹表中就无法进行去重的指纹,使得所述指纹及其对应的数据的单个副本存储在所述指纹表中。在一些方面,所述机会表是包括键值对的表,其中,每个键为指纹,对应的值为令牌(也称为“位置令牌”),所述令牌是以下信息的组合:lun标识(lunidentification,lunid)、所述lun的所述lba以及对应于所述lba的所述pba(所述pba是持久存储所述数据的存储位置的物理地址)。51.所述指纹表用于存储去重后的数据。在一些方面,所述指纹数据表也是包括键值对的表,其中,键为指纹,值为对应于所述指纹的数据。52.在一示例性实施例中,如本文结合图1至图13所讨论的,分布式存储环境中的一个或多个网络服务器可以使用所述地址映射表、所述机会表和所述指纹表,以提供去重功能。通过使用机会表,降低所述指纹表的用户变动率,从而形成指纹表,所述指纹表包括与经过去重的数据相关联的指纹,在分布式存储环境中占用最少的内存资源。更具体地,通过引入所述机会表机制(在现有去重方案中不存在),在所述指纹表中存储之前标识能够进行去重module,msm)128。所述dsm122包括适当的电路、逻辑、接口和/或代码,并且用于生成和维护与去重功能结合使用的机会表(opportunitytable,ot)和指纹表(fingerprinttable,ft)。所述msm128包括适当的电路、逻辑、接口和/或代码,并且用于生成和维护lun地址映射表(lunaddressmappingtable,lamt)130。此外,所述dsm122执行与ot124和ft126相关联的去重相关功能,所述msm128执行与所述lamt130相关联的去重相关功能。图2和图3示出了关于所述ot124、所述ft126和所述lamt130的结构的附加细节。结合图4、图5、图6、图7、图8、图9、图10和图11讨论所述dsm122和所述msm128执行的示例性去重相关功能。59.在一示例性实施例中,使用网络存储设备118、……、120中的一个或多个存储从所述设备104发送的数据,并由所述管理网络节点112处理所述数据(例如,去重)。更具体地,所述dsm122和所述msm128彼此交互,以使用所述ot124、所述ft126和所述lamt130执行去重相关功能(例如,结合图4至图11讨论的去重相关功能)。60.在另一示例性实施例中,所述基于网络的服务基础设施110中的附加网络节点(例如,网络节点114、……、116)用于以分布式方式执行去重相关功能,而不是由单个网络节点(例如,所述管理网络节点112)执行所述去重相关功能。例如,所述网络节点114用于包括管理ot134和ft136的dsm132以及管理lamt140的msm138。类似地,所述网络节点116用于包括管理ot144和ft146的dsm142以及管理lamt150的msm148。在一些方面,为了更有效地利用所述分布式存储架构110中的存储容量,使用哈希函数(例如,密码哈希函数)处理与lunid和lba相关联的传入数据(例如,来自用户设备104的数据),以确定dsm相关功能的网络节点位置(例如,所述网络节点114、……、116中的一个)以及与去重相关联的msm相关功能的网络节点位置。61.例如,将第一哈希函数应用于所述传入数据,以确定指纹。将第二哈希函数应用于所述lunid和所述lba,以获取第一哈希值,所述第一哈希值用于选择第一网络节点(例如,从所述网络节点114、……、116中选择),并使用所述第一网络节点中的所述msm配置与执行去重相关功能相关的lamt。此外,还将第三哈希函数应用于所述确定的指纹,以获取第二哈希值,所述第二哈希值用于选择第二网络节点(例如,从所述网络节点114、……、116中选择),并使用所述第二网络节点中的所述dsm配置与执行去重相关功能相关的ot和ft。在一些方面,所述第一哈希函数、所述第二哈希函数和所述第三哈希函数中的一个或多个可以是相同的。在这方面,在所述基于网络的服务基础设施110中的一个网络节点处运行的msm与在另一网络节点处运行、与执行去重相关功能(例如,结合图4至图11讨论的去重功能)相关的dsm交互。62.图2示出了一些示例性实施例提供的元数据服务模块的框图。参考图2,所述msm128用于使用与接收的数据相关联的元数据信息生成所述lamt130。例如,接收的数据(例如,所述管理网络节点112接收的来自所述用户设备104的数据)包括具有所述lunid和所述lba信息202的元数据。(例如,由msm128)将密码哈希函数应用于所述数据,以获取所述指纹206。此外,还将数据存储在所述网络存储设备118、……、120中的一个网络存储器中,以获取对应于所述lba的所述pba204。63.如图2所示,所述lamt130是键值表,用于存储与所述接收的数据相关联的所述lba和lunid与对应于所述lba或所述数据的指纹之间的映射。例如,所述lunid和所述lba信息202作为键存储,所述值可以是所述pba204或所述指纹206。更具体地,如果所述数据未进行去重,则所述值为对应于所述lba的所述pba204。如果所述数据进行了去重,则所述指纹206作为所述值存储,以便可以通过使用所述指纹206访问(例如,所述指纹表126中的)所述数据。64.在一示例性实施例中,可以将所述网络节点112、……、116之间共用(例如,共享或分配)的内存地址空间划分为多个逻辑地址分片(或分区)。与所述接收的数据相关联的lba可以位于所述内存地址空间的所述多个逻辑地址分片中的一个逻辑地址分片内。65.图3示出了一些示例性实施例提供的去重服务模块122的框图。参考图3,所述dsm122用于生成和维护所述ot124和所述ft126。66.所述ot124是包括键值对的表,其中,键为指纹(例如,指纹302),对应的值为令牌(例如,令牌304,包括lunid、lba以及与所述接收的数据306相关联的pba)。所述ot124用于防止无法进行去重的数据存储在所述ft126中并占用系统资源。在这方面,所述机会表用于过滤无法进行去重的指纹和对应数据。67.所述ft126也是包括键值对的表,其中,键为指纹,值为对应于所述指纹的所述数据。如图3所示,所述ft126用于存储去重后的所述指纹302和所述数据306的键值对。68.图4示出了一些示例性实施例提供的msm128与dsm122之间关于去重功能的交互的框图400。参考图4,所述msm128与所述dsm122之间的交互包括以下结合图5至图10更详细讨论的七种去重功能:数据准备402(参考图4至图5中的序号1)、数据注入404(参考图4至图5中的序号2)、机会表分析406(参考图4至图5中的序号3),原始数据检索408(参考图4至图5中的序号4)、指纹提升(promotion)410(参考图4和图7中的序号5)、lamt重映射412(参考图4和图7中的序号6)和垃圾回收(garbagecollection,gc)414(参考图4和图7中的序号7)。如图4所示,所述msm128用于执行所述数据准备402、所述数据注入404、所述lamt重映射412和所述gc414。所述dsm122用于执行所述机会表分析406、所述原始数据检索408和所述指纹提升410。69.在一个示例性实施例中,所述msm128和所述dsm122可以是单个网络节点的一部分,如所述基于网络的服务基础设施110中的所述管理网络节点112。在另一示例性实施例中,所述msm和所述dsm可以位于不同的网络节点中,如从所述多个网络节点114、……、116中选择的网络节点。如上所述,密码哈希函数可以用于生成所述指纹,选择第一节点以运行所述msm(及其相关联的lamt),并选择第二节点以运行所述dsm(及其相关联的ot和ft)。更具体地,将密码哈希函数应用于所述接收的数据,以生成所述数据的指纹。所述接收的数据的元数据可以包括lun的lunid以及与所述lun相关联的所述lba。将另一哈希函数应用于所述lunid和所述lba,以标识可以运行所述msm的第一网络节点。进一步将所述哈希函数应用于所述指纹,以标识可以运行所述dsm的第二网络节点。70.图5示出了一些示例性实施例提供的包括在元数据服务模块(例如,所述msm128)中生成地址映射表(例如,所述lamt130)以及在去重服务模块(例如,所述dsm122)中填充和整合机会表(例如,所述ot124)的去重功能(例如,图4中序号为1至4的所述去重相关功能)的框图500。图5示出了所述lamt130,其包括格式为[{lunid,lba},pba]的地址映射表项。多个pba(例如,pba1、……、pban)与存储位置508相关联。例如,地址映射表项[{lunid,lba},pba1]包括与存储数据506的所述存储位置508相关联的物理块地址pba1。图5示出了所述存储位置508的附加pba(例如,pba2、……、pban),其可用于存储数据。[0071]图5还示出了所述ot124中存储的键值项的格式。更具体地,键值项502采用指纹fp1作为所述键以及与所述指纹fp1相关联的令牌token1、……、tokenn作为所述值的格式。[0072]图6示出了一些示例性实施例提供的适于执行图5所示去重功能的方法600(例如,图5中序号为1至4的去重相关功能)的流程图。所述方法600包括操作602、604、606、608和610。以示例而非限定的方式,所述方法600可以由所述msm128和所述dsm122执行。[0073]参考图5和图6,操作602包括所述msm128执行所述数据准备402。例如,所述msm128将密码哈希函数应用于接收的数据,以生成所述接收的数据的指纹510。此外,所述msm128提取元数据,如与所述接收的数据相关联的所述lunid和所述lba,并获取用于将所述接收的数据持久存储为存储数据506的存储位置的pba。所述msm128生成所述lamt130,并将地址映射表项504存储在所述lamt130中。所述地址映射表项504是一个键值项,包括所述lba和所述lunid作为所述键和所述对应的pba(例如,对应于存储位置的pba1,如持久存储所述接收的数据506的所述网络存储设备118、……、120中的一个)。从所述用户设备接收附加数据时,所述msm128确定所述接收的数据的所述指纹,并使用附加地址映射表项更新所述lamt130。[0074]在操作604中,所述msm128对操作602中生成的数据进行分组,以准备所述数据注入404。更具体地,所述msm128通过其对应的指纹(例如,指纹510)对来自所述地址映射表项504的数据进行分组,从而执行以下指纹数据分组{fp:{lunid,lba},pba}。如上所述,所述数据分组{lunid,lba},pba称为令牌(或位置令牌)。在这方面,所述指纹数据分组也可以表示为{fp:token}。[0075]在操作606中,所述msm128通过将所述指纹数据分组{fp:token}发送到所述ot124中的所述dsm122四个存储设备来准备所述数据注入404。所述dsm122将所述接收的指纹数据分组存储为键值项,其中,指纹fp为键,初始值为token。[0076]在操作608中,所述dsm122执行所述机会表分析406。更具体地,所述dsm122周期性地扫描所述ot124中的表项,以检测与同一指纹相关联的多个令牌并将此类令牌分组(或合并)作为与所述指纹相关联的值。图5示出了所述机会表分析406完成后所述ot124中的键值项502的示例。例如,在所述分析406之前,所述ot124包括多个键值项,其中,指纹fp1为所有表项中的键,token1、……、tokenn为对应的值。在所述机会表分析406期间,修改所述ot124中的所述键值项502,以包括来自所述ot124中的另一键值项的至少一个附加位置令牌,所述另一键值项包括所述指纹fp1作为所述键。该修改所述键值项502并使用所述附加位置令牌补充所述值的过程可以执行多次(例如,每次在所述ot124中检测到键值项,以包括与所述表项中的所述键相同的指纹时)。完成所述分析406之后,所述键值项502包括指纹fp1作为所述键以及与所述指纹fp1相关联的令牌token1、……、tokenn作为所述值。在这方面,所述机会表分析406致使整合与不同令牌相关联的同一指纹(指示存储在不同存储位置的重复数据),从而生成单个键值项,其中,所述指纹为所述键,多个令牌为对应于所述键的所述值。[0077]当多个令牌与同一指纹相关联时(与所述ot124的所述键值项502的情况相同),与所述指纹相关联且对应于每个所述令牌的多个数据表项是用于去重的候选表项,因为与同一指纹相关的多个令牌表示重复数据。可以提升与由映射到同一指纹fp1的多个令牌表征的此类键值项相关联的指纹(例如,fp1)以及对应于此类指纹的数据,以添加到所述ft126。[0078]在一示例性实施例中,作为所述键值项502的一部分的所述指纹fp1与针对所述存储数据506计算的指纹510相同。在操作610中,所述dsm122执行所述原始数据检索408,以检索与所述指纹fp1相关联的所述存储数据506。更具体地,所述dsm122可以使用与所述指纹fp1相关联的任何令牌token1、……、tokenn来检索所述存储数据506。例如,所述lunid和所述lba可以用于确定与所述存储数据506的所述存储位置相关联的所述pba,并且可以基于所述pba检索所述存储数据506。[0079]图7示出了一些示例性实施例提供的包括使用机会表124生成指纹表126并重映射lamt130以促进垃圾回收的去重功能(图4中序号为5至7的去重相关功能)的框图700。[0080]图7示出了具有键值项702(因所述机会表分析406生成,并导致单个指纹fp1(作为键)与多个令牌(token1、……、tokenn,作为值)相关联)的ot124。图7还示出了所述lamt130中的地址映射表项706在所述lamt重映射412期间更改为地址映射表项708,以便促进所述垃圾回收414。[0081]图8示出了一些示例性实施例提供的适于执行图7所示去重功能的方法800(例如,图7中序号为5至7的去重相关功能)的流程图。所述方法800包括操作802、804和806。以示例而非限定的方式,所述方法800可以由所述msm128和所述dsm122执行。[0082]在操作802中,所述dsm122执行所述指纹提升410,用于将表项存储到所述指纹表126中。更具体地,在检索与所述指纹fp1相关联的数据(例如,所述存储数据506)之后,所述dsm122将键值项704存储到所述指纹表126中(其中,所述指纹fp1为所述键,所述检索数据为所述值)。[0083]一旦所述dsm122存储所述键值项704(包括所述指纹fp1和所述数据506),则所述分布式存储架构110中不需要保留token1、……、tokenn所指向的数据。因此,在操作804中,所述msm128执行所述lamt重映射412,以修改与token1、……、tokenn(来自所述ot124中的键值项702)相关联的对应地址映射表项,从而促进所述垃圾回收414。更具体地,在所述lamt重映射412期间,所述msm128扫描所述lamt130中的多个地址映射表项,并更新与token1、……、tokenn相关联的地址映射表项,使得每个地址映射表项中的键(例如,{lunid,lba})映射到所述指纹(而不是所述pba)。例如,所述lamt130包括与token1相关联的地址映射表项706,其中,token1包括[{lunid1,lba1},pba1]。所述地址映射表项706包括{lunid1,lba1}作为所述键,pba1作为所述值。提升所述指纹fp1并将其与所述数据506一起作为所述指纹表126中的所述键值项704存储之后,所述msm128执行所述lamt重映射412,以修改所述地址映射表项706,从而获取地址映射表项708,其包括{lunid1,lba1}作为所述键,所述指纹fp1作为所述值。换言之,对于与同一指纹相关联的所有多个令牌(例如,所述ot124中的所述键值项702中的所述多个令牌),修改所述lamt130中的对应地址映射表项(与每个所述令牌中的所述pba相关联),使得每个地址映射表项中的键值映射到所述指纹而不是所述pba。[0084]在一示例性实施例中,在所述lamt重映射412期间,所述msm128可以验证所述lba(例如,所述地址映射表项706中的lba1)是否仍然映射到token1的所述pba(例如,pba1)。如果所述数据(例如,所述pba)的物理位置已经发生变化(例如,不再是pba1),所述数据也可能发生变化,并且不能执行pba到指纹的映射(例如,从表项706更改为表项708)。成功完成所述验证后,即所述lba(例如,所述地址映射表项706中的lba1)仍然映射到token1的所述pba(例如,pba1),所述lamt重映射412可以继续。[0085]通过将每个地址映射表项中的键值从所述pba重映射到所述指纹,存储在与token1的所述pba相关联的物理位置的原始数据将被视为垃圾。例如,将所述地址映射表项706更改为地址映射表项708之后,存储在与token1的pba1相关联的物理位置710的原始数据将被视为垃圾,因为所述pba不再映射到lba。在操作806中,所述msm128可以执行所述垃圾回收414以移除垃圾数据,如存储在不再映射到lba的所述物理位置710的数据。[0086]在一示例性实施例中,所述垃圾回收414可以作为后台进程执行,该后台进程定期扫描所述lamt130,以检查pba是否仍然映射到lba(指示非垃圾表项)。对于所述lamt130中的地址映射表项,其值已从pba更改为指纹,此类表项的pba将不再与lba相关联,并且在所述垃圾回收414期间,可以回收存储在pba的物理位置的数据所占用的存储空间。回收所述存储空间之后,所述数据的去重即结束。[0087]图9示出了一些示例性实施例提供的可与清除指纹表中的过时表项结合使用的指纹清除过程900。图9示出了网络节点902和网络节点904(每个都类似于图1的网络节点114、……、116中的任一个)以及管理网络节点906(类似于图1的管理网络节点112)。所述基于网络的服务基础设施110(可以配置为分布式存储架构)中的每个所述网络节点(例如,网络节点112、114、……、116)配置有空间有效的成员身份检查数据结构,例如但不限于布隆过滤器(bloomfilter,bf)。[0088]在一示例性实施例中,所述网络节点902配置有bfa908,所述bfa908用于在节点902处扫描所述lamt,以将所使用的指纹记录在bf数据结构中(例如,在(例如,所述管理节点906)发起指纹清除请求之前已使用的指纹)。例如,所述布隆过滤器可以扫描地址映射表项,并确定指纹在所述lamt130的地址映射表项中显示为值表项时使用。所述网络节点902还配置有bfnewa914,所述bfnewa914用于检测自所述发起所述指纹清除请求以来在节点902处新引用的指纹。[0089]类似地,网络节点904配置有bfb910(用于在节点904处扫描lamt,以将所使用的指纹记录在所述bf数据结构中,例如在发起指纹清除请求之前已在节点904处使用的指纹)和bfnewb916(用于在发起清除请求之后在节点904处检测新引用的指纹)。所述布隆过滤器908、910、914和916用于生成与所述指纹清除过程900结合使用的指纹信息(例如,当前使用的指纹912、过时指纹918、否决指纹922和待删除指纹924)。[0090]图9还示出了指示与指纹清除过程相关联的操作定时的序号1至6,如结合图10描述的操作1002至1010。更具体地,图9中的序号1至6分别对应于操作1002、1004、1006、1007、1008和1010的定时。[0091]图10示出了一些示例性实施例提供的适于执行图9所示指纹清除过程的方法1000的流程图。所述方法1000包括操作1002、1004、1006、1007、1008和1010。以示例而非限定的方式,所述方法1000可以由所述管理网络节点112内的所述dsm122或所述msm128(在图9中也称为节点906)执行。[0092]在操作1002中,所述管理网络节点906可以通过向多个网络节点(例如,节点902和904)发送指纹清除请求来发起指纹清除过程。[0093]在操作1004中,所述分布式存储基础设施中的所有网络节点(例如,节点902和904)使用对应的布隆过滤器(例如,布隆过滤器908和910)标识当前使用的指纹912。更具体地,每个节点扫描其lamt,以在所述布隆过滤器的成员身份检查数据结构中记录当前使用的指纹(例如,在发送所述指纹清除请求之前使用的指纹)。节点902和904中的每一个还开始使用对应的布隆过滤器914和916跟踪最新引用的指纹(例如,在操作1002中,在发送所述清除请求之后使用的指纹)。[0094]在操作1006中,通过从所有指纹920的列表中过滤当前使用的指纹912来生成过时指纹918的列表(例如,可以从存储在所述基于网络的服务基础设施110中的多个指纹表中生成)。[0095]在操作1007中,所述网络节点902和904中的每个网络节点向所述管理网络节点906发送所述布隆过滤器914和916中的信息,以构建自所述指纹清除请求开始(例如,自操作1002开始)以来使用的新引用的指纹列表。所述新引用的指纹列表在图9中表示为“否决”指纹922。[0096]在操作1008中,所述管理节点906可以忽略自所述清除开始以来使用的任何过时指纹候选表项,以获取待删除(或tbd)指纹924(例如,从所述过时指纹918的列表中移除所述否决指纹922,以获取所述tbd指纹924的列表)。[0097]在操作1010中,可以从所述节点的对应指纹表中清除所述tbd指纹924的列表中列出的指纹(例如,未否决的过时指纹)。例如,所述管理网络节点906可以更新其管理的指纹表(例如,通过删除所述tbd指纹列表中的一个或多个指纹)。此外,所述管理网络节点906还可以向剩余网络节点(例如,节点902和904)发送所述tbd指纹列表,使得每个节点可以基于所述tbd指纹列表从所述指纹表中清除一个或多个指纹来更新其指纹表。[0098]图11示出了一些示例性实施例提供的适于在通信网络中执行数据去重的方法1100的流程图。所述方法1100包括操作1102、1104、1106、1108和1110。以示例而非限定的方式,所述方法1100可以由所述msm128和所述dsm122执行,所述msm128和所述dsm122用于在图1所示的基于网络的服务基础设施110中的管理网络节点112中执行,或者由其它dsm和msm模块(例如,可以配置在所述网络节点114、……、116中的一个或多个网络节点中)执行。[0099]参考图11,在操作1102中,将密码哈希函数应用于数据(例如,从用户设备接收的数据),以生成所述数据的指纹。例如,使用所述接收的数据(例如,所述数据506)生成指纹510。在操作1104中,将地址映射表项存储在第一表中。所述地址映射表项将分配给所述数据的逻辑单元号(logicalunitnumber,lun)的逻辑块地址(logicalblockaddress,lba)映射到持久存储所述数据的存储位置的物理块地址(pba)。例如,所述lamt130中的所述地址映射表项504将与所述接收的数据相关联的所述lunid和所述lba映射到持久存储所述数据506的存储位置的所述pba(例如,pba1)。[0100]在操作1106中,将所述指纹作为键同时将所述数据的位置令牌作为值存储在第二表中的键值项中。例如,指纹510作为指纹fp1存储在所述ot124中的键值项502中。位置令牌包括所述存储位置的所述lba和所述pba(例如,{lunid,lba},pba1}),并作为所述值中的一个存储在所述键值项502中。[0101]在操作1108中,为响应检测到所述第二表中的附加键值项包括所述指纹,修改所述第二表中的所述键值项中的所述值,以包括所述附加键值项中的附加位置令牌。例如,在所述机会表分析406期间,扫描所述ot124中的表项,并将具有与所述表项的键相同的指纹(例如,表项502中的指纹fp1)的任何附加键值项添加为所述键值项502中的附加位置令牌。所述附加位置令牌与持久存储相同数据(例如,所述数据506)的另一存储位置的第二lba和第二pba相关联。[0102]在操作1110中,将所述第一表中的第二地址映射表项中的所述第二lba从所述第二pba重映射到所述指纹。例如,在所述lamt重映射412期间,将所述地址映射表项706重映射到地址映射表项708,其中,所述表项(例如,lba)中的所述键从所述pba1重映射到所述指纹fp1。[0103]本文所公开的数据去重技术基于使用所述机会表来检测可以进行去重的数据块,从而降低所述指纹表的规格并减少内存开销。此外,由于所述指纹表中已提供所述数据和所述指纹,任何去重后过程都不会重新读取数据以计算指纹,因此所公开的去重技术减少了读取带宽的使用。[0104]图12示出了一些示例性实施例提供的可与本文描述的各种设备硬件结合使用的代表性软件架构1200的框图。图12仅仅是软件架构1202的非限制性示例,应当理解的是,可以实现许多其它架构以促进本文中描述的功能。所述软件架构1202可以在诸如图13所示的计算设备1300等硬件上执行,所述硬件包括处理器1305、存储器1310、存储设备1315和1320以及i/o接口1325和1330等。图中示出了代表性硬件层1204,所述代表性硬件层1204可以表示诸如图13所述的计算设备1300。所述代表性硬件层1204包括一个或多个处理单元1206,所述一个或多个处理单元1206具有相关联的可执行指令1208。所述可执行指令1208表示所述软件架构1202的可执行指令,包括图1至图11所示方法、模块等的实现方式。所述硬件层1204还包括存储器和/或存储模块1210,其也具有可执行指令1208。所述硬件层1204还可以包括其它硬件1212,其表示所述硬件层1204的任何其它硬件,如作为计算设备1300的一部分示出的其它硬件。[0105]在图12所示的示例性架构中,可以将所述软件架构1202概念化为层栈,其中,每层提供特定的功能。例如,所述软件架构1202可以包括诸如操作系统1214、库1216、框架/中间件1218、应用程序1220和表现层1244等层。在操作上,所述各层内的应用程序1220和/或其它组件可以通过软件栈调用应用程序编程接口(applicationprogramminginterface,简称api)调用1224,接收响应于所述api调用1224的消息1226所示的响应、返回值等。图12所示的层本质上是代表性的,并不是所有软件架构1202都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件1218,而另一些可能提供这样的层。其它软件架构可以包括附加层或不同的层。[0106]所述操作系统1214可以管理硬件资源并提供公共服务。例如,所述操作系统1214可以包括内核1228、服务器1230和驱动器1232。所述内核1228可以作为硬件和其它软件层之间的抽象层。例如,所述内核1228可以负责内存管理、处理器管理(例如,调度)、组件管理、组网、安全设置等。所述服务器1230可以为其它软件层提供其它公共服务。所述驱动器1232可以负责控制底层硬件或与其进行交互。例如,所述驱动器1232可以包括显示驱动器、相机驱动器、蓝牙驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(universalserialbus,usb)驱动器)、无线保真驱动器、音频驱动器、电源管理驱动器等,这具体取决于硬件配置。[0107]所述库1216可以提供可供所述应用程序1220和/或其它组件和/或各层使用的公共基础设施。同直接与所述底层操作系统1214的功能(例如,内核1228、服务器1230和/或驱动器1232)进行交互相比,所述库1216通常允许其它软件模块以更容易的方式执行任务。所述库1216可以包括系统库1234(例如,c标准库),其可以提供诸如内存分配功能、字符串操作功能、数学功能等功能。另外,所述库1216可以包括诸如媒体库(例如,支持诸如mpeg4、h.264、mp3、aac、amr、jpg、png等各种媒体格式的呈现和操纵的库)等api库1236、图形库(例如,可用于对显示器上图形内容中的2d和3d进行渲染的opengl框架)、数据库(例如,可提供各种关系数据库功能的sqlite)、网络库(例如,可提供网络浏览功能的webkit)等。所述库1216还可以包括各种各样的其它库1238,从而向所述应用程序1220和其它软件组件/模块提供许多其它api。[0108]所述框架/中间件1218(有时也称为中间件)可以提供较高等级的公共基础设施,其可以由所述应用程序1220和/或其它软件组件/模块使用。例如,所述框架/中间件1218可以提供各种图形用户界面(graphicuserinterface,gui)功能、高级资源管理、高级定位服务等。所述框架/中间件1218可以提供较广范围的其它api,其可以由所述应用程序1220和/或其它软件组件/模块使用,其中一些可以是针对特定操作系统1214或平台的。[0109]所述应用程序1220包括内置应用程序1240和/或第三方应用程序1242。代表性内置应用程序1240的示例可以包括但不限于联系人应用程序、浏览器应用程序、图书阅读器应用程序、位置应用程序、媒体应用程序、消息收发应用程序和/或游戏应用程序。所述第三方应用程序1242可以包括任一内置应用程序1240和各种其它应用程序。在具体示例中,所述第三方应用程序1242(例如,特定平台供应商以外的实体使用androidtm或iostm软件开发包(softwaredevelopmentkit,sdk)开发的应用程序)可以是在诸如iostm、androidtm、phone或其它移动操作系统等移动操作系统上运行的移动软件。在该示例中,所述第三方应用程序1242可以调用由诸如操作系统1214等移动操作系统提供的所述api调用1224,从而实现本文描述的功能。[0110]在一些方面,所述应用程序1220包括msm1260和dsm1262,其可以与结合图1至图11讨论的任何msm和dsm(如msm128和dsm122)相同(并执行与其相同的功能)。[0111]所述应用程序1220可以利用内置操作系统功能(例如,内核1228、服务器1230和/或驱动器1232)、库(例如,系统库1234、api库1236和其它库1238)、框架/中间件1218创建用户界面,从而与所述系统的用户进行交互。可选地或另外地,在一些系统中,可以通过诸如表现层1244等表现层实现与用户之间的交互。在这些系统中,所述应用程序/模块“逻辑”可以与用户交互的所述应用程序/模块的各个方面分开。[0112]一些软件架构会使用虚拟机。在图12的示例中,用虚拟机1248进行说明。虚拟机创建软件环境,在该软件环境中,应用程序/模块像在硬件机器上运行一样(例如,图13所示的计算设备1300)。虚拟机1248由主机操作系统(图12中的操作系统1214)运行,其通常(但并非始终如此)具有虚拟机监视器1246。所述虚拟机监视器1246管理所述虚拟机1248的操作以及与所述主机操作系统(即,操作系统1214)的交互。软件架构1202在诸如操作系统1250、库1252、框架/中间件1254、应用程序1256和/或表现层1258等虚拟机1248内运行。所述虚拟机1248内运行的软件架构的这些层可能与先前描述的相应层相同,也可能不同。[0113]图13示出了一些示例性实施例提供的用于实现算法和执行方法的设备的电路的框图。所有组件都不需要在各种实施例中使用。例如,客户端、服务器和基于云的网络设备可以分别使用一组不同的组件,或者在服务器的情况下,使用较大的存储设备。[0114]计算机1300(也称为计算设备1300、计算机系统1300或计算机1300)形式的一个示例性计算设备可以包括处理器1305、存储器1310、可移动存储设备1315、不可移动存储设备1320、输入接口1325、输出接口1330和通信接口1335,它们都通过总线1340连接。虽然所述示例性计算设备被图示并描述为所述计算机1300,但在不同实施例中,所述计算设备可以采用不同的形式。[0115]所述存储器1310可以包括易失性存储器1345和非易失性存储器1350,并且可以存储程序1355。所述计算机1300可以包括或访问计算环境。所述计算环境包括各种计算机可读介质,如所述易失性存储器1345和所述非易失性存储器1350、所述可移动存储设备1315和所述不可移动存储设备1320。计算机存储装置包括随机存取存储器(randomaccessmemory,ram)、只读存储器(readonlymemory,rom)、可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom)、电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、闪存或其它存储器技术,光盘只读存储器(compactdiscread-onlymemory,cdrom)、数字多功能磁盘(digitalversatiledisk,dvd)或其它光盘存储器、磁带盒、磁带、磁盘存储装置或其它磁存储设备,或任何其它能够存储计算机可读指令的介质。[0116]存储在计算机可读介质上的计算机可读指令(例如,存储在所述存储器1310中的所述程序1355)可由所述计算机1300的所述处理器1305执行。硬盘驱动器、cd-rom和ram是包括存储设备等非瞬时性计算机可读介质的部件的一些示例。“计算机可读介质”和“存储设备”这两个术语不包括在载波被认为过于短暂的情况下的载波。“计算机可读非瞬时性介质”包括所有类型的计算机可读介质,包括磁存储介质、光存储介质、闪存介质和固态存储介质。应当理解的是,软件可以安装在计算机中并与其一起出售。可替代地,可以获得所述软件并将其加载到所述计算机中,包括通过物理介质或分布系统获得所述软件,例如包括从软件创建者拥有的服务器或者从软件创建者未拥有却使用的服务器获得所述软件。例如,所述软件可以存储在服务器上,以便通过因特网分发。本文中使用的术语“计算机可读介质”和“机器可读介质”可以互换。[0117]所述程序1355可以利用本文所讨论的一个或多个模块,如msm1360和dsm1365。所述msm1360和所述dsm1365可以与结合图1至图11讨论的任何msm和dsm(如msm128和dsm122)相同(并执行与其相同的功能)。[0118]在一示例性实施例中,所述计算机1300包括用于从所述多个计算设备中的一个计算设备中检索应用程序数据的装置,所述应用程序数据包括应用程序标识(identification,id)以及在所述计算设备上运行的应用程序的第一应用程序版本号。所述计算机1300还包括用于使用与所述应用程序id和所述第一应用程序版本号相关联的对象类型信息来更新第一数据库表的装置,所述对象类型信息标识所述应用程序使用的数据对象的数据库表模式以及所述数据对象的多个数据字段。所述计算机1300还包括用于使用从所述第二计算设备接收的所述多个数据字段的同步数据来同步所述数据对象以生成同步数据对象的装置。所述计算机1300还包括用于从第二计算设备接收第二应用程序版本号的装置,所述第二应用程序版本号与在所述第二计算设备上运行的所述应用程序相关联,以响应向所述第二计算设备发送的所述同步数据对象的通知。所述计算机1300还包括用于根据所述第二应用程序版本号选择所述同步数据对象的所述多个数据字段中的一个或多个数据字段的装置,以及用于将所述多个数据字段中的一个或多个数据字段存储的数据发送到所述第三计算设备以进行同步的装置。在一些实施例中,所述计算机1300可以包括其它或附加模块,用于执行所述实施例中描述的步骤的任一或组合的步骤。此外,如任一附图中所示或任一项权利要求所述,所述方法的任何附加或替代实施例或方面预期也包括类似模块。[0119]可以使用硬件(例如,机器的处理器、专用集成电路(application-specificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或其任何合适的组合)来实现本文中所描述的任何一个或多个所述模块。此外,这些模块中的任意两个或多个可以组合为单个模块,并且本文中所描述的单个模块的功能可以在多个模块之间细分。此外,根据各种示例性实施例,本文中所描述的在单个机器、数据库或设备中实现的模块可以分布在多个机器、数据库或设备中。[0120]尽管上面已经详细描述了一些实施例,但可以包括其它修改。例如,图中所示的逻辑流不需要所示的特定顺序或次序来获得理想的结果。可以在所描述的流程中提供其它步骤,或可以从所描述流程中取消步骤,并且可以将其它组件添加到所描述的系统中或从所描述的系统中删除。其它实施例可以在以下权利要求的范围内。[0121]还应当理解的是,包括一个或多个计算机可执行指令的软件可以安装在与本发明一致的一个或多个计算设备上并且可以随所述一个或多个计算设备一同出售,所述一个或多个计算机可执行指令促进上述关于本发明的任何一个或所有步骤的处理和操作。可替代地,可以获得所述软件并将其加载到一个或多个计算设备中,包括通过物理介质或分布系统获得所述软件,例如包括从软件创建者拥有的服务器或者从软件创建者未拥有却使用的服务器获得所述软件。例如,所述软件可以存储在服务器上,以便通过因特网分发。[0122]此外,本领域技术人员应当理解,本发明未将其应用限于具体实施方式中阐述的或附图中示出的组件的结构和布置的细节。本发明实施例可以有其它实施例或可以采用各种方式实施或执行。此外,应当理解的是,本文中使用的用语和术语用于描述,不应被视为具有限制性。本文中使用的“包含”、“包括”或“具有”及其变体意在涵盖随后列出的项目及其均等物以及附加项目。除非另有限定,否则本文中使用的术语“连接”、“耦合”和“安装”及其变体被广泛使用,并且涵盖直接和间接的连接、耦合和安装。此外,术语“连接”和“耦合”及其变体不限于物理或机械连接或耦合。进一步地,“向上”、“向下”、“底部”和“顶部”等术语是相对的,用于辅助说明,但不限于此。[0123]根据所示实施例采用的说明性设备、系统和方法的组件可以至少部分地在数字电子电路、模拟电子电路或计算机硬件、固件、软件或其组合中实现。例如,这些组件可以实现为计算机程序产品,例如有形地体现在信息载体或机器可读存储设备中的计算机程序、程序代码或计算机指令中,用于由可编程处理器、计算机或多台计算机等数据处理装置执行或控制其操作。[0124]计算机程序可以采用任何形式的编程语言(包括编译或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为适于在计算环境中使用的模块、组件、子例程或其它单元。计算机程序可以部署在一个站点的一台或多台计算机上运行,或者分布在多个站点上并通过通信网络互连。此外,用于实现本文所描述技术的功能程序、代码和代码段可以容易地理解为本文所描述技术所属领域技术人员的权利要求的范围内。与说明性实施例相关联的方法步骤可以由执行计算机程序、代码或指令的一个或多个可编程处理器执行,以执行功能(例如,通过对输入数据进行操作和/或生成输出)。方法步骤还可以由专用逻辑电路执行,并且用于执行所述方法的装置可以实现为所述专用逻辑电路,例如现场可编程门阵列(field-programmablegatearray,fpga)或专用集成电路(application-specificintegratedcircuit,asic)。[0125]结合本文所公开实施例描述的各种说明性逻辑块、模块和电路可以通过通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、asic、fpga或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或其任意组合来实现或执行,其设计用于执行本文所描述的功能。通用处理器可以是微处理器,但可替代地,所述处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、结合dsp核的一个或多个微处理器或任何其它此类配置。[0126]例如,适于执行计算机程序的处理器包括通用微处理器和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者中接收指令和数据。计算机所需的元件包括用于执行指令的处理器以及用于存储指令和数据的一个或多个内存设备。通常,计算机还将包括或可操作地耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)接收数据和/或向其传输数据。适于实现计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,例如,包括半导体存储器设备,例如,电可编程只读存储器(electricallyprogrammableread-onlymemory,eprom)、电可擦除可编程rom(electricallyerasableprogrammablerom,eeprom)、闪存设备和数据存储磁盘(例如,磁盘、内部硬盘或可移动磁盘、磁光盘、cd-rom和dvd-rom光盘)。所述处理器和所述存储器可以由专用逻辑电路补充或并入其中。[0127]本领域技术人员将理解,可以使用各种不同技术中的任何一种来表示信息和信号。例如,在以上描述中可以引用的数据、指令、命令、信息、信号、比特、符号和芯片可以用电压、电流、电磁波、磁场或粒子、光场或粒子或其任意组合来表示。[0128]本文中使用的“机器可读介质”(或“计算机可读介质”)是指能够暂时或永久存储指令和数据的设备,可以包括但不限于随机存取存储器(random-accessmemory,ram)、只读存储器(read-onlymemory,rom)、缓冲存储器、闪存、光学介质、磁性介质、高速缓冲存储器、其它类型的存储设备(例如,可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eeprom))和/或其任何合适的组合。术语“机器可读介质”应理解为包括能够存储处理器指令的单个介质或多个介质(例如,集中式或分布式数据库,或相关的高速缓存和服务器)。术语“机器可读介质”也应理解为包括能够存储由一个或多个处理器1305执行的指令的任意介质(或多个介质的组合),使得所述指令在由所述一个或多个处理器1305执行时,使所述一个或多个处理器1305执行本文所描述的任意一种或多种方法。因此,“机器可读介质”是指单个存储装置或设备以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。本文中使用的术语“机器可读介质”本身不包括信号。[0129]此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或互相通信的其它项可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。其它变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。[0130]尽管已经参考本发明的特定特征和实施例描述了本发明,但显而易见的是,可以在不脱离本发明范围的情况下对其进行各种修改和组合。例如,可以向所述系统添加或从所述系统移除其它组件。因此,说明书和附图仅被视为所附权利要求书所定义的本发明的说明并且预期涵盖在本发明的范围内的任何修改、变体、组合或均等物。其它方面可以在所附权利要求书的范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1