CN105009067A - 管理对存储数据单元的操作 - Google Patents
管理对存储数据单元的操作 Download PDFInfo
- Publication number
- CN105009067A CN105009067A CN201480012484.XA CN201480012484A CN105009067A CN 105009067 A CN105009067 A CN 105009067A CN 201480012484 A CN201480012484 A CN 201480012484A CN 105009067 A CN105009067 A CN 105009067A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- block
- cell
- compression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
一种用于管理数据单元存储的系统,包括被配置为存储多个数据块(202A-202C)的数据存储系统(106),至少一些所述数据块包括多个数据单元,至少一组所述数据块是连续存储的,从而支持第一读取操作(340),该第一读取操作从所述组中至少两个相邻数据块中检索数据单元。该系统被配置为执行关于数据单元的一种或多种操作,所述操作包括删除操作(300),该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,所述第二数据块具有和所述第一数据块相同的大小。
Description
相关申请的交叉引用
本申请要求享有2013年3月6日提交的13/787,203号美国专利申请的优先权。
技术领域
本申请涉及管理对存储数据单元的操作。
背景技术
数据存储系统提供各种操作以存储、检索或删除数据单元(data unit)。“数据单元”是指由可检索的存储数据代表的信息单元(例如,一个数据单元可表示一条单独记录)。不同系统可采用不同存储格式和不同技术来执行上述操作。例如,对于一些系统而言,删除数据单元可能会涉及到删除用来定位该数据单元的指针(pointer)或索引项,或者可能会涉及到覆盖该数据单元。数据单元可单独存储,也可存储在包括多个数据单元(以相同或不同的表示法)的“数据块”(或“数据的块”或“压缩块”)之内。有些系统提供诸如数据压缩和数据加密的特征,这些特征会影响上述操作的实施,甚至会支持上述操作。例如,包括压缩到单一数据块的多个数据单元的存储格式可能会支持压缩块的群组的删除(例如,旧块或过期块),但可能不会支持这些块内个别数据单元的删除。
发明内容
在一个方案中,通常,一种用于管理数据单元存储的系统包括配置为存储多个数据块的数据存储系统,至少一些所述数据块包括多个数据单元,至少一组所述数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元(例如,该第一读取操作可能是存储接口模块104或该数据存储系统的另一接口用来执行的一类函数或程序)。该系统还包括接口,该接口包括至少一个处理器,耦接至所述数据存储系统,且被配置为执行关于数据单元的一种或多种操作,所述操作包括删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,所述第二数据块具有和所述第一数据块相同的大小。
这些方案可包括一个或多个以下特征。
所述第二数据块与一数据块相邻,而该数据块在所述数据存储系统内与所述第一数据块相邻。
所述第二数据块以和所述第一数据块相同的存储空间进行存储。
所述删除操作使得不同于所述第一数据块的数据块维持在所述数据存储系统内相同的存储位置,这些数据块在执行所述删除操作之前就存储于该存储位置中。
该数据存储系统被配置为针对至少一些所述数据块存储与之前从该数据块删除一个或多个数据单元有关的相应历史信息,所述删除会影响该数据块中多个数据单元的至少一些地址。
所述操作包括第二读取操作,不同于所述第一读取操作,该第二读取操作根据基于对应于一特定数据块的任何存储的历史信息解读的地址信息来访问存储在所述特定数据块中的至少一第一数据单元。
所述删除操作将与所述已删除数据单元有关的信息存储在对应于所述第二数据块的历史信息中。
至少一些所述历史信息存储在所述数据存储系统中。
至少一部分所述历史信息在不同数据块之间交叉存取。
对应于一特定数据块的至少一部分历史信息存储在该特定数据块的预定部分中。
至少一些所述数据块是已压缩数据块。
所述第二读取操作解压缩一特定的已压缩数据块以恢复一已解压缩数据单元集合,并至少部分基于对应于该特定的已压缩数据块的所述历史信息在距一参考位置特定的偏移量处检索所述待读取数据单元。
所述第一读取操作解压缩多个已压缩数据块并相继读取多个已解压缩数据单元。
所述删除操作对所述第二已压缩数据块的存储大小进行扩展,以负责所述第二已压缩数据块和所述第一已压缩数据块之间的大小差异。
所述第二已压缩数据块的存储大小通过存储除对应于所述第二已压缩数据块的历史信息之外的与所述第二已压缩数据块相关联的附加信息来进行扩展。
所述删除操作存储与所述第二已压缩数据块相关联的新检错码以替代与所述第一已压缩数据块相关联的检错码。
所述操作包括添加操作,该添加操作存储与一最近添加的数据单元集合相关联的待添加数据单元。
所述处理器还被配置为将所述最近添加的数据单元集合压缩为存储在所述存储介质中的已压缩数据块。
所述数据存储系统被配置为存储附加信息,该附加信息将所述组中的所述多个数据块确定为符合预定存储格式。
所述附加信息包括在所述组中每一数据块的数据头中的用来确定所述预定存储格式的标识符。
所述第一读取操作与所述预定存储格式相兼容。
在另一个方案中,通常,一种用于管理数据单元存储的系统包括用来存储多个数据块的装置,至少一些所述数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元。该系统还包括用来执行关于数据单元的一种或多种操作的装置,所述操作包括删除操作,该删除操作以不包括所述已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,所述第二数据块具有和所述第一数据块相同的大小。
在另一个方案中,通常,一种用于管理数据单元存储的方法包括将多个数据块存储在数据存储系统中,至少一些所述数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元。该方法还包括使用至少一个处理器来执行关于数据单元的一种或多种操作,所述操作包括删除操作,该删除操作以不包括所述已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,所述第二数据块具有和所述第一数据块相同的大小。
在另一个方案中,通常,软件存储在计算机可读介质上,以管理数据单元的存储。所述软件包括用于使计算系统执行以下操作的指令:将多个数据块存储在数据存储系统中,至少一些所述数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元;以及针对多个数据单元执行两项或更多项操作,所述操作包括删除操作,该删除操作以不包括所述已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,所述第二数据块具有和所述第一数据块相同的大小。
在另一个方案中,通常,一种用于管理数据单元存储的系统,包括配置为存储多个数据块的数据存储系统,至少一些所述数据块包括多个数据单元,至少一组所述数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元(例如,该第一读取操作可能是存储接口模块104或该数据存储系统的另一接口用来执行的一类函数或程序)。该系统还包括接口,该接口包括至少一个处理器,耦接至所述数据存储系统,且被配置为执行关于数据单元的两项或更多项操作。所述操作包括:第二读取操作,与所述第一读取操作不同,该第二读取操作至少部分基于包含待读取数据单元的数据块的地址来检索该待读取数据单元;以及删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块。
这些方案可包括一个或多个以下特征。
该数据存储系统被配置为针对至少一些所述数据块存储与之前从该数据块删除一个或多个数据单元有关的相应历史信息,所述删除会影响该数据块中多个数据单元的至少一些地址。
所述第二读取操作根据基于对应于一特定数据块的任何存储的历史信息解读的地址信息来访问存储在所述特定数据块中的至少一第一数据单元。
所述删除操作将与所述已删除数据单元有关的信息存储在对应于所述新数据块的历史信息中。
至少一些所述历史信息存储在所述数据存储系统中。
至少一部分所述历史信息在不同数据块之间交叉存取(interleaved)。
对应于一特定数据块的至少一部分历史信息存储在该特定数据块的预定部分中。
至少一些所述数据块是已压缩数据块。
所述第二读取操作解压缩一特定的已压缩数据块以恢复一已解压缩数据单元集合,并至少部分基于对应于该特定的已压缩数据块的所述历史信息在距一参考位置特定的偏移量处检索所述待读取数据单元。
所述第一读取操作解压缩多个已压缩数据块并相继读取多个已解压缩数据单元。
所述删除操作对所述第二已压缩数据块的存储大小进行扩展,以负责(account for)所述第二已压缩数据块和所述第一已压缩数据块之间存在的大小差异。
所述第二已压缩数据块的存储大小通过存储除对应于所述第二已压缩数据块的历史信息之外的与所述第二已压缩数据块相关联的附加信息来进行扩展。
所述删除操作存储与所述第二已压缩数据块相关联的新检错码以替代与所述第一已压缩数据块相关联的检错码。
所述操作包括添加操作,该添加操作存储与一最近添加的数据单元集合相关联的待添加数据单元。
所述处理器还被配置为将所述最近添加的数据单元集合压缩为存储在所述存储介质中的已压缩数据块。
所述第二读取操作根据一指示含有具有多个特定标识符的数据单元的所述数据块的索引来定位包括所述待读取数据单元的所述数据块,以恢复已解压缩数据单元集合,并在所述多个已解压缩数据单元内搜索所述待读取数据单元。
所述数据存储系统被配置为存储附加信息,该附加信息将所述组中的所述多个数据块确定为符合预定存储格式。
所述附加信息包括在所述组中每一数据块的数据头中的用来确定所述预定存储格式的标识符。
所述第一读取操作与所述预定存储格式相兼容。
在另一个方案中,通常,一种用于管理数据单元存储的系统包括用来存储多个数据块的装置,至少一些所述数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元。所述系统还包括用来针对多个数据单元执行两项或更多项操作的装置。所述操作包括:第二读取操作,与所述第一读取操作不同,该第二读取操作至少部分基于包含待读取数据单元的数据块的地址来检索该待读取数据单元;以及删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块。
在另一个方案中,通常,一种用于管理数据单元存储的方法包括将多个数据块存储在数据存储系统中,至少一些所述数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元。所述方法还包括使用至少一个处理器针对多个数据单元执行两项或更多项操作。所述操作包括:第二读取操作,与所述第一读取操作不同,该第二读取操作至少部分基于包含待读取数据单元的数据块的地址来检索该待读取数据单元;以及删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块。
在另一个方案中,通常,软件存储在计算机可读介质上以管理数据单元的存储。所述软件包括用于使计算系统执行以下操作的指令:将多个数据块存储在数据存储系统中,至少一些所述数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元;以及针对多个数据单元执行两项或更多项操作。所述操作包括:第二读取操作,与所述第一读取操作不同,该第二读取操作至少部分基于包含待读取数据单元的数据块的地址来检索该待读取数据单元;以及删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块。
在另一个方案中,通常,一种用于管理数据单元存储的系统包括被配置为存储多个数据块的数据存储系统,至少一些所述数据块包括多个数据单元,所述数据存储系统还被配置为针对至少一些所述数据块存储与之前从该数据块删除一个或多个数据单元有关的相应历史信息,所述删除会影响该数据块中多个数据单元的至少一些地址。该系统还包括接口,该接口包括至少一个处理器,耦接至所述数据存储系统,且被配置为根据地址信息来执行至少一种访问存储在第一数据块中的至少一第一数据单元的操作,所述地址信息基于对应于所述第一数据块的任何存储的历史信息来解读。
这些方案可包括一个或多个以下特征。
对应于所述第一数据块的所述历史信息包括与之前从所述第一数据块删除一个或多个数据单元有关的信息,所述删除会影响已从所述第一数据块中解压缩的数据单元的相对偏移量。
至少一些所述数据块是已压缩数据块。
该接口被配置为针对多个数据单元执行两项或更多项操作,所述操作包括:读取操作,该读取操作至少部分基于地址信息来检索待读取数据单元,所述地址信息相对于参考地址来定位所述数据单元;以及删除操作,该删除操作删除待删除数据单元,并存储用来针对其他数据单元解读地址信息的与所述已删除数据单元相关的历史信息,以考虑到由于删除所述待删除数据单元而造成的相对于所述参考地址的任何偏移量。
该接口还被配置为针对多个数据单元执行两项或更多项操作,所述操作包括:第一读取操作,该第一读取操作至少部分基于对应于已压缩数据块的历史信息来检索待读取数据单元;以及删除操作,该删除操作以不包括所述已删除数据单元的第二已压缩数据块来替代包括待删除数据单元的第一已压缩数据块,并将与所述已删除数据单元有关的信息存储在对应于所述第二已压缩数据块的历史信息中。
所述第一读取操作解压缩一特定的已压缩数据块以恢复一已解压缩数据单元集合,并至少部分基于对应于该特定的已压缩数据块的所述历史信息在距一参考位置特定的偏移量处检索所述待读取数据单元。
所述第一读取操作确定所述历史信息是否包括与一个或多个先前已删除数据单元有关的信息。
如果所述历史信息包括与一个或多个先前已删除数据单元有关的信息,所述第一读取操作基于对所述特定的偏移量和历史信息中的值的比较来确定是否调整所述特定的偏移量,所述历史信息指出至少一个先前已删除数据单元的偏移量。
如果要调整所述特定的偏移量,所述第一读取操作基于一个或多个先前已删除数据单元的偏移量和大小来调整所述特定的偏移量。
所述删除操作对所述第二已压缩数据块的存储大小进行扩展,以负责所述第二已压缩数据块和所述第一已压缩数据块之间的大小差异。
所述第二已压缩数据块的存储大小通过存储除对应于所述第二已压缩数据块的历史信息之外的与所述第二已压缩数据块相关联的附加信息来进行扩展。
所述删除操作存储与所述第二已压缩数据块相关联的新检错码以替代与所述第一已压缩数据块相关联的检错码。
所述操作包括添加操作,该添加操作存储与一最近添加的数据单元集合相关联的待添加数据单元。
所述处理器还被配置为将所述最近添加的数据单元集合压缩为存储在所述存储介质中的已压缩数据块。
所述操作包括第二读取操作,与所述第一读取操作不同,所述第二读取操作解压缩一个或多个已压缩数据块并相继读取多个已解压缩数据单元。
所述操作包括第三读取操作,与所述第一读取操作和所述第二读取操作不同,该第三读取操作解压缩由索引指出为包括具有特定标识符的数据单元的特定的已压缩数据块,以恢复已解压缩数据单元集合,并在所述多个已解压缩数据单元内搜索所述具有所述特定标识符的数据单元。
至少一些所述历史信息存储在所述数据存储系统中。
至少一部分所述历史信息在不同数据块之间交叉存取。
对应于一特定数据块的至少一部分历史信息存储在该特定数据块的预定部分中。
在另一个方案中,通常,一种用于管理数据单元存储的系统包括用于存储多个数据块的装置,至少一些所述数据块包括多个数据单元,所述用于存储多个数据块的装置被配置为针对至少一些所述数据块存储与之前从该数据块删除一个或多个数据单元有关的相应历史信息,所述删除会影响该数据块中多个数据单元的至少一些地址。该系统还包括用于执行至少一种操作的装置,该操作根据基于对应于所述第一数据块的任何存储的历史信息解读的地址信息来访问存储在所述第一数据块中的至少一第一数据单元。
在另一个方案中,通常,一种用于管理数据单元存储的方法包括将多个数据块存储在数据存储系统中,至少一些所述数据块包括多个数据单元,所述数据存储系统被配置为针对至少一些所述数据块存储与之前从该数据块删除一个或多个数据单元有关的相应历史信息,所述删除会影响该数据块中多个数据单元的至少一些地址。该方法还包括使用至少一个处理器来执行至少一种操作,所述操作根据基于对应于所述第一数据块的任何存储的历史信息解读的地址信息来访问存储在所述第一数据块中的至少一第一数据单元。
在另一个方案中,通常,软件存储在计算机可读介质上,以管理数据单元的存储。所述软件包括用于使计算系统执行以下操作的指令:将多个数据块存储在数据存储系统中,至少一些所述数据块包括多个数据单元,该数据存储系统被配置为针对至少一些所述数据块存储与之前从该数据块删除一个或多个数据单元有关的相应历史信息,所述删除会影响该数据块中多个数据单元的至少一些地址;以及执行至少一种操作,所述操作根据基于对应于所述第一数据块的任何存储的历史信息解读的地址信息来访问存储在所述第一数据块中的至少一第一数据单元。
这些方案可包括一个或多个以下优点。
提供一可彻底从已压缩数据存储部中删除数据单元的删除操作,该删除操作可能是有用的,例如,用于遵守应客户要求而删除数据的隐私法。删除所述已删除数据单元可能会影响在特定地址或在距参考地址相对偏移量处定位数据单元的指针。然而,这些指针不需要改动,甚至不需要在执行所述删除操作时加以定位。不过,如果要实际访问那些数据单元,必要时,随后可以对指针进行改正。对于许多所述数据存储的使用而言,按需改正指针比在删除时定位并改正该指针更加有效。从多块已压缩数据存储部的已压缩块删除已删除数据单元也可以这样一种方式来执行:即,保存所述删除操作和多种操作的兼容性,所述多种操作通过扫描从一个或多个已压缩数据块恢复的多个数据单元来读取数据单元。例如,所述删除操作可能与扫描读取操作相兼容,该扫描读取操作将标准的解压缩功能(例如gzcat)应用于以已知压缩格式(例如gzip)存储的文件中,并解读已解压缩数据(例如,根据记录格式)以不必依赖于索引或其他地址信息而相继将单独记录恢复为数据单元。通过确保在所述删除操作之后所述文件在已压缩数据块之间没有间隙,扫描读取操作仍然能够正确地解析所述压缩格式,无需移动或重写整个文件。此外,通过使用所述历史信息,可以执行所述删除操作,这样,不管是否有数据单元先前已从已压缩数据存储部中删除,依赖于地址信息的读取操作都继续正常运行。
通过以下说明书和权利要求书,本发明的其它特征和优点将变得显而易见。
附图说明
图1是数据存储系统的框图。
图2是数据存储格式的示意图。
图3A-3D是数据操作的流程图。
具体实施方式
图1所示的是数据处理系统100的一个示例,数据存储技术可应用于该数据处理系统。执行环境102包括存储接口模块104,该存储接口模块被配置为针对存储在数据存储系统106中的数据单元执行数据操作。所述执行环境102可能被托管在例如受一合适的操作系统(比如UNIX操作系统的一个版本)控制的一个或多个通用计算机。例如,所述执行环境102还可包括多节点并行计算环境,该多节点并行计算环境包括使用多个中央处理器(CPU)或处理器内核的计算机系统的配置,这些CPU或处理器内核可以是本地(例如多处理器系统,如对称多处理(SMP)计算机),或本地分布式(例如多个处理器耦合为群集或大规模并行处理(MPP)系统),或者远程,或远程分布式(例如通过局域网(LAN)和/或广域网(WAN)来耦合的多个处理器),或其组合。所述数据存储系统106包括一个或多个存储设备,所述存储设备可能是所述执行环境102本地的存储设备,例如,连接到托管所述执行环境102的计算机;或可能是所述执行环境102远程的存储设备,例如,通过远程连接与托管所述执行环境102的计算机进行通讯。所述一个或多个存储设备可包括:例如,易失性存储器,比如随机存取存储器(RAM);和非易失性存储器,比如磁驱动器或固态驱动器。所述数据处理系统100可用于通过耦接至网络110的通信接口108而从其他系统接收数据或向其他系统提供数据。
从所述数据存储系统106中的各种存储源接收的可单独访问的数据单元可被组织为针对各字段(也称为“属性(attribute)”或“纵列(column)”)具有值的记录,包括可能的空值。例如,信用卡公司可从各零售公司收到表示单笔交易的数据。每一交易与表示属性的值(例如,客户名称、日期、购买量等)相关联。所述存储接口模块104可确保数据是按照预定记录格式进行格式化的,以便与交易相关联的值被存储在记录里。在某些情况下,这会包括根据所述记录格式转化来自多个源的数据。在其他情况下,一个或多个源会根据所述记录格式提供已格式化数据。在某些情况下,所述记录格式最初可能是未知的,可能在对所述源或数据进行分析之后才能确定。
所述存储接口模块104为管理存储在所述数据存储系统106中的数据提供一数据操作集合。例如,处理器被配置为针对特定数据操作执行存储指令,以响应执行该特定数据操作的请求。所述数据操作包括用来添加新数据单元的添加操作、用来删除存储数据单元的删除操作以及用来以不同读取模式检索存储数据单元(在下文进行更详细地的描述)并返回已请求读取的检索到的数据单元的多个读取操作。进行所述数据操作以响应于所述数据处理系统100的另一部分,包括从用户处接收输入的用户接口。
在一些实施方式中,所述数据存储系统106包括压缩数据存储部112,该压缩数据存储部以这样一种存储格式来存储数据,即,每个已压缩数据块通过压缩多个数据单元来形成。由所述压缩产生的数据块通常包括以压缩形式表示那些多个数据单元的压缩数据以及附加信息(overhead information),所述附加信息系指是所述数据块的一部分但不是压缩数据本身的任何其他信息,该附加信息出现在所述压缩数据之前被称为“数据头(header)”,出现在所述压缩数据之后则被称为“数据尾(footer)”。在一些实施方式中,所述数据存储系统106存储有不一定被压缩但彼此相关联的数据单元集合,比如在相对于共同参考位置的指定偏移位置处存储的数据单元集合。在一些实施方式中,所述存储接口模块104能够使用各种技术中的任一种技术在某种程度上结合记录来处理数据单元以生成数据块(例如,以使该块不仅仅是级联的记录集合)。可通过采用补充功能(例如,解压缩)对包含多个数据单元的数据块进行处理以恢复独立的数据单元。包含在数据块中的数据单元可能不是以其原始形式存储的(例如,数据单元可能用不同位元来表示),并且数据单元可能不是以每一数据单元和存储在该数据块中位元之间的一一对应来单独表示的(例如,已压缩数据块内的任一特定位元可能是多个数据单元的函数)。如果采用了压缩,则该压缩可以是执行预期功能的一部分。例如,在一些实施方式中,模块104对记录集合进行处理,以生成一加密的数据块。不同数据块的压缩比(即,压缩大小除以解压缩后的大小)通常会变化,在某些情况下,一些数据块的压缩比可能会大于1。
存储格式的一个例子是用于定位个别存储数据单元的具有可选索引的已压缩记录文件,在美国专利号7,885,932进行了详细描述,该专利通过引用合并于此。例如,为生成压缩记录文件,所述存储接口模块104通过可识别每一记录的主键值(例如,可识别单独记录的唯一键或可识别一条记录多个更新版本的键)对接收到的记录进行分类,并将所述记录归合成对应于非重叠范围主键值的记录集合,每一记录集合可能对应于预定数量的记录(例如,100条记录)。所述模块104将每一记录集合压缩为压缩数据块。将这些压缩块收集起来以形成一压缩记录文件(例如,通过把连续的块添加到该文件中),所述压缩记录文件存储在所述压缩数据存储部112中(例如,托管在非易失性存储介质中,如一个或多个硬盘驱动器)。还可以对任何数目的压缩记录文件进行合并以形成一复合的压缩记录文件。在一些实施方式中,所述存储接口模块104对包括针对所述块中每一块的条目的索引进行管理。所述索引可用于通过列出记录的一系列主键来定位包括给定记录的块,所述记录可包括在所述块之中,在美国专利号7,885,932进行更详细地描述。虽然所述索引可存储在与所述压缩记录文件同样的存储介质中,但优选地,由于该索引通常要比所述压缩记录文件小得多,该索引可存储在相对更快的存储器中(例如,易失性存储介质,如动态随机存取存储器)。
由于要接收新的数据单元并存储在所述数据存储系统106中(通过添加操作),所述数据单元首先以未压缩的形式存储在输入缓冲器114中。在一预设阈值后,例如,在特定数量的数据单元被存储在所述输入缓冲器114之后,或者在所述输入缓冲器114达到特定大小后,或者在特定时间间隔之后,采用多种压缩格式中任一种压缩格式(例如,gzip格式),可以将多个数据单元一起压缩为一单一的压缩数据块。所述压缩数据块然后被添加到所述压缩数据存储部112中的所述压缩记录文件之一。
在一些实施方式中,针对不同读取模式有不同读取操作,以便以能够检索数据的方式提供灵活性。对于每一种读取模式,对由所述读取模式识别的一个或多个压缩数据块进行解压缩,可以生成一数据单元集合。然而,不同的读取模式采用不同技术来从已从数据块恢复的所述数据单元集合检索一个或多个待返回的数据单元,以响应所述读取操作。例如,在第一读取模式(称为“直接寻址模式”)中,基于地址信息对特定的数据单元(多个)进行检索,所述地址信息指定了:包含数据单元的所述数据块,所述数据单元的开端的偏移量(相对于所述恢复的集合的开端)以及所述数据单元的长度。在某些情况下,可能需要基于历史信息对所述偏移量进行修改,所述历史信息包括与之前从该数据块删除一个或多个数据单元有关的信息,该信息足以更正由于所述之前的删除而导致的潜在变更,在下文中会更详细地进行描述。所述数据单元的长度规格以可变长度和/或未指定长度来支持数据单元。可选地,在一些实施方式中,如果所有数据单元具有相同指定的固定长度,则所述长度不需包括在直接地址之中。在一些实施方式中,直接地址能基于辅助信息隐含地指出数据单元的相对偏移量。例如,直接地址能指定:包含数据单元的所述数据块,映射到所述数据单元的开端的偏移量的记录标识符(例如,基于与所述数据块相关联存储的映射)。
在第二读取模式(称为“扫描模式”)中,可以从所述恢复的集合中将数据单元相继读取为连续流。对于包括多个压缩数据块的压缩记录文件,当达到一个压缩数据块的末端时,对来自下一个压缩数据块的数据单元进行解压缩和读取,直至达到该文件的结尾。在扫描模式中,可以返回全部所述读取的数据单元,以响应于所述读取操作,或者可以返回所述读取的数据单元的任一子集(例如,基于一选定的过滤器)。在所述系统100的一些实施方式中,扫描模式读取操作可被配置为由所述数据存储系统106的一接口来执行,该接口与所述存储接口模块104是分离开的(例如,通过在所述执行环境102中运行的第三方程序或者通过可从所述执行环境102外部访问所述数据存储系统106的系统来隔开)。
在第三读取模式中(称为“键查找模式”),通过访问一索引来检索具有特定键(多个)的记录,该索引可识别对应于每一数据块的可能键的范围。由所述读取操作指定的键可能是主键,或者是映射到待检索的数据单元的一个或多个主键的辅键。对所述索引所列出并对应于包括指定主键的范围的数据块进行解压缩,并从所述恢复的数据单元集合搜索该主键。其他读取操作也可得以支持。例如,读取操作可指定主键或辅键,通过使用主键-直接地址查找表可将该主键或辅键映射到针对一特定数据单元的地址信息。
所述删除操作可使指定的数据单元从包含该数据单元的所述压缩数据存储部112中的压缩数据块中删除,而无需修改所述压缩数据存储部112的任何其他部分。例如,一些实施方式不需要对压缩记录文件的超过一个单一数据块进行修改,且不需要对所述数据块或文件的任何索引进行修改。这很有用,例如,如果一特定的数据单元包含需要被清除的信息(例如,应客户请求根据隐私法需要删除的客户信息),但同一块或同一压缩记录文件中的其他数据单元仍需要保留。所述删除操作以不包括所述删除数据单元的新的压缩数据块来替代包括待删除数据单元的压缩数据块,并将与所述删除数据单元有关的信息存储在与所述新的压缩数据块相关联的历史信息中。所述历史信息可随同所述压缩数据块存储在所述压缩数据存储部112中(例如,所述压缩数据块的预定部分,如数据头或数据尾,或其他附加信息或不同压缩数据块之间的可用交织空间)。所述历史信息可包括例如已删除数据单元的一系列偏置量及其长度。
利用该历史信息,通过利用根据所述历史信息解读的现有地址信息随后仍能访问留在所述新的压缩数据块中的其他数据单元,以把由任何删除数据单元造成的任何偏移量考虑进去。特别地,对于位于从已删除数据单元后的数据块恢复的集合中的数据单元的全部现有直接地址偏移量在删除操作时不需进行修改,这有助于提升效率。当期望采用读取操作以直接寻址模式来读取较小数量的存储数据单元时,这种情况下,写入历史信息以按需调整偏移量可能要比针对从未读取的数据单元修改潜在大量的存储的直接地址偏移量(例如,存储在索引中)更有效率。此外,在一些实施方式中,所述存储接口模块104可能不会访问所有的位置,所述位置中可存储直接地址偏移量。因此,不会对全部所述偏移量进行修改。
参见图2,所述压缩数据存储部112的数据存储格式的一个示例包括压缩记录文件200,所述压缩记录文件200包括若干压缩数据块,所述压缩数据块包括数据块202A-202C。在该示例中,所述数据块202B包括数据头204和数据尾206。所述数据头204包括存储有关于所述数据块202B压缩和解压缩相关的信息以及其他相关信息的字段。所述数据尾206包括检错码,例如循环冗余校验(CRC)和其他校验和(checksum),以检测和/或改正压缩和解压缩过程中的错误。可以对所述数据块202B之内的一部分压缩数据208进行解压缩,以恢复存储在所述压缩记录文件200中的记录集合210。对于一些压缩格式,所述数据头204具有可变长度,并因此包括指示该数据头204结束位置以及所述压缩数据208开始位置的信息。
例如,在gzip压缩格式中,所述数据头204具有下表列出的字段,包括前10个字节中的6个必填字段,以及包括可变长度字段的多达6个可选字段。
表1
所述gzip压缩格式还具有8-字节数据尾,该8-字节数据尾包括一4-字节CRC码以及一4-字节值,该4-字节值提供所述原始数据的解压缩后的大小,所述解压缩后的大小为232压缩模。两个或多个压缩数据块(每个压缩数据块具有自己的gzip数据头和数据尾,且彼此相邻存储(即,下一数据头紧接上一数据尾之后开始))可被识别为单一有效的gzip文件。
当所述存储接口模块104执行删除操作时(在该删除操作中,一个或多个待删除记录(例如,记录C和记录E)被指示为包含在所述数据块202B中(例如,通过索引)),所述模块104对所述压缩数据208进行解压缩,以恢复所述记录集合210,生成省略了被删除的记录的新记录集合212,并将该新记录集合212压缩成修改过的压缩数据208’。由于所述新记录集合212包含的信息内容少于所述原始的记录集合210,所以所述修改过的压缩数据208’的大小会小于所述原始压缩数据208的大小(假设任一可被删除的给定记录中有一定的最低信息含量)。存储所述压缩数据208的所述数据块202B的所述部分然后被替换为所述修改过的压缩数据208’,且所述原始数据头204和数据尾206被替换为修改过的数据头204’和数据尾206’,所述数据头204’和数据尾206’共同对应于修改过的数据块202B’。由于所述修改过的数据208’占据的存储空间少于所述原始数据208,具有可供所述修改过的数据头204’占据的存储空间,且所述修改过的数据头204’占据的存储空间要超过所述原始数据头204。该额外的存储空间用于将历史信息214存储在一可用的可变长度字段(例如,所述gzip压缩格式的额外字段)。
对于多数记录格式,需要将所述历史信息214容纳在所述修改过的数据头204’范围内的存储空间可能要小于在删除单一记录后所述修改过的数据208’预期的缩减大小。如果所述大小没有缩减到能充分容纳所述历史信息214,则可能取消相关联的删除操作,并返回错误消息。为确保所述修改过的数据块202B’具有和所述原始数据块202B相同的总大小,可以根据需要通过写入补白(padding)218来延长所述数据头,例如通过重复的字节模式(如,包含0xff的许多字节)或其他附加信息,在同一或另一可变长度字段(例如,所述gzip压缩格式的注解字段)。可选地,对于记录的删除可能不会为所述历史信息(例如,为特别紧凑的记录结构)提供足够空间的实施而言,当首先生成一压缩数据块时,补白也可包括在所述数据头中。可以根据需要减少所述初始补白,以在所述数据头中为所述历史信息提供额外空间。
如上所述,所述历史信息214汇总了已从所述记录集合210删除的记录,所述记录集合在相对于一共同参考存储位置(例如,相继将记录存储在所述新的恢复记录集合212中地址空间的起始地址)针对必要时要进行更正的所述新的较小集合212中剩余记录的直接地址偏移值具有足够信息。可用于编码所述历史信息214的数据结构215的一个示例是一列元素216,每一元素包括已删记录相对于所述原始记录集合中第一记录开始的偏移量(无论所述第一记录当前是否存在),以及该记录的对应长度。在图2阐明的示例中,针对已删记录C和E中的每一记录都具有两个元素216。记录长度的编码以可变长度和/或未指定的长度来支持记录。可选地,在其他示例中,如果所有记录具有相同指定的固定长度,则所述长度不需存储在元素216中。所述元素216存在于按其偏移值次序排列的列表中。由于执行额外的删除操作以删除额外记录,额外元素216被添加到或插入到该列表中。
各种编码技术可用来以有效方式存储该数据结构215。例如,两个或多个相邻已删记录的任一序列可收缩为一单一元素216,该单一元素216包括该序列中第一记录的偏移量以及等于该序列中记录长度总和的长度。因此,每一元素216可表示一先前已删除区,该先前已删除区存储有许多先前已删除的记录。在某些情况下,相邻的已删记录可能已在不同删除操作中删除了。每一元素216可存储在所述数据头204’的可变长度字段中位元的相邻位置,采用预定数目的位元来存储所述偏移量并采用预定数目的位元来存储所述长度。用于存储所述偏移值的存储空间的数量限制在足够存储预期最大的可能偏移量的相对较少数量的位元。用于存储所述长度值的存储空间的数量也可加以限制(例如,限制在和用于存储所述偏移量的位元相同的数量,以把收缩的元素考虑进去)。也可基于什么值才是可能的值的假设来对所述偏移值和长度值进行压缩。例如,如果已知一条记录总会占据偶数个位元,则所述偏移值和长度值可被理解为对特定数目的位元对进行编码。因此,8位元能够编码的值高达255×2=510位元。类似地,如果已知一条记录总会占据的存储空间是一定数量位元的存储空间的倍数,则所述偏移值和长度值可被理解为对一个数字乘以该倍数的位元进行编码,这与位元的实际数目完全不同。可选地,还能进一步压缩该数据结构215(例如,采用行程(run-length)编码)。
图3A所示的是为删除一个或多个记录而执行的删除操作的一个示例的流程图300,每一记录具有对应于三个一组(BLOCK(块)、OFFSET(偏移)、LENGTH(长度))的直接地址。(在该示例中,单一块中的一个或多个记录正被删除,但在其他示例中,来自许多块的记录可能是在删除操作中予以删除的。)所述存储接口模块104对所述压缩数据存储部112中的数据块进行解压缩(302),将标识符BLOCK(块)存储在一地址空间,该地址空间在地址START(开始)处开始。所述模块104在地址START(开始)+OFFSET(偏移)处删除(304)记录(具有LENGTH(长度)的长度)。所述模块104对历史信息进行计算(306),该历史信息可编码OFFSET(偏移)值和LENGTH(长度)值。所述模块104确定(308)是否有多个记录要从该块中删除,如果是,则重复所述删除(304)步骤和计算(306)步骤。删除记录之后,所述模块104将一新记录集合写入到一部分所述存储空间,剩余记录在该部分存储空间中相邻,没有任何过去曾经是省略了的记录(多条)的间隙(例如,写入到一临时文件中),并且所述模块104对所述新记录集合进行压缩(310)。所述模块104将经过计算的历史信息数据结构和任何必要的补白写入(312)进块BLOCK(块)的数据头中。所述模块104将产生的所述压缩数据写入(314)进所述已压缩数据存储部112中的块BLOCK(块),这样该压缩数据会在和块BLOCK(块)中的原始压缩数据相同的位置处结束。所述模块104用检错码来为所述新压缩数据写入(316)一新的数据尾(来代替之前的数据尾)。
除这样一种实际删除正被删除的记录中信息的“擦除(expunging)”删除操作之外,所述存储接口模块104还能被配置为提供简单地隐藏或标记将要被删除的记录(实际上并不删除该记录中的信息)的其他删除操作。这些删除操作可能不需要写入历史信息,甚至不需要解压缩块,这对于提供更快但较不安全的删除形式是很有帮助的。然而,还有能充分擦除的删除操作可供使用,以满足在清除信息上有更严格的要求,例如,按照某些隐私法的规定,删除后的信息不能被恢复。
图3B所示的是为读取一个或多个记录而执行的第一(直接寻址)读取操作的一个示例的流程图320,每一记录具有对应于三个一组(BLOCK(块)、OFFSET(偏移)、LENGTH(长度))的直接地址。(在该示例中,单一块中的一个或多个记录正被读取,但在其他示例中,可能是来自许多块的记录在读取操作中被读取。)所述存储接口模块104对所述压缩数据存储部112中的数据块进行解压缩(322),将标识符BLOCK(块)存储在一地址空间,该地址空间在地址START(开始)处开始。所述模块104将待读取记录的地址计算(324)为START(开始)+OFFSET(偏移)–CORRECTION(校正),其中CORRECTION(校正)基于针对块BLOCK(块)的任何现有历史信息予以计算。例如,所述模块104确定有多少先前已删除区具有少于OFFSET(偏移)的偏移值的值并在OFFSET(偏移)之前结束。如果没有,则无需进行校正且CORRECTION(校正)=0。否则,CORRECTION(校正)等于偏移值少于OFFSET(偏移)的每一先前已删除区的长度之和。因此,由先前已删除区导致的校正取决于最初有多少先前已删记录存在于特定的待读取记录和所述记录集合起点之间。计算所述地址之后,所述模块104在所述计算地址处读取(326)所述记录。如果先前已删除区具有的偏移值小于或等于OFFSET(偏移)但不在OFFSET(偏移)之前结束,则所述计算地址落入所述先前已删除区,并且所述模块104跳过所述读取步骤326并报告所述待读取记录已经被删除。所述模块104确定(328)是否有额外待读取记录,如果有,则重复所述计算(324)步骤和读取(326)步骤。当所述块中没有额外待读取记录,则返回操作(330)。
所述第一(直接寻址)读取操作的其他实施也是可能的。例如,不用针对每一待读取记录计算校正过的地址,在对所述压缩数据块进行解压缩之后恢复的记录可被写入到带有已删记录曾经所在的适当间隙的地址空间。为确定所述间隙所在位置所需的信息可从上述相同的历史信息中获得。所述读取操作然后在其未经校正的地址START(开始)+OFFSET(偏移)处继续读取每一记录。
图3C显示的是第二(扫描)读取操作的示例的流程图340,该第二(扫描)读取操作对压缩记录文件中的一个或多个块进行扫描,记录将要从该压缩记录文件中读取。所述存储接口模块104将所述压缩数据存储部112中的所述第一数据块解压缩(342)至一地址空间中。所述模块104扫描(344)该地址空间以读取每一单独记录(例如,通过识别每一记录的开始和/或每一记录的结尾)。所述模块104确定(346)所述文件中是否有另一数据块(例如,通过检测另一gzip神奇数据头),如果有,则解压缩(342)下一数据块以读取额外的记录。如果在所述文件中没有额外的待读取数据块(例如,通过检测所述文件的结尾),则操作返回(348)。
尽管可能以完全擦除记录而无需存储历史信息的方式来实施擦除操作(例如,通过以例如全是1位元或0位元的预定模式填写的间隙来将所述已删记录覆盖在适当位置),这样一种删除操作需要扫描模式读取操作来识别并忽略这些已删记录。通过删除所述已删记录曾经所在的间隙,并将信息保存在所述历史信息之中,所述扫描模式读取操作能够以与多种技术中任一种技术相兼容的灵活方式来予以实施,所述技术可用来读取所述压缩数据存储部112中的信息,包括通过除了所述存储接口模块104之外的其他模块(例如,通过采用第三方软件)。此外,通过填写在较小的已修改过的压缩数据208’替代较大的原始压缩数据208之后剩余的额外的空间(例如,通过填写所述已修改过的数据头204’的字段),在压缩记录文件中没有意外间隙,使得所述第二(扫描)读取操作能够成功地识别出每一压缩数据块。例如,在采用gzip格式的实施中,在数据尾后,所述模块104预见压缩数据块的另一开头(即,另一gzip神奇数据头)或所述压缩记录文件结尾的指示符。以这种方式扩展由删除操作修改的压缩数据块的大小能够维持扫描模式的兼容性,而无需移动压缩记录文件中任一压缩数据块的存储位置,所述压缩记录文件在所述压缩数据块被修改之后出现。
图3D所示的是为读取一个或多个记录而执行的第三(键查找)读取操作的一个示例的流程图360,每一记录具有一个标识键值。所述存储接口模块104以标识符BLOCK(块)将所述压缩数据存储部112中的数据块解压缩(362)至一地址空间中。所述模块104在所述地址空间中搜索(364)记录,以定位具有提供的键值的任何记录。
为了使多个并发数据操作得以被所述存储接口模块104、或访问所述压缩数据存储部112的其他模块或系统执行,可以采用技术以避免两个数据操作之间发生冲突。如果预期删除操作并非频频发生,压缩数据块的数据尾中的检错码可以在解压缩后由数据操作用来检测在删除操作期间更新压缩数据过程中的数据块。例如,在无效校验和之后,所述数据操作可输出错误消息或在一段延迟后再行尝试,以允许完成所述删除操作。如果预期删除操作相对频繁地发生,可采用锁定机制来避免这样的冲突。
上述数据存储技术可以使用执行适当软件的计算系统来实施。例如,软件包括在一个或多个已编程或可编程计算机系统(可以具有各种架构,诸如分布式、客户端/服务器、或网格式)上执行的一个或多个计算机程序中的进程,每个计算机系统包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、以及至少一个用户接口(用于使用至少一个输入设备或端口来接收输入,以及用于使用至少一个输出设备或端口来提供输出)。该软件可包括大型程序的一个或多个模块,例如,该大型程序提供与数据流图的设计、配置和执行相关的其它服务。该程序的模块(例如,数据流图的元件)可以被实施为数据结构或者符合在数据库中存储的数据模型的其它经过组织的数据。
该软件可以被提供在诸如CD-ROM或其他计算机可读介质之类的有形永久存储介质(其可以被通用或专用计算机系统或装置读取)上,或者通过网络的通信介质递送(编码成传播信号)到执行该软件的计算机系统的有形永久介质。一些或全部处理可以在专用计算机上执行,或者使用诸如协处理器或现场可编程门阵列(FPGA)或专用集成电路(ASIC)之类的专用硬件来执行。该处理可以以分布方式实施,在该分布方式中,由该软件指定的不同的计算部分由不同的计算元件执行。每个这样的计算机程序被优选地存储在或下载到可由通用或专用可编程计算机读取的存储设备的计算机可读存储介质(例如,固态存储器或介质、或者磁或光介质),用于在计算机读取该存储介质或设备时配置和操作该计算机,以执行此处所描述的处理。也可以考虑将本发明的系统实施为有形永久存储介质,其配置有计算机程序,其中,如此配置的存储介质使得计算机以特定和预定义的方式操作以执行此处所描述的一个或多个处理步骤。
已经对本发明的多个实施例进行了描述。然而,应当理解,前面的描述旨在说明而非限制本发明的范围,本发明的范围由以下权利要求书的范围来限定。因此,其它实施例也落在以下权利要求书的范围内。例如,在不脱离本发明的范围的情况下可进行各种修改。此外,上述的一些步骤可以是顺序独立的,因此可以以不同于所述的顺序来执行。
权利要求书(按照条约第19条的修改)
1.一种用于管理数据单元存储的系统,所述系统包括:
数据存储系统,配置为存储多个数据块,至少一些所述数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元;以及
接口,包括至少一个处理器,耦接至所述数据存储系统,且被配置为执行关于数据单元的一种或多种操作,所述操作包括删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,并存储与所述第二数据块相关联的附加信息以使所述第二数据块具有和所述第一数据块相同的大小。
2.根据权利要求1所述的系统,其中所述第二数据块与一数据块相邻,该数据块在所述数据存储系统内曾与所述第一数据块相邻。
3.根据权利要求1或2所述的系统,其中所述第二数据块存储在与所述第一数据块相同的存储空间中。
4.根据权利要求1、2或3所述的系统,其中所述删除操作使得并非所述第一数据块的数据块维持在所述数据存储系统之内在执行所述删除操作之前曾存储所述第一数据块的相同存储位置。
5.根据任一上述权利要求所述的系统,其中所述数据存储系统被配置为针对至少一些所述数据块存储与之前从该数据块移除一个或多个数据单元有关的相应历史信息,所述移除影响该数据块中至少一些数据单元的地址。
6.根据权利要求5所述的系统,其中所述操作包括第二读取操作,不同于所述第一读取操作,该第二读取操作根据基于对应于一特定数据块的任何存储的历史信息解读的地址信息来访问存储在所述特定数据块中的至少一第一数据单元。
7.根据权利要求5或6所述的系统,其中所述删除操作将与所述已删除数据单元有关的信息存储在对应于所述第二数据块的历史信息中。
8.根据权利要求5、6或7所述的系统,其中至少一些所述历史信息存储在所述数据存储系统中。
9.根据权利要求8所述的系统,其中至少一部分所述历史信息在不同数据块之间交叉存取。
10.根据权利要求8或9所述的系统,其中对应于一特定数据块的至少一部分历史信息存储在该特定数据块的预定部分中。
11.根据任一上述权利要求1所述的系统,其中至少一些所述数据块是已压缩数据块。
12.根据权利要求11所述的系统,其中所述第二读取操作解压缩一特定的已压缩数据块以恢复一已解压缩数据单元集合,并至少部分基于对应于该特定的已压缩数据块的所述历史信息在距一参考位置特定的偏移量处检索所述待读取数据单元。
13.根据权利要求11或12所述的系统,其中所述第一读取操作解压缩多个已压缩数据块并相继读取多个已解压缩数据单元。
14.根据权利要求11-13中任一权利要求所述的系统,其中所述删除操作对所述第二已压缩数据块的存储大小进行扩展,以填占所述第二已压缩数据块和所述第一已压缩数据块之间的大小差异。
15.根据权利要求14所述的系统,其中所述第二已压缩数据块的所述存储大小通过存储除对应于所述第二已压缩数据块的历史信息之外的与所述第二已压缩数据块相关联的附加信息来进行扩展。
16.根据权利要求11-15中任一权利要求所述的系统,其中所述删除操作存储与所述第二已压缩数据块相关联的新检错码以替代与所述第一已压缩数据块相关联的检错码。
17.根据权利要求11-16中任一权利要求所述的系统,其中所述操作包括添加操作,该添加操作存储与一最近添加的数据单元集合相关联的待添加数据单元。
18.根据权利要求17所述的系统,其中所述处理器还被配置为将所述最近添加的数据单元集合压缩为存储在存储介质中的已压缩数据块。
19.根据任一上述权利要求所述的系统,其中所述数据存储系统被配置为存储附加信息,该附加信息将所述组中的所述多个数据块识别为符合预定存储格式。
20.根据权利要求19或20所述的系统,其中所述附加信息包括在所述组中每一数据块的数据头中的用来识别所述预定存储格式的标识符。
21.根据权利要求19所述的系统,其中所述第一读取操作与所述预定存储格式相兼容。
22.一种用于管理数据单元存储的系统,所述系统包括:
用来存储多个数据块的装置,至少一些所述多个数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元;以及
用来执行关于数据单元的一种或多种操作的装置,所述操作包括删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,并存储与所述第二数据块相关联的附加信息以使所述第二数据块具有和所述第一数据块相同的大小。
23.一种用于管理数据单元存储的方法,所述方法包括:
将多个数据块存储在数据存储系统中,至少一些所述数据块包括多个数据单元,至少一组所述数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元;以及
使用至少一个处理器来执行关于数据单元的一种或多种操作,所述操作包括删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,并存储与所述第二数据块相关联的附加信息以使所述第二数据块具有和所述第一数据块相同的大小。
24.存储在计算机可读介质上的软件,用来管理数据单元的存储,该软件包括用于使计算系统执行以下操作的指令:
将多个数据块存储在数据存储系统中,至少一些所述数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元;以及
执行关于数据单元的一种或多种操作,所述操作包括删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,并存储与所述第二数据块相关联的附加信息以使所述第二数据块具有和所述第一数据块相同的大小。
Claims (24)
1.一种用于管理数据单元存储的系统,所述系统包括:
数据存储系统,配置为存储多个数据块,至少一些所述数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元;以及
接口,包括至少一个处理器,耦接至所述数据存储系统,且被配置为执行关于数据单元的一种或多种操作,所述操作包括删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,所述第二数据块具有和所述第一数据块相同的大小。
2.根据权利要求1所述的系统,其中所述第二数据块与一数据块相邻,该数据块在所述数据存储系统内曾与所述第一数据块相邻。
3.根据权利要求1或2所述的系统,其中所述第二数据块存储在与所述第一数据块相同的存储空间中。
4.根据权利要求1、2或3所述的系统,其中所述删除操作使得并非所述第一数据块的数据块维持在所述数据存储系统之内在执行所述删除操作之前曾存储所述第一数据块的相同存储位置。
5.根据任一上述权利要求所述的系统,其中所述数据存储系统被配置为针对至少一些所述数据块存储与之前从该数据块移除一个或多个数据单元有关的相应历史信息,所述移除影响该数据块中至少一些数据单元的地址。
6.根据权利要求5所述的系统,其中所述操作包括第二读取操作,不同于所述第一读取操作,该第二读取操作根据基于对应于一特定数据块的任何存储的历史信息解读的地址信息来访问存储在所述特定数据块中的至少一第一数据单元。
7.根据权利要求5或6所述的系统,其中所述删除操作将与所述已删除数据单元有关的信息存储在对应于所述第二数据块的历史信息中。
8.根据权利要求5、6或7所述的系统,其中至少一些所述历史信息存储在所述数据存储系统中。
9.根据权利要求8所述的系统,其中至少一部分所述历史信息在不同数据块之间交叉存取。
10.根据权利要求8或9所述的系统,其中对应于一特定数据块的至少一部分历史信息存储在该特定数据块的预定部分中。
11.根据任一上述权利要求1所述的系统,其中至少一些所述数据块是已压缩数据块。
12.根据权利要求11所述的系统,其中所述第二读取操作解压缩一特定的已压缩数据块以恢复一已解压缩数据单元集合,并至少部分基于对应于该特定的已压缩数据块的所述历史信息在距一参考位置特定的偏移量处检索所述待读取数据单元。
13.根据权利要求11或12所述的系统,其中所述第一读取操作解压缩多个已压缩数据块并相继读取多个已解压缩数据单元。
14.根据权利要求11-13中任一权利要求所述的系统,其中所述删除操作对所述第二已压缩数据块的存储大小进行扩展,以填占所述第二已压缩数据块和所述第一已压缩数据块之间的大小差异。
15.根据权利要求14所述的系统,其中所述第二已压缩数据块的所述存储大小通过存储除对应于所述第二已压缩数据块的历史信息之外的与所述第二已压缩数据块相关联的附加信息来进行扩展。
16.根据权利要求11-15中任一权利要求所述的系统,其中所述删除操作存储与所述第二已压缩数据块相关联的新检错码以替代与所述第一已压缩数据块相关联的检错码。
17.根据权利要求11-16中任一权利要求所述的系统,其中所述操作包括添加操作,该添加操作存储与一最近添加的数据单元集合相关联的待添加数据单元。
18.根据权利要求17所述的系统,其中所述处理器还被配置为将所述最近添加的数据单元集合压缩为存储在存储介质中的已压缩数据块。
19.根据任一上述权利要求所述的系统,其中所述数据存储系统被配置为存储附加信息,该附加信息将所述组中的所述多个数据块识别为符合预定存储格式。
20.根据权利要求19或20所述的系统,其中所述附加信息包括在所述组中每一数据块的数据头中的用来识别所述预定存储格式的标识符。
21.根据权利要求19所述的系统,其中所述第一读取操作与所述预定存储格式相兼容。
22.一种用于管理数据单元存储的系统,所述系统包括:
用来存储多个数据块的装置,至少一些所述多个数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元;以及
用来执行关于数据单元的一种或多种操作的装置,所述操作包括删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,所述第二数据块具有和所述第一数据块相同的大小。
23.一种用于管理数据单元存储的方法,所述方法包括:
将多个数据块存储在数据存储系统中,至少一些所述数据块包括多个数据单元,至少一组所述数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元;以及
使用至少一个处理器来执行关于数据单元的一种或多种操作,所述操作包括删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,所述第二数据块具有和所述第一数据块相同的大小。
24.存储在计算机可读介质上的软件,用来管理数据单元的存储,该软件包括用于使计算系统执行以下操作的指令:
将多个数据块存储在数据存储系统中,至少一些所述数据块包括多个数据单元,至少一组数据块是连续存储的,从而支持第一读取操作,该第一读取操作从所述组中至少两个相邻数据块中检索数据单元;以及
执行关于数据单元的一种或多种操作,所述操作包括删除操作,该删除操作以不包括已删除数据单元的第二数据块来替代包括待删除数据单元的第一数据块,所述第二数据块具有和所述第一数据块相同的大小。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/787,203 | 2013-03-06 | ||
US13/787,203 US9875054B2 (en) | 2013-03-06 | 2013-03-06 | Managing operations on stored data units |
PCT/US2014/016858 WO2014137587A1 (en) | 2013-03-06 | 2014-02-18 | Managing operations on stored data units |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105009067A true CN105009067A (zh) | 2015-10-28 |
CN105009067B CN105009067B (zh) | 2019-12-24 |
Family
ID=50280468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480012484.XA Active CN105009067B (zh) | 2013-03-06 | 2014-02-18 | 管理对存储数据单元的操作 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9875054B2 (zh) |
EP (1) | EP2965189B1 (zh) |
JP (1) | JP6457406B2 (zh) |
KR (1) | KR102319657B1 (zh) |
CN (1) | CN105009067B (zh) |
AU (2) | AU2014226448A1 (zh) |
CA (1) | CA2902873C (zh) |
HK (1) | HK1215974A1 (zh) |
WO (1) | WO2014137587A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108965295A (zh) * | 2018-07-17 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种文件压缩合并方法及相关装置 |
CN109716324A (zh) * | 2016-09-28 | 2019-05-03 | 微软技术许可有限责任公司 | 存储器内数据库中的直接表关联 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9456380B2 (en) * | 2012-06-13 | 2016-09-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Data compression in a communications network |
US10133500B2 (en) | 2013-03-06 | 2018-11-20 | Ab Initio Technology Llc | Managing operations on stored data units |
US9959070B2 (en) | 2013-03-06 | 2018-05-01 | Ab Initio Technology Llc | Managing operations on stored data units |
US9286336B2 (en) * | 2013-03-12 | 2016-03-15 | Sap Se | Unified architecture for hybrid database storage using fragments |
US9277234B1 (en) * | 2014-08-27 | 2016-03-01 | Adobe Systems Incorporated | Common copy compression |
US10146820B2 (en) * | 2015-09-24 | 2018-12-04 | Nxp Usa, Inc. | Systems and methods to access memory locations in exact match keyed lookup tables using auxiliary keys |
US10210236B2 (en) | 2015-11-23 | 2019-02-19 | Ab Initio Technology Llc | Storing and retrieving data of a data cube |
KR101780652B1 (ko) * | 2016-03-11 | 2017-09-21 | 주식회사 이디엄 | 열-지향 레이아웃 파일 생성 방법 |
US10942914B2 (en) | 2017-10-19 | 2021-03-09 | Adobe Inc. | Latency optimization for digital asset compression |
US11120363B2 (en) | 2017-10-19 | 2021-09-14 | Adobe Inc. | Latency mitigation for encoding data |
US11086843B2 (en) | 2017-10-19 | 2021-08-10 | Adobe Inc. | Embedding codebooks for resource optimization |
US10915503B2 (en) | 2018-11-29 | 2021-02-09 | International Business Machines Corporation | Efficient detection of available space in a file system space map |
KR102685013B1 (ko) * | 2019-11-11 | 2024-07-15 | 삼성전자주식회사 | 스토리지 장치 및 그 동작방법 |
US11704035B2 (en) | 2020-03-30 | 2023-07-18 | Pure Storage, Inc. | Unified storage on block containers |
US12079162B2 (en) | 2020-03-30 | 2024-09-03 | Pure Storage, Inc. | Snapshot management in a storage system |
US11740820B1 (en) * | 2022-05-11 | 2023-08-29 | Netapp, Inc. | Block allocation methods and systems in a networked storage environment |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198062A1 (en) * | 2004-03-05 | 2005-09-08 | Shapiro Richard B. | Method and apparatus for accelerating data access operations in a database system |
CN101320372A (zh) * | 2008-05-22 | 2008-12-10 | 上海爱数软件有限公司 | 一种重复数据的压缩方法 |
US20100281004A1 (en) * | 2009-04-30 | 2010-11-04 | Oracle International Corporation | Storing compression units in relational tables |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07160439A (ja) * | 1993-12-03 | 1995-06-23 | Matsushita Electric Ind Co Ltd | データ記憶装置及び主制御装置 |
EP0748504A1 (en) | 1994-03-03 | 1996-12-18 | Cirrus Logic, Inc. | Defect management for automatic track processing without id field |
US6604236B1 (en) | 1998-06-30 | 2003-08-05 | Iora, Ltd. | System and method for generating file updates for files stored on read-only media |
JP4288751B2 (ja) * | 1999-05-25 | 2009-07-01 | ソニー株式会社 | 記録媒体、データ処理装置 |
US6426893B1 (en) * | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
US7882081B2 (en) * | 2002-08-30 | 2011-02-01 | Netapp, Inc. | Optimized disk repository for the storage and retrieval of mostly sequential data |
US7890469B1 (en) | 2002-12-30 | 2011-02-15 | Symantec Operating Corporation | File change log |
JP2004258865A (ja) * | 2003-02-25 | 2004-09-16 | Canon Inc | 情報処理方法 |
US7472254B2 (en) | 2003-10-10 | 2008-12-30 | Iora, Ltd. | Systems and methods for modifying a set of data objects |
US7386663B2 (en) | 2004-05-13 | 2008-06-10 | Cousins Robert E | Transaction-based storage system and method that uses variable sized objects to store data |
US8090691B2 (en) | 2004-08-13 | 2012-01-03 | Computer Associates Think, Inc. | System and method for variable block logging with log-ahead buffers |
US20060184563A1 (en) | 2005-02-14 | 2006-08-17 | Potter David H | Method and apparatus for temporal database |
US9501492B2 (en) | 2006-10-24 | 2016-11-22 | Marvell World Trade Ltd. | Combination journaling/non-journaling file system |
US7885932B2 (en) | 2006-11-01 | 2011-02-08 | Ab Initio Technology Llc | Managing storage of individually accessible data units |
US8229902B2 (en) | 2006-11-01 | 2012-07-24 | Ab Initio Technology Llc | Managing storage of individually accessible data units |
US8156241B1 (en) * | 2007-05-17 | 2012-04-10 | Netapp, Inc. | System and method for compressing data transferred over a network for storage purposes |
US7836099B2 (en) | 2007-07-31 | 2010-11-16 | Yahoo! Inc. | Mail compression scheme with individual message decompressability |
TW200910187A (en) | 2007-08-21 | 2009-03-01 | Sunplus Mmobile Inc | Logged FAT file system and method of accessing the same |
KR100926631B1 (ko) | 2007-09-14 | 2009-11-11 | (주)밀레니엄 포스 | 데이터 보안장치 |
US8045285B1 (en) | 2008-03-25 | 2011-10-25 | Marvell International Ltd. | Data synchronization for bit insertion or deletion |
US20090287986A1 (en) | 2008-05-14 | 2009-11-19 | Ab Initio Software Corporation | Managing storage of individually accessible data units |
CN101582067A (zh) | 2008-05-15 | 2009-11-18 | 国际商业机器公司 | 解压压缩文件时减小存储需求的方法和系统 |
JP2010015197A (ja) * | 2008-06-30 | 2010-01-21 | Toshiba Corp | ストレージ制御装置、データ復元装置およびストレージシステム |
US8555053B1 (en) * | 2008-08-29 | 2013-10-08 | Crossroads Systems, Inc. | System and method for adjusting to drive specific criteria |
US7987162B2 (en) | 2009-03-06 | 2011-07-26 | Bluearc Uk Limited | Data compression in a file storage system |
CA2758235A1 (en) | 2009-04-27 | 2010-11-04 | Kamlesh Gandhi | Device and method for storage, retrieval, relocation, insertion or removal of data in storage units |
US8935223B2 (en) | 2009-04-30 | 2015-01-13 | Oracle International Corporation | Structure of hierarchical compressed data structure for tabular data |
US8166258B2 (en) | 2009-07-24 | 2012-04-24 | Lsi Corporation | Skip operations for solid state disks |
US8990476B2 (en) | 2009-10-01 | 2015-03-24 | Micron Technology, Inc. | Power interrupt management |
CN102043651B (zh) | 2009-10-22 | 2013-07-03 | 鸿富锦精密工业(深圳)有限公司 | Nand闪存及其数据更新管理方法 |
CN102929884B (zh) * | 2011-08-10 | 2016-05-04 | 阿里巴巴集团控股有限公司 | 一种收缩虚拟磁盘镜像文件的方法及装置 |
US8806160B2 (en) | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US8578112B2 (en) * | 2012-02-23 | 2013-11-05 | Hitachi, Ltd. | Data management system and data management method |
US8732403B1 (en) | 2012-03-14 | 2014-05-20 | Netapp, Inc. | Deduplication of data blocks on storage devices |
US8615500B1 (en) * | 2012-03-29 | 2013-12-24 | Emc Corporation | Partial block allocation for file system block compression using virtual block metadata |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US9959070B2 (en) | 2013-03-06 | 2018-05-01 | Ab Initio Technology Llc | Managing operations on stored data units |
US10133500B2 (en) | 2013-03-06 | 2018-11-20 | Ab Initio Technology Llc | Managing operations on stored data units |
-
2013
- 2013-03-06 US US13/787,203 patent/US9875054B2/en active Active
-
2014
- 2014-02-18 EP EP14710416.0A patent/EP2965189B1/en active Active
- 2014-02-18 JP JP2015561375A patent/JP6457406B2/ja active Active
- 2014-02-18 WO PCT/US2014/016858 patent/WO2014137587A1/en active Application Filing
- 2014-02-18 AU AU2014226448A patent/AU2014226448A1/en not_active Abandoned
- 2014-02-18 KR KR1020157027796A patent/KR102319657B1/ko active IP Right Grant
- 2014-02-18 CN CN201480012484.XA patent/CN105009067B/zh active Active
- 2014-02-18 CA CA2902873A patent/CA2902873C/en active Active
-
2016
- 2016-04-05 HK HK16103842.6A patent/HK1215974A1/zh unknown
-
2019
- 2019-11-01 AU AU2019257524A patent/AU2019257524B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198062A1 (en) * | 2004-03-05 | 2005-09-08 | Shapiro Richard B. | Method and apparatus for accelerating data access operations in a database system |
CN101320372A (zh) * | 2008-05-22 | 2008-12-10 | 上海爱数软件有限公司 | 一种重复数据的压缩方法 |
US20100281004A1 (en) * | 2009-04-30 | 2010-11-04 | Oracle International Corporation | Storing compression units in relational tables |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109716324A (zh) * | 2016-09-28 | 2019-05-03 | 微软技术许可有限责任公司 | 存储器内数据库中的直接表关联 |
CN109716324B (zh) * | 2016-09-28 | 2023-07-11 | 微软技术许可有限责任公司 | 存储器内数据库中的直接表关联 |
CN108965295A (zh) * | 2018-07-17 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种文件压缩合并方法及相关装置 |
CN108965295B (zh) * | 2018-07-17 | 2021-09-17 | 郑州云海信息技术有限公司 | 一种文件压缩合并方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
AU2019257524A1 (en) | 2019-11-28 |
JP6457406B2 (ja) | 2019-01-23 |
EP2965189B1 (en) | 2019-04-10 |
CA2902873A1 (en) | 2014-09-12 |
KR102319657B1 (ko) | 2021-10-29 |
JP2016517066A (ja) | 2016-06-09 |
WO2014137587A1 (en) | 2014-09-12 |
AU2014226448A1 (en) | 2015-09-17 |
US20140258652A1 (en) | 2014-09-11 |
CA2902873C (en) | 2021-04-06 |
EP2965189A1 (en) | 2016-01-13 |
HK1215974A1 (zh) | 2016-09-30 |
US9875054B2 (en) | 2018-01-23 |
CN105009067B (zh) | 2019-12-24 |
KR20150125012A (ko) | 2015-11-06 |
AU2019257524B2 (en) | 2021-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105009067A (zh) | 管理对存储数据单元的操作 | |
CN105027071A (zh) | 管理对存储数据单元的操作 | |
CN105009068A (zh) | 管理对存储数据单元的操作 | |
CN101326492B (zh) | 用于更新包括压缩版本的内容的方法和系统 | |
CN109710455A (zh) | 基于fat32文件系统的删除文件恢复方法及系统 | |
US8463759B2 (en) | Method and system for compressing data | |
CN112579546B (zh) | 文件压缩方法、系统、存储介质及终端 | |
CN118535640A (zh) | 区块链全量数据同步的方法、装置、设备、介质及产品 | |
CN116301597A (zh) | 数据存储方法、装置、设备和存储介质 | |
CN114048192A (zh) | 一种数据库优化存储数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1215974 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |