发明内容
有鉴于此,本申请提供一种数据表比对方法和装置,以解决目前数据表比对效率低下的问题。
具体地,本申请是通过如下技术方案实现的:
一种数据表比对方法,所述方法包括:
为第一数据表生成第一特征值列表;
为第二数据表生成第二特征值列表;
比对所述第一特征值列表和所述第二特征值列表是否相同;
如果所述第一特征值列表和所述第二特征值列表相同,则确认所述第一数据表和所述第二数据表中存储的数据相同。
进一步地,所述方法还包括:
如果所述第一特征值列表和所述第二特征值列表不完全相同,则确认所述第一数据表和所述第二数据表中存储的数据不完全相同。
进一步地,所述为第一数据表生成第一特征值列表包括:
针对所述第一数据表的每个分区,分别计算该分区的特征值;
根据所述第一数据表的每个分区的特征值生成所述第一特征值列表。
进一步地,所述计算该分区的特征值包括:
将该分区中的每条数据转换为预设的格式;
根据预设的算法分别计算该分区中每条数据的数据特征值;
根据所述每条数据的数据特征值计算该分区的特征值。
进一步地,所述预设的算法是求和算法或哈希算法。
一种数据表比对装置,所述装置包括:
第一生成单元,为第一数据表生成第一特征值列表;
第二生成单元,为第二数据表生成第二特征值列表;
比对单元,比对所述第一特征值列表和所述第二特征值列表是否相同;
确认单元,在所述第一特征值列表和所述第二特征值列表相同时,确认所述第一数据表和所述第二数据表中存储的数据相同。
进一步地,所述确认单元,在所述第一特征值列表和所述第二特征值列表不完全相同时,确认所述第一数据表和所述第二数据表中存储的数据不完全相同。
进一步地,所述第一生成单元包括:
计算子单元,针对所述第一数据表的每个分区,分别计算该分区的特征值;
生成子单元,根据所述第一数据表的每个分区的特征值生成所述第一特征值列表。
进一步地,所述计算子单元,具体将该分区中的每条数据转换为预设的格式;根据预设的算法分别计算该分区中每条数据的数据特征值;根据所述每条数据的数据特征值计算该分区的特征值。
进一步地,所述预设的算法是求和算法或哈希算法。
由以上描述可以看出,本申请分别生成第一数据表的第一特征值列表和第二数据表的第二特征值列表,进而可以通过比对所述第一特征值列表和所述第二特征值列表是否相同来判断所述第一数据表和所述第二数据表是否相同,大大减少了数据表对比过程中数据的传输量,节省网络带宽,同时提高对比效率。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
针对上述问题,本申请提供一种数据表比对方案,可以有效减少数据表对比过程中带宽和时间的消耗。
请参考图1,本申请提供一种数据表比对方法,所述方法可以应用在服务器上,包括以下步骤:
步骤101,为第一数据表生成第一特征值列表。
步骤102,为第二数据表生成第二特征值列表。
为了降低数据表比对过程中的数据传输量,在本申请中,为需要进行对比的第一数据表和第二数据表分别生成对应的第一特征值列表和第二特征值列表。
其中,请参考图2,以第一数据表为例,所述为第一数据表生成第一特征值列表可以包括以下步骤:
步骤1011,针对所述第一数据表的每个分区,分别计算该分区的特征值。
所述第一数据表的分区划分通常由开发人员或管理人员预先设置,比如:可以按照数据的存储时间划分所述第一数据表。举例来说,所述第一数据表用于存储30天的数据,同一天的数据存储在同一个分区内,则所述第一数据表包括有30个分区,其中,第一个分区中存储2014年1月1日的数据,第二个分区中存储2014年1月2日的数据,依次类推。当然,对于所述第一数据表的分区的划分,也可以将相邻两天的数据存储在同一个分区内,比如:第一分区中可以用来存储2014年1月1日和2日的数据等,本申请对此不作限制。
在本申请中,利用所述第一数据表的分区划分,先获取所述第一数据表的各个分区列表,比如:所述第一数据表包括有30个分区,分别为:dt=20140101,dt=20140102,…,dt=20140130。然后,分别计算每个分区的特征值,使用每个分区的特征值来代表该分区中存储的数据,大大减少了数据量。
具体地,计算所述第一数据表的某一分区的特征值可以包括:
1.将该分区中的每条数据转换为预设的格式。
所述第一数据表中的每个分区内都存储有多条数据,每条数据都可能包括有多个字段。所述字段可以理解为所述第一数据表中的“列”,不同的字段可以用于存储不同的信息,每个字段的字段类型可能相同,也可能不同。举例来说,假设所述第一数据表中的某条数据包括三个字段,第一个字段用于存储时间,比如:2014年1月1日上午八点整。第二个字段用于存储订单号,比如:130183。第三个字段用于存储金额,比如:102.5元。则在本步骤中,将该数据的每个字段中存储的数据转换为预设的格式,比如:字符串格式。当然,本领域技术人员也可以依据相关技术将每个字段中存储的数据转换为其他的格式,本申请对此不作限制。
具体地,以所述预设的格式为字符串格式为例,开发人员或者管理人员需要预先设置转换规则,比如:对于整形的数据格式,可以直接将原始的数据作为转换后的数据。对于浮点型的数据格式,可以保留一定精度的小数位以作为转换后的数据。对于日期格式的数据,可以将其转换为标准格式的日期。以前面的举例为例,对于第一字段中存储的时间格式的数据:2014年1月1日上午八点整,可以将其转换为字符串“2014-01-0108:00:00.000”,对于第二字段中存储的整形数据订单号:130183,可以直接将“130183”作为转换后的字符串,对于第三字段中存储的浮点格式数据金额:102.5元,可以保留五位小数,将其转换为字符串:“102.50000”。
对于所述分区中的每条数据而言,如果该数据包括有m个字段,则经过本步骤的转换,将该数据的m个不同类型的字段转换为m个字符串。
在本申请中,通过将数据表中的每条数据转换为预设的格式,使得本申请可以适用于异构的数据库中的数据表的比对,适用性更广。
2.根据预设的算法分别计算该分区中每条数据的数据特征值。
基于前述步骤,在得到某条数据的m个字符串之后,在本步骤中,可以根据预设的算法计算该数据的数据特征值。比如:根据预设的算法通过函数Row_merge()可以计算出该数据的数据特征值。其中,所述预设的算法可以是求和算法或哈希算法。具体地,如果基于前述步骤得到的某条数据的m个字符串均为数值,则可以采取求和的方式计算该数据的数据特征值,如果基于前述步骤得到的某条数据的m个字符串包括数值也包括字符,则可以将所述m个字符串合并为一个字符串,然后通过哈希运算的方式计算该数据的数据特征值。当然,本领域技术人员也可以采取其他的算法来计算所述数据的数据特征值,本申请对此不作限制。
3.根据所述每条数据的数据特征值计算该分区的特征值。
基于前述步骤,在计算出该分区中每条数据的数据特征值后,根据所述数据特征值计算该分区的特征值。假设,该分区包括有n条数据,则基于前述步骤,可以计算出所述n条数据的n个数据特征值。在本步骤中,根据所述n个数据特征值,计算该分区的特征值。
具体地,在本步骤中,可以通过函数Records_reduce()采用求和或者求平均值的方式来计算该分区的特征值。当然,本领域技术人员也可以采取其他方式计算所述分区的特征值,比如:哈希算法,本申请对此不作限制。
步骤1012,根据所述第一数据表的每个分区的特征值生成所述第一特征值列表。
基于前述步骤1011,在得到所述第一数据表的每个分区的特征值后,生成所述第一数据表的第一特征值列表。请参考表1,本申请一实施例中的所述第一特征值列表。
分区 |
分区的特征值 |
dt=20140101 |
va101 |
dt=20140102 |
va102 |
… |
… |
表1
其中,va101为所述第一数据表中分区dt=20140101的特征值,va102为所述第一数据表中分区dt=20140102的特征值,依次类推。
在步骤102中,采用同样的方法可以生成所述第二数据表的第二特征值列表,请参考表2,本申请一实施例中的所述第二特征值列表。
分区 |
分区的特征值 |
dt=20140101 |
va101’ |
dt=20140102 |
va102’ |
… |
… |
dt=20140130 |
va130’ |
表2
其中,va101’为所述第二数据表中分区dt=20140101的特征值,va102’为所述第二数据表中分区dt=20140102的特征值,依次类推。
步骤103,比对所述第一特征值列表和所述第二特征值列表是否相同,如果所述第一特征值列表和所述第二特征值列表相同,则执行步骤104。如果所述第一特征值列表和所述第二特征值列表不完全相同,则执行步骤105。
基于前述步骤101和步骤102,在得到所述第一特征值列表和第二特征值列表后,在本步骤中比对所述第一特征值列表和所述第二特征值列表是否相同。具体地,可以将所述第一特征值列表复制到所述第二特征值列表所在的数据仓库中,然后进行比对。其中,所述第一特征值列表包括有所述第一数据表的分区和每个分区对应的特征值,所述第一特征值列表的数据量相对于所述第一数据表的数据量而言已大大减少,在传输的过程中不会消耗大量的网络带宽,同时也提高了传输的时间。
仍以表1为所述第一特征值列表,表2为所述第二特征值列表为例,在本步骤中,比较所述第一数据表中分区dt=20140101的特征值va101和所述第二数据表中分区dt=20140101的特征值va101’是否相同,即比较va101和va101’是否相同。依次类推,比较va102和va102’是否相同,…,va130和va130’是否相同。如果都相同,则所述第一特征值列表和所述第二特征值列表相同,执行步骤104。如果不完全相同,则所述第一特征值列表和所述第二特征值列表不完全相同,执行步骤105。
步骤104,确认所述第一数据表和所述第二数据表中存储的数据相同。
基于前述步骤103的判断结果,如果所述第一特征值列表和所述第二特征值列表相同,则可以确认所述第一数据表和所述第二数据表中存储的数据相同。
步骤105,确认所述第一数据表和所述第二数据表中存储的数据不完全相同。
基于前述步骤103的判断结果,如果所述第一特征值列表和所述第二特征值列表不完全相同,比如:va101和va101’相同,但是va102和va102’不相同,则可以确认所述第一数据表和所述第二数据表中存储的数据不完全相同。
进一步地,通过本申请的技术方案,可以判断出所述第一数据表和所述第二数据表中哪个分区中的数据不完全相同。具体地,如果所述第一数据表的某一分区的特征值与第二数据表的该分区的特征值相同,则所述第一数据表的所述分区与所述第二数据表的所述分区存储的数据相同。如果所述第一数据表的某一分区的特征值与第二数据表的该分区的特征值不相同,则所述第一数据表的所述分区与所述第二数据表的所述分区存储的数据不完全相同。仍以表1和表2为例,如果va101和va101’相同,则所述第一数据表的分区dt=20140101与所述第二数据表的分区dt=20140101中存储的数据相同。如果va102和va102’不相同,则所述第一数据表的分区dt=20140102与所述第二数据表的分区dt=20140102中存储的数据不完全相同。
由以上描述可以看出,本申请分别生成第一数据表的第一特征值列表和第二数据表的第二特征值列表,进而可以通过比对所述第一特征值列表和所述第二特征值列表是否相同来判断所述第一数据表和所述第二数据表是否相同,大大减少了数据表对比过程中数据的传输量,节省网络带宽,同时提高对比效率。
与本申请数据表比对方法的实施例相对应,本申请还提供了一种数据表比对装置。本申请所述的装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,本申请校验装置作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
请参考图3和图4,本申请提供一种数据表比对装置300,所述装置可以应用在服务器上,包括有:第一生成单元301、第二生成单元302、比对单元303以及确认单元304。其中,所述第一生成单元301还可以包括:计算子单元3011和生成子单元3012。
所述第一生成单元301,为第一数据表生成第一特征值列表。
所述第二生成单元302,为第二数据表生成第二特征值列表。
所述比对单元303,比对所述第一特征值列表和所述第二特征值列表是否相同。
所述确认单元304,在所述第一特征值列表和所述第二特征值列表相同时,确认所述第一数据表和所述第二数据表中存储的数据相同。
进一步地,所述确认单元304,在所述第一特征值列表和所述第二特征值列表不完全相同时,确认所述第一数据表和所述第二数据表中存储的数据不完全相同。
所述计算子单元3011,针对所述第一数据表的每个分区,分别计算该分区的特征值。
所述生成子单元3012,根据所述第一数据表的每个分区的特征值生成所述第一特征值列表。
进一步地,所述计算子单元3011,具体将该分区中的每条数据转换为预设的格式;根据预设的算法分别计算该分区中每条数据的数据特征值;根据所述每条数据的数据特征值计算该分区的特征值。
进一步地,所述预设的算法是求和算法或哈希算法。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。