使用用户定义的函数扩展数据库外部函数制造技术

技术编号:37500141 阅读:18 留言:0更新日期:2023-05-07 09:36
本申请公开了使用用户定义的函数扩展数据库外部函数。外部函数系统可以在数据库上实现,以在一个或更多个外部网络服务上执行处理。外部函数系统可以包括用于特定外部服务的特定外部函数、与特定外部函数链接的出站串行化器函数和入站串行化器函数。出站串行化器函数可被配置成将查询的数据从数据库格式转变成特定外部网络服务的不同格式。入站去串行化器函数可以配置为接收从外部服务返回的数据,并将数据转变成数据库的格式。并将数据转变成数据库的格式。并将数据转变成数据库的格式。

【技术实现步骤摘要】
使用用户定义的函数扩展数据库外部函数


[0001]本公开的实施例一般涉及基于网络的数据库系统,且更具体而言,涉及使用数据库函数和网络服务。
[0002]背景
[0003]可将数据上传至数据库,并可通过网络接口提供对数据库的访问。最近,云数据库服务越来越受欢迎,因为可以轻松地创建新的数据库实例来存储数据。虽然新的云数据库服务允许容易地创建数据库,但是云数据库服务产生了关于不同系统之间的数据接口的新问题。例如,很难以一种可扩展的方式管理数据库和不同网络服务之间的数据格式,而不招致令人望而却步的计算和网络开销。
[0004]附图简述
[0005]从下面给出的详细描述和本公开的各种实施例的附图中,将更全面地理解本公开。
[0006]图1示出了根据本公开的一些实施例的示例计算环境,其包括与云存储平台通信的基于网络的数据库系统。
[0007]图2是示出根据本公开一些实施例的计算服务管理器的部件的框图。
[0008]图3是示出根据本公开一些实施例的执行平台的部件的框图。
[0009]图4是根据本公开的一些实施例从概念上示出了由运行在执行平台的给定执行节点上的进程执行用户定义的函数(UDF)的示例软件架构的计算环境。
[0010]图5根据本公开的一些实施例显示了用于在中转位置(staging location)实现对UDF的文件访问的数据架构。
[0011]图6根据本公开的一些实施例显示了外部函数访问系统架构。
[0012]图7根据本公开的一些实施例显示了在外部服务上实施数据库系统的外部函数的方法的流程图。
[0013]图8示出了根据本公开的一些实施例的计算机系统形式的机器的图解表示,用于使机器执行本文所讨论方法中的任何一种或更多种方法的指令集合可以在该计算机系统内执行。
[0014]详细描述
[0015]现在将详细参考用于实现本专利技术主题的具体示例实施例。这些具体实施例的示例在附图中示出,并且具体细节在以下描述中阐述,以便提供对主题的透彻理解。应当理解,这些示例并不旨在将权利要求的范围限制于所示的实施例。相反,它们旨在覆盖可能被包含在本公开范围内的替代、修改、和等同物。
[0016]如前所述,难以将数据库中的数据与不同的外部服务对接。在一些示例实施例中,分布式数据库可以使用外部服务来实现用于处理数据库数据的外部函数。在一些示例实施例中,外部函数是数据库系统的一种类型的UDF;然而,不同于数据库系统的其他UDF(例如,如下所述的出站串行化器UDF、入站去串行化器UDF),外部函数不包含其自己的代码,相反,外部函数调用在数据库外部(例如,在外部网络服务上)存储和执行的代码。在一些示例实
施例中,在数据库内部,外部函数被存储为包含数据库用来调用外部服务的信息的数据库对象。例如,存储的信息包括代理服务的URL,代理服务向外部服务中继信息,也从外部服务中继信息。在一些示例实施例中,存储的信息在CREATE EXTERNAL FUNCTION命令中指定。在一些示例实施例中,表示外部函数的数据库对象是在数据库系统的特定数据库中创建的,并且具有特定模式。在一些示例实施例中,使用点符号来调用外部函数以表示完全合格的名称(例如,“select my_DB.my_schema.my_extFunction(col1)from table1;”),它是调用在数据库系统外部执行(例如,远程地执行,用于在第三方网络服务上处理)的代码的数据库函数。在一些示例实施例中,远程执行的代码可以通过代理服务(例如,被配置为与外部服务API对接的HTTP网关)来中继。外部服务的数据可能需要从数据库的数据格式转换成数据库与之通信的外部服务的数据格式。转换发生在两个方向上。例如,为了利用外部服务(例如,情感检测、语言翻译、数据分析服务),在数据库系统上接收查询,并且将查询的相应数据从数据库使用的第一专有格式转换成外部服务使用的第二专有格式,以及然后发送到网络服务进行处理。
[0017]一旦处理完成,外部服务可将结果数据传输回数据库,然后将结果数据从第二格式转换回第一格式,以完成查询。数据格式之间的转变可以由数据库系统外部的第三方外部服务和所请求的查询外部服务来完成;但是,为数据库与之通信的每个外部服务配置和维护第三方数据格式转变外部服务会产生大量的计算和网络开销。例如,每个外部服务可以使用其自己的格式,并且为每个外部服务配置转变服务,这从资源的角度(例如,计算和网络开销)来看是不切实际的,并且从用户体验的角度来看也是不切实际的。此外,随着由数据库系统管理的数据的增长,为不同的外部服务实现不同的第三方转变服务的用户还需要验证和保护每个服务的认证和安全性,并在转变服务中提供正确数量的计算设备以有效地转变数据并监视所有这些配置。
[0018]为解决上述问题,外部函数系统可实施用户定义的函数,以有效地与每个外部网络服务对接,从而根据外部函数查询处理数据库数据。在一些示例实施例中,外部用户定义的函数被生成并存储在分布式数据库中。此外,串行化器用户定义函数和去串行化器用户定义函数被生成并存储在分布式数据库上,并且当通过查询调用外部函数时与外部函数链接以供执行。串行化器用户定义函数可以将查询的数据库数据从数据库本地的格式转变为外部服务本地的不同格式,其中每个不同的外部服务可以使用不同的数据格式。外部服务可以接收数据并执行所请求的处理,并将结果数据返回给分布式数据库。去串行化器用户定义函数可以接收返回的数据,并将数据从外部服务的格式变换为分布式数据库的格式,且转变后的数据可以作为结果数据提供给查询用户。另外,在一些示例实施例中,串行化器用户定义函数和去串行化器用户定义函数被配置成改变或扩展外部函数的功能,而不必重新生成和重新认证外部用户函数。
[0019]通过这种方式,外部函数系统可管理不同网络服务的数据格式变化,并扩展外部函数的功能,而无需借助额外的第三方外部服务来执行处理。这使得分布式数据库系统能够自动处理计算实例的外部函数安全性、供应、认证、监视、和扩展,并且消除了用户在不同网络服务上设置这些特征中的每一个的需要。
[0020]此外,外部函数文件系统能够构建新的外部函数能力,且可使用串行化器和去串行化器直接在数据库上对调整进行测试和调试,且无需每次包括新的调整或特征时“重启
外部系统”或中间转变服务。
[0021]图1示出了根据本公开的一些实施例的示例计算环境100,其包括基于网络的数据库系统102的示例形式的数据库系统。为了避免用不必要的细节模糊本专利技术主题,图1中省略了与传达对本专利技术主题的理解不密切相关的各种功能部件。然而,本领域技术人员将容易认识到,各种附加功能部件可以被包括作为计算环境100的一部分,以促进本文没有具体描述的附加功能。在其他实施例中,计算环境可以包括另一种类型的基于网络的数据库系统或云数据平台。
[0022]如图所示,计算环境100包括与云存储平台104(例如,Microsoft Azure Blob或谷歌云存储)通信的数据库系本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种方法,包括:在分布式数据库上识别处理网络服务上的数据的函数;存储串行化器函数,以将输入到所述函数中的数据从所述分布式数据库的数据格式串行化为所述网络服务的不同数据格式;存储去串行化器函数以将来自所述网络服务的结果数据从所述网络服务的不同数据格式去串行化为所述分布式数据库的数据格式;识别调用所述函数以处理所述网络服务上的数据集的查询;应用所述串行化器函数来生成所述网络服务的不同数据格式的出站数据集;从所述网络服务接收入站数据集,所述网络服务通过根据所述函数处理所述出站数据集来生成所述入站数据集;和将所述去串行化器函数应用于所述入站数据集以生成结果数据集。2.根据权利要求1所述的方法,其中,所述数据集作为函数参数被传递到所述函数中。3.根据权利要求1所述的方法,其中,生成所述函数包括:将所述串行化器函数和所述去串行化器函数与所述函数相关联。4.根据权利要求3所述的方法,其中,使用所述查询调用所述函数自动地将所述串行化器函数应用于从所述分布式数据库出站到所述网络服务的出站查询数据。5.根据权利要求4所述的方法,其中,使用所述查询调用所述函数自动地将所述去串行化器函数应用于由所述分布式数据库从所述网络服务接收的入站结果数据。6.根据权利要求1所述的方法,其中,所述查询由客户端设备生成。7.根据权利要求6所述的方法,还包括:向所述客户端设备提供所述结果数据集。8.根据权利要求1所述的方法,其中,所述串行化器函数和所述去串行化器函数在所述分布式数据库的多个执行节点中的一个或更多个上的运行时环境中被激活。9.根据权利要求8所述的方法,其中,所述多个执行节点是被配置成处理所述分布式数据库的数据库数据的计算实例。10.根据权利要求8所述的方法,其中:所述串行化器函数包括第一JavaScript文件;以及所述去串行化器函数包括第二JavaScript文件;以及所述运行时环境包括JavaScript执行环境。11.根据权利要求8所述的方法,其中:所述串行化器函数包括第一Java应用编程(JAR)文件;和所述去串行化器函数包括第二JAR文件;和所述运行时环境包括Java虚拟机(JVM)。12.一种系统,包括:机器的一个或更多个处理器;以及存储指令的至少一个存储器,所述指令当由所述一个或更多个处理器执行时使得所述机器执行操作,所述操作包括:在分布式数据库上识别处理网络服务上的数据的函数;存储串行化器函数,以将输入到所述函数中的数据从所述分布式数据库的数据格式串行化为所述网络服务的不同数据格式;
存储去串行化器函数以将来自所述网络服务的结果数据从所述网络服务的不同数据格式去串行化为所述分布式数据库的数据格式;识别调用所述函数以处理所述网络服务上的数据集的查询;应用所述串行化器函数来生成所述网络服务的不同数据格式的出站数据集;从所述网络服务接收入站数据集,所述网络服务通过根据所述函数处理所述出站数据集来生成所述入站数据集;和将所述去串行化器函数应用于所述入站数据集以生成结果数据集。13.根据权利要求12所述的系统,其中,所述数据集作为函数参数被传递到所述函数中。14.根据权利要求12所述的系统,其中,生成所述函数包...

【专利技术属性】
技术研发人员:艾略特
申请(专利权)人:斯诺弗雷克公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1