(57)【特許請求の範囲】
【請求項１】
複数のデータベースとデータベースを制御するための複数の実行制御部とを備え、前記複数の実行制御部がそれぞれに予め割り当てられた前記データベースに対してクエリ文を発行するシステムに、前記実行制御部のそれぞれとして用いられるデータベースの実行制御装置であって、
前記複数の実行制御部が互いに協調的に動作するための制御規則として、１つの実行制御部が他の実行制御部から受信すべき情報を特定するための第１の情報と、１つの実行制御部が割り当てられたデータベースに対して発行すべきクエリ文が１つ以上含まれる第２の情報と、１つの実行制御部が割り当てられたデータベースからクエリ文の実行結果として受け取った情報の送信先の他の実行制御部を特定するための第３の情報とを含む制御規則を入力して当該実行制御装置に適用される前記第1の情報，前記第2の情報および前記第3の情報をそれぞれ抽出する規則抽出手段と、
前記抽出された第1の情報に基づいて、他の実行制御部から受信した情報を蓄積するとともに、前記抽出された第２の情報の各々のクエリ文について、それが必要とする全ての情報の受信が完了した時にクエリ文発行手段に対して発行指示を与える発火制御手段と、
前記発火制御手段からの発行指示を受け取り、前記抽出された第1の情報に基づいて他の実行制御部から受信し蓄積した情報を、前記抽出された第2の情報に含まれるクエリ文に引き渡し、情報が引き渡された前記クエリ文を前記データベースに発行するクエリ文発行手段と、
前記抽出された第3の情報に従い、前記データベースから入力されるクエリ文の実行結果を他の実行制御部に送信する結果送信手段と
を設けたことを特徴とするデータベースの実行制御装置。
【請求項２】
請求項１のデータベースの実行制御装置において、前記制御規則をノード毎に区分して記述するとともに、各ノードの制御規則には１まとまりの前記第２の情報を、そのノードに対応付けられる特定のデータベース固有の仕様に合わせて記述したことを特徴とするデータベースの実行制御装置。
【請求項３】
請求項１のデータベースの実行制御装置において、前記複数の実行制御部が協調動作を開始する前に、各実行制御部に与える制御規則を任意のサーバからダウンロードして更新する制御規則更新手段をさらに設けたことを特徴とするデータベースの実行制御装置。
【請求項４】
請求項１のデータベースの実行制御装置において、前記複数の実行制御部同士の間で伝送する情報には、１組の情報の構造を特定するための構造識別子と、その構造に従って構成された情報の内容とを含めるとともに、各実行制御部には、他の実行制御部から受信した情報をそれに含まれる前記構造識別子に従って解釈するデータ構成解釈手段をさらに設けたことを特徴とするデータベースの実行制御装置。
【請求項５】
請求項４のデータベースの実行制御装置において、前記複数の実行制御部同士の間で伝送される情報の構造と前記構造識別子との対応関係を示す定義情報を保持する定義情報サーバから、各実行制御部が必要とする定義情報を取得する定義情報取得手段をさらに設けたことを特徴とするデータベースの実行制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、互いに協調的な動作が必要な複数のデータベースを制御するためのデータベースの実行制御装置に関する。
【０００２】
【従来の技術】
データベースには様々な種類があり、それらのデータ構成や扱うデータの種類も様々である。従って、利用者が様々な情報をデータベースから取得しようとする場合には多数の独立したデータベースを利用する必要がある。
一方、独立したデータベースには互いに関連を有する情報が蓄積される場合が多い。そのため、例えばある情報によって第１のデータベースの内容を更新する場合には、更新後の第１のデータベースの内容に基づいて第２のデータベースを更新する必要があり、さらに更新後の第２のデータベースの内容に基づいて第３のデータベースの内容を更新する必要が生じる場合もある。
【０００３】
従って、複数の独立したデータベースを管理するシステムにおいては、全てのデータベースの内容が常に整合性を保つように、独立した複数のデータベースの内容を管理する動作を互いに協調させる必要がある。
そのため、従来より独立した複数のデータベースを管理するシステムは、協調動作を実現するために図１１のように構成されている。すなわち、各々のデータベース（ＤＢ）を制御する実行制御装置の１台がマスタ実行制御装置として割り当てられ、他の実行制御装置がそれぞれスレーブ実行制御装置として割り当てられている。
【０００４】
例えば、利用者がいずれかのデータベースにアクセスするために端末装置からこのシステムに入力する１組のクエリ文（データベースに与える命令文）は、まずマスタ実行制御装置に入力される。マスタ実行制御装置は、入力されたクエリ文の内容から、それを発行すべきデータベースに割り当てられたスレーブ実行制御装置を特定し、そのスレーブ実行制御装置に対して入力されたクエリ文の発行要求を送出する。
【０００５】
このクエリ文を受信したスレーブ実行制御装置は、それが割り当てられたデータベースに対してクエリ文を発行する。このクエリ文の発行に対してデータベースから実行結果が入力されると、スレーブ実行制御装置はマスタ実行制御装置にクエリ文の発行結果を通知する。
マスタ実行制御装置は、端末装置から入力された全てのクエリ文に対して、上記の処理を繰り返す。つまり、複数のデータベースに対するクエリ文の発行タイミングをマスタ実行制御装置が統括的に管理している。これにより、複数のスレーブ実行制御装置及びデータベースを協調的に動作させることができる。
【０００６】
ところで、互いに仕様の異なる複数のデータベースが１つのシステムに接続される場合もある。例えば、互いに異なるクエリ文の言語仕様に合わせて構成された様々なデータベースを１つのシステムで管理する場合である。その場合には、図１２に示すようにマスタ実行制御装置と各スレーブ実行制御装置との間にそれぞれ仕様差異変換装置が配置される。
【０００７】
すなわち、仕様差異変換装置は全てのデータベースのクエリ文に関する仕様情報を予め取得し、マスタ実行制御装置が各スレーブ実行制御装置に対してクエリ文を発行する際と、クエリ文の発行結果を受け取る際に、それぞれ仕様情報を用いて仕様の差異を吸収するために変換処理を行なう。
【０００８】
【発明が解決しようとする課題】
従来の装置においては、図１１に示すようにマスタ実行制御装置が多数のスレーブ実行制御装置を統括し、集中的な制御により協調動作を実現しているため、次に示す問題があった。
【０００９】
（１）１つのシステムに多数のデータベースが接続される場合には、協調動作のための処理がマスタ実行制御装置に集中するので、マスタ実行制御装置の処理能力がボトルネックとなり、システム全体の処理能力が制限されてしまう。
（２）互いに仕様の異なる複数のデータベースをシステムに接続する場合には、マスタ実行制御装置と各々のスレーブ実行制御装置との間でデータベースの仕様の違いに合わせてクエリ文に関する変換処理を行う必要がある。このため、マスタ実行制御装置の性能向上が困難である。
【００１０】
（３）マスタ実行制御装置と各々のスレーブ実行制御装置との間でデータベースの仕様の違いに合わせてクエリ文に関する変換処理を行う必要があるので、種類の異なるデータベースを新たに協調動作に参加させる場合には、マスタ実行制御装置の変換処理について追加や変更が必要である。従って、そのようなシステムの変更に伴うコストが比較的大きくなるのは避けられない。
【００１１】
（４）マスタ実行制御装置と各々のスレーブ実行制御装置との間でデータベースの仕様の違いに合わせてクエリ文に関する変換処理を行う必要があるので、種類の異なるデータベースを新たに協調動作に参加させる場合には、マスタ実行制御装置の変換処理について追加や変更が必要である。このようなシステムの変更を行っている時には、システム全体を統括するマスタ実行制御装置の利用が不可能になるので、新たに追加するデータベースを利用しないユーザであっても、全てのデータベースに全くアクセスできない状態になり不便である。また、追加や変更によって新たに組み込んだプログラムなどに不具合（バグ）があると、システム全体が異常な動作を行う可能性がある。
【００１２】
従って、多様な実行制御装置が協調動作するシステムでは、マスタとなる実行制御装置は、多くの種類のデータベースの仕様を保持するとともに、その仕様に基づいた多彩な変換処理を行うことになる。つまり、システムの動作が複雑で追加や変更が困難なシステムになってしまう。
また、互いに種類の異なるデータベースを協調させる場合には、仕様差異変換装置を用いて、仮想的に同一のデータベースであるかのように見せる。仕様差異変換装置は、１つの実行制御装置が他の実行制御装置にアクセスする際に、前者に対応するデータベースにアクセスするのと同様のインタフェース（ＡＰＩ）を提供する。結果として、協調可能な機能は、全てのデータベースが共通に備えている機能だけに制限され、各々のデータベースが備えている全ての機能を利用できるわけではない。
【００１３】
本発明は、制御の集中による処理能力の制限を緩和するとともに、協調動作に参加する新たなデータベースの追加や変更が容易なデータベースの実行制御装置を提供することを目的とする。
【００１４】
【課題を解決するための手段】
請求項１のデータベースの実行制御装置は、複数のデータベースとデータベースを制御するための複数の実行制御部とを備え、前記複数の実行制御部がそれぞれに予め割り当てられた前記データベースに対してクエリ文を発行するシステムに、前記実行制御部のそれぞれとして用いられるデータベースの実行制御装置であって、前記複数の実行制御部が互いに協調的に動作するための制御規則として、１つの実行制御部が他の実行制御部から受信すべき情報を特定するための第１の情報と、１つの実行制御部が割り当てられたデータベースに対して発行すべきクエリ文が１つ以上含まれる第２の情報と、１つの実行制御部が割り当てられたデータベースからクエリ文の実行結果として受け取った情報の送信先の他の実行制御部を特定するための第３の情報とを含む制御規則を入力して当該実行制御装置に適用される前記第1の情報，前記第2の情報および前記第3の情報をそれぞれ抽出する規則抽出手段と、前記抽出された第1の情報に基づいて、他の実行制御部から受信した情報を蓄積するとともに、前記抽出された第２の情報の各々のクエリ文について、それが必要とする全ての情報の受信が完了した時にクエリ文発行手段に対して発行指示を与える発火制御手段と、前記発火制御手段からの発行指示を受け取り、前記抽出された第1の情報に基づいて他の実行制御部から受信し蓄積した情報を、前記抽出された第2の情報に含まれるクエリ文に引き渡し、情報が引き渡された前記クエリ文を前記データベースに発行するクエリ文発行手段と、前記抽出された第3の情報に従い、前記データベースから入力されるクエリ文の実行結果を他の実行制御部に送信する結果送信手段とを設けたことを特徴とする。
【００１５】
請求項１において、制御規則には、１つの実行制御部が他の実行制御部から受信すべき情報を特定するための第１の情報と、１つの実行制御部が割り当てられたデータベースに対して発行すべきクエリ文が１つ以上含まれる第２の情報と、１つの実行制御部が割り当てられたデータベースからクエリ文の実行結果として受け取った情報の送信先の他の実行制御部を特定するための第３の情報とが含まれている。
【００１６】
また、クエリ文発行手段は前記制御規則のうちその実行制御部が割り当てられたノードの制御規則に従い、他の実行制御部から受信した情報に基づいて前記第２の情報に含まれるクエリ文を前記データベースに発行する。
さらに、結果送信手段は前記制御規則のうちその実行制御部に割り当てられたノードの制御規則に従い、前記データベースから入力されるクエリ文の実行結果を他の実行制御部に送信する。
【００１７】
請求項１では、各々の実行制御部は、制御規則に基づいて他の実行制御部から入力したデータを処理し、指定されたクエリ文を実行し、クエリ文の実行結果を他の実行制御部にデータとして送出することができる。このデータを受信した他の実行制御部もそのノードに割り当てられた制御規則に基づいて動作する。
このため、各々の実行制御部はいわゆるデータ駆動型計算機の動作を実現することになり、データを入力するだけで各々の実行制御部は複数の実行制御部が互いに協調するように動作する。従って、格別にマスタ装置を設けて集中的に制御を行わなくても、定められた制御規則に基づいて協調動作が実現される。
【００１８】
請求項１によれば、各々の実行制御部の動作によってシステム全体の協調制御も実現される。従って、制御が特定の実行制御部に集中することはなく、システムに接続されるデータベースの数が多い場合であってもシステム全体として高い処理能力を実現できる。
また、システム全体を統括するマスタ装置を設ける必要がないので、新たなデータベースを追加したりシステムに変更を加える場合であっても、一部分の実行制御部に変更を加えるだけでそれを実現できる。さらに、その変更の最中であっても変更の対象外の実行制御部及びそれに割り当てられたデータベースはそのまま利用できるので、変更に伴う負担は非常に小さい。
【００１９】
また、請求項１の規則抽出手段は、それ自身に割り当てられたノードの制御規則を入力して前記第１の情報，第２の情報及び第３の情報をそれぞれ抽出する。規則抽出手段が抽出した第１の情報，第２の情報及び第３の情報は、クエリ文発行手段及び結果送信手段に与えられる。
【００２１】
さらに、請求項１の発火制御手段はそれ自身が割り当てられたノードの制御規則に含まれる前記第２の情報の各々のクエリ文について、それが必要とする全ての情報の受信が完了した時に前記クエリ文発行手段に対して発行指示を与える。
つまり、各々のクエリ文について、それの実行に必要な情報の入力が完了した段階で自動的にクエリ文の発行要求が発生する。このため、クエリ文の発行要求を送出するタイミングを決定するために外部から制御を行う必要はなく、各々の実行制御部は自律的に動作する。
【００２２】
請求項２は、請求項１のデータベースの実行制御装置において、前記制御規則をノード毎に区分して記述するとともに、各ノードの制御規則には１まとまりの前記第２の情報を、そのノードに対応付けられる特定のデータベース固有の仕様に合わせて記述したことを特徴とする。
請求項２においては、制御規則がノード毎に区分されているので、各々の実行制御部はそれが割り当てられたノードの制御規則だけを簡単に抽出できる。また、各ノードの制御規則には、そのノードに対応付けられる特定のデータベース固有の仕様に合わせて第２の情報が記述されているので、独自仕様のデータベースをシステムに追加する場合であっても、格別な変換を行うことなしに第２の情報をクエリ文としてそのままデータベースに与えることができる。また、制御規則に変更を加える場合には、ノードとして局所化された制御規則の一部分の記述を変更するだけで変更を実現できる。
【００２５】
請求項３は、請求項１のデータベースの実行制御装置において、前記複数の実行制御部が協調動作を開始する前に、各実行制御部に与える制御規則を任意のサーバからダウンロードして更新する制御規則更新手段をさらに設けたことを特徴とする。
制御規則更新手段は、前記複数の実行制御部が協調動作を開始する前に、各実行制御部に与える制御規則を任意のサーバからダウンロードして更新する。従って、サーバに保持する制御規則を変更することにより、ダウンロードの度にシステムの協調動作の内容を動的に変更することができる。このため、例えば新たな種類のデータベースを協調動作に参加させるための変更が容易になる。
【００２６】
請求項４は、請求項１のデータベースの実行制御装置において、前記複数の実行制御部同士の間で伝送する情報には、１組の情報の構造を特定するための構造識別子と、その構造に従って構成された情報の内容とを含めるとともに、各実行制御部には、他の実行制御部から受信した情報をそれに含まれる前記構造識別子に従って解釈するデータ構成解釈手段をさらに設けたことを特徴とする。
【００２７】
請求項４においては、データ構成解釈手段が伝送される情報に含まれる構造識別子に従って情報の構造を特定し解釈するので、複雑な構成の情報であっても複数の実行制御部同士の間で伝送することができる。
請求項５は、請求項４のデータベースの実行制御装置において、前記複数の実行制御部同士の間で伝送される情報の構造と前記構造識別子との対応関係を示す定義情報を保持する定義情報サーバから、各実行制御部が必要とする定義情報を取得する定義情報取得手段をさらに設けたことを特徴とする。
【００２８】
請求項５においては、定義情報取得手段が実行制御部の必要とする定義情報を定義情報サーバから取得する。従って、定義情報サーバの保持する内容を変更すれば、複数の実行制御部同士の間で伝送される情報の構造を変更することができる。
【００２９】
【発明の実施の形態】
（第１の実施の形態）  本発明のデータベースの実行制御装置の１つの実施の形態について、図１〜図７を参照して説明する。この形態は請求項１〜請求項３に対応する。
図１はこの形態の実行制御装置の構成を示すブロック図である。図２はこの形態のデータベースシステムの構成を示すブロック図である。
【００３０】
図３は制御規則の記述例（１）をデータフローグラフのテキスト形式で示す模式図である。図４は制御規則の記述例（２）をデータフローグラフの図形式で示す模式図である。図５は解釈機構の入力と各出力の例を示す模式図である。図６はこの形態の実行制御装置の動作を示すフローチャートである。図７は制御規則のダウンロードの手順を示すシーケンス図である。
【００３１】
この形態では、請求項１のデータベース，実行制御部，クエリ文発行手段及び結果送信手段は、それぞれデータベース１１，実行制御装置１２，ゲートウェイＧＷ，発行機構２４及び送信機構２５として具体化されている。また、請求項１の第１の情報，第２の情報及び第３の情報はそれぞれ解釈機構２２の出力Ｄ１，Ｄ２及びＤ４に対応する。
【００３２】
さらに、規則抽出手段は解釈機構２２に対応し、発火制御手段は発火機構２３に対応し、請求項３の制御規則更新手段はユーザ端末ＵＳに対応する。
図２に示すデータベースシステムは、Ｎ個のデータベース１１(1)〜１１(N)，Ｎ個の実行制御装置１２(1)〜１２(N)，ネットワーク１３，ゲートウェイＧＷ及びユーザ端末ＵＳを備えている。
【００３３】
実行制御装置１２(1)〜１２(N)は、それぞれ１つのデータベース１１と対応付けられている。各々の実行制御装置１２は、それが対応付けられたデータベース１１を制御するために、そのデータベース１１に対してクエリ文を発行する。
各々のデータベース１１は、蓄積されたデータの集合とそれを制御するためのデータベースマネージャとで構成される。データベースマネージャは、クエリ文が入力されるとそれを実行し、蓄積されたデータの集合にクエリ文を適用する。そして、その実行結果を実行制御装置１２に返す。
【００３４】
図２のデータベースシステムにおいては、Ｎ個の実行制御装置１２(1)〜１２(N)はネットワーク１３を介して互いに接続されている。従って、例えば実行制御装置１２(1)が送出したデータを実行制御装置１２(2)に入力したり、実行制御装置１２(2)が送出したデータを実行制御装置１２(N)に入力することができる。
Ｎ個の実行制御装置１２(1)〜１２(N)のそれぞれは、予め決定された制御規則に基づき、他の実行制御装置１２から入力されたデータに従って動作する。つまり、実行制御装置１２はデータ駆動型の計算機として動作する。
【００３５】
ゲートウェイＧＷは、Ｎ個の実行制御装置１２(1)〜１２(N)のそれぞれに接続されている。ゲートウェイＧＷは制御規則を生成しそれを各実行制御装置１２に与える。ユーザ端末ＵＳは、ユーザからの入力に従ってゲートウェイＧＷに指示を与える。
Ｎ個の実行制御装置１２(1)〜１２(N)のそれぞれは、図１に示すように構成されている。すなわち、実行制御装置１２は受信機構２１，解釈機構２２，発火機構２３，発行機構２４及び送信機構２５を備えている。これらの各機構は、この例ではソフトウェアで実現してある。勿論、ハードウェアで実現することも可能である。各機構の動作については後で説明する。
【００３６】
ゲートウェイＧＷが生成する制御規則は、例えば図３に示すように構成される。図３の制御規則の内容について以下に説明する。
図３の例では、４種類のノード［ｔｒｉｇｅｒ］，［ｓｅｒｃｈ１］，［ｓｅｒｃｈ２］，［ｒｅｓｕｌｔ］のそれぞれに割り当てられる制御規則がノード毎に区別して記述してある。また、この例ではＳＱＬ言語を用いて記述してある。図３の各行＃１〜＃１５の内容は次の通りである。なお、「ノード」は各実行制御装置１２に対応し、以下に示す「アーク」はノード間で伝送される信号を意味する。
【００３７】
＃１〜＃３：ＳＱＬ言語によるクエリ文の記述
＃４，＃５：ノード［ｔｒｉｇｅｒ］を送信元とするアークの記述
＃６：ノード［ｓｅｒｃｈ１］を宛先とするアークの記述
＃７：ＳＱＬ言語によるクエリ文の記述
＃８：ノード［ｓｅｒｃｈ１］を送信元とするアークの記述
＃９：ノード［ｓｅｒｃｈ２］を宛先とするアークの記述
＃１０：ＳＱＬ言語によるクエリ文の記述
＃１１：ノード［ｓｅｒｃｈ２］を送信元とするアークの記述
＃１２，＃１３：ノード［ｒｅｓｕｌｔ］を宛先とするアークの記述
＃１４，＃１５：ＳＱＬ言語によるクエリ文の記述
各行＃１〜＃１５の具体的な意味は次の通りである。
【００３８】
＃１：「ｋｅｙ」という名前で８文字のキャラクタ型の項目を持つ「ｓｅｅｄ」という表を作成する。
＃２：「ＴＹＰＥ−１」という値を持つ行を表「ｓｅｅｄ」に追加する。
＃３：表「ｓｅｅｄ」から全ての行を読み出す。
＃４：＃３で読み出した列を「ＡＴＯＭ」というデータ形式でノード［ｓｅｒｃｈ１］に「ｋｅｙ」という名前で送信する。
【００３９】
＃５：＃３で読み出した列を「ＡＴＯＭ」というデータ形式でノード［ｓｅｒｃｈ２］に「ｋｅｙ」という名前で送信する。
＃６：「ＡＴＯＭ」というデータ形式でノード［ｔｒｉｇｅｒ］から「ｋｅｙ」という名前で受信した値を１行目のＳＱＬ文（＃７）の「？」と入れ換える。
＃７：表「ｌｏｇ１」から項目「ｋｅｙ」の値が「？」である行を全て読み出す。
【００４０】
＃８：＃７で読み出した列を「ＴＡＢＬＥ」というデータ形式でノード［ｒｅｓｕｌｔ］に「ｌｏｇ１」という名前で送信する。
＃９：「ＡＴＯＭ」というデータ形式でノード［ｔｒｉｇｅｒ］から「ｋｅｙ」という名前で受信した値を１行目のＳＱＬ文（＃１０）の「？」と入れ換える。
＃１０：表「ｌｏｇ２」から項目「ｋｅｙ」の値が「？」である行を全て読み出す。
【００４１】
＃１１：＃１０で読み出した列を「ＴＡＢＬＥ」というデータ形式で、ノード［ｒｅｓｕｌｔ］に「ｌｏｇ２」という名前で送信する。
＃１２：「ＴＡＢＬＥ」というデータ形式でノード［ｓｅｒｃｈ１］から「ｌｏｇ１」という名前で受信した値を「ｒｅｓｕｌｔ１」という名前で保存する。
＃１３：「ＴＡＢＬＥ」というデータ形式でノード［ｓｅｒｃｈ２］から「ｌｏｇ２」という名前で受信した値を「ｒｅｓｕｌｔ２」という名前で保存する。
【００４２】
＃１４：「ｔｙｐｅ」という名前で８文字のキャラクタ型の項目と「ｉｎｆｏ」という名前で６４文字のキャラクタ型の項目とを持つ「ｒｅｓｕｌｔ」という表を作成。
＃１５：保存した「ｒｅｓｕｌｔ１」及び「ｒｅｓｕｌｔ２」を表「ｒｅｓｕｌｔ」に挿入する。
【００４３】
制御規則の各ノード［ｔｒｉｇｅｒ］，［ｓｅｒｃｈ１］，［ｓｅｒｃｈ２］，［ｒｅｓｕｌｔ］は、それぞれ異なる実行制御装置１２に割り当てられる。例えば、ノード［ｔｒｉｇｅｒ］を実行制御装置１２(1)に割り当て、ノード［ｓｅｒｃｈ１］を実行制御装置１２(2)に割り当て、ノード［ｓｅｒｃｈ２］を実行制御装置１２(3)に割り当て、ノード［ｒｅｓｕｌｔ］を実行制御装置１２(4)に割り当てる。
【００４４】
図３の制御規則をデータフローグラフで表すと図４のようになる。すなわち、図４に示すようにノード［ｔｒｉｇｅｒ］，［ｓｅｒｃｈ１］，［ｓｅｒｃｈ２］，［ｒｅｓｕｌｔ］の間でアークとして信号が伝送される。従って、複数の実行制御装置１２(1)〜１２(N)の間で信号（データ）の伝送が行われる。
ノード［ｔｒｉｇｅｒ］については、そのノードを宛先（デスティネーション）とするアークがないため、すぐにクエリ文の発行を開始する。ノード［ｓｅｒｃｈ１］については、特に指定がないため、そのノードを宛先とするアークが示すデータを全て受信したときにクエリ文の発行を開始する。
【００４５】
同様に、ノード［ｓｅｒｃｈ２］については特に指定がないため、そのノードを宛先とするアークが示すデータを全て受信したときにクエリ文の発行を開始する。また、ノード［ｒｅｓｕｌｔ］については、特に指定がないため、そのノードを宛先とするアークが示すデータを全て受信したときにクエリ文の発行を開始する。
【００４６】
図１に示す実行制御装置１２の解釈機構２２は、ゲートウェイＧＷから送出される制御規則Ｄ０が入力されると、その内容を解析し、その結果として４種類の出力Ｄ１，Ｄ２，Ｄ３，Ｄ４を生成する。
例えば、ある実行制御装置１２が図３の制御規則のノード［ｓｅｒｃｈ１］に割り当てられた場合には、その解釈機構２２に入力される制御規則Ｄ０及び４種類の出力Ｄ１，Ｄ２，Ｄ３，Ｄ４はそれぞれ図５のようになる。
【００４７】
すなわち、解釈機構２２にはノード［ｓｅｒｃｈ１］の全ての制御規則がＤ０として入力され、出力Ｄ１にはノード［ｓｅｒｃｈ１］が他のノードから受信すべき一連のデータの種類を表す情報として図３の(＃６)の内容が現れる。
また、解釈機構２２の出力Ｄ２には、対応するデータベース１１に発行すべき一連のクエリ文として図３の(＃７)が現れる。ノード［ｒｅｓｕｌｔ］の場合であれば、出力Ｄ２には図３の(＃１４)，(＃１５)が現れる。
【００４８】
解釈機構２２の出力Ｄ３には、送信するデータの形式を表す情報として図３の(＃８)に含まれる「ＴＡＢＬＥ」が現れる。また、解釈機構２２の出力Ｄ４には宛先のノード［ｒｅｓｕｌｔ］を示す図３の(＃８)の「ｒｅｓｕｌｔ．ｌｏｇ１＝ＩＴＥＭ(1)」が現れる。
また、解釈機構２２はゲートウェイＧＷから更新された新しい制御規則Ｄ０が入力される度に、それを解析して出力Ｄ１，Ｄ２，Ｄ３，Ｄ４の内容をそれぞれ更新する。
【００４９】
実行制御装置１２の受信機構２１には、他の実行制御装置１２の出力するデータがネットワーク１３を介して受信データＤinとして入力される。受信機構２１は、受信データＤinが入力されると、その内容をデータベース１１もしくは実行制御装置１２内に保存するとともに、受信データＤinの種別を判定し、その結果をデータ種別Ｄｘとして発火機構２３に通知する。
【００５０】
発火機構２３は、受信機構２１から通知されたデータ種別Ｄｘの情報を保存するとともにその履歴を管理する。そして、解釈機構２２の出力Ｄ１として予め発火機構２３に入力された情報と、受信したデータのデータ種別Ｄｘの履歴とを照合する。
解釈機構２２の出力Ｄ１の内容は、解釈機構２２の出力Ｄ２に含まれる各クエリ文を実行するために必要とされる全てのデータの種類を表している。発火機構２３は、前記照合の結果、各々のクエリ文についてそれを実行するのに必要な全てのデータの受信が完了したことを検出すると、発行機構２４に対して発行指示を出力する。
【００５１】
発行機構２４は、発火機構２３から発行指示を受け取ると、解釈機構２２から出力Ｄ２として入力される一連のクエリ文の中から、その発行指示に対応する１組のクエリ文を選択し、選択したクエリ文を順次にデータベース１１に対して発行しその実行を指示する。
発火機構２３が発行指示を出力した時点で、クエリ文の実行に必要な全てのデータの受信が完了しているので、データベース１１は発行機構２４からクエリ文が入力されると直ちにそれを実行することができる。
【００５２】
データベース１１は、発行機構２４が発行したクエリ文を実行した後、その実行結果を発行機構２４に返す。発行機構２４は、データベース１１から実行結果を受け取るとそれを送信機構２５に渡す。
送信機構２５は、発行機構２４からクエリ文の実行結果を受け取ると、それを送信データＤoutとしてネットワーク１３に送出する。送信データＤoutの宛先は、解釈機構２２の出力Ｄ４によって予め指定されたノードの実行制御装置１２になる。また、送信データＤoutのデータ形式は、解釈機構２２の出力Ｄ３によって予め指定された形式になる。なお、制御規則に送信先が指定されていない場合には、送信機構２５は送信データＤoutを送出しない。
【００５３】
以上に説明した実行制御装置１２の全体の動作をフローチャートで表すと、図６のようになる。図６において、ステップＳ１１〜Ｓ１４の処理Ｐ１，ステップＳ１５〜Ｓ１８の処理Ｐ２，ステップＳ１９〜Ｓ２３の処理Ｐ３，ステップＳ２４〜Ｓ２５の処理Ｐ４は、それぞれ図１の受信機構２１，発火機構２３，発行機構２４，送信機構２５によって実行される。
【００５４】
この例では、各実行制御装置１２に与える制御規則を更新する場合には図７に示す手順が実行される。すなわち、制御規則の更新を必要とする場合には、ユーザ端末ＵＳからゲートウェイＧＷに対して所定のクエリ文を発行するとともに、それの実行指示を与える。
ゲートウェイＧＷは、ユーザ端末ＵＳからのクエリ文及び実行指示を受信すると、入力されたクエリ文に基づいてステップＳ４１で制御規則を生成する。この制御規則は、例えば図３のような内容になる。
【００５５】
ステップＳ４２では、生成された制御規則の各々のノードを実行制御装置１２(1)〜１２(N)のいずれかに割り当てる。そして、ステップＳ４３では実行制御装置１２(1)〜１２(N)のそれぞれに対して、割り当てられたノードの制御規則を送出する。
【００５６】
例えば、図３に示すノード［ｔｒｉｇｅｒ］の記述の内容全てを実行制御装置１２(1)に対して送出し、図３に示すノード［ｓｅｒｃｈ１］の記述の内容全てを実行制御装置１２(2)に対して送出し、図３に示すノード［ｓｅｒｃｈ２］の記述の内容全てを実行制御装置１２(3)に対して送出し、図３に示すノード［ｒｅｓｕｌｔ］の記述の内容全てを実行制御装置１２(4)に対して送出する。
【００５７】
なお、この例では割り当てたノードの制御規則だけをゲートウェイＧＷが各実行制御装置１２に送出しているが、全てのノードの制御規則を各々の実行制御装置１２に送出し、各実行制御装置１２の解釈機構２２が割り当てられたノードの制御規則だけを抽出して処理するように変更してもよい。
以上のように、この例ではシステムに接続されたＮ個の実行制御装置１２のそれぞれが、制御規則に基づき、他の実行制御装置１２から入力されるデータに従って自動的にクエリ文をデータベース１１に発行し、クエリ文の実行結果をデータとして他の実行制御装置１２に送出するので、Ｎ個の実行制御装置１２は、データベース１１(1)〜１１(N)のデータが整合性を保つような協調動作を実現することができる。このため、マスタ制御装置を設ける必要はない。
【００５８】
上記の説明においては、複数のデータベース１１間の協調動作だけを説明したが、実際にユーザが各データベース１１にアクセスしようとする場合には、次のようにすればよい。
ユーザが新規データをデータベース１１に追加する場合には、例えば、図３のノード［ｔｒｉｇｅｒ］の中にあるＳＱＬ文の「ｉｎｓｅｒｔ」だけを持つクエリ文を利用する。あるいは、図２のゲートウェイＧＷ上もしくはそれと同様の位置にある計算のアプリケーションプログラムを用い、図示しないネットワークを介して各データベース１１に直接（実行制御装置１２を通さずに）アクセスすればよい。
【００５９】
また、ユーザが各データベース１１からデータを読み出そうとする場合にも、図２のゲートウェイＧＷ上もしくはそれと同様の位置にある計算のアプリケーションプログラムを用い、図示しないネットワークを介して各データベース１１に直接アクセスすればよい。
なお、上記のようなユーザのデータベース１１に対するアクセスを容易にするためには、各々のデータベース１１上にどのような情報が存在するのかを表すカタログ情報や、ユーザのクエリ文の実行結果が結局いずれのデータベース１１に配置されたのかを示す情報をゲートウェイＧＷなどが管理しユーザに提供するのが望ましい。
【００６０】
（第２の実施の形態）  本発明のデータベースの実行制御装置のもう１つの実施の形態について、図８〜図１０を参照して説明する。この形態は、請求項４及び請求項５に対応する。
図８はこの形態のデータベースシステムの構成を示すブロック図である。図９はこの形態の実行制御装置の構成を示すブロック図である。図１０はこの形態の実行制御装置の動作を示すフローチャートである。
【００６１】
この形態は、第１の実施の形態の変形例である。図８〜図１０において、第１の実施の形態と対応する要素及び処理については同一の符号及びステップ番号を付けて示してある。第１の実施の形態と同一の部分については、以下の説明を省略する。
この形態では、請求項４のデータ構成解釈手段は受信機構２１Ｂ及びステップＳ３１に対応する。また、請求項５の定義情報サーバ及び定義情報取得手段は、それぞれゲートウェイＧＷ及び解釈機構２２Ｂに対応する。
【００６２】
図８に示すゲートウェイＧＷは、制御規則だけでなく定義情報をも生成し、それらを各実行制御装置１２に与える。この定義情報は、複数の実行制御装置１２の間でネットワーク１３を介して互いに伝送されるデータの構造を把握するのに必要な情報であり、予め定めたデータ形式毎に定義される。
【００６３】
例えば、あるデータ形式「ｔａｂｌｅ」の定義情報の内容は次のような情報を含んでいる。
デリミタ：＝，
タグ１：＝’
タグ１の型：＝可変長文字列
タグ２：＝
タグ２の型：＝３２ビット整数型
また、図３，図４の定義情報のノード［ｓｅｒｃｈ１］からノード［ｒｅｓｕｌｔ］にアーク「ｌｏｇ１」として伝送されるデータは、例えば次のような内容のテキストデータになる。
【００６４】
「ＴＡＢＬＥ：ｓｅｒｃｈ１：ｌｏｇ１：ＤＡＴＡ：’２９／Ｊｕｌ／１９９９：１８：４０：０１＋０９００’，９９０７２９，’ＨｔｍｌＤｏｃ／ｍｅｎｕ．ｈｔｍｌ’」
このテキストデータの中で、「ＴＡＢＬＥ：ｓｅｒｃｈ１：ｌｏｇ１：」がデータヘッダであり、それ以降がデータの本文である。このデータヘッダの最初にある「ＴＡＢＬＥ」は、このテキストデータの本文のデータ形式が「ｔａｂｌｅ」であることを意味するデータ形式識別子である。
【００６５】
ノード［ｒｅｓｕｌｔ］に割り当てられた実行制御装置１２においては、上記のようなデータが受信データＤinとして図９の受信機構２１Ｂに入力される。また、上記のような定義情報が図９の定義情報Ｄｄとして解釈機構２２Ｂから受信機構２１Ｂに入力される。
ノード［ｒｅｓｕｌｔ］に割り当てられた実行制御装置１２の受信機構２１Ｂは、次のように動作する。なお、この例ではデータベース１１としてリレーショナルデータベースを用いる場合を想定している。
【００６６】
１．受信データＤinのデータヘッダに含まれるデータ形式識別子「ＴＡＢＬＥ」を参照して、受信データＤinの解析に用いる定義情報のデータ形式を「ｔａｂｌｅ」に決定する。
２．決定したデータ形式を「ｔａｂｌｅ」の定義情報を参照する。
３．前記テキストデータを受信データＤinとして受信した場合、「ＤＡＴＡ」以降のデータ本体を定義情報のデリミタ「，」で区切って分離する。その結果、「’２９／Ｊｕｌ／１９９９：１８：４０：０１＋０９００’」と「９９０７２９」と「’ＨｔｍｌＤｏｃ／ｍｅｎｕ．ｈｔｍｌ’」とが分離して取り出される。
【００６７】
４．定義情報のタグ１「’」が先頭にある「’２９／Ｊｕｌ／１９９９：１８：４０：０１＋０９００’」及び「’ＨｔｍｌＤｏｃ／ｍｅｎｕ．ｈｔｍｌ’」をそれぞれタグ１の型として定義された「可変長文字列」として解釈する。
５．「９９０７２９」をタグ２の型として定義された「３２ビット整数型」として解釈する。
【００６８】
６．解釈した値を、決定したデータ形式「ｔａｂｌｅ」に従ってリレーショナルデータベースの表に蓄積する。蓄積先は、解釈機構２２Ｂから指定される「保存先」の「ｒｅｓｕｌｔ１」に従って、表名が「ｒｅｓｕｌｔ１」の表とする。解釈した値は、図９ではデータＤi2として発行機構２４又はデータベース１１に保存される。「ｒｅｓｕｌｔ１」の表が実行制御装置１２Ｂ上に存在する場合には発行機構２４に保存され、「ｒｅｓｕｌｔ１」の表がデータベース１１に存在する場合にはデータベース１１に保存される。
【００６９】
７．ノード「ｒｅｓｕｌｔ１」からアーク「ｌｏｇ１」のデータを受信したこと「そのデータの種類」を発火機構２３に通知する。
図９に示すように、定義情報Ｄｄは解釈機構２２Ｂを介して送信機構２５Ｂにも印加される。送信機構２５Ｂは、データベース１１が返すクエリ文の実行結果を発行機構２４から受信すると、定義情報Ｄｄの内容に適合するようにデータの構成を変換し、送信データＤoutを組み立てる。
【００７０】
受信機構２１Ｂの動作は、図１０に示すステップＳ３１が追加された以外は第１の実施の形態と同一である。ステップＳ３１では、受信機構２１Ｂは定義情報Ｄｄの内容に従って受信データＤinを解釈し、指定された形式のデータＤi2に変換する。
また、送信機構２５Ｂの動作は図１０に示すステップＳ３２が追加された以外は第１の実施の形態と同一である。ステップＳ３２では、送信機構２５Ｂは送信データＤoutを定義情報Ｄｄの内容に従って組み立てる。
【００７１】
この例では、受信データＤinの構造を定義情報を用いて解釈するので、データ構成の異なる新たなデータベースを協調動作に参加させる場合にも、データ構成の変換を定義情報の変更だけで実現することができ、システムの変更に伴う負担が小さくなる。
なお、図８の例では同一のゲートウェイＧＷが制御規則及び定義情報の両方を送出するが、制御規則及び定義情報をそれぞれ異なるサーバから送出するように構成を変更してもよい。
【００７２】
【発明の効果】
以上の通り、本発明のデータベースの実行制御装置では、種類の異なる複数のデータベースを互いに協調させる場合であっても、全てのデータベースの機能をそのまま使用できるため、機能面での相乗効果が得られる。
また、新たなデータベースを協調動作に参加させる場合には、追加するデータベースの実行制御装置だけについて変更を行えばよい。従って、既に運用されているデータベースを新たに協調動作に取り込んだり、新規開発されたデータベースを協調動作に取り込むことが容易である。
【００７３】
また、データベースを協調動作のための制御機能が、複数の実行制御装置のそれぞれに分散するので、多数のデータベースを協調動作させる場合であってもボトルネックが生じない。
すなわち、本発明のデータベースの実行制御装置によりオープンでスケーラブルなデータベース協調環境が実現できる。
【図面の簡単な説明】
【図１】第１の実施の形態の実行制御装置の構成を示すブロック図である。
【図２】第１の実施の形態のデータベースシステムの構成を示すブロック図である。
【図３】制御規則の記述例（１）をデータフローグラフのテキスト形式で示す模式図である。
【図４】制御規則の記述例（２）をデータフローグラフの図形式で示す模式図である。
【図５】解釈機構の入力と各出力の例を示す模式図である。
【図６】第１の実施の形態の実行制御装置の動作を示すフローチャートである。
【図７】制御規則のダウンロードの手順を示すシーケンス図である。
【図８】第２の実施の形態のデータベースシステムの構成を示すブロック図である。
【図９】第２の実施の形態の実行制御装置の構成を示すブロック図である。
【図１０】第２の実施の形態の実行制御装置の動作を示すフローチャートである。
【図１１】従来例のデータベースシステムの構成を示すブロック図である。
【図１２】データベース間の仕様の違いを吸収するための従来の構成を示すブロック図である。
【符号の説明】
１１  データベース
１２，１２Ｂ  実行制御装置
１３  ネットワーク
２１，２１Ｂ  受信機構
２２，２２Ｂ  解釈機構
２３  発火機構
２４  発行機構
２５，２５Ｂ  送信機構
ＧＷ  ゲートウェイ
ＵＳ  ユーザ端末
【図１】
0003795289.tif 000002
【図２】
0003795289.tif 000003
【図３】
0003795289.tif 000004
【図４】
0003795289.tif 000005
【図５】
0003795289.tif 000006
【図６】
0003795289.tif 000007
【図７】
0003795289.tif 000008
【図８】
0003795289.tif 000009
【図９】
0003795289.tif 000010
【図１０】
0003795289.tif 000011
【図１１】
0003795289.tif 000012
【図１２】
0003795289.tif 000013