CN104813310A - 多级别内联数据去重 - Google Patents

多级别内联数据去重 Download PDF

Info

Publication number
CN104813310A
CN104813310A CN201280076874.4A CN201280076874A CN104813310A CN 104813310 A CN104813310 A CN 104813310A CN 201280076874 A CN201280076874 A CN 201280076874A CN 104813310 A CN104813310 A CN 104813310A
Authority
CN
China
Prior art keywords
block
fetched
fingerprint
dimensional array
line content
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
CN201280076874.4A
Other languages
English (en)
Inventor
R·S·查克拉博蒂
B·K·迪狄
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.)
Institute Of Technology Of India Ka Halage Pul Branch School
Indian Institute of Technology Kharagpur
Original Assignee
Institute Of Technology Of India Ka Halage Pul Branch School
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 Institute Of Technology Of India Ka Halage Pul Branch School filed Critical Institute Of Technology Of India Ka Halage Pul Branch School
Publication of CN104813310A publication Critical patent/CN104813310A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • G06F3/0641De-duplication techniques

Landscapes

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

Abstract

本申请提供了用于数据去重的技术,与常规技术相比,其以相对高的吞吐量以及以相对小的存储空间工作。以使用Rabin指纹法的内容相关分块(CDC)为基础,数据可被采指纹且存储在可变尺寸块中。在一些实例中,可以在多个级别上对数据分块,例如,两个级别,第一级别的可变尺寸大块和第二级别的固定尺寸子块,从而防止两个以上数据块共用的子块不被去重。例如,在第一级别,可以采用CDC算法来对数据采指纹以及以内容相关尺寸(可变尺寸)对数据分块,在第二级别,CDC块可被分割成小的固定尺寸块。随后,分割后的CDC块可用于去重。

Description

多级别内联数据去重
背景技术
除非在此处进行说明,否则此处所描述的材料不是本申请权利要求的现有技术并且不因包含在该部分中而承认是现有技术。
随着网络和数据存储技术的发展,越来越多的计算服务通过基于云的数据中心提供给用户或客户,基于云的数据中心能够实现对各种级别的计算资源的租用存取。数据中心能够为个人和组织提供一系列的系统配置和操作的解决方案。虽然数据中心被配备成处理极大规模的数据存储和处理,但是数据存储仍花费资源、带宽、速度和装备财政成本。数据中心操作的另一方面是用户间数据(例如,应用、配置数据和可消耗数据)的去重。
固定尺寸分块(chunking)和基于Rabin指纹的内容相关分块(CDC)是数据去重中用来提高压缩率的两种常用策略。一种有效去重的期望方面在于,当基础数据具有小的变化时,其是鲁棒的。通过并入灵活的块尺寸,内容相关分块(或可变尺寸分块)对小的变化具有一定的鲁棒性。然而,现有的CDC技术不使用在较大可变尺寸块内的“重复数据”来改善去重。而且,除了空间节约之外,去重系统需要能够以高的吞吐量执行去重。由于去重涉及到对大的数据集的处理,所以可能降低去重吞吐量的辅助存储盘瓶颈是主要的挑战。
发明概述
本公开一般描述了用于为数据中心环境提供多级别内联数据(inlinedata)重复的技术。
根据一些示例,一种用于提供多级别内联数据去重的方法可以包括:对待去重数据采指纹以生成被取指纹内容;将数据划分成多个块,其中每个块的尺寸取决于对应的被取指纹内容的尺寸;将每个块划分成可变尺寸子块和固定尺寸子块;以及对固定尺寸子块进行去重。
根据其他示例,配置成执行多级别内联数据去重的服务器可以包括:存储器,其配置成存储指令;以及处理器,其配置成与存储的指令相结合来执行去重应用。处理器可配置成:对待去重数据采指纹以生成被取指纹内容;将数据划分成多个块,其中每个块的尺寸取决于对应的被取指纹内容的尺寸;将每个块划分成可变尺寸子块和固定尺寸子块;以及对固定尺寸子块去重。
根据另外的示例,计算机可读存储器设备中可以存储有用于执行多级别内联数据去重的指令。所述指令可以包括:由待去重数据生成被取指纹内容;将数据划分成多个块,其中每个块的尺寸取决于对应的被取指纹内容的尺寸;将每个块划分成可变尺寸子块和固定尺寸子块;以及对固定尺寸子块去重。
前面的概述仅仅是示例性的,而不意在以任何方式进行限制。通过参考附图以及下面的详细说明,除了上文所描述的示例性的方案、实施例和特征之外,另外的方案、实施例和特征将变得清晰可见。
附图说明
通过下面结合附图给出的详细说明和随附的权利要求,本公开的前述特征以及其它特征将变得更加清晰。应理解的是,这些附图仅描绘了依照本公开的多个实施例,因此,不应视为对本发明范围的限制,将通过利用附图结合附加的具体描述和细节对本公开进行说明,在附图中:
图1示出了示例的数据中心,其中可以为数据中心环境提供多级别内联数据重复;
图2示出了示例的多级别内联数据重复系统的体系结构;
图3示出了多级别内联数据重复系统可以处理的示例的数据块和子块;
图4示出了多级别内联数据重复系统所采用的指纹词典的示例的数据结构;
图5示出了通用计算设备,其可用于实施多级别内联数据重复系统;
图6是示出用于提供多级别内联数据重复系统的示例方法的流程图;以及
图7示出了示例的计算机程序产品的框图,
所有都是依照本文所描述的至少一些实施例来布置的。
发明详述
在下面的详细说明中,将参考附图,附图构成了详细说明的一部分。在附图中,除非上下文指出,否则相似的符号通常表示相似的部件。在详细说明、附图和权利要求中所描述的示例性实施例不意在限制。可以使用其它实施例,并且可以做出其它改变,而不偏离本文呈现的主题的精神或范围。将易于理解的是,如本文大致描述且如图中所图示的,本公开的方案能够以各种不同配置来布置、替代、组合、分离和设计,所有这些都在本文中明确地构思出。
本公开总体尤其涉及与为数据中心环境提供多级别、内联数据去重有关的方法、装置、系统、设备和/或计算机程序产品。
简单来说,本申请提供了用于数据去重的技术,与常规技术相比,其以相对高的吞吐量以及以相对少的存储空间。以使用Rabin指纹法的内容相关分块(CDC)为基础,数据可被采指纹且存储在块中,所述块的尺寸取决于被取指纹的内容的尺寸。在一些示例中,可以对数据进行多级例如两级分块,从而防止两个以上数据块共用的子块不被去重。例如,在第一级别,可以采用CDC算法来采指纹以及以内容相关尺寸(可变尺寸)对数据分块,在第二级别,CDC块可分割成小的固定尺寸块。然后,分割后的CDC块可用于去重。
图1示出了示例的数据中心,其中依照本文所描述的至少一些实施例,可以为数据中心环境提供多级别内联数据重复。
如图100所示,物理数据中心102可以包括多个服务器以及诸如防火墙、路由器和类似设备的专业设备。可以在每个服务器上或者多个服务器之间建立多个虚拟服务器或虚拟机104,用于向数据使用客户端108提供服务。在一些实施方案中,一个或多个虚拟机可以分组成虚拟数据中心106。数据使用客户端108可以包括经由计算设备118通过一个或多个网络110与数据中心102交互(112)的个人用户、经由服务器116与数据中心102交互的企业客户端、或者经由服务器组114与数据中心102交互的其他数据中心。
现代数据中心越来越是基于云的实体。由数据中心提供的服务包括但不限于数据存储、数据处理、托管应用或者甚至是虚拟桌面。在多种情形下,大量的数据可能在多个用户间共用。例如,在托管应用情形下,用户可能产生同一应用的多个副本,而只有极少的定制部分。因此,对于大量的用户情况,大量的应用数据以及一些消耗数据都可能是重复的,并且定制数据和一些消耗数据是唯一的。通过对共同的数据部分去重,可以节约大量的存储空间。由于无需数据中心来维护、复制以及以其他方式处理大量数据,还可以节约诸如带宽和处理能力的附加资源。
在根据一些示例的系统中,还可以对数据进行多级,例如两级,分块,从而防止两个以上的数据块共用的子块无法被去重。第一阶段可以采用CDC算法来对数据采指纹以及以内容相关尺寸对数据分块,第二阶段或后续阶段随后将CDC块分割成小的固定尺寸块,这些固定尺寸块可用于去重。通过对CDC采指纹的数据的尺寸应用滑动窗口,可以形成可变尺寸块。如果指纹的最后N位的十进制等值等于预定数M,则可以为块选择该尺寸。否则,窗口尺寸可以滑动(例如一个字节)且重复处理,直至达到预定数值或者最大块尺寸。CDC块的指纹可利用加密散列函数(例如,SHA-1)来计算且存储在指纹数据库中,这样可有助于去除冗余的可变尺寸CDC块。然后,CDC块可被划分成固定尺寸子块,该固定尺寸子块的SHA-1指纹还可以被计算且存储在二维单元阵列(“指纹词典”的部分)中。然后,可以利用指纹词典来对子块去重。为了优化空间需求,指纹词典可以包含被称为存储器内Bloom过滤器的部件,该部件可以被设计为利用对单元阵列进行操作的Bloom过滤器判定子块是否已被存储。在其他示例中,可将一位或多位的数据与所述单共同存储以减少查找时间。
图2示出了依照本文所描述的至少一些实施例布置的示例的多级别内联数据重复系统的体系结构。
如图200所示,根据示例的多级别内联去重系统可以包括分块器220和块管理器230。分块器220可以接收数据流且将数据划分成块。分块器220可以利用多阶段分块技术将数据分划成块和子块。一旦生成块和子块,可以计算它们的指纹,块、子块连同其指纹一起可以传送到块管理器230。
分块器220可以包括三个子部件:(1)第一阶段可变尺寸分块器222,用于实施CDC技术以将数据分块成大的块;(2)第二阶段固定尺寸分块器224,用于对大的块应用固定尺寸分块以生成子块;以及(3)指纹生成器226,用于为每个块计算指纹(例如,使用SHA-1散列函数)。在其他示例中,可以采用多个阶段。
每个大的块及其子块连同其指纹可以送到块管理器230,为分块器限定以下一个或多个参数:(1)针对所述预定数量而观察的指纹的位数(N),其中所述位数参数决定了第一阶段可变尺寸分块器222所产生的大块的平均尺寸;(2)预定数量(M),其可以在[0,2N-1]的范围内;(3)最小大块尺寸;(4)最大大块尺寸;(5)限定由第二阶段固定尺寸分块器224所产生的子块的尺寸的子块尺寸;(6)块因子,其可定义为最大大块尺寸与子块尺寸之比;以及(7)平均大块尺寸,基于此值可以确定N的值(在一些示例中,平均块尺寸可以是2N字节)。
块管理器230可以识别重复的子块且存储非重复的子块。块管理器230可以维护磁盘上指纹词典,这可有助于发现特定子块是否为重复的。对于子块C,块管理器230可以通过参考指纹词典来检查C是否为重复的,如果C为重复的,则拒绝子块C,否则将子块C存储到块仓库中。块仓库可以生成子块C的地址位置A。然后,地址A可以存储在指纹词典中。
块管理器230可以包括:大块数据库232,用于存储由第一阶段可变尺寸分块器222所产生的大块的指纹;以及指纹单元词典,其存储由第二阶段固定尺寸分块器224所产生的子块的指纹。块管理器230可以维护作为指纹词典一部分的二维矩阵(阵列)234,其可包含子块指纹。指纹矩阵234可以完全驻存在辅助存储设备(磁盘)中。块管理器230还可以维护一个或多个存储器内过滤器236(例如,Bloom过滤器)以避免一些为了支持诸如指纹词典(未示出)的搜索和操作的操作所需的磁盘存取。虽然结合图2讨论了两阶段示例性实施例,还可以利用多个阶段来实施实施例,其中在第一阶段生成大的块之后,可以生成较小尺寸的块。
如下面将要结合图4所讨论的,指纹词典可以实施为具有至少两个部件,即存储器内Bloom过滤器和指纹矩阵的数据结构。指纹矩阵可以是二维单元阵列。在一些示例中,指纹矩阵可以驻存在磁盘中。在一些示例中,存储器内Bloom过滤器可以驻存在主存储器中,其可以充当对包含在指纹矩阵中的指纹进行索引的助手。
图3示出了依照本文所描述的至少一些实施例布置的可通过多级别内联数据重复系统处理的示例的数据块和子块。
在一些实施例中,CDC技术可以生成块,其仍可以包含一个或多个共用子块。也即,如果A和B是通过采用CDC技术所产生的两个块,则可以存在另一子块C,其为A和B所共用。该子块C的存在是可能的,因为块的端点是基于指纹的最后N位等于M的属性来确定的。
图3的图300提供了示例的情形,其中块A 340和块B 350是通过CDC技术生成的。块A 340可以有6个字节,块B 350可有5个字节。在示例的情形中,FP1可以是第一字节341的指纹,FP2可以是第二字节342的指纹,FP3可以是第三字节343的指纹,FP4可以是第四字节344的指纹,FP5可以是第五字节345的指纹,FP7可以是第六字节346的指纹。FP2可以从FP1得到;FP3可以从FP2得到;FP4可以从FP3得到;FP5可以从FP4得到;以及FP7可以从FP5得到。
在块B 350中,FP1可以是第一字节351的指纹,FP2可以是第二字节352的指纹,FP3可以是第三字节353的指纹,FP4可以是第四字节354的指纹,FP6可以是第五字节355的指纹。在第二块中,FP2可以从FP1得到,FP3可以从FP2得到,FP4可以从FP3得到,FP6可以从FP4得到。
对于块A 340,FP7的最后N位等于M(预定数值)。对于块B,FP6的最后N位等于M。FP1、FP2、FP3、FP4和FP5的最后N位不等于M。包括字节A 361、字节B 362、字节C 363和字节D 364的子块C 360为块A 340和块B 350所共用,但是该冗余可能是CDC分块技术不可识别的且无法被CDC分块技术利用。
在根据一些示例的系统中,可以采用多阶段分块技术,对在第一阶段中基于Rabin指纹法由CDC技术产生的块应用至少一种其他级别的分块,由此在附加的阶段(例如,第二阶段)将在第一阶段产生的块分割成固定尺寸小块。因为固定尺寸分块相对简单且计算上较不昂贵,所以多阶段分块技术的整体复杂度可接近单个阶段CDC分块技术的复杂度。另外,当与单个阶段CDC方法相比时,附加的分块可以使得存储空间节约得以实质性提高。
如之前所论述的,块因子参数可以指示待由单个大的CDC块产生的子块数量。根据一些示例的技术可以通过将参数最小大块尺寸初始化成子块尺寸以及将参数最大大块尺寸初始化成块因子和子块尺寸的乘积而开始。最小大块尺寸和最大大块尺寸可用于设定第一阶段大CDC块的尺寸的界限。多阶段分块技术可以接收字节阵列作为块的输入以及输出固定尺寸块的阵列。END1和END2可以代表块界限,BOUND1和BOUND2表示滑动窗口的两端。最初,END1可以设定成1,END2可以设定成最小大块尺寸。该技术可以重复如下操作,直到没有留下任何用于分块的数据:
1)对于在当前窗口界限(从BOUND1到BOUND2)围起的数据计算指纹F,生成块程序将滑动窗口的两端作为输入并且产生块,Rabin指纹程序将块作为输入且产生块的指纹。
2)如果F的最后N位的十进制等值等于预定数值M,则使BOUND2作为当前块界限且以END1和END2作为输入利用生成块程序来产生大的CDC块。一旦生成大块,则可以将其传送给固定尺寸分块程序以将大块分割成小的固定尺寸块。固定尺寸块可以存储在输出小块阵列中。
3)如果F的最后N位的十进制等值不等于M,则当前滑动窗口可滑动一个或多个字节。
4)如果由END1至BOUND2定界的当前的大块的长度大于最大大块尺寸,则可将END1至BOUND2之间的数据选为大块且将其分割成固定尺寸块。
图4示出了依照本文所描述的至少一些实施例布置的多级别内联数据重复系统所采用的指纹词典的示例性的数据结构。
可以多种方式来形成指纹词典。两个示例的设计显示于图4的图470和480中。根据第一设计,指纹词典可以具有两个部分:(a)指纹矩阵,以及(b)存储器内Bloom过滤器。指纹矩阵是二维单元阵列(包括指纹和块指针)。块指针可以指向块仓库中的位置(地址),在该位置上实际上存储了对应的子块。指纹矩阵的每个行可以包括2*块因子个列。最初,矩阵可以为空。通过逐渐插入指纹,矩阵尺寸可以增长。根据一些示例,指纹可以是20字节SHA-1散列。矩阵可以完全地存储在辅助存储区中。在图470中,示出了指纹矩阵472的三个示例行,其中指针列可以指向对应于指纹矩阵472中的各个指纹的块474的实际位置。
指纹矩阵的每行可以容纳于磁盘上的磁盘块尺寸(DBS)字节,使得能够在单次磁盘存取操作中对矩阵的每行进行存取。存储器内过滤器可以包括两个Bloom过滤器阵列(例如ColumnFilterArray[]和RowFilterArray[])。ColumnFilterArray[]可以是Bloom过滤器的阵列。ColumnFilterArray[]中的每个Bloom过滤器可对应于矩阵中的列。如此,ColumnFilterArray[i]可以是存在于指纹矩阵的第i列中的指纹的汇总。给定子块指纹F,可以从F中提取最后[log2块因子]位。假设POS是[log2块因子]的十进制等值,如果ColumnFilterArray[POS]Bloom过滤器不包含F,则暗示该小块没有存在在该矩阵中。
RowFilterArray[]可以是Bloom过滤器阵列,RowFilterArray[]中的每个过滤器对应于矩阵中的行。因此,RowFilterArray[i]可以是第i行中存在的指纹的汇总。
给定大可变尺寸块指纹F和可变尺寸块C,块管理器可以采用存储块程序来存储由C得到的子块。存储块程序可与大可变尺寸块、大可变尺寸块指纹、子块列表和子块指纹列表一起提供。该程序可以首先检查在指纹数据库中是否存在大可变尺寸块指纹。如果在指纹数据库中存在该大块的指纹,则可以得出该大可变尺寸块是重复块的结论,并可以丢弃所有的子块。否则,系统可以将大可变尺寸块指纹添加到指纹数据库中并且扫描各个子块。对于每个子块SC,系统可以利用matrix-is-present程序来检查在指纹矩阵中是否存在SC的指纹。如果在矩阵中存在SC的指纹,则可得出SC为重复且可被丢弃的结论;否则,可以利用matrix-add-fingerprint程序将SC的指纹添加到矩阵中。
如果给定指纹存在于指纹矩阵中,则matrix-is-present程序可以返回真值;否则其可以返回假值。matrix-is-present程序可以与子块指纹F一起提供,提取F的最后P=[log2块因子]位,并且检查ColumnFilterArray[P]是否包含F。如果ColumnFilterArray[P]不包含F,则可以得出该指纹不在该矩阵中的结论。否则,程序可以访问RowFilterArray[]中的每个Bloom过滤器B并且检查B是否包含F。如果B不包含F,则过程可以继续进行到下一过滤器。否则,该矩阵的对应行可以从磁盘存取到存储器,在整行上对于F执行线性搜索。
在一些示例性实施例中,块管理器可以维护被命名为当前行的存储器内矩阵行。指纹可以添加到当前行中,而不是为指纹的每次插入操作都对磁盘进行存取。当当前行为满时,其可以在单次磁盘存取操作中添加到磁盘上指纹矩阵中。通过所述对磁盘的延迟写入,可以减少磁盘存取操作的数量。
图480呈现了根据其他示例性实施例的可选的指纹词典方法,其中修改上述方法以减少对辅助存储器存取的次数。存取操作的数量可由度量理论磁盘存取(TDA)来估计。通过使指纹矩阵的一行恰好容纳在一个磁盘块中,可以通过监控在去重处理期间对指纹矩阵中的行存取多少次来测量TDA。
在上述方法中,当RowFilterArray[]中的Bloom过滤器暗示可能存在该指纹时,需要对该矩阵的相应行进行存取,遍历所有指纹搜索一行,这可能是计算上昂贵的处理。通过连同每个指纹存储一些位,可以减少在一行中找到指纹的搜索时间。结果,存储在一行中的指纹数量最终会减少,这会导致行Bloom过滤器的实证概率的下降,从而减少磁盘存取操作次数。指纹矩阵是二维单元阵列,其中每个单元可设计为包括用于保存指纹的两个位置(原指纹位置和重复指纹位置)、(块因子+1)位阵列以及两个子块指针的结构。每个单元可以具有如下字段:存储原指纹的OrgSlot字段481;存储重复指纹的DupSlot字段482;存储块因子数的位阵列的BitArray字段483,其中BitArray[i]表示当前行中的第i个单元;DupBit字段484;存储块(其指纹等于存储在OrgSlot中的指纹)在块库中的实际位置的指针的原始块指针字段485;以及存储块(其指纹等于存储在OrgSlot中的指纹)在块库中的实际位置的指针的重复块指针字段486。
矩阵具有使每行具有最多2*块因子个指纹的列块因子数。在插入指纹F过程中在指纹矩阵的行中第i个单元的DupBit字段484可设定成1,使得F散列成列数i,但是与该行对应的第i个单元的OrgSlot字段481不释放。下面的示例算法解释了指纹F如何可以插入当前行(在存储器中维护的行)中。
      
示例算法1-用于添加到矩阵的程序-
在下面的示例算法2中的NextFreeDuplicateColumn()程序可以取矩阵的一行作为输入并且提供其中重复位置(DUPSlot)被释放的该行中列的索引I。
      
      
示例算法1-验证C存在/不存在于矩阵中的程序–
图5示出了通用计算装置500,其可用来实施依照本文所描述的至少一些实施例的多级别内联数据重复系统。在示例性的基本配置502,计算装置500可以包括一个或多个处理器504和系统存储器506。存储器总线508可用于处理器504与系统存储器506之间通信。通过内虚线内的那些组件在图5中示出了基本配置502。
根据期望的配置,处理器504可以为任意类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任意组合。处理器504可以包括诸如级别一超高速缓存512的一级或多级超高速缓存、处理器核514和寄存器516。示例的处理器核514可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP Core)或其任意组合。示例的存储器控制器518还可与处理器504一起使用,或者在一些实施方式中,存储器控制器518可以是处理器504的内部部件。
根据所需的配置,系统存储器506可以是任意类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或其任意组合。系统存储器506可以包括操作系统520、一个或多个应用522以及程序数据524。去重应用522可以包括块管理器523,其可辅助采用基于如本文所述的Rabin指纹法的内容相关分块(CDC)算法将数据划分成多个块。程序数据524可以包括一个或多个指纹数据525、子块527、指针529等以及其他数据,如本文所描述的。
计算设备500可具有附加的特征或功能以及附加的接口以便于基础配置502与任何所需的设备和接口之间的通信。例如,总线/接口控制器530可用于利于基础配置502与一个或多个数据存储设备532之间经由存储接口总线534的通信。数据存储设备532可以是一个或多个可移除存储设备536、一个或多个非可移除存储设备538或者其组合。可移除存储设备和非可移除存储设备的示例包括诸如软盘驱动器和硬盘驱动器(HDD)的磁盘设备、诸如压缩盘(CD)驱动器或数字多功能盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)和磁带驱动器,仅列举了几个。示例的计算机存储介质可以包括以用于诸如计算机可读指令、数据结构、程序模块或其它数据的信息的存储的任何方法或技术实现的易失性和非易失性的介质以及可移除和非可移除的介质。
系统存储器506、可移除存储设备536和非可移除存储设备538是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存(flash memory)或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储设备、磁盒、磁带、磁盘存储设备或其它磁存储设备、或者可用于存储所需信息并且可由计算设备500存取的任何其它介质。任意这样的计算机存储介质可以是计算设备500的部件。
计算设备500还可以包括接口总线540,该接口总线用于方便从各接口设备(例如,一个或多个输出设备542、一个或多个外围设备接口544和一个或多个通信设备546)经由总线/接口控制器530到基本配置502的通信。一些示例的输出设备542包括图形处理单元548和音频处理单元550,其可配置为经由一个或多个A/V端口552与诸如显示器或扬声器的各外部设备通信。一个或多个示例的外围设备接口544可包括串行接口控制器554或并行接口控制器556,其可配置为经由一个或多个I/O端口558与诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其它外围设备(例如,打印机、扫描仪等)的外部设备通信。示例的通信设备546包括网络控制器560,其可布置成便于经由一个或多个通信端口564通过网络通信链路与一个或多个计算设备562的通信。一个或多个其他的计算设备562可以包括位于数据中心、用户装备和类似设备处的服务器。
网络通信链路可以是通信介质的一个示例。通信介质通常可通过计算机可读指令、数据结构、程序模块或诸如载波或其它传输机制的调制数据信号中的其它数据来具体化,并且可以包括任何信息输送介质。“调制数据信号”可以是使得其特性中的一个或多个以将信号中的信息编码的方式设定或改变的信号。通过举例而不是限制的方式,通信介质可以包括诸如有线网络或直接线连接的有线介质,以及诸如声波、射频(RF)、微波、红外(IR)和其它无线介质的无线介质。如本文所使用的术语计算机可读介质可以包括存储介质和通信介质两者。
计算设备500可实现为通用或专用服务器、主机或者包括上述任意功能的类似计算机的一部分。计算设备500还可实现为包括膝上型计算机和非膝上型计算机配置两者的计算机。
示例性的实施例还可以包括通过存储折扣而刺激在数据中心环境中的交叉用户去重的方法。这些方法能够以任意多种方式来实施,包括本文所述的结构。一种这样的方式可以通过在本公开中所描述的类型的设备的机器操作。另一可选方式可以是,方法的各操作中的一个或多个要与执行一些操作的一个或多个人类操作者协力来执行,而其他操作可以通过机器来执行。这些人类操作者无需彼此配合,但是各自仅能够被配有执行程序一部分的机器。在其他示例中,人类交互按诸如机器自动化的预选标准而自动化。
图6是示出依照本文所描述的至少一些实施例的用于提供可通过诸如图5中的设备500的计算设备执行的多级别内联数据重复系统的示例性方法的流程图。示例性的方法可以包括如框622、624、626和/或628中的一个或多个所示的一个或多个操作、功能或动作。在框622至628中所描述的操作还可以存储为诸如计算设备610的计算机可读介质620的计算机可读介质中的计算机可执行指令。
提供多级别内联数据重复的示例性过程可开始于块622,“由待去重数据生成被取指纹内容”,其中图2中的分块器220的指纹生成器226可以生成指纹。继块622之后可以是块624,“将数据划分成块,每个块的尺寸取决于对应的被取指纹的内容的尺寸”,其中分块器220的第一阶段可变尺寸分块器222可以基于被取指纹的内容的尺寸而将数据划分成大尺寸块。
继块624之后可以是块626,“将每个块划分成可变尺寸子块和固定尺寸子块”。在块626中,第二阶段固定尺寸分块器224可以将大块划分成固定尺寸小块。继块626之后可以是块628,“对固定尺寸子块去重”,其中块管理器可以采用指纹词典确定重复块从而对固定尺寸子块去重。
在上述过程中所包含的块是为了示例的目的。提供多级别内联数据重复可以通过具有较少块或附加块的类似过程来实现。在一些示例中,可以通过不同次序来执行块。在一些其他示例中,可以去除各个块。在另外的示例中,各个块可以划分成附加的块,或者组合在一起成为较少的块。
图7示出了依照本文所描述的至少一些实施例布置的示例的计算机程序产品700的框图。在一些示例中,如图7所示,计算机程序产品700可以包括信号承载介质702,其还可以包括一条或多条机器可读指令704,当通过例如处理器执行时,机器可读指令可以提供本文所描述的功能。因此,例如,参考图5中的处理器504,块管理器523可以响应于通过介质702传送到处理器504的指令704而承担图7所示的一个或多个角色,从而实施与提供如本文所描述的多级别内联数据去重相关联的动作。根据本文所描述的一些实施例,那些指令中的一些指令可以包括例如:用于由待去重数据生成被取指纹内容的指令;将数据划分成块的指令,每个块的尺寸取决于对应的被取指纹内容的尺寸;将每个块划分成可变尺寸子块和固定尺寸子块;以及对固定尺寸子块去重。
在一些实现方式中,图7所描述的信号承载介质702可以包含计算机可读介质706,诸如但不限于硬盘驱动器、固态驱动器、压缩盘(CD)、数字多功能盘(DVD)、数字带、存储器等。在一些实现方式中,信号承载介质702可以包含可记录介质708,诸如但不限于存储器、读/写(R/W)CD、R/W DVD等。在一些实现方式中,信号承载介质702可以包含通信介质710,诸如但不限于数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。因此,例如,程序产品700可以通过RF信号承载介质传送到处理器704的一个或多个模块,其中信号承载介质702通过无线通信介质710(例如,符合IEEE 802.11标准的无线通信介质)来传送。
根据一些示例,用于提供多级别内联数据去重的方法可以包括如下中一个或多个:对待去重数据采指纹以生成被取指纹内容;将数据划分成多个可变尺寸块,其中每个可变尺寸块的尺寸取决于对应被取指纹内容的尺寸;将每个可变尺寸块划分成多个固定尺寸子块;以及对固定尺寸子块去重。
该方法还可以包括:采用基于Rabin指纹法的内容相关分块(CDC)算法,将数据划分成多个可变尺寸块。通过对数据应用滑动窗口且确定窗口的当前内容的指纹,并且如果被取指纹内容的最后N位的十进制等值等于预定阈值,则选择可变尺寸块的尺寸,否则将窗口滑动一个字节且重复基于滑动窗口的划分处理直到达到预定阈值或者达到可变尺寸块的预定最大尺寸,将数据划分成可变尺寸块。
该方法还可以包括:对可变尺寸块和固定尺寸子块采用加密散列函数,来生成被取指纹内容;以及存储被取指纹内容以标识块。加密散列函数可以是安全散列算法(SHA-1)函数。该方法还可以包括:在将可变尺寸块划分成固定尺寸子块时,计算固定尺寸子块的被取指纹内容,以及在二维单元阵列中存储固定尺寸子块的被取指纹内容。
该方法还可以包括:通过将额外的固定尺寸子块的被取指纹内容插入单元中而将子块指针存储在二维单元阵列和/或增大二维阵列的尺寸,其中固定尺寸子块的每个被取指纹内容是20字节SHA-1散列。每个单元可以包括原始指纹、重复指纹、预定数量位阵列、重复位、指向其指纹存储在原始指纹中的固定尺寸子块的块指针以及指向其指纹存储在重复指纹中的固定尺寸子块的块指针中的一个或多个。
该预定数量可以对应于二维阵列中的列数。原始指纹的块指针和重复指纹的块指针可以指向持久块库中的位置。预定数量位阵列中的每个位可以对应于二维单元阵列的一行中的列。在指纹插入过程中重复位可设定成1,使得指纹被散列成一列。该方法还可以包括:采用操作于指纹内容二维阵列上的一个或多个Bloom过滤器和子块指针来判定子块是否已经存储以及指向所存储的子块位置的指针。Bloom过滤器可被组织为Bloom过滤器的列过滤器阵列和行过滤器阵列,列过滤器阵列中的每个Bloom过滤器对应于二维单元阵列中的列,并且作为二维单元阵列相应列中的被取指纹内容的汇总,行过滤器阵列中的每个过滤器对应于二维单元阵列中的行,并且作为二维单元阵列中对应行中的被取指纹内容的汇总。
该方法还可以包括:在接收到固定尺寸子块的新的被取指纹内容时,扫描二维单元阵列,以及判定在二维单元阵列中是否存在新的被取指纹内容;以及如果在二维单元阵列中存在新的被取指纹内容,则丢弃新的被取指纹内容,否则将新的被取指纹内容添加到二维单元阵列中。该方法还可以包括:通过维护存储器内当前行来添加固定尺寸子块的新的被取指纹内容;添加固定尺寸子块的多个新的被取指纹内容直到当前行为满,而不是在每次插入操作都对盘存取;以及当当前行为满时,将整个当前行添加到磁盘上的二维单元阵列。
根据其他示例,配置成执行多级别内联数据去重的服务器可以包括:存储器,其配置成存储指令;以及处理器,其配置成与存储指令相结合来执行去重应用。处理器可配置成对待去重数据采指纹以生成被取指纹内容;将数据划分成多个可变尺寸块,其中每个可变尺寸块的尺寸取决于对应的被取指纹内容的尺寸;将每个可变尺寸块划分成多个固定尺寸子块;以及对固定尺寸子块去重。
采用基于Rabin指纹法的内容相关分块(CDC)算法,处理器可以将数据划分成多个可变尺寸块。通过对数据应用滑动窗口以及确定窗口的当前内容的指纹,如果被取指纹内容的最后N位的十进制等值等于预定阈值,则选择可变尺寸块的尺寸,否则将窗口滑动一个字节,以及重复基于滑动窗口的划分处理直到达到预定阈值或者达到可变尺寸块的预定最大尺寸,数据可被划分成可变尺寸块。
处理器还可以对可变尺寸块和固定尺寸子块采用加密散列函数来生成被取指纹内容;以及存储被取指纹内容以标识块,其中加密散列函数是安全散列算法(SHA-1)函数。处理器还可以计算固定尺寸子块的被取指纹内容以及在将可变尺寸块划分成固定尺寸子块时,将固定尺寸子块的被取指纹内容存储在二维单元阵列中。
通过将额外的固定尺寸子块的被取指纹内容插入单元中,处理器还可以将子块指针存储在二维单元阵列中以及增大二维阵列的尺寸,其中固定尺寸子块的每个被取指纹内容是20字节SHA-1散列。每个单元可以包括原始指纹、重复指纹、预定数量位阵列、重复位、指向其指纹存储在原始指纹中的固定尺寸子块的块指针以及指向其指纹存储在重复指纹中的固定尺寸子块的块指针中的一个或多个。
预定数量可以对应于二维阵列中的列数。原始指纹的块指针和重复指纹的块指针可指向持久块库中的位置。预定数量位阵列中的每个位可以对应于二维单元阵列的一行中的列。在指纹插入过程中重复位可设定成1,使得指纹被散列成一列。处理器还可以采用操作于指纹内容二维阵列上的一个或多个Bloom过滤器和子块指针来判定子块是否已经被存储以及指向被存储子块位置的指针。Bloom过滤器可被组织为Bloom过滤器的列过滤器阵列和行过滤器阵列,列过滤器阵列中的每个Bloom过滤器对应于二维单元阵列的列,并作为二维单元阵列中对应的列中的被取指纹内容的汇总,行过滤器阵列中的每个过滤器对应于二维单元阵列的行,并作为二维单元阵列中对应行中的被取指纹内容的汇总。
处理器还可以扫描二维单元阵列以及在接收到固定尺寸子块的新的被取指纹内容时判定二维单元阵列中是否存在新的被取指纹内容,以及如果在二维单元阵列中存在新的被取指纹内容,则丢弃新的被取指纹内容,否则将新的被取指纹内容添加到二维单元阵列中。通过维护存储器内当前行;添加固定尺寸子块的多个新的被取指纹内容直到当前行为满,而不是对每次插入操作都对磁盘进行存取;以及当当前行为满时,将整个当前行添加到磁盘上的二维单元阵列中。
根据其他的示例,计算机可读存储器设备上可以存储有用于指向多级别内联数据去重的指令。指令可以包括如下中的一个或多个:对待去重数据采指纹以生成被取指纹内容;将数据划分成多个可变尺寸块,其中每个可变尺寸块的尺寸取决于对应的被取指纹内容的尺寸;将每个可变尺寸块划分成多个固定尺寸子块;以及对固定尺寸子块去重。
指令还可以包括:采用基于Rabin指纹法的内容相关分块(CDC)算法,将数据划分成多个可变尺寸块。通过对数据应用滑动窗口以及确定窗口的当前内容的指纹,如果被取指纹内容的最后N位的十进制等值等于预定阈值,则选择可变尺寸块的尺寸,否则将窗口滑动一个字节且重复基于滑动窗口的划分处理,直到达到预定阈值,或者达到可变尺寸块的预定最大尺寸,数据可被划分成可变尺寸块。
指令还可以包括:对可变尺寸块和固定尺寸子块采用加密散列函数来生成被取指纹内容,以及存储指纹内容以标识块。加密散列函数可以是安全散列算法(SHA-1)函数。指令还可以包括:在将可变尺寸块划分成固定尺寸子块时,计算固定尺寸子块的被取指纹内容,以及将固定尺寸子块的被取指纹内容存储在二维单元阵列中。
指令还可以包括:通过将额外的固定尺寸子块的被取指纹内容插入单元中,将子块指针存储在二维单元阵列中和/或增大二维阵列的尺寸,其中固定尺寸子块的每个被取指纹内容是20字节SHA-1散列。每个单元可以包括原始指纹、重复指纹、预定数量位阵列、重复位、指向其指纹存储在原始指纹中的固定尺寸子块的块指针以及指向其指纹存储在重复指纹中的固定尺寸子块的块指针中的一个或多个。
预定数量可以对应于二维阵列中的列数。原始指纹的块指针和重复指纹的块指针可指向持久块库中的位置。预定数量位阵列中的每个位可以对应于二维单元阵列的一行中的一列。在指纹插入过程中重复位可设定成1,使得指纹被散列成一列。指令还可以包括:采用操作于指纹内容二维阵列上的一个或多个Bloom过滤器和子块指针来判定子块是否已经被存储以及指向被存储的子块位置的指针。Bloom过滤器可被组织为Bloom过滤器的列过滤器阵列和行过滤器阵列,列过滤器阵列中的每个Bloom过滤器对应于二维单元阵列中的列,并作为二维单元阵列中对应列中的被取指纹内容的汇总,行过滤器阵列中的每个过滤器对应于二维单元阵列中的行,并作为二维单元阵列中对应行中的被取指纹内容的汇总。
指令还可以包括:在接收到固定尺寸子块的新的被取指纹内容时,扫描二维单元阵列,以及判定在二维单元阵列中是否存在新的被取指纹内容;以及如果在二维单元阵列中存在新的被取指纹内容,则丢弃新的被取指纹内容;否则将新的被取指纹内容添加到二维单元阵列中。指令还可以包括:通过维护存储器内当前行来添加固定尺寸子块的新的被取指纹内容;添加固定尺寸子块的多个新的被取指纹内容直到当前行为满时,而不是对于每次插入操作都对磁盘进行存取;以及当当前行为满时,将整个当前行添加到磁盘上的二维单元阵列。
在系统方案的硬件实现和软件实现之间保留了极小的区别;硬件或软件的使用通常是(但并不总是,因为在一些背景下硬件和软件之间的选择会变得重要)表示成本相对于效率权衡的设计选择。存在各种可以实现本文所描述的过程和/或系统和/或其它技术的媒介物(例如,硬件、软件和/或固件),并且优选的媒介物将随着部署过程和/或系统和/或其它技术的背景而变化。例如,如果实施者判定速度和精度重要,则实施者可以选择主硬件和/或固件媒介物;如果灵活性重要,则实施者可以选择主软件实现;或者,另外可选地,实施者可以选择硬件、软件和/或固件的一些组合。
前面的详细说明已经通过框图、流程图和/或示例阐述了设备和/或过程的各个实施例。在这些框图、流程图和/或示例包含一项或多项功能和/或操作的程度上,本领域技术人员将理解的是可以通过各种各样的硬件、软件、固件或几乎其任意组合来单独地和/或统一地实现这些框图、流程图或示例内的每项功能和/或操作。在一个实施例中,本文所描述的主题的多个部分可经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它集成格式来实现。然而,本领域技术人员将离解的是,在本文公开的实施例的一些方案可以整体地或部分地等同地实现为集成电路、在一个或多个计算机上运行的一个或多个计算机程序(例如,实现为在一个或多个计算机系统上运行的一个或多个程序)、在一个或多个处理器上运行的一个或多个程序(例如,实现为在一个或多个微处理器上运行的一个或多个程序)、固件、或几乎任何组合,并且根据本公开的内容,设计电路和/或编写用于软件和/或固件的代码将在本领域技术人员的技能范围内。
本公开不受在本申请中所描述的特定实施例限制,这些特定实施例意在为各个方案的示例。本领域技术人员显而易见的是,能够进行各种改进和变型,而不偏离其精神和范围。根据前面的说明,除了本文列举的那些之外,在本公开范围内的功能上等同的方法和装置对于本领域技术人员而言将是显而易见的。旨在这些改进方案和变型例落在随附权利要求书的范围内。连同这些权利要求书所给予权利的等同方案的整个范围内,本公开仅受随附权利要求书限制。将理解的是,本公开不限于特定的方法、试剂、化合物组成或生物系统,当然这些可以变化。还应理解的是,本文所使用的术语仅是为了描述特定实施例的目的,而不意在限制。
另外,本领域技术人员将理解的是,本文所描述的主题的机制能够以各种形式分布为程序产品,并且本文所描述的主题的示例性实施例适用,无论实际上用于实施分布的特定类型的信号承载介质如何。信号承载介质的示例包括但不限于以下:可记录型介质,诸如软盘、硬盘驱动器、压缩盘(CD)、数字多功能盘(DVD)、数字带、计算机存储器等;以及传输型介质,诸如数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。
本领域技术人员将理解的是,在本领域内常见的是以本文阐述的方式来描述设备和/或过程,此后利用工程实践将这些所描述的设备和/或过程集成到数据处理系统中。也即,本文所描述的设备和/或过程的至少一部分可以通过合理量的实验集成到数据处理系统中。本领域技术人员将理解的是,典型的数据处理系统通常包括如下中的一种或多种:系统单元壳体、视频显示设备、诸如易失性和非易失性存储器的存储器、诸如微处理器和数字信号处理器的处理器、诸如操作系统的计算实体、驱动器、图形用户接口、和应用程序、诸如触摸板或触摸屏的一个或多个交互设备、和/或包括反馈环的控制系统。
典型的数据处理系统可利用任何适合的商业上提供的部件来实现,诸如在数据计算/通信和/或网络计算/通信系统中常见的部件。本文所描述的主题有时说明了包含在不同的其它部件内的不同部件或与不同的其它部件连接的不同部件。应理解的是,这些所描绘的体系结构仅是示例性的,并且实际上可以实施实现相同功能的许多其它体系结构。在概念意义上,实现相同功能的任何部件的布置有效地“关联”,使得实现期望功能。因此,在此处组合以实现特定功能的任何两个部件可视为彼此“关联”,使得实现期望功能,无论体系结构或中间部件如何。同样,任意两个如此关联的部件还可视为彼此“可操作地连接”、或“可操作地耦合”以实现期望的功能,并且能够如此关联的任意两个部件还可视为彼此“能够可操作地耦合”以实现期望功能。能够可操作耦合的具体示例包括但不限于能够物理上连接和/或物理交互的部件和/或能够无线交互和/或无线交互的部件和/或逻辑上交互和/或能够逻辑上交互的部件。
关于本文中基本上任何复数和/或单数术语的使用,本领域技术人员能够根据上下文和/或应用适当地从复数变换成单数和/或从单数变换成复数。为了清晰的目的,本文中明确地阐明了各单数/复数的置换。
本领域技术人员将理解,一般地,本文所使用的术语,尤其是随附权利要求(例如,随附权利要求的主体)中所使用的术语,通常意在为“开放式”术语(例如,术语“包括”应当解释为“包括但不限于”,术语“具有”应解释为“至少具有”,术语“包括”应解释为“包括但不限于”,等等)。本领域技术人员还理解,如果意图表达引导性权利要求记述项的具体数量,该意图将明确地记述在权利要求中,并且在不存在这种记述的情况下,不存在这样的意图。例如,为辅助理解,下面的随附权利要求可能包含了引导性短语“至少一个”和“一个或多个”的使用以引导权利要求记述项。然而,这种短语的使用不应解释为暗指不定冠词“一”或“一个”引导权利要求记述项将包含该所引导的权利要求记述项的任何特定权利要求局限于仅包含一个该记述项的实施例,即使当同一权利要求包括了引导性短语“一个或多个”或“至少一个”以及诸如不定冠词“一”或“一个”的(例如,“一”和/或“一个”应当解释为表示“至少一个”或“一个或多个”);这同样适用于对于用于引导权利要求记述项的定冠词的使用。另外,即使明确地记述了被引导的权利要求记述项的具体数量,本领域技术人员将理解到这些记述项应当解释为至少表示所记述的数量(例如,没有其它修饰语的裸记述“两个记述项”表示至少两个记述项或两个以上的记述项)。
此外,在使用类似于“A、B和C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B和C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的系统)。本领域技术人员将进一步理解,呈现两个以上可选项的几乎任何分离词和/或短语,无论是在说明书、权利要求或附图中,都应理解为设想包括一项、任一项或两项的可能性。例如,术语“A或B”将理解为包括“A”或“B”或“A和B”的可能性。
另外,在根据马库什组(Markush group)描述本公开的特征或方案的情况下,本领域技术人员将理解的是本公开也因此以马库什组的任何独立成员或成员的子组来描述。
本领域技术人员将理解的是,为了任何以及全部的目的,诸如在提供所撰写的说明书方面,本文所公开的全部范围也涵盖了任何和全部的可能的子范围及其子范围的组合。能够容易地认识到任何所列范围都充分地描述了同一范围并且使同一范围分解成至少均等的一半、三分之一、四分之一、五分之一、十分之一等等。作为非限制示例,本文所论述的每个范围能够容易地分解成下三分之一、中三分之一和上三分之一,等等。本领域技术人员还将理解的是,诸如“多达”、“至少”、“大于”、“小于”等所有的语言包括所记述的数量并且是指如上文所论述的随后能够分解成子范围的范围。最后,本领域技术人员将理解的是,范围包括每个独立的成员。因此,例如,具有1-3个单元的组是指具有1个、2个或3个单元的组。类似地,具有1-5个单元的组是指具有1个、2个、3个、4个、或5个单元的组,等等。
虽然本文公开了各个方案和实施例,但是其它的方案和实施例对于本领域技术人员而言将是显而易见的。因此,本文所公开的各个方案和实施例是为了示例的目的而不意在限制,真正的范围和精神是通过随附的权利要求表示的。

Claims (51)

1.一种用于提供多级别内联数据去重的方法,所述方法包括:
对待去重数据采指纹以生成被取指纹内容;
将所述数据划分成多个可变尺寸块,其中每个可变尺寸块的尺寸取决于对应的被取指纹内容的尺寸;
将每个可变尺寸块划分成多个固定尺寸子块;以及
将所述多个固定尺寸子块去重。
2.根据权利要求1所述的方法,还包括:
采用基于Rabin指纹法的内容相关分块算法将所述数据划分成所述多个可变尺寸块。
3.根据权利要求1所述的方法,还包括:
通过如下处理将所述数据划分成多个可变尺寸块:
对所述数据应用滑动窗口且确定所述窗口的当前内容的指纹;
如果所述被取指纹内容的最后N位的十进制等值等于预定阈值,则选择可变尺寸块的尺寸,否则
将所述窗口滑动一个字节且重复基于所述滑动窗口的划分处理直到达到预定阈值或者达到所述多个可变尺寸块的预定最大尺寸。
4.根据权利要求1所述的方法,还包括:
对所述多个可变尺寸块和所述多个固定尺寸子块采用加密散列函数,生成所述被取指纹内容;以及
存储所述被取指纹内容以标识所述块。
5.根据权利要求4所述的方法,其中所述加密散列函数是安全散列算法(SHA-1)函数。
6.根据权利要求4所述的方法,还包括:
在将所述多个可变尺寸块划分成所述多个固定尺寸子块时,计算所述多个固定尺寸子块的被取指纹内容,以及将所述多个固定尺寸子块的所述被取指纹内容存储在二维单元阵列中。
7.根据权利要求6所述的方法,还包括:
将子块指针存储在所述二维单元阵列中。
8.根据权利要求6所述的方法,还包括:
通过将额外的所述多个固定尺寸子块的被取指纹内容插入单元中来增大二维阵列的尺寸,其中所述多个固定尺寸子块的每个被取指纹内容是20字节SHA-1散列。
9.根据权利要求6所述的方法,其中每个单元包括原始指纹、重复指纹、预定数量位的阵列、重复位、指向其指纹存储在所述原始指纹中的固定尺寸子块的块指针、以及指向其指纹存储在所述重复指纹中的固定尺寸子块的块指针中的一项或多项。
10.根据权利要求9所述的方法,其中所述预定数量对应于所述二维阵列中的列数。
11.根据权利要求9所述的方法,其中所述原始指纹的所述块指针和所述重复指纹的所述块指针指向持久块仓库中的位置。
12.根据权利要求9所述的方法,其中所述预定数量位的阵列中的每个位对应于所述二维单元阵列的行中的列。
13.根据权利要求9所述的方法,其中在指纹插入过程中所述重复位被设置成1,使得所述指纹被散列成一列。
14.根据权利要求6所述的方法,还包括:
采用对所述二维指纹内容阵列进行操作的一个或多个Bloom过滤器和子块指针来判定子块是否已经被存储以及指向所述被存储子块的位置的指针。
15.根据权利要求14所述的方法,其中所述Bloom过滤器被组织为Bloom过滤器的列过滤器阵列和行过滤器阵列,所述列过滤器阵列中的每个Bloom过滤器对应于所述二维单元阵列的列,并作为所述二维单元阵列中对应列中的被取指纹内容的汇总,并且所述行过滤器阵列中的每个过滤器对应于所述二维单元阵列中的行,并作为所述二维单元阵列中对应行中的被取指纹内容的汇总。
16.根据权利要求6所述的方法,还包括:
在接收到固定尺寸子块的新的被取指纹内容时,扫描所述二维单元阵列且判定所述新的被取指纹内容是否存在于所述二维单元阵列中;以及
如果所述新的被取指纹内容存在于所述二维单元阵列中,则丢弃所述新的被取指纹内容,否则将所述新的被取指纹内容添加到所述二维单元阵列中。
17.根据权利要求16所述的方法,还包括:
通过如下处理来添加固定尺寸子块的新的被取指纹内容:
保持存储器内当前行;
添加固定尺寸子块的多个新的被取指纹内容直到所述当前行为满,而不是对于每次插入操作都对磁盘进行存取;以及
当所述当前行为满时,将整个所述当前行添加到所述磁盘上的所述二维单元阵列。
18.一种配置为执行多级别内联数据去重的服务器,所述服务器包括:
存储器,其配置成存储指令;以及
处理器,其配置成结合所述存储的指令来执行去重应用,其中所述处理器配置成:
对待去重数据采指纹以生成被取指纹内容;
将所述数据划分成多个可变尺寸块,其中每个可变尺寸块的尺寸取决于对应的被取指纹内容的尺寸;
将每个可变尺寸块划分成多个固定尺寸子块;以
对所述多个固定尺寸子块去重。
19.根据权利要求18所述的服务器,其中所述处理器进一步配置成:
采用基于Rabin指纹法的内容相关分块算法,将所述数据划分成所述多个可变尺寸块。
20.根据权利要求18所述的服务器,其中所述处理器进一步配置成:
通过如下处理将所述数据划分成多个可变尺寸块:
对所述数据应用滑动窗口且确定所述窗口的当前内容的指纹;
如果所述被取指纹内容的最后N位的十进制等值等于预定阈值,则选择所述可变尺寸块的尺寸,否则
将所述窗口滑动一字节且重复基于所述滑动窗口的划分处理,直到达到预定阈值或者达到所述多个可变尺寸块的预定最大尺寸。
21.根据权利要求18所述的服务器,其中所述处理器进一步配置成:
对所述多个可变尺寸块和所述多个固定尺寸子块采用加密散列函数,来生成所述被取指纹内容;以及
存储所述被取指纹内容以标识所述块。
22.根据权利要求21所述的服务器,其中所述加密散列函数是安全散列算法(SHA-1)函数。
23.根据权利要求21所述的服务器,其中所述处理器进一步配置成:
在将所述多个可变尺寸块划分成所述多个固定尺寸子块时,计算所述多个固定尺寸子块的被取指纹内容并且将所述多个固定尺寸子块的被取指纹内容存储在二维单元阵列中。
24.根据权利要求23所述的服务器,其中所述处理器进一步配置成:
将子块指针存储在所述二维单元阵列中。
25.根据权利要求23所述的服务器,其中所述处理器进一步配置成:
通过将额外的所述多个固定尺寸子块的被取指纹内容插入单元中来增大二维阵列的尺寸,其中所述多个固定尺寸子块的每个被取指纹内容是20字节SHA-1散列。
26.根据权利要求23所述的服务器,其中每个单元包括原始指纹、重复指纹、预定数量位的阵列、重复位、指向其指纹存储在所述原始指纹中的固定尺寸子块的块指针、以及指向其指纹存储在所述重复指纹中的固定尺寸子块的块指针中的一项或多项。
27.根据权利要求26所述的服务器,其中所述预定数量对应于二维阵列中的列数。
28.根据权利要求26所述的服务器,其中所述原始指纹的块指针和所述重复指纹的块指针指向持久块仓库中的位置。
29.根据权利要求26所述的服务器,其中所述预定数量位的阵列中的每个位对应于所述二维单元阵列的行中的列。
30.根据权利要求26所述的服务器,其中在指纹插入过程中所述重复位被设置成1,使得所述指纹被散列成一列。
31.根据权利要求23所述的服务器,其中所述处理器进一步配置成:
采用对所述二维指纹内容阵列进行操作的一个或多个Bloom过滤器和子块指针来判定子块是否已经被存储以及指向所述被存储子块的位置的指针。
32.根据权利要求31所述的服务器,其中所述Bloom过滤器被组织为Bloom过滤器的列过滤器阵列和行过滤器阵列,所述列过滤器阵列中的每个Bloom过滤器对应于所述二维单元阵列的列,并作为所述二维单元阵列中对应列的被取指纹内容的汇总,并且所述行过滤器阵列中的每个过滤器对应于所述二维单元阵列中的行,并且作为所述二维单元阵列中对应行中的被取指纹内容的汇总。
33.根据权利要求23所述的服务器,其中所述处理器进一步配置成:
在接收到固定尺寸子块的新的被取指纹内容时,扫描所述二维单元阵列且判定所述新的被取指纹内容是否存在于所述二维单元阵列中;以及
如果所述新的被取指纹内容存在于所述二维单元阵列中,则丢弃所述新的被取指纹内容,否则将所述新的被取指纹内容添加到所述二维单元阵列中。
34.根据权利要求33所述的服务器,其中所述处理器进一步配置成:
通过如下处理来添加固定尺寸子块的新的被取指纹内容:
保持存储器内当前行;
添加固定尺寸子块的多个新的被取指纹内容直到所述当前行为满,而不是对于每次插入操作都对磁盘进行存取;以及
当所述当前行为满时,将整个所述当前行添加到所述磁盘上的所述二维单元阵列。
35.一种计算机可读存储器设备,其中存储有用于执行多级别内联数据去重的指令,所述指令包括:
对待去重数据采指纹以生成被取指纹内容;
将所述数据划分成多个可变尺寸块,其中每个可变尺寸块的尺寸取决于对应的被取指纹内容的尺寸;
将每个可变尺寸块划分成多个固定尺寸子块;以及
对所述多个固定尺寸子块去重。
36.根据权利要求35所述的计算机可读存储器设备,其中所述指令还包括:
采用基于Rabin指纹法的内容相关分块算法将所述数据划分成所述多个可变尺寸块。
36.根据权利要求35所述的计算机可读存储器设备,其中所述指令还包括:
通过如下处理将所述数据划分成所述多个可变尺寸块:
对所述数据应用滑动窗口且确定所述窗口的当前内容的指纹;
如果所述被取指纹内容的最后N位的十进制等值等于预定阈值,则选择所述可变尺寸块的尺寸,否则
将所述窗口滑动一个字节且重复基于滑动窗口的划分处理直到达到预定阈值或者达到所述多个可变尺寸块的预定最大尺寸。
37.根据权利要求35所述的计算机可读存储器设备,其中所述指令还包括:
对所述多个可变尺寸块和所述多个固定尺寸子块采用加密散列函数,生成所述被取指纹内容;以及
存储所述被取指纹内容以标识所述块。
38.根据权利要求37所述的计算机可读存储器设备,其中所述加密散列函数是安全散列算法(SHA-1)函数。
39.根据权利要求37所述的计算机可读存储器设备,其中所述指令还包括:
在将所述多个可变尺寸块划分成所述多个固定尺寸子块时,计算所述多个固定尺寸子块的被取指纹内容,以及将所述多个固定尺寸子块的所述被取指纹内容存储在二维单元阵列中。
40.根据权利要求39所述的计算机可读存储器设备,其中所述指令还包括:
将子块指针存储在所述二维单元阵列中。
41.根据权利要求39所述的计算机可读存储器设备,其中所述指令还包括:
通过将额外的所述多个固定尺寸子块的被取指纹内容插入单元中来增大二维阵列的尺寸,其中所述多个固定尺寸子块的每个被取指纹内容是20字节SHA-1散列。
42.根据权利要求39所述的计算机可读存储器设备,其中每个单元包括原始指纹、重复指纹、预定数量位阵列、重复位、指向其指纹存储在所述原始指纹中的固定尺寸子块的块指针、以及指向其指纹存储在所述重复指纹中的固定尺寸子块的块指针中的一项或多项。
43.根据权利要求42所述的计算机可读存储器设备,其中所述预定数量对应于所述二维阵列中的列数。
44.根据权利要求42所述的计算机可读存储器设备,其中所述原始指纹的所述块指针和所述重复指纹的所述块指针指向持久块仓库中的位置。
45.根据权利要求42所述的计算机可读存储器设备,其中所述预定数量位的阵列中的每个位对应于所述二维单元阵列的行中的列。
46.根据权利要求42所述的计算机可读存储器设备,其中在指纹插入过程中所述重复位被设置成1,使得所述指纹被散列成一列。
47.根据权利要求42所述的计算机可读存储器设备,其中所述指令还包括:
采用对所述二维指纹内容阵列进行操作的一个或多个Bloom过滤器和子块指针来判定子块是否已经被存储以及指向所述被存储子块的位置的指针。
48.根据权利要求47所述的计算机可读存储器设备,其中所述Bloom过滤器被组织为Bloom过滤器的列过滤器阵列和行过滤器阵列,所述列过滤器阵列中的每个Bloom过滤器对应于所述二维单元阵列的列,并作为所述二维单元阵列中对应列中的被取指纹内容的汇总,并且所述行过滤器阵列中的每个过滤器对应于所述二维单元阵列中的行,并且作为所述二维单元阵列中对应行中的被取指纹内容的汇总。
49.根据权利要求42所述的计算机可读存储器设备,其中所述指令还包括:
在接收到固定尺寸子块的新的被取指纹内容时,扫描所述二维单元阵列且判定所述新的被取指纹内容是否存在于所述二维单元阵列中;以及
如果所述新的被取指纹内容存在于所述二维单元阵列中,则丢弃所述新的被取指纹内容,否则将所述新的被取指纹内容添加到所述二维单元阵列中。
50.根据权利要求49所述的计算机可读存储器设备,其中所述指令还包括:
通过如下处理来添加固定尺寸子块的新的被取指纹内容:
保持存储器内当前行;
添加固定尺寸子块的多个新的被取指纹内容直到所述当前行为满,而不是对于每次插入操作都对磁盘进行存取;以及
当所述当前行为满时,将整个所述当前行添加到所述磁盘上的所述二维单元阵列。
CN201280076874.4A 2012-09-05 2012-10-18 多级别内联数据去重 Pending CN104813310A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN1022/KOL/2012 2012-09-05
PCT/IB2012/055688 WO2014037767A1 (en) 2012-09-05 2012-10-18 Multi-level inline data deduplication
IN1022KO2012 IN2012KO01022A (zh) 2012-09-05 2012-10-18

Publications (1)

Publication Number Publication Date
CN104813310A true CN104813310A (zh) 2015-07-29

Family

ID=50236597

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280076874.4A Pending CN104813310A (zh) 2012-09-05 2012-10-18 多级别内联数据去重

Country Status (4)

Country Link
US (1) US9311323B2 (zh)
CN (1) CN104813310A (zh)
IN (1) IN2012KO01022A (zh)
WO (1) WO2014037767A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808169A (zh) * 2016-03-14 2016-07-27 联想(北京)有限公司 用于数据去重的方法、装置和系统
CN109145285A (zh) * 2017-06-19 2019-01-04 通用汽车环球科技运作有限责任公司 短语提取文本分析方法和系统
US10235396B2 (en) 2016-08-29 2019-03-19 International Business Machines Corporation Workload optimized data deduplication using ghost fingerprints

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9424285B1 (en) * 2012-12-12 2016-08-23 Netapp, Inc. Content-based sampling for deduplication estimation
US9465808B1 (en) * 2012-12-15 2016-10-11 Veritas Technologies Llc Deduplication featuring variable-size duplicate data detection and fixed-size data segment sharing
KR101912727B1 (ko) * 2014-02-14 2018-10-29 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 흐름 분할 포인트를 검색하기 위한 서버 기반 방법, 및 서버
US9449012B2 (en) * 2014-05-30 2016-09-20 Apple Inc. Cloud library de-duplication
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置
GB2542619A (en) * 2015-09-28 2017-03-29 Fujitsu Ltd A similarity module, a local computer, a server of a data hosting service and associated methods
US10997119B2 (en) * 2015-10-23 2021-05-04 Nutanix, Inc. Reduced size extent identification
JP6841024B2 (ja) * 2016-12-09 2021-03-10 富士通株式会社 データ処理装置,データ処理プログラムおよびデータ処理方法
US10621144B2 (en) 2017-03-23 2020-04-14 International Business Machines Corporation Parallel deduplication using automatic chunk sizing
US10747729B2 (en) 2017-09-01 2020-08-18 Microsoft Technology Licensing, Llc Device specific chunked hash size tuning
US10372681B2 (en) 2017-09-12 2019-08-06 International Business Machines Corporation Tape drive memory deduplication
US10289335B2 (en) * 2017-09-12 2019-05-14 International Business Machines Corporation Tape drive library integrated memory deduplication
US10678778B1 (en) * 2017-10-19 2020-06-09 EMC IP Holding Company LLC Date deduplication acceleration
CN108427538B (zh) * 2018-03-15 2021-06-04 深信服科技股份有限公司 全闪存阵列的存储数据压缩方法、装置、及可读存储介质
US11079954B2 (en) * 2018-08-21 2021-08-03 Samsung Electronics Co., Ltd. Embedded reference counter and special data pattern auto-detect
US10248646B1 (en) 2018-08-22 2019-04-02 Cognigo Research Ltd. Token matching in large document corpora
CN111291770B (zh) * 2018-12-06 2023-07-25 华为技术有限公司 一种参数配置方法及装置
JP7295422B2 (ja) * 2019-09-10 2023-06-21 富士通株式会社 情報処理装置および情報処理プログラム
US10938961B1 (en) 2019-12-18 2021-03-02 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation
US11119995B2 (en) 2019-12-18 2021-09-14 Ndata, Inc. Systems and methods for sketch computation
WO2022135658A1 (en) * 2020-12-21 2022-06-30 Huawei Technologies Co., Ltd. Method and system of storing data to data storage for variable size deduplication
US20230221864A1 (en) * 2022-01-10 2023-07-13 Vmware, Inc. Efficient inline block-level deduplication using a bloom filter and a small in-memory deduplication hash table

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100174881A1 (en) * 2009-01-06 2010-07-08 International Business Machines Corporation Optimized simultaneous storing of data into deduplicated and non-deduplicated storage pools
CN102082575A (zh) * 2010-12-14 2011-06-01 江苏格物信息科技有限公司 基于预分块及滑动窗口的重复数据消除方法
CN102253820A (zh) * 2011-06-16 2011-11-23 华中科技大学 一种流式重复数据检测方法
US20110307447A1 (en) * 2010-06-09 2011-12-15 Brocade Communications Systems, Inc. Inline Wire Speed Deduplication System
WO2012029258A1 (en) * 2010-08-31 2012-03-08 Nec Corporation Storage system
WO2012112121A1 (en) * 2011-02-17 2012-08-23 Jitcomm Networks Pte Ltd Parallel data partitioning

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6829355B2 (en) * 2001-03-05 2004-12-07 The United States Of America As Represented By The National Security Agency Device for and method of one-way cryptographic hashing
US7836387B1 (en) 2005-04-29 2010-11-16 Oracle America, Inc. System and method for protecting data across protection domain boundaries
US8527482B2 (en) * 2008-06-06 2013-09-03 Chrysalis Storage, Llc Method for reducing redundancy between two or more datasets
US8321648B2 (en) 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
US20120053970A1 (en) * 2010-08-25 2012-03-01 International Business Machines Corporation Systems and methods for dynamic composition of business processes
US20120089579A1 (en) * 2010-10-08 2012-04-12 Sandeep Ranade Compression pipeline for storing data in a storage cloud

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100174881A1 (en) * 2009-01-06 2010-07-08 International Business Machines Corporation Optimized simultaneous storing of data into deduplicated and non-deduplicated storage pools
US20110307447A1 (en) * 2010-06-09 2011-12-15 Brocade Communications Systems, Inc. Inline Wire Speed Deduplication System
WO2012029258A1 (en) * 2010-08-31 2012-03-08 Nec Corporation Storage system
CN102082575A (zh) * 2010-12-14 2011-06-01 江苏格物信息科技有限公司 基于预分块及滑动窗口的重复数据消除方法
WO2012112121A1 (en) * 2011-02-17 2012-08-23 Jitcomm Networks Pte Ltd Parallel data partitioning
CN102253820A (zh) * 2011-06-16 2011-11-23 华中科技大学 一种流式重复数据检测方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808169A (zh) * 2016-03-14 2016-07-27 联想(北京)有限公司 用于数据去重的方法、装置和系统
US10235396B2 (en) 2016-08-29 2019-03-19 International Business Machines Corporation Workload optimized data deduplication using ghost fingerprints
CN109145285A (zh) * 2017-06-19 2019-01-04 通用汽车环球科技运作有限责任公司 短语提取文本分析方法和系统
CN109145285B (zh) * 2017-06-19 2023-01-31 通用汽车环球科技运作有限责任公司 短语提取文本分析方法和系统

Also Published As

Publication number Publication date
IN2012KO01022A (zh) 2015-06-05
US20140114934A1 (en) 2014-04-24
WO2014037767A1 (en) 2014-03-13
US9311323B2 (en) 2016-04-12

Similar Documents

Publication Publication Date Title
CN104813310A (zh) 多级别内联数据去重
EP2608067B1 (en) Accelerated query operators for high-speed, in-memory online analyctical processing queries and operations
US10747737B2 (en) Altering data type of a column in a database
US9658826B2 (en) Sorting multiple records of data using ranges of key values
Ochoa et al. QualComp: a new lossy compressor for quality scores based on rate distortion theory
US11403017B2 (en) Data compression method, electronic device and computer program product
US8489555B2 (en) Method of managing storage and retrieval of data objects
AU2015347304B2 (en) Testing insecure computing environments using random data sets generated from characterizations of real data sets
US8898351B2 (en) Dynamic compression of an I/O data block
WO2012076379A2 (en) Data structure for tiling and packetizing a sparse matrix
WO2012076377A2 (en) Optimizing output vector data generation using a formatted matrix data structure
CN106874348A (zh) 文件存储和索引方法、装置及读取文件的方法
CN108027713A (zh) 用于固态驱动器控制器的重复数据删除
WO2022105497A1 (zh) 文本筛选方法、装置、设备及存储介质
US20220083246A1 (en) Variable Length Deduplication of Stored Data
Shibuya et al. Space-efficient representation of genomic k-mer count tables
US8452900B2 (en) Dynamic compression of an I/O data block
Habib et al. Modified HuffBit compress algorithm–an application of R
Geravand et al. A novel adjustable matrix bloom filter-based copy detection system for digital libraries
Goloboff Oblong, a program to analyse phylogenomic data sets with millions of characters, requiring negligible amounts of RAM
Guerra et al. Tackling the challenges of FASTQ referential compression
Zhang et al. A program plagiarism detection model based on information distance and clustering
CN111465929A (zh) 用于内容不可知文件标引的方法及系统
WO2023049627A1 (en) Dataset optimization framework
Ribizel et al. Parallel selection on GPUs

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned
AD01 Patent right deemed abandoned

Effective date of abandoning: 20190521