(57)【特許請求の範囲】
【請求項１】
クライアント側プロセスとサーバ側プロセスとが異なるマシン上において動作するクライアント・サーバ型のデータベース管理システムにおいて、
クライアントマシンのオペレーティングシステムの起動順序を表す起動順序識別子を取得してサーバ側に送る起動順序識別子通知手段と、
サーバ側にて前記クライアントマシンとの間で通信を行うときに設定されたネットワークアドレス、前記クライアント側プロセスからのデータベースアクセス要求を処理する実行体を一意に識別する実行体識別子、および通知された前記起動順序識別子を関連付けして管理している実行体管理手段と、
前記実行体管理手段が前記クライアント側プロセスからのデータベースアクセス要求を受けたときに、前記クライアント側プロセスが動作しているマシンのネットワークアドレスと同じネットワークアドレスと対応付けられている前記実行体識別子によって特定される実行体を検索する実行体検索手段と、
検索された実行体の前記実行体識別子と対応付けられている前記起動順序識別子と、データベースアクセス要求を出した前記クライアント側プロセスから通知された前記起動順序識別子とを比較する起動順序識別子比較手段と、
前記起動順序識別子比較手段による比較の結果、前記起動順序識別子が異なる場合には、検索された実行体およびその実行体がデータベースアクセス処理に伴い獲得している資源を回収する回収処理を実行し、前記起動順序識別子が同じ場合には、前記回収処理を実行しない回収手段と、
を備えていることを特徴とするクライアント・サーバ型のデータベース管理システム。
【請求項２】
前記起動順序識別子通知手段は、前記サーバ側プロセスに対してデータベースアクセス要求を行うときに前記起動順序識別子をサーバ側に送ることを特徴とする請求項１記載のクライアント・サーバ型のデータベース管理システム。
【請求項３】
前記起動順序識別子は、前記クライアントマシンのオペレーティングシステムが起動したときの起動時刻であることを特徴とする請求項１記載のクライアント・サーバ型のデータベース管理システム。
【請求項４】
クライアント・サーバ型のデータベース管理システムのクライアント側プロセスからのデータベースアクセス要求を受けて処理するためのサーバ側プロセスが動作しているサーバ装置において、
前記クライアント側プロセスが動作するマシンとの間で通信を行うときに設定されたネットワークアドレス、前記クライアント側プロセスからのデータベースアクセス要求を処理する実行体を一意に識別する実行体識別子、および前記クライアント側プロセスから通知されたオペレーティングシステムの起動順序識別子を関連付けして管理している実行体管理手段と、
前記実行体管理手段が前記クライアント側プロセスからのデータベースアクセス要求を受けたときに、前記クライアント側プロセスが動作しているマシンのネットワークアドレスと同じネットワークアドレスと対応付けられている前記実行体識別子によって特定される実行体を検索する実行体検索手段と、
検索された実行体の前記実行体識別子と対応付けられている前記起動順序識別子と、データベースアクセス要求を出した前記クライアント側プロセスから通知された前記起動順序識別子とを比較する起動順序識別子比較手段と、
前記起動順序識別子比較手段による比較の結果、前記起動順序識別子が異なる場合には、検索された実行体およびその実行体がデータベースアクセス処理に伴い獲得している資源を回収する回収処理を実行し、前記起動順序識別子が同じ場合には、前記回収処理を実行しない回収手段と、
を備えていることを特徴とするサーバ装置。
【請求項５】
クライアント・サーバ型のデータベース管理システムのサーバ側プロセスのプログラムを記録したコンピュータ読み取り可能な記録媒体において、
クライアント側プロセスが動作するマシンとの間で通信を行うときに設定されたネットワークアドレスと、前記クライアント側プロセスからのデータベースアクセス要求を処理する実行体を一意に識別する実行体識別子と、前記クライアント側プロセスから通知されたオペレーティングシステムの起動順序識別子とを関連付けして管理している実行体管理手段、
前記実行体管理手段が前記クライアント側プロセスからのデータベースアクセス要求を受けたときに、前記クライアント側プロセスが動作しているマシンのネットワークアドレスと同じネットワークアドレスと対応付けられている前記実行体識別子によって特定される実行体を検索する実行体検索手段、
検索された実行体の前記実行体識別子と対応付けられている前記起動順序識別子と、データベースアクセス要求を出した前記クライアント側プロセスから通知された前記起動順序識別子とを比較する起動順序識別子比較手段、
前記起動順序識別子比較手段による比較の結果、前記起動順序識別子が異なる場合には、検索された実行体およびその実行体がデータベースアクセス処理に伴い獲得している資源を回収する回収処理を実行し、前記起動順序識別子が同じ場合には、前記回収処理を実行しない回収手段、
としてコンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項６】
クライアント側プロセスとサーバ側プロセスとが異なるマシン上において動作するクライアント・サーバ型データベース管理システムのデータベース管理方法において、
前記クライアント側プロセスが前記サーバ側プロセスに対してデータベースアクセス要求を行うときに、前記クライアント側プロセスが動作しているマシンのオペレーティングシステムの起動順序を表す起動順序識別子を前記サーバ側プロセスに送り、
前記サーバ側プロセスが前記クライアント側プロセスからのデータベースアクセス要求を受けたときに、前記クライアント側プロセスが動作しているマシンとの間で通信を行うときに設定されたネットワークアドレス、前記クライアント側プロセスからのデータベースアクセス要求を処理する実行体を一意に識別する実行体識別子、および通知された前記起動順序識別子を関連付けして管理している実行体管理手段を参照して、前記クライアント側プロセスが動作しているマシンのネットワークアドレスと同じネットワークアドレスと対応付けられている前記実行体識別子によって特定される実行体を検索し、
検索された実行体の前記実行体識別子と対応付けられている前記起動順序識別子と、データベースアクセス要求を出した前記クライアント側プロセスから通知された前記起動順序識別子とを比較し、
比較の結果、前記起動順序識別子が異なる場合には、検索された実行体およびその実行体がデータベースアクセス処理に伴い獲得している資源を回収する回収処理を実行し、前記起動順序識別子が同じ場合には、前記回収処理を実行しない、
ことを特徴とするクライアント・サーバ型データベース管理システムのデータベース管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はクライアント・サーバ型のデータベース管理システムに関し、特にデータベースに対して処理要求を出すマシンと要求された処理を実際に実行するマシンとが異なるように構成されたクライアント・サーバ型のデータベース管理システムに関する。
【０００２】
従来より、クライアント・サーバ型のデータベース管理システムにおいては、サーバマシン上でデータベースサーバソフトウェアが動作してデータベースの処理を行い、サーバマシンが接続されたネットワーク上のクライアントマシンではデータベースクライアントソフトウェアを動作させてネットワークを介しサーバマシンに処理要求を行ったりサーバマシンから処理結果を受けるという形態が一般に取られている。
【０００３】
【従来の技術】
クライアントマシンとサーバマシンとがネットワークを介して接続された構成上で動作するデータベース管理システムにおいて、データベースを利用する場合は、一般に、クライアントからサーバへデータベースのアクセス要求があると、サーバ側では実行体が作成され、その実行体がクライアントからのアクセス要求を処理してその処理結果をクライアントへ返し、アクセス要求に対する処理が終了すると、その実行体は回収される。実行体が作成されると、サーバ側の資源はその実行体で専有され、実行体が回収されると実行体で専有されていた資源は解放される。この資源としては、サーバマシンのメモリ、データベース管理システムが管理している排他制御のためのトランザクションロック、およびソート作業などを行う二次記憶装置の記憶領域がある。
【０００４】
ところで、クライアント・サーバ型の各マシンはそれぞれ別々の動作環境にある。これらのマシンは、そのオペレーティングシステムとして、たとえば、Ｗｉｎｄｏｗｓ  ９５またはＷｉｎｄｏｗｓ  ＮＴ（Ｗｉｎｄｏｗｓ，Ｗｉｎｄｏｗｓ  ＮＴは米国マイクロソフト社の米国およびその他の国における登録商標）を利用していたり、ＵＮＩＸ（ＵＮＩＸシステム・ラボラトリーズ社が開発し、ライセンスしている）系のオペレーティングシステムを利用している。このような動作環境にあって、クライアントマシンとサーバマシンとが通信中に、クライアントマシンがクラッシュしたりマシンの電源が落とされてしまう場合がある。たとえば、クライアントマシンがサーバマシンに対してデータベースアクセス要求を行った後に一方的にダウンしてしまうと、そのダウン状態はサーバ側には通知されない。一方、サーバ側では、データベースアクセス要求を受けているので、正常の処理が行われるが、要求元のクライアントマシンがダウンしたことにより、その処理結果の返送先がなくなり、データベースアクセス要求によって作成された実行体およびデータベースアクセス要求によって獲得された資源がサーバマシン上に残ってしまうことになる。この結果、他のクライアントからアクセス要求が来たとしてもそのクライアントは資源を専有することができず、待たされてしまうといったことがある。また、クライアントマシンのダウンは、電源ＯＦＦ状態となった場合以外に、クライアントマシンのリセットボタンを押した場合にも起こる。
【０００５】
データベースアクセス要求をしたクライアントマシンがダウンしたことによって、そのデータベースアクセス要求でサーバが獲得した資源がサーバ側に残されてしまうという不具合に対して、従来では、代表的な２つの方法にて解消している。
【０００６】
図５は従来のデータベース管理システムの構成例を示すブロック図である。この図５において、クライアントマシン１０１およびサーバマシン１１１がネットワーク１２０に接続されており、このネットワーク１２０には、また、サーバマシン１１１の管理者用のオペレータ端末１３０が接続されている。ここで、クライアントマシン１０１では、クライアントプロセス１０２が起動されており、サーバマシン１１１では、データベース管理システム（ＤＢＭＳ）サーバプロセス１１２が起動されている。このデータベース管理システム・サーバ・プロセス１１２では、クライアントプロセス１０２からのデータベースアクセス要求に従ってデータベース（ＤＢ）アクセス実行体１１３が作成されており、このデータベースアクセス実行体１１３により資源１１４が獲得されている。また、サーバマシン１１１には、実行体回収機能を持った回収コマンド１１５が設定されている。
【０００７】
ここで、サーバ側のオペレータはクライアント側からの要求を監視していて、クライアントプロセス１０２がデータベースアクセス中に、そのクライアントプロセス１０２が動作しているクライアントマシン１０１の電源が何らかの原因でＯＦＦ状態となっていることを認識すると、オペレータ端末１３０からサーバマシン１１１上の回収コマンド１１５を実行させる。すると、回収コマンド１１５は、サーバ側でそのクライアントプロセス１０２からのデータベースアクセス要求の処理に伴って作成されたデータベースアクセス実行体１１３およびその処理に伴って獲得した資源１１４を回収する。これにより、サーバマシン１１１に残っていた資源１１４が解放されて、他のクライアントからのデータベースアクセス要求に対して利用可能になる。
【０００８】
図６は従来のデータベース管理システムの別の構成例を示すブロック図である。この図６において、クライアントマシン１０１およびサーバマシン１４１がネットワーク１２０に接続されている。サーバマシン１４１において、そのデータベース管理システム・サーバ・プロセス１４２ではデータベース（ＤＢ）アクセス実行体１４３と、資源１４４と、データベース（ＤＢ）アクセス実行体１４３を管理する実行体管理デーモン１４５とがある。また、サーバマシン１４１には、そのオペレーティングシステム（ＯＳ）が持っているネットワーク監視機能１４６がある。
【０００９】
ここで、クライアントマシン１０１のクライアントプロセス１０２とサーバマシン１４１のデータベース管理システム・サーバ・プロセス１４２とが通信を行う場合、両方のマシンにおいてメッセージの送受信を行うための口を指定する必要があるが、この口をポートと呼ぶ。また、一般に、一つのクライアントマシン１０１とサーバマシン１４１とのポートの組み合わせの中で、シリアルにメッセージの送受信を行う一つの単位を通信パスと呼ぶことにする。１つのポートの組み合わせの中では複数の通信パスが存在することができ、それぞれの通信パスごとに並行してメッセージの送受信が行われる。通信パスの代表的な例としてソケットを挙げることができる。なお、ソケットについての詳細は、文献 "UNIX NETWORK PROGRAMMING”,W.Richard Stevens著，1990 by Prentice Hall, Inc. A Simon & Schuster Company Englewood Cliffs, NJ 07632 に説明されている。
【００１０】
さて、通常、オペレーティングシステムのネットワーク機能を利用する際、使用する通信の送信口および受信口であるポートをオペレーティングシステムに対して登録する。オペレーティングシステムのネットワーク監視機能１４６では、各ポート内の通信パスごとに通信の行われていない時間をチェックし、ある時間以上通信が行われていない場合はその通信パスを回収し、その通信パスにおいて受信待ちとなっているプロセスに対して回収した旨を通知する。なお、回収の基準となる時間はシステム管理者が指定することができる。データベース管理システム・サーバ・プロセス１４２の実行体管理デーモン１４５はオペレーティングシステムのネットワーク監視機能１４６から通信パスの通信環境回収が通知されると、その通信パスを使ってクライアントとの間で通信を行っているデータベースアクセス実行体１４３および資源１４４を回収する。
【００１１】
このように、オペレーティングシステムの時間監視機能をネットワークの時間監視機能に利用するデータベース管理システムでは、ある監視時間を設定しておいて、オペレーティングシステムのネットワーク監視機能１４６がその時間の範囲内でクライアントとの正常な通信がなされていることを定期的にチェックしている。オペレーティングシステムのネットワーク監視機能１４６は指定された時間を越えてもクライアントとの通信がないことを検出すると、実行体管理デーモン１４５に通信パスの通信環境回収を通知することになる。なお、監視時間はあまり短くすると、オペレーティングシステムのオーバヘッドが大きくなってしまうので、一般には２時間より大きな値に設定される。
【００１２】
【発明が解決しようとする課題】
しかし、サーバ側に実行体回収機能を備える場合は、サーバマシン上でオペレータが絶えず回収の必要な実行体を監視している必要がある。このような監視オペレータがいないときに、クライアントマシンの電源がＯＦＦ状態になった場合は、データベースアクセスの延長で獲得された資源がサーバマシンにそのまま残ってしまうという問題がある。
【００１３】
一方、オペレーティングシステムのネットワーク監視機能を利用する場合は、通信なしを監視する時間の設定が難しい。つまり、クライアントからの要求がサーバにとって重い処理負荷となる場合には処理結果の返送が２時間以上になることもあるので、通信なしの時間は運用形態によっても大幅に異なり、これを一律に設定時間を越えて通信なしの通信パスをすべて回収すると、回収されてはいけないものまで回収されてしまうという問題が起きてくる。また、オペレーティングシステムのネットワークの時間監視機能を使用すると、通信があるかないかを定期的に監視しているからオペレーティングシステムのオーバヘッド自体が大きくなってしまうので、一般的には通信なしの時間を２時間以上１時間単位で設定しているが、一旦、クライアントマシンがダウンした場合は、少なくとも次に時間監視機能が働くまではトランザクションロックがかかったままになるため、それまでの時間は他のクライアントのアクセス要求が待たされてしまうという問題がある。
【００１４】
本発明はこのような点に鑑みてなされたものであり、オペレータによる回収すべき資源の監視が不要であり、また、オペレーティングシステムのネットワーク監視機能を利用しないで、確実にサーバ側に残っている不要な資源を回収することができるクライアント・サーバ型のデータベース管理システムを提供することを目的とする。
【００１５】
【課題を解決するための手段】
図１は上記目的を達成する本発明の原理を示す構成図である。図１において、クライアントマシン１と、サーバマシン２とがネットワーク３によって接続されており、クライアントマシン１ではデータベースアクセスを行うアプリケーションソフトウェアが動作し、サーバマシン２ではデータベース管理システムサーバソフトウェアが動作していることにより、クライアント・サーバ型のデータベース管理システムが構成されている。クライアントマシン１はオペレーティングシステム（ＯＳ）起動順序識別子通知手段１ａを備え、サーバマシン２は実行体管理手段２ａ、実行体検索手段２ｂ、起動順序識別子比較手段２ｃ、および資源回収手段２ｄを備えている。データベース（ＤＢ）アクセス実行体２ｅはクライアントマシン１からデータベースアクセス要求があったときにデータベースアクセス処理を実行するために作成され、資源２ｆはクライアントからのデータベースアクセス要求の延長で獲得されたサーバマシン２内の資源である。この資源２ｆには、サーバマシン２のメモリ、トランザクションロック、ソート作業を行う２次記憶域を含んでいる。実行体管理手段２ａは、クライアントマシン１との通信を行うときのネットワークアドレスと、データベースアクセス要求を処理するデータベースアクセス実行体２ｅを一意に識別する実行体識別子と、通知されたオペレーティングシステム起動順序識別子とを対応付けして管理している。
【００１６】
このデータベース管理システムによれば、クライアントマシン１において、データベースアクセスを行うアプリケーションソフトウェアがサーバマシン２のデータベース管理システムサーバソフトウェアに対してデータベースアクセス要求を行うとき、オペレーティングシステム起動順序識別子通知手段１ａがオペレーティングシステム起動順序識別子を通知する。サーバマシン２においては、まず、実行体検索手段２ｂが実行体管理手段２ａに対して指定されたネットワークアドレスと対応付けられた実行体識別子によって特定されるすべてのデータベースアクセス実行体を検索する。次いで、起動順序識別子比較手段２ｃは、検索されたデータベースアクセス実行体の実行体識別子に関連付けられたオペレーティングシステム起動順序識別子が指定されたオペレーティングシステム起動順序識別子と比較して、指定されたオペレーティングシステム起動順序識別子と異なるデータベースアクセス実行体２ｅを選択する。そして、資源回収手段２ｄは選択されたデータベースアクセス実行体２ｅおよびその実行によって獲得された資源を回収して、他のクライアントからのデータベースアクセス要求に対して資源を利用可能な状態にする。一方、選択されなかったデータベースアクセス実行体については、上記の回収処理を行わない。すなわち、クライアントマシン１の電源のＯＦＦ状態が発生した場合に、そのクライアントマシン１を立ち上げ直して、再度サーバマシン２のデータベース管理システムサーバソフトウェアに接続したタイミングで、電源ＯＦＦまでの間に獲得していた資源２ｆおよびそのデータベースアクセス実行体２ｅを回収するのである。
【００１８】
また、本発明では、クライアント・サーバ型のデータベース管理システムのサーバ側プロセスのプログラムを記録したコンピュータ読み取り可能な記録媒体において、クライアント側プロセスが動作するマシンとの間で通信を行うときに設定されたネットワークアドレスと、前記クライアント側プロセスからのデータベースアクセス要求を処理する実行体を一意に識別する実行体識別子と、前記クライアント側プロセスから通知されたオペレーティングシステムの起動順序識別子とを関連付けして管理している実行体管理手段、前記実行体管理手段が前記クライアント側プロセスからのデータベースアクセス要求を受けたときに、前記クライアント側プロセスが動作しているマシンのネットワークアドレスと同じネットワークアドレスと対応付けられている前記実行体識別子によって特定される実行体を検索する実行体検索手段、検索された実行体の前記実行体識別子と対応付けられている前記起動順序識別子と、データベースアクセス要求を出した前記クライアント側プロセスから通知された前記起動順序識別子とを比較する起動順序識別子比較手段、前記起動順序識別子比較手段による比較の結果、起動順序識別子が異なる場合には、検索された実行体およびその実行体がデータベースアクセス処理に伴い獲得している資源を回収する回収処理を実行し、前記起動順序識別子が同じ場合には、前記回収処理を実行しない回収手段、としてコンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【００１９】
この記録媒体に記録されたプログラムをコンピュータに実行させることにより、実行体管理手段と、実行体検索手段と、起動順序識別子比較手段と、回収手段との各機能がコンピュータによって実現される。
【００２０】
【発明の実施の形態】
まず、本発明の概略について図面を参照して説明する。
図１は本発明によるクライアント・サーバ型のデータベース管理システムの原理構成を示す図である。図１において、クライアントマシン１とサーバマシン２とがあり、それぞれはネットワーク３によって相互に接続されている。クライアントマシン１ではデータベースアクセスを行うアプリケーションソフトウェアが動作し、サーバマシン２ではデータベース管理システムサーバソフトウェアが動作して、全体としてクライアント・サーバ型のデータベース管理システムが構成されている。ここで、クライアントマシン１はオペレーティングシステム（ＯＳ）起動順序識別子通知手段１ａを備えている。一方、サーバマシン２は実行体管理手段２ａと、実行体検索手段２ｂと、起動順序識別子比較手段２ｃと、資源回収手段２ｄとを備えている。データベース（ＤＢ）アクセス実行体２ｅはクライアントマシン１からデータベースアクセス要求があったときにデータベースアクセス処理を実行するために作成され、要求処理が終了すると、回収される。資源２ｆはクライアントからのデータベースアクセス要求の延長で獲得されたサーバマシン２内の資源であって、要求処理が終了すると、回収される。この資源２ｆには、サーバマシン２のメモリ、トランザクションロック、ソート作業などを行う２次記憶域を含んでいる。実行体管理手段２ａは、クライアントマシン１との通信を行うときに設定されたネットワークアドレスと、データベースアクセス要求に対してその要求を処理するデータベースアクセス実行体２ｅの実行体識別子と、通知されたオペレーティングシステム起動順序識別子とを対応付けして管理している。
【００２１】
このデータベース管理システムによれば、まず、クライアントマシン１において、データベースアクセスを行うアプリケーションソフトウェアがサーバマシン２のデータベース管理システムサーバソフトウェアに対してデータベースアクセス要求を行うとき、オペレーティングシステム起動順序識別子通知手段１ａがオペレーティングシステム起動順序識別子を通知する。このオペレーティングシステム起動順序識別子としては、好ましくはクライアントマシン１を立ち上げたときのオペレーティングシステム起動時刻が利用される。
【００２２】
次いで、サーバマシン２において、クライアントマシン１からデータベースアクセス要求を受けると、実行体検索手段２ｂが実行体管理手段２ａに対して指定されたネットワークアドレスを有するすべてのデータベースアクセス実行体を検索する。次に、起動順序識別子比較手段２ｃは、検索されたデータベースアクセス実行体に関連付けられたオペレーティングシステム起動順序識別子がクライアントマシン１の側で指定されたオペレーティングシステム起動順序識別子と比較して、その指定されたオペレーティングシステム起動順序識別子と異なるデータベースアクセス実行体２ｅを選択する。そして、資源回収手段２ｄは選択されたデータベースアクセス実行体２ｅおよびその実行によって獲得された資源を回収して、他のクライアントからのデータベースアクセス要求に対して資源を利用可能な状態にする。その後は、クライアントマシン１から受けたデータベースアクセス要求を通常通り実行することになる。
【００２３】
これにより、クライアントマシン１の電源のＯＦＦ状態が発生した場合に、そのクライアントマシン１を立ち上げ直して、再度サーバマシン２のデータベース管理システムサーバソフトウェアに接続したタイミングで、電源ＯＦＦまでの間に獲得していた資源２ｆおよびそのデータベースアクセス実行体２ｅを回収することができる。
【００２４】
次に、本発明の実施の形態について、図を参照して詳細に説明する。
図２はクライアント・サーバ型のデータベース管理システムの全体構成を示すブロック図である。図２において、クライアントマシン１０があり、そのオペレーティングシステムとしてＵＮＩＸ系のＵＸＰ／ＤＳ（ＵＸＰは富士通株式会社の商標、ＵＸＰ／ＤＳは商品名）を備えているとする。また、クライアントマシン１０には、複数のアプリケーション１１，１２，・・・が設定されている。特に、アプリケーション１１，１２はこれらのアプリケーションからデータベース管理システム・サーバ・プロセスに対してデータベースアクセス要求をするためのドライバであるデータベースアクセス要求部１１ａ，１２ａをそれぞれ備えている。このデータベースアクセス要求部１１ａ，１２ａは、本来の要求機能のほか、このクライアントマシン１０のオペレーティングシステム起動時刻を取得する機能を有している。
【００２５】
このクライアントマシン１０はネットワーク２０に接続されている。このネットワーク２０はＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であるが、複数のＬＡＮ同士をブリッジ、ルータなどを介して接続したＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）とすることもできる。また、クライアントマシン１０とサーバマシン３０との間の接続には、ＴＣＰ／ＩＰ（ｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ／ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）プロトコルが使用される。
【００２６】
サーバマシン３０はデータベース・サーバ・プロセス３１を有し、これは、ポート３２を介してネットワーク２０に接続されている。データベース・サーバ・プロセス３１には、実行体管理デーモン３３が常駐しており、この実行体管理デーモン３３は要求受け付け処理部３４、実行体管理部３５および実行体検査部３６を有している。要求受け付け処理部３４に関連して、データベースアクセス要求があったときに作成されるデータベース（ＤＢ）アクセス実行体３７およびこのデータベースアクセス実行体３７により獲得された資源３８が示されている。また、データベースアクセス実行体３７はログデータを記録しておく記憶装置４１、データを蓄えているデータベースファイルが記録されている記憶装置４２、およびデータを管理するためのメタデータが記録されている記憶装置４３とに関連付けされている。なお、ここでは、クライアントの要求ごとにデータベース・サーバ・プロセスの中で実行の単位であるスレッドを設けており、それを実行体と呼んでいる。ここで、データベースアクセス要求部１１ａ，１２ａおよび実行体検査部３６は新たに設けられた構成要素、実行体管理部３５は本データベース管理システムのために手直しされた構成要素であり、それ以外は本データベース管理システムの前提要素である。
【００２７】
次に、これらの要素について詳細に説明する。
まず、データベースアクセス要求部１１ａ，１２ａでは、アプリケーション１１，１２からデータベース管理システムの接続要求が来たときに、以下の処理が行われる。
【００２８】
データベースアクセス要求部１１ａ，１２ａは、まず、クライアントマシン１０のオペレーティングシステムの起動時刻を取得する。
次に、データベースアクセス要求部１１ａ，１２ａは、サーバマシン３０のデータベース管理システム用に登録されたポートを指定して通信パスの作成処理を行う。この処理はクライアントマシン１０とサーバマシン３０のオペレーティングシステムの機能を使って実現される。通信パスが作成されると、その通信パスを識別するための識別子が返却される。以降は、この識別子を使うことにより、その指定したポートの中の作成されたパスに対してアクセスすることが可能になる。
【００２９】
そして、データベースアクセス要求部１１ａ，１２ａは、返却された通信パスの識別子と取得しておいたオペレーティングシステムの起動時刻、並びにクライアントマシン１０のネットワークアドレスを指定してデータベース管理システム・サーバ・プロセス３１との接続要求をサーバマシン３０に依頼する。ネットワークアドレスはたとえばＩＰアドレスが使われる。
【００３０】
サーバマシン３０では、まず、要求受け付け処理部３４は、データベース管理システム・サーバ・プロセス３１のポート３２に対してクライアントマシン１０から送られてくるメッセージの受信待ちを行う。
【００３１】
クライアントマシン１０からデータベース管理システム・サーバ・プロセス３１への接続要求を受信したならば、その受信メッセージの通信パスの識別子、オペレーティングシステムの起動時刻、クライアントマシン１０のネットワークアドレスを指定して、要求受け付け処理部３４は、要求された接続の上でデータベースアクセス処理を行う実行体の作成を実行体管理部３５に依頼する。
【００３２】
詳しくは、要求受け付け処理部３４は、クライアントマシン１０からデータベースアクセス要求を受信したならば、その通信パスの識別子を指定して実行体管理部３５に処理を行うべき実行体の検索を依頼し、指定した通信パスの識別子を有する実行体を既に作っているかどうかをチェックする。実行体管理部３５の中にそのような実行体がなければ、新たにデータベースアクセス実行体が作成される。その後、検索したまたは作成したデータベースアクセス実行体に対してデータベースアクセス処理を依頼することになる。
【００３３】
次に、実行体管理部３５においては、要求受け付け処理部３４から実行体作成要求を受け付けたとき、以下の処理を行う。
まず、実行体管理部３５は、過去に要求元のクライアントマシン１０からのデータベースアクセス要求を処理していた実行体の回収を実行体検査部３６に依頼する。このとき、実行体管理部３５は、クライアントマシン１０のオペレーティングシステムの起動時刻を指定し、クライアントマシン１０を一意に識別するためのネットワークアドレスを指定する。
【００３４】
そして、実行体管理部３５は、データベースアクセス実行体３７を作成し、作成したデータベースアクセス実行体と、要求元のクライアントマシン１０から送られてきた通信パスの識別子と、オペレーティングシステムの起動時刻と、ネットワークアドレスと、クライアントマシン１０のオペレーティングシステムの種別とを対応付けてメモリ上に登録しておく。
【００３５】
実行体検査部３６では、指定されたネットワークアドレスに対応するすべてのデータベースアクセス実行体について、指定されたオペレーティングシステムの起動時刻よりも古い起動時刻を持つものがあるかどうかをチェックし、古いオペレーティングシステムの起動時刻を持つデータベースアクセス実行体があれば、その実行体の延長で獲得されているトランザクションロック、メモリ、ソート作業域などの２次記憶域の資源を回収するとともに、その実行体自体も回収するという処理を行う。
【００３６】
データベースアクセス実行体３７は、クライアントから送られてきたデータベースアクセス要求を解析してデータベースアクセススケジュールを作成し、そのスケジュールに従ってデータベースアクセスを行う。その際、トランザクションロック、メモリ、２次記憶域の資源の獲得を行う。それらの獲得資源は、獲得したデータベースアクセス実行体と対応付けておいて、データベースアクセス実行体の回収時にその実行体から獲得された資源を回収できるようにしておく。
【００３７】
次に、以上の各要素を実現する方式について説明する。
まず、クライアントマシン１０のデータベースアクセス要求部１１ａ，１２ａにおいて、ここでは、オペレーティングシステムの起動時刻を取得することを行っているが、この起動時刻の取得については、オペレーティングシステムの機能が使われる。オペレーティングシステムの起動時刻の取得方法は通常は、そのオペレーティングシステムが用意している。たとえばＵＮＩＸ系のオペレーティングシステムでは、オペレーティングシステムの起動時刻を取得するための関数が用意されている。一方、Ｗｉｎｄｏｗｓ系のオペレーティングシステムでは、現在時刻を取得する関数とオペレーティングシステム起動時刻から現在までの経過時間を取得する関数が用意されている。これによって、現在時刻から経過時間を差し引くことにより、オペレーティングシステムの起動時刻を取得することができる。
【００３８】
クライアントマシン１０のネットワークアドレスの取得については、ＵＮＩＸ系、Ｗｉｎｄｏｗｓ系とも一般にはオペレーティングシステムの通信機能が自動的にクライアント側でネットワークアドレスを取得してサーバ側に通知するので、それを取得してサーバマシン３０の側に送るようにしている。しかし、このオペレーティングシステムの機能を期待して、クライアント側で明にクライアントマシンのネットワークアドレスを取得してサーバ側に送ることをしなくても、オペレーティングシステムの機能によりサーバマシン３０の側でそのネットワークアドレスを取得するようにしてもよい。
【００３９】
サーバ側の実行体管理部３５では、データベースアクセス実行体を実行体管理表により、データベースアクセス実行体と、通信パスの識別子と、クライアント側のオペレーティングシステムの起動時刻と、ネットワークアドレスと、クライアント側のオペレーティングシステムの種別とを対応付けて管理している。作成されるデータベースアクセス実行体のそれぞれは、通信パスの識別子とネットワークアドレスとの組み合わせによって識別されるので、通信パスの識別子と、ネットワークアドレスと、データベースアクセス実行体の識別子とに加えて、オペレーティングシステムの起動時刻と、クライアント側のオペレーティングシステム起動時刻とが関連付けされている。この実行体管理表の一例を図３に示す。
【００４０】
図３は実行体管理表の一例を示す図である。図３に示したように、実行体管理表５０は、通信パスの識別子と、ネットワークアドレスと、実行体識別子と、オペレーティングシステムの起動時刻と、クライアント側のオペレーティングシステムの種別とのフィールドを持つ表によって構成されている。ここで、オペレーティングシステムの起動時刻の表記はオペレーティングシステムの種別によって異なるため、クライアント側のオペレーティングシステムの起動時刻とともにそのオペレーティングシステムの種別をも一緒に管理するようにしている。
【００４１】
そのオペレーティングシステムの種別は、ＵＮＩＸ系オペレーティングシステムであるＵＸＰ／ＤＳを「０ｘ０００００００１」で示し、ＳＯＬＡＲＩＳ（米国Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の商標）を「０ｘ０００００００２」で示し、Ｗｉｎｄｏｗｓ  ９５／ＮＴのオペレーティングシステムを「０ｘ００００００１０」で示すものとし、図示の第１実行体の例では、クライアント側のオペレーティングシステムはＵＸＰ／ＤＳであることを示している。なお、オペレーティングシステムの種別を表す情報はデータベース管理システム・サーバ・プロセス３１への接続要求時にクライアントマシン１０から送られてくる。クライアント側のデータベースアクセス要求部１１ａ，１２ａは、クライアントマシン１０のオペレーティングシステムごとにロードモジュールが作成されて提供されるという形態をとっているため、あらかじめ自分のオペレーティングシステムの種別が分かっている。
【００４２】
通信パスの識別子はオペレーティングシステムのネットワーク通信機能に依存した値となる。この通信パスの識別子は、ＵＮＩＸ系のオペレーティングシステムの場合はソケット識別子（ＳＯＣＫＥＴ−ＩＤ）が一般に使用されており、図３の第１実行体においてもソケット識別子を使用している。
【００４３】
ネットワークアドレスはネットワーク上の個々のマシンごとに一意に定まるアドレスであって、図３の例では、ＩＰアドレスが使用されている。このようにネットワークアドレスにＩＰアドレスを使用しているが、クライアントマシンを一意に識別する情報であれば、たとえばＭＡＣ（ｍｅｄｉａ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌｌ）アドレスとすることもできる。
【００４４】
実行体識別子は、データベース管理システム・サーバ・プロセス３１の中でクライアント側のアプリケーションプロセスからのデータベース管理システム・サーバ・プロセス３１との接続要求ごとに作成されるデータベースアクセス実行体を一意に識別するための識別子である。クライアント側からある接続配下でデータベースアクセス要求をすると、サーバ側ではその接続に対応するデータベースアクセス実行体においてデータベースアクセス処理を行う。
【００４５】
実行体をデータベース管理システム・サーバ・プロセス３１内のスレッドをディスパッチしながら実行する方式では、実行体識別子はデータベース管理システム・サーバ・プロセス３１の中でカウンタ制御によって割り振った値（１、２、３、・・・）となる。図３の例では、このカウンタ制御によって実行体識別子を割り振っている。なお、データベースアクセス実行体の処理を別プロセスで実行する方式では、実行体識別子としてプロセスＩＤが使われる。
【００４６】
オペレーティングシステム起動時刻は、クライアント側のオペレーティングシステムに依存した値となる。たとえばＵＮＩＸ系のオペレーティングシステムでは、関数「ｔｉｍｅ＿ｔ」型の値となる。図３に例示した第１実行体のオペレーティングシステム起動時刻も、「ｔｉｍｅ＿ｔ」型の値となっている。一方、Ｗｉｎｄｏｗｓ  ９５／ＮＴの場合のオペレーティングシステム起動時刻は、現在の時刻を取得する関数とオペレーティングシステム起動時刻から現在までの経過時間を取得する関数とを利用して得られた値の差分値となる。
【００４７】
実行体管理表５０の中の情報は、通信パスの識別子をキーとして検索をするようにしているが、通信パスの識別子をハッシュキーとしたハッシュ制御表の形で管理するようにしてもよい。
【００４８】
次に、実行体検査部３６における回収処理をフローチャートを参照して詳細に説明する。
図４は実行体検査部の処理の流れを示すフローチャートである。実行体検査部３６では、実行体管理部３５で作成された情報を検索して必要に応じて古い実行体を回収するという処理を行っている。
【００４９】
具体的には、まず、実行体管理表５０の先頭エントリを検索対象とする（ステップＳ１）。次に、検査対象実行体のネットワークアドレスが指定されたネットワークアドレスと等しいかどうかをチェックする（ステップＳ２）。これにより、その検査対象実行体はクライアントマシンが同じ実行体であるかどうかがチェックされる。次に、ネットワークアドレスのチェックの結果が等しいかどうかが判断され（ステップＳ３）、等しければ、検査対象実行体のクライアント側のオペレーティングシステムの種別が指定されたオペレーティングシステムの種別と等しいかどうかをチェックする（ステップＳ４）。ここで、両方のオペレーティングシステムの種別のチェックの結果が等しいかどうかが判断され（ステップＳ５）、等しければ、検査対象実行体の起動時刻が指定されたオペレーティングシステム起動時刻より古いかどうかをチェックする（ステップＳ６）。このオペレーティングシステムの起動時刻が接続要求を出してきたクライアント側で指定した値より古いかどうかをチェックするのは以下の理由による。すなわち、一つのクライアントマシンとサーバマシンとの間で複数の通信パスが作成されるので、同じネットワークアドレスと対応付けられて複数の実行体が作成される。したがって、同じネットワークアドレスと対応付けられている実行体はクライアントマシンの電源のＯＦＦ状態が発生する前の実行体も、電源のＯＦＦ状態から再立ち上げした後の実行体も含まれているので、それらの実行体をすべて無条件に回収することはできないからである。そこで、同じネットワークアドレスと対応付けられている実行体を回収してもよいかどうかを判断するための情報として、クライアントマシンのオペレーティングシステムの起動時刻を利用し、オペレーティングシステムの起動時刻の古い実行体は、クライアントマシンの電源ＯＦＦが行われる前に作成されたものであると断定し、回収対象とすることにしている。
【００５０】
次に、起動時刻の古さのチェックの結果が古いかどうかの判断がなされ（ステップＳ７）、ここで、検査対象実行体の起動時刻が古ければ、あるいは、ステップＳ５でオペレーティングシステムが異なるとの判断がなされた場合には、データベースアクセス実行体３７が獲得済みのトランザクションロック、メモリ、２次記憶域を含む資源３８を回収し、かつそのデータベースアクセス実行体３７自体をも回収する（ステップＳ８）。この資源３８の回収により、トランザクションロックは解かれて他のデータベースアクセス要求が処理可能になり、メモリについては、データベースアクセス要求を処理する上で獲得した領域が解放され、他のデータベースアクセス要求に対してその領域が利用可能になる。また、データベースアクセス実行体がソート処理などで獲得した２次記憶域のファイルはオペレーティングシステムのファイルシステムを使って獲得されて削除され、そのファイルが記憶されていた領域が使用可能になる。そして、実行体管理表５０からデータベースアクセス実行体３７に関する情報が削除される。
【００５１】
回収処理が終わった場合、ステップＳ３にてネットワークアドレスが違うと判断された場合、あるいはステップＳ７にて、起動時刻が古くないと判断された場合、実行体管理表５０に検査対象エントリの次のエントリが存在するかどうかがチェックされる（ステップＳ９）。ここで、次のエントリが存在しなければ、そこでこの回収処理は終了する。もし、次のエントリが存在するならば、実行体管理表５０の次のエントリを検査対象とし（ステップＳ１０）、ステップＳ２に戻って、再度、ネットワークアドレスが同じかどうかのチェックの処理から繰り返される。
【００５２】
なお、以上の実施の形態においては、同じネットワークアドレスと対応付けられている実行体を回収してもよいかどうかを判断するための情報として、クライアント側のオペレーティングシステムの起動時刻を利用したが、オペレーティングシステムの起動のたびにカウントアップするカウンタを用いて立ち上げ回数の計数値を利用することもできる。
【００５３】
【発明の効果】
以上説明したように本発明では、クライアントからサーバへデータベースのアクセス要求をするときに、クライアントマシンのオペレーティングシステムの起動順序を識別する情報を送るようにし、サーバ側ではその起動順序を識別する情報が異なるすべての実行体およびその実行体が獲得した資源を回収するように構成した。このため、クライアントからのアクセス要求があった後にクライアントマシンが電源ＯＦＦ状態になって、回収されずにサーバマシンに残った実行体および資源を、クライアントマシンが再起動してサーバマシンと再接続するタイミングですべて回収することができ、他のアクセス要求に対して利用可能にすることができるようになる。
【図面の簡単な説明】
【図１】本発明によるクライアント・サーバ型のデータベース管理システムの原理構成を示す図である。
【図２】クライアント・サーバ型のデータベース管理システムの全体構成を示すブロック図である。
【図３】実行体管理表の一例を示す図である。
【図４】実行体検査部の処理の流れを示すフローチャートである。
【図５】従来のデータベース管理システムの構成例を示すブロック図である。
【図６】従来のデータベース管理システムの別の構成例を示すブロック図である。
【符号の説明】
１  クライアントマシン
１ａ  オペレーティングシステム（ＯＳ）起動順序識別子通知手段
２  サーバマシン
２ａ  実行体管理手段
２ｂ  実行体検索手段
２ｃ  起動順序識別子比較手段
２ｄ  資源回収手段
２ｅ  データベース（ＤＢ）アクセス実行体
２ｆ  資源
３  ネットワーク
【図１】
0003865483.tif 000002
【図２】
0003865483.tif 000003
【図３】
0003865483.tif 000004
【図４】
0003865483.tif 000005
【図５】
0003865483.tif 000006
【図６】
0003865483.tif 000007