(57)【要約】【課題】従来は、検索処理が更新情報とデータの２回行われ、クライアントノードキャッシュが使用できない場合、通信処理が余分に必要となり、かつ対象データが２回の検索処理間に更新されない保障がされていない問題点があった。【解決手段】データベースキャッシュ処理システムのサーバノードに、クライアントノードキャッシュに格納されたデータの更新記録を含むデータ情報が記憶されたキャッシュ管理テーブルと、キャッシュデータ要求時、キャッシュ管理テーブルによりクライアントノードキャッシュの要求データ有無と有の場合にデータ更新状況検出し、データまたは更新が無の場合はデータベースのデータをクライアントノードキャッシュに送信するデータベース管理部とを備える。【選択図】        図１
2004280494.tif 000002
【特許請求の範囲】
【請求項１】
サーバノードにあるデータベースのデータをクライアントノードのキャッシュに一時的に保持するデータベースキャッシュ処理システムのサーバノードにおいて、クライアントノードのキャッシュに格納されたデータの更新記録を含むデータ情報が記憶されたキャッシュ管理テーブルと、クライアントノードからキャッシュデータ要求が入力されたとき、キャッシュ管理テーブルのデータ情報からクライアントノードのキャッシュに要求データが格納されているか、格納されている場合に要求データが更新されているか判定し、要求データ無または要求データが更新されていない場合はデータベースのデータをクライアントノードのキャッシュに送信するデータベース管理部とを備えたことを特徴とするサーバノード。
【請求項２】
前記データベース管理部は、キャッシュ管理テーブルのデータ情報からクライアントノードのキャッシュに要求データが格納されているか、格納されている場合に要求データが更新されているか判定すると共にデータをクライアントノードのキャッシュに送信した場合はキャッシュ管理テーブルにデータ情報の記録または更新するキャッシュ管理部を有することを特徴とする請求項１記載のサーバノード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データを一時的に保持するデータキャッシュ処理システムにおけるサーバノードに関し、特にコンピュータネットワークのサーバノード上に配置されたデータベースに共用データを保持し、それを複数のクライアントノードから参照・更新する処理において、ネットワークを介した共用データの不要なデータ転送を削減するデータキャッシュ処理システムに適用して有効な技術に関するものである。
【０００２】
【従来の技術】
サーバノードの共用データをクライアントノードに一時的に保持する共用データキャッシュ処理システムにおいて、まずサーバノードからクライアントノードにサーバノードにおける共用データの更新情報を送信し、サーバノードからの更新情報とクライアントノードのキャッシュでの更新情報とを比較し、更新情報が異なっている場合にサーバノードの共用データをクライアントノードに送信することにより、不要なデータ転送を無くしている（例えば、特許文献１参照）。
【０００３】
【特許文献１】
特開２０００−１３７６８９号第１０頁〜第１２頁、図１９、（実施形態３）
【０００４】
【発明が解決しようとする課題】
【０００５】
従来のデータキャッシュ処理システムでは、まずキャッシュ対象の更新情報をサーバノードで検索してクライアントノードに送信し、クライアントノードでキャッシュの更新情報と比較して、クライアントノードでキャッシュ対象の共用データに更新情報が無いか、またはサーバノードの共用データが更新されている場合は再びサーバノードで検索してデータを取得するため、本来１回で済むはずのサーバノードの検索処理と通信処理が、クライアントノードキャッシュのデータが使用できない場合は更新情報を取得するために余分に必要となるという問題点があった。また、検索処理が更新情報とデータの２回行われるため、対象となるデータが２回の検索処理の間に他のクライアントノードから更新されないようにデータの一貫性を保障する方法に関する考慮がなされていない。さらにデータの更新有無の判定をクライアントノードで行っているため、同じデータをキャッシュしているクライアントノードが複数存在していても、各々の更新有無判定のために更新情報の検索が実行されてしまい、サーバノードに不要な負荷がかかるという問題点があった。
【０００６】
この発明は上記のような問題点を解決するためになされたもので、クライアントノードキャッシュのデータが使用できない場合においてもサーバノードで検索処理を１回行うことでクライアントノードのキャッシュを更新でき、キャッシュを更新する際のデータの一貫性を保障することを目的とする。また、クライアントノードにおけるキャッシュ更新有無の判定処理でのサーバノードの負荷を軽減することを目的とする。
【０００７】
【課題を解決するための手段】
この発明に係るサーバノードは、サーバノードにあるデータベースのデータをクライアントノードのキャッシュに一時的に保持するデータベースキャッシュ処理システムに適用され、クライアントノードのキャッシュに格納されたデータの更新記録を含む情報が記憶されたキャッシュ管理テーブルと、クライアントノードからキャッシュデータ要求が入力されたとき、キャッシュ管理テーブルのデータ情報からクライアントノードのキャッシュに要求データが格納されているか、格納されている場合に要求データの更新が最新のものか判定し、要求データ無または要求データが最新のものでない場合はデータベースのデータをクライアントノードのキャッシュに送信するデータベース管理部とを備えたものである。
【０００８】
【発明の実施の形態】
実施の形態１．
図１はこの発明におけるネットワークを介してクライアントノードからサーバノードにアクセスする際のデータキャッシュ方法を示すデータベースキャッシュ処理システムの構成図である。
図１において、クライアントノード１はネットワーク２を介してサーバノード３と接続されている。クライアントノード１はデータ処理を要求するアプリケーションプログラム１１と、アプリケーションプログラム１１の要求に応じて処理の依頼や結果の応答を行うクライアント処理部１２とクライアントキャッシュ１４を備える。また、クライアント処理部１２はクライアントキャッシュ１４を制御するクライアントキャッシュ制御部１３を有する。
【０００９】
サーバノード３はデータベース全体を管理するデータベース管理部３１、共用データの格納されているデータベース３３、クライアントキャッシュ１４に記憶されているデータの管理情報を記憶するキャッシュ管理テーブル３５およびサーバキャッシュ３７を有する。
データベース管理部３１はデータ処理を行うデータベース処理部３２とシステム全体のキャッシュを管理するキャッシュ管理部３４とを有し、さらに、キャッシュ管理部３４はサーバノード３のキャッシュを制御するサーバキャッシュ制御部３６を有する。
【００１０】
図２は本実施の形態のキャッシュ管理テーブル３５の一構成例を示すものである。キャッシュ管理レコード３８は、図１のキャッシュ管理部３４がクライアントキャッシュ１４に記憶しているデータを管理するための管理情報の一構成例を表している。キャッシュ管理レコード３８はすべてのクライアントノード１のクライアントキャッシュ１４のデータ数分存在し、表名、行識別子、行版名といったデータに関する情報と、クライアント識別子、領域識別子といったクライアントノード１に関する情報を含んでいる。
【００１１】
次に動作について説明する。
まずアプリケーションプログラム１１におけるデータベース３３のデータ検索処理の流れを図３のフローチャートを用いて説明する。図３は本実施の形態のデータ検索処理手順を示すフローチャートである。
クライアントからデータ検索処理要求があると、ステップ４１によりアプリケーションプログラム１１からクライアント処理部１２にデータの問合せが行われ、ステップ４２でクライアント処理部１２からデータベース管理部３１にデータ問合せ要求が送信される。ステップ４３においてデータ問合せはデータベース処理部３２に渡り、データベース３３のデータ検索処理が実行される。ステップ４４ではキャッシュ管理部３４はキャッシュ管理テーブル３５を使い、問合せ要求元のクライアントノード１のクライアントキャッシュ１４にデータベース処理部３２での検索結果に該当するデータが存在するかどうか調べる。ステップ４５においてクライアントキャッシュ１４に該当するデータが存在している場合、ステップ４６でキャッシュ管理部３４はキャッシュ管理テーブル３５の行版名の情報を使い、そのデータがキャッシュされた後に更新されているかどうか判定する。ステップ４７においてデータが更新されていないときはステップ４８でクライアント処理部１２に使用するキャッシュの指示を送信する。ステップ５４でクライアント処理部１２はキャッシュ管理部３４から送信されたキャッシュの指示によりクライアントキャッシュ１４からデータを取り出し、アプリケーションプログラム１１にデータを渡して、ステップ５５の終了となる。
【００１２】
ステップ４５でクライアントキャッシュ１４に該当するデータが存在しない場合、またステップ４７でキャッシュされたデータがその後更新されている場合にはステップ４９において、サーバキャッシュ制御部３６はサーバキャッシュ３７に該当データが存在するか調べる。データが存在しないときはステップ５０でデータベース３３からサーバキャッシュ３７にデータを読み込む。そしてステップ５１ではサーバキャッシュ３７から該当するデータをクライアント処理部１２に送信する。
【００１３】
ステップ５２ではキャッシュ管理部３４はキャッシュ管理テーブル３５にあるステップ５１で送信したデータに関する情報を記録または更新する。ステップ５３においてクライアントキャッシュ制御部１３は送られてきたデータをクライアントキャッシュ１４に追加する。そしてステップ５４ではクライアント処理部１２はクライアントキャッシュ１４から結果データを取り出し、アプリケーションプログラム１１にデータを渡して、ステップ５５の終了となる。
【００１４】
次にアプリケーションプログラム１１におけるデータベース３３のデータ更新処理の流れを図４のフローチャートを用いて説明する。図４は本実施の形態のデータ更新処理手順を示すフローチャートである。
ステップ６１によりアプリケーションプログラム１１からクライアント処理部１２にデータの更新要求が行われると、ステップ６２でクライアント処理部１２からデータベース管理部３１にデータ更新要求が送信される。ステップ６３においてデータベース処理部３２が更新対象となるデータの検索処理をデータベース３３から行い、ステップ６４でサーバキャッシュ制御部３６は更新対象のデータがサーバキャッシュ３７に存在するかどうか調べる。対象のデータがサーバキャッシュ３７に存在しない場合、ステップ６５で対象データをデータベース３３からサーバキャッシュ３７に読み込む。ステップ６６においてサーバキャッシュ３７のデータを更新する。サーバキャッシュ３７の更新データは一般のキャッシュ制御方法によりデータベース３３に反映される。
【００１５】
ステップ６７ではキャッシュ管理部３４がキャッシュ管理テーブル３５を使い、更新したデータをクライアントキャッシュ１４に記憶しているクライアントノード１が存在するかどうか調べる。ステップ６８で記憶しているクライアントノード１が存在している場合、ステップ６９ではキャッシュ管理部３４はキャッシュ管理テーブル３５の情報を更新して、クライアントキャッシュ１４のデータが更新されていることが判定できるようにする。ステップ７０ではクライアント処理部１２にデータの更新処理の完了通知を送信して、ステップ７１の終了となる。
【００１６】
以上のように、データ検索処理において、クライアントキャッシュ１４にすでにデータが保持されている場合、データの転送は行わずにクライアントキャッシュ１４のデータを使用するようにしているので、不要なデータ転送を削除することができる。
【００１７】
また、クライアントキャッシュ１４でのデータの有無、更新有無の判定をサーバノード３で行うようにしているので、キャッシュされているデータの更新情報の転送処理を省くことができる。
【００１８】
さらに、キャッシュデータの有無、更新有無判定を実際の検索データにより行うようにしているので、更新情報の検索処理を削除することができ、サーバノード３の処理を減らすことができる。
【００１９】
また、キャッシュの判定で使用したデータをクライアントノード１に転送するようにしているので、データの一貫性を保障することができる。
【００２０】
さらにまた、クライアントノード１ではクライアントキャッシュ１４の制御のみを行うようにしているので、クライアントノード１でのキャッシュデータの比較処理を省くことができる。
【００２１】
実施形態２．
以上の実施形態１では、キャッシュ管理とデータベース処理を同じサーバノードで行うようにしたものであるが、次にキャッシュ専用のサーバノードを用意したような場合の実施の形態を示す。
図５はこのような場合のネットワークを介してクライアントノードからサーバノードにアクセスする際のデータキャッシュ方法を示すデータベースキャッシュ処理システムの構成図である。
図５において、クライアントノード１は、図１に示す実施の形態１と同様な構成をしており、データ処理を要求するアプリケーションプログラム１１と、アプリケーションプログラム１１の要求に応じて処理の依頼や結果の応答を行うクライアント処理部１２とクライアントキャッシュ１４を備え、また、クライアント処理部１２はクライアントキャッシュ１４を制御するクライアントキャッシュ制御部１３を有する。
そして、ネットワーク２を介してサーバノード３ａと接続されている。また、サーバノード３ａはネットワーク２を介してサーバノード３ｂと接続されている。
【００２２】
サーバノード３ａはクライアントノード１、サーバノード３ｂと通信を行うデータベース通信部１３１、システム全体のキャッシュを管理するキャッシュ管理部３４とキャッシュ管理テーブル３５、サーバノード３ｂにおけるキャッシュ処理を制御するサーバキャッシュ制御部３６とサーバキャッシュ３７を有する。サーバノード３ｂはデータベース全体を管理するデータベース管理部３１とデータの格納されているデータベース３３を備え、データベース管理部３１はデータ処理を行うデータベース処理部３２を有する。
【００２３】
次に動作について説明する。
まずアプリケーションプログラム１１におけるデータベース３３に対するデータ検索処理の流れを図６のフローチャートを用いて説明する。図６は本実施の形態のデータ検索処理手順を示すフローチャートである。
クライアントからデータ検索処理要求があると、ステップ１５１によりアプリケーションプログラム１１からクライアント処理部１２にデータの問合せが行われ、ステップ１５２でクライアント処理部１２からデータベース通信部１３１にデータ問合せ要求が送信され、さらにデータベース通信部１３１からデータベース管理部３１へ転送される。ステップ１５３においてデータ問合せはデータベース処理部３２に渡り、データベース３３のデータ検索処理が実行される。ステップ１５４でサーバキャッシュ３７に該当するデータが既にある場合、ステップ１５５ではキャッシュ管理テーブル３５を使い、問合せ要求元のクライアントノード１１のクライアントキャッシュ１４に検索結果に該当するデータが存在するかどうか調べる。ステップ１５６においてクライアントキャッシュ１４に該当するデータが存在している場合、ステップ１５７でキャッシュ管理部３４はキャッシュ管理テーブル３５の情報を使い、そのデータがキャッシュされた後に更新されているかどうか判定する。ステップ１５８においてデータが更新されていないときはステップ１５９でクライアント処理部１２に使用するキャッシュの指示を送信する。ステップ１６４でクライアント処理部１２はキャッシュ管理部３４から送信されたキャッシュの指示によりクライアントキャッシュ１４からデータを取り出し、アプリケーションプログラム１１にデータを渡して、ステップ１６５の終了となる。
【００２４】
ステップ１５４でサーバキャッシュ３７に該当するデータが存在しない場合は、ステップ１６０でサーバキャッシュ３７にデータを転送してステップ１６１へ進む。ステップ１５６でクライアントキャッシュ１４に該当するデータが存在しない場合、またステップ１５８でキャッシュされたデータがその後で更新されている場合、ステップ１６１において、サーバキャッシュ３７から該当するデータをクライアント処理部１２に送信する。ステップ１６２ではキャッシュ管理部３４はキャッシュ管理テーブル３５にあるステップ１６１で送信したデータに関する情報を更新する。ステップ１６３においてクライアントキャッシュ制御部１３は送られてきたデータをクライアントキャッシュ１４に追加する。そしてステップ１６４ではクライアント処理部１１２はクライアントキャッシュ１４から結果データを取り出し、アプリケーションプログラム１１にデータを渡して、ステップ１６５の終了となる。
【００２５】
次にアプリケーションプログラム１１におけるデータベース３３に対するデータ更新処理の流れを図７のフローチャートを用いて説明する。図７は本実施の形態のデータ更新処理手順を示すフローチャートである。
ステップ１７１によりアプリケーションプログラム１１からクライアント処理部１２にデータの更新要求が行われると、ステップ１７２でクライアント処理部１２からデータベース通信部１３１にデータ更新要求が送信され、さらにデータベース通信部１３１からデータベース管理部３１へ転送される。ステップ１７３においてデータベース処理部３２が更新対象となるデータの検索処理をデータベース３３から行い、ステップ１７４でデータベース３３のデータを更新する。ステップ１７５でサーバキャッシュ制御部３４は更新対象のデータがサーバキャッシュ３７に存在するかどうか調べる。対象のデータがサーバキャッシュ３７に存在する場合、ステップ１７６で対象データをサーバキャッシュ３７から削除する。ステップ１７７ではクライアント処理部１２にデータの更新処理の完了通知を送信して、ステップ１７８の終了となる。
【００２６】
以上のように、データ検索処理において、クライアントキャッシュ１４にすでにデータが保持されている場合、データの転送は行わずにクライアントキャッシュ１４のデータを使用するようにしているので、不要なデータ転送を削除することができる。
【００２７】
また、クライアントキャッシュ１４でのデータの有無、更新有無の判定をサーバノード３ａで行うようにしているので、キャッシュされているデータの更新情報の転送処理を省くことができる。
【００２８】
さらに、キャッシュデータの有無、更新有無判定を実際の検索データにより行うようにしているので、更新情報の検索処理を削除することができ、サーバノード３ｂの処理を減らすことができる。
【００２９】
また、キャッシュの判定で使用したデータをクライアントノード１に転送するようにしているので、データの一貫性を保障することができる。
【００３０】
さらに、クライアントノード１ではクライアントキャッシュ１４の制御のみを行うようにしているので、クライアントノード１でのキャッシュデータの比較処理を省くことができる。
【００３１】
そして、データベース処理用のサーバノード３ａ、キャッシュ管理用のサーバノード３ｂと処理単位でサーバノードを分けることにより負荷の分散が図られ、それぞれが同時に並行して動作することによりシステムの処理効率を高めることができる。
【００３２】
【発明の効果】
以上のようにこの発明によれば、クライアントキャッシュでのデータの有無、更新有無の判定をサーバノードで行うようにしているので、キャッシュされているデータの更新情報の転送処理を省くことができる。
【図面の簡単な説明】
【図１】この発明の実施の形態１を示すデータベースキャッシュ処理システムのブロック図である。
【図２】この発明の実施の形態１におけるキャッシュ管理テーブルの一構成例を示す説明図である。
【図３】この発明の実施の形態１におけるデータの検索処理手順を示すフローチャート図である。
【図４】この発明の実施の形態１におけるデータの更新処理手順を示すフローチャート図である。
【図５】この発明の実施の形態２を示すデータベースキャッシュ処理システムのブロック図である。
【図６】この発明の実施の形態２におけるデータの検索処理手順を示すフローチャート図である。
【図７】この発明の実施の形態２におけるデータの更新処理手順を示すフローチャート図である。
【符号の説明】
１：クライアントノード、２：ネットワーク、３、３ａ、３ｂ：サーバノード、１１：アプリケーションプログラム、１２：クライアント処理部、１３：クライアントキャッシュ制御部、１４：クライアントキャッシュ、３１：データベース管理部、３２：データベース処理部、３３：データベース、３５：キャッシュ管理テーブル、３４：キャッシュ管理部、３６：サーバキャッシュ制御部、３７：サーバキャッシュ、１３１：データベース通信部。
【図１】
2004280494.tif 000003
【図２】
2004280494.tif 000004
【図３】
2004280494.tif 000005
【図４】
2004280494.tif 000006
【図５】
2004280494.tif 000007
【図６】
2004280494.tif 000008
【図７】
2004280494.tif 000009