一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于划分和压缩数据的系统、方法和装置与流程

2023-02-19 13:56:08 来源:中国专利 TAG:

用于划分和压缩数据的系统、方法和装置
1.相关申请的交叉引用
2.本技术要求2021年8月10日提交的标题为“object processing and filtering for computational storage”的美国临时专利申请第63/231,709号(通过引用合并于此)、2021年8月10日提交的标题为“data placement with spatial locality and hierarchical aggregation for computational storage”的美国临时专利申请第63/231,711号(通过引用合并于此)、2021年8月10日提交的标题为“integrated data chunking and compression for near data processing”的美国临时专利申请第63/231,710号(通过引用合并于此)以及2021年8月10日提交的标题为“integrated data chunking and encryption for near data processing”的美国临时专利申请第63/231,715号(通过引用合并于此)的优先权和权益。
技术领域
3.本发明一般涉及计算存储系统,更具体地,涉及用于划分和压缩数据的系统、方法和装置。


背景技术:

4.计算存储设备可以包括一个或多个处理资源,这些资源可以对存储在该设备处的数据进行操作。例如,通过向存储设备发送指示要对存储在该设备处的数据执行的操作的命令,主机可以将处理任务卸载到存储设备。存储设备可以使用一个或多个处理资源来执行命令。存储设备可以向主机发送操作结果和/或将结果存储在设备处。
5.本背景技术部分中披露的上述信息仅用于增强对本发明原理背景的理解,因此可能包含不构成现有技术的信息。


技术实现要素:

6.一种用于数据压缩的方法可以包括:接收输入数据;在输入数据中查找定界符;基于定界符在输入数据中的位置,使用输入数据的一部分生成数据的一部分;以及压缩数据的一部分。输入数据可以包括记录,定界符指示记录的边界,数据的一部分可以包括记录。定界符的位置可以在输入数据的一部分中。生成数据的一部分可以包括基于输入数据的一部分的子集生成数据的一部分。输入数据的一部分可以是输入数据的第一部分,并且定界符的位置可以在输入数据的第二部分中。生成数据的一部分可以包括基于输入数据的第一部分和输入数据的第二部分生成数据的一部分。输入数据的一部分的大小可以基于默认部分大小。该方法还可以包括基于定界符的位置修改数据的一部分的大小。修改数据的一部分的大小可以包括扩展数据的一部分的大小。接收可以包括接收输入数据流。在输入数据中查找定界符可以包括对输入数据执行第一扫描操作,压缩数据的一部分可以包括对数据的一部分执行第二扫描操作。
7.一种用于数据压缩的方法可以包括:扫描输入数据;基于扫描执行压缩操作以使
用输入数据生成压缩数据;基于扫描在输入数据中查找定界符;以及基于定界符在输入数据中的位置,使用压缩数据生成数据的一部分。输入数据可以包括记录,定界符指示记录的边界,数据的一部分可以包括记录。生成可以包括基于部分大小生成数据的一部分。部分大小可以是默认部分大小。部分大小可以基于默认部分大小和输入数据中匹配的长度。匹配可以包括定界符。定界符可以是第一定界符,该方法还可以包括保持第一定界符,并在输入数据中查找第二定界符,其中生成可以包括基于第一定界符和第二定界符生成数据的一部分。该方法还可以包括基于压缩数据的大小设置指示。该指示可以包括终止指示。生成可以包括基于指示和定界符生成数据的一部分。扫描可以包括基于指示扫描输入数据。扫描可以包括基于定界符扫描输入数据。执行可以包括基于定界符执行压缩操作。输入数据可以包括输入数据流。压缩操作可以包括基于流的压缩操作。
8.一种系统可以包括主机,该主机包括被配置为:对输入数据执行扫描操作;基于扫描操作,执行数据压缩操作以使用输入数据生成压缩数据;基于扫描操作在输入数据中查找定界符;以及基于定界符,使用压缩数据生成数据的一部分的主机逻辑。主机逻辑还可以被配置为基于默认部分大小和定界符在输入数据中的位置生成数据的一部分。定界符可以是第一定界符,并且主机逻辑还可以被配置为基于第二定界符在输入数据中的位置生成数据的一部分。该系统还可以包括被配置为从主机接收数据的一部分的设备,该设备包括被配置为解压缩数据的一部分以生成数据的解压缩部分,并对数据的解压缩部分执行操作的设备逻辑。
9.一种用于数据加密的方法可以包括:接收输入数据;在输入数据中查找定界符;基于定界符在输入数据中的位置,使用输入数据的一部分生成数据的一部分;以及加密数据的一部分。输入数据可以包括记录,定界符指示记录的边界,数据的一部分可以包括记录。定界符的位置可以在输入数据的一部分中。生成数据的一部分可以包括基于输入数据的一部分的子集生成数据的一部分。输入数据的一部分可以是输入数据的第一部分,并且定界符的位置可以在输入数据的第二部分中。生成数据的一部分可以包括基于输入数据的第一部分和输入数据的第二部分生成数据的一部分。输入数据的一部分的大小可以基于默认部分大小。该方法还可以包括基于定界符的位置修改数据的一部分的大小。修改数据的一部分的大小可以包括扩展数据的一部分的大小。接收输入数据可以包括接收输入数据流。在输入数据中查找定界符可以包括对输入数据执行第一扫描操作,加密数据的一部分可以包括对数据的一部分执行第二扫描操作。
10.一种用于数据加密的方法可以包括:扫描输入数据;基于扫描执行加密操作以使用输入数据生成加密数据;基于扫描在输入数据中查找定界符;以及基于定界符在输入数据中的位置,使用加密数据生成数据的一部分。输入数据可以包括记录,定界符指示记录的边界,数据的一部分可以包括记录。生成可以包括基于部分大小生成数据的一部分。部分大小可以是默认部分大小。生成可以包括基于定界符在输入数据中的位置扩展数据的一部分的大小。加密操作可以包括基于块的加密操作,执行可以包括对输入数据的第一块执行加密操作以生成加密数据的第一块。定界符可以位于输入数据的第二块中,该方法还包括基于定界符的位置扩展数据的一部分的大小。该方法还可以包括基于输入数据的第二块的大小扩展数据的一部分的大小。扩展可以包括基于输入数据的第二块的大小填充数据的一部分。输入数据的第二块的大小可以基于加密操作的密钥长度。执行还可以包括对输入数据
的第二块执行加密操作以生成加密数据的第二块。生成可以包括使用加密数据的第一块和加密数据的第二块生成数据的一部分。
11.一种系统可以包括主机,该主机包括被配置为:对输入数据执行扫描操作;基于扫描操作执行数据加密操作以使用输入数据生成加密数据;基于扫描操作在输入数据中查找定界符;以及基于定界符使用加密数据生成数据的一部分的主机逻辑。主机逻辑还可以被配置为基于默认部分大小和定界符在输入数据中的位置生成数据的一部分。主机逻辑还可以被配置为基于加密操作的密钥长度生成数据的一部分。该系统还可以包括被配置为从主机接收数据的一部分的设备,该设备包括被配置为解密数据的一部分以生成数据的解密部分并对数据的解密部分执行操作的设备逻辑。
12.一种划分数据的方法可以包括:扫描输入数据;基于扫描使用输入数据执行操作以生成处理数据;基于扫描在输入数据中查找定界符;以及基于定界符在输入数据中的位置使用处理数据生成数据的一部分。该操作可以包括数据压缩操作。该操作可以包括数据加密操作。生成可以包括基于默认部分大小生成数据的一部分。输入数据可以包括输入数据流,并且操作可以包括基于流的操作。该操作可以包括基于块的操作。执行可以包括使用输入数据组块执行操作。生成可以包括基于定界符在输入数据中的位置修改数据的一部分。修改可以包括扩展数据的一部分。扩展可以包括基于操作的块大小扩展数据的一部分。扩展可以包括填充数据的一部分。
13.一种系统可以包括主机,该主机包括被配置为:对输入数据执行扫描操作;基于扫描操作执行处理操作以使用输入数据生成处理数据;基于扫描操作在输入数据中查找定界符;以及基于定界符使用处理数据生成数据的一部分的主机逻辑。主机逻辑还可以被配置为基于默认部分大小和定界符在输入数据中的位置生成数据的一部分。该系统还可以包括被配置为从主机接收数据的一部分的设备,该设备包括被配置为恢复数据的一部分以生成数据的恢复部分并对数据的恢复部分执行操作的设备逻辑。
附图说明
14.附图不一定按比例绘制,出于说明目的,类似结构或功能的元件通常可以用类似的参考号或其部分表示。附图仅旨在帮助描述本文所述的各种实施例。附图并没有描述本文公开的教导的每个方面,也没有限制权利要求的范围。为了防止附图变得模糊,并非所有组件、连接等都可以显示,并且并非所有组件都可以具有参考号。然而,组件配置的模式可以从附图中显而易见。附图与说明书一起说明了本发明的示例实施例,并且与说明书一起用于说明本发明的原理。
15.图1a示出了根据本发明示例实施例的具有服务器侧加密的对象存储方案的实施例。
16.图1b示出了根据本发明示例实施例的具有客户端侧加密的对象存储方案的实施例。
17.图2a示出了根据本发明示例实施例的可以将对象返回到用户设备的对象存储方案的实施例。
18.图2b示出了根据本发明示例实施例的具有数据选择特征的对象存储方案的实施例。
19.图3a示出了根据本发明示例实施例的具有数据选择特征的对象存储方案的写入操作的实施例。
20.图3b示出了根据本发明示例实施例的具有数据选择特征的对象存储方案的读取操作的实施例。
21.图4示出了根据本发明示例实施例的具有本地数据恢复的存储系统的实施例。
22.图5示出了根据本发明示例实施例的具有本地数据恢复的存储系统的另一实施例。
23.图6a示出了根据本发明示例实施例的具有本地数据恢复和服务器侧加密的存储方案的写入操作的示例实施例。
24.图6b示出了根据本发明示例实施例的具有本地数据恢复和客户端侧加密的存储方案的写入操作的示例实施例。
25.图7a示出了根据本发明示例实施例的具有本地数据恢复的存储方案的写入操作的示例实施例。
26.图7b示出了根据本发明示例实施例的具有本地数据恢复的存储方案的具有数据选择的读取操作的示例实施例。
27.图8示出了根据本发明示例实施例的具有本地数据恢复的对象存储方案的系统架构的示例实施例。
28.图9a示出了根据本发明示例实施例的具有本地数据恢复的存储方案的读取和/或写入操作的示例实施例。
29.图9b示出了根据本发明示例实施例的具有本地数据恢复和数据选择操作的存储方案的读取操作的示例实施例。
30.图10示出了根据本发明的示例实施例的来自表1的数据在三个计算存储设备处跨三个数据组块的分布的实施例。
31.图11示出了根据本发明的示例实施例的存储系统的示例实施例,其中服务器可以重构在不同存储设备处的数据组块之间划分的记录。
32.图12示出了根据本发明示例实施例的用于将数据划分为组块和压缩数据的内容感知方法的实施例。
33.图13示出了根据本发明示例实施例的压缩数据的方法的实施例。
34.图14示出了可通过图13所示方法执行的操作的实施例。
35.图15示出了根据本发明示例实施例的集成分组和压缩方案的实施例。
36.图16示出了根据本发明的示例实施例的可以通过图15所示的方案执行的集成分组和压缩方法的实施例。
37.图17示出了根据本发明示例实施例的集成分组和压缩方案的另一实施例。
38.图18示出了根据本发明的示例实施例的可以通过图17所示的方案执行的集成分组和压缩方法的实施例。
39.图19示出了根据本发明示例实施例的集成分组和压缩方法的另一实施例。
40.图20示出了根据本发明示例实施例的具有集成分组和压缩的系统的实施例。
41.图21示出了根据本发明示例实施例的用于将数据划分为组块并加密数据的内容感知方法的实施例。
42.图22示出了根据本发明的示例实施例的可用于加密数据技术的分组密码方法的示例实施例。
43.图23示出了根据本发明示例实施例的集成数据分组和加密方案的实施例。
44.图24示出了根据本发明示例实施例的集成数据分组和加密方法的实施例。
45.图25示出了根据本发明示例实施例的具有集成分组和加密的系统的实施例。
46.图26示出了根据本发明示例实施例的具有数据组块修改的存储方案的主机装置的示例实施例。
47.图27示出了根据本发明示例实施例的具有数据组块修改的存储设备的示例实施例。
48.图28示出了根据本发明示例实施例的用于数据压缩的方法的实施例。
49.图29示出了根据本发明示例实施例的用于数据加密的方法的实施例。
50.图30示出了根据本发明示例实施例的用于数据分组的方法的实施例。
具体实施方式
51.对象存储系统可以实现数据选择特征,该特征可以使用户的设备能够请求指定的数据子集以从存储对象中检索。为了处理这样的请求,存储服务器可以从存储在一个或多个存储设备上的一个或多个数据的一部分重构对象。如果对象已加密,存储服务器也可以对其进行解密,和/或如果对象已压缩,存储服务器也可以对其进行解压缩以将其恢复为原始形式。存储服务器可以对恢复的对象执行一个或多个选择操作,诸如过滤、扫描等,以查找用户设备请求的指定数据子集。存储服务器可以将请求的数据子集返回给用户的设备。
52.在一些方面,计算存储设备可以对存储在设备上的对象执行一个或多个选择操作,诸如过滤、扫描等。然而,如果对象的一部分存储在设备上,并且在将数据划分为多个部分之前修改了对象(例如,压缩、加密等),则存储在设备上的部分可以仅包括存储设备可能无法恢复(例如解压缩和/或解密)到原始数据的随机(到设备)信息。因此,存储设备可能无法本地地对存储在设备处的数据的一部分执行有意义的操作。
53.本发明涵盖了与计算存储相关的若干原理。本文公开的原理可以具有独立的实用性,并且可以单独实现,并且不是每个实施例都可以利用每个原理。此外,这些原理还可以体现在各种组合中,其中一些组合可能以协同方式放大个别原理的一些益处。
54.本文公开的一些原理涉及在对一个或多个部分执行一个或多个修改之前将数据划分为一个或多个部分。例如,在根据本发明示例实施例的计算存储方案中,在对数据执行诸如压缩和/或加密的修改之前,可以将对象或其他原始数据划分为数据的部分。可以单独修改数据的一个或多个部分(例如,可以对数据的单个部分执行压缩和/或加密),并且可以将数据的一部分的修改版本发送到计算存储设备以进行存储和/或处理。例如,通过解密和/或解压缩数据的修改部分,存储设备可以从数据的修改部分生成数据的部分的恢复版本。存储设备可以本地地对数据的恢复部分执行操作(例如,选择操作)。
55.取决于实现细节,在计算存储设备处本地地执行选择操作可以减少可能从一个或多个存储设备发送到服务器的数据量。此外,取决于实现细节,计算存储设备可以比服务器更有效地执行诸如选择操作的操作。
56.在根据本发明的一些示例实施例中,存储设备、存储服务器等可以提供如何将原
始数据划分为多个部分和/或如何修改这些部分,以便于一个或多个计算存储设备进行存储和/或处理的一个或多个指示。例如,在一些实施例中,指示可以包括存储设备支持的信息,诸如一个或多个部分大小、压缩算法、加密算法等。在一些实施例中,一个或多个指示可以是强制性的、可选的(例如,建议性的)或其组合。例如,用于在特定存储设备上存储的最佳部分大小的指示可能是建议性的,而支持的压缩算法的指示可能是强制性的,以使得存储设备能够解压缩数据的一部分以在设备处进行本地处理。
57.本文公开的任何操作包括划分数据、修改数据(例如,压缩和/或加密数据)、擦除编解码数据、存储数据、处理数据、选择数据等,可以根据本发明的示例实施例,以无限配置在各种装置之间分布(例如映射)。例如,在一些实施例中,客户端可以将原始数据(例如,对象)划分为一个或多个部分,压缩数据的一部分,并将数据的压缩部分发送给服务器。服务器可以加密数据的压缩部分,并跨一个或多个存储设备存储数据的压缩和加密部分。作为另一个示例,在一些实施例中,客户端可以将原始数据(例如,对象)划分为一个或多个部分,压缩和加密数据的一部分,并将压缩和加密的数据的一部分发送到服务器以跨一个或多个存储设备进行存储。作为进一步的示例,客户端可以将原始数据(例如,对象)发送到服务器,服务器可以将数据划分为一个或多个部分,并对数据的一部分进行压缩、加密和/或执行擦除编解码,并跨一个或多个存储设备存储数据的单独修改部分。
58.本发明的一些附加原理涉及用于将数据划分为多个部分的内容感知技术。例如,在一些实施例中,可以通过分析部分的内容来动态确定部分大小,以在被划分的数据内查找记录的边界(例如,由定界符指示)。可以确定部分大小以与部分内的一个或多个完整记录对齐。例如,如果具有默认部分大小的数据的一部分包括部分记录,则可以修改(例如,扩展或减小)该部分的大小,使该部分以该部分内记录的定界符结束(例如,该部分可能仅包括完整记录)。所得自包含部分可以作为一个单元进行压缩和/或加密。
59.根据本发明示例实施例的一些附加的内容感知数据划分技术可以将数据划分操作与另一个操作集成,该操作可以扫描要划分的数据。例如,在一些实施例中,数据划分操作可以与数据压缩操作相结合,以便在扫描输入数据流以进行压缩时,还可以扫描输入数据流以查找指示一个或多个记录的一个或多个边界的一个或多个定界符。数据的一部分的大小可以由一个或多个定界符的位置确定,因此该部分结束在记录的结束处。在一些实施例中,数据压缩操作也可以在该部分的结束处终止。取决于实现细节,这可能会改善数据划分操作的效率,因为它可能利用已经为压缩目的执行的数据扫描。
60.作为另一个示例,在一些实施例中,数据划分操作可以与数据加密操作相结合。在为加密目的读取输入数据流时,还可以扫描输入数据流以查找一个或多个定界符,这些定界符指示一个或多个记录的一个或多个边界。数据的一部分的大小可以由一个或多个定界符的位置确定,因此该部分结束在记录的结束处。在一些实施例中,数据加密操作也可以在该部分的结束处终止。如果使用分组密码算法实现加密操作,则可以修改(例如,扩展或减小)部分的大小,使部分的结束与块的结束对齐(如果数据的大小不是块大小的偶数倍,则可以填充)。
61.在一些实施例中,数据的一部分也可以称为数据组块,将数据划分为部分或数据组块可以称为分组数据。在一些实施例中,例如,为了在一个或多个存储设备处存储的目的,数据的一部分或组块可指可通过划分数据获得的任何数据单元。在一些情况下,如果原
始数据量小于或等于部分或组块大小(例如,默认部分或组块大小),则通过划分或分组操作生成的原始数据单元仍可称为数据的部分或组块,即使其大小与原始数据量相同。
62.为了说明的目的,可以在对象存储系统的上下文中描述一些实施例,这些对象存储系统可以实现数据选择功能和/或可以将数据存储在一个或多个键值(kv)存储设备中。然而,本发明中描述的原理不限于任何特定的数据格式、数据处理特征、存储设备接口等。例如,根据本发明示例实施例的系统、方法和/或装置也可以使用存储系统来实现,这些存储系统可以提供文件存储、数据库存储、块存储等,可以实现任何类型的处理特征,诸如加速、图形处理、图样处理、机器学习等,并且可以与任何类型的存储设备(包括kv存储设备、块存储设备等)一起操作。
63.对象存储系统可以使用户的设备能够以对象的形式存储数据。以对象形式的数据可以在存储之前以各种方式修改。例如,可以压缩数据以减少其在存储介质中占用的空间量和/或减少将数据从客户端传输到一个或多个存储设备(例如,通过网络)所需的时间、带宽、功率等。作为另一个示例,可以对以对象形式的数据进行加密,以防止在数据的传输和/或存储期间对数据进行未经授权的访问。
64.对象可以包括相对大量的数据,因此,出于可靠性、可访问性和/或类似目的,可以将该对象划分为可跨多个存储设备存储的组块。(将数据划分为组块也可称为分组数据。)例如,在压缩和/或加密之后,可以将对象划分为固定大小的组块,以适合存储系统中一个或多个基于块的存储设备使用的块大小。在一些实施例中,擦除编解码方案可用于将数据划分为数据组块,并生成一个或多个奇偶校验组块,以使存储系统能够恢复丢失或损坏的数据组块。
65.图1a示出了根据本发明示例实施例的具有服务器侧加密的对象存储方案的实施例。图1a的左侧示出了在读取和/或写入操作期间系统组件之间的数据流,图1a的右侧示出了在写入操作期间对数据的操作。
66.图1a的左侧所示的系统可以包括客户端102、一个或多个服务器104(可统称为服务器)和一个或多个存储设备108(可统称为存储)。图1a的右侧所示的操作在由客户端102执行的第一组110a和由服务器104执行的第二组112a中示出。
67.在写入操作期间,客户端102可以从原始数据114开始,原始数据114可以是例如对象。客户端102可以对原始数据114执行一个或多个压缩操作,以生成压缩数据116。客户端102可以将压缩数据116发送到服务器104,服务器104可以加密压缩数据116以生成加密数据118。服务器104可以将压缩和加密的数据118划分为一个或多个数据组块120,并将一个或多个数据组块120发送到一个或多个存储设备108。在一些实施例中,服务器104可以对一个或多个数据组块120执行擦除编解码,以生成一个或多个奇偶校验组块121,该奇偶校验组块121也可以存储在一个或多个存储设备108上。
68.在读取操作期间,可以反向执行图1a中所示的操作。例如,服务器104可以从一个或多个存储设备108读取一个或多个数据组块120。如果其中一个数据组块丢失或损坏(例如,由于存储设备故障),服务器104可以使用一个或多个奇偶校验组块121恢复丢失或损坏的数据组块。服务器104可以从数据组块120重构压缩和加密的数据118。服务器104可以解密压缩和加密的数据118,并将压缩和解密的数据116发送给客户端102。客户端102可以解压缩压缩和解密的数据116以恢复原始数据114,原始数据114可以是例如对象。
69.图1b示出了根据本发明示例实施例的具有客户端侧加密的对象存储方案的实施例。图1b的左侧示出了在读取和/或写入操作期间系统组件之间的数据流,图1b的右侧示出了在写入操作期间对数据的操作。
70.图1b的左侧所示的系统和图1b的右侧所示的操作可以包括一些组件和/或操作,这些组件和/或操作可能类似于图1a中所示的组件和/或操作,并且可以由相同或类似的标号表示。然而,在图1b所示的实施例中,客户端102可以加密压缩数据116以生成压缩和加密数据118,如客户端102执行的第一组110b操作所示。客户端102可以将压缩和加密数据118发送到服务器104,服务器104可以将压缩和加密数据118划分为一个或多个数据组块120,如服务器104执行的第二组操作112b所示。服务器104可以将一个或多个数据组块120发送到一个或多个存储设备108。在一些实施例中,服务器104可以对一个或多个数据组块120执行擦除编解码,以生成一个或多个奇偶校验组块121,该奇偶校验组块121也可以存储在一个或多个存储设备108上。
71.在读取操作期间,可以反向执行图1b中所示的操作。例如,服务器104可以从数据组块120重构压缩和加密的数据118(如果需要,使用一个或多个奇偶校验组块121恢复任何丢失或损坏的数据组块),并将压缩和加密的数据118发送给客户端102。可以解密压缩和加密数据118以生成压缩和解密数据116。客户端102可以解压缩压缩和解密的数据116以恢复原始数据114,原始数据114可以是例如对象。
72.图1a和图1b中所示的实施例仅为示例实施例,组件和/或操作的数量、顺序和/或布置可以改变。例如,在一些实现中,原始数据114可以在没有压缩和/或加密的情况下存储。在一些实施例中,一个或多个服务器104可以用被配置为对象存储服务器的第一服务器和被配置为存储服务器(也称为存储节点)的第二服务器来实现,以管理一个或多个存储设备108。因此,第一和第二服务器可以实现对象存储服务。如果对任何或所有原始数据114进行了加密,则可以由存储服务和/或服务的用户生成加密密钥。在一些实施例中,在写入操作结束时或接近写入操作结束时执行分组操作可以使服务器104能够将数据划分为大小可能对应于一个或多个存储设备108的一个或多个组块大小的组块。
73.在一些情况下,与用户的设备关联的用户可能只需要检索对象中存储的数据子集。一些对象存储系统可能需要用户检索整个对象并处理该对象以查找数据子集。这可能导致将相对大量的不需要的数据传输到用户的设备,这反过来可能会消耗不必要的资源,诸如时间、带宽、功率等。
74.为了减少和/或防止传输不需要的数据,一些对象存储系统可以提供数据选择功能,使用户能够请求从存储对象检索指定的数据子集。对象存储系统可以对对象执行扫描、过滤和/或其他数据选择操作,以查找指定的数据子集,而不是将整个对象发送到用户的设备。对象存储系统可以将指定的数据子集返回给用户的设备。
75.图2a示出了根据本发明示例实施例的对象存储方案的实施例,该方案可以将对象返回到用户的设备。图2b示出了根据本发明示例实施例的具有数据选择特征的对象存储方案的实施例。
76.参考图2a,对象存储服务201可以在数据桶或容器205中为用户存储对象203a、203b和203c。如果用户需要从对象203a中的一个检索数据子集(例如,一个或多个记录),则对象存储服务201可以要求用户请求整个对象203a,该对象203a可以通过网络被发送给客
户端计算操作207。客户端计算操作207可以对对象203a执行数据选择操作209,诸如扫描、过滤等,以查找数据子集。客户端计算操作207可以将数据子集用于进一步的操作211。
77.参考图2b,具有数据选择特征的对象存储服务213可以使用户能够从存储对象203a请求数据子集。例如,对象存储服务213可以使用户能够提交请求,例如,通过发送查询(例如,使用数据库语言(例如sql)的表达式),该查询可以对对象203a进行操作,该对象203a可以例如以诸如逗号分隔变量(csv)、javascript对象表示法(json)、拼花(parquet)等的形式存储。在一些实施例中,可以例如使用应用程序编程接口(api)、软件开发工具包(sdk)等将查询发送到对象存储服务213。
78.代替发送整个对象203a,对象存储服务213可以对对象203a执行数据选择操作209,诸如扫描、过滤等,以查找用户在请求中指定的数据子集。对象存储服务213可以将数据子集213a发送到客户端计算操作217以用于进一步的操作211。取决于实现细节,对象存储服务213可以对对象203a执行一个或多个恢复操作219,诸如解压缩、解密等,以反转当存储对象203a时可能已经对其执行的压缩操作、加密操作等。
79.图3a示出了根据本发明示例实施例的具有数据选择特征的对象存储方案的写入操作的实施例。图3b示出了根据本发明示例实施例的具有数据选择特征的对象存储方案的读取操作的实施例。例如,图3a和图3b中所示的实施例可用于实现图2b中所示的对象存储方案。
80.图3a的左侧示出了读取和/或写入操作期间对象存储系统组件之间的数据流,图3a的右侧示出了写入操作期间的数据操作。
81.图3a左侧所示的系统可以包括客户端302、一个或多个服务器304(可统称为服务器)和一个或多个存储设备308(可统称为存储)。图3a的右侧所示的操作在由客户端302执行的第一组310a和由服务器304执行的第二组312a中示出。图3a中所示的组件之间的数据流和/或对数据的操作可以类似于图1a中所示的具有服务器侧加密的实施例或图1b中所示的具有客户端侧加密的实施例,其中具有以相同数字结束的标号的元素可以类似。因此,在图3a中,对于具有客户端侧加密的实现,压缩和加密数据318可以是组310a的一部分,或者对于具有服务器侧加密的实现,可以是组312a的一部分。
82.参考图3b,用户可以从存储在一个或多个存储设备308上的对象或其他原始数据请求数据子集。为了处理这样的请求,服务器304可以从一个或多个存储设备308读取一个或多个数据组块320。如果其中一个数据组块丢失或损坏,则服务器304可以使用一个或多个奇偶校验组块321恢复丢失或损坏的数据组块。服务器304可以从数据组块320重构压缩和加密的数据318。
83.服务器304可解密压缩和加密数据318以生成压缩和解密数据316,其可被解压缩以恢复原始数据314(例如,对象)。服务器304可以对原始数据314执行数据选择操作(例如,扫描、过滤等),以获得请求的数据子集323。服务器304可以将数据子集323发送给客户端302。因为客户端的解压缩操作可能会被绕过,因此它被灰显(grayed-out)。图3b的右侧所示的操作在由服务器304执行的组312b中示出。
84.与图1a和图1b所示的实施例一样,图3a和图3b所示的服务器304可以用被配置为对象存储服务器的第一服务器和被配置为存储服务器以管理一个或多个存储设备308的第二服务器来实现。因此,在一些实施例中,存储服务器可以从一个或多个数据组块320重构
压缩和加密的数据318,并且对象存储服务器可以执行解密、解压缩和/或数据选择操作。此外,尽管图3a和图3b中所示的实施例可以实现服务器侧加密,但其他实施例可以实现客户端侧加密。
85.取决于实现细节,例如,通过减少存储系统和客户端之间传输的数据量,图3a和图3b中所示的实施例可以减少网络业务量。然而,图3a和图3b中所示的架构的数据处理流可以防止存储系统利用计算存储设备(取决于实现细节,计算存储设备可能非常适合执行服务器304执行的部分或全部操作)。例如,在一些实施例中,计算存储设备可以包括处理资源,这些资源可以比服务器中可能存在的通用处理资源更有效地执行解压缩、解密和/或其他操作,诸如数据选择操作。然而,由于原始数据314可以在分组之前修改(例如,压缩、加密等),因此数据组块存储在其上的单个存储设备308可能无法解密、解压缩和/或以其他方式将数据组块恢复到可以在设备处本地执行有意义操作的形式。
86.图4示出了根据本发明示例实施例的具有本地数据恢复的存储系统的实施例。图4所示的系统可以包括主机424和计算存储设备408,它们可以通过连接422进行通信。主机424可以包括数据分组逻辑426(也可以被称为数据划分逻辑)和数据修改逻辑427,数据修改逻辑427可以被配置为以存储设备408可以将数据组块恢复为存储设备可以对其执行数据划分的形式的形式向存储设备408提供一个或多个数据组块。例如,数据分组逻辑426可以在数据修改逻辑427修改之前将对象或其他原始数据划分为一个或多个数据组块。数据分组逻辑426可以是内容感知的,也可以不是内容感知的。例如,在数据分组逻辑426不是内容感知的实施例中,数据分组逻辑426可以将数据划分为固定大小的组块,因此,一个或多个组块可以包括一个或多个记录片段。作为另一个示例,在数据分组逻辑426是内容感知的实施例中,数据分组逻辑426可以在数据中寻找记录定界符,以将数据划分为可变大小的组块,使得组块可以以记录定界符结束,从而以完整记录结束。
87.数据修改逻辑427可以对一个或多个组块单独执行一个或多个数据修改操作,诸如压缩、加密、擦除编解码等,以生成原始数据的一个或多个修改组块。主机424可以将一个或多个修改后的原始数据组块发送到计算存储设备408和/或一个或多个附加计算存储设备以进行存储和/或处理。
88.计算存储设备408可以包括数据恢复逻辑428、一个或多个处理元件429和存储介质430。数据恢复逻辑428可以被配置为将修改后的数据组块恢复到一个或多个处理元件429可以对其执行操作的形式。例如,数据恢复逻辑428可以解密加密的修改后的数据组块,解压压缩的修改后的数据组块,等等。一个或多个处理元件429可以被配置为执行任何类型的操作,诸如数据选择(例如,扫描、滤波等)、计算加速、图形处理、图形处理、机器学习等。存储介质430可用于存储任何数据,包括由主机424发送的一个或多个修改后的数据组块。
89.在一些实施例中,数据恢复逻辑428和/或一个或多个处理元件429可以被配置为响应于在存储设备408处接收的可以包括查询(例如,表达式)的请求,从存储介质430读取和恢复一个或多个数据组块,并返回指定的数据子集,或对恢复数据组块执行任何其他操作。
90.在一些实施例中,恢复数据组块可能与分组之前的原始数据完全相同,也可能不完全相同。例如,如果存储在存储设备424处的数据组块包含诸如银行账户交易、余额等财务信息,并且用户仅请求账户余额,则恢复逻辑428和/或一个或多个处理元件429可能需要
将数据组块恢复为原始形式,以查找准确的账户余额,并将其发送到用户的设备。然而,如果存储在存储设备424处的数据组块包含摄影图像,并且用户请求图像中的特征列表,则恢复逻辑428和/或一个或多个处理元件429可能只需要将图像解压缩到可以使一个或多个处理元件429能够识别用户请求的特征的程度。
91.主机424可以使用任何组件或组件组合来实现,这些组件或组件组合可以以存储设备408可以恢复和/或执行操作的形式向存储设备408提供一个或多个数据组块。例如,在一些实施例中,主机424可以包括客户端、对象存储服务器和/或存储节点。数据分组逻辑426和/或数据修改逻辑427可以以任何方式分布在主机424的任何组件之间。例如,在一些实施例中,数据分组逻辑426可以在客户端处实现,而数据修改逻辑427可以在对象存储服务器和/或存储节点处实现。作为另一示例,数据分组逻辑426和数据修改逻辑427的包括压缩逻辑的一部分可以在客户端实现,而数据修改逻辑427的包括加密和/或擦除编解码逻辑的一部分可以在服务器处实现。因此,客户端可以将原始数据划分为组块,分别压缩数据组块,并将压缩后的数据组块发送给服务器。服务器可以单独加密压缩的数据组块,对数据组块执行擦除编解码以生成一个或多个奇偶校验组块,并将数据组块和/或奇偶校验组块存储在包括计算存储设备408的一个或多个存储设备上。
92.存储设备408和/或本文公开的任何其他存储设备可以使用任何连接器配置(诸如串行ata(sata)、小型计算机系统接口(scsi)、串行连接scsi(sas)、m.2、u.2、u.3等),以任何形式因子实现,诸如3.5英寸、2.5英寸、1.8英寸、m.2、企业和数据中心ssd形式因子(edsff)、nf1等。
93.存储设备408和/或本文公开的任何其他存储设备可以用任何存储介质430实现,包括固态介质、磁性介质、光学介质等,或其任何组合。固态介质的示例可以包括诸如非and(nand)闪存的闪存、低时延nand闪存、诸如交叉网格非易失性存储器的持久性存储器(pmem)、具有体电阻变化的存储器、相变存储器(pcm)等,或其任何组合。
94.存储设备408和/或本文中公开的任何其他存储设备可以使用任何类型的存储接口和/或协议进行通信,诸如外围组件互连express(pcie)、nvme、nvme-over-fabric(nvme-of)、nvme key-value(nvme-kv)、sata、scsi等,或其任何组合。在一些实施例中,存储设备408和/或本文公开的任何其他存储设备可以实现相干(例如,存储器相干、缓存相干等)或存储器语义接口,诸如计算快速链路(cxl),和/或相干协议,诸如cxl.mem、cxl.cache和/或cxl.io。相干和/或存储器语义接口和/或协议的其他示例可以包括gen-z、相干加速器处理器接口(capi)、针对加速器的缓存相干互连(ccix)等。
95.存储设备408和/或本文公开的任何其他存储设备,以及主机424的任何组件(例如,客户端、对象存储服务器、存储节点等)可以全部或部分地与服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或其任何组合一起实现和/或与之结合使用。
96.通信连接422和/或本文公开的任何其他连接,包括诸如客户端、服务器、存储设备等组件之间的任何连接,可以使用任何互连和/或网络接口和/或协议来实现,包括pcie、以太网、传输控制协议/互联网协议(tcp/ip)、远程直接存储器访问(rdma)、聚合以太网rdma(roce)、光纤通道、infiniband、iwarp等,或其任何组合。
97.本文公开的任何功能,包括任何逻辑,诸如数据分组逻辑426、数据修改逻辑427、
数据恢复逻辑428、一个或多个处理元件429、指示逻辑531等,可以用硬件、软件或其组合来实现,包括组合逻辑、顺序逻辑、一个或多个计时器、计数器、寄存器和/或状态机、一个或多个复杂可编程逻辑器件(cpld)、现场可编程门阵列(fpga)、专用集成电路(asic),中央处理单元(cpu),诸如复杂指令集计算机(cisc)处理器,诸如x86处理器和/或精简指令集计算机(risc)处理器,诸如arm处理器、图形处理单元(gpu)、神经处理单元(npu)、张量处理单元(tpu)等,执行存储在任何类型存储器或其任何组合中的指令。在一些实施例中,数据恢复逻辑428、处理元件429等中的一个或多个可以包括固定和/或可编程功能,以执行任何功能,诸如压缩和/或解压缩、加密和/或解密、微服务、擦除编解码、视频编码和/或解码、数据库加速、搜索、机器学习、图形处理等。在一些实施例中,一个或多个组件可以实现为片上系统(soc)。
98.在一些实施例中,数据恢复逻辑428、处理元件429等中的一个或多个可以与存储设备的一个或多个其他组件集成,诸如存储设备控制器、闪存转换层(ftl)等。
99.本文公开的任何数据修改操作,诸如压缩、加密等(或其反向操作),可以用任何合适的技术实现。例如,数据压缩和/或解压缩可以用lz77、gzip、snappy等实现。可以使用高级加密标准(aes)来实现加密和/或解密,诸如aes-256、rivest-shamir-adleman(rsa)等。
100.图5示出了根据本发明示例实施例的具有本地数据恢复的存储系统的另一实施例。图5所示的系统可以包括与关于图4所示的实施例所描述的组件和/或实现操作类似的组件和/或实现操作,其中具有以相同数字结束的附图标记的元件可以类似。然而,在图5所示的实施例中,计算存储设备508还可以包括指示逻辑531,其可以被配置为向主机524处的数据分组逻辑526和/或数据修改逻辑527提供一个或多个指示532。
101.一个或多个指示532可以包括数据分组逻辑526用于确定如何将原始数据划分为组块的信息。例如,一个或多个指示532可以包括一个或多个存储超参数,诸如用于存储利用率、处理效率(例如,组块解压缩、解密、数据选择和/或其他操作)、带宽利用率等的最小组块大小、最大组块大小、最佳组块大小等。
102.一个或多个指示532(例如,存储超参数)可以包括数据修改逻辑527可用于确定如何修改数据分组逻辑526提供的单个数据组块的信息。例如,一个或多个指示532可以包括由存储设备508处的数据恢复逻辑528支持的压缩算法、加密算法等类型的列表。
103.在一些实施例中,一个或多个指示可以是强制性的、可选的(例如,作为建议提供)或其组合。例如,可以提供用于存储在存储设备508上的最佳组块大小的指示作为建议,而由数据恢复逻辑528支持的一个或多个压缩算法、加密算法和/或类似的指示,可以强制使存储设备508能够解压和/或解密数据组块以供存储设备508处的一个或多个处理元件529进行本地处理。
104.在一些实施例中,指示逻辑531可以完全位于计算存储设备508处。然而,在一些其他实施例中,指示逻辑531可以位于主机524处,分布在主机524和存储设备508或多个存储设备之间,或者完全位于不同的装置(例如,可以维护系统中存储设备的特性列表或数据库的单独服务器、管理控制器等)。例如,在一些实施例中,一个或多个存储节点可以包括指示逻辑531,指示逻辑531可以维护安装在存储节点上的每个存储设备的指示列表或数据库,并向一个或多个客户端、对象存储服务器等提供指示。作为又一示例,一个或多个存储节点可以包括指示逻辑531的、可以维护安装在存储节点处的每个存储设备的指示的一部分,并
且对象存储服务器可以包括指示逻辑531的、可以聚合来自一个或多个存储节点的指示并将指示提供给一个或多个客户端的一部分。
105.例如,响应于查询、命令等(例如,nvme命令、通过api的查询、sdk等),任何指示532可以通过指示逻辑531被提供给任何装置,诸如客户端、对象存储服务器、存储节点等。在一些实施例中,一个或多个指示532(例如,一个或多个存储超参数)可以通过客户端库被提供(例如,由客户端)给用户的设备。
106.图6a示出了根据本发明示例实施例的具有本地数据恢复和服务器侧加密的存储方案的写入操作的示例实施例。例如,图6a所示的实施例可用于实现图4和图5所示的任何存储方案。图6a的左侧示出了存储系统组件之间的数据流,图6a的右侧示出了在写入操作期间对数据的操作。
107.图6a的左侧所示的系统可以包括客户端602、一个或多个服务器604(可以统称为服务器)和一个或多个存储设备608(可以统称为存储)。图6a的右侧所示的操作在由客户端602执行的第一组610a和由服务器604执行的第二组612a中示出。
108.当存储设备608和/或服务器604向客户端602提供一个或多个指示632以指示数据组块大小、压缩算法等时,可以开始写入操作。客户端602可以例如基于一个或多个指示632将原始数据614划分为一个或多个组块633。
109.回到图3a和图3b,数据组块320可以基本上是相同的大小,例如,当存储器308由一个或多个基于块的存储设备实现时,可能需要相同的大小。然而,在图6a所示的实施例中,数据组块633可以是不同的大小,例如,以利用可以用kv接口实现的一个或多个存储设备608。此外,或替代地,服务器604可以在一个或多个基于块的存储设备608上实现键值接口(例如rocksdb、leveldb等)的软件仿真。尽管图3a和图3b中所示的数据组块以不同的大小示出,但这些原理也可以应用于其中一些或所有存储设备具有基于块的接口的系统,这些组块可以被视为可变大小组块的子集。
110.在一些实施例中,可以例如基于可能是指定存储设备的最已知大小的组块大小来确定建议和/或强制组块大小。例如,对于一些固态驱动器(ssd),128kb组块大小可以充分利用ssd带宽。此外,或替代地,存储服务器可以通过库向客户端602提供最佳组块大小,并且当用户存储对象或其他原始数据时,客户端602可以在内部将对象或其他原始数据划分成较小的组块。此外,或替代地,客户端602可以分析内容并动态确定组块大小。
111.在对原始数据614分组之后,客户端可以单独压缩一个或多个数据组块633,以生成一个或多个压缩组块634。客户端602可以将压缩组块634发送到服务器604,服务器604可以加密一个或多个压缩组块634,以生成一个或多个压缩和加密的数据组块635。服务器604可以对一个或多个压缩和加密的数据组块635执行擦除编解码,以生成一个或多个奇偶校验组块636,并跨一个或多个存储设备608存储一个或多个数据组块635和一个或多个奇偶校验组块636。
112.图6b示出了根据本发明示例实施例的具有本地数据恢复和客户端侧加密的存储方案的写入操作的示例实施例。例如,图6b所示的实施例可用于实现图4和图5所示的任何存储方案。图6b的左侧示出了存储系统组件之间的数据流,图6b的右侧示出了在写入操作期间对数据的操作。
113.图6b所示的组件之间的数据流和/或对数据的操作可以类似于图6a所示的服务器
侧加密的实施例,并且具有以相同数字结束的参考号的元件可以类似。然而,在图6b所示的实施例中,客户端602可以加密一个或多个压缩数据组块634,以生成第一操作组610b中所示的一个或多个压缩和加密的数据组块635。客户端602可以将一个或多个压缩和加密的数据组块635发送到服务器604,服务器604可以对一个或多个压缩和加密的数据组块635执行擦除编解码,以生成一个或多个奇偶校验组块636,并跨一个或多个存储设备608存储一个或多个数据组块635和一个或多个奇偶校验组块636,如操作组612b所示。
114.在一个或多个数据组块633已经被单独修改(例如,压缩、加密等)并跨一个或多个存储设备608被存储为修改后的数据组块636之后,每个存储设备可以恢复一个或多个数据组块(例如,通过解密和/或解压缩一个或多个数据组块),并对恢复数据组块执行操作。例如,用户、客户端602、服务器604等可以向一个或多个存储设备608发送请求以恢复一个或多个组块,并对恢复数据组块执行一个或多个操作(例如,数据选择操作)。
115.图7a示出了根据本发明示例实施例的具有本地数据恢复的存储方案的写入操作的示例实施例。图7b示出了根据本发明示例实施例的具有本地数据恢复的存储方案的具有数据选择的读取操作的示例实施例。例如,图7a和图7b中所示的实施例可用于实现图4和图5中所示的任何存储方案。
116.参考图7a,左侧示出了存储系统组件之间的数据流,右侧示出了写入操作期间的数据操作。参考图7b,左侧示出了存储系统组件之间的数据流,右侧示出了读取操作期间的数据操作。
117.图7a所示的写入操作可以实现类似于图6a所示的服务器侧加密或类似于图6b所示的客户端侧加密,并且具有以相同数字结束的参考号的元件可以类似。因此,已经被单独压缩的数据组块734可以被加密以生成压缩和加密的数据组块735,作为客户端操作710a的一部分或服务器操作712a的一部分。
118.参考图7b,一个或多个计算存储设备708可以接收一个或多个执行数据选择操作的请求,以从存储在存储设备上的一个或多个数据组块735中读取一个或多个数据子集。例如,一个或多个请求可以包括一个或多个表达式,以指定所请求的数据子集。例如,可以通过服务器704从客户端702接收请求。
119.为了处理一个或多个请求,一个或多个存储设备708可以在一个或多个存储设备708处本地执行一组操作737。三个不同的存储设备中的每一个可以分别对存储在每个设备上的相应数据组块执行一组数据恢复和数据选择操作737-1、737-2和737-3。然而,在一些实施例中,单个存储设备可以对存储在该设备处的任意数量的数据组块执行数据恢复和数据选择或其他操作。
120.每个存储设备708可以从存储介质读取已被单独压缩和加密的相应数据组块735。每个存储设备可以解密相应的数据组块以生成压缩和解密的数据组块734。每个存储设备可以解压缩相应的数据组块以生成恢复数据组块738。在一些实施例中,每个恢复数据组块738可以与原始数据714的相应部分相同。然而,在一些实施例中,恢复数据组块738可以仅被恢复为能够使存储设备708对恢复的数据执行有意义的操作的形式(例如,一些实施例可以对尚未完全解压缩的数据组块执行一个或多个操作)。
121.在数据组块已经恢复之后,每个存储设备708可以例如基于随请求提供的表达式执行数据选择操作(例如,扫描、过滤等),以获得一个或多个对应结果739。一个或多个存储
设备708可以将结果739作为原始数据714的一个或多个请求子集740发送给客户端。由于客户端的解压缩和/或解密操作可能会被绕过,因此它们被灰显。
122.在一些实施例中,如果奇偶校验组块736存储在存储设备中,则存储设备708中的一个或多个可以恢复一个或多个丢失的数据组块735。替代地,或者另外,服务器704可以使用存储在一个或多个其他存储设备上的一个或多个奇偶校验组块736来恢复一个或多个丢失的数据组块735。
123.取决于实现细节,在存储设备处执行数据恢复和/或数据选择操作可以减少与跨一个或多个存储设备读取存储在一个或多个组块中的原始数据子集(例如,对象子集)相关的时间、带宽、功率、时延等。
124.图8示出了根据本发明示例实施例的具有本地数据恢复的对象存储方案的系统架构的示例实施例。例如,可以使用图8所示的系统来实现关于图4、图5、图6a、图6b、图7a、图7b、图9a和/或图9b描述的任何方案。
125.图8所示的系统可以包括通过网络连接842连接的客户端802和对象存储服务器集群804。该系统还可以包括通过存储网络844连接到对象存储服务器集群804的一个或多个存储节点806。
126.客户端802可以包括数据分组逻辑826和/或压缩逻辑846,其可以被配置为在压缩单个数据分组之前执行原始数据(例如,一个或多个对象)的数据分组,因此一个或多个计算存储设备808可以恢复数据组块以对恢复数据组块执行操作。
127.对象存储服务器集群804可以包括加密逻辑847、擦除编解码逻辑848、数据选择逻辑849、集群管理逻辑850和/或节点和存储设备管理逻辑851。加密逻辑847可用于单独加密从客户端802接收的数据组块(例如,压缩数据)。擦除编解码逻辑848可以跨存储节点806和/或存储设备808执行数据组块的擦除编解码。数据选择逻辑849可以执行与各个存储设备808执行的数据恢复、数据选择和/或其他处理操作相关的各种操作。例如,数据选择逻辑849可以接收来自客户端802的请求,以读取可以在一个或多个存储设备808上以组块形式存储的一个或多个数据子集。数据选择逻辑849可以将请求转发给相应的存储节点806和/或存储设备808,从相应的存储节点806和/或存储设备808接收和/或聚合结果,并将聚合结果发送给客户端802。集群管理逻辑850可以执行与维护存储服务器集群804相关的内务管理和/或管理功能。节点和存储设备管理逻辑851可以执行与维护一个或多个存储节点806和/或存储设备808相关的内务管理和/或管理功能。
128.每个存储节点806可以包括处理单元(例如,数据处理单元(dpu)、cpu等)852和一个或多个计算存储设备808。dpu 852可以执行各种功能,诸如接收和分发来自客户端802的请求,以读取可以在跨一个或多个存储设备808的组块中存储的一个或多个数据子集。在一些实施例中,dpu 852可以对从对象存储服务器集群804接收并存储在一个或多个计算存储设备808上的数据组块执行数据压缩、数据加密、擦除编解码等。在一些实施例中,dpu 852可以聚合由一个或多个计算存储设备808执行的一个或多个数据选择操作的结果,并将聚合结果转发给对象存储服务器集群804和/或客户端802。
129.计算存储设备808a示出了可以包括在一个或多个计算存储设备808中的组件的示例。计算存储设备808a可以包括数据选择引擎853和存储介质830。数据选择引擎853可以包括解密逻辑854和解压缩逻辑855,其可分别用于解密和/或解压缩已被单独加密和/或压缩
以将数据组块恢复为可操作的形式的数据组块。数据选择引擎853还可以包括数据选择逻辑856,其可用于对恢复数据组块执行数据选择或其他操作。数据选择引擎853还可以包括kv逻辑857,其可以用于实现存储设备808a的kv接口。
130.在一些实施例中,图8中所示的系统可以用部分或全部存储设备808的kv接口来实现。取决于实现细节,这可能有助于和/或使数据组块能够用可变的组块大小来实现。为了说明的目的,图8中所示的实施例可以被描述为在一个或多个存储设备808处本地实现具有恢复数据组块的数据选择特征,然而,这些原理可以应用于可以对恢复数据组块执行的任何类型的处理。
131.图9a示出了根据本发明示例实施例的具有本地数据恢复的存储方案的读取和/或写入操作的示例实施例。例如,可以使用图8所示的系统来实现图9a所示的操作。为了说明的目的,第一组操作958a可以假设由图8所示的客户端802和对象存储服务器集群804执行,第二组操作959a可以假设由图8所示的一个或多个存储节点806和/或存储设备808执行,然而,在其他实施例中,图9a中所示的操作可以由任何其他组件执行。
132.参考图9a,在写入操作(例如,put操作)期间,客户端可以对原始数据914(例如,一个或多个对象)进行分组,以生成一个或多个数据组块933。一个或多个组块933可由客户端单独压缩以生成一个或多个压缩组块934,其可被发送到对象存储服务器并由对象存储服务器单独加密以生成一个或多个压缩和/或加密组块935。对象存储服务器可以对一个或多个压缩和/或加密组块935执行擦除编解码,以生成一个或多个奇偶校验组块936。
133.对象存储服务器可以将一个或多个压缩和加密组块935和一个或多个奇偶校验组块936(例如,通过put操作960)发送到一个或多个存储节点,以便通过一个或多个存储设备进行存储。因此,在写入操作之后,原始数据914(例如,对象)可以跨一个或多个存储设备存储在一个或多个组块935中,该组块935可以被单独修改(例如,压缩和/或加密)。
134.在读取操作(例如,get操作)期间,例如,在存储设备可能无法恢复和/或对数据组块执行操作的实现中,可以从一个或多个存储设备读取一个或多个单独修改的数据组块935。如果数据组块935中的一个或多个丢失或损坏,则可以(例如,由存储设备和/或存储节点)使用一个或多个奇偶校验组块936恢复丢失和/或损坏的块。
135.可将一个或多个压缩和/或加密组块935发送到对象存储服务器(例如,通过get操作962),该对象存储服务器可解密一个或多个压缩和/或加密组块935以生成一个或多个压缩和解密组块934。可以将一个或多个压缩和解密组块934发送给客户端,客户端可以解压缩一个或多个数据组块934以生成解密和解压缩数据组块933,并将其组装回原始数据914。
136.图9b示出了根据本发明示例实施例的具有本地数据恢复和数据选择操作的存储方案的读取操作的示例实施例。例如,可以使用图8所示的系统来实现图9b所示的操作。为了说明的目的,第一组操作958b可以假设由图8所示的客户端802和/或对象存储服务器集群804执行,第二组操作959b可以假设由图8所示的一个或多个存储节点806和/或存储设备808执行,然而,在其他实施例中,图9b中所示的操作可以由任何其他组件执行。
137.为了开始读取操作(例如,get操作963),一个或多个计算存储设备可以接收执行数据选择操作以从存储在一个或多个存储设备处的一个或多个数据组块935中读取一个或多个数据子集的一个或多个请求。例如,一个或多个请求可以包括一个或多个表达式,以指定所请求的数据子集。
138.为了服务一个或多个请求,可以从一个或多个存储设备读取一个或多个单独修改的数据组块935。一个或多个存储设备可以单独解密一个或多个数据组块935,以生成一个或多个压缩和解密数据组块934。一个或多个存储设备可以单独解压缩一个或多个压缩和解密数据组块934,以生成一个或多个恢复数据组块938。在一些实施例中,每个恢复数据组块938可以与原始数据914的相应部分相同。然而,在一些实施例中,恢复数据组块938可以仅被恢复为能够使存储设备对恢复的数据执行有意义的操作的形式(例如,一些实施例可以对尚未完全解压缩的数据组块执行一个或多个操作)。
139.存储设备可以对一个或多个恢复数据组块938执行数据选择操作(例如,扫描、过滤等),以查找由一个或多个请求指定的一个或多个数据子集939(指示为结果r)。如果存储设备已经恢复并对多于一个数据组块执行了数据选择操作,则存储设备可以聚合数据选择操作的结果以生成聚合结果940,该聚合结果可以被发送到对象存储服务器和发送请求的客户端。此外,或替代地,由多个存储设备的数据选择操作找到的结果r(例如,数据子集)939可以由存储节点聚合,并被发送到对象存储服务器和发送请求的客户端。
140.表1示出了根据本发明示例实施例的可存储在存储系统中的一些示例数据。为了便于说明,表1中所示的数据适用于房地产上市,但这些原理可适用于任何类型的数据。表1的每一行可以对应于具有七个条目的记录:记录索引、以平方英尺为单位的居住空间、卧室数量、浴室数量、邮政编码、建造年份和标价。因此,例如,前八个记录可以分别由索引1-8标识。
141.表1
[0142][0143][0144]
图10示出了根据本发明的示例实施例的来自表1的数据在三个计算存储设备的三个数据组块上的分布的实施例。在图10所示的实施例中,分号用作各个记录之间的定界符(可以对应于表1中所示的行),但在其他实施例中,可以使用其他分隔技术。
[0145]
参考图10,前两个记录(由索引1和2标识)可以完全适合于存储在第一存储设备
1008a上的第一数据组块1064a内。第三记录(由索引3标识并由带有单下划线的条目指示)可以在分别存储在第一和第二存储设备1008a和1008b上的数据组块1064a和1064b之间划分(例如,分段)。第四和第五记录(由索引4和5标识)可以完全适合存储在第二存储设备1008b上的第二数据组块1064b内。第六记录(由索引6标识并由带单下划线的条目指示)可以在存储在第二和第三存储设备1008b和1008c上的数据组块1064b和1064c之间划分。第七和第八记录(由索引7和8标识)可以完全适合存储在第三存储设备1008c上的第三数据组块1064c内。第九记录(由索引9标识并由带单下划线的条目指示)可以在存储在第三存储设备1008c上的第三1064c和另一存储设备上的另一组块之间划分。
[0146]
为了说明的目的,计算存储设备1008a、1008b和1008c被示为使用如上所述的数据恢复逻辑和/或处理元件来实现,这些逻辑和/或处理元件可以使存储设备恢复单独修改的数据组块1035,例如,通过解密(生成解密的数据组块1034)和/或解压缩生成恢复数据组块1038,并对恢复数据组块1038执行诸如数据选择操作的操作,以从存储在设备上的数据组块中的一个或多个记录中获得数据1039的指定子集。然而,这些原理不限于这些实现细节,并且可以应用于可以对存储在任何类型的计算存储设备上的任何类型的数据组块执行的任何类型的操作。为了说明的目的,本文描述的一些实施例可以实现固定大小的数据组块(例如,可以与基于块的存储设备一起使用),然而,这些原理也可以应用于可以实现可变大小数据组块的实施例(例如,可以与kv存储设备一起使用)。
[0147]
在一些实施例中,记录可以对应于对象。在本文描述的一些实施例中,可以假设记录(例如,json对象)小于组块(这取决于实现细节),可以确保对象可以跨越不超过两个组块。在一些实施例中,定界符可以实现为简单字符,诸如分号。例如,对于csv对象,定界符可以实现为回车符。此外,或替代地,一个或多个定界符可以由层次结构确定。因此,检测定界符可能比简单的比较更复杂。例如,对于json对象,一对花括号(“{

}”)可以定义json对象。此外,在一些实施例中,json对象可以具有嵌套的json数组,因此最外面的一对花括号可以定义单个记录。因此,定界符可以由最外面的右花括号(“}”)定义。
[0148]
再次参考图10,完全适合存储设备中的一个内的记录(例如,记录1、2、4、5、7和8)可以由相应的存储设备处理。例如,如果客户端发出数据选择操作的读取请求,以返回表1中存储的数据子集(例如,客户端发送带有表达式的读取请求,以返回1980年之后建造的所有记录(或其中的一部分),记录1、2、4、5、7和8可以由相应的存储设备直接处理。然而,记录3、6和9可能无法在存储设备处进行本地处理,因为它们在两个不同存储设备的数据组块之间被分段。
[0149]
图11示出了存储系统的示例实施例,其中服务器可以根据本发明的示例实施例重构在不同存储设备处的数据组块之间划分的记录。图11所示的实施例可以包括对象存储服务器1104、通过存储网络耦合到对象存储服务器1104的两个存储节点1106a和1106b,以及计算存储设备1108a、1108b、1108c、1108d和1108e,其可以存储包括类似于图10所示的记录的数据组块。
[0150]
参考图11,每个存储设备1108a到1108e可以分别(直接或通过其所位于的存储节点)发送其可以对其相应数据组块1164a到1164e中的任何完整记录执行的数据选择操作的结果1165。然而,由于记录3、6和9不能在存储设备处本地处理,因此对象存储服务器1104可以在一个或多个聚合缓冲区1166中重构划分的记录。在一些实施例中,每个聚合缓冲区
1166可以重构第i个设备和第(i 1)个设备之间的划分记录。例如,存储设备1108a可以将位于数据组块1164a中的记录3(例如,索引、生活空间、卧室、浴室、邮政编码和建造年份)的第一部分(也可以被称为片段)发送到对象存储服务器1104,以在第一缓冲区1166a中与位于数据组块1164a中的记录3(标价)的第二部分进行聚合,并由存储设备1108b发送。在一些实施例中,对象存储服务器1104可以包括n个聚合缓冲区,其中n可以是耦合到对象存储服务器1104的存储设备的数量。
[0151]
对象存储服务器1104可以分别对聚合缓冲区1166a、1166b和1166c中的重构记录3、6和9执行选择操作,以生成结果1167。因此,在由各个存储设备发送的结果1165和从聚合缓冲区1166生成的结果1167之间,对象存储服务器1104可以获得由请求指定的所有数据子集,并将这些子集返回给客户端。
[0152]
然而,取决于实现细节,从存储设备1108发送到对象存储服务器1104的每个记录片段可能会消耗时间、带宽和/或功率、增加时延、降低处理资源的利用率等,和/或可能导致对象存储服务器1104成为潜在的瓶颈。
[0153]
图12示出了根据本发明示例实施例的用于将数据划分为组块和压缩数据的内容感知方法的实施例。在图12所示的方法中,图12顶部所示的未压缩输入数据1268(可以存储在缓冲区中)可以包括一个或多个记录,每个记录可以以定界符终止,在本示例中,定界符可以是分号。然而,在其他实施例中,可以使用其他定界符,诸如括号、回车换行(cr-lf)序列等。在一些实施例中,一个或多个记录可以包括在输入数据1268内的数组(例如,json数组)、文档(例如,json文档)等中。如果记录结束于数组、文档等的结束处,则可以使用不同的定界符来指示数组、文档等的结束,但图12所示的方法也可以将不同的定界符解释为记录的结束。
[0154]
在第一步(操作1)期间,该方法可以扫描输入数据1268并使用它生成数据组块,直到其达到默认的组块大小n。如果组块1269中的最后一个数据元素是定界符,则该方法可以继续第二步(操作2)。如果组块中的最后一个数据元素不是定界符,则该方法可以修改组块的大小,使组块的结束与定界符的结束对齐。例如,该方法可以从保持数据1268的缓冲区中的位置n 1处开始,并向后扫描,直到找到定界符1270。该方法可以减小组块的大小(例如,收缩组块),直到定界符1270是组块中的最后一个数据元素。因此,组块可以减小等于收缩空间s的大小,因此组块可以仅包括一个或多个完整记录。
[0155]
替代地,该方法可以从保持数据1268的缓冲区中的位置n 1处开始,并向前扫描,直到找到定界符1271。该方法可以扩展组块的大小,直到定界符1271是组块1269中的最后一个数据元素,如图12中间所示。因此,组块可以扩展等于扩展空间e的大小,因此组块可以仅包括一个或多个完整记录。
[0156]
一旦确定组块大小,该方法可以进行第二步(操作2),其中可以以定界符结束并且仅包括完整记录的自包含组块(例如,组块1269)可以使用一个或多个压缩算法压缩到长度c,以生成压缩数据1272。
[0157]
由于未压缩数据组块的大小可以被减小或扩展,未压缩数据组块1269的大小可以是可变的,因此,压缩数据组块1272的大小可以是可变的。
[0158]
该方法是减小还是扩展组块的长度可能取决于各种因素,诸如组块可能发送到的对象或键值存储设备的最大和/或最佳数据大小,或组块可能发送到的基于块的存储设备
的块大小。在对象或键值存储设备的情况下,可以存储得到的压缩自包含数据组块1272,而无需进一步修改和/或处理。
[0159]
取决于实现细节,图12中所示的内容感知的数据分组的方法可以改善存储系统的操作,例如,诸如如图11所示,因为在不同存储设备上的组块之间可以划分更少或没有记录,因此,可以在存储设备、存储节点、存储服务器等之间传输更少或没有记录片段,以使组件能够恢复具有完整记录的数据组块和/或对完整记录执行操作。
[0160]
图12所示的压缩方法可以例如使用图4、图5和/或图9所示的任何系统来实现,其中组块逻辑426、526和/或826可以包括内容感知逻辑,其被配置为基于在未压缩的输入数据1268中查找记录或其他数据单元的边界(例如,定界符)来确定组块大小。
[0161]
尽管图12中所示的方法可以改善存储系统的操作,但在一些实施例中,并且取决于实现细节,与使用两步相关联的开销可能会增加处理负担,尤其是在扫描相对较大的对象时。
[0162]
根据本发明示例实施例的一些额外的内容感知数据分组技术可以将分组操作与另一个操作集成,诸如可以扫描要被分组的数据的数据压缩操作。取决于实现细节,这可能会改善分组操作的效率,因为它可能利用已经为压缩目的执行的扫描操作。因此,在一些实施例中,它可以减少或消除与两个扫描过程相关联的开销。
[0163]
图13示出了根据本发明示例实施例的压缩数据方法的实施例。图14示出了可以通过图13所示的方法执行的操作的实施例。图13和图14中所示的方法可以例如基于诸如lz77的压缩算法。如图13顶部所示,该方法可以对可以通过前向缓冲区1374和窗口1373(也可以实现为缓冲区)的输入数据流进行操作。前向缓冲区1374之前的输入数据流的一部分(也可以被称为部分)可以被指示为不可见部分1375,因为它可能与执行压缩的逻辑无关。取决于通过前向缓冲区1374和窗口1373的数据量,在窗口1373之后可能还有另一部分不可见数据。
[0164]
图13所示的方法可以执行图14所示的以下操作。图13和图14所示的实施例可以用任何大小、配置等的数据元素来实现,诸如字节、字、半字节等。
[0165]
(1)在第一操作1477-1中,该方法可以将编解码位置设置为输入数据流的第一个数据元素,如图13顶部所示。
[0166]
(2)在第二操作1477-2中,该方法可以扫描输入数据流,以查找前向缓冲区1374中的一个或多个数据元素(可称为文字(literals)与窗口1373中的一个或多个数据元素之间的长度l的最长匹配,如图13顶部所示。
[0167]
(3)在第三操作1477-3中,如果在第二操作(2)1477-2中发现匹配,则该方法可以输出指针p,其可以包括,例如,从指示窗口1373中匹配数据的开始位置的编解码位置的偏移和指示匹配的数据元素的数量的长度l,如图13顶部所示。该方法可以将编解码位置和窗口1373向前移动l个数据元素,如图13底部所示。该方法可以进行第五操作(5)1477-5。取决于长度l,这可能导致输入数据流的全部或部分不可见部分1375进入前向缓冲区1374,并且之前在窗口1373中的数据长度l的部分1375变为不可见(例如,执行该方法的逻辑无法访问)
[0168]
(4)在第四操作1477-4中,如果在第二操作(2)1477-2中未找到匹配,该方法可以输出空指针(例如,偏移和/或长度l为零的指针)和前向缓冲区1374中的下一个数据元素
(文字)。该方法可以将编解码位置和窗口1373向前移动一个数据元素。
[0169]
(5)在第五操作1477-5处,如果前向缓冲区1374不为空,则该方法可以返回到第二操作(2)1477-2。否则,该方法可以终止。
[0170]
因此,图13和图14所示的压缩方法可以通过检查前向缓冲区1374中的一个或多个文字序列是否曾经出现在窗口1373的范围内,并用指针(例如索引)替换窗口1373中该序列的实例来操作。由压缩操作生成的输出数据流可以是一系列文字数据元素(例如,字节)和指针,它们可以指示已经在输出中的数据元素序列。
[0171]
在一些实施例中,记录可以包括可以作为一个单元使用和/或操作的任何完整数据结构(例如,数据库中的行)。在一些实施例中,定界符可以用任何可以指示记录边界的东西来实现,例如,一个或多个数据元素(分号、括号、回车换行(cr-lf)序列等)。在一些实施例中,可以使用诸如索引表的数据结构来实现定界符,该索引表可以指示记录的结束位置。
[0172]
因为图13和图14所示的压缩方法可以扫描输入数据作为其正常操作的一部分,根据本发明示例实施例的分组操作可以集成到图13和图14所示的压缩方法中,以利用压缩操作已经执行的数据扫描。
[0173]
图15示出了根据本发明示例实施例的集成分组和压缩方案的实施例。
[0174]
如图15顶部所示,输入数据流可以通过前向缓冲区1574和窗口1573(也可以实现为缓冲区)。前向缓冲区1574之前的输入数据流的一部分可以指示为不可见部分1575,因为它可能与执行压缩的逻辑无关。取决于通过前向缓冲区1574和窗口1573的数据量,在窗口1573之后可能还有另一部分不可见数据。
[0175]
图16示出了集成分组和压缩方法的实施例,该方法可以根据本发明的示例实施例,使用图15所示的方案执行。
[0176]
图15和/或图16所示的实施例可以用任何大小、配置等的数据元素来实现,诸如字节、字、半字节等。图15和/或图16所示的实施例可以使用当前组块大小(c)、提前终止指示符(例如,提前终止比特)(e)和记录定界符长度(l)。在一些实施例中,图15所示的方案可以执行图16所示的以下操作。
[0177]
(1)在第一操作1678-1处,该方法可以将编解码位置设置为输入数据流的第一数据元素,如图15顶部所示。在一些实施例中,当前组块大小(c)、提前终止比特(e)和/或记录定界符长度(l)可以初始化为零。在一些实施例中,初始编解码位置可以对应于如图15的中间和底部所示的数据组块的开始。
[0178]
(2)在第二操作1678-2处,该方法可以扫描输入数据流,以查找前向缓冲区1574中的一个或多个数据元素与窗口1573中的一个或多个数据元素之间长度l的最长匹配,如图15顶部所示。在扫描输入数据流以查找最长匹配时,该方法还可以查找记录的定界符的匹配。如果找到了定界符的匹配,该方法可以保持定界符匹配的第一个实例(例如,记录其位置),例如,在窗口1573中,并将定界符长度l设置为找到的定界符匹配的长度。
[0179]
(3)在第三操作1678-3处,如果在第二操作(2)1678-2处未找到最长匹配,则该方法可以输出空指针(例如,偏移和/或长度l为零的指针)和前向缓冲区1574中的下一个数据元素(文字),以生成压缩输出数据流。该方法可以将编解码位置和窗口1573向前移动一个数据元素。该方法还可以将长度l设置为1,其可以指示当前组块大小将由从前向缓冲区1574输出的一个数据元素增加。
[0180]
(4)在第四操作1678-4处,如果未设置提前终止比特(e),并且当前组块大小(c l)大于或等于默认组块大小(n),则该方法可以将提前终止比特设置为一(e=1)。
[0181]
(5)在第五操作1678-5处,如果设置了提前终止比特(e=1),并且发现了定界符匹配(例如l!=0),该方法可以将l设置为等于l(大于1),并用第一个匹配的定界符更新指针p(例如,具有指示第一个匹配的定界符在窗口1573中的开始位置的、从编解码位置的偏移,长度l指示匹配的定界符的长度)。
[0182]
(6)在第六操作1678-6处,如果找到匹配(例如,最长匹配或定界符匹配),该方法可以输出指针p,例如,基于如图15中间所示的最长匹配(例如,正常匹配)的位置和长度,或如图15底部所示的第二个定界符匹配(例如,提前终止)的位置和长度,以生成压缩输出数据流。
[0183]
(7)在第七操作1678-7处,该方法可以将编解码位置和窗口1573向前移动l个数据元素,其中l可以是如图15中间的正常操作中所示的最长匹配的长度,或者l可以是如图15底部的提前终止操作中所示的定界符匹配的长度。在第七操作之后,数据流可以具有一个或多个不可见部分1575a、1575b和/或1575c,这取决于l和l的长度。
[0184]
(8)在第八操作1678-8处,如果前向缓冲区1574不为空,则该方法可以返回到第二操作(2)1678-2。否则,组块的结束可以由定界符的结束来确定,如图15底部的编解码位置所示。
[0185]
在一些实施例中,图15所示的方案和/或图16所示的方法可以通过查找与图13和图14所示的方法类似的最长匹配来最初执行压缩操作,直到达到默认组块大小n。然而,当接近默认组块大小时,图15和/或图16所示的实施例可以逐个记录压缩输入数据,直到其超过默认组块大小。例如,在一些实施例中,该方法可以查找大于默认组块大小(并且可以用定界符终止)的最小组块。在一些实施例中,这可以被称为最小最大组块。当该方法扫描输入数据流时,如图15中间和底部所示的组块的开始可以逐渐远离编解码位置。
[0186]
取决于实现细节,图15和/或图16中所示的内容感知数据分组技术可以改善存储系统的操作,诸如图11中所示的存储系统,因为在不同存储设备上的组块之间可以划分更少或没有记录,因此,可以在存储设备、存储节点、存储服务器等之间传输更少或没有记录片段,以使组件能够恢复具有完整记录的数据组块和/或对完整记录执行操作。
[0187]
取决于实现细节,图15和/或图16所示的实施例还可以改善数据分组操作的效率,因为它可以利用已经为压缩目的执行的扫描操作。因此,在一些实施例中,它们可以减少或消除与两个扫描过程相关联的开销。
[0188]
图17示出了根据本发明示例实施例的集成分组和压缩方案的另一个实施例。
[0189]
图18示出了集成分组和压缩方法的实施例,该方法可以根据本发明的示例实施例,使用图17所示的方案执行。
[0190]
图17所示的方案可以包括与关于图15所示的实施例所描述的组件和/或实现操作类似的组件和/或实现操作,其中具有以相同数字结束的标号的元件可以类似。然而,在图17所示的实施例中,该方法可以在遇到第一条记录时确定组块大小,而不是逐个记录压缩输入数据。例如,在一些实施例中,该方法可以查找小于默认组块大小(并且可以用定界符终止)的最大组块。在一些实施例中,这可以被称为最大最小组块。
[0191]
如图17顶部所示,输入数据流可以通过前向缓冲区1774和窗口1773(也可以实现
为缓冲区)。前向缓冲区1774之前的输入数据流的一部分可以指示为不可见部分1775,因为它可能与执行压缩的逻辑无关。取决于通过前向缓冲区1774和窗口1773的数据量,在窗口1773之后可能还有另一部分不可见数据。
[0192]
如图18所示,图17所示的实施例可以执行以下一个或多个操作。图17和/或图18所示的实施例可以用任何大小、配置等的数据元素来实现,诸如字节、字、半字节等。图17和/或图18所示的实施例可以使用当前组块大小(c)、提前终止指示符(例如,提前终止比特)(e)和记录定界符长度(l)。
[0193]
(1)在第一操作1879-1处,该方法可以将编解码位置设置为输入数据流的第一个数据元素,如图17顶部所示。在一些实施例中,当前组块大小(c)、提前终止比特(e)和/或记录定界符长度(l)可以初始化为零。
[0194]
(2)在第二操作1879-2处,该方法可以扫描输入数据流,以查找前向缓冲区1774中的一个或多个数据元素与窗口1773中的一个或多个数据元素之间长度l的最长匹配,如图17顶部所示。在扫描输入数据流以查找最长匹配时,该方法还可以查找记录的定界符的匹配。如果找到了定界符的匹配项,该方法可以保持定界符匹配的第一个实例,例如在窗口1773中,并将定界符长度l设置为找到的定界符匹配的长度。
[0195]
(3)在第三操作1879-3处,如果在第二操作(2)1879-2处未找到最长匹配,则该方法可以输出空指针(例如,偏移和/或长度l为零的指针)和前向缓冲区1774中的下一个数据元素(文字),以生成压缩输出数据流。该方法可以将编解码位置和窗口1773向前移动一个数据元素。该方法还可以将长度l设置为1,其可以指示当前组块大小将通过从前向缓冲区1774输出的一个数据元素而增加。
[0196]
(4)在第四操作1879-4处,如果当前组块大小(c l)大于或等于默认组块大小(n),则该方法可以将提前终止比特设置为1(e=1)。
[0197]
(5)在第五操作1879-5,如果设置了提前终止比特(e=1),并且发现了定界符匹配(例如l!=0),该方法可以将l设置为等于l(大于1),并用第一个匹配的定界符更新指针p(例如,具有指示第一个匹配的定界符在窗口1573中的开始位置的、从编解码位置的偏移,长度l指示匹配的定界符的长度)。
[0198]
(6)在第六操作1879-6处,如果找到匹配(例如,最长匹配或定界符匹配),该方法可以输出指针p,例如,基于如图17中间所示的最长匹配(例如,正常匹配)的位置和长度,或如图17底部所示的定界符匹配(例如,提前终止)的位置和长度,以生成压缩输出数据流。
[0199]
(7)在第七操作1879-7处,该方法可以将编解码位置和窗口1773向前移动l个数据元素,其中l可以是如图17中间的正常操作中所示的最长匹配的长度,或者l可以是如图17底部的提前终止操作中所示的定界符匹配的长度。在第七操作之后,数据流可以具有一个或多个不可见部分1775a、1775b和/或1775c,这取决于l和的长度。
[0200]
(8)在第八操作1878-8处,如果未设置提前终止比特(e!=1)并且前向缓冲区1774不为空,则该方法可返回到第二操作(2)1879-2。否则,组块的结束可以由定界符的结束来确定,如图17底部的编解码位置所示。
[0201]
在一些实施例中,由于图17所示的方案和/或图18所示的方法可以在遇到第一条记录时确定组块大小(最大最小组块),组块大小可以基于第一个定界符匹配,如图17底部的提前终止操作所示。当该方法扫描输入数据流时,如图17中间和底部所示的组块的开始
可以逐渐远离编解码位置。
[0202]
取决于实现细节,图17和/或图18所示的实施例可以改善数据分组操作的效率,因为它可以利用已经为压缩目的执行的扫描操作。因此,在一些实施例中,它可以减少或消除与两个扫描过程相关联的开销。
[0203]
图19示出了根据本发明示例实施例的集成分组和压缩方法的另一个实施例。例如,图19所示的实施例可以与图15和/或图17所示的实施例中的一个或两个一起使用。在一些实施例中,图19所示的方法可以实现最小最大组块和/或最大最小组块。例如,取决于实现细节,图19所示的实施例可以在最长匹配不包含定界符时确定最小最大组块,在最长匹配不包含定界符时确定最大最小组块。
[0204]
参考图19,该方法可以从操作1979-1开始。在操作1979-2(可能是重复序列的开始)处,该方法可以将块大小(c)和/或提前终止比特(e)初始化为零。在操作1979-3处,该方法可以初始化指针p和长度l。在操作1979-4处,该方法可以在前向缓冲区中查找最长匹配(c,l)。
[0205]
在操作1979-5处,如果找到最长匹配,该方法可以沿着图19左侧取第一个主分支,如下所示。在操作1979-6处,该方法可以将指针p设置为最长匹配的开始,将长度l设置为最长匹配的长度。在操作1979-7处,该方法可以确定当前组块大小的长度是否大于或等于默认组块大小n(例如,c l≥n)。如果当前组块大小不大于或等于默认组块大小n,则该方法可以如下所述进行操作1979-11。然而,如果当前组块大小大于或等于默认组块大小,则该方法可以在操作1979-8处初始化记录定界符长度(l)。在操作1979-9处,如果该方法在前向缓冲区中未找到第一个定界符匹配(c,l),则该方法可以如下所述进行操作1979-11。然而,如果在操作1979-9处,该方法在前向缓冲区中找到第一个定界符匹配(c,l),则该方法可以继续操作1979-10,其中该方法可以将提前终止比特设置为一(e=1),将指针p设置为滑动窗口中第一个定界符匹配的开始,和/或将长度l设置为第一个定界符匹配的长度。在操作1979-11处,该方法可以输出指针p和长度l。该方法可以从操作1979-18开始,沿着图19右侧进行公共分支。
[0206]
在操作1979-5处,如果没有找到最长匹配,该方法可以按如下所示沿着图19的中心进行第二个主分支。在操作1979-12处,该方法可以将指针p设置为空指针的值,将长度l设置为1。在操作1979-13处,该方法可以输出空指针p和前向缓冲区的第一个字节。在操作1979-14处,该方法可以确定当前组块大小的长度是否大于或等于默认组块大小n(例如,c l≥n)。如果当前组块大小不大于或等于默认组块大小n,则该方法可以从操作1979-18开始,沿着图19右侧的公共分支继续。然而,如果在操作1979-14处,当前组块大小大于或等于默认组块大小,则该方法可以在操作1979-15处初始化记录定界符长度(l)。在操作1979-16处,如果该方法在前向缓冲区中没有找到第一个定界符匹配(c,l),则该方法可以从操作1979-18开始,继续到图19右侧的公共分支。然而,如果在操作1979-16处,该方法在前向缓冲区中找到第一个定界符匹配(c,l),则该方法可以继续操作1979-17,其中该方法可以将提前终止比特设置为一(e=1)。该方法可以从操作1979-18开始,沿着图19的右侧进行公共分支。
[0207]
图19右侧的公共分支可以如下进行。在操作1979-18处,可以通过添加长度l(例如,c=c l)来更新组块大小c,其中l可以是例如最长匹配的长度、第一个定界符匹配的长
度或1。在操作1979-19处,编解码位置和窗口可以移动距离l(例如,l个字节)。在操作1979-20处,如果未设置提前终止比特(e=0),则该方法可以返回到操作1979-3以开始重复序列的另一次迭代。然而,如果确定要设置提前终止比特(e=1),则该方法可指示在操作1979-21处已找到当前组块的结束。在操作1979-22处,该方法可以确定前向缓冲区是否为空。如果前向缓冲区不为空,则该方法可以继续操作1979-23,其中提前终止比特e可以重置为零,并且该方法可以返回操作1979-3以开始重复序列的另一次迭代。然而,如果在操作1979-22处,前向缓冲区为空,则该方法可以在操作1979-24处终止。
[0208]
尽管图13、图14、图15、图16、图17、图18和/或图19所示的实施例可以在输入数据流和/或基于流的压缩算法的上下文中描述,这些原理还可以应用于任何其他类型的输入和/或压缩算法,诸如基于批处理(例如,基于文件)的输入数据和/或基于块、文件等的压缩算法。
[0209]
表2示出了根据本发明示例实施例的集成分组和压缩方法的伪代码示例实施例。例如,表2中所示的实施例可以与图15和/或图17中所示的实施例中的一个或两个一起使用。在一些实施例中,表2中所示的方法可以实现最小最大组块和/或最大最小组块。例如,取决于实现细节,表2中所示的实施例可以在最长匹配不包含定界符时确定最小最大组块,在最长匹配不包含定界符时确定最大最小组块。
[0210]
表2
[0211]
[0212][0213]
图20示出了根据本发明示例实施例的具有集成分组和压缩的系统的实施例。例如,可以使用图20所示的系统来实现关于图13、图14、图15、图16、图17、图18和/或图19描述的任何技术
[0214]
参考图20,系统可以包括主机2024和计算存储设备2008,其可通过连接2022进行通信。主机2024可以包括内容感知数据分组和压缩逻辑2090(其可被称为分组和压缩逻辑、集成分组和压缩逻辑或集成逻辑)。分组和压缩逻辑可以被配置为向存储设备2008提供一个或多个数据组块。例如,数据分组和压缩逻辑2090可以在压缩之前将对象或其他原始数据划分为一个或多个数据组块,因此存储设备2008可以解压缩数据组块并对解压缩的数据组块执行操作。
[0215]
因为分组和压缩逻辑2090可以是内容感知的,在一些实施例中,它可以基于记录之间的边界将数据划分为组块。例如,分组和压缩逻辑2090可以在数据中寻找记录定界符,以将数据划分为大小可变的组块,使得组块可以以记录定界符结束,从而以完整的记录结束。
[0216]
在一些实施例中,分组和压缩逻辑2090可以包括一个或多个前向缓冲区、窗口缓冲区等,并且可以实现关于图13、图14、图15、图16、图17、图18和/或图19描述的任何技术。
[0217]
计算存储设备2008可以包括解压缩逻辑2028、一个或多个处理元件2029和存储介质2030。解压缩逻辑2028可以被配置为将压缩数据组块解压缩到一个或多个处理元件2029可以对其执行操作的形式。一个或多个处理元件2029可以被配置为执行任何类型的操作,诸如数据选择(例如,扫描、滤波等)、计算加速、图形处理、图形处理、机器学习等。存储介质2030可用于存储任何数据,包括主机2024发送的一个或多个修改后的数据组块。
[0218]
在一些实施例中,解压缩逻辑2028和/或一个或多个处理元件2029可以被配置为响应于在存储设备2008处接收的可以包括查询(例如,表达式)的请求,从存储介质2030读取和解压缩一个或多个数据组块,并返回指定的数据子集,或对恢复数据组块执行任何其
他操作。
[0219]
在一些实施例中,计算存储设备2008还可以包括指示逻辑,该指示逻辑可以被配置为向内容感知数据分组和压缩逻辑2090提供一个或多个指示。如上文关于图5所示的实施例所述,一个或多个指示可以包括可用于确定如何将原始数据划分为组块的信息。
[0220]
主机2024可以使用任何组件或组件的组合来实现,如上文关于图4所示的实施例所述。如上文关于图4所示的实施例所述,可以使用任何连接器配置和任何存储介质以任何形状因子实现存储设备2008。主机2024和存储设备2008可以使用任何类型的存储接口和/或协议进行通信,并且可以全部或部分地与服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或上述关于图4所示实施例的任何组合一起实现和/或结合使用。通信连接2022可以使用任何互连和/或网络接口和/或协议来实现,如上文关于图4所示的实施例所述。任何功能,包括任何逻辑,诸如内容感知数据分组和压缩逻辑2090、解压缩逻辑2028、一个或多个处理元件2029等,都可以用如上文关于图4所示的实施例所述的硬件、软件或其组合实现。在一些实施例中,解压缩逻辑2028、处理元件2029等中的一个或多个可以与存储设备的一个或多个其他组件集成,诸如存储设备控制器、闪存转换层(ftl)等。内容感知数据分组和压缩逻辑2090和解压缩逻辑2028可以实现任何压缩和/或解压缩技术,诸如lz77、gzip、snappy等。
[0221]
图21示出了根据本发明示例实施例的用于将数据划分为组块并加密数据的内容感知方案的实施例。在图21所示的实施例中,图21顶部所示的未加密输入数据2168(可以存储在缓冲区中)可以包括一个或多个记录,每个记录可以以定界符终止,在本示例中,定界符可以是分号。然而,在其他实施例中,可以使用其他定界符,诸如括号、回车换行(cr-lf)序列等。在一些实施例中,一个或多个记录可以包括在输入数据2168内的数组(例如,json数组)、文档(例如,json文档)等中。如果记录结束于数组、文档等的结束,则可以使用不同的定界符来指示数组、文档等的结束,但图21所示的实施例也可以将不同的定界符解释为记录的结束。
[0222]
在第一步期间(操作1),该方法可以扫描输入数据2168并使用其生成数据组块,直到其达到默认的组块大小n。如果组块2169中的最后一个数据元素是定界符,则该方法可以继续第二步(操作2)。如果组块中的最后一个数据元素不是定界符,则该方法可以修改组块的大小,使组块的结束与定界符的结束对齐。例如,该方法可以从保持数据2168的缓冲区中的位置n 1处开始,并向后扫描,直到找到定界符2170。该方法可以减小组块的大小(例如,收缩组块),直到定界符2170是组块中的最后一个数据元素。因此,组块可以减小等于收缩空间s的大小,因此组块可以仅包括一个或多个完整记录。
[0223]
替代地,该方法可以从保持数据2168的缓冲区中的位置n 1处开始,并向前扫描,直到找到定界符2171。该方法可以扩展块的大小,直到定界符2171是块2169中的最后一个数据元素,如图21中间所示。因此,组块可以扩展等于扩展空间e的大小,因此组块可以仅包括一个或多个完整记录。
[0224]
在一些实施例中,一旦确定组块大小,该方法可以进行第二步(操作2),其中可以使用一个或多个加密算法对自包含组块(例如组块2169)进行加密,该自包含组块(例如组块2169)可以以定界符结束并且仅包括完整记录,以生成加密数据2172。
[0225]
在一些实施例中,由于未加密数据组块的大小可以减小或扩展,未加密数据组块
2169的大小可以是可变的,因此,加密数据组块2172的大小可以是可变的。
[0226]
该方法是减小还是扩展组块的长度可能取决于各种因素,诸如组块可能发送到的对象或键值存储设备的最大和/或最佳数据大小,或组块可能发送到的基于块的存储设备的块大小。在对象或键值存储设备的情况下,可以存储得到的加密自包含数据组块2172,而无需进一步修改和/或处理。
[0227]
取决于实现细节,图21所示的内容感知数据组块实施例可以改善存储系统的操作,例如,如图11所示,因为在不同存储设备上的组块之间可以划分更少或没有记录,因此,可以在存储设备、存储节点、存储服务器等之间传输更少或没有记录片段,以使组件能够恢复具有完整记录的数据组块和/或对完整记录执行操作。
[0228]
例如,可以使用图4、图5和/或图9所示的任何系统来实现图21所示的加密方案,其中组块逻辑426、526和/或826可以包括内容感知逻辑,其被配置为基于在未加密的输入数据2168中查找记录或其他数据单元的边界(例如,定界符)来确定组块大小。
[0229]
尽管图21所示的实施例可以改善存储系统的操作,但在一些实施例中,并且取决于实现细节,与使用两个过程相关联的开销可能会增加处理负担,尤其是在扫描相对较大的对象时。
[0230]
根据本发明示例实施例的一些额外的内容感知数据分组技术可以将分组操作与可以扫描要分组的数据的加密操作集成。取决于实现细节,这可能会改善分组操作的效率,因为它可能利用已经出于加密目的执行的扫描操作。因此,在一些实施例中,它可以减少或消除与两个扫描过程相关联的开销。
[0231]
图22示出了根据本发明的示例实施例的可用于加密数据技术的分组密码方案的示例实施例。图22所示的实施例可以例如基于aes算法。要被加密的数据可以作为明文输入数据2291的块(例如128比特块)被接收,在一系列链接操作中处理,包括预轮转换2292、使用由密钥扩展逻辑2296生成的轮密钥k0、k1、

、kr的一个或多个aes加密轮2293-1、

、2293-nr,并输出为密文输出数据2294的对应块(例如128比特块)。轮数r可以例如由用于加密轮的密钥2295的长度(例如128、192或256比特)来确定。在一些实施例中,密文输出数据组块2294的大小可以与明文输入数据组块2291的大小相同。
[0232]
在一些实施例中,术语明文和/或密文不仅指实际文本,还指任何形式的任何数据,诸如图像、音频、视频等。
[0233]
由于可以使用诸如图22中所示的分组密码方案扫描输入数据以进行加密,因此图22所示的实施例可以与根据本发明的示例实施例的内容感知数据分组技术集成。取决于实现细节,这可能会改善分组操作的效率,因为它可能利用可能已经出于加密目的执行的扫描操作。因此,在一些实施例中,它可以减少或消除与两个扫描过程相关联的开销,因为可以同时执行加密扫描和定界符扫描。
[0234]
图23示出了根据本发明示例实施例的集成数据分组和加密方案的实施例。图24示出了根据本发明示例实施例的集成数据分组和加密方法的实施例。例如,图24所示的实施例可以与图23所示的方案一起使用。
[0235]
在图23所示的方案中,图23顶部所示的未加密输入数据流2368可以包括一个或多个记录,每个记录可以以定界符终止,在本示例中,定界符可以是分号。然而,在其他实施例中,可以使用其他定界符,诸如括号、回车换行(cr-lf)序列等。在一些实施例中,一个或多
个记录可以包括在输入数据2368内的数组(例如,json数组)、文档(例如,json文档)等中。如果记录结束于数组、文档等的结束,则可以使用不同的定界符来指示数组、文档等的结束,但图23所示的方法也可以将不同的定界符解释为记录的结束。
[0236]
图23所示的方案可以通过图24所示的一个或多个以下操作来实现。
[0237]
(1)在第一操作2497-1处,该方法可以扫描输入数据流2368,并将分组密码(如图22所示)应用于输入数据流2368的一个或多个部分(也可以称为部分)2398,如图23所示。分组密码可以逐块应用于输入数据流2368,其中一个或多个部分2398的大小可以对应于分组密码使用的块大小,而分组密码又可以对应于分组密码使用的密钥长度。例如,可以使用分组密码对输入数据流2368进行加密,直到达到默认组块大小n。在一些实施例中,默认组块大小n可以设置为分组密码使用的块大小(例如密钥长度)的偶数倍。
[0238]
(2)在第二操作2497-2处,如果当前数据组块的最后一个数据元素不是定界符,则该方法可以继续扫描输入数据流2368以查找定界符2399,并将数据组块扩展量e,直到定界符2399是块的最后一个数据元素,如图23顶部所示。
[0239]
(3)在第三操作2497-3处,如果数据组块的结束与分组密码使用的块的结束不对齐,则该方法可以用填充元素“p”填充数据组块,以将块23100进一步扩展量p,使得组块的结束与块的结束对齐,如图23底部所示。
[0240]
(4)在第四操作2497-4处,如果组块已经被扩展,则可以将分组密码应用于包括部分e和p(如果有的话)的组块。
[0241]
(5)在第五操作2497-5处,生成的加密数据组块23101可以被存储在kv驱动器中,该数据组块的长度可以基于定界符2399在输入数据流中的位置而变化。
[0242]
在一些实施例中,图23和/或图24所示的实施例可以继续,例如,直到达到输入数据流中用户对象的结束。可以将对象划分并加密为一个或多个加密数据组块。由于(a)明文输入数据的大小可以是可变的,(b)可以使用不同的默认组块大小n,和/或(c)可以扩展块以包括定界符和/或一个或多个填充元素,因此加密数据组块的大小可以是可变的。在对象或键值存储设备的情况下,可以存储生成的加密自包含数据组块,而无需进一步修改和/或处理。
[0243]
取决于实现细节,图23和/或图24所示的内容感知数据组块实施例可以改善存储系统的操作,例如,因为在不同存储设备上的组块之间可以划分更少或没有记录,因此,可以在存储设备、存储节点、存储服务器等之间传输更少或没有记录片段,以使组件能够恢复具有完整记录的数据组块和/或对完整记录执行操作。此外,由于图23和/或图24所示的实施例可以利用已经出于加密目的执行的扫描操作来执行数据组块,因此可以减少或消除与两个扫描过程相关的开销。
[0244]
为了说明的目的,图22、图23和/或图24中所示的实施例可以在诸如aes的分组密码的上下文中描述。然而,这些原理也可以应用于使用诸如rc4的流密码的方案。
[0245]
图25示出了根据本发明示例实施例的具有集成分组和加密的系统的实施例。例如,可以使用图25所示的系统来实现关于图22、图23和/或图24描述的任何技术。
[0246]
参考图25,系统可以包括主机2524和计算存储设备2508,其可通过连接2522进行通信。主机2524可以包括内容感知数据分组和加密逻辑25101(其可被称为分组和加密逻辑、集成分组和加密逻辑或集成逻辑)。分组和加密逻辑可以被配置为向存储设备2508提供
一个或多个数据组块。例如,数据分组和加密逻辑25101可以在加密之前将对象或其他原始数据划分为一个或多个数据组块,因此存储设备2508可以解密数据组块并对解密的数据组块执行操作。
[0247]
因为分组和加密逻辑25101可以是内容感知的,在一些实施例中,它可以基于记录之间的边界将数据划分为组块。例如,分组和加密逻辑25101可以在数据中寻找记录定界符,以将数据划分为大小可变的组块,使得组块可以以记录定界符结束,从而以完整的记录结束。
[0248]
计算存储设备2508可以包括解密逻辑2528、一个或多个处理元件2529和存储介质2530。解密逻辑2528可以被配置为将加密数据组块解密为一个或多个处理元件2529可以对其执行操作的形式。一个或多个处理元件2529可以被配置为执行任何类型的操作,诸如数据选择(例如,扫描、滤波等)、计算加速、图形处理、图形处理、机器学习等。存储介质2530可用于存储任何数据,包括由主机2524发送的一个或多个修改后的数据组块。
[0249]
在一些实施例中,解密逻辑2528和/或一个或多个处理元件2529可以被配置为响应于在存储设备2508处接收的可以包括查询(例如,表达式)的请求,从存储介质2530读取和解密一个或多个数据组块,并返回指定的数据子集,或对恢复数据组块执行任何其他操作。
[0250]
在一些实施例中,计算存储设备2508还可以包括指示逻辑,该指示逻辑可以被配置为向内容感知数据分组和解密逻辑25101提供一个或多个指示。如上文关于图5所示的实施例所述,一个或多个指示可以包括可用于确定如何将原始数据划分为组块的信息。
[0251]
如上文关于图4所示的实施例所述,主机2524可以用任何组件或组件的组合来实现。如上文关于图4所示的实施例所述,可以使用任何连接器配置和任何存储介质以任何形状因子实现存储设备2508。主机2524和存储设备2508可以使用任何类型的存储接口和/或协议进行通信,并且可以全部或部分地与服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或上述关于图4所示实施例的任何组合实现和/或结合使用。通信连接2522可以使用任何互连和/或网络接口和/或协议来实现,如上文关于图4所示的实施例所述。任何功能,包括任何逻辑,诸如内容感知数据分组和加密逻辑25101、解密逻辑2528、一个或多个处理元件2529等,都可以使用如上文关于图4所示的实施例所述的硬件、软件或其组合来实现。在一些实施例中,解密逻辑2528、处理元件2529等中的一个或多个可以与存储设备的一个或多个其他组件集成,诸如存储设备控制器、闪存转换层(ftl)等。内容感知数据分组和加密逻辑25101和解密逻辑2528可以实现任何加密和/或解密技术,诸如数据加密标准(des)、aes等。
[0252]
尽管一些实施例可以在集成数据分组和压缩、加密等的上下文中描述,以供计算存储设备使用,但这些原理不限于任何特定应用,并且可以应用于任何数据组块应用,以及用于任何类型的设备,包括加速器、网络接口卡(nic)等。
[0253]
为了说明的目的,可以单独示出可以实现集成分组和压缩以及集成分组和加密的实施例,但是可以根据本发明的示例实施例组合这些原理,以实现可以实现集成数据分组、压缩和加密。
[0254]
本文公开的原理可用于将数据分组不仅集成到数据压缩和/或数据加密操作中,而且集成到任何类型的可扫描数据的操作中,包括例如过滤、擦除编解码、搜索、机器学习、
图形处理等。例如,在图20和图25所示的实施例中,数据分组和压缩逻辑2090和/或数据分组和加密逻辑25101可适用于将扫描(用于分组)与任何其他操作的扫描集成。因此,在一些实施例中,一种方法可以包括扫描输入数据,基于扫描执行使用输入数据的操作以生成处理后的数据,基于扫描在输入数据中查找定界符,以及基于定界符在输入数据中的位置使用处理后的数据生成数据组块。在一些实施例中,数据可以包括输入数据流,并且操作可以是基于流的操作。在一些实施例中,该操作可以是基于块的操作。在一些实施例中,系统可以包括主机,该主机包括被配置为对输入数据执行扫描操作,基于扫描操作执行处理操作以使用输入数据生成处理数据,基于扫描操作在输入数据中查找定界符,并基于定界符使用已处理数据生成数据组块的主机逻辑。在一些实施例中,系统还可以包括被配置为从主机接收数据组块的设备,该设备包括被配置为恢复数据组块以生成恢复数据组块,并对恢复数据组块执行操作的设备逻辑。
[0255]
图26示出了根据本发明示例实施例的具有数据组块修改的存储方案的主机装置的示例实施例。图26中所示的主机2600可用于实现本文公开的任何主机功能。主机2600可以用任何组件或组件的组合来实现,诸如一个或多个客户端、一个或多个对象存储服务器、一个或多个存储节点等,或其组合。
[0256]
图26所示的主机装置2600可以包括处理器2602,其可以包括存储器控制器2604、系统存储器2606、主机控制逻辑2608和/或通信接口2610。图26所示的任何或所有组件可以通过一个或多个系统总线2612进行通信。在一些实施例中,图26所示的一个或多个组件可以使用其他组件实现。例如,在一些实施例中,主机控制逻辑2608可以由处理器2602执行存储在系统存储器2606或其他存储器中的指令来实现。
[0257]
主机控制逻辑2608可以包括和/或实现本文公开的任何主机功能,包括数据分组逻辑426、526和/或826、数据修改逻辑427和/或527、压缩逻辑846、加密逻辑847、擦除编解码逻辑848、数据选择逻辑849、集群管理逻辑850、节点和设备管理逻辑851、处理单元852、内容感知数据分组和压缩逻辑2090、内容感知数据分组和解密逻辑25101等。
[0258]
图27示出了根据本发明示例实施例的具有数据组块修改的存储设备的示例实施例。图27中所示的存储设备2700可用于实现本文公开的任何存储设备功能。存储设备2700可以包括设备控制器2702、介质转换层2704、存储介质2706、计算资源2708、处理控制逻辑2716和通信接口2710。图27所示的组件可以通过一个或多个设备总线2712进行通信。在可将闪存用于部分或全部存储介质2706的一些实施例中,介质转换层2704可部分或全部实现为闪存转换层(ftl)。
[0259]
在一些实施例中,处理控制逻辑2716可用于实现本文公开的任何存储设备功能,包括数据恢复逻辑428和/或528、处理元件429、529和/或1429、指示逻辑531、数据选择引擎853、解密逻辑854、解压缩逻辑855、数据选择逻辑856、键值逻辑857、解压缩逻辑2028、一个或多个处理元件2029、解密逻辑2528、一个或多个处理元件2529等。
[0260]
如上所述,本文所述的任何功能,包括任何主机(例如,客户端、存储服务器、存储节点等)功能、存储设备功能等,可以使用硬件、软件或其任何组合来实现,包括组合逻辑,顺序逻辑、一个或多个计时器、计数器、寄存器、状态机、易失性存储器(诸如dram和/或sram)、非易失性存储器和/或其任何组合、cpld、fpga、asic、cpu(包括cisc处理器(诸如x86处理器)和/或risc处理器(诸如arm处理器))、gpu、npu等,执行存储在任何类型存储器中的
指令。在一些实施例中,一个或多个组件可以实现为片上系统(soc)。
[0261]
图28示出了根据本发明示例实施例的用于数据压缩的方法的实施例。该方法可在操作2802处开始。在操作2804处,该方法可以扫描输入数据。在一些实施例中,输入数据可以作为输入数据流接收。在操作2806处,该方法可以基于扫描执行压缩操作,以使用输入数据生成压缩数据。在操作2808处,该方法可以基于扫描在输入数据中查找定界符。例如,输入数据可以包括一个或多个记录,并且定界符可以指示记录的边界。在操作2810处,该方法可以基于定界符在输入数据中的位置,使用压缩数据生成数据的一部分。该方法可在操作2812处结束。
[0262]
图29示出了根据本发明示例实施例的用于数据加密的方法的实施例。该方法可在操作2902处开始。在操作2904处,该方法可以扫描输入数据。在一些实施例中,输入数据可以作为输入数据流接收。在操作2906处,该方法可以基于扫描执行加密操作,以使用输入数据生成加密数据。在操作2908处,该方法可以基于扫描在输入数据中查找定界符。例如,输入数据可以包括一个或多个记录,并且定界符可以指示记录的边界。在操作2910处,该方法可以基于定界符在输入数据中的位置,使用加密数据生成数据的一部分。该方法可在操作2912处结束。
[0263]
图30示出了根据本发明示例实施例的将数据划分为一个或多个部分的方法的实施例。该方法可在操作3002处开始。在操作3004处,该方法可以扫描输入数据。在一些实施例中,输入数据可以作为输入数据流接收。在操作3006处,该方法可以基于扫描对输入数据执行操作以生成处理后的数据。在一些实施例中,该操作可以是可以扫描数据的任何操作,诸如压缩、加密、滤波、擦除编解码、搜索、机器学习、图形处理等。在操作3008处,该方法可以基于扫描在输入数据中查找定界符。例如,输入数据可以包括一个或多个记录,并且定界符可以指示记录的边界。在操作3010处,该方法可以基于定界符在输入数据中的位置,使用处理后的数据生成数据的一部分。该方法可在操作3012处结束。
[0264]
图28、图29和图30所示的实施例以及本文描述的所有其他实施例是示例操作和/或组件。在一些实施例中,可以省略一些操作和/或组件,和/或可以包括其他操作和/或组件。此外,在一些实施例中,操作和/或组件的时间和/或空间顺序可以改变。尽管一些组件和/或操作可以被示为单个组件,但在一些实施例中,单独示出的一些组件和/或操作可以集成到单个组件和/或操作中,和/或显示为单个组件和/或操作的一些组件和/或操作可以用多个组件和/或操作来实现。
[0265]
已经在各种实现细节的上下文中描述了上面公开的一些实施例,但本公开的原理不限于这些或任何其他特定细节。例如,一些功能被描述为由一些组件实现,但在其他实施例中,功能可以分布在不同位置的不同系统和组件之间,并且具有各种用户界面。一些实施例已被描述为具有特定过程、操作等,但这些术语还包括其中特定过程、操作等可以用多个过程、操作等实现,或者其中多个过程、操作等可以集成到单个过程、步骤中的实施例,等等。对组件或元件的引用可能仅指组件或元件的一部分。例如,对块的引用可以引用整个块或一个或多个子块。在本发明和权利要求书中使用诸如“第一”和“第二”的术语可能仅用于区分它们修改的事物,并且可能不指示任何空间或时间顺序,除非从上下文中明显看出。在一些实施例中,对事物的引用可以指事物的至少一部分,例如,“基于”可以指“至少部分地基于”等。引用第一个元素可能并不意味着存在第二个元素。本文公开的原理具有独立的实
用性,可以单独实现,并且不是每个实施例都可以利用每个原理。然而,这些原理也可能体现在各种组合中,其中一些组合可能以协同方式放大各个原理的好处。
[0266]
根据本专利公开的发明原理,可以组合上述各种细节和实施例来产生额外的实施例。由于本专利公开的发明原理可以在不脱离发明构思的情况下在布置和细节上进行修改,因此这些更改和修改被认为属于以下权利要求的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献