CN116955416A - 数据处理方法、系统、设备及存储介质 - Google Patents
数据处理方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN116955416A CN116955416A CN202311202263.6A CN202311202263A CN116955416A CN 116955416 A CN116955416 A CN 116955416A CN 202311202263 A CN202311202263 A CN 202311202263A CN 116955416 A CN116955416 A CN 116955416A
- Authority
- CN
- China
- Prior art keywords
- metadata
- data processing
- processing module
- queried
- statement
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000012545 processing Methods 0.000 claims abstract description 466
- 238000000034 method Methods 0.000 claims abstract description 88
- 238000004590 computer program Methods 0.000 claims description 19
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 19
- 238000004364 calculation method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000002452 interceptive effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000282414 Homo sapiens Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 229940005022 metadate Drugs 0.000 description 1
- JUMYIBMBTDDLNG-UHFFFAOYSA-N methylphenidate hydrochloride Chemical compound [Cl-].C=1C=CC=CC=1C(C(=O)OC)C1CCCC[NH2+]1 JUMYIBMBTDDLNG-UHFFFAOYSA-N 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24535—Query rewriting; Transformation of sub-queries or views
-
- 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/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2445—Data retrieval commands; View definitions
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据处理方法、系统、设备及存储介质,可以涉及大数据技术,该方法包括:计算引擎获取待查询语句;向第一数据处理模块发送待查询语句;第一数据处理模块基于第一数据处理模块当前维护的多个元数据查询待查询语句的关联元数据;向计算引擎发送关联元数据;计算引擎基于关联元数据在多个数据库中确定待查询语句的关联数据库;在待查询语句存在多个关联数据库时将待查询语句生成多个子待查询语句;计算引擎将每个子待查询语句发送给对应关联数据库所属的电子设备,电子设备对该子待查询语句进行查询;计算引擎接收子查询结果;并基于子查询结果得到待查询语句的查询结果。从而可以降低各个数据库对应的元数据服务的负荷。
Description
技术领域
本申请实施例涉及大数据领域,尤其涉及一种数据处理方法、系统、设备及存储介质。
背景技术
通常大数据计算平台对应多个数据库,该计算平台可以通过面向多个数据库的综合计算引擎对待查询语句进行查询。
具体地,综合计算引擎可以将待查询语句发送给各个数据库对应的元数据服务,以使这些元数据服务查询待查询语句对应的关联元数据,并将关联元数据发送给综合计算引擎。综合计算引擎基于关联元数据确定待查询语句对应的关联数据库,如果存在多个关联数据库,其可以将待查询语句划分为多个关联数据库对应的多个子待查询语句;并将多个子待查询语句分别发送给对应关联数据库所属的电子设备;这些电子设备对对应的子待查询语句进行查询,并将子查询结果发送给综合计算引擎。进一步地,综合计算引擎基于这些子查询结果得到待查询语句的查询结果。
然而,对于每个数据库对应的元数据服务而言,其除了要查询来自于综合计算引擎的待查询语句以外,还需要查询来自于自己对应的计算引擎的待查询语句,导致这些元数据服务负荷较大的问题。
发明内容
本申请实施例提供一种数据处理方法、系统、设备及存储介质,从而可以降低各个数据库对应的元数据服务的负荷。
第一方面,本申请实施例提供一种数据处理方法,该方法应用于数据处理系统,该数据处理系统包括:计算引擎和第一数据处理模块;该方法包括:计算引擎获取待查询语句;并向第一数据处理模块发送待查询语句;其中,第一数据处理模块维护有多个数据库的元数据;第一数据处理模块基于第一数据处理模块当前维护的多个元数据,查询待查询语句的关联元数据;并向计算引擎发送关联元数据;计算引擎基于关联元数据,在多个数据库中确定待查询语句的关联数据库;并在待查询语句存在多个关联数据库时,基于多个关联数据库将待查询语句生成多个子待查询语句;针对多个子待查询语句中的每个子待查询语句,计算引擎将子待查询语句发送给供查询子待查询语句的关联数据库所属的电子设备,以使电子设备对子待查询语句进行查询,得到子查询结果;计算引擎接收每个子查询结果;并基于每个子查询结果,得到待查询语句的查询结果。
第二方面,本申请实施例提供一种数据处理方法,该方法应用于计算引擎,该方法包括:获取待查询语句;并向第一数据处理模块发送待查询语句;其中,第一数据处理模块维护有多个数据库的元数据;以使第一数据处理模块基于第一数据处理模块当前维护的多个元数据,查询待查询语句的关联元数据;接收关联元数据;并基于关联元数据,在多个数据库中确定待查询语句的关联数据库;在待查询语句存在多个关联数据库时,基于多个关联数据库将待查询语句生成多个子待查询语句;针对多个子待查询语句中的每个子待查询语句,将子待查询语句发送给供查询子待查询语句的关联数据库所属的电子设备,以使电子设备对子待查询语句进行查询,得到子查询结果;接收每个子查询结果;并基于每个子查询结果,得到待查询语句的查询结果。
第三方面,本申请实施例提供一种数据处理方法,该方法应用于第一数据处理模块,其中,第一数据处理模块维护有多个数据库的元数据;该方法包括:接收待查询语句;基于第一数据处理模块当前维护的多个元数据,查询待查询语句的关联元数据;向计算引擎发送关联元数据;其中,关联元数据用于确定待查询语句的关联数据库。
第四方面,本申请实施例提供一种数据处理系统,包括:计算引擎和第一数据处理模块;计算引擎用于获取待查询语句;并向第一数据处理模块发送待查询语句;其中,第一数据处理模块维护有多个数据库的元数据;第一数据处理模块基于第一数据处理模块当前维护的多个元数据,查询待查询语句的关联元数据;并向计算引擎发送关联元数据;计算引擎还用于基于关联元数据,在多个数据库中确定待查询语句的关联数据库;计算引擎还用于在待查询语句存在多个关联数据库时,基于多个关联数据库将待查询语句生成多个子待查询语句;并针对多个子待查询语句中的每个子待查询语句,将子待查询语句发送给供查询子待查询语句的关联数据库所属的电子设备,以使电子设备对子待查询语句进行查询,得到子查询结果;计算引擎还用于接收每个子查询结果;并基于每个子查询结果,得到待查询语句的查询结果。
第五方面,本申请实施例提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第一方面至第三方面中任一个方面或其各实现方式中的方法。
第六方面,本申请实施例提供一种计算机可读存储介质,用于存储计算机程序,计算机程序使得计算机执行如第一方面至第三方面中任一个方面或其各实现方式中的方法。
第七方面,本申请实施例提供一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行如第一方面至第三方面中任一个方面或其各实现方式中的方法。
第八方面,本申请实施例提供一种计算机程序,计算机程序使得计算机如执行如第一方面至第三方面中任一个方面或其各实现方式中的方法。
通过本申请实施例提供的技术方案,第一数据处理模块可以基于各个数据库的统一元数据对待查询语句进行元数据查询,使得待查询语句无需通过各个数据库各自的元数据服务进行查询,从而可以降低各个数据库对应的元数据服务的负荷。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种应用场景图;
图2为本申请实施例提供的一种数据处理方法的交互流程图;
图3为本申请实施例提供的一种元数据实时同步方法的流程图;
图4为本申请实施例提供的一种元数据定时同步方法的交互流程图;
图5为本申请实施例提供的一种元数据定时同步过程的示意图;
图6为本申请实施例提供的一种数据处理系统600的示意图;
图7是本申请实施例提供的电子设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务模块器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在介绍本申请技术方案之前,下面将对本申请技术方案的相关知识进行阐述:
一、大数据,也被称为巨量数据、海量数据、大资料,指的是所涉及的数据量规模巨大到无法通过人工,在合理时间内达到截取、管理、处理、并整理成为人类所能解读的信息。
大数据的特征包括:
(1)、规模性(Volume)
随着信息化技术的高速发展,数据开始爆发性增长。大数据中的数据不再以几个吉字节(GigaByte,GB)或几个万亿字节(TeraByte,TB),而是以千T字节(PetaByte,PB)、艾字节(ExaByte,EB)或泽字节(ZettaByte,ZB)为计量单位。
(2)、多样性(Variety)
多样性主要体现在数据来源多、数据类型多和数据之间关联性强这三个方面。
(3)、高速性(Velocity)
这是大数据区分于传统数据挖掘最显著的特征。大数据与海量数据的重要区别在两方面:第一,大数据的数据规模更大;第二,大数据对处理数据的响应速度有更严格的要求。实时分析而非批量分析,数据输入、处理与丢弃立刻见效,几乎无延迟。数据的增长速度和处理速度是大数据高速性的重要体现。
(4)、价值性(Value)
大数据的价值体现是从大量不相关的各种类型的数据中挖掘出对未来趋势与模式预测分析有价值的数据,并通过机器学习方法、人工智能方法或数据挖掘方法深度分析,并运用于农业、金融、医疗等各个领域,以期创造更大的价值。
二、元数据(Meta Date),是关于数据的组织、数据域及其关系的信息,简言之,元数据就是描述数据的数据。
在本申请实施例中,对于任一个数据库,其可以具有多条元数据,任一条元数据可以包括以下至少一项,但不限于:该数据库包括的字段、该字段的类型、该字段的存储路径等。
在本申请实施例中,待查询语句的关联元数据指的是与该待查询语句关联的元数据。对于任一个待查询语句,其可以具有至少一条关联元数据,任一个关联元数据可以包括以下至少一项,但不限于:该待查询语句关联的字段、该字段的类型、该字段的存储路径等。由于这些字段可以是表示数据库的字段、表示表的字段等,基于此,在本申请实施例中,关联元数据也被称为库表信息,但不限于此。
三、计算引擎,指的是专门处理数据的程序,如MapReduce、Presto、Spark等引擎。
四、综合计算引擎,指的是安装于大数据计算平台,面向于多个数据库的计算引擎。
五、数据库(Database),可视为电子化的文件柜,是存储电子文件的处所,对象可以对文件中的数据运行新增、截取、更新、删除等操作。
六、结构化查询语言(Structured Query Language,SQL),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言。
七、元数据服务,为对应的计算引擎提供服务,例如,提供元数据。
八、统一元数据服务,为综合计算引擎提供服务,例如,提供元数据。
九、哈希算法(Secure Hash Algorithm,SHA),是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段密文,也可以简单的理解为取一串输入码,并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。
下面将对本申请技术方案所要解决的技术问题、发明构思和应用场景进行阐述:
如上所述,对于每个数据库对应的元数据服务而言,其除了要查询来自于综合计算引擎的待查询语句以外,还需要查询来自于自己对应的计算引擎的待查询语句,导致这些元数据服务负荷较大的问题。
为了解决该技术问题,本申请实施例提出统一元数据服务,该统一元数据服务可以基于各个数据库的统一元数据对来自于综合计算引擎的待查询语句进行元数据查询,使得来自于综合计算引擎的待查询语句无需通过各个数据库各自的元数据服务进行查询,从而可以降低各个数据库对应的元数据服务的负荷。
示例性的,图1为本申请实施例提供的一种应用场景图,如图1所示,在该场景中,包括:综合计算引擎110、统一元数据服务120、多个电子设备130、每个电子设备130可以包括:计算引擎140、元数据服务150和数据库160。其中,综合计算引擎110与统一元数据服务120以及多个电子设备130连接,具体可以与每个电子设备130中的元数据服务150和数据库160连接。针对每个电子设备130而言,其内部的计算引擎140与元数据服务150和数据库160连接。统一元数据服务120与每个元数据服务150连接。
在一些可实现方式中,综合计算引擎110可以安装于大数据计算平台的后台服务器上,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。其中,对象可以通过大数据计算平台的客户端输入待查询语句,该客户端可以将待查询语句发送给后台服务器,使得后台服务器对待查询语句进行查询。
在一些可实现方式中,统一元数据服务120也可以位于大数据计算平台的后台服务器上,或者,其也可以位于其他电子设备上,本申请实施例对此不做限制。其中,统一元数据服务120可以基于各个数据库的统一元数据为综合计算引擎提供服务,例如,提供元数据。
在本申请实施例中,电子设备可以是笔记本电脑、台式计算机、平板电脑等,其也可以是服务器。
应理解的是,计算引擎140主要用于处理其所属电子设备130上的待查询语句。
在一些可实现方式中,元数据服务150可以为其对应的计算引擎140提供服务,还可以与统一元数据服务120实现数据同步,还可以在统一元数据服务120无法完全查询待查询语句的关联元数据时,其可以查询待查询语句的关联元数据。
在一些可实现方式中,不同的数据库160可以对应不同的数据源,例如,一个数据库对应hive数据源,另一个数据库对应MySQL数据源。
在本申请实施例中,该数据源也可以被理解为数据所属的电子设备。
应理解的是,图1所示应用场景仅是本申请实施例的一种示例性应用场景,本申请实施例不局限于该应用场景。
下面将对本申请技术方案进行详细阐述:
图2为本申请实施例提供的一种数据处理方法的交互流程图,该方法应用于计算引擎、第一数据处理模块和待查询语句的关联数据库所属的电子设备;其中,计算引擎和第一数据处理模块可以构成数据处理系统,该计算引擎可以是图1中的综合计算引擎,该第一数据处理模块可以是图1中的统一元数据服务,如图2所示,该方法可以包括:
S210:计算引擎获取待查询语句;
在一些可实现方式中,对象可以通过大数据计算平台的客户端输入待查询语句,该客户端可以将待查询语句发送给大数据计算平台的后台服务器,具体可以发送给该后台服务器上的计算引擎,以使该计算引擎获取到待查询语句。
在一些可实现方式中,该待查询语句可以是SQL语句。例如是:
select count(*) from db_a::table_a left join db_b::table_b on table_a.id = table_b.id;
应理解的是,该SQL语句表示将数据库db_a的表table_a与数据库db_b的表table_b,根据字段标识(Identity,ID)联合成新的表格,并统计该表格的行数。
S220:计算引擎向第一数据处理模块发送待查询语句;
应理解的是,计算引擎在查询待查询语句之前,需要获取到该待查询语句的关联元数据,基于该关联元数据确定该待查询语句的关联数据库,并确定关联数据库对应的电子设备。基于此,计算引擎可以向第一数据处理模块发送待查询语句,由于第一数据处理模块维护着多个数据库的元数据,因此,第一数据处理模块可以基于其维护的多个元数据查询待查询语句的关联元数据。
S230:第一数据处理模块基于多个数据库的元数据,查询待查询语句的关联元数据;
在一些可实现方式中,所述多个数据库是计算引擎,即综合计算引擎所面向的多个数据库。
在一些可实现方式中,针对所述多个数据库中的任一个数据库,其可以具有多条元数据,任一条元数据可以包括以下至少一项,但不限于:该数据库包括的字段、该字段的类型、该字段的存储路径等。
例如,数据库db_a的一条元数据如下:
{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}}
其中,hsdcknakd是该条元数据的关键字,通过对{“db”:“db_a”,“table”:“table_a”,…}采用哈希算法,可以得到该关键字,该条元数据表示数据库db_a中包括表table_a。
应理解的是,该条元数据所包括的字段包括:hsdcknakd、db、db_a、table、table_a。
应理解的是,该条元数据的数据格式是关键字和数值构成的数据格式,即关键字-数值(key-value),例如,hsdcknakd是关键字,{“db”:“db_a”,“table”:“table_a”,…}是数值。也可以认为该条元数据的数据格式是关键字-字段-数值(key-filed-value),例如,hsdcknakd是关键字,db 、table 是字段,db_a、 table_a是数值。实际上,该条元数据的数据格式也可以是{“db”:“db_a”,“table”:“table_a”,…},本申请实施例对元数据的格式不做限制。
应理解的是,待查询语句的关联元数据指的是与该待查询语句关联的元数据。对于任一个待查询语句,其可以具有至少一条关联元数据,任一个关联元数据可以包括以下至少一项,但不限于:该待查询语句关联的字段、该字段的类型、该字段的存储路径等。
例如,待查询语句是:select count(*) from db_a::table_a left join db_b::table_b on table_a.id = table_b.id;而待查询语句关联的字段包括:db_a、table_a、db_b、table_b。而数据库db_a的一条元数据是:{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}},其包括:db_a和table_a。基于此,该条元数据是上述待查询语句的关联元数据。类似的,数据库db_b的一条元数据是:{“hsdcknakd1”:{“db”:“db_b”,“table”:“table_b”,…}},其包括:db_b和table_b。基于此,该条元数据也是上述待查询语句的关联元数据。
S240:第一数据处理模块向计算引擎发送关联元数据;
S250:计算引擎基于关联元数据,在多个数据库中确定待查询语句的关联数据库;在待查询语句存在多个关联数据库时,基于多个关联数据库将待查询语句生成多个子待查询语句;
应理解的是,待查询语句的关联数据库指的是与待查询语句关联的数据库,待查询语句可以具有一个或多个关联数据库。
在一些可实现方式中,关联元数据中可以携带待查询语句的关联数据库的字段,基于此,计算引擎在获取到关联元数据之后,其可以确定待查询语句的关联数据库。
例如,假设计算引擎获取到了两条关联元数据:
{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}};
{“hsdcknakd1”:{“db”:“db_b”,“table”:“table_b”,…}}。
计算引擎通过对这两条关联元数据进行解析,确定待查询语句的关联数据库是:db_a和db_b。
在一些可实现方式中,计算引擎基于多个关联数据库将待查询语句生成多个子待查询语句包括:计算引擎先基于多个关联数据库将待查询语句划分为多个初始子待查询语句;针对每个初始子查询语句,计算引擎可以判断供查询该初始子待查询语句的关联数据库所属的电子设备是否支持该初始子查询语句的语法,如果该电子设备不支持该初始子查询语句的语法,那么计算引擎可以对该初始子查询语句进行语法改写,以得到子待查询语句,其中,该电子设备支持该子待查询语句的语法;如果该电子设备支持该初始子查询语句的语法,那么该初始子查询语句就是上述子查询语句。
例如,假设待查询语句是:insert into db_a::table_a
select*from db_b::table_b left join
db_c::table_c on
db_b:table_b.name=db_c::table_c.name
or db_b:table_b.id=db_c::table_c.id
其中,该待查询语句表示将数据库db_b的表table_b与数据库db_c的表table_c根据ID或者namen联合成新的表格,并将联合后的表格插入至数据库db_a的表table_a。
计算引擎可以将该待查询语句划分为两个初始子待查询语句,分别是:
1、insert into db_a::table_a
2、select*from db_b::table_b left join
db_c::table_c on
db_b:table_b.name=db_c::table_c.name
or db_b:table_b.id=db_c::table_c.id
其中,假设计算引擎确定第一个子待查询语句对应电子设备1,第二个子待查询语句对应电子设备2,其中,电子设备1支持第一个子待查询语句的语法,电子设备2不支持第二个子待查询语句的语法,即不支持join on or,基于此,电子设备2需要对第二个子待查询语句的语法进行改写,改写成符合电子设备2的语法规定的子待查询语句,比如,电子设备2支持join on union,改写后的子待查询语句是:
select * from table_b join table_c on table_b.id= table_c.id
union
select * from table_b join table_c on table_b.name= table_c. name
其中,该子待查询语句与其对应的初始子待查询语句表示的意义相同。
再例如,假设待查询语句是:
select count(*) from db_a::table_a left join db_b::table_b on table_a.id = table_b.id;
假设待查询语句的两条关联元数据如下:
{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}};
{“hsdcknakd1”:{“db”:“db_b”,“table”:“table_b”,…}}。
那么计算引擎可以将该待查询语句划分为如下两条子待查询语句:
select * from db_a::table_a;
select * from db_b::table_b。
其中,两个子待查询语句分别表示:获取数据库db_a中的表table_a;获取数据库db_b中的表table_b。其中,select * from db_a::table_a与数据库db_a对应,select *from db_b::table_b与数据库db_b对应。
假设供这两个子待查询语句查询的关联数据库所属的电子设备分别支持各自对应的子待查询语句,在这种情况下,计算引擎可以无需对这两个子待查询语句进行改写,而是直接下推给对应的电子设备。
应理解的是,对于任一个关联数据库,其可以对应一个或多个子待查询语句,本申请实施例对此不做限制。所谓某个关联数据库与某个子待查询语句对应指的是该关联数据库可供查询该子待查询语句。例如,数据库db_a可供查询select * from db_a::table_a,表示select * from db_a::table_a与数据库db_a对应。
应理解的是,所述多个关联数据库供查询的子待查询语句不同。例如,数据库db_a可供查询select * from db_a::table_a,数据库db_b可供查询select * from db_b::table_b。
S260:针对多个子待查询语句中的每个子待查询语句,计算引擎将子待查询语句发送给供查询该子待查询语句的关联数据库所属的电子设备;
在一些可实现方式中,计算引擎可以通过查表方式确定每个关联数据库所属的电子设备。例如,表1示例性的示出了关联数据库与电子设备之间的映射关系:
表1
通过查表可知,数据库db_a对应的电子设备是Device 1,数据库db_b对应的电子设备是Device 2。
在另一些可实现方式中,关联数据库与电子设备之间的映射关系也可以存储在其他设备上,计算引擎在确定了关联数据库之后,其可以将关联数据库的字段,如db_a发送给存储该映射关系的设备,使得该设备通过查表方式确定每个关联数据库所属的电子设备,并将该电子设备的标识返回给计算引擎。
总之,本申请实施例对计算引擎关联数据库所属的电子设备的确定方法不做限制。
S270:电子设备对该子待查询语句进行查询,得到子查询结果;
应理解的是,每个子待查询语句对应一个子查询结果。例如,子待查询语句:select * from db_a::table_a,其对应的子查询结果是table_a。子待查询语句:select *from db_b::table_b,其对应的子查询结果是table_b。
S280:多个关联数据库所属的电子设备向计算引擎发送各自得到的子查询结果;
S290:计算引擎基于每个子查询结果,得到待查询语句的查询结果。
在一些可实现方式中,计算引擎可以按照待查询语句对多个子查询结果进行处理,得到待查询语句的查询结果。
例如,假设待查询语句是:
select count(*) from db_a::table_a left join db_b::table_b on table_a.id = table_b.id;
假设计算引擎获取到的两个子查询结果是:table_a和table_b。基于此,计算引擎可以对table_a和table_b根据ID联合成新的表格,并统计该表格的行数。
下面通过一个示例对本申请实施例提供的数据处理方法进行示例性阐述:
假设计算引擎获取到的待查询语句是:select count(*) from db_a::table_aleft join db_b::table_b on table_a.id = table_b.id;该计算引擎将该待查询语句发送给第一数处理模块,第一数处理模块确定该待查询语句的关联元数据包括:{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}}, {“hsdcknakd1”:{“db”:“db_b”,“table”:“table_b”,…}}。并将这两条关联元数据发送给计算引擎,计算引擎通过对这两条关联元数据进行解析,确定待查询语句的关联数据库是:db_a和db_b。并将该待查询语句划分为如下两条子待查询语句:select * from db_a::table_a;select * from db_b::table_b。计算引擎可以通过查表方式确定数据库db_a对应的电子设备是Device 1,数据库db_b对应的电子设备是Device 2。假设这两个电子设备分别支持其对对应的子待查询语句的语法,那么计算引擎可以将select * from db_a::table_a发送给Device 1,将select *from db_b::table_b发送给Device 2。Device 1对子待查询语句:select * from db_a::table_a进行查询,得到子查询结果table_a,并将该子查询结果发送给计算引擎。Device 2对子待查询语句:select * from db_b::table_b进行查询,得到子查询结果table_b,并将该子查询结果发送给计算引擎。基于此,计算引擎可以对table_a和table_b根据ID联合成新的表格,并统计该表格的行数。
在本申请实施例中,第一数据处理模块可以基于各个数据库的统一元数据对待查询语句进行元数据查询,使得待查询语句无需通过各个数据库各自的元数据服务进行查询,从而可以降低各个数据库对应的元数据服务的负荷。
应理解的是,如果将关联数据库所属的电子设备理解为关联数据库的数据来源,即数据源,将第一数据处理模块理解为统一元数据服务,第二数据处理模块理解为数据源中的元数据服务,那么在本申请实施例中,统一元数据服务可以将不同的子待查询语句下推到对应的数据源执行,以替代直接访问这些数据源的元数据服务,从而可以降低各个数据源中的元数据服务的负荷。
如上所述,第一数据处理模块可以基于各个数据库的统一元数据对待查询语句进行元数据查询,那么该第一数据处理模块需要与各个数据库对应的第二数据处理模块进行数据同步,以保证第一数据处理模块可以基于各个数据库的最新统一元数据进行元数据查询。
假设存在多个第二数据处理模块,每个第二数据处理模块维护上述多个数据库中的一个数据库的元数据,其中,该第二数据处理模块可以是图1中的元数据服务。基于此,在一些可实现方式中,第一数据处理模块接收每个第二数据处理模块首次上报的元数据;第一数据处理模块执行以下至少一项:第一数据处理模块对第一数据处理模块和每个第二数据处理模块进行元数据实时同步;第一数据处理模块对第一数据处理模块和每个第二数据处理模块进行元数据定时同步。
在一些可实现方式中,第一数据处理模块可以在接收到每个第二数据处理模块首次上报的元数据之后,再执行以下至少一项:第一数据处理模块对第一数据处理模块和每个第二数据处理模块进行元数据实时同步;第一数据处理模块对第一数据处理模块和每个第二数据处理模块进行元数据定时同步。
再另一些可实现方式中,上述元数据实时同步过程和/或元数据定时同步过程可以在至少一个第二数据处理模块首次上报的元数据之后执行。
总之,本申请实施例对如下三个过程的执行顺序不做限制:接收每个第二数据处理模块首次上报的元数据、元数据实时同步过程、元数据定时同步过程。
图3为本申请实施例提供的一种元数据实时同步方法的流程图,该方法应用于第一数据处理模块,该第一数据处理模块可以是图1中的统一元数据服务,如图3所示,该方法可以包括:
S310:第一数据处理模块接收指示消息;
其中,针对每个第二数据处理模块,该第二数据处理模块是在针对其当前维护的元数据的更新操作进行实时检测,并在检测到更新操作时向第一数据处理模块上报指示消息的;指示消息用于指示更新操作以及被执行更新操作的元数据。
在一些可实现方式中,更新操作可以是增加、删除或修改操作。
应理解的是,对于每个第二数据处理模块,其向第一数据处理模块首次上报对应数据库的元数据,后续该第二数据处理模块可以对实时检测对应数据库的元数据是否发生增加、删除或修改操作等,如果发生了增加、删除或修改操作,其可以向第一数据处理模块发送指示消息,以指示增加、删除或修改操作以及被执行增加、删除或修改操作的元数据。
例如,当某第二数据处理模块,其对应的数据库是db_a,该第二数据处理模块在某时刻检测到db_a对应的元数据中增加了一条元数据data 1,其可以向第一数据处理模块指示db_a对应的元数据中增加了一条元数据data 1。
例如,当某第二数据处理模块,其对应的数据库是db_a,该第二数据处理模块在某时刻检测到db_a对应的元数据中删除了一条元数据data 2,其可以向第一数据处理模块指示db_a对应的元数据中删除了一条元数据data 2。
例如,当某第二数据处理模块,其对应的数据库是db_a,该第二数据处理模块在某时刻检测到db_a对应的元数据中元数据data 3被修改成了元数据data 3’,其可以向第一数据处理模块指示db_a对应的元数据中元数据data 3被修改成了元数据data 3’。
S320:第一数据处理模块基于指示消息,对第一数据处理模块和每个第二数据处理模块进行元数据同步。
应理解的是,第一数据处理模块可以基于指示消息,执行该指示消息所指示的操作。
例如,当指示消息指示db_a对应的元数据中增加了一条元数据data 1时,第一数据处理模块可以在其当前维护的多个元数据中增加元数据data 1。
例如,当指示消息指示db_a对应的元数据中删除了一条元数据data 2时,第一数据处理模块可以在其当前维护的多个元数据中删除元数据data 2。
例如,当指示消息指示db_a对应的元数据中元数据data 3被修改成了元数据data3’ 时,第一数据处理模块可以将当前维护的多个元数据中的元数据data 3被修改为元数据data 3’。
下面通过一个示例对本申请实施例提供的元数据实时同步方法进行示例性阐述:
假设存在三个第二数据处理模块,分别是第二数据处理模块1、2和3,其中,第二数据处理模块1维护数据库db_a的元数据,第二数据处理模块2维护数据库db_b的元数据,第二数据处理模块3维护数据库db_c的元数据。第二数据处理模块1、2和3可以分别对其所维护的数据库的更新操作进行实时检测,假设数据处理模块1在t1时刻检测到数据库db_a对应的元数据增加了一条元数据data 1,这时其可以向第一数据处理模块指示数据库db_a对应的元数据增加了一条元数据data 1,第一数据处理模块可以在其当前维护的多个元数据中增加元数据data 1。假设数据处理模块2在t2时刻检测到数据库db_b对应的元数据删除了一条元数据data 2,这时其可以向第一数据处理模块指示db_b对应的元数据删除了一条元数据data 2,第一数据处理模块可以在其当前维护的多个元数据中删除元数据data 2。假设数据处理模块3在t3时刻检测到数据库db_c对应的元数据中元数据data 3被修改成了元数据data 3’,这时其可以向第一数据处理模块指示元数据data 3被修改成了元数据data 3’,第一数据处理模块可以在其当前维护的多个元数据中将元数据data 3修改为元数据data 3’。
在本申请实施例中,第一数据处理模块可以接收每个第二数据处理模块实时上报的指示消息,以对第一数据处理模块当前维护的元数据进行实时更新,使得第一数据处理模块当前维护的元数据与每个第二数据处理模块所维护的元数据保持同步。从而可以保证第一数据处理模块基于各个数据库的最新统一元数据进行元数据查询,以保证元数据查询结果的准确性,进而可以提高数据库查询的可靠性。
在另一些可实现方式中,第一数据处理模块可以无需接收每个第二数据处理模块首次上报的元数据;而是进行如下元数据同步方法,包括:
S310’:第一数据处理模块接收指示消息;
其中,针对每个第二数据处理模块,该第二数据处理模块是在针对其对应的数据库中的数据的更新操作进行实时检测,并在检测到更新操作时向第一数据处理模块上报指示消息的;指示消息用于指示更新操作以及被执行更新操作的数据。
在一些可实现方式中,更新操作可以是增加、删除或修改操作。
例如,当某第二数据处理模块,其对应的数据库是db_a,该第二数据处理模块在某时刻检测到db_a增加了table_a,其可以向第一数据处理模块指示db_a中增加了table_a。
例如,当某第二数据处理模块,其对应的数据库是db_a,该第二数据处理模块在某时刻检测到db_a中删除了table_b,其可以向第一数据处理模块指示db_a中删除了table_b。
例如,当某第二数据处理模块,其对应的数据库是db_a,该第二数据处理模块在某时刻检测到db_a中table_c被修改成了元数据table_c’,其可以向第一数据处理模块指示db_a中table_c被修改成了元数据table_c’。
S320’:第一数据处理模块基于指示消息,对第一数据处理模块和每个第二数据处理模块进行元数据同步。
应理解的是,第一数据处理模块可以基于指示消息在其当前维护的元数据中更新该指示消息所指示的数据的元数据。
例如,当指示消息指示db_a中增加了table_a时,第一数据处理模块可以生成table_a的元数据,并在其当前维护的多个元数据中增加该元数据。
例如,当指示消息指示db_a中删除了table_b时,第一数据处理模块可以在其当前维护的多个元数据中删除table_b对应的元数据。
例如,当指示消息指示db_a中table_c被修改成了元数据table_c’时,第一数据处理模块可以生成table_c’的元数据,将当前维护的多个元数据中的table_c对应的元数据被修改为table_c’的元数据。
应理解的是,在第一数据处理模块执行完该元数据实时同步之后,也可以执行下面将要提到的元数据定时同步。
在本申请实施例中,如果将关联数据库所属的电子设备理解为关联数据库的数据源,将第一数据处理模块理解为统一元数据服务,第二数据处理模块理解为数据源中的元数据服务,那么在本申请实施例中,当数据源进行增加、删除或修改表等数据,而影响其维护的元数据的变化时,数据源可以建立一个服务,实时地将这些操作以及对应的数据反馈给统一元数据服务,使得统一元数据服务基于这些操作同步其维护的元数据。从而可以保证第一数据处理模块基于各个数据库的最新统一元数据进行元数据查询,以保证元数据查询结果的准确性,进而可以提高数据库查询的可靠性。
图4为本申请实施例提供的一种元数据定时同步方法的交互流程图,该方法应用于第一数据处理模块和多个数据库对应的多个第二数据处理模块;其中,多个第二数据处理模块与多个数据库一一对应,该第一数据处理模块可以是图1中的统一元数据服务,该第二数据处理模块可以是图1中的元数据服务,如图4所示,该方法可以包括:
S410:第一数据处理模块定时向每个第二数据处理模块发送第一数据处理模块当前维护的多个元数据各自的关键字;
在一些可实现方式中,第一数据处理模块从每个第二数据处理模块获取到的元数据的数据格式为关键字-数值(key-value)。
例如,一条元数据可以如下:
{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}}
其中,hsdcknakd是该条元数据的关键字,{“db”:“db_a”,“table”:“table_a”,…}是该条元数据的数值。
应理解的是,每条元数据包括一个关键字。例如,元数据是:{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}},包括的关键字是hsdcknakd。
S420:每个第二数据处理模块在各自当前维护的元数据中查找第一元数据;
其中,每个第一元数据包括第一数据处理模块当前维护的一个元数据的关键字。第一数据处理模块之所以令每个第二数据处理模块查找第一元数据,是为了比较包括同一关键字的元数据在第一数据处理模块和第二数据处理模块之间是否保持一致,如果不一致,第一数据处理模块与第二数据处理模块之间需要进行元数据同步。
例如,假设包括在第一数据处理模块当前维护的多个元数据中,包括关键字hsdcknakd的元数据是{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}},而在第二数据处理模块1当前维护的多个元数据中,包括关键字hsdcknakd的元数据是{“hsdcknakd”: {“db”:“db_a”,“table”:“table_a’”,…}},这两个元数据不一致,表示第一数据处理模块与第二数据处理模块1之间需要进行元数据同步。
S430:第一数据处理模块接收每个第一元数据;
S440:第一数据处理模块确定第一数据处理模块当前维护的多个元数据中不同于每个第一元数据的至少一个第二元数据;
换句话讲,至少一个第二元数据是第一数据处理模块当前维护的多个元数据与全部第一元数据的差异元数据。
应理解的是,由于第一数据处理模块与第二数据处理模块存在如下几种元数据不同步情况:
情况一,第二数据处理模块增加了某一元数据,但第一数据处理模块未在当前维护元数据中增加该元数据。
情况二,第二数据处理模块删除了某一元数据,但第一数据处理模块未删除当前维护元数据中的该元数据。
情况三,第二数据处理模块对某一元数据进行了修改,但第一数据处理模块未对当前维护元数据中的该元数据进行修改。
应理解的是,在进行元数据定时同步时,第一数据处理模块主要检测其当前维护的多个元数据是否与每个第二数据处理模块维护的元数据是否相同,对于属于任一个第二数据处理模块维护的元数据,但不属于第一数据处理模块当前维护的多个元数据的元数据,可以无需进行元数据同步。基于此,对于上述三种情况,第一数据处理模块可以将情况二和情况三认定为第一数据处理模块和多个第二数据处理模块之间未实现元数据同步。
基于此,本申请实施例存在两种类型的第二元数据,分别是第一类型的第二元数据和第二类型的第二元数据。
第一类型元数据是属于第一数据处理模块当前维护的多个元数据,且不属于每个第二数据处理模块当前维护的元数据的一类元数据。例如,对于上述情况二中的元数据,该元数据是第一类型的第二元数据。
第二类型元数据是第一数据处理模块当前维护的多个元数据中与全部第一元数据中的一个元数据具有相同关键字,且不同元数据的一类元数据。例如,对于上述情况三中的元数据,该元数据是第二类型的第二元数据。
S450:第一数据处理模块基于至少一个第二元数据的关键字,对第一数据处理模块和每个第二数据处理模块进行元数据同步。
其中,S450可以通过以下任一种可实现方式实现,但不限于此:
可实现方式一,S450可以包括:
S450-1A:第一数据处理模块将至少一个第二元数据的关键字存储至目标数据库;
应理解的是,如上所述,至少一个第二元数据是第一数据处理模块当前维护的多个元数据与全部第一元数据的差异元数据。基于此,目标数据库是用于存储这些差异元数据的关键字的数据库。
应理解的是,第一数据处理模块之所以将这些差异元数据的关键字存储至目标数据库,是为了降低第一数据处理模块的功耗,第一数据处理模块可以待其当前维护的多个元数据与多个每个第二数据处理模块维护的元数据的数据差异稳定之后,再进行元数据同步。而第一数据处理模块当前维护的多个元数据与每个第二数据处理模块维护的元数据的数据差异是否稳定可以通过目标数据库是否满足预设条件来判断。其中,若目标数据库满足预设条件,则表示第一数据处理模块当前维护的多个元数据与每个第二数据处理模块维护的元数据的数据差异稳定;若目标数据库不满足预设条件,则表示第一数据处理模块当前维护的多个元数据与至少一个第二数据处理模块维护的元数据的数据差异不稳定。
在一些可实现方式中,预设条件包括以下任一项,但不限于此:
目标数据库中的关键字在第一预设时长内保持不变;
目标数据库的更新次数达到预设次数;
从将至少一个第二元数据的关键字存储至目标数据库开始计时,且计时时长达到第二预设时长。
在一些可实现方式中,第一预设时长的取值可以大于或等于理论上对目标数据库的两次更新时长。
应理解的是,在本申请实施例中,针对目标数据库的每次更新过程包括:第一数据处理模块遍历目标数据库中的每个关键字,并从第一数据处理模块当前维护的多个元数据以及某个第二数据处理模块获取该关键字对应的元数据,比较这两个元数据,如果不一致,将该关键字确定为差异元数据的关键字,当目标数据库中的每个关键字被遍历完毕之后,目标数据库中的关键字被更新为本次所有差异元数据的关键字。基于此,目标数据库的两次更新时长指的是目标数据库的两次更新过程的累计时长。如果目标数据库达到或超过两次更新时长,其关键字仍然保持不变,表示当前维护元数据第一数据处理模块当前维护的多个元数据与每个第二数据处理模块维护的元数据的数据差异稳定。
在一些可实现方式中,上述预设次数的取值可以是大于2的任意整数,本申请实施例对此不做限制。
在一些可实现方式中,在本申请实施例中,第一数据处理模块将至少一个第二元数据的关键字存储至目标数据库也可以被认为是对目标数据库的一次更新。其中,这次更新是对目标数据库的首次更新。
在一些可实现方式中,上述第二预设时长的取值可以是10分钟、20分钟、30分钟等,本申请实施例对此不做限制。
S450-2A:若目标数据库满足预设条件,则第一数据处理模块基于目标数据库中的关键字,对第一数据处理模块和每个第二数据处理模块进行元数据同步;
应理解的是,若目标数据库满足预设条件,则表示第一数据处理模块当前维护的多个元数据与每个第二数据处理模块维护的元数据的数据差异稳定,在这种情况下,第一数据处理模块基于目标数据库中的关键字,对第一数据处理模块和每个第二数据处理模块进行元数据同步。
应理解的是,在本申请实施例中存在两种关键字,分别是第一关键字和第二关键字。
第一关键字指的是目标数据库中存在的关键字,但是每个第二数据处理模块当前未维护的关键字。例如,目标数据库中存在关键字hsdcknakd,但每个第二数据处理模块当前未维护该关键字,基于此,可以确定该关键字hsdcknakd为第一关键字。
应理解的是,第一关键字是可以是某个第二数据处理模块维护的元数据中已被删除的元数据的关键字。
第二关键字指的是目标数据库中存在的关键字,且第一数据处理模块当前维护的多个元数据中包括携带该关键字的元数据,某个第二数据处理模块当前维护的元数据中也包括携带该关键字对应的元数据,只是这两处元数据不同。例如,目标数据库中存在关键字hsdcknakd,某个第二数据处理模块当前维护有元数据:{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a’”,…}},第一数据处理模块当前维护的多个元数据中包括元数据:{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}},基于此,可以确定该关键字hsdcknakd为第二关键字。
应理解的是,第二关键字是某个第二数据处理模块当前维护的元数据中已被修改的元数据的关键字。
基于此,第一数据处理模块基于目标数据库中的关键字,对第一数据处理模块和每个第二数据处理模块进行元数据同步可以包括:若目标数据库中存在第一关键字,且每个第二数据处理模块当前未维护第一关键字对应的元数据,则第一数据处理模块从第一数据处理模块当前维护的多个元数据中删除包括第一关键字的元数据;若目标数据库中存在第二关键字,且存在一个第二数据处理模块当前维护有包括第二关键字的第五元数据,并且第五元数据与第一数据处理模块当前维护的多个元数据中包括第二关键字的第六元数据不同,则第一数据处理模块将第六元数据更新为第五元数据。
例如,假设目标数据库中存在关键字hsdcknakd,但每个第二数据处理模块未维护携带该关键字的元数据,基于此,第一数据处理模块可以从第一数据处理模块当前维护的多个元数据中删除包括关键字hsdcknakd的元数据。
例如,假设目标数据库中存在关键字hsdcknakd,但某个第二数据处理模块当前维护有元数据{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a’”,…}},而第一数据处理模块当前维护有元数据是{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}},基于此,第一数据处理模块可以将第一数据处理模块当前维护的元数据{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}}修改为{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a’”,…}}。
S450-3A:若目标数据库不满足预设条件,则第一数据处理模块向每个第二数据处理模块发送目标数据库中的关键字,以使每个第二数据处理模块在各自当前维护的元数据中查找第三元数据,其中,每个第三元数据包括目标数据库中的一个关键字;第一数据处理模块确定第一数据处理模块当前维护的多个元数据中不同于多个第三元数据的至少一个第四元数据;将目标数据库中的关键字更新为至少一个第四元数据的关键字,并判断更新后的目标数据库是否满足预设条件,直至对第一数据处理模块和每个第二数据处理模块完成元数据同步为止。
在本申请实施例中,针对目标数据库的首次更新,第一数据处理模块可以获取其当前维护的多个元数据各自的关键字,接着从第二数据处理模块获取这些关键字的元数据,以进行元数据比较。但为了提高定时数据同步效率,针对目标数据库的除首次更新以外的其他次更新,第一数据处理模块可以获取目标数据库中的关键字,即差异元数据的关键字,接着从多个第二数据处理模块获取这些关键字的元数据,以进行元数据比较。
下面通过一个示例对本申请实施例提供的元数据定时同步方法进行示例性阐述:
例如,图5为本申请实施例提供的一种元数据定时同步过程的示意图,如图5所示,统一数据库可以存储多个数据库的统一元数据,该统一数据库可以是Redis库,这些元数据的数据格式是关键字-数值(key-value)。(Postgre SQL,PG)库可以存储某一数据源的元数据,第一数据处理模块在从PG库中获取元数据时,需要将该元数据的格式转换为关键字-数值(key-value),以便后续可以和统一数据库中的元数据进行比较。针对目标数据库的首次更新,第一数据处理模块获取统一数据库中各个元数据的关键字,接着分别从统一数据库和PG库的元数据经过格式转换后的元数据中获取这些关键字对应的元数据,进行第1轮比较,并将差异元数据的关键字存储至目标数据库中。针对目标数据库的第二次更新,第一数据处理模块获取目标数据库的关键字,接着分别从统一数据库和PG库的元数据经过格式转换后的元数据获取这些关键字对应的元数据,进行第2轮比较,并将目标数据库更新为该轮差异元数据的关键字,以此类推,针对目标数据库的第N次更新,第一数据处理模块获取目标数据库的关键字,接着分别从统一数据库和PG库的元数据经过格式转换后的元数据获取这些关键字对应的元数据,进行第N轮比较,并将目标数据库更新为该轮差异元数据的关键字。进一步地,第一数据处理模块基于最新目标数据库中的关键字,对第一数据处理模块和每个第二数据处理模块进行元数据同步。
可实现方式二,S450可以包括:
S450-1B:若基于至少一个第二元数据的关键字,确定存在属于第一数据处理模块当前维护的多个元数据,且不属于每个第二数据处理模块当前维护的元数据的第一类型的第二元数据,则第一数据处理模块从第一数据处理模块当前维护的多个元数据中删除第一类型的第二元数据;
应理解的是,第一类型元数据是属于第一数据处理模块当前维护的多个元数据,且不属于每个第二数据处理模块当前维护的元数据的一类元数据。
S450-2B:若基于至少一个第二元数据的关键字,确定存在属于第一数据处理模块当前维护的多个元数据的第二类型的第二元数据,且第二类型元数据与一个第二数据处理模块当前维护的第七元数据具有相同关键字,第二类型的第二元数据与第七元数据不同,则第一数据处理模块将第二类型的第二元数据更新为第七元数据。
应理解的是,第二类型元数据是第一数据处理模块当前维护的多个元数据中与全部第一元数据中的一个元数据具有相同关键字,且不同元数据的一类元数据。
应理解的是,可实现方式二与可实现方式一的不同之处在于:在可实现方式二中,第一数据处理模块无需待差异元数据稳定,再进行数据同步。而在可实现方式一中,第一数据处理模块需待差异元数据稳定,再进行数据同步。
下面通过一个示例对本申请实施例提供的元数据定时同步方法进行示例性阐述:
假设存在三个第二数据处理模块,分别是第二数据处理模块1、2和3,其中,第二数据处理模块1维护数据库db_a的元数据,第二数据处理模块2维护数据库db_b的元数据。第一数据处理模块当前维护的元数据包括:{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}}和{“hsdcknakd1”:{“db”:“db_b”,“table”:“table_b”,…}},第一数据处理模块向第二数据处理模块1发送关键字hsdcknakd和hsdcknakd1,并向第二数据处理模块2发送关键字hsdcknakd和hsdcknakd1,接收到第二数据处理模块1发送的元数据{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a’”,…}},并未接收到包括hsdcknakd1的元数据,基于此,第一数据处理模块将其维护的元数据{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}}修改为{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a’”,…}},并删除元数据{“hsdcknakd1”:{“db”:“db_b”,“table”:“table_b”,…}}。
应理解的是,本申请实施例所提供的元数据定时同步方案可以单独执行,也可以与上述任一种元数据同步方案结合,本申请实施例对此不做限制。
在本申请实施例中,第一数据处理模块与每个第二数据处理模块可以进行元数据定时同步,从而可以保证第一数据处理模块基于各个数据库的最新统一元数据进行元数据查询,以保证元数据查询结果的准确性,进而可以提高数据库查询的可靠性。
进一步地,第一数据处理模块可以待其当前维护的多个元数据与每个第一元数据的数据差异稳定之后,再进行元数据定时同步,从而可以降低第一数据处理模块的功耗。
更进一步地,针对目标数据库的除首次更新以外的其他次更新,第一数据处理模块可以获取目标数据库中的关键字,即差异元数据的关键字,接着从多个第二数据处理模块获取这些关键字的元数据,以进行元数据比较。由于这种比较方式是非全量比较方式,从而可以提高元数据定时同步效率。
应理解的是,如果每个第二数据处理模块每次都可以与第一数据处理模块保持数据同步,在这种情况下,第一数据处理模块基于其当前维护的多个元数据可以查询到待查询语句对应的关联元数据,而如果存在至少一个第二数据处理模块,其至少一次与第一数据处理模块未能保持元数据同步,在这种情况下,可能存在第一数据处理模块无法基于其当前维护的多个元数据查询到关联元数据的情况,基于此,本申请实施例还提出如下可实现方式:
在一些可实现方式中,若第一数据处理模块基于第一数据处理模块当前维护的多个元数据未完全查询到待查询语句的关联元数据,则向每个第二数据处理模块发送待查询语句,以使每个第二数据处理模块查询待查询语句的关联元数据;第一数据处理模块接收待查询语句的关联元数据。
例如,假设待查询语句是:select count(*) from db_a::table_a left joindb_b::table_b on table_a.id = table_b.id;
第一数据处理模块可以查到关联元数据{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}};但第一数据处理模块无法查找到db_b和table_b的关联元数据,这时第一数据处理模块可以将上述待查询语句发送给每个第二数据处理模块,假设数据库db_a对应的第二数据处理模块基于其自己维护的元数据查找到关联元数据{“hsdcknakd”:{“db”:“db_a”,“table”:“table_a”,…}},其可以将该关联元数据发送给第一数据处理模块。假设数据库db_b对应的第二数据处理模块基于其自己维护的元数据查找到关联元数据{“hsdcknakd1”:{“db”:“db_b”,“table”:“table_b”,…}},其可以将该关联元数据发送给第一数据处理模块。
在一些可实现方式中,第一数据处理模块接收待查询语句的关联元数据之后,其可以维护该关联元数据。
在本申请实施例中,即使第一数据处理模块和至少一个第二数据处理模块未实现元数据同步,使得第一数据处理模块基于其当前维护的多个元数据未完全查询到待查询语句的关联元数据,在这种情况下,也可以通过第二数据处理模块进行元数据查询,从而可以进一步地提高数据库查询的可靠性。
以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。
还应理解,在本申请的各种方法实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文对本申请实施例提供的方法进行了说明,下面对本申请实施例提供的系统进行说明。
图6为本申请实施例提供的一种数据处理系统600的示意图,如图6所示,该系统600包括:计算引擎610和第一数据处理模块620;计算引擎610用于获取待查询语句;并向第一数据处理模块620发送待查询语句;其中,第一数据处理模块620维护有多个数据库的元数据;第一数据处理模块620基于第一数据处理模块620当前维护的多个元数据,查询待查询语句的关联元数据;并向计算引擎610发送关联元数据;计算引擎610还用于基于关联元数据,在多个数据库中确定待查询语句的关联数据库;计算引擎610还用于在待查询语句存在多个关联数据库时,基于多个关联数据库将待查询语句生成多个子待查询语句;并针对多个子待查询语句中的每个子待查询语句,将子待查询语句发送给供查询子待查询语句的关联数据库所属的电子设备,以使电子设备对子待查询语句进行查询,得到子查询结果;计算引擎610还用于接收每个子查询结果;并基于每个子查询结果,得到待查询语句的查询结果。
在一些可实现方式中,第一数据处理模块620还用于接收每个第二数据处理模块首次上报的元数据;其中,每个第二数据处理模块维护有多个数据库中的一个数据库的元数据;第一数据处理模块620还用于执行以下至少一项:对第一数据处理模块620和每个第二数据处理模块进行元数据实时同步;对第一数据处理模块620和每个第二数据处理模块进行元数据定时同步。
在一些可实现方式中,第一数据处理模块620具体用于:接收指示消息;其中,每个第二数据处理模块是在针对其当前维护的元数据的更新操作进行实时检测,并在检测到更新操作时向第一数据处理模块620上报指示消息的;指示消息用于指示更新操作以及被执行更新操作的元数据;基于指示消息,对第一数据处理模块620和每个第二数据处理模块进行元数据同步。
在一些可实现方式中,第一数据处理模块620具体用于:定时向每个第二数据处理模块发送第一数据处理模块620当前维护的多个元数据各自的关键字,以使每个第二数据处理模块在各自当前维护的元数据中查找第一元数据;其中,每个第一元数据包括第一数据处理模块620当前维护的一个元数据的关键字;接收每个第一元数据;并确定第一数据处理模块620当前维护的多个元数据中不同于每个第一元数据的至少一个第二元数据;基于至少一个第二元数据的关键字,对第一数据处理模块620和每个第二数据处理模块进行元数据同步。
在一些可实现方式中,第一数据处理模块620具体用于:将至少一个第二元数据的关键字存储至目标数据库;若目标数据库满足预设条件,则基于目标数据库中的关键字,对第一数据处理模块620和每个第二数据处理模块进行元数据同步;若目标数据库不满足预设条件,则向每个第二数据处理模块发送目标数据库中的关键字,以使每个第二数据处理模块在各自当前维护的元数据中查找第三元数据,其中,每个第三元数据包括目标数据库中的一个关键字;确定第一数据处理模块620当前维护的多个元数据中不同于多个第三元数据的至少一个第四元数据;将目标数据库中的关键字更新为至少一个第四元数据的关键字,并判断更新后的目标数据库是否满足预设条件,直至对第一数据处理模块620和每个第二数据处理模块完成元数据同步为止。
在一些可实现方式中,第一数据处理模块620具体用于:若目标数据库中存在第一关键字,且每个第二数据处理模块当前未维护第一关键字对应的元数据,则从第一数据处理模块620当前维护的多个元数据中删除包括第一关键字的元数据;若目标数据库中存在第二关键字,且存在一个第二数据处理模块当前维护有包括第二关键字的第五元数据,并且第五元数据与第一数据处理模块620当前维护的多个元数据中包括第二关键字的第六元数据不同,则将第六元数据更新为第五元数据。
在一些可实现方式中,预设条件包括以下任一项:
目标数据库中的关键字在第一预设时长内保持不变;
目标数据库的更新次数达到预设次数;
从将至少一个第二元数据的关键字存储至目标数据库开始计时,且计时时长达到第二预设时长。
在一些可实现方式中,第一数据处理模块620具体用于:若基于至少一个第二元数据的关键字,确定存在属于第一数据处理模块620当前维护的多个元数据,且不属于每个第二数据处理模块当前维护的元数据的第一类型的第二元数据,则从第一数据处理模块620当前维护的多个元数据中删除第一类型的第二元数据;若基于至少一个第二元数据的关键字,确定存在属于第一数据处理模块620当前维护的多个元数据的第二类型的第二元数据,且第二类型元数据与一个第二数据处理模块当前维护的第七元数据具有相同关键字,第二类型的第二元数据与第七元数据不同,则将第二类型的第二元数据更新为第七元数据。
在一些可实现方式中,第一数据处理模块620还用于:将从任一个第二数据处理模块获取到的元数据的数据格式设置为关键字和数值构成的数据格式。
在一些可实现方式中,第一数据处理模块620还用于:若基于第一数据处理模块620当前维护的多个元数据未完全查询到关联元数据,则向每个第二数据处理模块发送待查询语句,以使每个第二数据处理模块查询关联元数据;接收关联元数据。
应理解的是,系统实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图6所示的系统600可以执行图2至图4对应的方法实施例,并且系统600中的各个模块的前述和其它操作和/或功能分别为了实现图2至图4中的各个方法中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的系统600。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图7是本申请实施例提供的电子设备的示意性框图。该电子设备可以是大数据计算平台的后台服务器,但不限于此。
如图7所示,该电子设备可包括:
存储器710和处理器720,该存储器710用于存储计算机程序,并将该程序代码传输给该处理器720。换言之,该处理器720可以从存储器710中调用并运行计算机程序,以实现本申请实施例中的方法。
例如,该处理器720可用于根据该计算机程序中的指令执行上述方法实施例。
在本申请的一些实施例中,该处理器720可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器710包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器710中,并由该处理器720执行,以完成本申请提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备中的执行过程。
如图7所示,该电子设备还可包括:
收发器730,该收发器730可连接至该处理器720或存储器710。
其中,处理器720可以控制该收发器730与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器730可以包括发射机和接收机。收发器730还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
本申请还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务模块器或数据中心通过有线(例如同轴电缆、光纤、数字对象线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务模块器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务模块器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上内容仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。
Claims (15)
1.一种数据处理方法,其特征在于,所述方法应用于数据处理系统,所述数据处理系统包括:计算引擎和第一数据处理模块;所述方法包括:
所述计算引擎获取待查询语句;并向所述第一数据处理模块发送所述待查询语句;其中,所述第一数据处理模块维护有多个数据库的元数据;
所述第一数据处理模块基于所述第一数据处理模块当前维护的多个元数据,查询所述待查询语句的关联元数据;并向所述计算引擎发送所述关联元数据;
所述计算引擎基于所述关联元数据,在所述多个数据库中确定所述待查询语句的关联数据库;并在所述待查询语句存在多个关联数据库时,基于所述多个关联数据库将所述待查询语句生成多个子待查询语句;
针对所述多个子待查询语句中的每个子待查询语句,所述计算引擎将所述子待查询语句发送给供查询所述子待查询语句的关联数据库所属的电子设备,以使所述电子设备对所述子待查询语句进行查询,得到子查询结果;
所述计算引擎接收每个所述子查询结果;并基于每个所述子查询结果,得到所述待查询语句的查询结果。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述第一数据处理模块接收每个第二数据处理模块首次上报的元数据;其中,所述每个第二数据处理模块维护有所述多个数据库中的一个数据库的元数据;
所述第一数据处理模块执行以下至少一项:
所述第一数据处理模块对所述第一数据处理模块和所述每个第二数据处理模块进行元数据实时同步;
所述第一数据处理模块对所述第一数据处理模块和所述每个第二数据处理模块进行元数据定时同步。
3.根据权利要求2所述的方法,其特征在于,所述第一数据处理模块对所述第一数据处理模块和所述每个第二数据处理模块进行元数据实时同步,包括:
所述第一数据处理模块接收指示消息;其中,所述每个第二数据处理模块是在针对其当前维护的元数据的更新操作进行实时检测,并在检测到所述更新操作时向所述第一数据处理模块上报所述指示消息的;所述指示消息用于指示所述更新操作以及被执行所述更新操作的元数据;
所述第一数据处理模块基于所述指示消息,对所述第一数据处理模块和所述每个第二数据处理模块进行元数据同步。
4.根据权利要求2所述的方法,其特征在于,所述第一数据处理模块对所述第一数据处理模块和所述每个第二数据处理模块进行元数据定时同步,包括:
所述第一数据处理模块定时向所述每个第二数据处理模块发送所述第一数据处理模块当前维护的多个元数据各自的关键字,以使所述每个第二数据处理模块在各自当前维护的元数据中查找第一元数据;其中,每个所述第一元数据包括所述第一数据处理模块当前维护的一个元数据的关键字;
所述第一数据处理模块接收每个所述第一元数据;并确定所述第一数据处理模块当前维护的多个元数据中不同于每个所述第一元数据的至少一个第二元数据;
所述第一数据处理模块基于所述至少一个第二元数据的关键字,对所述第一数据处理模块和所述每个第二数据处理模块进行元数据同步。
5.根据权利要求4所述的方法,其特征在于,所述第一数据处理模块基于所述至少一个第二元数据的关键字,对所述第一数据处理模块和所述每个第二数据处理模块之间进行元数据同步,包括:
所述第一数据处理模块将所述至少一个第二元数据的关键字存储至目标数据库;
若所述目标数据库满足预设条件,则所述第一数据处理模块基于所述目标数据库中的关键字,对所述第一数据处理模块和所述每个第二数据处理模块进行元数据同步;
若所述目标数据库不满足所述预设条件,则所述第一数据处理模块向所述每个第二数据处理模块发送所述目标数据库中的关键字,以使所述每个第二数据处理模块在各自当前维护的元数据中查找第三元数据,其中,每个所述第三元数据包括所述目标数据库中的一个关键字;所述第一数据处理模块确定所述第一数据处理模块当前维护的多个元数据中不同于所述多个第三元数据的至少一个第四元数据;将所述目标数据库中的关键字更新为所述至少一个第四元数据的关键字,并判断更新后的目标数据库是否满足所述预设条件,直至对所述第一数据处理模块和所述每个第二数据处理模块完成元数据同步为止。
6.根据权利要求5所述的方法,其特征在于,所述第一数据处理模块基于所述目标数据库中的关键字,对所述第一数据处理模块和所述每个第二数据处理模块进行元数据同步,包括:
若所述目标数据库中存在第一关键字,且所述每个第二数据处理模块当前未维护所述第一关键字对应的元数据,则所述第一数据处理模块从所述第一数据处理模块当前维护的多个元数据中删除包括所述第一关键字的元数据;
若所述目标数据库中存在第二关键字,且存在一个所述第二数据处理模块当前维护有包括所述第二关键字的第五元数据,并且所述第五元数据与所述第一数据处理模块当前维护的多个元数据中包括所述第二关键字的第六元数据不同,则所述第一数据处理模块将所述第六元数据更新为所述第五元数据。
7.根据权利要求5或6所述的方法,其特征在于,所述预设条件包括以下任一项:
所述目标数据库中的关键字在第一预设时长内保持不变;
所述目标数据库的更新次数达到预设次数;
从将所述至少一个第二元数据的关键字存储至所述目标数据库开始计时,且计时时长达到第二预设时长。
8.根据权利要求4所述的方法,其特征在于,所述第一数据处理模块基于所述至少一个第二元数据的关键字,对所述第一数据处理模块和所述每个第二数据处理模块之间进行元数据同步,包括:
若基于所述至少一个第二元数据的关键字,确定存在属于所述第一数据处理模块当前维护的多个元数据,且不属于所述每个第二数据处理模块当前维护的元数据的第一类型的第二元数据,则所述第一数据处理模块从所述第一数据处理模块当前维护的多个元数据中删除所述第一类型的第二元数据;
若基于所述至少一个第二元数据的关键字,确定存在属于所述第一数据处理模块当前维护的多个元数据的第二类型的第二元数据,且所述第二类型元数据与一个所述第二数据处理模块当前维护的第七元数据具有相同关键字,所述第二类型的第二元数据与所述第七元数据不同,则所述第一数据处理模块将所述第二类型的第二元数据更新为所述第七元数据。
9.根据权利要求2-6任一项所述的方法,其特征在于,还包括:
所述第一数据处理模块将从任一个所述第二数据处理模块获取到的元数据的数据格式设置为关键字和数值构成的数据格式。
10.根据权利要求2-6任一项所述的方法,其特征在于,还包括:
若所述第一数据处理模块基于所述第一数据处理模块当前维护的多个元数据未完全查询到所述关联元数据,则向所述每个第二数据处理模块发送所述待查询语句,以使所述每个第二数据处理模块查询所述关联元数据;
所述第一数据处理模块接收所述关联元数据。
11.一种数据处理方法,其特征在于,所述方法应用于计算引擎,所述方法包括:
获取待查询语句;并向第一数据处理模块发送所述待查询语句;其中,所述第一数据处理模块维护有多个数据库的元数据;以使所述第一数据处理模块基于所述第一数据处理模块当前维护的多个元数据,查询所述待查询语句的关联元数据;
接收所述关联元数据;并基于所述关联元数据,在所述多个数据库中确定所述待查询语句的关联数据库;
在所述待查询语句存在多个关联数据库时,基于所述多个关联数据库将所述待查询语句生成多个子待查询语句;
针对所述多个子待查询语句中的每个子待查询语句,将所述子待查询语句发送给供查询所述子待查询语句的关联数据库所属的电子设备,以使所述电子设备对所述子待查询语句进行查询,得到子查询结果;
接收每个所述子查询结果;并基于每个所述子查询结果,得到所述待查询语句的查询结果。
12.一种数据处理方法,其特征在于,所述方法应用于第一数据处理模块,其中,所述第一数据处理模块维护有多个数据库的元数据;所述方法包括:
接收待查询语句;
基于所述第一数据处理模块当前维护的多个元数据,查询所述待查询语句的关联元数据;
向计算引擎发送所述关联元数据;其中,所述关联元数据用于确定所述待查询语句的关联数据库。
13.一种数据处理系统,其特征在于,包括:计算引擎和第一数据处理模块;
所述计算引擎用于获取待查询语句;并向所述第一数据处理模块发送所述待查询语句;其中,所述第一数据处理模块维护有多个数据库的元数据
所述第一数据处理模块基于所述第一数据处理模块当前维护的多个元数据,查询所述待查询语句的关联元数据;并向所述计算引擎发送所述关联元数据;
所述计算引擎还用于基于所述关联元数据,在所述多个数据库中确定所述待查询语句的关联数据库;
所述计算引擎还用于在所述待查询语句存在多个关联数据库时,基于所述多个关联数据库将所述待查询语句生成多个子待查询语句;并针对所述多个子待查询语句中的每个子待查询语句,将所述子待查询语句发送给供查询所述子待查询语句的关联数据库所属的电子设备,以使所述电子设备对所述子待查询语句进行查询,得到子查询结果;
所述计算引擎还用于接收每个所述子查询结果;并基于每个所述子查询结果,得到所述待查询语句的查询结果。
14.一种电子设备,其特征在于,包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至12中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1至12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311202263.6A CN116955416B (zh) | 2023-09-18 | 2023-09-18 | 数据处理方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311202263.6A CN116955416B (zh) | 2023-09-18 | 2023-09-18 | 数据处理方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116955416A true CN116955416A (zh) | 2023-10-27 |
CN116955416B CN116955416B (zh) | 2023-12-08 |
Family
ID=88462336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311202263.6A Active CN116955416B (zh) | 2023-09-18 | 2023-09-18 | 数据处理方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116955416B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426611A (zh) * | 2012-01-13 | 2012-04-25 | 广州从兴电子开发有限公司 | 一种数据库同步方法及装置 |
JP2013114507A (ja) * | 2011-11-29 | 2013-06-10 | Toshiba Corp | 情報処理装置、画像選択方法およびプログラム |
WO2017120087A1 (en) * | 2016-01-08 | 2017-07-13 | Microsoft Technology Licensing, Llc | Database operation using metadata of data sources |
CN107491558A (zh) * | 2017-09-08 | 2017-12-19 | 北京奇艺世纪科技有限公司 | 元数据更新方法及装置 |
US20190303509A1 (en) * | 2018-03-29 | 2019-10-03 | Oracle International Corporation | Metadata querying system |
CN111782923A (zh) * | 2020-06-24 | 2020-10-16 | 平安科技(深圳)有限公司 | 数据查询方法、装置、电子设备及存储介质 |
CN114372064A (zh) * | 2022-03-22 | 2022-04-19 | 飞狐信息技术(天津)有限公司 | 数据处理装置、方法、计算机可读介质及处理器 |
CN115168398A (zh) * | 2022-08-09 | 2022-10-11 | 北京京东振世信息技术有限公司 | 数据查询方法、装置、电子设备及存储介质 |
US20220405295A1 (en) * | 2021-06-17 | 2022-12-22 | Sap Se | Metadata integration based on scope function definition |
CN116383246A (zh) * | 2023-03-31 | 2023-07-04 | 阿里巴巴(中国)有限公司 | 联合查询方法以及装置 |
-
2023
- 2023-09-18 CN CN202311202263.6A patent/CN116955416B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013114507A (ja) * | 2011-11-29 | 2013-06-10 | Toshiba Corp | 情報処理装置、画像選択方法およびプログラム |
CN102426611A (zh) * | 2012-01-13 | 2012-04-25 | 广州从兴电子开发有限公司 | 一种数据库同步方法及装置 |
WO2017120087A1 (en) * | 2016-01-08 | 2017-07-13 | Microsoft Technology Licensing, Llc | Database operation using metadata of data sources |
CN107491558A (zh) * | 2017-09-08 | 2017-12-19 | 北京奇艺世纪科技有限公司 | 元数据更新方法及装置 |
US20190303509A1 (en) * | 2018-03-29 | 2019-10-03 | Oracle International Corporation | Metadata querying system |
CN111782923A (zh) * | 2020-06-24 | 2020-10-16 | 平安科技(深圳)有限公司 | 数据查询方法、装置、电子设备及存储介质 |
US20220405295A1 (en) * | 2021-06-17 | 2022-12-22 | Sap Se | Metadata integration based on scope function definition |
CN114372064A (zh) * | 2022-03-22 | 2022-04-19 | 飞狐信息技术(天津)有限公司 | 数据处理装置、方法、计算机可读介质及处理器 |
CN115168398A (zh) * | 2022-08-09 | 2022-10-11 | 北京京东振世信息技术有限公司 | 数据查询方法、装置、电子设备及存储介质 |
CN116383246A (zh) * | 2023-03-31 | 2023-07-04 | 阿里巴巴(中国)有限公司 | 联合查询方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116955416B (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107784044B (zh) | 表数据查询方法及装置 | |
CN111247518B (zh) | 用于数据库分片的方法和系统 | |
US20160188749A1 (en) | Feed Data Storage and Query | |
CN106951557B (zh) | 日志关联方法、装置和应用其的计算机系统 | |
US20160103858A1 (en) | Data management system comprising a trie data structure, integrated circuits and methods therefor | |
CN113407600B (zh) | 一种动态实时同步多源大表数据的增强实时计算方法 | |
US20180321706A1 (en) | Timestamp Alignment Across a Plurality Of Computing Devices | |
US20220121652A1 (en) | Parallel Stream Processing of Change Data Capture | |
EP3690669A1 (en) | Method, apparatus, device and storage medium for managing index technical field | |
CN114372064B (zh) | 数据处理装置、方法、计算机可读介质及处理器 | |
EP3107010B1 (en) | Data integration pipeline | |
CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
CN116955416B (zh) | 数据处理方法、系统、设备及存储介质 | |
US20190147047A1 (en) | Object-level image query and retrieval | |
CN107544916B (zh) | 一种缓存方法及存储设备 | |
CN106603610A (zh) | 一种数据获取方法及装置 | |
CN112148739B (zh) | 独立于加密数据库的密文索引方法及系统 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
US20230138113A1 (en) | System for retrieval of large datasets in cloud environments | |
GB2522832A (en) | A method and a system for loading data with complex relationships | |
CN111221857B (zh) | 从分布式系统中读数据记录的方法和装置 | |
CN116756177B (zh) | 一种mysql数据库的多表索引维护方法和系统 | |
CN113094370B (zh) | 数据索引构建方法、装置、存储介质及电子设备 | |
US20230297572A1 (en) | Cache update adaptation | |
US20240095246A1 (en) | Data query method and apparatus based on doris, storage medium and device |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |