CN105164677B - 在并行数据库处执行存储过程的方法和系统 - Google Patents

在并行数据库处执行存储过程的方法和系统 Download PDF

Info

Publication number
CN105164677B
CN105164677B CN201480015886.5A CN201480015886A CN105164677B CN 105164677 B CN105164677 B CN 105164677B CN 201480015886 A CN201480015886 A CN 201480015886A CN 105164677 B CN105164677 B CN 105164677B
Authority
CN
China
Prior art keywords
request
storing process
sql statement
database
parallel
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.)
Active
Application number
CN201480015886.5A
Other languages
English (en)
Other versions
CN105164677A (zh
Inventor
N·特勒蒂亚
A·D·豪勒沃森
A·D·耶戈洛夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN105164677A publication Critical patent/CN105164677A/zh
Application granted granted Critical
Publication of CN105164677B publication Critical patent/CN105164677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2443Stored procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及用于在并行数据库处执行存储过程的方法、系统和计算机程序产品。变换存储过程,以使得在独立数据库服务器和并行数据库协调器之间拆分对存储过程的执行。在独立数据库服务器处发起对存储过程的执行。在执行时间,控制流语句、变量分配、表达式求值等由独立数据库服务器处理。将SQL语句从独立数据库服务器传递到数据库以供执行。可将来自经执行的SQL语句的结果返回给独立数据库服务器或返回给客户端。可将并行数据库协调器作为链接的服务器添加到独立数据库服务器。在一些实施例中,使用会话令牌在不同方之间共享会话状态。

Description

在并行数据库处执行存储过程的方法和系统
背景
1.背景和相关技术
计算机系统及相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。现在,计算机系统通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排、帐目管理等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统及其他电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行被分布在多个不同的计算机系统和/或多个不同的计算环境中。
在一些环境中,发出相对于数据语料库的查询以促成可从该数据语料库检索定向信息。用户(或甚至计算机系统)使用来自查询语言的构造来制定查询。查询语言通常包括多个构造,这些构造可被编组成不同的组合来表达用于检索数据的逻辑意图。查询被发给数据管理系统进行处理。数据管理系统将该查询转换成相应的兼容物理操作集合(有时并且此后被称为“查询计划”)以用于实现所表达的逻辑意图。查询计划可随后被执行以根据所表达的逻辑意图从数据语料库检索数据。可将检索到的数据返回给查询发出者。
例如,SQL可用于制定从关系数据库检索数据的查询。该查询被发给控制对关系数据库的访问的数据库管理系统。数据管理系统将该查询转换成查询计划。查询计算随后被执行以从关系数据库检索数据。可将检索到的数据库数据返回给查询发出者。
一些数据库系统是独立的(或单节点)数据库系统,其中所有数据和优化数据均被物理地存储在同一机器上。其他数据库系统是并行数据库系统。在并行数据库系统中,数据库存储分散在多个计算节点上。每一计算节点本地地存储数据库的一个或多个部分。其他模块(例如,在控制节点处)抽象来自用户的数据库的分布式性质,使得它看上去为单个统一数据库。由此,在并行数据库系统中,与查询有关的数据以及用于查询计划优化的数据可分散在多个不同的节点上。
支持相对于并行数据库执行批量和存储过程至少具有多个困难和/或效率低下。至少一个困难是在并行数据库执行环境内保留等效单系统行为。该同一行为可在并行数据库中的每一计算节点处实现。然而,在每一计算节点处实现同一行为可导致重复的努力和冗余操作的执行。
简要概述
本发明涉及用于在并行数据库处执行存储过程的方法、系统和计算机程序产品。并行数据库协调器被配置成发出相对于并行数据库的SQL语句。并行数据库包括分散在多个计算节点上的多个数据库分区。并行数据库协调器还连接到独立数据库服务器的实例。
并行数据库协调器接收创建存储过程的请求。该创建请求包括名称和存储过程语句。存储过程将包括一个或多个SQL语句。存储过程还可任选地包括至少一个其他非SQL语句(例如,控制流、变量分配、表达式求值等)。并行数据库协调器变换存储过程语句,以使得在执行存储过程时,将一个或多个SQL语句传递回并行数据库协调器。创建存储过程的请求随后被转发到独立数据库服务器。独立数据库服务器创建并存储经变换的存储过程。
随后,并行数据库协调器从客户端接收执行请求。该执行请求请求执行存储过程。并行数据库协调器将该执行请求转发给独立数据库服务器。独立数据库服务器执行经变换的存储过程。在独立数据库服务器处执行期间,经变换的存储过程将执行(一个或多个SQL语句中的)一SQL语句的请求发送给并行数据库协调器。并行数据库协调器从独立数据库服务器接收执行SQL语句的请求。
并行数据库协调器相对于并行数据库执行SQL语句。并行数据库协调器接收来自相对于并行数据库执行SQL语句的结果。取决于SQL语句的类型,并行数据库协调器将这些结果返回给独立数据库服务器或返回给客户端。在合适时,独立数据库服务器从并行数据库协调器接收结果。在该独立数据库服务器处执行至少一个其他非SQL语句期间,该独立数据库服务器使用这些结果。
因此,在并行数据库协调器和独立数据库服务器之间拆分对经变换的存储过程中的语句的执行。并行数据库协调器执行SQL语句,而独立数据库服务器处理其他非SQL语句,诸如流控制语句、变量分配、表达式求值等。
该概述被提供以便以简化形式介绍概念的选集,所述概念在以下详细描述中被进一步描述。该概述不意图标识所要求保护的主题的关键特征或基本特征,也不意图被用来帮助确定所要求保护的主题的范围。
本发明的附加特征和优点将在以下描述中叙述,并且其一部分根据本描述将是显而易见的,或者可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些以及其它特征、优点和特征将根据以下描述和所附权利要求而变得更显而易见,或者可通过如此后阐述的对本发明的实践而获知。
附图简述
为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图只描绘了本发明的各典型实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释本发明,在附图中:
图1A和1B示出促成在并行数据库处创建和执行存储过程的示例计算机体系结构。
图2示出用于在并行数据库处创建和执行存储过程的示例方法的流程图。
图3示出在独立数据库服务器和并行数据库协调器之间拆分存储过程执行的更详细的示例。
图4A-4F示出处于原始格式和处于相应的经变换格式的各过程。
详细描述
本发明涉及用于在并行数据库处执行存储过程的方法、系统和计算机程序产品。并行数据库协调器被配置成发出相对于并行数据库的SQL语句。并行数据库包括分散在多个计算节点上的多个数据库分区。并行数据库协调器还连接到独立数据库服务器的实例。
并行数据库协调器接收创建存储过程的请求。存储过程包括一个或多个SQL语句。存储过程还可任选地包括至少一个其他非SQL语句(例如,控制流、变量分配、表达式求值等)。并行数据库协调器变换存储过程,以使得在执行存储过程时,将一个或多个SQL语句传递回并行数据库协调器。创建存储过程的请求随后被转发到独立数据库服务器。独立数据库服务器创建并存储经变换的存储过程。
随后,并行数据库协调器从客户端接收执行请求。该执行请求请求执行存储过程。并行数据库协调器将执行请求转发到单独数据库服务器。独立数据库服务器执行经变换的存储过程。在独立数据库服务器处执行期间,经变换的存储过程将执行(一个或多个SQL语句中的)一SQL语句的请求发送给并行数据库协调器。并行数据库协调器从独立数据库服务器接收执行SQL语句的请求。
并行数据库协调器相对于并行数据库执行SQL语句。并行数据库协调器接收来自相对于并行数据库执行SQL语句的结果。取决于SQL语句的类型,并行数据库协调器将这些结果返回给独立数据库服务器或返回给客户端。在合适时,独立数据库服务器从并行数据库协调器接收结果。独立数据库服务器使用这些结果以在独立数据库服务器处执行至少一个其他非SQL语句。
因此,在并行数据库协调器和独立数据库服务器之间拆分对经变换的存储过程中的语句的执行。并行数据库协调器执行SQL语句,而独立数据库服务器处理其他非SQL语句,诸如流控制语句、变量分配、表达式求值等。
本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如举例而言一个或多个处理器和系统存储器的计算机硬件,如以下更详细讨论的。本发明范围内的各实施例也包括用于实现或存储计算机可执行指令和/或数据结构的实体及其他计算机可读介质。这种计算机可读介质可以使可由通用或专用计算机系统接入的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。实现计算机可执行指令的计算机可读介质是传输介质。因此,作为示例但非限制,本发明的各实施例可包括至少两种完全不同种类的计算机可读介质:计算机存储介质(设备)和传输介质。
计算机存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM、固态驱动器(“SSD”)(如基于RAM)、闪存、相变存储器(“PCM”)、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备间传输电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(或硬连线、无线或者硬连线或无线的组合)被传输或提供至计算机时,计算机将该连接正确地视为传输介质。传输介质可以包括可以用来携带所需要的以计算机可执行的指令或数据结构的形式存在的程序代码装置并可以被通用或专用计算机访问的网络和/或数据链路。上述的组合应当也被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(设备)。因而,应当理解,计算机存储介质(设备)可被包括在还利用(甚至主要利用)传输介质的计算机系统组件中。
计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言这样的中间格式指令、或甚至是源代码。尽管已经用对于结构特征和/或方法动作特定的语言描述了主题,但是应当理解,在所附权利要求书中定义的主题不必要限于上述的特征或上述动作。相反,所述特征和动作被公开作为实现权利要求的示例形式。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、平板、寻呼机、路由器、交换机等等。本发明也可以在分布式系统环境中实现,在分布式系统环境中,通过网络链接(通过硬连线数据链路、或通过无线数据链路、或通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者均执行任务。在分布式系统环境中,程序模块可位于本地和远程存储器存储设备两者中。
本发明的各实施例还可以在云计算环境中实现。在该描述和下面的权利要求书中,“云计算”被定义为用于允许对可配置计算资源的共享池的按需网络访问的模型。例如,云计算机可被部署于市场以提供对可配置计算资源的共享池的普遍存在且方便的按需访问。可配置计算资源的共享池可经由虚拟化而被快速地供应,并可利用低管理努力或服务提供商交互来释放,并随后相应被缩放。
云计算模型可由各种特性组成,诸如举例来说按需自服务、广泛网络访问、资源池、快速灵活性、测定的服务等。云计算模型还可展现各种服务模型,诸如例如软件即服务(“SaaS”)、平台即服务(“PaaS”)以及基础结构即服务(“IaaS”)。云计算模型还可以使用不同的部署模型来部署,诸如私有云、社区云、公共云、混合云等。在该描述和权利要求书中,“云计算环境”是其中采用了云计算的环境。
一般来说,本发明的各实施例变换存储过程,以使得在独立数据库服务器(例如,外壳数据库)和并行数据库协调器(例如,并行数据库仓库(PDW)引擎)之间拆分对存储过程的执行。在独立数据库服务器处发起对存储过程的执行。在执行时间,控制流语句、变量分配、表达式求值等由独立数据库服务器处理(或集中在独立数据库服务器处)。将SQL语句(例如,SELECT(选择)、CREATE(创建)、DELETE(删除)、UPDATE(更新)、INSERT(插入)等)从独立数据库服务器传递到并行数据库协调器以供执行。可将来自经执行的SQL语句的结果返回给独立数据库服务器或返回给客户端。可将并行数据库协调器作为链接的服务器添加到独立数据库服务器。可使用诸如例如OPENQUERY(打开查询)、EXECUTE AT(在…执行)之类的语句将SQL从独立数据库服务器传递到并行数据库协调器。在一些实施例中,会话令牌被用于在不同方之间共享会话状态。
图1A和1B示出促成在并行数据库处创建和执行存储过程的示例计算机体系结构100。参考图1A,计算机体系结构100包括客户端101、并行数据库协调器102、独立数据库服务器103、数据库131和存储107。客户端101、并行数据库协调器102、独立数据库服务器103、数据库131和存储107中的每一个都可在网络上彼此相连(或为网络的一部分),所述网络例如是诸如例如局域网(“LAN”)、广域网(“WAN”)和甚至因特网。因此,客户端101、并行数据库协调器102、独立数据库服务器103、数据库131和存储107以及任何其它连接的计算机系统及其组件都可以创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其它更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等,或使用其他非数据报协议)。
现参考图1A,客户端101可以是数据库客户端。客户端101可提供用于与数据库131中存储的数据进行交互的用户界面。客户端101可将创建存储过程的请求发送给并行数据库协调器102。该存储过程创建请求可包括供存储过程使用的名称和要被执行的存储过程语句。
并行数据库协调器102(例如,并行数据仓库(PDW)引擎)可从客户端101接收请求。当接收到存储过程创建请求时,过程变换模块104可变换该请求的存储过程语句。该变换可使得在执行存储过程时,存储过程语句中的任何SQL语句被返回给并行数据库协调器102进行处理。并行数据库协调器102可随后将具有该名称和经变换的存储过程语句的存储过程创建请求发送给独立数据库服务器103。
独立数据库服务器103(例如,外壳数据库)可接收该存储过程创建请求。存储过程创建模块可从经变换的存储过程语句创建可执行过程。独立数据库服务器103可将名称与可执行过程一起存储在存储107中。
数据库131包括数据库部分131A、131B和131C以及计算节点121、122和123。计算节点121、122和123可被配置在不共享任何事物的体系结构中。由此,计算节点121、122和123中的每一者都维护分开的存储器(例如,RAM)以及来自其他节点的分开的存储资源(例如,盘驱动器)。数据库131是跨计算机节点121、122和123分布的,这些计算机节点分别维护数据库部分131A、131B和131C。并行数据库协调器102可包括抽象数据库131的分布式性质的抽象硬件和/或软件组件。并行数据库协调器109可使用抽象硬件和/或软件组件来将数据库131作为独立数据库呈现给客户端101。因此,客户端101可使用与独立数据库兼容的命令(包括提交查询)来与数据库131进行交互。
图2示出用于在并行数据库处创建和执行存储过程的示例方法200的流程图。方法200将参考计算机体系结构100的组件和数据来描述。
方法200包括将创建存储过程的创建请求发送给并行数据库协调器,该创建请求包括名称和存储过程语句,该存储过程包括一个或多个SQL语句(201)。存储过程还可任选地包括至少一个非SQL语句。例如,客户端101可将创建的请求111发送给并行数据库协调器102。创建请求111包含名称112和存储过程语句113。名称112指示要赋予存储过程的名称。将使用存储过程语句113来创建可执行过程。存储过程语句113可包括SQL语句,并且还可任选地包括非SQL语句(例如,控制流语句、变量分配、表达式求值等)。方法200包括从客户端接收创建请求(202)。例如,并行数据库协调器102可从客户端101接收创建请求111。
方法200包括变换存储过程语句,以使得在执行存储过程时,一个或多个SQL语句被传递回并行数据库协调器(203)。例如,过程变换模块104可将存储过程语句113变换成经变换的存储过程语句113T。可将存储过程语句113中的任何SQL语句变换成经变换的存储过程语句113T,以使得在执行期间将SQL语句传递回并行数据库协调器102。
图4A-4F描绘促成将SQL语句传输回并行数据库协调器的各种变换。在一些实施例中,SELECT语句是使用EXECUTE语句或OPENQUERY语句来变换的。并行数据库协调器可被添加到存储过程语句中作为链接的数据库(例如,“[LINKED DB(链接的DB)]”),以使得在执行期间将EXECUTE或OPENQUERY语句传递回并行数据库协调器。
图4A描绘针对不具有任何参数的SELECT查询的两种可能的变换。图4B描绘针对具有参数的SELECT查询的一可能的变换。图4C描绘针对具有变量分配但不具有参数的SELECT查询的两种可能的变换。图4D描绘对不具有参数的标量子查询的一可能的变换。图4E描绘对控制流语句内的标量查询的一可能的变换。图4F描绘对具有INTO(变成)语句但不具有任何参数的SELECT查询的一可能的变换。
任何数目的其他变换也是可能的。在一些实施例中,变换可通过扩展被并行数据库协调器的解析器接受的语法来促成。在其他实施例中,OPENQUERY可被扩展成接受参数。
转至图2,方法200包括将进一步创建请求转发给独立数据库服务器,该进一步创建请求包括名称和经变换的存储过程语句(204)。例如,并行数据库协调器102可将创建请求114转发给独立数据库服务器103。如所描绘的,创建请求114包括名称112和经变换的存储过程语句113T。方法200包括从并行数据库协调器接收进一步创建请求(205)。例如,独立数据库服务器103可接收创建的请求114。
方法200包括从经变换的存储过程语句创建存储过程并存储该存储过程(206)。例如,存储过程创建模块106可从经变换的存储过程语句113T创建可执行过程116。可执行过程116包括表示SQL语句117并且潜在地还表示非SQL语句118的可执行代码。独立数据库服务器103可将可执行过程116与名称112一起存储在存储107中。
转至图1B,客户端101还可将执行存储过程的请求发送给并行数据库协调器102。存储过程执行请求可包括要被执行的存储过程的名称。并行数据库协调器102可从客户端101接收存储过程执行请求。作为响应,并行数据库协调器102可将包括要被执行的存储过程的名称的存储过程执行请求转发给独立数据库服务器103。
在合适时,会话相关模块152可生成会话令牌。并行数据库协调器102可将该会话令牌附加到经转发的存储过程执行请求。会话令牌可用于共享客户端可具有的会话状态(包括交易、数据库上下文等)以及授权该请求,而无须在存储过程随后被执行时存储用户凭证并将用户凭证传递给并行数据库协调器。
独立数据库服务器103可从并行数据库协调器102接收存储过程执行请求。过程执行模块153可参考存储107来标识具有所包括的名称的存储过程。存储过程可以是从经变换的存储过程语句创建的存储过程,以使得在执行期间可将任何SQL语句传递到并行数据库协调器102。过程执行模块153可发起存储过程在独立数据库服务器103处的执行。
在执行期间,在独立数据库服务器103处执行非SQL语句(例如,控制流、变量分配、表达式求值等)。在遇到SQL语句(例如,被封装在EXECUTE AT或OPENQUERY中)时,将这些SQL语句转发给并行数据库协调器102(基于并行数据库协调器102是链接的数据库)。在合适时,可将(先前从并行数据库协调器102接收到的)会话令牌附加到向并行数据库协调器102传递的任何SQL语句。
由此,在存储过程的执行期间,并行数据库协调器102可从独立数据库服务器103接收SQL语句,并可能一起接收会话令牌。当接收到会话令牌时,会话相关模块152可使用该会话令牌来使对SQL语句的执行与客户端101的状态对准。即,SQL语句可在与从客户端101原始接收到的存储过程执行请求相同的会话下执行。SQL语句处理器151可执行该SQL语句以向数据库131提交查询。数据库131可将查询结果返回给并行数据库协调器102。
这些查询结果可被返回给独立数据库服务器103或可被返回给客户端101。结果被返回给独立数据库服务器103还是返回给客户端101可基于SQL语句的类型。例如,标量子查询结果可被返回给独立数据库服务器103。另一方面,一般的SELECT语句的结果可被返回给客户端101。
过程执行模块153在其他非SQL语句的执行期间可使用返回的结果,以诸如例如作出控制流判决、向变量分配值或求值表达式。
在存储过程的执行期间,任何数目的SQL语句可被设置到并行数据库协调器102并且结果被返回给独立数据库服务器103或返回给客户端101。
再次返回到图2,方法200包括将执行语句发送给并行数据库协调器,该执行请求请求执行存储过程(207)。例如,客户端101可将执行请求141发送给并行数据库协调器102。执行请求141可请求执行具有名称112的存储过程。方法200包括从客户端接收执行请求(208)。例如,并行数据库协调器102可从客户端101接收执行请求141。
方法200包括将执行请求转发给独立数据库服务器(209)。例如,并行数据库协调器102可解析执行请求141并将相应的执行请求142转发给独立数据库服务器103。在合适时,会话相关模块152可为客户端101和并行数据库协调器102之间的会话生成会话令牌143。会话相关模块152可将会话令牌143附加到执行请求142。方法200包括从并行数据库协调器接收执行请求(210)。例如,独立数据库服务器103可从并行数据库协调器102接收执行请求142。
方法200包括执行存储过程(211)。例如,响应于接收执行请求142,过程执行模块153可确定名称112对应于可执行过程116。由此,过程执行模块153可发起对可执行过程116的执行。可分别在并行数据库协调器102和独立数据库服务器103之间拆分对SQL语句117和非SQL语句118的执行。
方法200包括向并行数据库协调器发送执行SQL语句的请求(212)。在可执行过程116的执行期间,可遇到SQL语句117和非SQL语句118。可将遇到的SQL语句(例如,被包封在EXECUTE AT或OPENQUERY内部)发送给并行数据库协调器102以供执行。例如,过程执行模块153可将SQL语句117A(包括在诸SQL语句117中的一SQL语句)发送给并行数据库协调器102。在合适时,可将会话令牌143与SQL语句117A一起发送给并行数据库协调器102。
方法200包括从独立数据库服务器接收执行SQL语句的请求(213)。例如,并行数据库协调器102可从独立数据库服务器103接收SQL语句117A。在合适时,并行数据库协调器102可接收会话令牌143以及SQL语句117A。会话相关模块152可使用会话令牌143来将SQL语句117A与客户端101和并行数据库协调器102之间的会话对准。
方法200包括相对于并行数据库执行SQL语句(214)。例如,SQL语句处理器151可相对于数据库131执行SQL语句117A。执行SQL语句117A可包括并行数据库协调器102将查询144提交给数据库131。方法200包括接收来自相对于并行数据库执行SQL语句的结果(215)。例如,并行数据库协调器102可接收来自相对于数据库131执行SQL语句117A的(针对查询144的)结果146。
方法200包括基于SQL语句的类型将结果返回给合适的目的地(216)。例如,并行数据库协调器102可将结果146返回给独立数据库服务器103。替换地,结果146可被返回给客户端101。将结果返回给独立数据库103还是返回给客户端101可取决于SQL语句117A的类型。例如,如果SQL语句117A返回标量子查询结果,则可将结果146返回给独立数据库服务器103。另一方面,如果SQL语句117A是一般的SELECT语句,则可将结果146返回给客户端101。
方法200包括(在独立数据库服务器处)接收来自并行数据库协调器的结果(217)。例如,独立数据库服务器103可接收来自并行数据库协调器102的结果146。方法200包括在至少一个其他非SQL语句的执行期间使用结果(218)。例如,过程执行模块153可在非SQL语句118中的至少一者的执行期间使用结果146。替换地,方法200包括(在客户端处)接收来自并行数据库协调器的结果(219)。例如,客户端101可接收结果146。
在合适时,可对包括在SQL语句117中的任何其他SQL语句重复212到218。
图3示出在独立数据库服务器103和并行数据库协调器102之间拆分存储过程执行的更详细的示例。如所描绘的,过程执行模块153正在执行过程116。在执行期间,将SQL语句301发送给并行数据库协调器102。SQL语句处理器151处理SQL语句301以向数据库131提交查询302。查询302可请求顾客表中的多个条目。SQL语句处理器可响应于提交的查询302而接收返回结果303。结果303可包括顾客表中的多个条目。
SQL语句处理器151可将结果303返回给过程执行模块153。过程执行模块153可从SQL语句处理器151接收结果303。过程执行模块153可以在在独立数据库服务器103处评估条件语句304时使用结果303。由此,在过程116的执行期间,在并行数据库协调器102处执行SQL语句301,并在独立数据库103处执行条件语句304。
为了支持附加的存储过程专用行为,本发明的各实施例可使用由并行数据库协调器102托管的专用回调端口。该回调端口被托管,从而内部地向控制节点SQL服务器展示并行数据库协调器端点。控制节点SQL服务器具有经由其QLEDB提供者连接到那个端点的所注册的链接服务器。该端口的展示可限于控制节点的边界,以使得没有客户端认证被用于链接的服务器以与该端口通信。相反,会话令牌可在用户会话创建的时间被生成,并可被附加到被经由链接的服务器从SQL服务器发送到引擎过程的任何查询。
由于展示了不同的端口边界,因此在该端口后面的主机的责任可被扩展为能够将会话令牌从传入查询中剥离、确认查询并将查询执行附加到相关联的会话上。由此,可共享用户可具有的任何会话状态,包括交易、数据库上下文等。还可使用会话令牌来授权请求,而无须在所有时间都存储用户凭证并将用户凭证传递给链接的服务器。可在用户会话的结束处处置会话令牌。解析会话令牌的逻辑可对外部请求禁用而对内部端口启用。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所述实施例要被视为在全部方面仅仅为说明性的且非限制性的。因此,本发明的范围由所附权利要求书指示,而非由以上描述指示。在权利要求书的等价物的含义和范围内的所有变化应被包含在其范围内。

Claims (10)

1.一种在计算机系统处的用于执行存储过程的方法,所述计算机系统包括并行数据库协调器,所述并行数据库协调器被配置成发出相对于并行数据库的SQL语句,所述并行数据库包括分散在多个计算节点上的多个数据库分区,所述并行数据库协调器连接到独立数据库服务器的实例,所述方法包括:
接收执行请求,所述执行请求请求执行存储过程,所述存储过程已通过以下而被变换:将被包括在所述存储过程中的一个或多个SQL语句包封在将并行数据库协调器作为链接的服务器来参考的命令中,使得所述一个或多个SQL语句在所述存储过程被执行时被传递回所述并行数据库协调器;
将所述执行请求转发给所述独立数据库服务器;
从所述独立数据库服务器接收相对于所述并行数据库从所述一个或多个SQL语句中执行SQL语句的请求,所述请求从响应于接收到所述执行请求而在所述独立数据库服务器处执行的相应的经变换的存储过程发出,所述经变换的存储过程包括一个或多个SQL语句和至少一个其他非SQL语句,所述独立数据库服务器处理对所述至少一个其他非SQL语句的执行;
相对于所述并行数据库执行所述SQL语句;
接收来自相对于所述并行数据库执行所述SQL语句的结果;以及
基于所述SQL语句的类型将所述结果返回给合适的目的地。
2.如权利要求1所述的方法,其特征在于,进一步包括在接收所述执行请求之前:
接收创建所述存储过程的创建请求,所述创建请求包括名称和存储过程语句,所述存储过程语句包括一个或多个SQL语句和至少一个其他非SQL语句;
变换所述存储过程语句,以使得所述存储过程在被执行时,一个或多个SQL语句被传递回所述并行数据库协调器;以及
将进一步创建请求转发给独立数据库服务器,所述进一步创建请求包括所述名称和所述经变换的存储过程语句。
3.如权利要求1所述的方法,其特征在于,进一步包括为所述执行请求创建会话令牌;以及
其中将所述执行请求转发给所述独立数据库服务器包括将所述执行请求与所述会话令牌一起转发给所述独立数据库服务器。
4.如权利要求1所述的方法,其特征在于,接收执行请求包括从数据库客户端接收请求;以及
其中基于所述SQL语句的类型将所述结果返回给合适的目的地包括将所述结果返回给所述数据库客户端。
5.如权利要求1所述的方法,其特征在于,基于所述SQL语句的类型将所述结果返回给合适的目的地包括将所述结果返回给所述独立数据库服务器。
6.一种在计算机系统处的用于执行存储过程的系统,所述计算机系统包括并行数据库协调器,所述并行数据库协调器被配置成发出相对于并行数据库的SQL语句,所述并行数据库包括分散在多个计算节点上的多个数据库分区,所述并行数据库协调器连接到独立数据库服务器的实例,该系统包括:
用于接收执行请求的装置,所述执行请求请求执行存储过程,所述存储过程已通过以下而被变换:将被包括在所述存储过程中的一个或多个SQL语句包封在将并行数据库协调器作为链接的服务器来参考的命令中,使得所述一个或多个SQL语句在所述存储过程被执行时被传递回所述并行数据库协调器;
用于将所述执行请求转发给所述独立数据库服务器的装置;
用于从所述独立数据库服务器接收相对于所述并行数据库从所述一个或多个SQL语句中执行SQL语句的请求的装置,所述请求从响应于接收到所述执行请求而在所述独立数据库服务器处执行的相应的经变换的存储过程发出,所述经变换的存储过程包括一个或多个SQL语句和至少一个其他非SQL语句,所述独立数据库服务器处理对所述至少一个其他非SQL语句的执行;
用于相对于所述并行数据库执行所述SQL语句的装置;
用于接收来自相对于所述并行数据库执行所述SQL语句的结果的装置;以及
用于基于所述SQL语句的类型将所述结果返回给合适的目的地的装置。
7.如权利要求6所述的系统,其特征在于,进一步包括在用于接收执行请求的装置之前:
用于接收创建所述存储过程的创建请求的装置,所述创建请求包括名称和存储过程语句,所述存储过程语句包括一个或多个SQL语句和至少一个其他非SQL语句;
用于变换所述存储过程语句,以使得所述存储过程在被执行时,一个或多个SQL语句被传递回所述并行数据库协调器的装置,该装置进一步包括:
用于将所述一个或多个SQL语句包封在以下之一内部:EXECUTE AT和OPENQUERY的装置;以及
用于将所述并行数据库协调器作为链接的服务器来参考的装置;以及用于将进一步创建请求转发给独立数据库服务器的装置,所述进一步创建请求包括所述名称和所述经变换的存储过程语句。
8.如权利要求6所述的系统,其特征在于,用于从所述独立数据库服务器接收请求的装置包括用于从所述独立数据库服务器接收执行从以下选出的SQL语句的请求的装置:SELECT、CREATE、DELETE、UPDATE和INSERT。
9.一种系统,所述系统包括并行数据库协调器和独立数据库服务器,
所述并行数据库协调器包括:
一个或多个处理器;
系统存储器;以及
一个或多个计算机存储设备,所述一个或多个计算机存储设备具有存储在其上的表示SQL语句处理器和会话相关模块的计算机可执行指令,其中所述SQL语句处理器被配置成:
从所述独立数据库服务器接收相对于并行数据库从所述一个或多个SQL语句中执行SQL语句的请求,所述请求从响应于接收到执行请求在所述独立数据库服务器处执行的相应的经变换的存储过程处发出,所述经变换的存储过程包括一个或多个SQL语句和至少一个其他非SQL语句,所述独立数据库服务器处理对所述至少一个其他非SQL语句的执行;
相对于所述并行数据库执行所述SQL语句;
接收来自相对于所述并行数据库执行所述SQL语句的结果;以及
基于所述SQL语句的类型将所述结果返回给合适的目的地;以及
其中所述会话相关模块被配置成:
接收执行请求,所述执行请求请求执行存储过程,所述存储过程已通过以下而被变换:将被包括在所述存储过程中的一个或多个SQL语句包封在将并行数据库协调器作为链接的服务器来参考的命令中,使得所述一个或多个SQL语句在所述存储过程被执行时被传递回所述并行数据库协调器;
为接收到的执行请求创建会话令牌;
接收返回的经创建的会话令牌以及从所述独立数据库服务器收到的请求;以及
使用所述经创建的会话令牌来将接收到的请求与客户端会话对准。
10.如权利要求9所述的系统,其特征在于,所述独立数据库包括:
一个或多个处理器;
系统存储器;以及
一种或多种计算机存储介质,所述计算机存储介质上存储有表示过程执行模块的计算机可执行指令,所述过程执行模块被配置为:
从所述并行数据库协调器接收执行请求;
执行相应的存储过程,所述相应的执行过程包括一个或多个SQL语句和至少一个其他非SQL语句,包括:
将所述一个或多个SQL语句发送给所述并行数据库协调器以供执行;以及
在所述独立数据库服务器处执行所述至少一个其他非SQL语句。
CN201480015886.5A 2013-03-15 2014-03-10 在并行数据库处执行存储过程的方法和系统 Active CN105164677B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/831,724 US9128990B2 (en) 2013-03-15 2013-03-15 Executing stored procedures at parallel databases
US13/831,724 2013-03-15
PCT/US2014/022222 WO2014150098A1 (en) 2013-03-15 2014-03-10 Executing stored procedures at parallel databases

Publications (2)

Publication Number Publication Date
CN105164677A CN105164677A (zh) 2015-12-16
CN105164677B true CN105164677B (zh) 2019-07-12

Family

ID=50487118

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480015886.5A Active CN105164677B (zh) 2013-03-15 2014-03-10 在并行数据库处执行存储过程的方法和系统

Country Status (5)

Country Link
US (2) US9128990B2 (zh)
EP (1) EP2973027B1 (zh)
CN (1) CN105164677B (zh)
ES (1) ES2632623T3 (zh)
WO (1) WO2014150098A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015167466A1 (en) * 2014-04-29 2015-11-05 Hewlett-Packard Development Company, L.P. Query plan post optimization analysis and reoptimization
GB201517416D0 (en) 2015-10-02 2015-11-18 Ibm Task-execution in a DBMS using stored procedures
CN108780452B (zh) * 2016-03-14 2021-10-01 华为技术有限公司 一种存储过程处理方法及装置
CN106548288B (zh) * 2016-11-04 2019-06-11 环球大数据科技有限公司 电力多场景多态实例管理系统及方法
CN110121704B (zh) 2016-12-30 2021-09-21 华为技术有限公司 一种用于存储过程的执行方法、设备以及系统
CN107729421B (zh) * 2017-09-27 2019-11-15 华为技术有限公司 存储过程的执行方法、装置及存储介质
US11397711B1 (en) * 2017-11-22 2022-07-26 Amazon Technologies, Inc. Proxy-based database scaling
US11138215B2 (en) * 2018-06-29 2021-10-05 Oracle International Corporation Method and system for implementing parallel database queries
CN110070191A (zh) * 2019-04-11 2019-07-30 苏州浪潮智能科技有限公司 一种基于mes系统与诊断系统进行故障管控的方法和系统
US11586470B2 (en) * 2019-08-07 2023-02-21 International Business Machines Corporation Scalable workflow engine with a stateless orchestrator
CN112711602B (zh) * 2019-10-25 2023-04-28 金篆信科有限责任公司 一种存储过程的运行方法、装置,数据库系统及存储介质
US11792243B2 (en) * 2022-01-19 2023-10-17 Bank Of America Corporation System and method for conducting multi-session user interactions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873083A (en) * 1995-10-20 1999-02-16 Ncr Corporation Method and apparatus for extending a relational database management system using a federated coordinator
CN1921413A (zh) * 2005-08-25 2007-02-28 国际商业机器公司 用于管理多主机环境下的公共信息模型的方法和系统
CN102426602A (zh) * 2010-10-28 2012-04-25 微软公司 范围化数据库连接

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864843A (en) * 1995-10-20 1999-01-26 Ncr Corporation Method and apparatus for extending a database management system to operate with diverse object servers
US6507834B1 (en) * 1999-12-22 2003-01-14 Ncr Corporation Method and apparatus for parallel execution of SQL from stored procedures
US6636855B2 (en) 2001-03-09 2003-10-21 International Business Machines Corporation Method, system, and program for accessing stored procedures in a message broker
US7047535B2 (en) 2001-07-30 2006-05-16 International Business Machines Corporation Method, system, and program for performing workflow related operations using an application programming interface
US7448047B2 (en) 2004-04-29 2008-11-04 Sybase, Inc. Database system with methodology for providing stored procedures as web services
US8056141B2 (en) 2006-09-13 2011-11-08 Imperva, Inc. Method for monitoring stored procedures
US8260468B2 (en) 2008-06-25 2012-09-04 Versify Solutions, Inc. Aggregator, monitor, and manager of distributed demand response

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873083A (en) * 1995-10-20 1999-02-16 Ncr Corporation Method and apparatus for extending a relational database management system using a federated coordinator
CN1921413A (zh) * 2005-08-25 2007-02-28 国际商业机器公司 用于管理多主机环境下的公共信息模型的方法和系统
CN102426602A (zh) * 2010-10-28 2012-04-25 微软公司 范围化数据库连接

Also Published As

Publication number Publication date
US9128990B2 (en) 2015-09-08
WO2014150098A1 (en) 2014-09-25
US9805093B2 (en) 2017-10-31
ES2632623T3 (es) 2017-09-14
US20140280324A1 (en) 2014-09-18
US20150347513A1 (en) 2015-12-03
EP2973027B1 (en) 2017-04-19
EP2973027A1 (en) 2016-01-20
CN105164677A (zh) 2015-12-16

Similar Documents

Publication Publication Date Title
CN105164677B (zh) 在并行数据库处执行存储过程的方法和系统
KR102048653B1 (ko) 외부 데이터 소스로부터의 데이터를 이용한 데이터베이스 쿼리 응답의 강화 기법
CN104156216B (zh) 一种面向云计算的异构存储管理系统及方法
CN105900396B (zh) 移动云服务体系架构
CN103718164B (zh) 虚拟计算机和服务
CN106027593B (zh) 用于动态地维护数据结构的方法和系统
CN107085524A (zh) 用于云环境中的保证的日志管理的方法和装置
JP2018518744A (ja) コンピュートクラスタ内のリソースインスタンスグループの自動スケーリング
CN109074384A (zh) 对上下文元数据排名以生成相关数据见解
JP2005505055A (ja) モバイルウェブクライアントに対する方法、装置及びシステム
WO2011112957A2 (en) Query model over information as a networked service
CN109074265A (zh) 移动云服务的预先形成的指令
US20130018918A1 (en) Repetitive Query Recognition and Processing
US11349709B2 (en) System and method for onboarding IOT devices
CN109241054A (zh) 一种多模型数据库系统、实现方法以及服务器
US9742835B2 (en) System and method for backend control of frontend user interfaces
KR20130059593A (ko) 클라우드 서비스 컴포넌트간 매쉬업을 통한 통합 클라우드 서비스 시스템
US8555239B1 (en) Mainframe-based web service development accelerator
US11645284B2 (en) Distributed join filters in a dynamic distributed data processing service
US9654352B2 (en) Brokering data access requests and responses
CN105981010A (zh) 创建数据视图
JP2021105815A5 (zh)
CN110489465A (zh) 一种数据库访问方法和装置
Hwang et al. Scalable and trustworthy cross-enterprise WfMSs by cloud collaboration
KR101384564B1 (ko) 데이터셋 전송 프로토콜을 이용한 다중 요청 처리 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant