数据信息集成系统
技术领域
本发明属于信息处理领域,尤其涉及一种数据信息集成系统。
背景技术
随着计算机和信息技术的发展,大型企业或机构中,各个分支机构或者分支部门往往独立建设信息系统。相关资料和调研成果显示,国家电网公司的集体企业共有270余种信息系统,各个系统间分散独立,“孤岛”效应严重,带来以下技术问题:
第一,信息需要重复录入。例如,同一人员的信息被不同部门的信息系统反复录入,同一人员在不同的分支机构调动时,相应的信息也需要在新的分支机构进行录入,浪费大量的时间和精力。
第二,信息不共享,在单个的系统中,无法检索、查询、汇总、统计相关信息。
因此,希望提供一种数据信息集成系统,建立统一的数据库或者数据中心,在一个系统内部有效的消除信息孤岛,提供相应的功能。同时,也希望能够有效利用已经存在数据信息,通过自动化的手段完成有效数据信息的抽取、清洗、加工,避免再次的进行大规模的数据录入。
发明内容
为克服上述问题,本发明涉及一种数据信息集成系统,其特征在于,包括通信服务器、数据中心、安全隔离装置;通信服务器与第一网络直接连接,并且通过安全隔离装置与第二网络通信连接,通信服务器用于通过第一、二网络获取多个数据源中的数据信息;
数据中心包括数据库和信息处理服务器,用于对获取的数据信息进行存储和处理;数据库包括一个或多个种子表、一个或多个数据表,每个种子表存储有可信的字段信息,每个数据表包括主索引字段、多个第一类型字段和多个第二类型字段,数据表中每条记录在主索引字段中的数据信息均来源于种子表;
数据库中还存储有可信数据源的唯一标识,第一类型字段中的数据信息均来源于可信数据源,第二类型字段中的数据信息来源于可信数据源以及非可信数据源。
信息处理服务器执行计算机程序,对每个数据表操作,具体包括以下步骤:
步骤S100,根据主索引字段的字段名,在种子表中检索对应的可信字段,并将可信字段的内容复制到主索引字段中;
步骤S200,对于每条记录,判断是否存在内容为Null的字段,如果存在,填充该Null字段;具体包括:
步骤S210,根据主索引字段的内容和Null字段的字段名,在种子表中检索,如果检索到对应的内容,则根据检索到的内容填充Null字段;如果没有检索到对应的内容,则执行步骤S230;
步骤S230,根据主索引字段的内容和Null字段的字段名,在可信数据源中进行检索,如果检索到对应的内容,则根据检索到的内容填充Null字段;如果没有检索到对应的内容,判断Null字段的类型,如果为第一类型字段,则执行步骤S250,如果为第二类型字段,则执行步骤S260;
步骤S250,向用户提示Null字段的内容无法自动填充;
步骤S260,根据主索引字段的内容和Null字段的字段名,在非可信数据源中进行检索,如果检索到对应的内容,则根据检索到的内容填充Null字段,如果没有检索到对应的内容,向用户提示Null字段的内容无法自动填充。
附图说明
图1是本发明的数据信息集成系统的结构图;
图2是本发明的信息处理服务器执行计算机程序的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,将结合附图对本发明作进一步地详细描述。这种描述是通过示例而非限制的方式介绍了与本发明的原理相一致的具体实施方式,这些实施方式的描述是足够详细的,以使得本领域技术人员能够实践本发明,在不脱离本发明的范围和精神的情况下可以使用其他实施方式并且可以改变和/或替换各要素的结构。因此,不应当从限制性意义上来理解以下的详细描述。
下面通过实施例对本发明做进一步的描述,但不是对本发明的限制。
如图1所示,本发明提供了一种数据信息集成系统,包括通信服务器、数据中心、安全隔离装置;通信服务器与第一网络(即安全的内部局域网,简称内网)直接连接,并且通过安全隔离装置与第二网络(即不安全的外部广域网,简称外网)通信连接,通信服务器用于通过第一、二网络获取多个数据源中的数据信息。
进一步的,数据源包括可信数据源以及非可信数据源。一个实施例中,可信数据源/非可信数据源和内网/外网之间不必有必然的关系,即可信数据源可以位于外网中,不可信数据源也可以位于内网中。一个优选实施例中,可信数据源均位于内网中;不可信数据源位于内网或外网中。
数据中心包括数据库和信息处理服务器,用于对获取的数据信息进行存储和处理;数据库包括一个或多个种子表、一个或多个数据表,每个种子表存储有可信的字段信息,每个数据表包括主索引字段、多个第一类型字段和多个第二类型字段,数据表中每条记录在主索引字段中的数据信息均来源于种子表。
根据本发明,数据表初始化为空表,即数据表中的内容均为Null,数据表为数据信息集成系统期望填充的目标表。数据表中的主索引字段为唯一标识数据表中记录的字段,第一类型字段为需要填充准确信息的字段,第二类型字段为可以填充非准确信息的字段。示例性的举例中,在职工数据表中,工号字段为主索引字段,姓名、学历、参加工作时间等字段为第一类型字段(即要求准确信息),爱好、家庭成员等字段为第二类型字段(即不要求信息特别准确,即使有一些瑕疵,也不会产生明显的影响)。
种子表为用户直接提供的表,用于向数据信息集成系统的数据表提供主索引字段中的内容,由于种子表为用户直接提供的表,因此种子表中的每条记录中的所有内容都认为是可信的。仍以职工数据表为例,需要用户(例如企业的人力资源部门)至少提供准确全面的工号信息,作为种子表中的内容,进而作为数据表主索引字段。更一般的情况是,用户提供的种子表中不仅包括工号信息,还包括其他的字段信息,例如姓名、出生日期、职务、级别等。
数据库中还存储有可信数据源的唯一标识,第一类型字段中的数据信息均来源于可信数据源,第二类型字段中的数据信息来源于可信数据源以及非可信数据源。一个实施例中,可信数据源的唯一标识包括数据源的物理地址和数据源名称。通过可信数据源的唯一标识,信息处理服务器可以确定可信数据源。
信息处理服务器执行计算机程序,对每个数据表操作,如图2所示,具体包括以下步骤:
步骤S100,根据主索引字段的字段名,在种子表中检索对应的可信字段,并将可信字段的内容复制到主索引字段中。值得注意的是,数据表中的字段和种子表中的字段数量并不相同,一般情况下,数据表中的字段数量要多与种子表中的字段数量。而且,一个数据表可能对应多个种子表。例如,职工数据表为一个表,为了填充该表中的职工工号,可能需要几十个二、三级分公司和子公司提供的种子表。本领域技术人员知晓,该步骤完成后,数据表将从空表变为包括多条记录的表,但是每条记录都存在多个内容为Null的字段。
步骤S200,对于每条记录,判断是否存在内容为Null的字段,如果存在,填充该Null字段,直到所有Null字段均被填充完全。具体包括:
步骤S210,根据主索引字段的内容和Null字段的字段名,在种子表中检索,如果检索到对应的内容,则根据检索到的内容填充Null字段;如果没有检索到对应的内容,则执行步骤S230。根据本发明,种子表一方面是用户提供的可信信息,另一方面也被存储在数据中心本地,因此首先根据种子表的内容填充数据表,即能够保证可信性,又能够提升填充效率。
步骤S230,根据主索引字段的内容和Null字段的字段名,在可信数据源中进行检索,如果检索到对应的内容,则根据检索到的内容填充Null字段。进一步的,如果检索到的内容只有一项,那么将该项内容填充到Null字段,如果检索到的内容有多项(例如N项),那么从中选择一项填充到Null字段。具体的包括以下步骤:
步骤S231,当Null字段的类型为字符串型时,根据同义词配置文件将检索到的N项内容均调整为标准格式的字符串。信息处理服务器中还存储有同义词配置文件,配置文件中包括标准格式的字符串以及与该字符串同义的字符串。例如,标准格式的字符串“中共党员”的同义字符串可以包括“党员”、“共产党员”等。在该步骤中,当检索到的N项内容的一项为“党员”时,将被调整为“中共党员”。
步骤S232,如果检索到的N项内容相同(即具有1个相同的值),那么将该内容填充到Null字段。
步骤S234,如果检索到的N项内容具有M个不同的值,且Null字段的类型为非日期型,那么信息处理服务器通过通信服务器向N项内容所在的可信数据源请求相应内容的更新时间,并将最近更新的内容填充到Null字段;其中,M≤N。
步骤S236,如果检索到的N项内容具有M个不同的值,且Null字段的类型为日期型,那么提取M个日期的年YYYY=(y1,y2,...,yM)、月MM=(m1,m2,...,mM)、日DD=(d1,d2,...,dM)。如果y1=y2=...=yM=y、m1=m2=...=mM=m,且DD中的任意di∈{nil,1,d}(即某些检索到日期填写到月,某些数据库系统在只填写到月时自动补充“1日”),那么将y代表的年、m代表的月和d代表的日作为日期填充到Null字段;其中d的取值范围为1到31,且当d=1时,集合{nil,1,d}退化为{nil,1};其中,M≤N。如果y1=y2=...=yM=y、m1=m2=...=mM=m,且DD中的任意di=nil,那么将y代表的年、m代表的月作为日期填充到Null字段。进一步的,如果不满足y1=y2=...=yM=y、m1=m2=...=mM=m、di∈{nil,1,d}或di=nil之任意一项,那么借鉴步骤S234的做法,信息处理服务器通过通信服务器向N项内容所在的可信数据源请求相应内容的更新时间,并将最近更新的内容填充到Null字段。
如果没有检索到对应的内容,判断Null字段的类型,如果为第一类型字段,则执行步骤S250,如果为第二类型字段,则执行步骤S260。
步骤S250,向用户提示Null字段的内容无法自动填充。
步骤S260,根据主索引字段的内容和Null字段的字段名,在非可信数据源中进行检索,如果检索到对应的内容,则根据检索到的内容填充Null字段,如果没有检索到对应的内容,向用户提示Null字段的内容无法自动填充。根据检索到的内容填充Null字段,具体的包括以下步骤:
步骤S262,如果检索到的P项内容相同(即具有1个相同的值),那么将该内容填充到Null字段。
步骤S264,如果检索到的P项内容具有Q个不同的值V=(v1,v2,...,vQ),那么统计V中各值出现的次数C=(c1,c2,...,cQ),并将vi填充到Null字段,其中,i=Random(max(c1,c2,...,cQ)),Q≤P,max()为最大值序号函数(如果存在并列的多个最大值,则该函数返回多个最大值对应的多个序号),Random()为随机函数。
根据本发明的另一个实施例,前述步骤S264可以被以下步骤替代:
步骤S265,如果检索到的P项内容具有Q个不同的值V=(v1,v2,...,vQ),而且Null字段为非字符串类型,或者Null字段虽然为字符串类型但是V中的任意字符串vi的长度小于或等于特定阈值(例如16个字节,8个汉字以内),那么统计V中各值出现的次数C=(c1,c2,...,cQ),并将vi填充到Null字段,其中,ci=Random(max(c1,c2,...,cQ)),Q≤P,max()为最大值函数,Random()为随机函数。
步骤S266,如果检索到的P项内容为(v1,v2,...,vp),Null字段为字符串类型,且(v1,v2,...,vp)中的任意字符串vi的长度均大于特定阈值(例如16个字节),那么进一步执行以下步骤:
步骤S2661,对(v1,v2,...,vp)中所有的字符串值进行分词,形成P个分词向量Wi=(wi1,wi2,......)及其系数Ki=(ki1,ki2,......),其中i从1到P,kij为wij在vi中出现的次数。本领域技术人员可以采用现有技术中的任何分词方法进行分词,而且本领域技术人员知晓,每个分词向量中的分词数量可以相同,也可以不同。
步骤S2662,对于任意两个分词向量W
i和W
j,计算其相似度
其中,n为W
i和W
j中相同的分词数量,k
ix和k
jx分别为分词向量W
i和W
j中第x个相同的分词系数;
步骤S2663,如果Rij大于预设的相似度阈值(例如0.8),那么认为vi和vj相同,形成新的P项内容;
步骤S2664,扫描新的P项内容,从而形成P项内容的Q个不同的值V=(v1,v2,...,vQ),统计V中各值出现的次数C=(c1,c2,...,cQ),并将vi填充到Null字段,其中,ci=Random(max(c1,c2,...,cQ)),Q≤P,max()为最大值函数,Random()为随机函数。
此外,根据公开的本发明的说明书,本发明的其他实现对于本领域的技术人员是明显的。实施方式和/或实施方式的各个方面可以单独或者以任何组合用于本发明的系统和方法中。说明书和其中的示例应该是仅仅看作示例性,本发明的实际范围和精神由所附权利要求书表示。