一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据同步系统、方法及相应设备和存储介质与流程

2022-04-13 14:59:48 来源:中国专利 TAG:


1.本技术涉及电数字数据处理领域,尤其涉及一种数据同步系统。本技术还涉及一种数据同步方法及相应计算机设备和计算机可读存储介质。


背景技术:

2.多数据源跨库同步是不同数据库之间数据同步的一种实现方式。传统的数据库数据同步基本都是在mysql、oracle、sqlserver之间做同步。对于大数据数据库的数据同步,比如传统数据库数据同步到大数据数据库clickhouse、kudu、greenplum等,同步的方式不多。
3.随着公司业务数据的增多,使用大数据数据库替换部分传统数据库是一种趋势。greenplum是一款经典的大数据数据库,市场的使用率越来越高。使用greenplun数据库就涉及到了原始数据同步的问题。目前数据同步的工具有很多,比如informatica、kettle等。这些数据同步工具要么收费,要么效率低下。
4.传统的数据同步工具kettle是一款开源的使用java编写的etl工具,可以运行在windows、linux、unix上。实际测试中,kettle数据抽取、转换数据的效率是比较低下的,实测是每秒一百条数据左右,对于比较大的事实表,数据量达到g或者t级别的话,这种效率就显得非常低下了,会耗费大量的时间进行数据同步,而且长时间同步的过程中,对于发生的任何问题都是不可预知的。
5.开源免费的数据同步工具一般效率都不理想,同时也有很多高效的数据同步工具,比如informatica、datastage等,这些工具高效而且容易上手,但是这些工具都是收费的。公司采用这样的同步工具将增加不低的成本,如果非必要,一般不采用这种方案。
6.greenplum本身提供了一种高效同步数据的解决方案,通过内置插件gpfdist可以实现数据的高效同步,每秒可以达到10万条数据。但是这种同步方案比较麻烦,需要手动转换表结构、建立外部表、上传数据文件等,相比于数据同步效率,更多的时间浪费在表结构转换和建立外部表上。而且,greenplum数据库必须安装在虚拟机中,例如centos,greenplum只能部署在linux系统,greenplum的数据同步需要执行大量的linux指令,实施人员需要懂得大量的linux相关知识,才能去操作虚拟机,对于运维的要求较高。
7.因而,需要开发一个性能高效的数据同步工具来解决greenplum数据同步的问题。


技术实现要素:

8.本发明提供一种数据同步系统、方法,其能够提高greenplum数据同步的速度、减少同步时间,并能够降低对运维的要求。
9.在本发明的第一方面,提供一种数据同步系统,该系统包括:
10.数据源配置模块,用于配置拟进行同步的数据源的信息;
11.数据文件上传模块,用于响应于确定上传,将选择的数据文件上传到服务器;
12.数据源列表导入模块,用于列表展示所选数据源下的所有表并选择拟同步数据的
表;
13.数据同步模块,用于响应于确定同步,在greenplum数据库自动生成与拟同步数据的表对应的目标表,在greenplum数据库自动生成对应的外部表,自动将数据文件的数据通过外部表导入对应的目标表中。
14.在本发明的第二方面,提供一种数据同步方法,该方法包括:
15.配置拟进行同步的数据源的信息;
16.响应于确定上传,将选择的数据文件上传到服务器;
17.列表展示所选数据源下的所有表并选择拟同步数据的表;
18.响应于确定同步,在greenplum数据库自动生成与拟同步数据的表对应的目标表,在greenplum数据库自动生成对应的外部表,自动将数据文件的数据通过外部表导入对应的目标表中。
19.在本发明的第三方面,提供一种计算机设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中所述处理器执行所述计算机程序时实现根据本发明的第一方面的系统的功能或者实现根据本发明的第二方面的方法的步骤。
20.根据本发明的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据本发明的第一方面的系统的功能或者实现根据本发明的第二方面的方法的步骤。
21.按照本发明,通过配置拟进行同步的数据源、将选择的数据文件上传到服务器,然后在greenplum数据库自动生成与拟同步数据的表对应的目标表、外部表并自动将数据文件的数据通过外部表导入对应的目标表中,解决了greenplum繁复的手工动作浪费时间的问题,提高了同步速度,并且大大减少实施运维的人员的学习成本,降低对运维的要求。
22.结合附图阅读本发明实施方式的详细描述后,本发明的其它特点和优点将变得更加清楚。
附图说明
23.图1为根据本发明系统的一实施例的框图;
24.图2为根据本发明方法的一实施例的流程图。
25.为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本发明所必要的细节,而省略其他细节。
具体实施方式
26.下面参照附图对本发明的实施方式和实施例进行详细说明。
27.通过下面给出的详细描述,本发明的适用范围将显而易见。然而,应当理解,在详细描述和具体例子表明本发明优选实施例的同时,它们仅为说明目的给出。
28.greenplum传统方法是通过gpfdist同步数据,其流程如下:
29.1)表结构转化:需要将数据源的表结构转化成greenplum的表结构,如果表结构字段比较多,手动去修改ddl语句会很麻烦,耗费大量时间,而且对于sql的掌握程度有一定要求;
30.2)建立外部表:建立外部表相当于执行一个sql建表语句,但是外部表的建表语句
比较麻烦,涉及到数据类型的转换、数据分布、分区的设置,以及外部数据文件位置的配置。如果没有深入了解过greenplum,做这些工作是非常吃力的。这会大大增加实施或者运维人员的学习成本。
31.3)上传数据文件(csv、txt、json文件)到服务器:需要熟悉linux操作指令,对运维水平有一定要求;
32.4)数据同步:数据表和外部表建好之后,再通过sql语句将数据导入到数据表中。
33.传统的greenplum同步方法需要大量的手工操作,并且对sql水平、运维能力都有一定要求。
34.图1示出了根据本发明的数据同步系统的一优选实施例的框图,该系统包括:
35.数据源配置模块102,用于配置并保存拟进行同步的数据源的信息,例如数据源名称、用户名、密码、数据库类型、数据库驱动、数据库连接等。该模块还可用于根据配置的数据源信息测试相应的数据源是否可以连通,以确定配置的正确性和/或数据源的可用性。
36.数据文件上传模块104,用于响应于确定上传,将选择的数据文件上传到服务器。数据文件格式可以是csv、txt、excel等。在该模块可通过数据文件名称查询数据文件并上传,也可列表多个数据文件供选择,可同时选择多个数据文件且可同时上传多个数据文件,可以指定文件的上传路径。在该模块还可列表显示已经上传的数据文件如文件名称、文件路径、文件大小、上传时间等并可对已经上传的数据文件进行删除。
37.数据源列表导入模块106,用于列表展示所选数据源下的所有表并选择拟同步数据的表。在该模块可选择对应的数据源,列表展示所有该数据源下的所有表,选择要同步数据的表,可以多选,然后将选择的表的表结构导入。
38.数据同步模块108,用于响应于确定同步,在greenplum数据库自动生成与拟同步数据的表对应的目标表,在greenplum数据库自动生成对应的外部表,自动将数据文件的数据通过外部表导入对应的目标表中。
39.数据源配置模块102、数据文件上传模块104、数据源列表导入模块106和数据同步模块108均以web的方式提供给操作人员,简单明了,操作简单,技术小白也可以实现数据的同步操作。
40.在实施例中,数据同步模块108包括目标表ddl生成子模块、外部表ddl生成子模块和同步数据子模块。导入表结构之后,响应于点击例如“目标表ddl”按钮,目标表ddl生成子模块自动将拟同步数据的表的ddl转化为符合greenplum数据库表结构的目标表ddl,实现表结构的转化。然后,响应于点击例如“外部表ddl”按钮,外部表ddl生成子模块基于目标表ddl生成符合greenplum数据库的外部表语法的外部表ddl。最后,响应于点击例如“数据同步”按钮,同步数据子模块执行目标表ddl和外部表ddl而分别在greenplum生成目标表和外部表,并将数据文件的数据通过外部表导入对应的目标表中。
41.在其它实施例中,也可响应于单一点击例如点击“同步数据”按钮而依次自动将拟同步数据的表的ddl转化为符合greenplum数据库表结构的目标表ddl,基于目标表ddl生成符合greenplum数据库的外部表语法的外部表ddl,及执行目标表ddl和外部表ddl而分别在greenplum生成目标表和外部表,并将数据文件的数据通过外部表导入对应的目标表中。
42.目标表ddl生成子模块的操作流程如下:
43.1)获取拟同步数据的表(原表)的建表语句即原表ddl,原表的数据库类型可以是
oracle、sqlserver等数据库;
44.2)通过java代码转化原表结构,将原表中的关键字、数据类型、数据长度转化成符合greenplum表结构的语法,去掉原表结构中不符合greenplum表结构的语句,得到目标表建表语句ddl;
45.3)将转化得到的目标表建表语句ddl存储到greenplum数据库,供后续使用。
46.具体地,首先根据原表的数据库类型,执行与数据库类型对应的转化操作。
47.然后,替换原表结构中的关键字、数据类型、去除不符合greenplum表结构的语句,拼接greenplum表结构需要的建表语句。
48.greenplum的建表语句示例如下:
[0049][0050]
外部表ddl生成子模块的操作流程如下:
[0051]
1)获取目标表建表语句ddl;
[0052]
2)获取目标表的所有字段,包括数据类型和数据长度,按照greenplum的外部表语法拼接生成外部表建表语句ddl;
[0053]
3)将生成的外部表建表语句ddl存储到greenplum数据库,供后续使用。
[0054]
例如,外部表建表语法如下:
[0055][0056]
其中,
[0057]
location('gpfdist://master:8081/drgs_diagnosis_icd_bj_202105281044.csv'):这一步操作指定了外部表连接的外部数据文件的地址。
[0058]
format'csv':指定外部文件类型,例如csv、excel、txt。
[0059]
(delimiter','):指定外部数据文件中数据的分隔符。
[0060]
第一步:启动gpfdist。
[0061]
启动指令:gpfdist-d/home/gpadmin/test/-p 8081,其中-d指数据文件所放的目录,在此的路径为/home/gpadmin/test。这里的数据文件路径就是文件上传操作中的上传路径,这个数据文件的上传路径可以在程序的配置文件中动态设定。
[0062]
第二步:根据原表的数据库类型,执行不同的转化操作。
[0063]
第三步:建表语句截取、拼接,组装成符合greenplum外部表的表结构语法。
[0064]
同步数据子模块的操作流程如下:
[0065]
1)获取greenplum的数据库连接信息,用于执行后续的sql操作;
[0066]
2)通过表名称查询是否已经生成过外部表,如果生成过,先进行删除操作;
[0067]
3)执行目标表建表语句ddl和外部表建表语句ddl,在greenplum数据库建立目标表和外部表;
[0068]
4)执行数据同步操作,通过外部表将数据文件的数据导入到目标表中,使用的sql语法是“insert into目标表select*from外部表”)。
[0069]
本发明是基于greenplum内置的插件gpfdist开发的一款高效的数据同步工具,减少大量的手工操作,隔离虚拟机,即现场实施人员无需操作虚拟机。本发明以web的形式面向操作人员,操作人员根本不需要接触虚拟机,也不需要懂得linux指令就可以实现greenplum的数据同步,简单易学,实现一键同步数据。面向对象主要是oracle、sql server同步数据到greenplum。
[0070]
现有技术的informatica、datastage和本发明方案都是etl工具,虽然实现的原理一样,都是实现数据的抽取、转化、加载,但实现方式不一样。例如,informatica是通过自身的各种组件实现数据同步。而本发明方案是通过greenplum内置的gpfdist实现数据同步,表结构转化部分是通过java后端代码实现,并不是以组件的形式。由于达到了相当的同步
效果,本发明方案可用于替代informatica、datastage等收费同步工具。
[0071]
图2示出了根据本发明的数据同步方法的一优选实施例的流程图。
[0072]
在步骤s202,配置拟进行同步的数据源的信息;
[0073]
在步骤s204,响应于确定上传,将选择的数据文件上传到服务器;
[0074]
在步骤s206,列表展示所选数据源下的所有表并选择拟同步数据的表;
[0075]
在步骤s208,响应于确定同步,在greenplum数据库自动生成与拟同步数据的表对应的目标表,在greenplum数据库自动生成对应的外部表,自动将数据文件的数据通过外部表导入对应的目标表中。
[0076]
在另一实施例中,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现结合图1所示所述的系统实施例或其它相应系统实施例的功能或者实现结合图2所示所述的方法实施例或其它相应方法实施例的步骤,在此不再赘述。
[0077]
在另一实施例中,本发明提供一种计算机设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中所述处理器执行所述计算机程序时实现结合图1所示所述的系统实施例或其它相应系统实施例的功能或者实现结合图2所示所述的方法实施例或其它相应方法实施例的步骤,在此不再赘述。
[0078]
在此所述的多个不同实施方式或者其特定特征、结构或特性可在本发明的一个或多个实施方式中适当组合。另外,在某些情形下,只要适当,流程图中和/或流水处理描述的步骤顺序可修改,并不必须精确按照所描述的顺序执行。另外,本发明的多个不同方面可使用软件、硬件、固件或者其组合和/或执行所述功能的其它计算机实施的模块或装置进行实施。本发明的软件实施可包括保存在计算机可读介质中并由一个或多个处理器执行的可执行代码。计算机可读介质可包括计算机硬盘驱动器、rom、ram、闪存、便携计算机存储介质如cd-rom、dvd-rom、闪盘驱动器和/或具有通用串行总线(usb)接口的其它装置,和/或任何其它适当的有形或非短暂计算机可读介质或可执行代码可保存于其上并由处理器执行的计算机存储器。本发明可结合任何适当的操作系统使用。
[0079]
除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一”的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的任何及所有组合。
[0080]
前面说明了本发明的一些优选实施例,但是应当强调的是,本发明不局限于这些实施例,而是可以本发明主题范围内的其它方式实现。本领域技术人员可以在本发明技术构思的启发和不脱离本发明内容的基础上对本发明做出各种变型和修改,这些变型或修改仍落入本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献