数据切分方法、判重方法及电子设备与流程

文档序号:15588395发布日期:2018-10-02 18:39阅读:398来源:国知局

本申请涉及互联网技术领域,尤其涉及一种数据切分方法、判重方法及电子设备。



背景技术:

在处理海量数据(例如文档或网页)时,为了节约存储空间,通常都会对数据进行判重。目前业界的主流做法是基于simhash算法进行数据判重。simhash算法是数据去重最常用的哈希(hash)方法,其原理是:选定simhash值的位数;将simhash值的各位初始化为0;提取待签名数据中的特征;使用传统hash函数计算各个特征的hash值;对各特征的hash值的每一位,如果该位为1,则simhash值相应位的值加1;否则减1;对得到的simhash值的每一位,若该位大于1,则设为1,否则设为0,得到simhash签名。simhash算法的速度很快。

基于simhash算法的数据判重过程为:对历史数据进行simhash签名并存储simhash签名;对新数据,首先对其进行simhash签名,然后比较其simhash签名和历史数据的simhash签名是否相似,以判断新数据中是否已存在于历史数据中。

上述方案在最差情况下,每次都需要遍历全部历史数据的simhash签名进行比较,虽然时间复杂度上是o(n),但由于历史数据基数较大,例如对于爬虫平台而言,其数据量基本上都是上亿级别的,所以时间效率仍旧较低。



技术实现要素:

本申请提供一种数据切分方法、判重方法及电子设备,用以提高数据判重的时间效率。

为达到上述目的,本申请的实施例采用如下技术方案:

第一方面,提供了一种数据切分方法,包括:

获取待处理数据的签名;

对所述签名进行至少一级切分,以获得至少两个签名前缀;

对应存储所述至少两个签名前缀中的每个签名前缀和所述签名。

第二方面,提供了一种数据判重方法,包括:

获取待处理数据的签名;

对所述签名进行至少一级切分,以获得至少两个签名前缀;

根据所述至少两个签名前缀,对所述待处理数据进行判重。

第三方面,提供了一种电子设备,包括:

存储器,用于存储程序;

处理器,用于执行所述程序,以用于:

获取待处理数据的签名;

对所述签名进行至少一级切分,以获得至少两个签名前缀;

对应存储所述至少两个签名前缀中的每个签名前缀和所述签名。

第四方面,提供了一种电子设备,包括:

存储器,用于存储程序;

处理器,用于执行所述程序,以用于:

获取待处理数据的签名;

对所述签名进行至少一级切分,以获得至少两个签名前缀;

根据所述至少两个签名前缀,对所述待处理数据进行判重。

在本申请实施例中,对数据的签名进行至少一级切分,获得至少两个签名前缀,对应存储签名前缀和签名,在进行数据判重时,不再基于数据的签名而是基于签名前缀,与签名相比,签名前缀的位数相对较少,相当于是签名的索引,通过签名前缀有利于缩减数据查询范围,提高判重的时间效率。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本申请一实施例提供的业务系统的结构示意图;

图2a为本申请一实施例提供的数据切分方法的流程示意图;

图2b为本申请另一实施例提供的签名切分结果的示意图;

图3为本申请又一实施例提供的数据判重方法的流程示意图;

图4为本申请又一实施例提供的数据切分装置的结构示意图;

图5为本申请又一实施例提供的电子设备的结构示意图;

图6为本申请又一实施例提供的数据判重装置的结构示意图;

图7为本申请又一实施例提供的电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

针对现有技术对数据进行判重时存在的时间效率较低等问题,本申请提供一种解决方案,其主要原理是:对数据的签名进行切分,获得至少两个签名前缀,基于签名前缀进行数据判重。与签名相比,签名前缀的位数相对较少,相当于是签名的索引,通过签名前缀有利于缩减数据查询范围,提高判重的时间效率。

值得说明的是,本申请实施例提供的方法可应用于任何具有数据判重逻辑的业务系统,例如可以是爬虫系统。爬虫系统每天要爬取大量的网页,每天新爬取的网页在千万级别,如果全部存储,会占据大量的存储空间,所以需要判断当前爬取的网页和历史网页是否相似,如果相似程度较高,那么可以放弃当前网页,以节约存储空间。如果采用现有方案,这种判重效率比较低,采用本申请实施例提供的方法可以极大地提高判重的时间效率。

对一些业务系统来说,可能在实施本申请实施例提供的方法之前,已经存储有一些历史数据,这些历史数据是按照现有技术的方法进行的判重,即这些历史数据并未进行签名切分。为了采用本申请实施例提供的基于签名前缀进行数据判重的方法,不仅需要实现新数据的判重逻辑,还需要对历史数据进行签名切分并存储。

本实施例提供的数据切分方法和数据判重方法可以由业务系统来执行,这里所说的业务系统,可以是爬虫平台等针对海量网页进行处理的业务平台,也可以进行综合文档处理的文档处理平台等。如图1所示,其为本申请一实施例的业务系统的结构示意图,图1所示的结构仅仅是本发明的技术方案可以应用的业务系统的示例之一。业务系统中包括数据切分装置和数据重判装置,外部调用服务可以是任何能够提供或者产生数据的服务,其主要来自于业务系统对其他系统或者客户端的业务访问或者服务调用,外部调用服务是新数据产生的主要来源。业务系统对应的数据库用来存储业务系统对应的数据、该数据对应的签名以及对签名进行切分处理后产生的签名前缀,其中,数据、数据的签名以及签名前缀可以分开不同的数据库进行存储也可以存储于同一数据库中。在该数据库中,存在有部分未进行签名切分的历史数据。

数据切分装置主要用来执行下述图2a所示的处理流程,其主要用于对数据库中,未进行签名切分的历史数据进行处理,生成历史数据对应的切分后的签名前缀并写入数据库中,通过数据切分装置的处理能够逐渐使得数据库中的全部数据均具有签名前缀,从而便于后续的新数据进入后的判重比对。

数据重判装置主要用来执行下述图3所示的处理流程,其主要是针对新数据进行的处理,新数据进入业务系统后,首先会通过签名生成模块(现有技术中也存在该模块)生成新数据的签名,然后对该签名进行切分并基于切分产生的签名前缀进行判重,对于非重复数据,则连同签名和签名前缀一同存入数据库,对于重复数据则进行丢弃处理。

需要说明的是,上述的数据切分装置和数据判重装置中的部分模块可以是重叠的,例如,第一获取模块和第二获取模块可以为一个模块,均用于获取签名,只是获取签名的来源不同,第一切分模块和第二切分模块也可以为同一模块,均用于针对签名进行切分处理。

以上对于本发明实施例的技术原理和示例性的应用框架进行的说明,下面详细介绍一下本发明实施例的具体技术方案。

基于上述,本申请从历史数据的需求出发提供了一种数据切分方法,用以解决数据签名的切分和存储问题;并从新数据的需求出发提供了一种数据判重方法,用以解决数据判重问题。下面通过不同实施例进行详细说明。

图2a为本申请一实施例提供的数据切分方法的流程示意图。如图2a所示,该方法包括:

11、获取待处理数据的签名。该步骤可以由图1中的数据切分装置执行。其中,待处理数据的签名可以通过现有技术的方案而生成并存储在业务系统的数据库中。在该步骤中,数据切分装置可以从存储签名的数据库中直接获取签名,在步骤中所获取的签名主要是已经存储的历史数据的签名。

12、对上述签名进行至少一级切分,以获得至少两个签名前缀,该步骤可以由图1中的数据切分装置执行。

13、对应存储至少两个签名前缀中的每个签名前缀和上述签名,该步骤可以由图1中的数据切分装置执行。具体地,数据切分装置可以将签名前缀和上述签名存储在现有的用于存储签名的数据库中。

在本实施例中,将需要进行签名切分的数据称为待处理数据。可选的,待处理数据可以是业务系统中尚未进行签名切分的历史数据,但并不限于此。可选的,待处理数据可以是任何形式的数据,例如文档、句子或网页等。

在需要对待处理数据进行签名切分时,可以获取待处理数据的签名。在该获取过程中,如果待处理数据的签名已存在,则数据切分装置可以直接访问相应存储设备,获取待处理数据的签名;如果待处理数据的签名未存在,则数据切分装置可以按照签名生成逻辑生成待处理数据的签名。

可选的,上述待处理数据的签名可以是simhash签名,但不限于此。

其中,数据切分装置获取待处理数据的simhash签名的过程为:选定simhash值的位数;将simhash值的各位初始化为0;提取待处理数据中的特征;使用传统hash函数计算各个特征的hash值;对各特征的hash值的每一位,如果该位为1,则simhash值相应位的值加1;否则减1;对得到的simhash值的每一位,若该位大于1,则设为1,否则设为0,从而得到待处理数据的simhash签名。

在获取待处理数据的签名之后,可以对所获取的签名进行切分。在本实施例中,数据切分装置可以对所获取的签名进行一级切分,也可以对所获取的签名进行多级切分。通过对所获取的签名进行切分,可以获得至少两个签名前缀。签名前缀的位数少于签名,是签名的一部分,相当于签名的索引。

在获得签名前缀之后,数据切分装置可以将每个签名前缀和签名对应存储,以便于后续基于该签名前缀和签名进行数据判重。

在本申请各实施例中,所述签名相当于待处理数据的指纹。这种签名不是随机的签名而是依托于待处理数据本身内容生成的,所以对于内容差别较大的数据,其签名的差别也较大,对于内容相似的数据,其签名也较为相似。对于签名来说,可以通过两个签名之间的汉明距离比较这两个签名是否相似。汉明距离是一个概念,它表示两个相同长度的字符串对应位不同的数量。基于此,可以对应比较两个签名,确定两个签名对应位不同的数量;然后判断所述对应位不同的数量是否小于或等于预设的相似阈值;若判断结果为小于或等于,则表示两个签名相同或相似;若判断结果为大于,则表示两个签名不相似。

上述相似阈值表示两个签名相似时最多允许不相同的位数。一般而言,对于长文档而言汉明距离的相似阈值为7,意味着两个文档的签名之间的汉明距离(即对应位不同的数量)小于或等于7时,这两个文档较为相似;对于句子而言汉明距离的相似阈值为3,意味着两个句子的签名之间的汉明距离(即对应位不同的数量)小于或等于3时,这两个句子较为相近。举例说明,假设文档a的签名是100010010,文档b的签名是110010011,则文档a和文档b的签名中有两位不同,所以汉明距离为2。如果相似阈值为7,那么因为文档a和文档b的签名的汉明距离小于7,所以两者属于相似文档。

可选的,对于两个签名,如果最多有n位不同,那么采用依次切分的方式将两个签名都切分为n+1段,那么根据抽屉原理(或鸽笼原理)可以得出:两个签名切分的n+1段中至少有1段是完全相同的。抽屉原理是组合数学中一个重要的原理。假设桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,至少会有一个抽屉里面至少放两个苹果。基于此,抽屉原理的一般含义为:每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1个元素放到n个集合中去,其中必定有一个集合里至少有两个元素。类比于签名切分,n+1段对应于n+1个元素,相似阈值n对应于n个集合。

基于上述分析,可以根据汉明距离的相似阈值,确定每次切分需要将签名切分为几段,即切分段数;然后,按照所述切分段数,对签名进行至少一级切分,从而获得至少两个签名前缀。其中,将汉明距离的相似阈值记为n,将切分段数记为m,那么需要满足m>=n+1。优选的,m=n+1。举例说明,如果n=3,则m=4,即将签名切分为4段;如果n=5,则m=6,即将签名切分为6段;如果n=6,则m=7,即将签名切分为7段;如果m=7,则m=8,即将签名切分为8段。值得说明的是,这里的切分并不要求均等切分,依次切分即可。可选的,所述依次切分可以是按照从左到右的顺序依次切分。

可选的,数据切分装置可以对签名进行两级切分。对签名进行两级切分的一种实施方式包括:

按照切分段数,对签名进行一级切分,以获得至少两个前缀首部;对至少两个前缀首部中的每个前缀首部,按照切分段数,对签名中除该前缀首部之外剩余的位数进行二级切分,以获得该前缀首部对应的至少两个前缀尾部;这样每个前缀首部又会对应至少两个前缀尾部,将每个前缀首部和其对应的每个前缀尾部分别组合在一起,就会形成一个签名前缀。经过二级切分后的签名,具有切分段数的平方个签名前缀;然后将每个签名前缀和签名对应存储。

可选的,上述一级切分和二级切分,可以是按照从左到右的顺序,依次切分。

下面通过具体示例对该二级切分过程进行说明。在下面示例中,假设n=3,m=4,即相似阈值为3,每次切分需要将签名切分为4段,并以对历史文档进行签名切分为例,具体切分过程如下:

生成历史文档的64位simhash签名;对历史文档的simhash签名进行二级划分。如图2b所示simhash签名,首先,按照从左到右的按顺序将该签名切分为4段,每段16位,这4段分别为图2b中所示的a部、b部、c部、d部。对a、b、c、d四段中的每段,将签名中剩余的部分按照从左到右的顺序进行二级切分,这里剩余的部分为48位,依次切分为4段后,每段12位,切分结果分别如图2b中a、b、c、d部对应的下级部分。基于图2b所示切分方式,simhash签名会被切分为16个签名前缀。

在一可选实施方式中,数据切分装置可以将签名和由签名切分得到的签名前缀对应存储到传统数据库中。对应于图1中的数据库为传统数据库。则对应存储每个签名前缀和签名的方式可以是:以所述签名为主键,将所述每个签名前缀用分隔符拼接后存储到一个字段中,形成一条数据记录,所述字段可随意命名,例如命名为extend,并为所述字段设置索引。可选的,所述索引可以是签名字段,但不限于此。

在一可选实施方式中,数据切分装置可以将签名前缀和由签名切分得到的签名前缀对应存储到支持列表(list)的kv型数据库中,该数据库实际上是一kv缓存。对应于图1中的数据库为支持列表list的kv型数据库。则对应存储每个签名前缀和签名的方式可以是:将每个签名前缀作为kv型数据库中的键(key),以签名作为值(value),以列表(list)形式追加到该key对应的value中。在该实施方式中,每个签名会被重复存储,重复存储的次数等于签名前缀的个数,为便于描述将签名前缀的个数记为m,但是考虑到kv型数据库支持并行检索,所以检索时间可以缩减为原来的1/m。

在一可选实施方式中,数据切分装置可以将签名和由签名切分得到的签名前缀对应存储到不支持list的kv型数据库中。对应于图1中的数据库为不支持list的kv型数据库。则对应存储每个签名前缀和签名的方式可以是:以每个签名前缀作为key,将签名更新为key对应的value。

经过上述处理,可以完成历史数据的签名的切分和存储,为后续基于签名前缀的数据判重过程提供条件。

图3为本申请一实施例提供的数据判重方法的流程示意图。如图3所示,该方法包括:

31、获取待处理数据的签名。该步骤可以由图1中的数据判重装置执行。其中,待处理数据可以是来自于业务系统之外的新数据,可以是通过外部调用服务产生的新数据,新数据进行系统后,通过专门的签名生成模块生成新数据的签名。

32、对所述签名进行至少一级切分,以获得至少两个签名前缀。该步骤可以由图1中的数据判重装置执行。

33、根据所述至少两个签名前缀,对所述待处理数据进行判重。该步骤可以由图1中的数据判重装置执行。

值得说明的是,若本实施例的数据判重方法与上述实施例提供的数据切分方法应用于同一业务系统,则数据切分装置与数据判重装置可以是同一装置,也可以是独立装置。其中,如果业务系统中的历史数据未进行签名切分,那么数据切分装置对历史数据的签名进行切分,获得历史数据的签名前缀,是数据判重装置基于签名前缀进行数据判重的前提条件;如果业务系统中的历史数据已经进行签名切分,那么数据判重装置可以直接基于签名前缀进行数据判重。

在本实施例中,将需要进行判重的数据称为待处理数据。可选的,待处理数据可以是业务系统中的新数据,但并不限于此。可选的,待处理数据可以是任何形式的数据,例如文档、句子或网页等。

在需要对待处理数据进行判重时,数据判重装置可以获取待处理数据的签名。在该获取过程中,如果待处理数据的签名已存在,则数据判重装置可以直接访问相应存储设备,获取待处理数据的签名;如果待处理数据的签名未存在,则数据判重装置可以按照签名生成逻辑生成待处理数据的签名。

可选的,上述待处理数据的签名可以是simhash签名,但不限于此。

其中,数据判重装置获取待处理数据的simhash签名的过程为:选定simhash值的位数;将simhash值的各位初始化为0;提取待处理数据中的特征;使用传统hash函数计算各个特征的hash值;对各特征的hash值的每一位,如果该位为1,则simhash值相应位的值加1;否则减1;对得到的simhash值的每一位,若该位大于1,则设为1,否则设为0,从而得到待处理数据的simhash签名。

在获取待处理数据的签名之后,可以对所获取的签名进行切分。在本实施例中,数据判重装置可以对所获取的签名进行一级切分,也可以对所获取的签名进行多级切分。通过对所获取的签名进行切分,可以获得至少两个签名前缀。签名前缀的位数少于签名,是签名的一部分,相当于签名的索引。

在获得签名前缀之后,数据判重装置可以基于签名前缀进行数据判重。与签名相比,签名前缀的位数相对较少,相当于是签名的索引,通过签名前缀有利于缩减数据查询范围,提高判重的时间效率。

值得说明的是,本实施例对签名进行切分的方式,与前述数据切分方法实施例中对签名进行切分的方式相同,故可参见前述实施例,在此不再赘述。

在一可选实施方式中,上述步骤33,即根据至少两个签名前缀,对待处理数据进行判重的实施方式,包括:

以待处理数据的至少两个签名前缀作为查询条件,在历史签名前缀中进行查询;若未查询到与至少两个签名前缀中任何签名前缀相同的历史签名前缀,则确定待处理数据为非重复数据。在该情况下,只需将待处理数据的签名前缀进行查询即可,无需进行签名查询,而签名前缀相当于签名的索引,其查询效率要远远高于签名的查询效率,因此可以提高判重的时间效率。

进一步,若查询到与至少两个签名前缀中任意签名前缀相同的历史签名前缀,将待处理数据的签名和查询到的历史签名前缀对应的历史签名进行相似比较;若待处理数据的签名与所述历史签名不相似,确定待处理数据为非重复数据;若待处理数据的签名与所述历史签名相似,确定待处理数据为重复数据。

上述将待处理数据的签名和查询到的历史签名前缀对应的历史签名进行相似比较,主要是指比较两个签名的汉明距离是否小于或等于相似阈值的过程。例如,可以对应比较两个签名,确定两个签名对应位不同的数量,即汉明距离;然后判断所述对应位不同的数量(即汉明距离)是否小于或等于预设的相似阈值;若判断结果为小于或等于,则表示两个签名相同或相似;若判断结果为大于,则表示两个签名不相似。

在查询到与至少两个签名前缀中任意签名前缀相同的历史签名前缀情况下,因为签名前缀的位数小于签名的位数,在数据均衡的情况下,每个签名前缀对应的历史签名数量远远小于历史签名的总数量,这相当于缩减了数据筛选范围。举例说明,假设有100亿个签名,每个签名前缀为28位,则在数据均衡情况下,每个签名前缀平均对应的签名个数为100亿/228,约为37个。由此可见,即使需要将待处理数据的签名与查询到的历史签名前缀对应的历史签名进行比较,但因为数据筛选范围减小了,因此也可以提高数据判重的时间效率。

另外,在上述确定待处理数据为非重复数据的情况下,可以对应存储待处理数据、待处理数据的每个签名前缀和待处理数据的签名,并执行相应业务处理。该步骤可以由图1中的数据判重装置执行,具体的存储位置可以为图1中业务系统对应的数据库。

可选的,可以将待处理数据的每个签名前缀和签名对应存储到传统数据库中。则对应存储每个签名前缀和签名的方式可以是:以所述签名为主键,将所述每个签名前缀用分隔符拼接后存储到一个字段中,形成一条数据记录,所述字段可随意命名,例如命名为extend,并为所述字段设置索引。可选的,所述索引可以是签名字段,但不限于此。

可选的,可以将待处理数据的每个签名前缀和签名对应存储到支持list的kv型数据库中。则对应存储每个签名前缀和签名的方式可以是:将每个签名前缀作为kv型数据库中的key,以签名作为value,以list形式追加到该key对应的value中。

可选的,可以将待处理数据的每个签名前缀和签名对应存储到不支持list的kv型数据库中。则对应存储每个签名前缀和签名的方式可以是:以每个签名前缀作为key,将签名更新为key对应的value。

另外,在上述确定待处理数据为重复数据的情况下,可以将待处理数据丢弃。

