一种数据标识方法及系统的制作方法

文档序号:6363210阅读:189来源:国知局
专利名称:一种数据标识方法及系统的制作方法
技术领域
本申请涉及数据处理领域,特别涉及一种数据标识方法及系统。
背景技术
在很多行业诸如银行、电信和互联网行业中需要进行海量数据的处理。在海量数据中,不可避免的出现数据重复的情况,如何在海量数据删除重复的数据,只保留多个相同数据中的一个数据是一个急需解决的问题。目前,数据标识方法的具体过程可以包括首先,对于任意一个待去重数据,获取所有去重文件以及其内保存的已去重数据。所述去重文件中任一已去重数据与同一文件中其他已去重数据不相同;其次,遍历获取的已去重数据,判断在已去重数据中是否存在与待去重数据相同的数据,如果是,将待去重数据标识为重复数据;然后,判断是否还存在未查重的数据,如果是,对还未去重的数据进行去重,如果否,结束去重过程。但是,上述数据标识过程需要获取所有去重文件以及其内的已去重数据,因此,在标识任一待去重数据时,需要获取全部去重文件,然后将待去重数据与去重文件中的全部已去重数据进行判断,从而降低了去重效率,更进一步地,如果后续还需要对该去重文件中的数据进行分析,也会因为去重效率低而延迟分析过程。

发明内容
本申请所要解决的技术问题是提供一种数据标识方法,用以解决现有技术对任一待去重数据标识时,都需要获取全部去重文件和文件中的全部已去重数据,从而在去重过程中需要将去重数据与去重文件中的全部已去重数据进行判断,从而降低了去重效率,更进一步地,导致因去重效率低延迟分析过程的问题。本申请还提供了一种数据标识系统,用以保证上述方法在实际中的实现及应用。为了解决上述问题,本申请提供了一种数据标识方法,包括从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值;获取与所述匹配字段相对应的去重文件;依据所述散列值,定位所述去重文件中的已去重数据;判断所述待去重数据和所述已去重数据是否相同,如果是,将所述待去重数据标识为重复数据。优选地,所述去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存;所述依据所述散列值,定位所述去重文件中的已去重数据包括获取所述散列值对应的散列链表地址,以定位所述去重文件映射到内存中的第一条已去重数据;对于散列链表中除第一条去重数据之外的任意一条已去重数据,获取自身在所述内存中的段序号和段内偏移量以定位自身在所述内存中的位置。
优选地,获取所述散列值对应的散列链表地址包括获取所述散列值在索引表中的位置idx,位置idx = HASH_VALUE% BUCKE_NUM,其中,HASH_VALUE为所述散列值,BUCKE_NUM为索引表的最大记录数,所述索引表用于保存所有散列链表的第一条已去重数据;获取索引表的首地址ADDR,在内存ADDR+idx中存储的即是散列链表中的第一条
已去重数据。优选地,获取下一条已去重数据在所述内存中的段序号和段内偏移量包括获取当前已去重数据在内存中的完整记录,所述当前已去重数据记录包括下一条已去重数据在所述内存中的地址NEXT ;依据所述下一条已去重数据在所述内存中的地址NEXT和所述内存的大小MMDB_ SEGSIZE,获取所述下一条已去重数据在所述内存中的段序号和段内偏移量,所述段序号为 NEXT/MMDB_SEGSIZE,所述段内偏移量为 NEXT% MMDB_SEGSIZE。优选地,在所述定位所述去重文件中的已去重数据之后,判断所述待去重数据和所述已去重数据是否相同之前,还包括在所述内存中未获取到定位的已去重数据的情况下,在所述去重文件中查找该已去重数据,并将该已去重数据映射到内存中。优选地,判断所述待去重数据和所述已去重数据是否相同包括判断所述待去重数据对应的关键字段的反向字段的散列值和所述已去重数据在内存中记录的散列值是否相同。优选地,所述对所述待去重数据包括的关键字段进行计算包括采用循环冗余码校验CRC32码或第五代信息摘要MD5码,对所述关键字段进行计算。本申请还提供了一种数据标识系统,该系统包括字段获取模块,用于从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值;文件获取模块,用于获取与所述匹配字段相对应的去重文件;定位模块,用于依据所述散列值,定位所述去重文件中的已去重数据;判断模块,用于判断所述待去重数据和所述已去重数据是否相同;标识模块,用于在所述判断模块判断所述待去重数据和所述已去重数据相同时, 将所述待去重数据标识为重复数据。优选地,所述去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存;所述定位模块包括第一定位单元,用于获取所述散列值对应的散列链表地址,以定位所述去重文件映射到内存中的第一条已去重数据;第二定位单元,用于对于所述散列链表中除第一条去重数据之外的任意一条已去重数据,获取自身在所述内存中的段序号和段内偏移量以定位自身在所述内存中的位置。优选地,所述第一定位单元包括第一获取子单元,用于获取所述散列值在索引表中的位置idx,位置idx = HASH_ VALUE % BUCKE_NUM,其中,HASH_VALUE为所述散列值,BUCKE_NUM为索引表的最大记录数,所述索引表用于保存所有散列链表的第一个元素;第二获取子单元,用于获取索引表的首地址ADDR,在ADDR+idx处存储的便是散列链表中的第一条已去重数据。优选地,所述第二定位单元包括第三获取子单元,用于获取当前已去重数据在内存中的完整记录,所述当前已去重数据记录包括下一条已去重数据在所述内存中的地址NEXT ;第四获取子单元,用于依据所述下一条已去重数据在所述内存中的地址NEXT和所述内存的大小MMDB_SEGSIZE,获取所述下一条已去重数据在所述内存中的段序号和段内偏移量,所述段序号为NEXT/MMDB_SEGSIZE,所述段内偏移量为NEXT% MMDB_SEGSIZE。优选地,还包括映射模块,用于在所述内存中未获取到需要定位的已去重数据的情况下,在所述去重文件中查找该已去重数据,并将该已去重数据所在的数据段映射到内存中。优选地,所述判断模块具体用于判断所述待去重数据对应的关键字段的反向字段的散列值和所述已去重数据在内存中记录的散列值是否相同。优选地,所述字段获取模块具体用于采用CRC32码或MD5码,对所述关键字段进行计算。与现有技术相比,本申请包括以下优点在本申请中,首先获取与所述待去重数据中的匹配字段相对应的去重文件,再依据所述散列值,定位所述去重文件中的已去重数据,因此,在对每个待去重数据标识时,可以获取与所述待去重数据相关的去重文件中的已去重数据,从而减少了获取的已去重数据的数量,即减少了判断次数,提高了去重效率。进一步地,如果后续系统需要对该去重文件中的数据进行分析,也会因为去重效率提高而加快分析过程。


