用于用户定义的函数的容器框架制造技术

技术编号:27466606 阅读:21 留言:0更新日期:2021-03-02 17:29
用于处理容器中用户定义的函数的方法、系统和在计算机存储介质上编码的计算机程序。一个示例系统接收以主查询语言编写的查询,该查询调用用户定义的函数。系统分配主段主机以处理用主查询语言编写的查询部分,并分配第一容器以处理对用户定义函数的调用。主段主机向第一容器提供用户定义函数以及对用户定义函数的调用中的一个或更多个参数。第一容器执行用户定义函数。主段主机接收由第一容器计算的对用户定义函数的调用的初始结果。主段主机使用初始结果计算查询的最终结果。主段主机响应于接收到查询,提供查询的最终结果。提供查询的最终结果。提供查询的最终结果。

【技术实现步骤摘要】
【国外来华专利技术】用于用户定义的函数的容器框架

技术介绍

[0001]本说明书涉及数据库系统。
[0002]数据库将数据组织到具有列和行的表中。唯一键标识每个表中的每一行。特定行代表特定实体的实例,并且该行中的列存储归属于该实例的值。通过在两个表之一中包含用于链接行的唯一键的列,可以将一个表中的行链接到另一表中的行。
[0003]数据库可以划分为多个段(segment)。通过相应的段实例查询段,这些段实例是由称为段节点的物理或虚拟计算节点执行的计算机程序。每个段节点都有自己的存储和处理能力。在主机的指导下,每个段实例都可以处理来自客户端的查询的一部分。主机可以收集来自每个段实例的结果,并将最终结果返回给客户端。
[0004]用户可以用查询语言编写数据库查询。查询语言是计算机编程语言,其可用于创建和更新数据库以及从这些数据库中检索和操纵数据。查询语言通常包括一组定义的操作以支持此功能。通常,特定数据库的段实例专门配置为以特定查询语言处理查询。本说明书将这些特定查询语言称为主(primary)查询语言。
[0005]除了使用主查询语言中的预定义操作外,数据库用户还可以创建和使用以主查询语言编写的自定义函数。一些数据库还可以处理包含以辅助编程语言编写的函数的查询,这些辅助编程语言是与那些数据库的主查询语言不同的编程语言。本说明书将此类自定义函数和以辅助编程语言编写的函数称为用户定义的函数。尽管某些数据库可以处理用户定义的函数,但是这样做可能会效率低下。即,相对于执行以主查询语言编写的查询,执行用户定义的函数会消耗不成比例的计算资源量,例如内存或处理能力,这会破坏其他用户的数据库的正常操作。此外,用户定义的函数可能尚未经过全面测试,并且可能包含会禁用数据库或破坏数据的恶意代码。

技术实现思路

[0006]本说明书描述了在云计算平台上实现的分布式数据库系统,该系统可以处理隔离容器中的用户定义的函数。容器是通过操作系统级虚拟化实现的隔离的用户空间实例。容器共享托管容器的各个计算系统的计算资源,例如内存或处理能力。计算系统可以动态调整容器之间的计算资源分配。
[0007]数据库系统可以从客户端设备接收查询。该查询可以用主查询语言编写,该语言支持对可能以其他编程语言编写的用户定义的函数的调用。如果查询完全用主查询语言编写,并且不包含对用户定义的函数的调用,则由一个或更多个主段主机(primary segment host)实现的一个或更多个段实例可以完整地处理查询。主段主机可以是物理或虚拟计算节点。例如,主段主机可以是物理计算机、虚拟机、容器或这三者的某种组合。
[0008]如果查询包括对用户定义的函数的调用,则系统可以分配一个或更多个容器以处理用户定义的函数。本说明书将这些分配的容器称为UDF容器。
[0009]UDF容器与主段主机不同。即,UDF容器不是主段主机,并且主段主机不是也不实现UDF容器。系统可以例如通过向UDF容器分配单独的计算资源以将UDF容器与主段主机隔离。
[0010]系统可以专门配置UDF容器以处理用户定义的函数。例如,系统可以将每个UDF容器配置为具有库(library),该库以辅助编程语言定义操作,以该辅助编程语言编写用户定义的函数。这样的库可以促进用户定义的函数的有效执行。
[0011]系统分配并初始化UDF容器后,系统可以指示主段主机向UDF容器提供用户定义的函数以及一个或更多个数据库段。然后,UDF容器可以处理用户定义的函数,例如,通过从数据库段中检索特定数据。当用户定义的函数执行完成时,UDF容器可以将结果提供给主段主机。此后,主段主机可以将结果转发到发送查询的客户端设备。
[0012]本说明书中描述的主题可以在特定实施例中实现,以实现以下优点中的一个或更多个。与在主段主机上相比,本文描述的系统可以在隔离的UDF容器中更有效、更安全地处理用户定义的函数。
[0013]用户定义的函数通常会低效地使用计算资源。这是因为数据库系统通常被优化为处理以特定查询语言编写的查询。在具有单独计算资源的隔离的UDF容器中执行用户定义的函数可确保用户定义的函数不会使用数据库的所有计算资源。这减少了过载事件的发生,过载事件会影响查询速度和一致性。
[0014]UDF容器还可以包含以辅助编程语言定义操作的库。这允许系统处理具有对用这些辅助编程语言编写的用户定义的函数的调用的查询,而无需重新配置数据库的段实例,也无需将以辅助编程语言定义的操作转换为主查询语言的语句,这是时间密集的过程。
[0015]用户定义的函数还可包含恶意代码或漏洞代码,这些代码可能会使数据库瘫痪或破坏其数据。该系统可以通过在无法访问主段主机上的段实例或数据库段的隔离的UDF容器中执行用户定义的函数来减轻恶意代码的风险。因此,恶意代码不会干扰数据库的正常操作。由于UDF容器与数据库系统隔离,因此它们还阻止用户定义的函数访问未经授权的文件系统。
[0016]本说明书的主题的一个或更多个实施例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求书、本主题的其他特征,方面和优点将变得显而易见。
附图说明
[0017]图1是示例云计算平台的图。
[0018]图2是示例容器池的图。
[0019]图3是用于在隔离的容器中执行用户定义的函数的示例过程的流程图。
[0020]在各个附图中,相同的附图编号和名称表示相同的元件。
具体实施方式
[0021]图1是示例云计算平台100的图。云计算平台100提供可以实现分布式数据库的计算资源和服务,包括物理计算机、虚拟机、容器和软件。
[0022]包括客户端设备102的客户端设备可以通过有线或无线网络104访问在云计算平台100上实现的数据库。网络104可以是局域网(LAN),其在有限区域(例如住宅、学校、实验室或办公楼)中连接计算机。局域网包括以太网和Wi-Fi网络。该网络也可以是更大的网络,包括广域网(WAN)或因特网。客户端设备102可以创建、更新或查询数据库。
[0023]云计算平台100包括一个或更多个主段主机110a-110n。主段主机110a-110n是实
现数据库的一个或更多个段实例的计算资源,例如物理计算机、虚拟机、容器或这些的某种组合。在一些实现中,每个主段主机是托管多个容器的物理计算机或虚拟机。在这样的实现中,每个容器实现数据库的相应段实例。在本说明书中,这些容器称为主容器。
[0024]如上所述,容器是通过操作系统级虚拟化实现的隔离的用户空间实例。容器共享各自计算系统的计算资源。计算系统可以动态调整容器之间的计算资源分配,并且可以将不同级别的计算资源分配给在同一台物理计算机上运行的不同容器。
[0025]主容器负责实现处理用主查询语言编写的查询的段实例。
[0026]云计算平台100还包括可以处理用户定义的函数的一个或更多个UDF容器120a-120m。用户定义的函数是由用主查询语言编写的查询调用的函数,并且是其定义由用户输入指定的函数。换句话说,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种系统,包括:一个或更多个计算机和一个或更多个存储设备,所述存储设备存储指令,所述指令在由所述一个或更多个计算机执行时,使所述一个或更多个计算机执行操作,所述操作包括:由安装在云计算平台上的分布式数据库系统接收以主查询语言编写的查询,其中所述查询调用用户定义的函数;分配所述云计算平台上的一个或更多个主段主机以处理以所述主查询语言编写的所述查询的一个或更多个部分;分配一个或更多个第一容器以处理对所述查询中用户定义的函数的调用;由所述一个或更多个主段主机向被分配以处理对所述用户定义的函数的所述调用的所述一个或更多个第一容器提供所述用户定义的函数以及对所述用户定义的函数的调用中的一个或更多个参数;由被分配以处理对所述用户定义的函数的所述调用的所述一个或更多个第一容器,使用所述用户定义的函数中的所述调用的所述参数来执行所述用户定义的函数;由所述一个或更多个主段主机接收由所述一个或更多个第一容器计算的对所述用户定义的函数的所述调用的初始结果;由所述一个或更多个主段主机使用对所述用户定义的函数的所述调用的所述初始结果计算所述查询的最终结果;以及响应于接收到所述查询,提供所述查询的所述最终结果。2.根据权利要求1所述的系统,其中,分配所述第一容器以处理对所述用户定义的函数的所述调用包括:从可用容器池中选择所述第一容器。3.根据权利要求2所述的系统,其中,所述操作还包括:在向所述主段主机提供执行对所述用户定义的函数的所述调用的初始结果后,将所述第一容器释放到所述可用容器池中。4.根据权利要求2所述的系统,其中,所述操作还包括:当所述第一容器的资源利用超过限制时,从所述可用容器池中移除相应的容器;以及将资源从所述被移除的容器重新分配到所述第一容器。5.根据权利要求2所述的系统,其中,在所述分布式数据库系统接收所述查询之前,初始化所述可用容器池中的一个或更多个容器。6.根据权利要求2所述的系统,其中,所述操作还包括:当所述第一容器和可用容器的资源利用并未超过限制时,将容器添加到所述可用容器池中。7.根据权利要求1所述的系统,其中,所述操作还包括:如果所述第一容器之一失效,则将所述用户定义的函数和数据库段存储在永久性存储器中。8.根据权利要求1所述的系统,其中,所述操作还包括:分配新容器以替换失效的第一容器。9.根据权利要求1所述的系统,其中,所述第一容器不与所述主段主机共享计算资源。10.根据权利要求1所述的系统,其中,所述用户定义的函数是用与所述主查询语言不
同的辅助编程语言编写的。11.根据权利要求10所述的系统,其中,分配所述一个或更多个第一容器以处理对所述用户定义的函数的所述调用包括:识别被配置为以所述辅助编程语言处理函数的一个或更多个第一容器。12.一种方法,包括:由安装在云计算平台上的分布式数据库系统接收以主查询语言编写的查询,其中所述查询调用用户定义的函数;分配所述云计算平台上的一个或更多个主段主机以处理以所述主查询语言编写的所述查询的一个或更多个部分;分配一个或更多个第一容器以处理对所述查询中用户定义的函数的调用;由所述一个或更多个主段主机向被分配以处理对所述用户定义的函数的所述调用的所述一个或更多个第一容器提供所述用户定义的...

【专利技术属性】
技术研发人员:王淏舟吴疆郭罡白少琦张桓
申请(专利权)人:皮沃塔尔软件公司
类型:发明
国别省市:

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

1