从整个数据判重过程来说,通过对签名进行切分,基于签名前缀进行数据判重,一方面因为签名前缀作为签名的索引,可以减少数据库中海量签名的查询次数,另一方面因为签名前缀的位数小于签名的位数,所对应的签名数量相对较少,可以缩减数据筛选范围,因此可以提高数据判重的时间效率。

图4为本申请又一实施例提供的数据切分装置的结构示意图。如图4所示,该装置包括:第一获取模块41、第一切分模块42和第一存储模块43。

第一获取模块41,用于获取待处理数据的签名。

第一切分模块42,用于对所述签名进行至少一级切分,以获得至少两个签名前缀。

第一存储模块43,用于对应存储所述至少两个签名前缀中的每个签名前缀和所述签名。

在一可选实施方式中,第一切分模块42具体用于:根据汉明距离的相似阈值,确定切分段数;按照切分段数,对所述签名进行至少一级切分,以获得所述至少两个签名前缀。

进一步可选地,第一切分模块42具体用于:按照所述切分段数,对所述签名进行一级切分,以获得至少两个前缀首部;对于所述至少两个前缀首都中的每个前缀首部,按照所述切分段数,对所述签名中除所述前缀首部之外剩余的位数进行二级切分,以获得所述前缀首部对应的至少两个前缀尾部;对所述每个前缀首部,将所述前缀首部和所述前缀首部对应的至少两个前缀尾部中的每个前缀尾部分别组合在一起,形成所述至少两个签名前缀中的一个签名前缀。

值得说明的是,上述切分并不要求均等切分,依次切分即可。可选的,所述依次切分可以是按照从左到右的顺序依次切分。

在一可选实施方式中,第一存储模块43具体用于:

以所述签名为主键,将所述每个签名前缀用分隔符拼接后存储到一个字段中,并为所述字段设置索引;可选的,所述索引可以是签名字段,但不限于此;或者

以所述每个签名前缀作为键,将所述签名追加到所述键对应的取值列表中;或者

以所述每个签名前缀作为键,可以切分数据的签名,获得签名前缀,并对应存储签名前缀与签名,为后续基于签名前缀进行数据判重提供了条件。

以上描述了数据切分装置的内部功能和结构,如图5所示,实际中,该数据切分装置可实现为电子设备,包括:存储器51和处理器52。

存储器51,用于存储程序。

除上述程序之外,存储器51还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器51可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器52,与存储器51耦合,执行所述存储器51所存储的程序,以用于:

获取待处理数据的签名;对所述签名进行至少一级切分,以获得至少两个签名前缀;对应存储所述至少两个签名前缀中的每个签名前缀和所述签名。

在一可选实施方式中,处理器52在对所述签名进行至少一级切分时,具体可用于:根据汉明距离的相似阈值,确定切分段数;按照所述切分段数,对所述签名进行至少一级切分,以获得所述至少两个签名前缀。

进一步可选地,处理器52在按照所述切分段数,对所述签名进行至少一级切分时,具体用于:按照所述切分段数,对所述签名进行一级切分,以获得至少两个前缀首部;对于所述至少两个前缀首都中的每个前缀首部,按照所述切分段数,对所述签名中除所述前缀首部之外剩余的位数进行二级切分,以获得所述前缀首部对应的至少两个前缀尾部;对所述每个前缀首部,将所述前缀首部和所述前缀首部对应的至少两个前缀尾部中的每个前缀尾部分别组合在一起,形成所述至少两个签名前缀中的一个签名前缀。

值得说明的是,上述切分并不要求均等切分,依次切分即可。可选的,所述依次切分可以是按照从左到右的顺序依次切分。

在一可选实施方式中,处理器52可以将每个签名前缀和签名对应存储到存储器51中。相应地,存储器51还用于对应存储每个签名前缀和签名。

在一可选实施方式中,处理器52可以将每个签名前缀和签名对应存储到外部数据库中。例如,处理器52可以将每个签名前缀和签名对应存储到传统数据库中,则处理器52具体可以以所述签名为主键,将所述每个签名前缀用分隔符拼接后存储到一个字段中,并为所述字段设置索引。又例如,处理器52可以将每个签名前缀和签名对应存储到支持list的kv型数据库中,则处理器52具体可以以所述每个签名前缀作为key,将所述签名追加到所述key对应的value的list中。又例如,处理器52可以将每个签名前缀和签名对应存储到不支持list的kv型数据库中,则处理器52具体可以以所述每个签名前缀作为key,将所述签名更新为所述key对应的value。

进一步,如图5所示,电子设备还包括:通信组件53、电源组件54、音频组件55、显示器56等其它组件。图5中仅示意性给出部分组件,并不意味着电子设备只包括图5所示组件。

通信组件53被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件53经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件53还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

基于通信组件53,处理器52可以通过通信组件53将每个签名前缀和签名对应存储到外部数据库中。

电源组件54,为电子设备的各种组件提供电力。电源组件54可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件55被配置为输出和/或输入音频信号。例如,音频组件55包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器51或经由通信组件53发送。在一些实施例中,音频组件55还包括一个扬声器,用于输出音频信号。

显示器56包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

图6为本申请又一实施例提供的数据判重装置的结构示意图。如图6所示,该装置包括:第二获取模块61、第二切分模块62和判重模块63。

第二获取模块61,用于获取待处理数据的签名。

第二切分模块62,用于对所述签名进行至少一级切分,以获得至少两个签名前缀。

判重模块63,用于根据所述至少两个签名前缀,对所述待处理数据进行判重。

在一可选实施方式中,第二获取模块61具体可用于:如果待处理数据的签名已存在,则可以直接访问相应存储设备,获取待处理数据的签名;如果待处理数据的签名未存在,则可以按照签名生成逻辑生成待处理数据的签名。

在一可选实施方式中,第二切分模块62具体用于:根据汉明距离的相似阈值,确定切分段数;按照切分段数,对所述签名进行至少一级切分,以获得所述至少两个签名前缀。

进一步可选地,第二切分模块62具体用于:按照所述切分段数,对所述签名进行一级切分,以获得至少两个前缀首部;对于所述至少两个前缀首都中的每个前缀首部,按照所述切分段数,对所述签名中除所述前缀首部之外剩余的位数进行二级切分,以获得所述前缀首部对应的至少两个前缀尾部;对所述每个前缀首部,将所述前缀首部和所述前缀首部对应的至少两个前缀尾部中的每个前缀尾部分别组合在一起,形成所述至少两个签名前缀中的一个签名前缀。

值得说明的是,上述切分并不要求均等切分,依次切分即可。可选的,所述依次切分可以是按照从左到右的顺序依次切分。

在一可选实施方式中,判重模块63具体可用于:以所述至少两个签名前缀作为查询条件,在历史签名前缀中进行查询;若未查询到与所述至少两个签名前缀中任何签名前缀相同的历史签名前缀,确定所述待处理数据为非重复数据。

进一步,判重模块63还用于:若查询到与所述至少两个签名前缀中任意签名前缀相同的历史签名前缀,将所述签名和所述查询到的历史签名前缀对应的历史签名进行相似比较;若所述签名与所述历史签名不相似,确定所述待处理数据为非重复数据。

进一步,判重模块63还用于:若所述签名与所述历史签名相似,确定所述待处理数据为重复数据。

进一步,数据判重装置还包括第二存储模块64,还用于:在确定所述待处理数据为非重复数据时,对应存储所述待处理数据、所述每个签名前缀和所述签名。

可选的,可以将待处理数据的每个签名前缀和签名对应存储到传统数据库中。则第二存储模块64具体可以以所述签名为主键,将所述每个签名前缀用分隔符拼接后存储到一个字段中,该字段可命名为extend,并为所述字段设置索引。可选的,所述索引可以是签名字段,但不限于此。

可选的,可以将待处理数据的每个签名前缀和签名对应存储到支持list的kv型数据库中。则第二存储模块64具体可以将每个签名前缀作为kv型数据库中的key,以签名作为value,以list形式追加到该key对应的value中。

可选的,可以将待处理数据的每个签名前缀和签名对应存储到不支持list的kv型数据库中。则第二存储模块64具体可以以每个签名前缀作为key,将签名更新为key对应的value。

进一步,判重模块63还用于:在确定所述待处理数据为重复数据时,丢弃所述待处理数据、所述每个签名前缀和所述签名。

本实施例提供的数据判重装置,通过对签名进行切分,基于签名前缀进行数据判重,一方面因为签名前缀作为签名的索引,可以减少数据库中海量签名的查询次数,另一方面因为签名前缀的位数小于签名的位数,所对应的签名数量相对较少,可以缩减数据筛选范围,因此可以提高数据判重的时间效率。

以上描述了数据判重装置的内部功能和结构,如图7所示,实际中,该数据判重装置可实现为电子设备,包括:存储器71和处理器72。

存储器71用于存储程序。

除上述程序之外,程序存储空间还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器71可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器72,耦合至存储器71,用于执行程序,以用于:

获取待处理数据的签名;对所述签名进行至少一级切分,以获得至少两个签名前缀;根据所述至少两个签名前缀,对所述待处理数据进行判重。

在一可选实施方式中,处理器72在获取待处理数据的签名时,具体可用于:如果待处理数据的签名已存在,则可以直接访问相应存储设备,获取待处理数据的签名;如果待处理数据的签名未存在,则可以按照签名生成逻辑生成待处理数据的签名。

在一可选实施方式中,处理器72在对所述签名进行至少一级切分时,具体可用于:根据汉明距离的相似阈值,确定切分段数;按照切分段数,对所述签名进行至少一级切分,以获得所述至少两个签名前缀。

进一步,处理器72在按照切分段数,对所述签名进行至少一级切分时,具体可用于:按照所述切分段数,对所述签名进行一级切分,以获得至少两个前缀首部;对于所述至少两个前缀首都中的每个前缀首部,按照所述切分段数,对所述签名中除所述前缀首部之外剩余的位数进行二级切分,以获得所述前缀首部对应的至少两个前缀尾部;对所述每个前缀首部,将所述前缀首部和所述前缀首部对应的至少两个前缀尾部中的每个前缀尾部分别组合在一起,形成所述至少两个签名前缀中的一个签名前缀。

值得说明的是,上述切分并不要求均等切分,依次切分即可。可选的,所述依次切分可以是按照从左到右的顺序依次切分。

在一可选实施方式中,处理器72在对所述待处理数据进行判重时,具体可用于:以所述至少两个签名前缀作为查询条件,在历史签名前缀中进行查询;若未查询到与所述至少两个签名前缀中任何签名前缀相同的历史签名前缀,确定所述待处理数据为非重复数据。

进一步,处理器72还用于:若查询到与所述至少两个签名前缀中任意签名前缀相同的历史签名前缀,将所述签名和所述查询到的历史签名前缀对应的历史签名进行相似比较;若所述签名与所述历史签名不相似,确定所述待处理数据为非重复数据。

进一步,处理器72还用于:若所述签名与所述历史签名相似,确定所述待处理数据为重复数据。

进一步,处理器72还用于:在确定所述待处理数据为非重复数据时,对应存储所述待处理数据、所述每个签名前缀和所述签名。

可选的,可以将待处理数据的每个签名前缀和签名对应存储到传统数据库中。则处理器72具体可以以所述签名为主键,将所述每个签名前缀用分隔符拼接后存储到一个字段中,该字段可命名为extend,并为所述字段设置索引。可选的,所述索引可以是签名字段,但不限于此。

可选的,可以将待处理数据的每个签名前缀和签名对应存储到支持list的kv型数据库中。则处理器72具体可以将每个签名前缀作为kv型数据库中的key,以签名作为value,以list形式追加到该key对应的value中。

可选的,可以将待处理数据的每个签名前缀和签名对应存储到不支持list的kv型数据库中。则处理器72具体可以以每个签名前缀作为key,将签名更新为key对应的value。

进一步,处理器72还用于:在确定所述待处理数据为重复数据时,丢弃所述待处理数据、所述每个签名前缀和所述签名。

进一步,如图7所示,电子设备还包括:通信组件73、电源组件74、音频组件75、显示器76等其它组件。图7中仅示意性给出部分组件,并不意味着电子设备只包括图7所示组件。

通信组件73被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件73经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件73还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

电源组件74,为电子设备的各种组件提供电力。电源组件74可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件75被配置为输出和/或输入音频信号。例如,音频组件75包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器71或经由通信组件73发送。在一些实施例中,音频组件75还包括一个扬声器,用于输出音频信号。

显示器76包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1