使用工作负载类将SQL语句路由到弹性计算节点的制作方法

文档序号:31711386发布日期:2022-10-04 19:14阅读:40来源:国知局
使用工作负载类将sql语句路由到弹性计算节点
技术领域
:1.本公开涉及一种由一个或多个计算设备执行的用于在分布式数据库环境中使用工作负载类来将结构化查询语言sql语句路由到弹性计算节点ecn的方法、一种或多种计算设备以及一种或多种计算机可读存储介质。
背景技术
::2.在分布式数据库系统中,将结构化查询语言(structuredquerylanguage,sql)语句(statement)路由(route)到正确的工作节点(workernode)(例如,路由到可以最高效地处理sql语句的工作节点)是重要的。分布式数据库系统通常基于数据关联性来将sql语句路由到工作节点。例如,如果sql语句使用来自特定数据库表的数据,则该sql语句可以被路由到存储该特定数据库表的工作节点。3.在分布式数据库系统中,存在自动sql语句路由系统,其被称为客户端侧语句路由。在sql编译时,客户端侧语句路由机制确定哪个工作节点具有给定sql语句所需的数据集,然后缓存该工作节点的位置客户端侧。当将来执行相同的sql语句时,客户端侧自动地将该sql语句直接路由到所确定的工作节点。尽管这种自动客户端侧语句路由在某些情况下可能是高效的,但其不能灵活地控制工作负载的分布。技术实现要素:4.提供本
发明内容是为了以简化的形式介绍将在下面的具体实施方式中进一步描述的一些概念。本
发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。5.本文描述了各种技术,用于在分布式数据库环境中使用工作负载类(workloadclass)来将结构化查询语言(sql)语句路由到弹性计算节点(elasticcomputenode,ecn)。弹性计算节点不存储持久数据库表。例如,可以接收sql语句,以在分布式数据库环境中执行。可以标识与sql语句的属性相匹配的工作负载类。可以基于工作负载类获得标识弹性计算节点集的路由位置提示。然后,可以将sql语句路由到所标识的弹性计算节点之一来执行。在弹性计算节点处执行sql语句可以涉及从存储持久数据库表的其他节点检索数据库数据。附图说明6.图1是用于路由sql语句的包括协调器节点和工作节点的示例现有技术环境。7.图2是用于路由sql语句的示例环境,其中该环境包括协调器节点和弹性计算节点。8.图3是描绘将sql语句路由到弹性计算节点的示例路由场景的图。9.图4是在分布式数据库环境中使用工作负载类来将结构化查询语言(sql)语句路由到弹性计算节点(ecn)的示例过程的流程图。10.图5是在分布式数据库环境中使用工作负载类来将sql语句路由到ecn(包括在ecn处执行sql语句)的示例过程的流程图。11.图6是其中可以实现一些所描述的实施例的示例计算系统的图。12.图7是可以结合本文所描述的技术使用的示例云计算环境。具体实施方式13.概述14.以下描述涉及在分布式数据库环境中使用工作负载类来将结构化查询语言(sql)语句路由到弹性计算节点(ecn)的技术。例如,可以接收sql语句,以在分布式数据库环境中执行。可以标识与sql语句的属性相匹配的工作负载类。可以基于工作负载类获得标识弹性计算节点集的路由位置提示。弹性计算节点不存储持久数据库表。然后,可以将sql语句路由到所标识的弹性计算节点之一来执行。在弹性计算节点处执行sql语句可以涉及从存储持久数据库表的其他节点检索数据库数据。15.在一些现有解决方案中,用户可以将特定语句路由到特定节点。例如,针对给定的查询,可以输入sap“route_to(路由到)”提示,以将该查询路由到给定节点。然而,需要为每个查询设置“route_to”提示,因此使用起来既耗时又不便。此外,其不能用于控制对工作负载类的路由。16.使用本文所描述的技术,工作负载类映射可以用于控制sql语句到特定节点(包括弹性计算节点)的路由。使用这种技术,用户能够定义工作负载类(以及相关联的映射和路由位置提示)来控制如何(例如,基于属性,诸如会话或其他属性)路由特定的sql语句组。例如,用户可以标识特定的计算密集型工作负载,并将它们路由到特定的弹性计算节点,同时将其他类型的工作负载(例如,非计算密集型工作负载)路由到其他节点(例如,协调器节点、工作节点和/或其他类型的节点)。这种解决方案提供了对sql语句路由的控制,并且提高了分布式数据库环境的效率(例如,减少拥塞、改善响应时间等)。此外,本文所描述的使用工作负载类映射的技术提供了优于使用诸如“route_to”提示的技术的优点。例如,当需要改变(例如,重写)应用时,用“route_to”修改查询字符串可能是不可能的。此外,使用工作负载类映射提供了灵活性,因为其允许用户仅在满足某些条件时路由查询(例如,如果应用名以“bw”开头,则路由查询)。17.弹性计算节点18.在本文所描述的技术中,在分布式数据库环境中执行查询(例如,sql查询)涉及各种类型的节点。一般地,节点运行用于执行数据处理和/或存储任务的软件,该软件在节点的计算资源(例如,处理器、存储器和/或存储资源)上运行。19.一种类型的节点是协调器节点。协调器节点可以充当执行sql查询的默认节点,并且还可以提供数据(例如,数据库表)的持久存储。协调器节点还可以(例如,向客户端应用和/或客户端库)提供路由位置提示信息。20.另一种类型的节点是工作节点。工作节点维护数据(例如,数据库表)的持久存储。在一些解决方案中,sql查询被定向到存储由sql查询使用的数据的工作节点。21.另一种类型的节点是弹性计算节点。在本文所描述的技术中,弹性计算节点接收sql查询并执行计算任务。然而,与工作节点不同,弹性计算节点不持久存储由sql查询使用的数据(即,弹性计算节点不存储持久数据库表)。在一些实现方式中,即使弹性计算节点不存储持久数据库表,它们也可以存储副本(replica)表(例如,只读的副本表)。此外,在一些实现方式中,弹性计算节点存储中间查询结果(例如,从在存储持久数据库表的其他节点处执行的查询操作中获得的结果)的缓存。22.在分布式数据库环境中,弹性计算节点可以提供优点并提高效率。例如,计算密集型工作负载可以被定向到弹性计算节点,这释放了其他节点处的资源(例如,释放了协调器节点处的资源,否则协调器节点会过载,导致响应时间变慢)。弹性计算节点可以使用(例如,来自在其他节点处运行的查询操作符(operator)的)中间查询结果并执行计算密集型任务,否则这些任务会导致其他节点处的性能问题。计算密集型任务可以包括查询操作符,诸如排序(sort)操作符、联结(union)操作符和分组(groupby)操作符。在一些实现方式中,计算密集型任务包括除了表访问操作符之外的查询操作符。23.工作负载类24.在本文所描述的技术中,工作负载类用于将sql语句定向到特定节点。具体地,用户定义控制针对sql语句集的路由行为的工作负载类。在一些实现方式中,使用sql语句来执行定义和更改工作负载类。25.通过定义工作负载类的名称及其关联的工作负载映射和路由位置提示来创建工作负载类。下面是创建名为“ecn_wc”的工作负载类的示例。例如,用户可以输入下面的示例sql语句来创建工作负载类“ecn_wc”。26.createworkloadclass“ecn_wc”(创建工作负载类“ecn_wc”);27.然后,工作负载映射与工作负载类相关联。工作负载映射定义了哪些类型的sql语句将被映射到该工作负载类。下面是为工作负载类“ecn_wc”创建工作负载类映射“ecn_wc_mapping”的示例。例如,用户可以输入下面的示例sql语句来创建工作负载类映射“ecn_wc_mapping”。28.createworkloadmapping“ecn_wc_mapping”29.workloadclass“ecn_wc”set'applicationname'='bw*';30.(创建工作负载映射“ecn_wc_mapping”31.工作负载类“ecn_wc”设置“应用名”=“bw*”);32.这个工作负载类映射“ecn_wc_mapping”将名称以“bw”开头的应用映射到工作负载类“ecn_wc”。使用这个映射,由名称以“bw”开头的应用初始化的sql语句将根据工作负载类“ecn_wc”来路由。33.一般地,工作负载类可以具有任意数量的工作负载映射。工作负载映射可以基于与数据库环境相关联的各种属性,诸如会话属性。例如,工作负载映射可以基于属性(例如,会话变量和/或其他类型的属性),包括以下中的一个或多个:应用属性(例如,与初始化sql语句的应用相关联的应用属性)、数据库对象属性(例如,模式(schema)名、表名等)、数据库用户名(例如,初始化sql语句的用户的用户名),应用用户名和/或应用组件名。34.接着,使用组标签对将用于执行工作负载类的ecn节点进行分组。下面是将两个ecn节点(被称为“ecn_node1”和“ecn_node2”)分为一组并将标签“ecn_group1”分配给该组的示例。例如,用户可以输入下面的示例sql语句来创建组“ecn_group1”。35.altersystemaltertableplacementlocationecn_group136.set(include=》'ecn_node1,ecn_node2')withreconfigure;37.(更改系统更改表放置位置ecn_group138.重新配置为设置(include=》'ecn_node1,ecn_node2'));39.最后,为工作负载类定义路由位置提示。路由位置提示将给定的工作负载类与一个或多个ecn节点的给定组相关联。下面是将工作负载类“ecn_wc”与用标签“ecn_group1”分组的ecn节点相关联的路由位置提示的示例。例如,用户可以输入下面的示例sql语句来为工作负载类“ecn_wc”创建路由位置提示。40.alterworkloadclass“ecn_wc”set'routinglocationhint'='ecn_group1';41.(更改工作负载类“ecn_wc”设置“路由位置提示”=“ecn_group1”);42.可以随时禁用或重新启用针对给定工作负载类的路由位置提示。例如,用户可以输入下面的示例sql语句来禁用针对“ecn_wc”工作负载类的路由位置提示(并且使用如上所述的alterworkloadclass语句,在之后重新启用它、或者用不同的ecn节点组启用它)。43.alterworkloadclass“ecn_wc”unset'routinglocationhint';44.(更改工作负载类“ecn_wc”取消设置“路由位置提示”);45.使用工作负载类,用户可以定义哪些工作负载(例如,相关sql语句组,诸如与给定应用相关联的sql语句)将由特定的弹性计算节点来处理。这允许用户将工作负载卸载到弹性计算节点(例如,而不是由协调器节点处理)。此外,通过使用工作负载类来路由工作负载,路由信息不包括在sql语句中。这允许针对(例如,由工作负载映射定义的)sql语句集改变路由,甚至针对已编译的sql语句(或操作符)改变路由。此外,可以针对sql语句集改变路由,而不必更改sql语句(例如,不必修改应用软件以包括sql语句路由详细信息)。46.使用协调器节点和工作节点的示例环境47.在一些现有技术的分布式数据库解决方案中,使用协调器节点和工作节点来执行sql路由。图1是用于路由sql语句的示例现有技术环境100,包括协调器节点和工作节点。具体地,示例现有技术环境100描绘了包括协调器节点120、工作节点130和工作节点140的分布式数据库环境的一部分。48.示例现有技术环境100包括客户端应用110和相关联的客户端库115。客户端应用110包括用于与分布式数据库系统交互的软件资源。客户端应用110可以使用各种类型的软件资源(例如,网络浏览器资源、数据库客户端软件等)来实现,并且在各种类型的硬件资源(例如,诸如台式计算机、服务器和膝上型计算机的计算设备、虚拟计算资源、云计算资源等)上运行。客户端应用110使用客户端库115来访问分布式数据库系统。在一些实现方式中,客户端库115包括用于访问分布式数据库系统的应用编程接口(applicationprogramminginterface,api)。例如,客户端库115可以至少部分地由诸如开放数据库连接(opendatabaseconnectivity,odbc)、java数据库连接(javadatabaseconnectivity,jdbc)和/或sql数据库连接(sqldatabaseconnectivity,sqldbc)的api来实现。49.示例现有技术环境100描绘了分布式数据库环境的一部分(例如,saphana分布式数据库环境的一部分),其中基于哪个节点具有执行sql语句所需的数据(例如,一个或多个数据库表)来将sql语句路由到节点。具体地,在示例现有技术环境中,持久表集122(在该示例中为持久表t1、t2和t3)存储在协调器节点120处,持久表集132(在该示例中为持久表t4和t5)存储在工作节点130处,并且持久表集142(在该示例中为持久表t6和t7)存储在工作节点140处。当客户端应用110发送sql语句以执行时,客户端库115将该sql语句路由到存储执行该sql语句所需的数据的节点。作为一个示例,如果客户端库115具有使用来自持久表t1的数据的sql语句,则客户端库115将向协调器节点120发送该sql语句,如150所示。作为另一个示例,如果客户端库115具有使用来自持久表t6的数据的sql语句,则客户端库115将向工作节点140发送该sql语句,如155所示。50.在一些实现方式中,客户端库115使用客户端侧语句路由来至少部分地基于哪个节点存储了执行所需的数据(例如,一个或多个数据库表)来确定向哪个节点(例如,节点120、130或140中的哪个节点)发送给定的sql语句以供执行。例如,客户端库115可以在sql编译时间确定节点。客户端库115可以缓存所确定的节点,使得如果稍后遇到相同的sql语句,则可以自动地路由该语句。51.使用协调器节点和弹性计算节点的示例环境52.在本文描述的技术中,使用工作负载分类,在包括弹性计算节点的分布式数据库环境中执行sql语句路由。此外,即使由sql语句使用的表不在弹性计算节点处,也可以将sql语句路由到该弹性计算节点处以供执行。53.图2是用于路由sql语句的示例环境200,其中该环境包括协调器节点和弹性计算节点。具体地,示例环境200描绘了包括协调器节点220、弹性计算节点230和弹性计算节点240的分布式数据库环境的一部分。一般地,分布式数据库环境可以具有任意数量的弹性计算节点和/或任意数量的其他节点(例如,工作节点)。示例环境200描述了如何使用弹性计算节点来在分布式数据库环境中执行查询路由和查询执行。54.示例环境200包括客户端应用210和相关联的客户端库215。客户端应用210包括用于与分布式数据库系统交互的软件资源。客户端应用210可以使用各种类型的软件资源(例如,网络服务器资源、数据库客户端软件等)来实现,并且在各种类型的硬件资源(例如,诸如台式计算机、服务器和膝上型计算机的计算设备、虚拟计算资源、云计算资源等)上运行。客户端应用210使用客户端库215来访问分布式数据库系统。在一些实现方式中,客户端库215包括用于访问分布式数据库系统的应用编程接口(api)。例如,客户端库215可以至少部分地由诸如开放数据库连接(odbc)、java数据库连接(jdbc)和/或sql数据库连接(sqldbc)的api来实现。在一些实现方式中,客户端应用210是分布式数据库环境的托管的应用(例如,托管的网络应用),其向末端用户客户端(end-userclients)(例如,运行网络浏览器的末端用户客户端)提供数据库服务。55.在示例环境200中,持久表集222(持久表t1、t2、t3、t4和t5)存储在协调器节点220处。当客户端应用210发送sql语句以执行时,客户端库215将该sql语句路由到节点之一(例如,路由到协调器节点220、弹性计算节点230或弹性计算节点240)以供执行。客户端库215基于各种标准(例如,基于工作负载分类、当前节点利用率等)做出其路由决定。例如,客户端库215可以接收使用来自持久表t4的数据的sql语句。客户端库215可以(例如,基于工作负载分类和/或其他标准)将该sql语句路由到弹性计算节点230,如260所示,即使持久表t4没有存储在弹性计算节点230处。在这种情况下,弹性计算节点230可以从协调器节点220(其存储持久表t4)检索用于执行查询的数据。在一些实现方式中,弹性计算节点230使用分布式查询处理接口250来检索用于执行查询的数据。56.在一些实现方式中,在弹性计算节点处执行sql语句涉及确定针对该sql语句的查询操作符集(例如,选择(select)操作符、来自(from)操作符、分组(groupby)操作符等)。当查询操作符需要从持久表中访问数据时,可以在除了弹性计算节点之外的节点处执行查询操作符(因为持久表不存储在弹性计算节点处)。在一些实现方式中,在存储持久表的协调器节点或另一种类型的节点(除了弹性计算节点)处执行查询操作符。在一些实现方式中,分布式查询处理接口用于在其他节点处执行查询操作符,并将结果(例如,中间查询结果)提供给弹性计算节点以进行进一步处理。例如,参考示例环境200,客户端库215可以向弹性计算节点230发送sql语句以供执行,如260所示。弹性计算节点230可以确定针对该sql语句的查询操作符集。如果查询操作符之一需要访问持久表t4中的数据(例如,过滤(filter)操作符),则弹性计算节点230使用分布式查询接口250来从协调器节点220中检索数据(例如,弹性计算节点230向协调器节点220发送查询操作符以执行使用持久表t4的查询操作符,并从协调器节点220接收中间查询结果)。弹性计算节点230接收中间查询结果并执行额外的查询操作符(例如,排序、联结、分组等),以完成对sql语句的执行。弹性计算节点230可以向客户端库215返回执行sql语句的结果(例如,供客户端应用210显示或发送给末端用户客户端)。57.在一些实现方式中,每个节点都具有自己的查询编译器和查询优化器。例如,当弹性计算节点230从客户端库215接收到sql语句时,弹性计算节点230编译该sql语句。运行在弹性计算节点230处的查询优化器随后(例如,基于成本)决定将哪些查询操作符发送到其他节点进行处理。例如,查询优化器可以向协调器节点220发送过滤查询操作符,以使用存储在协调器节点220处的持久表222之一来检索中间查询结果。中间查询结果可以在弹性计算节点230处用于执行sql语句的其他查询操作符。58.在一些实现方式中,弹性计算节点具有存储中间查询结果的本地缓存。例如,弹性计算节点230具有存储在弹性计算节点230处执行的sql语句的中间查询结果的本地缓存231,并且弹性计算节点240具有存储在弹性计算节点240处执行的sql语句的中间查询结果的本地缓存241。如果再次接收到相同的sql语句(或相同的查询操作符),则可以从缓存中重新使用中间查询结果(例如,不用将查询操作符发送到协调器节点220)。59.在示例环境200中,客户端库215确定向何处发送sql语句以执行。为了做出确定,客户端库215使用工作负载类信息。例如,当客户端库215接收到需要路由的sql语句时,客户端库215检查匹配的工作负载类(例如,检查一个或多个工作负载类的工作负载类映射,以确定映射之一是否匹配sql语句的属性)。一旦找到匹配的工作负载类,客户端库215使用来自所识别的工作负载类的路由位置提示来确定将sql语句发送到哪个节点。例如,路由位置提示可以标识弹性计算节点240,并且作为响应,客户端库215可以将sql语句发送到弹性计算节点240以供执行。60.在一些情况下,客户端库215从多个可用弹性计算节点中选择特定的弹性计算节点来执行给定的sql语句。当针对给定的sql语句确定了工作负载类,并且所确定的工作负载类具有标识多个弹性计算节点的路由位置提示时,这种情况出现。当这种情况发生时,从与路由位置提示相关联的多个节点中选择弹性计算节点来执行给定的sql语句。在一些实现方式中,通过随机地选择与路由位置提示相关联的多个弹性计算节点中的一个来确定所选的弹性计算节点。例如,如果所确定的工作负载类的路由位置提示标识弹性计算节点230和240,则可以随机地选择其中之一。在其他实现方式中,弹性计算节点由与路由位置提示相关联的多个弹性计算节点当中的可用性(例如,当前负载)来确定(例如,选择负载最小的弹性计算节点)。如果没有可用弹性计算节点可供选择(例如,如果它们过载),则可以将sql语句路由到协调器节点。在其他实现方式中,使用这些技术和/或其他技术的组合。61.示例sql语句路由62.图3是描绘用于将sql语句路由到弹性计算节点的示例路由场景300的图。具体地,在示例路由场景300中,描绘了用于在客户端库215、协调器节点220以及弹性计算节点230和240之间路由sql语句的多个操作。63.在第一操作中,新的sql语句(例如,之前在客户端库215中没有看到的)从客户端库215路由到协调器节点220,如310所示。在协调器节点220处,新的sql语句312被编译以生成编译后的sql计划314。例如,新的sql语句312可以被路由到协调器节点220,因为在客户端库215处,当前没有针对新的sql语句312的匹配的工作负载类(例如,没有新的sql语句的路由位置提示)(例如,协调器节点220可以被用作路由sql语句的默认节点),并且新的sql语句312使用位于协调器节点220处的持久表t1。在新的sql语句312被编译之后,编译后的sql计划314存储在位于协调器节点处的缓存中。此外,与sql语句312相匹配的工作负载类332存储在工作负载类储存库330中的协调器节点220处(例如,工作负载类332可以被创建或者其可以已经存在)。然后,协调器节点220基于编译后的sql计划314执行新的sql语句312。64.在第二操作中,在协调器节点220处执行新的sql语句312的结果连同路由位置(指示协调器220)一起被返回给客户端库215。路由位置作为路由位置提示在客户端库215处存储在客户端侧路由位置提示缓存320中。如果在客户端库215处再次接收到相同的sql语句(例如,基于一些匹配标准,诸如语句对象标识符),则该sql语句将根据客户端侧路由位置提示缓存320中所存储的路由位置提示被路由(根据当前存储的路由位置提示,其将被路由到协调器节点220)。65.在第三操作中,在协调器节点220处执行更改工作负载类命令,以改变存储在协调器节点220处的工作负载类332的路由位置提示。例如,该命令可以作为sql命令(例如,alterworkloadclass命令)从用户(例如,从数据库管理员)接收到。该命令更改了路由位置提示。在这个示例中,路由位置提示从协调器节点220改变到弹性计算节点230和240。66.在第四操作中,当在客户端库215处再次接收到相同的sql语句时,客户端库(基于当前存储在客户端侧路由位置提示缓存320中的路由位置提示)将该sql语句路由到协调器节点220。协调器节点220将执行该sql语句。协调器节点220还将(基于来自第三操作的改变后的路由位置提示)确定(与sql语句匹配的)工作负载类323已经改变,并将工作负载类332的更新后的路由位置提示连同执行该sql语句的结果一起发送回客户端库215。可替代地,代替协调器节点220在该操作中执行该sql语句,协调器节点220可以将工作负载类332的更新后的路由位置提示连同客户端库215应该使用更新后的路由位置提示来执行该sql语句的指示发送回客户端库215。然后,客户端库215将基于更新后的路由位置提示重新路由该sql语句(在该示例中,更新后的路由位置提示将指示弹性计算节点230和240)。67.在第五操作中,一旦接收到更新后的路由位置提示,客户端库215将更新存储在其客户端侧路由位置提示缓存320中的路由位置提示。在该示例中,更新后的路由位置提示标识弹性计算节点230和240。68.在第六操作中,当在客户端库215处再次接收到相同的sql语句时,客户端库215将使用来自其客户端侧路由位置提示缓存320的更新后的路由位置提示来将该sql语句路由到所标识的弹性计算节点230或240之一。例如,客户端库215(例如,基于弹性计算节点230和240的负载)选择弹性计算节点230并发送sql语句,如340所示。69.在一些实现方式中,客户端库(例如,客户端库215)基于准备好的语句来执行sql语句路由。在这种情况下,如果将来需要执行相同的准备好的语句,则客户端库缓存准备好的语句以供重新使用。此外,存储在客户端侧路由位置提示缓存320中的路由位置提示与准备好的语句相关联。例如,客户端库215可以从协调器节点220接收路由位置提示,其中路由位置提示与给定的准备好的语句相关联。客户端库215可以在客户端侧路由位置提示缓存320中存储路由位置提示以及与其相关联的准备好的语句的指示。当客户端库215接收到使用相同的准备好的语句的sql语句时,客户端库215在客户端侧路由位置提示缓存320中找到与该相同的准备好的语句相匹配的路由位置提示,并将其发送到所指示的节点(例如,弹性计算节点230或240之一)以供执行。70.使用工作负载类来将sql语句路由到ecn的方法71.在本文所描述的技术中,可以提供用于在分布式数据库环境中使用工作负载类来将sql语句路由到弹性计算节点的方法。示例方法可以使用软件和/或硬件资源来实现。例如,这些方法可以由分布式数据库环境的一个或多个元件来实现,诸如由客户端应用(例如,客户端应用210)、客户端库(例如,客户端库215)、协调器节点(例如,协调器节点220)、弹性计算节点(例如,弹性计算节点230或240)和/或分布式数据库环境的其他元件来实现。72.图4是在分布式数据库环境中使用工作负载类来将sql语句路由到弹性计算节点的示例过程400的流程图。在410,接收要在分布式数据库环境中执行的sql语句。73.在420,标识与sql语句的属性相匹配的工作负载类。该工作负载类是从多个可用工作负载类中标识出的。例如,工作负载类可以通过将一个或多个属性(例如,应用名、用户名等)与工作负载类的工作负载映射相匹配来标识。74.在430,从所标识的工作负载类中检索路由位置提示。该路由位置提示标识与工作负载类相关联的一个或多个弹性计算节点。75.在440,将sql语句路由到由路由位置提示标识的一个或多个弹性计算节点中所选的弹性计算节点。sql语句由所选的弹性计算节点来执行。此外,所选的弹性计算节点不存储持久数据库表。因此,如果在弹性计算节点处执行sql语句需要访问任何持久表数据,则该持久表数据将需要经由不同的节点(例如,协调器节点或分布式数据库环境中不是弹性计算节点的另一种节点)来访问。例如,弹性计算节点可以将sql语句的至少一部分(例如,一个或多个查询操作符)发送到不同的节点,以从存储在不同节点处的持久数据库表中检索数据库数据(例如,以中间结果的形式)。76.图5是在分布式数据库环境中使用工作负载类来将sql语句路由到弹性计算节点的示例过程500的流程图。在510,接收要在分布式数据库环境中执行的sql语句。77.在520,标识与sql语句的属性相匹配的工作负载类。该工作负载类是从多个可用工作负载类中标识出的。例如,工作负载类可以通过将一个或多个属性(例如,应用名、用户名等)与工作负载类的工作负载映射相匹配来标识。78.在530,从所标识的工作负载类中检索路由位置提示。该路由位置提示标识与工作负载类相关联的一个或多个弹性计算节点。79.在540,将sql语句路由到从由路由位置提示标识的一个或多个弹性计算节点中所选的弹性计算节点。sql语句被路由到所选的弹性计算节点,即使没有持久数据库表存储在所选的弹性计算节点处。80.在550,由所选的弹性计算节点来执行sql语句。sql语句使用来自持久数据库表的数据库数据。因为弹性计算节点不存储持久数据库表,所以数据库数据是从分布式数据库环境的其他节点获得的。例如,弹性计算节点可以将sql语句的至少一部分(例如,一个或多个查询操作符)发送到不同的节点,以从存储在不同节点处的持久数据库表中检索数据库数据(例如,以中间结果的形式)。81.在一些实现方式中,由弹性计算节点从其他节点检索到的数据库数据存储在弹性计算节点处(例如,作为结果的缓存,诸如中间结果缓存)。如果在弹性计算节点处再次接收到相同的sql语句,则弹性计算节点可以从缓存中获得数据库数据,而不是从其他节点检索数据库数据。82.计算系统83.图6描绘了其中可以实现所描述的创新的合适的计算系统600的通用示例。计算系统600不旨在对使用或功能的范围提出任何限制,因为创新可以在不同的通用或专用计算系统中实现。84.参考图6,计算系统600包括一个或多个处理单元610、615和存储器620、625。在图6中,这样的基本配置630包括在虚线内。处理单元610、615执行计算机可执行指令。处理单元可以是通用中央处理单元(cpu)、专用集成电路(asic)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。例如,图6示出了中央处理单元610以及图形处理单元或协处理单元615。有形存储器620、625可以是易失性存储器(例如,寄存器、缓存、ram器)、非易失性存储器(例如,rom、eeprom、闪存等)、或两者的某种组合,其可由处理单元访问。存储器620、625以适于由处理单元执行的计算机可执行指令的形式存储实现本文所描述的一个或多个创新的软件680。85.计算系统可以具有附加特征。例如,计算系统600包括存储装置640、一个或多个输入设备650、一个或多个输出设备660以及一个或多个通信连接670。诸如总线、控制器或网络的互连机制(未示出)互连计算系统600的组件。通常,操作系统软件(未示出)为在计算系统600中执行的其他软件提供操作环境,并协调计算系统600的组件的活动。86.有形存储装置640可以是可移动的或不可移动的,并且包括磁盘、磁带或盒式磁带、cd-rom、dvd或可以用于以非暂时性方式存储信息并且可以在计算系统600内被访问的任何其他介质。存储装置640存储用于实现本文所描述的一个或多个创新的软件680的指令。87.输入设备650可以是触摸输入设备,诸如键盘、鼠标、笔或轨迹球、语音输入设备、扫描设备或向计算系统600提供输入的另外的设备。对于视频编码,输入设备650可以是相机、视频卡、tv调谐器卡或接受模拟或数字形式的视频输入的类似设备、或者是将视频样本读取到计算系统600中的cd-rom或cd-rw。输出设备660可以是显示器、打印机、扬声器、cd刻录机或从计算系统600提供输出的另外的设备。88.通信连接670使得能够通过通信介质与另外的计算实体进行通信。通信介质传送信息,诸如计算机可执行指令、音频或视频输入或输出、或经调制的数据信号中的其他数据。经调制的数据信号是其特性中的一个或多个以对信号中的信息进行编码方式被设置或被改变的信号。作为示例而非限制,通信介质可以使用电、光、rf或其他载体。89.可以在计算机可执行指令的一般上下文(诸如那些包括在程序模块中、在目标真实或虚拟的处理器上的计算系统中被执行的指令)中描述这些创新。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。在各种实施例中,程序模块的功能可以根据需要在程序模块之间被组合或分离。用于程序模块的计算机可执行指令可以在本地或分布式计算系统中执行。90.术语“系统”和“设备”在本文中可以互换使用。除非上下文另有明确指示,否则这两个术语都不意味着对计算系统或计算设备类型的任何限制。一般地,计算系统或计算设备可以是本地的或分布式的,并且可以包括专用硬件和/或通用硬件以及实现本文所描述的功能的软件的任何组合。91.为了便于呈现,具体实施方式使用类似“确定”和“使用”的术语来描述计算系统中的计算机操作。这些术语是对由计算机执行的操作的高级抽象,不应该与由人类执行的操作相混淆。与这些术语相对应的实际计算机操作因实现方式而异。92.云计算环境93.图7描绘了其中可以实现所描述的技术的示例云计算环境700。云计算环境700包括云计算服务710。云计算服务710可以包括各种类型的云计算资源,诸如计算机服务器、数据存储储存库、数据库资源、网络化资源等。云计算服务710可以位于中央(例如,由企业或组织的数据中心提供)或是分布式的(例如,由位于不同位置的各种计算资源提供,诸如不同的数据中心和/或位于不同的城市或国家)。94.云计算服务710由各种类型的计算设备(例如,客户端计算设备)(诸如计算设备720、722和724)使用。例如,计算设备(例如,720、722和724)可以是计算机(例如,台式计算机或膝上型计算机)、移动设备(例如,平板计算机或智能电话)或其他类型的计算设备。例如,计算设备(例如,720、722和724)可以利用云计算服务710来执行计算操作(例如,数据处理、数据存储等)。95.示例实现方式96.尽管为了方便呈现,以特定的次序描述了所公开的方法中的一些的操作,但是应当理解,这种描述方式包含重新排列的次序,除非下面阐述的特定语言要求特定的次序。例如,在某些情况下,顺序描述的操作可以被重新排列或同时执行。此外,为了简单起见,附图可能没有示出所公开的方法可以与其他方法结合使用的各种方式。97.所公开的方法中的任一种都可以被实现为存储在一个或多个计算机可读存储介质上并在计算设备(即,任何可用的计算设备,包括智能电话或包括计算硬件的其他移动设备)上执行的计算机可执行指令或计算机程序产品。计算机可读存储介质是可以在计算环境中被访问的有形介质(一个或多个光学介质盘,诸如dvd或cd,易失性存储器(诸如dram或sram)、或非易失性存储器(诸如闪存或硬盘))。作为示例并参考图6,计算机可读存储介质包括存储器620和625以及存储装置640。术语计算机可读存储介质不包括信号和载波。此外,术语计算机可读存储介质不包括通信连接,诸如670。98.用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据可以存储在一个或多个计算机可读存储介质上。例如,计算机可执行指令可以是专用软件应用或经由网络浏览器或其他软件应用(诸如远程计算应用)被访问或下载的软件应用的一部分。这样的软件可以例如在单个本地计算机(例如,任何合适的商业上可用的计算机)上或在使用一个或多个网络计算机的网络环境中(例如,经由互联网、广域网、局域网、客户端-服务器网络(诸如,云计算网络)或其他这样的网络)来执行。99.为了清楚起见,仅描述了基于软件的实现方式的某些选定方面。省略了本领域公知的其他细节。例如,应当理解,所公开的技术不限于任何特定的计算机语言或程序。例如,所公开的技术可以通过用c++、java、perl或任何其他合适的编程语言编写的软件来实现。类似地,所公开的技术不限于任何特定的计算机或特定类型的硬件。合适的计算机和硬件的特定细节是公知的,因此不需要在本公开中详细阐述。100.此外,任何基于软件的实施例(包括例如用于使计算机执行所公开的方法中的任一种的计算机可执行指令)可以通过合适的通信装置被上传、下载或远程访问。这样的合适的通信装置包括例如互联网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括rf、微波和红外通信)、电子通信或其他这样的通信装置。101.所公开的方法、装置和系统不应该被解释为以任何方式进行限制。相反,本公开针对各种公开的实施例的所有新颖和非显而易见的特征和方面,单独地以及以彼此的各种组合和子组合的形式。所公开的方法、装置和系统不限于任何特定方面或特征或其组合,所公开的实施例也不要求任何一个或多个特定优点存在或任何问题被解决。102.来自任何示例的技术可以与在其他示例中的任何一个或多个中描述的技术相结合。鉴于可以应用所公开技术的原理的多个可能的实施例,应当认识到,所示实施例是所公开技术的示例,并且不应当被视为对所公开技术的范围的限制。相反,所公开技术的范围包括所附权利要求的范围和精神所覆盖的内容。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1