説明

分散データベースシステム

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、分散データベースシステムに係り、特に、CSS(Client ServerSystem)で業務処理を実行するシステムを構築する際の、分散データベースシステムにおける使用データベースの切換え制御手法に関する。
【0002】
【従来の技術】近年、分散データベースシステムを用いたCSSで、業務処理を実行するシステムを構築することが、よく行われている。
【0003】図2は、従来のシステム構築例を模式的に示す説明図である。業務処理を、クライアント側業務処理201と、サーバ側業務処理202とに分けて、それぞれをクライアントマシンと、サーバマシンで動作させる。サーバマシンには、データベースマネイジメントシステム(以下、DBMSと称する)203と、サーバデータベース(以下、サーバDBと称する)とが存在する。
【0004】例えば、サーバDB204内には、システム全体で共通に使用される表A,表B,表Cがあり、その表A,表B,表Cから一部のデータを抽出して作成した表Tで、表T上のデータを編集・加工する業務を行う場合、表TがサーバDB204に生成されるので、表Tへのアクセスを行う度に、クライアント−サーバ間の通信が発生する。特に、表Tへのアクセスが頻繁に発生すると、クライアント−サーバ間の通信オーバヘッドが大きくなる。
【0005】また、複数のクライアントから表Tへのアクセスが発生すると、サーバマシンに負荷が集中する。
【0006】一方、データベースを用いたシステムを構築するときに、複数の表から特定の行及び列を抽出して作成し、編集・加工を行った後、トランザクションの終了時にデータを消去する、一時的な表(以下、一時表と称する)を設けることはよく行われている。このとき、一時表がサーバマシンにあると、クライアント数の増加に伴いサーバマシンに負荷が集中する。
【0007】以上記述したように、CSSで業務処理を実行するシステムを構築する上で、クライアント数の増加に伴い、サーバマシンに負荷が集中することが問題となってきている。そこで、サーバマシンの負荷を分散することが工夫されつつある。このような技術については、例えば、特開平6−259308号公報や特開平8−339323号公報に記載されている。
【0008】一方、運用時に空いているクライアントマシンで、目的とする業務処理を行う形態を取ることがある。この場合、クライアントマシンで動作する業務処理は動的に変化する。
【0009】
【発明が解決しようとする課題】上記した従来技術のうち、特開平8−339323号公報に開示された技術では、複数のサーバマシンで、アクセス回数が一定数を超えた場合、アクセス先にデータ(分散データ)を移動させることで、分散データの配置の最適化を図るようにしている。
【0010】しかしながら、この先願に開示された技術は、全ての表をサーバマシンに生成するので、例えば、一時表についてのクライアント−サーバ間の通信オーバヘッドを抑止できない。
【0011】また、特開平6−259308号公報に開示された技術では、サーバマシンの負荷及び記憶媒体の空き状況を監視し、負荷や記憶媒体の空き状況の均衡を図るようにしている。
【0012】しかしながら、この先願に開示された技術では、負荷や記憶媒体の空き状況によっては、必要なデータが、離れたマシンに存在することになり、データへのアクセスについて、通信オーバヘッドが大きくなる事態が発生する。特に一時表のように、1つのトランザクションの間だけ存在すれば十分である表が、離れたマシンに存在すると、不要な通信オーバヘッドが発生する。
【0013】本発明は上記の点に鑑みなされたもので、その目的とするところは、サーバマシンの複数の表から抽出したデータを格納するための表を、各クライアントマシンに生成しておき、クライアントマシンで業務処理が実行されると、上記表にサーバマシンの複数の表から抽出したデータを格納し、以後クライアントマシン内で処理を完了させることで、上記表のデータをクライアントマシン内で編集・加工することを可能し、以って、サーバマシンとクライアントマシン間の通信オーバヘッドの削減を図ると共に、サーバマシンのDBMSの負荷を分散させることにある。特に、本発明では、各クライアントマシンで実行する業務処理が動的に変化する運用形態における一時表のように、業務処理を行うクライアントマシン内に存在するときに、最も効率が良いと定義者が認識できる表について、これを常に業務処理を行うクライアントマシンに置くことで、不要な通信オーバヘッドを抑止することを、その目的とする。
【0014】さらに、本発明の他の目的とするところは、上記の目的を実現するにあたり、データベースの表をクライアントマシンに生成するか否かの識別情報を、定義者が変更した場合、システムで各クライアントマシンにおける表の生成・削除を自動的に行うことにより、定義者の操作の手間を軽減させることにある。
【0015】
【課題を解決するための手段】上記した目的を達成するために、本発明による分散データベースシステムでは、サーバマシン下のデータベースの他に、各クライアントマシン下にもデータベースを設けると共に、処理対象表が、各クライアントマシンに生成する表か否かの識別情報を識別する手段を設ける。そして、定義時に、表毎に定義者が、処理対象表がクライアントマシンに生成する表か否かの識別情報(種別)を指定することにより、各クライアントマシンに生成する表を、自動的に各クライアントマシン下のデータベースに生成して、運用時に、各クライアントマシンに生成した表へ格納するデータを、サーバマシン下のデータベースの表から抽出して格納後、クライアントマシン下で業務処理中のデータベースへアクセスを行うようにされる。
【0016】また、各クライアントマシンに生成する表について、この表を生成するのに必要な情報を管理する表を設けると共に、各クライアントマシンのDBMSに表を生成する要求を行う手段を設けて、定義者が各クライアントマシンに生成する表か否かの識別情報を変更した場合には、システムで自動的に、各クライアントマシンにおける表の生成・削除を行うようにされる。
【0017】斯様にすることにより、処理対象表が、各クライアントマシンに生成する表か否かの識別情報を識別することによって、アクセスを行うデータベースを決定することができるので、処理対象表が各クライアントマシンに生成する表である場合には、サーバマシンへのアクセスを抑止できる。
【0018】また、各クライアントマシンに生成する表について、この表を生成するのに必要な情報を管理する表により、表を生成する要求を効率よく発生することができる。
【0019】また、各クライアントマシンに生成する表か否かの識別情報を定義者が変更した場合、各クライアントマシンのDBMSに表を生成する要求を行う手段が、表を生成するのに必要な情報を管理する表から、表を生成する要求を各クライアントマシンに送信できるので、定義者の手操作が不要になる。
【0020】
【発明の実施の形態】以下、本発明の実施の形態を、図面を参照して説明する。図3は、本発明の1実施形態に係る分散データベースシステムの構成を模式的に示す図である。
【0021】図3に示すように、業務処理は、クライアント側業務処理301と、サーバ側業務処理302とに分けて、それぞれをクライアントマシンと、サーバマシンで動作させる。
【0022】サーバマシンには、サーバDBMS303と、サーバDB304とが存在し、クライアントマシンにも、クライアントDBMS305と、クライアントデータベース(以下、クライアントDBと称する)306とが存在する。ここで、クライアントDB306は、各クライアントマシンに生成する表を格納するデータベースであり、クライアントDBMS305は、クライアントDB306内の表を管理するデータベースマネイジメントシステムである。
【0023】各クライアントマシンに生成する表を、クライアントDB306に格納するので、この表へのアクセスを行う際、クライアント−サーバ間の通信が不要となると共に、従来サーバDBMS303に集中していた負荷を、クライアントDBMS305に分散できる。
【0024】例えば、サーバDB304内に、システム全体で共通に使用される表A,表B,表Cがあり、その表A,表B,表Cから一部のデータを抽出して作成した表Tで、頻繁に表T上のデータを編集・加工する業務を行う場合、表TをクライアントDB306に生成し、サーバDB304の表A,表B,表Cから必要なデータを取寄せて表Tに格納して、表Tのデータの編集・加工を行うことにより、クライアント−サーバ間の通信が不要となり、表Tのデータの編集・加工を行う処理に要していたサーバDBMS303負荷を、クライアントDBMS305に分散できる。
【0025】図1は、本実施形態の分散データベースシステムの構成図である。同図において、10はクライアントマシン、11はクライアントDBMS、108はクライアントDBであり、20はサーバマシン、21はサーバDBMS、104はサーバDBであり、120は共有ディスクである。
【0026】まず、定義時の動作を説明する。クライアントマシン10の表定義部101は、定義者の指示に従って、表やインデクス等のデータベースの構成要素の定義を行う部分である。定義者がクライアントマシン10で、新たに表やインデクス等の定義を行うと、その要求をLAN102を介してサーバマシン20の表定義部103に送る。サーバマシン20の表定義部103は、サーバDBMS21のDBMSカーネル部を介して、サーバDB104の定義情報105を更新し、定義者が定義した表やインデクスを生成した後に、表配布管理部106に制御を渡す。
【0027】図4に、定義情報105の一部である表管理表を示す。表管理表には、識別子と表名の他に、種別情報401と生成日時402とがある。種別情報401には、表毎に定義者が、各クライアントマシン10に生成する表か否かの識別情報を格納し、生成日時402には、表を生成した日時を格納する。
【0028】種別情報401の値が「クライアント」のときには、その表は、各クライアントマシンに生成する表であることを示し、種別情報401の値が「サーバ」のときには、サーバマシンのみに生成する表であることを示している。
【0029】表配布管理部106は、新たに追加/更新した表管理表のレコードの種別情報401の値が「サーバ」のときには、直ちに、サーバDB104への変更結果を、クライアントマシン10の表定義部101に送信する。
【0030】また、表配布管理部106は、種別情報401の値が「クライアント」のときには、定義情報105の一部である定義生成管理表を更新し、共有ディスク120内の要求先リスト107のファイルを更新し、さらに、各クライアントマシン10へ、定義者が定義した表やインデクス等を生成するスクリプト文を送信する。なお、表配布管理部106の詳細な動作説明は、後述する。
【0031】図5に、定義情報105の一部である定義生成管理表を示す。定義生成管理表には、表名501、表生成文502、インデクス生成文503等がある。表名501には、定義者が定義した表の表名を格納し、表生成文502には、表を生成するスクリプト文を格納し、インデクス生成文503には、表のインデクスを生成するスクリプト文を格納する。
【0032】各クライアントマシン10では、サーバマシン20の表配布管理部106から送られてきた、定義者が定義した表やインデクス等を生成するスクリプト文を実行する。これによって、クライアントDB108に、定義者が定義した表を生成できる。
【0033】図6に、共有ディスク120の要求先リスト107の内容を示す。要求先リスト107には、表名601と生成日時602の項があり、それぞれに表管理表の表名、生成日時の情報を、表配布管理部106が格納する。
【0034】次に、運用時の動作を説明する。クライアント側業務処理109がデータベースへのアクセスを発生すると、要求先判定部110が、共有ディスク120内の要求先リスト107を参照して、要求先の表が、クライアントDB108に存在するか、サーバDB104に存在するかを判断する。なお、要求先判定部110の詳細な動作説明は、後述する。
【0035】要求先の表がクライアントDB108に存在する場合には、クライアントマシン10のクライアントDBMS11内の問合処理部、DBMSカーネル部を介して、クライアントDB108にアクセスし、また、要求先の表がサーバDB104に存在する場合には、サーバマシン20のサーバDBMS21内の問合処理部、DBMSカーネル部を介して、サーバDB104にアクセスする。
【0036】ここで、要求先の表が、現在運用しているクライアントマシン以外で生成され、そのとき、本クライアントマシン10が停止していた等の理由で、要求先の表が本クライアントDB108に存在すると判断しても、本クライアントマシン10のクライアントDB108に存在しない、または、存在していても定義内容が異なる場合がある。
【0037】要求先の表がクライアントDB108に存在すると判断したにもかかわらず、存在しない場合には、サーバDB104の定義情報105の定義生成管理表から、該当レコードを取出してきて、実行することにより、クライアントDB108に要求先の表を生成する。
【0038】また、クライアントDB108に存在していても、定義内容が最新であるか否かの判断は、クライアントDB108内の表管理表内の生成日時402と、要求先リスト107のファイル内の生成日時との比較で行う。
【0039】次に、表配布管理部106の動作を説明する。処理対象表の生成、処理対象表のインデクスの生成、及び表管理表の更新が完了後、表配布管理部106は処理を実行する。
【0040】図7は、表配布管理部106の動作の流れを示す処理フロー図である。まず、表配布管理部106に、処理対象表の表名と、要求元のクライアントマシンを識別する情報と、処理対象表の表生成文と、処理対象表のインデクス生成文等の、定義生成管理表のレコードを作成するのに必要な情報を与えて、実行を開始させる。
【0041】ここで、処理対象表の生成、処理対象表のインデクスの生成、及び表管理表の更新は、表配布管理部106による処理を実行する前に行っているので、処理対象表の表生成文、処理対象表のインデクス生成文等は、既に求まっており、表配布管理部106に与えることができる。
【0042】表配布管理部106は、サーバDB104の表管理表を与えられた処理対象表の表名で検索する(ステップ701)。先にも述べたように、表管理表の更新が完了しているので、該当レコードは必ず見つかる。そこで、見つかった表管理表のレコード内の種別情報401の値を評価する(ステップ702)。
【0043】種別情報401の値が「サーバ」ならば、共有ディスク120内の要求先リスト107のファイルのレコードを、与えられた表名で検索し(ステップ713)、該当レコードの存在を評価する(ステップ714)。共有ディスク102内の要求先リスト107のファイル内に該当レコードが存在する場合、要求先リスト107のファイルの該当レコードを削除する(ステップ715)。その後、要求元のクライアントマシン10に実行結果を送信して(712)、表配布管理部106は処理を終える。
【0044】種別401の値が「クライアント」ならば、サーバDB104の定義生成管理表を与えられた処理対象表の表名で検索する(ステップ703)。その後、定義生成管理表に該当レコードが存在するか否かを評価する(ステップ704)。定義生成管理表に該当レコードが存在する場合、与えられた処理対象表の表生成文、処理対象表のインデクス生成文等の、定義生成管理表のレコードを作成するのに必要な情報を用いて、定義生成管理表の該当レコードを更新する(ステップ705)。
【0045】逆に、定義生成管理表に該当レコードが存在しない場合、与えられた処理対象表の表生成文、処理対象表のインデクス生成文等の、定義生成管理表のレコードを作成するのに必要な情報を用いて、定義生成管理表の該当レコードを新規に追加する(ステップ706)。
【0046】次に、共有ディスク120内の要求先リスト107のファイルのレコードを、与えられた表名で検索し(ステップ707)、該当レコードの存在を評価する(ステップ708)。
【0047】共有ディスク120内の要求先リスト107のファイル内に該当レコードが存在する場合、ステップ701で見つけた表管理表の該当レコード内の生成日時を用いて、要求先リスト107のファイルの、該当レコードの生成日時602の項の値を変更する(ステップ709)。
【0048】逆に、共有ディスク120内の要求先リスト107のファイル内に該当レコードが存在しない場合、ステップ701で見つけた表管理表の該当レコード内の生成日時を用いて、要求先リスト107のファイルにレコードを新たに追加する(ステップ710)。
【0049】これで、共有ディスク120内の要求先リスト107のファイル内には、最新の表管理表のレコード内の種別情報401の値が「クライアント」である表についてのレコードが収まることになる。
【0050】この後、現在接続中の全てのクライアントマシン10について、サーバマシンでの生成日時と共に、表の生成文やインデクス生成文を送信する(ステップ711)。そして、要求元のクライアントマシン10に実行結果を送信して(712)、表配布管理部106は処理を終える。
【0051】クライアントマシン10は、上記した送信メッセージを受取ると、送れてきたサーバマシン20での生成日時より未来の時刻(その時のクライアントマシン10での現在時刻が、送られてきたサーバマシンでの生成時間よりも未来の場合は、時刻変更を行わないが、送られてきたサーバマシンでの生成時間よりも過去の場合は、送られてきたサーバマシンでの生成日時に、現在時刻を変更する)にした後に、表の生成文、インデクス生成文を実行する。
【0052】これによって、クライアントDB108内の表管理表の生成日時と、共有ディスク120内の要求先リスト107内の生成日時とを比較すれば、クライアントDB108内の表が最新の表であるか否かが判断できることになる。
【0053】続いて、要求先表名を与えて、要求先判定部110を動作させたときの動作を説明する。
【0054】図8は、要求先判定部110の動作の流れを示す処理フロー図である。まず、要求先判定部110は、共有ディスク102内の要求先リスト107のファイルを与えられた表名で検索し(ステップ801)、該当レコードの有無を評価する(ステップ802)。
【0055】ここで、該当レコードが存在しない場合には、要求先表は、サーバDB104内の表管理表で、種別情報401が「サーバ」となっているレコードとして格納されているので、要求先表はクライアントDB108には、存在しないことが知れる。よって、要求先表はサーバDB104にアクセスすべき表となる(ステップ813)。
【0056】逆に、該当レコードが存在する場合、要求先表は、サーバDB104内の表管理表で、種別情報401が「クライアント」となっているレコードとして格納されているので、要求先表はクライアントDB108に、存在すべき表となる。ただし、このとき、実際にクライアントDB108に、要求先表が最新の定義で存在するとは限らないので、チェックを行う必要が生じる。
【0057】そこで、変数FDateに、ステップ801で見つけた共有ディスク120内の要求先リスト107のファイル内のレコードの生成日時をセットする(ステップ803)。次に、クライアントDB108内の表管理表を与えられた表名で検索し(ステップ804)、該当レコードの有無を評価する(ステップ805)。
【0058】該当レコードが存在する場合、変数Ddateに、該当レコード内の生成日時の値を格納する(ステップ806)。そして、ステップ803でセットした変数Fdateの値と、ステップ806でセットした変数Ddateの値とを比較する(ステップ807)。
【0059】ここで、変数Fdateの値の方が新しい場合は、ステップ805において該当レコードが存在しない場合と同様に、要求先表は、クライアントDB108において、最新の定義で生成されていないと判断できる。
【0060】逆に、変数Fdateの値の方が新しくない場合は、要求先表は、クライアントDB108において、最新の定義で生成されていることになるので、要求先表はクライアントDB108にアクセスすべき表となる(ステップ814)。
【0061】要求先表が、クライアントDB108であり、かつ、最新の定義で生成されていないと判断した場合には、サーバDB104に、表・インデクスの生成文、及びその生成日時情報を要求する(ステップ808)。
【0062】次に、サーバDB104から戻ってきた生成日時と本クライアントマシンの現在時刻とを比較し(ステップ809)、送られてきたサーバマシンでの生成時間よりも過去の場合は、送られてきたサーバマシンでの生成日時で現在時刻を変更する(ステップ810)。
【0063】その後、サーバDB104から戻ってきた表の生成文、インデクス生成文を実行する(ステップ811)。これで、要求先表は、クライアントDB108において、最新の定義で生成されたことになり、要求先表はクライアントDB108にアクセスすべき表となる(ステップ812)。
【0064】図8の説明から明らかなように、クライアントマシン10に生成する表は、システムで自動的に定義内容を統一することができる。
【0065】以上述べたように本実施形態によれば、従来は図2のように、表TがサーバDB204に生成されてものに対し、図3のように表TをクライアントDB306に生成するので、表Tへのアクセスを行うのに、クライアント−サーバ間の通信が不要となる。また、それによって、サーバDBMS303の負荷がクライアントDBMS305に分散できる。
【0066】さらに、表管理表の種別情報401の値を変更するだけで、システムで各クライアントマシンへの表の生成・削除を自動的に行うことができる。
【0067】
【発明の効果】叙上のように本発明によれば、サーバマシンとそれに接続した複数のクライアントマシンで、業務処理を実行する分散データベースシステムにおいて、各クライアントマシンが業務を処理するにあたり、クライアントマシンが固有に扱うデータを操作する場合に、クライアントマシン内だけで処理を完了させることで、サーバマシンとクライアントマシン間の通信オーバヘッドの削減と、サーバマシンのDBMSの負荷の分散とが実現できる。特に、一時表のように、恒久的に記憶媒体を占有しない表について、クライアントマシンで処理を実行する場合に有効である。
【0068】また、データベースの表が、各クライアントマシンが固有に扱うデータを格納する表であるか、全クライアントマシンで共通に扱う表であるかの識別情報を、定義者が変更した場合、システム自体で、各クライアントマシンへの表の生成・削除を自動的に行うことにより、特別な手操作を定義者が行う必要がなくなり、定義者の手間が大幅に軽減できる。
【図面の簡単な説明】
【図1】本発明の1実施形態に係る分散データベースシステムの構成図である。
【図2】従来のシステムを模式的に示す説明図である。
【図3】本発明の1実施形態に係る分散データベースシステムを模式的に示す説明図である。
【図4】本発明の1実施形態における、定義情報の一部である表管理表を示す説明図である。
【図5】本発明の1実施形態における、定義情報の一部である定義生成管理表を示す説明図である。
【図6】本発明の1実施形態における、要求先リストのファイル内容を示す説明図である。
【図7】本発明の1実施形態における、表配布管理部の動作の流れを示す処理フロー図である。
【図8】本発明の1実施形態における、要求先判定部の動作の流れを示す処理フロー図である。
【符号の説明】
10 クライアントマシン
11、305 クライアントDBMS
20 サーバマシン
21、303 サーバDBMS
101 クライアントマシンの表定義部
102 LAN
103 サーバマシンの表定義部
104、304 サーバDB
105 サーバDBの定義情報
106 表配布管理部
107 要求先リスト
108、306 クライアントDB
109 クライアント側業務処理
110 要求先判定部
111 サーバ側業務処理
120 共有ディスク

【特許請求の範囲】
【請求項1】 データベースを有するサーバマシンと、それに接続したそれぞれがデータベースを有する複数のクライアントマシンで、業務処理を実行する分散データベースシステムにおいて、サーバマシンと各クライアントマシンとに接続した共有ディスクを設けて、この共有ディスクには、サーバマシンが作成した表管理表のうちで、各クライアントマシンのデータベース内にそれぞれ存在する表に関する表名と生成日時とを含む要求先リスト情報を格納しておき、クライアントマシンは、共有ディスクの要求先リスト情報を参照して、要求先表が、サーバマシンのデータベースに存在するのか、クライアントマシンのデータベースに存在するのかを判断し、要求先表がサーバマシンのデータベースに存在する場合には、サーバマシンのデータベースにアクセスして必要データを取得してクライアントマシンのデータベースへ表を生成し、要求先表がクライアントマシンのデータベースに存在しかつ要求先表が最新の定義で生成されているものなら、クライアントマシンのデータベースに既に生成されている表をアクセスすべき表とし、要求先表がクライアントマシンのデータベースに存在していても要求先表が最新の定義で生成されていないならば、サーバマシンのデータベースにアクセスして必要データを取得してクライアントマシンのデータベースへ表を生成し、各クライアントマシンが業務を処理するにあたり、クライアントマシンのデータベースに、クライアントマシンが占有して使用するためのデータ格納用の表を最新の定義でシステムが自動的に作成しておき、クライアントマシンにおいて専有して使用する表のデータを操作する際、サーバマシンへのアクセスを抑止するようにしたことを特徴とする分散データベースシステム。

【図2】
image rotate


【図6】
image rotate


【図1】
image rotate


【図3】
image rotate


【図4】
image rotate


【図5】
image rotate


【図7】
image rotate


【図8】
image rotate


【特許番号】特許第3527834号(P3527834)
【登録日】平成16年2月27日(2004.2.27)
【発行日】平成16年5月17日(2004.5.17)
【国際特許分類】
【出願番号】特願平9−229675
【出願日】平成9年8月26日(1997.8.26)
【公開番号】特開平11−65913
【公開日】平成11年3月9日(1999.3.9)
【審査請求日】平成11年9月21日(1999.9.21)
【出願人】(000152985)株式会社日立情報システムズ (409)
【参考文献】
【文献】特開 平7−334402(JP,A)
【文献】Keller A. M. et al.,A Predicate−based Caching Scheme for Client−Server Database Architectures,VLDB Journal,ドイツ,Springer,1996年,Vol.5,No.1,p.35−47,URL,http://www.informatik.uni−trier.de/〜ley/db/journals/vldb/KellerB96.html
【文献】Dar S. et al.,Semantic Data Caching and Replacement,Proceedings of 22th International Conference on Very Large Data Bases,米国,Morgan Kaufmann,1996年p.330−341,URL,http://www.infomatik.uni−trier.De/〜ley/db/conf/vldb/DarFJST96.html