存储装置、存储节点以及用于计算存储的系统和方法
文献发布时间:2023-06-19 18:35:48
本申请要求通过引用包含的于2021年8月10日提交的发明名称为“用于计算存储的对象处理和过滤(Object Processing and Filtering for Computational Storage)”的第63/231,709号美国临时专利申请、通过引用包含的于2022年2月7日提交的发明名称为“用于计算存储的分层聚合的系统、方法和设备(systems,methods,and apparatus forhierarchical aggregation for computational storage)”的第17/666,548号美国申请和通过引用包含的于2021年8月10日提交的发明名称为“用于计算存储的具有空间局部性和分层聚合的数据布置(Data Placement with Spatial Locality and HierarchicalAggregation for Computational Storage)”的第63/231,711号美国临时专利申请的优先权和权益。
技术领域
本公开通常涉及计算存储系统,并且更具体地涉及用于计算存储的分层聚合的系统、方法和设备。
背景技术
计算存储装置可包括可对存储在装置处的数据进行操作的一个或多个处理资源。主机可例如通过将命令发送到存储装置来将处理任务卸载到存储装置,该命令指示用于对存储在装置处的数据执行的操作。存储装置可使用一个或多个处理资源来执行该命令。存储装置可将操作的结果发送到主机和/或将该结果存储在装置处。
在本背景技术部分中公开的上面的信息仅用于强化理解发明构思的背景技术,因此可包含不构成现有技术的信息。
发明内容
一种用于计算存储的方法可包括:在存储装置处存储数据的两个或更多个部分,其中,数据的所述两个或更多个部分中的第一部分包括记录的第一片段,并且数据的所述两个或更多个部分中的第二部分包括所述记录的第二片段;以及通过所述存储装置对所述记录的第一片段和第二片段执行操作。所述存储装置可以是第一存储装置,数据的所述两个或更多个部分是数据的两个或更多个第一部分,所述记录可以是第一记录,并且所述操作可以是第一操作,所述方法还可包括:在第二存储装置处存储数据的一个或多个第二部分,其中,数据的所述两个或更多个第一部分中的一个可包括第二记录的第一片段,数据的所述一个或多个第二部分中的一个可包括可第二记录的第二片段,并且第一存储装置和第二存储装置结合到存储节点;以及通过所述存储节点对第二记录的第一片段和第二片段执行第二操作。所述存储节点可以是第一存储节点,所述方法还可包括:在第三存储装置处存储数据的一个或多个第三部分,其中,数据的所述两个或更多个第一部分或数据的一个或多个第二部分中的一个可包括第三记录的第一片段,数据的所述一个或多个第三部分中的一个可包括第三记录的第二片段,第三存储装置可结合到第二存储节点,并且第一存储节点和第二存储节点结合到服务器;以及通过所述服务器对第三记录的第一片段和第二片段执行第三操作。所述操作可包括数据选择操作,所述方法还可包括将数据选择操作的结果发送到服务器。第一操作可包括第一数据选择操作,并且第二操作可包括第二数据选择操作,所述方法还可包括:将第一数据选择操作的结果发送到服务器;以及将第二数据选择操作的结果发送到所述服务器。
一种存储装置可包括:存储介质;存储装置控制器,被配置为:接收数据的两个或更多个部分,其中,数据的所述两个或更多个部分中的第一部分可包括记录的第一片段,并且数据的所述两个或更多个部分中的第二部分可包括所述记录的第二片段;以及数据处理元件,被配置为对所述记录的第一片段和第二片段执行操作。存储装置控制器还可被配置为用于将所述操作的结果发送到服务器。数据的所述两个或更多个部分中的一个可包括第二记录的第一片段;并且存储装置控制器还可被配置为将第二记录的第一片段发送到存储节点。所述操作可包括数据选择操作。
一种存储节点可包括:聚合逻辑,被配置为:从第一存储装置接收来自数据的第一部分的记录的第一片段,从第二存储装置接收来自数据的第二部分的所述记录的第二片段;以及数据处理元件,被配置为:对所述记录的第一片段和第二片段执行操作。聚合逻辑还可被配置为:将所述记录的第一片段发送到服务器。数据处理元件还可被配置为:将所述操作的结果发送到服务器。聚合逻辑可包括:缓冲器,被配置为存储所述记录的第一片段和第二片段。所述操作可包括数据选择操作。所述操作可以是第一操作,并且聚合逻辑还可被配置为:从第三存储装置接收第二操作的结果;以及将第二操作的所述结果发送到服务器。
一种系统可包括:存储节点;第一存储装置,结合到存储节点;以及服务器,被配置为:将数据的第一部分和数据的第二部分存储在第一存储装置处,其中,数据的第二部分可与数据的第一部分连续;其中,第一存储装置可被配置为:对来自数据的第一部分的第一记录的第一片段和来自数据的第二部分的第一记录的第二片段进行聚合,并且对所述第一记录的第一片段和第二片段执行第一操作;并且其中,存储节点可被配置为:对来自第一存储装置的数据的部分中的第二记录的第一片段和来自第二存储装置的数据的部分中的第二记录的第二片段进行聚合,并且对第二记录的第一片段和第二片段执行第二操作。存储节点可被配置为:将来自第一存储装置的数据的部分中的第三记录的第一片段发送到服务器。第一存储装置还可被配置为:将第一操作的结果发送到存储节点。存储节点可被配置为:将第二操作的结果发送到服务器。第一操作可包括第一数据选择操作;并且第二操作可包括第二数据选择操作。
一种用于计算存储的方法可包括:在第一存储装置处存储数据的第一部分,其中,数据的第一部分可包括记录的第一片段,并且第一存储装置可结合到存储节点;在第二存储装置处存储数据的第二部分,其中,数据的第二部分可包括所述记录的第二片段,并且第二存储装置可结合到所述存储节点;将所述记录的第一片段发送到所述存储节点;将所述记录的第二片段发送到所述存储节点;以及在所述存储节点处对所述记录的第一片段和第二片段执行操作。所述操作可包括数据选择操作。所述方法还可包括:将数据选择操作的结果发送到服务器。
附图说明
附图不必按比例绘制,并且贯穿附图,出于说明性的目的,相似结构或功能的元件通常由类似的参考标号或其部分来表示。附图仅意在便于对在此描述的各种实施例的描述。附图不描述在此公开的教导的每个方面,并且不限制权利要求的范围。为了防止附图变得不清楚,并非全部的组件、连接等可被示出,并且并非全部的组件可具有参考标号。然而,从附图可很容易地看出组件配置的模式。附图与说明书一起示出本公开的示例实施例,并且与描述一起用于解释本公开的原理。
图1A示出根据公开的示例实施例的具有服务器侧加密的对象存储方案的实施例。
图1B示出根据公开的示例实施例的具有客户端侧加密的对象存储方案的实施例。
图2A示出根据公开的示例实施例的可将对象返回给用户的对象存储方案的实施例。
图2B示出根据公开的示例实施例的具有数据选择功能的对象存储方案的实施例。
图3A示出根据公开的示例实施例的具有数据选择功能的对象存储方案的写入操作的实施例。
图3B示出根据公开的示例实施例的具有数据选择功能的对象存储方案的读取操作的实施例。
图4示出根据公开的示例实施例的具有本地数据恢复的存储系统的实施例。
图5示出根据公开的示例实施例的具有本地数据恢复的存储系统的另一实施例。
图6A示出根据公开的示例实施例的用于具有本地数据恢复和服务器侧加密的存储方案的写入操作的示例实施例。
图6B示出根据公开的示例实施例的用于具有本地数据恢复和客户端侧加密的存储方案的写入操作的示例实施例。
图7A示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的写入操作的示例实施例。
图7B示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的具有数据选择的读取操作的示例实施例。
图8示出根据公开的示例实施例的用于具有本地数据恢复的对象存储方案的系统架构的示例实施例。
图9A示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的读取操作和写入操作的示例实施例。
图9B示出根据公开的示例实施例的用于具有本地数据恢复和数据选择操作的存储方案的读取操作的示例实施例。
图10示出根据公开的示例实施例的来自表1的数据跨三个计算存储装置处的三个数据组块的分布的实施例。
图11示出根据公开的示例实施例的其中服务器可对在不同存储装置处的数据组块之间拆分的记录进行重建的存储系统的示例实施例。
图12示出根据公开的示例实施例的其中数据组块可首先跨多个存储节点和多个存储装置被分布的数据分布方案的实施例。
图13示出根据公开的示例实施例的具有空间局部性的数据分布方案的实施例。
图14示出根据公开的示例实施例的具有空间局部性和分层聚合的存储系统的实施例。
图15示出根据公开的示例实施例的具有空间局部性和分层聚合的对象存储系统的示例实施例。
图16示出根据公开的示例实施例的用于具有空间局部性和/或分层聚合的存储方案的主机设备的示例实施例。
图17示出根据公开的示例实施例的具有空间局部性和/或分层聚合的存储装置的示例实施例。
图18示出根据公开的示例实施例的用于计算存储的方法的实施例。
图19示出根据公开的示例实施例的具有空间局部性和分层聚合的对象存储系统和使用该对象存储系统的方法的示例实施例。
具体实施方式
对象存储系统可实现数据选择功能,数据选择功能可使用户能够请求指定的数据子集以从存储的对象进行检索。为了处理这样的请求,存储服务器可从存储在一个或多个存储装置(例如,计算存储装置)上的数据的一个或多个部分重建对象。存储服务器还可在对象被加密的情况下对对象进行解密、和/或在对象被压缩的情况下对对象进行解压缩,以将对象恢复到其原始形式。然后,存储服务器可对恢复的对象执行一个或多个选择操作(诸如,过滤、扫描等),以找到用户请求的指定的数据子集。然后,存储服务器可将请求的数据子集返回给用户。
在一些方面,计算存储装置可能能够对存储在装置上的对象执行一个或多个选择操作(诸如,过滤、扫描等)。然而,如果仅对象的部分被存储在装置上,并且在将数据划分为部分之前对象被修改(例如,压缩、加密等),则存储在装置上的部分可仅包括存储装置可能无法恢复(例如,解压缩和/或解密)为原始数据的随机(对于装置)信息。因此,存储装置可能无法在本地对存储在装置处的数据的部分执行有意义的操作。
本公开包含与计算存储有关的许多原理。在此公开的原理可具有独立的效用并且可被单独体现,并且不是每个实施例可利用每个原理。此外,原理还可以以各种组合来体现,各种组合中的一些可以以协同的方式放大各个原理的一些益处。
在此公开的原理中一些涉及在将数据划分为一个或多个部分之后对一个或多个部分执行一个或多个修改。例如,在根据公开的示例实施例的计算存储方案中,可在对数据执行修改(诸如,压缩和/或加密)之前将对象或其他原始数据划分为数据的部分。数据的部分中的一个或多个可被单独修改(例如,可对数据的单独部分执行压缩和/或加密),并且数据的部分的修改版本可被发送到计算存储装置以进行存储和/或处理。存储装置可例如通过对数据的修改部分进行解密和/或解压缩来从数据的修改部分生成数据的部分的恢复版本。然后,存储装置可在本地对恢复的数据部分执行操作(例如,选择操作)。
在一些实施例中,数据的部分还可被称为数据的组块(chunk,或被称为数据块、块)(即,数据组块),并且将数据划分为数据的部分或组块可被称为对数据进行分块(chunking)。在一些实施例中,例如,出于在一个或多个存储装置处存储的目的,数据的部分或组块可表示可通过划分数据获得的数据的任何单元。在一些情况下,如果原始数据量小于或等于部分或组块大小(例如,默认部分或组块大小),则通过划分或分块操作生成的原始数据的单元仍可被称为数据的部分或组块,即使部分或组块的大小与原始数据量相同。
取决于实施方式细节,在计算存储装置本地执行选择操作可减少可从一个或多个存储装置发送到服务器的数据量。此外,取决于实施方式细节,计算存储装置可比服务器更高效地执行诸如选择操作的操作。在一些实施例中,因为数据可被压缩,所以这可在很少或不降低带宽和/或空间效率的情况下被实现。取决于实施方式细节,因为数据可被加密,所以这也可在很少或不降低安全性的情况下被完成。此外,在一些实施例中,本地计算可对用户、客户端等透明地实现。
在根据公开的一些示例实施例中,存储装置、存储服务器等可提供如何将原始数据划分为组块和/或如何修改组块以便于由一个或多个计算存储装置进行存储和/或处理的一个或多个指示。例如,在一些实施例中,指示可包括可由存储装置支持的信息,诸如,一个或多个组块大小、压缩算法、加密算法等。在一些实施例中,一个或多个指示可以是强制的、可选的(例如,作为建议提供)、用户可配置的和/或它们的组合。例如,用于存储在特定存储装置上的最佳组块大小的指示可被提供为建议,而支持的压缩算法的指示可以是强制的,以使存储装置能够对数据的组块进行解压缩以在装置处进行本地处理。
根据公开的示例实施例,在此公开的任何操作(包括对数据进行分块、对数据进行修改(例如,对数据进行压缩和/或加密)、对数据执行纠删码、存储数据、对数据进行处理、选择数据等)可在无限制配置的各种设备之间被分布(例如,映射)。例如,在一些实施例中,客户端可对原始数据(例如,对象)进行分块,对数据的组块进行压缩,并且将压缩的数据的组块发送到服务器。服务器可对压缩的数据的组块进行加密,并且跨(across)一个或多个存储装置存储压缩且加密的数据的组块。作为另一示例,在一些实施例中,客户端可对原始数据(例如,对象)进行分块,对数据的组块进行压缩和加密,并且将压缩且加密的数据的组块发送到服务器以用于跨一个或多个存储装置进行存储。作为另一示例,客户端可将原始数据(例如,对象)发送到服务器,服务器可对数据进行分块,并对数据的组块进行压缩、加密和/或执行纠删码,并且可将单独修改的数据的组块存储在一个或多个存储装置上。
本公开的一些附加原理涉及存储装置和/或存储节点之间的数据的组块的分布。在一些实施例中,数据的连续组块可随空间局部性而被分布,使得数据的连续组块可被存储在同一存储装置处和/或在同一存储节点处的存储装置处。取决于实施方式细节,这可使可在数据的连续组块之间拆分(split)的一个或多个记录(record)能够在同一存储装置和/或存储节点处被处理。此外,取决于实施方式细节,这还可使数据的组块中的一些或全部能够以相对高水平的并行性被读取和/或写入。
一些实施方案可实现分层聚合(hierarchical aggregation),其中,在分层聚合中,如果两个组块存在于存储装置处,则可在数据的两个组块之间拆分的记录的片段(fragment)可被聚合以在存储装置的层级进行处理。如果两个组块不存在于同一存储装置处,则拆分的记录的片段可在更高层级处(例如,在存储节点处)被聚合和处理。如果两个组块不存在于同一存储节点处,则拆分的记录的片段可在更高层级处(例如,在对象存储服务器处)被聚合和处理。取决于实施方式细节,这可减少在存储装置、存储节点和/或其他服务器之间传输的数据量。此外,取决于实施方式细节,它可增加由诸如计算存储装置的设备执行的处理的量,这可减少与处理相关联的时间、功率、带宽、延迟等。
出于说明的目的,可在可实现数据选择功能和/或可将数据存储在一个或多个键值(key-value,KV)存储装置中的对象存储系统的上下文中描述一些实施例。然而,本公开中描述的原理不限于任何特定的数据格式、数据处理功能、存储装置接口等。例如,还可用可提供文件存储、数据库存储、块存储等的存储系统来实现根据公开的示例实施例的系统、方法和/或装置,根据公开的示例实施例的系统、方法和/或装置可实现任何类型的处理功能(诸如,加速、图形处理、图片处理、机器学习等),并且可用包括KV存储装置、块存储装置等的任何类型的存储装置来操作。
对象存储系统可使用户能够以对象的形式存储数据。对象中的数据可在被存储之前以各种方式被修改。例如,数据可被压缩,以减少其在存储介质中占据的空间量和/或减少将数据从客户端发送到一个或多个存储装置(例如,通过网络)所需的时间、带宽、功率等。作为另一示例,对象中的数据可被加密,以防止在数据的传输和/或存储期间对数据的未授权访问。
对象可包括相对大量的数据,并且因此,出于可靠性、可访问性等的目的,对象可被划分为可跨多个存储装置存储的组块。将数据划分为组块也可被称为对数据进行分块。例如,在压缩和/或加密之后,可将对象划分为固定大小的组块以适合由存储系统中的一个或多个基于块的存储装置使用的块大小。在一些实施例中,可使用纠删码方案来将数据划分为数据组块并生成一个或多个奇偶校验组块,奇偶校验组块可使存储系统能够恢复丢失或损坏的数据组块。
图1A示出根据公开的示例实施例的具有服务器侧加密的对象存储方案的实施例。图1A的左侧示出在读取操作和/或写入操作期间系统的组件之间的数据流,并且图1A的右侧示出在写入操作期间针对数据的操作。
在图1A的左侧示出的系统可包括客户端102、一个或多个服务器104(其可被统称为服务器)和一个或多个存储装置108(其可被统称为存储设备)。图1A的右侧示出的操作在由客户端102执行的第一组110A和由服务器104执行的第二组112A中被示出。
在写入操作期间,客户端102可以以原始数据114开始,原始数据114可以是例如对象。客户端102可对原始数据114执行一个或多个压缩操作,以生成压缩的数据116。客户端102可将压缩的数据116发送到服务器104,服务器104可对压缩的数据116进行加密,以生成压缩且加密的数据118。服务器104可将压缩且加密的数据118划分为一个或多个数据组块120,并且将一个或多个数据组块120发送到一个或多个存储装置108。在一些实施例中,服务器104可对一个或多个数据组块120执行纠删码,以生成也可以被存储在一个或多个存储装置108上的一个或多个奇偶校验组块121。
在读取操作期间,可相反地执行图1A中示出的操作。例如,服务器104可从一个或多个存储装置108读取一个或多个数据组块120。如果数据组块中的一个例如由于故障的存储装置而丢失或损坏,则服务器104可使用一个或多个奇偶校验组块121来恢复丢失或损坏的数据组块。服务器104可从数据组块120重建压缩且加密的数据118。服务器104可对压缩且加密的数据118进行解密,并且将压缩且解密的数据116(即,压缩的数据116)发送到客户端102。客户端102可对压缩且解密的数据116进行解压缩,以恢复原始数据114,原始数据114可以是例如对象。
图1B示出根据公开的示例实施例的具有客户端侧加密的对象存储方案的实施例。图1B的左侧示出在读取操作和/或写入操作期间系统的组件之间的数据流,并且图1B的右侧示出在写入操作期间针对数据的操作。
图1B的左侧示出的系统和图1B的右侧示出的操作可包括一些组件和/或操作,这些组件和/或操作可类似于图1A中示出的那些组件和/或操作,并且可由相同或相似的参考标号指示。然而,在图1B中示出的实施例中,如由客户端102执行的第一组操作110B所示,客户端102可对压缩的数据116进行加密,以生成压缩且加密的数据118。然后,客户端102可将压缩且加密的数据118发送到服务器104,如由服务器104执行的第二组操作112B所示,服务器104可将压缩且加密的数据118划分为一个或多个数据组块120。服务器104可将一个或多个数据组块120发送到一个或多个存储装置108。在一些实施例中,服务器104可对一个或多个数据组块120执行纠删码,以生成也可以被存储在一个或多个存储装置108上的一个或多个奇偶校验组块121。
在读取操作期间,可相反地执行图1B中示出的操作。例如,服务器104可从数据组块120重建压缩且加密的数据118(如果需要,使用一个或多个奇偶校验组块121恢复任何丢失或损坏的数据组块),并且将压缩且加密的数据118发送到客户端102。客户端102可对压缩且加密的数据118进行解密,以生成压缩且解密的数据116。然后,客户端102可对压缩且解密的数据116进行解压缩,以恢复原始数据114,原始数据114可以是例如对象。
图1A和图1B中示出的实施例仅是示例实施例,并且组件和/或操作的数量、次序和/或布置可变化。例如,在一些实施方式中,可在没有压缩和/或没有加密的情况下存储原始数据114。在一些实施例中,一个或多个服务器104可用可被配置为对象存储服务器的第一服务器和可被配置为存储服务器(其也可被称为存储节点)的第二服务器来实现,以管理一个或多个存储装置108。因此,第一服务器和第二服务器可实现对象存储服务。如果原始数据114中的任何或全部被加密,则加密密钥可由存储服务和/或由服务的用户生成。在一些实施例中,在写入操作结束时或接近写入操作结束时执行分块操作可使服务器104能够将数据划分为具有可与一个或多个存储装置108的一个或多个块大小对应的大小的组块。
在一些情况下,与用户装置相关联的用户可能仅需要检索存储在对象中的数据的子集。一些对象存储系统可能需要用户检索整个对象,然后对对象进行处理以找到数据的子集。这可能导致相对大量的不需要的数据被发送到用户的装置,这进而可能消耗不必要的资源(诸如,时间、带宽、功率等)。
为了减少和/或防止传输不需要的数据,一些对象存储系统可提供数据选择功能,数据选择功能可使用户能够请求指定的数据的子集,以从存储的对象检索。对象存储系统可对对象执行扫描、过滤和/或其他数据选择操作以找到指定的数据的子集,而不是将整个对象发送到用户的装置。然后,对象存储系统可仅将指定的数据的子集返回给用户的装置。
图2A示出根据公开的示例实施例的可将对象返回给用户的装置的对象存储方案的实施例。图2B示出根据公开的示例实施例的具有数据选择功能的对象存储方案的实施例。
参照图2A,对象存储服务201可将用户的对象203A、203B和203C存储在数据桶(bucket,或被称为空间)或容器205中。如果用户需要从对象203A中的一个检索数据的子集(例如,一个或多个记录),则对象存储服务201可要求用户请求整个对象203A,整个对象203A可通过网络被发送到客户端计算操作207。然后,客户端计算操作207可对对象203A执行数据选择操作209(诸如,扫描、过滤等),以找到数据的子集。然后,客户端计算操作207可将数据的子集用于进一步操作211。
参照图2B,具有数据选择功能的对象存储服务213可使用户能够从存储的对象203A请求数据的子集。例如,在一些实施例中,对象存储服务213可使用户能够提交请求,例如,通过发送可对对象203A进行操作的查询(例如,使用诸如SQL的数据库语言的表达式),对象203A可例如以诸如逗号分隔变量(CSV)、JavaScript对象表示法(JSON)、Parquet等的格式被存储。在一些实施例中,可例如使用应用编程接口(API)、软件开发工具包(SDK)等将查询发送到对象存储服务213。
不是发送整个对象203A,对象存储服务213可对对象203A执行数据选择操作209(诸如,扫描、过滤等),以找到用户在请求中指定的数据的子集。然后,对象存储服务213可仅将数据的子集203a发送到客户端计算操作217,以进行进一步操作211。取决于实施方式细节,对象存储服务213可对对象203A执行一个或多个恢复操作219(诸如,解压缩、解密等),以逆向执行在对象203A被存储时可能已经对对象203A执行的压缩操作、加密操作等。
图3A示出根据公开的示例实施例的具有数据选择功能的对象存储方案的写入操作的实施例。图3B示出根据公开的示例实施例的具有数据选择功能的对象存储方案的读取操作的实施例。图3A和图3B中示出的实施例可用于例如实现图2B中示出的对象存储方案。
图3A的左侧示出在读取操作和/或写入操作期间对象存储系统的组件之间的数据流,并且图3A的右侧示出在写入操作期间针对数据的操作。
图3A左侧示出的系统可包括客户端302、一个或多个服务器304(其可被统称为服务器)和一个或多个存储装置308(其可被统称为存储设备)。图3A右侧示出的操作在由客户端302执行的第一组310A和由服务器304执行的第二组312A中被示出。图3A中示出的组件之间的数据流和/或对数据的操作可类似于图1A中示出的具有服务器侧加密的实施例或图1B中示出的具有客户端侧加密的实施例,其中具有以相同数字结尾的参考标号的元件可以是类似的。因此,在图3A中,压缩且加密的数据318可以是用于具有客户端侧加密的实施方式的组310A的部分,或者是用于具有服务器侧加密的实施方式的组312A的部分。
参照图3B,用户可从存储在一个或多个存储装置308上的对象或其他原始数据请求数据的子集。为了处理这样的请求,服务器304可从一个或多个存储装置308读取一个或多个数据组块320。如果数据组块中的一个丢失或损坏,则服务器304可使用一个或多个奇偶校验组块321来恢复丢失或损坏的数据组块。服务器304可从数据组块320重建压缩且加密的数据318。
服务器304可对压缩且加密的数据318进行解密,以产生压缩且解密的数据316,压缩且解密的数据316然后可被解压缩以恢复原始数据314(例如,对象)。服务器304可对原始数据314执行数据选择操作(例如,扫描、过滤等)以获得请求的数据的子集323。然后,服务器304可将数据的子集323发送到客户端302。因为可绕过客户端的解压缩操作,所以解压缩操作是灰色的。图3B右侧示出的操作在由服务器304执行的组312B中被示出。
与图1A和图1B中示出的实施例一样,图3A和图3B中示出的服务器304可用可被配置为对象存储服务器的第一服务器和可被配置为存储服务器的第二服务器来实现,以管理一个或多个存储装置308。因此,在一些实施例中,存储服务器可从一个或多个数据组块320重建压缩且加密的数据318,并且对象存储服务器可执行解密、解压缩和/或数据选择操作。此外,尽管图3A和图3B中示出的实施例可实现服务器侧加密,但是其他实施例可实现客户端侧加密。
取决于实施方式细节,图3A和图3B中示出的实施例可例如通过减少在存储系统与客户端之间传送的数据量来减少网络流量。然而,图3A和图3B中示出的架构的数据处理流程可能阻止存储系统利用计算存储装置,取决于实施方式细节,计算存储装置可非常适合于执行由服务器304执行的操作的一些或全部。例如,在一些实施例中,计算存储装置可包括可比可存在于服务器中的通用处理资源更高效地执行解压缩、解密和/或其他操作(诸如,数据选择操作)的处理资源。然而,因为可在分块之前修改(例如,压缩、加密等)原始数据314,所以存储数据组块的单独的存储装置308可能无法将数据组块解密、解压缩和/或以其他方式恢复为可在装置本地执行有意义的操作的形式。
图4示出根据公开的示例实施例的具有本地数据恢复的存储系统的实施例。图4示出的系统可包括可通过连接422进行通信的主机424和计算存储装置408。主机424可包括数据分块逻辑426(其也可被称为数据划分逻辑)和数据修改逻辑427,数据分块逻辑426和数据修改逻辑427可被配置为以“存储装置408可将数据组块恢复为存储装置可对其执行操作的形式”的形式来将一个或多个数据组块提供给存储装置408。例如,数据分块逻辑426可在由数据修改逻辑427修改之前将对象或其他原始数据划分为一个或多个数据组块。数据修改逻辑427可单独地对一个或多个组块执行一个或多个数据修改操作(诸如,压缩、加密、纠删码等),以生成原始数据的一个或多个修改的组块。主机424可将原始数据的一个或多个修改的组块发送到计算存储装置408和/或一个或多个附加的计算存储装置,以进行存储和/或处理。
计算存储装置408可包括数据恢复逻辑428、一个或多个处理元件429和存储介质430。数据恢复逻辑428可被配置为将修改的数据组块恢复为一个或多个处理元件429可对其执行操作的形式。例如,数据恢复逻辑428可在修改的数据组块被加密的情况下对修改的数据组块进行解密,在修改的数据组块被压缩的情况下对修改的数据组块进行解压缩等。一个或多个处理元件429可被配置为执行任何类型的操作,诸如数据选择(例如,扫描、过滤等)、计算加速、图形处理、图片处理、机器学习等。存储介质430可用于存储任何数据,所述任何数据包括由主机424发送的一个或多个修改的数据组块。
在一些实施例中,数据恢复逻辑428和/或一个或多个处理元件429可被配置为响应于可包括在存储装置408处接收的查询(例如,表达式)的请求,从存储介质430读取和恢复一个或多个数据组块并返回指定的数据子集,或者对恢复的数据组块执行任何其他操作。
在一些实施例中,恢复的数据组块可或不可与分块之前的原始数据完全相同。例如,如果存储在存储装置424处的数据组块包含金融信息(诸如,银行账户交易、余额等),并且用户仅请求账户余额,则数据恢复逻辑428和/或一个或多个处理元件429可需要将数据组块恢复为原始形式以找到确切的账户余额并将它们发送到用户的装置。然而,如果存储在存储装置424处的数据组块包含摄影图像,并且用户请求图像中的特征列表,则数据恢复逻辑428和/或一个或多个处理元件429可仅需要将图像解压缩到可使一个或多个处理元件429能够识别用户请求的特征的程度。
主机424可用“可以以存储装置408可恢复和/或执行操作的形式将一个或多个数据组块提供给存储装置408”的任何组件或组件的组合来实现。例如,在一些实施例中,主机424可包括客户端、对象存储服务器和/或存储节点。数据分块逻辑426和/或数据修改逻辑427可以以任何方式分布在主机424的任何组件间。例如,在一些实施例中,数据分块逻辑426可实现在客户端上,而数据修改逻辑427可实现在对象存储服务器和/或存储节点上。作为另一示例,数据分块逻辑426和包括压缩逻辑的数据修改逻辑427的部分可实现在客户端上,而包括加密和/或纠删码逻辑的数据修改逻辑427的部分可实现在服务器上。因此,客户端可将原始数据划分为组块,单独地对数据组块进行压缩,并且将压缩的数据组块发送到服务器。然后,服务器可单独地对压缩的数据组块进行加密,对数据组块执行纠删码以生成一个或多个奇偶校验组块,然后将数据组块和/或奇偶校验组块存储在包括计算存储装置408的一个或多个存储装置。
存储装置408和/或在此公开的任何其他存储装置可使用任何连接器配置(诸如,串行ATA(SATA)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、M.2、U.2、U.3等)以任何形状因子(诸如,3.5英寸、2.5英寸、1.8英寸、M.2、企业和数据中心SSD形状因子(EDSFF)、NF1等)来实现。
存储装置408和/或在此公开的任何其他存储装置可用包括固态介质、磁介质、光学介质等或它们的任何组合的任何存储介质430来实现。固态介质的示例可包括闪存(诸如,非与(NAND)闪存、低延迟NAND闪存)、持久性存储器(PMEM)(诸如,交叉网格非易失性存储器)、具有体电阻变化的存储器、相变存储器(PCM)等或它们的任何组合。
存储装置408和/或在此公开的任何其他存储装置可使用任何类型的存储接口和/或协议(诸如,外围组件互连快速(PCIe)、NVMe、通过网络的NVMe(NVMe-oF)、NVMe键值(NVMe-KV)、SATA、SCSI等或它们的任何组合)进行通信。在一些实施例中,存储装置408和/或在此公开的任何其他存储装置可实现一致性(例如,存储器一致性、高速缓存一致性等)或存储器语义接口(诸如,计算快速链接(CXL),和/或一致性协议(诸如,CXL.mem、CXL.cache和/或CXL.IO))。一致性和/或存储器语义接口和/或协议的其他示例可包括Gen-Z、一致性加速器处理器接口(CAPI)、用于加速器的高速缓存一致性互连(CCIX)等。
存储装置408和/或在此公开的任何其他存储装置以及主机424的任何组件(例如,客户端、对象存储服务器、存储节点等)可完全或部分地与服务器机箱、服务器机架、数据机房、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合一起实现和/或结合使用。
通信连接422和/或在此公开的任何其他连接(包括诸如客户端、服务器、存储装置等组件之间的任何连接)可用任何互连和/或网络接口和/或协议(包括PCIe、以太网、传输控制协议/互联网协议(TCP/IP)、远程直接存储器访问(RDMA)、融合以太网上的RDMA(ROCE)、光纤通道、无限带宽、iWARP等或它们的任何组合)来实现。
在此公开的任何功能(包括诸如数据分块逻辑426、数据修改逻辑427、数据恢复逻辑428、一个或多个处理元件429、指示逻辑531等的任何逻辑)可用硬件、软件或它们的组合来实现,其中,硬件、软件或它们的组合包括组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器和/或状态机、一个或多个复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、中央处理器(CPU)(诸如,复杂指令集计算机(CISC)处理器(诸如,x86处理器)和/或精简指令集计算机(RISC)处理器(诸如,ARM处理器))、图形处理器(GPU)、神经处理器(NPU)、张量处理器(TPU)等,执行存储在任何类型的存储器或它们的任何组合中的指令。在一些实施例中,数据恢复逻辑428、处理元件429等中的一个或多个可包括固定和/或可编程功能以执行任何功能,诸如,压缩和/或解压缩、加密和/或解密、微服务、纠删码、视频编码和/或解码、数据库加速、搜索、机器学习、图形处理等。在一些实施例中,一个或多个组件可被实现为片上系统(SOC)。
在一些实施例中,数据恢复逻辑428、处理元件429等中的一个或多个可与存储装置的一个或多个其他组件(诸如,存储装置控制器、闪存转换层(FTL)等)集成。
在此公开的任何数据修改操作(诸如,压缩、加密等(或其逆向操作))可用任何合适的技术来实现。例如,数据压缩和/或解压缩可用LZ77、gzip、Snappy等来实现。加密和/或解密可用高级加密标准(AES)(诸如,AES-256、Rivest-Shamir-Adleman(RSA)等)来实现。
图5示出根据公开的示例实施例的具有本地数据恢复的存储系统的另一实施例。图5中示出的系统可包括与关于图4中示出的实施例描述的组件详细的组件和/或实现与关于图4中示出的实施例描述的操作类似的操作,其中具有以相同数字结尾的参考标号的元件可以是类似的。然而,在图5中示出的实施例中,计算存储装置508(或被称为存储装置508)还可包括指示逻辑531,指示逻辑531可被配置为将一个或多个指示532提供给主机524处的数据分块逻辑526和/或数据修改逻辑527。
一个或多个指示532可包括可由数据分块逻辑526用来确定如何将原始数据划分为组块的信息。例如,一个或多个指示532可包括用于存储利用、处理效率(例如,组块解压缩、解密、数据选择和/或其他操作)、带宽利用等的一个或多个存储超参数,诸如,最小组块大小、最大组块大小、最佳组块大小等。
一个或多个指示532(例如,存储超参数)可包括可由数据修改逻辑527用来确定如何修改由数据分块逻辑526提供的各个数据组块的信息。例如,一个或多个指示532可包括由存储装置508处的数据恢复逻辑528支持的压缩算法、加密算法等的类型的列表。
在一些实施例中,一个或多个指示可以是强制性的、可选的(例如,建议性的)或它们的组合。例如,用于存储在存储装置508上的最佳组块大小的指示可以是建议性的,而由数据恢复逻辑528支持的一个或多个压缩算法、加密算法等的指示可以是强制性的,以使存储装置508能够对数据组块进行解压缩和/或解密,以用于存储装置508处的一个或多个处理元件529进行本地处理。
在一些实施例中,指示逻辑531可完全位于计算存储装置508处。然而,在一些其他实施例中,指示逻辑531可位于主机524处,分布在主机524与存储装置508或多个存储装置间,或者完全位于不同的设备(例如,单独的服务器、管理控制器等,其可维护系统中的存储装置的特性的列表或数据库)处。例如,在一些实施例中,一个或多个存储节点可包括指示逻辑531,指示逻辑531可维护用于安装在存储节点处的每个存储装置的指示的列表或数据库,并且将指示提供给一个或多个客户端、对象存储服务器等。作为另一示例,一个或多个存储节点可包括指示逻辑531的部分,指示逻辑531的该部分可维护用于安装在存储节点处的每个存储装置的指示,并且对象存储服务器可包括指示逻辑531的部分,指示逻辑531的该部分可聚合来自一个或多个存储节点的指示并将指示提供给一个或多个客户端。
例如,响应于查询、命令等(例如,NVMe命令、通过API的查询、SDK等),指示逻辑531可将任何指示532提供给任何设备,诸如,客户端、对象存储服务器、存储节点等。在一些实施例中,可(例如,由客户端)通过客户端库将一个或多个指示532(例如,一个或多个存储超参数)提供给用户。
图6A示出根据公开的示例实施例的用于具有本地数据恢复和服务器侧加密的存储方案的写入操作的示例实施例。图6A中示出的实施例可用于例如实现图4和图5中示出的任何存储方案。图6A的左侧示出存储系统的组件之间的数据流,并且图6A的右侧示出在写入操作期间针对数据的操作。
图6A左侧示出的系统可包括客户端602、一个或多个服务器604(其可被统称为服务器)和一个或多个存储装置608(其可被统称为存储设备)。图6A右侧示出的操作在由客户端602执行的第一组610A和由服务器604执行的第二组612A中被示出。
当存储装置608和/或服务器604将指示数据组块大小、压缩算法等的一个或多个指示632提供给客户端602时,写入操作可开始。客户端602可基于例如一个或多个指示632将原始数据614划分为一个或多个组块633。
返回参照图3A和图3B,数据组块320可以是例如当存储设备308由一个或多个基于块的存储装置实现时可能需要的基本上相同的大小。然而,在图6A中示出的实施例中,数据组块633可以是不同的大小,例如,以利用可以用KV接口实现的一个或多个存储装置608。另外地或可选地,服务器604可在一个或多个基于块的存储装置608之上实现键值接口(例如,RocksDB、LevelDB等)的软件仿真。尽管图3A和图3B中示出的数据组块被示出为具有不同的大小,但是这些原理也可以应用于其中存储装置中的一些或全部具有基于块的接口的系统,基于块的接口可被认为是可变大小组块的子集。
在一些实施例中,可例如基于可能是特定存储装置的最佳已知大小的组块大小来确定建议性和/或强制性组块大小。例如,对于一些固态驱动器(SSD),128KB组块大小可完全利用SSD带宽。另外地或可选地,服务器604可通过库将最佳组块大小提供给客户端602,并且当用户存储对象或其他原始数据时,客户端602可在内部将对象或其他原始数据拆分为更小的块。另外地或可选地,客户端602可分析内容并动态地确定组块大小。
在对原始数据614进行分块之后,客户端602可单独地对数据组块633中的一个或多个进行压缩,以生成一个或多个压缩的组块634。客户端602可将压缩的组块634发送到服务器604,服务器604可对一个或多个压缩的组块634进行加密,以生成一个或多个压缩且加密的数据组块635。然后,服务器604可对一个或多个压缩且加密的数据组块635执行纠删码,以生成一个或多个奇偶校验组块636,并且跨一个或多个存储装置608存储一个或多个压缩且加密的数据组块635和一个或多个奇偶校验组块636。
图6B示出根据公开的示例实施例的用于具有本地数据恢复和客户端侧加密的存储方案的写入操作的示例实施例。图6B中示出的实施例可用于例如实现图4和图5中示出的任何存储方案。图6B的左侧示出存储系统的组件之间的数据流,并且图6B的右侧示出在写入操作期间针对数据的操作。
图6B中示出的组件之间的数据流和/或针对数据的操作可类似于图6A中示出的具有服务器侧加密的实施例,并且具有以相同数字结尾的参考标号的元件可以是类似的。然而,在图6B中示出的实施例中,如第一操作组610B所示,客户端602可对一个或多个压缩的数据组块634进行加密,以生成一个或多个压缩且加密的数据组块635。然后,如操作组612B所示,客户端602可将一个或多个压缩且加密的数据组块635发送到服务器604,服务器604可对一个或多个压缩且加密的数据组块635执行纠删码以生成一个或多个奇偶校验组块636,并且跨一个或多个存储装置608存储一个或多个压缩且加密的数据组块635和一个或多个奇偶校验组块636。
在一个或多个数据组块633已经被单独修改(例如,压缩、加密等)并跨一个或多个存储装置608被存储为修改的数据组块之后,每个存储装置可以能够恢复一个或多个数据组块(例如,通过对一个或多个数据组块进行解密和/或解压缩)并对恢复的数据组块执行操作。例如,用户、客户端602、服务器604等可向一个或多个存储装置608发送请求,以恢复一个或多个组块并对恢复的数据组块执行一个或多个操作(例如,数据选择操作)。
图7A示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的写入操作的示例实施例。图7B示出根据公开的示例实施例的具有针对具有本地数据恢复的存储方案的数据选择的读取操作的示例实施例。图7A和图7B中示出的实施例可用于例如实现图4和图5中示出的任何存储方案。
参照图7A,左侧示出存储系统的组件之间的数据流,并且右侧示出在写入操作期间针对数据的操作。参照图7B,左侧示出存储系统的组件之间的数据流,并且右侧示出在读取操作期间针对数据的操作。
图7A中示出的写入操作可实现类似于图6A中示出的服务器侧加密或类似于图6B中示出的客户端侧加密,并且具有以相同数字结尾的参考标号的元件可以是类似的。因此,作为客户端操作710A的部分或服务器操作712A的部分,可对已经被单独压缩的数据组块734进行加密,以生成压缩且加密的数据组块735。
参照图7B,一个或多个计算存储装置708可接收一个或多个请求以执行数据选择操作而从存储在存储装置处的一个或多个数据组块735读取一个或多个数据子集。一个或多个请求可包括例如用于指定请求的数据子集的一个或多个表达式。例如,可通过服务器704从客户端702接收请求。
为了处理一个或多个请求,一个或多个存储装置708可在一个或多个存储装置708处本地地执行一组操作737。三个不同存储装置中的每个可分别对存储在每个装置处的对应数据组块执行一组数据恢复和数据选择操作737-1、737-2和737-3。然而,在一些实施例中,单个存储装置可对存储在装置处的任何数量的数据组块执行数据恢复和数据选择操作或其他操作。
每个存储装置708可从存储介质读取已经被单独压缩且加密的对应数据组块735。然后,每个存储装置可对对应数据组块进行解密,以生成压缩且解密的数据组块734。然后,每个存储装置可对对应数据组块进行解压缩,以生成恢复的数据组块738。在一些实施例中,每个恢复的数据组块738可与原始数据714的对应部分相同。然而,在一些实施例中,恢复的数据组块738可仅被恢复为可使存储装置708能够对恢复的数据执行有意义的操作的形式(例如,一些实施例可能能够对尚未完全解压缩的数据组块执行一个或多个操作)。
在数据组块已经被恢复之后,每个存储装置708可基于例如与请求一起提供的表达式来执行数据选择操作(例如,扫描、过滤等),以获得一个或多个对应的结果739。然后,一个或多个存储装置708可将结果739作为原始数据714的一个或多个请求的子集740发送到客户端。因为可绕过客户端的解压缩和/或解密操作,所以客户端的解压缩和/或解密操作是灰色的。
在一些实施例中,如果奇偶校验组块736被存储在存储装置处,则存储装置708中的一个或多个可能能够恢复一个或多个丢失的数据组块735。可选地或另外地,服务器704可使用存储在一个或多个其他存储装置处的一个或多个奇偶校验组块736来恢复一个或多个丢失的数据组块735。
取决于实施方式细节,在存储装置处执行数据恢复和/或数据选择操作可减少与读取跨一个或多个存储装置存储在一个或多个组块中的原始数据的子集(例如,对象的子集)相关联的时间、带宽、功率、延迟等。
图8示出根据公开的示例实施例的用于具有本地数据恢复的对象存储方案的系统架构的示例实施例。图8中示出的系统可用于例如实现关于图4、图5、图6A、图6B、图7A、图7B、图9A和/或图9B描述的方案中的任一者。
图8中示出的系统可包括通过网络连接842连接的客户端802和对象存储服务器集群804。该系统还可包括通过存储网络844连接到对象存储服务器集群804的一个或多个存储节点806。对象存储服务器集群804可包括一个或多个对象存储服务器。
客户端802可包括数据分块逻辑826和/或压缩逻辑846,数据分块逻辑826和/或压缩逻辑846可被配置为在对数据的各个组块进行压缩之前执行对原始数据(例如,一个或多个对象)的数据分块,使得一个或多个计算存储装置808可对数据组块进行恢复以对恢复的数据组块执行操作。
对象存储服务器集群804可包括加密逻辑847、纠删码逻辑848、数据选择逻辑849、集群管理逻辑850和/或节点和存储装置管理逻辑851。加密逻辑847可用于单独对从客户端802接收的数据组块(例如,压缩的数据)进行加密。纠删码逻辑848可跨存储节点806和/或存储装置808执行数据组块的纠删码。数据选择逻辑849可执行与数据恢复操作、数据选择操作和/或由各个存储装置808(或被称为计算存储装置808)执行的其他处理操作有关的各种操作。例如,数据选择逻辑849可从客户端802接收读取可跨一个或多个存储装置808以组块存储的一个或多个数据子集的请求。数据选择逻辑849可将请求转发到对应的存储节点806和/或存储装置808,接收和/或聚合来自对应的存储节点806和/或存储装置808的结果,并且将聚合的结果发送到客户端802。集群管理逻辑850可执行与维护对象存储服务器集群804有关的内务处理和/或管理功能。节点和存储装置管理逻辑851可执行与维护一个或多个存储节点806和/或存储装置808有关的内务处理和/或管理功能。
每个存储节点806可包括处理单元(例如,数据处理单元(DPU)、CPU等)852,并且一个或多个计算存储装置808可被安装在每个存储节点806处,并连接到每个存储节点806。处理单元852可执行各种功能,诸如,从客户端802接收和分布请求以读取一个或多个数据子集,一个或多个数据子集可跨一个或多个存储装置808被存储在组块中。在一些实施例中,处理单元852可对从对象存储服务器集群804接收并存储在一个或多个计算存储装置808上的数据组块执行数据压缩、数据加密、纠删码等。在一些实施例中,处理单元852可对由一个或多个计算存储装置808执行的一个或多个数据选择操作的结果进行聚合,并且将聚合的结果转发到对象存储服务器集群804和/或客户端802。
计算存储装置808a示出可被包括在一个或多个计算存储装置808中的组件的示例。计算存储装置808a可包括数据选择引擎853和存储介质830。数据选择引擎853可包括解密逻辑854和解压缩逻辑855,解密逻辑854和解压缩逻辑855可用于分别对已经被单独加密和/或压缩的数据组块进行解密和/或解压缩,以将数据组块恢复为可操作的形式。数据选择引擎853还可包括数据选择逻辑856,数据选择逻辑856可用于对恢复的数据组块执行数据选择或其他操作。数据选择引擎853还可包括KV逻辑857,KV逻辑857可用于实现存储装置808a的KV接口。
在一些实施例中,图8中示出的系统可用存储装置808中的一些或全部的KV接口来实现。根据实施方式细节,这可促进和/或使数据组块能够以可变组块大小来实现。出于说明的目的,图8中示出的实施例可被描述为在一个或多个存储装置808处本地地实现具有恢复的数据组块的数据选择功能,然而,原理可应用于可对恢复的数据组块执行的任何类型的处理。
图9A示出根据公开的示例实施例的用于具有本地数据恢复的存储方案的读取操作和写入操作的示例实施例。图9A中示出的操作可例如使用图8中示出的系统来实现。出于说明的目的,可假设第一组操作958A由图8中示出的客户端802和对象存储服务器集群804执行,并且可假设第二组操作959A由图8中示出的一个或多个存储节点806和/或存储装置808执行,然而,在其他实施例中,图9A中示出的操作可由任何其他组件执行。
参照图9A,在写入操作(例如,放置(put)操作)期间,原始数据914(例如,一个或多个对象)可由客户端进行分块,以生成数据的一个或多个组块933。一个或多个组块933可由客户端单独压缩,以生成一个或多个压缩的组块934,一个或多个压缩的组块934随后可被发送到对象存储服务器并由对象存储服务器单独加密,以生成一个或多个压缩和/或加密的组块935。对象存储服务器可对一个或多个压缩和/或加密的组块935执行纠删码,以生成一个或多个奇偶校验组块936。
对象存储服务器可将一个或多个压缩且加密的组块935以及一个或多个奇偶校验组块936(例如,通过放置操作960)发送到一个或多个存储节点以存储在一个或多个存储装置上。因此,在写入操作之后,原始数据914(例如,对象)可跨一个或多个存储装置被存储在可能一个或多个已经被单独修改(例如,压缩和/或加密)的组块935中。
在读取操作(例如,获取(get)操作)期间(例如,在存储装置不能恢复数据组块和/或对数据组块执行操作的实施方式中),可从一个或多个存储装置读取一个或多个单独修改的数据组块935。如果一个或多个数据组块935丢失或损坏,则可(例如,由存储装置和/或存储节点)使用一个或多个奇偶校验组块936来恢复丢失和/或损坏的组块。
一个或多个压缩和/或加密的组块935可(例如,通过获取操作962)被发送到对象存储服务器,对象存储服务器可对一个或多个压缩和/或加密的组块935进行解密,以生成一个或多个压缩且解密的组块934。一个或多个压缩且解密的组块934可被发送到客户端,客户端可对一个或多个压缩且解密的数据组块934进行解压缩,以生成解密且解压缩的数据组块933,然后将解密且解压缩的数据组块933组装回原始数据914。
图9B示出根据公开的示例实施例的用于具有本地数据恢复和数据选择操作的存储方案的读取操作的示例实施例。图9B中示出的操作可例如使用图8中示出的系统来实现。出于说明的目的,可假设第一组操作958B由图8中示出的客户端802和/或对象存储服务器集群804执行,并且可假设第二组操作959B由图8中示出的一个或多个存储节点806和/或存储装置808执行,然而,在其他实施例中,图9B中示出的操作可由任何其他组件执行。
为了开始读取操作(例如,获取操作963),一个或多个计算存储装置可接收一个或多个请求以执行数据选择操作从存储在一个或多个存储装置处的一个或多个数据组块935读取一个或多个数据子集。一个或多个请求可包括例如用于指定请求的数据子集的一个或多个表达式。
为了对一个或多个请求进行服务,可从一个或多个存储装置读取一个或多个单独修改的数据组块935。然后,一个或多个存储装置可单独地对一个或多个数据组块935进行解密,以生成压缩且解密的一个或多个数据组块934。然后,一个或多个存储装置可单独地对压缩且解密的一个或多个数据组块934进行解压缩,以生成一个或多个恢复的数据组块938。在一些实施例中,每个恢复的数据组块938可与原始数据914的对应部分相同。然而,在一些实施例中,恢复的数据组块938可仅被恢复为可使存储装置能够对恢复的数据执行有意义的操作的形式(例如,一些实施例可能能够对尚未被完全解压缩的数据组块执行一个或多个操作)。
然后,存储装置可对一个或多个恢复的数据组块938执行数据选择操作(例如,扫描、过滤等),以找到由一个或多个请求指定的一个或多个数据子集939(指示为结果R)。如果存储装置已经对多于一个数据组块进行恢复并执行数据选择操作,则存储装置可聚合数据选择操作的结果以生成聚合结果940,聚合结果940可被发送到对象存储服务器,随后被发送到发送请求的客户端。另外或可选地,由多个存储装置的数据选择操作找到的结果R(例如,数据子集)939可由存储节点聚合并被发送到对象存储服务器,随后被发送到发送请求的客户端。
表1示出根据公开的示例实施例的可被存储在存储系统中的一些示例数据。出于说明的目的,表1中示出的数据用于房地产列表,但是原理可应用于任何类型的数据。表1的每行可对应于具有七个条目的记录:记录索引、以平方英尺为单位的居住面积、卧室数量、浴室数量、邮政编码、建造年份和标价。因此,例如,前八个记录可分别由索引1至索引8标识。
图10示出根据公开的示例实施例的来自表1的数据跨三个计算存储装置上的三个数据组块进行分布的实施例。在图10中示出的实施例中,分号用作各个记录(其可对应于表1中示出的行)之间的分隔符,但是在其他实施例中,可使用其他定界技术。
参照图10,前两个记录(由索引1和索引2标识)可完全适配在存储于第一存储装置1008A上的第一数据组块1064A内。第三记录(由索引3标识并由具有单下划线的条目指示)可在分别存储于第一存储装置1008A和第二存储装置1008B上的数据组块1064A与数据组块1064B之间被拆分(例如,分段)。第四记录和第五记录(由索引4和索引5标识)可完全适配在存储于第二存储装置1008B上的第二数据组块1064B内。第六记录(由索引6标识并由具有单下划线的条目指示)可在存储于第二存储装置1008B上的数据组块1064B与存储在第三存储装置1008C上的数据组块1064C之间被拆分。第七记录和第八记录(由索引7和索引8标识)可完全适配在存储于第三存储装置1008C上的第三数据组块1064C内。第九记录(由索引9标识并由具有单下划线的条目指示)可在存储于第三存储装置1008C上的第三数据组块1064C与另一存储装置上的另一组块之间被拆分。
出于说明的目的,计算存储装置1008A、1008B和1008C被示出为用如上所述的数据恢复逻辑和/或处理元件来实现,数据恢复逻辑和/或处理元件可使存储装置能够恢复单独修改的数据组块1035,例如通过解密(以生成解密的数据组块1034)和/或解压缩以生成恢复的数据组块1038,并且对恢复的数据组块1038执行诸如数据选择操作的操作,以从存储在装置上的数据组块中的一个或多个记录获得指定的数据子集1039。然而,原理不限于这些实施方式细节,并且可应用于可对存储在任何类型的计算存储装置上的任何类型的数据组块执行的任何类型的操作。出于说明的目的,在此描述的一些实施例可实现固定大小的数据组块(例如,如可与基于块的存储装置一起使用的),然而,原理也可应用于可实现可变大小的数据组块(例如,如可与KV存储装置一起使用)的实施例。
在一些实施例中,记录可对应于对象。在在此描述的一些实施例中,可假设记录(例如,JSON对象)小于组块,取决于实施方式细节,这可确保对象可跨越(span)不超过两个组块。在一些实施例中,分隔符可被实现为诸如分号的简单字符。例如,对于CSV对象,分隔符可被实现为回车。另外或可选地,可通过层级来确定一个或多个分隔符。因此,检测分隔符可能比简单的比较更复杂。例如,对于JSON对象,一对花括号(“{…}”)可定义JSON对象。此外,在一些实施例中,JSON对象可具有嵌套的JSON阵列,因此最外面的一对花括号可定义单个记录。因此,分隔符可由最外面的右花括号(“}”)定义。
再次参照图10,完全适配存储装置之一的记录(例如,记录1、2、4、5、7和8)可由对应的存储装置处理。例如,如果客户端发出对数据选择操作的读取请求以返回存储在表1中的数据的子集(例如,客户端发送具有表达式的读取请求以返回具有在1980年之后的建造年份的全部记录(或其部分)),则记录1、2、4、5、7和8可由对应的存储装置直接处理。然而,因为记录3、6和9在两个不同存储装置处的数据组块之间被分段,所以记录3、6和9可能不会在存储装置本地处理。
图11示出根据公开的示例实施例的其中服务器可对在不同存储装置处的数据组块间拆分的记录进行重建的存储系统的示例实施例。图11中示出的实施例可包括对象存储服务器1104、通过存储网络连接到对象存储服务器1104的两个存储节点1106A和1106B、以及可存储包括与图10中示出的记录类似的记录的数据组块的计算存储装置1108A、1108B、1108C、1108D和1108E。
参照图11,存储装置1108A至1108E中的每个可分别(直接地,或者通过其所在的存储节点)发送存储装置可对其对应数据组块1164A至1164E中的任何完整记录执行的数据选择操作的结果1165。然而,因为记录3、6和9可不在存储装置本地处理,所以对象存储服务器1104可在一个或多个聚合缓冲器1166(例如,聚合缓冲器1166A、1166B和1166C)中对拆分的记录进行重建。在一些实施例中,每个聚合缓冲器1166可对第i装置与第i+1装置之间的拆分的记录进行重建。例如,存储装置1108A可将位于数据组块1164A中的记录3的第一部分(其也可被称为片段)(例如,索引、居住面积、卧室、浴室、邮政编码和建造年份)发送到对象存储服务器1104,以在第一缓冲器1166A中与位于数据组块1164B中并由存储装置1108B发送的记录3的第二部分(标价)进行聚合。在一些实施例中,对象存储服务器1104可包括N个聚合缓冲器,其中,N可以是连接到对象存储服务器1104的存储装置的数量。
然后,对象存储服务器1104可分别对聚合缓冲器1166A、1166B和1166C中的重建的记录3、6和9执行选择操作,以生成结果1167。因此,在由各个存储装置发送的结果1165与从聚合缓冲器1166生成的结果1167之间,对象存储服务器1104可获得由请求指定的数据的一些或全部子集,并且将子集返回给客户端。
然而,取决于实施方式细节,从存储装置1108发送到对象存储服务器1104的记录的每个片段可能消耗时间、带宽和/或功率,增加延迟,减少处理资源的利用率等,并且可能导致对象存储服务器1104成为潜在的瓶颈。
图10和图11中示出的数据组块的分布可例如由可寻求提供高水平的写入和/或读取并行性的数据分布方案引起。例如,图12示出其中数据组块可首先跨多个存储节点和多个存储装置被分布的数据分布方案的实施方案。在图12中示出的实施例中,如并行写入组1269所示,连续数据组块序列1268中的前八个数据组块1至8可与奇偶校验组块P一起同时被存储在存储节点1206A至1206C处的存储装置1208A至1208I中。因此,在这个示例中,可同时存储数据组块1、4、7、2、5、8、3、6和P。取决于实施方式细节,在写入数据时,这可使并行化的量最大化。
然而,前四个组块1、2、3和4的扫描路径1270经过三个不同存储节点处的四个不同存储装置。因此,从计算的角度来看,在同一存储装置和/或同一存储节点处可存在很少或没有连续的数据组块,因此,具有跨数据组块拆分的片段的记录可能不在存储装置本地处理。取决于实施方式细节,这可增加存储装置1208、存储节点1206和/或对象或其他存储服务器之间的数据流量。
图13示出根据公开的示例实施例的具有空间局部性的数据分布方案的实施例。在图13中示出的实施例中,如扫描路径1370所示,数据放置策略可分布连续数据组块,使得连续数据组块序列1371中的连续数据组块可被储在同一存储装置处和/或同一存储节点处的存储装置处。例如,连续数据组块1和2可被存储在存储装置1308A处,连续数据组块3和4可被存储在存储装置1308B处,连续数据组块5和6可被存储在存储装置1308C处,等等。因此,可在存储装置1308A处对可具有在数据组块1与2之间拆分的片段的记录进行聚合和/或处理。类似地,可在存储装置1308B处对可具有在数据组块3与4之间拆分的片段的记录进行聚合和/或处理,可在存储装置1308C处对可具有在数据组块5与6之间拆分的片段的记录进行聚合和/或处理,等等。取决于实施方式细节,这可减少存储装置1308、存储节点1306和/或其他服务器之间的数据流量。
然而,尽管图13中示出的数据分布方案可能能够在一个或多个存储装置1308本地处理更多记录,但取决于实施方式细节,图13中示出的数据分布方案还可保持相对高水平的写入和/或读取并行性。例如,在图13中示出的实施例中,如并行写入1369所示,组块1、3、5、7、9、11、13、15和P可被同时存储,因此,取决于实施方式细节,可维持与图12中示出的实施例相同的并行性水平。在一些实施例中,根据公开的具有空间局部性的数据分布方案可改变客户端的访问模式。因此,客户端可知道每个装置上的组块的范围,而不是仅顺序地访问块。客户端可首先在服务器之间分布组块,然后在服务器内的装置之间分布组块,同时仍然提供组块的空间局部性。
此外,图13中示出的实施例还可实现分层聚合,其中,在分层聚合中,可在两个数据组块之间拆分的记录的片段可在多个层级之一被聚合和/或处理,在一些实施例中,该多个层级之一可处于可能的最低层级。例如,如上所述,如果记录具有在存储于存储装置1308处的两个连续数据组块之间拆分的片段,则片段可在存储装置1308处被聚合和处理。然而,如果两个组块不存在于同一存储装置1308处,则拆分的记录的片段可在更高层级(例如,在存储节点1306处)被聚合和处理。如果两个组块不存在于同一存储节点处,则拆分的记录的片段可在更高的层级(例如,在对象存储服务器处)被聚合和处理。取决于实施方式细节,这可减少在存储装置、存储节点和/或其他服务器之间传输的数据量。此外,取决于实施方式细节,这可增加由诸如计算存储装置的设备执行的处理的量,这可减少与处理相关的时间、功率、带宽、延迟等。
图14示出根据公开的示例实施例的具有空间局部性和分层聚合的存储系统的实施例。图14中示出的实施例可包括通过存储网络1444连接的一个或多个存储节点1406以及对象存储服务器1404。一个或多个计算存储装置1408可被安装在存储节点1406中的每个处,并连接到存储节点1406中的每个。
对象存储服务器1404可包括数据分布逻辑1474、聚合逻辑1475和/或处理单元1476。数据分布逻辑1474可被配置为基于空间局部性策略将数据组块分布到一个或多个存储节点和/或一个或多个存储装置1408。例如,在一些实施例中,数据分布逻辑1474可以按照与图13中示出的方式类似的方式来分布连续数据组块。聚合逻辑1475可被配置为对在从存储节点1406中的两个和/或存储装置1408中的两个接收的数据组块之间拆分的记录的片段进行聚合。例如,在一些实施例中,聚合逻辑1475可包括一个或多个聚合缓冲器,以从在数据组块之间拆分的记录的片段重建记录。处理单元1476可被配置为对已经由聚合逻辑1475重建的记录执行一个或多个操作(例如,数据选择操作)。例如,处理单元1476可包括数据处理单元(DPU)和/或中央处理器(CPU)。
一个或多个存储节点1406可包括聚合逻辑1477、处理单元1478。聚合逻辑1477可被配置为对在从存储装置1408中的两个接收的数据组块之间拆分的记录的片段进行聚合。例如,在一些实施例中,聚合逻辑1477可包括一个或多个聚合缓冲器,以从在两个存储装置1408中的数据组块之间拆分的记录的片段重建记录。处理单元1478可被配置为对已经由聚合逻辑1477重建的记录执行一个或多个操作(例如,数据选择操作)。例如,处理单元1478可包括数据处理单元(DPU)和/或中央处理器(CPU)。
一个或多个存储装置1408可包括聚合逻辑1479和/或一个或多个处理元件1429。聚合逻辑1479可被配置为对在存储于存储装置1408处的数据组块之间拆分的记录的片段进行聚合。一个或多个处理元件1429可被配置为对存储在存储装置1408处的任何记录(包括对已经由聚合逻辑1479重建的记录)执行一个或多个操作(例如,数据选择操作)。在一些实施例中,一个或多个存储装置1408还可包括数据恢复逻辑,数据恢复逻辑可被配置为将修改的数据组块恢复为一个或多个处理元件1429可对其执行操作的形式。例如,如果修改的数据组块被加密,则数据恢复逻辑可对修改的数据组块进行解密,如果修改的数据组块被压缩,则数据恢复逻辑可对修改的数据组块进行解压缩等。一个或多个存储装置1408还可包括存储介质1430,存储介质1430可用于存储包括由对象存储服务器1404和/或一个或多个存储节点1406发送的一个或多个修改的数据组块的任何数据。
图15示出根据公开的示例实施例的具有空间局部性和分层聚合的对象存储系统的示例实施例。图15中示出的实施例可用于例如实现图14中示出的系统。图15中示出的系统可包括通过存储网络连接的一个或多个存储节点1506(例如,存储节点1506A和存储节点1506B)以及对象存储服务器1504。一个或多个计算存储装置1508(例如,计算存储装置1508A至1508E)可被安装在每个存储节点1506处,并且连接到每个存储节点1506。
出于说明的目的,计算存储装置1508A、1508B、1508C和1508D被示出为用如上所述的数据恢复逻辑和/或处理元件来实现,数据恢复逻辑和/或处理元件可使存储装置能够恢复单独修改的数据组块1535,例如通过解密(以生成解密的数据组块1534)和/或解压缩以生成恢复的数据组块1538,并且对恢复的数据组块1538执行诸如数据选择操作的操作,以从存储在装置上的数据组块中的一个或多个记录获得指定的数据子集1539。然而,原理不限于这些实施方式细节,并且可应用于可对存储在任何类型的计算存储装置上的任何类型的数据组块执行的任何类型的操作。出于说明的目的,在此描述的一些实施例可实现固定大小的数据组块(例如,如可与基于块的存储装置一起使用的),然而,原理也可应用于可实现可变大小的数据组块(例如,如可与KV存储装置一起使用)的实施例。
在图15中示出的实施例中,存储装置可存储数据组块1564A至1564F,数据组块1564A至1564F可包括与表1中示出的数据类似的数据,但被划分为更小的组块。因此,第一存储装置1508A可存储连续组块1564A和1564B,第二存储装置1508B可存储连续组块1564C和1564D,第三存储装置1508C可存储连续组块1564E和1564F,等等。在存储于单个存储装置处的两个数据组块之间拆分的记录的片段由粗斜体型指示。存储在同一存储节点处的不同存储装置上的两个数据组块之间拆分的记录的片段由单下划线指示。在存储于不同存储节点处的存储装置上的两个数据组块之间拆分的记录的片段由双下划线指示。
因为第一记录(由索引1指示)被完全包含在组块1564A内,所以第一存储装置1508A可在不进行聚合的情况下对第一记录执行数据选择操作。第一存储装置1508A可对第二记录(由索引2指示)的片段进行聚合以重建第二记录,并且对重建的记录执行数据选择操作。第一存储装置1508A可将选择操作的结果发送到第一存储节点1506A的处理单元1578A,并且处理单元1578A将选择操作的结果发送到对象存储服务器1504。可选地,第一存储装置1508A可将选择操作的结果1565直接发送到对象存储服务器1504。然而,因为在第一存储装置1508A处仅存在第三记录(由索引3指示)的第一片段,所以该存储装置处的解析器可能失败并将部分数据(例如,第三记录的第一片段)返回给第一存储节点1506A的处理单元1578A,处理单元1578A可将第三记录的第一片段加载到第一聚合缓冲器1580A中。
第二存储装置1508B可将第三记录的第二片段返回给第一存储节点1506A的处理单元1578A,处理单元1578A可将第三记录的第二片段加载到第一聚合缓冲器1580A中,从而重建第三记录。然后,处理单元1578A可对第三记录执行数据选择操作,并且将结果1581发送到对象存储服务器1504。
因为第四记录(由索引4指示)被完全包含在组块1564C内,所以第二存储装置1508B可在不进行聚合的情况下对第四记录执行数据选择操作。第二存储装置1508B可对第五记录(由索引5指示)的片段进行聚合以重建第五记录,并且对重建的记录执行数据选择操作。第二存储装置1508B可将选择操作的结果发送到第一存储节点1506A的处理单元1578A,并且处理单元1578A可将选择操作的结果发送到对象存储服务器1504。可选地,第二存储装置1508B可将选择操作的结果直接发送到对象存储服务器1504。然而,因为在第二存储装置1508B处仅存在第六记录(由索引6指示)的第一片段,所以存储装置处的解析器可能失败并将部分数据(例如,第六记录的第一片段)返回给第一存储节点1506A的处理单元1578A,处理单元1578A可将第三记录的第一片段加载到第二聚合缓冲器1580B中。
第三存储装置1508C可将第六记录的第二片段返回给第一存储节点1506A的处理单元1578A,处理单元1578A可将第六记录的第二片段加载到第二聚合缓冲器1580B中,从而重建第六记录。然后,处理单元1578A可对重建的第六记录执行数据选择操作,并且将结果1581发送到对象存储服务器1504。
第三存储装置1508C可对第七记录(由索引7指示)的片段进行聚合以重建第七记录,并对重建的第七记录执行数据选择操作。因为第八记录(由索引8指示)被完全包含在组块1564F内,所以第三存储装置1508C可在不进行聚合的情况下对第八记录执行数据选择操作。第三存储装置1508C可将选择操作的结果发送到对象存储服务器1504。
因为在第三存储装置1508C处仅存在第九记录(由索引9指示)的第一片段,所以存储装置处的解析器可能失败。然而,因为在第一存储节点1506A处的任何存储装置1508处可能没有与数据组块1564F连续的其他数据组块,所以第三存储装置1508C可将部分数据(例如,第九记录的第一片段)返回给对象存储服务器1504处的聚合缓冲器1582A。对象存储服务器1504可将第九记录的第二片段从第二存储节点1506B的另一存储装置加载到第一聚合缓冲器1582A中以重建第九记录。然后,对象存储服务器1504可对第九记录执行数据选择操作,以获得可存在于第九记录中的指定的数据子集中的任何一个。
在一些实施例中,对象存储服务器1504处的分配逻辑可分配M个聚合缓冲器,其中,M可指示其可支持的存储节点1506的数量。第i缓冲器可用于对在第i存储节点与第i+1存储节点之间拆分的数据进行重建。
在一些实施例中,一个或多个存储节点1506中的处理单元1578处的聚合逻辑可分配N个聚合缓冲器,其中,N可指示由存储节点支持的存储装置的数量。第j缓冲器可用于对在第j存储装置与第j+1存储装置之间拆分的数据进行重建。在一些实施例中,聚合逻辑可解析重建的数据。在一些实施例中,这可例如使用已经由一个或多个存储装置1508提供的部分配对信息来优化。
因此,图15中示出的系统可实现分层聚合方案,在分层聚合方案中可在两个数据组块之间拆分的记录的片段可在多个层级中的一个层级处被聚合和/或处理,取决于实施方式细节,多个层级中的所述一个层级可处于可能的最低层级,从而减少组件之间的流量。作为另一示例,如图13中所示,计算存储装置可处理组块1与组块2之间的片段以及组块3与组块4之间的片段,一个或多个存储节点可处理组块2与组块3之间的片段以及组块4与组块5之间的片段,并且更高层级的服务器(例如,对象存储服务器)可处理组块6和组块7之间的片段以及组块12和组块13之间的片段。
取决于实施方式细节,根据公开的示例实施例的分层聚合方案可减少网络流量,和/或减少处理分段的组块的延迟。另外,例如,因为一个或多个存储装置、存储节点、对象存储服务器等可并行地执行处理,同时仍然适应数据组块之间的记录的分段,所以根据公开的示例实施例的分层聚合方案可保持或增加并行性。
尽管可在执行数据选择操作的对象存储系统的上下文中描述图15中示出的实施例,但是原理可应用于在一个或多个存储装置、存储节点等本地执行一个或多个数据组块中的一个或多个记录的任何类型的操作的任何类型的存储系统。
图16示出根据公开的示例实施例的用于具有空间局部性和/或分层聚合的存储方案的主机设备的示例实施例。图16中示出的主机1600可用于实现在此公开的任何主机功能。主机1600可用任何组件或组件的组合(诸如,一个或多个客户端、一个或多个对象存储服务器、一个或多个存储节点等、或它们的组合)来实现。
图16中示出的主机设备1600可包括处理器1602、系统存储器1606、主机控制逻辑1608和/或通信接口1610,处理器可包括存储器控制器1604。图16中示出的任何或全部组件可通过一个或多个系统总线1612进行通信。在一些实施例中,图16中示出的一个或多个组件可使用其他组件来实现。例如,在一些实施例中,主机控制逻辑1608可由执行存储在系统存储器1606或其他存储器中的指令的处理器1602来实现。
主机控制逻辑1608可包括和/或实现在此公开的包括以下项的主机功能中的任何功能:数据分块逻辑426、526和/或826、数据修改逻辑427和/或527、压缩逻辑846、加密逻辑847、纠删码逻辑848、数据选择逻辑849、集群管理逻辑850、节点和存储装置管理逻辑851、处理单元852、数据分布逻辑1474、聚合逻辑1475和/或1477、处理单元1476、1478和/或1578、缓冲器1580、1582等。
图17示出根据公开的示例实施例的具有空间局部性和/或分层聚合的存储装置的示例实施例。图17中所示的存储装置1700可用于实现在此公开的任何存储装置功能。存储装置1700可包括装置控制器1702、介质转换层1704、存储介质1706、计算资源1708、处理控制逻辑1716和通信接口1710。图17中示出的组件可通过一个或多个装置总线1712进行通信。在可将闪存用于存储介质1706中的一些或全部的一些实施例中,介质转换层1704可部分或完全地实现为闪存转换层(FTL)。
在一些实施例中,处理控制逻辑1716可用于实现在此公开的包括以下项的存储装置功能中的任何功能:数据恢复逻辑428和/或528、处理元件429、529和/或1429、指示逻辑531、数据选择引擎853、解密逻辑854、解压缩逻辑855、数据选择逻辑856、键值逻辑857、聚合逻辑1479等。
如上所述,可用执行存储在任何类型的存储器中的指令的硬件、软件或它们的任何组合(包括组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器、状态机、易失性存储器(诸如,DRAM和/或SRAM)、非易失性存储器和/或它们的任何组合、CPLD、FPGA、ASIC、CPU(包括诸如x86处理器的CISC处理器和/或诸如ARM处理器的RISC处理器)、GPU、NPU等)来实现在此描述的任何功能,包括在此描述的主机(例如,客户端、存储服务器、存储节点等)功能、存储装置功能等中的任何功能,诸如,数据分块逻辑426、526和/或826、数据修改逻辑427和/或527、压缩逻辑846、加密逻辑847、纠删码逻辑848、数据选择逻辑849、集群管理逻辑850、节点和存储装置管理逻辑851、处理单元852、恢复逻辑428和/或528、处理元件429、529和/或1429、指示逻辑531、数据选择引擎853、解密逻辑854、解压缩逻辑855、数据选择逻辑856、键值逻辑857、数据分布逻辑1474、聚合逻辑1475和/或1477、处理单元1476、1478和/或1578、缓冲器1580、1582、聚合逻辑1479等。在一些实施例中,一个或多个组件可被实现为片上系统(SOC)。
图18示出根据公开的示例实施例的用于计算存储的方法的实施例。该方法可在操作1802开始。在操作1804,该方法可在存储装置处存储数据的两个或更多个部分,其中,数据的两个或更多个部分中的第一部分包括记录的第一片段,并且数据的两个或更多个部分中的第二部分包括记所述录的第二片段。例如,可在两个存储装置处跨数据的两个部分拆分所述记录。在操作1806,该方法可由存储装置对所述记录的第一片段和第二片段执行操作。例如,该操作可以是可找到由客户端请求的数据的子集的数据选择操作。该方法可在操作1808结束。
图18中示出的实施例以及在此描述的其他实施例中的全部是示例操作和/或组件。在一些实施例中,可省略一些操作和/或组件,和/或可包括其他操作和/或组件。此外,在一些实施例中,可改变操作和/或组件的时间和/或空间次序。尽管一些组件和/或操作可被示出为单独的组件,但是在一些实施例中,单独示出的一些组件和/或操作可被集成到单个组件和/或操作中,和/或示出为单个组件和/或操作的一些组件和/或操作可用多个组件和/或操作来实现。
图19示出根据公开的示例实施例的具有空间局部性和分层聚合的对象存储系统和使用存储系统的方法的另一示例实施例。图19中示出的实施例可包括服务器1904、第一存储节点1906A和第二存储节点1906B、第一存储装置1908A、第二存储装置1908B和第三存储装置1908C。服务器1904和存储节点1906A和1906B(其也被称为存储节点1906)可通过存储网络(未示出)连接。在图19的示例中,第一存储装置1908A和第二存储装置1908B可位于第一存储节点1906A处,并与第一存储节点1906A连接,并且第三存储装置1908C可位于第二存储节点1906B处,并与第二存储节点1906B连接。
使用图19中示出的系统的计算存储的方法可包括在第一存储装置1908A处存储数据的两个部分1964A和1964B,其中,数据的第一部分1964A可包括第一记录的第一片段1991A,并且数据的第二部分1964B可包括第一记录的第二片段1991B。该方法还可包括由存储装置1908A对共同示出为1991的记录的第一片段和第二片段执行第一操作1990-1。
另外或可选地,该方法可包括在第一存储装置1908A处存储数据的第三部分1964C,其中,数据的第三部分1964C可包括第二记录的第一片段1992A,并且数据的第四部分1964D可包括第二记录的第二片段1992B。该方法还可包括由第一存储节点1906A对共同示为1992的第二记录的第一片段和第二片段执行第二操作1990-2。在一些实施例中,数据的第四部分1964D可被存储在第二存储装置1908B处。
另外或可选地,该方法可包括在第二存储装置1908B处存储数据的第五部分1964E,其中,数据的第五部分1964E可包括第三记录的第一片段1993A,并且数据的第六部分1964F可包括第三记录的第二片段1993B。该方法还可包括由服务器1904对共同示为1993的第三记录的第一片段和第二片段执行第三操作1990-3。在一些实施例中,数据的第六部分1964F可被存储在第二存储节点1906B处的第三存储装置1908C处。
在一些实施例中,数据的部分1964A至1964F中的一个或多个可以是数据的连续部分。在一些实施例中,图19中示出的记录的片段、数据的部分、存储装置、存储节点、服务器等可以以无限制的不同变型布置。例如,第二记录的第一片段1992A可被存储在数据的第二部分1964B中,并且数据的第三部分1964C可被省略。作为另一示例,数据的第三部分1964C可被存储在第二存储装置1908B中,并且第二操作1990-2可在第二存储装置1908B处被执行。
已经在各种实施方式细节的上下文中描述了上面公开的一些实施例,但是本公开的原理不限于这些或任何其他特定的细节。例如,一些功能已经被描述为由特定组件实现,但是在其他实施例中,功能可分布在位于不同位置并且具有各种用户接口的不同系统与组件间。特定实施例已经被描述为具有特定的处理、操作等,但是这些术语还包含特定的处理、操作等可用多个处理、操作等来实现的实施例,或者多个处理、操作等可被集成到单个处理、操作等中的实施例。对组件或元件的引用可仅表示组件或元件的部分。例如,对块的引用可表示整个块或者一个或多个子块。除非另外从上下文清楚,否则在本公开和权利要求中使用诸如“第一”和“第二”的术语可仅出于将它们所修饰的事物区分开的目的,并且可不指示任何空间次序或时间次序。在一些实施例中,对事物的引用可表示事物的至少一部分,例如,“基于”可表示“至少部分地基于”等。对第一元件的引用并不表示第二元件的存在。在此公开的原理具有独立的效用并且可被单独实现,并且不是每个实施例都可以利用每个原理。然而,原理还可以以各种组合来实现,各种组合中的一些可以以协同的方式放大各个原理的益处。
上面描述的各种细节和实施例可被组合以产生根据本专利公开的发明原理的附加实施例。由于在不脱离发明构思的情况下,本专利公开的发明原理可在布置和细节上进行修改,因此这样的改变和修改被认为落入所附权利要求的范围内。
- 用于增强存储设备的服务质量的存储系统、方法和非暂态计算机可读介质
- 用于调整、制造、以及操作无线电收发信机、移动收发信机、基站收发信机的调整电路和装置、方法、以及计算机程序、和用于计算机程序或指令的存储设备
- 节点信息的修改方法、装置及计算机可读存储介质
- 流程节点处理方法、装置、计算机设备及存储介质
- 基于微表情的节点信息处理方法、装置、计算机设备及存储介质
- 网络存储节点、网络存储系统以及用于网络存储节点的装置和方法
- 网络存储节点、网络存储系统以及用于网络存储节点的装置和方法