数据同步方法、装置及存储介质与流程

文档序号:18899953发布日期:2019-10-18 21:48阅读:170来源:国知局
数据同步方法、装置及存储介质与流程

本发明涉及数据处理技术领域,尤其涉及一种数据同步方法、装置及存储介质。



背景技术:

互联网的快速发展,使得应用的数据呈现飞速增长的趋势,企业需要将存储的这些数据,将这些数据由不同类型的业务数据库同步到大数据平台中,有利于以后更加方便地使用这些数据。在数据同步过程中,经常会遇到被同步的数据库的表结构发生变化的情况,这给数据同步工作造成困难。

目前业内在数据同步过程中,遇到不同类型数据库的表结构发生变化时,往往需要提醒人工使用数据库自带的工具,将数据导出成文件,然后对文件进行处理再导入到另一个数据库。该方法需要不断的人工干预,不仅效率低,而且也容易出现差错。



技术实现要素:

本发明提供一种数据同步方法、装置及存储介质,其主要目的是提升数据存入数据库的效率。

为实现上述目的,本发明提供一种数据同步方法,该方法包括以下步骤:

响应步骤:响应用户触发的对源数据库的第一数据表的同步请求,获取所述源数据库的配置文件中存储的所述第一数据表的同步路径与数据库信息,其中,所述数据库信息包括源数据库的账号与密码,以及目标数据库的账号与密码;

对比步骤:基于所述数据库信息分别登陆源数据库与目标数据库,获取所述第一数据表及所述目标数据库的第二数据表的表结构,对比所述第一数据表、第二数据表的表结构是否一致,所述数据表的表结构包括数据表的字段名称与字段名称对应的数据类型;

修改步骤:若所述第一数据表、第二数据表的表结构不一致,则按照预设命名规则修改所述第二数据表的表名,在所述目标数据库新建与所述第一数据表结构相同并与所述第二数据表的表名相同的第三数据表;及

同步步骤:在预设时间内,读取所述第一数据表存储的数据,根据所述同步路径,将读取到的数据同步到所述第三数据表。

优选地,将所述第一数据表的数据同步到所述第三数据表的同步方式为增量同步或全量同步。

优选地,当将所述第一数据表的数据同步到所述第三数据表的方式为全量同步时,所述同步步骤包括:

查询所述第一数据表的数据量,根据查询结果按照预设分批规则将所述第一数据表中的数据依次划分为多个批次,并将划分得到的数据批次号保存至预设日志表中;

根据所述日志表中的数据批次号依次从所述第一数据表中读取数据。

优选地,所述数据表的表结构变化包括:新增列、删除列、任意调整一个或多个列位置的组合。

优选地,当数据同步完成时,分别统计所述第一数据表、第三数据表的数据量,若所述第一数据表的数据量与所述第三数据表的数据量相等,则显示数据同步成功的提示信息反馈给所述用户。

此外,为实现上述目的,本发明还提供一种电子装置,该电子装置包括存储器和处理器,所述存储器中存储有可在所述处理器上运行的数据同步程序,所述数据同步程序被所述处理器执行时实现如下步骤:

响应步骤:响应用户触发的对源数据库的第一数据表的同步请求,获取所述源数据库的配置文件中存储的所述第一数据表的同步路径与数据库信息,其中,所述数据库信息包括源数据库的账号与密码,以及目标数据库的账号与密码;

对比步骤:基于所述数据库信息分别登陆源数据库与目标数据库,获取所述第一数据表及所述目标数据库的第二数据表的表结构,对比所述第一数据表、第二数据表的表结构是否一致,所述数据表的表结构包括数据表的字段名称与字段名称对应的数据类型;

修改步骤:若所述第一数据表、第二数据表的表结构不一致,则按照预设命名规则修改所述第二数据表的表名,在所述目标数据库新建与所述第一数据表结构相同并与所述第二数据表的表名相同的第三数据表;及

同步步骤:在预设时间内,读取所述第一数据表存储的数据,根据所述同步路径,将读取到的数据同步到所述第三数据表。

优选地,将所述第一数据表的数据同步到所述第三数据表的同步方式为增量同步或全量同步。

优选地,当将所述第一数据表的数据同步到所述第三数据表的方式为全量同步时,所述同步步骤包括:

查询所述第一数据表的数据量,根据查询结果按照预设分批规则将所述第一数据表中的数据依次划分为多个批次,并将划分得到的数据批次号保存至预设日志表中;

根据所述日志表中的数据批次号依次从所述第一数据表中读取数据。

优选地,当数据同步完成时,分别统计所述第一数据表的数据量和所述第三数据表的数据量,若所述第一数据表、第三数据表的数据量相等,则显示数据同步成功的提示信息反馈给所述用户。

本发明提出的数据同步方法、服务器及计算机可读存储介质,响应用户触发的对源数据库的第一数据表的同步请求,获取所述源数据库的配置文件中存储的所述第一数据表的同步路径与数据库信息;基于所述数据库信息分别登陆源数据库与目标数据库,获取所述第一数据表及所述目标数据库的第二数据表的表结构,对比所述第一数据表、第二数据表的表结构是否一致;若不一致,则按照预设命名规则修改所述第二数据表的表名,在所述目标数据库新建与所述第一数据表结构相同并与所述第二数据表的表名相同的第三数据表;读取所述第一数据表存储的数据,根据所述同步路径,将读取到的数据同步到所述第三数据表,有效提升了数据存入数据库的效率。

附图说明

图1为本发明数据同步方法一实施例的流程图;

图2为本发明电子装置一实施例的内部结构示意图;

图3为图2中的数据同步程序一实施例的程序模块图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参照图1所示,为本发明一实施例提供的数据同步方法的流程示意图。该方法可以由一个电子装置执行,该电子装置可以由软件和/或硬件实现。

在本实施例中,该数据同步方法包括:

步骤s10,响应用户触发的对源数据库的第一数据表的同步请求,获取所述源数据库的配置文件中存储的所述第一数据表的同步路径与数据库信息,其中,所述数据库信息包括源数据库的账号与密码,以及目标数据库的账号与密码。

在本发明的一个实施例中,若接收到客户端发起的同步请求,需验证该用户是否有权限实施数据同步操作,若用户没有实施数据同步操作的权限,则提示用户无权操作的信息。在本实施例中,配置文件预先存储有第一数据表的同步路径与数据库信息。

步骤s20,基于所述数据库信息分别登陆源数据库与目标数据库,获取所述第一数据表及所述目标数据库的第二数据表的表结构,对比所述第一数据表、第二数据表的表结构是否一致,所述数据表的表结构包括数据表的字段名称与字段名称对应的数据类型。

步骤s30,若所述第一数据表、第二数据表的表结构不一致,则按照预设命名规则修改所述第二数据表的表名,在所述目标数据库新建与所述第一数据表结构相同并与所述第二数据表的表名相同的第三数据表。

在本发明的一个实施例中,预设命名规则为:将目标数据库的第二数据表名修改为原表名+时间(年-月-日)+syn。

例如,第一数据表为“用户点击统计”数据表,该“用户点击统计”数据表字段包括:序号、用户别名、点击时间、点击位置。目前,需要在“用户点击统计”数据表中加入“用户所在区域”这个字段,由于加入用户所在区域”字段导致源数据库的“用户点击统计”数据表的表结构发生变化,导致无法完成数据同步操作。当对比第一数据表与第二数据表的表结构发生改变时,按照预设命名规则将目标数据库的“用户点击统计”表的表名改成“用户点击统计+xx年xx月xx日+syn”。

步骤s40,在预设时间内,读取所述第一数据表存储的数据,根据所述同步路径,将读取到的数据同步到所述第三数据表。

在本发明的一个实施例中,将所述第一数据表的数据同步到所述第三数据表的同步方式为增量同步或全量同步。全量同步是对整个系统包括系统文件和应用数据进行的完全备份。全量同步的优点是数据恢复所需时间短。缺点是同步数据中有大量内容是重复的,这些重复的数据占用了大量的存储空间,无形中增加了数据同步的成本;再者,由于需要同步的数据量非常大,因此同步所需时间相对较长。

增量同步指每次同步的数据只是相当于上一次同步后增加的和修改过的数据。这种同步方式的优点是没有重复的同步数据,节省存储空间,又缩短了同步时间。但缺点是恢复数据比较麻烦。

针对数据量少,改动量大的数据源采用全量同步备份,对数据量大,改动小的数据源采取增量同步备份。

例如:

a1.周日到周一访问网站的人比较少,采用全量同步的方式备份周日到周一其间变更过或新增的数据。

a2.周一到周二访问网站的人比较多,采用增量同步的方式备份周一到周二间变更过或新增的数据。

在本发明的同一实施例中,当数据同步完成时,分别统计所述第一数据表的数据量和所述第二数据表的数据量,若所述第一数据表的数据量与所述第二数据表的数据量相等,则显示数据同步成功的提示信息反馈给所述用户。

本发明还提出一种电子装置。参照图2所示,为本发明一实施例提供的电子装置的内部结构示意图。

在本实施例中,所述电子装置1至少包括存储器11、处理器12,网络接口13,以及通信总线。

其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是电子装置1的内部存储单元,例如该电子装置1的硬盘。存储器11在另一些实施例中也可以是电子装置1的外部存储设备,例如电子装置1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器11还可以既包括电子装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于电子装置1的应用软件及各类数据,例如数据同步程序10的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行数据同步程序10等。

网络接口13可选的可以包括标准的有线接口、无线接口(如wi-fi接口),通常用于在该电子装置1与其他电子设备之间建立通信连接。

通信总线用于实现这些组件之间的连接通信。

可选地,该电子装置1还可以包括用户接口,用户接口可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子装置1中处理的信息以及用于显示可视化的用户界面。

图2仅示出了具有组件11-13以及数据同步程序10的电子装置1,本领域技术人员可以理解的是,图2示出的结构并不构成对电子装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

在图2所示的电子装置1实施例中,存储器11中存储有数据同步程序10,处理器12执行存储器11中存储的数据同步程序10时实现如下步骤:

响应步骤:响应用户触发的对源数据库的第一数据表的同步请求,获取所述源数据库的配置文件中存储的所述第一数据表的同步路径与数据库信息,其中,所述数据库信息包括源数据库的账号与密码,以及目标数据库的账号与密码;

对比步骤:基于所述数据库信息分别登陆源数据库与目标数据库,获取所述第一数据表及所述目标数据库的第二数据表的表结构,对比所述第一数据表、第二数据表的表结构是否一致,所述数据表的表结构包括数据表的字段名称与字段名称对应的数据类型;

修改步骤:若所述第一数据表、第二数据表的表结构不一致,则按照预设命名规则修改所述第二数据表的表名,在所述目标数据库新建与所述第一数据表结构相同并与所述第二数据表的表名相同的第三数据表;及

同步步骤:在预设时间内,读取所述第一数据表存储的数据,根据所述同步路径,将读取到的数据同步到所述第三数据表。

具体原理请参照下述图3关于数据同步程序10的程序模块图的介绍,在此不作累述。

可选地,在其他的实施例中,数据同步程序还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述数据同步程序在电子装置中的执行过程。

例如,参照图3所示,为本发明提供的电子装置1一实施例中的数据同步程序的程序模块示意图,该实施例中,数据同步程序10可以被分割为响应模块110、对比模块120、修改模块130、同步模块140,示例性地:

响应模块110:用于响应用户触发的对源数据库的第一数据表的同步请求,获取所述源数据库的配置文件中存储的所述第一数据表的同步路径与数据库信息,其中,所述数据库信息包括源数据库的账号与密码,以及目标数据库的账号与密码。

在本发明的一个实施例中:源数据库可以为oracle数据库(oracle数据库又名oraclerdbms,或简称oracle,是甲骨文公司的一款关系数据库管理系统),mysql数据库(mysql是一个开放源码的小型关联式数据库管理系统),所述目标数据库可以为hive数据库(hive是基于hadoop的一个数据仓库工具)。

目标数据库可以为hive数据库,hive数据库包括:数据仓库分为ods数据存储层、dwd数据明细层、dws数据汇总层、ads数据应用层;

ods数据存储层为数据缓存层,用于存放获取的原始数据,保留一个固定长度时间,不对数据做任何处理;

dwd数据明细层用于对ods数据存储层的数据进行清洗、转码、增量转全量,对表名字与字段名进行统一规范后存储;

dws数据汇总层用于面向主题组织数据,按业务需要构造多维模型数据,进行相关主题域内的数据整合、相关业务的拆分、汇总;

ads数据应用层用于根据业务应用需要构造多维模型数据,所得数据直接用于分析展现,该层也承担专题类数据模型的建设。

对比模块120:用于基于所述数据库信息分别登陆源数据库与目标数据库,获取所述第一数据表及所述目标数据库的第二数据表的表结构,对比所述第一数据表、第二数据表的表结构是否一致,所述数据表的表结构包括数据表的字段名称与字段名称对应的数据类型。

修改模块130:用于若所述第一数据表、第二数据表的表结构不一致,则按照预设命名规则修改所述第二数据表的表名,在所述目标数据库新建与所述第一数据表结构相同并与所述第二数据表的表名相同的第三数据表。

同步模块140:用于在预设时间内,读取所述第一数据表存储的数据,根据所述同步路径,将读取到的数据同步到所述第三数据表。

在本发明的一个实施例中,将所述第一数据表的数据同步到所述第三数据表的同步方式为增量同步或全量同步。全量同步是对整个系统包括系统文件和应用数据进行的完全备份。全量同步的优点是数据恢复所需时间短。缺点是同步数据中有大量内容是重复的,这些重复的数据占用了大量的存储空间,无形中增加了数据同步的成本;再者,由于需要同步的数据量非常大,因此同步所需时间相对较长。

增量同步指每次同步的数据只是相当于上一次同步后增加的和修改过的数据。这种同步方式的优点是没有重复的同步数据,节省存储空间,又缩短了同步时间。但缺点是恢复数据比较麻烦。

针对数据量少,改动量大的数据源采用全量同步备份,对数据量大,改动小的数据源采取增量同步备份。

当将所述第一数据表的数据同步到所述第三数据表的方式为全量同步时,查询所述第一数据表的数据量,根据查询结果按照预设分批规则将所述第一数据表中的数据依次划分为多个批次,并将划分得到的数据批次号保存至预设日志表中;

根据所述日志表中的数据批次号依次从所述第一数据表中读取数据。

例如,查询到需要同步的数据有30000条,每次最多能同步10000条数据,预设分批规则可以为将需要同步的数据按照排列序号均匀分成3个批次进行同步,每次同步10000条数据,执行3次同步操作即可将数据同步完成。

在本发明的另一实施例中,第三数据表存储历史数据,每次同步的数据存放在第三数据表的不同分区中。此外,在目标数据库中新建第四数据表用于存储当前最新同步的数据。每次第三数据表数据同步完成后,将第三数据表本次同步的数据同步到第四数据表,覆盖第四数据表存储的数据。

例如,本次执行数据同步操作后,第三数据表接收到分3个批次同步的30000条数据。数据同步程序还将这30000条数据备份到第四数据表,第四数据仅存储当前最新的30000条数据,第四数据表存储的上一同步的数据已被覆盖。

此外,本发明实施例还提出一种存储介质,所述存储介质上存储有数据同步程序,所述数据同步程序可被一个或多个处理器执行,以实现如下步骤:

响应步骤:响应用户触发的对源数据库的第一数据表的同步请求,获取所述源数据库的配置文件中存储的所述第一数据表的同步路径与数据库信息,其中,所述数据库信息包括源数据库的账号与密码,以及目标数据库的账号与密码;

对比步骤:基于所述数据库信息分别登陆源数据库与目标数据库,获取所述第一数据表及所述目标数据库的第二数据表的表结构,对比所述第一数据表、第二数据表的表结构是否一致,所述数据表的表结构包括数据表的字段名称与字段名称对应的数据类型;

修改步骤:若所述第一数据表、第二数据表的表结构不一致,则按照预设命名规则修改所述第二数据表的表名,在所述目标数据库新建与所述第一数据表结构相同并与所述第二数据表的表名相同的第三数据表;及

同步步骤:在预设时间内,读取所述第一数据表存储的数据,根据所述同步路径,将读取到的数据同步到所述第三数据表。

本发明存储介质具体实施方式与上述电子装置1和系统各实施例基本相同,在此不作累述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1