CN104714956A - 一种异构记录集对比方法及装置 - Google Patents
一种异构记录集对比方法及装置 Download PDFInfo
- Publication number
- CN104714956A CN104714956A CN201310683736.9A CN201310683736A CN104714956A CN 104714956 A CN104714956 A CN 104714956A CN 201310683736 A CN201310683736 A CN 201310683736A CN 104714956 A CN104714956 A CN 104714956A
- Authority
- CN
- China
- Prior art keywords
- record set
- eigenvalue
- sql
- sql statement
- record
- 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
Abstract
本发明公开了一种异构记录集对比方法及装置,其中,该方法包括:根据第一SQL语句获取第一记录集,根据第二SQL语句获取第二记录集;分别确定第一记录集的第一特征值组和第二记录集的第二特征值组,其中,第一特征值组包括第一记录集的行数、列数、数值列的最大/最小值,第二特征值组包括第二记录集的行数、列数、数值列的最大/最小值;当第一特征值组和第二特征值组相同时,确定第一记录集与第二记录集一致。本发明通过判断记录集的特征值组来确定记录集是否一致,可以提高对比效率和准确率。
Description
技术领域
本发明涉及数据库技术领域,具体地,涉及一种异构记录集对比方法及装置。
背景技术
随着我国社会经济的快速发展,工业化程度也得到了快速推进,智能电网也成为当前国际电力工业关注的热点,引领了电网的未来发展方向。智能电网中的信息采集系统是我国各省电力公司的重要信息系统,近两年来,智能电表的用户规模呈现爆发式的增长,部分省电力公司的智能电表用户规模已达到千万级别。
在电力行业,数据采集频率由原来的一天一次变为15分钟一次,每天产生10亿以上的数据记录,这种用户规模和采集频率的增长给电力行业信息系统带来巨大的冲击,原有系统在海量数据的采集、存储、查询、统计分析等方面的处理能力存在明显不足,且不能进行快速有效的扩展,已经难以满足未来电力业务快速发展的需要,使得用电信息采集系统原有的技术架构面临巨大的挑战。目前用电信息采集系统普遍使用的是关系型数据库oracle,其扩展能力已经达到极限,迫切需要一种支持海量数据且无限扩展的数据库,Apache(也就是Apache Software Foundation,Apache软件基金会,简称为ASF)组织开发的Hive就是具有这种能力的数据库产品。
采用云计算技术的分布式数据库Hive可以充分利用分布式的软硬件资源,并行存储和计算所需要的数据,分布式数据仓库Hive已经应用于电力行业的许多统计业务当中,同时原有的关系型数据库oracle由于性能稳定,擅长处理中等数据量以下的复杂业务过程,仍然在使用当中,这样形成了两种结构的数据库在电力业务系统中并存的局面。
在两种数据库并存的情况下,两种数据库对SQL(Structured QueryLanguage,结构化查询语言)的支持有些不一致的地方,业务系统原有的复杂统计SQL查询,为了从oracle迁移到Hive数据库中,需要测试验证在两种数据库下查询结果是否一致,由于历史生产数据持续增加,记录集数量在数万级别情况下,人工无法直接对比,把查询结果排序导出存储为文本文件,而排序操作也是非常耗费时间的,对比方法用MD5(MessageDigest Algorithm MD5,消息摘要算法第五版)校验工具来比较两者的校验码不可靠,可能由于多一个空格MD5值就会不同;另外人工方式运行一个SQL查询后,只能等待这个查询完成才能执行下一个查询,而大型数据记录集每次查询时间都较长,所以人仍然需要等待很长的时间,对比效率非常低下。
发明内容
本发明是为了克服现有技术中记录集对比效率低下的缺陷,根据本发明的一个方面,提出一种异构记录集对比方法。
根据本发明实施例的一种异构记录集对比方法,包括:
根据第一SQL语句获取第一记录集,根据第二SQL语句获取第二记录集;分别确定第一记录集的第一特征值组和第二记录集的第二特征值组,其中,第一特征值组包括第一记录集的行数、列数、数值列的最大/最小值,第二特征值组包括第二记录集的行数、列数、数值列的最大/最小值;当第一特征值组和第二特征值组相同时,确定第一记录集与第二记录集一致。
优选的,第一特征值组还包括第一记录集中数值列的平均值和不同数值的个数;第二特征值组还包括第二记录集中数值列的平均值和不同数值的个数。
优选的,第一特征值组还包括第一记录集中字符列的字符总数和不同值的个数;第二特征值组还包括第二记录集中字符列的字符总数和不同值的个数。
优选的,在根据第一SQL语句获取第一记录集,根据第二SQL语句获取第二记录集之前,还包括:将第一SQL文件和第二SQL文件分别解析为独立的SQL语句;第一SQL语句为第一SQL文件中独立的SQL语句,第二SQL语句为第二SQL文件中独立的SQL语句。
优选的,将第一SQL文件和第二SQL文件分别解析为独立的SQL语句,包括:分别读取第一SQL文件和第二SQL文件中的所有SQL语句;分别记录不为空行或注释行的SQL语句;根据符号“;”分别分割出第一SQL文件和第二SQL文件中的独立的SQL语句。
优选的,分别确定第一记录集的第一特征值组和第二记录集的第二特征值组,包括:获取第一记录集的第一元数据,获取第二记录集的第二元数据;根据第一元数据,确定第一记录集的列数,以及每列的数据类型;根据第二元数据,确定第二记录集的列数,以及每列的数据类型;分别遍历第一记录集和第二记录集,确定第一记录集的行数和数值列的最大/最小值,确定第二记录集的行数和数值列的最大/最小值。
优选的,当第一特征值组还包括第一记录集中字符列的字符总数和不同值的个数,第二特征值组还包括第二记录集中字符列的字符总数和不同值的个数时,分别遍历第一记录集和第二记录集,还包括:确定第一记录集中字符列的字符总数和不同值的个数,确定第二记录集中字符列的字符总数和不同值的个数。
优选的,当第一特征值组和第二特征值组相同时,确定第一记录集与第二记录集一致,包括:判断第一SQL语句和第二SQL语句的语句类型;当为更新语句时,在第一记录集的行数和第二记录集的行数一致时,确定第一记录集与第二记录集一致;当为查询语句时,在第一特征值组和第二特征值组完全相同时,确定第一记录集与第二记录集一致。
本发明的异构记录集对比方法,通过判断记录集的行数列数是否一致、数值列的最大/最小值和平均值是否一致、字符列的字符总数是否一致等确定两个记录集是否一致,能够提高传统关系型数据库与分布式数据库结果集对比的效率和准确性;同时该方法还可以大大减少人为对比两个大型记录集结果一致性的工作,不仅节省人力资源,还可以提高对比效率。
本发明是为了克服现有技术中记录集对比效率低下的缺陷,根据本发明的一个方面,提出一种异构记录集对比装置。
根据本发明实施例的一种异构记录集对比装置,包括:
记录集获取模块,用于根据第一SQL语句获取第一记录集,根据第二SQL语句获取第二记录集;
特征值组确定模块,用于分别确定第一记录集的第一特征值组和第二记录集的第二特征值组,其中,第一特征值组包括第一记录集的行数、列数、数值列的最大/最小值,第二特征值组包括第二记录集的行数、列数、数值列的最大/最小值;
处理模块,用于当第一特征值组和第二特征值组相同时,确定第一记录集与第二记录集一致。
优选的,特征值组确定模块确定的第一特征值组还包括第一记录集中数值列的平均值和不同数值的个数;特征值组确定模块确定的第二特征值组还包括第二记录集中数值列的平均值和不同数值的个数。
优选的,特征值组确定模块确定的第一特征值组还包括第一记录集中字符列的字符总数和不同值的个数;特征值组确定模块确定的第二特征值组还包括第二记录集中字符列的字符总数和不同值的个数。
优选的,该装置还包括:
解析模块,用于将第一SQL文件和第二SQL文件分别解析为独立的SQL语句;
第一SQL语句为第一SQL文件中独立的SQL语句,第二SQL语句为第二SQL文件中独立的SQL语句。
优选的,解析模块包括:
读取单元,用于分别读取第一SQL文件和第二SQL文件中的所有SQL语句;
记录单元,用于分别记录不为空行或注释行的SQL语句;
分割单元,用于根据符号“;”分别分割出第一SQL文件和第二SQL文件中的独立的SQL语句。
优选的,特征值组确定模块包括:
元数据获取单元,用于获取第一记录集的第一元数据,获取第二记录集的第二元数据;
第一特征值确定单元,用于根据第一元数据,确定第一记录集的列数,以及每列的数据类型;根据第二元数据,确定第二记录集的列数,以及每列的数据类型;
第二特征值确定单元,用于分别遍历第一记录集和第二记录集,确定第一记录集的行数和数值列的最大/最小值,确定第二记录集的行数和数值列的最大/最小值。
优选的,当特征值组确定模块确定的第一特征值组还包括第一记录集中字符列的字符总数和不同值的个数,特征值组确定模块确定的第二特征值组还包括第二记录集中字符列的字符总数和不同值的个数时,
第二特征值确定单元还用于:确定第一记录集中字符列的字符总数和不同值的个数,确定第二记录集中字符列的字符总数和不同值的个数。
优选的,处理模块包括:
判断单元,用于判断第一SQL语句和第二SQL语句的语句类型;
第一处理单元,用于当为更新语句时,在第一记录集的行数和第二记录集的行数一致时,确定第一记录集与第二记录集一致;
第二处理单元,用于当为查询语句时,在第一特征值组和第二特征值组完全相同时,确定第一记录集与第二记录集一致。
本发明的一种异构记录集对比方法及装置,通过判断记录集的行数列数是否一致、数值列的最大/最小值和平均值是否一致、字符列的字符总数是否一致等确定两个记录集是否一致,能够提高传统关系型数据库与分布式数据库结果集对比的效率和准确性;同时该方法还可以大大减少人为对比两个大型记录集结果一致性的工作,不仅节省人力资源,还可以提高对比效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例中异构记录集对比方法的流程图;
图2为实施例一中异构记录集对比方法的详细流程图;
图3为实施例一中解析SQL文件的方法图;
图4为实施例一中确定记录集特征值组的方法流程图;
图5为本发明实施例中SQL对比工具的结构图;
图6为本发明实施例中SQL对比工具的具体工作流程图;
图7为本发明实施例中异构记录集对比装置的结构图;
图8为本发明实施例中异构记录集对比装置的详细结构图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
根据本发明实施例,参见图1所示,提供了一种异构记录集对比方法,该异构记录集对比方法流程包括步骤101-103:
步骤101:根据第一SQL语句获取第一记录集,根据第二SQL语句获取第二记录集。
其中,第一SQL语句和第二SQL语句都是独立的一条SQL语句,该第一SQL语句和第二SQL语句分别来自于第一SQL文件和第二SQL文件。
由于一般SQL文件都包含多条SQL语句,因此需要将SQL文件中的多条SQL语句解析成多个独立的SQL语句。在步骤101之前,该方法还包括:将第一SQL文件和第二SQL文件分别解析为独立的SQL语句。其中,第一SQL语句为第一SQL文件中独立的SQL语句,第二SQL语句为第二SQL文件中独立的SQL语句。
具体的,确定注释开头标记为“--”或者“#”,SQL语句结束标记为“;”符号。将SQL文件解析成独立的SQL语句包括步骤A1-A3:
步骤A1、分别读取第一SQL文件和第二SQL文件中的所有SQL语句;
步骤A2、分别记录不为空行或注释行的SQL语句;
步骤A3、根据符号“;”分别分割出第一SQL文件和第二SQL文件中的独立的SQL语句。
同时,只有两个SQL文件包含相同数量的SQL语句时才进行记录集对比,否则没有对比性。
步骤102:分别确定第一记录集的第一特征值组和第二记录集的第二特征值组,其中,第一特征值组包括第一记录集的行数、列数、数值列的最大/最小值,第二特征值组包括第二记录集的行数、列数、数值列的最大/最小值。
记录集的特征值以列为单位,其中,数值列是指记录集中数据类型为数值类型的列,每组数值列都由一组数值组成。当确定数值列所包含的所有数值后,即可确定数值列的最大/最小值。其中确定记录集特征值组具体包括步骤B1-B3:
步骤B1、获取第一记录集的第一元数据,获取第二记录集的第二元数据;
步骤B2、根据第一元数据,确定第一记录集的列数,以及每列的数据类型;根据第二元数据,确定第二记录集的列数,以及每列的数据类型;
步骤B3、分别遍历第一记录集和第二记录集,确定第一记录集的行数和数值列的最大/最小值,确定第二记录集的行数和数值列的最大/最小值。
优选的,第一特征值组和第二特征值组均还包括数值列的平均值和不同数值的个数,第一特征值组和第二特征值组均还可以包括字符列的字符总数和不同值的个数。此时步骤B3还包括:
分别遍历第一记录集和第二记录集,确定第一记录集中字符列的字符总数和不同值的个数,确定第二记录集中字符列的字符总数和不同值的个数。
步骤103:当第一特征值组和第二特征值组相同时,确定第一记录集与第二记录集一致。
步骤103中可以判断第一特征值组所包含的所有特征值与第二特征值组所包含的所有特征值是否完全相同,当二者完全相同时可以确定第一记录集与第二记录集一致。
优选的,可以根据SQL语句执行步骤103,具体的,步骤103包括步骤C1-C3:
步骤C1、判断第一SQL语句和第二SQL语句是否都为更新语句,当第一SQL语句和第二SQL语句都为更新语句时,执行步骤C2,否则执行步骤C3;
步骤C2、当第一特征值组中第一记录集的行数和第二特征值组中第二记录集的行数相同时,确定第一记录集与第二记录集一致;
步骤C3、当第一特征值组和第二特征值组的所有特征值都相同时,确定第一记录集与第二记录集一致。
通过根据不同的SQL语句执行不同的判断过程,可以进一步减少计算数量,提高效率。
本发明实施例提供的一种异构记录集对比方法,通过判断记录集的行数列数是否一致、数值列的最大/最小值和平均值是否一致、字符列的字符总数是否一致等确定两个记录集是否一致,能够提高传统关系型数据库与分布式数据库结果集对比的效率和准确性;同时该方法还可以大大减少人为对比两个大型记录集结果一致性的工作,不仅节省人力资源,还可以提高对比效率。该方法特别适用于大数据环境下,异构数据库记录集的一致性对比。
下面通过实施例一详细介绍异构记录集对比方法的流程。
实施例一
实施例一中,首先将两组SQL文件中的SQL语句分别解析成独立的SQL语句,在SQL语句条数一致时,选取其中一条SQL语句进行SQL查询并返回记录集,计算记录集的特征值组后,根据记录集的特征值组判断记录集是否一致。具体流程参见图2所示,其方法流程如下:
步骤201:将两组SQL文件中的多条SQL语句分别解析为独立的SQL语句。
参见图3所示,每组解析SQL文件的方法相同,解析SQL文件的具体步骤如下:
步骤2011:获取SQL文件并以行模式读取第一行语句。
步骤2012:去掉两头空格后判断剩余语句是否为空,若剩余语句不为空,则继续步骤2013,否则继续步骤2017。
步骤2013:判断语句开头是否为“--”或“#”,若不是,则继续步骤2014,否则该行为注释行,继续步骤2017。
步骤2014:将本行保存并追加至要执行的SQL字符串后面。
步骤2015:判断本行是否以“;”结束,若是,则继续步骤2016,否则继续步骤2017。
步骤2016:判定此行为SQL语句结束行,在要执行的SQL语句最后去掉“;”。
步骤2017:判断SQL文件是否读取结束,当读取未结束时,继续步骤2018,当读取结束时,流程结束。
步骤2018:读取下一行语句,并继续步骤2012。
对两组SQL文件都执行上述步骤2011-2018,直至两组SQL文件都被解析成独立的SQL语句,之后根据独立的SQL语句确定记录集。
步骤202:分别选取每组SQL文件中的第一条SQL语句。
步骤203:根据选取的SQL语句分别从两组数据库中查询到两组记录集,分别获取两组记录集的特征值组,其中特征值组包括:记录集的行数、列数,数值列的最大/最小值、平均值和不同数值的个数。
其中,获取两组记录集特征值组的方法也相同,参见图4所示,确定记录集特征值组的方法流程如下:
步骤2031:根据选取的SQL语句从数据库中查询到记录集。
步骤2032:获取记录集的元数据。
步骤2033:根据元数据,确定记录集的列数,以及每列的数据类型。
步骤2034:判断每列的数据类型;如果是数值类型,继续步骤2035,否则继续步骤2034。
步骤2035:记录数值类型的数值列,退出列查找。
步骤2036:对记录集进行遍历,依次根据指定数值列,记录数值列的行数,计算最大/最小值、平均值。
步骤2037:将数值列的数值存入具有去重功能的类库容器中,容器自动根据数据是否一致来去掉重复的数值,进而得到不同数值的个数。
实施例一中,通过步骤2031-2037可以计算出记录集中一列数值列的特征值组,还可以通过循环执行步骤2034-2037,计算出记录集中所有数值列的特征值组;当记录集列的数据类型为字符列时,还可以将字符列的字符总数和不同值的个数作为记录集的特征值,统一加入到记录集的特征值组中。
步骤2031-2037为计算记录集特征值的步骤,该步骤可以由java语言实现,具体如下:
根据上述代码即可确定记录集的行数、列数以及记录集中一个数值列的最大/最小值、平均值和不同值的个数。
步骤204:判断选取的SQL语句是否为更新语句,当选取的SQL语句为更新语句时,继续步骤205,否则继续步骤206。
其中,SQL语句中更新语句具体包括update和delete等,其他SQL语句为查询语句。
步骤205:判断两组记录集的行数是否一致,当行数一致时,继续步骤207,否则继续步骤210。
步骤206:判断两组记录集特征值组中的值是否完全一致,当完全一致时,继续步骤207,否则继续步骤210。
步骤207:判断SQL文件中的SQL语句是否执行完毕,当未执行完毕时,继续步骤208,当执行完毕时,继续步骤209。
步骤208:选取下一条SQL语句,并继续步骤203。
步骤209:两组记录集一致,流程结束。
步骤210:两组记录集不一致,流程结束。
本发明实施例提供的一种异构记录集对比方法可以结合JDBC(JavaData Base Connectivity,java数据库连接)查询技术实现。基于JDBC查询技术可以实现一个SQL对比工具,该对比工具的结构图参见图5所示。
该工具的基本运行过程包括步骤D1-D6:
步骤D1:主启动类启动,加载spring的配置文件,同时读入数据库参数;
步骤D2:初始化界面管理,界面可以显示两个目标数据库参数,文本框里可以显示各种对比结果;
步骤D3:选择两个SQL文件后,启动对比主线程;
步骤D4:对比主线程根据SQL语句的条数,依次创建对比线程对,每个线程对包括两个查询线程,每个查询线程从数据库中查询对应的记录集;
步骤D5:根据查询结果计算记录集的特征值组,对比线程对根据特征值组将对比结果输出到界面并保存为文件;
步骤D6:对比主线程运行完所有的对比线程对后返回主界面。
该对比工具的具体工作流程参见图6所示,具体运行过程步骤包括步骤E1-E8。
步骤E1:启动服务,加载两个要比较的数据库连接参数,利用spring加载配置信息更加便利;
步骤E2:根据数据库连接参数,分别连接对应的数据库,如果失败则退出;
步骤E3:数据库连接成功后,加载对比图形界面;
通过图形界面,可以选择要对比的SQL文件,文件中可以是多个SQL语句,以分号结束,便于连续比较多个SQL语句的记录集,确定要对比的SQL文件后,启动主对比线程。
步骤E4:根据选择的SQL文件,判断文件格式是否合法,并比较SQL语句条数是否一致,否则将返回界面重新选择对比文件;
步骤E5:创建对比线程对,分别执行要对比的SQL语句;
创建对比线程对的原因是两个SQL查询很可能不是同时返回记录集,因此线程对会创建两个查询线程,分别执行要对比的第一条SQL语句。
步骤E6:当某个查询返回时开始计算记录集特征值组,直到两个查询都返回并计算完毕;
步骤E7:对比两个记录集的特征值,如果一致则只在界面上给出提示,不一致则提示后并将特征值和SQL语句记录到文件中;
步骤E8:判断所有SQL语句是否执行完毕,未执行完则取出下一条SQL语句并再启动对比线程对,继续步骤E5;若执行完毕则退出。
通过该对比工具可以及时验证原有业务查询SQL语句在两种数据库中的查询结果是否一致,采用对比工具进行对比将大大减少人为对比的工作量。
实施例一提供的一种异构记录集对比方法,通过判断记录集的行数列数是否一致、数值列的最大/最小值和平均值是否一致、字符列的字符总数是否一致等确定两个记录集是否一致,可以及时验证原有业务查询SQL在两种数据库中的查询结果是否一致,能够提高传统关系型数据库与分布式数据库结果集对比的效率和准确性;同时该方法还可以大大减少人为对比两个大型记录集结果一致性的工作,不仅节省人力资源,还可以提高对比效率。
以上详细介绍了异构记录集对比方法的流程,该方法也可以通过装置实现,下面介绍该装置的结构和功能。
参见图7所示,本发明实施例提供一种异构记录集对比装置,包括:
记录集获取模块301,用于根据第一SQL语句获取第一记录集,根据第二SQL语句获取第二记录集;
特征值组确定模块302,用于分别确定第一记录集的第一特征值组和第二记录集的第二特征值组,其中,第一特征值组包括第一记录集的行数、列数、数值列的最大/最小值,第二特征值组包括第二记录集的行数、列数、数值列的最大/最小值;
处理模块303,用于当第一特征值组和第二特征值组相同时,确定第一记录集与第二记录集一致。
优选的,特征值组确定模块302确定的第一特征值组还包括第一记录集中数值列的平均值和不同数值的个数;特征值组确定模块302确定的第二特征值组还包括第二记录集中数值列的平均值和不同数值的个数。
优选的,特征值组确定模块302确定的第一特征值组还包括第一记录集中字符列的字符总数和不同值的个数;特征值组确定模块302确定的第二特征值组还包括第二记录集中字符列的字符总数和不同值的个数。
优选的,该装置还包括:
解析模块304,用于将第一SQL文件和第二SQL文件分别解析为独立的SQL语句;
其中,第一SQL语句为第一SQL文件中独立的SQL语句,第二SQL语句为第二SQL文件中独立的SQL语句。
优选的,参见图8所示,解析模块304包括:
读取单元3041,用于分别读取第一SQL文件和第二SQL文件中的所有SQL语句;
记录单元3042,用于分别记录不为空行或注释行的SQL语句;
分割单元3043,用于根据符号“;”分别分割出第一SQL文件和第二SQL文件中的独立的SQL语句。
优选的,特征值组确定模块302包括:
元数据获取单元3021,用于获取第一记录集的第一元数据,获取第二记录集的第二元数据;
第一特征值确定单元3022,用于根据第一元数据,确定第一记录集的列数,以及每列的数据类型;根据第二元数据,确定第二记录集的列数,以及每列的数据类型;
第二特征值确定单元3023,用于分别遍历第一记录集和第二记录集,确定第一记录集的行数和数值列的最大/最小值,确定第二记录集的行数和数值列的最大/最小值。
优选的,当特征值组确定模块302确定的第一特征值组还包括第一记录集中字符列的字符总数和不同值的个数,特征值组确定模块302确定的第二特征值组还包括第二记录集中字符列的字符总数和不同值的个数时,
第二特征值确定单元3023还用于:确定第一记录集中字符列的字符总数和不同值的个数,确定第二记录集中字符列的字符总数和不同值的个数。
优选的,处理模块303包括:
判断单元3031,用于判断第一SQL语句和第二SQL语句的语句类型;
第一处理单元3032,用于当为更新语句时,在第一记录集的行数和第二记录集的行数一致时,确定第一记录集与第二记录集一致;
第二处理单元3033,用于当为查询语句时,在第一特征值组和第二特征值组完全相同时,确定第一记录集与第二记录集一致。
本发明实施例提供一种异构记录集对比方法及装置,通过判断记录集的行数列数是否一致、数值列的最大/最小值和平均值是否一致、字符列的字符总数是否一致等确定两个记录集是否一致,能够提高传统关系型数据库与分布式数据库结果集对比的效率和准确性;同时该方法还可以大大减少人为对比两个大型记录集结果一致性的工作,不仅节省人力资源,还可以提高对比效率。该方法特别适用于大数据环境下,异构数据库记录集的一致性对比。
本发明能有多种不同形式的具体实施方式,上面以图1-图8为例结合附图对本发明的技术方案作举例说明,这并不意味着本发明所应用的具体实例只能局限在特定的流程或实施例结构中,本领域的普通技术人员应当了解,上文所提供的具体实施方案只是多种优选用法中的一些示例,任何体现本发明权利要求的实施方式均应在本发明技术方案所要求保护的范围之内。
最后应说明的是:以上仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种异构记录集对比方法,其特征在于,包括:
根据第一SQL语句获取第一记录集,根据第二SQL语句获取第二记录集;
分别确定所述第一记录集的第一特征值组和所述第二记录集的第二特征值组,其中,所述第一特征值组包括所述第一记录集的行数、列数、数值列的最大/最小值,所述第二特征值组包括所述第二记录集的行数、列数、数值列的最大/最小值;
当所述第一特征值组和所述第二特征值组相同时,确定所述第一记录集与所述第二记录集一致。
2.根据权利要求1所述的方法,其特征在于,
所述第一特征值组还包括所述第一记录集中数值列的平均值和不同数值的个数;
所述第二特征值组还包括所述第二记录集中数值列的平均值和不同数值的个数。
3.根据权利要求1或2任一所述的方法,其特征在于,
所述第一特征值组还包括所述第一记录集中字符列的字符总数和不同值的个数;
所述第二特征值组还包括所述第二记录集中字符列的字符总数和不同值的个数。
4.根据权利要求1所述的方法,其特征在于,在所述根据第一SQL语句获取第一记录集,根据第二SQL语句获取第二记录集之前,还包括:
将第一SQL文件和第二SQL文件分别解析为独立的SQL语句;
所述第一SQL语句为所述第一SQL文件中独立的SQL语句,所述第二SQL语句为所述第二SQL文件中独立的SQL语句。
5.根据权利要求4所述的方法,其特征在于,所述将第一SQL文件和第二SQL文件分别解析为独立的SQL语句,包括:
分别读取所述第一SQL文件和所述第二SQL文件中的所有SQL语句;
分别记录不为空行或注释行的SQL语句;
根据符号“;”分别分割出所述第一SQL文件和所述第二SQL文件中的独立的SQL语句。
6.根据权利要求1所述的方法,其特征在于,所述分别确定所述第一记录集的第一特征值组和所述第二记录集的第二特征值组,包括:
获取所述第一记录集的第一元数据,获取所述第二记录集的第二元数据;
根据所述第一元数据,确定所述第一记录集的列数,以及每列的数据类型;根据所述第二元数据,确定所述第二记录集的列数,以及每列的数据类型;
分别遍历所述第一记录集和所述第二记录集,确定所述第一记录集的行数和数值列的最大/最小值,确定所述第二记录集的行数和数值列的最大/最小值。
7.根据权利要求6所述的方法,其特征在于,当所述第一特征值组还包括第一记录集中字符列的字符总数和不同值的个数,所述第二特征值组还包括第二记录集中字符列的字符总数和不同值的个数时,所述分别遍历所述第一记录集和所述第二记录集,还包括:
确定所述第一记录集中字符列的字符总数和不同值的个数,确定所述第二记录集中字符列的字符总数和不同值的个数。
8.根据权利要求1所述的方法,其特征在于,所述当所述第一特征值组和所述第二特征值组相同时,确定所述第一记录集与所述第二记录集一致,包括:
判断所述第一SQL语句和所述第二SQL语句的语句类型;
当为更新语句时,在所述第一记录集的行数和所述第二记录集的行数一致时,确定所述第一记录集与所述第二记录集一致;
当为查询语句时,在所述第一特征值组和所述第二特征值组完全相同时,确定所述第一记录集与所述第二记录集一致。
9.一种异构记录集对比装置,其特征在于,包括:
记录集获取模块,用于根据第一SQL语句获取第一记录集,根据第二SQL语句获取第二记录集;
特征值组确定模块,用于分别确定所述第一记录集的第一特征值组和所述第二记录集的第二特征值组,其中,所述第一特征值组包括所述第一记录集的行数、列数、数值列的最大/最小值,所述第二特征值组包括所述第二记录集的行数、列数、数值列的最大/最小值;
处理模块,用于当所述第一特征值组和所述第二特征值组相同时,确定所述第一记录集与所述第二记录集一致。
10.根据权利要求9所述的装置,其特征在于,
所述特征值组确定模块确定的所述第一特征值组还包括所述第一记录集中数值列的平均值和不同数值的个数;
所述特征值组确定模块确定的所述第二特征值组还包括所述第二记录集中数值列的平均值和不同数值的个数。
11.根据权利要求9或10任一所述的装置,其特征在于,
所述特征值组确定模块确定的所述第一特征值组还包括所述第一记录集中字符列的字符总数和不同值的个数;
所述特征值组确定模块确定的所述第二特征值组还包括所述第二记录集中字符列的字符总数和不同值的个数。
12.根据权利要求9所述的装置,其特征在于,还包括:
解析模块,用于将第一SQL文件和第二SQL文件分别解析为独立的SQL语句;
所述第一SQL语句为所述第一SQL文件中独立的SQL语句,所述第二SQL语句为所述第二SQL文件中独立的SQL语句。
13.根据权利要求12所述的装置,其特征在于,所述解析模块包括:
读取单元,用于分别读取所述第一SQL文件和所述第二SQL文件中的所有SQL语句;
记录单元,用于分别记录不为空行或注释行的SQL语句;
分割单元,用于根据符号“;”分别分割出所述第一SQL文件和所述第二SQL文件中的独立的SQL语句。
14.根据权利要求9所述的装置,其特征在于,所述特征值组确定模块包括:
元数据获取单元,用于获取所述第一记录集的第一元数据,获取所述第二记录集的第二元数据;
第一特征值确定单元,用于根据所述第一元数据,确定所述第一记录集的列数,以及每列的数据类型;根据所述第二元数据,确定所述第二记录集的列数,以及每列的数据类型;
第二特征值确定单元,用于分别遍历所述第一记录集和所述第二记录集,确定所述第一记录集的行数和数值列的最大/最小值,确定所述第二记录集的行数和数值列的最大/最小值。
15.根据权利要求14所述的装置,其特征在于,当所述特征值组确定模块确定的所述第一特征值组还包括第一记录集中字符列的字符总数和不同值的个数,所述特征值组确定模块确定的所述第二特征值组还包括第二记录集中字符列的字符总数和不同值的个数时,
所述第二特征值确定单元还用于:确定所述第一记录集中字符列的字符总数和不同值的个数,确定所述第二记录集中字符列的字符总数和不同值的个数。
16.根据权利要求9所述的装置,其特征在于,所述处理模块包括:
判断单元,用于判断所述第一SQL语句和所述第二SQL语句的语句类型;
第一处理单元,用于当为更新语句时,在所述第一记录集的行数和所述第二记录集的行数一致时,确定所述第一记录集与所述第二记录集一致;
第二处理单元,用于当为查询语句时,在所述第一特征值组和所述第二特征值组完全相同时,确定所述第一记录集与所述第二记录集一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310683736.9A CN104714956A (zh) | 2013-12-13 | 2013-12-13 | 一种异构记录集对比方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310683736.9A CN104714956A (zh) | 2013-12-13 | 2013-12-13 | 一种异构记录集对比方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104714956A true CN104714956A (zh) | 2015-06-17 |
Family
ID=53414300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310683736.9A Pending CN104714956A (zh) | 2013-12-13 | 2013-12-13 | 一种异构记录集对比方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104714956A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104965870A (zh) * | 2015-06-10 | 2015-10-07 | 国网天津市电力公司 | 一种大型企业信息系统权限数据管理比对方法 |
CN106445973A (zh) * | 2015-08-12 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 搜索引擎的监控方法和装置 |
CN107622066A (zh) * | 2016-07-14 | 2018-01-23 | 北京京东尚科信息技术有限公司 | 用于关系型数据库的数据对比方法以及装置 |
CN109491904A (zh) * | 2018-11-04 | 2019-03-19 | 北京亚鸿世纪科技发展有限公司 | 一种SparkSQL应用程序的自动化测试方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339298A (zh) * | 2010-07-28 | 2012-02-01 | 中国移动通信集团公司 | Sql脚本元数据的更新方法、装置及系统 |
US20120131391A1 (en) * | 2010-11-23 | 2012-05-24 | International Business Machines Corporation | Migration of data in a distributed environment |
CN102831127A (zh) * | 2011-06-17 | 2012-12-19 | 阿里巴巴集团控股有限公司 | 重复数据处理方法、装置及系统 |
US20130046945A1 (en) * | 2011-08-15 | 2013-02-21 | Fujitsu Limited | Storage apparatus and storage apparatus control method |
CN103176988A (zh) * | 2011-12-21 | 2013-06-26 | 上海博腾信息科技有限公司 | 基于SaaS的数据迁移系统 |
-
2013
- 2013-12-13 CN CN201310683736.9A patent/CN104714956A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339298A (zh) * | 2010-07-28 | 2012-02-01 | 中国移动通信集团公司 | Sql脚本元数据的更新方法、装置及系统 |
US20120131391A1 (en) * | 2010-11-23 | 2012-05-24 | International Business Machines Corporation | Migration of data in a distributed environment |
CN102831127A (zh) * | 2011-06-17 | 2012-12-19 | 阿里巴巴集团控股有限公司 | 重复数据处理方法、装置及系统 |
US20130046945A1 (en) * | 2011-08-15 | 2013-02-21 | Fujitsu Limited | Storage apparatus and storage apparatus control method |
CN103176988A (zh) * | 2011-12-21 | 2013-06-26 | 上海博腾信息科技有限公司 | 基于SaaS的数据迁移系统 |
Non-Patent Citations (2)
Title |
---|
DFHIGH: "php从sql文件读取sql并操作数据库", 《HTTP://WWW.DOUBAN.COM/NOTE/205086585.HTML》 * |
TERRYHUANG: "PL/SQL 怎么判断两个结果集是否相等", 《HTTP://WWW.BLOG.CSDN.NET/TERRYHUANG/ARTICLE/DETAILS/8621021.HTML》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104965870A (zh) * | 2015-06-10 | 2015-10-07 | 国网天津市电力公司 | 一种大型企业信息系统权限数据管理比对方法 |
CN106445973A (zh) * | 2015-08-12 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 搜索引擎的监控方法和装置 |
CN106445973B (zh) * | 2015-08-12 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 搜索引擎的监控方法和装置 |
CN107622066A (zh) * | 2016-07-14 | 2018-01-23 | 北京京东尚科信息技术有限公司 | 用于关系型数据库的数据对比方法以及装置 |
CN107622066B (zh) * | 2016-07-14 | 2020-06-30 | 北京京东尚科信息技术有限公司 | 用于关系型数据库的数据对比方法以及装置 |
CN109491904A (zh) * | 2018-11-04 | 2019-03-19 | 北京亚鸿世纪科技发展有限公司 | 一种SparkSQL应用程序的自动化测试方法和装置 |
CN109491904B (zh) * | 2018-11-04 | 2021-10-26 | 北京亚鸿世纪科技发展有限公司 | 一种SparkSQL应用程序的自动化测试方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111382226B (zh) | 一种数据库查询检索方法、装置和电子设备 | |
Zou et al. | Pareto-based dominant graph: An efficient indexing structure to answer top-k queries | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN103577440A (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
CN103778133A (zh) | 一种数据库对象的变更方法及装置 | |
CN106599052A (zh) | 一种基于ApacheKylin的数据查询系统及其方法 | |
CN111159180A (zh) | 一种基于数据资源目录构建的数据处理方法及系统 | |
CN101477555B (zh) | 基于sql数据库的任务树的快速检索及生成显示的方法 | |
CN104714956A (zh) | 一种异构记录集对比方法及装置 | |
Shanoda et al. | JOMR: Multi-join optimizer technique to enhance map-reduce job | |
CN111506621A (zh) | 一种数据统计方法及装置 | |
Kalavri et al. | Block sampling: Efficient accurate online aggregation in mapreduce | |
CN105302730A (zh) | 一种检测计算模型的方法、测试服务器及业务平台 | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
Cao et al. | Leveraging column family to improve multidimensional query performance in HBase | |
Song et al. | Haery: a Hadoop based query system on accumulative and high-dimensional data model for big data | |
CN104516985A (zh) | 一种基于HBase数据库的海量数据快速导入方法 | |
Huang et al. | R-HBase: A multi-dimensional indexing framework for cloud computing environment | |
CN103064841A (zh) | 检索装置和检索方法 | |
CN104636401A (zh) | 一种scada系统数据回滚的方法及装置 | |
CN103365923A (zh) | 用于评估数据库的分区方案的方法和装置 | |
An et al. | Using index in the mapreduce framework | |
CN112381583A (zh) | 一种基于分布式内存计算技术的电力量费计算方法及装置 | |
CN105824976A (zh) | 一种优化分词库的方法和装置 | |
Moussa | Tpc-h benchmarking of pig latin on a hadoop cluster |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150617 |
|
RJ01 | Rejection of invention patent application after publication |