CN114840500A - 用于通过跳过选定数据进行重复数据删除的散列 - Google Patents

用于通过跳过选定数据进行重复数据删除的散列 Download PDF

Info

Publication number
CN114840500A
CN114840500A CN202210107769.8A CN202210107769A CN114840500A CN 114840500 A CN114840500 A CN 114840500A CN 202210107769 A CN202210107769 A CN 202210107769A CN 114840500 A CN114840500 A CN 114840500A
Authority
CN
China
Prior art keywords
data
hash
skip
identifying
blocks
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.)
Pending
Application number
CN202210107769.8A
Other languages
English (en)
Inventor
M·A·莫兰
M·R·哈姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MaxLinear Inc
Original Assignee
MaxLinear Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MaxLinear Inc filed Critical MaxLinear Inc
Publication of CN114840500A publication Critical patent/CN114840500A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种通过以下方法跨数据集计算指纹的系统,该方法包括:识别要散列的数据集,数据集包括数据块集;识别数据集内要跳过的数据;由散列引擎为数据集内除了要跳过的数据之外的数据块集中的每一个数据块生成散列;以及压缩数据。

Description

用于通过跳过选定数据进行重复数据删除的散列
技术领域
本文讨论的实施例涉及散列(hash)、重复数据删除(deduplication)和压缩。
背景技术
数据集可以包括重复数据。从数据集中删除或减少重复数据的数量(通常称为重复数据删除)可以减少存储空间并实现数据集的更大压缩。散列引擎可用于识别数据集内的重复数据。
本文要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的实施例。相反,提供该背景仅是为了说明可以实践本文描述的一些实施例的一个示例性技术领域。
发明内容
一种用于通过以下方法跨数据集计算指纹的系统,该方法包括:识别要散列的数据集,数据集包括数据块集;识别数据集内要跳过的数据;由散列引擎为数据集内除了要跳过的数据之外的数据块集中的每一个数据块生成散列;以及压缩数据。
附图说明
将通过使用附图以附加的特征和细节来描述和解释示性例实施例,其中:
图1示出了示例性重复数据删除系统;
图2示出了可以以散列块大小散列并以压缩块大小压缩的数据集;
图3示出了具有多个散列引擎的另一示例性重复数据删除系统;
图4示出了可以由不同散列引擎散列,并且以压缩块大小被压缩的数据集,其中,每一个散列引擎以不同的散列块大小进行散列;
图5示出了用于对数据集进行散列的示例性方法的流程图;
图6示出了用于对数据集进行散列的另一示例性方法的流程图;
图7示出了用于对数据集进行散列的又一示例性方法的流程图;
图8以计算设备的示例性形式示出了机器的图形表示,在该计算设备中可以执行指令集,用于使该机器执行本文讨论的任何一种或多种方法。
具体实施方式
散列引擎可用于识别数据集内的重复数据。重复数据删除是数据缩减的关键组成部分。使用散列算法,散列引擎可以生成具有固定大小的值的集合(称为散列)的任何大小数据集的映射。散列可以是特定大小的位的唯一集合,其重复的可能性很小。通过散列算法运行数据集可以产生小得多的数据位大小输出。例如,通过散列算法运行32k位的数据可以使得输出低至8位、16位、32位等。
散列可用于有效地识别数据集中可以进行重复数据删除的潜在重复数据。散列算法可以获取数据集并生成位大小结果的唯一集合。对跨一个或多个数据集的散列进行比较,以找到可以进行重复数据删除的潜在精确匹配。多个数据集也可以通过散列算法运行。由于散列引擎可以处理多个数据集,因此可以比较结果。多个数据集之间的散列匹配可以指示与相匹配的散列对应的数据很可能是重复项。可以从多个数据集中删除除匹配数据的一个实例之外的所有匹配数据,并替换为指向匹配数据的一个剩余实例的指针。删除重复数据可以减少存储多个数据集所需的存储空间。如果要压缩数据,重复数据将不会被压缩,从而可以实现更大的压缩。
传统上,当使用硬件对数据集进行压缩时,以与散列相同的数据集大小来压缩数据集。换句话说,如果要以32k位对数据集进行压缩,则也将以32k位对数据进行散列。将压缩大小和散列大小耦接可能导致存储大小、效率、重复的数量等方面的权衡。例如,压缩大小越大,数据集上的数据压缩就可以越好。但是,随着散列大小的增加,相匹配的散列的数量会减少,这会降低重复数据删除的效率。同样,随着散列大小的减小,重复的数量也会增加,但由于相同的大小效率较低,因此最终的压缩也会减少。因此,传统上,压缩大小和散列大小的耦接会导致这两个特征之间的紧张关系。通常,压缩大小和散列大小都不会达到最优,而是会选择使压缩和重复数据删除都达到次优的中间点。
本公开的各个方面解决了传统压缩和重复数据删除技术的这些缺点和其他缺点。本文描述了通过解耦压缩大小和散列大小来同时改进压缩和重复数据删除的系统和方法。通过将散列大小与压缩大小分开,允许系统使散列大小小得多,而散列越小,散列就越能有效地找到重复项。例如,当以32k位进行散列时,跨数据集获得多个32k位的可能性远低于以1k位或512位进行散列的情况。本文描述的一些系统提供了一种机制来指定任何大小的散列大小,而不管压缩大小的数据集大小是多大。
本公开提供的一些益处包括增强压缩和重复数据删除。例如,通过将散列大小和压缩大小分开,可以使用非常大的数据大小来增强压缩,同时,在相同的数据集上,小的散列大小增加了数据集上的散列量,从而提高了“散列命中”或识别和跨数据集删除重复数据的能力。
在一个示例中,当第一数据集A的大小为一兆位并且散列大小小得多(例如1kb)时,在该数据集内,可以存在具有1kb散列的块数据,该块数据在该数据集中的其他地方或另一数据集B中是重复的。在任何一种情况下,重复的数据可以被压缩一次,并且对于其他重复的数据,跟踪指向第一数据集A中的已压缩数据的指针,使得如果相对于数据集B访问重复的数据,则可以从第一数据集A中检索重复的数据。在至少一个实施例中,指针/位置由主存储控制系统识别和管理,该主存储控制系统对于散列引擎可以是本地的或远程的。
本公开内容的各个方面还可以识别在散列期间要跳过的数据。该技术的益处可以增加散列命中的数量以及散列和压缩的整体效率。
本公开的一些方面可以使用多个散列引擎,每一个散列引擎可以在单程中对相同的数据集执行不同的散列操作。该技术的益处可以进一步提高散列命中率和压缩率。例如,多个散列引擎可以具有以下属性:运行不同的散列算法、以不同的散列块大小运行、以不同的起始偏移运行、以不同的跳过能力/设置运行和/或以上述任意组合运行。
转到附图,图1示出了示例性重复数据删除系统100。重复数据删除系统100可以根据本公开中描述的至少一个实施例来布置。示例性重复数据删除系统100可以包括一个或多个数据源105、重复数据删除管理器110、一个或多个散列引擎115、数据存储装置120和压缩管理器125。在至少一个实施例中,重复数据删除管理器110、散列引擎115和压缩管理器125可以集成在加速卡155中。
数据源105可以包括任何类型的设备,例如计算设备、客户端设备、数据存储设备等。数据源105可以接收数据并将数据发送到重复数据删除管理器110以进行散列。数据源105可以包括向重复数据删除管理器110提供参数的界面,通过这些参数对数据进行重复数据删除。
重复数据删除管理器110可以包括中央处理单元(CPU)或者是CPU的一部分,或者可以是可由CPU执行的模块。附加地或替代地,重复数据删除管理器110可以是与CPU通信的独立单元。例如,CPU可以向重复数据删除管理器110卸载各种任务,例如散列、加密和压缩。
数据源105可以配置成例如通过总线或网络与重复数据删除管理器110通信。数据可以从数据源105发送到重复数据删除管理器110,请求对数据执行操作,例如对数据进行散列、加密和/或压缩的操作。该请求可以包括与数据相关联的各种参数和元数据。关于散列操作的执行,重复数据删除管理器110可通信地耦接到散列引擎115。
散列引擎115可以包括电路、软件或电路和软件的组合,其配置成对数据集(例如从数据源105接收的数据)执行散列算法。散列引擎115可以配置成执行任何散列算法,例如MD5、SHA-1、SHA-2(224、256、384、512),或者任何其他散列算法,或者用于错误检测(例如校验和、循环冗余校验(CRC))。
数据存储装置120可以包括任何存储器或数据存储装置。在一些实施例中,数据存储装置120可以包括用于承载或具有存储在其上的计算机可执行指令或数据结构的计算机可读存储介质。计算机可读存储介质可以包括可由通用或专用计算机(例如处理器)访问的任何可用介质。例如,数据存储装置120可以包括计算机可读存储介质,其可以是有形的或非暂时性的计算机可读存储介质,包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、光盘只读存储器(CD-ROM)或其他光盘存储设备、磁盘存储设备或其他磁存储设备、闪存设备(例如固态存储设备)、非易失性存储器、或者可以用于承载或存储计算机可执行指令或数据结构形式的所需程序代码,并可由通用或专用计算机访问的任何其他存储介质。上述的组合可以包括在数据存储装置120中。在所描绘的实施例中,数据存储装置120与加速卡155分离。在一些实施例中,数据存储装置120可以是加速卡155的一部分,加速卡155可以使用任何类型的界面与主机对接,例如八通道PCI Express 3.0界面。在至少一个实施例中,数据存储装置120可以包括多个分布式数据存储装置。
压缩管理器125可以包括电路、软件或电路和软件的组合,其配置成对数据集(例如从数据源105接收的数据和/或已经被散列的数据)执行压缩算法。已压缩数据150可以存储在数据存储装置120中。压缩管理器125可以配置成执行任何压缩算法,例如gzip/zlib/Deflate L4、eLZS/LZS或任何其他压缩算法。
重复数据删除管理器110可以包括切片管理器130和跳过管理器135。切片管理器130可以包括硬件模块、软件模块或硬件和软件的组合,其配置成以比压缩数据集大小更小的散列大小来管理散列操作。跳过管理器135可以包括硬件模块、软件模块或硬件和软件的组合,其配置成识别数据集中可以在散列期间被跳过的一些数据。
在操作中,重复数据删除管理器110可以从数据源105接收数据集。传统上,散列块大小与压缩数据集大小相同。切片管理器130将散列块大小与压缩数据集大小解耦,并允许用于重复数据删除的散列块大小不同于压缩数据集大小。数据集可以包括数据块集或基于数据块集进行组织。
切片管理器130可以识别要进行重复数据删除的数据集,例如来自数据源105的数据集。切片管理器130可以选择小于压缩块大小(稍后将由压缩管理器125使用)的散列块大小。切片管理器130可以基于散列块大小来定义数据集内的数据块集,并且可以指示散列引擎115为数据集内的数据块集中的每一个数据块生成散列。散列引擎115可以为数据集内的数据块集中的每一个数据块生成散列,该散列可以存储在散列索引140中。重复数据删除管理器110可以基于数据块的相应散列对数据集内的数据块进行重复数据删除。例如,为了对数据块进行重复数据删除,重复数据删除管理器110可以删除重复数据块,并将删除的数据块的指针关联到也存储与重复数据相同的数据的另一位置。该指针可以存储为指针数据145。在至少一个实施例中,压缩管理器125可以基于压缩块大小来对数据集进行压缩。在至少一个实施例中,压缩管理器125不对重复数据或指向重复数据的指针进行压缩。在至少一个实施例中,在单程中对数据集执行散列和压缩。附加地或替代地,可以指示重复数据删除管理器110执行各种操作,并为其他系统提供结果,以执行实际的重复数据删除,并管理和/或生成指针和/或一个或多个表。
散列块大小可以是任何大小。在至少一个实施例中,散列块大小可以在1k和4k位之间。在至少一个实施例中,当对结构化或表格数据(例如数据库类型结构)进行重复数据删除时,数据块的大小可以相对较小,因此可以使用较小的散列块大小。例如,对于非结构化数据,可以使用更大的散列块大小。
在至少一个实施例中,散列块大小是总数据集的除数,使得每一个散列块大小相同。例如,对于16k位的总数据集,散列块大小可以是16k的除数,例如8k、4k、2k、1k等。散列块大小可以是完整数、整数等。在另一个实施例中,散列块大小不是总数据集的除数。在该示例中,除了最后一个散列之外,所有散列都被保留,可以使用或丢弃最后一个散列。例如,当最后一位只有1k,但散列块大小为4k位时,可以忽略或丢弃1k位的最后一个散列。在该示例中,与最终忽略或丢弃的散列相关联的数据可以不是重复数据删除候选项。
在至少一个实施例中,重复数据删除管理器110可以确定可以跳过数据集内的一些数据来进行散列。在至少一个实施例中,重复数据删除管理器110从数据源105接收跳过数据集内的一些数据的指令。附加地或替代地,重复数据删除管理器110可以使用跳过管理器135来自动分析数据集,以确定数据集中是否有要跳过的数据。跳过管理器135可以例如识别可跳过的某些类型的数据,例如标题(header)数据、脚注(footer)数据、数据库字段、预定数据类型、数据保护字段(例如,NVMe保护数据、数据完整性字段(DIF)、数据完整性扩展(DIX)、T10-DIF或T10-DIX等)。在一个示例中,公司范围的电子邮件与日历邀请一起被发送到公司聚会。每封电子邮件将包括对所有公司员工都相同的日历数据。每封电子邮件还将包括标题,每一个员工的标题都会略有不同。在传统系统中,由于标题不同,不会对该电子邮件进行重复数据删除。跳过管理器135可以将标题识别为跳过候选项,使得在重复数据删除过程期间跳过标题,并且使得仍然可以对日历数据进行重复数据删除。
在至少一个实施例中,来自数据源105的数据包括关于数据的指令或元数据,跳过管理器135可以使用这些指令或元数据来确定在重复数据删除期间要跳过的数据。例如,来自数据源105的数据可以包括关于来自数据源的数据的信息和/或元数据,例如数据的位数、标题数据、脚注数据、标题大小、脚注大小、索引、索引头等。关于来自数据源的数据的信息和/或元数据还可以包括数据中重复模式的指示。例如,数据提供者(例如,数据源105)可以指示数据中的标题模式,其可以包括偏移、模式大小和跳过计数。跳过管理器135可以指示散列引擎115跳过从偏移开始的特定大小的数据、如何识别要跳过的下一个数据以及要执行的跳过总数的计数。以这种方式,散列引擎115可以对所有未跳过的数据运行散列,这可以实现更大数量的散列命中。示例性模式可以包括模式描述、跳过“x”位数、处理“y”位数、跳过“z”位数、处理“a”位数、重复等中的一个或多个,其中x、y、z和a可以是包括彼此相同的数字的任何数字,或者其中一些或全部可以彼此不同。
类似的技术可以用于表格或数据库类型的数据或任何其他具有索引头和数据的数据。对于此类数据,将跳过索引头,并且可以对数据进行散列、重复数据删除和/或压缩。在至少一个实施例中,散列块大小可以小于跳过之间的数据量。在至少一个实施例中,散列块大小可以大于跳过之间的数据量,使得“跳过”两侧的数据可以被散列在一起。在至少一个实施例中,“未跳过的”数据被压缩,而“跳过”的数据不被压缩。在至少一个实施例中,跳过能力是这样的层:首先应用一组跳过规则,然后可以对剩余的未跳过的数据应用第二组跳过规则,等等。
在至少一个实施例中,跳过管理器135可以自动识别跳过候选项。例如,跳过管理器135可以在散列操作之前分析数据以识别跳过候选项,其可以包括类似于“可跳过的”数据的数据。跳过管理器135可以具有在分析数据时使用的一组准则。该组准则可以识别可以跳过的各种数据,例如标题、脚注等。当跳过管理器135识别出可以跳过的这些类型的数据时,跳过管理器135可以向该数据添加标志,使得散列引擎115和/或压缩管理器125可以在散列/压缩数据时跳过该特定数据。在至少一个实施例中,可以向跳过管理器135发送训练数据,该训练数据可以用于创建人工智能(AI)单元来处理数据以找到“可跳过的”部分。在至少一个实施例中,AI单元可以是受监督的或不受监督的。在至少一个实施例中,跳过管理器135可以使用从系统管理员接收的输入来细化AI单元。例如,跳过管理器135可以识别“跳过候选项”,其可以通过界面呈现给系统管理员。系统管理员可以提供关于是否应该跳过这些跳过候选项的输入。跳过管理器135可以使用系统管理员数据来细化AI单元,以更好地识别跳过候选项。
在至少一个实施例中,数据包括对可跳过的数据进行识别的元数据。可跳过的数据可以包括精确或预定格式的数据的预定标准。例如,预定标准可以包括NVMe保护数据,例如T10-DIF数据、T10-DIX数据等。
通过识别NVMe保护字段,跳过管理器135和散列引擎115可以避免对可能包括DIF数据、元数据等的那些NVMe保护字段进行散列。类似地,压缩管理器120可以避免对那些NVMe保护字段进行压缩。
在至少一个实施例中,当跳过管理器135遇到数据集内的NVMe保护字段时,跳过管理器135可以向散列引擎115提供精确的指令来跳过那些NVMe保护字段。
在至少一个实施例中,跳过管理器135可以确定数据集是使用“NVMe保护,DIF配置”来格式化的。跳过管理器135可以确定在该配置下,可以跳过DIF数据、元数据或者DIF数据和元数据两者。与数据集相关联的元数据可以指示做出这些选择中的哪一个。如果不是,跳过管理器135可以确定做出哪个或者可以依赖默认设置进行选择。跳过管理器135可以指示散列管理器115以给定的数据散列大小对数据集的特定部分进行散列,然后跳过元数据和/或DIF数据,然后以给定的数据散列大小对数据集的下一部分进行散列,直到数据集内的所有数据(跳过数据除外)都已被散列。
这些用于识别和跳过数据集的散列、重复数据删除和压缩部分的技术可以为CPU带来显著的益处。在一些实施例中,通过在硬件中进行这种跳过,减少了软件CPU时间。对于数据库结构,这些技术可以达到2倍、3倍甚至5倍的重复数据删除率。
在不脱离本公开的范围的情况下,可以对重复数据删除系统100进行修改、添加或省略。本文提供的所有构造都可以在无状态操作中实现,其中要操作的所有数据都在单个命令中提供。附加地或替代地,对于作为该单个命令的一部分的数据继续在后续命令中提交的有状态结构,这些功能可以从其中断的地方继续。此外,本文提供的所有构造都可以在一个或多个有状态操作中实现。
图2示出了数据集200,该数据集可以以散列块大小210被散列,并以压缩块大小220被压缩。与压缩块大小220相比,散列块大小210可以是不同的值。如图所示,压缩块大小220的大小看起来与数据集200的大小相等,但压缩块大小220可以是任何大小,包括小于数据集200大小的大小。散列块大小210可以是任何大小,包括大于压缩块大小的大小。
图3示出了具有多个散列引擎315a、315b、315n的另一示例性重复数据删除系统300。重复数据删除系统300可以类似于图1的重复数据删除系统100,并且可以包括类似的组件。重复数据删除系统300可以包括多个散列引擎315a、315b、315n,其可以类似于图1的散列引擎115。重复数据删除系统300可用于对任何类型的数据进行重复数据删除,包括多个类似的文档,例如单个文档的多个版本。例如,如果用户生成基于文本的文档,然后制作新版本的基于文本的文档,但对空格、附加单词等进行了更改,那么现在,尽管基于文本的文档的两个版本实际上是相同的,但在这个基于文本的文档中,没有任何内容可以用于对基于文本的文档中的数据进行散列和重复数据删除。可以对多个散列引擎315中的每一个进行不同配置以便每一个散列引擎分别对原始的基于文本的文档和新版本的基于文本的文档进行散列,以进行重复数据删除。
散列引擎315a、315b、315n中的每一个都可以配置成任何散列块大小,散列引擎315a、315b、315n的散列块大小可以不同,如图4所示。例如,第一散列引擎315a可以以第一散列块大小来对数据进行散列,第二散列引擎315b可以以第二散列块大小来对数据进行散列,并且“第n”散列引擎315n可以以第三散列块大小来对数据进行散列。此外,每一个散列引擎315a、315b、315n可以配置成在偏移处开始对数据集进行散列操作,也如图4所示。例如,第一散列引擎315a可以使用第一偏移来对数据进行散列,第二散列引擎315b可以使用第二偏移来对数据进行散列,“第n”散列引擎315n可以使用第三或“第n”偏移来对数据进行散列。
在另一示例中,如图4所示,为了保持数据集的32k位块和4k位的散列块大小,第一散列引擎315a可以用第一散列块配置410(例如,4k位的散列块大小,偏移为零)对数据集进行散列,第二散列引擎315b可以用第二散列块配置420(例如,4k位的散列块大小,1k位的偏移),第三散列引擎(未示出)可以用第三散列块配置430(例如4k位的散列块大小,2k位的偏移)对数据集进行散列,并且第n散列引擎315n可以用第四散列块配置440(例如4k位的散列块大小,3k位的偏移)对数据集进行散列。如上例所述,散列块配置之间的散列块大小相同,但偏移不同。替代地,散列块配置中的散列块大小可以不同,并且偏移不同。替代地,散列块配置中的散列块大小可以不同,但偏移相同。散列块配置的另一个参数可以包括散列算法。当散列相同的数据集时,每一个散列引擎315可以使用相同或不同的散列算法。
在实施例中,数据集大小、散列块大小和散列引擎偏移不需要相同或在字节边界上。在至少一个实施例中,散列引擎可以在“x”个散列之后停止,并且可以返回跨全部“散列块”的散列。附加地或替代地,散列引擎可以继续,并在命令结束时返回跨“部分散列块”的剩余部分的散列。对于切片散列上的有状态操作,最后一个散列选项可以是有益的,因为可以在有状态地添加到当前命令的“下一个”命令中恢复、继续和完成在命令末尾的部分散列块上的散列。
在另一个示例中,散列引擎315可以每一个都从位零开始,并且每一个散列引擎315可以使用独立的算法。散列可以存储在不同的算法下,这对于验证或检查误重复命中可以是有用的。使用多个散列引擎315在单程中散列相同数据集的另一个益处可以帮助在多种类型的系统中进行重复数据删除,例如使用一种类型的散列块配置的较旧系统,以及使用另一种散列块配置(例如更高级的散列)的较新系统。散列块配置的这种灵活性可以允许多个散列引擎315生成多个散列,使得即使在可以存在具有各种散列表的各种存储设备的集群中,多个散列引擎315也可以在单程中生成数据的散列,而不必运行多次。附加地或替代地,现有系统可以从较小的散列算法迁移到较新或较大的散列算法,以改进重复数据删除或增加可能增加关于较旧算法的冲突的容量。在至少一个实施例中,散列块配置可以全局设置或者为每一个散列引擎315独立设置。散列引擎315可以将各种散列存储在散列索引140中,该散列索引可以由数据源105访问。
在至少一个实施例中,可以分析每一个散列引擎315的散列以识别散列命中。散列引擎315之间的散列命中数量可以不同,因为散列引擎315使用不同的散列块配置。在至少一个实施例中,可以选择对应于最大数量的散列命中的散列用于重复数据删除,从而提高重复数据删除系统的性能。
在至少一个实施例中,重复数据可以跨散列边界,这意味着重复数据的第一部分是数据集的第一散列的一部分,并且重复数据的第二部分是数据集的第二散列的一部分。在这种情况下,可以选择对应于最大数量的散列命中或散列字节的散列用于重复数据删除。
对于没有重复数据与散列边界重叠的情况,可以使用来自所有多个散列引擎315的散列来对数据集进行重复数据删除。当来自少于所有散列引擎315的散列重叠时,可以选择重叠集中的一个,而丢弃其他的。例如,如果五个散列引擎315中的每一个在单程中对数据集运行散列,并且在五个散列引擎315中的三个之间存在重叠,则选择这三个重叠散列引擎中的一个以及没有重叠的两个散列引擎。选定的散列可用于对数据集进行重复数据删除。以这种方式进行重复数据删除可以提高重复数据删除率和压缩率。
在至少一个实施例中,如结合图1更详细讨论的,重复数据删除系统300还可以使用不同于压缩块大小的散列块大小。此外,如结合图1进一步所描述,重复数据删除系统300可以在散列时使用跳过技术。例如,多个散列引擎315中的每一个可以识别在对数据集进行散列时要跳过的数据。多个散列引擎315中的每一个可以跳过相同的数据,或者替代地,可以跳过不同的数据。当例如可跳过的数据落在散列边界上时,多个散列引擎315可以跳过不同的数据。在至少一个实施例中,多个散列引擎315在创建散列边界之前识别要跳过的数据。
在不脱离本公开的范围的情况下,可以对重复数据删除系统300进行修改、添加或省略。
图4示出了可以由不同散列引擎散列的数据集400,每一个散列引擎具有不同的散列块配置410、410、420、430、440,并且以压缩块大小450被压缩。散列块配置可以包括各种可调参数,例如散列块大小、偏移、算法等。在至少一个实施例中,散列块大小可以完全独立于其他散列引擎、数据集大小和/或压缩块大小。在至少一个实施例中,不同散列块的散列块大小可以是可变的。将利用该能力的实施例可以包括由一个或多个引擎采用的散列算法,该算法使用滚动散列来找到开始散列的裕量。示例性散列算法可以包括Rabin-Karp散列算法。例如,每一个引擎可以具有不同的裕量值,或者编程为不在相同的裕量上启动以找到最佳裕量。
图5至图7示出了与散列和重复数据删除相关的示例性方法的流程图。这些方法可以由处理逻辑来执行,该处理逻辑包括硬件(电路、专用逻辑等)、软件(例如在通用计算机系统或专用机器上运行的软件)或两者的组合,该处理逻辑可以包括在图1和图3的重复数据删除管理器110、散列引擎115(或散列引擎315)、压缩管理器125和/或加速卡155或另一计算机系统或设备中。然而,可以使用另一个系统或多个系统的组合来执行这些方法。为了解释简单,将本文描述的方法描绘和描述为一系列动作。然而,根据本公开的动作可以以各种顺序和/或同时发生,并且与本文未呈现和描述的其他动作一起发生。此外,并非所有示出的动作都可以用于实现根据所公开主题的方法。此外,本领域技术人员将理解和认识到,这些方法可以替代地通过状态图或事件表示为一系列相互关联的状态。此外,本说明书中公开的方法能够存储在制品上,例如非暂时性计算机可读介质,以便于将这些方法传输和转移到计算设备。本文使用的术语制品旨在包括可从任何计算机可读设备或存储介质访问的计算机程序。尽管被示为离散的块,但是根据期望的实施方式,各种块可以被分成另外的块,被组合成更少的块,或者被消除。
图5示出了用于对数据集进行散列的示例性方法500的流程图。方法500可以在框505开始,其中处理逻辑可以通过用户界面接收指示散列块大小的用户输入。在框510,处理逻辑可以基于用户输入来设置散列块大小。
在框515,处理逻辑可以识别要进行重复数据删除(基于散列块大小)和压缩(基于压缩块大小)的数据集。散列块大小可以小于压缩块大小。压缩块大小可以是散列块大小的至少两倍。散列块大小可以是压缩块大小的除数。数据集可以包括电子文件。压缩块大小可以等于电子文件的大小。在框520,处理逻辑可以基于散列块大小来定义数据集内的数据块集。
在框525,处理逻辑可以为数据集内的数据块集中的每一个数据块生成散列。附加地或替代地,处理逻辑可以生成第一指令,以为数据集内的数据块集中的每一个数据块生成散列。
在框530,处理逻辑可以基于数据块的相应散列对数据集内的数据块进行重复数据删除。在至少一个实施例中,经过重复数据删除的数据块不会被压缩。附加地或替代地,处理逻辑可以基于数据块的相应散列生成第二指令来对数据集内的数据块进行重复数据删除。
在框535,处理逻辑可以基于压缩块大小来对数据集进行压缩。在至少一个实施例中,压缩块大小可以不是散列块大小的整数倍。该组数据块中的第二数据块可以具有唯一的散列块大小。基于压缩块大小对数据集进行压缩可以包括避免压缩第二数据块或丢弃与第二数据块相关联的散列中的至少一种。附加地或替代地,处理逻辑可以基于压缩块大小生成第三指令来对数据集进行压缩。
图6示出了用于对数据集进行散列的另一示例性方法600的流程图。方法600可以在框605开始,其中处理逻辑可以识别要散列的数据集,该数据集包括数据块集。
在框610,处理逻辑可以识别数据集内要跳过的数据。在至少一个实施例中,数据集内要跳过的数据包括以下数据中的至少一个:表征为模式的数据、标题、脚注、非易失性存储器快速(NVMe)保护数据或错误恢复控制数据。在至少一个实施例中,识别数据集内要跳过的数据包括:识别数据集内的跳过候选项;通过界面提供要提供的跳过候选项;以及接收对跳过候选项的确认。
在框615,处理逻辑可以为数据集内除了要跳过的数据之外的数据块组中的每一个数据块生成散列。在至少一个实施例中,识别数据集内要跳过的数据包括确定该数据包括重复字段。重复字段可以包括特定的字节计数。在至少一个实施例中,为数据集内除了要跳过的数据之外的数据块组中的每一个数据块生成散列包括识别字段的第一字节和跳过数量等于字节计数的字节。在至少一个实施例中,为数据集内除了要跳过的数据之外的数据块集中的每一个数据块生成散列包括基于偏移和计数跳过数据。
在框620,处理逻辑可以以压缩块大小来压缩数据。在框625,处理逻辑可以将已跳过的数据提供给记录用于存储。在框630,处理逻辑可以通过用户界面提供已跳过的数据的记录。在至少一个实施例中,可以不跳过源数据,并且可以对已压缩数据执行包括偏移在内的所有散列。
图7示出了用于对数据集进行散列的又一示例性方法700的流程图。方法700可以在框705开始,其中处理逻辑可以识别要散列的数据集。数据集可以包括数据块集。
在框710,处理逻辑可以使用第一散列引擎为数据集内的数据块集中的每一个数据块生成第一散列。在至少一个实施例中,第一散列引擎可以配置成使用第一散列算法生成第一散列。在至少一个实施例中,第一散列引擎可以配置成基于第一散列块大小生成第一散列。在至少一个实施例中,第一散列引擎可以配置成在数据集的第一位开始生成第一散列。
在框715,处理逻辑可以使用第二散列引擎为数据集内的数据块集中的每一个数据块生成第二散列。在至少一个实施例中,第二散列引擎可以配置成使用第二散列算法生成第二散列。在至少一个实施例中,第二散列引擎可以配置成基于第二散列块大小生成第二散列。在至少一个实施例中,第二散列引擎可以配置成在数据集的第二位生成第二散列。数据集的第一位可以是位零,数据集的第二位可以基于与第一位的偏移来确定。在至少一个实施例中,处理逻辑可以接收从可用散列引擎集中对第一散列引擎和第二散列引擎的选择。
在框720,处理逻辑可以基于与特定数据块相关联的特定第一散列或与特定数据块相关联的特定第二散列或后续散列来对数据集内的特定数据块进行重复数据删除。在框725,处理逻辑可以基于压缩块大小来对数据集进行压缩。在至少一个实施例中,可以在数据压缩之后进行散列。
图8以计算设备800的示例形式示出了机器的图形表示,在计算设备800内可以执行指令集,用于使机器执行本文讨论的任何一种或多种方法。计算设备800可以包括其中可以执行指令集,用于使机器执行本文讨论的任何一种或多种方法的机架式服务器、路由器计算机、服务器计算机、大型计算机、膝上型计算机、平板计算机、台式计算机或任何具有至少一个处理器的计算设备等。在替代性实施例中,机器可以连接(例如,联网)到局域网、内联网、外联网或互联网中的其他机器。该机器可以在客户机-服务器网络环境中以服务器机器的能力运行。此外,虽然仅示出了单个机器,但是术语“机器”也可以包括任何单独或联合执行一组(或多组)指令以执行本文讨论的任何一种或多种方法的机器集。
示例计算设备800包括通过总线808相互通信的处理设备(例如,处理器)802、主存储器804(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)之类的动态随机存取存储器(DRAM))、静态存储器806(例如,闪存、静态随机存取存储器(SRAM))和数据存储设备816。
处理设备802代表一个或多个通用处理设备,例如微处理器、中央处理单元等。更具体地,处理设备802可以包括复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或者实现其他指令集的处理器或者实现指令集组合的处理器。处理设备802还可以包括一个或多个专用处理设备,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备802配置成执行指令826以执行本文讨论的操作和步骤。
计算设备800还可以包括可以与网络818通信的网络界面设备822。计算设备800还可以包括显示设备810(例如液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备812(例如键盘)、光标控制设备814(例如、鼠标)和信号生成设备820(例如,扬声器)。在至少一个实施例中,显示设备810、字母数字输入设备812和光标控制设备814可以组合成单个组件或设备(例如,LCD触摸屏)。
数据存储设备816可以包括计算机可读存储介质824,在该计算机可读存储介质上存储了体现本文描述的任何一种或多种方法或功能的一组或多组指令826。指令826也可以在由计算设备800执行该指令期间完全或至少部分地驻留在主存储器804和/或处理设备802中,主存储器804和处理设备802也构成计算机可读介质。指令还可以通过网络界面设备822在网络818上传输或接收。
虽然计算机可读存储介质826在示例性实施例中被示为单个介质,但是术语“计算机可读存储介质”可以包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还可以包括能够存储、编码或承载由机器执行的指令集并使机器执行本公开的任何一种或多种方法的任何介质。因此,术语“计算机可读存储介质”可以被理解为包括但不限于固态存储器、光学介质和磁介质。
根据惯例,附图中所示的各种特征可以不是按比例绘制的。本公开中呈现的图示并不意味着是任何特定装置(例如,设备、系统等)或方法的实际视图,而仅仅是用于描述本公开的各种实施例的理想化表示。因此,为了清楚起见,各种特征的尺寸可以任意扩大或缩小。此外,为了清楚起见,可以简化一些附图。因此,附图可以没有描绘给定装置(例如,设备)的所有组件或特定方法的所有操作。
本文使用的术语,尤其是在权利要求(例如,权利要求的主体)中使用的术语通常被认为是“开放的”术语(例如,术语“包括”应该被解释为“包括但不限于”,术语“具有”应该被解释为“至少具有”等)。
此外,如果意在引入特定数量的权利要求叙述,则这种意图将在权利要求中明确叙述,并且在没有这种叙述的情况下,不存在这种意图。例如,为了帮助理解,权利要求可以包含引入性短语“至少一个”和“一个或多个”的使用,以引入权利要求叙述。然而,这样的短语的使用不应被解释为暗示由不定冠词“一”或“一个”引入的权利要求叙述将包含这种引入的权利要求叙述的任何特定权利要求限制为仅包含一个这种叙述的实施例,即使当同一权利要求包括引入性短语“一个或多个”或“至少一个”以及例如“一”或“一个”(例如,“一”和/或“一个”应被解释为意味着“至少一个”或“一个或多个”);对于用于引入权利要求叙述的定冠词的使用也是如此。
此外,即使明确叙述了所引入的权利要求叙述的具体数量,也应当理解,这种叙述应当被解释为至少意味着所叙述的数量(例如,没有其他修饰语的“两个叙述对象”的简单叙述,意味着至少两个叙述对象,或者两个或更多个叙述对象)。此外,在类似于“A、B和C中的至少一个等”或者“A、B和C中的一个或多个,等”的惯例的情况下,一般来说,这样的结构意在包括单独的A、单独的B、单独的C、A和B两者、A和C两者、B和C两者,或者A、B和C三者等。例如,术语“和/或”应以这种方式进行解释。
此外,无论是在说明书、权利要求书还是附图中,呈现两个或更多替代性术语的任何分离的单词或短语都应该被理解为考虑了包括术语之一、任一术语或两个术语的可能性。例如,短语“A或B”应理解为包括“A”或“B”或“A和B”的可能性。
此外,术语“第一”、“第二”、“第三”等在本文中不一定用于暗示特定顺序或元素的数量。通常,术语“第一”、“第二”、“第三”等用于作为通用标识符区分不同元素。如果没有表明术语“第一”、“第二”、“第三”等暗示特定顺序,则不应将这些术语理解为暗示特定顺序。此外,如果表明术语“第一”、“第二”、“第三”等暗示特定数量的元素,这些术语不应被理解为暗示特定数量的元素。例如,第一小部件可以被描述为具有第一侧,第二小部件可以被描述为具有第二侧。关于第二小部件使用术语“第二侧”可以是为了将第二小部件的这一侧与第一小部件的“第一侧”区分开来,而不是暗示第二小部件具有两侧。
本文叙述的所有示例和条件语言都是为了教示的目的,以帮助读者理解本发明和发明人为促进本领域所贡献的概念,并且应被解释为不限于这些具体叙述的示例和条件。尽管已经详细描述了本公开的实施例,但是应当理解,在不脱离本公开的精神和范围的情况下,可以对其进行各种改变、替换和变更。

Claims (20)

1.一种方法,包括:
识别要散列的数据集,所述数据集包括数据块集;
识别所述数据集内要跳过的数据;
由散列引擎为所述数据集内除了要跳过的所述数据之外的所述数据块集中的每一个数据块生成散列;以及
压缩所述数据。
2.根据权利要求1所述的方法,其中,识别所述数据集内要跳过的数据包括确定所述数据包括重复字段。
3.根据权利要求2所述的方法,其中,所述重复字段具有特定的字节计数,其中为所述数据集内除了要跳过的所述数据之外的所述数据块集中的每一个数据块生成散列包括识别所述字段的第一字节并跳过数量等于所述字节计数的字节。
4.根据权利要求1所述的方法,还包括:
将已跳过的数据提供给记录用于存储;以及
通过用户界面提供已跳过的数据的所述记录。
5.根据权利要求1所述的方法,其中,由散列引擎为所述数据集内除了要跳过的所述数据之外的所述数据块集中的每一个数据块生成散列包括基于偏移和计数跳过数据。
6.根据权利要求1所述的方法,其中,所述数据集内要跳过的所述数据包括以下数据中的至少一个:表征为模式的数据、标题、脚注、非易失性存储器快速(NVMe)保护数据或错误恢复控制数据。
7.根据权利要求1所述的方法,其中,识别所述数据集内要跳过的数据包括:
识别所述数据集内的跳过候选项;
通过界面提供要提供的所述跳过候选项;以及
接收对所述跳过候选项的确认。
8.一种系统,包括:
存储器;以及
处理单元,耦接到所述存储器并且配置成使所述系统执行包括以下操作:
识别要散列的数据集,所述数据集包括数据块集;
识别所述数据集内要跳过的数据;
由散列引擎为所述数据集内除了要跳过的所述数据之外的所述数据块集中的每一个数据块生成散列;以及
压缩所述数据。
9.根据权利要求8所述的系统,其中,识别所述数据集内要跳过的数据包括确定所述数据包括重复字段。
10.根据权利要求9所述的系统,其中,所述重复字段具有特定的字节计数,其中所述为所述数据集内除了要跳过的所述数据之外的所述数据块集中的每一个数据块生成散列包括识别所述字段的第一字节并跳过数量等于所述字节计数的字节。
11.根据权利要求8所述的系统,其中,所述操作还包括:
将已跳过的数据提供给记录用于存储;以及
通过用户界面提供已跳过的数据的所述记录。
12.根据权利要求8所述的系统,其中,为所述数据集内除了要跳过的所述数据之外的所述数据块集中的每一个数据块生成散列包括基于偏移和计数跳过数据。
13.根据权利要求8所述的系统,其中,所述数据集内要跳过的所述数据包括以下数据中的至少一个:表征为模式的数据、标题、脚注、非易失性存储器快速(NVMe)保护数据或错误恢复控制数据。
14.根据权利要求8所述的系统,其中,识别所述数据集内要跳过的数据包括:
识别所述数据集内的跳过候选项;
通过界面提供要提供的所述跳过候选项;以及
接收对所述跳过候选项的确认。
15.一种系统,包括:
重复数据删除管理器,配置成识别要散列的数据集,并识别所述数据集内要跳过的数据,其中所述数据集包括数据块集;
散列引擎,配置成为所述数据集内除了要跳过的所述数据之外的所述数据块集中的每一个数据块生成散列;以及
压缩管理器,配置成压缩所述数据。
16.根据权利要求15所述的系统,其中,识别所述数据集内要跳过的数据包括确定所述数据包括重复字段。
17.根据权利要求16所述的系统,其中,所述重复字段具有特定的字节计数,其中所述为所述数据集内除了要跳过的所述数据之外的所述数据块集中的每一个数据块生成散列包括识别所述字段的第一字节并跳过数量等于所述字节计数的字节。
18.根据权利要求15所述的系统,其中,为所述数据集内除了要跳过的所述数据之外的所述数据块集中的每一个数据块生成散列包括基于偏移和计数跳过数据。
19.根据权利要求15所述的系统,其中,所述数据集内要跳过的所述数据包括以下数据中的至少一个:表征为模式的数据、标题、脚注、非易失性存储器快速(NVMe)保护数据或错误恢复控制数据。
20.根据权利要求15所述的系统,其中,识别所述数据集内要跳过的数据包括:
识别所述数据集内的跳过候选项;
通过界面提供要提供的所述跳过候选项;以及
接收对所述跳过候选项的确认。
CN202210107769.8A 2021-02-02 2022-01-28 用于通过跳过选定数据进行重复数据删除的散列 Pending CN114840500A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/165,912 US20220245104A1 (en) 2021-02-02 2021-02-02 Hashing for deduplication through skipping selected data
US17/165,912 2021-02-02

Publications (1)

Publication Number Publication Date
CN114840500A true CN114840500A (zh) 2022-08-02

Family

ID=82403118

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210107769.8A Pending CN114840500A (zh) 2021-02-02 2022-01-28 用于通过跳过选定数据进行重复数据删除的散列

Country Status (3)

Country Link
US (1) US20220245104A1 (zh)
CN (1) CN114840500A (zh)
DE (1) DE102022102227A1 (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100250896A1 (en) * 2009-03-30 2010-09-30 Hi/Fn, Inc. System and method for data deduplication
WO2013127309A1 (zh) * 2012-03-02 2013-09-06 华为技术有限公司 数据处理方法及数据处理设备
US20140101117A1 (en) * 2012-10-10 2014-04-10 Salesforce.Com, Inc. Methods and systems for managing records in an on-demand system
US20150169613A1 (en) * 2013-12-17 2015-06-18 Nafea BShara In-band de-duplication
KR20180058169A (ko) * 2016-11-23 2018-05-31 삼성전자주식회사 데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법
US20180288072A1 (en) * 2017-03-28 2018-10-04 Cisco Technology, Inc. Fragmented malware hash lookup in cloud repository
US10402266B1 (en) * 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
WO2020253406A1 (zh) * 2019-06-17 2020-12-24 华为技术有限公司 一种数据处理方法、装置及计算机可读存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085328A (en) * 1998-01-20 2000-07-04 Compaq Computer Corporation Wake up of a sleeping computer using I/O snooping and imperfect packet filtering
US10216651B2 (en) * 2011-11-07 2019-02-26 Nexgen Storage, Inc. Primary data storage system with data tiering
US8954392B2 (en) * 2012-12-28 2015-02-10 Futurewei Technologies, Inc. Efficient de-duping using deep packet inspection
US9678973B2 (en) * 2013-10-15 2017-06-13 Hitachi Data Systems Corporation Multi-node hybrid deduplication
US10645002B2 (en) * 2014-06-20 2020-05-05 Hewlett Packard Enterprise Development Lp System, apparatus and method for managing redundancy elimination in packet storage during observation of data movement
US10528539B2 (en) * 2016-07-01 2020-01-07 Intel Corporation Optimized selection of hash collision chains
US10002146B1 (en) * 2017-02-13 2018-06-19 Sas Institute Inc. Distributed data set indexing
US11301427B2 (en) * 2019-10-15 2022-04-12 EMC IP Holding Company LLC Inline and post-process data deduplication for a file system

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100250896A1 (en) * 2009-03-30 2010-09-30 Hi/Fn, Inc. System and method for data deduplication
WO2013127309A1 (zh) * 2012-03-02 2013-09-06 华为技术有限公司 数据处理方法及数据处理设备
US20140101117A1 (en) * 2012-10-10 2014-04-10 Salesforce.Com, Inc. Methods and systems for managing records in an on-demand system
US20150169613A1 (en) * 2013-12-17 2015-06-18 Nafea BShara In-band de-duplication
KR20180058169A (ko) * 2016-11-23 2018-05-31 삼성전자주식회사 데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법
US20180288072A1 (en) * 2017-03-28 2018-10-04 Cisco Technology, Inc. Fragmented malware hash lookup in cloud repository
US10402266B1 (en) * 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
WO2020253406A1 (zh) * 2019-06-17 2020-12-24 华为技术有限公司 一种数据处理方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
US20220245104A1 (en) 2022-08-04
DE102022102227A1 (de) 2022-08-04

Similar Documents

Publication Publication Date Title
US7478113B1 (en) Boundaries
US7587401B2 (en) Methods and apparatus to compress datasets using proxies
US10949405B2 (en) Data deduplication device, data deduplication method, and data deduplication program
US11176099B2 (en) Lockless synchronization of LSM tree metadata in a distributed system
US8706710B2 (en) Methods for storing data streams in a distributed environment
US11627207B2 (en) Systems and methods for data deduplication by generating similarity metrics using sketch computation
US8738572B2 (en) System and method for storing data streams in a distributed environment
KR101708261B1 (ko) 개별 액세스 가능한 데이터 유닛의 스토리지 관리
CN111046034A (zh) 管理内存数据及在内存中维护数据的方法和系统
CN109299086B (zh) 最优排序键压缩和索引重建
US20170255708A1 (en) Index structures for graph databases
US11995050B2 (en) Systems and methods for sketch computation
Xu et al. Online deduplication for databases
CN114840502A (zh) 使用不同的散列大小和压缩大小进行散列
US11669496B2 (en) Method and apparatus for replicating a target file between devices
US11995060B2 (en) Hashing a data set with multiple hash engines
CN115794861A (zh) 基于特征摘要的离线数据查询复用方法及其应用
CN114840500A (zh) 用于通过跳过选定数据进行重复数据删除的散列
Vikraman et al. A study on various data de-duplication systems
CN113448920B (zh) 管理存储系统中的索引的方法、设备和计算机程序产品
Abdulsalam et al. Evaluation of Two Thresholds Two Divisor Chunking Algorithm Using Rabin Finger print, Adler, and SHA1 Hashing Algorithms
US20240311248A1 (en) Delivering file system namespace features without on-disk layout changes
Taha Ahmed Deduplication using Modified Dynamic File Chunking for Big Data Mining
US20190114323A1 (en) System And Method For Storing Data Records In Key-Value Database
CN118861063A (zh) 数据库的大对象重写方法、存储介质及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination