CN112347192A - 数据同步方法、装置、平台以及可读介质 - Google Patents

数据同步方法、装置、平台以及可读介质 Download PDF

Info

Publication number
CN112347192A
CN112347192A CN202011279897.8A CN202011279897A CN112347192A CN 112347192 A CN112347192 A CN 112347192A CN 202011279897 A CN202011279897 A CN 202011279897A CN 112347192 A CN112347192 A CN 112347192A
Authority
CN
China
Prior art keywords
data
data synchronization
synchronized
type
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
Application number
CN202011279897.8A
Other languages
English (en)
Inventor
巴铁凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu Online Network Technology Beijing Co Ltd
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202011279897.8A priority Critical patent/CN112347192A/zh
Publication of CN112347192A publication Critical patent/CN112347192A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供一种数据同步方法、装置、数据同步平台以及存储介质,涉及计算机技术领域,尤其涉及数据处理技术领域。该数据同步方法包括:响应于接收到数据同步请求,确定该数据同步请求中指示的数据同步类型;根据数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据;确定目标数据库的表结构信息;根据目标数据库的表结构信息,对待同步数据进行处理;以及将处理的所述待同步数据写入所述目标数据库。

Description

数据同步方法、装置、平台以及可读介质
技术领域
本公开涉及计算机技术领域,具体涉及数据处理、数据同步技术领域,尤其涉及数据同步方法、装置、数据同步平台以及计算机可读存储介质。
背景技术
随着互联网技术的发展,人们在网上的冲浪行为会产生大量的数据,这些数据会存储在不同类型的数据库中。如何实现不同类型的数据库之间的数据同步是人们的普遍诉求。
在相关技术中,已经开发有相应的同步工具,但该同步工具仅能用于一种类型的数据库到另一种类的数据库的数据同步,例如针对MySQL数据库到Hive数据库的数据同步。如果想要实现其他类型的数据库之间的数据同步,例如Hive数据库到Palo数据库的数据同步,则需要针对该数据同步类型开发出一套同步任务,比较耗时费力,且对于普通用户而言,开发过程也难以实现。
发明内容
根据本公开实施例的一个方面,提供了一种数据同步方法。所述方法包括:响应于接收到数据同步请求,确定该数据同步请求中指示的数据同步类型;根据数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据;确定目标数据库的表结构信息;根据目标数据库的表结构信息,对待同步数据进行处理;以及将处理的所述待同步数据写入所述目标数据库。
根据本公开实施例的另一个方面,提供了一种数据同步装置。该数据同步装置包括:确定单元,配置为响应于接收到数据同步请求,确定所述数据同步请求中指示的数据同步类型;调取单元,配置为根据所述数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据;获取单元,配置为确定目标数据库的表结构信息;处理单元,配置为根据所述目标数据库的表结构信息,对所述待同步数据进行处理;以及同步单元,配置为将处理的所述待同步数据写入所述目标数据库。
根据本公开实施例的另一个方面,提供了一种数据同步平台。该数据同步平台包括:处理器以及存储程序的存储器。所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据本公开一些实施例的数据同步方法。
根据本公开实施例的另一个方面,提供了一种存储程序的计算机可读存储介质。所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行根据本公开一些实施例的数据同步方法。
借助于本公开示例性实施例的方案,能够根据数据同步请求,确定出数据同步类型,并根据该数据同步类型,自动调起与该数据同步类型适配的数据同步进程,以从源数据库中提取待同步数据,并在对该待同步数据进行处理后写入目标数据库中。由此,不用针对每种类型的数据同步需求均开发一套同步任务,就可以实现不同类型的数据库之间的数据同步,降低了同步开发的任务量,提高了数据同步的效率。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素,其中:
图1是根据本公开一些示例性实施例的数据同步***的示意图;
图2是根据本公开一些示例性实施例的数据同步方法的流程图;
图3是根据本公开一些示例性实施例的分库分表场景下的数据同步过程的示意图;
图4是根据本公开另一些示例性实施例的数据同步方法的流程图;
图5是根据本公开一些示例性实施例的数据同步平台的结构示意图;
图6是根据本公开一些示例性实施例的数据同步平台的框架的示意图;
图7是根据本公开一些示例性实施例的数据同步平台的功能分层框架的示意图;
图8是根据本公开一些示例性实施例的数据同步装置的示意性框图;以及
图9是根据本公开示例性实施例的示例计算设备的示意性框图。
具体实施方式
为了使本技术领域的人员更好地理解本公开方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解,这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意在覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
异构数据,即同一份数据因应用场景不同,而被存储在不同类型的数据库中。不同类型的数据库之间的数据同步是普遍的诉求,例如MySQL数据库到Hive数据库的数据同步,以通过Hive对同步后的海量数据进行离线分析,例如Hive数据库到Palo数据库的数据同步,以支持下游报表数据的在线展示等。在相关技术中,已经开发有相应的同步工具,但该同步工具仅能用于一种类型的数据库到另一种类的数据库的数据同步。如果想要实现其他类型的数据库之间的数据同步,则需要针对该数据同步类型开发出一套同步任务,比较耗时费力,且对于普通用户而言,开发过程也难以实现。
鉴于此,本公开提供一种数据同步方法,可以实现不同类型的数据库之间的数据同步。图1示出了根据本公开的实施例可以实现将本文描述的各种方法和装置在其中实施的示例性***100的示意图。参考图1,该***100包括一个或多个客户端设备101、102、103、104、105和106、服务器120以及将一个或多个客户端设备耦接到服务器120的一个或多个通信网络110。客户端设备101、102、103、104、105和106可以被配置为执行一个或多个应用程序。
在本公开的实施例中,服务器120还可以提供可以包括非虚拟环境和虚拟环境的其他服务或软件应用。在某些实施例中,这些服务可以作为基于web的服务或云服务提供,例如在软件即服务(SaaS)模型下提供给客户端设备101、102、103、104、105和/或106的用户。在图1所示的配置中,服务器120可以包括实现由服务器120执行的功能的一个或多个组件。这些组件可以包括可由一个或多个处理器执行的软件组件、硬件组件或其组合。操作客户端设备101、102、103、104、105和/或106的用户可以依次利用一个或多个客户端应用程序来与服务器120进行交互以利用这些组件提供的服务。应当理解,各种不同的***配置是可能的,其可以与***100不同。因此,图1是用于实施本文所描述的各种方法的***的一个示例,并且不旨在进行限制。
用户可以通过客户端设备101、102、103、104、105和/或106提交数据同步请求和查询数据同步任务。客户端设备可以提供使客户端设备的用户能够与客户端设备进行交互的接口。客户端设备还可以经由该接口向用户输出信息。尽管图1仅描绘了六种客户端设备,但是本领域技术人员将能够理解,本公开可以支持任何数量的客户端设备。
客户端设备101、102、103、104、105和/或106可以包括各种类型的计算***,例如便携式手持设备、通用计算机(诸如个人计算机和膝上型计算机)、工作站计算机、可穿戴设备、游戏***、瘦客户端、各种消息收发设备、传感器或其他感测设备等。这些计算设备可以运行各种类型和版本的软件应用程序和操作***,例如Microsoft Windows、Apple iOS、类UNIX操作***、Linux或类Linux操作***(例如Google Chrome OS);或包括各种移动操作***,例如Microsoft Windows Mobile OS、iOS、Windows Phone、Android。便携式手持设备可以包括蜂窝电话、智能电话、平板电脑、个人数字助理(PDA)等。可穿戴设备可以包括头戴式显示器和其他设备。游戏***可以包括各种手持式游戏设备、支持互联网的游戏设备等。客户端设备能够执行各种不同的应用程序,例如各种与Internet相关的应用程序、通信应用程序(例如电子邮件应用程序)、短消息服务(SMS)应用程序,并且可以使用各种通信协议。
网络110可以是本领域技术人员熟知的任何类型的网络,其可以使用多种可用协议中的任何一种(包括但不限于TCP/IP、SNA、IPX等)来支持数据通信。仅作为示例,一个或多个网络110可以是局域网(LAN)、基于以太网的网络、令牌环、广域网(WAN)、因特网、虚拟网络、虚拟专用网络(VPN)、内部网、外部网、公共交换电话网(PSTN)、红外网络、无线网络(例如蓝牙、WIFI)和/或这些和/或其他网络的任意组合。
服务器120可以包括一个或多个通用计算机、专用服务器计算机(例如PC(个人计算机)服务器、UNIX服务器、中端服务器)、刀片式服务器、大型计算机、服务器群集或任何其他适当的布置和/或组合。服务器120可以包括运行虚拟操作***的一个或多个虚拟机,或者涉及虚拟化的其他计算架构(例如可以被虚拟化以维护服务器的虚拟存储设备的逻辑存储设备的一个或多个灵活池)。在各种实施例中,服务器120可以运行提供下文所描述的功能的一个或多个服务或软件应用。
服务器120中的计算***可以运行包括上述任何操作***以及任何商业上可用的服务器操作***的一个或多个操作***。服务器120还可以运行各种附加服务器应用程序和/或中间层应用程序中的任何一个,包括HTTP服务器、FTP服务器、CGI服务器、JAVA服务器、数据库服务器等。
在一些实施方式中,服务器120可以包括一个或多个应用程序,以分析和合并从客户端设备101、102、103、104、105和106的用户接收的数据馈送和/或事件更新。服务器120还可以包括一个或多个应用程序,以经由客户端设备101、102、103、104、105和106的一个或多个显示设备来显示数据馈送和/或实时事件。
***100还可以包括一个或多个数据库130,该一个或多个数据库130可以为源数据库和目标数据库。在某些实施例中,这些数据库可以用于存储数据和其他信息。例如,数据库130中的一个或多个可用于存储诸如音频文件和视频文件的信息。数据库130可以驻留在各种位置。例如,由服务器120使用的数据存储库可以在服务器120本地,或者可以远离服务器120且可以经由基于网络或专用的连接与服务器120通信。数据库130可以是不同的类型。这些数据库中的一个或多个可以响应于命令而存储、更新和检索到数据库以及来自数据库的数据。
图1的***100可以以各种方式配置和操作,以使得能够应用根据本公开所描述的各种方法和装置。应理解,图1所示的***100仅为示例,在此不对本公开实施例提供的方法适用的***做任何限定。
图2是根据本公开一些示例性实施例的数据同步方法200的流程示意图。如图2所示,该方法包括:响应于接收到数据同步请求,确定该数据同步请求中指示的数据同步类型(步骤S201);根据数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据(步骤S202);确定目标数据库的表结构信息(步骤S203);根据目标数据库的表结构信息,对待同步数据进行处理(步骤S204);以及将处理的所述待同步数据写入所述目标数据库(步骤S205)。
由此,能够根据数据同步请求,确定出数据同步类型,并根据该数据同步类型,自动调起与该数据同步类型适配的数据同步进程,以从源数据库中提取待同步数据,并在对该待同步数据进行处理后写入目标数据库中。从而,不用针对每种类型的数据同步需求均开发一套同步任务,就可以实现不同类型的数据库之间的数据同步,降低了同步开发的成本和任务量,提高数据同步的效率。
数据库可以指按照数据结构来组织、存储和管理数据的仓库,是存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。用户可以对数据库中的数据进行新增、查询、更新、删除等操作。源数据库可以指待同步数据所在的数据库,目标数据库可以指待同步数据将要写入的数据库。
在一些实施例中,用户可以通过客户端或者浏览器页面提交数据同步请求。数据同步请求中可以指示有源数据库的链接信息,以使得数据同步进程能够定位到该源数据库。由此,根据链接信息可以实现源数据库的准确定位。在一些示例中,源数据库的链接信息可以包括有,例如源数据库的地址、源数据库的端口、访问源数据库的用户名和密码、源数据库的名称、源数据库包含的数据表的名称等。源数据库的地址可以为其IP地址。在一些示例中,还可以根据源数据库的链接信息,解析出源数据库的表结构信息。根据源数据库的表结构信息,可以构建目标数据库的表结构。由此,可以使得目标数据库的表结构与源数据库的表结构保持一致,节省数据同步的时间,提高数据同步效率。
在一些其他的实施例中,数据同步请求中还可以指示有数据同步的模式,例如全量数据同步,增量数据同步,实时数据同步。由此,可以支持用户多种模式的数据同步需求。全量数据同步是指读取源数据库的数据表中的全量数据,同步到目标数据库中。在全量数据同步下,待同步数据为源数据库中的全部数据。增量数据同步是指读取源数据库***的数据表中的增量数据,同步到目标数据库中。在增量数据同步下,待同步数据可以包括源数据库在预定时间段内变更的数据和数据变更的类型。数据变更的类型可以包括,例如数据的修改,数据的新增和数据的删除。预定时间段可以为例如一天,两天等,本公开对此并不限制。在一些示例中,可以通过读取数据库的提交日志实现增量数据同步。实时数据同步是指对数据入库的时效性要求较高的同步场景,数据从源数据库到目标数据库的时间间隔较短。针对实时数据同步,源数据库可以是数据流管道,数据流管道中的内容(例如分布式消息队列)可以是任何自定义的数据结构,并且数据会不断的随时推送过来。
在一些实施例中,数据同步请求中可以指示有数据同步类型。数据同步类型可以基于源数据库的类型来确定。源数据库可以为不同类型的数据库,例如源数据库为第一类型的源数据库,第二类型的源数据库和第三类型源数据库。在一些示例中,第一类型的源数据库可以为关系型数据库。关系型数据库可以指采用关系模型组织数据的数据库,其以行和列的形式存储数据。关系型数据库的示例可以包括,例如MySQL,PostgreSQL,Oracle,SQLite等。第二类型的源数据库可以为非关系型数据库,例如ElasticSearch(ES),Solr等。ES是基于Lucene的搜索服务器,Solr是基于Lucene的全文搜索服务器。第三类型源数据库可以为分布式数据流管道,例如Kafka。Kafka是由Linkedin公司开发,是分布式、分区的、多副本的、多订阅者,基于Zookeeper协调的分布式日志***,可以用于Web/Nginx日志、访问日志,消息服务等。目标数据库可以与源数据库为相同类型的数据库,也可以为不同类型的数据库。
在一些示例中,例如目标数据库可以为Hive、Palo等。Hive是基于Hadoop生态的数据仓库工具,可以存储、查询和分析存储在Hadoop中的大规模数据集,并能够通过提供SQL查询实现灵活的数据分析。Palo是支撑在线报表和多维分析应用的高性能并行数据库。可以将格式化数据导入palo中,通过MySQL的接口对数据进行分析和访问。Palo可以在秒级别的时间完成对TB级别数据的分析。在其他的示例中,目标数据库还可以为企业内部的数据库,例如百度公司为其员工提供的用户数据仓库(User Data Warehouse,UDW)。
相应地,数据同步类型可以包括第一类型的源数据库到目标数据库的数据同步(例如MySQL到UDW的数据同步,简称MySQL2UDW),第二类型的源数据库到目标数据库的数据同步(ES到UDW的数据同步,简称ES2UDW),以及第三类型源数据库到目标数据库的数据同步(Kafka到UDW的数据同步,简称Kafka2UDW)。针对每种数据同步类型,可以分别调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据。可以理解地,在源数据库类型不同的情况下,数据同步进程从源数据库中提取待同步数据的方式也会不同。
在一些实施例中,根据数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据可以包括:响应于确定数据同步类型为第一类型的源数据库到目标数据库的数据同步,向与第一类型的源数据库对应的数据传输服务发送请求,以请求从第一类型的源数据库中提取待同步数据并将提取的待同步数据存储在临时存储单元中。在一些示例中,例如,在第一类型的源数据库为MySQL的情况下,可以通过数据传输服务(Data Transmission Service,DTS)接口从源数据库中提取待同步数据,并将提取的待同步数据存储在分布式文件***(Hadoop Distributed File System,HDFS)集群中。然后,可以调用Spark任务对存储在HDFS集群中的待同步数据进行处理,例如数据清洗、数据去重等。
在一些实施例中,根据数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据还可以包括:响应于确定数据同步类型为第二类型的源数据库到所述目标数据库的数据同步,获取与第二类型的源数据库对应的插件;以及通过该插件,从第二类型的源数据库中提取待同步数据。在一些示例中,例如,在第二类型的源数据库为ES的情况下,可以通过EsSpark插件读取ES中的数据(例如待同步数据),然后通过Spark任务对提取的数据进行处理。处理后的数据可写入目标数据库。由此,不用经过不必要的存储介质,直达目标数据库,降低了存储开销。
在一些实施例中,根据数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据还可以包括:响应于确定数据同步类型为第三类型源数据库到所述目标数据库的数据同步,每隔预设时间间隔从第三类型源数据库中提取待同步数据,并将提取的所述待同步数据存储至临时存储单元中。在一些示例中,例如,在第三类型源数据库可以为Kafka的情况下,可以通过Spark Streaming任务每隔一定的时间间隔(例如,5分钟,10分钟等)从Kafka中提取数据(例如待同步数据),并将提取的数据临时存到HDFS中。然后,可以通过Spark批量处理任务对HDFS中的数据进行处理。
在将待同步数据从源数据库中提取出后,可以根据目标数据库的表结构信息,对待同步数据进行处理,并写入目标数据库中。在一些实施例中,目标数据库的表结构信息可以包括目标数据库中包含的数据表的唯一键。根据目标数据库的表结构信息,对待同步数据进行处理可以包括:根据目标数据库中包含的数据表的唯一键,对待同步数据进行去重。唯一键可以指用于标识对应的字段中的数据的唯一性。在一些示例中,数据表可以有一个唯一键。如表1所示,学号可以为该数据表的唯一键。每个学号(例如123XXX,234XXX,345XXX)为该行数据的唯一键的值。
表1
学号 姓名 成绩 班级
123XXX 张XX 78 八年级八班
234XXX 李XX 85 八年级八班
345XXX 王XX 95 八年级八班
123XXX 张XX 87 八年级八班
在一些其他的示例,数据表可以多个唯一键。如表2所示,订单ID和身份证号可以一起构成表2的唯一键。
表2
订单ID 身份证号 订单金额 下单日期
123*** 4114*** 49.9RMB 2020-05-20
234*** 4223*** 199.9RMB 2020-06-15
345*** 1123*** 239.8RMB 2020-10-11
在一些实施例中,根据目标数据库中包含的数据表的唯一键,对待同步数据进行去重可以包括:将待同步数据中具有相同唯一键的数据分为一组,得到多个分组;获取待同步数据的时间戳;针对多个分组中的每个分组,根据时间戳,对该分组中的数据按照时间先后顺序进行排序;以及针对多个分组中的每个分组,选择该分组中排序最靠前的数据。在一些示例中,数据库中的数据都对应有一个时间戳,用于表征该数据被写入数据库的时刻。在一些示例中,数据库可能包括多个具有相同唯一键的数据,这可能是对数据进行修改、新增导致。例如,如上述表1所示,其包括2个具有相同学号123XXX的数据行。第一行数据(即表1的第一行中的数据)可能是在例如2020年4月10日上午9:00被写入表1的。第二行数据(即表1的第四行中的数据)可能是在例如2020年4月10日下午14:00被写入表1的。在进行分组时,可以将第一行数据和第二行数据分为一组,并按照时间先后顺序进行排序。由于第二行数据是距离当前分组时刻最近的时刻,第二行数据排序在第一行数据之间。在进行数据同步时,可以只选择第二行数据进行同步。由此,可以使得同步的数据为最新的数据,减少了数据同步量,提高数据同步效率。
随着数据量的增加,例如当一张数据表的数据达到几千万时,从该表中查询数据会花费较多的时间。为了减小数据库的负担,缩短查询时间,数据库通常会被分成多个数据表(即分库)。在相关技术中,对于包含多个数据表的数据库(例如MySQL)的数据同步,通常采用串行的方式逐次同步多个数据表。图3示出了根据本公开示例的分库分表场景下的数据同步过程的示意图。如图3所示,在数据库包括n(n可以为正整数)个分库的情况下,采用串行方式同步每个分库时,会耗时较多。例如在同步一个分库耗时T时间的情况下(提速前),完成所有n个分库的同步过程会耗时n*T时间。另一方面,当其中一个分库同步失败时,会导致整个同步任务失败。
对此,本公开提供一种异步并发机制。在一些实施例中,响应于确定数据同步类型为第一类型的源数据库到目标数据库的数据同步,本公开的数据同步方法还包括:确定第一类型的源数据库中数据表的数目。从第一类型的源数据库中提取待同步数据可以包括:响应于确定第一类型的源数据库包括多个数据表,向与多个数据表对应的数据传输服务发送请求,以请求分别同时地从多个数据表中提取与多个数据表对应的待同步数据,并将提取的与多个数据表对应的待同步数据存储在临时存储单元中。如图3所示,在数据库包括n个分库的情况下,可以分别针对每个分库1,2,…,n创建自动同步线程Thread1,Thread2,…,Threadn。每个线程负责处理一个分库的同步任务。由此,在同步一个分库耗时T时间的情况下,引入并发执行机制(提速后),完成所有n个分库的同步过程会耗时接近T时间,节省了数据同步的时间,提高了数据同步的效率。同时,当其中一个分库同步失败时,不会影响其他分库的同步过程。
图4是根据本公开一些示例性实施例的数据同步方法400的流程示意图。如图4所示,该方法包括如下步骤。
在步骤401,响应于接收到数据同步请求,确定数据同步请求中指示的数据同步类型。
在步骤402,根据数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据。
在步骤403,确定目标数据库的表结构信息,根据目标数据库的表结构信息,对待同步数据进行处理。
在步骤404,将处理的待同步数据写入所述目标数据库。
在步骤405,每隔预定时间间隔检测将处理的待同步数据写入所述目标数据库的执行状态。
在步骤406,如果确定执行状态为失败,统计执行状态为失败的次数。
在步骤407,确定执行状态为失败的次数是否小于或等于预设阈值,如果是,执行步骤404,否则执行步骤408。
在步骤408,向数据同步请求的发起者发送将处理的待同步数据写入所述目标数据库的执行状态为失败的消息。
由此,通过允许同步过程的重试,并限制重试的次数,可以提高数据同步的效率。同时,在同步过程失败后,向数据同步请求的发起者发送同步过程失败的消息,可以使得发起者及时采取其他的补救措施,提高用户体验。
以上对根据本公开示例性实施例的数据同步方法进行了说明。虽然各个操作在附图中被描绘为按照特定的顺序,但是这不应理解为要求这些操作必须以所示的特定顺序或者按顺行次序执行,也不应理解为要求必须执行所有示出的操作以获得期望的结果。下面描述根据本公开示例性实施例的数据同步平台和数据同步装置。
本公开实施例还提供一种数据同步平台,本公开实施例的数据同步方法可以由该数据同步平台执行,该数据同步平台配置有多种数据同步组件。图5是根据本公开一些示例性实施例的数据同步平台500的结构示意图。针对每种数据同步类型,例如MySQL2UDW、ES2UDW或Kafka2UDW,数据同步平台500可以调起与该数据同步类型对应的数据同步组件501,以自动实现数据同步。
图6是根据本公开一些示例性实施例的数据同步平台600的框架示意图。如图6所示,数据同步平台600包括多个服务模块。配置录入模块601被配置为使用户输入数据同步请求,例如源数据库的链接信息、同步模式(例如全量同步、增量同步或实时同步)、同步类型和权限组信息等。Tomcat容器服务模块602被配置为响应用户提交的请求(例如数据同步请求),并负责将请求路由到平台对应的服务模块上,进而触发后续的执行动作。配置解析服务模块603被配置为解析用户提交的配置信息,例如根据链接信息解析出需要同步的数据表结构、所使用的权限组、需要使用的同步组件等。用户元信息模块604被配置为存储用户的权限组信息和对应的任务元信息,用于后续任务管理和下游的任务构建与执行。权限管理服务模块605被配置为决策每个任务所使用的权限组,进而赋权下游同步任务读写用户构建的目标表。组件识别服务模块606被配置为根据用户提交的元信息识别所要使用的同步组件。任务构建服务模块607被配置为根据组件识别结果自动调起模块化组件库,构建同步任务,例如MySQL2UDW、ES2UDW、Kafka2UDW。例行结果同步模块608被配置为向用户发送同步任务执行的状态,例如在同步任务失败时,向用户发送同步任务失败的消息。
图7是根据本公开一些示例性实施例的数据同步平台700的功能分层框架的示意图。在用户配置层,业务只需要简单配置需要同步的任务信息(例如同步类型、同步模式等)。在平台服务层,维护各任务的元信息,同时能够根据用户提供的配置信息自动选择对应的同步组件来构建同步任务。HQL(Hive SQL,一种在Hive中使用的数据分析处理语言)解析服务是指会根据源数据库链接信息,获取到数据表的结构信息,然后解析并生成符合Hive SQL语法建表语句,以创建Hive表。Web UI是指前端交互页面,用于对接用户,是用户提交任务信息、查询任务状态等操作的入口。在模板组件层,集成各类同步组件,包括MySQL2UDW、ES2UDW、Kafka2UDW等,将数据上下游同步形成闭环,进而有利于数据溯源。
图8是根据本公开一些示例性实施例的数据同步装置800的示意性框图。如图8所示,数据同步装置800包括确定单元801、调取单元802、获取单元803、处理单元804和同步单元805。
确定单元801被配置为响应于接收到数据同步请求,确定所述数据同步请求中指示的数据同步类型。
调取单元802被配置为根据所述数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据。
获取单元803被配置为确定目标数据库的表结构信息。
处理单元804被配置为根据所述目标数据库的表结构信息,对所述待同步数据进行处理。
同步单元805被配置为将处理的所述待同步数据写入所述目标数据库。
在一些示例中,确定单元801、调取单元802、获取单元803、处理单元804和同步单元805的操作分别对应于上面关于图2描述的方法200的步骤201-205,因此此处不再详细描述。在一些示例中,上述数据同步平台500和600可以为数据同步装置800的示例。
借助于本公开示例性实施例的方案,能够根据数据同步请求,确定出数据同步类型,并根据该数据同步类型,自动调起与该数据同步类型适配的数据同步进程,以从源数据库中提取待同步数据,并在对该待同步数据进行处理后写入目标数据库中。由此,不用针对每种类型的数据同步需求均开发一套同步任务,就可以实现不同类型的数据库之间的数据同步,降低了同步开发的任务量,提高了数据同步的效率。
虽然上面参考特定模块讨论了特定功能,但是应当注意,本文讨论的各个模块的功能可以分为多个模块,和/或多个模块的至少一些功能可以组合成单个模块。本文讨论的特定模块执行动作包括该特定模块本身执行该动作,或者替换地该特定模块调用或以其他方式访问执行该动作的另一个组件或模块(或结合该特定模块一起执行该动作)。因此,执行动作的特定模块可以包括执行动作的该特定模块本身和/或该特定模块调用或以其他方式访问的、执行动作的另一模块。
本公开的一个方面还提供一种电子设备,该电子设备可包括处理器;以及存储程序的存储器,该程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据本公开实施例的方法的步骤。
本公开的一个方面还提供一种存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行根据本公开实施例的方法的步骤。
本公开的一个方面还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现根据本公开实施例的方法的步骤。
下面参考图9来描述这样的电子设备和计算机可读存储介质的示例。
图9示出了可以被用来实施本文所描述的模块和功能的作为电子设备的计算设备900的示例配置。计算设备900可以是各种不同类型的设备,例如服务提供商的服务器、与客户端(例如,客户端设备)相关联的设备、片上***、和/或任何其它合适的计算设备或计算***。计算设备900的示例包括但不限于:台式计算机,服务器计算机、笔记本电脑或上网本计算机、移动设备(例如,平板电脑或者phablet设备、蜂窝或其他无线电话(例如,智能电话)、记事本计算机、移动台)、可穿戴设备(例如,眼镜、手表)、娱乐设备(例如,娱乐器具、通信地耦合到显示设备的机顶盒、游戏机)、电视或其他显示设备、汽车计算机等等。因此,计算设备900的范围可以从具有大量存储器和处理器资源的全资源设备(例如,个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏控制台)。
计算设备900可以包括能够诸如通过***总线914或其他适当的连接彼此通信的至少一个处理器902、存储器904、(多个)通信接口906、显示设备908、其他输入/输出(I/O)设备910以及一个或更多大容量存储设备912。
处理器902可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器902可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。除了其他能力之外,处理器902可以被配置成获取并且执行存储在存储器904、大容量存储设备912或者其他计算机可读介质中的计算机可读指令,诸如操作***916的程序代码、应用程序918的程序代码、其他程序920的程序代码等。
存储器904和大容量存储设备912是用于存储指令的计算机存储介质的示例,所述指令由处理器902执行来实施前面所描述的各种功能。举例来说,存储器904一般可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,大容量存储设备912一般可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。存储器904和大容量存储设备912在本文中都可以被统称为存储器或计算机存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非瞬时性介质,所述计算机程序代码可以由处理器902作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
多个程序模块可以存储在大容量存储设备912上。这些程序包括操作***916、一个或多个应用程序918、其他程序920和程序数据922,并且它们可以被加载到存储器904以供执行。这样的应用程序或程序模块的示例可以包括例如用于实现以下部件/功能的计算机程序逻辑(例如,计算机程序代码或指令):确定单元801、调取单元802、获取单元803、处理单元804和同步单元805、方法200、方法400和/或本文描述的另外的实施例。
虽然在图9中被图示成存储在计算设备900的存储器904中,但是模块916、918、920和922或者其部分可以使用可由计算设备900访问的任何形式的计算机可读介质来实施。如本文所使用的,“计算机可读介质”至少包括两种类型的计算机可读介质,也就是计算机存储介质和通信介质。
计算机存储介质包括通过用于存储信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除介质,所述信息诸如是计算机可读指令、数据结构、程序模块或者其他数据。计算机存储介质包括而不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)、或其他光学存储装置,磁盒、磁带、磁盘存储装置或其他磁性存储设备,或者可以被用来存储信息以供计算设备访问的任何其他非传送介质。
与此相对,通信介质可以在诸如载波或其他传送机制之类的已调数据信号中具体实现计算机可读指令、数据结构、程序模块或其他数据。本文所定义的计算机存储介质不包括通信介质。
计算设备900还可以包括一个或更多通信接口906,以用于诸如通过网络、直接连接等等与其他设备交换数据,正如前面所讨论的那样。这样的通信接口可以是以下各项中的一个或多个:任何类型的网络接口(例如,网络接口卡(NIC))、有线或无线(诸如IEEE802.11无线LAN(WLAN))无线接口、全球微波接入互操作(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、BluetoothTM接口、近场通信(NFC)接口等。通信接口906可以促进在多种网络和协议类型内的通信,其中包括有线网络(例如LAN、电缆等等)和无线网络(例如WLAN、蜂窝、卫星等等)、因特网等等。通信接口906还可以提供与诸如存储阵列、网络附属存储、存储区域网等等中的外部存储装置(未示出)的通信。
在一些示例中,可以包括诸如监视器之类的显示设备908,以用于向用户显示信息和图像。其他I/O设备910可以是接收来自用户的各种输入并且向用户提供各种输出的设备,并且可以包括触摸输入设备、手势输入设备、摄影机、键盘、遥控器、鼠标、打印机、音频输入/输出设备等等。
虽然在附图和和前面的描述中已经详细地说明和描述了本公开,但是这样的说明和描述应当被认为是说明性的和示意性的,而非限制性的;本公开不限于所公开的实施例。通过研究附图、公开内容和所附的权利要求书,本领域技术人员在实践所要求保护的主题时,能够理解和实现对于所公开的实施例的变型。在权利要求书中,词语“包括”不排除未列出的其他元件或步骤,不定冠词“一”或“一个”不排除多个,并且术语“多个”是指两个或两个以上。在相互不同的从属权利要求中记载了某些措施的仅有事实并不表明这些措施的组合不能用来获益。

Claims (17)

1.一种数据同步方法,包括:
响应于接收到数据同步请求,确定所述数据同步请求中指示的数据同步类型;
根据所述数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据;
确定目标数据库的表结构信息;
根据所述目标数据库的表结构信息,对所述待同步数据进行处理;以及
将处理的所述待同步数据写入所述目标数据库。
2.根据权利要求1所述的方法,其中,所述数据同步类型是基于所述源数据库的类型确定的。
3.根据权利要求2所述的方法,其中,根据所述数据同步类型,调起与该数据同步类型对应的数据同步进程,以从所述源数据库中提取所述待同步数据包括:
响应于确定所述数据同步类型为第一类型的源数据库到所述目标数据库的数据同步,向与所述第一类型的源数据库对应的数据传输服务发送请求,以请求从所述第一类型的源数据库中提取所述待同步数据并将提取的所述待同步数据存储在临时存储单元中。
4.根据权利要求2所述的方法,其中,根据所述数据同步类型,调起与该数据同步类型对应的数据同步进程,以从所述源数据库中提取所述待同步数据包括:
响应于确定所述数据同步类型为第二类型的源数据库到所述目标数据库的数据同步,获取与所述第二类型的源数据库对应的插件;以及
通过所述插件,从所述第二类型的源数据库中提取所述待同步数据。
5.根据权利要求2所述的方法,其中,根据所述数据同步类型,调起与该数据同步类型对应的数据同步进程,以从所述源数据库中提取所述待同步数据包括:
响应于确定所述数据同步类型为第三类型的源数据库到所述目标数据库的数据同步,每隔预设时间间隔从所述第三类型源数据库中提取所述待同步数据,并将所述提取的所述待同步数据存储至临时存储单元中。
6.根据权利要求1-5中任一项所述的方法,其中,所述目标数据库的表结构信息包括所述目标数据库中包含的数据表的唯一键,
根据所述目标数据库的表结构信息,对所述待同步数据进行处理包括:
根据所述目标数据库中包含的数据表的所述唯一键,对所述待同步数据进行去重。
7.根据权利要求6所述的方法,其中,根据所述目标数据库中包含的数据表的所述唯一键,对所述待同步数据进行去重包括:
将所述待同步数据中具有相同唯一键的数据分为一组,得到多个分组;
获取所述待同步数据的时间戳,其中,所述时间戳用于表征所述待同步数据被写入相应的源数据库的时刻;
针对所述多个分组中的每个分组,根据所述时间戳,对该分组中的数据按照时间先后顺序进行排序;以及
针对所述多个分组中的每个分组,选择该分组中排序最靠前的数据。
8.根据权利要求2或3所述的方法,响应于确定所述数据同步类型为第一类型的源数据库到所述目标数据库的数据同步,所述方法还包括:
确定所述第一类型的源数据库中数据表的数目;
其中,从所述第一类型的源数据库中提取所述待同步数据包括:
响应于确定所述第一类型的源数据库包括多个数据表,向与所述多个数据表对应的数据传输服务发送请求,以请求分别同时地从所述多个数据表中提取与所述多个数据表对应的待同步数据,并将提取的所述与所述多个数据表对应的待同步数据存储在所述临时存储单元中。
9.根据权利要求1所述的方法,其中,所述方法还包括:
确定所述数据同步请求中指示的所述源数据库的链接信息,其中,所述链接信息用于使所述数据同步进程定位所述源数据库。
10.根据权利要求9所述的方法,其中,所述源数据库的所述链接信息包括从所述源数据库的地址、所述源数据库的端口、访问所述源数据库的用户名和密码、所述源数据库的名称、所述源数据库包含的数据表的名称构成的组中选择的一个或多个。
11.根据权利要求1-5中任一项所述的方法,其中,所述方法还包括:
每隔预定时间间隔检测所述将处理的所述待同步数据写入所述目标数据库的执行状态;
响应于确定所述执行状态为失败,统计所述执行状态为失败的次数;以及
响应于确定所述次数小于或等于预设阈值,继续执行所述将处理的所述待同步数据写入所述目标数据库的步骤。
12.根据权利要求11所述的方法,其中,所述方法还包括:
响应于确定所述次数大于所述预设阈值,确定所述将处理的所述待同步数据写入所述目标数据库的执行状态为失败;以及
向所述数据同步请求的发起者发送所述将处理的所述待同步数据写入所述目标数据库的执行状态为失败的消息。
13.根据权利要求1所述的方法,其中,所述待同步数据包括所述源数据库中的全部数据。
14.根据权利要求1所述的方法,其中,所述待同步数据包括所述源数据库在预定时间段内变更的数据和数据变更的类型;
其中,所述数据变更的类型包括数据的修改,数据的新增和数据的删除。
15.一种数据同步装置,包括:
确定单元,配置为响应于接收到数据同步请求,确定所述数据同步请求中指示的数据同步类型;
调取单元,配置为根据所述数据同步类型,调起与该数据同步类型对应的数据同步进程,以从源数据库中提取待同步数据;
获取单元,配置为确定目标数据库的表结构信息;
处理单元,配置为根据所述目标数据库的表结构信息,对所述待同步数据进行处理;以及
同步单元,配置为将处理的所述待同步数据写入所述目标数据库。
16.一种数据同步平台,包括:
处理器;以及
存储程序的存储器,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1至14中任一项所述方法。
17.一种存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行根据权利要求1至14中任一项所述的方法。
CN202011279897.8A 2020-11-16 2020-11-16 数据同步方法、装置、平台以及可读介质 Pending CN112347192A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011279897.8A CN112347192A (zh) 2020-11-16 2020-11-16 数据同步方法、装置、平台以及可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011279897.8A CN112347192A (zh) 2020-11-16 2020-11-16 数据同步方法、装置、平台以及可读介质

Publications (1)

Publication Number Publication Date
CN112347192A true CN112347192A (zh) 2021-02-09

Family

ID=74362850

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011279897.8A Pending CN112347192A (zh) 2020-11-16 2020-11-16 数据同步方法、装置、平台以及可读介质

Country Status (1)

Country Link
CN (1) CN112347192A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064950A (zh) * 2021-03-18 2021-07-02 北京沃东天骏信息技术有限公司 一种数据同步方法、装置、设备及存储介质
CN114785809A (zh) * 2022-03-29 2022-07-22 医渡云(北京)技术有限公司 数据同步方法、装置、电子设备及计算机可读存储介质
CN115033647A (zh) * 2022-08-11 2022-09-09 杭州湖畔网络技术有限公司 数据同步方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080033908A1 (en) * 2006-08-04 2008-02-07 Nortel Networks Limited Method and system for data processing in a shared database environment
CN109656999A (zh) * 2018-10-11 2019-04-19 平安科技(深圳)有限公司 大数据量的数据同步方法、设备、存储介质及装置
CN111046036A (zh) * 2019-11-05 2020-04-21 深信服科技股份有限公司 数据同步方法、装置、***及存储介质
CN111400408A (zh) * 2020-04-13 2020-07-10 上海东普信息科技有限公司 数据同步方法、装置、设备及存储介质
CN111680106A (zh) * 2020-06-17 2020-09-18 深圳前海微众银行股份有限公司 一种多应用***数据同步的方法及装置
CN111797604A (zh) * 2020-06-30 2020-10-20 深圳壹账通智能科技有限公司 报表生成方法、装置、设备及计算机可读存储介质
CN111881210A (zh) * 2020-06-29 2020-11-03 平安国际智慧城市科技股份有限公司 数据同步方法、装置、内网服务器及介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080033908A1 (en) * 2006-08-04 2008-02-07 Nortel Networks Limited Method and system for data processing in a shared database environment
CN109656999A (zh) * 2018-10-11 2019-04-19 平安科技(深圳)有限公司 大数据量的数据同步方法、设备、存储介质及装置
CN111046036A (zh) * 2019-11-05 2020-04-21 深信服科技股份有限公司 数据同步方法、装置、***及存储介质
CN111400408A (zh) * 2020-04-13 2020-07-10 上海东普信息科技有限公司 数据同步方法、装置、设备及存储介质
CN111680106A (zh) * 2020-06-17 2020-09-18 深圳前海微众银行股份有限公司 一种多应用***数据同步的方法及装置
CN111881210A (zh) * 2020-06-29 2020-11-03 平安国际智慧城市科技股份有限公司 数据同步方法、装置、内网服务器及介质
CN111797604A (zh) * 2020-06-30 2020-10-20 深圳壹账通智能科技有限公司 报表生成方法、装置、设备及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
寇媛媛;王晓明;乔文文;: "数据库同步技术的研究与应用", 电脑知识与技术, no. 15 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064950A (zh) * 2021-03-18 2021-07-02 北京沃东天骏信息技术有限公司 一种数据同步方法、装置、设备及存储介质
CN113064950B (zh) * 2021-03-18 2024-04-16 北京沃东天骏信息技术有限公司 一种数据同步方法、装置、设备及存储介质
CN114785809A (zh) * 2022-03-29 2022-07-22 医渡云(北京)技术有限公司 数据同步方法、装置、电子设备及计算机可读存储介质
CN115033647A (zh) * 2022-08-11 2022-09-09 杭州湖畔网络技术有限公司 数据同步方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN106874389B (zh) 数据的迁移方法和装置
US10565077B2 (en) Using cognitive technologies to identify and resolve issues in a distributed infrastructure
EP3513317B1 (en) Data serialization in a distributed event processing system
CN109997126B (zh) 事件驱动提取、变换、加载(etl)处理
US9742721B2 (en) Method, system, server and client device for message synchronizing
EP2954403B1 (en) Cloud-based streaming data receiver and persister
US10338958B1 (en) Stream adapter for batch-oriented processing frameworks
US20180365254A1 (en) Method and apparatus for processing information flow data
CN112347192A (zh) 数据同步方法、装置、平台以及可读介质
CN111324610A (zh) 一种数据同步的方法及装置
CN110795499B (zh) 基于大数据的集群数据同步方法、装置、设备及存储介质
US10372595B1 (en) System and method to diagnose applications by accessing log files associated with different subsystems of a data center via a common interface
US10949218B2 (en) Generating an execution script for configuration of a system
CN113282611A (zh) 一种流数据同步的方法、装置、计算机设备及存储介质
CN112416991A (zh) 一种数据处理方法、装置以及存储介质
CN104090896B (zh) 一种导入数据的方法、装置和***
CN110990365A (zh) 一种数据同步方法、装置、服务器及存储介质
US20220121678A1 (en) Method for automated query language expansion and indexing
CN114253798A (zh) 指标数据采集方法和装置、电子设备、存储介质
CN114416868A (zh) 一种数据同步方法、装置、设备及存储介质
CN111488386B (zh) 数据查询方法和装置
US9378230B1 (en) Ensuring availability of data in a set being uncorrelated over time
EP4348933A1 (en) Managing keys across a series of nodes, based on snapshots of logged client key modifications
CN109558417B (zh) 一种数据处理方法和***
CN114547206A (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