JP3742177B2 - 並列データベースシステムルーチン実行方法 - Google Patents
並列データベースシステムルーチン実行方法 Download PDFInfo
- Publication number
- JP3742177B2 JP3742177B2 JP04190797A JP4190797A JP3742177B2 JP 3742177 B2 JP3742177 B2 JP 3742177B2 JP 04190797 A JP04190797 A JP 04190797A JP 4190797 A JP4190797 A JP 4190797A JP 3742177 B2 JP3742177 B2 JP 3742177B2
- Authority
- JP
- Japan
- Prior art keywords
- database
- function
- execution
- routine
- query
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2443—Stored procedures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99935—Query augmenting and refining, e.g. inexact access
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、データベースを管理する並列データベースシステムルーチン実行方法に関し、特に、リレーショナルデータベース管理システムに適した問合せの並列処理に好適な問合せ処理方法に関する並列データベースシステムルーチン実行方法に適用して有効な技術に関するものである。
【0002】
【従来の技術】
従来、事務データ処理を中心にしてリレーショナルデータベース、主にSQLデータベースシステムの適用が進んでいる。
【0003】
初期のSQLでは、データの検索、更新、挿入、削除といったデータベース操作は、データベースサーバに対して1つずつ単独に実行を行なっていた。
【0004】
現在のSQLの仕様では、上記データベース操作を行なう命令の他に、代入や、IF、WHILE等の制御用の命令を加えて、一連の処理を手続き、または、関数という形で一まとめに名前を付けて定義することができる。尚、ここでは、手続きと関数をまとめてルーチンと呼んでいる。
【0005】
現在、標準化が行われているSQL3の標準化のDraftは、ISO/IEC JTC1/SC21/WG3 DBL-MCI-004、 ISO Working Draft Database Language SQL、 1996である。
【0006】
また、データベース管理システムのデータベースにアクセスするサーバは、ユーザアプリケーションであるクライアントからの要求を受取り、データベースにアクセスして結果を返しており、リレーショナルデータベースシステムにおいては、データを複数のデータベース処理サーバに分割して配置して並列にアクセスすることで性能の向上を図ることが容易である。
【0007】
この様な並列データベースシステムに対する要求は、データ量の増大にともなって強まってきており、その並列データベースシステムについては、例えばDeWitt、D.、et.al.:"Parallel Database Systems: The Future of High Performance Database Systems"、 CACM、 Vol.35、 No.6、 1992.に記載されている。
【0008】
前記従来の並列データベースシステムでは、クライアントのユーザアプリケーションプログラム(以下UAPと呼ぶことにする)からのデータベースに対する問い合わせを解析しコンパイルする機能や、各分割したデータに対する結果をまとめてクライアント等に返す機能を持つサーバ(フロントエンドサーバと呼ぶことにする)と、データが格納されるディスク装置にアクセスしデータの操作を行う機能を持つ複数のサーバ(データベース操作サーバと呼ぶことにする)を有しており、フロントエンドサーバとデータベース操作サーバは、高速な相互結合ネットワークで接続されている。
【0009】
また、並列化の為には、データの分割に対して複数のサーバを割り当てる他に、機能単位でサーバを割り当て、パイプライン的な並列化を行なうこともできる。この場合には、各サーバ機能毎に実行手順の指示が存在し、マルチスレッドで各実行手順を実行することで上記並列化が実現される。
【0010】
前記の様に並列データベースシステムでは、データの分割や、各機能に対して並列に実行が行われるが、パイプラインに流れるデータのやり取り等、各機能間では通信が行われる為、通信の負荷を少なくすることが1つの課題となる。
【0011】
次に、従来技術として、並列データベースシステムにおける手続きの実行について記述する。手続きの定義はCREATE PROCEDURE構文によって行われる。SQL3では、抽象データ型と呼ばれるユーザ定義の型を定義でき、その抽象データ型の定義構文の中でも手続きの定義を行なうことができる。
【0012】
手続きの定義文は、フロントエンドサーバで解析を行ない、処理方法や手順に対応する内部形式のコード(以下、実行手順指示と呼ぶことにする)を作成する。実行手順指示は、インタプリタで解釈実行するコードや、実行形式のコードである。実行手順指示は、手続きに関連する辞書情報として登録される。
【0013】
手続きの呼び出しは、C言語等で書かれたアプリケーションプログラムからのSQL文呼び出しとして、CALL文が用意されている。CALL文は、フロントエンドサーバで解析を行ない、CALL文に書かれた手続き名や引数に対応する実行手順指示を辞書情報から取り出し、その実行手順指示を実行する。
【0014】
手続きに記述した処理の中にデータの検索、更新、挿入、削除(以下、更新、挿入、削除問合せを含めて更新系問合せと呼ぶことにする)の様なデータベース操作が含まれている場合、データベース操作を行なう為の実行手順指示は、フロントエンドサーバ用のものと、操作を行なうデータが有るデータベース操作サーバ用のものが存在する。
【0015】
データベース操作サーバでは、実行手順指示に従い、各データベース操作サーバに分割されたデータへの操作を行ない、フロントエンドサーバでは、各データベース操作サーバで行なった操作の結果をまとめる実行手順指示が実行される。
【0016】
例として、検索のデータベース操作の場合、各データベース操作サーバでデータの検索を行ない、検索したデータをフロントエンドサーバに転送し、フロントエンドサーバでは転送された順にデータを受け取り使用する。
【0017】
ソート等の負荷のかかる処理を専用に行なうデータベース操作サーバを用意する場合は、そのデータベース操作サーバ用の実行手順指示も存在する。
【0018】
【発明が解決しようとする課題】
ところで、上記並列データベースシステムの構成で、検索、更新、挿入、削除等のデータベース操作文を解析し、各データベース操作サーバからの結果をまとめるサーバはフロントエンドサーバである。また、ユーザアプリケーションからの手続きの実行の場合、手続きの本体の実行は、フロントエンドサーバになる。
【0019】
手続きの本体にデータベース操作文が含まれる場合は、フロントエンドサーバで手続き本体を実行し、データベース操作文が存在すれば、そのままフロントエンドサーバで各データベース操作サーバからの結果をまとめて、手続きの実行を行なう。
【0020】
すなわち、手続き実行部と、データベース操作文実行部は同じフロントエンドサーバである。但し、実際にデータベース操作を行なっているのは、各データが分割されているデータベース操作サーバである。ここでデータベース操作文実行部といっているのは、各データベース操作サーバからの結果をまとめる部分(フロントエンド側)を指す。
【0021】
しかし、並列データベースシステムにおいて、データベース操作文に関数の実行が含まれる場合、関数呼び出し部は、データが分割されているデータベース操作サーバである。また、関数の本体にデータベース操作文が含まれる場合、そのデータベース操作文実行部はフロントエンドサーバである。
【0022】
前記従来の並列データベースシステムでは、関数の本体の実行は一部の機能を除いて手続きの本体の実行と共通であり、関数の実行部は手続きの実行部と同じフロントエンドサーバを用いることができる為、関数の呼び出し毎に、関数の呼び出し部(この場合データベース操作サーバ内)と関数の実行部(この場合フロントエンドサーバ内)の間で、実行要求等の通信が起こるという問題があった。問合せにもよるが、データの件数分の関数呼び出しが起きる可能性が有る為、その通信の回数は大きなものとなり得る。
【0023】
本発明の目的は、ルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能な技術を提供することにある。
【0024】
本発明の他の目的は、実行時までどのルーチンが実行されるか決定されない場合でもルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能な技術を提供することにある。
【0025】
本発明の他の目的は、ルーチンの呼び出しがネストして存在する場合であってもルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能な技術を提供することにある。
【0026】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面によって明かになるであろう。
【0027】
【課題を解決するための手段】
本願によって開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
【0028】
すなわち、並列データベースシステムルーチン実行方法において、分割データ側の問合せ実行部で呼び出されるルーチン(関数や手続き)に対してルーチンの本体にデータベース操作文を含まない場合に、ルーチン呼び出し側かつ分割データ側に有る、データベース操作文に対する処理を含まないルーチン実行部を選択して実行するものである。
【0029】
前記並列データベースシステムルーチン実行方法では、まず、本体にデータベース操作文(検索、更新系の問合せ)を含まないルーチンの実行部を分割データ側のルーチン呼び出し側に用意しておき、ルーチンの定義時にルーチンの本体にデータベース操作文が存在するかチェックを行ない、その結果の情報を、定義文を解析して作成する情報の1つとして格納しておく。
【0030】
次に、ルーチンの呼び出しを含む問合せ文の解析実行時に、そのデータベース操作文が存在するかのチェック情報を参照し、データベース操作文が存在しなければ、データベース操作文を含まないルーチンの実行部でそのルーチンを実行する。
【0031】
ルーチンの呼び出しとルーチンの実行部の間で通信が起こらないので、通信回数が大幅に削減され、データベース操作文を本体に含まないルーチンの実行で通信回数を小さくすることが可能である。
【0032】
また、ルーチン呼び出しに対して、どのルーチンが実行されるか実行時まで決定されない場合には、データベース操作文が存在するかのチェック情報を、ルーチンの本体を解析した結果の実行手順指示に付随する情報の1つとして設定しておくことで、実行時に決定したルーチンに対してデータベース操作文が存在するかチェックを行ない、ルーチンの実行部を選択することが可能である。
【0033】
データベース操作文無しのルーチン実行部で実行するルーチンまたは手続きの本体に、ルーチンの呼び出しがネストして存在する場合には、そのネストして呼ばれる方のルーチンに対してデータベース操作文が存在するかどうかのチェックを行う。
【0034】
この場合、ネストして呼ばれるルーチンの呼び出しは、データベース操作文無しのルーチン実行部側に有るので、ネストして呼ばれるルーチンの本体にデータベース操作文が存在するかのチェック情報により、データベース操作文が存在しなければ、データベース操作文を含まないルーチンの実行部で、そのルーチンを実行する。
【0035】
ネストして呼ばれるルーチンの呼び出しとルーチンの実行部の間で通信が起こらないので、通信回数が大幅に削減される。
【0036】
分割データ側で実行する問合せで呼ばれるルーチン(本体にデータベース操作文を含まない)の個数をn、問合せがアクセスするデータの個数をmとすると、従来の場合と、前記並列データベースシステムルーチン実行方法を適用する場合とで通信回数が以下の様になる。
【0037】
更に、問合せやルーチン呼び出しがループの中に存在する場合には、最大ループする回数分の積の通信回数となる。問合せがアクセスするデータの個数は、並列データベースシステムで扱う様な大規模データベースでは、数百、数千万になることが多い為、前記並列データベースシステムルーチン実行方法による効果は大変大きなものとなる。
【0038】
以上の様に、前記並列データベースシステムルーチン実行方法によれば、分割データ側で呼び出されるルーチンの本体にデータベース操作文を含まない場合、分割データ側に用意したルーチン実行部でルーチンを実行するので、ルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能である。
【0039】
【発明の実施の形態】
以下に、本発明の並列データベースシステムルーチン実行方法において、分割データ側の問合せ実行部で呼び出される関数に対して関数の本体にデータベース操作文を含まない場合に、関数呼び出し側かつ分割データ側に有る、データベース操作文に対する処理を含まないルーチン実行部を選択して実行する一実施形態の並列データベースシステムルーチン実行方法を実施する実施装置について説明する。
【0040】
図1は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概要を示す図である。図1において、11は解析部、12は定義文解析部、13はルーチン実行部、14はルーチン実行部、15は辞書情報格納部、101は関数定義文、102は関数定義情報、103は関数実行手順指示、104はデータベース操作文チェック情報、110はデータベース操作文有り状態、111はデータベース操作文無し状態である。
【0041】
図1に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置では、関数定義文101を解析する定義文解析部12、検索、更新系の問合せ文(以下、データベース操作文と呼ぶことにする)を本体に含む関数、手続きの実行部であるルーチン実行部13(以下、関数と手続きを合わせてルーチンと呼ぶ)、データベース操作文に対する処理を含まないルーチン実行部14、定義文を解析した結果を格納する辞書情報格納部15を有しており、データベース操作文を本体に含まないルーチン実行部14は、関数呼び出し側に存在している。
【0042】
関数定義文101は、解析部11に有る定義文解析部12で解析され、定義文解析部12は、関数定義情報102を作成する。
【0043】
関数定義文解析時には、関数の本体にデータベース操作文が存在するかどうかのチェックを行ない、関数定義情報102にはその結果であるデータベース操作文チェック情報104や、関数の本体を解析した結果である関数実行手順指示103が格納される。関数実行時には、関数実行手順指示103に従い関数の実行を行なう。
【0044】
データベース操作文チェック情報104により、データベース操作文有り状態110の場合は、関数の実行をデータベース操作文に対する処理を含むルーチン実行部13、データベース操作文無し状態111の場合は、関数の実行をデータベース操作文に対する処理を含まないルーチン実行部14で行なう。
【0045】
データベース操作文に対する処理を含まないルーチン実行部14は関数呼び出し側に存在し、本体にデータベース操作文が無い関数の実行には、関数呼び出しによる通信は起こらない為、通信回数を削減することができる。
【0046】
例では、関数と手続きの実行をルーチンの実行部としてまとめているが、関数実行部と手続き実行部が別に存在しても良い。また、関数のみに本実施形態の並列データベースシステムルーチン実行方法を適用する場合、手続き実行部が無い構成でも良い。また、データベース操作文に手続きを書ける様な拡張がなされた場合、手続きのみに本実施形態の並列データベースシステムルーチン実行方法を適用し、関数実行部が無い構成としても良い。
【0047】
図1は関数呼び出しの例であるが、手続きに関しても手続きの呼び出しが分割データ側である場合に対して同様に本実施形態の並列データベースシステムルーチン実行方法を問題無く適用できる。手続きの呼び出しが分割データ側になる場合とは、分割データ側のルーチン実行部14で実行する関数や手続きの本体に手続き呼び出しが有る場合である。
【0048】
手続きに適用する場合、関数定義文101は手続き定義文、関数定義情報102は手続き定義情報、関数実行手順指示103は手続き実行指示、関数実行時は手続き実行時となる。
【0049】
図2は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概略構成を示す図である。図2において、201は問合せ文、210〜212は処理プログラム、21は問合せ解析部、22は問合せ実行部、23は問合せ実行部、24はデータベース操作文実行部、25はデータベース操作文実行部である。
【0050】
図2に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置では、関数等の定義文である関数定義文101や、検索、更新系、手続き等の問合せ文201を解析する解析部11、定義文を解析した結果である辞書情報格納部15、問合せ文201を並列に実行した結果をまとめユーザアプリケーションに結果を返すフロントエンドの役割を行なう問合せ実行部22、分割されたデータに対して、データベース操作文の実行を行なう問合せ実行部23を有している。
【0051】
解析部11は、定義文解析部12、問合せ解析部21を有しており、フロントエンド側の問合せ実行部22は、ユーザアプリケーションからの手続きの実行や、データベース操作文に対する処理を含むルーチン実行部13、データベース操作文実行部24を有している。
【0052】
分割データ側の問合せ実行部23は、分割されたデータに対するデータベース操作文実行部25、データベース操作文に対する処理を含まないルーチン実行部14を有している。
【0053】
図1、図2等では辞書情報格納部15は解析部11からアクセスする様になっているが、定義情報の格納や検索を行なう辞書情報提供部を用意して、辞書情報格納場所へはその辞書情報提供部を介してアクセスする様にする構成でも、本実施形態の並列データベースシステムルーチン実行方法を問題無く適用できる。
【0054】
フロントエンド側のルーチン実行部13は、ユーザアプリケーションからの手続きの実行、フロントエンド側のルーチン実行部13で実行される関数や手続きの本体からの関数や手続きの実行、分割データ側の問合せ実行を行うデータベース操作文実行部25からのデータベース操作文を含む関数の実行、分割データ側のルーチン実行部13で実行される関数や手続きの本体からのデータベース操作文を含む関数や手続きの実行等に用いられる。
【0055】
フロントエンド側のデータベース操作文実行部24からの関数呼び出しを含む処理を想定する場合は、その関数実行もフロントエンド側のルーチン実行部13で行なう。
【0056】
フロントエンド側のデータベース操作文実行部24は、ユーザアプリケーションからのデータベース操作文の実行、フロントエンド側のルーチン実行部13からのデータベース操作文の実行等に用いられ、分割データ側のデータベース操作文の実行結果をまとめ、ユーザアプリケーション等に結果を返す役割をする。
【0057】
分割データ側のデータベース操作文実行部25は、ユーザアプリケーションからのデータベース操作文の実行、フロントエンド側のルーチン実行部13からのデータベース操作文の実行等に用いられ、各分割データに対する検索、更新系の処理等を行ない、結果をフロントエンド側のデータベース操作文実行部24に返す役割をする。
【0058】
分割データ側のルーチン実行部14は、分割データ側のデータベース操作文実行部25からの、データベース操作文を含まない関数の実行、分割データ側のルーチン実行部14からの、データベース操作文を含まない関数や手続きの実行等に用いられる。
【0059】
分割データ側のルーチン実行部14は、データベース操作文実行部25内で閉じた処理になっている為、図2ではデータベース操作文実行部25内に位置づけているが、分割データ側のルーチン実行部14と、データベース操作文実行部25を別プログラムとし、分割データ側のルーチン実行部14を別の目的で使用できる構成であっても良い。
【0060】
図3は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義文101の一例を示す図である。図3において、31はFUNCTION構文、301はSET文、302はIF文、303はSELECT文である。
【0061】
図3に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義文101では、データベース言語SQLのCREATE FUNCTION構文31で関数を定義しており、手続きの場合にはCREATE PROCEDURE構文で定義する。
【0062】
標準化が進んでいるSQL3では、ユーザ定義の型の定義文の中で、関数や手続きを定義することが可能であり、型の定義時に関数や手続きの解析を行なうことで、本実施形態の並列データベースシステムルーチン実行方法を問題無く適用できる。
【0063】
図3はfという名称の関数の定義であり、関数本体には、SET文301の様な代入や、IF文302やWHILE文の様な制御用の構文、SELECT文303の様なデータベース操作文を書くことができる。
【0064】
更新系の問合せには更新用のUPDATE文、削除用のDELETE文、データ挿入用のINSERT文が有る。ユーザアプリケーションからの問合せと同様な構文として、カーソルを定義し、検索、更新等を行なうことも可能である。
【0065】
図4は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ文201の一例を示す図である。図4において、401は呼び出し文である。
【0066】
図4に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ文201では、SELECT文303によるWHERE条件の1つに関数fの呼び出し文401があり、条件の評価順序によって、表personal_data_tableのデータ数もしくはweight_data > 50のデータ数回、関数fの呼び出しが起こる。
【0067】
並列データベースシステムの場合、数百、数千万のデータを想定する為、関数の呼び出し回数も膨大なものとなり得る。引数が同じ呼び出しについて同じ結果となることが保証される関数の場合、同じ引数の関数呼び出しを行なわない様にすることも考えられるが、特殊な場合を除き関数の呼び出しの回数は多い。
【0068】
図4の例では、問合せ文201はデータベース操作文である。問合せ文201が手続きの呼び出しである場合、その手続きの本体中のデータベース操作文内の関数呼び出しに対しても本実施形態の並列データベースシステムルーチン実行方法を適用できる。その場合、関数呼び出しを含むデータベース操作文の解析は、手続きの解析時となる。
【0069】
また、手続きの本体中でかつデータベース操作文以外からの関数や手続きの呼び出しに対しては、呼び出しとルーチン実行部13は同じ側にあり、データベース操作文の有る無しにかかわらず、もともと呼び出し毎の通信は起こらない。
【0070】
また、問合せ文201が手続きの呼び出しである場合、その手続き自体の呼び出しとルーチン実行部13は同じ側にあり、データベース操作文の有る無しにかかわらず、もともと呼び出し毎の通信は起こらない。
【0071】
図5は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義情報102の一例を示す図である。
【0072】
図5に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義情報102では、CREATE FUNCTION等で定義した関数を定義文解析部12で解析した結果の情報を表しており、一般に、名称に関する情報、パラメタや戻り値に関する情報等を含んでいる。
【0073】
本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置で必要とする定義情報は、関数実行手順指示103とデータベース操作文チェック情報104であり、他にどの様な情報が有るかは特に関係は無い。データベース操作文チェック情報104は、定義した関数の本体にデータベース操作文が存在するかどうかを表す情報であればどういう形式でも良い。例えば、存在すればON、存在しなければOFFのフラグ情報等で実現される。
【0074】
図3の例の場合、関数fの定義文の本体に、データベース操作文であるSELECT文303が含まれている為、データベース操作文チェック情報104はONになる。
【0075】
データベース操作文チェック情報104は、関数定義情報102では無く、関数実行手順指示103に含まれていても良い。関数実行手順指示103は、関数定義情報102に無くても、関数定義情報102と対応して取り出せる様になっていれば良い。例えば、関数定義情報102には、関数実行手順指示103の識別子があり関数定義情報102とは他の格納場所に格納すること等が考えられる。
【0076】
手続きの定義情報の場合も同様である。関数と手続きは、同じ形式の定義情報を使用し、種別を表す情報で手続きか関数かをわける方法を用いることもできる。
【0077】
図6は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数実行手順指示103の一例を示す図である。図6において、61は関数本体用実行手順指示、62及び63は検索用実行手順指示、64〜66は共通情報である。
【0078】
図6に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数実行手順指示103では、関数定義文101を解析した結果、IF文302やWHILE文等の制御用の構文や代入文等の実行手順指示や、手続きの呼び出しの実行手順指示や、データベース操作文の実行手順指示を含む関数本体用実行手順指示61が作成される。関数本体にデータベース操作文が有る場合、対応する検索用実行手順指示62及び63も作成する必要がある。
【0079】
図6の例は各構文を実行する為の指示と情報をインタプリタが解釈実行する例であるが、各構文を実行する実行形式のコードであっても良い。
【0080】
制御用の構文や代入文等に関数呼び出しが含まれる場合は、関数呼び出しの実行手順指示や情報が有る。手続きの呼び出しの実行手順指示や、関数呼び出しの実行手順指示が呼び出す手続きや関数の実行手順指示は別に存在し、呼び出し時に指示や情報に従い定義情報や定義情報のキャッシュから取り出し実行する。
【0081】
データベース操作文実行手順指示は、関数本体にSELECT文303等の検索問合せや、UPDATE文、DELETE文、INSERT文等の更新系問合せが有る場合にでき、実際に分割データに対する実行の検索用実行手順指示63と、各分割データに対する実行の結果をまとめるフロントエンド用の検索用実行手順指示62と対応している。
【0082】
各データベース操作文実行手順指示の実行用情報に、対応するフロントエンド用と分割データ用の検索用実行手順指示62及び63の情報があり、定義情報や定義情報のキャッシュからそのフロントエンド用と分割データ用の検索用実行手順指示62及び63を取り出し、対応する問合せ実行部22及び23に転送し実行する。
【0083】
関数本体用の関数本体用実行手順指示61や、検索用実行手順指示62及び63等の各まとまりの実行手順指示に、その実行に共通して使用する情報やその実行手順指示の実行に必要な情報として共通情報64〜66を用意する。共通して使用する情報や実行に必要な情報が無いならば、無くても良い。
【0084】
データベース操作文が関数や手続きの本体に存在するかどうかを表すデータベース操作文チェック情報104は、関数本体用実行手順指示61の共通情報64として置く方法が有る。
【0085】
標準化が進んでいるSQL3では、関数や手続きの呼び出しに対して、解析時に実行手順指示が一意に決定しないことがある。この場合、実行時に選択される実行手順指示によって、本体にデータベース操作文が有るか無いかが変わってしまう為、関数本体用実行手順指示61の共通情報64として置いておく。
【0086】
関数や手続きの呼び出しに対して、解析時に実行手順指示が一意に決まる保証があれば、関数本体用実行手順指示61の共通情報64で無く、関数定義情報102に直接置いておいても良い。
【0087】
また、一意に決まらない場合でも、実行時に呼び出される可能性のある関数と、データベース操作文が関数や手続きの本体に存在するかどうかを表すデータベース操作文チェック情報104との一覧表を関数定義情報102に作成しておく方法を用いても良い。
【0088】
図7は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の定義文解析部12の処理手順を示すフローチャートである。
【0089】
図7に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の定義文解析部12では、まず解析する定義文がルーチンの定義文であるか場合分けする(ステップ701)。ルーチンの定義文で無ければ、その定義文を解析して(ステップ713)、定義情報として辞書情報格納部15に登録を行なう(ステップ714)。
【0090】
ルーチン定義文である場合も、解析して(ステップ702)、定義情報として辞書情報格納部15に登録を行なうのは同じである。但し、ルーチンの場合、ルーチンの本体を解析し、実行手順指示を作成することが必要になる。
【0091】
まず、そのルーチンの実行に共通して使用する情報やその実行手順指示の実行に必要な情報として共通情報64を作成する(ステップ704)。データベース操作文チェックフラグの初期値としてOFFを共通情報64に設定する(ステップ705)。すなわち、データベース操作文は、まだ本体に見つかっていない状態である。
【0092】
ルーチンの本体を順々に解析し(ステップ706)、データベース操作文を含んでいれば(ステップ707)、データベース操作文チェックフラグをONにし(ステップ708)、そのデータベース操作文の実行手順指示(フロントエンド用と分割データ用)を作成し(ステップ709)、これらデータベース操作文の実行手順指示を転送し、起動する為の実行手順指示(本体用)を作成する(ステップ710)。
【0093】
データベース操作文を含んでいなければ、対応する実行手順指示(本体用)を作成する(ステップ710)。以下、ルーチン本体を順々に解析していく(ステップ711)。
【0094】
一通り実行手順指示作成が終了したら、作成したルーチン実行手順指示(本体用と、各データベース操作文のフロントエンド及び分割データ用)を辞書情報格納部15等に登録する(ステップ712)。
【0095】
図7の例では、ルーチン実行手順指示を定義文解析時に作成する方法を取っているが、ルーチンを使用する問合せの解析時に、ルーチン実行手順指示を作成する代案も適用できる。その場合、問合せの解析時のルーチン実行手順指示作成の時に、データベース操作文を含むかチェックを行ない情報を設定することで、問題無く適用できる。
【0096】
図7の例では、データベース操作文チェック情報104を関数本体用実行手順指示61の共通情報64に設定しているが、問合せ解析時に使用する定義情報として直接設定する代案も適用できる。
【0097】
また、データベース操作文チェック情報104は、ON、OFFのフラグ情報で無くても、データベース定義文がルーチン本体に含まれているかどうかを識別できる情報であれば良い。
【0098】
図8は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ解析部21の処理手順を示すフローチャートである。
【0099】
図8に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ解析部21では、まず解析する問合せがデータベース操作文であるか場合分けする(ステップ801)。データベース操作文で無ければ、対応する実行手順指示を作成する(ステップ806)。
【0100】
データベース操作文である場合も実行手順指示を作成するのは同じだが、データベース操作文の場合は、フロントエンド用実行手順指示と分割データ用実行手順指示を作成する(ステップ802及びステップ803)。
【0101】
また、ソート等特別な用途用の実行手順指示を別途作成する方法も有るが、その場合でも本実施形態の並列データベースシステムルーチン実行方法を適用できる。関数呼び出しが、特別な用途用の実行部で行われる場合、その実行部にデータベース操作文に対する処理を含まないルーチン実行部14を用意することで同様に適用できる。
【0102】
作成した実行手順指示は、各実行手順指示の実行部(フロントエンド側データベース操作文実行部24と分割データ側データベース操作文実行部25)に転送し(ステップ804)、実行要求を行なう(ステップ805)。
【0103】
図8は、問合せを解析し実行手順指示を作成して、転送し、そのまま実行要求を行なう例であるが、実行手順を作成して、別途転送や実行要求を行なう代案にも本実施形態の並列データベースシステムルーチン実行方法を問題無く適用できる。
【0104】
図8の例では、問合せ文201に関数呼び出しが有る場合でも、その関数の本体にデータベース操作文が有るかどうかデータベース操作文チェック情報104を参照していない。これは、解析時に呼び出す関数が一意に決定しないことを想定しているからである。
【0105】
解析時に呼び出す関数が一意に決まる場合は、解析時にデータベース操作文チェック情報104を参照し、OFFであれば、データベース操作文に対する処理を含まないルーチン実行部14で関数の実行を行なう実行手順指示(分割データ側)を作成しても良い。
【0106】
図9は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文の有るルーチン実行部13の処理手順を示すフローチャートである。
【0107】
図9に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文の有るルーチン実行部13では、ルーチンの実行要求に対応して、実行するルーチンの実行手順指示を取得する(ステップ901)。ルーチンの実行手順指示は辞書情報格納部15に存在するか、または、辞書情報格納部15の情報から取得できる。ルーチン実行部13に、ルーチン実行手順指示のキャッシュを置けば、2回目以降のルーチン呼び出し時は辞書情報格納部15にアクセスしなくて済む。
【0108】
ルーチン実行手順指示を順々に解釈し(ステップ902)、実行していく。データベース操作文の実行の場合(ステップ903)、実行手順指示(フロントエンド用、分割データ用)を取得し(ステップ904及びステップ905)、各実行手順指示を、対応する実行部(フロントエンド側のデータベース操作文実行部24、分割データ側のデータベース操作文実行部25)に転送し(ステップ906)、実行要求を行なう(ステップ907)。各実行部で実行手順指示が実行され、その結果を取得し(ステップ908)、後の処理等で用いる。
【0109】
データベース操作文でない場合は(ステップ903)、対応する実行手順指示に従い実行を行なう(ステップ909)。以下、実行手順指示を順々に解釈実行していく(ステップ910)。
【0110】
図10は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文に対する処理を含まないルーチン実行部14の処理手順を示すフローチャートである。
【0111】
図10に示す様に、本実施形態のデータベース操作文に対する処理を含まないルーチン実行部14では、データベース操作文の実行部分は必要無く、ルーチンの実行要求に対応して、実行するルーチンの実行手順指示を取得する(ステップ1001)。
【0112】
ルーチンの実行手順指示は辞書情報格納部15に存在するか、または、辞書情報格納部15の情報から取得できる。ルーチン実行部14に、ルーチン実行手順指示のキャッシュを置けば、2回目以降のルーチン呼び出し時は辞書情報格納部15にアクセスしなくて済む。
【0113】
分割データ側の問合せ実行部23は、分割データ毎に複数存在し、各分割データ側のルーチン実行部14から辞書情報格納部15へのアクセスが行われると辞書情報格納部15の負荷が大きいので、辞書情報格納部15へアクセスできる問合せ実行部23をフロントエンド側等に限定し、負荷分散を行なう代案も適用できる。
【0114】
ルーチン実行手順指示を順々に解釈し(ステップ1002)、対応する実行手順指示に従い実行を行なう(ステップ1003)。
【0115】
図11は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のフロントエンド側のデータベース操作文実行部24の処理手順を示すフローチャートである。
【0116】
図11に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のフロントエンド側のデータベース操作文実行部24では、分割データ側のデータベース操作文実行からの結果を順に受取っていく(ステップ1101)。
【0117】
次に、受取った順に結果を、ユーザアプリケーションプログラムや、ルーチン本体等、そのデータベース操作文を使用している場所に転送する(ステップ1102)。以下、各分割データ側から終了報告が来るまで結果のとりまとめ処理を行なう(ステップ1103)。
【0118】
図11の例では、分割データ側からの結果を来た順に転送するだけであるが、受取った結果をソートする処理や受取った結果に演算を行なう処理をフロントエンド側で行なう代案にも、本実施形態の並列データベースシステムルーチン実行方法を問題無く適用できる。
【0119】
図12は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の分割データ側のデータベース操作文実行部25の処理手順を示すフローチャートである。
【0120】
図12に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の分割データ側のデータベース操作文実行部25では、データベース操作文の実行手順指示を順々に解釈し(ステップ1201)、実行していく。関数呼び出しの場合(ステップ1202)、関数呼び出しに対応する関数実行手順指示103を一意に決定する(ステップ1203)。
【0121】
これは、問合せ解析時に関数呼び出しに対応する関数実行手順指示103が一意に決まらない場合を想定している。標準化が進んでいるSQL3では、問合せ解析時に関数呼び出しに対応する関数実行手順指示103が一意に決まらない場合が有り得る。問合せ解析時に関数呼び出しに対応する関数実行手順指示103が一意に決まる場合は、この処理(ステップ1203)は必要無い。
【0122】
次に、決定した関数の関数本体用実行手順指示61の共通情報64を取得し(ステップ1204)、データベース操作文を本体に含むかチェックする(ステップ1205)。
【0123】
共通情報64は、辞書情報格納部15に存在するか、または、辞書情報格納部15の情報から取得できる。共通情報64や関数実行手順指示103等のキャッシュが存在すれば、キャッシュから取得することも可能である。
【0124】
データベース操作文チェック情報104がOFFであれば、データベース操作文が本体に無い関数なので、データベース操作文に対する処理を含まないルーチン実行部14に関数の実行要求を行なう(ステップ1206)。
【0125】
データベース操作文チェック情報104がONであれば、データベース操作文が本体に有る関数なので、データベース操作文に対する処理を含むルーチン実行部13に関数の実行要求を行なう(ステップ1207)。
【0126】
ルーチン実行部13またはルーチン実行部14で関数実行手順指示103が実行され、その実行結果を取得し(ステップ1208)、後の処理等で用いる。
【0127】
関数呼び出しで無い場合は(ステップ1202)、対応する実行手順指示に従い実行を行なう(ステップ1209)。以下、実行手順指示を順々に解釈実行していく(ステップ1210)。
【0128】
図12の例では、データベース操作文チェック情報104は、共通情報64から取得する様になっているが、関数定義文解析時に設定したデータベース操作文チェック情報104を取得できる様に対応できていれば良い。
【0129】
また、データベース操作文チェック情報104は、ON、OFFのフラグ情報で無くても、データベース定義文がルーチン本体に含まれているかどうかを識別できる情報であれば良い。
【0130】
図13は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文に対する処理を含まないルーチン実行部14の実行手順指示実行の処理手順を示すフローチャートである。
【0131】
図13に示す様に、本実施形態のデータベース操作文に対する処理を含まないルーチン実行部14の実行手順指示実行では、図10に示したステップ1003の実行手順指示実行をより詳細に記している。図12では、関数の呼び出しについて本実施形態の並列データベースシステムルーチン実行方法を適用する例になっており、それに対して図13では、分割データ側で実行される関数から呼び出される手続きや関数に対しても適用できる。
【0132】
ルーチンの実行要求に対応して、実行するルーチンの実行手順指示を取得する(ステップ1001)。ルーチン実行手順指示を順々に解釈し(ステップ1002)、実行していく。
【0133】
ルーチン呼び出しの場合(ステップ1301)、ルーチン呼び出しに対応するルーチン(手続きまたは関数)実行手順指示を一意に決定する(ステップ1302)。次に、決定したルーチンの関数本体用実行手順指示61の共通情報64を取得し(ステップ1303)、データベース操作文を本体に含むかチェックする(ステップ1304)。
【0134】
データベース操作文チェック情報104がOFFであれば、データベース操作文が本体に無いルーチンなので、データベース操作文に対する処理を含まないルーチン実行部14にルーチンの実行要求を行なう(ステップ1305)。
【0135】
データベース操作文チェック情報104がONであれば、データベース操作文が本体に有るルーチンなので、データベース操作文に対する処理を含むルーチン実行部13にルーチンの実行要求を行なう(ステップ1306)。
【0136】
ルーチン実行部13またはルーチン実行部14でルーチン実行手順指示が実行され、その実行結果を取得し(ステップ1307)、後の処理等で用いる。
【0137】
ルーチン呼び出しで無い場合は(ステップ1301)、対応する実行手順指示に従い実行を行なう(ステップ1308)。以下、実行手順指示を順々に解釈実行していく(ステップ1004)。
【0138】
図14は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のより具体的な概略構成を示す図である。図14において、1401はフロントエンドサーバ、1402はデータベース操作サーバである。
【0139】
図14に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置では、図2をより具体的な並列データベースシステムに適用した例を表している。
【0140】
並列データベースシステムの構成としては、ユーザアプリケーションプログラム(以下UAPと呼ぶことにする)からのデータベースに対する問い合わせを解析しコンパイルするサーバであるフロントエンドサーバ1401と、データが格納されるディスク装置にアクセスしデータの操作を行う複数のサーバであるデータベース操作サーバ1402を有している。
【0141】
フロントエンドサーバ1401とデータベース操作サーバ1402は、高速な相互結合ネットワークで繋がっているものとする。但し、ネットワークで繋がる複数プロセッサの並列データベースシステムで無く、単一プロセッサのシステムでも、各サーバの役割として並列なプロセスを割り当てていれば、プロセス間の通信回数を減らすものとして、本実施形態の並列データベースシステムルーチン実行方法を適用可能である。
【0142】
データベース操作サーバ1402におけるプロセサとディスクやメモリとの関連に対して、プロセサ間でディスクを共用しない、shared−nothing型であっても、複数のプロセサでディスクを共用する、shared−disk型であっても、その他のshared型であっても、関数を呼び出す部分と、検索、更新系問合せを本体に含む関数を実行する部分で通信が起こる構成であれば、本実施形態の並列データベースシステムルーチン実行方法を適用できる。
【0143】
図14では、簡単の為、1つのUAP、1つのフロントエンドサーバ1401と複数のデータベース操作サーバ1402の構成で説明を行う。しかし、1つ、または、複数のUAPからの複数の問い合わせに対して、複数のフロントエンドサーバ1401が取り扱うことができる。
【0144】
この場合でも1つ1つの問い合わせに対しては、1つのUAP、1つのフロントエンドサーバ1401と複数のデータベース操作サーバ1402の構成であると見なすことが可能で、本実施形態の並列データベースシステムルーチン実行方法に問題無く適用される。
【0145】
コンパイルに必要な定義情報等はフロントエンドサーバ1401からアクセスできる辞書情報格納部15として存在する。辞書情報格納部15を提供するサーバ(ディクショナリサーバと呼ぶことにする)を用意しても良い。
【0146】
図14の並列データベースシステムの場合、解析部11とフロントエンド側問合せ実行部22をフロントエンドサーバ1401が有しており、分割データ側の問合せ実行部23をデータベース操作サーバ1402が有している。
【0147】
分割データ側の関数呼び出しはデータベース操作サーバ1402の方にあり、データベース操作文に対する処理を含むルーチン実行部13はフロントエンドサーバ1401の方に有る為、関数呼び出し毎の通信回数は大きくなり、本実施形態の並列データベースシステムルーチン実行方法の適用が有効である。
【0148】
並列データベースの構成に、ソート等の機能を専用に行なうサーバが有る場合、そのサーバの問合せ実行部23からの関数呼び出し等に対して、データベース操作文に対する処理を含まないルーチン実行部14を設けることで、同様に、本実施形態の並列データベースシステムルーチン実行方法を適用できる。
【0149】
並列データベースの構成として、図14のフロントエンドサーバ1401とデータベース操作サーバ1402の両方の機能を持つ複数のサーバ(多機能サーバと呼ぶことにする)を有している構成に対しても本実施形態の並列データベースシステムルーチン実行方法を適用可能である。
【0150】
多機能サーバ間は、高速な相互結合ネットワークで繋がっているものとする。但し、ネットワークで繋がる複数プロセッサの並列データベースシステムで無く、単一プロセッサのシステムでも、各サーバの役割として並列なプロセスを割り当てていれば、プロセス間の通信回数を減らすものとして、本実施形態の並列データベースシステムルーチン実行方法を適用可能である。
【0151】
上記、並列データベースの構成以外の構成でも、図2の構成に対応が取れる構成であれば、本実施形態の並列データベースシステムルーチン実行方法を適用可能である。
【0152】
図15は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の具体例を適用した概略構成を示す図である。
【0153】
図15に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置では、図14の構成図に、本実施形態の並列データベースシステムルーチン実行方法の具体例を適用した例を表している。関数gは本体にデータベース操作文を含まない関数であり、その為データベース操作文チェック情報104はOFFである。
【0154】
関数gの呼び出しg(c2)を含む問合せを解析し実行手順指示を作成し、フロントエンド側と各分割データ側のデータベース操作文実行部25で実行を行なう。分割データ側では、表t1の列データc1、c2をディスクから順に取り出し、g(c2)を実行しようとする。
【0155】
実行するgのデータベース操作文チェック情報104がOFFである為、gの実行は分割データ側のルーチン実行部14で行ない、関数実行毎の通信は起こらない。
【0156】
g(c2)の結果から条件評価を行ない、条件にあっているデータはフロントエンド側に転送する。フロントエンド側では、各分割データ側からの結果をまとめ、UAP問合せ側に結果を転送する。
【0157】
以上示したフローチャートの処理は、図2で例として示した並列データベースシステムにおける処理プログラム210〜212として実行される。しかし、そのプログラムは図2の例の様にコンピュータシステムに物理的に直接接続される外部記憶装置に格納されるものに限定されることはなく、ハードディスク装置、フロッピーディスク装置等のコンピュータで読み書きできる記憶媒体に格納することができる。
【0158】
以上説明した様に、本実施形態の並列データベースシステムルーチン実行方法によれば、分割データ側で呼び出されるルーチンの本体にデータベース操作文を含まない場合、分割データ側に用意したルーチン実行部でルーチンを実行するので、ルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能である。
【0159】
また、本実施形態の並列データベースシステムルーチン実行方法によれば、実行時にルーチンの本体にデータベース操作文が含まれるかどうかの情報を参照してルーチンを実行するルーチン実行部を選択するので、実行時までどのルーチンが実行されるか決定されない場合でもルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能である。
【0160】
また、本実施形態の並列データベースシステムルーチン実行方法によれば、当該ルーチンから呼び出される他のルーチンの本体にデータベース操作文が含まれるかどうかの情報も参照して当該ルーチンを実行するルーチン実行部を選択するので、ルーチンの呼び出しがネストして存在する場合であってもルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能である。
【0161】
以上、本発明を前記実施形態に基づき具体的に説明したが、本発明は、前記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【0162】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記のとおりである。
【0163】
すなわち、分割データ側で呼び出されるルーチンの本体にデータベース操作文を含まない場合、分割データ側に用意したルーチン実行部でルーチンを実行するので、ルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能である。
【図面の簡単な説明】
【図1】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概要を示す図である。
【図2】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概略構成を示す図である。
【図3】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義文101の一例を示す図である。
【図4】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ文201の一例を示す図である。
【図5】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義情報102の一例を示す図である。
【図6】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数実行手順指示103の一例を示す図である。
【図7】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の定義文解析部12の処理手順を示すフローチャートである。
【図8】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ解析部21の処理手順を示すフローチャートである。
【図9】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文の有るルーチン実行部13の処理手順を示すフローチャートである。
【図10】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文に対する処理を含まないルーチン実行部14の処理手順を示すフローチャートである。
【図11】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のフロントエンド側のデータベース操作文実行部24の処理手順を示すフローチャートである。
【図12】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の分割データ側のデータベース操作文実行部25の処理手順を示すフローチャートである。
【図13】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文に対する処理を含まないルーチン実行部14の実行手順指示実行の処理手順を示すフローチャートである。
【図14】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概略構成を示す図である。
【図15】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概略構成を示す図である。
【符号の説明】
11…解析部、12…定義文解析部、13…ルーチン実行部、14…ルーチン実行部、15…辞書情報格納部、101…関数定義文、102…関数定義情報、103…関数実行手順指示、104…データベース操作文チェック情報、110…データベース操作文有り状態、111…データベース操作文無し状態、201…問合せ文、210〜212…処理プログラム、21…問合せ解析部、22…問合せ実行部、23…問合せ実行部、24…データベース操作文実行部、25…データベース操作文実行部、31…FUNCTION構文、301…SET文、302…IF文、303…SELECT文、401…呼び出し文、61…関数本体用実行手順指示、62及び63…検索用実行手順指示、64〜66…共通情報、1401…フロントエンドサーバ、1402…データベース操作サーバ。
【発明の属する技術分野】
本発明は、データベースを管理する並列データベースシステムルーチン実行方法に関し、特に、リレーショナルデータベース管理システムに適した問合せの並列処理に好適な問合せ処理方法に関する並列データベースシステムルーチン実行方法に適用して有効な技術に関するものである。
【0002】
【従来の技術】
従来、事務データ処理を中心にしてリレーショナルデータベース、主にSQLデータベースシステムの適用が進んでいる。
【0003】
初期のSQLでは、データの検索、更新、挿入、削除といったデータベース操作は、データベースサーバに対して1つずつ単独に実行を行なっていた。
【0004】
現在のSQLの仕様では、上記データベース操作を行なう命令の他に、代入や、IF、WHILE等の制御用の命令を加えて、一連の処理を手続き、または、関数という形で一まとめに名前を付けて定義することができる。尚、ここでは、手続きと関数をまとめてルーチンと呼んでいる。
【0005】
現在、標準化が行われているSQL3の標準化のDraftは、ISO/IEC JTC1/SC21/WG3 DBL-MCI-004、 ISO Working Draft Database Language SQL、 1996である。
【0006】
また、データベース管理システムのデータベースにアクセスするサーバは、ユーザアプリケーションであるクライアントからの要求を受取り、データベースにアクセスして結果を返しており、リレーショナルデータベースシステムにおいては、データを複数のデータベース処理サーバに分割して配置して並列にアクセスすることで性能の向上を図ることが容易である。
【0007】
この様な並列データベースシステムに対する要求は、データ量の増大にともなって強まってきており、その並列データベースシステムについては、例えばDeWitt、D.、et.al.:"Parallel Database Systems: The Future of High Performance Database Systems"、 CACM、 Vol.35、 No.6、 1992.に記載されている。
【0008】
前記従来の並列データベースシステムでは、クライアントのユーザアプリケーションプログラム(以下UAPと呼ぶことにする)からのデータベースに対する問い合わせを解析しコンパイルする機能や、各分割したデータに対する結果をまとめてクライアント等に返す機能を持つサーバ(フロントエンドサーバと呼ぶことにする)と、データが格納されるディスク装置にアクセスしデータの操作を行う機能を持つ複数のサーバ(データベース操作サーバと呼ぶことにする)を有しており、フロントエンドサーバとデータベース操作サーバは、高速な相互結合ネットワークで接続されている。
【0009】
また、並列化の為には、データの分割に対して複数のサーバを割り当てる他に、機能単位でサーバを割り当て、パイプライン的な並列化を行なうこともできる。この場合には、各サーバ機能毎に実行手順の指示が存在し、マルチスレッドで各実行手順を実行することで上記並列化が実現される。
【0010】
前記の様に並列データベースシステムでは、データの分割や、各機能に対して並列に実行が行われるが、パイプラインに流れるデータのやり取り等、各機能間では通信が行われる為、通信の負荷を少なくすることが1つの課題となる。
【0011】
次に、従来技術として、並列データベースシステムにおける手続きの実行について記述する。手続きの定義はCREATE PROCEDURE構文によって行われる。SQL3では、抽象データ型と呼ばれるユーザ定義の型を定義でき、その抽象データ型の定義構文の中でも手続きの定義を行なうことができる。
【0012】
手続きの定義文は、フロントエンドサーバで解析を行ない、処理方法や手順に対応する内部形式のコード(以下、実行手順指示と呼ぶことにする)を作成する。実行手順指示は、インタプリタで解釈実行するコードや、実行形式のコードである。実行手順指示は、手続きに関連する辞書情報として登録される。
【0013】
手続きの呼び出しは、C言語等で書かれたアプリケーションプログラムからのSQL文呼び出しとして、CALL文が用意されている。CALL文は、フロントエンドサーバで解析を行ない、CALL文に書かれた手続き名や引数に対応する実行手順指示を辞書情報から取り出し、その実行手順指示を実行する。
【0014】
手続きに記述した処理の中にデータの検索、更新、挿入、削除(以下、更新、挿入、削除問合せを含めて更新系問合せと呼ぶことにする)の様なデータベース操作が含まれている場合、データベース操作を行なう為の実行手順指示は、フロントエンドサーバ用のものと、操作を行なうデータが有るデータベース操作サーバ用のものが存在する。
【0015】
データベース操作サーバでは、実行手順指示に従い、各データベース操作サーバに分割されたデータへの操作を行ない、フロントエンドサーバでは、各データベース操作サーバで行なった操作の結果をまとめる実行手順指示が実行される。
【0016】
例として、検索のデータベース操作の場合、各データベース操作サーバでデータの検索を行ない、検索したデータをフロントエンドサーバに転送し、フロントエンドサーバでは転送された順にデータを受け取り使用する。
【0017】
ソート等の負荷のかかる処理を専用に行なうデータベース操作サーバを用意する場合は、そのデータベース操作サーバ用の実行手順指示も存在する。
【0018】
【発明が解決しようとする課題】
ところで、上記並列データベースシステムの構成で、検索、更新、挿入、削除等のデータベース操作文を解析し、各データベース操作サーバからの結果をまとめるサーバはフロントエンドサーバである。また、ユーザアプリケーションからの手続きの実行の場合、手続きの本体の実行は、フロントエンドサーバになる。
【0019】
手続きの本体にデータベース操作文が含まれる場合は、フロントエンドサーバで手続き本体を実行し、データベース操作文が存在すれば、そのままフロントエンドサーバで各データベース操作サーバからの結果をまとめて、手続きの実行を行なう。
【0020】
すなわち、手続き実行部と、データベース操作文実行部は同じフロントエンドサーバである。但し、実際にデータベース操作を行なっているのは、各データが分割されているデータベース操作サーバである。ここでデータベース操作文実行部といっているのは、各データベース操作サーバからの結果をまとめる部分(フロントエンド側)を指す。
【0021】
しかし、並列データベースシステムにおいて、データベース操作文に関数の実行が含まれる場合、関数呼び出し部は、データが分割されているデータベース操作サーバである。また、関数の本体にデータベース操作文が含まれる場合、そのデータベース操作文実行部はフロントエンドサーバである。
【0022】
前記従来の並列データベースシステムでは、関数の本体の実行は一部の機能を除いて手続きの本体の実行と共通であり、関数の実行部は手続きの実行部と同じフロントエンドサーバを用いることができる為、関数の呼び出し毎に、関数の呼び出し部(この場合データベース操作サーバ内)と関数の実行部(この場合フロントエンドサーバ内)の間で、実行要求等の通信が起こるという問題があった。問合せにもよるが、データの件数分の関数呼び出しが起きる可能性が有る為、その通信の回数は大きなものとなり得る。
【0023】
本発明の目的は、ルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能な技術を提供することにある。
【0024】
本発明の他の目的は、実行時までどのルーチンが実行されるか決定されない場合でもルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能な技術を提供することにある。
【0025】
本発明の他の目的は、ルーチンの呼び出しがネストして存在する場合であってもルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能な技術を提供することにある。
【0026】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面によって明かになるであろう。
【0027】
【課題を解決するための手段】
本願によって開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
【0028】
すなわち、並列データベースシステムルーチン実行方法において、分割データ側の問合せ実行部で呼び出されるルーチン(関数や手続き)に対してルーチンの本体にデータベース操作文を含まない場合に、ルーチン呼び出し側かつ分割データ側に有る、データベース操作文に対する処理を含まないルーチン実行部を選択して実行するものである。
【0029】
前記並列データベースシステムルーチン実行方法では、まず、本体にデータベース操作文(検索、更新系の問合せ)を含まないルーチンの実行部を分割データ側のルーチン呼び出し側に用意しておき、ルーチンの定義時にルーチンの本体にデータベース操作文が存在するかチェックを行ない、その結果の情報を、定義文を解析して作成する情報の1つとして格納しておく。
【0030】
次に、ルーチンの呼び出しを含む問合せ文の解析実行時に、そのデータベース操作文が存在するかのチェック情報を参照し、データベース操作文が存在しなければ、データベース操作文を含まないルーチンの実行部でそのルーチンを実行する。
【0031】
ルーチンの呼び出しとルーチンの実行部の間で通信が起こらないので、通信回数が大幅に削減され、データベース操作文を本体に含まないルーチンの実行で通信回数を小さくすることが可能である。
【0032】
また、ルーチン呼び出しに対して、どのルーチンが実行されるか実行時まで決定されない場合には、データベース操作文が存在するかのチェック情報を、ルーチンの本体を解析した結果の実行手順指示に付随する情報の1つとして設定しておくことで、実行時に決定したルーチンに対してデータベース操作文が存在するかチェックを行ない、ルーチンの実行部を選択することが可能である。
【0033】
データベース操作文無しのルーチン実行部で実行するルーチンまたは手続きの本体に、ルーチンの呼び出しがネストして存在する場合には、そのネストして呼ばれる方のルーチンに対してデータベース操作文が存在するかどうかのチェックを行う。
【0034】
この場合、ネストして呼ばれるルーチンの呼び出しは、データベース操作文無しのルーチン実行部側に有るので、ネストして呼ばれるルーチンの本体にデータベース操作文が存在するかのチェック情報により、データベース操作文が存在しなければ、データベース操作文を含まないルーチンの実行部で、そのルーチンを実行する。
【0035】
ネストして呼ばれるルーチンの呼び出しとルーチンの実行部の間で通信が起こらないので、通信回数が大幅に削減される。
【0036】
分割データ側で実行する問合せで呼ばれるルーチン(本体にデータベース操作文を含まない)の個数をn、問合せがアクセスするデータの個数をmとすると、従来の場合と、前記並列データベースシステムルーチン実行方法を適用する場合とで通信回数が以下の様になる。
【0037】
更に、問合せやルーチン呼び出しがループの中に存在する場合には、最大ループする回数分の積の通信回数となる。問合せがアクセスするデータの個数は、並列データベースシステムで扱う様な大規模データベースでは、数百、数千万になることが多い為、前記並列データベースシステムルーチン実行方法による効果は大変大きなものとなる。
【0038】
以上の様に、前記並列データベースシステムルーチン実行方法によれば、分割データ側で呼び出されるルーチンの本体にデータベース操作文を含まない場合、分割データ側に用意したルーチン実行部でルーチンを実行するので、ルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能である。
【0039】
【発明の実施の形態】
以下に、本発明の並列データベースシステムルーチン実行方法において、分割データ側の問合せ実行部で呼び出される関数に対して関数の本体にデータベース操作文を含まない場合に、関数呼び出し側かつ分割データ側に有る、データベース操作文に対する処理を含まないルーチン実行部を選択して実行する一実施形態の並列データベースシステムルーチン実行方法を実施する実施装置について説明する。
【0040】
図1は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概要を示す図である。図1において、11は解析部、12は定義文解析部、13はルーチン実行部、14はルーチン実行部、15は辞書情報格納部、101は関数定義文、102は関数定義情報、103は関数実行手順指示、104はデータベース操作文チェック情報、110はデータベース操作文有り状態、111はデータベース操作文無し状態である。
【0041】
図1に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置では、関数定義文101を解析する定義文解析部12、検索、更新系の問合せ文(以下、データベース操作文と呼ぶことにする)を本体に含む関数、手続きの実行部であるルーチン実行部13(以下、関数と手続きを合わせてルーチンと呼ぶ)、データベース操作文に対する処理を含まないルーチン実行部14、定義文を解析した結果を格納する辞書情報格納部15を有しており、データベース操作文を本体に含まないルーチン実行部14は、関数呼び出し側に存在している。
【0042】
関数定義文101は、解析部11に有る定義文解析部12で解析され、定義文解析部12は、関数定義情報102を作成する。
【0043】
関数定義文解析時には、関数の本体にデータベース操作文が存在するかどうかのチェックを行ない、関数定義情報102にはその結果であるデータベース操作文チェック情報104や、関数の本体を解析した結果である関数実行手順指示103が格納される。関数実行時には、関数実行手順指示103に従い関数の実行を行なう。
【0044】
データベース操作文チェック情報104により、データベース操作文有り状態110の場合は、関数の実行をデータベース操作文に対する処理を含むルーチン実行部13、データベース操作文無し状態111の場合は、関数の実行をデータベース操作文に対する処理を含まないルーチン実行部14で行なう。
【0045】
データベース操作文に対する処理を含まないルーチン実行部14は関数呼び出し側に存在し、本体にデータベース操作文が無い関数の実行には、関数呼び出しによる通信は起こらない為、通信回数を削減することができる。
【0046】
例では、関数と手続きの実行をルーチンの実行部としてまとめているが、関数実行部と手続き実行部が別に存在しても良い。また、関数のみに本実施形態の並列データベースシステムルーチン実行方法を適用する場合、手続き実行部が無い構成でも良い。また、データベース操作文に手続きを書ける様な拡張がなされた場合、手続きのみに本実施形態の並列データベースシステムルーチン実行方法を適用し、関数実行部が無い構成としても良い。
【0047】
図1は関数呼び出しの例であるが、手続きに関しても手続きの呼び出しが分割データ側である場合に対して同様に本実施形態の並列データベースシステムルーチン実行方法を問題無く適用できる。手続きの呼び出しが分割データ側になる場合とは、分割データ側のルーチン実行部14で実行する関数や手続きの本体に手続き呼び出しが有る場合である。
【0048】
手続きに適用する場合、関数定義文101は手続き定義文、関数定義情報102は手続き定義情報、関数実行手順指示103は手続き実行指示、関数実行時は手続き実行時となる。
【0049】
図2は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概略構成を示す図である。図2において、201は問合せ文、210〜212は処理プログラム、21は問合せ解析部、22は問合せ実行部、23は問合せ実行部、24はデータベース操作文実行部、25はデータベース操作文実行部である。
【0050】
図2に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置では、関数等の定義文である関数定義文101や、検索、更新系、手続き等の問合せ文201を解析する解析部11、定義文を解析した結果である辞書情報格納部15、問合せ文201を並列に実行した結果をまとめユーザアプリケーションに結果を返すフロントエンドの役割を行なう問合せ実行部22、分割されたデータに対して、データベース操作文の実行を行なう問合せ実行部23を有している。
【0051】
解析部11は、定義文解析部12、問合せ解析部21を有しており、フロントエンド側の問合せ実行部22は、ユーザアプリケーションからの手続きの実行や、データベース操作文に対する処理を含むルーチン実行部13、データベース操作文実行部24を有している。
【0052】
分割データ側の問合せ実行部23は、分割されたデータに対するデータベース操作文実行部25、データベース操作文に対する処理を含まないルーチン実行部14を有している。
【0053】
図1、図2等では辞書情報格納部15は解析部11からアクセスする様になっているが、定義情報の格納や検索を行なう辞書情報提供部を用意して、辞書情報格納場所へはその辞書情報提供部を介してアクセスする様にする構成でも、本実施形態の並列データベースシステムルーチン実行方法を問題無く適用できる。
【0054】
フロントエンド側のルーチン実行部13は、ユーザアプリケーションからの手続きの実行、フロントエンド側のルーチン実行部13で実行される関数や手続きの本体からの関数や手続きの実行、分割データ側の問合せ実行を行うデータベース操作文実行部25からのデータベース操作文を含む関数の実行、分割データ側のルーチン実行部13で実行される関数や手続きの本体からのデータベース操作文を含む関数や手続きの実行等に用いられる。
【0055】
フロントエンド側のデータベース操作文実行部24からの関数呼び出しを含む処理を想定する場合は、その関数実行もフロントエンド側のルーチン実行部13で行なう。
【0056】
フロントエンド側のデータベース操作文実行部24は、ユーザアプリケーションからのデータベース操作文の実行、フロントエンド側のルーチン実行部13からのデータベース操作文の実行等に用いられ、分割データ側のデータベース操作文の実行結果をまとめ、ユーザアプリケーション等に結果を返す役割をする。
【0057】
分割データ側のデータベース操作文実行部25は、ユーザアプリケーションからのデータベース操作文の実行、フロントエンド側のルーチン実行部13からのデータベース操作文の実行等に用いられ、各分割データに対する検索、更新系の処理等を行ない、結果をフロントエンド側のデータベース操作文実行部24に返す役割をする。
【0058】
分割データ側のルーチン実行部14は、分割データ側のデータベース操作文実行部25からの、データベース操作文を含まない関数の実行、分割データ側のルーチン実行部14からの、データベース操作文を含まない関数や手続きの実行等に用いられる。
【0059】
分割データ側のルーチン実行部14は、データベース操作文実行部25内で閉じた処理になっている為、図2ではデータベース操作文実行部25内に位置づけているが、分割データ側のルーチン実行部14と、データベース操作文実行部25を別プログラムとし、分割データ側のルーチン実行部14を別の目的で使用できる構成であっても良い。
【0060】
図3は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義文101の一例を示す図である。図3において、31はFUNCTION構文、301はSET文、302はIF文、303はSELECT文である。
【0061】
図3に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義文101では、データベース言語SQLのCREATE FUNCTION構文31で関数を定義しており、手続きの場合にはCREATE PROCEDURE構文で定義する。
【0062】
標準化が進んでいるSQL3では、ユーザ定義の型の定義文の中で、関数や手続きを定義することが可能であり、型の定義時に関数や手続きの解析を行なうことで、本実施形態の並列データベースシステムルーチン実行方法を問題無く適用できる。
【0063】
図3はfという名称の関数の定義であり、関数本体には、SET文301の様な代入や、IF文302やWHILE文の様な制御用の構文、SELECT文303の様なデータベース操作文を書くことができる。
【0064】
更新系の問合せには更新用のUPDATE文、削除用のDELETE文、データ挿入用のINSERT文が有る。ユーザアプリケーションからの問合せと同様な構文として、カーソルを定義し、検索、更新等を行なうことも可能である。
【0065】
図4は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ文201の一例を示す図である。図4において、401は呼び出し文である。
【0066】
図4に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ文201では、SELECT文303によるWHERE条件の1つに関数fの呼び出し文401があり、条件の評価順序によって、表personal_data_tableのデータ数もしくはweight_data > 50のデータ数回、関数fの呼び出しが起こる。
【0067】
並列データベースシステムの場合、数百、数千万のデータを想定する為、関数の呼び出し回数も膨大なものとなり得る。引数が同じ呼び出しについて同じ結果となることが保証される関数の場合、同じ引数の関数呼び出しを行なわない様にすることも考えられるが、特殊な場合を除き関数の呼び出しの回数は多い。
【0068】
図4の例では、問合せ文201はデータベース操作文である。問合せ文201が手続きの呼び出しである場合、その手続きの本体中のデータベース操作文内の関数呼び出しに対しても本実施形態の並列データベースシステムルーチン実行方法を適用できる。その場合、関数呼び出しを含むデータベース操作文の解析は、手続きの解析時となる。
【0069】
また、手続きの本体中でかつデータベース操作文以外からの関数や手続きの呼び出しに対しては、呼び出しとルーチン実行部13は同じ側にあり、データベース操作文の有る無しにかかわらず、もともと呼び出し毎の通信は起こらない。
【0070】
また、問合せ文201が手続きの呼び出しである場合、その手続き自体の呼び出しとルーチン実行部13は同じ側にあり、データベース操作文の有る無しにかかわらず、もともと呼び出し毎の通信は起こらない。
【0071】
図5は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義情報102の一例を示す図である。
【0072】
図5に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義情報102では、CREATE FUNCTION等で定義した関数を定義文解析部12で解析した結果の情報を表しており、一般に、名称に関する情報、パラメタや戻り値に関する情報等を含んでいる。
【0073】
本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置で必要とする定義情報は、関数実行手順指示103とデータベース操作文チェック情報104であり、他にどの様な情報が有るかは特に関係は無い。データベース操作文チェック情報104は、定義した関数の本体にデータベース操作文が存在するかどうかを表す情報であればどういう形式でも良い。例えば、存在すればON、存在しなければOFFのフラグ情報等で実現される。
【0074】
図3の例の場合、関数fの定義文の本体に、データベース操作文であるSELECT文303が含まれている為、データベース操作文チェック情報104はONになる。
【0075】
データベース操作文チェック情報104は、関数定義情報102では無く、関数実行手順指示103に含まれていても良い。関数実行手順指示103は、関数定義情報102に無くても、関数定義情報102と対応して取り出せる様になっていれば良い。例えば、関数定義情報102には、関数実行手順指示103の識別子があり関数定義情報102とは他の格納場所に格納すること等が考えられる。
【0076】
手続きの定義情報の場合も同様である。関数と手続きは、同じ形式の定義情報を使用し、種別を表す情報で手続きか関数かをわける方法を用いることもできる。
【0077】
図6は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数実行手順指示103の一例を示す図である。図6において、61は関数本体用実行手順指示、62及び63は検索用実行手順指示、64〜66は共通情報である。
【0078】
図6に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数実行手順指示103では、関数定義文101を解析した結果、IF文302やWHILE文等の制御用の構文や代入文等の実行手順指示や、手続きの呼び出しの実行手順指示や、データベース操作文の実行手順指示を含む関数本体用実行手順指示61が作成される。関数本体にデータベース操作文が有る場合、対応する検索用実行手順指示62及び63も作成する必要がある。
【0079】
図6の例は各構文を実行する為の指示と情報をインタプリタが解釈実行する例であるが、各構文を実行する実行形式のコードであっても良い。
【0080】
制御用の構文や代入文等に関数呼び出しが含まれる場合は、関数呼び出しの実行手順指示や情報が有る。手続きの呼び出しの実行手順指示や、関数呼び出しの実行手順指示が呼び出す手続きや関数の実行手順指示は別に存在し、呼び出し時に指示や情報に従い定義情報や定義情報のキャッシュから取り出し実行する。
【0081】
データベース操作文実行手順指示は、関数本体にSELECT文303等の検索問合せや、UPDATE文、DELETE文、INSERT文等の更新系問合せが有る場合にでき、実際に分割データに対する実行の検索用実行手順指示63と、各分割データに対する実行の結果をまとめるフロントエンド用の検索用実行手順指示62と対応している。
【0082】
各データベース操作文実行手順指示の実行用情報に、対応するフロントエンド用と分割データ用の検索用実行手順指示62及び63の情報があり、定義情報や定義情報のキャッシュからそのフロントエンド用と分割データ用の検索用実行手順指示62及び63を取り出し、対応する問合せ実行部22及び23に転送し実行する。
【0083】
関数本体用の関数本体用実行手順指示61や、検索用実行手順指示62及び63等の各まとまりの実行手順指示に、その実行に共通して使用する情報やその実行手順指示の実行に必要な情報として共通情報64〜66を用意する。共通して使用する情報や実行に必要な情報が無いならば、無くても良い。
【0084】
データベース操作文が関数や手続きの本体に存在するかどうかを表すデータベース操作文チェック情報104は、関数本体用実行手順指示61の共通情報64として置く方法が有る。
【0085】
標準化が進んでいるSQL3では、関数や手続きの呼び出しに対して、解析時に実行手順指示が一意に決定しないことがある。この場合、実行時に選択される実行手順指示によって、本体にデータベース操作文が有るか無いかが変わってしまう為、関数本体用実行手順指示61の共通情報64として置いておく。
【0086】
関数や手続きの呼び出しに対して、解析時に実行手順指示が一意に決まる保証があれば、関数本体用実行手順指示61の共通情報64で無く、関数定義情報102に直接置いておいても良い。
【0087】
また、一意に決まらない場合でも、実行時に呼び出される可能性のある関数と、データベース操作文が関数や手続きの本体に存在するかどうかを表すデータベース操作文チェック情報104との一覧表を関数定義情報102に作成しておく方法を用いても良い。
【0088】
図7は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の定義文解析部12の処理手順を示すフローチャートである。
【0089】
図7に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の定義文解析部12では、まず解析する定義文がルーチンの定義文であるか場合分けする(ステップ701)。ルーチンの定義文で無ければ、その定義文を解析して(ステップ713)、定義情報として辞書情報格納部15に登録を行なう(ステップ714)。
【0090】
ルーチン定義文である場合も、解析して(ステップ702)、定義情報として辞書情報格納部15に登録を行なうのは同じである。但し、ルーチンの場合、ルーチンの本体を解析し、実行手順指示を作成することが必要になる。
【0091】
まず、そのルーチンの実行に共通して使用する情報やその実行手順指示の実行に必要な情報として共通情報64を作成する(ステップ704)。データベース操作文チェックフラグの初期値としてOFFを共通情報64に設定する(ステップ705)。すなわち、データベース操作文は、まだ本体に見つかっていない状態である。
【0092】
ルーチンの本体を順々に解析し(ステップ706)、データベース操作文を含んでいれば(ステップ707)、データベース操作文チェックフラグをONにし(ステップ708)、そのデータベース操作文の実行手順指示(フロントエンド用と分割データ用)を作成し(ステップ709)、これらデータベース操作文の実行手順指示を転送し、起動する為の実行手順指示(本体用)を作成する(ステップ710)。
【0093】
データベース操作文を含んでいなければ、対応する実行手順指示(本体用)を作成する(ステップ710)。以下、ルーチン本体を順々に解析していく(ステップ711)。
【0094】
一通り実行手順指示作成が終了したら、作成したルーチン実行手順指示(本体用と、各データベース操作文のフロントエンド及び分割データ用)を辞書情報格納部15等に登録する(ステップ712)。
【0095】
図7の例では、ルーチン実行手順指示を定義文解析時に作成する方法を取っているが、ルーチンを使用する問合せの解析時に、ルーチン実行手順指示を作成する代案も適用できる。その場合、問合せの解析時のルーチン実行手順指示作成の時に、データベース操作文を含むかチェックを行ない情報を設定することで、問題無く適用できる。
【0096】
図7の例では、データベース操作文チェック情報104を関数本体用実行手順指示61の共通情報64に設定しているが、問合せ解析時に使用する定義情報として直接設定する代案も適用できる。
【0097】
また、データベース操作文チェック情報104は、ON、OFFのフラグ情報で無くても、データベース定義文がルーチン本体に含まれているかどうかを識別できる情報であれば良い。
【0098】
図8は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ解析部21の処理手順を示すフローチャートである。
【0099】
図8に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ解析部21では、まず解析する問合せがデータベース操作文であるか場合分けする(ステップ801)。データベース操作文で無ければ、対応する実行手順指示を作成する(ステップ806)。
【0100】
データベース操作文である場合も実行手順指示を作成するのは同じだが、データベース操作文の場合は、フロントエンド用実行手順指示と分割データ用実行手順指示を作成する(ステップ802及びステップ803)。
【0101】
また、ソート等特別な用途用の実行手順指示を別途作成する方法も有るが、その場合でも本実施形態の並列データベースシステムルーチン実行方法を適用できる。関数呼び出しが、特別な用途用の実行部で行われる場合、その実行部にデータベース操作文に対する処理を含まないルーチン実行部14を用意することで同様に適用できる。
【0102】
作成した実行手順指示は、各実行手順指示の実行部(フロントエンド側データベース操作文実行部24と分割データ側データベース操作文実行部25)に転送し(ステップ804)、実行要求を行なう(ステップ805)。
【0103】
図8は、問合せを解析し実行手順指示を作成して、転送し、そのまま実行要求を行なう例であるが、実行手順を作成して、別途転送や実行要求を行なう代案にも本実施形態の並列データベースシステムルーチン実行方法を問題無く適用できる。
【0104】
図8の例では、問合せ文201に関数呼び出しが有る場合でも、その関数の本体にデータベース操作文が有るかどうかデータベース操作文チェック情報104を参照していない。これは、解析時に呼び出す関数が一意に決定しないことを想定しているからである。
【0105】
解析時に呼び出す関数が一意に決まる場合は、解析時にデータベース操作文チェック情報104を参照し、OFFであれば、データベース操作文に対する処理を含まないルーチン実行部14で関数の実行を行なう実行手順指示(分割データ側)を作成しても良い。
【0106】
図9は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文の有るルーチン実行部13の処理手順を示すフローチャートである。
【0107】
図9に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文の有るルーチン実行部13では、ルーチンの実行要求に対応して、実行するルーチンの実行手順指示を取得する(ステップ901)。ルーチンの実行手順指示は辞書情報格納部15に存在するか、または、辞書情報格納部15の情報から取得できる。ルーチン実行部13に、ルーチン実行手順指示のキャッシュを置けば、2回目以降のルーチン呼び出し時は辞書情報格納部15にアクセスしなくて済む。
【0108】
ルーチン実行手順指示を順々に解釈し(ステップ902)、実行していく。データベース操作文の実行の場合(ステップ903)、実行手順指示(フロントエンド用、分割データ用)を取得し(ステップ904及びステップ905)、各実行手順指示を、対応する実行部(フロントエンド側のデータベース操作文実行部24、分割データ側のデータベース操作文実行部25)に転送し(ステップ906)、実行要求を行なう(ステップ907)。各実行部で実行手順指示が実行され、その結果を取得し(ステップ908)、後の処理等で用いる。
【0109】
データベース操作文でない場合は(ステップ903)、対応する実行手順指示に従い実行を行なう(ステップ909)。以下、実行手順指示を順々に解釈実行していく(ステップ910)。
【0110】
図10は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文に対する処理を含まないルーチン実行部14の処理手順を示すフローチャートである。
【0111】
図10に示す様に、本実施形態のデータベース操作文に対する処理を含まないルーチン実行部14では、データベース操作文の実行部分は必要無く、ルーチンの実行要求に対応して、実行するルーチンの実行手順指示を取得する(ステップ1001)。
【0112】
ルーチンの実行手順指示は辞書情報格納部15に存在するか、または、辞書情報格納部15の情報から取得できる。ルーチン実行部14に、ルーチン実行手順指示のキャッシュを置けば、2回目以降のルーチン呼び出し時は辞書情報格納部15にアクセスしなくて済む。
【0113】
分割データ側の問合せ実行部23は、分割データ毎に複数存在し、各分割データ側のルーチン実行部14から辞書情報格納部15へのアクセスが行われると辞書情報格納部15の負荷が大きいので、辞書情報格納部15へアクセスできる問合せ実行部23をフロントエンド側等に限定し、負荷分散を行なう代案も適用できる。
【0114】
ルーチン実行手順指示を順々に解釈し(ステップ1002)、対応する実行手順指示に従い実行を行なう(ステップ1003)。
【0115】
図11は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のフロントエンド側のデータベース操作文実行部24の処理手順を示すフローチャートである。
【0116】
図11に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のフロントエンド側のデータベース操作文実行部24では、分割データ側のデータベース操作文実行からの結果を順に受取っていく(ステップ1101)。
【0117】
次に、受取った順に結果を、ユーザアプリケーションプログラムや、ルーチン本体等、そのデータベース操作文を使用している場所に転送する(ステップ1102)。以下、各分割データ側から終了報告が来るまで結果のとりまとめ処理を行なう(ステップ1103)。
【0118】
図11の例では、分割データ側からの結果を来た順に転送するだけであるが、受取った結果をソートする処理や受取った結果に演算を行なう処理をフロントエンド側で行なう代案にも、本実施形態の並列データベースシステムルーチン実行方法を問題無く適用できる。
【0119】
図12は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の分割データ側のデータベース操作文実行部25の処理手順を示すフローチャートである。
【0120】
図12に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の分割データ側のデータベース操作文実行部25では、データベース操作文の実行手順指示を順々に解釈し(ステップ1201)、実行していく。関数呼び出しの場合(ステップ1202)、関数呼び出しに対応する関数実行手順指示103を一意に決定する(ステップ1203)。
【0121】
これは、問合せ解析時に関数呼び出しに対応する関数実行手順指示103が一意に決まらない場合を想定している。標準化が進んでいるSQL3では、問合せ解析時に関数呼び出しに対応する関数実行手順指示103が一意に決まらない場合が有り得る。問合せ解析時に関数呼び出しに対応する関数実行手順指示103が一意に決まる場合は、この処理(ステップ1203)は必要無い。
【0122】
次に、決定した関数の関数本体用実行手順指示61の共通情報64を取得し(ステップ1204)、データベース操作文を本体に含むかチェックする(ステップ1205)。
【0123】
共通情報64は、辞書情報格納部15に存在するか、または、辞書情報格納部15の情報から取得できる。共通情報64や関数実行手順指示103等のキャッシュが存在すれば、キャッシュから取得することも可能である。
【0124】
データベース操作文チェック情報104がOFFであれば、データベース操作文が本体に無い関数なので、データベース操作文に対する処理を含まないルーチン実行部14に関数の実行要求を行なう(ステップ1206)。
【0125】
データベース操作文チェック情報104がONであれば、データベース操作文が本体に有る関数なので、データベース操作文に対する処理を含むルーチン実行部13に関数の実行要求を行なう(ステップ1207)。
【0126】
ルーチン実行部13またはルーチン実行部14で関数実行手順指示103が実行され、その実行結果を取得し(ステップ1208)、後の処理等で用いる。
【0127】
関数呼び出しで無い場合は(ステップ1202)、対応する実行手順指示に従い実行を行なう(ステップ1209)。以下、実行手順指示を順々に解釈実行していく(ステップ1210)。
【0128】
図12の例では、データベース操作文チェック情報104は、共通情報64から取得する様になっているが、関数定義文解析時に設定したデータベース操作文チェック情報104を取得できる様に対応できていれば良い。
【0129】
また、データベース操作文チェック情報104は、ON、OFFのフラグ情報で無くても、データベース定義文がルーチン本体に含まれているかどうかを識別できる情報であれば良い。
【0130】
図13は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文に対する処理を含まないルーチン実行部14の実行手順指示実行の処理手順を示すフローチャートである。
【0131】
図13に示す様に、本実施形態のデータベース操作文に対する処理を含まないルーチン実行部14の実行手順指示実行では、図10に示したステップ1003の実行手順指示実行をより詳細に記している。図12では、関数の呼び出しについて本実施形態の並列データベースシステムルーチン実行方法を適用する例になっており、それに対して図13では、分割データ側で実行される関数から呼び出される手続きや関数に対しても適用できる。
【0132】
ルーチンの実行要求に対応して、実行するルーチンの実行手順指示を取得する(ステップ1001)。ルーチン実行手順指示を順々に解釈し(ステップ1002)、実行していく。
【0133】
ルーチン呼び出しの場合(ステップ1301)、ルーチン呼び出しに対応するルーチン(手続きまたは関数)実行手順指示を一意に決定する(ステップ1302)。次に、決定したルーチンの関数本体用実行手順指示61の共通情報64を取得し(ステップ1303)、データベース操作文を本体に含むかチェックする(ステップ1304)。
【0134】
データベース操作文チェック情報104がOFFであれば、データベース操作文が本体に無いルーチンなので、データベース操作文に対する処理を含まないルーチン実行部14にルーチンの実行要求を行なう(ステップ1305)。
【0135】
データベース操作文チェック情報104がONであれば、データベース操作文が本体に有るルーチンなので、データベース操作文に対する処理を含むルーチン実行部13にルーチンの実行要求を行なう(ステップ1306)。
【0136】
ルーチン実行部13またはルーチン実行部14でルーチン実行手順指示が実行され、その実行結果を取得し(ステップ1307)、後の処理等で用いる。
【0137】
ルーチン呼び出しで無い場合は(ステップ1301)、対応する実行手順指示に従い実行を行なう(ステップ1308)。以下、実行手順指示を順々に解釈実行していく(ステップ1004)。
【0138】
図14は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のより具体的な概略構成を示す図である。図14において、1401はフロントエンドサーバ、1402はデータベース操作サーバである。
【0139】
図14に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置では、図2をより具体的な並列データベースシステムに適用した例を表している。
【0140】
並列データベースシステムの構成としては、ユーザアプリケーションプログラム(以下UAPと呼ぶことにする)からのデータベースに対する問い合わせを解析しコンパイルするサーバであるフロントエンドサーバ1401と、データが格納されるディスク装置にアクセスしデータの操作を行う複数のサーバであるデータベース操作サーバ1402を有している。
【0141】
フロントエンドサーバ1401とデータベース操作サーバ1402は、高速な相互結合ネットワークで繋がっているものとする。但し、ネットワークで繋がる複数プロセッサの並列データベースシステムで無く、単一プロセッサのシステムでも、各サーバの役割として並列なプロセスを割り当てていれば、プロセス間の通信回数を減らすものとして、本実施形態の並列データベースシステムルーチン実行方法を適用可能である。
【0142】
データベース操作サーバ1402におけるプロセサとディスクやメモリとの関連に対して、プロセサ間でディスクを共用しない、shared−nothing型であっても、複数のプロセサでディスクを共用する、shared−disk型であっても、その他のshared型であっても、関数を呼び出す部分と、検索、更新系問合せを本体に含む関数を実行する部分で通信が起こる構成であれば、本実施形態の並列データベースシステムルーチン実行方法を適用できる。
【0143】
図14では、簡単の為、1つのUAP、1つのフロントエンドサーバ1401と複数のデータベース操作サーバ1402の構成で説明を行う。しかし、1つ、または、複数のUAPからの複数の問い合わせに対して、複数のフロントエンドサーバ1401が取り扱うことができる。
【0144】
この場合でも1つ1つの問い合わせに対しては、1つのUAP、1つのフロントエンドサーバ1401と複数のデータベース操作サーバ1402の構成であると見なすことが可能で、本実施形態の並列データベースシステムルーチン実行方法に問題無く適用される。
【0145】
コンパイルに必要な定義情報等はフロントエンドサーバ1401からアクセスできる辞書情報格納部15として存在する。辞書情報格納部15を提供するサーバ(ディクショナリサーバと呼ぶことにする)を用意しても良い。
【0146】
図14の並列データベースシステムの場合、解析部11とフロントエンド側問合せ実行部22をフロントエンドサーバ1401が有しており、分割データ側の問合せ実行部23をデータベース操作サーバ1402が有している。
【0147】
分割データ側の関数呼び出しはデータベース操作サーバ1402の方にあり、データベース操作文に対する処理を含むルーチン実行部13はフロントエンドサーバ1401の方に有る為、関数呼び出し毎の通信回数は大きくなり、本実施形態の並列データベースシステムルーチン実行方法の適用が有効である。
【0148】
並列データベースの構成に、ソート等の機能を専用に行なうサーバが有る場合、そのサーバの問合せ実行部23からの関数呼び出し等に対して、データベース操作文に対する処理を含まないルーチン実行部14を設けることで、同様に、本実施形態の並列データベースシステムルーチン実行方法を適用できる。
【0149】
並列データベースの構成として、図14のフロントエンドサーバ1401とデータベース操作サーバ1402の両方の機能を持つ複数のサーバ(多機能サーバと呼ぶことにする)を有している構成に対しても本実施形態の並列データベースシステムルーチン実行方法を適用可能である。
【0150】
多機能サーバ間は、高速な相互結合ネットワークで繋がっているものとする。但し、ネットワークで繋がる複数プロセッサの並列データベースシステムで無く、単一プロセッサのシステムでも、各サーバの役割として並列なプロセスを割り当てていれば、プロセス間の通信回数を減らすものとして、本実施形態の並列データベースシステムルーチン実行方法を適用可能である。
【0151】
上記、並列データベースの構成以外の構成でも、図2の構成に対応が取れる構成であれば、本実施形態の並列データベースシステムルーチン実行方法を適用可能である。
【0152】
図15は、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の具体例を適用した概略構成を示す図である。
【0153】
図15に示す様に、本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置では、図14の構成図に、本実施形態の並列データベースシステムルーチン実行方法の具体例を適用した例を表している。関数gは本体にデータベース操作文を含まない関数であり、その為データベース操作文チェック情報104はOFFである。
【0154】
関数gの呼び出しg(c2)を含む問合せを解析し実行手順指示を作成し、フロントエンド側と各分割データ側のデータベース操作文実行部25で実行を行なう。分割データ側では、表t1の列データc1、c2をディスクから順に取り出し、g(c2)を実行しようとする。
【0155】
実行するgのデータベース操作文チェック情報104がOFFである為、gの実行は分割データ側のルーチン実行部14で行ない、関数実行毎の通信は起こらない。
【0156】
g(c2)の結果から条件評価を行ない、条件にあっているデータはフロントエンド側に転送する。フロントエンド側では、各分割データ側からの結果をまとめ、UAP問合せ側に結果を転送する。
【0157】
以上示したフローチャートの処理は、図2で例として示した並列データベースシステムにおける処理プログラム210〜212として実行される。しかし、そのプログラムは図2の例の様にコンピュータシステムに物理的に直接接続される外部記憶装置に格納されるものに限定されることはなく、ハードディスク装置、フロッピーディスク装置等のコンピュータで読み書きできる記憶媒体に格納することができる。
【0158】
以上説明した様に、本実施形態の並列データベースシステムルーチン実行方法によれば、分割データ側で呼び出されるルーチンの本体にデータベース操作文を含まない場合、分割データ側に用意したルーチン実行部でルーチンを実行するので、ルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能である。
【0159】
また、本実施形態の並列データベースシステムルーチン実行方法によれば、実行時にルーチンの本体にデータベース操作文が含まれるかどうかの情報を参照してルーチンを実行するルーチン実行部を選択するので、実行時までどのルーチンが実行されるか決定されない場合でもルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能である。
【0160】
また、本実施形態の並列データベースシステムルーチン実行方法によれば、当該ルーチンから呼び出される他のルーチンの本体にデータベース操作文が含まれるかどうかの情報も参照して当該ルーチンを実行するルーチン実行部を選択するので、ルーチンの呼び出しがネストして存在する場合であってもルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能である。
【0161】
以上、本発明を前記実施形態に基づき具体的に説明したが、本発明は、前記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【0162】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記のとおりである。
【0163】
すなわち、分割データ側で呼び出されるルーチンの本体にデータベース操作文を含まない場合、分割データ側に用意したルーチン実行部でルーチンを実行するので、ルーチンの呼び出しによって起こる通信回数を削減して問合せ時間を小さくすることが可能である。
【図面の簡単な説明】
【図1】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概要を示す図である。
【図2】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概略構成を示す図である。
【図3】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義文101の一例を示す図である。
【図4】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ文201の一例を示す図である。
【図5】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数定義情報102の一例を示す図である。
【図6】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の関数実行手順指示103の一例を示す図である。
【図7】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の定義文解析部12の処理手順を示すフローチャートである。
【図8】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の問合せ解析部21の処理手順を示すフローチャートである。
【図9】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文の有るルーチン実行部13の処理手順を示すフローチャートである。
【図10】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文に対する処理を含まないルーチン実行部14の処理手順を示すフローチャートである。
【図11】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のフロントエンド側のデータベース操作文実行部24の処理手順を示すフローチャートである。
【図12】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の分割データ側のデータベース操作文実行部25の処理手順を示すフローチャートである。
【図13】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置のデータベース操作文に対する処理を含まないルーチン実行部14の実行手順指示実行の処理手順を示すフローチャートである。
【図14】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概略構成を示す図である。
【図15】本実施形態の並列データベースシステムルーチン実行方法を実施する実施装置の概略構成を示す図である。
【符号の説明】
11…解析部、12…定義文解析部、13…ルーチン実行部、14…ルーチン実行部、15…辞書情報格納部、101…関数定義文、102…関数定義情報、103…関数実行手順指示、104…データベース操作文チェック情報、110…データベース操作文有り状態、111…データベース操作文無し状態、201…問合せ文、210〜212…処理プログラム、21…問合せ解析部、22…問合せ実行部、23…問合せ実行部、24…データベース操作文実行部、25…データベース操作文実行部、31…FUNCTION構文、301…SET文、302…IF文、303…SELECT文、401…呼び出し文、61…関数本体用実行手順指示、62及び63…検索用実行手順指示、64〜66…共通情報、1401…フロントエンドサーバ、1402…データベース操作サーバ。
Claims (17)
- データベースに対する問合せを受け付け実行手順指示を生成するフロントエンド側の計算機と、データベースのデータを分割して格納する分割データ側の複数の計算機で構成され、分割されたデータに対する問合せの実行を前記実行手順指示により行なう分割データ側の第一の問合せ実行部と、各分割されたデータに対する問合せの分割データ側の複数の計算機からの実行結果をまとめて問合せ元へ返す処理を行なうフロントエンド側の第二の問合せ実行部を有し、分割データ側の第一の問合せ実行部に、データベースを操作する為のデータベース操作文の実行部を含まない第一のルーチン実行部を有している並列データベースシステムでルーチンを実行する並列データベースシステムルーチン実行方法において、
ルーチンの本体にデータベース操作文が含まれるかどうかの判定をフロントエンド側の計算機により行なって前記判定した結果を示す情報を記憶装置に記録する過程と、
分割データ側の第一の問合せ実行部において、前記実行手順指示の中のルーチンの呼び出しに対して前記記憶装置に記録した情報を参照し、データベース操作文を含まない場合、分割データ側の計算機に有る、データベース操作文の実行部を含まない第一のルーチン実行部を選択し、データベース操作文を含む場合、フロントエンド側の計算機に有る、データベース操作文の実行部を含む第二のルーチン実行部を選択し、前記選択したルーチン実行部でルーチンの実行を行なう過程とを含むことを特徴とする並列データベースシステムルーチン実行方法。 - 実行時にルーチンの本体にデータベース操作文が含まれるかどうかの情報を参照してルーチンを実行するルーチン実行部を選択することを特徴とする請求項1に記載された並列データベースシステムルーチン実行方法。
- 当該ルーチンから呼び出される他のルーチンの本体にデータベース操作文が含まれるかどうかの情報も参照して当該ルーチンを実行するルーチン実行部を選択することを特徴とする請求項1または請求項2のいずれかに記載された並列データベースシステムルーチン実行方法。
- データベースに対する問合せを受け付け実行手順指示を生成するフロントエンド側の計算機と、データベースのデータを分割して格納する分割データ側の複数の計算機で構成され、分割されたデータに対する問合せの実行を前記実行手順指示により行なう分割データ側の第一の問合せ実行部と、各分割されたデータに対する問合せの分割データ側の複数の計算機からの実行結果をまとめて問合せ元へ返す処理を行なうフロントエンド側の第二の問合せ実行部を有し、分割データ側の第一の問合せ実行部に、データベースを操作する為のデータベース操作文の実行部を含まない第一のルーチン実行部を有している並列データベースシステムとしてコンピュータを機能させるためのプログラムを記録した媒体において、
ルーチンの本体にデータベース操作文が含まれるかどうかの判定をフロントエンド側の計算機により行なって前記判定した結果を示す情報を記憶装置に記録する過程と、
分割データ側の第一の問合せ実行部において、前記実行手順指示の中のルーチンの呼び出しに対して前記記憶装置に記録した情報を参照し、データベース操作文を含まない場合、分割データ側の計算機に有る、データベース操作文の実行部を含まない第一のルーチン実行部を選択し、データベース操作文を含む場合、フロントエンド側の計算機に有る、データベース操作文の実行部を含む第二のルーチン実行部を選択し、前記選択したルーチン実行部でルーチンの実行を行なう過程とをコンピュータに実行させるためのプログラムを記録したことを特徴とする媒体。 - 実行時にルーチンの本体にデータベース操作文が含まれるかどうかを示す前記記憶装置中の情報を参照してルーチンを実行するルーチン実行部を選択する過程をコンピュータに実行させるためのプログラムを記録したことを特徴とする請求項4に記載された媒体。
- 当該ルーチンから呼び出される他のルーチンの本体にデータベース操作文が含まれるかどうかを示す前記記憶装置中の情報も参照して当該ルーチンを実行するルーチン実行部を選択する過程をコンピュータに実行させるためのプログラムを記録したことを特徴とする請求項4または請求項5のいずれかに記載された媒体。
- 格納するデータに対する問合せの実行を行う第一のプロセスと、データベース操作文を含む関数の実行を行う第二のプロセスを有する複数のプロセスにより通信を介してデータベースを処理するデータベース問合せ処理方法において、
データベースから得たデータを入力として処理する関数を定義するとき、該関数の処理内容に、データベースを操作する為のデータベース操作文が存在するか否かを示す情報を、該関数に対応づけて記憶装置に保持し、
入力した問合せ処理を実行する際に、該問合せに含まれるデータベースからデータを検索する処理と検索したデータを入力とする関数を実行する処理とを実行するとき、当該関数に上記データベース操作文が存在しないことを前記記憶装置中の情報が示している場合は、上記検索する処理と上記関数を実行する処理とを同じ第一のプロセスで実行することを特徴とするデータベース問合せ処理方法。 - 上記データベース操作文は、データベースのデータを検索する問合せであることを特徴とする請求項1または請求項7記載のデータベース問合せ処理方法。
- 上記データベース操作文は、データベースのデータを更新する問合せであることを特徴とする請求項1または請求項7記載のデータベース問合せ処理方法。
- 上記データベース操作文とは、データベースのデータを削除する問合せであることを特徴とする請求項1または請求項7記載のデータベース問合せ処理方法。
- 上記データベース操作文とは、データベースヘデータを挿入する問合せであることを特徴とする請求項1または請求項7記載のデータベース問合せ処理方法。
- 上記関数は、関数の本体(処理内容)がSQLで記述されたものであり、
関数を定義するときに、関数の本体のSQLを解析し、データベース操作文を含むか含まないかをチェックし、データベースシステムの関数に関する定義情報として記憶装置へ登録することを特徴とする請求項7記載のデータベース問合せ処理方法。 - 上記関数は、関数の本体(処理内容)がC言語で書かれたものであり、
関数の定義文に、関数の本体にデータベース操作文を含むか含まないかを表す情報を含み、データベースシステムの関数に関する定義情報として記憶装置へ登録することを特徴とする請求項7記載のデータベース問合せ処理方法。 - 複数の計算機により通信を介してデータベース処理を行うデータベースシステムにおいて、
データベースから得たデータを入力として処理する関数の定義情報として、該関数の処理内容に、データベースを操作する為のデータベース操作文が存在するか否かを示す情報を、該関数に対応づけて格納する記憶手段と、
上記計算機では、入力した問合せに含まれるデータベースからデータを検索する処理と検索したデータを入力とする関数を実行する処理とを実行するとき、当該関数に上記データベース操作文が存在しないことを前記記憶手段中の情報が示している場合は、上記検索する処理と上記関数を実行する処理とを同じ上記計算機で実行することを特徴とするデータベースシステム。 - 格納するデータに対する問合せの実行を行う第一のプロセスと、データベース操作文を含む関数の実行を行う第二のプロセスを有する複数のプロセスにより通信を介してデータベースを処理するデータベース問合せ処理プログラムを格納した計算機読み取り可能な記録媒体において、
データベースから得たデータを入力として処理する関数を定義するとき、該関数の処理内容に、データベースを操作する為のデータベース操作文が存在するか否かを示す情報を、該関数に対応づけて記憶装置に保持し、
入力した問合せ処理を実行する際に、該問合せに含まれるデータベースからデータを検索する処理と検索したデータを入力とする関数を実行する処理とを実行するとき、当該関数に上記データベース操作文が存在しないことを前記記憶装置中の情報が示している場合は、上記検索する処理と上記関数を実行する処理とを同じ第一のプロセスで実行することを特徴とするデータベース問合せ処理プログラムを格納した計算機読み取り可能な記録媒体。 - 格納するデータに対する問合せの実行を行う第一のプロセスと、データベース操作文を含む関数の実行を行う第二のプロセスを有する複数のプロセスにより通信を介してデータベースを処理するデータベース問合せ処理方法において、
データベースから得たデータを入力として処理する関数の処理内容に、データベースを操作する為のデータベース操作文が存在するか否かを示す情報を、該関数に対応づけて記憶装置に保持し、
入力した問合せに含まれるデータベースからデータを検索する処理と検索したデータを入力とする関数を実行する処理とを実行するとき、当該関数に上記データベース操作文が存在しないことを前記記憶装置中の情報が示している場合は、上記検索する処理と上記関数を実行する処理とを同じ第一のプロセスで実行することを特徴とするデータベース問合せ処理方法。 - 格納するデータに対する問合せの実行を行う第一のプロセスと、データベース操作文を含む関数の実行を行う第二のプロセスを有する複数のプロセスにより通信を介してデータベースを処理するデータベース問合せ処理方法において、
データベースから得たデータを入力として処理する関数の処理内容に、データベースを操作する為のデータベース操作文が存在するか否かを示す情報を、該関数に対応づけて記憶装置に保持し、
入力した問合せに含まれるデータベースからデータを検索する処理と検索したデータを入力とする関数を実行する処理とを実行するとき、上記検索する処理と上記関数を実行する処理とを同じ第一のプロセスで実行することを特徴とするデータベース問合せ処理方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04190797A JP3742177B2 (ja) | 1997-02-26 | 1997-02-26 | 並列データベースシステムルーチン実行方法 |
US09/028,055 US6076085A (en) | 1997-02-26 | 1998-02-23 | Routine executing method in database system |
US09/547,078 US6374238B1 (en) | 1997-02-26 | 2000-04-11 | Routine executing method in database system |
US10/084,323 US20020116376A1 (en) | 1997-02-26 | 2002-02-28 | Routine executing method in database system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04190797A JP3742177B2 (ja) | 1997-02-26 | 1997-02-26 | 並列データベースシステムルーチン実行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10240590A JPH10240590A (ja) | 1998-09-11 |
JP3742177B2 true JP3742177B2 (ja) | 2006-02-01 |
Family
ID=12621364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04190797A Expired - Fee Related JP3742177B2 (ja) | 1997-02-26 | 1997-02-26 | 並列データベースシステムルーチン実行方法 |
Country Status (2)
Country | Link |
---|---|
US (3) | US6076085A (ja) |
JP (1) | JP3742177B2 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3742177B2 (ja) * | 1997-02-26 | 2006-02-01 | 株式会社日立製作所 | 並列データベースシステムルーチン実行方法 |
JP3863291B2 (ja) * | 1998-05-28 | 2006-12-27 | 株式会社日立製作所 | データベース処理方法、データベース処理システム及び媒体 |
JP3598495B2 (ja) * | 1999-01-29 | 2004-12-08 | 株式会社 デジタルデザイン | データ転送方法、コンピュータ読み取り可能な記録媒体及びデータ転送システム |
EP1195676A3 (en) * | 2000-10-03 | 2007-03-28 | Microsoft Corporation | Architecture for customizable applications |
GB0103053D0 (en) * | 2001-02-07 | 2001-03-21 | Nokia Mobile Phones Ltd | A communication terminal having a predictive text editor application |
US6892205B1 (en) * | 2001-02-28 | 2005-05-10 | Oracle International Corporation | System and method for pre-compiling a source cursor into a target library cache |
JP2002373175A (ja) * | 2001-06-14 | 2002-12-26 | Nec Corp | サービス検索方法及びシステム |
US7757225B2 (en) * | 2001-06-29 | 2010-07-13 | Microsoft Corporation | Linktime recognition of alternative implementations of programmed functionality |
US7082428B1 (en) * | 2002-09-16 | 2006-07-25 | Bellsouth Intellectual Property Corporation | Systems and methods for collaborative searching |
US7210127B1 (en) | 2003-04-03 | 2007-04-24 | Sun Microsystems | Methods and apparatus for executing instructions in parallel |
US20050049999A1 (en) * | 2003-08-29 | 2005-03-03 | Immo-Gert Birn | Database access statement tracing |
US7600221B1 (en) | 2003-10-06 | 2009-10-06 | Sun Microsystems, Inc. | Methods and apparatus of an architecture supporting execution of instructions in parallel |
US7447797B2 (en) * | 2003-10-29 | 2008-11-04 | International Business Machines Corporation | Method and system for processing a service request associated with a particular priority level of service in a network data processing system using parallel proxies |
US7590620B1 (en) * | 2004-06-18 | 2009-09-15 | Google Inc. | System and method for analyzing data records |
US7539668B2 (en) * | 2004-11-30 | 2009-05-26 | International Business Machines Corporation | System and method for sorting data records contained in a query result based on suitability score |
US8438141B2 (en) | 2005-01-27 | 2013-05-07 | International Business Machines Corporation | System and method for providing secure access to data with user defined table functions |
US9361137B2 (en) | 2006-03-10 | 2016-06-07 | International Business Machines Corporation | Managing application parameters based on parameter types |
US7739267B2 (en) * | 2006-03-10 | 2010-06-15 | International Business Machines Corporation | Classification and sequencing of mixed data flows |
US8099725B2 (en) * | 2006-10-11 | 2012-01-17 | International Business Machines Corporation | Method and apparatus for generating code for an extract, transform, and load (ETL) data flow |
US8160999B2 (en) * | 2006-12-13 | 2012-04-17 | International Business Machines Corporation | Method and apparatus for using set based structured query language (SQL) to implement extract, transform, and load (ETL) splitter operation |
US8219518B2 (en) * | 2007-01-09 | 2012-07-10 | International Business Machines Corporation | Method and apparatus for modelling data exchange in a data flow of an extract, transform, and load (ETL) process |
US20090006520A1 (en) * | 2007-06-28 | 2009-01-01 | Microsoft Corporation | Multiple Thread Pools for Processing Requests |
US8051091B2 (en) * | 2008-02-19 | 2011-11-01 | Sap Ag | Parallelizing data manipulation by data set abstraction |
US8938444B2 (en) * | 2011-12-29 | 2015-01-20 | Teradata Us, Inc. | Techniques for external application-directed data partitioning in data exporting from a database management system |
US9338057B2 (en) * | 2013-10-30 | 2016-05-10 | Netapp, Inc. | Techniques for searching data associated with devices in a heterogeneous data center |
CN104850638B (zh) * | 2015-05-25 | 2018-10-19 | 广东精点数据科技股份有限公司 | Etl过程并行决策方法及装置 |
US11030045B2 (en) * | 2015-07-28 | 2021-06-08 | Futurewei Technologies, Inc. | Apparatus and method for utilizing different data storage types to store primary and replicated database directories |
CN112711602B (zh) * | 2019-10-25 | 2023-04-28 | 金篆信科有限责任公司 | 一种存储过程的运行方法、装置,数据库系统及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0689212A (ja) * | 1991-12-19 | 1994-03-29 | Nec Corp | 情報処理方式 |
JP3269849B2 (ja) * | 1992-05-29 | 2002-04-02 | 株式会社日立製作所 | 並列データベース処理システムとその検索方法 |
US5819083A (en) * | 1993-09-02 | 1998-10-06 | International Business Machines Corporation | Minimal sufficient buffer space for data redistribution in a parallel database system |
US5437032A (en) * | 1993-11-04 | 1995-07-25 | International Business Machines Corporation | Task scheduler for a miltiprocessor system |
US5495606A (en) * | 1993-11-04 | 1996-02-27 | International Business Machines Corporation | System for parallel processing of complex read-only database queries using master and slave central processor complexes |
US5765146A (en) * | 1993-11-04 | 1998-06-09 | International Business Machines Corporation | Method of performing a parallel relational database query in a multiprocessor environment |
US6101495A (en) * | 1994-11-16 | 2000-08-08 | Hitachi, Ltd. | Method of executing partition operations in a parallel database system |
JP3023441B2 (ja) * | 1993-11-16 | 2000-03-21 | 株式会社日立製作所 | データベース分割管理方法および並列データベースシステム |
JPH0863441A (ja) * | 1994-08-26 | 1996-03-08 | Hitachi Ltd | 並列システムの運用方法 |
US5692174A (en) * | 1995-10-05 | 1997-11-25 | International Business Machines Corporation | Query parallelism in a shared data DBMS system |
US5835724A (en) * | 1996-07-03 | 1998-11-10 | Electronic Data Systems Corporation | System and method for communication information using the internet that receives and maintains information concerning the client and generates and conveys the session data to the client |
JP3747525B2 (ja) * | 1996-08-28 | 2006-02-22 | 株式会社日立製作所 | 並列データベースシステム検索方法 |
JP3742177B2 (ja) * | 1997-02-26 | 2006-02-01 | 株式会社日立製作所 | 並列データベースシステムルーチン実行方法 |
-
1997
- 1997-02-26 JP JP04190797A patent/JP3742177B2/ja not_active Expired - Fee Related
-
1998
- 1998-02-23 US US09/028,055 patent/US6076085A/en not_active Expired - Fee Related
-
2000
- 2000-04-11 US US09/547,078 patent/US6374238B1/en not_active Expired - Fee Related
-
2002
- 2002-02-28 US US10/084,323 patent/US20020116376A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20020116376A1 (en) | 2002-08-22 |
JPH10240590A (ja) | 1998-09-11 |
US6076085A (en) | 2000-06-13 |
US6374238B1 (en) | 2002-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3742177B2 (ja) | 並列データベースシステムルーチン実行方法 | |
JP3747525B2 (ja) | 並列データベースシステム検索方法 | |
US7734620B2 (en) | Optimizing a database query that fetches N rows | |
US5937401A (en) | Database system with improved methods for filtering duplicates from a tuple stream | |
JP3160719B2 (ja) | コンピュータのネットワークからワールドワイドウェッブ上のページを捜し出したり、ドキュメントを捜し出したりするためのシステム及び方法 | |
US6925462B2 (en) | Database management system, and query method and query execution program in the database management system | |
US8825616B2 (en) | Execution of database queries including filtering | |
EP0747839A1 (en) | Database management system with improved indexed accessing | |
US20070143363A1 (en) | Label-aware B-tree-like index for efficient queries in a versioning system | |
US6748377B1 (en) | Facilitating query pushdown in a multi-tiered database environment | |
US20050091210A1 (en) | Method for integrating and accessing of heterogeneous data sources | |
JP3808941B2 (ja) | 並列データベースシステム通信回数削減方法 | |
US7689542B2 (en) | Dynamic return type generation in a database system | |
JP3763982B2 (ja) | データベース処理方法及びその実施装置並びにその処理プログラムを記録した媒体 | |
US8280869B1 (en) | Sharing intermediate results | |
JP4207096B2 (ja) | データベース管理方法 | |
US7512599B2 (en) | Query duration types | |
US7392359B2 (en) | Non-blocking distinct grouping of database entries with overflow | |
JPH11338875A (ja) | 多重定義ルーチン解決方法及びその実施装置並びにその処理プログラムを記録した媒体 | |
JP4033207B2 (ja) | データベース管理方法 | |
JPH11120067A (ja) | データの部分情報を先行して管理するデータベース処理方法 | |
JP2007207280A (ja) | データベース管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050705 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050902 |
|
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: 20051108 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051110 |
|
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 |