CN113885785B - 一种数据去重方法及装置 - Google Patents
一种数据去重方法及装置 Download PDFInfo
- Publication number
- CN113885785B CN113885785B CN202110661793.1A CN202110661793A CN113885785B CN 113885785 B CN113885785 B CN 113885785B CN 202110661793 A CN202110661793 A CN 202110661793A CN 113885785 B CN113885785 B CN 113885785B
- Authority
- CN
- China
- Prior art keywords
- data
- value
- data block
- target
- bit
- 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.)
- Active
Links
Images
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
- G06F3/0641—De-duplication techniques
-
- 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
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)
Abstract
本申请公开一种数据去重方法及装置,该数据去重方法包括:获取待存储到目标存储空间中的第一数据;确定该第一数据与目标特征值是否相同,该目标特征值为标号对应关系中记录的一个或多个特征值中的任意一个特征值;该一个或多个特征值已存储到数据块中;标号对应关系中包括特征值与特征标号之间的关联关系;在确定第一数据与目标特征值相同的情况下,不将该第一数据存储到目标存储空间的数据块中,在第一地址项中记录目标特征标号;该目标特征标号为标号对应关系中与目标特征值对应的特征标号;第一地址项中包括第一标记位,第一标记位取值为第一数值,第一数值用于指示第一数据为特征值,用于在提升存储空间利用率的同时减少性能损耗。
Description
技术领域
本申请涉及计算机存储领域,尤其涉及一种数据去重方法及装置。
背景技术
随着科技的发展,电子产品使用的场景越来越丰富,需要存储的数据越来越多,用户对于存储空间的需求也越来越大,数据压缩技术应运而生。
目前采用压缩算法减少实际数据存储,例如,当连续同样的1或者0的个数超过5个,则将其转化成XX1或者XX0的形式,使得数据占用更少的存储空间。然而,这种压缩方法,在将数据写入数据块的过程中需要执行压缩操作,在读数据的过程中的需要逆向解压操作,而压缩操作和解压操作都是使用cpu频率比较高的操作,导致cpu使用率高,从而给设备带来一定的性能损耗,例如设备响应速度变慢等。
因此,如何提供一种数据去重方法,使得提升存储空间利用率的同时减少性能损耗,成为了技术领域内重要的研究课题。
发明内容
本申请提供一种数据去重方法及装置,用于在提升存储空间利用率的同时减少性能损耗。
第一方面,本申请实施例提供一种数据去重方法,包括:获取待存储到目标存储空间中的第一数据;确定所述第一数据与目标特征值是否相同,所述目标特征值为标号对应关系中记录的一个或多个特征值中的任意一个特征值;所述一个或多个特征值已存储到数据块中;所述标号对应关系中包括特征值与特征标号之间的关联关系;在确定所述第一数据与所述目标特征值相同的情况下,不将所述第一数据存储到所述目标存储空间的数据块中,在第一地址项中记录目标特征标号;所述第一地址项为用于记录存储所述第一数据的数据块的地址信息的地址项;所述目标特征标号为所述标号对应关系中与所述目标特征值对应的特征标号;所述第一地址项中包括第一标记位,所述第一标记位取值为第一数值,所述第一数值用于指示所述第一数据为特征值。
在本申请实施例中,特征值可以是一些数据内容具备一定规律性的,或者数据内容具备一些特点的,或者一些自定义的数据。示例性的,该特征值可以为连续重复出现某个数据的特征串数据,例如全0串数据、全1串数据、全a串数据、连续重复出现01串的数据等。该特征值也可以是某个领域固定的特征值(例如图片的RGB取值等)。或者该特征值也可以是一些自定义的数据,例如某个应用程序中提供的交流常用语等。
可理解的,该标号对应关系中记录的一个或多个特征值可以为已存储到该目标存储空间中的数据,也可以为存储到其他存储空间中的数据,本申请实施例对此不做限定。
可理解的,在保证该第一标记位不会用于记录数据块的地址信息的情况下,可以自定义设计该第一标记位为该地址项中的哪些二进制位。示例性的,该第一地址项的大小为4字节(32个二进制位),目标存储空间的数据块容量大小为H,目标存储空间的总容量大小为2i*H(i小于或等于31),则最多只需使用该第一地址项中的第0位至第i-1位二进制位记录该目标存储空间中的数据块的地址信息,而该第一地址项中的第i位二进制位至第31位二进制位空闲不用(也即不会用于记录数据块的地址信息)。则该第一标记位可以为该第i位二进制位至第31位二进制位(也即该第一地址项中的高32-i位二进制位)中的全部或部分二进制位。该第一地址项中的高32-i位二进制位取值为第一数值指示该第一数据为特征值。例如该第一地址项中的高32-i位二进制位中的全部或部分二进制位取值为1,指示该第一数据为特征值,以区分该第一地址项中记录的是特征标号,而不是记录的是数据块的地址信息。
在本申请实施例中,记该第一数据的所属文件为第一文件,则该第一文件可以为一份文档、一张图片、一段音频、一段视频或一段音视频,对应的,该第一数据可以为一份文档中的部分文本内容,或者,该第一数据为一段视频中的部分图像帧等。
可理解的,该第一文件可以为内存中的任一文件。示例性的,该第一文件为内存中的文件A、文件B或文件C;且该文件A、文件B与文件C可以为同一个文件系统的文件,也可以为不同文件系统的文件。示例性的,该第一文件为内存中的文件A,该文件A的所属文件系统为EXT4;示例性的,该第一文件为内存中的文件B,该文件B的所属文件系统为F2FS。
在本申请实施例中,该第一数据为第一文件中未被存储到磁盘中相应的数据块的数据,或者,该第一数据为第一文件中的未被记录为特征值的数据。
在本申请实施例中,该目标存储空间可以为采用数据块存储数据的存储介质的存储分区,具体的,该采用数据块存储数据的存储介质可以为磁盘或固态硬盘等。
在本申请实施例中,采用该第一地址项中的该第一标记位取值为该第一数值指示该第一数据为特征值,也即指示该第一地址项中记录的是特征标号,而不是记录的是数据块的地址信息。
实施第一方面提供的方法,在确定第一数据为目标特征值的情况下,在该第一地址项记录该目标特征标号,从而采用该第一地址项记录该第一数据为该目标特征值,不需再消耗数据块容量存储该第一数据。而在标号对应关系中记录存储该目标特征值与目标特征标号的关联关系,最多只需两个数据块的容量。在该第一数据为该目标特征值时,且多处连续重复出现时,可大大减少压缩或解压缩该第一数据所带来的性能损耗,避免重复存储该第一数据到数据块中所消耗的存储空间,以及,减少判断该第一数据是否与已存储到目标存储空间中的数据块的数据内容是否相同带来的计算量和性能损耗,提升存储空间利用率的同时减少了性能损耗。
可选的,在一些实施例中,在确定该第一数据为该目标特征值的情况下,可以不再将该第一数据存储到目标磁盘分区的数据块中;该目标磁盘分区为与该第一文件所属文件系统对应的磁盘分区。可选的,在另外一些实施例中,在确定该第一数据为该目标特征值的情况下,也可以将该第一数据存储到目标磁盘分区的数据块中。具体是否将该第一数据存储到数据块中,本申请实施例不做限定。
示例性的,在不影响设备的cpu占用率,将该第一数据存储到数据块中更便于存取、修改或删除等数据操作时,也可以选择将该第一数据存储到数据块中。具体的,在该第一地址项的第一标记位中记录该目标特征标号,在该第一地址项中除第一标记位之外的其他二进制位中记录存储该第一数据的数据块的地址信息。
可理解的,在该第一数据为该目标特征值时,在该第一地址项的第一标记位中记录目标特征标号,该目标特征标号也可以用于标记出现该目标特征值的位置,或者标记出该第一数据为该目标特征值,以做其他数据处理,例如做数据筛选处理等,本申请实施例对此不做限定。
在一种可能的实施方式中,所述第一地址项包括W位二进制位,所述W为正整数;所述第一标记位为所述W位二进制位中最高的一位二进制位;所述在第一地址项中记录目标特征标号包括:在所述第一地址项中除所述第一标记位外的其他W-1位二进制位中记录所述目标特征标号;所述目标特征标号指示所述W-1位二进制位中的全部或部分二进制位的取值;更新所述第一标记位为所述第一数值。
可理解的,只需保证该W位二进制位中的最高一位二进制位不会用于记录数据块的地址信息,该最高一位二进制位即可作为该第一标记位,以便于区分该第一地址项中除该最高一位二进制之外的其他二进制位中记录的是该目标特征标号,还是记录的是存储该第一数据的数据块的地址信息。由此可见,记目标存储空间中的数据块的容量为H,地址项中记录的数据块的地址信息为数据块在数据块表(该数据块表中包括目标数据块的地址信息与该目标数据块存储的数据内容的关联关系)中的偏移量,则本申请实施例提供的方法对于容量大小小于或等于2W-1*H的目标存储空间都适用。
在本申请实施例中,采用该W位二进制位中的最高一位二进制位作为该第一标记位,该第一标记位取值为第一数值,则指示该第一数据为特征值。可选的,该第一标记位取值为1(也即第一数值为该第一标记位取值为1的数值)指示该第一数据为特征值;或者,该第一标记位取值为0指示该第一数据为特征值。
可理解的,在需要通过该第一地址项记录的信息查找该第一数据的数据内容时,先确定该第一标记位是否取值为该第一数值,若是则表示该第一地址项中除该最高一位二进制之外的其他二进制位中记录的是目标特征标号,则根据该目标特征标号在该标号对应关系中查找与该目标特征标号对应的目标特征值,该第一数据的数据内容即为该目标特征值。若该第一标记位是否取值不为该第一数值,则表示该第一地址项中除该最高一位二进制之外的其他二进制位中记录的不是特征标号,而是存储该第一数据的数据块的地址信息,则根据该数据块的地址信息在数据块表中查找与该数据块的地址信息对应的目标数据块的数据内容,即为该第一数据的数据内容。
可理解的,一般地址项的大小为4字节(32位二进制位),若采用该32位二进制中除了最高位二进制位之外的31位二进制位记录目标特征标号,则可记录的目标特征值的数量(231)是相当庞大的,实际情况下,目标特征值的数量很可能没有这么多。在目标特征值的数量小于230的情况下,则只需采用该31位二进制位中的部分二进制位记录目标特征标号,相应的该目标特征标号指示该31位二进制位中的部分二进制位的取值。
可选的,该目标特征标号的二进制位的位数与该第一地址项中的该W-1位二进制位的位数一致,或该目标特征标号的二进制位的位数少于该第一地址项中的该W-1位二进制位的位数。也即记该目标特征标号为d位二进制位的取值的组合,该d小于或等于W-1。
可选的,在该d等于W-1的情况下,该目标特征标号指示该W-1位二进制位中的全部二进制位的取值。例如该目标特征标号中的d位二进制取值全为1,则该W-1位二进制位中的全部二进制也均取值为1;该目标特征标号中的d位二进制中最低一位二进制位取值为1,其他二进制位均取值为0,则该W-1位二进制位中的最低一位二进制位取值为1,其他二进制位均取值为0。
可选的,在该d小于W-1的情况下,例如d=W-5(W>5)的情况下,该目标特征标号指示该W-1位二进制位中的部分二进制位的取值,该部分二进制位可以为该W-1位二进制位中的任意W-5位二进制位。例如,该目标特征标号指示该W-1位二进制位中的低W-5位二进制位的取值。例如,该目标特征标号指示该W-1位二进制位中的高W-5位二进制位的取值。例如,该目标特征标号指示该W-1位二进制位中的高W-8位二进制位和低3位二进制位的取值。
在本申请实施例中,采用除该W位二进制位中的最高一位二进制位之外的其他W-1位二进制位记录该目标特征标号,最多可以记录的目标特征标号的数量为2W-1,也即最多可以记录2W-1个目标特征值。
在本申请实施例中,可使用的目标特征值的数量较大,在目标特征值所能囊括的数据量较大,且文件中出现特征值的概率也大的情况下,可以大大提高存储空间利用率,减少性能损耗。例如,目标特征值的数量为100,文件中出现了100个不同的该目标特征值,且每个该目标特征值都分别在10处重复出现了5次(总共重复出现50次),在不进行数据去重的情况下,需要占用5000个数据块存储该100个不同的目标特征值。在采用压缩算法做数据去重的情况下,需要占用1000个数据块存储该100个不同的目标特征值,同时压缩和解压缩数据带来较大的性能损耗。在采用相同数据内容共用同一个数据块的方法进行数据去重的情况下,需要采用100个数据块存储该目标特征值,同时判断两数据内容是否相同产生了较大的计算量和性能损耗。而采用本申请实施例提供的方法,只需在标号对应关系中记录该100个目标特征值,最多消耗200个数据块的存储容量,大大提高存储空间利用率,减少性能损耗。
在一种可能的实施方式中,所述第一地址项包括W位二进制位,所述W为正整数;所述第一标记位为所述W位二进制位中的高P位二进制位,所述P为小于所述W的正整数;所述在第一地址项中记录目标特征标号包括:在所述第一标记位中记录所述目标特征标号,将所述目标特征标号作为所述第一数值;所述目标特征标号指示所述第一标记位中的全部或部分二进制位的取值。
可理解的,第一标记位为所述W位二进制位中的高P位二进制位,该高P位二进制位为该第一地址项中不会用于记录数据块的地址信息的二进制位。在该第一标记位取值为目标特征标号时,指示该第一数据为特征值,也即指示该第一数据未被存储到数据块中,该第一地址项中未记录存储该第一数据的数据块的地址信息,而是记录了该目标特征标号。
可理解的,至少需保证该高P位二进制位包括1位二进制位(也即至少保证可以记录一个目标特征值)。记数据块容量大小为H,则本申请实施例提供的方法对于容量大小小于或等于2W-1*H的目标存储空间都适用。
在本申请实施例中,采用该P位二进制位记录该目标特征标号,可以记录的目标特征标号的数量为2P,也即最多可以记录2P个目标特征值。
在本申请实施例中,采用高P位二进制位(该第一地址项中不会用于记录数据块的地址信息的二进制位)记录目标特征标号的同时指示该第一数据为特征值,将记录目标特征标号的二进制位与记录数据块的地址信息的二进制位划分开。避免相同二进制位所记录的信息的涵义不同,而出现的概念混淆问题。可以有效避免出现在只采用最高一位二进制位记录数据为特征值时,若出现某个第一数据为特征值但又忘记将第一地址项中的该最高一位二进制位更新为第一数值,造成后续查找第一数据的数据内容出现执行错误。
在一种可能的实施方式中,所述方法还包括:在确定所述第一数据不为所述目标特征值的情况下,为所述第一数据分配第一数据块,将所述第一数据存储到所述第一数据块中,在所述第一地址项中记录所述第一数据块的地址信息,以及将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值。
可理解的,在采用该第一地址项中的W位二进制位中的最高一位二进制位作为该第一标记位的情况下,在确定该第一数据不为该目标特征值的情况下,将该最高一位二进制位的取值更新为该第二数值,以指示该第一数据不为特征值。示例性的,若采用该最高一位二进制位取值为1(第一数值)指示该第一数据为特征值,采用该最高一位二进制位取值为0(第二数值)指示该第一数据不为特征值,则在确定该第一数据不为该目标特征值的情况下,将该最高一位二进制位取值更新为0。
可理解的,在采用该第一地址项中的W位二进制位中的高P位二进制位作为该第一标记位的情况下,在确定该第一数据不为该目标特征值的情况下,将该高P位二进制位的取值更新为该第二数值,以指示该第一数据不为特征值。示例性的,若采用该高P位二进制位均取值为0(第二数值)指示该第一数据不为特征值,则在确定该第一数据不为该目标特征值的情况下,将该最高一位二进制位取值均更新为0。
可理解的,在确定所述第一数据不为所述目标特征值的情况下,也可以通过其他数据去重方法对该第一数据做数据去重,例如可以通过压缩算法对该第一数据做压缩去重等,本文对此不做限定。
在一种可能的实施方式中,所述方法还包括:在确定所述第一数据不为所述目标特征值的情况下,确定所述第一数据的数据内容与第二数据块的数据内容是否相同,所述第二数据块为所述目标存储空间中存储的M个数据块中的任意一个数据块,所述M为正整数;在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中。
可理解的,在采用该第一地址项中的W位二进制位中的最高一位二进制位作为该第一标记位的情况下,在确定该第一数据不为该目标特征值且该第一数据的数据内容与该第二数据块的数据内容一致的情况下,将该最高一位二进制位的取值更新为该第二数值,以指示该第一数据不为特征值。示例性的,若采用该最高一位二进制位取值为1(第一数值)指示该第一数据为特征值,采用该最高一位二进制位取值为0(第二数值)指示该第一数据不为特征值,则在确定该第一数据不为该目标特征值且该第一数据的数据内容与该第二数据块的数据内容一致的情况下,将该最高一位二进制位取值更新为0。
可理解的,在采用该第一地址项中的W位二进制位中的高P位二进制位作为该第一标记位的情况下,在确定该第一数据不为该目标特征值且该第一数据的数据内容与该第二数据块的数据内容一致的情况下,将该高P位二进制位的取值更新为该第二数值,以指示该第一数据不为特征值。示例性的,若采用该高P位二进制位均取值为0(第二数值)指示该第一数据不为特征值,则在确定该第一数据不为该目标特征值且该第一数据的数据内容与该第二数据块的数据内容一致的情况下,将该最高一位二进制位取值均更新为0。
在本申请实施例中,在第一数据不为该目标特征值时,将该第一地址项中的该第一标记位更新为第二数值,以指示该第一数据不是特征值。使得在根据该第一地址项查找该第一数据的数据内容的情况下,若该第一标记位指示该第一数据不为特征值,则该第一地址项记录的是数据块的地址信息,根据该数据块的地址信息查找该第一数据的数据内容。
在一种可能的实施方式中,所述确定所述第一数据的数据内容与第二数据块的数据内容是否相同包括:计算所述第一数据的数据内容的总和校验码;在确定所述第一数据的数据内容的总和校验码与所述M个数据块的数据内容的总和校验码都不相同的情况下,确定所述第一数据的数据内容与所述第二数据块的数据内容不相同,并为所述第一数据分配第一数据块,将所述第一数据存储到所述第一数据块中;所述在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中,包括:在确定所述第一数据的数据内容的总和校验码与所述第二数据块的数据内容的总和校验码相同的情况下,确定所述第一数据的数据内容与所述第二数据块的数据内容是否相同;在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中。
可理解的,该第二数据块可以为该M个数据块中的任一数据块。
在本申请实施例中,若该第一数据的总和校验码(checksum)与该M个数据块的总和校验码都不相同,则表明该第一数据的数据内容与该M个数据块的数据内容一定不相同,此时便不再进行第一数据和该M个数据块的数据内容比较,减少了当第一数据的数据内容和第二数据块的数据内容一定不同的情况下的数据内容比较所产生的计算量和功耗。在第二数据块的总和校验码与该第一数据的总和校验码相同,也即该第一数据的数据内容和第二数据块的数据内容可能相同的情况下,再进一步确认第一数据的数据内容与第二数据块的数据内容是否相同。若确认第一数据的数据内容与该第二数据块的数据内容一致,则让该第一数据与该第二数据块共用同一个数据块的地址信息,不需为该第一数据分配新的数据块,使得提升存储空间利用率的同时减少了性能损耗。
在一种可能的实施方式中,在确定所述M个数据块中的N个第二数据块的数据内容的总和校验码与所述第一数据的数据内容的总和校验码相同,且所述N个第二数据块的第一被引用次数都大于或等于第一阈值的情况下,为所述第一数据分配第一数据块,并将所述第一数据存储到所述第一数据块中;所述N为小于或等于M的整数,所述第一被引用次数为重复计数表中记录的所述第二数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系。
在一种可能的实施方式中,所述在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中,包括:在确定所述第一数据的数据内容与所述第二数据块的数据内容相同,且所述第二数据块的第一被引用次数小于第一阈值的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中;以及,将所述第一被引用次数加1;所述第一被引用次数为重复计数表中记录的所述第二数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系。
可选的,确定该第一数据的数据内容的总和校验码与该M个数据块中的第二数据块的数据内容的总和校验码是否相同,与确定该第一被引用次数是否小于第一阈值,同时执行或先后执行,先后顺序不限。示例性的,在确定该第一数据的总和校验码与所述M个数据块中的该第二数据块的总和校验码相同后,再确定该第一被引用次数是否小于第一阈值。或者,在确定该第一被引用次数小于第一阈值后,再确定该第一数据的数据内容的总和校验码与所述M个数据块中的该第二数据块的数据内容的总和校验码是否相同。
可选的,确定该第一数据的数据内容与该第二数据块的数据内容是否相同,与确定该第一被引用次数是否小于第一阈值,同时执行或先后执行,先后顺序不限。示例性的,在确定该第一数据的数据内容与该第二数据块的数据内容相同后,再确定该第一被引用次数是否小于第一阈值。或者,在确定该第一被引用次数小于第一阈值后再确定该第一数据的数据内容与该第二数据块的数据内容是否相同。
在本申请实施例中,为数据去重方法设置数据去重上限(该第一阈值即为该数据去重上限)。一方面,若不设置该数据去重上限,第二数据对应的目标数据块的被引用次数会逐渐增大,导致目标数据块的被访问的频率也逐渐增多,而长期反复地读取目标存储空间中同一个目标数据块的数据,会加速存储该目标数据块的存储介质(目标存储空间)的损坏,缩短存储介质的使用寿命。因此,设置该数据去重上限,可以避免目标数据块被频繁访问而导致的加速存储介质损坏速度的问题。另一方面,目标数据块被引用次数越多,重复度越高,会为目标直接索引表的索引带来一定的困难,以及,导致修改操作的速度变慢,降低修改操作的效率。因此,设置该数据去重上限,可以避免重复度过高带来的索引困难和重复度过高带来的降低修改操作的效率等问题。
在一种可能的实施方式中,在所述获取待存储到目标存储空间中的第一数据之前,所述方法还包括:在接收到将第三数据修改为第四数据的指令后,确定所述第三数据是否为特征值;在确定所述第三数据为特征值的情况下,将所述第四数据作为所述第一数据。
可选的,上述确定所述第三数据是否为特征值包括:确定第三地址项中的第一标记位的取值,所述第三地址项为记录存储所述第三数据的数据块的地址信息的地址项;在确定所述第一标记位取值为第一数值的情况下,确定所述第三数据为特征值;在确定所述第一标记位取值为第二数值的情况下,确定所述第三数据不是特征值。
可选的,上述确定所述第三数据是否为特征值包括:确定所述第三数据与所述目标特征值是否相同;在确定所述第三数据与所述目标特征值相同的情况下,确定所述第三数据为特征值;在确定所述第三数据与所述目标特征值不相同的情况下,确定所述第三数据不为特征值;所述目标特征值为标号对应关系中记录的一个或多个特征值中的任意一个特征值。
可理解的,在该第三数据为特征值的情况下,将该第四数据作为该第一数据,从而确定该第四数据是否为目标特征值。若是则将存储该第三数据的第三地址项更新为目标特征标号,若否则在该第三地址项中记录存储该第四数据的数据块的地址信息。
在一种可能的实施方式中,所述方法还包括:在确定该第三数据不为特征值的情况下,确定所述第四数据是否为所述目标特征值;在确定所述第四数据为所述目标特征值的情况下,在记录存储所述第三数据的数据块的地址信息的地址项(第三地址项)中记录该第四数据为所述目标特征值;在确定所述第四数据不为所述目标特征值的情况下,获取与所述第三数据对应的第三数据块的第二被引用次数;所述第二被引用次数为重复计数表中记录的所述第三数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系;在确定所述第二被引用次数等于1的情况下,将所述第四数据作为所述第一数据,并删除与所述第三数据相关的信息;在确定所述第二被引用次数大于1的情况下,将所述第四数据作为所述第一数据,并将所述重复计数表中的所述第二被引用次数减1。
可选的,上述删除与该第三数据相关的信息可以为,将上述第三地址项中记录的该第三数据的数据块的地址信息替换(修改)为该第四数据的数据块的地址信息;将第三数据对应的数据块删除;以及,将重复计数表中与该第三数据相关的记录删除。
可选的,上述删除与该第三数据相关的信息还可以为,将上述第三地址项中记录的该第三数据对应的数据块信息删除(该数据块信息包括第三数据在该索引节点记录的该第三数据与该第三数据对应的数据块的地址信息的关联关系);在该索引节点中添加该第四数据与该第四数据的数据块地址信息的关联关系;将第三数据对应的数据块删除;以及,将第二信息表中与第三数据相关的记录删除。
可选的,若存储空间中不存在与该第四数据块的数据内容相同的数据块,上述删除与该第三数据相关的信息还可以为,将第三数据的数据块内容替换(修改)为该第四数据的数据内容,以及将第二信息表中该第三数据对应的总和校验码替换(修改)为该第四数据对应的总和校验码。
在本申请实施例中,一方面,在修改数据时,若该第三数据在多处被引用,则为了保证在修改第三数据的同时该第一数据的数据块的地址信息的使用不会出错,则只将第二被引用次数减1,而不对该第三数据的数据内容进行直接操作,保证了去重机制下数据的完整性。另一方面,对修改后的该第四数据作为第一数据进行数据去重判断,查看目标存储空间中是否已经存储有与该第四数据的数据内容相同的数据块,使得在需要存储数据的场景下都进行数据去重,进一步提高存储空间利用率。
在一种可能的实施方式中,所述方法还包括:在接收到删除第五数据的指令后,确定所述第五数据是否为特征值;在确定所述第五数据为特征值的情况下,将记录存储所述第五数据的数据块的地址信息的地址项(第五地址项)中二进制位的取值均置为初始值。
可理解的,该第五数据为特征值的信息只会在该第五地址项中记录了,具体的,该第五地址项中记录了与该第五数据对应的特征标号。因此,在确定该第五数据为特征值的情况下,执行将该第五地址项中的二进制位重置为初始值。
在一种可能的实施方式中,所述方法还包括:在确定所述第五数据不为特征值的情况下,获取所述第五数据对应的第五数据块的第三被引用次数;所述第三被引用次数为重复计数表中记录的所述第五数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系;在确定所述第三被引用次数等于1的情况下,删除与所述第五数据相关的信息;在确定所述第三被引用次数大于1的情况下,将所述重复计数表中所述第三被引用次数减1。
在本申请实施例中,在第五数据被多处引用时,为保证除了第五数据以外的其他引用了该第五数据对应的目标数据块的数据的使用不受影响,只将第三被引用次数减1,而不对该第五数据的数据内容进行直接操作,保证了去重机制下数据的完整性。
在一种可能的实施方式中,所述W-1位二进制位取值为0或1;在所述目标特征标号指示所述W-1位二进制位中的全部二进制位的取值的情况下,所述目标特征标号为所述全部二进制位的取值的组合;在所述目标特征标号指示所述W-1位二进制位中的部分二进制位的取值的情况下,所述特征标号为所述部分二进制位的取值的组合。
在一种可能的实施方式中,所述高P位二进制位取值为0或1;在所述目标特征标号指示所述高P位二进制位中的全部二进制位的取值的情况下,所述特征标号为,除所述高P位二进制位中的全部二进制位均取值为0的组合之外的其他所述高P位二进制位中的全部二进制位的取值的组合;在所述目标特征标号指示所述高P位二进制位中的部分二进制位的取值的情况下,所述特征标号为,除所述部分二进制位均取值为0的组合之外的其他所述部分二进制位的取值的组合。
在一种可能的实施方式中,所述目标特征值为第一编码序列,所述确定所述第一数据与所述目标特征值是否相同包括:获取所述第一数据的第二编码序列;确定所述第一编码序列与所述第二编码序列是否相同;在确定所述第一编码序列与所述第二编码序列相同的情况下,确定所述第一数据与所述目标特征值相同;在确定所述第一编码序列与所述第二编码序列不相同的情况下,确定所述第一数据与所述目标特征值不相同。
可选的,该第一编码序列可以为二进制编码序列、十进制编码序列或十六进制编码序列等,本文对此不做限定。
示例性的,该第一编码序列为数据的二进制编码序列。具体的,通过调用memcmp函数实现比较该第一数据的二进制编码序列与该第一特征值的二进制编码序列是否相同,以确定该第一数据与该目标特征值是否相同。
在一种可能的实施方式中,所述目标特征值为第一字符串数据内容,所述第一数据为第二字符串数据内容,所述确定所述第一数据与所述目标特征值是否相同包括:确定所述第一字符串数据内容与所述第二字符串数据内容是否相同;在确定所述第一字符串数据内容与所述第二字符串数据内容相同的情况下,确定所述第一数据与所述目标特征值相同;在确定所述第一字符串数据内容与所述第二字符串数据内容不相同的情况下,确定所述第一数据与所述目标特征值不相同。
可选的,确定该第一特征值的字符串数据内容与该第一数据的字符串数据内容是否相同可以采用compare函数、采用equals方法或采用计算独特的标识符的方法。
在本申请实施例中,比较第一数据与第一特征值是否相同需统一该第一数据与和第一特征值的数据形式,而对第一数据和第一特征值的具体数据形式不做要求,适用性强。
第二方面,本申请实施例提供一种数据去重装置,包括:
获取单元,用于获取待存储到目标存储空间中的第一数据;
确定单元,用于确定所述第一数据与目标特征值是否相同,所述目标特征值为标号对应关系中记录的一个或多个特征值中的任意一个特征值;所述一个或多个特征值已存储到数据块中;所述标号对应关系中包括特征值与特征标号之间的关联关系;
记录单元,用于在确定所述第一数据与所述目标特征值相同的情况下,不将所述第一数据存储到所述目标存储空间的数据块中,在第一地址项中记录目标特征标号;所述第一地址项为用于记录存储所述第一数据的数据块的地址信息的地址项;所述目标特征标号为所述标号对应关系中与所述目标特征值对应的特征标号;所述第一地址项中包括第一标记位,所述第一标记位取值为第一数值,所述第一数值用于指示所述第一数据为特征值。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括:一个或多个处理器、存储器和显示屏;所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行:获取待存储到目标存储空间中的第一数据;确定所述第一数据与目标特征值是否相同,所述目标特征值为标号对应关系中记录的一个或多个特征值中的任意一个特征值;所述一个或多个特征值已存储到数据块中;所述标号对应关系中包括特征值与特征标号之间的关联关系;在确定所述第一数据与所述目标特征值相同的情况下,不将所述第一数据存储到所述目标存储空间的数据块中,在第一地址项中记录目标特征标号;所述第一地址项为用于记录存储所述第一数据的数据块的地址信息的地址项;所述目标特征标号为所述标号对应关系中与所述目标特征值对应的特征标号;所述第一地址项中包括第一标记位,所述第一标记位取值为第一数值,所述第一数值用于指示所述第一数据为特征值。
在一种可能的实施方式中,所述第一地址项包括W位二进制位,所述W为正整数;所述第一标记位为所述W位二进制位中最高的一位二进制位;所述一个或多个处理器,具体用于调用所述计算机指令以使得所述电子设备执行:在所述第一地址项中除所述第一标记位外的其他W-1位二进制位中记录所述目标特征标号;所述目标特征标号指示所述W-1位二进制位中的全部或部分二进制位的取值;更新所述第一标记位为所述第一数值。
在一种可能的实施方式中,所述第一地址项包括W位二进制位,所述W为正整数;所述第一标记位为所述W位二进制位中的高P位二进制位,所述P为小于所述W的正整数;所述一个或多个处理器,具体用于调用所述计算机指令以使得所述电子设备执行:在所述第一标记位中记录所述目标特征标号,将所述目标特征标号作为所述第一数值;所述目标特征标号指示所述第一标记位中的全部或部分二进制位的取值。
在一种可能的实施方式中,所述一个或多个处理器,还用于调用所述计算机指令以使得所述电子设备执行:在确定所述第一数据不为所述目标特征值的情况下,确定所述第一数据的数据内容与第二数据块的数据内容是否相同,所述第二数据块为所述目标存储空间中存储的M个数据块中的任意一个数据块,所述M为正整数;在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中。
在一种可能的实施方式中,所述一个或多个处理器,具体用于调用所述计算机指令以使得所述电子设备执行:计算所述第一数据的数据内容的总和校验码;在确定所述第一数据的数据内容的总和校验码与所述M个数据块的数据内容的总和校验码都不相同的情况下,确定所述第一数据的数据内容与所述第二数据块的数据内容不相同,并为所述第一数据分配第一数据块,将所述第一数据存储到所述第一数据块中;所述在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中,包括:在确定所述第一数据的数据内容的总和校验码与所述第二数据块的数据内容的总和校验码相同的情况下,确定所述第一数据的数据内容与所述第二数据块的数据内容是否相同;在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中。
在一种可能的实施方式中,所述一个或多个处理器,还用于调用所述计算机指令以使得所述电子设备执行:在确定所述M个数据块中的N个第二数据块的数据内容的总和校验码与所述第一数据的数据内容的总和校验码相同,且所述N个第二数据块的第一被引用次数都大于或等于第一阈值的情况下,为所述第一数据分配第一数据块,并将所述第一数据存储到所述第一数据块中;所述N为小于或等于M的整数,所述第一被引用次数为重复计数表中记录的所述第二数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系。
在一种可能的实施方式中,所述一个或多个处理器,具体用于调用所述计算机指令以使得所述电子设备执行:在确定所述第一数据的数据内容与所述第二数据块的数据内容相同,且所述第二数据块的第一被引用次数小于第一阈值的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中;以及,将所述第一被引用次数加1;所述第一被引用次数为重复计数表中记录的所述第二数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系。
在一种可能的实施方式中,所述一个或多个处理器,还用于调用所述计算机指令以使得所述电子设备执行:在接收到将第三数据修改为第四数据的指令后,确定所述第三数据是否为特征值;在确定所述第三数据为特征值的情况下,将所述第四数据作为所述第一数据。
在一种可能的实施方式中,所述一个或多个处理器,还用于调用所述计算机指令以使得所述电子设备执行:在确定所述第三数据不为特征值的情况下,确定所述第四数据是否为所述目标特征值;在确定所述第四数据为所述目标特征值的情况下,在记录存储所述第三数据的数据块的地址信息的地址项中记录所述第四数据为所述目标特征值;在确定所述第四数据不为所述目标特征值的情况下,获取与所述第三数据对应的第三数据块的第二被引用次数;所述第二被引用次数为重复计数表中记录的所述第三数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系;在确定所述第二被引用次数等于1的情况下,将所述第四数据作为所述第一数据,并删除与所述第三数据相关的信息;在确定所述第二被引用次数大于1的情况下,将所述第四数据作为所述第一数据,并将所述重复计数表中的所述第二被引用次数减1。
在一种可能的实施方式中,所述一个或多个处理器,还用于调用所述计算机指令以使得所述电子设备执行:在接收到删除第五数据的指令后,确定所述第五数据是否为特征值;在确定所述第五数据为特征值的情况下,将记录存储所述第五数据的数据块的地址信息的地址项中二进制位的取值均置为初始值。
在一种可能的实施方式中,所述一个或多个处理器,还用于调用所述计算机指令以使得所述电子设备执行:在确定所述第五数据不为特征值的情况下,获取所述第五数据对应的第五数据块的第三被引用次数;所述第三被引用次数为重复计数表中记录的所述第五数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系;在确定所述第三被引用次数等于1的情况下,删除与所述第五数据相关的信息;在确定所述第三被引用次数大于1的情况下,将所述重复计数表中所述第三被引用次数减1。
在一种可能的实施方式中,所述W-1位二进制位取值为0或1;所述一个或多个处理器,具体用于调用所述计算机指令以使得所述电子设备执行:在所述目标特征标号指示所述W-1位二进制位中的全部二进制位的取值的情况下,所述目标特征标号为所述全部二进制位的取值的组合;在所述目标特征标号指示所述W-1位二进制位中的部分二进制位的取值的情况下,所述特征标号为所述部分二进制位的取值的组合。
在一种可能的实施方式中,所述高P位二进制位取值为0或1;所述一个或多个处理器,具体用于调用所述计算机指令以使得所述电子设备执行:在所述目标特征标号指示所述高P位二进制位中的全部二进制位的取值的情况下,所述特征标号为,除所述高P位二进制位中的全部二进制位均取值为0的组合之外的其他所述高P位二进制位中的全部二进制位的取值的组合;在所述目标特征标号指示所述高P位二进制位中的部分二进制位的取值的情况下,所述特征标号为,除所述部分二进制位均取值为0的组合之外的其他所述部分二进制位的取值的组合。
在一种可能的实施方式中,所述目标特征值为第一编码序列,所述一个或多个处理器,具体用于调用所述计算机指令以使得所述电子设备执行:获取所述第一数据的第二编码序列;确定所述第一编码序列与所述第二编码序列是否相同;在确定所述第一编码序列与所述第二编码序列相同的情况下,确定所述第一数据与所述目标特征值相同;在确定所述第一编码序列与所述第二编码序列不相同的情况下,确定所述第一数据与所述目标特征值不相同。
在一种可能的实施方式中,所述目标特征值为第一字符串数据内容,所述一个或多个处理器,具体用于调用所述计算机指令以使得所述电子设备执行:确定所述第一字符串数据内容与所述第二字符串数据内容是否相同;在确定所述第一字符串数据内容与所述第二字符串数据内容相同的情况下,确定所述第一数据与所述目标特征值相同;在确定所述第一字符串数据内容与所述第二字符串数据内容不相同的情况下,确定所述第一数据与所述目标特征值不相同。
可理解的,关于特征值、标号对应关系、第一标记位、第一数值以及第二数值等的相关详细描述请参照本文其他实施例,在此不再详述。
第四方面,本申请实施例提供一种芯片系统,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
第五方面,本申请实施例提供一种包含指令的计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
第六方面,本申请实施例提供一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
附图说明
图1A为本申请实施例提供的一种第一文件的inode的地址项的索引结构的示意图;
图1B-图1C为本申请实施例提供的地址项的bit位的示意图;
图1D为本申请实施例提供的第一特征值对应关系的示意图;
图1E为本申请实施例提供的第二特征值对应关系的示意图;
图1F为本申请实施例提供的一种第一信息表的示意图;
图1G为本申请实施例提供的一种第二信息表的示意图;
图1H为本申请实施例提供的又一种第二信息表的示意图;
图1I为本申请实施例提供的一种数据块表和第二信息表的初始值的示意图;
图1J-图1K为本申请实施例提供的采用本申请提供的数据去重方法存储文件A和文件B中的数据的示意图;
图2A-图2G为本申请实施例提供的用户界面示意图;
图3为本申请实施例提供的一种数据去重的系统框架图;
图4A为本申请实施例提供的一种数据去重方法的流程示意图;
图4B为本申请实施例提供的一种根据文件大小选择地址项的索引结构的示意图;
图4C-图4F为本申请实施例提供的采用地址项的bit位记录数据为特征值的示意图;
图4G为本申请实施例提供的一种数据去重方法的流程示意图;
图4H为本申请实施例提供的地址项记录存储数据的数据块和磁盘存储数据块的关系示意图;
图5为本申请实施例提供的一种修改第三数据的数据去重方法的流程示意图;
图6为本申请实施例提供的一种删除第五数据的数据去重方法的流程示意图;
图7为本申请实施例提供的又一种数据去重方法的流程示意图;
图8为本申请提供的电子设备100的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地描述。
本申请的说明书、权利要求书及附图中的术语“第一”和“第二”等仅用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备等,没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元等,或可选地还包括对于这些过程、方法、产品或设备等固有的其它步骤或单元。
在本文中提及的“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”。
以下详细介绍本申请涉及的术语。
(1)地址项:
在本申请实施例中,地址项用于记录存储数据的数据块在目标存储空间的中的地址信息。具体的,在接收到存储第一文件的数据后会创建与该第一文件对应的索引节点(一份第一文件对应一个索引节点),该索引节点包括该地址项。该地址项具体用于记录存储与逻辑块号对应的数据的数据块的地址信息,该第一文件中与该逻辑块号对应的数据内容为该第一文件中目标起始字节到目标结束字节间的数据内容。根据目标数据在第一文件中占用的目标逻辑块号,可以查找到与该目标逻辑块号对应的目标地址项中记录的目标数据块的地址信息,根据该目标数据块的地址信息可以查找到被存储到该目标数据块中的与该目标逻辑块号对应的该目标数据的数据内容。
可理解的,该逻辑块号所对应的数据内容的最大容量大小与数据块的容量大小一致。示例性的,若第一文件的大小为1200字节,数据块的容量大小为512字节。则逻辑块号为0的逻辑块号与第一文件中目标起始字节为0到目标结束字节为512字节的数据内容之间存在关联关系;逻辑块号为1的逻辑块号与第一文件中目标起始字节为513字节到目标结束字节为1024字节的数据内容之间存在关联关系,逻辑块号为2的逻辑块号与第一文件中目标起始字节为1025字节到目标结束字节为1200字节的数据内容之间存在关联关系。
可理解的,在由于逻辑块号对应的数据内容进行了修改操作,或者,由于该逻辑块号之前的逻辑块号对应的数据内容进行了修改操作或删除操作,使得该逻辑块号对应的数据内容在第一文件中的第一目标起始字节变化为第二目标起始字节,第一目标结束字节变化为第二目标结束字节的情况下,该逻辑块号与第二目标起始字节和第二目标结束字节重新建立新的关联关系。
为便于描述,本申请实施例将用于记录目标逻辑块号的数据块的地址信息的地址项,记为与该逻辑块号对应的数据的地址项。例如,本文有关数据的地址项(例如第一数据的地址项)或者与该数据对应的地址项(例如与第一数据对应的地址项)的描述中,该数据的地址项是指,用于记录该数据在文件中对应的目标逻辑块号的数据块的地址信息的地址项。
可选的,该地址项的索引结构可以为直接索引结构、一级间接索引结构、二级间接索引结构或三级间接索引结构。可理解的,直接索引结构为包括一个或多个直接索引块的索引结构;一级间接索引结构为包括一个或多个直接索引块和一个或多个一级间接索引块的索引结构;二级间接索引结构为包括一个或多个直接索引块、一个或多个一级间接索引块、以及一个或多个二级间接索引块的索引结构;三级间接索引结构为包括一个或多个直接索引块、一个或多个一级间接索引块、一个或多个二级间接索引块、以及一个或多个三级间接索引块的索引结构。其中,直接索引块用于记录目标数据块的地址信息,该目标数据块为存储了数据内容的数据块。也可以理解为,一个该直接索引块为一个地址项,该地址项用于记录目标数据块的地址信息。一级间接索引块用于记录第一索引块的索引块地址信息,该第一索引块中用于记录多个目标数据块的地址信息(也可以理解为一个该第一索引块包括多个地址项)。二级间接索引块用于记录第二索引块的索引块地址信息,该第二索引块中用于记录多个第一索引块的索引块地址信息。三级间接索引块用于记录第三索引块块的索引块地址信息,该第三索引块中存储了多个第二索引块的索引块地址信息。
在本申请实施例中,该地址项的索引结构可以为直接索引结构、一级间接索引结构、二级间接索引结构或三级间接索引结构,在使用该地址项记录存储数据的数据块的地址信息时,可以根据该地址项的索引结构,采用逐级索引的方式记录数据块的地址信息。示例性的,该地址项为三级间接索引结构,该三级间接索引结构包括4个地址项为直接索引块,2个地址项为一级间接索引块,1个地址项为二级间接索引块,1个地址项为三级间接索引块。则在采用该地址项记录数据块的地址信息时,先采用直接索引块记录数据块的地址信息;在使用完4个该直接索引块后,仍有数据块的地址信息需要记录时则采用该一级间接索引块中的地址项记录数据块的地址信息;在使用完2个该一级间接索引块后,仍有数据块的地址信息需要记录时则采用该二级间接索引块中的地址项记录数据块的地址信息;在使用完2个该一级间接索引块后,仍有数据块的地址信息需要记录时则采用该三级间接索引块中的地址项记录数据块的地址信息。
示例性的,如图1A所示,索引节点包括8个地址项,其中4个地址项为直接索引块,2个地址项为一级间接索引块,1个地址项为二级间接索引块,1个地址项为三级间接索引块。每个地址项大小为4字节,索引块大小和数据块大小均为1k。则一个索引块可以存储1k/4=256个地址项。
该直接索引块中的4个地址项可以用于记录逻辑块号为0-3的数据块的地址信息,其中,逻辑块号为0-3的数据块总共可容纳的最大数据内容大小为(4*512字节)=2k。
一级间接索引块中的2个地址项中的第一个地址项可以用于记录一个第一索引块的索引块的地址信息,每个该第一索引块可以用于记录了256个数据块的地址信息,也即记录了逻辑块号为4至259(即256+3=259)的数据块的地址信息。逻辑块号为4-515数据块总共可容纳的最大数据内容大小为(512字节*512)=256k。
二级间接索引块中的1个地址项用于记录一个第二索引块的索引块的地址信息,该第二索引块记录了256个第一索引块的索引块的地址信息,每个第一索引块又记录了256个数据块的地址信息,也即该二级间接索引块总共记录了1*256*256=65536个数据块的地址信息,也即记录了逻辑块号为516至66051(即1*256*256+515=66051)的数据块的地址信息。逻辑块号为516至66051的数据块总共可容纳的最大数据内容大小为(1k*65536)=32768k。
三级间接索引块中的1个地址项用于记录一个第三索引块的索引块的地址信息,该第三索引块记录了256个第二索引块的索引块的地址信息,每个该第二索引块都记录了256个第一索引块的索引块的地址信息,每个第一索引块都记录了256个数据块的地址信息,也即该三级间接索引块总共记录了1*256*256*256=16777216个数据块的地址信息,也即记录了逻辑块号为66052至16777731(即1*256*256*256+515)的数据块的地址信息。逻辑块号为66052至16777731的数据块总共可容纳的最大数据内容大小为(512字节*16777216)。
(2)特征值:
在本申请实施例中,特征值可以是一些数据内容具备一定规律性的,或者数据内容具备一些特点的,或者一些自定义的数据。示例性的,该特征值可以为连续重复出现某个数据的特征串数据,例如全0串数据、全1串数据、全a串数据、连续重复出现01串的数据等。该特征值也可以是某个领域固定的特征值(例如图片的RGB取值等)。或者该特征值也可以是一些自定义的数据,例如某个应用程序中提供的交流常用语等。
可选的,特征值的数据大小可以与磁盘中每个数据块的容量大小一致。磁盘中的数据块大小可以为512字节的倍数,本申请实施例对于数据块的容量为512字节、1k或4k的描述仅为示例,本申请实施例对于数据块的容量大小不做限定。
可选的,该特征值的数据大小也可以不与磁盘中的数据块的容量大小一致,而是自定义的其他大小。示例性的,数据块的大小为1k,目标特征值的数据大小可以小于1k(例如,目标特征值的数据大小为500字节)。在这种情况下,若确定目标数据的数据内容与该目标特征值的数据内容相同,则该目标数据的数据大小也为500字节(该目标数据的数据大小不与磁盘中的数据块的容量大小一致)。示例性的,第一文件中仅包括数据大小为500字节的该目标数据,或者,该目标数据的为该第一文件中与最后一个逻辑块号对应的数据大小为500字节的数据,或者,由于修改或删除等操作导致逻辑块号对应的该目标数据的数据大小由1k变更为500字节。可选的,特征值的数据大小也可以是大于一个数据块的容量大小,本申请实施例对特征值的数据大小不做限定。
可选的,该特征值可以为数据的二进制编码序列。示例性的,数据块容量大小和特征值的数据大小为512字节,该特征值的二进制编码序列可以为全0串,也即该特征值的512*8bit的二进制位的取值均为0;该特征值的二进制编码序列可以为全0串,也即该特征值的512*8bit的二进制位的取值均为1;该特征值的二进制编码序列还可以为重复的01串,也即该特征值的512*8bit的二进制位的取值依次为01串。可理解的,本申请实施例示出该特征值的二进制编码序列仅为示例,该特征值的二进制编码序列可以有2512*8种选择,本申请实施例对此不做限定。
可选的,该特征值也可以为数据的字符串数据内容。示例性的,数据块大小和特征值的大小为512字节。该特征值的字符串数据内容可以为全“a”串,一个英文字符“a”占用一个字节,也即该特征值为包括512个英文字符a的字符串。该特征值的字符串数据内容还可以为全“好”串,一个中文字符“好”占用两个字节,也即该特征值为包括256个中文字符为“好”的字符串。可理解的,本申请实施例示出该特征值的字符串数据内容仅为示例,该特征值的字符串数据内容还可以为其他的数据内容,本申请实施例对此不做限定。
(3)空闲二进制位(空闲bit位):
在本申请实施例中,地址项中W位bit位中的空闲bit位是指,在目标存储空间中该地址项中W位bit位中不会用于记录该目标存储空间的地址项的地址信息的bit位。
在本申请实施例中,根据目标存储空间的容量大小和数据块的容量大小计算该地址项包括的W位bit位中的空闲bit位的数量Y。
具体的,记地址项大小为4x字节(一般地,地址项的大小为4字节的倍数。该x取值为大于或等于1的正整数),目标磁盘分区的容量大小为U,数据块容量大小为H,则目标磁盘分区包括个数据块。可理解的,地址项中记录的数据块的地址信息为该数据块在数据块表中的偏移量,数据块的地址信息的偏移量从x(该x可以为0、1或2等的实数,本申请对此不做限定)自增。设最多需使用地址项中的第0位bit至第i-1位bit(共i位bit位)记录目标磁盘分区中的数据块的地址信息。地址项包括的bit位的数量为4x*8(1字节等于8bit),则地址项中空闲bit位的数量Y即为Y=4x*8-i,也即地址项中的高4x*8-i位bit位为空闲bit位。可理解的,地址项的W位bit位中的高4x*8-i位bit位是指,从该地址项的W位bit位中的最高一位bit位算起的4x*8-i个bit位。
示例性的,数据块容量大小为512字节,地址项大小为4字节(4字节=32bit,W=32),目标存储空间的容量大小为1T,该地址项的bit位如图1B所示。则目标磁盘分区包括个数据块(可理解的,字节英文名为byte)也即该目标存储空间所包括的数据块的数量为231。又由于地址项记录的数据块的地址信息为数据块表中该数据块的偏移量,数据块的地址信息的偏移量从x(该x可以为0、1或2等的实数,本申请对此不做限定)自增,则最多只需采用如图1B所示的该地址项的101部分,也即地址项中的第0位至第30位bit记录磁盘中的数据块的地址信息。而如图1B所示的该地址项的102部分,该地址项的第31位bit空闲不用(也可以理解为该地址项中的32位bit中的最高一位空闲不用),也即该第31位bit即为空闲bit位。
示例性的,地址项大小为4字节,数据块容量大小H为4k,目标磁盘分区的容量大小U为4G,如图1C所示,最多需使用地址项中的103部分,也即第0位bit至第19位bit(共20位bit)记录目标磁盘分区中的数据块的地址信息,则104部分的12位bit位(也即第20位至第31位)空闲不用,也即该12位bit位即为空闲bit位。
可理解的,本文其他实施例所描述的第一标记位可以为该空闲bit位。示例性的,如图1B所示的102部分(该地址项的第31位bit)为该第一标记位。示例性的,如图1C所示的104部分(该地址项中的第20位至第31位)为该第一标记位。
可理解的,属于同一个文件系统的文件对应的索引节点所包括的地址项的空闲bit位的数量一致。示例性的,属于同一个文件系统的文件A和文件B,文件A所对应的索引节点的地址项的空闲bit位的数量,与该文件B对应的索引节点的地址项的空闲bit位的数量相同。也就是说,每个文件系统只需在存储第一份文件时计算一次该文件对应的索引节点所包括的地址项的空闲bit位的数量,该文件系统中的其他文件所对应的索引节点所包括的地址项的空闲bit位的数量与此相同。一次计算,多次使用,在存储该文件系统中的其他文件时,不需再计算文件对应的索引节点所包括的地址项的空闲bit为的数量。
(4)特征值对应关系、特征标号:
在一种可能的实施方式中,该W位bit中除了最高一位bit之外的W-1位bit的取值的不同组合均可用于记录目标特征值。在本申请实施例中,一个该W-1位bit的取值的组合即为一个特征标号。可理解的,地址项的W位bit中的每一位bit可以取值为二进制数字(即可以取值为1或0),则该地址项中的该W-1位bit可以用于记录2W-1个特征值,对应2W-1个特征标号。在本申请实施例中,一个目标特征标号对应一个目标特征值,在第一特征值对应关系中记录目标特征标号对应的目标特征值。
示例性的,如图1D所示的第一特征值对应关系中,该W-1位bit均取值为0的特征标号,代表特征值A;该W-1位bit中最低一位(也可以理解为末位)取值为1,其他W-2个bit位取值为0的特征标号,代表特征值B;该W-1位bit中最低一位取值为1,且最高一位取值为1,以及其他W-3个bit位取值为0的特征标号,代表特征值C;该W-1位bit均取值为1,代表特征值D。以此类推,得到该W-1位bit可以用于记录2W-1个特征值。也可以理解为,由该W-1位bit组成的每个二进制数值的大小对应一个特征值,一个该二进制数值对应一个特征标号。示例性的,该地址项大小为4字节(32bit),则该地址项中前31位bit则用于记录数据与数据为目标特征值的关联关系。例如,若该31位bit组成的二进制数值大小为0(也即特征标号为0),则对应上述特征值A;该31位bit组成的二进制数值大小为1(也即特征标号为1),则代表上述特征值B;该31位bit组成的二进制数值大小为(230+1)(也即特征标号为(230+1)),则代表上述特征值C。以此类推。
在一种可能的实施方式中,该W位bit位中的高P位bit位为空闲bit位。在该高P位bit位的初始值均取值为0的情况下,该高P位bit位的取值组合中除了该高P位bit位均取值为0的组合之外,其他任意取值组合均可用于记录目标特征值。在本申请实施例中,除了该高P位bit位均取值为0的组合之外,一个该P位bit的取值的组合即为一个特征标号。则地址项中的该W-1位bit可以用于记录2P-1个特征值,对应2P-1个特征标号。(也可以理解为,该高P位bit位的取值组合中除了该高P位bit位均取值为0的组合之外,其他任意取值组合组成一个目标集合,一个该高P位bit位的取值组合即为该目标集合中的元素,特征标号即为该目标集合中的一个元素)。
示例性的,如图1E所示的第二特征值对应关系中,该P位bit中的最低一位取值为1,其他P-1位取值为0的特征标号,代表特征值A;该P位bit中的低位数起第二个bit位取值为1,其他P-1位取值为0的特征标号,代表特征值B;P位bit中的低2位取值均为1,其他P-2位取值为0的特征标号,代表特征值C;...该P位bit中的高2位取值均为1,其他P-2位取值为0的特征标号,代表特征值D;该P位bit均取值为1的特征标号,代表特征值E。以此类推。
可理解的,在该高P位bit位的初始值均取值为1的情况下,该高P位bit位的取值组合中除了该P位bit位均取值为1的组合之外,其他任意取值组合均可用于记录目标特征值。可记录的目标特征值的数量为2P-1。
可理解的,本文其他实施例所描述的标号对应关系也可以理解为该第一特征值对应关系或该第二特征值对应关系。示例性的,在采用W位二进制位中的最高一位二进制位指示数据是否为特征值的情况下,除该最高一位二进制位之外的其他二进制位记录特征标号的情况下,该标号对应关系为该第一特征值对应关系。在采用该W位二进制位中的P位空闲二进制位记录特征标号,同时指示数据为特征值的情况下,该标号对应关系为该第二特征值对应关系。
(5)第一信息表、第二信息表:
在一些实施例中,如图1F所示,采用第一信息表记录目标数据块的特征标识。可理解的,该目标数据块是指磁盘中的任意一个数据块;若该目标数据块已用于存储数据,则该目标数据块的特征标识是指该目标数据块的数据内容的特征标识;若该目标数据块未用于存储数据,则该目标数据块的特征标识的值为初始值(示例性的,该初始值为null或0)(本文关于数据块的特征标识的定义均与此相同)。
在另外一些实施例中,如图1G所示,采用第二信息表记录目标数据块的特征标识和该目标数据块对应的被引用次数。可理解的,该目标数据块对应的被引用次数是指数据的所属文件的索引节点的地址项中记录的该目标数据块的地址信息的次数(本文关于被引用次数的定义均与此相同)。
在另外一些实施例中,上述第一信息表或第二信息表还记录了目标数据块的所属文件号。示例性的,如图1H所示,第二信息表中还包括“所属文件号”的列属性,用于记录目标数据块的所属文件。
为便于描述,下文在对于第一信息表和第二信息表都适用的描述中,将第一信息表和第二信息表统称为目标信息表。
可选的,在目标信息表中建立目标数据块与对应的特征标识之间的关联关系的方式有以下两种:
1、使得该目标信息表与数据块表(该数据块表中记录了目标数据块在数据块表中的偏移量、以及对应的数据内容之间的关联关系)的行记录对应的偏移量相等的方式。该方式包括:
为该目标信息表中的每一列与数据块表中的每一列创建一一对应的关系。具体地,在将目标磁盘分区中的目标数据块分配用于存储数据之前,初始化该数据块表以及初始化该目标信息表。上述初始化数据块表以及初始化目标信息表包括:将数据块表以及目标信息表的偏移值均设置为从0开始自增。示例性的,目标磁盘分区中包括100个数据块,采用第二信息表记录该100个数据块的特征标识,则初始化数据块表以及初始化该第二信息表后该数据块表和第二信息表的行记录如图1I所示。其中,该数据块表的第一行数据对应的偏移量为0,第二行数据对应的偏移量为1,第三行数据对应的偏移量为2,以此类推;该目标信息表的第一行数据对应的偏移量为0,第二行数据对应的偏移量为1,第三行数据对应的偏移量为2,以此类推)。
可理解的,要使得该目标信息表中该目标数据块与对应的特征标识产生关联关系,则需要将目标信息表的第一目标行用于记录该数据块表中第二目标行对应的目标数据块的特征标识相关的信息,且该第一目标行与第二目标行的偏移量相同。示例性的,目标磁盘分区总共包括100个数据块,该数据块表中包括100条数据块的记录。则对应的,该目标信息表也包括100行特征标识的记录,该100行特征标识的记录与该100条数据块的记录一一对应。也就是说,目标信息表中偏移量为0的行,用于记录该数据块表中偏移量也为0的行对应的目标数据块的特征标识相关的信息。
可理解的,在第一信息表中,上述目标数据块的特征标识相关的信息包括:目标数据块的特征标识;在第二信息表中,上述目标数据块的特征标识相关的信息包括:目标数据块的特征标识以及该目标数据块的被引用次数;在另外一些实施例中,在第二信息表中,上述目标数据块的特征标识相关的信息包括:目标数据块的特征标识、该目标数据块的被引用次数以及目标数据块的所属文件号。
2、可选的,该目标信息表中明确记录特征标识与对应的目标数据块的地址信息之间的关联关系。具体地,在将目标磁盘分区中的数据块分配用于存储数据之前,初始化该目标信息表时不需创建对应的行记录,在目标磁盘分区中的目标数据块被分配用于存储数据时,再往第二信息表中新增与该目标数据块对应的行记录。
示例性的,在目标磁盘分区中数据块的地址信息为addr3的数据块被分配用于存储字符串为str1的数据内容时,在该目标信息表中新增关于该str1的特征标识与该addr3之间的关联关系的行记录。在目标磁盘分区中数据块的地址信息为addr25的数据块被分配用于存储字符串为str2的数据内容时,在该目标信息表中新增关于该str2的特征标识与该addr25之间的关联关系的行记录。
在一些数据去重的实现方式中,采用压缩算法减少实际数据存储,例如,四个十六进制数:1,2,3,4。转换为二进制为:00000001,00000010,00000011,00000100,每个数只用到了低4位,而高4位没有用到(全为0)。因此对高4位进行压缩编码后得到:0001,0010,0011,0100,然后补充为字节得到:00010010,00110100,原来的四个十六进制数缩短了一半,得到两个个十六进制数:12,34。或者,对于重复出现的数据采用压缩编码变体方法记录。例如,一段数据中连续重复出现六次“93”的字符串数据,则采用3个字节:一个标记字节(‘0’在本例中),一个重复的次数(‘6’)和符号本身(‘93’)。来代替该六个“93”字符串数据。在解压缩时,遇到标记字节‘0’时,表明后面的两个字节决定了需要输出哪个符号以及输出多少次。然而,压缩操作和解压操作都是访问cpu频率比较高的操作,从而给设备带来一定的性能损耗,例如设备响应速度变慢等。
然而,采用本申请实施例提供的数据去重方法,在待存储的第一数据为特征值的情况下,不将第一数据存储到数据块中。则该第一数据的地址项不需用于记录数据块的地址信息,于是可以使用该地址项中的W个bit位记录该第一数据为该目标特征值,以使得提升存储空间利用率的同时减少性能损耗。
示例性的,对于第一文件中,重复出现100次第一数据,该第一数据为第一特征值str1(该str1的数据大小与数据块的容量大小一致)。采用本申请实施例提供的数据去重方法,不需将该第一特征值str1存储到数据块中,而是在出现该第一数据的地址项中采用该地址项中的bit位记录该第一数据为该第一特征值str1,而地址项中bit位的取值与第一特征值之间的对应关系最多占用2个数据块的容量。则对于将100份第一数据存储到存储空间对应的数据块中的数据存储方法,节省了98个数据块的容量,提升了存储空间利用率。或者,若在该第一数据在该第一文件中50处分别重复连续出现2次,总出现次数为100次的情况下,采用上述压缩编码变体方法分别记录连续两次出现的该第一数据,则仍然需要消耗50个数据块容量存储50份该第一数据,相比之下本申请实施例提供的数据去重方法可以节省48个数据块的容量,且没有压缩数据和解压数据带来的性能损耗问题,提升存储空间利用率的同时减少性能损耗。或者,若采用一些散列算法或指纹算法等算法,在存储该100个第一数据时依次计算该100个第一数据的唯一标识,并通过唯一标识判断该第一文件中的100个该第一数据是否为重复数据,若是,则该100个第一数据共用同一个数据块。则相比之下,本申请实施例提供的数据去重方法,只需依次判断该第一数据是否为一个或多个特征值中的一个目标特征值,节省了采用散列算法或者指纹算法等算法为该第一数据计算唯一标识的所带来的计算量和性能损耗,提升存储空间利用率的同时减少性能损耗。
示例性的,若内存中存储文件A和文件B的数据内容如图1J所示,s1至s5的每个数据的数据内容的大小都与数据块容量大小一致且都为512字节(可理解的,512字节的数据可以为512个全英文字符,或者,512字节数据也可以为256个全中文字符等,本文对此不做限定)。其中s2为第一特征值,s3为第二特征值。则在存储s1至s5的数据时,不需将s2和s3数据实际存储到磁盘中,而是采用s2和s3的地址项分别记录该s2为第一特征值、该s3为第二特征值。则对于重复4次出现的特征值s2,以及重复2次出现的特征值s3,都不需消耗数据块容量执行存储,该文件A和文件B的索引节点的地址项中记录的信息如图1K所示。
下面介绍本申请实施例提供的用户界面。
可理解的,本申请实施例提供的方法可以由任意采用目标存储空间中的数据块进行数据存储的电子设备执行。示例性的,该电子设备包括移动终端、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本,以及蜂窝电话等。为便于描述,以移动终端作为该电子设备的一个示例,介绍本申请实施例提供的用户界面。
首先,介绍数据去重功能所涉及的用户界面。请参阅图2A-图2G,图2A-图2G是本申请实施例提供的一种用户界面的示意图。如图2A所示,电子设备显示主屏幕界面10。如图2A所示,主屏幕界面10包括日历小工具(widget)101、天气小工具102、应用程序图标103、状态栏104以及导航栏105。其中:
日历小工具101可用于指示当前时间,例如日期、星期几、时分信息等。
天气小工具102可用于指示天气类型,例如多云转晴、小雨等,还可以用于指示气温等信息,还可以用于指示地点。
应用程序图标103可以包含例如微信(Wechat)的图标、推特(Twitter)的图标、脸书(Facebook)的图标、微博(SinaWeibo)的图标、QQ(Tencent QQ)的图标、WPS的图标和备忘录的图标1031等,还可以包含其他应用的图标,本申请实施例对此不作限定。任一个应用的图标可用于响应用户的操作,例如触摸操作,使得电子设备启动图标对应的应用。可理解的,每个上述应用程序会相应产生文件数据,这些文件数据将存储到数据块中。
状态栏104中可以包括运营商的名称(例如中国移动)、时间、WI-FI图标、信号强度和当前剩余电量。
导航栏105可以包括:返回按键1051、主界面(home screen)按键1052、呼出任务历史按键1053等系统导航键。其中,主屏幕界面10为电子设备100在任何一个用户界面检测到作用于主界面按键1052的用户操作后显示的界面。当检测到用户点击返回按键1051时,电子设备100可显示当前用户界面的上一个用户界面。当检测到用户点击主界面按键1052时,电子设备100可显示主屏幕界面10。当检测到用户点击呼出任务历史按键1053时,电子设备100可显示第一用户最近打开过的任务。各导航键的命名还可以为其他,比如,1051可以叫BackButton,1052可以叫Home button,1053可以叫Menu Button,本申请对此不做限定。导航栏105中的各导航键不限于虚拟按键,也可以实现为物理按键。
如图2A和图2B所示,响应于作用在备忘录的图标1031的用户操作,例如触摸操作,电子设备可显示备忘录应用界面20。备忘录应用界面20可以包含备忘录历史存储记录(如图中的“会议记录1”、“会议记录2”等)和新增备忘录控件201。如图2B和图2C所示,响应于作用在新增备忘录控件201的用户操作,例如触摸操作,电子设备可显示应用界面30。应用界面30可以包含保存控件301和取消控件302。其中,保存控件301,用于响应用户操作保存新增备忘录数据内容;取消控件302,用于响应用户操作丢弃已编辑的新增备忘录数据内容,也即对新增备忘录数据内容不做保存,返回用户界面20。
用户可点击保存控件301,响应于该第二用户操作,即作用在保存控件301的点击操作,电子设备启动数据存储,以存储上述新增备忘录数据内容。具体的,确定上述新增备忘录数据内容是否为目标特征值,若是则在对应的地址项中记录该新增备忘录数据内容为该目标特征值,不需再向目标存储空间中申请数据块以存储该新增备忘录数据内容。
如图2D和图2E所示,响应于用户界面20中作用在目标备忘录的点击操作,进入用户界面40,该用户界面40包括该目标备忘录的数据内容(例如,该目标备忘录的数据内容为“会议记录8”)、保存控件401和取消控件402。其中,该保存控件401,用于响应用户操作保存编辑修改后的数据内容;取消控件402,用于响应用户操作取消保存本次修改数据。用户可编辑该目标备忘录的数据内容,示例性的,如图1E所示,在数据内容“会议记录8”之后追加数据内容“(重要会议)”,用户点击保存控件401,响应于该第三用户操作,即作用在保存控件401的点击操作,电子设备启动数据更新存储(即将数据内容“会议记录8”修改为“会议记录8(重要会议)”),并在数据存储过程中执行本申请提供的数据去重方法。示例性的,确定要修改的数据内容“会议记录8”是否为特征值,以及确定修改后的数据内容“会议记录8(重要会议)”)是否为目标特征值。若确定该要修改的数据内容为特征值,且该修改后的数据内容为目标特征值的情况下,将数据内容“会议记录8”对应的地址项中记录的与该数据内容“会议记录8”对应的特征标号修改为与该数据内容“会议记录8(重要会议)”)对应的特征标号。若确定该要修改的数据内容不为特征值,且该修改后的数据内容为目标特征值的情况下,将该地址项的取值修改为与该目标特征值对应的特征标号,以及更新该地址项的最高一位bit的取值以标识该修改后的数据为特征值。若确定该要修改的数据内容为特征值,且该修改后的数据内容不为目标特征值的情况下,或者,在确定该要修改的数据内容不为特征值,且该修改后的数据内容不为目标特征值的情况下,为该修改后的数据内容申请目标数据块以存储该修改后的数据,并将该地址项的取值修改为该目标数据块的地址信息。
如图2F和图2G所示,响应于用户界面20中作用在目标备忘录的长按操作(也可以为其他操作,例如向左滑动,本文对此不做限定),进入用户界面50,该用户界面50包括保存控件501和取消控件502。其中,该保存控件501,用于响应于用户操作保存更新该目标备忘录的数据内容;该取消控件502,响应于用户操作,返回用户界面20,不对用户删除的数据内容做保存更新操作。用户可删除用户界面50中目标备忘录的一些数据内容,示例性的,用户将该目标备忘录的“会议记录3”的数据内容删除,并点击保存控件501,响应于该第四用户操作,即作用在保存控件501的点击操作,电子设备启动删除数据任务(即将该目标备忘录所包括的数据内容全部删除),并在删除数据任务过程中执行本申请提供的数据去重方法。示例性的,确定存储该“会议记录3”的数据内容的目标数据块的被引用次数是否大于1,也即确定是否还有除了该“会议记录3”的数据内容之外的其他数据使用该目标数据块的地址信息。若是,则在删除该“会议记录3”的数据内容时,不能将该存储了该“会议记录3”的数据内容的该目标数据块删除,而是只将该被引用次数对应减1,以及将该“会议记录3”的数据内容对应的地址项置为不可用。
在本申请实施例中,目标存储空间可以为采用数据块存储数据的存储介质,具体的,该采用数据块存储数据的存储介质可以为磁盘或固态硬盘等,本文对此不做限定。为便于描述,本文将以磁盘作为该存储介质为例,以磁盘或该磁盘中的目标磁盘分区作为该目标存储空间为例展开详细描述。可理解的,该目标磁盘分区为磁盘中的任意一个分区(示例性的,该目标磁盘分区可以为可读可写分区或只读分区)。
请参阅图3,图3为本申请实施例提供的一种数据去重的系统框架图。该系统框架图包括文件层301和索引节点(inode)层302。
其中,该文件层301包括各类应用(application,app)的文件,示例性的,该文件层301包括A应用的a文件和b文件以及B应用的c文件。该索引节点层302包括虚拟文件系统(virtual file system,VFS)层3201、以及文件系统层3202,该文件系统层3202包括F2FS(flash friendly file system,F2FS)、EXT4(fourth extended filesystem,EXT4)、EROFS(extendable read-only file system,EROFS)以及其他文件系统中的一项或多项文件系统。可理解的,文件系统用于明确磁盘中目标磁盘分区存储文件的方法和数据结构,实现对文件的按名存取。其中,该F2FS为新型开源flash文件系统,主要用于存取计算机闪存设备(NAND flash memory,NAND)的闪存数据;该EXT4为日志文件系统,主要用于存取日志文件;该EROFS为超级文件系统,主要用于存取系统文件。示例性的,若a文件和b文件为系统文件,则a文件的inode应存储在EROFS文件系统中;c文件为日志文件,则c文件的inode应存储在EXT4文件系统中。
可理解的,磁盘中的目标磁盘分区会被挂载为一种文件系统,且一种文件系统会对应生成一个数据块表。该文件系统的读写类型可以为只读或者可读可写,该目标磁盘分区存储的数据的读写类型与该文件系统的读写类型一致。具体的,若该文件系统的读写类型为只读,则该目标磁盘分区存储的数据也为只读数据;若该文件系统的读写类型为可读可写,则该目标磁盘分区存储的数据也为可读可写数据。示例性的,将目标磁盘分区挂载为F2FS文件系统,且将该F2FS文件系统的读写类型设置为可读可写,则该目标磁盘分区也为可读可写分区。
本申请实施例,可以针对磁盘中的可读可写分区、只读分区或其他分区的数据块做数据存储处理,换句话说,本申请提供的数据去重方法对于磁盘中的所有分区都适用。
另外,一种文件系统会对应生成一个数据块表(该数据块表中记录了该文件系统对应的目标磁盘分区中的数据块在该数据块表中的偏移量、以及该数据块对应存储的数据内容之间的关联关系),本申请实施例提供的数据块表即为与文件系统对应的数据块表。本文其他实施例中关于数据块表的涵义与此相同。
可理解的,该VFS可以采用标准的unix系统调用读写位于不同物理介质上的不同文件系统,为上述F2FS、EXT4、EROFS以及其他文件系统等各类文件系统提供统一的操作界面和应用编程接口。也就是说,对于各类不同的文件系统,访问底层存储介质的接口不同,也即访问不同文件系统的索引节点指向的数据块的接口不同,而VFS可以为各类文件系统提供统一的操作界面和应用编程接口,使得系统调用无需关心底层的存储介质和文件系统类型就可以工作。
可理解的,该VFS支持的操作系统包括Linux操作系统和Windows操作系统。只是对于不同的操作系统,文件系统层3102所包括的各类文件系统会有所差异,本文对数据块所处的操作系统不做限定。
下面结合附图对本申请作进一步介绍。
请参阅图4A,图4A为本申请实施例提供的一种数据去重方法的流程示意图。如图4A所示,该数据去重方法包括以下步骤:
401,在接收到存储第一文件的指令后,根据该第一文件的大小创建第一文件的索引节点。
在本申请实施例中,该索引节点包括地址项,该地址项包括W位二进制位(W位bit位);该W位bit中的最高一位bit位为空闲bit位,该W为大于1的整数。
具体地,在根据该第一文件的大小确定索引节点的索引结构后,创建该第一文件的索引节点inode。在本申请实施例中,该索引结构包括直接索引块、一级间接索引块、二级间接索引块以及三级间接索引块。可以理解的是,本申请实施例还可以适用其他类型的索引块,本申请实施例对此不做限定。
示例性的,如上述图2A和图2B所示,记上述新增备忘录数据内容的备忘录记录为文件A,用户点击保存控件301,响应于该第二用户操作,即作用在保存控件301的点击操作,电子设备接收存储文件A的指令,继而启动数据存储。具体的,设电子设备的地址项的结构如图1A所示,且索引块大小和数据块大小均为512字节;该电子设备在接收到存储文件A的指令后,根据该数据块大小将文件A包括的数据内容读取到内存中(将文件A中的数据内容按每512字节大小逐次读取到内存中)。示例性的,复用图1J,该文件A的数据内容包括s1、s2、s3、s2以及s2,其中,s1、s2以及s3的数据内容大小均为512字节,则该文件A的大小为2.5k。由于2k<2.5k<256k,电子设备根据该文件A的数据内容大小,确定该文件A的inode结构应选择一级间接索引。其中,如图4B所示,其中,采用直接索引块记录s1、s2、s3和s2的地址信息,采用一级间接索引块记录最后一个s2的地址信息。
可理解的,该512字节数据s1、s2或s3可以为512个全英文字符,或者,也可以为256个全中文字符等,本文对此不做限定。
可选的,创建该第一文件的索引节点还可以为创建该第一文件的目标索引结构,该目标索引结构为除了索引节点inode之外的其他索引结构。示例性的,该目标索引结构可以为哈希索引、b+树索引等,本申请实施例对此不做限定。
在本申请实施例中,该第一文件可以为内存中的任一文件。示例性的,该第一文件为内存中的文件A、文件B或文件C;且该文件A、文件B与文件C可以为同一个文件系统的文件,也可以为不同文件系统的文件。示例性的,该第一文件为内存中的文件A,该文件A的所属文件系统为EXT4;示例性的,该第一文件为内存中的文件B,该文件B的所属文件系统为F2FS。
在本申请实施例中,该第一文件可以为一份文档、一张图片、一段音频、一段视频或一段音视频。可理解的,该第一文件的具体文件类型(文档、图片等)仅为示例,该第一文件还可以为其他文件类型,本申请实施例对此不做限定。
关于空闲bit位的描述请参照上文,在此不再详述。
402,确定该第一文件中的第一数据与第一特征值对应关系中记录的一个或多个特征值中的第一特征值是否相同。
在本申请实施例中,该第一特征值为该一个或多个特征值中的任意一个特征值;该第一特征值对应关系用于记录特征值与特征标号之间的关联关系,该特征标号指示上述地址项中除最高位bit以外的其他W-1位bit的取值。
可理解的,该第二特征值对应关系中所包括的一个或多个特征值和对应的特征标号,可以存储在目标磁盘分区(该目标磁盘分区为与该第一文件所属文件系统对应的磁盘分区)的数据块中,也可以存储在其他存储空间的数据块中,本申请实施例对此不做限定。
可选的,在该特征值为数据的二进制编码序列的情况下,确定该第一数据与第一特征值是否相同可以包括:获取该第一数据的二进制编码序列,比较该第一数据的二进制编码序列与该第一特征值的二进制编码序列是否相同,若相同则表示该第一数据与该第一特征值相同。
具体的,记该第一数据的数据内容为str1,示例性的,可以通过代码语句“In[N]:i=bytes("str1",encoding="ASCII")”获取该第一数据的二进制编码序列,其中该N的值为需要转换成的字节数,N的值与第一特征值的字节数一致;例如该第一特征值为512字节的二进制编码序列,则该N的取值即为512字节。代码中encoding的编码规则也与该第一特征值的二进制编码序列的编码规则一致,例如该第一特征值的编码规则为ASCII,则该encoding的编码规则也应为ASCII。可理解的,该第一特征值的编码规则为ASCII仅为示例,该第一特征值的编码规则也可以为其他的编码规则,例如utf-8、UTF-16或GBK等,本申请实施例对此不做限制。
具体的,比较该第一数据的二进制编码序列与该第一特征值的二进制编码序列是否相同可以通过调用memcmp函数实现。示例性的,记该第一数据的二进制编码为a1,该第一特征值的二进制编码为a2,则通过语句memcmp(a1,a2,K)比较该第一数据的二进制编码序列与该第一特征值的二进制编码序列是否相同。其中,K为该第一数据的二进制编码序列与该第一特征值的二进制编码序列的大小(也可以理解为第一特征值的字节数)。
可选的,在该特征值为数据的字符串数据内容的情况下,确定该第一数据与第一特征值是否相同可以包括:调用compare()函数或equals()方法判断该第一数据的字符串数据内容与该第一特征值的字符串数据内容是否相同。示例性的,数据块的容量为512字节,该第一特征值为512字节大小的全a的字符串str1(即该第一特征值的512字节数据内容全为a;一个英文字符a占用1字节,也即该第一特征值为包括512个英文字符a的字符串),该第一数据的数据内容为str2,则通过调用str1.compare(str2)或str1.equals(str2),判断该第一数据与该第一特征值是否相同。可选的,判断该第一数据与第一特征值是否相同还可以采用,为该第一数据的字符串数据内容和该第一特征值的字符串数据内容计算独特的标识符的方法。可理解的,散列算法或指纹算法可用于为数据内容计算独特的标识符。具体的,采用散列算法或指纹算法为该第一数据的字符串数据内容计算第一标识符和为该第一特征值的字符串数据内容计算第二标识符,在该第一标识符与该第二标识符相同的情况下,该第一数据的数据内容与该第一特征值的数据内容相同。
可理解的,确定该第一特征值的字符串数据内容与该第一数据的字符串数据内容是否相同可以采用compare函数、采用equals方法或采用计算独特的标识符的方法仅为示例,还可以通过其他方法判断该第一特征值的字符串数据内容与该第一数据的字符串数据内容是否相同,本申请实施例对此不做限定。
可理解的,该特征值也可以为其他数据形式的数据(例如八进制、十进制或十六进制等),本申请实施例对此不做限定。比较第一数据与第一特征值是否相同需统一该第一数据与和第一特征值的数据形式,而对第一数据和第一特征值的具体数据形式不做限定。示例性的,若该第一数据的数据形式为字符串数据内容,该第一特征值的数据形式为二进制,则可以获取该第一数据转换为二进制形式后的二进制序列,再将该第一数据的二进制序列与该第一特征值的二进制序列作比较。也可以先获取该第一数据转换为十进制后的十进制序列,并获取该第一特征值转换为十进制后的十进制序列,再将该第一数据的十进制序列与该第一特征值的十进制序列作比较。
在本申请实施例中,该第一数据可以为一份文档中的部分文本内容,或者,该第一数据为一段视频中的部分图像帧等,本申请实施例对此不做限定。
在本申请实施例中,该第一数据为第一文件中未被存储到磁盘中相应的数据块的数据,或者,该第一数据为第一文件中的未被记录为特征值的数据。
示例性的,第一文件为文件A,该文件A包括2k的数据,该文件A所处的磁盘中数据块的容量为512字节,则分四次将文件A中的数据读取到内存。若已将第一个512字节的数据(不为特征值)存储到磁盘相应的数据块中;该第二个512字节的数据为目标特征值,虽然未被存储到相应的数据块,但对应的地址项中已记录该第二个512字节的数据为目标特征值;而内存中的第三个512字节的数据和第四个512字节的数据还未被分配数据块,也未被记录为目标特征值。则该第一数据为该第三个512字节的数据,或者,该第一数据为内存中还未被存储到数据块中的该第四个512字节的数据。
403,在确定该第一数据与该第一特征值相同的情况下,更新与该第一数据对应的地址项的W位bit中的最高一位bit的值以指示该第一数据为特征值;并将与该第一数据对应的地址项中除了该最高一位bit之外的W-1位bit的值更新为第一特征标号。
在本申请实施例中,该第一特征标号为该第一特征值对应关系中与该第一特征值对应的特征标号。
具体的,上述将与该第一数据对应的地址项中除了该最高一位bit之外的W-1位bit的值更新为第一特征标号具体包括:根据第一特征值对应关系确定与该第一特征值对应的该第一特征标号,将该W-1位bit的值更新为该第一特征标号。可理解的,该第一特征标号也可以理解为本文其他实施例所描述的目标特征标号,该第一特征值也可以理解为本文其他实施例所描述的目标特征值。
可理解的,复用图1D,该第一特征标号即为第一特征值对应关系中与该第一特征值对应的该W-1位bit取值的组合。示例性的,该第一特征值为上述特征值B,则该第一特征标号即为该W-1位bit中最低一位取值为1,其他W-2个bit位取值为0的组合。
可选的,可以采用地址项中的最高一位bit取值为1记录数据为特征值。则上述更新与该第一数据对应的地址项的W位bit中的最高一位bit的值以指示该第一数据为特征值,包括:将该W位bit中的最高一位bit的值置为1;以表示该第一数据为特征值。可理解的,若记该第一特征值对应关系中记录的一个或多个特征值为特征值集合,该一个或多个特征值中的一个目标特征值属于该特征值集合中的一个元素。则上述该第一数据为特征值是指,该第一数据为该特征值集合中的一个元素(本文关于第一数据为特征值的描述均与此相同)。
可选的,也可以采用地址项中的最高一位bit取值为0记录数据为特征值。则上述更新与该第一数据对应的地址项的W位bit中的最高一位bit的值以指示该第一数据为特征值,包括:将该W位bit中的最高一位bit的值置为0;以表示该第一数据为特征值。
可理解的,该空闲bit位(也即该W位bit中的最高一位bit位)也可以理解为本文其他实施例所描述的第一标记位。相应的采用该第一标记位取值为第一数值指示该第一数据为特征值是指,若采用该地址项中的该空闲bit位取值为1记录数据为特征值,则相应的该第一数值即为该第一标记位取值为1;若采用该地址项中的该空闲bit位取值为0记录数据为特征值,则相应的该第一数值即为该第一标记位取值为0。
示例性的,在采用该地址项中的最高一位bit位(第31位bit位)取值为1记录数据为特征值,相应的该第一数值即为该第一标记位(第31位bit位)取值为1的情况下,如图4C所示,当该最高一位bit位(第31位)取值为1时,表示该地址项中除了该最高一位bit位之外的其他bit位中(第0位至第30位bit位)记录的是特征标号。如图4D所示,当该最高一位bit位取值为0时,表示该地址项中除了该最高一位bit位之外的其他bit位中(第0位至第30位bit位)记录的是存储该第一数据的数据块的地址信息或者为初始值。
可理解的,若采用地址项中的最高一位bit取值为1记录数据为特征值,则在需要根据该地址项查找第一数据的数据内容时,先判断该地址项中该最高一位bit的值是否为1,若是,则表示该地址项中的该W-1位bit记录的是第一特征标号,根据第一特征标号查找该第一特征值,该第一特征值的数据内容即为该第一数据的数据内容。若否,则表示该地址项记录的是存储该第一数据的数据块的地址信息,则通过该第一数据的数据块的地址信息查找该第一数据的数据内容。
可理解的,记数据块容量大小为H,地址项中记录的是数据块的地址信息为数据块在数据块表中的偏移量,本申请实施例提供的方法对于磁盘容量大小小于或等于2W-1*H的磁盘存储空间都适用。对于磁盘分区存储空间大小小于或等于2W-1*H的分区,所包括的数据块的数量最多为2W-1,由此可见,最多只需采用地址项中的第0位至第W-1位bit记录磁盘中的数据块的地址信息。而该地址项的W位bit中的最高一位空闲不用(也即该W位bit中的最高一位bit为空闲bit位),则可以采用W位bit中的最高一位bit记录数据是否为特征值,若是,则不实际存储该数据,而是采用该W位bit中除了该最高一位bit之外的W-1位bit记录该数据为目标特征值。
可理解的,采用该W位bit中的最高一位bit(空闲bit位)记录数据是否为特征值,可以区分该W位bit记录的是特征标号还是数据块的地址项信息。在根据对应的地址项查找第一数据的数据内容时,通过该最高一位bit判断该地址项中记录的是特征标号还是数据块的地址信息,若该最高一位bit指示该地址项中记录的是特征标号,则通过第一特征值对应关系查找与该特征标号对应的特征值(该特征值的数据内容即为该第一数据的数据内容)。若该最高一位bit指示该地址项中记录的不是特征标号,则根据该数据块的地址信息查找该数据块的数据内容(该数据块的数据内容即为该第一数据的数据内容)。
示例性的,复用图1B,数据块容量大小为512字节,地址项大小为4字节,对于容量大小小于或等于(231*512字节)=1T的磁盘分区,所包括的数据块的数量即231。最多只需采用如图1B所示的该地址项的101部分,也即地址项中的第0位至第30位bit记录磁盘中的数据块的地址信息。而如图1B所示的该地址项的102部分,也即该地址项的第31位bit空闲不用。则可以采用该第31位bit记录数据是否为特征值;若是,则不实际存储该数据,而是采用该32位bit中除了该最高一位bit之外的31位bit记录该数据为目标特征值。
示例性的,如图2A和图2B所示,记上述新增备忘录数据内容的备忘录记录为文件A,用户点击保存控件301,响应于该第二用户操作,即作用在保存控件301的点击操作,电子设备接收存储文件A的指令,继而启动数据存储。若数据处理的最小单元为512字节,该文件A中包含第一数据“aaaaaa...”(该第一数据的数据内容为512个英文字符a)。特征值中包括字符串数据内容为512个英文字符a的目标特征值,或者特征值中包括二进制编码的512字节为01100001的重复串的目标特征值(也就是说,512字节中的每个字节的8位bit的二进制编码都为01100001)(可理解的,英文字符a的ASCII的二进制编码为01100001)。则该第一数据为该目标特征值。则采用该第一数据的地址项的W位bit中的最高一位bit记录该第一数据为特征值,该第一数据的地址项W位bit中除该最高一位bit之外的W-1位bit记录该第一数据为该目标特征值。具体的,根据第一特征值对应关系确定与该目标特征值对应的目标特征标号,将该W-1位bit的值更新为该目标特征标号。
可理解的,也可以采用该W-1位bit中的部分bit位记录该第一数据为目标特征值(例如只采用该W-1位bit中的低W-2位bit记录该第一数据为目标特征值、只采用该W-1位bit中的高W-2位bit记录该第一数据为目标特征值等,本申请实施例对此不做限定)。可理解的,在所记录的特征值的数量小于或等于2W-2的情况下,可以考虑只采用该W位bit中的部分bit位记录数据为目标特征值。示例性的,复用图1B,第0位至第30位共31位bit空闲不用,若需要记录的目标特征值的数量小于或等于230的情况下,则可以采用该31位bit中的部分bit记录数据为目标特征值。例如,当需要记录的目标特征值的数量为1024(210=1024)的情况下(也即1024个目标特征值),可以只采用该31位bit中的任意10位bit记录数据为目标特征值(例如,采用该31位bit中的低10位bit位记录该1024个目标特征值。可理解的,这种实现方式只比采用该W-1位bit中全部bit位记录该第一数据为目标特征值少几个bit位,可以记录的特征值数量少一些,其具体实现方式与采用该W-1位bit中全部bit位记录该第一数据为目标特征值的方式类似,在此不再详述。
采用本申请实施例提供的数据去重方法,确定第一数据是否为第一特征值;若是,则采用该第一数据的地址项中的W个bit位记录该第一数据为该第一特征值,不需分配数据块存储该第一数据,提升存储空间利用率的同时减少性能损耗。
可选的,在一些实施例中,在确定该第一数据为该目标特征值的情况下,可以不再将该第一数据存储到目标磁盘分区的数据块中;该目标磁盘分区为与该第一文件所属文件系统对应的磁盘分区。可选的,在另外一些实施例中,在确定该第一数据为该目标特征值的情况下,也可以将该第一数据存储到目标磁盘分区的数据块中。具体是否将该第一数据存储到数据块中,本申请实施例对此不做限定。
示例性的,在不影响设备的cpu占用率,将该第一数据存储到数据块中更便于存取、修改或删除等数据操作时,也可以选择将该第一数据存储到数据块中。具体的,将该第一地址项的第一标记位取值为第一数值以指示该第一数据为特征值,在该第一地址项中的第二标记位记录该目标特征标号(该第二标记位为该第一地址项中除该第一标记位之外的其他二进制位中的部分二进制位),以及在第三标记位记录存储该第一数据的数据块的地址信息。在该第一地址项中除第一标记位之外的其他二进制位中记录存储该第一数据的数据块的地址信息(该第三标记位为该第一地址项中除该第一标记位和该第二标记位之外的其他二进制位)。
可理解的,在该第一数据为该目标特征值时,将该第一地址项的第一标记位取值为第一数值以指示该第一数据为特征值,该第一标记位也可以用于标记出现特征值的位置,或者标记出该第一数据为特征值,以做其他数据处理,例如做数据筛选处理等,本申请实施例对此不做限定。
404,在确定该第一数据与该第一特征值不相同的情况下,确定目标磁盘分区中是否已经存储有目标数据块,该目标数据块的数据内容与该第一数据的数据内容相同。
在本申请实施例中,该目标磁盘分区为与该第一文件所属文件系统对应的磁盘分区。
在本申请实施例中,如图4G所示,上述步骤404中确定该目标磁盘分区中是否已经存储有该目标数据块,具体包括以下步骤:
4401,计算该第一数据的特征标识。
可选的,该特征标识可以为第一特征标识,当两个数据的第一特征标识不一致的情况下,这两个数据的数据内容一定不相同;当两个数据的第一特征标识一致的情况下,这两个数据的数据内容可能相同。示例性的,该第一特别标识可以为总和校验码checksum。
在本申请实施例中,总和检验码checksum为用于在数据处理和数据通信领域中,校验目的一组数据项的和。在本申请实施例中,在需要将第一数据存储到目标存储空间的情况下,通过判断该第一数据的checksum与目标存储空间中第二数据块的checksum是否相同,从而判断该第一数据的数据内容与该第二数据块的数据内容是否可能相同。
可选的,该第一数据的checksum的计算方式可以为,通过循环冗余校验(cyclicredundancy check 32,CRC32)计算CRC码,该CRC码即为checksum的值。具体的,若第一数据对应的信息字段(该信息字段是指该第一数据的二进制编码序列)为K位二进制编码序列,校验字段为R位二进制编码序列,R次多项式为g(x)。则该CRC码的计算方式为在K位信息字段的后面添加R个0,再除以g(x)对应的二进制编码序列,得到的余数即为CRC码对应的二进制编码序列(该CRC码对应的二进制编码序列应为R-1位;若不足,则在高位补0)。
可选的,该第一数据的checksum的计算方式还可以为,将第一数据的数据内容按2byte划分开来,每2byte组成一个16bit的值,如果最后有单个byte的数据,补一个byte的0组成2byte;将所有的16bit值累加到一个32bit的值中;将32bit值的高16bit与低16bit相加到一个新的32bit值,若新的32bit值大于0Xffff,再将新值的高16bit与低16bit相加,最后将所得的值按位取反,即得到checksum值。
由上述checksum的计算方式可知,对于checksum不同的两个数据,这两个数据的数据内容一定不相同;对于checksum相同的两个数据,这两个数据的数据内容可能相同也可能不相同。可理解的,还可以通过其他计算方式计算该checksum,本申请实施例对此不做限定。
可选的,该特征标识可以为第二特征标识,该第二特征标识可以唯一标识一个数据。也就是说,当两个数据的第二特征标识一致的情况下,这两个数据的数据内容相同;当两个数据的第二特征标识不一致的情况下,这两个数据的数据内容不相同。示例性的,该第二特征标识可以通过散列算法或指纹算法等算法计算得到,也可以通过比该散列算法或指纹算法等计算量小、性能损耗小的其他算法计算得到。
4402,确定目标磁盘分区是否存在第二数据块,该第二数据块的特征标识与该第一数据的特征标识相同。
可理解的,该目标磁盘分区为与该第一文件的所属文件系统对应的磁盘分区。
可理解的,本申请其他实施例提供的第一数据和第二数据块所存储的第二数据可以为同一文件系统中的同一文件的数据,也可以为同一文件系统中的不同文件的数据。示例性的,该第一数据和该第二数据都为EROFS的a文件中的数据;或者,该第一数据为EROFS的a文件中的数据,该第二数据为EROFS的b文件中的数据。
在本申请实施例中,在考虑数据去重上限的情况下,确定目标磁盘分区是否存在该第二数据块具体可以为:根据重复计数表确定目标磁盘分区是否存在该第二数据块。可理解的,该重复计数表可以为如图1F所示的第二信息表或如图1G所示的第二信息表,关于第二信息表的描述请参照本申请其他实施例。
在本申请实施例中,通过设置循环长度以及根据该第二信息表查找是否存在该第二数据块。示例性的,该循环长度为该第二信息表的总记录数,循环起点为0(相当于基地址为0),循环增量为1。具体的,若第二信息表中的总记录数有20条,则对应的循环语句为:for(i=0;i<20;i+1),该i的值与第二信息表中的第(i+1)条记录的偏移量相等。根据该第二信息表查找是否存在该第二数据块包括:在第二信息表中查找与目标偏移量(该目标偏移量的值为i)对应的目标特征标识;判断该目标特征标识与第一数据的特征标识是否相同;在确定该目标特征标识与第一数据的特征标识相同的情况下,确定与该目标特征标识对应的数据块为该第二数据块。
可选的,在获取到目标特征标识后,判断该目标特征标识与第一数据的特征标识是否相同之前,先判断该目标特征标识是否为初始值,若该特征标识为初始值,则说明该特征标识对应的数据块未被用于存储数据内容。此时不需再执行判断该目标特征标识与第一数据的特征标识是否相同,而是将i的值加1,继续循环获取下一个目标特征标识。
可选的,该循环起点也可以为其他参考值。示例性的,该循环起点为2(相当于基地址为2),则对应的循环语句为:for(i=2;i<22;i+1),相应的该i的值减2(该i的值减2相当于偏移量)与第二信息表中的第(i-1)条记录的偏移量相等。
在本申请实施例中,在不考虑数据去重上限的情况下,确定目标磁盘分区是否存在该第二数据块具体可以为:根据第一信息表确定目标磁盘分区是否存在该第二数据块,该第二数据块的特征标识与该第一数据的特征标识相同。具体的,通过设置循环长度以及根据该第一信息表查找是否存在该第二数据块。关于具体如何设置循环长度以及根据该第一信息表查找是否存在该第二数据块的方法与上文通过设置循环长度以及根据该第二信息表查找是否存在第二数据块(第二数据块的特征标识与第一数据的特征标识相同)的查找方式类似,在此不再详述。
可选的,该第二数据块也可以约束为目标磁盘分区中存储了属于该第一文件的第二数据的数据块。在这种情况下,本申请实施例步骤404提供的数据去重方法为基于同一文件的数据去重方法。可理解的,在这种情况下,采用第二信息表记录第二数据块与第二数据块的特征标识之间的关联关系,复用图1H,该第二信息表中需要记录该第二数据块的所属文件号。
4403,在确定存在该第二数据块的情况下,将该W位bit位中的该最高一位bit位更新为第二数值;该第二数值用于指示该第一数据不是特征值;并将该第二数据块的地址信息作为存储该第一数据的数据块的地址信息记录到该第一地址项中的该W-1位bit位。
可理解的,本文其他实施例所描述的将第一标记位更新为第二数值,以指示该第一数据不是特征值,即为上述将该W位bit位中的该最高一位bit位更新为第二数值,该最高一位bit位为该第一标记位。在采用该最高一位bit位为0记录该第一数据不是特征值的情况下,该第二数值即为该第一标记位取值为0;在采用该最高一位bit位为1记录该第一数据不是特征值的情况下,该第二数值即为该第一标记位取值为1。
可选的,在该第一数据的特征标识为上述第一特征标识的情况下,在确定存在该第二数据块(该第二数据块的第一特征标识与该第一数据的第一特征标识相同)后,还需要进一步判断该第二数据块的数据内容与该第一数据的数据内容是否相同。上述在确定存在该第二数据块的情况下,将该第二数据块的地址信息作为该第一数据的数据块地址信息存储到该第一数据的地址项中,包括:在确定存在该第二数据块(该第二数据块的第一特征标识与该第一数据的第一特征标识相同)的情况下,确定该第一数据的数据内容与该第二数据块的数据内容是否相同;若是,则将该第二数据块的地址信息作为该第一数据的数据块地址信息存储到该第一数据的地址项中。示例性的,复用图1J,若该第一数据即为图1J中的数据s1,且该数据s1不为特征值,且文件A中的s1与文件B中的s1的数据内容相同的情况下,如图4H所示该文件A的inode和文件B的inode中记录的重复数据s1的数据块的地址信息指向同一个数据块。
关于如何判断该第二数据块的数据内容与该第一数据的数据内容是否相同,请参照上文步骤402中关于如何判断该第一数据的字符串数据内容与该第一特征值的字符串数据内容是否相同的方法,在此不再详述。
可理解的,先通过第一特征标识(例如总和校验码checksum)判断第一数据的数据内容和第二数据块的数据内容是否可能相同;在第一数据的数据内容和第二数据块的数据内容可能相同的情况下,再进一步确认第一数据的数据内容与第二数据块的数据内容是否相同。减少了当第一数据的数据内容和第二数据块的数据内容一定不同的情况下的数据内容比较所产生的计算量和功耗,提升存储空间利用率的同时减少了性能损耗。
在本申请实施例中,该第二数据块的数据内容的获取方式可以为,在该第二信息表中使得第二数据块与对应的特征标识产生关联关系所采用的方式为,该第二信息表与数据块表的行记录对应的偏移量相等的情况下,与上述目标特征标识对应的数据块(也即第二数据块)即为数据块表中与上述目标偏移量对应的数据块。该第二数据块的数据内容即为数据块表中与该目标偏移量对应的数据块的数据内容。
可理解的,该数据块表为与该第一文件的所属文件系统对应的数据块表。该数据块表中记录了与该第一文件的所属文件系统对应的目标磁盘分区中包括的数据块的信息。示例性的,在该第一数据为内存中的数据1,该数据1的所属文件为文件A,该文件A的所属文件系统为F2FS,则该数据块表为与该F2FS文件系统对应的数据块表,该数据块表中记录了与该F2FS文件系统对应的目标磁盘分区中包括的数据块的信息。在该第一数据为内存中的数据2,该数据2所属文件为文件B,该文件B的所属文件系统为EXT4,则该数据块表为与该EXT4文件系统对应的数据块表,该数据块表中记录了与该EXT4文件系统对应的目标磁盘分区中包括的数据块的信息。可理解的,数据块的信息包括该数据块的地址信息和该数据块的数据内容。
在本申请实施例中,该第二数据块的数据内容的获取方式还可以为,在该第二信息表中使得第二数据块与对应的特征标识产生关联关系所采用的方式为,该第二信息表中明确记录特征标识与对应的第二数据块的地址信息之间的关联关系的情况下,该第二数据块的地址信息即为第二信息表中与该目标偏移量对应的数据块的地址信息。而该第二数据块的数据内容即为数据块表中与该第二数据块的地址信息对应的数据块的数据内容。
可选的,在本申请实施例中,在考虑上述数据去重上限的情况下,该第二信息表还用于记录该第二数据块的被引用次数。在将该第二数据块的地址信息作为该第一数据的数据块地址信息存储到地址项中之前,该方法还包括:确定该第二数据块是否满足数据去重上限;具体的,根据重复计数表确定该第二数据块的被引用次数是否小于第一阈值。上述在确定存在该第二数据块的情况下,将该第二数据块的地址信息作为该第一数据的数据块的地址信息存储到地址项中包括:在确定存在该第二数据块,且该第二数据块的被引用次数小于第一阈值的情况下,将该第二数据块的地址信息作为该第一数据的数据块地址信息存储到第一数据的地址项中,并将该第二信息表中该第二数据块的被引用次数加1。可理解的,上述步骤502中确定目标磁盘分区中是否存在第二数据块与本步骤503中上述确定该第二数据块是否满足数据去重上限两个步骤可以一起执行,或者先后执行,其先后顺序不做限定。
可理解的,该第二数据块的被引用次数也可以称为本文其他实施例所描述的第一被引用次数。
在本申请实施例中,该第一阈值为数据去重上限。可理解的,一方面,若不设置去重上限,第二数据对应的目标数据块的被引用次数会逐渐增大,导致目标数据块的被访问的频率也逐渐增多,而长期反复地读取目标磁盘分区中同一个目标数据块的数据,会加速存储该目标数据块的存储介质(目标磁盘分区)的损坏,缩短存储介质的使用寿命。因此,设置去重上限,可以避免目标数据块被频繁访问而导致的加速存储介质损坏速度的问题。另一方面,目标数据块被引用次数越多,重复度越高,会为目标直接索引表的索引带来一定的困难,以及,导致修改操作的速度变慢,降低修改操作的效率。因此,设置去重上限,可以避免重复度过高带来的索引困难和重复度过高带来的降低修改操作的效率等问题。
可选的,本申请实施例还提供了一种在地址项中记录数据块的被引用次数的方法。具体的,根据目标磁盘分区的容量大小和数据块的容量大小,计算用于记录目标磁盘分区中的数据块的地址信息的地址项中的空闲bit位。关于如何计算地址项中的空闲bit位请参照本申请其他实施例。在空闲bit位不用于记录与地址项对应的数据为特征值的情况下,可以采用空闲bit位中的全部bit记录该地址项存储的数据块的地址信息对应的目标数据块的被引用次数。在空闲bit位中有部分bit位用于记录与该地址项对应的数据为特征值的情况下,可以采用空闲bit位中的部分bit记录该目标数据块的被引用次数。
示例性的,设地址项中高12位bit空闲不用,则在该12位bit不用于记录与地址项对应的数据为特征值的情况下,可以采用该12位bit中的全部bit,记录该地址项存储的数据块的地址信息对应的目标数据块的被引用次数,并在每个存储了该目标数据块的地址信息的地址项中都记录该目标数据块的被引用次数。可记录的该目标数据块的被引用次数的最大值为212。在查找该目标数据块的被引用次数时,只需查找到记录了该目标数据块的地址信息的目标地址项,再读取该目标地址项中的高12位bit的取值即可得到该目标数据块的被引用次数的大小。
在该12位bit有部分bit用于记录与地址项对应的数据为特征值的情况下,采用该12位bit中的部分bit(例如低9位bit)记录目标数据块的被引用次数,并在每个存储了该目标数据块的地址信息的地址项中都记录该目标数据块的被引用次数。在查找该目标数据块的被引用次数时,只需找到一个存储了该目标数据块的地址信息的地址项,读取该高12位bit中低9位bit的取值,则可得到该目标数据块的被引用次数。可记录的该目标数据块的被引用次数的最大值为29。可选的,该高12位bit中的高3位bit(除了上述低9位bit之外的bit位)可以用于记录数据是否为目标特征值,该高3位bit中的一位、两位或三位bit为1代表数据为目标特征值,可以记录的特征值数量为7。可选的,该高3位bit可以用于记录数据是否为目标特征值,具体的,该高3位bit中的最高一位bit用于记录数据是否为特征值,该高3位bit中除了最高一位bit之外的2位bit用于记录该数据是否为目标特征值,该2位bit中的一位或两位取值为1代表数据为目标特征值,可以记录的目标特征值为3。
4404,在根据该第二信息表确定不存在第二数据块,该第二数据块的特征标识与该第一数据的特征标识相同;或者,在根据该第二信息表确定不存在第二数据块,该第二数据块的特征标识与该第一数据的特征标识相同且该第二数据块的数据内容与该一数据的数据内容相同;或者,在根据该第二信息表确定不存在第二数据块,该第二数据块的特征标识与该第一数据的特征标识相同,且该第二数据块的数据内容与该一数据的数据内容相同,以及该第二数据块对应的被引用次数小于第一阈值的情况下,将第一数据存储到参考数据块中,以及在第二信息表中记录该参考数据块对应的特征标识和记录该参考数据块的被引用次数为1。
示例性的,根据该第二信息表确定存在0个第二数据块(该第二数据块的特征标识与该第一数据的特征标识相同)的情况下,将第一数据存储到参考数据块中(即为该第一数据分配新的数据块,该新的数据块记为参考数据块,该参考数据块用于存储该第一数据),以及在第二信息表中记录该参考数据块对应的特征标识和记录该参考数据块的被引用次数为1。
示例性的,根据该第二信息表中确定存在r(r为大于0的正整数)个第二数据块(该r个第二数据块的第一特征标识与该第一数据的第一特征标识相同,但该r个第二数据块的数据内容均与该第一数据的数据内容不相同)的情况下,将第一数据存储到参考数据块中,以及在第二信息表中记录该参考数据块对应的特征标识和记录该参考数据块的被引用次数为1。
在本申请实施例中,在根据该第二信息表确定第二数据块(该第二数据块的特征标识与该第一数据的特征标识相同,且该第二数据块的数据内容与该第一数据的数据内容相同)的被引用次数大于或等于第一阈值的情况下,继续执行步骤4402,循环语句中的i加1,并继续执行步骤4402、步骤4403以及步骤4404,继续查找该第二信息表中是否存在另外一个第二数据块,该另外一个第二数据块的特征标识与该第一数据的特征标识相同,且该第二数据块的数据内容与该第一数据的数据内容相同,以及该第二数据块对应的被引用次数小于第一阈值,直到循环语句中的i得到最大值仍然找不到该另外一个第二数据块的情况下,则确定不存在第二数据块(该第二数据块的特征标识与该第一数据的特征标识相同,且该第二数据块的数据内容与该一数据的数据内容相同,以及该第二数据块对应的被引用次数小于第一阈值)。
示例性的,根据该第二信息表确定存在3个第二数据块(该3个第二数据块的特征标识均与该第一数据的特征标识相同,且该3个第二数据块的数据内容均与该第一数据的数据内容相同,但该第二数据块对应的被引用次数均大于或等于第一阈值)的情况下,将第一数据存储到参考数据块中,以及在第二信息表中记录该参考数据块对应的特征标识和记录该参考数据块的被引用次数为1。
示例性的,该第二信息表中存在2个第二数据块(该2个第二数据块中的一个第二数据块的特征标识与该第一数据的特征标识相同,且该第二数据块的数据内容均与该第一数据的数据内容相同,但该第二数据块对应的被引用次数大于或等于第一阈值;该2个第二数据块中的另外一个第二数据的数据内容的特征标识与该第一数据的特征标识相同,且该另外一个第二数据块的数据内容均与该第一数据的数据内容相同,以及该另外一个第二数据块对应的被引用次数小于第一阈值)的情况下,若先查找该2个第二数据块中被引用次数大于或等于第一阈值的第二数据块,则仍会继续循环执行步骤4402、步骤4403以及步骤4404,直到查找到该2个第二数据块中的该另外一个第二数据块。若先查找到该2个第二数据块中的该另外一个第二数据块,则不需再循环执行步骤4402、步骤4403以及步骤4404。
可理解的,在一些实施例中,在第二信息表中记录该第二数据块的所属文件号,将本申请实施例的数据去重方法约束为基于同一文件的数据去重存储的情况下,则在执行完上述步骤4402确定存在该第二数据块之后,以及上述将该第二数据块的地址信息作为该第一数据的数据块地址信息存储到第一数据的地址项中之前,该数据去重方法还包括:
根据该第二信息表确定该第二数据块所属文件是否为该第一文件;若是,进一步判断该第一数据与该第二数据块是否满足数据去重条件;若否,则确定该第一数据与该第二数据块不满足数据去重条件。可理解的,上述进一步判断该第一数据与该第二数据块是否满足数据去重条件通过继续执行上述步骤4402至步骤4404得到;在上述确定该第一数据与该第二数据块不满足数据去重条件之后,执行上述步骤4404以存储该第一数据。
在本申请实施例中,在第一数据不为特征值时,可以先通过计算第一特征标识(例如总和校验码checksum)的方法判断第一数据的数据内容和第二数据块的数据内容是否可能相同;在第一数据的数据内容和第二数据块的数据内容可能相同的情况下,再进一步确认第一数据的数据内容与第二数据块的数据内容是否相同。或者,也可以通过散列算法、指纹算法或其他计算量更小的算法计算独特的第二特征标识的方法,判断第一数据的数据内容是否与该第二数据块的数据内容相同。若该第一数据的数据内容与该第二数据块的数据内容相同,则该第一数据与该第二数据块共用同一个数据块的地址信息,进一步提升存储空间利用率。最后检查该第二数据对应的数据块的被引用次数是否大于去重上限,在达到数据去重效果提高了存储空间利用率的同时,避免第二数据块被频繁访问而导致的加速存储介质损坏速度的问题。
在本申请实施例中,该第一数据还可以是修改后的数据。具体的,如图5所示,包括以下步骤:
501,在接收到将第一文件中的第三数据修改为第四数据的指令后,确定该第三数据是否为特征值。
具体的,确定该第三数据的地址项的W位bit中的最高位bit的取值是否指示该第三数据为特征值,若是,则该第三数据为特征值。示例性的,若采用地址项的最高位bit取值为1表示数据为特征值,则在该第三数据的W位bit中的最高位bit的取值为1的情况下,该第三数据为特征值。示例性的,若采用地址项的最高位bit取值为0表示数据为特征值,则在该第三数据的W位bit中的最高位bit的取值为0的情况下,该第三数据为特征值。
502,在确定该第三数据为特征值的情况下,将该第四数据存储到第一文件中。
可理解的,上述将第四数据存储到第一文件中包括:将第四数据作为步骤402中的第一数据,并执行步骤402-步骤404,以判断该第四数据是否为特征值,若是则记录该第四数据为特征值;若否则确定目标磁盘分区是否已经存储有目标数据块,该目标数据块的数据内容与该第四数据的数据内容相同。可理解的,步骤403中,第一数据的地址项即为该第四数据(也可以理解为该第三数据)的地址项。
503,在确定该第三数据不为特征值的情况下,确定该第四数据是否为特征值。
具体的,确定该第四数据是否为特征值与上述步骤402中确定第一数据是否为特征值的确定方法一致,在此不再详述。
504,在确定该第四数据为特征值的情况下,记录该第四数据为特征值。
具体的,记录该第四数据为特征值与上述步骤403中记录该第一数据为特征值的记录方法一致,在此不再详述。
505,在确定该第四数据不为特征值的情况下,获取第二信息表中该第三数据对应的数据块的被引用次数,并确定该被引用次数是否等于1。
在本申请实施例中,上述指令包括该第三数据的数据内容在该第一文件中的目标起始字节和目标结束字节,根据该第三数据的目标起始字节和目标结束字节所占用的逻辑块号以及该第一文件的inode的地址项查找与该第三数据对应的数据块的地址信息。为便于描述,记与该第三数据的对应的数据块为第三数据块,与该第三数据对应的数据块的地址信息记为第三数据块的地址信息。
可理解的,该第三数据对应的数据块的被引用次数也可以称为本申请其他实施例所描述的第二被引用次数。
关于如何根据该第三数据的目标起始字节和目标结束字节所占用的逻辑块号以及该文件A的inode的地址项查找与该第三数据对应的数据块的地址信息,请参照本文其他实施例。
示例性的,如图2E所示,将上述“会议记录8”所对应的备忘录记录记为文件A,用户点击保存控件401,响应于该第三用户操作,即作用在保存控件401的点击操作,电子设备接收将“会议记录8”修改为“会议记录8(重要会议)”的指令,启动数据更新存储。则该第三数据的数据内容为该“会议记录8”,该第四数据的数据内容为该“会议记录8(重要会议)”。具体的,设电子设备的地址项结构如图1A所示,且索引块大小和数据块大小均为1k;该电子设备接收将“会议记录8”修改为“会议记录8(重要会议)”的指令,该指令包括了该“会议记录8”在该文件A中的目标起始字节为0字节处和目标结束字节为9字节处的信息,根据该目标起始字节和目标结束字节可以确定该“会议记录8”所占用的逻辑块号为该文件A的inode中的第一个逻辑块号,根据该逻辑块号即能查找到与该“会议记录8”对应的数据块的地址信息。
可选的,获取该被引用次数可以为,在该第二信息表中使得目标数据块与对应的特征标识产生关联关系所采用的方式为,该第二信息表与数据块表的行记录对应的偏移量相等的情况下,根据该第三数据块的地址信息得到该第三数据块在数据块表中的偏移量(该第三数据的地址信息即为该偏移量),再根据该偏移量获取第二信息表中与该偏移量对应的行记录中记录的该被引用次数。
可选的,查找第二信息表中该被引用次数还可以为,在该第二信息表中使得目标数据块与对应的特征标识产生关联关系所采用的方式为,该第二信息表中明确记录特征标识与对应的目标数据块的地址信息之间的关联关系的情况下,获取第二信息表中与该第三数据块的地址信息对应的该被引用次数。
可理解的,该第三数据和第四数据为文件系统数据处理的最小单元。具体的,该第三数据的数据内容为该第三数据块的数据内容,该第四数据的数据内容为该第三数据块修改后的数据内容。可理解的,将第三数据修改为第四数据的涵义为,将该第三数据块的数据内容修改为该第四数据的数据内容。
具体地,该第三数据的数据内容为str1,该第三数据块的数据内容也为str1,该第四数据的数据内容为str2,则将第三数据修改为第四数据的涵义为将第三数据块的数据内容“str1”修改为“str2”。示例性的,该str1为“adcddddabc”,该str2为“adceeeeabc”,将第三数据修改为第四数据的涵义即为将“adcddddabc”修改为“adceeeeabc”。可理解的,该第三数据包括需要修改的数据内容,该需要修改的数据内容为第三数据的数据内容中的部分数据内容或全部数据内容。例如,上述str5中需要修改的数据内容“dddd”即为第三数据的数据内容中需要修改的部分数据内容。
506,在确定该被引用次数等于1的情况下,将第四数据存储到该第一文件中,并删除与该第三数据相关的信息。
可理解的,上述将第四数据存储到该第一文件中包括:将第四数据作为上述步骤4401中的第一数据,并执行步骤4401至步骤4404(本文关于“将第四数据存储到第一文件中”的涵义均与此相同)。
可理解的,将第四数据作为步骤4401中的第一数据并执行步骤4401至步骤4404,可以判断该第一文件中是否已经存储有第二数据块(该第二数据块的特征标识与该第四数据的特征标识相同,且该第二数据块的数据内容与该第四数据的数据内容也相同,以及该第二数据块对应的被引用次数小于第一阈值)。
可理解的,若存在该第二数据块,则将该第二数据块的地址信息作为该第四数据的数据块地址信息;若不存在该第二数据块,则为该第四数据分配新的数据块,该第四数据的数据块地址信息为该新的数据块的地址信息。
可理解的,该第三数据对应的数据块的被引用次数等于1,则说明该第三数据对应的数据块只被该第三数据引用,则在修改第三数据时可以直接对第三数据进行修改或删除等操作,不会对文件A的其他数据造成影响。
可选的,上述删除与该第三数据相关的信息可以为,将第一文件的inode的地址项中记录的该逻辑块号对应的该第三数据的数据块的地址信息替换(修改)为该第四数据的数据块的地址信息;将第三数据对应的数据块删除;以及,将第二信息表中与该第三数据相关的记录删除。
可选的,上述删除与该第三数据相关的信息还可以为,将第一文件的inode的地址项中记录的该逻辑块号对应的该第三数据对应的数据块信息删除(该数据块信息包括第三数据在该第一文件的inode的地址项中对应的逻辑块号与该第三数据对应的数据块的地址信息的关联关系)(下文关于“将第一文件的inode的地址项中记录的该逻辑块号对应的该第三数据对应的数据块信息删除”的涵义均与此相同);在该第一文件的inode的地址项中最后一个用于记录数据内容的数据块地址信息的地址项的下一个地址项,记录该逻辑块号和该第四数据的数据块地址信息的关联关系;将第三数据对应的数据块删除;以及,将第二信息表中与第三数据相关的记录删除。
可选的,上述将第三数据对应的数据块删除可以为,将该第三数据对应的数据块置为不可用;具体的,将第三数据的数据块置为dirty(第一文件所在的文件系统会定期将置为dirty的数据块的内容清空后重置为可使用)。可选的,上述将第三数据对应的数据块删除还可以为,将第三数据对应的数据块的数据内容清空(具体包括将数据块表中记录的该第三数据的数据块的数据内容置为null),以及将位示图(bitmap)中对应记录该第三数据的数据块的使用情况的bit位置为0;上述bitmap用bit位记录与该bit位对应的数据块的使用情况,具体的,该bit位为1则表明该数据块被分配用于存储数据,若该bit位为0,则表明该数据块未被分配用于存储数据。
可选的,若不存在该第二数据块,上述删除与该第三数据相关的信息还可以为,将第三数据的数据块内容替换(修改)为该第四数据的数据内容,以及将第二信息表中该第三数据对应的特征标识替换(修改)为该第四数据对应的特征标识。
示例性的,在上述将“会议记录8”修改为“会议记录8(重要会议)”中,该第三数据为“会议记录8”,该第四数据为“会议记录8(重要会议)”。则需要判断“会议记录8”所对应的数据块的被引用次数是否等于1,若是,则表明该“会议记录8”对应的数据块只被该“会议记录8”引用,可以直接对该“会议记录8”进行修改和删除等操作。且在将“会议记录8”修改为“会议记录8(重要会议)”,存储该“会议记录8(重要会议)”时,需进一步判断在目标磁盘分区中是否已有数据块存储了该“会议记录8(重要会议)”且满足去重条件,若是,则将该数据块的地址信息作为该第四数据的地址信息。
507,在确定该被引用次数不等于1的情况下,确定该被引用次数是否大于1。
508,在确定该引用次数大于1的情况下,将第二信息表中与该第三数据对应的数据块的被引用次数减1,并将第四数据存储到第一文件中。
可选的,将第四数据存储到第一文件中可以为,将第一文件的inode的地址项中记录的该逻辑块号对应的该第三数据的数据块的地址信息替换(修改)为该第四数据的数据块的地址信息。
可选的,将第四数据存储到第一文件中还可以为,将第一文件的inode的地址项中记录的该逻辑块号对应的该第三数据对应的数据块信息删除,并在该第一文件的inode的地址项中最后一个用于记录数据内容的数据块的地址信息的地址项的下一个地址项,记录该逻辑块号和该第四数据的数据块的地址信息的关联关系。
可理解的,该引用次数大于1则表示第三数据在多处被引用。示例性的,该第一数据的数据块的地址信息和该第三数据的数据块的地址信息一致,而在目标磁盘分区中只存储了一份数据,该第一数据和该第三数据共用一个数据块的同一份数据。则为了保证在修改第三数据的同时该第一数据的数据块的地址信息的使用不会出错,则不能直接修改该第三数据,而是应该为该第四数据重新申请一个新的数据块,或者,查找是否存在第二数据(该第二数据块的特征标识与该第四数据的特征标识相同,且该第二数据块的数据内容与该第四数据的数据内容也相同,以及该第二数据块对应的被引用次数小于第一阈值),将该第二数据块的地址信息作为该第四数据的数据块的地址信息。
示例性的,在上述将“会议记录8”(第三数据)修改为“会议记录8(重要会议)”(第四数据)中,需要判断“会议记录8”所对应的数据块的被引用次数是否大于1,若是,则表明该“会议记录8”对应的数据块除了被该“会议记录8”引用之外,还被别的数据引用(例如,该数据块除了被该“会议记录8”引用之外,还被第一数据引用),则为了保证在修改第三数据的同时该第一数据的数据块的地址信息的使用不会出错,则不能直接修改该第三数据。
可理解的,本申请实施例对于该第一数据还可以是修改后的该第四数据的数据去重方法为针对一种可读可写文件系统的数据去重,对于只读文件系统的而言,由于只读文件系统存在只读权限控制,不允许对文件数据内容进行修改,故本申请图5所示的数据去重方法不适用于只读文件系统,或者说是不适用于目标磁盘分区中的只读分区。
在本申请实施例中,对修改后的第四数据进行数据去重判断,查看目标磁盘分区中是否已经存储有该第二数据,使得第一文件的在所有需要存储数据的场景下(包括图4A所示的新建流程和图5所示的修改流程)都进行数据去重,提高存储空间利用率。
在本申请实施例中,除了上述如图4A所示的数据去重方法之外,本申请实施例还包括如图6所示的数据去重方法,具体包括以下步骤:
601,在接收到删除第一文件中的第五数据的指令后,确定该第五数据是否为特征值。
具体的,通过与该第五数据对应的地址项的中的W位bit中的最高一位bit位判断该第五数据是否为特征值。
602,在确定该第五数据为特征值的情况下,将该第五数据的地址项中的W位bit都置为初始值。
可选的,在该W位bit的初始值的取值均为0的情况下,上述将该第五数据的地址项中的W位bit都置为初始值包括:将该W位bit的值置为0。
可选的,在该W位bit的初始值的取值均为1的情况下,上述将该第五数据的地址项中的W位bit都置为初始值包括:将该W位bit的值置为1。
603,在确定该第五数据不为特征值的情况下,获取第二信息表中该第五数据对应的数据块的被引用次数,并确定该被引用次数是否等于1。
在本申请实施例中,该指令包括该第五数据的数据内容在该第一文件中的目标起始字节和目标结束字节,根据该目标起始字节和目标结束字节所占用的逻辑块号以及目标索引表查找与该第五数据对应的数据块的地址信息。为便于描述,记与该第五数据的对应的数据块为第五数据块。
可理解的,该第五数据对应的数据块的被引用次数也可以称为本申请其他实施例所描述的第三被引用次数。
可理解的,查找第二信息表中该第五数据块的被引用次数的查找方法与上文步骤401查找第二信息表中第三数据块的被引用次数的查找方法相同,在此不再详述。
示例性的,如图2F和图2G所示,将上述“会议记录3”所对应的备忘录记录记为第一文件,用户删除第一文件中的数据内容“会议记录3”并点击了保存控件501后,电子设备接收删除“会议记录3”(第五数据)的指令。
604,在确定该被引用次数等于1的情况下,删除与该第五数据相关的信息。
上述删除与该第五数据相关的信息包括:将该第五数据对应的第五数据块删除,将第一文件的inode的地址项中记录的该逻辑块号对应的该第五数据对应的数据块信息删除,以及,将第二信息表中与该第五数据对应的记录删除。可理解的,上述将该第五数据对应的第五数据块删除与上述将第三数据对应的数据块删除的删除方法一致,这里不再详述。
可理解的,该第五数据对应的数据块的被引用次数等于1,则说明该第五数据对应的数据块只被该第五数据引用,则在删除第五数据时可以直接对第五数据进行删除等操作,且不会对第一文件的其他数据的使用造成影响。
示例性的,上述删除“会议记录3”(第五数据)中,需要判断该第五数据所对应的数据块的被引用次数是否等于1,若是,则表明该第五数据对应的数据块只被该第五数据引用,可以直接对该第五数据进行删除操作。
605,在确定该被引用次数不等于1的情况下,确定该被引用次数是否大于1。
606,在确定该被引用次数大于1的情况下,将该第五数据块对应的被引用次数减1。
在本申请实施例中,在确定该被引用次数大于1的情况下,将该第五数据块对应的被引用次数减1,并将第一文件的inode的地址项中记录的该逻辑块号对应的该第五数据对应的数据块信息删除。
可理解的,该第五数据对应的数据块信息包括第五数据在该第一文件的inode的地址项中对应的逻辑块号与该第五数据对应的数据块的地址信息的关联关系。
可理解的,该第五数据的数据内容包括该第五数据块中的全部数据内容,而对于该第五数据的数据内容包括第五数据块中的部分数据内容的情况,属于图5所示的修改第三数据的情况。
示例性的,上述删除“会议记录3”(第五数据)中,需要判断该第五数据所对应的数据块的被引用次数是否大于1,若是(例如,该备忘录中存储有两份数据内容皆为“会议记录3”的文件),则表明该第五数据对应的数据块除了被该第五数据引用之外,还被其他数据引用(例如,该第一数据和该第五数据共用一个数据块)。则为了保证在删除第五数据的同时该第一数据的数据块的地址信息的使用不会出错,则不能直接删除该第五数据对应的数据块。
可理解的,本申请实施例为针对一种可读可写文件系统的数据去重方法,对于只读文件系统的而言,由于只读文件系统存在只读权限控制,不允许对文件数据内容做删除操作,故本申请图6所示的数据去重方法不适用于只读文件系统,或者说是不适用于目标磁盘分区中的只读分区。
在本申请实施例中,在第五数据被多处引用时,为保证除了第五数据以外的其他引用了该第五数据对应的目标数据块的数据的使用不受影响,在需要删除该第五数据的情况下,保留该第五数据对应的数据块,删除目标直接索引表中该第五数据对应的逻辑块号的数据块的地址信息的记录,保证了去重机制下文件系统的数据完整性。
请参阅图7。如图7所示,本申请实施例还提供了另外一种数据去重方法,具体包括以下步骤:
701,在接收到存储第一文件的指令后,根据该第一文件的大小创建第一文件的索引节点。
在本申请实施例中,该索引节点包括地址项,该地址项包括W位二进制位bit,该W位bit位中的高P位bit位均为空闲bit位,该W为大于1的整数,该P为大于或等于1且小于W的整数。
关于如何根据该第一文件的大小创建第一文件的索引节点的具体描述请参照本申请其他实施例,在此不再详述。
关于第一文件和空闲bit位的相关描述请参照本申请其他实施例,在此不再详述。
可理解的,该W位bit位中的高P位bit位是指该W位bit位从最高一位bit算起的P个bit位。
示例性的,复用图1C,地址项大小为4字节,数据块容量大小为4k,目标磁盘分区的容量大小为4G,如图1C所示,最多需使用地址项中的103部分,也即第0位bit至第19位bit(共20位bit)记录目标磁盘分区中的数据块的地址信息,则104部分的12位bit空闲不用。
702,确定该第一文件中的第一数据与第二特征值对应关系中记录的一个或多个特征值中的第二特征值是否相同。
在本申请实施例中,该第二特征值为该一个或多个特征值中的任意一个特征值;该第二特征值对应关系用于记录特征值与特征标号之间的关联关系,该特征标号指示上述地址项中该高P位bit位的取值。
可理解的,该第二特征值对应关系中所包括的一个或多个特征值和对应的特征标号,可以存储在目标磁盘分区(该目标磁盘分区为与该第一文件所属文件系统对应的磁盘分区)的数据块中,也可以存储在其他存储空间的数据块中,本申请实施例对此不做限定。
关于如何确定该第一文件中的第一数据与第二特征值对应关系中记录的一个或多个特征值中的第二特征值是否相同,与上文步骤402中关于如何确定该第一文件中的第一数据与第一特征值对应关系中记录的一个或多个特征值中的第一特征值是否相同的方法类似,在此不再详述。
关于特征值的具体数据形式请参照本申请其他实施例的相关描述(例如上述步骤402中关于特征值的介绍)。
703,在确定该第一数据与该第二特征值相同的情况下,将与该第一数据对应的地址项中的该高P位bit位的值更新为第二特征标号。
在本申请实施例中,该第二特征标号为该特征值对应关系中与该第二特征值对应的特征标号。
具体的,上述将与该第一数据对应的地址项中的该高P位bit位的值更新为第二特征标号具体包括:根据第二特征对应关系查找与该第二特征值对应的该第二特征标号,将该高P位bit位的值更新为该第二特征标号。可理解的,该第二特征标号也可以理解为本文其他实施例所描述的目标特征标号,该第二特征值也可以理解为本文其他实施例所描述的目标特征值。
可理解的,复用图1C,该第二特征标号即为第二特征值对应关系中与该第二特征值对应的高P位bit位取值的组合。示例性的,该第一特征值为上述特征值B,则该第二特征标号即为P位bit中的最低一位取值为1,其他P-1位取值为0的组合。
可理解的,在该高P位bit位的初始值均为0的情况下,该高P位bit位的取值组合中除了该高P位bit位均取值为0的组合之外,其他任意取值组合均可用于记录目标特征值。也就是说,在该高P位bit位均取值为0的情况下,表示该第一数据不是特征值。
可理解的,在该高P位bit位取值的初始值均为1的情况下,该高P位bit位的取值组合中除了该高P位bit位均取值为1的组合之外,其他任意取值组合均可用于记录目标特征值。也就是说,在该高P位bit位均取值为1的情况下,表示该第一数据不是特征值。
可理解的,该高P位bit位(也即该W位bit中的高P位bit位)也可以理解为本文其他实施例所描述的第一标记位。相应的采用该第一标记位取值为第一数值指示该第一数据为特征值是指,若采用该高P位bit位取值的初始值均为0表示该第一数据不是特征值的情况下,则相应的该第一数值即为除了该第一标记位的二进制位取值均为0组合之外的其他该第一标记位的二进制取值的组合;若采用该高P位bit位取值的初始值均为1表示该第一数据不是特征值的情况下,则相应的该第一数值即为除了该第一标记位的二进制位取值均为1组合之外的其他该第一标记位的二进制取值的组合。
示例性的,对于地址项大小为4字节,数据块容量大小为4k,目标磁盘分区的容量大小为4G的磁盘分区,复用图1C,最多需使用地址项中的103部分的第0位bit至第19位bit(共20位bit)记录目标磁盘分区中的数据块的地址信息,则104部分的12位bit空闲不用。则可以采用空闲不用的104部分的该12位bit记录数据是否为目标特征值。在该12位空闲bit位的初始值均为0的情况下,该12位空闲bit位的取值组合中除了该12位bit位均取值为0的组合之外,其他任意取值组合均可用于记录目标特征值。可记录的目标特征值数量为212-1。在该12位空闲bit位取值的初始值均为1的情况下,该12位空闲bit位的取值组合中除了该12位bit位均取值为1的组合之外,其他任意取值组合均可用于记录目标特征值。可记录的目标特征值数量为212-1。
可理解的,记数据块容量大小为H,地址项中记录的是数据块的地址信息为数据块在数据块表中的偏移量,本申请实施例提供的方法对于目标磁盘分区容量大小小于或等于2W-1*H的磁盘分区都适用。对于目标磁盘分区存储空间大小小于或等于2W-1*H的分区,所包括的数据块的数量大于或等于2W-1,由此可见,最多只需采用地址项中的第0位至第W-1位bit记录磁盘中的数据块的地址信息。则该地址项的W位bit中包括的空闲bit位的数量P大于或等于1,可以记录的第二特征值的数量大于或等于1。
在本申请实施例中,若该P为空闲bit位取值的初始值均为0,在需要根据第一数据的地址项记录的信息查找第一数据的数据内容时,先判断该高P位bit位中是否存在一个bit位取值为1;若是,则表示该第一数据为特征值,该高P位bit位中记录了第二特征标号。根据该高P位bit位记录的该第二特征标号从第二特征值对应关系中查找与该第二特征标号对应的第二特征值,该第二特征值的数据内容即为该第一数据的数据内容。若否(也即该高P位bit位均取值为0),则表示该地址项记录的是存储该第一数据的数据块的地址信息,则通过该第一数据的数据块的地址信息查找该第一数据的数据内容。
在本申请实施例中,若该P为空闲bit位取值的初始值均为1,在需要根据第一数据的地址项记录的信息查找第一数据的数据内容时,先判断该高P位bit位中是否存在一个bit位取值为0;若是,则表示该第一数据为特征值,该高P位bit位中记录了第二特征标号。则根据第二特征标号从第二特征值对应关系中查找与该第二特征标号对应的第二特征值,该第二特征值的数据内容即为该第一数据的数据内容。若否(也即该高P位bit位均取值为1),则表示该地址项记录的是存储该第一数据的数据块的地址信息,则通过该第一数据的数据块的地址信息查找该第一数据的数据内容。
示例性的,采用地址项中的高12位bit位取值的初始值均为0表示该第一数据不是特征值,相应的该第一数值即为除了该第一标记位(高12位bit位)的二进制位取值均为0的组合之外的其他该第一标记位的二进制取值的组合,如图4E所示,在该高12位的bit位中记录的是特征标号(该特征标号即为除了该高12位bit位均取值为0的组合之外的其他该高12位bit位的取值的组合)的情况下,则表示该第一数据为特征值,此时地址项中的低20位bit位空闲不用。如图4F所示,在该高12位的bit位均取值为0的情况下,则表示该第一数据不是特征值,该地址项中的低20位则用于记录存储该第一数据的数据块的地址信息或者该低20位bit空闲不用。
可理解的,也可以采用该P位bit中的部分bit位记录该第一数据为目标特征值(例如只采用该P位bit中的低P-1位bit记录该第一数据为目标特征值、只采用该P位bit中的高P-1位bit记录该第一数据为目标特征值等,本申请实施例对此不做限定)。可理解的,在所记录的特征值的数量小于或等于2N-1的情况下,可以考虑只采用该W位bit中的部分bit位记录数据为目标特征值。示例性的,复用图1B,第20位至第31位共12位bit空闲不用,若需要记录的目标特征值的数量小于或等于211的情况下,则可以采用该12位bit中的部分bit记录数据为目标特征值。例如,当需要记录的目标特征值的数量为256(28=256)的情况下(也即256个目标特征值),可以只采用该12位bit中的任意8位bit记录数据为目标特征值(例如,采用该12位bit中的低8位bit位(也即第20位至第27位bit,共8个bit)记录该256个目标特征值。可理解的,这种实现方式只比采用该P位bit中全部bit位记录该第一数据为目标特征值少几个bit位,可以记录的特征值数量少一些,其具体实现方式与采用该P位bit中全部bit位记录该第一数据为目标特征值的方式类似,在此不再详述。
采用本申请实施例提供的数据去重方法,确定第一数据是否为第二特征值;若是,则采用该第一数据的地址项中的高P位bit位记录该第一数据为该第二特征值,不需分配数据块存储该第一数据,提升存储空间利用率的同时减少性能损耗。
可选的,在一些实施例中,在确定该第一数据为该目标特征值的情况下,可以不再将该第一数据存储到目标磁盘分区的数据块中;该目标磁盘分区为与该第一文件所属文件系统对应的磁盘分区。可选的,在另外一些实施例中,在确定该第一数据为该目标特征值的情况下,也可以将该第一数据存储到目标磁盘分区的数据块中。具体是否将该第一数据存储到数据块中,本申请实施例不做限定。
示例性的,在不影响设备的cpu占用率,将该第一数据存储到数据块中更便于存取、修改或删除等数据操作时,也可以选择将该第一数据存储到数据块中。具体的,在该第一地址项的第一标记位中记录该目标特征标号,在该第一地址项中除第一标记位之外的其他二进制位中记录存储该第一数据的数据块的地址信息。
可理解的,在该第一数据为该目标特征值时,在该第一地址项的第一标记位中记录目标特征标号,该目标特征标号也可以用于标记出现该目标特征值的位置,或者标记出该第一数据为该目标特征值,以做其他数据处理,例如做数据筛选处理等,本申请实施例对此不做限定。
704,在确定该第一数据与该第二特征值不相同的情况下,确定目标磁盘分区中是否已经存储有目标数据块,该目标数据块的数据内容与该第一数据的数据内容相同。
在本申请实施例中,该目标磁盘分区为与该第一文件所属文件系统对应的磁盘分区。
关于如何确定目标磁盘分区是否存储有该目标数据块,请参照本申请其他实施例的相关介绍(例如上述步骤404)。
可理解的,若确定目标磁盘分区中存储有该目标数据块,则将该P位bit位更新为第二数值;该第二数值用于指示该第一数据不是特征值;并将该第二数据块的地址信息作为存储该第一数据的数据块的地址信息记录到该第一地址项中除P位二进制位外的其他二进制位中。
可理解的,本文其他实施例所描述的将第一标记位更新为第二数值,以指示该第一数据不是特征值,即为上述将该P位bit位更新为第二数值,该P位bit位为该第一标记位。在采用该P位bit位的初始值均为0记录该第一数据不是特征值的情况下,该第二数值即为该第一标记位均取值为0;在采用该P位bit位的初始值均为1记录该第一数据不是特征值的情况下,该第二数值即为该第一标记位均取值为1。
可理解的,本申请实施例也可以结合上述图5所示的数据去重方法。示例性的,将图5中502步骤的第四数据作为上述步骤702中的第一数据,也即将执行图5所示的501至504的方法步骤后得到的该修改后的第四数据作为该图7所示的方法中的该第一数据,以判断该如何存储该第四数据(判断该如何存储该第四数据具体可通过执行步骤701至步骤704实现)。可理解的,对于图5相关步骤中有关通过第三数据的地址项的W位bit中的最高位bit的取值确定第三数据是否为特征值的确定方法中,在本申请实施例中则是通过确定该第三数据对应的地址项中的该高P位bit位中是否存在大于或等于1位bit的值取值为1,若是则该第三数据为特征值。
可理解的,本申请实施例也可以结合如图6所示的数据去重方法;示例性的,如图6步骤601中的第五数据为图7所示的数据去重方法中第一文件中的数据内容,本申请实施例除了提供如图7所示的数据去重方法以外,也可以包括该图6所示的数据去重方法。可理解的,对于图6相关步骤中有关通过第三数据的地址项的W位bit中的最高位bit的取值确定第五数据是否为特征值的确定方法中,在本申请实施例中则是通过确定该第五数据对应的地址项中的该高P位bit位中是否存在大于或等于1位bit的值取值为1,若是则该第五数据为特征值。
可理解的,本申请还可以提供数据去重功能权限控制,用户可选择开启设备的数据去重功能权限或关闭数据去重功能权限,默认情况下,设备开启该数据去重功能权限。在设备的数据去重功能权限为开启状态下,设备执行本申请提供的数据去重方法。
可理解的,本申请以上实施例提供的方法可以由任意采用磁盘中的数据块进行数据存储的电子设备执行。示例性的,该电子设备包括移动终端、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本,以及蜂窝电话等。
示例性的,请参阅图8,图8为本申请实施例提供的电子设备100的结构示意图,下面通过移动终端作为该电子设备的一个示例进行详细的描述。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(applicationprocessor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industryprocessor interface,MIPI),通用输入输出(general-purpose input/output,GPIO)接口,用户标识模块(subscriber identitymodule,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(movingpicture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。通过NPU还可以实现本申请实施例提供的决策模型。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association ofthe USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。
的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (18)
1.一种数据去重方法,其特征在于,包括:
获取待存储到目标存储空间中的第一数据;
确定所述第一数据与目标特征值是否相同,所述目标特征值为标号对应关系中记录的一个或多个特征值中的任意一个特征值;所述一个或多个特征值已存储到数据块中;所述标号对应关系中包括特征值与特征标号之间的关联关系;
在确定所述第一数据与所述目标特征值相同的情况下,不将所述第一数据存储到所述目标存储空间的数据块中,在第一地址项中记录目标特征标号;所述第一地址项为用于记录存储所述第一数据的数据块的地址信息的地址项;所述目标特征标号为所述标号对应关系中与所述目标特征值对应的特征标号;所述第一地址项中包括第一标记位,所述第一标记位取值为第一数值,所述第一数值用于指示所述第一数据为特征值。
2.如权利要求1所述的方法,其特征在于,所述第一地址项包括W位二进制位,所述W为正整数;所述第一标记位为所述W位二进制位中最高的一位二进制位;
所述在第一地址项中记录目标特征标号包括:
在所述第一地址项中除所述第一标记位外的其他W-1位二进制位中记录所述目标特征标号;所述目标特征标号指示所述W-1位二进制位中的全部或部分二进制位的取值;
更新所述第一标记位为所述第一数值。
3.如权利要求1所述的方法,其特征在于,所述第一地址项包括W位二进制位,所述W为正整数;所述第一标记位为所述W位二进制位中的高P位二进制位,所述P为小于所述W的正整数;
所述在第一地址项中记录目标特征标号包括:
在所述第一标记位中记录所述目标特征标号,将所述目标特征标号作为所述第一数值;所述目标特征标号指示所述第一标记位中的全部或部分二进制位的取值。
4.如权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
在确定所述第一数据不为所述目标特征值的情况下,确定所述第一数据的数据内容与第二数据块的数据内容是否相同,所述第二数据块为所述目标存储空间中存储的M个数据块中的任意一个数据块,所述M为正整数;
在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中。
5.如权利要求4所述的方法,其特征在于,所述确定所述第一数据的数据内容与第二数据块的数据内容是否相同包括:
计算所述第一数据的数据内容的总和校验码;
在确定所述第一数据的数据内容的总和校验码与所述M个数据块的数据内容的总和校验码都不相同的情况下,确定所述第一数据的数据内容与所述第二数据块的数据内容不相同,并为所述第一数据分配第一数据块,将所述第一数据存储到所述第一数据块中;
所述在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中,包括:
在确定所述第一数据的数据内容的总和校验码与所述第二数据块的数据内容的总和校验码相同的情况下,确定所述第一数据的数据内容与所述第二数据块的数据内容是否相同;
在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
在确定所述M个数据块中的N个第二数据块的数据内容的总和校验码与所述第一数据的数据内容的总和校验码相同,且所述N个第二数据块的第一被引用次数都大于或等于第一阈值的情况下,为所述第一数据分配第一数据块,并将所述第一数据存储到所述第一数据块中;所述N为小于或等于M的整数,所述第一被引用次数为重复计数表中记录的所述第二数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系。
7.如权利要求6所述的方法,其特征在于,所述在确定所述第一数据的数据内容与所述第二数据块的数据内容相同的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中,包括:
在确定所述第一数据的数据内容与所述第二数据块的数据内容相同,且所述第二数据块的第一被引用次数小于第一阈值的情况下,将所述第一标记位更新为第二数值;所述第二数值用于指示所述第一数据不是特征值;并将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到所述第一地址项中除所述第一标记位外的其他二进制位中;以及,将所述第一被引用次数加1;所述第一被引用次数为重复计数表中记录的所述第二数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系。
8.如权利要求1至3、或5至7任一项所述的方法,其特征在于,在所述获取待存储到目标存储空间中的第一数据之前,所述方法还包括:
在接收到将第三数据修改为第四数据的指令后,确定所述第三数据是否为特征值;
在确定所述第三数据为特征值的情况下,将所述第四数据作为所述第一数据。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
在确定所述第三数据不为特征值的情况下,确定所述第四数据是否为所述目标特征值;
在确定所述第四数据为所述目标特征值的情况下,在记录存储所述第三数据的数据块的地址信息的地址项中记录所述第四数据为所述目标特征值;
在确定所述第四数据不为所述目标特征值的情况下,获取与所述第三数据对应的第三数据块的第二被引用次数;所述第二被引用次数为重复计数表中记录的所述第三数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系;
在确定所述第二被引用次数等于1的情况下,将所述第四数据作为所述第一数据,并删除与所述第三数据相关的信息;
在确定所述第二被引用次数大于1的情况下,将所述第四数据作为所述第一数据,并将所述重复计数表中的所述第二被引用次数减1。
10.如权利要求1至3、5至7、或9任一项所述的方法,其特征在于,所述方法还包括:
在接收到删除第五数据的指令后,确定所述第五数据是否为特征值;
在确定所述第五数据为特征值的情况下,将记录存储所述第五数据的数据块的地址信息的地址项中二进制位的取值均置为初始值。
11.如权利要求10所述的方法,其特征在于,所述方法还包括:
在确定所述第五数据不为特征值的情况下,获取所述第五数据对应的第五数据块的第三被引用次数;所述第三被引用次数为重复计数表中记录的所述第五数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系;
在确定所述第三被引用次数等于1的情况下,删除与所述第五数据相关的信息;
在确定所述第三被引用次数大于1的情况下,将所述重复计数表中所述第三被引用次数减1。
12.如权利要求2所述的方法,其特征在于,所述W-1位二进制位取值为0或1;
在所述目标特征标号指示所述W-1位二进制位中的全部二进制位的取值的情况下,所述目标特征标号为所述全部二进制位的取值的组合;
在所述目标特征标号指示所述W-1位二进制位中的部分二进制位的取值的情况下,所述特征标号为所述部分二进制位的取值的组合。
13.如权利要求3所述的方法,其特征在于,所述高P位二进制位取值为0或1;
在所述目标特征标号指示所述高P位二进制位中的全部二进制位的取值的情况下,所述特征标号为,除所述高P位二进制位中的全部二进制位均取值为0的组合之外的其他所述高P位二进制位中的全部二进制位的取值的组合;
在所述目标特征标号指示所述高P位二进制位中的部分二进制位的取值的情况下,所述特征标号为,除所述部分二进制位均取值为0的组合之外的其他所述部分二进制位的取值的组合。
14.如权利要求1至3、5至7、9、或11至13任一项所述的方法,其特征在于,所述目标特征值为第一编码序列,所述确定所述第一数据与所述目标特征值是否相同包括:
获取所述第一数据的第二编码序列;
确定所述第一编码序列与所述第二编码序列是否相同;
在确定所述第一编码序列与所述第二编码序列相同的情况下,确定所述第一数据与所述目标特征值相同;
在确定所述第一编码序列与所述第二编码序列不相同的情况下,确定所述第一数据与所述目标特征值不相同。
15.如权利要求1至3、5至7、9、或11至13任一项所述的方法,其特征在于,所述目标特征值为第一字符串数据内容,所述第一数据为第二字符串数据内容,所述确定所述第一数据与所述目标特征值是否相同包括:
确定所述第一字符串数据内容与所述第二字符串数据内容是否相同;
在确定所述第一字符串数据内容与所述第二字符串数据内容相同的情况下,确定所述第一数据与所述目标特征值相同;
在确定所述第一字符串数据内容与所述第二字符串数据内容不相同的情况下,确定所述第一数据与所述目标特征值不相同。
16.一种电子设备,其特征在于,所述电子设备包括:一个或多个处理器、存储器和显示屏;
所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行如权利要求1-15中任一项所述的方法。
17.一种芯片系统,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行如权利要求1-15中任一项所述的方法。
18.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1至15中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110661793.1A CN113885785B (zh) | 2021-06-15 | 2021-06-15 | 一种数据去重方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110661793.1A CN113885785B (zh) | 2021-06-15 | 2021-06-15 | 一种数据去重方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113885785A CN113885785A (zh) | 2022-01-04 |
CN113885785B true CN113885785B (zh) | 2022-07-26 |
Family
ID=79010171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110661793.1A Active CN113885785B (zh) | 2021-06-15 | 2021-06-15 | 一种数据去重方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113885785B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560503B1 (en) * | 2006-01-26 | 2013-10-15 | Netapp, Inc. | Content addressable storage system |
CN103780491A (zh) * | 2012-10-23 | 2014-05-07 | 上海博达数据通信有限公司 | 一种实现IPv6快速路由查找的方法 |
CN107229420A (zh) * | 2017-05-27 | 2017-10-03 | 郑州云海信息技术有限公司 | 数据存储方法、读取方法、删除方法和数据操作系统 |
CN108121504A (zh) * | 2017-11-16 | 2018-06-05 | 成都华为技术有限公司 | 数据删除方法及装置 |
CN110019004A (zh) * | 2017-09-08 | 2019-07-16 | 华为技术有限公司 | 一种数据处理方法、装置及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013051129A1 (ja) * | 2011-10-06 | 2013-04-11 | 株式会社 日立製作所 | 格納データの重複排除方法、格納データの重複排除装置、及び重複排除プログラム |
CN110727604B (zh) * | 2019-08-26 | 2022-04-29 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN112783418B (zh) * | 2019-11-01 | 2023-03-31 | 华为技术有限公司 | 一种存储应用程序数据的方法及移动终端 |
-
2021
- 2021-06-15 CN CN202110661793.1A patent/CN113885785B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560503B1 (en) * | 2006-01-26 | 2013-10-15 | Netapp, Inc. | Content addressable storage system |
CN103780491A (zh) * | 2012-10-23 | 2014-05-07 | 上海博达数据通信有限公司 | 一种实现IPv6快速路由查找的方法 |
CN107229420A (zh) * | 2017-05-27 | 2017-10-03 | 郑州云海信息技术有限公司 | 数据存储方法、读取方法、删除方法和数据操作系统 |
CN110019004A (zh) * | 2017-09-08 | 2019-07-16 | 华为技术有限公司 | 一种数据处理方法、装置及系统 |
CN108121504A (zh) * | 2017-11-16 | 2018-06-05 | 成都华为技术有限公司 | 数据删除方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113885785A (zh) | 2022-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797288B2 (en) | Patching method, related apparatus, and system | |
CN111669459B (zh) | 键盘显示方法、电子设备和计算机可读存储介质 | |
CN117014567A (zh) | 一种应用于电子设备的视频通话的显示方法及相关装置 | |
CN113885759A (zh) | 通知消息处理方法、设备、系统及计算机可读存储介质 | |
US20230070358A1 (en) | File Sharing Method, System, and Related Device | |
CN112130714B (zh) | 可进行学习的关键词搜索方法和电子设备 | |
CN113961157A (zh) | 显示交互系统、显示方法及设备 | |
CN112015943A (zh) | 一种哼唱识别方法及相关设备 | |
CN115705315A (zh) | 管理文件的方法、电子设备和计算机可读存储介质 | |
CN113973398A (zh) | 无线网络连接方法、电子设备及芯片系统 | |
CN113495744A (zh) | 一种版本升级方法及相关装置 | |
CN112835610A (zh) | 一种构建应用程序资源包的方法、构建装置及终端设备 | |
CN113721836A (zh) | 一种数据去重方法及装置 | |
CN113885785B (zh) | 一种数据去重方法及装置 | |
CN113590346B (zh) | 处理业务请求的方法和电子设备 | |
CN111752648A (zh) | 一种系统语言的切换方法及相关装置 | |
CN116527805A (zh) | 卡片显示方法、电子设备及计算机可读存储介质 | |
CN110191223B (zh) | 一种添加邮件联系人的方法和电子设备 | |
CN114971107A (zh) | 一种隐私风险反馈方法、装置及第一终端设备 | |
CN114064571A (zh) | 一种确定文件存储位置的方法、装置及终端 | |
CN114079642A (zh) | 一种邮件处理方法及电子设备 | |
CN116055634B (zh) | 消息管理方法、终端设备及其介质 | |
CN112286596A (zh) | 消息显示方法及电子设备 | |
CN114666441B (zh) | 一种调用其他设备能力的方法、电子设备、系统和存储介质 | |
WO2023109569A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230908 Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New Area, Pudong New Area, Shanghai Patentee after: Shanghai Glory Smart Technology Development Co.,Ltd. Address before: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee before: Honor Device Co.,Ltd. |
|
TR01 | Transfer of patent right |