CN116719859A - 数据调动方法和装置、存储介质及电子装置 - Google Patents
数据调动方法和装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN116719859A CN116719859A CN202310666500.8A CN202310666500A CN116719859A CN 116719859 A CN116719859 A CN 116719859A CN 202310666500 A CN202310666500 A CN 202310666500A CN 116719859 A CN116719859 A CN 116719859A
- Authority
- CN
- China
- Prior art keywords
- data
- information
- database
- client
- target 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000001483 mobilizing effect Effects 0.000 title description 13
- 238000013507 mapping Methods 0.000 claims abstract description 26
- 230000004044 response Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000001960 triggered effect Effects 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据调动方法和装置、存储介质及电子装置,涉及大数据技术领域,该数据调动方法包括:在获取到客户端发送的查询信息的情况下,识别查询信息对应的字段信息,根据字段信息确定响应查询信息的目标数据库的数据库类型,并获取数据库类型对应的元数据集合;启动建表模式,将元数据集合中的数据信息映射到目标数据库对应预设格式的第一数据库表中,得到第一表,以及将元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;在建立第一表与第二表之间对于同一数据信息的关联关系的情况下,将第二表发送至客户端,以对响应查询信息的数据调动进行指示。
Description
技术领域
本申请涉及大数据技术领域,具体而言,涉及一种数据调动方法和装置、存储介质及电子装置。
背景技术
对于大数据计算引擎读取MPP(massively parallel processing,大规模并行处理,简称MPP)数据库的问题,在相关技术中,如图1所示,主要是通过大数据领域的计算引擎如Spark、Presto等,通过jdbc(Java DataBaseConnectivity java,数据库连接,简称jdbc)协议来连接MPP数据库,然后读取数据,但上述方式读取MPP数据库性能差,在读取数据阶段的性能受限于协调节点单线程吐数据的性能瓶颈,特别是当数据量非常大的时候,读取耗时会非常久。此外,上述方式还无法有效发挥Spark、Presto等计算引擎的并发处理特点,受限于jdbc单线程拉取数据的机制,使得数据计算任务只能分配到某个工作节点上,导致其他计算节点资源闲置,不能充分发挥分布式计算的能力。
针对相关技术中,无法实现对数据库在整个数据读取环节的多并发处理,且数据处理效率低下等问题,目前尚未提出有效的解决方案。
因此,有必要对相关技术予以改良以克服相关技术中的所述缺陷。
发明内容
本申请实施例提供了一种数据调动方法和装置、存储介质及电子装置,以至少解决无法实现对数据库在整个数据读取环节的多并发处理,且数据处理效率低下等问题。
根据本申请实施例的一方面,提供一种数据调动方法,包括:在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示。
在一个示例性的实施例中,根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型之前,上述方法还包括:解析所述字段信息,得到所述目标数据库对应的库名以及表名;根据所述库名以及表名从数据库集合中确定出所述目标数据库;将所述目标数据库的数据节点存储的数据并行导出到所述客户端对应的缓存空间。
在一个示例性的实施例中,将所述目标数据库的数据节点存储的数据并行导出到所述客户端对应的缓存空间之前,上述方法还包括:确定所述客户端对应的缓存组件的挂载记录;在所述挂载记录指示所述客户端具有缓存组件的情况下,确定所述缓存组件在所述客户端中设置的缓存空间对应的目录信息,并生成与所述目录信息对应的数据文件地址;在所述挂载记录指示所述客户端不具有缓存组件的情况下,确定所述目标数据库的数据导出出现异常,并生成对应的操作信息。
在一个示例性的实施例中,确定所述缓存组件在所述客户端中设置的缓存空间对应的目录信息,并生成与所述目录信息对应的数据文件地址之后,上述方法还包括:确定所述数据文件地址对于所述目标数据库导出数据的存储数量;在所述存储数量大于预设数量的情况下,指示所述缓存组件在所述客户端中设置新的缓存空间;在所述存储数量小于或等于预设数量的情况下,确定所述目标数据库是否完成导出数据的操作。
在一个示例性的实施例中,确定所述目标数据库是否完成导出数据的操作,包括:在确定所述目标数据库完成导出数据的操作的情况下,允许所述客户端根据所述缓存空间中的数据对所述查询信息进行响应;在确定所述目标数据库未完成导出数据的操作的情况下,禁止所述客户端根据所述缓存空间中的数据对所述查询信息进行响应。
在一个示例性的实施例中,在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端之后,上述方法还包括:确定所述第二表与所述客户端中存在的数据文件地址的关联关系;根据所述关联关系生成所述目标数据库对应的分布式查询规则。
在一个示例性的实施例中,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示之后,上述方法还包括:获取所述第二表对所述查询信息的响应结果;在所述响应结果指示已成功指示所述查询信息的数据调动的情况下,获取所述第二表再次响应查询信息的时间,并确定所述第二表响应两次查询信息的时间差值,在所述时间差值大于预设差值的情况下,向所述客户端发送删除所述第二表的操作指令;在所述响应结果指示未成功指示所述查询信息的数据调动的情况下,对生成所述第二表的元数据集合进行更新。
根据本申请实施例的另一方面,还提供了一种数据调动装置,包括:获取模块,用于在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;确定模块,用于根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;映射模块,用于启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;发送模块,用于在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示。
根据本申请实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述数据调动方法。
根据本申请实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述数据调动方法。
通过本申请,在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示,从而解决无法实现对数据库在整个数据读取环节的多并发处理,且数据处理效率低下等等问题,通过第一表与第二表之间的查询转换,将查询信息的具体查询过程转化为基于第二表(Hive外表)的分布式查询,提升了查询效率,实现了在对数据库在整个数据读取环节的多并发处理。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据相关技术的一种MPP数据库中数据调动的架构示意图;
图2是根据本申请实施例的数据调动方法的硬件环境示意图;
图3是根据本申请实施例的数据调动方法的流程图;
图4是根据可选实施例的一种数据调动的整体架构图;
图5是根据可选实施例的另一种数据调动的整体架构图;
图6是根据可选实施例的数据调动的流程示意图;
图7是根据本申请实施例的数据调动装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面结合实施例对本申请进行说明:
根据本申请实施例的一个方面,提供了一种数据调动方法,可选地,在本实施例中,上述数据调动方法可以应用于如图2所示的由服务器101和大数据计算引擎103所构成的硬件环境中。如图2所示,服务器101通过网络与大数据计算引擎103进行连接,可用于为大数据计算引擎103或大数据计算引擎103上安装的应用程序107提供服务,应用程序107可以是数据调动应用程序等等。可在服务器101上或独立于服务器101设置数据库105,用于为服务器101提供数据存储服务,例如,车辆数据存储服务器、环境数据存储服务器,上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、WIFI及其他实现无线通信的网络,大数据计算引擎103可以是配置有应用程序的终端,可以包括但不限于移动终端,上述服务器101可以是单一服务器,也可以是由多个服务器组成的服务器集群,或者是云服务器,使用上述数据调动方法的应用程序107通过大数据计算引擎103或其他连接的显示设备进行显示。
结合图2所示,上述数据调动方法可以在大数据计算引擎103通过如下图2中的步骤S202-S206实现:
可选地,在本实施例中,上述数据调动方法还可以通过服务器实现,例如,图2所示的服务器101中实现;或由大数据计算引擎和服务器共同实现。
上述仅是一种示例,本实施例不做具体的限定。
可选地,作为一种可选的实施方式,图3是根据本申请实施例的数据调动方法的流程图,如图3所示,上述数据调动方法包括以下步骤S202-S208:
步骤S202,在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;
步骤S204,根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;
可选的,上述元数据集合包括以下至少之一:数据库类型对应的表名、数据库类型对应表的字段、表的字段对应的字段类型。
步骤S206,启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;
作为一种可选的示例,在实际应用中,上述第一表可以是GaussDB高斯数据库对应的数据库表,第二表可以是Hive外表,该Hive外表用于指示将GaussDB高斯数据库中的数据在查询发起后并行导出至数据库对应外部缓存后,不同数据对应的外部地址。
步骤S208,在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示。
需要说明的是,所述客户端可以是手机、平板、电脑等终端设备。
通过本申请,在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示,从而解决无法实现对数据库在整个数据读取环节的多并发处理,且数据处理效率低下等等问题,通过第一表与第二表之间的查询转换,将查询信息的具体查询过程转化为基于第二表(Hive外表)的分布式查询,提升了查询效率,实现了在对数据库在整个数据读取环节的多并发处理。
在一个示例性的实施例中,根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型之前,所述方法还包括:解析所述字段信息,得到所述目标数据库对应的库名以及表名;根据所述库名以及表名从数据库集合中确定出所述目标数据库;将所述目标数据库的数据节点存储的数据并行导出到所述客户端对应的缓存空间。
可以理解的是,还可以根据查询信息中携带的字段信息确定保存对应数据的目标数据库的库名,以及目标数据库对应的数据表的表名,基于库名以及表名可以快速定位到目标数据库,从而再结合库名以及表名将目标数据库中不同节点存储的数据并行到出到目标数据库之外的分布式文件系统或分布式缓存中,利用分布式的特性使得这些导出的数据可以在整个数据读取环节均能执行多并发处理,大大提升了数据处理效率。此外,如将数据导出至外部的分布式缓存,在响应查询信息时,客户端无需与数据库之间进行交互,仅依据分布式缓存中的数据便可以完成对客户端的查询信息的响应,因此,对于查询信息的响应时间也得到了提升,提升了目标用户的使用体验。
需要说明的是,上述并行导出时可以采用数据库的高速协议或中间件(例如GaussDB的gds中间件、Greenplum的gpfdist、Teradata的fdw机制等)。具体的,快速导出协议将利用中间件将数据并发的从数据库的数据节点并行导出到外部文件系统。该外部文件系统可以是与客户端存在联系的分布式文件系统或分布式缓存。
在一个示例性的实施例中,将所述目标数据库的数据节点存储的数据并行导出到所述客户端对应的缓存空间之前,所述方法还包括:确定所述客户端对应的缓存组件的挂载记录;在所述挂载记录指示所述客户端具有缓存组件的情况下,确定所述缓存组件在所述客户端中设置的缓存空间对应的目录信息,并生成与所述目录信息对应的数据文件地址;在所述挂载记录指示所述客户端不具有缓存组件的情况下,确定所述目标数据库的数据导出出现异常,并生成对应的操作信息。
可以理解的,为了提升对数据库导出数据的读写效率,还可通过在缓存空间对应的分布式文件系统或分布式缓存中挂载对应的缓存组件来提升对于导出数据的读写效率,例如,可以借助分布式缓存系统Alluxio来提升读写效率。将Alluxio组件挂载到本地目录,当数据导出到本地目录后会通过Alluxio fuse挂载机制将数据写入Alluxio。然后创建Hive外表时,将外表location指定到Alluxio中数据文件的具体路径。最后将本次查询转换成了对Hive表的查询。大数据引擎在进行Hive表读取的时候,会通过Hive元数据获取该表的数据文件地址,从而可以充分调动大数据引擎的各个工作节点并发读取Alluxio各个工作节点上的数据,从而真正实现MPP数据库并发输出数据,大数据计算引擎多个节点并行读取数据,真正做的分布式的数据处理。
在一个示例性的实施例中,确定所述缓存组件在所述客户端中设置的缓存空间对应的目录信息,并生成与所述目录信息对应的数据文件地址之后,所述方法还包括:确定所述数据文件地址对于所述目标数据库导出数据的存储数量;在所述存储数量大于预设数量的情况下,指示所述缓存组件在所述客户端中设置新的缓存空间;在所述存储数量小于或等于预设数量的情况下,确定所述目标数据库是否完成导出数据的操作。
也就是说,由于数据文件地址可能存在一定的数据存储量,当从目标数据库缓存出的数据超出当前数据文件地址的存储数量的情况下,可以通过设置新的存储空间以保证数据并行导出的顺利进行。
在一个示例性的实施例中,确定所述目标数据库是否完成导出数据的操作,包括:在确定所述目标数据库完成导出数据的操作的情况下,允许所述客户端根据所述缓存空间中的数据对所述查询信息进行响应;在确定所述目标数据库未完成导出数据的操作的情况下,禁止所述客户端根据所述缓存空间中的数据对所述查询信息进行响应。
为了保证对查询信息的有效响应,避免数据不全导致的查询效果不佳,因此,需要保证完成目标数据库中的所有数据的导入之后,才能通过缓存空间中的数据对查询信息进行响应。
在一个示例性的实施例中,在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端之后,所述方法还包括:确定所述第二表与所述客户端中存在的数据文件地址的关联关系;根据所述关联关系生成所述目标数据库对应的分布式查询规则。
在一个示例性的实施例中,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示之后,所述方法还包括:获取所述第二表对所述查询信息的响应结果;在所述响应结果指示已成功指示所述查询信息的数据调动的情况下,获取所述第二表再次响应查询信息的时间,并确定所述第二表响应两次查询信息的时间差值,在所述时间差值大于预设差值的情况下,向所述客户端发送删除所述第二表的操作指令;在所述响应结果指示未成功指示所述查询信息的数据调动的情况下,对生成所述第二表的元数据集合进行更新。
显然,上述所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。为了更好的理解上述方法,以下结合实施例对上述过程进行说明,但不用于限定本申请实施例的技术方案,具体地:
在一个可选的实施例中,图4是根据可选实施例的一种数据调动的整体架构图,如图4所示:创建多连接的方式来提高引擎读取MPP数据库的并发度。具体技术方案如下:对需要查询的表按照某个键进行切分,需要强调一点,这里需要选取数值型的字段作为分区键,这样才能够根据预期的并发数据进行范围切分。将一个表切分成多个分片后,为每个分片建立一个jdbc连接,每个连接读取特定分片的范围的数据,从而实现引擎对目标表的并发读取。但上述方案在应用时,存在以下问题:第一、对于字段类型要求高:需要表有数值型字段,如果没有则无法进行有效切分;第二、对于字段数值要求高:对于数值型字段,需要数值连续,如果字段值分布稀疏会导致切分的数据分片数据量不均匀,可能会出现数据倾斜问题;第三、对数据源系统造成压力:如果并发度配置过高,会导致查询一张表创建数十个甚至数百个jdbc连接的问题,这样会对MPP数据源造成一定的访问压力;此外,上述技术方案还未解决数据源侧的并发“吐”数据的问题,使得整个数据读取环节仍然存在单并发瓶颈。
为了避免上述问题,作为一种可选的实施方式,本申请还提供了另一种数据调动的整体架构图,图5是根据可选实施例的另一种数据调动的整体架构图。具体的,将MPP数据库的查询转换成对Hive外表的查询,即将MPP数据库的表数据通过MPP数据库的快速导出协议或中间件快速导出到外部的分布式文件系统或分布式缓存,然后通过创建Hive外表的方式绑定导出的数据文件路径,最后通过大数据计算引擎来读取Hive表数据。
需要说明的是,当用户对MPP数据库的查询,会通过MPP数据库的高速协议或中间件(例如GaussDB的gds中间件、Greenplum的gpfdist、Teradata的fdw机制等)。快速导数协议将利用中间件将数据并发的从MPP数据库的数据节点并行导出到外部文件系统。为了减少数据导出的效率,还可以借助分布式缓存系统Alluxio来提升读写效率。将Alluxio组件挂载到本地目录,当数据导出到本地目录后会通过Alluxio fuse挂载机制将数据写入Alluxio。然后创建Hive外表时,将外表location指定到Alluxio中数据文件的具体路径。最后将本次查询转换成了对Hive表的查询。大数据引擎在进行Hive表读取的时候,会通过Hive元数据获取该表的数据文件地址,从而可以充分调动大数据引擎的各个工作节点并发读取Alluxio各个工作节点上的数据,从而真正实现MPP数据库并发输出数据,大数据计算引擎多个节点并行读取数据,真正做的分布式的数据处理。
可选的,图6是根据可选实施例的数据调动的流程示意图。以数据库为GaussDB高斯数据库为例,包括以下步骤:
在执行数据查询服务前,启动外部数据存储系统对应的fuse应用程序,通过fuse应用程序挂载本地GDS目标目录。
步骤1、发起SQL查询;
步骤2、获取库(GS、Hive)名和表名;
步骤3、根据库名、表名获取schema信息;
步骤4、返回该表在元数据信息;
步骤5、进入建表模式,将获取到的元数据信息分别映射成GaussDB表和Hive表;
步骤6、创建Hive外表挂载到Alluxio fuse接的表目录(jdbc)
步骤7、异步触发GS GDS操作;
步骤7.1、创建GS外表挂载Alluxio fuse挂载目录;
步骤7.2、执行insert操作触发GDS导数动作;继而将数据库中的数据多并行导入到Alluxio fuse挂载目录对应的表目录下。
步骤7.3、数据导入,结束,修改状态;
步骤8、状态轮询;
步骤9、通过Hive Connector查询GS2 Hive表;
步骤10、返回查询结果;
步骤11、返回结果;
可选的,上述步骤在应用中,具体方式如下:当用户发起一条查询语句进行MPP数据库查询的时候,首先需要查询出该GaussDB高斯数据库对应的GaussDB数据库表的schema信息,然后根据此信息分别映射出GaussDB表和Hive表的建外表字段,根据模板拼接出建外表的语句。当查询进入到元数据检查阶段,如果要查询的表在Hive中不存在,此时进行Hive外表创建,路径指向Alluxio的表目录(目录通过前期进行约定,/gdsdata/tblname)。接下来创建GaussDB外表,借助gds server(基于GaussDB的fdw机制实现的一个轻量级服务)将该外表的路径指定到某个外部地址(此地址被Alluxio fuse提前进行挂载),通过insertinto语句触发导出数据到该GaussDB外表所定位的外部地址。由于该外部地址已经被Alluxio挂载,所以数据其实直接进入到了Alluxio中。当导数完成后,会通知整个流程继续向下进行,从而完成整个查询调度,需要说明的是,Hive Connector是大数据引擎读取Hive表过程的统称。
需要说明的是,上述方式将对传统MPP数据库的jdbc查询转换为对Hive外表的分布式查询,提升了查询效率,并将MPP数据库导出数据到分布式缓存系统以降低磁盘IO开销;可选的,上述Alluxio为基于内存的分布式文件系统,如果对性能要求不严苛,可以用HDFS分布式文件系统进行代替。
通过上述步骤,通过将数据源从各个数据节点并发导出到分布式文件系统,然后通过分布式大数据计算引擎并行读取并处理数据,既实现了大数据计算引擎侧的分布式数据处理,又实现了MPP数据源侧的数据并发输出,可以同时提高引擎侧和MPP数据库侧查询性能;此外,上述实施方式不涉及到进行表的切分,所以不涉及对表的字段和数据的限制;进一步的,通过大数据计算引擎读取MPP数据库的数据节点,避免了MPP数据库的协调节点出现压力,大大提升了整个调度机制和调度流程的处理效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
在本实施例中还提供了一种数据调动装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的设备较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本申请实施例的数据调动装置的结构框图,该装置包括:
获取模块72,用于在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;
确定模块74,用于根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;
映射模块76,用于启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;
发送模块78,用于在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示。
通过上述装置,在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示,从而解决无法实现对数据库在整个数据读取环节的多并发处理,且数据处理效率低下等等问题,通过第一表与第二表之间的查询转换,将查询信息的具体查询过程转化为基于第二表(Hive外表)的分布式查询,提升了查询效率,实现了在对数据库在整个数据读取环节的多并发处理。
在一个示例性的实施例中,上述装置还包括:导出模块,用于根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型之前,解析所述字段信息,得到所述目标数据库对应的库名以及表名;根据所述库名以及表名从数据库集合中确定出所述目标数据库;将所述目标数据库的数据节点存储的数据并行导出到所述客户端对应的缓存空间。
在一个示例性的实施例中,上述导出模块还包括:组件单元,用于将所述目标数据库的数据节点存储的数据并行导出到所述客户端对应的缓存空间之前,确定所述客户端对应的缓存组件的挂载记录;在所述挂载记录指示所述客户端具有缓存组件的情况下,确定所述缓存组件在所述客户端中设置的缓存空间对应的目录信息,并生成与所述目录信息对应的数据文件地址;在所述挂载记录指示所述客户端不具有缓存组件的情况下,确定所述目标数据库的数据导出出现异常,并生成对应的操作信息。
在一个示例性的实施例中,上述导出模块还包括:存储单元,用于确定所述缓存组件在所述客户端中设置的缓存空间对应的目录信息,并生成与所述目录信息对应的数据文件地址之后,确定所述数据文件地址对于所述目标数据库导出数据的存储数量;在所述存储数量大于预设数量的情况下,指示所述缓存组件在所述客户端中设置新的缓存空间;在所述存储数量小于或等于预设数量的情况下,确定所述目标数据库是否完成导出数据的操作。
在一个示例性的实施例中,上述存储单元,还用于在确定所述目标数据库完成导出数据的操作的情况下,允许所述客户端根据所述缓存空间中的数据对所述查询信息进行响应;在确定所述目标数据库未完成导出数据的操作的情况下,禁止所述客户端根据所述缓存空间中的数据对所述查询信息进行响应。
在一个示例性的实施例中,上述装置还包括:规则模块,用于在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端之后,确定所述第二表与所述客户端中存在的数据文件地址的关联关系;根据所述关联关系生成所述目标数据库对应的分布式查询规则。
在一个示例性的实施例中,上述装置还包括:更新模块,用于获取所述第二表对所述查询信息的响应结果;在所述响应结果指示已成功指示所述查询信息的数据调动的情况下,获取所述第二表再次响应查询信息的时间,并确定所述第二表响应两次查询信息的时间差值,在所述时间差值大于预设差值的情况下,向所述客户端发送删除所述第二表的操作指令;在所述响应结果指示未成功指示所述查询信息的数据调动的情况下,对生成所述第二表的元数据集合进行更新。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;
S2,根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;
S3,启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;
S4,在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;
S2,根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;
S3,启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;
S4,在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据调动方法,其特征在于,应用在大数据计算引擎中,包括:
在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;
根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;
启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;
在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示。
2.根据权利要求1所述的数据调动方法,其特征在于,根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型之前,所述方法还包括:
解析所述字段信息,得到所述目标数据库对应的库名以及表名;
根据所述库名以及表名从数据库集合中确定出所述目标数据库;
将所述目标数据库的数据节点存储的数据并行导出到所述客户端对应的缓存空间。
3.根据权利要求2所的数据调动方法,其特征在于,将所述目标数据库的数据节点存储的数据并行导出到所述客户端对应的缓存空间之前,所述方法还包括:确定所述客户端对应的缓存组件的挂载记录;
在所述挂载记录指示所述客户端具有缓存组件的情况下,确定所述缓存组件在所述客户端中设置的缓存空间对应的目录信息,并生成与所述目录信息对应的数据文件地址;
在所述挂载记录指示所述客户端不具有缓存组件的情况下,确定所述目标数据库的数据导出出现异常,并生成对应的操作信息。
4.根据权利要求3所述的数据调动方法,其特征在于,确定所述缓存组件在所述客户端中设置的缓存空间对应的目录信息,并生成与所述目录信息对应的数据文件地址之后,所述方法还包括:
确定所述数据文件地址对于所述目标数据库导出数据的存储数量;
在所述存储数量大于预设数量的情况下,指示所述缓存组件在所述客户端中设置新的缓存空间;
在所述存储数量小于或等于预设数量的情况下,确定所述目标数据库是否完成导出数据的操作。
5.根据权利要求4所述的数据调动方法,其特征在于,确定所述目标数据库是否完成导出数据的操作,包括:
在确定所述目标数据库完成导出数据的操作的情况下,允许所述客户端根据所述缓存空间中的数据对所述查询信息进行响应;
在确定所述目标数据库未完成导出数据的操作的情况下,禁止所述客户端根据所述缓存空间中的数据对所述查询信息进行响应。
6.根据权利要求1所述的数据调动方法,其特征在于,在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端之后,所述方法还包括:
确定所述第二表与所述客户端中存在的数据文件地址的关联关系;
根据所述关联关系生成所述目标数据库对应的分布式查询规则。
7.根据权利要求1所述的数据调动方法,其特征在于,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示之后,所述方法还包括:获取所述第二表对所述查询信息的响应结果;
在所述响应结果指示已成功指示所述查询信息的数据调动的情况下,获取所述第二表再次响应查询信息的时间,并确定所述第二表响应两次查询信息的时间差值,在所述时间差值大于预设差值的情况下,向所述客户端发送删除所述第二表的操作指令;
在所述响应结果指示未成功指示所述查询信息的数据调动的情况下,对生成所述第二表的元数据集合进行更新。
8.一种数据调动装置,其特征在于,应用在大数据计算引擎中,包括:
获取模块,用于在获取到客户端发送的查询信息的情况下,识别所述查询信息对应的字段信息,其中,所述字段信息用于指示在目标数据库中匹配目标文件;
确定模块,用于根据所述字段信息确定响应所述查询信息的目标数据库的数据库类型,并获取所述数据库类型对应的元数据集合;
映射模块,用于启动建表模式,将所述元数据集合中的数据信息映射到所述目标数据库对应预设格式的第一数据库表中,得到第一表,以及将所述元数据集合中的数据信息映射到数据仓库系统中的第二数据库表中,得到第二表;发送模块,用于在建立所述第一表与所述第二表之间对于同一数据信息的关联关系的情况下,将所述第二表发送至所述客户端,以对响应所述查询信息的数据调动进行指示。
9.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行权利要求1至7中任一项所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310666500.8A CN116719859A (zh) | 2023-06-06 | 2023-06-06 | 数据调动方法和装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310666500.8A CN116719859A (zh) | 2023-06-06 | 2023-06-06 | 数据调动方法和装置、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116719859A true CN116719859A (zh) | 2023-09-08 |
Family
ID=87870899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310666500.8A Pending CN116719859A (zh) | 2023-06-06 | 2023-06-06 | 数据调动方法和装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116719859A (zh) |
-
2023
- 2023-06-06 CN CN202310666500.8A patent/CN116719859A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582660B (zh) | 数据血缘分析方法、装置、设备、系统及可读存储介质 | |
CN111046041B (zh) | 数据处理方法和装置、存储介质及处理器 | |
WO2018035799A1 (zh) | 数据查询方法、应用和数据库服务器、中间件及系统 | |
CN104035938A (zh) | 一种性能持续集成数据处理的方法及装置 | |
CN114911830A (zh) | 基于时序数据库的索引缓存方法、装置、设备及存储介质 | |
CN115203159B (zh) | 一种数据存储方法、装置、计算机设备和存储介质 | |
CN111858760A (zh) | 一种异构数据库的数据处理方法及装置 | |
CN112613271A (zh) | 数据分页方法、装置、计算机设备及存储介质 | |
CN116737127A (zh) | 低代码开发方法、装置、设备和存储介质 | |
CN106021580B (zh) | Impala基于Hadoop集群日志分析方法和系统 | |
CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
CN108038253B (zh) | 一种日志查询的处理方法及装置 | |
CN113515564A (zh) | 基于j2ee的数据访问方法、装置、设备及存储介质 | |
CN108804502A (zh) | 大数据查询系统、方法、计算机设备及存储介质 | |
CN111125129A (zh) | 数据处理方法和装置、存储介质及处理器 | |
CN112579676A (zh) | 异构系统间的数据处理方法、装置、存储介质和设备 | |
CN116719859A (zh) | 数据调动方法和装置、存储介质及电子装置 | |
CN115455006A (zh) | 数据处理方法、数据处理装置、电子设备及存储介质 | |
CN112699149B (zh) | 目标数据获取方法、装置和存储介质及电子装置 | |
CN111143340B (zh) | 一种数据处理方法、装置及服务器、客户端 | |
CN113268483A (zh) | 请求处理方法和装置、电子设备和存储介质 | |
CN113127717A (zh) | 一种密钥检索方法和系统 | |
KR20120085375A (ko) | 로그데이터 분석시스템 | |
EP2990960A1 (en) | Data retrieval via a telecommunication network | |
CN112579705A (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 |