CN113051259A - 一种用于门店经营的多数据源结构差异处理方法及系统 - Google Patents
一种用于门店经营的多数据源结构差异处理方法及系统 Download PDFInfo
- Publication number
- CN113051259A CN113051259A CN202110377966.7A CN202110377966A CN113051259A CN 113051259 A CN113051259 A CN 113051259A CN 202110377966 A CN202110377966 A CN 202110377966A CN 113051259 A CN113051259 A CN 113051259A
- Authority
- CN
- China
- Prior art keywords
- table structure
- target database
- data
- structure information
- database
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库处理技术领域,提供了一种用于门店经营的多数据源结构差异处理方法及系统,方法包括:连接源数据库,获取选定表的表结构信息;将选定表的表结构信息生成表结构数据包,发送到消息通讯服务应用的指定管道中;通过数据比对应用模块拉取消息通讯服务应用的管道中的表结构数据包,对表结构数据包进行解析,还原成选定表的表结构;获取目标数据库的表结构信息,将选定表的表结构与目标数据库中的表结构信息通过自然语言处理的方式,获取余弦相似度,并根据余弦相似度比对选定表的表结构与目标数据库中表结构信息的相似度,在比对完成后,在目标库中增加缺失字段,对字段类型进行转换。能够在数据同步之前自动对表结构差异进行修复。
Description
技术领域
本发明涉及数据库处理的技术领域,尤其涉及门店经营中多数据源结构差异处理技术领域。具体为一种用于门店经营的多数据源结构差异处理方法及系统。
背景技术
在门店经营系统中,尤其是连锁的门店,一般的都会包含多个不同的数据源。例如,不同的门店会有自己单独的门店系统,对应于不同的源数据库。再比如,在门店经营中会涉及到销售系统,供应商系统等,同样也会对应于不同的源数据库。
在最终对各个门店、各个销售或供应商系统中的数据进行统计处理时,需要将各个数据库中的数据进行汇总,存储于同一个目标数据库系统中,以方便后续的数据整理汇总统计。
然而,由于各系统的不同,或者因为版本和定制化的问题将会导致各系统的表结构将会存在一定的差异性,在将数据汇总到同一个目标数据库系统中时,如果不对数据加以处理,可能会导致数据的丢失、错误,甚至会导致加工进程的失败。
发明内容
针对上述问题,本发明的目的在于提供一种用于门店经营的多数据源结构差异处理方法及系统,能够自动对表结构差异进行修复,在源数据库和目标数据库的连接上增加一个表结构同步模块,对源表和目标表进行标准化处理,将处理后的标准结构进行解析和比对,寻找差异,并将差异做最大兼容处理,然后还原到目标库。
本发明的上述发明目的是通过以下技术方案得以实现的:
一种用于门店经营的多数据源结构差异处理方法,包括以下步骤:
S1:建立数据拉取应用模块,通过所述数据拉取应用模块连接源数据库,并获取所述源数据库中选定表的包括表名、字段名、字段类型在内的表结构信息;
S2:将所述选定表的表结构信息生成表结构数据包,发送到消息通讯服务应用的指定管道中;
S3:建立数据比对应用模块,通过所述数据比对应用模块拉取所述消息通讯服务应用的管道中的所述表结构数据包,对所述表结构数据包进行解析,还原成所述选定表的表结构;
S4:获取目标数据库的表结构信息,将所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取余弦相似度,并根据所述余弦相似度比对所述选定表的表结构与所述目标数据库中表结构信息的相似度,并在比对完成后,在所述目标数据库中增加缺失字段,以及对字段类型进行转换。
其中,在步骤S4中,将所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取余弦相似度,并根据所述余弦相似度比对所述选定表的表结构与所述目标数据库中表结构信息的相似度,具体为:
S41:对所述源数据库中的所述选定表的表结构根据不同的所述目标数据库中的表结构信息进行表结构的初步转换;
S42:对所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取两个表结构之间的余弦相似度;
S43:对用于表示表结构相似度的所述余弦相似度设定阀值;当所述余弦相似度位于所述阀值以下时,则表结构不可用,会导致数据无法插入,对表结构进行补救;当所述余弦相似度位于所述阀值纸上时,数据可正常插入,调整所述目标数据库中的表结构信息,进一步优化所述余弦相似度;当所述余弦相似度达到百分之百时,数据插入正常,表结构兼容完美,不会造成资源浪费;
S44:获取优化后表结构,对所述目标数据库中的表结构进行创建或者修改。
进一步地,在步骤S42中,对所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取两个表结构之间的余弦相似度,具体为:
S421:针对于所述选定表的表结构,以及所述目标数据库中的表结构信息的建表语句进行解析,获取到包括关键字、特殊字符、表名、字段名、字段类型在内的有效信息;
S422:构建词袋模型,建立词袋库数字映射,将字段名-字段类型向量化,每一个字段名-字段类型的组合都变成一个唯一的数字,结合其出现的频次,组成一个唯一向量,所有的组合形成的向量就代表着一个表结构的向量;
S423:构建TF-IDF模型,采用所述TF-IDF模型评估每个词出现的频率;
S424:使用所述词袋模型,计算所述选定表的表结构与所述目标数据库中的表结构信息所形成的两个表结构向量之间的余弦相似度,余弦值越接近1,夹角趋于0,表明所述选定表的表结构与所述目标数据库的表结构信息越相近。
进一步的,在步骤S424中,所述余弦相似度,具体的计算方式为:
假设所述选定表的表结构的向量为A[A1,A2,...,An],所述目标数据库中的表结构信息的向量为B[B1,B2,...,Bn],A与B之间的夹角θ的余弦等于:
进一步地,在步骤S2中,对所述选定表的表结构信息做标准化处理,将所述字段类型转换为标准字段类型;在步骤S4中,对所述目标数据库的表结构信息做标准化处理,将所述字段类型转换为标准字段类型。
进一步地,在步骤S2中,将所述选定表的所述表结构信息生成数据包,具体为:
将所述字段名和所述字段类型以键值对的形式进行拼接,生成所述选定表的字段对象;
将所述字段对象与所述选定表的类型和表名进行拼接,生成所述选定表的所述表结构数据包。
进一步地,在步骤S4中,获取目标数据库的表结构信息,具体为:
建立用于存储所述目标数据库的表结构信息的数据缓存应用,其中,所述数据缓存应用采用包括redis缓存库在内的缓存数据库;
从所述数据缓存应用中获取所述目标数据库的表结构信息;
若存在,从所述数据缓存应用中拉取所述目标数据库的表结构信息;
若不存在,连接所述目标数据库,获取所述目标数据库的表结构信息,将表结构信息做标准化处理后,存入所述数据缓存应用中。
进一步地,在步骤S4中,在比对完成后,在所述目标数据库中增加缺失字段,以及对字段类型进行转换,具体为:
当与所述源数据库中的所述选定表进行比对后,所述源数据库中存在字段缺失时,在所述目标数据库中增加缺失字段;
当字段类型不一致时,对字段类型进行统一;
当字段类型的精度不同时,按照最大兼容原则进行转换。
进一步地,在步骤S4中,还包括:
根据比对完成后生成的转换规则,生成增加缺失字段或修改字段类型的dml语句;
使用jdbc在所述目标数据库中执行所述dml语句;
将调整后的所述目标数据库的表结构信息,存入所述数据缓存应用,供下一轮比对。
进一步地,所述源数据库包括一个或多个数据库,且所述源数据库包括Oracle、Mysql、Postgresql、Sql Server在内的任意一种数据库;所述目标数据库包括一个数据库,且所述目标数据库包括Greenplum、Postgresql在内的任意一种数据库。
一种执行上述的用于门店经营的多数据源结构差异处理方法的系统,包括:
数据拉取应用模块,用于连接源数据库,并获取所述源数据库中选定表的包括表名、字段名、字段类型在内的表结构信息;
消息通讯服务应用模块,用于接收所述选定表的表结构信息生成表结构数据包,发送到所述消息通讯服务应用的指定管道中;
数据比对应用模块,用于拉取所述消息通讯服务应用的管道中的所述表结构数据包,对所述表结构数据包进行解析,还原成所述选定表的表结构;获取目标数据库的表结构信息,将所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取余弦相似度,并根据所述余弦相似度比对所述选定表的表结构与所述目标数据库中表结构信息的相似度,并在比对完成后,在所述目标数据库中增加缺失字段,以及对字段类型进行转换;
数据缓存应用模块,用于存储所述目标数据库的表结构信息。
一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述的方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如上述的方法被执行。
与现有技术相比,本发明包括以下至少一种有益效果是:
(1)通过提供了一种用于门店经营的多数据源结构差异处理方法,包括以下步骤:S1:建立数据拉取应用模块,通过所述数据拉取应用模块连接源数据库,并获取所述源数据库中选定表的包括表名、字段名、字段类型在内的表结构信息;S2:将所述选定表的表结构信息生成表结构数据包,发送到消息通讯服务应用的指定管道中;S3:建立数据比对应用模块,通过所述数据比对应用模块拉取所述消息通讯服务应用的管道中的所述表结构数据包,对所述表结构数据包进行解析,还原成所述选定表的表结构;S4:获取目标数据库的表结构信息,将所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取余弦相似度,并根据所述余弦相似度比对所述选定表的表结构与所述目标数据库中表结构信息的相似度,并在比对完成后,在所述目标数据库中增加缺失字段,以及对字段类型进行转换。上述技术方案,在对门店经营系统的不同数据源同步到目标数据库之前,对数据库表结构的差异性进行预先处理,避免了在数据同步的过程中导致数据丢失、错误,甚至会导致加工进程失败的情况发生。
(2)通过建立用于存储所述目标数据库的表结构信息的数据缓存应用,其中,所述数据缓存应用采用包括redis缓存库在内的缓存数据库;从所述数据缓存应用中获取所述目标数据库的表结构信息;若存在,从所述数据缓存应用中拉取所述目标数据库的表结构信息;若不存在,连接所述目标数据库,获取所述目标数据库的表结构信息,将表结构信息做标准化处理后,存入所述数据缓存应用中。上述技术方案,在进行数据库比对时,首先从数据缓存应用中获取目标数据库的表结构信息,只有当数据缓存应用中不存在选定表时才会到目标数据库中拉取对应的表结构信息。对数据库影响较小,因为对数据库的调用会消耗一定的数据库资源,且会导致锁表,特别在繁忙时段,可能会影响到数据库的正常使用,本发明的比对工作都在缓存应用中进行,比曼频繁调用数据库资源。进一步地,本发明的比对效率更高,本发明将数据表的信息存储在缓存应用中,缓存应用使用内存作为存储介质,比频繁访问数据库获取信息的效率高很多。
(3)本发明在对字段类型进行转换时,采用最大兼容原则,使得目标数据库具备很强的兼容性。避免不同来源的数据表信息互相覆盖,可以保障多来源的数据都能正常同步。
(4)本发明将源数据库和目标数据库的比对工作前置进行,而不是等到问题出现再进行补救。并在比对时采用的是表结构的抽象对比,而不是具体数据的对比。
(5)采用自然语言处理的方式,比对表结构之间的差异,智能识别差异对数据同步的影响程度,并执行相对应的逻辑,保证程序的正常运行以及数据正常的插入。
(6)数据同步中表结构差异在所难免,识别细微的差异并准确的修复差异字段,补全缺失字段,同时适配异构数据库的语法,保证补救机制在各个数据库中都能正常执行。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
图1为本发明一种用于门店经营的多数据源结构差异处理方法的流程图;
图2为本发明一种用于门店经营的多数据源结构差异处理方法的结构图;
图3为本发明字段类型匹配精度相似性的示意图;
图4为本发明表结构转换的示意图;
图5为选用余弦相似度做相似度对比的示意图;
图6为二维空间中两个向量夹角的示意图;
图7为二维空间中两个向量夹角的示意图;
图8为二维空间中两个向量夹角的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
第一实施例
如图1和2所示,本实施例提供了一种用于门店经营的多数据源结构差异处理方法,包括以下技术方案:
在进行差异处理之前,需要进行以下准备工作:
部署至少三台服务器,一台部署源数据库,一台部署多数据源结构处理的应用,一台部署目标数据库,三台服务器之间通过网络互相访问。
其中,多数据源结构处理的应用中包含了数据拉取、消息通讯服务应用、数据比对应用、数据缓存应用。
本实施例的方法,具体包括以下步骤:
S1:建立数据拉取应用模块,通过所述数据拉取应用模块连接源数据库,并获取所述源数据库中选定表的包括表名、字段名、字段类型在内的表结构信息。
具体地,在本实施例中,在对数据进行比对之前,首先需要连接源数据库,将源数据库中需要进行同步的数据表的表结构信息拉取下来,以jdbc的方式获取选定表的表名、字段名、字段类型(包括字段类型的精度信息)。以及需要同步到的目标表在目标数据库中的位置信息。
S2:将所述选定表的表结构信息生成表结构数据包,发送到消息通讯服务应用的指定管道中。
在步骤S2中,在获取到选定表的表结构信息之后,首先需要对表信息做标准化的处理,将字段类型转换成统一的标准类型。举例如表1所示:
对表结构做标准化的处理后,为了传输的方便,需要对选定表的表结构信息进行打包,生成表结构数据表,具体如下:
将所述字段名和所述字段类型以键值对的形式进行拼接,生成所述选定表的字段对象;将所述字段对象与所述选定表的类型和表名进行拼接,生成所述选定表的所述表结构数据包。其中,进行拼接的方式不做任何限定,只要能够方便在消息通讯服务应用的管道中进行传输即可。拼接方式举例如下:
表类型!@!表名!@!序列化后的字段和字段类型的键值对。
S3:建立数据比对应用模块,通过所述数据比对应用模块拉取所述消息通讯服务应用的管道中的所述表结构数据包,对所述表结构数据包进行解析,还原成所述选定表的表结构。
具体地,当进行数据比对时,通过比对应用模块,拉取表结构数据包,将数据包进行还原后,开始比对工作。
S4:获取目标数据库的表结构信息,将所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取余弦相似度,并根据所述余弦相似度比对所述选定表的表结构与所述目标数据库中表结构信息的相似度,并在比对完成后,在所述目标数据库中增加缺失字段,以及对字段类型进行转换。
在开始比对工作之前,需要获取到目标数据库的表结构信息后才能进行比对,具体为:
建立用于存储所述目标数据库的表结构信息的数据缓存应用,其中,所述数据缓存应用采用包括redis缓存库在内的缓存数据库;从所述数据缓存应用中获取所述目标数据库的表结构信息;若存在,从所述数据缓存应用中拉取所述目标数据库的表结构信息;若不存在,通过jdbc连接所述目标数据库,获取所述目标数据库的表结构信息,将表结构信息做标准化处理后,存入所述数据缓存应用中。
在进行比对工作时,将从数据包解析出的表结构信息与从redis缓存库中获取到的表信息进行比对,比对包括两个方面:
(1)是否缺字段(2)字段类型是否一致
根据最大兼容原则,如果源表中有目标表中不存在的字段,则在目标表中增加字段。
如有字段类型的差异,则需要转换,转换遵循以下原则:
(1)如果发现大类不同,比如源表是时间类型,目标表是数值类型,需要对字段类型进行统一。
(2)大类相同,仅是长度精度有差异.比如源表decimal(24,4),目标表decimal(20,2),则按照最大兼容性原则,需要转换为decimal(24,4)。
进一步地,本发明主要采用智能转换的方式对结构差异进行处理。智能转换是指通过自然语言处理的方式,计算异构数据库中结构的相似度,选择合适的类型进行转换。
文本相似度,顾名思义是指两个文本(文章)之间的相似度,在搜索引擎、推荐系统、论文鉴定、机器翻译、自动应答、命名实体识别、拼写纠错等领域有广泛的应用。
在计算相似度时,考虑字段名相似度、字段类型相似度,并计算相似度总和来表示整个表的相似度。字段名一致则相似度高,考虑到一个字段类型可以有不同的转换方式,如int类型可以转换成int类型,numeric类型以及varchar类型,故不同的转换类型也代表了不同的相似度,字段类型匹配越精确则相似度越高(如图3)。
每一次的表结构转换最完美的结果就是百分百的相似度,但在真实的、复杂的数据转换中,很难达到完美匹配,大部分情况下,即使表结构存在一些差异,依然能够进行数据的转换。但这可能会导致数值型被转换成字符型、字段长度被扩大、字段精度缺失等问题(如图4)。
为每一张表计算一个相似度,对于表结构的识别和转化会带来很多优势。
生产中一张表可能有上百个字段,表结构发生变化时,通过肉眼很难发现细微的改变。通过比较相似度,可以清晰的判断一个表是否发生了改变,并且根据相似度变高和变低可以让程序识别出表结构差异的程度,自动判断是否需要进行差异补救。
相似度能有效的表示整个表的转换情况,判断表结构转换的优劣情况。
对于标准表,有效识别出异构表结构和标准表结构的差异情况。
如图5,具体的流程如下:
S41:对所述源数据库中的所述选定表的表结构根据不同的所述目标数据库中的表结构信息进行表结构的初步转换;
S42:对所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取两个表结构之间的余弦相似度。
其中,在步骤S42中,对所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取两个表结构之间的余弦相似度,具体为:
S421:针对于所述选定表的表结构,以及所述目标数据库中的表结构信息的建表语句进行解析,获取到包括关键字、特殊字符、表名、字段名、字段类型在内的有效信息。
具体的,建表语句多是SQL语法,语句中包含关键字、特殊字符、表名、字段名、字段类型等数据,对建表语句构建合理的分词方式可以有效的兼容多数据源的sql语法。
从一个完整的建表sql中可以获取到的有效信息包括表名、字段名、字段类型,程序中构建了一套简单的逻辑用于解析这些有效信息。考虑多数据源的语法不同,表名信息在获取时采用的策略是从第一个‘(’前的字符串中按照空格做切分后,剔除sql语法中的关键字后,得到的字符串就是表名信息。字段名及字段类型所处的位置是在第一个’(’和最后一个’)’中,按照逗号分隔表的字段信息。字段名和字段类型之间按照空格做分隔,空格前的是字段名空格后的是字段类型。
通过上述的表结构解析方式,不仅可以分隔表名、字段名、字段类型,还能灵活的进行组合,方便后续构建词袋。
S422:构建词袋模型,建立词袋库数字映射,将字段名-字段类型向量化,每一个字段名-字段类型的组合都变成一个唯一的数字,结合其出现的频次,组成一个唯一向量,所有的组合形成的向量就代表着一个表结构的向量。
具体的,词袋模型可以将不定长的文本型数据转化为定长的数值型数据,常用于文本建模和分类。简单,易实现,缺点是不能考虑文本的结构和顺序。词袋模型会记录所有的出现的单词及其出现的次数,用向量化的方式进行表达。
词袋中的单词与词向量中的值一一有序对应。若单词在当前文本中出现了0词,则词向量中的值为0。若单词在当前文本中出现了1次,则词向量中的值为1,以此类推。基于词袋的词向量表达法像是为每一个文本建立了一个统计直方图,直方图的x轴是单词,y轴是单词在该文本的词频。
建立词袋库数字映射,将字段名-字段类型向量化,每一个字段名-字段类型的组合都会变成一个唯一的数字,结合其出现的频次,组成一个唯一的向量。所有的组合形成的向量就代表着一个表结构的向量。
载入数据以及对应的包,corpora是构造词典的,similarities求相似性可以用得到。将词语进行分词,并进行存储。
如具体的实现代码如下:
程序中使用的是Gensim中封装的一个方法Doc2Bow,Bag-of-words model(BoWmodel)最早出现在自然语言处理(Natural Language Processing)和信息检索(Information Retrieval)领域。该模型忽略掉文本的语法和语序等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的。BoW使用一组无序的单词(words)来表达一段文字或一个文档。
#生成词向量
doc_vectors=[dictionary.doc2bow(text)for text in corpus]
结果如:[[(0,1),(1,1),(2,1),(3,1),(4,1),(5,1),(6,1)]],其中(0,1)这个元素代表字段组合中id为0的组合出现了1次。
S423:构建TF-IDF模型,采用所述TF-IDF模型评估每个词出现的频率。
具体的,TF-IDF算法是一种用于信息检索与数据挖掘的常用加权技术。TF的意思是词频(Term-frequency),IDF的意思是逆向文件频率(inverse Document frequency).TF-IDF是传统的统计算法,用于评估一个词在一个文档集中对于某一个文档的重要程度。它与这个词在当前文档中的词频成正比,与文档集中的其他词频成反比。
词频(TF)=某个词在文章中的出现次数
#生成TF-IDF模型
tfidf=models.TfidfModel(doc_vectors)#TF-IDF模型对语料库建模
tfidf_vectors=tfidf[doc_test_vec]#每个词的TF-IDF值
S424:使用所述词袋模型,计算所述选定表的表结构与所述目标数据库中的表结构信息所形成的两个表结构向量之间的余弦相似度,余弦值越接近1,夹角趋于0,表明所述选定表的表结构与所述目标数据库的表结构信息越相近。
具体的,构建字段名的词袋,可以帮助程序分析重复字段、缺失字段等信息、基于字段名-字段类型的词袋,可以用来计算其余弦相似度。在NLP中,如果得到了两个句子的向量表示,那么,一般会选择用余弦相似度作为它们的相似度,而向量的余弦相似度即为两个向量的夹角的余弦值。我们可以把它们想象成空间中的两条线段,都是从原点([0,0,...])出发,指向不同的方向。两条线段之间形成一个夹角,如果夹角为0度,意味着方向相同、线段重合;如果夹角为90度,意味着形成直角,方向完全不相似;如果夹角为180度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。
余弦相似度就是通过一个向量空间中两个向量夹角的余弦值作为衡量两个个体之间差异的大小。把1设为相同,0设为不同,那么相似度的值就是在0~1之间。余弦相似度的特点是余弦值接近1,夹角趋于0,表明两个向量越相似。
余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向量根据坐标值,绘制到向量空间中,如最常见的二维空间。
余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为-1到1之间。
注意这上下界对任何维度的向量空间中都适用,而且余弦相似性最常用于高维正空间。例如在信息检索中,每个词项被赋予不同的维度,而一个维度由一个向量表示,其各个维度上的值对应于该词项在文档中出现的频率。余弦相似度因此可以给出两篇文档在其主题方面的相似度。
以二维空间为例,如图6和7的a和b是两个向量,我们要计算它们的夹角θ。余弦定理告诉我们,可以用下面的公式求得:
如图8所示,假定a向量是[x1,y1],b向量是[x2,y2],那么可以将余弦定理改写成下面的形式:
数学家已经证明,余弦的这种计算方法对n维向量也成立。假定A和B是两个n维向量,假设所述选定表的表结构的向量为A[A1,A2,...,An],所述目标数据库中的表结构信息的向量为B[B1,B2,...,Bn],A与B之间的夹角θ的余弦等于:
使用这个公式,我们就可以得到两个向量之间的夹角的余弦。
如:
程序中使用Gensim包中封装的方法similarities.Similarity()来计算相似度值。它是将两个表结构在词袋模型中的向量组合一一比较其差异,相同的设为1不同的设为0,然后通过公式来计算出相似度。
Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口。
S43:对用于表示表结构相似度的所述余弦相似度设定阀值;当所述余弦相似度位于所述阀值以下时,则表结构不可用,会导致数据无法插入,对表结构进行补救;当所述余弦相似度位于所述阀值纸上时,数据可正常插入,调整所述目标数据库中的表结构信息,进一步优化所述余弦相似度;当所述余弦相似度达到百分之百时,数据插入正常,表结构兼容完美,不会造成资源浪费;
S44:获取优化后表结构,对所述目标数据库中的表结构进行创建或者修改。
具体的,对表结构差异进行补救。源库表结构发生改变时,通过获取redis中保存的表结构和源库的最新表结构,计算相似度可以清晰的识别并判断相关影响是否会导致数据同步失败并及时进行补救。补救的过程也是表信息重新比对的过程,在比对中识别差异字段,对其进行更改。程序针对异构数据库,表结构更新的方式也不相同,如oracle数据库中,由于非空列不能直接修改字段类型,程序会采用临时列保存数据,原列修改字段类型的方式,在保证表结构一致的也能保证数据的准确性,同时还可以保留字段的相关索引配置。
根据比对完成后生成的转换规则,生成增加缺失字段或修改字段类型的dml语句;使用jdbc在所述目标数据库中执行所述dml语句;将调整后的所述目标数据库的表结构信息,存入所述数据缓存应用,供下一轮比对。
进一步地,所述源数据库包括一个或多个数据库,且所述源数据库包括Oracle、Mysql、Postgresql、Sql Server在内的任意一种数据库;所述目标数据库包括一个数据库,且所述目标数据库包括Greenplum、Postgresql在内的任意一种数据库。
需要进行说明的是,本发明的方法尤其适用于门店销售的应用场景中。当然对于其他的非门店销售场景中的源数据库与目标数据库的同步过程,也同样适用于本发明的结构差异处理方法。
第二实施例
本实施例提供一种执行第一实施例中的用于门店经营的多数据源结构差异处理方法的系统,包括:
数据拉取应用模块1,用于连接源数据库,并获取所述源数据库中选定表的包括表名、字段名、字段类型在内的表结构信息;
消息通讯服务应用模块2,用于接收所述选定表的表结构信息生成表结构数据包,发送到所述消息通讯服务应用的指定管道中;
数据比对应用模块3,用于拉取所述消息通讯服务应用的管道中的所述表结构数据包,对所述表结构数据包进行解析,还原成所述选定表的表结构;获取目标数据库的表结构信息,将所述选定表的表结构与所述目标数据库中的表结构信息进行包括是否缺失字段、字段类型是否一致在内的比对,并在比对完成后,在所述目标数据库中增加缺失字段,以及对字段类型进行转换;
数据缓存应用模块4,用于存储所述目标数据库的表结构信息。
一种计算机设备,包括存储器和一个或多个处理器,所述存储器中存储有计算机代码,所述计算机代码被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如第一实施例中任一项所述的方法。
一种计算机可读存储介质,计算机可读存储介质存储有计算机代码,当计算机代码被执行时,如上述方法被执行。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个功能或步骤的电路。如本说明书实施例所示实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Net work Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子系统执行时,使得所述电子系统执行实施例一所述的方法。在此不再赘述。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
Claims (10)
1.一种用于门店经营的多数据源结构差异处理方法,其特征在于,包括以下步骤:
S1:建立数据拉取应用模块,通过所述数据拉取应用模块连接源数据库,并获取所述源数据库中选定表的包括表名、字段名、字段类型在内的表结构信息;
S2:将所述选定表的表结构信息生成表结构数据包,发送到消息通讯服务应用的指定管道中;
S3:建立数据比对应用模块,通过所述数据比对应用模块拉取所述消息通讯服务应用的管道中的所述表结构数据包,对所述表结构数据包进行解析,还原成所述选定表的表结构;
S4:获取目标数据库的表结构信息,将所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取余弦相似度,并根据所述余弦相似度比对所述选定表的表结构与所述目标数据库中表结构信息的相似度,并在比对完成后,在所述目标数据库中增加缺失字段,以及对字段类型进行转换。
其中,在步骤S4中,将所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取余弦相似度,并根据所述余弦相似度比对所述选定表的表结构与所述目标数据库中表结构信息的相似度,具体为:
S41:对所述源数据库中的所述选定表的表结构根据不同的所述目标数据库中的表结构信息进行表结构的初步转换;
S42:对所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取两个表结构之间的余弦相似度;
S43:对用于表示表结构相似度的所述余弦相似度设定阀值;当所述余弦相似度位于所述阀值以下时,则表结构不可用,会导致数据无法插入,对表结构进行补救;当所述余弦相似度位于所述阀值纸上时,数据可正常插入,调整所述目标数据库中的表结构信息,进一步优化所述余弦相似度;当所述余弦相似度达到百分之百时,数据插入正常,表结构兼容完美,不会造成资源浪费;
S44:获取优化后表结构,对所述目标数据库中的表结构进行创建或者修改。
2.根据权利要求1所述的用于门店经营的多数据源结构差异处理方法,其特征在于,在步骤S42中,对所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取两个表结构之间的余弦相似度,具体为:
S421:针对于所述选定表的表结构,以及所述目标数据库中的表结构信息的建表语句进行解析,获取到包括关键字、特殊字符、表名、字段名、字段类型在内的有效信息;
S422:构建词袋模型,建立词袋库数字映射,将字段名-字段类型向量化,每一个字段名-字段类型的组合都变成一个唯一的数字,结合其出现的频次,组成一个唯一向量,所有的组合形成的向量就代表着一个表结构的向量;
S423:构建TF-IDF模型,采用所述TF-IDF模型评估每个词出现的频率;
S424:使用所述词袋模型,计算所述选定表的表结构与所述目标数据库中的表结构信息所形成的两个表结构向量之间的余弦相似度,余弦值越接近1,夹角趋于0,表明所述选定表的表结构与所述目标数据库的表结构信息越相近。
4.根据权利要求1所述的用于门店经营的多数据源结构差异处理方法,其特征在于,在步骤S2中,将所述选定表的所述表结构信息生成数据包,具体为:
将所述字段名和所述字段类型以键值对的形式进行拼接,生成所述选定表的字段对象;
将所述字段对象与所述选定表的类型和表名进行拼接,生成所述选定表的所述表结构数据包。
5.根据权利要求1所述的用于门店经营的多数据源结构差异处理方法,其特征在于,在步骤S4中,获取目标数据库的表结构信息,具体为:
建立用于存储所述目标数据库的表结构信息的数据缓存应用,其中,所述数据缓存应用采用包括redis缓存库在内的缓存数据库;
从所述数据缓存应用中获取所述目标数据库的表结构信息;
若存在,从所述数据缓存应用中拉取所述目标数据库的表结构信息;
若不存在,连接所述目标数据库,获取所述目标数据库的表结构信息,将表结构信息做标准化处理后,存入所述数据缓存应用中。
6.根据权利要求1所述的用于门店经营的多数据源结构差异处理方法,其特征在于,在步骤S4中,在比对完成后,在所述目标数据库中增加缺失字段,以及对字段类型进行转换,具体为:
当与所述源数据库中的所述选定表进行比对后,所述源数据库中存在字段缺失时,在所述目标数据库中增加缺失字段;
当字段类型不一致时,对字段类型进行统一;
当字段类型的精度不同时,按照最大兼容原则进行转换。
7.根据权利要求4所述的用于门店经营的多数据源结构差异处理方法,其特征在于,在步骤S4中,还包括:
根据比对完成后生成的转换规则,生成增加缺失字段或修改字段类型的dml语句;
使用jdbc在所述目标数据库中执行所述dml语句;
将调整后的所述目标数据库的表结构信息,存入所述数据缓存应用,供下一轮比对。
8.一种执行如权利要求1-7任意一项所述的用于门店经营的多数据源结构差异处理方法的系统,其特征在于,包括:
数据拉取应用模块,用于连接源数据库,并获取所述源数据库中选定表的包括表名、字段名、字段类型在内的表结构信息;
消息通讯服务应用模块,用于接收所述选定表的表结构信息生成表结构数据包,发送到所述消息通讯服务应用的指定管道中;
数据比对应用模块,用于拉取所述消息通讯服务应用的管道中的所述表结构数据包,对所述表结构数据包进行解析,还原成所述选定表的表结构;获取目标数据库的表结构信息,将所述选定表的表结构与所述目标数据库中的表结构信息通过自然语言处理的方式,获取余弦相似度,并根据所述余弦相似度比对所述选定表的表结构与所述目标数据库中表结构信息的相似度,,并在比对完成后,在所述目标数据库中增加缺失字段,以及对字段类型进行转换;
数据缓存应用模块,用于存储所述目标数据库的表结构信息。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求1-7中任意一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如权利要求1至7中任一项所述的方法被执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011542665 | 2020-12-23 | ||
CN2020115426657 | 2020-12-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113051259A true CN113051259A (zh) | 2021-06-29 |
Family
ID=76519042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110377966.7A Pending CN113051259A (zh) | 2020-12-23 | 2021-04-08 | 一种用于门店经营的多数据源结构差异处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113051259A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116467372A (zh) * | 2023-02-21 | 2023-07-21 | 中国人民解放军海军工程大学 | 一种数据库自动转换方法、装置、电子设备及存储介质 |
CN117271532A (zh) * | 2023-11-22 | 2023-12-22 | 舟谱数据技术南京有限公司 | 数据库表结构的展示方法、装置、设备及可读存储介质 |
-
2021
- 2021-04-08 CN CN202110377966.7A patent/CN113051259A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116467372A (zh) * | 2023-02-21 | 2023-07-21 | 中国人民解放军海军工程大学 | 一种数据库自动转换方法、装置、电子设备及存储介质 |
CN117271532A (zh) * | 2023-11-22 | 2023-12-22 | 舟谱数据技术南京有限公司 | 数据库表结构的展示方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11275723B2 (en) | Reducing processing for comparing large metadata sets | |
US11651014B2 (en) | Source code retrieval | |
CN114861889B (zh) | 深度学习模型的训练方法、目标对象检测方法和装置 | |
CN112527970B (zh) | 数据字典标准化处理方法、装置、设备及存储介质 | |
CN113051259A (zh) | 一种用于门店经营的多数据源结构差异处理方法及系统 | |
CN111859858B (zh) | 从文本中提取关系的方法及装置 | |
CN115062134B (zh) | 知识问答模型训练及知识问答方法、装置和计算机设备 | |
CN115358397A (zh) | 一种基于数据采样的并行图规则挖掘方法及装置 | |
JP2022003544A (ja) | 業界テキスト増分方法、関連装置、およびコンピュータプログラム製品 | |
CN111930819B (zh) | Etl脚本生成方法和装置 | |
CN117591547A (zh) | 数据库的查询方法、装置、终端设备以及存储介质 | |
CN113761923A (zh) | 命名实体识别方法、装置、电子设备及存储介质 | |
WO2019148797A1 (zh) | 自然语言处理方法、装置、计算机设备和存储介质 | |
CN116028626A (zh) | 文本匹配方法、装置、存储介质以及电子设备 | |
CN115470861A (zh) | 数据处理方法、装置和电子设备 | |
CN115208923A (zh) | 设备信息确定方法、装置及设备 | |
CN114443802A (zh) | 一种接口文档处理方法、装置、电子设备和存储介质 | |
CN111708819B (zh) | 用于信息处理的方法、装置、电子设备和存储介质 | |
CN114416847A (zh) | 一种数据转换的方法、装置、服务器及存储介质 | |
CN109815312B (zh) | 一种文档查询的方法、装置、计算设备及计算机存储介质 | |
CN112579774A (zh) | 模型训练方法、模型训练装置及终端设备 | |
CN113127635B (zh) | 数据处理方法、装置及系统,存储介质和电子设备 | |
US20220121818A1 (en) | Dependency graph-based word embeddings model generation and utilization | |
CN117235234B (zh) | 对象信息获取方法、装置、计算机设备和存储介质 | |
CN113157959A (zh) | 基于多模态主题补充的跨模态检索方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |