CN102591855A - 一种数据标识方法及系统 - Google Patents
一种数据标识方法及系统 Download PDFInfo
- Publication number
- CN102591855A CN102591855A CN201210011422XA CN201210011422A CN102591855A CN 102591855 A CN102591855 A CN 102591855A CN 201210011422X A CN201210011422X A CN 201210011422XA CN 201210011422 A CN201210011422 A CN 201210011422A CN 102591855 A CN102591855 A CN 102591855A
- Authority
- CN
- China
- Prior art keywords
- tuple
- gone
- internal memory
- certificate
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供了一种数据标识方法和系统。一种数据标识方法,包括:从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值;获取与所述匹配字段相对应的去重文件;依据所述散列值,定位所述去重文件中的已去重数据;判断所述待去重数据和所述已去重数据是否相同,如果是,将所述待去重数据标识为重复数据。因此,在对每个待去重数据标识时,可以获取与所述待去重数据相关的去重文件中的已去重数据,从而减少了获取的已去重数据的数量,即减少了判断次数,提高了去重效率。进一步地,如果后续系统需要对该去重文件中的数据进行分析,也会因为去重效率提高而加快分析过程。
Description
技术领域
本申请涉及数据处理领域,特别涉及一种数据标识方法及系统。
背景技术
在很多行业诸如银行、电信和互联网行业中需要进行海量数据的处理。在海量数据中,不可避免的出现数据重复的情况,如何在海量数据删除重复的数据,只保留多个相同数据中的一个数据是一个急需解决的问题。
目前,数据标识方法的具体过程可以包括:首先,对于任意一个待去重数据,获取所有去重文件以及其内保存的已去重数据。所述去重文件中任一已去重数据与同一文件中其他已去重数据不相同;其次,遍历获取的已去重数据,判断在已去重数据中是否存在与待去重数据相同的数据,如果是,将待去重数据标识为重复数据;然后,判断是否还存在未查重的数据,如果是,对还未去重的数据进行去重,如果否,结束去重过程。
但是,上述数据标识过程需要获取所有去重文件以及其内的已去重数据,因此,在标识任一待去重数据时,需要获取全部去重文件,然后将待去重数据与去重文件中的全部已去重数据进行判断,从而降低了去重效率,更进一步地,如果后续还需要对该去重文件中的数据进行分析,也会因为去重效率低而延迟分析过程。
发明内容
本申请所要解决的技术问题是提供一种数据标识方法,用以解决现有技术对任一待去重数据标识时,都需要获取全部去重文件和文件中的全部已去重数据,从而在去重过程中需要将去重数据与去重文件中的全部已去重数据进行判断,从而降低了去重效率,更进一步地,导致因去重效率低延迟分析过程的问题。
本申请还提供了一种数据标识系统,用以保证上述方法在实际中的实现及应用。
为了解决上述问题,本申请提供了一种数据标识方法,包括:从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值;
获取与所述匹配字段相对应的去重文件;
依据所述散列值,定位所述去重文件中的已去重数据;
判断所述待去重数据和所述已去重数据是否相同,如果是,将所述待去重数据标识为重复数据。
优选地,所述去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存;
所述依据所述散列值,定位所述去重文件中的已去重数据包括:
获取所述散列值对应的散列链表地址,以定位所述去重文件映射到内存中的第一条已去重数据;
对于散列链表中除第一条去重数据之外的任意一条已去重数据,获取自身在所述内存中的段序号和段内偏移量以定位自身在所述内存中的位置。
优选地,获取所述散列值对应的散列链表地址包括:
获取所述散列值在索引表中的位置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码,对所述关键字段进行计算。
与现有技术相比,本申请包括以下优点:
在本申请中,首先获取与所述待去重数据中的匹配字段相对应的去重文件,再依据所述散列值,定位所述去重文件中的已去重数据,因此,在对每个待去重数据标识时,可以获取与所述待去重数据相关的去重文件中的已去重数据,从而减少了获取的已去重数据的数量,即减少了判断次数,提高了去重效率。进一步地,如果后续系统需要对该去重文件中的数据进行分析,也会因为去重效率提高而加快分析过程。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请的一种数据标识方法的一种流程图;
图2为本申请的一种数据标识方法的子流程图;
图3为本申请的一种数据标识系统的一种结构框图;
图4为本申请的一种数据标识系统中定位模块的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本申请的主要思想之一可以包括,首先,获取与所述待去重数据中的匹配字段相对应的去重文件,其次,依据所述散列值,定位所述去重文件中的已去重数据,然后,再判断待去重数据和已去重数据是否相同,如果存在某条已去重数据和待去重数据相同,则将待去重数据标识为重复数据。如果不存在,则将所述待去重数据的散列值保存到去重文件中。因此,在对每个待去重数据进行重复标识时,可以根据实际需要仅获取与所述待去重数据相关的去重文件中的已去重数据,从而减少了获取的已去重数据的数量,即减少了判断次数,提高了去重效率。进一步地,如果后续系统需要对该去重文件中的数据进行分析,也会因为去重效率提高而加快分析过程。
参考图1,其示出了本申请一种多维度数据标识方法实施例1的一种流程图,可以包括以下步骤:
S101:从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值。
其中,从不同的待去重数据所提取的匹配字段可以相同或不同。从同一个待去重数据所提取匹配字段在不同应用场景下也可以相同或不同。例如:待去重数据为一通话记录,该通话记录包括主叫号码13828443789,被叫号码13926262408,通话时间20110618121314,呼叫类型01,代表主叫,一次通话标志100000001,则其对应的匹配字段可以为通话时间2011061812,也可以为主叫号码13828443789,还可以为通话时间范围0601至0630。
在本实施例中,通话记录中的主叫号码13828443789,被叫号码13926262408,通话时间20110618121314,呼叫类型01和一次通话标志100000001组成关键字段13828443789139262624082011061812131401100000001,对所述关键字段计算获得散列值可以通过采用CRC(Cyclicredundancy check,循环冗余校验)32码或MD5(Message-Digest 5,第五代信息摘要)码,对关键字段进行计算,获得所述关键字段的散列值。
S102:获取与所述匹配字段相对应的去重文件。
在匹配字段为通话时间2011061812时,其对应的去重文件应该为通话时间为2011061812的去重文件,其中去重文件需要按照通话时间保存数据。在匹配字段为主叫号码13828443789时,其对应的去重文件应该为主叫号码13828443789的去重文件,其中去重文件需要按照主叫号码保存数据。
在本实施例中,使用MMAP函数将去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存。因为MMAP函数能够实现带缓存的读写,可以减少系统IO(Input/Output,输入/输出)的操作,提高系统处理效率。同时,使用分段方法保存数据,可以以段为单位管理内存,简化内存的管理,并提高内存的使用率。
需要说明的是:系统可以根据不同的需求,使用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+1条已去重数据在内存中的地址NEXT,则第i+1条已去重数据的段序号和段内偏移量可以通过自身在内存中的地址NEXT和内存的大小MMDB_SEGSIZE得出,其中,i为整数,且i≥1。
S104:读取散列链表中的每个元素判断所述待去重数据和所述散列链表中的已去重数据是否相同,如果是,执行步骤S105,如果否,则继续读取下一个元素,直到遍历完所有的元素为止。如果最终没有任何一条已去重的数据和待去重的数据相同,则执行步骤S106。
在本实施例中,散列链表中还包括与自身对应的已去重数据的关键值,该关键值可以为已去重数据的关键字段的散列值,也可以为已去重数据的关键字段的反向字段的散列值。由于反向字段的散列值可以进一步提高查重的准确性,并有效节省存储空间,所以,本实施例优选反向字段的散列值。
判断所述待去重数据和所述已去重数据是否相同可以包括判断所述待去重数据关键字段的反向字段的散列值和散列链表中的关键值是否相同,其中散列链表中的关键值为已去重数据的关键字段的反向字段的散列值。
例如关键字段13828443789139262624082011061812131401100000001的反向字符的散列值为345123,从第10000散列链表中获取其内存储的关键值。判断关键值是否等于散列值345123,如果是,则表明待去重数据和已去重数据相同;如果否,则表明待去重数据和已去重数据不同,则获取散列链表中的下一个元素进行判断,直至遍历完散列链表中的所有元素为止。S105:将所述待去重数据标识为重复数据。
S106:在待去重数据和散列链表中的所有已去重数据都不相同时,则保留待去重数据。其中,保留待去重数据优选保留待去重数据的关键字段的反向字段的散列值。
需要注意的是:去重文件中的已去重数据不是全部映射到内存,而是把需要用到的数据才映射到内存中,因此,在判断数据是否相同之前,如果在所述内存中未获取到定位的已去重数据时,需要在所述去重文件中查找该已去重数据,并将该已去重数据所在的数据段映射到内存中。
在所有待去重数据成功完成去重过程之后,将内存中的数据同步到去重文件中。如果去重过程失败,需要结束去重,将内存中的数据恢复至初始数据,其中初始数据为系统去重开始之前内存所存储的数据。
应用上述技术方案,首先获取与所述待去重数据中的匹配字段相对应的去重文件,再依据所述散列值,定位所述去重文件中的已去重数据,因此,在对每个待去重数据标识时,可以根据实际需要获取与所述待去重数据相关的去重文件中的已去重数据,从而减少了获取的已去重数据的数量,即减少了判断次数,提高了去重效率。进一步地,如果后续系统需要对该去重文件中的数据进行分析,也会因为去重效率提高而加快分析过程。
更进一步地,系统可以根据不同的需求,使用MMAP函数将所需要的已去重数据映射到内存中,从而提高文件映射的效率,减少内存的使用。去重文件的数据区存储反向字段的散列值,减少了内存占用。
此外,因为反向字段的散列值为一个长整型数值,所以可以避免关键字段的长度不一致而导致的内存长度不同的问题,大大简化内存管理。而通过反向字段的散列值判断待去重数据和已去重数据是否相同,可以提高去重准确率。
与上述方法实施例相对应,参见图3,本申请还提供了一种数据标识系统实施例,在本实施例中,该系统可以包括:字段获取模块31、文件获取模块32、定位模块33、判断模块34和标识模块35。
在本实施例中,字段获取模块31,用于从待去重数据中提取匹配字段,并对待去重数据包括的关键字段进行计算,获得关键字段的散列值。其中,匹配字段和关键字段的描述请参阅方法实施例中说明,对此不再加以介绍。
上述字段获取模块31具体用于采用CRC32码或MD5码,对关键字段进行计算,获得所述关键字段的散列值。
文件获取模块32,用于获取与所述匹配字段相对应的去重文件。
在本实施例中,使用MMAP函数将去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存。因为MMAP函数能够实现带缓存的读写,可以减少系统IO(Input/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所示的数据标识系统还可以包括映射模块,用于在所述内存中未获取到定位的已去重数据的情况下,在所述去重文件中查找该已去重数据,并将该已去重数据映射到内存中。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上系统时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
以上对本申请所提供的一种数据标识方法及系统进行了详细介绍,本文中应用具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种数据标识方法,其特征在于,包括:
从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值;
获取与所述匹配字段相对应的去重文件;
依据所述散列值,定位所述去重文件中的已去重数据;
判断所述待去重数据和所述已去重数据是否相同,如果是,将所述待去重数据标识为重复数据。
2.根据权利要求1所述的数据标识方法,其特征在于,所述去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存;
所述依据所述散列值,定位所述去重文件中的已去重数据包括:
获取所述散列值对应的散列链表地址,以定位所述去重文件映射到内存中的第一条已去重数据;
对于散列链表中除第一条去重数据之外的任意一条已去重数据,获取自身在所述内存中的段序号和段内偏移量以定位自身在所述内存中的位置。
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.根据权利要求1所述的数据标识方法,其特征在于,在所述定位所述去重文件中的已去重数据之后,判断所述待去重数据和所述已去重数据是否相同之前,还包括:
在所述内存中未获取到定位的已去重数据的情况下,在所述去重文件中查找该已去重数据,并将该已去重数据映射到内存中。
6.根据权利要求1所述的数据标识方法,其特征在于,判断所述待去重数据和所述已去重数据是否相同包括:判断所述待去重数据对应的关键字段的反向字段的散列值和所述已去重数据在内存中记录的散列值是否相同。
7.根据权利要求1至6所述的数据标识方法,其特征在于,所述对所述待去重数据包括的关键字段进行计算包括:采用循环冗余码校验CRC32码或第五代信息摘要MD5码,对所述关键字段进行计算。
8.一种数据标识系统,其特征在于,包括:
字段获取模块,用于从待去重数据中提取匹配字段,并对所述待去重数据包括的关键字段进行计算,获得所述关键字段的散列值;
文件获取模块,用于获取与所述匹配字段相对应的去重文件;
定位模块,用于依据所述散列值,定位所述去重文件中的已去重数据;
判断模块,用于判断所述待去重数据和所述已去重数据是否相同;
标识模块,用于在所述判断模块判断所述待去重数据和所述已去重数据相同时,将所述待去重数据标识为重复数据。
9.根据权利要求8所述的数据标识系统,其特征在于,所述去重文件中的已去重数据映射到内存中,且每条已去重数据在所述内存中分段保存;
所述定位模块包括:第一定位单元,用于获取所述散列值对应的散列链表地址,以定位所述去重文件映射到内存中的第一条已去重数据;
第二定位单元,用于对于所述散列链表中除第一条去重数据之外的任意一条已去重数据,获取自身在所述内存中的段序号和段内偏移量以定位自身在所述内存中的位置。
10.根据权利要求9所述的数据标识系统,其特征在于,所述第一定位单元包括:
第一获取子单元,用于获取所述散列值在索引表中的位置idx,位置idx=HASH_VALUE%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码,对所述关键字段进行计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210011422XA CN102591855A (zh) | 2012-01-13 | 2012-01-13 | 一种数据标识方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210011422XA CN102591855A (zh) | 2012-01-13 | 2012-01-13 | 一种数据标识方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102591855A true CN102591855A (zh) | 2012-07-18 |
Family
ID=46480524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210011422XA Pending CN102591855A (zh) | 2012-01-13 | 2012-01-13 | 一种数据标识方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102591855A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345423A (zh) * | 2013-07-03 | 2013-10-09 | 北京京东尚科信息技术有限公司 | 一种处理异步任务的方法和系统 |
CN104462527A (zh) * | 2014-12-22 | 2015-03-25 | 龙信数据(北京)有限公司 | 一种数据去重的方法及装置 |
CN104793997A (zh) * | 2014-01-17 | 2015-07-22 | 华为技术有限公司 | 一种数据处理装置及方法 |
WO2016091138A1 (zh) * | 2014-12-12 | 2016-06-16 | 华为技术有限公司 | 数据缩减的方法及装置 |
CN108073521A (zh) * | 2016-11-11 | 2018-05-25 | 深圳市创梦天地科技有限公司 | 一种数据去重的方法和系统 |
CN109104732A (zh) * | 2018-06-13 | 2018-12-28 | 珠海格力电器股份有限公司 | 数据发送方法、装置及智能电器 |
CN109783010A (zh) * | 2017-11-14 | 2019-05-21 | 三星电子株式会社 | 使用键值固态驱动器的数据去重 |
CN110334086A (zh) * | 2019-05-30 | 2019-10-15 | 平安科技(深圳)有限公司 | 数据去重方法、装置、计算机设备以及存储介质 |
CN111858640A (zh) * | 2020-07-30 | 2020-10-30 | 平安国际智慧城市科技股份有限公司 | 一种数据管理方法、数据管理装置、电子设备及存储介质 |
CN112152937A (zh) * | 2020-09-29 | 2020-12-29 | 锐捷网络股份有限公司 | 一种报文去重的方法、装置、电子设备及存储介质 |
CN113704240A (zh) * | 2021-09-23 | 2021-11-26 | 世纪龙信息网络有限责任公司 | 一种数据去重的方法 |
CN114476883A (zh) * | 2022-01-25 | 2022-05-13 | 华恺智联电梯科技有限公司 | 一种免接触呼梯系统和方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101350869A (zh) * | 2007-07-19 | 2009-01-21 | 中国电信股份有限公司 | 基于索引和散列的电信计费去重方法及设备 |
CN101442731A (zh) * | 2008-12-12 | 2009-05-27 | 中国移动通信集团安徽有限公司 | 一种话单剔重方法和装置 |
US20100250896A1 (en) * | 2009-03-30 | 2010-09-30 | Hi/Fn, Inc. | System and method for data deduplication |
CN102156744A (zh) * | 2011-04-18 | 2011-08-17 | 北京神州数码思特奇信息技术股份有限公司 | 一种内存话单剔重方法 |
-
2012
- 2012-01-13 CN CN201210011422XA patent/CN102591855A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101350869A (zh) * | 2007-07-19 | 2009-01-21 | 中国电信股份有限公司 | 基于索引和散列的电信计费去重方法及设备 |
CN101442731A (zh) * | 2008-12-12 | 2009-05-27 | 中国移动通信集团安徽有限公司 | 一种话单剔重方法和装置 |
US20100250896A1 (en) * | 2009-03-30 | 2010-09-30 | Hi/Fn, Inc. | System and method for data deduplication |
CN102156744A (zh) * | 2011-04-18 | 2011-08-17 | 北京神州数码思特奇信息技术股份有限公司 | 一种内存话单剔重方法 |
Non-Patent Citations (1)
Title |
---|
肖丽: "哈希查找中散列函数的运用", 《技术与市场》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345423A (zh) * | 2013-07-03 | 2013-10-09 | 北京京东尚科信息技术有限公司 | 一种处理异步任务的方法和系统 |
CN103345423B (zh) * | 2013-07-03 | 2016-04-20 | 北京京东尚科信息技术有限公司 | 一种处理异步任务的方法和系统 |
CN104793997A (zh) * | 2014-01-17 | 2015-07-22 | 华为技术有限公司 | 一种数据处理装置及方法 |
CN104793997B (zh) * | 2014-01-17 | 2018-06-26 | 华为技术有限公司 | 一种数据处理装置及方法 |
WO2016091138A1 (zh) * | 2014-12-12 | 2016-06-16 | 华为技术有限公司 | 数据缩减的方法及装置 |
CN104462527A (zh) * | 2014-12-22 | 2015-03-25 | 龙信数据(北京)有限公司 | 一种数据去重的方法及装置 |
CN108073521A (zh) * | 2016-11-11 | 2018-05-25 | 深圳市创梦天地科技有限公司 | 一种数据去重的方法和系统 |
CN108073521B (zh) * | 2016-11-11 | 2021-10-08 | 深圳市创梦天地科技有限公司 | 一种数据去重的方法和系统 |
CN109783010A (zh) * | 2017-11-14 | 2019-05-21 | 三星电子株式会社 | 使用键值固态驱动器的数据去重 |
CN109783010B (zh) * | 2017-11-14 | 2021-06-01 | 三星电子株式会社 | 键值固态驱动器及在其上使用的去重方法 |
US11194496B2 (en) | 2017-11-14 | 2021-12-07 | Samsung Electronics Co., Ltd. | Data deduplication using KVSSD |
CN109104732A (zh) * | 2018-06-13 | 2018-12-28 | 珠海格力电器股份有限公司 | 数据发送方法、装置及智能电器 |
CN110334086A (zh) * | 2019-05-30 | 2019-10-15 | 平安科技(深圳)有限公司 | 数据去重方法、装置、计算机设备以及存储介质 |
CN111858640A (zh) * | 2020-07-30 | 2020-10-30 | 平安国际智慧城市科技股份有限公司 | 一种数据管理方法、数据管理装置、电子设备及存储介质 |
CN111858640B (zh) * | 2020-07-30 | 2024-05-10 | 深圳平安智慧医健科技有限公司 | 一种数据管理方法、数据管理装置、电子设备及存储介质 |
CN112152937A (zh) * | 2020-09-29 | 2020-12-29 | 锐捷网络股份有限公司 | 一种报文去重的方法、装置、电子设备及存储介质 |
CN112152937B (zh) * | 2020-09-29 | 2022-08-19 | 锐捷网络股份有限公司 | 一种报文去重的方法、装置、电子设备及存储介质 |
CN113704240A (zh) * | 2021-09-23 | 2021-11-26 | 世纪龙信息网络有限责任公司 | 一种数据去重的方法 |
CN114476883A (zh) * | 2022-01-25 | 2022-05-13 | 华恺智联电梯科技有限公司 | 一种免接触呼梯系统和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102591855A (zh) | 一种数据标识方法及系统 | |
CN103345469B (zh) | 号码集合的存储、查询方法及其装置 | |
US20170255709A1 (en) | Atomic updating of graph database index structures | |
CN102129425B (zh) | 数据仓库中大对象集合表的访问方法及装置 | |
KR101617696B1 (ko) | 데이터 정규표현식의 마이닝 방법 및 장치 | |
CN103902702A (zh) | 一种数据存储系统和存储方法 | |
CN106407303A (zh) | 数据存储、查询方法及装置 | |
CN103902698A (zh) | 一种数据存储系统和存储方法 | |
CN110109910A (zh) | 数据处理方法及系统、电子设备和计算机可读存储介质 | |
CN106326475A (zh) | 一种高效的静态哈希表实现方法及系统 | |
CN104794228A (zh) | 一种搜索结果提供方法及装置 | |
CN107704202A (zh) | 一种数据快速读写的方法和装置 | |
CN111125116B (zh) | 定位业务表中代码字段及对应代码表的方法及系统 | |
CN110781183A (zh) | Hive数据库中增量数据的处理方法、装置以及计算机设备 | |
CN115757495A (zh) | 缓存数据处理方法、装置、计算机设备及存储介质 | |
CN112148217B (zh) | 全闪存储系统的重删元数据的缓存方法、装置及介质 | |
CN111460011A (zh) | 页面数据展示方法、装置、服务器及存储介质 | |
CN113360676A (zh) | 一种基于知识图谱确定企业潜在关系的方法及装置 | |
CN112182004A (zh) | 实时查看数据方法、装置、计算机设备及存储介质 | |
Jensen et al. | PTrie: data structure for compressing and storing sets via prefix sharing | |
RU2011152760A (ru) | Оптимизации кода с использованием компилятора с двумя порядками следования байтов | |
CN105677645A (zh) | 一种数据表比对方法和装置 | |
CN109446167A (zh) | 一种日志数据存储、提取方法及装置 | |
CN114911865A (zh) | 一种区块链虚拟货币数据中台及虚拟货币数据处理方法 | |
CN104536897A (zh) | 基于关键字的自动测试方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120718 |