`
chenhua_1984
  • 浏览: 1233033 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

一种表格数据比对的方法

    博客分类:
  • java
阅读更多

     假设有连个库,一个是生产库,一个是备份库,在一个特定的时间定,比较备份库与生产库的数据是否一致,用Java实现怎么样做效率比较高?

     在单进程的情况下,原来做过这样的设计:利用conCurrentHashMap来实现比对。

 

    一个线程负责从A库抽取数据,每行数据构造成一个Hash对,Key采用:主键+列相加的Hashcode,value采用key来做,线程B负责从B库抽取数据,每行数据构造成一个Hash对,Key采用:主键+列相加的Hashcode,value采用key来做,同时,B线程抽取出来的数据首先与HashMap A中的数据进行比对,假如在A容器中存在,说明这条记录两个库中相同,那么A的Map中可以remove 这条记录,B可以直接丢弃这条记录,不要放在conCurrentHashMap B中;假如在A中不存在,那么A则数据不变保留,B则放入自己的HashMap B中,为了减少数据在Hash容器中的堆叠量,可以设置线程的优先级A为最高,也可以让B延迟启动。

  

	key = builderKey.toString() + builderColumn.toString().hashCode();
				if (Main.hashMapA1.get(key) != null) {
					// System.out.println("removeA1:" + key);
					Main.hashMapA1.remove(key);
				} else {
					// System.out.println("B1:" + key);
					Main.hashMapTempB.put(key, builderKey.toString());
				}

 

    当A从表格中把数据抽取完成后,B可能还没有完成,那么需要等待两个线程都处理完成之后,才能进行下一轮操作

  

     由于受环境的限制,两边的数据存放的顺序和取出来的速度不一定就按预想的那样执行,所以,当两个线程都抽取完成后,还需要对两个Map进行一次比对,相同的则Remove,不同的保留。

 

     比对结束后,这个时候Map A里面存的是B里面没有的, Map B里面存的是A里面没有的,当时最好的测试结果是240万条每分钟。

 

     注意在抽取过程中setFetchSize的设置,这个值默认好像是10条,设置的越大,executeQuery的时间就越长。     

分享到:
评论

相关推荐

    数据分析战略:3大思路8种方法

    提起数据分析,大家往往会联想到一些密密麻麻的数字表格,或是高级的数据建模手法,再或是华丽的数据报表。其实,“ 分析 ”本身是每个人都具备的能力;比如根据股票的走势决定购买还是抛出,依照每日的时间和以往...

    Excel 2007数据透视表完全剖析 1/7

    12.2.3 怎样使用一种独特的顺序对数据项进行排序,它既不是增序也不是降序 282 12.2.4 怎样将数据透视表转换为硬数据 283 12.2.5 有简单的方法填充行字段留下的空单元格吗 283 12.2.6 简单的方法填充许多列...

    Excel 2007数据透视表完全剖析 5/7

    12.2.3 怎样使用一种独特的顺序对数据项进行排序,它既不是增序也不是降序 282 12.2.4 怎样将数据透视表转换为硬数据 283 12.2.5 有简单的方法填充行字段留下的空单元格吗 283 12.2.6 简单的方法填充许多列...

    传统分析与大数据分析的对比.docx

    在典型的世界里,很难在所有的信息间以一种正式的方式建立关系,因此非结构化以图片、视频、移动产生的信息、无线射频识别(RFID)等的形式存在,被考虑进大数据分析。绝大多数的大数据分析数据库基于纵列数据库...

    Excel 2007数据透视表完全剖析 3/7

    12.2.3 怎样使用一种独特的顺序对数据项进行排序,它既不是增序也不是降序 282 12.2.4 怎样将数据透视表转换为硬数据 283 12.2.5 有简单的方法填充行字段留下的空单元格吗 283 12.2.6 简单的方法填充许多列...

    Excel 2007数据透视表完全剖析 4/7

    12.2.3 怎样使用一种独特的顺序对数据项进行排序,它既不是增序也不是降序 282 12.2.4 怎样将数据透视表转换为硬数据 283 12.2.5 有简单的方法填充行字段留下的空单元格吗 283 12.2.6 简单的方法填充许多列...

    如何实现从EBOM到MBOM的有效转换?.doc

    EBOM到MBOM的重构也从手工编辑EXCEL表格完成形式到利用Windchill系统工具,从EBOM结构树直接重构MBOM结构树,保证了系统内数据的唯一性和正确性。在系统实施过程中整理并健全历史数据,提高了准确性和完整性。启用了...

    数据分析与可视化.pptx

    数据备份 可移动存储设备备份 网络备份 云存储将数据存储在网络上的服务器中,是网络备份的一种重要方式。云存储具有成本低、管理方便和可扩展性高等优势,但也存在安全性不足等缺点。 数据分析与可视化全文共13页...

    数据分析基础入门课程.pptx

    数据挖掘是一种高级的数据分析方法,侧重解决四类数据分析问题:分类、聚类、关联和预测,重点在寻找模式与规律。 04 数据分析基础入门课程全文共33页,当前为第10页。 数据展现 一般情况下,数据是通过表格和图形...

    2019数据运营思维导图

    用户调研 用户留存分析流程 第一步:分组 按照不同的(时间/渠道/行为等)维度进行用户分组 时间分组 通常用于看整体数据,看整体留存是否出现异常情况 渠道分组 对比不同渠道留存数据 通过不同渠道数据对比,找到...

    数据运营思维导图

    1、[大盘数据]用户及收入表格+折线图 注册用户(今天、昨日、近3天、近7日、近30天、全部) 新增用户、付费用户、充值总额 2、同时在线趋势折线图 在线人数一向是游戏火热程度的最好衡量 需要有同期对比功能,...

    Vue.js实现多条件筛选、搜索、排序及分页的表格功能

    表格本身是一种非常常用的组件,用于展示一些复杂的数据时表现很好。 当数据比较多时,我们需要提供一些筛选条件,让用户更快列出他们关注的数据。 除了预设的一些筛选条件,可能还需要一些个性化的输入搜索功能...

    excel的使用

    合并不同单元格的内容,还有一种方法是利用CONCATENATE函数,此函数的作用是将若干文字串合并到一个字串中,具体操作为“=CONCATENATE(B1,C1)”。比如,假设在某一河流生态调查工作表中,B2包含“物种”、B3包含...

    PMIP4_past2future_analyzer:对古气候模拟比对项目4集成进行过去的未来分析的一种方法

    可以用单个数字量化的通用指标和索引会在一系列电子表格中一起收集。 这些电子表格作为csv文件存储在目录data_frames/中。 此外,该目录包含所有模拟的DOI,因此可以更轻松地将这些引文纳入任何出版物中。 使用这个...

    Excel数据分析与图表应用案例精粹_光盘

    Excel数据分析与图表应用案例精粹_光盘 杨广于 清华大学出版社,2012 目录 第1章 公式与函数基本操作 1  1.1 Excel公式的基本操作 1  1.1.1 公式的输入与编辑 1  1.1.2 公式中的运算符 2  1.1.3 单元格的引用...

    如何使用mysql完成excel中的数据生成

    Excel是数据分析中最常用的工具,本篇...下面介绍每一种函数的使用方法。 按列提取数据 #按列提取 SELECT city FROM data1; 按行提取数据 #按行提取 SELECT * FROM data1 WHERE city='beijing'; 按位置提取数据 #

    提高表格可读性的一些技巧

    我们发现,表格不但广泛的运用在各类数据收集和分析,同时通过表格这样一种二维矩阵来整理和陈列信息时(即便最后的展示方式并非一个典型的表格样式),能够很好的表达信息之间的逻辑关系,易于帮助理解横纵信息之间的...

     Origin8.0 白东升经典视频教程.txt

    介绍Origin的三种期望检验和一种方差分析的功效与样本容量分析功能 第55集:操作特性曲线;介绍Origin的ROC操作特性曲线功能 第56集:分析模板的建立;介绍建立分析模板的方法,以及如何利用分析模板实现数据文件的...

    数据库的教法设计(1).doc

    递推法:用大家熟悉的一种事物的描述(或规则),推导出另一种事物的描述(或规则 )。在数据库中,描述记录的子句选项包含[范围]、[for条件表达式],其中[范围]选项 表示选择一个连续范围内的记录,而[for条件...

Global site tag (gtag.js) - Google Analytics