(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-09
(54)【発明の名称】ストアドプロシージャの実行方法、装置、データベースシステム及び記憶媒体
(51)【国際特許分類】
G06F 16/24 20190101AFI20221202BHJP
【FI】
G06F16/24
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022521107
(86)(22)【出願日】2020-10-22
(85)【翻訳文提出日】2022-04-07
(86)【国際出願番号】 CN2020122640
(87)【国際公開番号】W WO2021078176
(87)【国際公開日】2021-04-29
(31)【優先権主張番号】201911025993.7
(32)【優先日】2019-10-25
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】511151662
【氏名又は名称】中興通訊股▲ふん▼有限公司
【氏名又は名称原語表記】ZTE CORPORATION
【住所又は居所原語表記】ZTE Plaza,Keji Road South,Hi-Tech Industrial Park,Nanshan Shenzhen,Guangdong 518057 China
(74)【代理人】
【識別番号】100112656
【氏名又は名称】宮田 英毅
(74)【代理人】
【識別番号】100089118
【氏名又は名称】酒井 宏明
(72)【発明者】
【氏名】李金虎
(72)【発明者】
【氏名】陸平
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175EA03
5B175HA04
(57)【要約】
本願では、ストアドプロシージャの実行方法、装置、データベースシステム及び記憶媒体が公開されている。当該方法は、構造化照会言語SQL処理エンジンがストアドプロシージャ実行要求メッセージをストアドプロシージャ・エンジンに送信することと、SQL処理エンジンがストアドプロシージャ・エンジンから送信されたSQL実行要求メッセージを複数回実行することと、SQL処理エンジンがストアドプロシージャ・エンジンから送信されたストアドプロシージャ実行応答メッセージを受信することと、を含む。
【特許請求の範囲】
【請求項1】
構造化照会言語SQL処理エンジンが、ストアドプロシージャ実行要求メッセージをストアドプロシージャ・エンジンに送信することと、
前記SQL処理エンジンが、前記ストアドプロシージャ・エンジンから送信された複数のSQL実行要求メッセージを複数回実行し、毎回の実行ステップが、1つのSQL実行要求メッセージに対応することと、
前記SQL処理エンジンが、前記ストアドプロシージャ・エンジンから送信されたストアドプロシージャ実行応答メッセージを受信することと、を含む
ストアドプロシージャの実行方法。
【請求項2】
前記SQL処理エンジンが前記ストアドプロシージャ・エンジンから送信されたSQL実行要求メッセージを毎回実行することは、
前記SQL処理エンジンが、前記ストアドプロシージャ・エンジンから送信されたSQL実行要求メッセージを受信することと、
前記SQL処理エンジンが、前記ストアドプロシージャ・エンジンから送信されたSQL実行要求メッセージを処理することと、
前記SQL処理エンジンが、SQL実行応答メッセージを前記ストアドプロシージャ・エンジンに送信することと、を含む
請求項1に記載の方法。
【請求項3】
前記SQL処理エンジンが、前記ストアドプロシージャ・エンジンから送信された次のSQL実行要求メッセージを受信することに戻す前に、
前記SQL処理エンジンが、前記ストアドプロシージャ・エンジンから送信されたSQL結果セット要求メッセージを受信することと、
前記SQL処理エンジンが、前記SQL結果セット要求メッセージに基づいて、SQLの実行結果を保持するSQL結果セット応答メッセージを前記ストアドプロシージャ・エンジンに送信することと、をさらに含む
請求項2に記載の方法。
【請求項4】
前記SQL処理エンジンが、前記SQL結果セット要求メッセージに基づいて、SQL結果セット応答メッセージを前記ストアドプロシージャ・エンジンに送信した後に、
前記SQL処理エンジンが、前記ストアドプロシージャ・エンジンから送信されたSQL結果解放指示メッセージを受信することと、
前記SQL処理エンジンが、前記SQL結果解放指示メッセージに基づいてSQL結果セットを解放することと、をさらに含む
請求項3に記載の方法。
【請求項5】
前記SQL処理エンジンは、前記ストアドプロシージャ・エンジンから送信されたSQL実行要求メッセージを実行してエラーが発生した場合に、エラープロンプトメッセージを前記ストアドプロシージャ・エンジンに送信することをさらに含む
請求項1に記載の方法。
【請求項6】
前記SQL処理エンジンがストアドプロシージャ・エンジンにストアドプロシージャ実行要求メッセージを送信する前に、前記SQL処理エンジンが、前記ストアドプロシージャ実行要求メッセージを取得することをさらに含む
請求項1に記載の方法。
【請求項7】
ストアドプロシージャ・エンジンが、構造化照会言語SQL処理エンジンから送信されたストアドプロシージャ実行要求メッセージを受信することと、
前記ストアドプロシージャ・エンジンが、複数のSQL実行要求メッセージを複数回構築して前記SQL処理エンジンに送信し、毎回の構築及び送信ステップが、1つのSQL実行要求メッセージに対応することと、
前記ストアドプロシージャ・エンジンが、前記SQL処理エンジンにストアドプロシージャ実行応答メッセージを送信することと、を含む
ストアドプロシージャの実行方法。
【請求項8】
前記ストアドプロシージャ・エンジンが、SQL実行要求メッセージを毎回構築して前記SQL処理エンジンに送信することは、
前記ストアドプロシージャ・エンジンが、前記ストアドプロシージャ実行要求メッセージに基づいてSQL実行要求メッセージを構築することと、
前記ストアドプロシージャ・エンジンが、前記ストアドプロシージャ・エンジンによって構築されたSQL実行要求メッセージを前記SQL処理エンジンに送信することと、
前記ストアドプロシージャ・エンジンが、前記SQL処理エンジンから送信されたSQL実行応答メッセージを受信することと、を含む
請求項7に記載の方法。
【請求項9】
前記ストアドプロシージャ・エンジンが、前記ストアドプロシージャ実行要求メッセージに基づいて次のSQL実行要求メッセージを構築することに戻す前に、
前記ストアドプロシージャ・エンジンが、SQL結果セット要求メッセージを前記SQL処理エンジンに送信することと、
前記ストアドプロシージャ・エンジンが、前記SQL処理エンジンから送信されたSQL結果セット応答メッセージを受信し、前記SQL結果セット応答メッセージがSQLの実行結果を保持することと、をさらに含む
請求項8に記載の方法。
【請求項10】
前記ストアドプロシージャ・エンジンが前記SQL処理エンジンから送信されたSQL結果セット応答メッセージを受信した後に、
前記ストアドプロシージャ・エンジンが、SQL結果解放指示メッセージを前記SQL処理エンジンに送信することをさらに含む
請求項9に記載の方法。
【請求項11】
前記ストアドプロシージャ・エンジンは、ストアドプロシージャを実行してエラーが発生した場合に、エラー情報を前記ストアドプロシージャ実行応答メッセージに書き込むことをさらに含む
請求項7に記載の方法。
【請求項12】
コンピュータプログラムが実行されるときに、請求項1~6のいずれか一項に記載のストアドプロシージャの実行方法を実現するように設けられたプロセッサを備える
構造化照会言語SQL処理エンジン。
【請求項13】
コンピュータプログラムが実行されるときに、請求項7~11のいずれか一項に記載のストアドプロシージャの実行方法を実現するように設けられたプロセッサを備える
ストアドプロシージャ・エンジン。
【請求項14】
請求項13に記載のストアドプロシージャ・エンジンと、請求項12に記載の構造化照会言語SQL処理エンジンと、を備える
データベースシステム。
【請求項15】
プロセッサによって実行されたときに、請求項1~11のいずれか一項に記載のストアドプロシージャの実行方法を実現するコンピュータプログラムが記憶されている
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2019年10月25日に中国特許庁に提出された、出願番号を201911025993.7とする中国特許出願の優先権を主張し、当該出願のすべての内容を参照により援用する。
【0002】
本願は、データベースの分野に関し、例えば、ストアドプロシージャの実行方法、装置、データベースシステム及び記憶媒体に関するものである。
【背景技術】
【0003】
ストアドプロシージャ(Stored Procedure)は、データベースシステムに記憶された、特定の機能を実行できる構造化照会言語(Structured Query Language,SQL)ステートメントセットであり、SQLステートメント及びフロー制御ステートメントを含む。分散型データベースでは、ストアドプロシージャの実行とSQLの実行に対して、それぞれ異なるエンジンにアクセスする必要があるため、アプリケーションにおけるSQLの実行とストアドプロシージャの実行で分散型データベースの異なるコンポーネントにアクセスする必要があるという制限がアプリケーションに課される。また、一部の分散型データベースでは、SQL処理エンジンとストアドプロシージャの実行とが密に結合されており、SQL処理エンジンとストアドプロシージャ・エンジンのいずれか一方が故障して、全体の機能障害を引き起こすおそれがある。多くのオンラインビジネスシナリオにおいて、SQL処理エンジンは、高い信頼性、高い可用性を保証する必要があり、分散型ストアドプロシージャ機能の追加により不安定になるようなことがあってはならない。
【発明の概要】
【0004】
本願は、SQL処理エンジンの安定性を保証しながら、分散型データベースにおいて分散型ストアドプロシージャの実行を実現できるストアドプロシージャの実行方法、装置、データベースシステム及び記憶媒体を提供する。
【0005】
構造化照会言語SQL処理エンジンが、ストアドプロシージャ実行要求メッセージをストアドプロシージャ・エンジンに送信することと、SQL処理エンジンが、ストアドプロシージャ・エンジンから送信された複数のSQL実行要求メッセージを複数回実行し、毎回の実行ステップが、1つのSQL実行要求メッセージに対応することと、SQL処理エンジンが、ストアドプロシージャ・エンジンから送信されたストアドプロシージャ実行応答メッセージを受信することと、を含むストアドプロシージャの実行方法を提供する。
【0006】
本願の実施例は、ストアドプロシージャ・エンジンが、構造化照会言語SQL処理エンジンから送信されたストアドプロシージャ実行要求メッセージを受信することと、ストアドプロシージャ・エンジンが、複数のSQL実行要求メッセージを複数回構築してSQL処理エンジンに送信し、毎回の構築及び送信ステップが、1つのSQL実行要求メッセージに対応することと、ストアドプロシージャ・エンジンが、ストアドプロシージャ実行応答メッセージをSQL処理エンジンに送信することと、を含むストアドプロシージャの実行方法を提供する。
【0007】
コンピュータプログラムが実行されるときに、上記SQL処理エンジン側の方法を実現するように設けられたプロセッサを備えるSQL処理エンジンをさらに提供する。
【0008】
コンピュータプログラムが実行されるときに、上記ストアドプロシージャ・エンジン側の方法を実現するように設けられたプロセッサを備えるストアドプロシージャ・エンジンをさらに提供する。
【0009】
上記ストアドプロシージャ・エンジンと、上記構造化照会言語SQL処理エンジンと、を備えるデータベースシステムをさらに提供する。
【0010】
プロセッサによって実行されたときに、上記ストアドプロシージャの実行方法を実現するコンピュータプログラムが記憶されているコンピュータ可読記憶媒体をさらに提供する。
【0011】
本願の上記実施例および他の態様、並びにそれらの実現方式に関する更なる説明は、図面の説明、具体的な実施形態、及び請求の範囲において提供される。
【図面の簡単な説明】
【0012】
【
図1】
図1は、一実施例によるデータベースシステムの構造模式図である。
【
図2】
図2は、一実施例によるストアドプロシージャの実行方法のフローチャートである。
【
図3】
図3は、一実施例による別のストアドプロシージャの実行方法のフローチャートである。
【
図4】
図4は、一実施例によるストアドプロシージャの実行方法の相互作用模式図である。
【
図5】
図5は、一実施例による別のストアドプロシージャの実行方法の相互作用模式図である。
【
図6】
図6は、一実施例によるさらに別のストアドプロシージャの実行方法の相互作用模式図である。
【
図7】
図7は、一実施例によるストアドプロシージャの実行装置の構造模式図である。
【
図8】
図8は、一実施例による別のストアドプロシージャの実行装置の構造模式図である。
【
図9】
図9は、一実施例によるSQL処理エンジンの構造模式図である。
【
図10】
図10は、一実施例によるストアドプロシージャ・エンジンの構造模式図である。
【発明を実施するための形態】
【0013】
以下では図面を組み合わせて本願の実施例について説明する。
【0014】
ストアドプロシージャは、データベースシステムに記憶された、特定の機能を実行できるSQLステートメントセットであり、SQLステートメント(SQLステートメントは通常1つの式であり、当該式は少なくとも1つの部分式を含んでもよい)及びフロー制御ステートメント(1つのフロー制御ステートメントは1つのフロー制御ステートメントブロックを構成してもよく、当該フロー制御ステートメントブロックは複数のSQLステートメントを含んでもよい)を含んでもよい。
【0015】
従来のリレーショナルデータベースでは、データストレージノードが1つのみ含まれており、このノードにストアドプロシージャが記憶されている。SQL及びストアドプロシージャの実行時に、アクセス、修正などの操作が処理するのは、このストレージノードにおけるデータである。分散型データベースでは、データストレージノードが複数存在するため、ストアドプロシージャの実行は全てのデータストレージノードを連携させて行う必要があり、単に各データストレージノードにストアドプロシージャを置いて個別に実行することはできない。分散型データベースでは、ストアドプロシージャの実行とSQLの実行に対して、それぞれ異なるエンジンにアクセスする必要がある(例えば、ストアドプロシージャの実行に対しては、手順言語(Procedural Language,PL)エンジンにアクセスする必要があり、SQLの実行に対しては、SQL処理エンジンにアクセスする必要がある)ため、アプリケーションにおけるSQLの実行とストアドプロシージャの実行で分散型データベースの異なるコンポーネントにアクセスする必要があるという制限がアプリケーションに課される。また、一部の分散型データベースでは、SQL処理エンジンとストアドプロシージャの実行とが密に結合されており、SQL処理エンジンとストアドプロシージャ・エンジンのいずれか一方が故障して、全体の機能障害を引き起こすおそれがある。多くのオンラインビジネスシナリオにおいて、SQL処理エンジンは、高い信頼性、高い可用性を保証する必要があり、分散型ストアドプロシージャ機能の追加により不安定になるようなことがあってはならない。
【0016】
図1は、一実施例によるデータベースシステムの構造模式図である。
図1に示すように、当該データベースシステムはストアドプロシージャ・エンジンとSQL処理エンジンを含み、ストアドプロシージャ・エンジンは、ストアドプロシージャを実行するためのものであり、ストアドプロシージャのフローを制御する機能を有し、分散型データベースのストアドプロシージャ実行エンジンモジュールに属し、SQL処理エンジンは、ストアドプロシージャにおけるSQLステートメントを実行するためのものであり、SQLに対する実行能力を有し、分散型データベースのSQL実行モジュールに属する。SQL処理エンジンは、ユーザにアクセスポイントを提供し、ユーザ要求を受信し、単一アクセスポイント方式を実現する(すなわち、アプリケーションはこのアクセスポイントにアクセスしてユーザ要求のSQL及びストアドプロシージャを実行し、アプリケーションをカスタマイズする必要はない)。SQL処理エンジンは、n個のデータストレージノード(Database,DB)にも接続される。本願の実施例では、SQL処理エンジンの安定性を保証しながら、分散型データベースにおいて分散型ストアドプロシージャの実行を実現できる、上記データベースシステムにおいて実行可能なストアドプロシージャの実行方法を提供する。
【0017】
本願における「システム」及び「ネットワーク」という用語は、本願においてしばしば互換的に使用される。本願における以下の各実施例は、単独で実行されてもよく、複数の実施例が互いに組み合わされて実行されてもよく、本願における実施例は、これについて具体的に限定しない。
【0018】
以下では、ストアドプロシージャの実行方法、装置、データベースシステム及びその技術効果について説明する。
【0019】
図2は、一実施例によるストアドプロシージャの実行方法のフローチャートである。
図2に示すように、本実施例による方法はSQL処理エンジンに適用し、以下のステップを含む。
【0020】
S110:SQL処理エンジンが、ストアドプロシージャ実行要求メッセージをストアドプロシージャ・エンジンに送信する。
【0021】
一実施例において、SQL処理エンジンは、ステップS110の実行の前に、ユーザにより入力された要求メッセージを受信する。ユーザにより入力された要求メッセージは、SQL実行要求メッセージ及びストアドプロシージャ実行要求メッセージのうち少なくとも1つを含んでもよい。ユーザにより入力された要求メッセージがSQL実行要求メッセージである場合、SQL処理エンジンはSQL実行要求メッセージを直接実行する。ユーザにより入力された要求メッセージがストアドプロシージャ実行要求メッセージである場合、SQL処理エンジンはステップS110の実行を継続する。
【0022】
SQL処理エンジンは、ユーザにより入力された要求メッセージを解析することによって、ユーザにより入力された要求メッセージがSQL実行要求メッセージであるか、それともストアドプロシージャ実行要求メッセージであるかを識別することができる。
【0023】
S120:SQL処理エンジンが、ストアドプロシージャ・エンジンから送信された複数のSQL実行要求メッセージを複数回実行し、毎回の実行ステップが1つのSQL実行要求メッセージに対応する。
【0024】
一実施例において、ステップS120は以下のステップを含んでもよい。
【0025】
ステップ1a)SQL処理エンジンが、ストアドプロシージャ・エンジンから送信されたSQL実行要求メッセージを受信する。
【0026】
ステップ1b)SQL処理エンジンが、SQL実行要求メッセージを処理する。
【0027】
ステップ1c)SQL処理エンジンが、SQL実行応答メッセージをストアドプロシージャ・エンジンに送信する。
【0028】
ステップ1d)SQL処理エンジンが、ストアドプロシージャ・エンジンから送信されたSQL結果セット要求メッセージを受信する。
【0029】
ステップ1e)SQL処理エンジンが、SQL結果セット要求メッセージに基づいて、SQLの実行結果を保持するSQL結果セット応答メッセージをストアドプロシージャ・エンジンに送信する。
【0030】
ステップ1f)SQL処理エンジンが、ストアドプロシージャ・エンジンから送信されたSQL結果解放指示メッセージを受信する。
【0031】
ステップ1g)SQL処理エンジンが、SQL結果解放指示メッセージに基づいてSQL結果セットを解放する。
【0032】
SQL処理エンジンは、ストアドプロシージャ・エンジンがSQL実行要求メッセージを送信しなくなるまで、ステップ1a)の実行に戻る。
【0033】
一実施例において、SQL処理エンジンは、ストアドプロシージャ・エンジンから送信されたSQL実行要求メッセージを実行するときにエラーが発生した場合、エラープロンプトメッセージをストアドプロシージャ・エンジンに送信する。
【0034】
S130:SQL処理エンジンが、ストアドプロシージャ・エンジンから送信されたストアドプロシージャ実行応答メッセージを受信する。
【0035】
一実施例において、SQL処理エンジンは、ストアドプロシージャ・エンジンから送信されたストアドプロシージャ実行応答メッセージを受信すると、最終的なストアドプロシージャ実行結果をユーザにフィードバックする。
【0036】
図3は、一実施例による別のストアドプロシージャの実行方法のフローチャートである。
図3に示すように、本実施例による方法はストアドプロシージャ・エンジンに適用し、以下のステップを含む。
【0037】
S210:ストアドプロシージャ・エンジンが、SQL処理エンジンから送信されたストアドプロシージャ実行要求メッセージを受信する。
【0038】
S220:ストアドプロシージャ・エンジンが、複数のSQL実行要求メッセージを複数回構築してSQL処理エンジンに送信し、毎回の構築及び送信ステップが1つのSQL実行要求メッセージに対応する。
【0039】
一実施例において、ステップS220は以下のステップを含んでもよい。
【0040】
ステップ2a)ストアドプロシージャ・エンジンが、ストアドプロシージャ実行要求メッセージに基づいてSQL実行要求メッセージを構築する。
【0041】
ステップ2b)ストアドプロシージャ・エンジンが、SQL実行要求メッセージをSQL処理エンジンに送信する。
【0042】
ステップ2c)ストアドプロシージャ・エンジンが、SQL処理エンジンから送信されたSQL実行応答メッセージを受信する。
【0043】
ステップ2d)ストアドプロシージャ・エンジンが、SQL結果セット要求メッセージをSQL処理エンジンに送信する。
【0044】
ステップ2e)ストアドプロシージャ・エンジンが、SQL処理エンジンから送信されたSQL結果セット応答メッセージを受信し、SQL結果セット応答メッセージがSQLの実行結果を保持する。
【0045】
ステップ2f)ストアドプロシージャ・エンジンが、SQL結果解放指示メッセージをSQL処理エンジンに送信する。
【0046】
ストアドプロシージャ・エンジンは、SQL実行要求メッセージを構築しなくなるまで、ステップ2a)の実行に戻る。
【0047】
S230:ストアドプロシージャ・エンジンが、ストアドプロシージャ実行応答メッセージをSQL処理エンジンに送信する。
【0048】
一実施例において、ストアドプロシージャ・エンジンは、ストアドプロシージャを実行するときにエラーが発生した場合、エラー情報をストアドプロシージャ実行応答メッセージに書き込む。
【0049】
以下では、
図2及び
図3に記載されたストアドプロシージャの実行方法を説明するために、いくつかの相互作用の実施形態を列挙する。
【0050】
図4は、一実施例によるストアドプロシージャの実行方法の相互作用模式図である。
図4に示すように、当該方法は以下のステップを含む。
【0051】
S310:SQL処理エンジンが、ストアドプロシージャ実行要求メッセージをストアドプロシージャ・エンジンに送信する。
【0052】
一実施例において、SQL処理エンジンは、ステップS310の実行の前に、ユーザにより入力された要求メッセージを受信する。ユーザにより入力された要求メッセージは、SQL実行要求メッセージ及びストアドプロシージャ実行要求メッセージのうち少なくとも1つを含んでもよい。ユーザにより入力された要求メッセージがSQL実行要求メッセージである場合、SQL処理エンジンはSQL実行要求メッセージを直接実行する。ユーザにより入力された要求メッセージがストアドプロシージャ実行要求メッセージである場合、SQL処理エンジンはステップS310の実行を継続する。
【0053】
SQL処理エンジンは、ユーザにより入力された要求メッセージを解析することによって、ユーザにより入力された要求メッセージがSQL実行要求メッセージであるか、それともストアドプロシージャ実行要求メッセージであるかを識別することができる。
【0054】
一実施例において、ストアドプロシージャ実行要求メッセージは、CALLステートメントとパラメータ情報を含む。パラメータ情報は、パラメータ出力情報、パラメータ入力情報、及びパラメータ入出力情報のうちの少なくとも1つを含む。
【0055】
S311:ストアドプロシージャ・エンジンが、SQL処理エンジンから送信されたストアドプロシージャ実行要求メッセージを受信する。
【0056】
S312:ストアドプロシージャ・エンジンが、ストアドプロシージャ実行要求メッセージに基づいてSQL実行要求メッセージを構築する。
【0057】
ストアドプロシージャ・エンジンは、ストアドプロシージャ実行要求メッセージを受信した後、内部処理を呼び出して当該ストアドプロシージャ実行要求メッセージにおける実行が要求されたストアドプロシージャを実行し、当該ストアドプロシージャの実行中にSQL命令に遭遇すると、ストアドプロシージャ・エンジンは、当該SQL命令に基づいて完全なSQLステートメント(すなわち、SQL実行要求メッセージ)を構築した上でSQL処理エンジンに送信して実行し、SQL実行応答メッセージがSQL処理エンジンから返されるのを待つ。
【0058】
S313:ストアドプロシージャ・エンジンが、SQL実行要求メッセージをSQL処理エンジンに送信する。
【0059】
S314:SQL処理エンジンが、ストアドプロシージャ・エンジンから送信されたSQL実行要求メッセージを受信する。
【0060】
S315:SQL処理エンジンが、SQL実行要求メッセージを処理する。
【0061】
S316:SQL処理エンジンが、SQL実行応答メッセージをストアドプロシージャ・エンジンに送信する。
【0062】
S317:ストアドプロシージャ・エンジンが、SQL処理エンジンから送信されたSQL実行応答メッセージを受信する。
【0063】
ストアドプロシージャ・エンジンは、SQL処理エンジンから返されたSQL実行応答メッセージを受信した後、次のSQL命令に遭遇するまで、待機時点から当該ストアドプロシージャの実行を継続する。次のSQL命令に遭遇したときに、当該ストアドプロシージャの実行が完了するまでステップS312~S317の実行に戻る。
【0064】
一実施例において、ストアドプロシージャ・エンジンがSQLの実行結果を必要とする場合、以下のステップS318~S324をさらに含んでもよい。
【0065】
S318:ストアドプロシージャ・エンジンが、SQL結果セット要求メッセージをSQL処理エンジンに送信する。
【0066】
S319:SQL処理エンジンが、ストアドプロシージャ・エンジンから送信されたSQL結果セット要求メッセージを受信する。
【0067】
S320:SQL処理エンジンが、SQL結果セット要求メッセージに基づいて、SQLの実行結果を保持するSQL結果セット応答メッセージをストアドプロシージャ・エンジンに送信する。
【0068】
S321:ストアドプロシージャ・エンジンが、SQL処理エンジンから送信されたSQL結果セット応答メッセージを受信する。
【0069】
S322:ストアドプロシージャ・エンジンが、SQL結果解放指示メッセージをSQL処理エンジンに送信する。
【0070】
S323:SQL処理エンジンが、ストアドプロシージャ・エンジンから送信されたSQL結果解放指示メッセージを受信する。
【0071】
S324:SQL処理エンジンが、SQL結果解放指示メッセージに基づいて、SQL結果セットを解放する。
【0072】
S325:ストアドプロシージャ・エンジンが、ストアドプロシージャ実行応答メッセージをSQL処理エンジンに送信する。
【0073】
ストアドプロシージャ・エンジンは、ストアドプロシージャ全体を実行した後、ストアドプロシージャ実行応答メッセージをSQL処理エンジンに送信する。ストアドプロシージャ実行応答メッセージはパラメータ出力情報を含む。
【0074】
S326:SQL処理エンジンが、ストアドプロシージャ・エンジンから送信されたストアドプロシージャ実行応答メッセージを受信する。
【0075】
一実施例において、SQL処理エンジンは、ストアドプロシージャ・エンジンから送信されたストアドプロシージャ実行応答メッセージを受信すると、最終的なストアドプロシージャ実行結果をユーザにフィードバックする。
【0076】
このように、分散型ストアドプロシージャを可能にするストアドプロシージャ・エンジンとSQL処理エンジンとは分離される。ストアドプロシージャ・エンジンが動的に生成するSQLステートメントの各々をSQL処理エンジンが実行することによって、ストアドプロシージャ全体の分散実行が実現される。
【0077】
図5は、一実施例による別のストアドプロシージャの実行方法の相互作用模式図である。
図4に示すストアドプロシージャの実行方法とは異なり、
図5に示すSQL処理エンジンは、SQL実行要求メッセージを実行する際にエラーが発生した場合、エラーが発生したことをユーザに直接提示する代わりに、エラープロンプトメッセージをストアドプロシージャ・エンジンに送信することができる。ストアドプロシージャの実行を継続できるか否かは、ストアドプロシージャの定義にエラー処理の定義がある可能性があるため、ストアドプロシージャ・エンジン内の処理過程によって決定する必要がある。
【0078】
図6は、一実施例によるさらに別のストアドプロシージャの実行方法の相互作用模式図である。
図4に示すストアドプロシージャの実行方法とは異なり、
図6に示すストアドプロシージャ・エンジンは、ストアドプロシージャを実行する際にエラーが発生した場合、エラー情報をストアドプロシージャ実行応答メッセージに書き込むことができる。
【0079】
このように、SQL処理エンジンとストアドプロシージャ・エンジンとを互いに隔離することができ、SQL処理エンジンとストアドプロシージャ・エンジンとの一方に障害が発生した場合に他方にも障害が発生することはなく、SQL処理エンジンがユーザの他のサービスを処理することに影響を与えることもなく、SQL処理エンジンの安定性が保証される。
【0080】
図7は、一実施例によるストアドプロシージャの実行装置の構造模式図である。当該ストアドプロシージャの実行装置は、SQL処理エンジンに配置されてもよく、
図7に示すように、送信モジュール10、処理モジュール11及び受信モジュール12を含む。
送信モジュール10は、ストアドプロシージャ実行要求メッセージをストアドプロシージャ・エンジンに送信するように設けられている。
【0081】
処理モジュール11は、ストアドプロシージャ・エンジンから送信された複数のSQL実行要求メッセージを複数回実行するように設けられており、毎回の実行ステップが1つのSQL実行要求メッセージに対応する。
【0082】
受信モジュール12は、ストアドプロシージャ・エンジンから送信されたストアドプロシージャ実行応答メッセージを受信するように設けられている。
【0083】
本実施例によるストアドプロシージャの実行装置は、上述した実施例におけるストアドプロシージャの実行方法を実現するように設けられており、本実施例によるストアドプロシージャの実行装置と、上記ストアドプロシージャの実行方法は実現原理及び技術効果が類似しているため、ここでは詳細な説明を省略する。
【0084】
一実施例において、受信モジュール12は、ストアドプロシージャ・エンジンから送信されたSQL実行要求メッセージを受信するようにさらに設けられており、処理モジュール11は、受信モジュール12が受信したSQL実行要求メッセージを処理するように設けられており、送信モジュール10は、ストアドプロシージャ・エンジンがSQL実行要求メッセージを送信しなくなるまで、SQL実行応答メッセージをストアドプロシージャ・エンジンに送信するようにさらに設けられている。
【0085】
一実施例において、受信モジュール12は、ストアドプロシージャ・エンジンから送信されたSQL結果セット要求メッセージを受信するようにさらに設けられており、送信モジュール10は、SQL結果セット要求メッセージに基づいて、SQLの実行結果を保持するSQL結果セット応答メッセージをストアドプロシージャ・エンジンに送信するようにさらに設けられている。
【0086】
一実施例において、受信モジュール12は、ストアドプロシージャ・エンジンから送信されたSQL結果解放指示メッセージを受信するようにさらに設けられており、処理モジュール11は、SQL結果解放指示メッセージに基づいて、SQL結果セットを解放するようにさらに設けられている。
【0087】
一実施例において、送信モジュール10は、処理モジュール11がストアドプロシージャ・エンジンから送信されたSQL実行要求メッセージを実行してエラーが発生した場合に、エラープロンプトメッセージをストアドプロシージャ・エンジンに送信するようにさらに設けられている。
【0088】
一実施例において、受信モジュール12は、送信モジュール10がストアドプロシージャ実行要求メッセージをストアドプロシージャ・エンジンに送信する前に、ストアドプロシージャ実行要求メッセージを取得するようにさらに設けられている。
【0089】
図8は、一実施例による別のストアドプロシージャの実行装置の構造模式図である。当該ストアドプロシージャの実行装置は、ストアドプロシージャ・エンジンに配置されてもよく、
図8に示すように、受信モジュール20、処理モジュール21及び送信モジュール22を含む。
【0090】
受信モジュール20は、構造化照会言語SQL処理エンジンから送信されたストアドプロシージャ実行要求メッセージを受信するように設けられている。
【0091】
処理モジュール21は、SQL実行要求メッセージを複数回構築するように設けられている。
【0092】
送信モジュール22は、SQL実行要求メッセージをSQL処理エンジンに送信し、ストアドプロシージャ実行応答メッセージをSQL処理エンジンに送信するように設けられている。
【0093】
本実施例によるストアドプロシージャの実行装置は、上述した実施例におけるストアドプロシージャの実行方法を実現するように設けられており、本実施例によるストアドプロシージャの実行装置と、上記ストアドプロシージャの実行方法は実現原理及び技術効果が類似しているため、ここでは詳細な説明を省略する。
【0094】
一実施例において、処理モジュール21は、ストアドプロシージャ実行要求メッセージに基づいてSQL実行要求メッセージを構築するように設けられており、送信モジュール22は、処理モジュール21により構築されたSQL実行要求メッセージをSQL処理エンジンに送信するように設けられており、受信モジュール20は、処理モジュール21がSQL実行要求メッセージを構築しなくなるまで、SQL処理エンジンから送信されたSQL実行応答メッセージを受信するようにさらに設けられている。
【0095】
一実施例において、送信モジュール22は、SQL結果セット要求メッセージをSQL処理エンジンに送信するようにさらに設けられており、受信モジュール20は、SQL処理エンジンから送信されたSQL結果セット応答メッセージを受信するようにさらに設けられており、SQL結果セット応答メッセージがSQLの実行結果を保持する。
【0096】
一実施例において、送信モジュール22は、SQL結果解放指示メッセージをSQL処理エンジンに送信するようにさらに設けられている。
【0097】
一実施例において、処理モジュール21は、処理モジュール21がストアドプロシージャを実行してエラーが発生した場合に、エラー情報をストアドプロシージャ実行応答メッセージに書き込むようにさらに設けられている。
【0098】
本願の実施例は、コンピュータプログラムが実行されるときに、上記実施例のいずれかの方法を実現するように設けられたプロセッサを備えるSQL処理エンジンを提供する。
図9は、一実施例によるSQL処理エンジンの構造模式図である。
図9に示すように、当該SQL処理エンジンは、プロセッサ30、メモリ31及び通信インタフェース32を含み、SQL処理エンジンにおけるプロセッサ30の数は、1つ又は複数であってもよく、
図9では1つのプロセッサ30を例としている。SQL処理エンジンにおけるプロセッサ30、メモリ31、通信インタフェース32は、バス又は他の方式により接続されてもよく、
図9ではバスにより接続されることを例としている。バスは、メモリバス又はメモリコントローラ、周辺バス、グラフィックス加速ポート、プロセッサ、又は様々なバス構造のいずれかを使用するローカルバスを含む、いくつかの種類のバス構造のうちの1つ又は複数を表す。
【0099】
メモリ31はコンピュータ可読記憶媒体として、ソフトウェアプログラム、コンピュータ実行可能プログラム、及びモジュール(例えば、本願の実施例における方法に対応するプログラム命令/モジュール)を記憶するように設けられてもよい。プロセッサ30は、メモリ31に記憶されたソフトウェアプログラム、命令及びモジュールを実行することにより、SQL処理エンジンの少なくとも1つの機能アプリケーション及びデータ処理を実行し、すなわち上述のストアドプロシージャの実行方法を実現する。
【0100】
メモリ31は、オペレーティングシステム、少なくとも1つの機能に必要なアプリケーションを記憶できる記憶プログラム領域と、記憶データ領域とを含んでもよい。記憶データ領域は、SQL処理エンジンの使用に基づいて作成されたデータなどを記憶することができる。メモリ31は、高速ランダムアクセスメモリを含んでもよく、また、少なくとも1つのディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステートメモリデバイスなどの不揮発性メモリを含んでもよい。いくつかの例において、メモリ31は、プロセッサ30に対して遠隔に設けられたメモリを含んでもよく、これらの遠隔メモリは、ネットワークを介してSQL処理エンジンに接続されてもよい。上記ネットワークの例としては、インターネット、企業内イントラネット、ローカルエリアネットワーク、移動体通信ネットワーク、及びそれらの組み合わせが挙げられるが、これらに限定されない。
【0101】
通信インタフェース32は、データの受信と送信を行うように設けることができる。
【0102】
本願の実施例は、コンピュータプログラムが実行されるときに、上記実施例のいずれかの方法を実現するように設けられたプロセッサを備えるストアドプロシージャ・エンジンを提供する。
図10は、一実施例によるストアドプロシージャ・エンジンの構造模式図である。
図10に示すように、当該ストアドプロシージャ・エンジンは、プロセッサ40、メモリ41及び通信インタフェース42を含み、ストアドプロシージャ・エンジンにおけるプロセッサ40の数は、1つ又は複数であってもよく、
図10では1つのプロセッサ40を例としている。ストアドプロシージャ・エンジンにおけるプロセッサ40、メモリ41、通信インタフェース42は、バス又は他の方式により接続されてもよく、
図10ではバスにより接続されることを例としている。バスは、メモリバス又はメモリコントローラ、周辺バス、グラフィックス加速ポート、プロセッサ、又は様々なバス構造のいずれかを使用するローカルバスを含む、いくつかの種類のバス構造のうちの1つ又は複数を表す。
【0103】
メモリ41はコンピュータ可読記憶媒体として、ソフトウェアプログラム、コンピュータ実行可能プログラム、及びモジュール(例えば、本願の実施例における方法に対応するプログラム命令/モジュール)を記憶するように設けられてもよい。プロセッサ40は、メモリ41に記憶されたソフトウェアプログラム、命令及びモジュールを実行することにより、ストアドプロシージャ・エンジンの少なくとも1つの機能アプリケーション及びデータ処理を実行し、すなわち上述のストアドプロシージャの実行方法を実現する。
【0104】
メモリ41は、オペレーティングシステム、少なくとも1つの機能に必要なアプリケーションを記憶できる記憶プログラム領域と、記憶データ領域とを含んでもよい。記憶データ領域は、ストアドプロシージャ・エンジンの使用に基づいて作成されたデータなどを記憶することができる。メモリ41は、高速ランダムアクセスメモリを含んでもよく、また、少なくとも1つのディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステートメモリデバイスなどの不揮発性メモリを含んでもよい。いくつかの例において、メモリ41は、プロセッサ40に対して遠隔に設けられたメモリを含んでもよく、これらの遠隔メモリは、ネットワークを介してストアドプロシージャ・エンジンに接続されてもよい。上記ネットワークの例としては、インターネット、企業内イントラネット、ローカルエリアネットワーク、移動体通信ネットワーク、及びそれらの組み合わせが挙げられるが、これらに限定されない。
【0105】
通信インタフェース42は、データの受信と送信を行うように設けることができる。
【0106】
本願の実施例は、プロセッサによって実行されたときに、本願の任意の実施例で提供される方法を実現するコンピュータプログラムが記憶されているコンピュータ可読記憶媒体をさらに提供する。
【0107】
本願の実施例によるコンピュータ記憶媒体は、1つ又は複数のコンピュータ可読媒体の任意の組み合わせを採用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、電気、磁気、光、電磁、赤外線、又は半導体のシステム、装置、又はデバイス、あるいはそれらの任意の組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体は、1つ以上の導線を有する電気接続、携帯型コンピュータディスク、ハードディスク、ランダムアクセスメモリ(Random Access Memory,RAM)、リードオンリメモリ(Read-Only Memory,ROM)、電気的消去可能プログラマブルリードオンリメモリ(Electrically Erasable Programmable Read-Only Memory,EEPROM)、フラッシュメモリ、光ファイバ、携帯型コンパクトディスクリードオンリメモリ(Compact Disc Read-Only Memory,CD-ROM)、光記憶デバイス、磁気記憶デバイス、又は上記の任意の適切な組み合わせを含む(非網羅的なリストである)。本願において、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによって使用され、又はそれらと組み合わせて使用され得るプログラムを包含するか、又は記憶する、任意の有形媒体であり得る。
【0108】
コンピュータ可読信号媒体は、ベースバンドで又は搬送波の一部として伝搬されるデータ信号を含んでもよく、データ信号は、コンピュータ可読プログラムコードを保持する。このような伝搬されるデータ信号は、電磁信号、光信号、又は上記の任意の適切な組み合わせを含むが、これらに限定されない様々な形態をとり得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体以外の任意のコンピュータ可読媒体であってもよく、当該コンピュータ可読媒体は、命令実行システム、装置、又はデバイスによって使用され、又はそれらと組み合わせて使用され得るプログラムを送信、伝播、又は伝送することができる。
【0109】
コンピュータ可読媒体に含まれるプログラムコードは、無線、電気配線、光ケーブル、無線周波数(Radio Frequency,RF)など、又は上記の任意の適切な組み合わせを含むが、これらに限定されない、任意の適切な媒体によって伝送することができる。
【0110】
本開示の動作を実行するためのコンピュータプログラムコードは、1つ又は複数のプログラミング言語又はプログラミング言語の組み合わせによって記述されてもよく、プログラミング言語は、Java(登録商標)、Smalltalk、C++、Ruby、Goなどのオブジェクト指向プログラミング言語、及び「C」言語などの常規の手続き型プログラミング言語、又は類似するプログラミング言語を含む。プログラムコードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェアパッケージとして、部分的にユーザのコンピュータ上で且つ部分的にリモートコンピュータ上で、又は完全にリモートコンピュータ若しくはサーバ上で、実行され得る。リモートコンピュータに関する場合、リモートコンピュータは、ローカルエリアネットワーク(Local Area Network,LAN)又は広域ネットワーク(Wide Area Network,WAN)を含む任意の種類のネットワークを介してユーザコンピュータに接続されてもよく、又は、(例えば、インターネットサービスプロバイダを利用してインターネットを介して)外部コンピュータに接続されてもよい。
【0111】
本願の様々な実施例は、ハードウェア又は専用回路、ソフトウェア、ロジック、又はそれらの任意の組合せで実現され得る。例えば、本願は、これに限定されないが、一部の態様はハードウェアで実現され、他の態様は、コントローラ、マイクロプロセッサ、又は他のコンピューティングデバイスによって実行されるファームウェア又はソフトウェアで実現されてもよい。
【0112】
本願の実施例は、モバイルデバイスのデータプロセッサがコンピュータプログラム命令を実行することによって実現され、例えば、プロセッサエンティティにおいて、ハードウェアによって、又はソフトウェアとハードウェアの組み合わせによって実現され得る。コンピュータプログラム命令は、アセンブラ命令、命令セットアーキテクチャ(Instruction Set Architecture,ISA)命令、機械命令、機械関連命令、マイクロコード、ファームウェア命令、状態設定データ、又は、1つ又は複数のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードであってよい。
【0113】
本願の図面における任意の論理フローのブロック図は、プログラムステップを表してもよく、又は、互いに接続された論理回路、モジュール、及び機能を表してもよく、又は、プログラムステップと論理回路、モジュール、及び機能との組み合わせを表してもよい。コンピュータプログラムは、メモリに記憶されてもよい。メモリは、ローカル技術環境に適した任意のタイプを有してもよく、かつ、任意の適切なデータ記憶技術を使用して実現されてもよく、例えば、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、光メモリデバイス及びシステム(デジタル多用途ディスク(Digital Video Disc,DVD)又はコンパクトディスク(Compact Disc,CD))などであってもよいが、これらに限定されない。コンピュータ可読媒体は、非一時的記憶媒体を含んでもよい。データプロセッサは、汎用コンピュータ、専用コンピュータ、マイクロプロセッサ、デジタルシグナルプロセッサ(Digital Signal Processor,DSP)、特定用途向け集積回路(Application Specific Integrated Circuit,ASIC)、プログラマブル論理デバイス(Field-Programmable Gate Array,FPGA)、及びマルチコアプロセッサアーキテクチャに基づくプロセッサなど、ローカル技術環境に適した任意のタイプであってもよいが、これらに限定されない。
【国際調査報告】