背景技术
目前,在电信的下一代网络(Next Generation Network,NGN)中,为了保证控制层数据的高度可靠性,需要使用双归属组网模式。所谓双归属组网模式即是将需要保存的数据同时保存在两台设备上,使其具有双归属特性;两台设备分别称为主用设备和备用设备;保存在主用设备上的数据称为主用数据或主用记录,而保存在备用设备上的数据称为备用数据或备用记录。使用双归属组网模式可以通过冗余备份的方式提高软交换设备的容灾能力。
在双归属组网模式下,两台软交换设备的数据配置绝大部分应该是一致的,但是,在电信运营商进行网络运行维护的过程中,由于存在人工操作,很难保证两台软交换设备上的业务数据完全一致,因此就需要对两台软件交换设备上存储的大规模业务数据进行比较,以便能够快捷准确的查找出不一致的业务数据,并且对该业务数据进行校验。
针对上述问题,现有技术中提出了两种解决方案。
第一种方案为:根据需要比较的业务数据,以结构化查询语句(StructuredQuery Language,SQL)描述其所有字段属性,并对每一字段属性进行比较。
采用第一种方案的缺点为:
1、若需要比较的业务数据达到十万级或百万级,则比较流程所需要的时间长达十几个小时,这大大降低了业务数据比较工作的工作效率。
2、由于会对业务数据的每一字段属性逐个进行比较,因此,比较流程的时间复杂度O(m*n)会随业务数据的增加而增加,其中,O为时间常数,m为记录条数,n为属性个数。
3、当业务数据发生变化时,需要对相应的SQL语句进行调整,由于无法屏蔽各类业务数据的个性特点,便需要对不同的业务数据采取不同的处理方式,这大大增加了后期维护工作的复杂度。
第二种方案为:将需要进行比较的主用记录和备用记录读取到内存中,再使用内置的数据类型的比较操作符对业务数据的各字段属性逐个进行比较。
采用第二种方案有缺点为:
1、将所有主用数据和备用数据完整地读入内存会大大增加系统的I/O操作,从而增加了系统开销,造成系统性能损失。
2、将所有主用数据和备用数据完整地读入内存需要大量的内存开销,这样系统的反应速度便会非常慢,从而大大降低了业务数据比较工作的工作效率。
3、比较流程的时间复杂度O(m*n)会随业务数据的增加而增加,其中,O为时间常数,m为记录条数,n为属性个数。
4、当业务数据发生变化时,需要修改内存中存放的业务数据的数据结构,由于无法屏蔽各类业务数据的个性特点,因此需要对不同的业务数据执行不同的处理方式,这大大增加了后期维护工作的复杂度。
发明内容
本发明实施例提供一种比较海量数据的方法及装置,用以在双归属组网模式的主用设备和备用设备之间进行海量数据比较时,提高工作效率,降低工作复杂度。
本发明实施例提供的具体技术方案如下:
一种比较海量数据的方法,包括:
获取具有相同业务记录标识的第一摘要标识和第二摘要标识,所述第一摘要标识和第二摘要标识分别归属于双归属组网模式下的主用设备和备用设备;
当所述第一摘要标识与所述第二摘要标识相同时,确定所述业务记录标识在所述主用设备和备用设备上分别对应的业务记录包含相同的业务字段。
一种用于比较海量数据的设备,包括:
通信单元,用于与双归属组网模式下的主用设备和备用设备进行信息交互;
获取单元,用于从所述主用设备和备用设备获取需要进行比较的业务数据;
存储单元,用于以业务记录的形式保存所述业务数据,其中,每条业务记录包含用于在一个设备中唯一标识该业务记录的业务记录标识,以及用于代表该业务记录包含的各业务字段的类型和字段值的摘要信息;
比较单元,用于从所述存储单元中获取具有相同业务记录标识的第一摘要标识和第二摘要标识,所述第一摘要标识和第二摘要标识分别归属于所述主用设备和备用设备,当所述第一摘要标识与所述第二摘要标识相同时,确定所述业务记录标识在所述主用设备和备用设备上分别对应的业务记录包含相同的业务字段。
一种通信系统,包括双归属组网模式下的主用设备和备用设备,以及网管设备,其中:
所述主用设备用于保存主用业务数据;
所述备用设备用于保存备用业务数据;
所述网管设备用于从所述主用设备和备用设备中以业务记录形式提取需要进行比较的业务数据,并从各业务记录中获取具有相同业务记录标识的分别归属于所述主用设备和备用设备的第一摘要标识和第二摘要标识;以及当所述第一摘要标识与所述第二摘要标识相同时,确定所述业务记录标识在所述主用设备和备用设备上分别对应的业务记录包含相同的业务字段。
本发明实施例中,网管设备在比较两条具有相同业务记录标识的业务记录时,若确认这两条业务记录的摘要标识相同,则确定这两条业务记录包含的业务字段的类型和字段值相同,这样,便在一定程度上屏蔽了各业务的特性,将不同业务的关键字简化,降低了业务数据比对过程的复杂度,提高了网管设备10执行海量业务数据比较时的工作效率,同时,由于将业务记录中的业务数据统一加密或压缩成一个唯一的标志字段,因此,当业务记录中的业务字段增加时,也不会对网管设备10执行比对流程时的工作效率造成影响,从而进一步降低了海量数据比对工作的复杂度。
具体实施方式
在双归属组网模式下的主用设备和备用设备之间进行海量数据比较时,为了提高其工作效率,降低其工作复杂度,本发明实施例中,获取具有相同业务记录标识的第一摘要标识和第二摘要标识,所述第一摘要标识和第二摘要标识分别归属于所述双归属组网模式下的主用设备和备用设备;当所述第一摘要标识与所述第二摘要标识相同时,确定所述业务记录标识在所述主用设备和备用设备上分别对应的业务记录包含相同的业务字段。
表1
DeviceID | Keys | Field1 | Field2 | ...... | Indicate |
在上述过程中,首先,网管设备将从主用设备和备用设备上获得的业务数据放置在统一的比对列表内,形成一条条业务记录。参阅表1所示,本发明实施例中,比对列表内保存的每条业务记录中可以包括设备标识(Device ID)、业务记录标识(Keys)、业务字段1(Field1)、业务字段2(Field2)和摘要标识(Indicate)。
在每一条业务记录中:
Device ID,用于标识主用设备或备用设备,令网管设备可以对不同来源的业务数据加以区分;例如,主用设备的Device ID为设备A,备用设备的DeviceID为设备B。
Keys,用于唯一标识一条业务记录,令网管设备可以迅速识别相应的业务记录。本实施例中,网管设备在为每一条业务记录标记Keys时,提取出业务记录的主键,并将获得的主键直接作为该业务记录的Keys,或者将获得的主键拼接以形成一个可以唯一代表该业务记录的字符串,此字符串即为Keys。
例如,参阅表2所示,若在一条业务记录中,保存了从设备A获得的用户张三的姓名和身份证号码;由于身份证号码可以唯一标识出用户张三,那么,网管设备可以将张三的身份证号码作为主键提取出来并将其作为此条业务记录的Keys。
表2
DeviceID | Keys | Fields1(姓名) | Fields2(身份证号码) | ...... |
设备A | 01234 | 张三 | 01234 | ...... |
表3
DeviceID | Keys | Fields1(姓名) | Fields2(性别) | Fields3(年龄) | ...... |
设备A | 张三/28 | 张三 | 女 | 28 | ...... |
又例如,参阅表3所示,若在一条业务记录中,保存了从设备A获得的用户张三的姓名、性别和年龄;此时,单独提取出一种信息已不能唯一标识此条业务记录,那么,网管设备可以将张三的姓名和年龄提取出来进行拼接,并将拼接后得到的信息作为此条业务记录的Keys。
Field X(X=1、2、3......),用于保存每条业务记录中的实际业务数据,也称为业务字段。例如,参阅表2所示,在一条业务记录中,用户张三的姓名和身份证号码便分别是这条业务记录中的两个业务字段。
Indicate,用于表示一条业务记录中各业务字段的类型和字段值等信息,是一条业务记录的摘要信息,一条业务记录中的任意业务字段发生改变,相应的Indicate都会发生变化。
本发明实施例中,网管设备10将一条业务记录中所有业务字段的类型和字段值通过加密算法、压缩算法或摘要算法得到一个字符串,该字符串即为此条业务记录的Indicate,它可以唯一代表这条业务记录中所有的所有业务字段的类型和字段值。在获得Indicate时,可以采用的算法有多种,例如,ARJ算法,ZIP算法或MD5算法。
下面结合附图对本发明优选的实施方式进行详细说明。
参阅图1A所示,电信的下一代网络(Next Generation Network,NGN)可以包括多个网管设备10、多个软件交换设备11和第三方设备12。本发明实施例中,仅以一个网管设备10、两个软交换设备11(分别为软交换设备A和软交换设备B)和一个第三方设备12为例进行介绍。
软交换设备A(以下称为设备A)和软交换设备B(以下称为设备B)为双归属组网模式下的主用设备和备用设备,分别用于存储主用业务数据和备用业务数据;
网管设备10用于从设备A和设备B中以业务记录形式提取需要进行比较的业务数据,并从各业务记录中获取具有相同Keys的分别归属于设备A和设备B的两个Indicate,以及当这两个Indicate相同时,确定上述Keys在设备A和设备B上分别对应的业务记录包含相同的业务字段。
参阅图1B所示,本发明实施例中,网管设备10包括通信单元100、获取单元101、比较单元102和存储单元103。
通信单元100用于与设备A和设备B进行信息交互;
获取单元101用于从设备A和设备B获取需要进行比较的业务数据;
存储单元103于以业务记录的形式保存所述业务数据;
比较单元102于从存储单元103获取具有相同Keys的第一摘要标识和第二摘要标识并对其进行比较,该第一摘要标识和第二摘要标识分别归属于设备A和设备B,当比较单元102当第一摘要标识与所述第二摘要标识相同时,则确定所述获取的Keys在设备A和设备B上分别对应的业务记录包含相同的业务字段。
参阅图1C所示,网管设备10中还可以包括加密单元104,用于通过加密算法、压缩算法或者摘要算法生成各业务记录的摘要标识。
基于上述系统架构,本实施例中,在对设备A和设备B上保存的海量业务数据进行比较时,网管设备10可以在提取业务数据之前,分别在设备A和设备B上生成各业务记录的Indicate,并将各业务记录及其对应的Indicate提取至比对列表中;或者,网管设备10可以在提取业务数据的过程中,生成各业务记录的Indicate,并将各业务记录及其对应的Indicate提取至比对列表中;或者,网络设备10还可以先从设备A和设备B上分别提取出需要进行比对的业务数据,并将其以业务记录的形式存放在比对列表中,接着统一生成各业务记录的Indicate并将各Indicate保存在比对列表中的相应位置。
比对列表可以保存在网管设备10上,也可以保存在设备A或设备B上,还可以保存在第三方设备12上,第三方设备12可以是任意一种具有存储功能的通信设备。
网管设备10将分别从设备A和设备B上提取出的业务数据保存至同一比对列表中后,计算出每一条业务记录的Indicate,并保存在对应的业务记录中。当然,生成每一条业务记录的Indicate的操作流程也可以由其他设备来完成,例如,可以在提取业务数据前,提取业务数据的过程中,或者提取业务数据后,由专门的加密设备对每一条业务记录进行处理以生成相应的Indicate,在此不再赘述。
网管设备10整理好比对列表后,可以自动启动海量业务数据比对流程,也可以在接收到用户指令后启动海量业务数据比对流程。
本实施例中,将Device ID为设备A的业务记录统称为A类业务记录,而将Device ID为设备B的业务记录统称为B类业务记录,那么参阅图2所示,网管设备10对海量数据进行比对的详细流程如下:
步骤S200:网管设备10将第N条A类业务记录的Keys依次与各B类业务记录的Keys进行比较,判断是否存在相同的Keys,其中,N=(1、2、3......M),若是,则进行步骤S210:否则,执行步骤S240。
在实际应用中,网管设备10可以从第一条A类业务记录开始,依次将每一条A类业务记录与所有B类业务记录一一比对,以确定是否存在相同的Keys;或者,网管设备10还可以从第一条B类业务记录开始,依次将每一条B类业务记录与所有A类业务记录一一比对,以确定是否存在相同的Keys。
步骤S210:判断具有相同Keys的A类业务记录和B类业务记录是否具有相同的Indicate,若是,则进行步骤S220;否则,进行步骤S230。
由于Indicate是对一条业务记录中各业务字段的类型和字段值进行加密、压缩或其他类似的处理后,得到的可以代表该业务记录中包含的所有业务字段的摘要信息,并且当该业务记录中保存的业务字段的类型或/和字段值发生改变时,其对应的Indicate也会被进行同步修改。
因此,参阅表4所示,若两条具有相同Keys的业务记录又同时具有相同的Indicate,那么便可以确定这两条业务记录中包含的业务字段完全相同。
表4
DeviceID | Keys | Fields1 | Fields2 | Fields3 | Indicate |
设备A | 1@1@1999 | 1 | 1 | 1999 | 299b23d5a0b0d28d9007fceff92fd706 |
设备B | 1@1@1999 | 1 | 1 | 1999 | 299b23d5a0b0d28d9007fceff92fd706 |
反之,参阅表5所示,若两条具有相同Keys的业务记录不具有相同的Indicate,那么便可以确定这两条业务记录中包含的业务字段不相同,也就说明主用设备上的主用数据和备用数据上对应的备用数据发生了偏差,需要及时进行调整。
表5
DeviceID | Keys | Fields1 | Fields2 | Fields3 | Indicate |
设备A | 1@1@1999 | 1 | 1 | 1999 | 299b23d5a0b0d28d9007fceff92fd706 |
设备B | 1@1@1999 | 1 | 1 | 1999 | 132d5faf13867c958ac634739f111cb5 |
步骤S220:确定具有相同的Indicate的A类业务记录和B类业务记录包含的所有业务字段完全相同,接着,进行步骤S240。
步骤S230:确定具有相同的Indicate的A类业务记录和B类业务记录所包含的业务字段不相同,接着,进行步骤S240。
步骤S240:判断N+1是否大于M,若是,则结束当前流程;否则,进行步骤S250。
步骤S250:执行N=N+1,接着,返回步骤S200。
在上述实施例中,可以将设备A作为主用设备,将设备B作为备用设备,或者,将设备B作为主用设备,将设备A作为备用设备,均可以达到同样的技术效果。同时,为了提高网管设备10对海量业务数据进行比对时的工作效率,还可以根据数据库结构进一步将比对列表中的Keys和Indicate设置为索引值,以充分提高数据库检索速度。
这样,本发明实施例中,便在一定程度上屏蔽了各业务的特性,将不同业务的关键字简化,降低了业务数据比对过程的复杂度,提高了网管设备10执行海量业务数据比较时的工作效率,同时,由于业务记录的Indicate是将业务记录中的各业务字段通过加密算法、压缩算法或摘要算法形成的一个唯一的摘要信息,因此,当业务记录中的业务字段增加/减少/修改时,只需重新通过上述各种算法得到新的Indicate即可,并不会给网管设备10执行比对流程时的工作效率造成影响,从而在进一步降低了海量数据比对工作的复杂度。
显然,本领域的技术人员可以对本发明中的实施例进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明实施例中的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明中的实施例也意图包含这些改动和变型在内。