JP3808941B2 - 並列データベースシステム通信回数削減方法 - Google Patents

並列データベースシステム通信回数削減方法 Download PDF

Info

Publication number
JP3808941B2
JP3808941B2 JP21057596A JP21057596A JP3808941B2 JP 3808941 B2 JP3808941 B2 JP 3808941B2 JP 21057596 A JP21057596 A JP 21057596A JP 21057596 A JP21057596 A JP 21057596A JP 3808941 B2 JP3808941 B2 JP 3808941B2
Authority
JP
Japan
Prior art keywords
database
database operation
server
statement
statements
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.)
Expired - Fee Related
Application number
JP21057596A
Other languages
English (en)
Other versions
JPH1040146A (ja
Inventor
守弘 岩田
正士 土田
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP21057596A priority Critical patent/JP3808941B2/ja
Publication of JPH1040146A publication Critical patent/JPH1040146A/ja
Application granted granted Critical
Publication of JP3808941B2 publication Critical patent/JP3808941B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、デ−タベ−ス管理システムに係り、特にリレ−ショナルデ−タベ−ス管理システムに適した問合せの並列処理に好適な問合せための通信回数の削減方法に関する。
【0002】
【従来の技術】
事務データ処理を中心にしてリレーショナルデータベース、主にSQLデータベースシステムの適用が進んでいる。
リレーショナルデータベースシステムにおいては、データを複数のデータベース処理サーバに分割して配置して、並列にアクセスすることで、性能の向上を図ることが容易である。このような並列データベースシステムに対する要求は、データ量の増大にともなって強まってきている。
並列データベースシステムについては、DeWitt,D.,et.al.:"Parallel Database Systems: The Future of High Performance Database Systems", CACM, Vol.35, No.6, 1992.に記載されている。
並列データベースシステムの構成としては、ホストからのデータベースに対する問い合わせを解析しコンパイルするサーバ(フロントエンドのデータベースサーバと呼ぶことにする)と、データが格納されるディスク装置にアクセスし、データの操作を行う複数のサーバ(データベース操作サーバと呼ぶことにする)を有する。
【0003】
以下では、簡単のため、1つのホスト、1つのフロントエンドデータベースサーバと複数のデータベース操作サーバの構成で説明を行う。
しかし、1つ、または、複数のホストからの複数の問い合わせに対して、複数のフロントエンドデータベースサーバが取りあつかうことができる。
この場合でも1つ1つの問い合わせに対しては、1つのホスト、1つのフロントエンドサーバと複数のデータベース操作サーバの構成であり、以下の説明、及び、本発明に問題無く適用される。
【0004】
一般にデータベースに対する問い合わせであるSQLは、C言語などの計算機言語に埋めこんだ形で使われることが多い(以下、埋込型SQLと呼ぶことにする)。
データベースへの検索、及びデータベースへのデータの更新、削除と挿入の1つ1つのデータベースの操作を行う文(以下、データベース操作文と呼ぶことにする)は、データベース操作言語SQLのSQLデータ文(以下、SQL文と呼ぶことにする)によって書かれる。
埋込型SQLは、C言語などの計算機言語からSQL文を実行できるようにし、SQL文単独では行えない複雑処理を行えるようにしたものである。
【0005】
以下に、埋込型SQLによる、一般的な、並列データベースシステムの内部形式の処理手順の作成、転送と実行の例を記す。
データベース操作の結果に対する加工や制御を、埋込型SQLで書かれたホストプログラムの制御構文が行う。
SQL文は1文ずつホストプログラムとのフロントエンドのデータベースサーバにネットワークを介して送られる。そして、コンパイラによって構文解析、意味解析、最適化、コンパイルを行うことによって、送られたSQL文に基づいた実際のデータベース操作を行うための内部形式の処理手順を作成する。
【0006】
作成された処理手順は、実際にデータベース操作を行うデータベース操作サーバにネットワークを通じて転送し起動要求により実行する。
データベース操作サーバはプロセサと1つ以上のディスク装置を有する。
データベース操作サーバのキャッシュに内部形式の処理手順を置くことによって、2回目以降の実行は、実行要求を発しキャッシュにある処理手順を用いる改良案がある。
【0007】
並列データベースシステムにおいてはデータベース操作サーバは複数存在し、SQLの処理の並列化がなされる。
SQLの処理の結果は、必要に応じて他のデータベース操作サーバとネットワークを通じてデータなどのやりとりを行い、最終的にユーザプログラムとのフロントエンドサーバの結果受取り処理を通じて、実行結果がホストプログラムに返され、実行結果の加工や制御を行う。以下SQL文1文ずつについて同じ処理を繰り返す。
【0008】
次に、ストアド・プロシージャという従来技術による並列データベースシステムの内部形式の処理手順の作成、転送と実行の方式の一例を示す。
ストアド・プロシージャは、上記従来技術が1つ1つSQL文を実行してから実行結果を返すためホストプログラムとフロントエンドのデータベースサーバの間のネットワーク通信量が多いのに対して、通信量を減らすことを1つの目的として、一連のSQL文からなるトランザクション処理をまとめてコンパイラでコンパイルしてデータベースサーバ側で実行する方式である。
1つのストアド・プロシージャは、名称、各SQL文の内部形式の処理手順とif then else、whileなど制御構文(以下、代入などのデータ加工処理を含めて制御処理文と呼ぶことにする)を有する。
制御処理文をSQL文に含める規格も存在するが、ここでは、制御処理文はSQL文外のものとして扱うことにする。
制御処理文をSQL文に含める規格の場合は、SQLの中の制御構文や代入などの加工処理を本発明でいう制御処理文に対応させ、それ以外を本発明でいうSQL文に対応させることによって、本発明に適用する。
【0009】
コンパイルしたストアドプロシジャをフロントエンドのデータベースサーバに蓄えておき、必要に応じてホストプログラムから呼び出して実行する代案もある。
この場合、ホストプログラムは、使用したい名称のストアド・プロシージャをコールすることで、ストアド・プロシージャの実行要求を発し実行を行う。
ストアドプロシジャについては、片山初子:ストアド・プロシージャとトリガーを使いこなす、 NIKKEI OPEN SYSTEMS, No.2, pp.133-144,1993.などに記載されている。
【0010】
以下に、ストアド・プロシージャを並列データベースシステムに対して適用する場合の実行について一例を記す。
ストアド・プロシージャのSQL文の処理手順が制御処理文にしたがって1文ずつ実行される。
制御処理文はコンパイルされたコードやインタプリタ用の内部形式など(以下、命令コードと呼ぶことにする)として実行され、その中にSQL文を実行する命令コードがある。
SQL文を実行するときは、各SQL文の処理手順は、実際にデータベース操作を行う複数のデータベース操作サーバにネットワークを通じて転送し実行する。
データベース操作サーバのキャッシュに各SQL文の処理手順を置くことによって、2回目以降の実行は、実行要求を発しキャッシュにある処理手順を用いる改良案がある。
データベース操作の結果は、必要に応じて他のデータベース操作サーバとネットワークを通じてデータなどのやりとりを行い、最終的にストアド・プロシージャに返され、制御処理文によって加工や制御を行う。以下SQL文1文ずつについて同じ処理を繰り返す。ストアド・プロシージャの実行が全て終了するとその実行結果がホストプログラムに返される。
【0011】
本発明は並列データベースシステムでストアドプロシジャを前提としており、データベースの主流であるリレーショナルデータベース、SQLにより説明を行う。
しかし、データベース操作文を制御処理文に埋めこんだ問い合わせをフロントエンドのデータベースサーバで解析し、データベース操作文の処理を複数のデータベース操作サーバが行う並列データベースシステムの構成であれば、リレーショナルデータベース、SQLで無くても適用できる。
例として、データベース操作サーバがオブジェクト指向データベースであり、データベース操作言語がオブジェクト指向操作の言語の場合、データベース操作文として、SQL文をオブジェクト指向操作文に置き換えることで適用できる。オブジェクト指向データベースのデータベース操作言語の1つOQLについては、R.G.G.Cattell編:オブジェクトデータベース標準:ODMG-93,共立出版株式会社,pp85-104,1995などに記載されている。
【0012】
【発明が解決しようとする課題】
埋込型SQLの場合もストアド・プロシージャの場合も、コンパイルされたSQL文(データベース操作文)の処理手順は、複数のデータベース操作サーバに対して、SQL文1文ごとに転送し実行される。
並列システムで無ければ、サーバは分かれていなく、ホストプログラムとのフロントエンドもデータベース処理も1つのサーバで行われるのでサーバ間の通信ネックは存在しない。
しかし、並列システムの場合は、フロントエンドサーバとデータベース操作サーバ間にSQL文1文ごとに起動要求が必要になる。そのため、ループによりSQL文が繰り返し実行される場合は、起動要求の通信回数は、大きなものとなる。通信回数が多くなると通信がネックになって性能が低下する問題が生じる。
【0013】
ここで、問い合わせの中のSQL文には同じデータベース操作サーバで実行するものがある。同じサーバで実行するSQL文の内部形式をまとめて転送し、起動すれば、通信回数は減る。
並列システムに対して、まとめて転送できるSQL文とはどのようなものか、また、各SQL文を実行するデータベース操作サーバは複数あるためどのような方法でまとめるかが問題となる。
【0014】
本発明は問い合わせの中の複数のSQL文を、1回の起動要求で実行できる内部形式にまとめて転送し、1回の起動要求で複数のSQL文を起動することにより、起動要求の回数を減らし、フロントエンドのデータベースサーバとデータベース操作サーバ間の通信回数を減らすことが目的である。
【0015】
【課題を解決するための手段】
上記目的を達成するために、本発明は、
データベースへの問い合わせを解析するフロントエンドのデータベースサーバと、データベースに対する操作を行う複数のデータベース操作サーバを有し、該フロントエンドのデータベースサーバと複数のデータベース操作サーバとがネットワークで接続された並列データベースシステムにおいて、
前記フロントエンドのデータベースサーバは、複数のデータベース操作文を含んだデータベースへの問い合わせを解析し、対応する内部形式を作成し、該内部形式を実行して内部形式の中のデータベース操作文を複数のデータベース操作サーバに送り実行する過程において、
前記解析時に、同じデータベース操作サーバで一回の起動要求で実行できる1つ以上のデータベース操作文を抽出してグループ化し、
前記内部形式を実行する時に、前記グループ化したデータベース操作文をデータベース操作サーバにまとめて転送し、
前記データベース操作サーバに対して、転送した複数のデータベース操作文を一回の起動要求で起動するようにしている。
【0016】
また、グループ化した各データベース操作文を転送するデータベース操作サーバを、データベースシステム内の各表と表の分割されているデータベース操作サーバとの対応関係を示す表分割情報に基づき決定するようにしている。
さらに、前記表分割情報に基づき転送先のデータベース操作サーバの決定した前記グループ化した各データベース操作文をそれぞれ転送先のデータベース操作サーバにまとめて転送し、転送した複数のデータベース操作文を一回の起動要求で起動するようにしている。
【0017】
また、同じデータベース操作サーバで一回の起動要求で実行できる1つ以上の前記データベース操作文に対して同じ識別子を付与することによりグループ化するようにしている。
【0018】
また、同じデータベース操作サーバで一回の起動要求で実行できる1つ以上の前記データベース操作文と、該データベース操作文を含む制御処理文の夫々とをグループ化するようにしている。
【0019】
また、同じデータベース操作サーバで一回の実行要求で実行できるデータベース操作文とは、前記の複数のデータベース操作文の中で、内部形式の中で実行する順番が連続しているデータベース操作文であり、分割列の更新操作文の後に同じ表に対するデータベース操作文が存在せず、かつ、先に行うデータベース操作文の結果を変数を媒介として後のデータベース操作文が使用しないデータベース操作文であるようにしている。
【0020】
また、同じデータベース操作サーバで一回の実行要求で実行できるデータベース操作文とは、前記の複数のデータベース操作文の中で、内部形式の中で実行する順番が連続しているデータベース操作文であり、データベース操作を行う表が1つの同じデータベース操作サーバにあるデータベース操作文であるようにしている。
さらに、前記データベースに対する問い合わせの中にある全てのデータベース操作文のデータベース操作を行う表が1つの同じデータベース操作サーバにある場合、前記データベースに対する問い合わせの内部形式を該データベース操作サーバに転送し、実行するようにしている。
【0021】
【発明の実施の形態】
以下において本発明の一実施例を図面を用いて説明する。
図1は本発明の実施例の構成図である。
ホストからのデータベースへの問い合わせに対するフロントエンドの役割をするデータベースサーバ12と、データベースに対する操作を行う役割をする複数のデータベース操作サーバ13で構成される。
フロントエンドデータベースサーバ12とデータベース操作サーバ13は、高速な相互結合ネットワークで繋がっているものとする。
ただし、ネットワークで繋がる複数プロセッサの並列データベースシステムで無く、単一プロセッサのシステムでも、各サーバの役割として並列なプロセスを割り当てていれば、プロセス間の通信回数を削減するものとして本発明に適用可能である。
フロントエンドデータベースサーバ12は、外部のホスト11とネットワークで繋がっているものとする。
ただし、本発明はフロントエンドのデータベースサーバ12とデータベース操作サーバ13の間の通信回数を削減するのが目的なので、ホストの役割をデータベースシステム側に取り込み、内部の高速なネットワークで繋げる代案や、ホストの役割とフロントエンドのデータベースサーバを1つに統合する代案に対しても本発明を適用できる。
【0022】
ホスト11からのストアドプロシジャ121をフロントエンドのデータベースサーバ12で解析(101)することでストアドプロシジャの内部形式122を作成する。
作成したストアドプロシジャ内部形式122は、名称、制御処理文の内部形式、各SQL文の内部形式の処理手順を有し、一回の通信で起動する幾つかのグループにグループ分けされている。いっしょに起動するSQL文が無いSQL文は、その1つのSQL文のみでグループを形成する(すなわち、従来通り、そのSQL文1つを起動する)。
制御処理文を実行(102)し、SQL文を実行することになると(105)、グループごとの処理に入る。
表分割情報123をみてグループに対して実行するデータベース処理サーバ13を決定し、行き先別SQL文リストを作成する(107)。
続いてデータベース操作を行うため、各SQLの内部形式を行き先別の内部形式(以下、行き先別SQL文内部形式124と呼ぶ)にまとめて、行き先別SQL文内部形式を作成し(108)、データベース処理サーバ13にSQL文内部形式を転送し(109)、起動要求をかける(110)。
データベース操作サーバ13は、行き先別SQL文内部形式125を受取り(112)、起動要求(110)により起動(113)し、データベース操作の結果をフロントエンド側12に返す(114)。
各SQLのデータベース操作の結果はフロントエンドのデータベースサーバ12で受け取り合成(111)し制御処理を続ける。
制御処理が終わるとストアドプロシジャの結果をホスト11に返す(103)。
【0023】
複数のSQL文に対し1回の転送(109)と起動要求(110)で済むため、通信回数が削減される。
データベース処理サーバ13側のキャッシュメモリに行き先別のSQLの内部形式125を置き、2回以上同じSQLを実行する場合起動要求によりキャッシュメモリのSQLを起動する方式もあるが、その場合は、2回目以降は行き先別内部形式生成(108)や転送(109)はいらない。
その場合でも起動要求が複数のSQL文に対し1回で済むのは同じであり、本発明の適用ができ発明の効果が期待できる。
ホスト11からのストアドプロシジャ121を解析(101)し内部形式122を登録しておき、ホスト11からストアドプロシジャの実行要求を行いストアドプロシジャの実行を行う方式もあるが、その場合でも本発明は解析と実行のフェーズが分れるだけで問題無く適用できる。
その場合1回の通信で起動要求するSQLのグループ分けをストアドプロシージャの実行フェーズに行う代案も適用できる。
【0024】
図2は、ストアドプロシージャ121の例である。
制御構文であるWHILE文202、206や、代入文であるSET文201、205が、本発明で制御処理文と呼ぶ文の例である。
SELECT文203やUPDATE文204が、本発明でデータベース操作文またはSQL文と呼ぶ文の例である。
データベース操作文は制御処理文中に埋めこまれているという表現を使うことにする。制御処理文中のデータベース操作文のところには暗黙的にデータベース操作文を実行する処理があるものとし、この処理も制御処理文にいれることにする。
これによって、データベースに対する問い合わせ121がSQL文のみの並びの場合でも、本発明を適用できる。
SQLにはSELECT、UPDATEなどデータにアクセスする文の他に、CREATE文などのデータベースの定義を行う文やカーソルの処理を行う文も存在する。定義やカーソルの処理の文などの、データにアクセスする文以外の文は、データベース操作サーバで行う処理では無いので、従来通り、1つ1つ処理を行う。
【0025】
実施例ではデータベース操作文としてSQLを用いているが、データベース処理サーバがオブジェクト指向データベースの場合、データベース操作文を、SQL文で無く、オブジェクト指向データベース操作言語の参照、更新、削除、挿入のデータベース操作文とすると本発明を適用できる。
データベース操作サーバが複数存在し、制御処理文にデータベース操作文が埋め込まれた形の問い合わせであれば良い。
【0026】
図3は、実施例における図1のストアドプロシジャ内部形式122の例である。
ストアドプロシジャ内部形式122は名称301、SQL文の制御処理文内部形式302、SQL文内部形式303、1回の通信で起動要求するものを同じ番号とする識別子304を有する。
制御処理文内部形式はSQL文内部形式を実行する処理の内部形式を含む。
【0027】
SQL文内部形式は、アクセスする表の識別子や、参照、更新、削除、挿入などのSQL文の種類、分割カラムの更新かなどの情報を有する。
ストアドプロシジャ内部形式122は、図1の解析(101)により作成し、その際に、1回の通信で起動要求するものを同じ番号とする識別子304がふられる。
制御処理文の1部をいっしょにデータベース処理サーバ13に送り実行する方式の場合には、制御処理文にも識別子をふる方法や、1回の起動要求で実行できる制御処理文とSQL文で新たにプロシジャ122を作成しポイントする方法が考えられる。
図2の例の場合SQL1とSQL2の識別子304が同じ番号であるので1回の起動要求で実行するグループである。
ストアドプロシジャ121がSQL文のみの並びの場合は、制御処理文内部形式は各SQL文内部形式を実行する処理の内部形式の並びである。この場合、SQL文内部形式の並びを実行順序として、制御処理文内部形式を省略する代案も適用できる。
【0028】
図4は、実施例における図1の表分割情報123の例である。
表分割情報123はデータベースシステム内の各表に対し、表の識別子と、その表の分割されているデータベース操作サーバの識別子を有する。
図4の例の場合、表T1はデータベース処理サーバ1、サーバ2、サーバ3に、表T2はデータベース処理サーバ1、サーバ2に、表T3はデータベース処理サーバ2、サーバ3に表T4はデータベース処理サーバ1に分割している。
分割の種類が分割列のキー範囲やハッシュ値による分割の場合はサーバごとに分割範囲を有する。
SQL文のWHERE句に分割列の条件がある場合に分割範囲によって実行するサーバを限定する改良案を適用できる。
【0029】
図5は、実施例における図1の行き先別SQL文リスト124の例である。
行き先別SQL文リスト124は、解析(101)で分けたグループに対して、実行を行うデータベース処理サーバ13である行き先サーバと、その行き先サーバに転送するSQL文内部形式識別子を有する。
【0030】
図6は、実施例における、図1の行き先別SQL文内部形式125の例である。
行き先であるデータベース操作サーバの識別子601、グループ内のSQL文内部形式の数602、SQL文内部形式へのポインタ603をSQL内部形式の数602分、各SQL文内部形式604を有する。
複数のSQL文を1つの内部形式125にまとめることにより、1回の起動要求で、複数のSQL文を逐次または並列に実行することができる。
【0031】
図7は、実施例の図1の解析(101)における1回の起動要求で実行できるSQL文をグループに分ける処理の処理説明図である。
この処理では解析(101)で作成された、SQL文の制御処理文順に次の埋め込みSQL文がある場合、各2つのSQL文に変数のやりとりなどが無いか調べ、有れば新たな識別子を付与し、無ければ同一の識別子を付ける。
ただし、C言語のgoto文のようなジャンプを行う制御処理文がある場合は実行順の先後が判定できる単純な場合を除いて本発明の適用は行わない。
また、ループを行う制御処理ごとに複数のSQL文をグループにする方法をとる場合には、ループを行う制御処理の間のSQL文は、繰り返し実行されるため、実行順の先後がどちらにもなるものとして適用する。
図7では識別子を1から順に付けて分けているが、同じグループを識別できれば他の識別方法でも良い。分けた後のストアドプロシジャ内部形式の例は前述の図3である。
【0032】
まずグループに付ける識別子に初期値1を入れる(702)。
制御処理文順に次の埋め込みSQL文があるか判定し(703)、無ければ処理を終了する。有ればこれから識別子を付けるSQL文を取り出し(704)、現在調べているグループの識別子を付ける(705)。次に(706)の判定を行なう。
現在調べているグループのSQL文1つずつと、(1)変数による結果のやりとりがある(707)かを調べ、(2)共に同じ表に対するデータベース操作文であり(708)、先に行なうデータベース操作文が分割カラムの更新問い合わせ(709)かを調べ、(1)、(2)の条件のいずれかに適合する場合は、1回の起動要求で実行できないためグループを変える(711)、(712)。
しかし、(1)の条件を満たさず、かつ異なる表を対象とする問い合わせ(708)の場合、また、(1)の条件を満たさず、かつ同じ表を対象とする問い合わせ(708)であり、かつ(2)の条件を満たさない場合にはグループの識別子をそのままとする。
実行順序、変数のやりとりは制御処理文内部形式に情報があり、SQL文がアクセスする表、更新処理か、分割カラム更新か、はSQL文内部形式に情報がある。
図7の例では内部形式を作成した後、グループ分けを行う例になっているが、グループ分けなどの解析処理を行いやすいように、実行順序、変数のやりとり、SQL文がアクセスする表、更新処理か、分割カラム更新か、などの情報を抽出済みの中間形式を作成し、グループ分けをしたあとで実行用の内部形式に変換する代案も適用できる。また、内部形式の作成と並行してグループ分けを進める代案も適用できる。
解析(101)により前述の図3のように一回の起動要求で実行するものをまとめたストアドプロシジャ内部形式122が作成される。
【0033】
図8は、実施例の図1のグループ分割決定(107)の処理説明図である。
この処理は、1回の起動要求で実行できるものとしてグループ化されているSQL文に対して、表分割情報123を見て、処理手順内部形式の行き先別のリストを作成する。
行き先別に内部形式を変えるのは、データベース操作サーバにより実行するSQL文が異なるため無駄なSQL文内部形式の転送を押さえるためである。
【0034】
まず、1回の起動要求で実行可能なものとしてグループ化されているSQL文を1つずつ取り出す(801)、(802)。
表分割情報123を見て、そのSQLがアクセスする表が存在するデータベース操作サーバ13の識別子を取り出す(804)。
そのデータベース操作サーバについての行き先別のSQL文のリスト124が存在すれば(805)、SQL文の識別子を登録し(807)、存在しなければ、そのデータベース操作サーバについての行き先別のSQL文のリスト124を作成し(806)、登録する(807)。
グループ内の全てのSQLについて分割したならば(809)、行き先別にSQL文をまとめる。
ただし、2表以上の表にアクセスするSQL文については、各表のアクセス用に異なる内部形式の処理手順を作成する方式をとる場合には、SQL文では無く、処理手順ごとに行き先別のリストを作成し、以下、各表のアクセス用の処理手順を部分的なSQL文として1表にアクセスするSQL文と同等に扱うことで本発明を適用できる。
【0035】
図9は、実施例の図1の行き先別SQL文内部形式生成(108)の処理説明図である。
行き先別SQL文内部形式125の例は前述の図6である。
SQL文内部形式をまとめる場合、1回の起動要求で実行するSQL文の数(602)分のポインタ(603)を配列で用意し、各SQL文の内部形式(604)をポイントする。
グループ分割決定107により行き先サーバとそこで起動するSQL文内部形式が行き先別SQL文リスト124にまとめてある。
【0036】
行き先別SQL文リスト124の行き先サーバ1つずつに対して行き先別SQL文内部形式125を作る(901)。
行き先サーバの識別子を入れ(902)、起動するSQL文の数を数えて(903)、該数を入れる領域を設けて、この領域に該数を入れ(904)、SQL文の数分のポインタを用意し(905)、SQL文内部形式とSQL内部形式へのポインタをいれる(907)、(908)。
図9の例では、行き先別に異なる内部形式を作成するが、代案として、グループ内のSQL文をまとめた内部形式を1つ作成し、データベース操作サーバ側で、アクセスする表の有無などによって起動するSQLを判断する代案も適用できる。
【0037】
図10は、実施例の図1の行き先別SQL文内部形式転送(109)の処理説明図である。
行き先別SQL文内部形式を1つずつ取り出し(1001)、行き先サーバに転送する(1002)。
行き先別SQL文内部形式を受け取ったデータベース操作サーバが受取り報告をフロントエンドのデータベースサーバ12に返し、全て受け取ったのを確認してから起動要求110に移る代案も適用できる。
また、行き先別SQL文内部形式を受け取り、そのまま起動を行う代案も考えられるが、その場合、内部形式の転送が起動を兼ねており、転送回数が減っているため、通信回数を減らす発明の効果が期待できる。
【0038】
図11は、実施例の図1の行き先別SQL文内部形式起動要求110の処理説明図である。
1回の通信で起動要求できるグループごとに実行する各データベース操作サーバに起動要求をかける(1102)。
データベース操作サーバ13側は、起動要求を受けると(1103)と、行き先別のSQL文内部形式125の配列からポイントされた内部形式604を、配列順に逐次に、もしくは、並列に起動する(1105)。
1回の起動要求で起動する相手は図6のように複数のSQL文であるため、起動要求の通信回数が削減される。
データベース操作サーバ13のキャッシュメモリに行き先別SQL文内部形式125のキャッシュを置く代案もあるが、いずれにしても複数のSQL文に対して1回の起動要求ですむため通信回数は削減されるので、本発明が適用できる。
【0039】
図12は、実施例における図1の検索結果合成111の処理説明図である。
図13は検索結果合成の例の模式図である。
起動要求したデータベース操作サーバ13からSQL文ごとに転送処理が行われ(1207)、実行結果を取り出し(1208)、実行結果が無くなるまで(1209)、結果が転送される(1210)。実行結果が無くなると(1209)、結果終了の報告を送る(1211)。
フロントエンドのデータベースサーバ12側は、SQL文ごとに結果の受取り処理を行う(1201)。
結果受取りの処理手順を解析時に作成しても良い。
各データベース操作サーバ13からの結果は、キューなどにより結果を送られてきた順に取り出される(1202)。
起動したデータベース操作サーバ13から全て結果終了の報告が送られてくるまで(1205)、結果を受け取る(1204)。結果終了の報告が送られてきたら(1205)、(1206)の処理を行なう。
結果は共用メモリなどにおいておき、制御処理文内部形式の実行時に取り出される。
図12では、結果転送114や結果受取り111をSQL文ごとに逐次行っているが、制御処理文実行と各SQL文の結果受取りを別プロセスで並列に行う改良案も適用できる。
【0040】
図14は本発明を具体的なSQL文や制御処理文に適用する具体例の概要図である。
ストアドプロシジャの内容はSQL文制御処理文1402の内容である。実際は内部形式で表される。
図7の処理説明図と照らして解析処理(101)を見ると、制御処理文順にSQL文1、SQL文2となり、SQL1の出力はSQL2の入力とはなっておらず(707)、SQL1は表T1を対象にし、SQL2は表T2を対象としているため、SQL1とSQL2は、異なる表を対象とする問い合わせであるため(708)、同じグループの識別子がふられる。
また図8の処理説明図と照らしてグループの分割決定処理(107)を見ると、SQL1とSQL2は同じ集合Zに入る(801)。
SQL1はT1への問い合わせであるため、表分割情報123よりサーバ1、サーバ2、サーバ3が取り出され(803)、サーバ1、サーバ2、サーバ3の各行き先別のSQL文リストが作成され(806)、SQL文1の識別子がこのリストに登録される(807)。
SQL2はT2への問い合わせであるため、表分割情報123よりサーバ1、サーバ2が取り出され(803)、サーバ1、サーバ2の行き先別のSQL文リストは上記したように既に作成されているので、サーバ1、サーバ2のSQL文リストにSQL文2の識別子が登録される(807)。
結果として、サーバ1(13a)にSQL文1とSQL文2の処理手順が、サーバ2(13b)にSQL文1とSQL文2の処理手順が、サーバ3(13c)にSQL文1の処理手順が、1回の起動要求で実行されるプロシジャとして作成され、転送され実行される。
【0041】
データベース操作サーバ13a、13bにおいて、SQL1とSQL2の処理は逐次または並列に実行することが可能である。一回の起動要求で実行するデータベース処理の中に、更新、削除、挿入と、同じ表への検索が混ざっていない限り、実行順序は変えられるため並列に実行することも可能なのである。
また各データベース処理サーバ間で同じSQL文に対して開始の待ち合わせをしないため、サーバによってデータ量の偏りがある場合でも、各サーバごとに最短の時間でSQLの処理が行われる。従来方式だと偏りが大きい処理が終わるのを待たないと次のSQLの処理に進めない。
同様に、データベースサーバごとに実行するSQL文が異なる場合も、各データベース処理サーバ間で同じSQL文に対して開始の待ち合わせをしないことから、各サーバごとに最短の時間でSQLの処理が行われる。
【0042】
図15は、図1のストアドプロシジャ内部形式122の図3とは別の実施例を示す。
ストアドプロシジャ内部形式は名称1501、SQL文制御処理文内部形式1502、SQL文内部形式1503を有する。
制御処理文内部形式1502は、グループにする幾つかのSQL文と制御処理文の1部分を有する内部形式(以下サブプロシジャ152と呼ぶことにする)の呼び出しを有する。
サブプロシジャ152を形成しないSQL文、すなわち、単独で起動されるSQL文(図の場合、SQL文3、SQL文7)は従来通りSQL文内部形式1503としてSQL文制御処理文内部形式1502に埋めこまれる。
図3と異なる主要な点は、1回の起動要求で実行できるSQL文内部形式をサブプロシジャというストアドプロシジャと類似の形式でグループ1507にすること、及び、各SQL文が埋め込まれている制御処理文内部形式の1部1505を一緒にグループにすることである。
サブプロシジャ152(図の場合、152a、152b)は名称1504、制御処理文の内部形式の1部分1505とSQL文の内部形式の処理手順1506を有する。各SQL文は同一のデータベース操作サーバにアクセスするものである。
また入力や出力となる変数がある場合は入力変数、出力変数など入出力の情報が必要である。
【0043】
図16は、図1の解析(101)の図7の実施例とは別の実施例の処理説明図である。
SQL文の制御処理文順に複数の各SQL文のアクセスする表が同じ1つのデータベース操作サーバ13にある場合に、サブプロシジャ152にまとめる。
SQL文の内部形式を制御処理順にサーチし(1602)、次のSQL文があれば、これを取り出しSQL文2とし(1603)、(1604)、アクセスする表の分割されているデータベース操作サーバ13を調べ(1605)、サーバ13が1つであり(1606)、同じサーバにアクセスするSQL文であれば(1607)、サブプロシジャを作るためのグループにすることができる(1608)。
1つの同じデータベース操作サーバにアクセスする連続するSQL文のグループができたならば、それらのSQL文を埋め込む前後の制御処理文内部形式を抽出し、サブプロシジャ152を生成する(1609)、(1611)、(1612)。
制御処理文内の変数の入出力によっては、サブプロシジャ152の入力、及び、出力となる変数を抽出する。
【0044】
図16の例では内部形式を作成した後、グループ分けを行う例になっているが、グループ分けや前後の制御処理文などの解析処理を行いやすいように、実行順序、変数の入出力、SQL文がアクセスする表などの情報を抽出済みの中間形式を作成し、グループ分けをしたあとで実行用の内部形式に変換する代案も適用できる。
また、サブプロシジャ152の作成と並行してグループ分けを進める代案も適用できる。
図16の例であると、サブプロシジャ152が図1の行き先別SQL文内部形式125に対応するため、図1の行き先別SQL文内部形式生成108の処理が必要無い。
また、サブプロシジャ152に入力変数がある場合は、起動要求とともに入力の値を転送すれば良い。
結果の合成はSQL文ごとで無く、サブプロシジャの出力を受け取り使用するのみの簡単な処理になる。
また、ストアドプロシジャ121の全てのデータベース操作文が1つの同じデータベース操作サーバ13に分割してある場合は、サブプロシジャ152としてストアドプロシジャごとデータベース操作サーバ13に転送し実行する改良案を適用できる。
その場合、データベース操作サーバ13側でのストアドプロシジャの実行結果をフロントエンドのデータベースサーバ12を介さずに、直接、ホスト11に返す代案が適用できる。
他にも図7や図16のように1連の制御処理文やSQL文が、他のデータベース処理サーバ13に影響しないことを抽出すれば、図3のようにグループの識別子を付ける方法や図15のサブプロシジャ152を作成する方法などによりグループ分けすることで、1回の起動要求で実行することができるため、本発明を適用できる。
【0045】
図17はサブプロシジャ152を用いて1回の起動要求で複数のSQL文を起動する具体例の概要図である。
データベース操作文と制御処理文を含むサブプロシジャ152を作成し、各データベース操作サーバ13で1回の起動要求で起動し、結果はフロントエンドのデータベースサーバ12で受け取り、ストアドプロシジャの処理に渡す。
【0046】
図18は1つの同じデータベース操作サーバにアクセスする複数のSQL文をまとめて起動する具体例の概要図である。
サブプロシジャとしてストアドプロシジャごとデータベース操作サーバ側で実行する例である。
問い合わせ122中のSQL文のアクセスする表が全てサーバ1であり1つの同じデータベース操作サーバであるため、ストアドプロシジャ内部形式122ごとデータベース操作サーバに送り実行する。
結果はフロントエンドのデータベースサーバ12を経由してホスト11に返す方法と、直接ホスト11に返す方法が考えられる。
ストアドプロシジャ122ごとデータベース操作サーバ側13で実行すれば、フロントエンドのデータベースサーバ12とデータベース操作サーバ13の間で、起動要求だけでなく、結果のやりとりも無くなるため大幅な通信の削減が見込まれる。
【0047】
【発明の効果】
以上のように、本発明によれば、複数のデータベース操作文に対し1回の起動要求で実行を行うことで、通信回数を減らし、通信ネックによる性能低下を抑えることができる。
また、表分割情報を用いて、各データベース操作サーバに必要なデータベース操作文のみを送ることで最小限の転送量ですむ。
また、複数のデータベース操作文とともに制御処理文をデータベース操作サーバに送る場合、データベース操作文の結果をデータベース操作サーバ側で制御処理するため、フロントエンドのデータベースサーバとデータベース操作サーバ間で結果転送の通信負荷を削減できる。
また、複数のデータベース操作文が各データベース操作サーバで待ち合わせ無しに実行されるため、データの偏りがある場合に実行時間が短縮される。
【図面の簡単な説明】
【図1】実施例の構成を示す図である。
【図2】ストアドプロシジャの例を示す図である。
【図3】ストアドプロシジャ内部形式の例を示す図である。
【図4】表分割情報の例を示す図である。
【図5】行き先別SQL文リストの例を示す図である。
【図6】行き先別SQL文内部形式の例を示す図である。
【図7】SQL文をグループに分ける処理のフローチャートを示す図である。
【図8】グループ分割決定の処理のフローチャートを示す図である。
【図9】行き先別SQL文内部形式生成の処理のフローチャートを示す図である。
【図10】行き先別SQL文内部形式転送の処理のフローチャートを示す図である。
【図11】行き先別SQL文内部形式起動要求の処理のフローチャートを示す図である。
【図12】検索結果合成の処理のフローチャートを示す図である。
【図13】検索結果合成の例を示す図である。
【図14】具体例の概要を示す図である。
【図15】ストアドプロシジャ内部形式の例を示す図である。
【図16】SQL文をグループに分ける処理のフローチャートを示す図である。
【図17】具体例の概要を示す図である。
【図18】具体例の概要を示す図である。
【符号の説明】
11 ホスト
12 フロントエンドのデータベースサーバ
13 データベース操作サーバ
101 解析
107 グループ分割決定
108 行き先別SQL文内部形式生成
109 行き先別SQL文内部形式転送
110 行き先別SQL文内部形式起動要求
111 SQL文結果合成
121 ストアドプロシジャ
122 ストアドプロシジャ内部形式
123 表分割情報
124 行き先別SQL文リスト
125 行き先別SQL文内部形式
152 サブプロシジャ
201、202、205、206 制御処理文
203、204 データベース操作文

Claims (8)

  1. データベースへの問い合わせを解析するフロントエンドのデータベースサーバと、データベースに対する操作を行う複数のデータベース操作サーバを有し、該フロントエンドのデータベースサーバと複数のデータベース操作サーバとがネットワークで接続された並列データベースシステムにおいて、
    前記フロントエンドのデータベースサーバは、複数のデータベース操作文を含んだデータベースへの問い合わせを解析し、対応する内部形式を作成し、該内部形式を実行して内部形式の中のデータベース操作文を複数のデータベース操作サーバに送り実行する過程において、
    前記解析時に、同じデータベース操作サーバで一回の起動要求で実行できる1つ以上のデータベース操作文を抽出してグループ化し、
    前記内部形式を実行する時に、前記グループ化したデータベース操作文をデータベース操作サーバにまとめて転送し、
    前記データベース操作サーバに対して、転送した複数のデータベース操作文を一回の起動要求で起動することを特徴とする並列データベースシステム通信回数削減方法。
  2. 請求項1記載の並列データベースシステム通信回数削減方法において、
    グループ化した各データベース操作文を転送するデータベース操作サーバを、データベースシステム内の各表と表の分割されているデータベース操作サーバとの対応関係を示す表分割情報に基づき決定することを特徴とする並列データベースシステム通信回数削減方法。
  3. 請求項2記載の並列データベースシステム通信回数削減方法において、
    前記表分割情報に基づき転送先のデータベース操作サーバの決定した前記グループ化した各データベース操作文をそれぞれ転送先のデータベース操作サーバにまとめて転送し、転送した複数のデータベース操作文を一回の起動要求で起動することを特徴とする並列データベースシステム通信回数削減方法。
  4. 請求項1記載の並列データベースシステム通信回数削減方法において、
    同じデータベース操作サーバで一回の起動要求で実行できる1つ以上の前記データベース操作文に対して同じ識別子を付与することによりグループ化することを特徴とする並列データベースシステム通信回数削減方法。
  5. 請求項1記載の並列データベースシステム通信回数削減方法において、
    同じデータベース操作サーバで一回の起動要求で実行できる1つ以上の前記データベース操作文と、該データベース操作文を含む制御処理文の夫々とをグループ化することを特徴とする並列データベースシステム通信回数削減方法。
  6. 請求項1記載の並列データベースシステム通信回数削減方法において、
    同じデータベース操作サーバで一回の実行要求で実行できるデータベース操作文とは、前記の複数のデータベース操作文の中で、内部形式の中で実行する順番が連続しているデータベース操作文であり、分割列の更新操作文の後に同じ表に対するデータベース操作文が存在せず、かつ、先に行うデータベース操作文の結果を変数を媒介として後のデータベース操作文が使用しないデータベース操作文であることを特徴とする並列データベースシステム通信回数削減方法。
  7. 請求項1記載の並列データベースシステム通信回数削減方法において、
    同じデータベース操作サーバで一回の実行要求で実行できるデータベース操作文とは、前記の複数のデータベース操作文の中で、内部形式の中で実行する順番が連続しているデータベース操作文であり、データベース操作を行う表が1つの同じデータベース操作サーバにあるデータベース操作文であることを特徴とする並列データベースシステム通信回数削減方法。
  8. 請求項7記載の並列データベースシステム通信回数削減方法において、
    前記データベースに対する問い合わせの中にある全てのデータベース操作文のデータベース操作を行う表が1つの同じデータベース操作サーバにある場合、前記データベースに対する問い合わせの内部形式を該データベース操作サーバに転送し、実行することを特徴とする並列データベースシステム通信回数削減方法。
JP21057596A 1996-07-22 1996-07-22 並列データベースシステム通信回数削減方法 Expired - Fee Related JP3808941B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP21057596A JP3808941B2 (ja) 1996-07-22 1996-07-22 並列データベースシステム通信回数削減方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21057596A JP3808941B2 (ja) 1996-07-22 1996-07-22 並列データベースシステム通信回数削減方法

Publications (2)

Publication Number Publication Date
JPH1040146A JPH1040146A (ja) 1998-02-13
JP3808941B2 true JP3808941B2 (ja) 2006-08-16

Family

ID=16591590

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21057596A Expired - Fee Related JP3808941B2 (ja) 1996-07-22 1996-07-22 並列データベースシステム通信回数削減方法

Country Status (1)

Country Link
JP (1) JP3808941B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1308852C (zh) * 1999-01-29 2007-04-04 株式会社数字设计 数据传输方法和数据传输系统
JP3598495B2 (ja) * 1999-01-29 2004-12-08 株式会社 デジタルデザイン データ転送方法、コンピュータ読み取り可能な記録媒体及びデータ転送システム
CA2307155A1 (en) 2000-04-28 2001-10-28 Ibm Canada Limited-Ibm Canada Limitee Execution of database queries including filtering
JP4131514B2 (ja) 2003-04-21 2008-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークシステム、サーバ、データ処理方法及びプログラム
AU2004235104A1 (en) * 2003-04-25 2004-11-11 Thomson Reuters Global Resources Distributed search methods, architectures, systems, and software
US20050198437A1 (en) * 2004-03-08 2005-09-08 Mukherjee Shubhendu S. Method and system for coalescing coherence messages
JP2006209316A (ja) * 2005-01-26 2006-08-10 Nec Corp データベースアクセス管理システム、管理方法及びそのプログラム
KR100836619B1 (ko) * 2006-11-24 2008-06-10 엔에이치엔(주) P2p 시스템에서 피어 관리 서버 및 피어 관리 방법
JP2011171983A (ja) * 2010-02-18 2011-09-01 Sony Corp 情報処理装置、情報処理方法およびコンピュータ読み取り可能な記録媒体
JP5614340B2 (ja) * 2011-03-16 2014-10-29 富士通株式会社 システム、認証情報管理方法、およびプログラム
JP5652282B2 (ja) 2011-03-18 2015-01-14 富士通株式会社 検索制御プログラム、検索制御方法、検索システム

Also Published As

Publication number Publication date
JPH1040146A (ja) 1998-02-13

Similar Documents

Publication Publication Date Title
JP3747525B2 (ja) 並列データベースシステム検索方法
US7921416B2 (en) Formal language and translator for parallel processing of data
JP3742177B2 (ja) 並列データベースシステムルーチン実行方法
US7966311B2 (en) Systems and methods for processing queries
JP2755390B2 (ja) データベース処理装置及びデータベース処理方法
US7769789B2 (en) High performant row-level data manipulation using a data layer interface
US6256621B1 (en) Database management system and query operation therefor, including processing plural database operation requests based on key range of hash code
EP1240604B1 (en) A method and apparatus for improving the performance of a generated code cache search operation through the use of static key values
US6374236B1 (en) Parallel optimized triggers in parallel processing database systems
US6556988B2 (en) Database management apparatus and query operation therefor, including processing plural database operation requests based on key range of hash code
JPH1125096A (ja) データベースをサーチする方法およびコンピュータシステム
US20050256897A1 (en) Providing the timing of the last committed change to a row in a database table
US9171036B2 (en) Batching heterogeneous database commands
US6421666B1 (en) Mechanism for sharing ancillary data between a family of related functions
US11314736B2 (en) Group-by efficiency though functional dependencies and non-blocking aggregation functions
CN111581234B (zh) Rac多节点数据库查询方法、装置及系统
JP3808941B2 (ja) 並列データベースシステム通信回数削減方法
US11704317B2 (en) Partial group by for eager group by placement query plans
US6938036B2 (en) Query modification analysis
US6353819B1 (en) Method and system for using dynamically generated code to perform record management layer functions in a relational database manager
US6470331B1 (en) Very large table reduction in parallel processing database systems
JPH11134368A (ja) 言語管理プログラムインタフェース
US7974968B2 (en) Direct call threaded code
CN110119275A (zh) 一种分布式内存列式数据库编译执行器架构
US6438536B1 (en) Method and system for dynamically generating code to enhance the performance of a relational database manager that provides access to a relational database

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040316

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060516

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060519

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees