CN103064908A - 一种通过内存快速去重名单的方法 - Google Patents
一种通过内存快速去重名单的方法 Download PDFInfo
- Publication number
- CN103064908A CN103064908A CN2012105537201A CN201210553720A CN103064908A CN 103064908 A CN103064908 A CN 103064908A CN 2012105537201 A CN2012105537201 A CN 2012105537201A CN 201210553720 A CN201210553720 A CN 201210553720A CN 103064908 A CN103064908 A CN 103064908A
- Authority
- CN
- China
- Prior art keywords
- list
- historical
- internal memory
- historical list
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000008676 import Effects 0.000 claims description 11
- 238000012217 deletion Methods 0.000 claims description 10
- 230000037430 deletion Effects 0.000 claims description 10
- 230000009977 dual effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种通过内存快速去重名单的方法,包括如下步骤:读取数据库中的历史名单信息表并加载到内存中,存入历史名单集合;将需要导入的名单加载到数据库的临时表中;读取临时表中需要进行名单去重的数据项并加载到内存中,存入当前导入名单集合;通过当前导入名单集合与历史名单集合间运算批量删除重复名单,更新历史名单集合,更新历史名单信息表;删除临时表。本发明利用集合运算批量去重的方式对名单导入去重,大大提高了名单去重的速度。
Description
技术领域
本发明涉及一种去重名单的方法,尤其涉及一种通过内存操作快速去重名单的方法,属于数据库技术领域。
背景技术
近年来,我国电子商务市场交易额稳定增长,电子商务在企业的应用成效以及对经济、社会发展的推动作用日益明显。针对电子商务的特性,一般都存在电子营销的过程。电子营销具有完全以客户为中心,互动性强、目标针对性强、客户准确性强、独具时空优势、传播范围广等特点。对于电子营销来说,电子营销名单的数据量非常大,不同的信息收集人员在收集营销信息过程中,不可避免会有重复名单信息被收集起来。电子营销名单不能重复,如果不去重,可能相同的电话被拨打多次,不但浪费人力和物力,而且会让客户很反感。
收集到的电子营销名单导入过程是电子营销名单进入电子营销系统的重要入口,而导入电子营销名单的同时对电子营销名单的去重是必不可少的一个环节。传统的电子营销系统中名单去重主要采用遍历数据表记录进行去重的,这种方式在小数据量的情况下问题不太大,但是随着时间的累加,数据表的数据量也会越来越大,名单的去重会变的越来越慢,而且大批量的名单去重可能无法使用,甚至会导致系统崩溃。传统的电销系统中,名单导入时去重主要采用以下两种方式:
(1)数据库与程序配合处理的方式,如图1所示,从收集到的电子营销名单文件中拿出一条名单记录。按照当前拿出的名单去电子营销数据库中查询,判断查询结果是否存在。如果不存在则将该条名单记录存入电子营销数据库中;如果存则在去除此条名单记录。按此方法查询下一条名单记录,直至所有名单记录都一一比对完毕。
(2)完全依赖数据库的方式,即在导入的表中将需要去重的项设置唯一约束,如图2所示,从收集到的电子营销名单文件中拿出一条名单记录。按照当前拿出的名单直接插入到数据库中,判断是否插入成功。如果插入成功,则说明该名单不重复;如果插入不成功,则说明该条名单重复。按此方法插入下一条名单记录,直至所有名单记录都一一比对完毕。
以上两种方式都是依赖遍历数据库逐条比对实现去重的,虽然通过这两种方式可以实现去重,但是当数据量和并发量过大时,这个效率是相当低,甚至会导致服务器的崩溃。第二种方式看起来应该会比第一种方式快,但是这种方式对文件的格式要求比较高,而且当需要将数据导入到多个表中时,效率会再降低。由于数据库的连接数和硬盘的IO速度都有限的,逾越这两个问题目前还存在一定的困难。
发明内容
针对现有技术所存在的不足,本发明所要解决的技术问题在于提供一种通过内存快速去重名单的方法。该方法通过集合运算批量去重,节约了去重时间、提高了去重效率。
为实现上述的发明目的,本发明采用下述的技术方案:
一种通过内存快速去重名单的方法,包括如下步骤:
读取数据库中的历史名单信息表并加载到内存中,存入历史名单集合;
将需要导入的名单加载到数据库临时表中;
读取临时表中需要进行名单去重的数据项并加载到内存中,存入当前导入名单集合;
通过当前导入名单集合与历史名单集合间运算批量删除重复名单,更新历史名单集合,更新历史名单信息表;
删除临时表。
其中较优地,通过当前导入名单集合与历史名单集合间运算批量删除重复名单,更新历史名单集合,更新历史名单信息表的步骤进一步包括:
当前导入名单集合与历史名单集合做交集运算找出重复名单集合,批量删除重复名单集合;
当前导入名单集合与历史名单集合做并集运算得到新的历史名单集合,将所述新的历史名单集合回填到内存中;
将临时表中的名单信息批量插入数据库中的历史名单信息表中。
其中较优地,通过当前导入名单集合与历史名单集合间运算批量删除重复名单,更新历史名单集合,更新历史名单信息表的步骤进一步包括:
当前导入名单集合与历史名单集合做并集运算得到新的历史名单集合;
将所述新的历史名单集合回填到内存中;
将所述新的历史名单集合替换数据库中的历史名单信息表。
其中较优地,通过当前导入名单集合与历史名单集合间运算批量删除重复名单,更新历史名单集合,更新历史名单信息表的步骤进一步包括:
当前导入名单集合与历史名单集合做交集运算找出重复名单集合,批量删除重复名单集合;
将临时表中的名单信息批量插入历史名单集合;
将临时表中的名单信息批量插入数据库中的历史名单信息表中。
其中较优地,所述将需要导入的名单加载到数据库的临时表中的步骤之前还包括对要导入的名单文件预处理:
对要导入的名单文件配置去重项;
按照配置的去重项对要导入的名单文件拆分表处理;
设置多张数据表,在数据表中增加数据项;
将拆分后的名单信息存放在所述数据表中。
其中较优地,所述名单信息在所述数据表中是以键值对形式存放的。
其中较优地,将需要导入的名单加载到数据库临时表的过程是一次性加载的。
其中较优地,所述历史名单信息表是批量更新的。
相对于现有技术而言,本发明所提供的通过内存快速去重名单的方法,利用集合运算去重的方式对名单导入批量去重,实现了名单批量去重,提高了名单导入的去重效率。
附图说明
图1是现有技术中,第一种名单去重方式的流程示意图;
图2是现有技术中,第二种名单去重方式的流程示意图;
图3是本发明所提供的通过内存快速去重名单的方法流程图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步的详细说明。
本发明提供了一种通过内存快速去重名单的方法,包括如下步骤:读取数据库中的历史名单信息表并加载到内存中,存入历史名单集合;将需要导入的名单加载到数据库的临时表中;读取临时表中需要进行名单去重的数据项并加载到内存中,存入当前导入名单集合;通过历史名单集合与当前导入名单集合间运算批量删除重复名单,更新历史名单集合,更新历史名单信息表;删除临时表,名单导入流程结束。下面对该通过内存快速去重名单的方法展开详细的说明。
在电子营销系统中,所有的名单信息均储存于数据库的名单信息表中。首次导入名单信息时数据库中没有数据,名单信息表为空。读取数据库中数据项为空的名单信息表时,需要在内存中建立一个为空的历史名单集合(AllSet)。只要导入过一次名单,该名单信息表中就存在数据,存在数据的名单信息表称为历史名单信息表。
信息收集人员在收集营销名单信息时,收集到的营销名单信息中名单属性可能有所不同(例如,有可能是10个属性也有可能是100个属性)。为了更好的细化去重要导入名单的属性,防止名单去重不彻底的情况,在导入不同名单之前需要对要导入的名单文件预处理,用户可以根据实际的需求对要导入的名单文件配置去重项,这种配置去重项的过程是可选择的。按照配置的去重项对要导入的名单文件拆分表处理,根据需要设置多张数据表,在这些数据表中增加文件ID、名单ID、名单属性ID等数据项。将这拆分后的名单信息储存在这些数据表中。这些名单信息均以键值对形式存放。例如,表1存放本次导入文件的文件头和名单的属性名称,表2存放每个名单和导入文件的关系,表3存放名单属性值。表2和表3以键值对形式按照名单ID或名单属性ID存放数据。例如,一个名单中如果有10个属性,在表2中存放一条数据,需在表3中存放10条数据。
由于不同名单的属性不固定,在导入不同名单文件时,需要在数据库中建立临时表来临时放置和处理这些不固定属性的名单。该临时表根据导入名单文件的文件头生成,在导入这些名单数据时,优选先将需要导入的名单预处理,预处理后再一次性加载到临时表中;然后根据实际的需要读取该临时表中的名单数据,按批量查出名单数据中需要去重的数据项对名单信息粗略去重,并将这些粗略去重后需要进行名单再去重的数据项(一项或多项)连接起来,作为一个字符串批量加载(load)到内存中,存入当前导入名单集合(TempSet)。最后通过当前导入名单集合(TempSet)与历史名单集合(AllSet)的交、并、差等集合运算批量删除重复名单对名单数据项精细去重,并更新历史名单集合(AllSet),更新历史名单信息表。名单去重完毕后删除临时表,整个名单去重和导入流程结束。
在本发明中,利用从临时表中查出需要去重的数据列,可以对本本次导入文件中的重复名单粗略去重,例如可以将电话属性作为索引,对本次导入的名单文件中重复电话号码名单去重。在通过历史名单集合与当前导入名单集合间运算批量删除重复名单,并更新历史名单集合和历史名单信息表这一步骤中,所有名单数据均以键值对形式存放,可以以数据列形式批量更新更新历史名单集合(AllSet)和批量更新历史名单信息表,缩短了数据更新时间,提高了效率。
下面分别以当前导入名单集合(TempSet)与历史名单集合(AllSet)的交、并、差等集合运算为优选例,对通过当前导入名单集合(TempSet1)与历史名单集合(AllSet)之间的集合运算批量删除重复名单,并更新历史名单集合(AllSet)和历史名单信息的步骤展开详细的说明。
实施例1:
如图3所示,通过当前导入名单集合(TempSet)与历史名单集合(AllSet)之间的交集、差、并集运算批量删除重复名单,并更新历史名单集合(AllSet)和历史名单信息表的步骤包括:
当前导入名单集合(TempSet)与历史名单集合(AllSet)做交集运算找出重复名单集合,从临时表中批量删除重复名单集合(TempSet1),其中,TempSet1=AllSet∩TempSet。当前导入名单集合(TempSet)与历史名单集合(AllSet)做并集运算得到新的历史名单集合(AllSet1),将所述新的历史名单集合(AllSet1)回填到内存中,其中,AllSet1=AllSet∪TempSet。将临时表中剩余的名单信息采用insert select的方式批量插入数据库中的历史名单信息表中。
实施例2:
通过当前导入名单集合(TempSet)与历史名单集合(AllSet)之间的并集运算批量删除重复名单,并更新历史名单集合(AllSet)和历史名单信息表的步骤包括:
当前导入名单集合与历史名单集合做并集运算得到新的历史名单集合(AllSet1),其中,AllSet1=AllSet∪TempSet。将所述新的历史名单集合(AllSet1)回填到内存中。将所述新的历史名单集合(AllSet1)替换数据库中的历史名单信息表。
实施例3:
通过当前导入名单集合(TempSet)与历史名单集合(AllSet)之间的交集、差运算批量删除重复名单,并更新历史名单集合(AllSet)和历史名单信息表的步骤包括:
当前导入名单集合(TempSet)与历史名单集合(AllSet)做交集运算找出重复名单集合(TempSet1),从临时表中批量删除重复名单集合(TempSet1),其中,TempSet1=AllSet∩TempSet。将临时表中剩余的名单信息批量插入历史名单集合。将临时表中剩余的名单信息批量插入数据库中的历史名单信息表中。
综上所述,采用本发明提供的通过内存快速去重名单的方法相对于现有技术而言,利用集合运算去重的方式对名单导入批量去重,大大提高了名单去重的速度。
上面对本发明所提供的通过内存快速去重名单的方法进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (8)
1.一种通过内存快速去重名单的方法,其特征在于包括:
读取数据库中的历史名单信息表并加载到内存中,存入历史名单集合;
将需要导入的名单加载到数据库临时表中;
读取临时表中需要进行名单去重的数据项并加载到内存中,存入当前导入名单集合;
通过当前导入名单集合与历史名单集合间运算批量删除重复名单,更新历史名单集合,更新历史名单信息表;
删除临时表。
2.如权利要求1所述的通过内存快速去重名单的方法,其特征在于通过当前导入名单集合与历史名单集合间运算批量删除重复名单,更新历史名单集合,更新历史名单信息表的步骤进一步包括:
当前导入名单集合与历史名单集合做交集运算找出重复名单集合,批量删除重复名单集合;
当前导入名单集合与历史名单集合做并集运算得到新的历史名单集合,将所述新的历史名单集合回填到内存中;
将临时表中的名单信息批量插入数据库中的历史名单信息表中。
3.如权利要求1所述的通过内存快速去重名单的方法,其特征在于通过当前导入名单集合与历史名单集合间运算批量删除重复名单,更新历史名单集合,更新历史名单信息表的步骤进一步包括:
当前导入名单集合与历史名单集合做并集运算得到新的历史名单集合;
将所述新的历史名单集合回填到内存中;
将所述新的历史名单集合替换数据库中的历史名单信息表。
4.如权利要求1所述的通过内存快速去重名单的方法,其特征在于通过当前导入名单集合与历史名单集合间运算批量删除重复名单,更新历史名单集合,更新历史名单信息表的步骤进一步包括:
当前导入名单集合与历史名单集合做交集运算找出重复名单集合,批量删除重复名单集合;
将临时表中的名单信息批量插入历史名单集合;
将临时表中的名单信息批量插入数据库中的历史名单信息表中。
5.如权利要求1所述的通过内存快速去重名单的方法,其特征在于所述将需要导入的名单加载到数据库的临时表中的步骤之前还包括对要导入的名单文件预处理:
对要导入的名单文件配置去重项;
按照配置的去重项对要导入的名单文件拆分表处理;
设置多张数据表,在数据表中增加数据项;
将拆分后的名单信息存放在所述数据表中。
6.如权利要求5所述的通过内存快速去重名单的方法,其特征在于:
所述名单信息在所述数据表中以键值对形式进行存放。
7.如权利要求1所述的通过内存快速去重名单的方法,其特征在于:
将需要导入的名单加载到数据库临时表的过程是一次性加载的。
8.如权利要求1所述的通过内存快速去重名单的方法,其特征在于:
所述历史名单信息表采用批量更新方式进行更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210553720.1A CN103064908B (zh) | 2012-12-18 | 2012-12-18 | 一种通过内存快速去重名单的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210553720.1A CN103064908B (zh) | 2012-12-18 | 2012-12-18 | 一种通过内存快速去重名单的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103064908A true CN103064908A (zh) | 2013-04-24 |
CN103064908B CN103064908B (zh) | 2016-03-16 |
Family
ID=48107538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210553720.1A Active CN103064908B (zh) | 2012-12-18 | 2012-12-18 | 一种通过内存快速去重名单的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103064908B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593440A (zh) * | 2013-11-15 | 2014-02-19 | 北京国双科技有限公司 | 日志文件的读写方法及装置 |
CN107818165A (zh) * | 2017-10-31 | 2018-03-20 | 平安科技(深圳)有限公司 | 基于标签库的营销客户筛选方法、电子装置及存储介质 |
CN108038709A (zh) * | 2017-11-03 | 2018-05-15 | 平安科技(深圳)有限公司 | 客户抽样试营销方法、电子装置及计算机可读存储介质 |
CN108280085A (zh) * | 2017-01-06 | 2018-07-13 | 工业和信息化部电信研究院 | 数据去重的方法及装置 |
CN108319624A (zh) * | 2017-01-18 | 2018-07-24 | 腾讯科技(深圳)有限公司 | 数据加载方法及装置 |
CN109522305A (zh) * | 2018-12-06 | 2019-03-26 | 北京千方科技股份有限公司 | 一种大数据去重方法及装置 |
CN110008236A (zh) * | 2019-04-15 | 2019-07-12 | 重庆天蓬网络有限公司 | 一种数据分布式自增编码方法、系统、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101616380A (zh) * | 2009-04-30 | 2009-12-30 | 卓望数码技术(深圳)有限公司 | 一种信息广播的过滤控制方法及系统 |
CN101938583A (zh) * | 2010-09-03 | 2011-01-05 | 电子科技大学 | 一种基于多名单的异常呼叫过滤方法 |
CN102279839A (zh) * | 2011-09-06 | 2011-12-14 | 哈尔滨工业大学 | 粗糙集扩展模型中近似集动态更新方法 |
US20120166401A1 (en) * | 2010-12-28 | 2012-06-28 | Microsoft Corporation | Using Index Partitioning and Reconciliation for Data Deduplication |
CN102611688A (zh) * | 2011-12-15 | 2012-07-25 | 天津市通卡公用网络系统有限公司 | 终端pos装置黑名单数据远程更新方法 |
-
2012
- 2012-12-18 CN CN201210553720.1A patent/CN103064908B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101616380A (zh) * | 2009-04-30 | 2009-12-30 | 卓望数码技术(深圳)有限公司 | 一种信息广播的过滤控制方法及系统 |
CN101938583A (zh) * | 2010-09-03 | 2011-01-05 | 电子科技大学 | 一种基于多名单的异常呼叫过滤方法 |
US20120166401A1 (en) * | 2010-12-28 | 2012-06-28 | Microsoft Corporation | Using Index Partitioning and Reconciliation for Data Deduplication |
CN102279839A (zh) * | 2011-09-06 | 2011-12-14 | 哈尔滨工业大学 | 粗糙集扩展模型中近似集动态更新方法 |
CN102611688A (zh) * | 2011-12-15 | 2012-07-25 | 天津市通卡公用网络系统有限公司 | 终端pos装置黑名单数据远程更新方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593440A (zh) * | 2013-11-15 | 2014-02-19 | 北京国双科技有限公司 | 日志文件的读写方法及装置 |
CN108280085A (zh) * | 2017-01-06 | 2018-07-13 | 工业和信息化部电信研究院 | 数据去重的方法及装置 |
CN108280085B (zh) * | 2017-01-06 | 2021-07-27 | 工业和信息化部电信研究院 | 数据去重的方法及装置 |
CN108319624A (zh) * | 2017-01-18 | 2018-07-24 | 腾讯科技(深圳)有限公司 | 数据加载方法及装置 |
CN107818165A (zh) * | 2017-10-31 | 2018-03-20 | 平安科技(深圳)有限公司 | 基于标签库的营销客户筛选方法、电子装置及存储介质 |
CN108038709A (zh) * | 2017-11-03 | 2018-05-15 | 平安科技(深圳)有限公司 | 客户抽样试营销方法、电子装置及计算机可读存储介质 |
CN109522305A (zh) * | 2018-12-06 | 2019-03-26 | 北京千方科技股份有限公司 | 一种大数据去重方法及装置 |
CN110008236A (zh) * | 2019-04-15 | 2019-07-12 | 重庆天蓬网络有限公司 | 一种数据分布式自增编码方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103064908B (zh) | 2016-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103064908A (zh) | 一种通过内存快速去重名单的方法 | |
CN102332029B (zh) | 一种基于Hadoop 的海量可归类小文件关联存储方法 | |
CN101650717B (zh) | 一种节约数据库存储空间的方法和系统 | |
CN102193917B (zh) | 一种数据处理和查询方法和装置 | |
CN103345521B (zh) | 一种在哈希表数据库中处理键值的方法和装置 | |
CN109471905B (zh) | 一种支持时间范围和属性范围复合查询的区块链索引方法 | |
CN104778222B (zh) | 基于usb存储设备的媒体库建立及更新方法 | |
CN105956123A (zh) | 基于局部更新软件的数据处理方法及装置 | |
CN111008521B (zh) | 生成宽表的方法、装置及计算机存储介质 | |
CN102870116B (zh) | 内容匹配方法和装置 | |
CN102024005B (zh) | 信息项目集合目录的发布系统和方法 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
CN102169491B (zh) | 一种多数据集中重复记录动态检测方法 | |
CN109726177A (zh) | 一种基于HBase的海量文件分区索引方法 | |
CN104298736A (zh) | 数据集合连接方法、装置及数据库系统 | |
CN105224532A (zh) | 数据处理方法及装置 | |
CN102193995B (zh) | 一种建立多媒体数据索引、检索的方法及装置 | |
CN110442585A (zh) | 数据更新方法、数据更新装置、计算机设备及存储介质 | |
CN103049574A (zh) | 实现文件动态副本的键值文件系统及方法 | |
CN106161193B (zh) | 一种邮件处理方法、装置和系统 | |
CN102207935A (zh) | 用于创建索引的方法和系统 | |
CN101963993B (zh) | 一种数据库单表记录快速查找的方法 | |
CN103123651A (zh) | 一种快速查看多个同类文件的方法、装置和移动设备 | |
CN104574159A (zh) | 数据存储、查询方法和装置 | |
CN107644050A (zh) | 一种基于solr的Hbase的查询方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |