CN115563183A - 查询方法、装置及程序产品 - Google Patents
查询方法、装置及程序产品 Download PDFInfo
- Publication number
- CN115563183A CN115563183A CN202211170032.7A CN202211170032A CN115563183A CN 115563183 A CN115563183 A CN 115563183A CN 202211170032 A CN202211170032 A CN 202211170032A CN 115563183 A CN115563183 A CN 115563183A
- Authority
- CN
- China
- Prior art keywords
- function
- target
- query engine
- type
- target function
- 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
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000004458 analytical method Methods 0.000 claims abstract description 19
- 238000003860 storage Methods 0.000 claims abstract description 16
- 230000006870 function Effects 0.000 claims description 706
- 230000002776 aggregation Effects 0.000 claims description 22
- 238000004220 aggregation Methods 0.000 claims description 22
- 238000006243 chemical reaction Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 12
- 238000012217 deletion Methods 0.000 claims description 6
- 230000037430 deletion Effects 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 21
- 238000007405 data analysis Methods 0.000 abstract description 5
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 11
- 230000003993 interaction Effects 0.000 description 6
- 230000006978 adaptation Effects 0.000 description 4
- 238000012797 qualification Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种查询方法、装置、电子设备、存储介质及程序产品,涉及人工智能技术领域,具体涉及云计算、数据分析和大数据技术,可用于智能云场景下。具体实现方案为:根据函数创建请求创建目标函数;基于目标函数的元数据,将目标函数注册到函数管理中心;对于函数管理中心中已注册的目标函数,通过资源管理中心,将目标函数对应的函数资源,下载到查询引擎的工作节点中目标函数对应的本地资源目录中;基于查询引擎的工作节点中目标函数对应的本地资源目录中的函数资源,在查询引擎中动态加载目标函数;通过查询引擎,执行数据查询分析任务。本公开可以动态加载目标函数,提高了基于查询引擎的数据查询分析过程的高效性。
Description
技术领域
本公开涉及人工智能技术领域,具体涉及云计算、数据分析和大数据技术,尤其涉及查询方法、装置、电子设备、存储介质以及计算机程序产品,可用于智能云场景下。
背景技术
Trino查询引擎为了满足用户的查询需求,除了提供丰富的内置函数之外,还提供了标量函数、聚合函数、窗口函数三种函数类型,允许用户开发相应的逻辑函数并在查询中使用它们,以此达到在数据分析时的特定需求。
但是,现阶段,Trino引擎并不能动态地加载函数,只能将函数的实现绑定到插件中,然后在服务启动时注册到全局缓存中。基于此,若想在Trino查询引擎中添加新的函数,需要在对应插件中编写对应的函数代码,并编译该插件代码;然后,替换查询引擎集群中的JAR(Java Archive File,Java存档文件)包;最后,重启Trino查询引擎,才能将函数注册到Trino查询引擎的全局缓存中,以使用函数。
发明内容
本公开提供了一种查询方法、装置、电子设备、存储介质以及计算机程序产品。
根据第一方面,提供了一种查询方法,包括:根据函数创建请求创建目标函数;基于目标函数的元数据,将目标函数注册到函数管理中心;对于函数管理中心中已注册的目标函数,通过资源管理中心,将目标函数对应的函数资源,下载到查询引擎的工作节点中目标函数对应的本地资源目录中;基于查询引擎的工作节点中目标函数对应的本地资源目录中的函数资源,在查询引擎中动态加载目标函数;通过动态加载目标函数的查询引擎,执行数据查询分析任务。
根据第二方面,提供了一种查询装置,包括:创建单元,被配置成根据函数创建请求创建目标函数;注册单元,被配置成基于目标函数的元数据,将目标函数注册到函数管理中心;下载单元,被配置成对于函数管理中心中已注册的目标函数,通过资源管理中心,将目标函数对应的函数资源,下载到查询引擎的工作节点中目标函数对应的本地资源目录中;加载单元,被配置成基于查询引擎的工作节点中目标函数对应的本地资源目录中的函数资源,在查询引擎中动态加载目标函数;执行单元,被配置成通过动态加载目标函数的查询引擎,执行数据查询分析任务。
根据第三方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如第一方面任一实现方式描述的方法。
根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行如第一方面任一实现方式描述的方法。
根据第五方面,提供了一种计算机程序产品,包括:计算机程序,计算机程序在被处理器执行时实现如第一方面任一实现方式描述的方法。
根据本公开的技术,提供了一种查询方法,在创建目标函数之后,基于目标函数的元数据将其注册到函数管理中心,并通过资源管理中心将已注册的目标函数的函数资源下载到查询引擎的工作节点中目标函数对应的本地资源目录中,以将目标函数加载至查询引擎中,通过查询引擎执行数据查询分析任务,从而解决了要将函数与插件绑定才具备函数注册资格,以及必须重启Trino查询引擎才能加载函数的问题,可以动态加载目标函数,提高了函数加载的灵活性和便捷性,以及基于查询引擎的数据查询分析过程的高效性。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开的一个实施例可以应用于其中的示例性系统架构图;
图2是根据本公开的查询方法的一个实施例的流程图;
图3是根据本实施例的查询方法的应用场景的示意图;
图4是根据本公开的删除函数的流程示意图;
图5是根据本公开的查询方法的又一个实施例的流程图;
图6是根据本公开的查询方法的又一个实施例的流程图;
图7是根据本公开的查询方法的一个实施例的示意性流程图;
图8是根据本公开的查询装置的一个实施例的结构图;
图9是根据本公开的查询装置的又一个实施例的结构图;
图10是适于用来实现本公开实施例的计算机系统的结构示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
图1示出了可以应用本公开的查询方法及装置的示例性架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。终端设备101、102、103之间通信连接构成拓扑网络,网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
终端设备101、102、103可以是支持网络连接从而进行数据交互和数据处理的硬件设备或软件。当终端设备101、102、103为硬件时,其可以是支持网络连接,信息获取、交互、显示、处理等功能的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成例如用来提供分布式服务的多个软件或软件模块,也可以实现成单个软件或软件模块。在此不做具体限定。
服务器105可以是提供各种服务的服务器,例如,基于终端设备101、102、103的函数创建请求创建目标函数,并基于目标函数的元数据将其注册到函数管理中心,通过资源管理中心将已注册的目标函数的函数资源下载到查询引擎的工作节点中目标函数对应的本地资源目录中,以将目标函数加载至查询引擎中的后台处理服务器。又例如,根据终端设备101、102、103提供的查询请求,通过可以动态加载函数的查询引擎进行数据处理的后台处理服务器。作为示例,服务器105可以是云端服务器。
需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
还需要说明的是,本公开的实施例所提供的查询方法可以由服务器执行,也可以由终端设备执行,还可以由服务器和终端设备彼此配合执行。相应地,查询装置包括的各个部分(例如各个单元)可以全部设置于服务器中,也可以全部设置于终端设备中,还可以分别设置于服务器和终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。当查询方法运行于其上的电子设备不需要与其他电子设备进行数据传输时,该系统架构可以仅包括查询方法运行于其上的电子设备(例如服务器或终端设备)。
请参考图2,图2为本公开实施例提供的一种查询方法的流程图,其中,流程200包括以下步骤:
步骤201,根据函数创建请求创建目标函数。
本实施例中,查询方法的执行主体(例如,图1中的终端设备或服务器)可以根据函数创建请求创建目标函数。
目标函数为待加载至查询引擎,用于实现相应逻辑功能的函数。以查询引擎为Trino引擎为例,目标函数可以是标量函数、聚合函数、窗口函数三种函数。标量函数(scalar function),用于将传递给它的一个或者多个参数值,进行计算后,返回一个确定类型的标量值;聚合函数(Aggregation function),用于计算从列中取得的值,返回一个单一的值;窗口函数(Window function),用于计算从分组列中取得的值,并返回多个值。
Trino查询引擎为分布式的查询引擎,其采用的是master-slave(主从式)结构,主要包括客户端(Client)、协调节点(Coordinator)、工作节点(Worker)以及连接器(Connector)。客户端主要用于接收函数创建请求、查询请求;协调节点用于对接收到的函数创建请求、查询请求进行词法、语法分析,并进行任务和资源的调度;工作节点用于负责计算和读写操作,例如去数据源拉取数据,进行计算;连接器用于建立工作节点与数据源之间的连接,形成两者之间的通道。具体的,Trino查询引擎中包括一个协调节点和至少一个工作节点,当包括多个工作节点时,多个工作节点构成工作节点集群。协调节点和工作节点可以部署于同一服务器上,为了Trino查询引擎的扩展性和性能,协调节点和工作节点集群中的每个工作节点可以部署于不同的服务器上。
Trino查询引擎基于连接器所建立的工作节点与数据源之间的连接,使得Trino查询引擎可以支持跨不同数据源的联邦查询;并且,Trino查询引擎是一个基于内存的MPP(Massively Parallel Processing,大规模并行处理)计算引擎,通过并行+内存的计算方式,可以大大提高计算速度,再加上一些优化(例如剪枝、谓词下推等),使得Trino查询引擎可以达到大数据量计算任务下的秒级响应。
本实施例中,可以基于SQL(Structured Query Language,结构化查询语言)发出函数创建请求创建目标函数。作为示例,函数创建请求如下:
CREATE FUNCTION function_name AS class_name
[USING JAR|FILE|'file_uri'[,JAR|FILE|'file_uri']]
步骤202,基于目标函数的元数据,将目标函数注册到函数管理中心。
本实施例中,上述执行主体可以基于目标函数的元数据,将目标函数注册到函数管理中心。
作为示例,上述执行主体可以解析目标函数,得到目标函数的元数据。其中,元数据包括函数名、函数实现类、函数资源。其中,函数资源包括函数的依赖JAR包。
在确定目标函数的元数据后,可以将目标函数注册到函数管理中心,以通过函数管理中心可以管理目标函数的元数据。函数管理中心可以通过具有信息交互、数据处理、数据存储功能的服务器实现。本实施例中,可以将查询引擎中的协调节点作为函数管理中心。
步骤203,对于函数管理中心中已注册的目标函数,通过资源管理中心,将目标函数对应的函数资源,下载到查询引擎的工作节点中目标函数对应的本地资源目录中。
本实施例中,对于函数管理中心中已注册的目标函数,上述执行主体可以通过资源管理中心,将目标函数对应的函数资源,下载到查询引擎的工作节点中目标函数对应的本地资源目录中。
原生Trino查询引擎将所创建的函数的函数资源存储到函数所依赖的插件的对应目录下,但是,本实施例中,所创建的目标函数并不依赖任何插件。对此,对于查询引擎中的每个工作节点,资源管理中心对函数管理中心中已注册的每一个目标函数,在该工作节点中创建对应的本地资源目录,即,将从分布式文件系统中存储的函数资源下载到每个工作节点中该目标函数对应的本地资源目录中。进而,查询引擎中的每个工作节点便可到对应的本地目录加载函数资源。
资源管理中心可以通过具有信息交互、数据处理功能的服务器实现。本实施例中,可以将查询引擎中的协调节点作为资源管理中心。
步骤204,基于查询引擎的工作节点中目标函数对应的本地资源目录中的函数资源,在查询引擎中动态加载目标函数。
本实施例中,上述执行主体可以基于查询引擎的工作节点中目标函数对应的本地资源目录中的函数资源,在查询引擎中动态加载目标函数。
作为示例,上述执行主体可以将目标函数缓存到查询引擎的全局缓存中,进而,查询引擎中的每个工作节点基于缓存中的目标函数,到对应的本地资源目录加载函数资源,执行目标函数。
步骤205,通过动态加载目标函数的查询引擎,执行数据查询分析任务。
本实施例中,上述执行主体可以通过动态加载目标函数的查询引擎,执行数据查询分析任务。
作为示例,上述执行主体可以实时接收用户的查询请求,并将查询请求传输至动态加载目标函数的查询引擎,通过查询引擎进行数据查询和分析,得到对应于用户的查询请求的查询结果。
继续参见图3,图3是根据本实施例的查询方法的应用场景的一个示意图300。在图3的应用场景中,查询引擎包括多个客户端301、协调节点302、多个工作节点303、多个连接器304。客户端301根据用户的操作发出函数创建请求。查询引擎根据函数创建请求创建目标函数;然后,基于目标函数的元数据,将目标函数注册到函数管理中心,函数管理中心可以基于协调节点302实现;然后,对于函数管理中心中已注册的目标函数,通过资源管理中心,将目标函数对应的函数资源,下载到查询引擎的工作节点中目标函数对应的本地资源目录中,资源管理中心可以基于协调节点302实现;然后,基于查询引擎的工作节点中目标函数对应的本地资源目录中的函数资源,在查询引擎中动态加载目标函数;最后,通过动态加载目标函数的查询引擎,执行数据查询分析任务。
本实施例中,提供了一种查询方法,在创建目标函数之后,基于目标函数的元数据将其注册到函数管理中心,并通过资源管理中心将已注册的目标函数的函数资源下载到查询引擎的工作节点中目标函数对应的本地资源目录中,以将目标函数加载至查询引擎中,通过查询引擎执行数据查询分析任务,从而解决了要将函数与插件绑定才具备函数注册资格,以及必须重启Trino查询引擎才能加载函数的问题,可以动态加载目标函数,提高了函数加载的灵活性和便捷性,以及基于查询引擎的数据查询分析过程的高效性
在本实施例的一些可选的实现方式中,上述执行主体可以通过如下方式执行上述步骤201:根据函数创建请求创建目标函数,并将目标函数对应的函数资源的路径信息,指定为存储函数资源的分布式文件系统中目标函数的函数资源所在的系统目录。
本实现方式中,上述执行主体可以通过如下方式执行上述步骤203:对于查询引擎中的每个工作节点,通过资源管理中心,将目标函数对应的函数资源,从分布式文件系统中目标函数对应的函数资源所在的系统目录中,下载到该工作节点中目标函数对应的本地资源目录中。
在实际生产环境中,Trino查询引擎中一般包括数量庞大的工作节点,若每个工作节点都采用登录机器拷贝函数资源到本地资源路径的方式,极大地增加了函数资源拷贝的操作成本。为此,基于查询引擎的master-slave结构和分布式文件系统的特性,本实施例中实现了便捷地添加函数资源到各个功工作节点的机制。
在设计创建目标函数的语法时,将目标函数的函数资源的路径信息,指定为HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)、BOS(BlockchainOperating System,区块链操作系统)等类型的分布式文件系统,进而,资源管理中心即可将目标函数对应的函数资源,从分布式文件系统中目标函数对应的函数资源所在的系统目录中,下载到该工作节点中目标函数对应的本地资源目录中。
本实现方式中,目标函数的函数资源的路径信息,指定为存储函数资源的分布式文件系统中目标函数的函数资源所在的系统目录,从而资源管理中心即可将每个目标函数的函数资源从分布式文件系统中下载至每个工作节点对应于目标函数的本地资源目录中,可以高效地管理函数资源,提高了函数资源下载的便捷性,降低了函数资源下载的操作成本。
在本实施例的一些可选的实现方式中,上述执行主体可以通过如下方式执行上述步骤204:
第一,根据目标函数对应的函数资源,确定目标函数的函数类型,其中,函数类型用于表征目标函数是否为查询引擎原生支持的函数;第二,通过函数类型对应的适配器,将目标函数转换为函数缓存数据;第三,将函数缓存数据动态加载至查询引擎的缓存中。
本实现方式中,查询引擎除了可以加载查询引擎原生支持的函数,还可以加载查询引擎原生所不能支持的函数。其中,查询引擎原生支持的函数,表征基于查询引擎原生支持的函数规则所创建的函数,例如标量函数、聚合函数、窗口函数。
对于查询引擎原生所不能支持的函数,其例如可以是其他类型的查询引擎所支持的函数。本实现方式中,对于每种类型的函数,可以设置对应的函数转换适配器。对于查询引擎原生支持的函数,可以通过查询引擎原生支持的适配器,按照Trino原始逻辑进行处理;对于查询引擎原生所不能支持的函数,通过该函数的函数类型对应的函数转换适配器,将该函数转换为查询引擎原生支持的函数规则,得到函数缓存数据。进而,可以将转换后的函数缓存数据动态加载至查询引擎的缓存中。函数缓存数据例如是函数名、函数的创建时间、更新时间、函数实现类、函数的本地资源目录等信息。
本实现方式中,基于适配器,可以使得查询引擎加载原生所不能支持的函数,丰富了查询引擎的函数类型,提高了查询引擎的函数适配性。
在本实施例的一些可选的实现方式中,函数类型包括查询引擎原生支持的函数规则对应的第一类型和数据仓库工具支持的函数规则对应的第二类型。作为示例,数据仓库工具为hive。
本实现方式中,上述执行主体可以通过如下方式执行上述第二步骤:对于第一类型的目标函数,通过查询引擎对应的原生适配器,将目标函数转换为函数缓存数据;对于第二类型的目标函数,通过函数转换适配器,将第二类型的目标函数转换至第一类型下,以得到函数缓存数据。
本实现方式中,第二类型可以是多种,对于每种的第二类型,可以设置对应的函数转换适配器。
本实现方式中,提供了对于查询引擎原生支持的函数规则对应的第一类型和数据仓库工具支持的函数规则对应的第二类型,这两种函数类型的目标函数的适配过程,提高了函数适配的可行性和准确度。
在本实施例的一些可选的实现方式中,对于第二类型的目标函数,通过函数转换适配器,上述执行主体可以通过如下方式将第二类型的目标函数转换至第一类型下:
响应于确定目标函数为第二类型中的用户自定义函数,通过函数转换适配器,将用户自定义函数转换为第一类型下的标量函数;响应于确定目标函数为第二类型中的用户自定义聚合函数,通过函数转换适配器,将用户自定义聚合函数转换为第一类型下的聚合函数。
本实现方式中,基于hive引擎中所提出的UDF(User-Defined Functions,用户自定义函数)通过函数转换适配器转换为Trino查询引擎中的标量函数,UDAF(User DefinedAggregate Function,用户自定义聚合函数)通过函数转换适配器转换为Trino查询引擎中的聚合函数。
本实现方式中,提供了hive引擎中的函数与Trino引擎中的函数之间的适配方式,进一步提高了Trino查询引擎的函数适配过程的可行性和准确度。
在本实施例的一些可选的实现方式中,上述执行主体还可以执行如下操作:首先,根据接收到的函数删除请求,确定待删除函数;从查询引擎的缓存中删除待删除函数的函数缓存数据;从函数管理中心中删除待删除函数的元数据信息;通过资源管理中心,删除查询引擎的工作节点中待删除函数对应的函数资源和待删除函数对应的本地资源目录。
作为示例,函数删除请求如下:
DROP FUNCTION[IF EXISTS]function_name;
如图4所示,示出了删除函数的流程示意图400。具体的,在接收到删除函数的SQL(函数删除请求)后,第一步,将删除查询引擎的缓存中的函数缓存数据,若在查询引擎的缓存中命中待删除函数的函数缓存数据,则直接删除待删除函数的函数缓存数据,后续执行第二步;若未命中,则不执行第二步,直接执行第三步;第二步,资源管理中心通过待删除函数的函数缓存数据,找到本地资源目录,删除本地资源目录和其中的函数资源;第三步,在函数管理中心删除待删除函数对应的元数据。
本实现方式中,提供了函数的删除过程,进一步提高了函数管理过程的灵活性。
在本实施例的一些可选的实现方式,上述执行主体可以通过如下方式执行上述步骤201:根据函数创建请求创建目标函数,并在目标函数中指定目标函数所依赖的第三方库。
本实现方式中,上述执行主体还可以执行如下操作:通过反射机制确定目标函数对应的类加载器和第三方库;通过目标函数对应的类加载器加载第三方库。
在编写函数代码的时候,通常会用到第三方库(native library)。而Trino查询引擎并没有实现动态地加载第三方库的功能,所以当函数需要使用第三方库时,就需要手动地将依赖拷贝到对应的classpath(类路径)下,该函数在使用过程中才能被真正执行起来,。
为了使得查询引擎可以在程序运行时动态地加载第三方库,首先需要在创建目标函数的时候,在SQL中指定所依赖的第三方库,即file后面的存储路径信息;第三方库的函数所依赖的函数资源,都会通过资源管理中心下载到对应的本地资源目录中,然后,由目标函数的classloader(类加载器)进行加载,如此,便可以正常地使用目标函数。
上述过程看似比较轻松,但是由于一个查询的处理过程是并发的过程,而且为了避免jar包冲突,都会为每个目标函数创建一个属于自己的classloader,那么,在并发的情况下,只能通过反射的手段,首先找到加载函数的classloader,然后再反射执行相关加载第三方库的方法,这样才能实现动态的加载第三方库。
本实施例中,上述执行主体可以动态加载第三方库,进一步降低了查询引擎的运维成本,提高了函数使用的便捷性。
继续参考图5,示出了根据本公开的查询方法的又一个实施例的示意性流程500,包括以下步骤:
步骤501,根据函数创建请求创建目标函数,并将目标函数对应的函数资源的路径信息,指定为存储函数资源的分布式文件系统中目标函数的函数资源所在的系统目录。
步骤502,基于目标函数的元数据,将目标函数注册到函数管理中心。
步骤503,对于函数管理中心中已注册的目标函数和查询引擎中的每个工作节点,通过资源管理中心,将目标函数对应的函数资源,从分布式文件系统中目标函数对应的函数资源所在的系统目录中,下载到该工作节点中目标函数对应的本地资源目录中。
步骤504,根据目标函数对应的函数资源,确定目标函数的函数类型。
其中,函数类型包括查询引擎原生支持的函数规则对应的第一类型和数据仓库工具支持的函数规则对应的第二类型。
步骤505,对于第一类型的目标函数,通过查询引擎对应的原生适配器,将目标函数转换为函数缓存数据。
步骤506,响应于确定目标函数为第二类型中的用户自定义函数,通过函数转换适配器,将用户自定义函数转换为第一类型下的标量函数。
步骤507,响应于确定目标函数为第二类型中的用户自定义聚合函数,通过函数转换适配器,将用户自定义聚合函数转换为第一类型下的聚合函数。
步骤508,将函数缓存数据动态加载至查询引擎的缓存中。
从本实施例中可以看出,与图2对应的实施例相比,本实施例中的查询方法的流程500具体说明了目标函数的创建过程、函数资源的下载过程和目标函数的加载过程,进一步提高了函数加载的灵活性和便捷性,以及基于查询引擎的数据分析过程的高效性。
继续参考图6,示出了根据本公开的查询方法的一个实施例的示意性流程600,包括以下步骤:
步骤601,获取查询请求。
本实施例中,查询方法的执行主体(例如,图1中的终端设备或服务器)可以通过有线连接方式或无线连接方式从远程,或从本地获取查询请求。
作为示例,查询引擎中的客户端可以接收查询请求。其中,查询请求可以是针对于任意数据的查询请求。
步骤602,从查询引擎的缓存中确定查询请求对应的目标函数。
本实施例中,上述执行主体可以从查询引擎的缓存中确定查询请求对应的目标函数。
其中,目标函数基于目标函数的元数据信息被注册到函数管理中心后,通过资源管理中心,将目标函对应的函数资源下载到查询引擎的工作节点中目标函数对应的本地资源目录中,而被动态加载至查询引擎中。具体的,目标函数可以基于上述实施例200、500中的任一实现方式动态加载至查询引擎。
作为示例,上述执行主体可以首先解析查询请求,确定待执行查询请求对应的查询操作的目标函数;然后,确定查询引擎的缓存中是否存在查询请求对应的目标函数。
步骤603,基于目标函数确定查询请求对应的查询结果。
本实施例中,上述执行主体可以通过目标函数确定查询请求对应的查询结果。
本实施例中,提供了一种查询方式,基于可动态加载目标函数的查询引擎,提高了查询的便捷性和效率。
在本实施例的一些可选的实现方式中,上述执行主体还可以执行如下操作:
首先,响应于确定查询引擎的缓存中不包括查询请求对应的目标函数,确定函数管理中心中是否包括与目标函数匹配的元数据;然后,响应于确定包括,通过资源管理中心,将目标函对应的函数资源下载到查询引擎的工作节点中目标函数对应的本地资源目录中,动态加载至查询引擎的缓存中。
查询引擎可能因缓存清理等原因,存在不包括查询请求对应的目标函数的情况,此时,若确定函数管理中心中包括与目标函数匹配的元数据,则可以将目标函对应的函数资源下载到查询引擎的工作节点中目标函数对应的本地资源目录中,动态加载至查询引擎的缓存中。本实现方式中,提出了查询过程中,查询引擎的缓存中不包括查询请求对应的目标函数的情况的处理方式,提高了查询过程的完备性。
继续参考图7,示出了根据本公开的查询方法的一个实施例的示意性流程700,包括以下步骤:
1、通过客户端接收函数创建请求和/或查询请求。对于函数创建请求,使用SQL创建目标函数,对创建的目标函数进行语法解析后,将所解析出来的目标函数的元数据注册到函数管理中心。
2、对于函数管理中心已注册的目标函数,通过资源管理中心,将存放在分布式文件系统的目标函数的函数资源下载到Trino查询引擎的每个节点中对应于该目标函数的本地资源目录中,以便后面加载。
3、加载目标函数的函数资源,并判断目标函数的函数类型。
4、若函数类型是Trino类型(Trino查询引擎原生支持的第一类型),则只需要通过Trino的原生适配器,将目标函数转换为函数缓存数据存放到Trino查询引擎的缓存中。若是hive类型(数据仓库工具hive支持的第二类型),则需要通过设计的函数适配器将目标函数转换为函数缓存数据,才能存放到Trino查询引擎的缓存中。
5、对于查询请求,确定执行查询请求的目标函数的函数名。
6、引擎解析查询请求后,会通过所确定的函数名,确定是否能命中现有的Trino查询引擎的缓存。若能命中,表明Trino查询引擎的缓存中包括目标函数的函数缓存数据,执行步骤8,返回函数缓存数据;否则,执行步骤7。
7、通过所确定的函数名向函数管理中心发起请求,尝试获取函数名对应的元数据,若不存在,则报错;若存在,执行步骤2,动态加载函数。
8、从查询引擎的缓存中返回相关的函数缓存数据。
9、将函数缓存数据传输至数据处理模块,便可完成函数的使用,得到最终的查询结果。
继续参考图8,作为对上述各图所示方法的实现,本公开提供了一种查询装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图8所示,查询装置800包括:创建单元801,被配置成根据函数创建请求创建目标函数;注册单元802,被配置成基于目标函数的元数据,将目标函数注册到函数管理中心;下载单元803,被配置成对于函数管理中心中已注册的目标函数,通过资源管理中心,将目标函数对应的函数资源,下载到查询引擎的工作节点中目标函数对应的本地资源目录中;加载单元804,被配置成基于查询引擎的工作节点中目标函数对应的本地资源目录中的函数资源,在查询引擎中动态加载目标函数;执行单元805,被配置成通过动态加载目标函数的查询引擎,执行数据查询分析任务。
在本实施例的一些可选的实现方式中,创建单元801,进一步被配置成:根据函数创建请求创建目标函数,并将目标函数对应的函数资源的路径信息,指定为存储函数资源的分布式文件系统中目标函数的函数资源所在的系统目录;以及下载单元803,进一步被配置成:对于查询引擎中的每个工作节点,通过资源管理中心,将目标函数对应的函数资源,从分布式文件系统中目标函数对应的函数资源所在的系统目录中,下载到该工作节点中目标函数对应的本地资源目录中。
在本实施例的一些可选的实现方式中,加载单元804,进一步被配置成:根据目标函数对应的函数资源,确定目标函数的函数类型,其中,函数类型用于表征目标函数是否为查询引擎原生支持的函数;通过函数类型对应的适配器,将目标函数转换为函数缓存数据;将函数缓存数据动态加载至查询引擎的缓存中。
在本实施例的一些可选的实现方式中,函数类型包括查询引擎原生支持的函数规则对应的第一类型和数据仓库工具支持的函数规则对应的第二类型;以及加载单元804,进一步被配置成:对于第一类型的目标函数,通过查询引擎对应的原生适配器,将目标函数转换为函数缓存数据;对于第二类型的目标函数,通过函数转换适配器,将第二类型的目标函数转换至第一类型下,以得到函数缓存数据。
在本实施例的一些可选的实现方式中,加载单元804,进一步被配置成:响应于确定目标函数为第二类型中的用户自定义函数,通过函数转换适配器,将用户自定义函数转换为第一类型下的标量函数;响应于确定目标函数为第二类型中的用户自定义聚合函数,通过函数转换适配器,将用户自定义聚合函数转换为第一类型下的聚合函数。
在本实施例的一些可选的实现方式中,创建单元801,进一步被配置成:根据函数创建请求创建目标函数,并在目标函数中指定目标函数所依赖的第三方库;以及加载单元804,还被配置成:通过反射机制确定目标函数对应的类加载器和第三方库;通过目标函数对应的类加载器加载第三方库。
在本实施例的一些可选的实现方式中,上述装置还包括:删除单元(图中未示出),被配置成:根据接收到的函数删除请求,确定待删除函数;从查询引擎的缓存中删除待删除函数的函数缓存数据;从函数管理中心中删除待删除函数的元数据信息;通过资源管理中心,删除查询引擎的工作节点中待删除函数对应的函数资源和待删除函数对应的本地资源目录。
本实施例中,提供了一种查询装置,在创建目标函数之后,基于目标函数的元数据将其注册到函数管理中心,并通过资源管理中心将已注册的目标函数的函数资源下载到查询引擎的工作节点中目标函数对应的本地资源目录中,以将目标函数加载至查询引擎中,通过查询引擎执行数据查询分析任务,从而解决了要将函数与插件绑定才具备函数注册资格,以及必须重启Trino查询引擎才能加载函数的问题,可以动态加载目标函数,提高了函数加载的灵活性和便捷性,以及基于查询引擎的数据查询分析过程的高效性。
继续参考图9,作为对上述各图所示方法的实现,本公开提供了一种查询装置的一个实施例,该装置实施例与图6所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图9所示,查询装置900包括:获取单元901,被配置成获取查询请求;确定单元902,被配置成从查询引擎的缓存中确定查询请求对应的目标函数,其中,目标函数基于目标函数的元数据信息被注册到函数管理中心后,通过资源管理中心,将目标函对应的函数资源下载到查询引擎的工作节点中目标函数对应的本地资源目录中,而被动态加载至查询引擎中;查询单元903,被配置成基于目标函数确定查询请求对应的查询结果。
本实施例中,提供了一种查询装置,查询引擎可以动态加载目标函数,提高了查询的便捷性和效率。
根据本公开的实施例,本公开还提供了一种电子设备,该电子设备包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器执行时能够实现上述任意实施例所描述的查询方法。
根据本公开的实施例,本公开还提供了一种可读存储介质,该可读存储介质存储有计算机指令,该计算机指令用于使计算机执行时能够实现上述任意实施例所描述的查询方法。
本公开实施例提供了一种计算机程序产品,该计算机程序在被处理器执行时能够实现上述任意实施例所描述的查询方法。
图10示出了可以用来实施本公开的实施例的示例电子设备1000的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图10所示,设备1000包括计算单元1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。计算单元1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理,例如查询方法。例如,在一些实施例中,查询方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到RAM1003并由计算单元1001执行时,可以执行上文描述的查询方法的一个或多个步骤。备选地,在其他实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行查询方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决传统物理主机与虚拟专用服务器(VPS,Virtual Private Server)服务中存在的管理难度大,业务扩展性弱的缺陷;也可以为分布式系统的服务器,或者是结合了区块链的服务器。
根据本公开实施例的技术方案,提供了一种查询方法,在创建目标函数之后,基于目标函数的元数据将其注册到函数管理中心,并通过资源管理中心将已注册的目标函数的函数资源下载到查询引擎的工作节点中目标函数对应的本地资源目录中,以将目标函数加载至查询引擎中,从而解决了要将函数与插件绑定才具备函数注册资格,以及必须重启Trino查询引擎才能加载函数的问题,可以动态加载目标函数,提高了函数加载的灵活性和便捷性,以及基于查询引擎的数据分析过程的高效性。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开提供的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (17)
1.一种查询方法,包括:
根据函数创建请求创建目标函数;
基于所述目标函数的元数据,将所述目标函数注册到函数管理中心;
对于所述函数管理中心中已注册的目标函数,通过资源管理中心,将所述目标函数对应的函数资源,下载到查询引擎的工作节点中所述目标函数对应的本地资源目录中;
基于所述查询引擎的工作节点中所述目标函数对应的本地资源目录中的函数资源,在所述查询引擎中动态加载所述目标函数;
通过动态加载所述目标函数的所述查询引擎,执行数据查询分析任务。
2.根据权利要求1所述的方法,其中,所述根据函数创建请求创建目标函数,包括:
根据所述函数创建请求创建所述目标函数,并将所述目标函数对应的函数资源的路径信息,指定为存储函数资源的分布式文件系统中所述目标函数的函数资源所在的系统目录;以及
所述通过资源管理中心,将所述目标函数对应的函数资源,下载到查询引擎的工作节点中所述目标函数对应的本地资源目录中,包括:
对于所述查询引擎中的每个工作节点,通过所述资源管理中心,将所述目标函数对应的函数资源,从所述分布式文件系统中所述目标函数对应的函数资源所在的系统目录中,下载到该工作节点中所述目标函数对应的本地资源目录中。
3.根据权利要求1或2所述的方法,其中,所述基于所述查询引擎的工作节点中所述目标函数对应的本地资源目录中的函数资源,在所述查询引擎中动态加载所述目标函数,包括:
根据所述目标函数对应的函数资源,确定所述目标函数的函数类型,其中,所述函数类型用于表征所述目标函数是否为所述查询引擎原生支持的函数;
通过所述函数类型对应的适配器,将所述目标函数转换为函数缓存数据;
将所述函数缓存数据动态加载至所述查询引擎的缓存中。
4.根据权利要求3所述的方法,其中,所述函数类型包括所述查询引擎原生支持的函数规则对应的第一类型和数据仓库工具支持的函数规则对应的第二类型;以及
所述通过所述函数类型对应的适配器,将所述目标函数转换为函数缓存数据,包括:
对于所述第一类型的目标函数,通过所述查询引擎对应的原生适配器,将所述目标函数转换为所述函数缓存数据;
对于所述第二类型的目标函数,通过函数转换适配器,将所述第二类型的目标函数转换至所述第一类型下,以得到所述函数缓存数据。
5.根据权利要求4所述的方法,其中,所述对于所述第二类型的目标函数,通过函数转换适配器,将所述第二类型的目标函数转换至所述第一类型下,包括:
响应于确定所述目标函数为所述第二类型中的用户自定义函数,通过所述函数转换适配器,将所述用户自定义函数转换为所述第一类型下的标量函数;
响应于确定所述目标函数为所述第二类型中的用户自定义聚合函数,通过所述函数转换适配器,将所述用户自定义聚合函数转换为所述第一类型下的聚合函数。
6.根据权利要求1所述的方法,其中,所述根据函数创建请求创建目标函数,包括:
根据所述函数创建请求创建所述目标函数,并在所述目标函数中指定所述目标函数所依赖的第三方库;以及
还包括:
通过反射机制确定所述目标函数对应的类加载器和所述第三方库;
通过所述目标函数对应的类加载器加载所述第三方库。
7.根据权利要求1所述的方法,其中,还包括:
根据接收到的函数删除请求,确定待删除函数;
从所述查询引擎的缓存中删除所述待删除函数的函数缓存数据;
从所述函数管理中心中删除所述待删除函数的元数据信息;
通过所述资源管理中心,删除所述查询引擎的工作节点中所述待删除函数对应的函数资源和所述待删除函数对应的本地资源目录。
8.一种查询装置,包括:
创建单元,被配置成根据函数创建请求创建目标函数;
注册单元,被配置成基于所述目标函数的元数据,将所述目标函数注册到函数管理中心;
下载单元,被配置成对于所述函数管理中心中已注册的目标函数,通过资源管理中心,将所述目标函数对应的函数资源,下载到查询引擎的工作节点中所述目标函数对应的本地资源目录中;
加载单元,被配置成基于所述查询引擎的工作节点中所述目标函数对应的本地资源目录中的函数资源,在所述查询引擎中动态加载所述目标函数;
执行单元,被配置成通过动态加载所述目标函数的所述查询引擎,执行数据查询分析任务。
9.根据权利要求8所述的装置,其中,所述创建单元,进一步被配置成:
根据所述函数创建请求创建所述目标函数,并将所述目标函数对应的函数资源的路径信息,指定为存储函数资源的分布式文件系统中所述目标函数的函数资源所在的系统目录;以及
所述下载单元,进一步被配置成:
对于所述查询引擎中的每个工作节点,通过所述资源管理中心,将所述目标函数对应的函数资源,从所述分布式文件系统中所述目标函数对应的函数资源所在的系统目录中,下载到该工作节点中所述目标函数对应的本地资源目录中。
10.根据权利要求8或9所述的装置,其中,所述加载单元,进一步被配置成:
根据所述目标函数对应的函数资源,确定所述目标函数的函数类型,其中,所述函数类型用于表征所述目标函数是否为所述查询引擎原生支持的函数;通过所述函数类型对应的适配器,将所述目标函数转换为函数缓存数据;将所述函数缓存数据动态加载至所述查询引擎的缓存中。
11.根据权利要求10所述的装置,其中,所述函数类型包括所述查询引擎原生支持的函数规则对应的第一类型和数据仓库工具支持的函数规则对应的第二类型;以及所述加载单元,进一步被配置成:
对于所述第一类型的目标函数,通过所述查询引擎对应的原生适配器,将所述目标函数转换为所述函数缓存数据;对于所述第二类型的目标函数,通过函数转换适配器,将所述第二类型的目标函数转换至所述第一类型下,以得到所述函数缓存数据。
12.根据权利要求11所述的装置,其中,所述加载单元,进一步被配置成:
响应于确定所述目标函数为所述第二类型中的用户自定义函数,通过所述函数转换适配器,将所述用户自定义函数转换为所述第一类型下的标量函数;响应于确定所述目标函数为所述第二类型中的用户自定义聚合函数,通过所述函数转换适配器,将所述用户自定义聚合函数转换为所述第一类型下的聚合函数。
13.根据权利要求8所述的装置,其中,所述创建单元,进一步被配置成:
根据所述函数创建请求创建所述目标函数,并在所述目标函数中指定所述目标函数所依赖的第三方库;以及
所述加载单元,还被配置成:
通过反射机制确定所述目标函数对应的类加载器和所述第三方库;通过所述目标函数对应的类加载器加载所述第三方库。
14.根据权利要求8所述的装置,其中,还包括:
删除单元,被配置成:根据接收到的函数删除请求,确定待删除函数;从所述查询引擎的缓存中删除所述待删除函数的函数缓存数据;从所述函数管理中心中删除所述待删除函数的元数据信息;通过所述资源管理中心,删除所述查询引擎的工作节点中所述待删除函数对应的函数资源和所述待删除函数对应的本地资源目录。
15.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的方法。
17.一种计算机程序产品,包括:计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211170032.7A CN115563183B (zh) | 2022-09-22 | 2022-09-22 | 查询方法、装置及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211170032.7A CN115563183B (zh) | 2022-09-22 | 2022-09-22 | 查询方法、装置及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115563183A true CN115563183A (zh) | 2023-01-03 |
CN115563183B CN115563183B (zh) | 2024-04-09 |
Family
ID=84742410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211170032.7A Active CN115563183B (zh) | 2022-09-22 | 2022-09-22 | 查询方法、装置及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115563183B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090019000A1 (en) * | 2007-07-12 | 2009-01-15 | Mitchell Jon Arends | Query based rule sets |
CN102169447A (zh) * | 2010-02-25 | 2011-08-31 | 中兴通讯股份有限公司 | 一种自定义外壳程序的注册、注销方法及相应的系统 |
CN108710662A (zh) * | 2018-05-14 | 2018-10-26 | 上海跬智信息技术有限公司 | 语言转换方法和装置、存储介质、数据查询系统和方法 |
CN110618996A (zh) * | 2019-08-07 | 2019-12-27 | 北京东方国信科技股份有限公司 | 一种应用于分布式数据库的函数库热更新方法 |
CN111367954A (zh) * | 2018-12-26 | 2020-07-03 | 中兴通讯股份有限公司 | 数据查询处理方法、装置及系统、计算机可读存储介质 |
CN112487036A (zh) * | 2020-12-04 | 2021-03-12 | 国泰新点软件股份有限公司 | 数据处理方法及装置 |
CN113590217A (zh) * | 2021-07-26 | 2021-11-02 | 北京百度网讯科技有限公司 | 基于引擎的函数管理方法、装置、电子设备及存储介质 |
CN114090113A (zh) * | 2021-10-27 | 2022-02-25 | 北京百度网讯科技有限公司 | 数据源处理插件动态加载的方法、装置、设备及存储介质 |
US11294901B1 (en) * | 2017-05-04 | 2022-04-05 | Amazon Technologies, Inc. | Isolating the performance of functions included in queries |
CN114357276A (zh) * | 2021-12-23 | 2022-04-15 | 北京百度网讯科技有限公司 | 数据查询方法、装置、电子设备以及存储介质 |
CN114356968A (zh) * | 2021-12-21 | 2022-04-15 | 浙江太美医疗科技股份有限公司 | 查询语句生成方法、装置、计算机设备及存储介质 |
-
2022
- 2022-09-22 CN CN202211170032.7A patent/CN115563183B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090019000A1 (en) * | 2007-07-12 | 2009-01-15 | Mitchell Jon Arends | Query based rule sets |
CN102169447A (zh) * | 2010-02-25 | 2011-08-31 | 中兴通讯股份有限公司 | 一种自定义外壳程序的注册、注销方法及相应的系统 |
US11294901B1 (en) * | 2017-05-04 | 2022-04-05 | Amazon Technologies, Inc. | Isolating the performance of functions included in queries |
CN108710662A (zh) * | 2018-05-14 | 2018-10-26 | 上海跬智信息技术有限公司 | 语言转换方法和装置、存储介质、数据查询系统和方法 |
CN111367954A (zh) * | 2018-12-26 | 2020-07-03 | 中兴通讯股份有限公司 | 数据查询处理方法、装置及系统、计算机可读存储介质 |
CN110618996A (zh) * | 2019-08-07 | 2019-12-27 | 北京东方国信科技股份有限公司 | 一种应用于分布式数据库的函数库热更新方法 |
CN112487036A (zh) * | 2020-12-04 | 2021-03-12 | 国泰新点软件股份有限公司 | 数据处理方法及装置 |
CN113590217A (zh) * | 2021-07-26 | 2021-11-02 | 北京百度网讯科技有限公司 | 基于引擎的函数管理方法、装置、电子设备及存储介质 |
CN114090113A (zh) * | 2021-10-27 | 2022-02-25 | 北京百度网讯科技有限公司 | 数据源处理插件动态加载的方法、装置、设备及存储介质 |
CN114356968A (zh) * | 2021-12-21 | 2022-04-15 | 浙江太美医疗科技股份有限公司 | 查询语句生成方法、装置、计算机设备及存储介质 |
CN114357276A (zh) * | 2021-12-23 | 2022-04-15 | 北京百度网讯科技有限公司 | 数据查询方法、装置、电子设备以及存储介质 |
Non-Patent Citations (3)
Title |
---|
EVDOKIA KASSELA: "Towards a Multi-engine Query Optimizer for Complex SQL Queries on Big Data", IEEE, pages 6095 - 6097 * |
SKYYWS: "【Trino源码学习】Trino源码剖析之plugin加载", pages 1 - 8, Retrieved from the Internet <URL:https://blog.csdn.net/skyyw s/article/details/123015660> * |
倪帅: "分布式内存数据库高可靠列式存储引擎的设计与实现", 中国优秀硕士学位论文全文数据库, pages 138 - 972 * |
Also Published As
Publication number | Publication date |
---|---|
CN115563183B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109492053B (zh) | 用于访问数据的方法和装置 | |
US11200231B2 (en) | Remote query optimization in multi data sources | |
CN114357276A (zh) | 数据查询方法、装置、电子设备以及存储介质 | |
CN111625224A (zh) | 代码生成方法、装置、设备及存储介质 | |
US9930113B2 (en) | Data retrieval via a telecommunication network | |
CN112905537B (zh) | 文件处理方法、装置、电子设备和存储介质 | |
CN111666293A (zh) | 数据库访问方法和装置 | |
CN115335821B (zh) | 卸载统计收集 | |
US9971794B2 (en) | Converting data objects from multi- to single-source database environment | |
CN111125064A (zh) | 一种生成数据库模式定义语句的方法和装置 | |
US20210365406A1 (en) | Method and apparatus for processing snapshot, device, medium and product | |
CN108959294B (zh) | 一种访问搜索引擎的方法和装置 | |
KR20220026603A (ko) | 파일 처리 방법, 장치, 전자 기기 및 저장 매체 | |
CN113760961A (zh) | 数据查询方法和装置 | |
US20230023290A1 (en) | Method for managing function based on engine, electronic device and medium | |
CN115563183B (zh) | 查询方法、装置及程序产品 | |
CN114020789A (zh) | 账单数据查询方法、系统、设备及存储介质 | |
CN113760969A (zh) | 一种基于ElasticSearch的数据查询方法和装置 | |
CN113419740A (zh) | 程序数据流的分析方法、装置、电子设备及可读存储介质 | |
CN113515285A (zh) | 生成实时计算逻辑数据的方法和装置 | |
CN113760240A (zh) | 一种生成数据模型的方法和装置 | |
CN112988778A (zh) | 一种处理数据库查询脚本的方法和装置 | |
CN111427938B (zh) | 数据转存的方法和装置 | |
CN112925573B (zh) | 网页加载的方法、装置、设备和计算机可读介质 | |
US20240054107A1 (en) | File processing method, electronic device, and storage medium |
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 |