为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I为本申请的一种数据标识方法的一种流程图;图2为本申请的一种数据标识方法的子流程图;图3为本申请的一种数据标识系统的一种结构框图;图4为本申请的一种数据标识系统中定位模块的结构框图。
具体实施例方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请可用于众多通用或专用的计算系统环境或配置中。例如个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本申请的主要思想之一可以包括,首先,获取与所述待去重数据中的匹配字段相对应的去重文件,其次,依据所述散列值,定位所述去重文件中的已去重数据,然后,再判断待去重数据和已去重数据是否相同,如果存在某条已去重数据和待去重数据相同,则将待去重数据标识为重复数据。如果不存在,则将所述待去重数据的散列值保存到去重文件中。 因此,在对每个待去重数据进行重复标识时,可以根据实际需要仅获取与所述待去重数据相关的去重文件中的已去重数据,从而减少了获取的已去重数据的数量,即减少了判断次数,提高了去重效率。进一步地,如果后续系统需要对该去重文件中的数据进行分析,也会因为去重效率提高而加快分析过程。参考图1,其示出了本申请一种多维度数据标识方法实施例I的一种流程图,可以包括以下步骤SlOl :从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值。其中,从不同的待去重数据所提取的匹配字段可以相同或不同。从同一个待去重数据所提取匹配字段在不同应用场景下也可以相同或不同。例如待去重数据为一通话记录,该通话记录包括主叫号码13828443789,被叫号码13926262408,通话时间 20110618121314,呼叫类型01,代表主叫,一次通话标志100000001,则其对应的匹配字段可以为通话时间2011061812,也可以为主叫号码13828443789,还可以为通话时间范围 0601 至 0630。在本实施例中,通话记录中的主叫号码13828443789,被叫号码13926262408,通话时间20110618121314,呼叫类型01和一次通话标志100000001组成关键字段138284437 89139262624082011061812131401100000001,对所述关键字段计算获得散列值可以通过采用 CRC(Cyclic redundancy check,循环冗余校验)32 码或MD5 (Message-Digest 5,第五代信息摘要)码,对关键字段进行计算,获得所述关键字段的散列值。S102 :获取与所述匹配字段相对应的去重文件。在匹配字段为通话时间2011061812时,其对应的去重文件应该为通话时间为 2011061812的去重文件,其中去重文件需要按照通话时间保存数据。在匹配字段为主叫号码13828443789时,其对应的去重文件应该为主叫号码13828443789的去重文件,其中去重文件需要按照主叫号码保存数据。在本实施例中,使用MMAP函数将去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存。因为MMAP函数能够实现带缓存的读写,可以减少系统 IOdnput/Output,输入/输出)的操作,提高系统处理效率。同时,使用分段方法保存数据, 可以以段为单位管理内存,简化内存的管理,并提高内存的使用率。
7
需要说明的是系统可以根据不同的需求,使用MMAP函数将所需要的已去重数据映射到内存中,从而提高文件映射的效率,减少内存的使用。上述去重文件的文件结构分三大部分,第一部分是文件头,第二部分是索引区,第三部分数据区。其中文件头存储控制信息,如标识操作文件的当前指针位置,文件操作过程中出现异常,需要利用文件头的信息进行回滚。索引区用于存储所有散列链表的第一个元素。数据区存储数据,每一条数据由16个字节表示,8个字节存储指向下一条记录位置的指针,8个字节存储数据关键值。关键值可以是数据的关键字段的散列值,也可以是关键字段的反向字段的散列值。由于反向字段的散列值可以进一步提高查重的准确性,并有效节省存储空间,所以,本实施例优选反向字段的散列值。S103 :依据所述散列值,定位所述去重文件中的已去重数据。上述步骤S103的流程图请参阅图2,其可以包括以下步骤S1031 :获取所述散列值对应的散列链表地址,以定位所述去重文件映射到内存中的第一条已去重数据。本步骤具体为首先,获取散列值在索引表中的位置idx,位置idx = HASH_ VALUE % BUCKE_NUM,其中,HASH_VALUE为所述散列值,BUCKE_NUM为索引表的最大记录数; 其次,获取索引表的首地址ADDR,则所述散列链表地址为ADDR+idx。在内存中ADDR+idx处存储的即是去重文件中的第一条已去重数据。例如关键字段13828443789139262624082011061812131401100000001 的散列值为290000,索引表的最大记录数为40000,该散列值在索引表中的位置idx即为290000% 40000 = 10000,则定位到索引表中的第10000散列链表,其内存储的即为去重文件中的第
一条已去重数据。S1032:对于散列链表中除第一条去重数据之外的任意一条已去重数据,获取自身在所述内存中的段序号和段内偏移量以定位自身在所述内存中的位置。具体可以包括S10321 :获取当前已去重数据在内存中的完整记录,所述当前已去重数据的记录中包括下一条已去重数据在所述内存中的地址NEXT。S10322 :依据所述下一条已去重数据在所述内存中的地址NEXT和所述内存的大小MMDB_SEGSIZE,获取所述下一条已去重数据在所述内存中的段序号和段内偏移量,所述段序号为NEXT/MMDB_SEGSIZE,所述段内偏移量为NEXT% MMDB_SEGSIZE。在实际执行过程中,步骤S1031中通过获取散列值对应的散列链表地址定位第一条已去重数据,则在第一次过程执行中,将第一条已去重数据作为当前已去重数据,当前已去重数据的完整记录中包括下一条已去重数据,即第二条已去重数据在内存中的地址 NEXT,则第二条已去重数据的段序号和段内偏移量可以通过自身在内存中的地址NEXT和内存的大小MMDB_SEGSIZE得出。同样,在第i次过程执行中,将第i条已去重数据作为当前已去重数据,当前已去重数据的完整记录中包括下一条已去重数据,即第i+Ι条已去重数据在内存中的地址 NEXT,则第i+Ι条已去重数据的段序号和段内偏移量可以通过自身在内存中的地址NEXT和内存的大小MMDB_SEGSIZE得出,其中,i为整数,且i彡I。S104:读取散列链表中的每个元素判断所述待去重数据和所述散列链表中的已去重数据是否相同,如果是,执行步骤S105,如果否,则继续读取下一个元素,直到遍历完所有的元素为止。如果最终没有任何一条已去重的数据和待去重的数据相同,则执行步骤S106。在本实施例中,散列链表中还包括与自身对应的已去重数据的关键值,该关键值可以为已去重数据的关键字段的散列值,也可以为已去重数据的关键字段的反向字段的散列值。由于反向字段的散列值可以进一步提高查重的准确性,并有效节省存储空间,所以, 本实施例优选反向字段的散列值。判断所述待去重数据和所述已去重数据是否相同可以包括判断所述待去重数据关键字段的反向字段的散列值和散列链表中的关键值是否相同,其中散列链表中的关键值为已去重数据的关键字段的反向字段的散列值。例如关键字段13828443789139262624082011061812131401100000001 的反向字符的散列值为345123,从第10000散列链表中获取其内存储的关键值。判断关键值是否等于散列值345123,如果是,则表明待去重数据和已去重数据相同;如果否,则表明待去重数据和已去重数据不同,则获取散列链表中的下一个元素进行判断,直至遍历完散列链表中的所有元素为止。S105 :将所述待去重数据标识为重复数据。S106:在待去重数据和散列链表中的所有已去重数据都不相同时,则保留待去重数据。其中,保留待去重数据优选保留待去重数据的关键字段的反向字段的散列值。需要注意的是去重文件中的已去重数据不是全部映射到内存,而是把需要用到的数据才映射到内存中,因此,在判断数据是否相同之前,如果在所述内存中未获取到定位的已去重数据时,需要在所述去重文件中查找该已去重数据,并将该已去重数据所在的数据段映射到内存中。在所有待去重数据成功完成去重过程之后,将内存中的数据同步到去重文件中。 如果去重过程失败,需要结束去重,将内存中的数据恢复至初始数据,其中初始数据为系统去重开始之前内存所存储的数据。应用上述技术方案,首先获取与所述待去重数据中的匹配字段相对应的去重文件,再依据所述散列值,定位所述去重文件中的已去重数据,因此,在对每个待去重数据标识时,可以根据实际需要获取与所述待去重数据相关的去重文件中的已去重数据,从而减少了获取的已去重数据的数量,即减少了判断次数,提高了去重效率。进一步地,如果后续系统需要对该去重文件中的数据进行分析,也会因为去重效率提高而加快分析过程。更进一步地,系统可以根据不同的需求,使用MMAP函数将所需要的已去重数据映射到内存中,从而提高文件映射的效率,减少内存的使用。去重文件的数据区存储反向字段的散列值,减少了内存占用。此外,因为反向字段的散列值为一个长整型数值,所以可以避免关键字段的长度不一致而导致的内存长度不同的问题,大大简化内存管理。而通过反向字段的散列值判断待去重数据和已去重数据是否相同,可以提高去重准确率。与上述方法实施例相对应,参见图3,本申请还提供了一种数据标识系统实施例, 在本实施例中,该系统可以包括字段获取模块31、文件获取模块32、定位模块33、判断模块34和标识模块35。在本实施例中,字段获取模块31,用于从待去重数据中提取匹配字段,并对待去重数据包括的关键字段进行计算,获得关键字段的散列值。其中,匹配字段和关键字段的描述请参阅方法实施例中说明,对此不再加以介绍。
上述字段获取模块31具体用于采用CRC32码或MD5码,对关键字段进行计算,获得所述关键字段的散列值。文件获取模块32,用于获取与所述匹配字段相对应的去重文件。在本实施例中,使用MMAP函数将去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存。因为MMAP函数能够实现带缓存的读写,可以减少系统 IOdnput/Output,输入/输出)的操作,提高系统处理效率。同时,使用分段方法保存数据, 可以以段为单位管理内存,简化内存的管理,并提高内存的使用率。需要说明的是系统可以根据不同的需求,使用MMAP函数将所需要的已去重数据映射到内存中,从而提高文件映射的效率,减少内存的使用。上述去重文件的文件结构分三大部分,第一部分是文件头,第二部分是索引区,第三部分数据区。其中文件头存储控制信息,如标识操作文件的当前指针位置,文件操作过程中出现异常,需要利用文件头的信息进行回滚。索引区用于存储所有散列链表的第一个元素。数据区存储数据,每一条数据由16个字节表示,8个字节存储指向下一条记录位置的指针,8个字节存储数据关键值。关键值可以是数据的关键字段的散列值,也可以是关键字段的反向字段的散列值。由于反向字段的散列值可以进一步提高数据重标识的准确性,并有效节省存储空间,所以,本实施例优选反向字段的散列值。定位模块33,用于依据所述散列值,定位所述去重文件中的已去重数据。定位模块 33的结构框图请参阅图4,包括第一定位单元331和第二定位单元332。其中,第一定位单元331,用于获取所述散列值对应的散列链表地址,以定位所述散列链表中的第一条已去重数据。在本实施例中,第一定位单元331可以包括第一获取子单元3311和第二获取子单元3312,如图4所示。其中,第一获取子单元3311用于获取所述散列值在索引表中的位置 idx,位置 idx = HASH_VALUE% BUCKE_NUM,其中,HASH_VALUE 为所述散列值,BUCKE_NUM 为索引表的最大记录数。第二获取子单元3312,用于获取索引表的首地址ADDR,则所述散列链表地址为ADDR+idx。在内存中ADDR+idx处存储的即是去重文件中的第一条已去重数据。第二定位单元332,用于对于所述散列链表中除第一条去重数据之外的任意一条已去重数据,获取自身在所述内存中的段序号和段内偏移量以定位自身在所述内存中的位置。第二定位单元332包括第三获取子单元3321和第四获取子单元3322。第三获取子单元3321,用于获取所述当前已去重数据,所述当前已去重数据的完整记录中包括下一条已去重数据在所述内存中的地址NEXT。第四获取子单元3322,用于依据所述下一条已去重数据在所述内存中的地址 NEXT和所述内存的大小MMDB_SEGSIZE,获取所述下一条已去重数据在所述内存中的段序号和段内偏移量,所述段序号为NEXT/MMDB_SEGSIZE,所述段内偏移量为NEXT% MMDB_ SEGSIZEο判断模块34,用于判断所述待去重数据和所述已去重数据是否相同。其具体用于判断所述待去重数据对应的关键字段的反向字段的散列值和所述已去重数据在内存中记录的散列值是否相同。标识模块35,用于在所述判断模块判断所述待去重数据和所述已去重数据相同时,将所述待去重数据标识为重复数据。需要注意的是图3所示的数据标识系统还可以包括映射模块,用于在所述内存中未获取到定位的已去重数据的情况下,在所述去重文件中查找该已去重数据,并将该已去重数据映射到内存中。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。 对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或
者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,
并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。为了描述的方便,描述以上系统时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。以上对本申请所提供的一种数据标识方法及系统进行了详细介绍,本文中应用具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
权利要求
1.一种数据标识方法,其特征在于,包括从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值;获取与所述匹配字段相对应的去重文件;依据所述散列值,定位所述去重文件中的已去重数据;判断所述待去重数据和所述已去重数据是否相同,如果是,将所述待去重数据标识为重复数据。
2.根据权利要求I所述的数据标识方法,其特征在于,所述去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存;所述依据所述散列值,定位所述去重文件中的已去重数据包括获取所述散列值对应的散列链表地址,以定位所述去重文件映射到内存中的第一条已去重数据;对于散列链表中除第一条去重数据之外的任意一条已去重数据,获取自身在所述内存中的段序号和段内偏移量以定位自身在所述内存中的位置。
3.根据权利要求2所述的数据标识方法,其特征在于,获取所述散列值对应的散列链表地址包括获取所述散列值在索引表中的位置idx,位置idx = HASH_VALUE% BUCKE_NUM,其中, HASH_VALUE为所述散列值,BUCKE_NUM为索引表的最大记录数,所述索引表用于保存所有散列链表的第一条已去重数据;获取索引表的首地址ADDR,在内存ADDR+idx中存储的即是散列链表中的第一条已去重数据。
4.根据权利要求3所述的数据标识方法,其特征在于,获取下一条已去重数据在所述内存中的段序号和段内偏移量包括获取当前已去重数据在内存中的完整记录,所述当前已去重数据记录包括下一条已去重数据在所述内存中的地址NEXT ;依据所述下一条已去重数据在所述内存中的地址NEXT和所述内存的大小MMDB_ SEGSIZE,获取所述下一条已去重数据在所述内存中的段序号和段内偏移量,所述段序号为 NEXT/MMDB_SEGSIZE,所述段内偏移量为 NEXT% MMDB_SEGSIZE。
5.根据权利要求I所述的数据标识方法,其特征在于,在所述定位所述去重文件中的已去重数据之后,判断所述待去重数据和所述已去重数据是否相同之前,还包括在所述内存中未获取到定位的已去重数据的情况下,在所述去重文件中查找该已去重数据,并将该已去重数据映射到内存中。
6.根据权利要求I所述的数据标识方法,其特征在于,判断所述待去重数据和所述已去重数据是否相同包括判断所述待去重数据对应的关键字段的反向字段的散列值和所述已去重数据在内存中记录的散列值是否相同。
7.根据权利要求I至6所述的数据标识方法,其特征在于,所述对所述待去重数据包括的关键字段进行计算包括采用循环冗余码校验CRC32码或第五代信息摘要MD5码,对所述关键字段进行计算。
8.一种数据标识系统,其特征在于,包括字段获取模块,用于从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值;文件获取模块,用于获取与所述匹配字段相对应的去重文件;定位模块,用于依据所述散列值,定位所述去重文件中的已去重数据;判断模块,用于判断所述待去重数据和所述已去重数据是否相同;标识模块,用于在所述判断模块判断所述待去重数据和所述已去重数据相同时,将所述待去重数据标识为重复数据。
9.根据权利要求8所述的数据标识系统,其特征在于,所述去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存;所述定位模块包括第一定位单元,用于获取所述散列值对应的散列链表地址,以定位所述去重文件映射到内存中的第一条已去重数据;第二定位单元,用于对于所述散列链表中除第一条去重数据之外的任意一条已去重数据,获取自身在所述内存中的段序号和段内偏移量以定位自身在所述内存中的位置。
10.根据权利要求9所述的数据标识系统,其特征在于,所述第一定位单元包括第一获取子单元,用于获取所述散列值在索引表中的位置idx,位置idx = HASH_ VALUED BUCKE_NUM,其中,HASH_VALUE为所述散列值,BUCKE_NUM为索引表的最大记录数, 所述索引表用于保存所有散列链表的第一个元素;第二获取子单元,用于获取索引表的首地址ADDR,在ADDR+idx处存储的便是散列链表中的第一条已去重数据。
11.根据权利要求10所述的数据标识系统,其特征在于,所述第二定位单元包括第三获取子单元,用于获取当前已去重数据在内存中的完整记录,所述当前已去重数据记录包括下一条已去重数据在所述内存中的地址NEXT ;第四获取子单元,用于依据所述下一条已去重数据在所述内存中的地址NEXT和所述内存的大小MMDB_SEGSIZE,获取所述下一条已去重数据在所述内存中的段序号和段内偏移量,所述段序号为NEXT/MMDB_SEGSIZE,所述段内偏移量为NEXT% MMDB_SEGSIZE。
12.根据权利要求8所述的数据标识系统,其特征在于,还包括映射模块,用于在所述内存中未获取到需要定位的已去重数据的情况下,在所述去重文件中查找该已去重数据, 并将该已去重数据所在的数据段映射到内存中。
13.根据权利要求8所述的数据标识系统,其特征在于,所述判断模块具体用于判断所述待去重数据对应的关键字段的反向字段的散列值和所述已去重数据在内存中记录的散列值是否相同。
14.根据权利要求8至13所述的数据标识系统,其特征在于,所述字段获取模块具体用于采用CRC32码或MD5码,对所述关键字段进行计算。
全文摘要
本申请提供了一种数据标识方法和系统。一种数据标识方法,包括从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值;获取与所述匹配字段相对应的去重文件;依据所述散列值,定位所述去重文件中的已去重数据;判断所述待去重数据和所述已去重数据是否相同,如果是,将所述待去重数据标识为重复数据。因此,在对每个待去重数据标识时,可以获取与所述待去重数据相关的去重文件中的已去重数据,从而减少了获取的已去重数据的数量,即减少了判断次数,提高了去重效率。进一步地,如果后续系统需要对该去重文件中的数据进行分析,也会因为去重效率提高而加快分析过程。
文档编号G06F17/30GK102591855SQ20121001142
公开日2012年7月18日 申请日期2012年1月13日 优先权日2012年1月13日
发明者黄子维 申请人:广州从兴电子开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1