(57)【特許請求の範囲】
【請求項１】
非同期で更新される同一のデータを記憶する複数のデータベースサーバと、当該データベースサーバに記憶されたデータのキャッシュを記憶する複数あるキャッシュサーバとを有するキャッシュ制御システムであって、
前記データベースサーバ各々は、
自データベースサーバのデータが更新される場合に、更新される当該データを識別する更新データ識別情報を含む更新情報を複数ある前記キャッシュサーバを識別する識別情報各々に対応付けて更新情報記憶部に格納する格納部を備え、
前記キャッシュサーバ各々は、
複数ある前記データベースサーバ各々から、前記更新情報記憶部に前記格納部によって自キャッシュサーバを識別する識別情報に対応付けて格納された前記更新情報を取得する更新情報取得部と、
前記更新情報取得部により取得された更新情報により識別されるデータのキャッシュを無効にする無効処理部と
を備えたことを特徴とするキャッシュ制御システム。
【請求項２】
複数ある前記データベースサーバ各々は、
複数ある前記データベースサーバ各々について、前記データの更新が終了したか否かを示す更新結果を記憶する更新結果記憶部を更に備え、
前記キャッシュサーバ各々は、
前記データベースサーバから、前記更新結果記憶部に記憶された複数あるデータベースサーバ各々についての前記更新結果を取得する更新結果取得部と、
前記更新結果取得部によって取得された更新結果各々に基づいて、複数ある前記データベースサーバすべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合には、前記更新情報取得部により取得された更新情報を前記更新情報記憶部から削除する削除処理を実行し、更新が終了していないと判定した場合には当該削除処理を実行しない削除処理部とを更に備えることを特徴とする請求項１に記載のキャッシュ制御システム。
【請求項３】
前記キャッシュサーバは、
前記データベースサーバにおける更新が正常に実行されている状態か否かを複数ある前記データベースサーバ各々について判定する更新状態判定部を更に備え、
前記キャッシュサーバの前記削除処理部は、前記更新状態判定部によって正常に実行されている状態であると判定されたデータベースサーバすべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合には前記削除処理を実行し、更新が終了していないと判定した場合には前記削除処理を実行しないことを特徴とする請求項２に記載のキャッシュ制御システム。
【請求項４】
非同期で更新される同一のデータを記憶する複数のデータベースサーバと、当該データベースサーバに記憶されたデータのキャッシュを記憶する複数あるキャッシュサーバとを有するキャッシュ制御システムに適用されるキャッシュ制御方法であって、
前記データベースサーバ各々は、
自データベースサーバのデータが更新される場合に、更新される当該データを識別する更新データ識別情報を含む更新情報を複数ある前記キャッシュサーバを識別する識別情報各々に対応付けて更新情報記憶部に格納する格納ステップを含み、
前記キャッシュサーバ各々は、
複数ある前記データベースサーバ各々から、前記更新情報記憶部に前記格納ステップによって自キャッシュサーバを識別する識別情報に対応付けて格納された前記更新情報を取得する更新情報取得ステップと、
前記更新情報取得ステップにより取得された更新情報により識別されるデータのキャッシュを無効にする無効処理ステップと
を含むことを特徴とするキャッシュ制御方法。
【請求項５】
前記キャッシュサーバ各々は、
前記データベースサーバから、複数ある前記データベースサーバ各々について前記データの更新が終了したか否かを示す更新結果を記憶する前記更新結果記憶部に記憶された複数あるデータベースサーバ各々についての前記更新結果を取得する更新結果取得ステップと、
前記更新結果取得ステップによって取得された更新結果各々に基づいて、複数ある前記データベースサーバすべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合には、前記更新情報取得ステップにより取得された更新情報を前記更新情報記憶部から削除する削除処理を実行し、更新が終了していないと判定した場合には当該削除処理を実行しない削除処理ステップとを更に含むことを特徴とする請求項４に記載のキャッシュ制御方法。
【請求項６】
前記キャッシュサーバは、
前記データベースサーバにおける更新が正常に実行されている状態か否かを複数ある前記データベースサーバ各々について判定する更新状態判定ステップを更に含み、
前記キャッシュサーバの前記削除処理ステップは、前記更新状態判定ステップによって正常に実行されている状態であると判定されたデータベースサーバすべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合には前記削除処理を実行し、更新が終了していないと判定した場合には前記削除処理を実行しないことを特徴とする請求項５に記載のキャッシュ制御方法。
【請求項７】
非同期で更新される同一のデータを記憶する複数のデータベースサーバと、当該データベースサーバに記憶されたデータのキャッシュを記憶する複数あるキャッシュサーバとを有するキャッシュ制御システムにおいて用いられる当該データベースであって、
自データベースサーバのデータが更新される場合に、更新される当該データを識別する更新データ識別情報を含む更新情報を複数ある前記キャッシュサーバを識別する識別情報各々に対応付けて更新情報記憶部に格納する格納部と、
複数ある前記データベースサーバ各々から前記更新情報記憶部に前記格納部によって自キャッシュサーバを識別する識別情報に対応付けて格納された前記更新情報を取得し、取得した更新情報により識別されるデータのキャッシュを無効にするキャッシュサーバから更新情報を要求されると、更新情報を送信する更新情報送信部と
を備えたことを特徴とするデータベースサーバ。
【請求項８】
非同期で更新される同一のデータを記憶する複数のデータベースサーバと、当該データベースサーバに記憶されたデータのキャッシュを記憶する複数あるキャッシュサーバとを有するキャッシュ制御システムにおいて用いられる当該データベースの制御プログラムであって、
自データベースサーバのデータが更新される場合に、更新される当該データを識別する更新データ識別情報を含む更新情報を複数ある前記キャッシュサーバを識別する識別情報各々に対応付けて更新情報記憶部に格納する格納手順と、
複数ある前記データベースサーバ各々から前記更新情報記憶部に前記格納手順によって自キャッシュサーバを識別する識別情報に対応付けて格納された前記更新情報を取得し、取得した更新情報により識別されるデータのキャッシュを無効にするキャッシュサーバから更新情報を要求されると、更新情報を送信する更新情報送信手順と
を実行させることを特徴とするデータベースサーバ制御プログラム。
【請求項９】
非同期で更新される同一のデータを記憶する複数のデータベースサーバと、当該データベースサーバに記憶されたデータのキャッシュを記憶する複数あるキャッシュサーバとを有するキャッシュ制御システムにおいて用いられる当該キャッシュサーバの制御プログラムであって、
自データベースサーバのデータが更新される場合に、更新される当該データを識別する更新データ識別情報を含む更新情報を複数ある前記キャッシュサーバを識別する識別情報各々に対応付けて更新情報記憶部に格納する格納部を備える前記データベースサーバ各々から、前記更新情報記憶部に前記格納部によって自キャッシュサーバを識別する識別情報に対応付けて格納された前記更新情報を取得する更新情報取得部と、
前記更新情報取得部により取得された更新情報により識別されるデータのキャッシュを無効にする無効処理部と
を備えたことを特徴とするキャッシュサーバ。
【請求項１０】
非同期で更新される同一のデータを記憶する複数のデータベースサーバと、当該データベースサーバに記憶されたデータのキャッシュを記憶する複数あるキャッシュサーバとを有するキャッシュ制御システムにおいて用いられる当該キャッシュサーバのキャッシュサーバ制御プログラムであって、
自データベースサーバのデータが更新される場合に、更新される当該データを識別する更新データ識別情報を含む更新情報を複数ある前記キャッシュサーバを識別する識別情報各々に対応付けて更新情報記憶部に格納する格納部を備える前記データベースサーバ各々から、前記更新情報記憶部に前記格納部によって自キャッシュサーバを識別する識別情報に対応付けて格納された前記更新情報を取得する更新情報取得手順と、
前記更新情報取得手順により取得された更新情報により識別されるデータのキャッシュを無効にする無効処理手順と
を実行させることを特徴とするキャッシュサーバ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ制御システム及びキャッシュ制御方法に関する。
【背景技術】
【０００２】
データベースサーバに格納された大規模なデータを用いて、複数のクライアントにネットワーク上にてサービスを提供するサービス提供システムがある。サービス提供システムでは、データベースサーバに格納されたデータ各々の利用頻度は、データごとに様々となる。
【０００３】
ここで、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ（ＷＷＷ）サーバにより記憶されたデータをキャッシュするキャッシュ技術がある。図３５は、キャッシュ技術を実行するシステムの一例を示す図である。図３５において、ユーザ端末１００〜ユーザ端末１０２は、利用者により用いられる端末である。ＷＷＷサーバ１０５は、データを管理するサーバである。ＷＷＷ用キャッシュサーバ１０３及びＷＷＷ用キャッシュサーバ１０４は、ＷＷＷサーバ１０５により管理されるデータのキャッシュを記憶するサーバである。また、キャッシュ技術を実行するシステムでは、ユーザ端末１００〜１０２に近い位置に、ユーザ端末の数に応じた台数のＷＷＷ用キャッシュサーバが予め配置される。図３５に示す例では、ＷＷＷ用キャッシュサーバ１０３は、ユーザ端末１００用のキャッシュサーバとして配置され、ＷＷＷ用キャッシュサーバ１０４が、ユーザ端末１０１及び１０２用のキャッシュサーバとして配置される。
【０００４】
図３５に示すような構成の下、ユーザ端末１００がＷＷＷサーバ１０５によって管理されるデータを取得する場合を用いて説明する。この場合、キャッシュ技術を実行するシステムでは、ＷＷＷ用キャッシュサーバ１０３は、ユーザ端末１００によってＷＷＷサーバ１０５から一度取得されたデータのキャッシュを記憶する。そして、キャッシュ技術を実行するシステムでは、ユーザ端末１００が再度同一のデータにアクセスする場合に、ＷＷＷ用キャッシュサーバ１０３がユーザ端末１００にデータを送信する。
【０００５】
図３６は、図３５に示したキャッシュ技術を一般化したシステムの一例を示す図である。図３６において、クライアント端末１１０〜クライアント端末１１２は、図３５におけるユーザ端末１００〜ユーザ端末１０２に対応する。また、キャッシュサーバ１１３及びキャッシュサーバ１１４は、図３５におけるＷＷＷ用キャッシュサーバ１０３及びＷＷＷ用キャッシュサーバ１０４に対応する。また、データベースサーバ１１５は、図３５におけるＷＷＷサーバ１０５に対応する。
【０００６】
ここで、キャッシュサーバに記憶されているデータが、データベースサーバに記憶されているデータと同一とならないことがある。例えば、キャッシュサーバが、データベースサーバに記憶されたデータ「Ｄ」のキャッシュを記憶しており、キャッシュサーバに記憶されたデータ「Ｄ」を用いてクライアント端末にサービスが提供されている場合を用いて説明する。また、キャッシュサーバがデータ「Ｄ」を取得した後に、データベースサーバに記憶されたデータ「Ｄ」が「Ｅ」に更新された場合を用いて説明する。この場合、キャッシュサーバによって記憶されているデータ「Ｄ」は更新前のデータであり、データベースサーバに記憶されているデータとキャッシュサーバに記憶されているデータとを同一とはならない。
【０００７】
このことを踏まえ、データベースサーバに記憶されているデータとキャッシュサーバに記憶されているデータとを同一にする手法として、Ｉｎｖａｌｉｄａｔｉｏｎ  Ｒｅｐｏｒｔという技術（以下、「ＩＲ技術」とも称する）がある。
【０００８】
ＩＲ技術を実行するシステムでは、データベースサーバにて更新されたデータについての情報であるＩＲ情報を生成する。また、ＩＲ技術を実行するシステムでは、データベースサーバとキャッシュサーバとがＩＲ情報を共有することで、キャッシュサーバに記憶されているデータのうち、古いデータを無効化して使われない状態とする。
【０００９】
例えば、データベースサーバがユーザごとにパスワードを管理する場合を用いて説明する。また、ユーザ「Ｕ」のパスワードが、パスワード「Ｐ１」であり、キャッシュサーバがユーザ「Ｕ」のパスワードとしてパスワード「Ｐ１」を記憶している場合を用いて説明する。また、その後、データベースサーバにて、ユーザ「Ｕ」のパスワードが、パスワード「Ｐ１」からパスワード「Ｐ２」に変更された場合を用いて説明する。この場合、データベースサーバは、例えば、更新されたパスワード「Ｐ１」を識別するユーザ「Ｕ」含むＩＲ情報を生成し、生成したＩＤ情報をキャッシュサーバと共有する。この結果、キャッシュサーバは、ユーザ「Ｕ」のパスワードとして記憶していたパスワード「Ｐ１」のキャッシュを無効化する。
【００１０】
なお、その後、キャッシュサーバが、ユーザ「Ｕ」のパスワードをクライアント端末から要求された場合を用いて説明する。この場合、キャッシュサーバにおいてユーザ「Ｕ」のパスワードは無効化されており、キャッシュサーバは、データベースサーバからユーザ「Ｕ」のパスワード「Ｐ２」を取得し、キャッシュサーバ上にパスワード「Ｐ２」のキャッシュを格納するとともに、クライアント端末に対してパスワード「Ｐ２」を提供する。
【００１１】
また、データベースサーバに記憶されたデータは、サービスの提供を継続するために不可欠な情報であることを踏まえ、冗長化などの耐故障技術を用いてデータベースサーバを構成する技術がある。図３７は、データベースサーバを二重化した場合における構成の一例を示す図である。すなわち、図３７に示す例では、データベースサーバ１２０とデータベースサーバ１２１とが同一のデータを記憶する。また、図３７に示す例では、キャッシュサーバ１２２は、データベースサーバ１２０からデータを取得し、キャッシュサーバ１２３及びキャッシュサーバ１２４は、データベースサーバ１２１からデータを取得する場合を示した。
【００１２】
ここで、データベースサーバを冗長化する技術として、同期型レプリケーションと非同期方レプリケーションとがある。同期型レプリケーションとは、図３７の例を用いて説明すると、データベースサーバ１２０とデータベースサーバ１２１とを同時に更新する手法である。また、非同期型のレプリケーションとは、図３７の例を用いて説明すると、データベースサーバ１２０とデータベースサーバ１２１とのうち一方のデータベースサーバに記憶されたデータを更新した後、他方のデータベースサーバに記憶されたデータを更新する手法である。言い換えると、非同期型レプリケーションでは、複数あるデータベースサーバ各々は、同時に更新されるわけではない。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】「分散システム  原理とパラダイム」、アンドリュー・S・タネンバウム、マールテン・ファン・スティーン著、水野忠則、宮西洋太郎、鈴木健二、西山智、佐藤文明、東野輝夫訳、株式会社ピアソン・エデュケーション、２００３年発行
【非特許文献２】BUILDING  SECURE  AND  RELIABLE  NETWORK  APPLICATIONS、  Kenneth  P．  Birman著、Manning、１９９６年発行
【非特許文献３】G．  Cao、  ”A  Scalable  Low−Latency  Cache  Invalidation  Strategy  for  Mobile  Environments”、  IEEE  Transactions  on  Knowledge  and  Data  engineering、  vol．１５、  no．５、  pp．１２５１−１２６５、  ２００３
【非特許文献４】Z．Wang、  S．K．Das、  H．Che、  M．Kumar、  ”A  Scalable  Asynchronous  Cache  Consistency  Scheme  （SACCS）  for  Mobile  Environments”、  IEEE  Transactions  on  Parallel  and  Distributed  Systems、  vol．１５、  no．１１、  ２００４
【非特許文献５】J．Gray、  P．Helland、  P．O’Neil、  D．Shasha、  Mohan  Kumar、  ”The  Dangers  of  Replication  and  a  Solution”、  Proc．ACM  SIGMOD  ’８６、  pp．１７３−１８３、  June  １９９６
【非特許文献６】K．P．Birman著、  ”BUILDING  SECURE  AND  RELIABLE  NETWORK  APPLICATIONS”、  Manning、  １９９６年
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、ＩＲ技術と非同期型レプリケーションと併用すると、キャッシュサーバが古いデータを無効化することなく保持することがあるという問題がある。具体的には、非同期型レプリケーションを実行するシステムでは、複数あるデータベースサーバ各々に記憶されたデータが同一とはならない期間があり、更新されるタイミングが異なる結果データベースサーバごとにＩＲ情報が生成されるタイミングも異なる。この結果、例えば、データベースサーバに故障が発生した場合に、データベースサーバに記憶されたデータとキャッシュサーバに記憶されたデータとが同一とならない場合がある。
【００１５】
図３８を更に用いて説明する。図３８は、データベースサーバに記憶されたデータとキャッシュサーバに記憶されたデータとが同一とならない場合の一例を示す図である。図３８における横軸は、時間軸を示し、左側から右側に向かって時間が経過するものとして説明する。なお、図３８を用いて説明する際には、システムの構成が図３７と同一であるものとして説明する。
【００１６】
図３８における時点１３０において、データベースサーバ１２０に記憶されたデータが更新され、データベースサーバ１２０にＩＲ情報が登録された場合を用いて説明する。そして、図３８における時点１３１において、キャッシュサーバ１２２とデータベースサーバ１２０との間でＩＲ情報が共有され、キャッシュサーバ１２２において古いデータが無効化された場合を用いて説明する。そして、図３８における時点１３２において、キャッシュサーバ１２３が、クライアント端末１２６へのサービス提供のため、自身の保持していないデータをデータベースサーバ１２１から取得する場合を用いて説明する。また、ここで、キャッシュサーバ１２３が取得したデータは、時点１３０における更新の対象となったデータであるものとして説明する。そして、図３８における時点１３３において、データベースサーバ１２０に対して行われた更新が、非同期でデータベースサーバ１２１に対して行われる結果、データベースサーバ１２１に記憶されたデータが更新され、データベースサーバ１２１にＩＲ情報が登録された場合を用いて説明する。そして、図３８における時点１３４において、データベースサーバ１２１が故障した場合を用いて説明する。
【００１７】
この場合、時点１３２においては、データベースサーバ１２１は更新されておらず、キャッシュサーバ１２３は、時点１３２において古いデータを取得する。その後、時点１３３においてデータベースサーバ１２１は更新されるが、時点１３４において故障する結果、キャッシュサーバ１２３は、時点１３２の時点において取得した古いデータを、無効化することなく保持することになる。
【００１８】
開示の技術は、上述に鑑みてなされたものであって、キャッシュサーバに記憶された古いデータを無効化可能であるキャッシュ制御システム及びキャッシュ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１９】
開示するキャッシュ制御システムは、１つの態様において、非同期で更新される同一のデータを記憶する複数のデータベースサーバと、当該データベースサーバに記憶されたデータのキャッシュを記憶する複数あるキャッシュサーバとを有するシステムとなる。また、キャッシュ制御システムでは、１つの態様において、前記データベースサーバ各々は、自データベースサーバのデータが更新される場合に、更新される当該データを識別する更新データ識別情報を含む更新情報を複数ある前記キャッシュサーバを識別する識別情報各々に対応付けて更新情報記憶部に格納する格納部を備える。また、キャッシュ制御システムでは、１つの態様において、前記キャッシュサーバ各々は、複数ある前記データベースサーバ各々から、前記更新情報記憶部に前記格納部によって自キャッシュサーバを識別する識別情報に対応付けて格納された前記更新情報を取得する更新情報取得部を備える。また、キャッシュ制御システムでは、１つの態様において、前記取得部により取得された更新情報により識別されるデータのキャッシュを無効にする無効処理部を備える。
【発明の効果】
【００２０】
開示のキャッシュ制御システムの１つの態様によれば、１つでも正常なデータベースサーバがあれば、キャッシュサーバに記憶された古いデータを無効化可能であるという効果を奏する。
【図面の簡単な説明】
【００２１】
【図１】図１は、実施例１に係るキャッシュ制御システムの一例の全体像を示す図である。
【図２】図２は、実施例１におけるデータベースサーバの構成の一例を示すブロック図である。
【図３】図３は、実施例１におけるデータベースサーバのユーザ情報ＤＢに記憶された情報の一例を示す図である。
【図４】図４は、実施例１におけるデータベースサーバのＩＲ情報ＤＢに記憶された情報の一例を示す図である。
【図５】図５は、実施例１におけるデータベースサーバの配信情報ＤＢに記憶された情報の一例を示す図である。
【図６】図６は、実施例１におけるデータベースサーバの装置情報ＤＢに記憶された情報の一例を示す図である。
【図７】図７は、実施例１におけるキャッシュサーバの構成の一例を示すブロック図である。
【図８】図８は、実施例１におけるキャッシュサーバのキャッシュに記憶された情報の一例を示す図である。
【図９】図９は、実施例１におけるキャッシュサーバの検索先状態ＤＢに記憶された情報の一例を示す図である。
【図１０】図１０は、実施例１におけるキャッシュサーバの更新登録状態ＤＢに記憶された情報の一例を示す図である。
【図１１】図１１は、実施例１における監視サーバの構成の一例を示すブロック図である。
【図１２】図１２は、実施例１における監視サーバの装置情報ＤＢに記憶された情報の一例を示す図である。
【図１３】図１３は、実施例１におけるデータベースサーバ各々間における処理の流れの一例を示すシーケンス図である。
【図１４】図１４は、実施例１におけるデータベースサーバと監視サーバ間における処理の流れの一例を示すシーケンス図である。
【図１５】図１５は、実施例１におけるキャッシュサーバとデータベースサーバの間における処理の流れの一例について示すシーケンス図である。
【図１６】図１６は、実施例１におけるキャッシュサーバとデータベースサーバの間における処理の流れの一例について示すシーケンス図である。
【図１７】図１７は、実施例１におけるクライアント端末とキャッシュサーバとデータベースサーバと間における処理の流れの一例を示すシーケンス図である。
【図１８】図１８は、実施例１におけるデータベースサーバのキャッシュ応答部による処理の流れの一例を示すフローチャートである。
【図１９】図１９は、実施例１におけるデータベースサーバのＩＲ情報応答部による処理の流れの一例を示すフローチャートである。
【図２０】図２０は、実施例１におけるデータベースサーバの更新情報応答部による処理の流れの一例を示フローチャートである。
【図２１】図２１は、実施例１におけるデータベースサーバの更新成否応答部による処理の流れの一例を示すフローチャートである。
【図２２】図２２は、実施例１における更新成否結果対応表の一例を示す図である。
【図２３】図２３は、実施例１におけるデータベースサーバの装置状態応答部による処理の一例を示すフローチャートである。
【図２４】図２４は、実施例１におけるデータベースサーバの装置状態格納部による処理の流れの一例を示すフローチャートである。
【図２５】図２５は、実施例１におけるデータベースサーバの閉塞制御部による処理の流れの一例を示すフローチャートである。
【図２６】図２６は、実施例１におけるデータベースサーバの更新情報配信部による詳細な処理の流れの一例を示すフローチャートである。
【図２７】図２７は、実施例１におけるデータベースサーバの更新再伝播部による処理の流れの一例を示すフローチャートである。
【図２８】図２８は、実施例１におけるキャッシュサーバのキャッシュ判定部による処理の流れの一例を示すフローチャートである。
【図２９】図２９は、実施例１におけるキャッシュサーバのＩＲ情報判定部による処理の流れの一例を示すフローチャートである。
【図３０】図３０は、実施例１における更新登録状態対応表の一例を示す図である。
【図３１】図３１は、実施例１におけるＩＲ情報削除対象判定表の一例を示す図である。
【図３２】図３２は、実施例１におけるキャッシュサーバの応答処理部による流れの一例を示すフローチャートである。
【図３３】図３３は、実施例１における監視サーバの故障判定部による処理の流れの一例を示すフローチャートである。
【図３４】図３４は、キャッシュ制御システムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。
【図３５】図３５は、キャッシュ技術を実行するシステムの一例を示す図である。
【図３６】図３６は、図３５に示したキャッシュ技術を一般化したシステムの一例を示す図である。
【図３７】図３７は、データベースサーバを二重化した場合における構成の一例を示す図である。
【図３８】図３８は、データベースサーバに記憶されたデータとキャッシュサーバに記憶されたデータとが同一とならない場合の一例を示す図である。
【発明を実施するための形態】
【００２２】
以下に、開示するキャッシュ制御システム及びキャッシュ制御方法の実施例について、図面に基づいて詳細に説明する。なお、本実施例により開示する発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００２３】
［実施例１に係るキャッシュ制御システムの全体像］
実施例１に係るキャッシュ制御システムの全体像について説明する。実施例１に係るキャッシュ制御システムは、データベースサーバ２００と、キャッシュサーバ３００と、監視サーバ４００と、クライアント端末５００とを有する。データベースサーバ２００は、データを記憶する。キャッシュサーバ３００は、データベースサーバ２００に記憶されたデータのキャッシュを記憶する。監視サーバ４００は、データベースサーバ２００を監視する。クライアント端末５００は、利用者により用いられる端末であって、データベースサーバ２００に記憶されたデータに基づくサービスの提供を受ける。
【００２４】
図１は、実施例１に係るキャッシュ制御システムの一例の全体像を示す図である。図１に示す例では、実施例１に係るキャッシュ制御システムは、２つのデータベースサーバ２００と、２つのキャッシュサーバ３００と、１つの監視サーバ４００と、１つのクライアント端末５００とを有する場合を示した。２つのデータベースサーバ２００と、２つのキャッシュサーバ３００と、１つの監視サーバ４００と、１つのクライアント端末５００とは、ネットワークを介して相互に接続される。
【００２５】
なお、図１に示す例では、キャッシュ制御システムが、２つのデータベースサーバ２００と、２つのキャッシュサーバ３００と、１つの監視サーバ４００と、１つのクライアント端末５００とを有する場合を示したが、これに限定されるものではない。例えば、キャッシュ制御システムは、３つ以上のデータベースサーバ２００を有しても良く、３つ以上のキャッシュサーバ３００を有しても良く、２つ以上の監視サーバ４００を有しても良く、２つ以上のクライアント端末５００を有しても良い。
【００２６】
キャッシュ制御システムの全体像について説明する際には、図１に示すように、２つあるデータベースサーバ２００各々をデータベースサーバ２００−１とデータベースサーバ２００−２と記載する。また、図１に示すように、２つあるキャッシュサーバ３００をキャッシュサーバ３００−１とキャッシュサーバ３００−２と記載する。
【００２７】
ここで、クライアント端末５００は、図１の（１）に示す例では、キャッシュサーバ３００−１に、データベースサーバ２００−１又はデータベースサーバ２００−２に記憶されたデータを要求するデータ要求を送信する。また、図１の（４）に示すように、クライアント端末５００は、キャッシュサーバ３００−１から受信したデータを用いて各種サービスを利用者に提供する。例えば、クライアント端末５００は、キャッシュサーバ３００−１から受信したデータを利用者に出力したり、キャッシュサーバ３００−１から受信したデータを用いて実行されるサービスを利用者に提供したりする。
【００２８】
データベースサーバ２００−１及びデータベースサーバ２００−２は、大容量のデータを記憶する記憶部を有する。データベースサーバ２００−１やデータベースサーバ２００−２の記憶部に記憶されたデータは、例えば、クライアント端末５００により利用されたり参照されたりする。
【００２９】
データベースサーバ２００−１及びデータベースサーバ２００−２は、非同期で更新される同一のデータを記憶する。また、データベースサーバ２００−１及びデータベースサーバ２００−２は、それぞれ、データベースサーバとしては独立した構成をとる。例えば、図１の（Ａ）及び（Ｂ）に示す例では、データベースサーバ２００−１が更新されると、データベースサーバ２００−１は、更新データをデータベースサーバ２００−２に配信し、データベースサーバ２００−２が、配信された更新データに含まれる更新後のデータが登録される結果、データが更新される。
【００３０】
また、データベースサーバ２００−１及びデータベースサーバ２００−２は、それぞれ、自データベースサーバに記憶されたデータが更新されると、ＩＲ情報を生成する。キャッシュ制御システムでは、ＩＲ情報は、キャッシュサーバ３００にデータの更新があったことを通知する情報となる。
【００３１】
キャッシュサーバ３００−１及びキャッシュサーバ３００−２は、データベースサーバ２００−１やデータベースサーバ２００−２に記憶されたデータのキャッシュを記憶する。例えば、キャッシュサーバ３００−１及びキャッシュサーバ３００−２は、データベースサーバ２００−１又はデータベースサーバ２００−２に記憶されるデータのうち、クライアント端末５００によって過去に利用されたデータのキャッシュを記憶する。なお、キャッシュサーバ３００−１及びキャッシュサーバ３００−２は、過去に利用された自装置のキャッシュに記憶することで、クライアント端末５００からの高速なアクセスを実現する。
【００３２】
また、キャッシュサーバ３００−１及びキャッシュサーバ３００−２は、クライアント端末５００からデータ要求を受信すると、データ要求により要求されたデータが自装置に記憶されている場合には、自装置が記憶しているデータをクライアント端末５００に送信する。一方、キャッシュサーバ３００−１及びキャッシュサーバ３００−２は、データ要求により要求されたデータを自装置に記憶していない場合には、図１の（２）に示すように、データ検索要求をデータベースサーバ２００−１やデータベースサーバ２００−２に送信する。そして、図１の（３）に示すように、キャッシュサーバ３００−１及びキャッシュサーバ３００−２は、データベースサーバ２００−１やデータベースサーバ２００−２からデータ検索要求に対する応答となるデータ応答を受信すると、自装置のキャッシュに受信したデータのキャッシュを格納するとともに、図１の（４）に示すように、受信したデータをクライアント端末５００に送信する。
【００３３】
また、図１の（ａ）に示すように、キャッシュサーバ３００−１及びキャッシュサーバ３００−２は、任意のタイミングにて、データベースサーバ２００−１やデータベースサーバ２００−２に対してＩＲ情報要求を送信する。ここで、データベースサーバ２００−１やデータベースサーバ２００−２によってＩＲ情報が生成されていた場合には、図１の（ｂ）に示すように、キャッシュサーバ３００−１及びキャッシュサーバ３００−２は、ＩＲ情報の応答を受信する。そして、キャッシュサーバ３００−１及びキャッシュサーバ３００−２は、クライアント端末５００からのデータ要求に対して、自装置に記憶されている古いデータを無効化することで、クライアント端末５００からのデータ要求に対して古いデータを送信しないようにする。
【００３４】
監視サーバ４００は、データベースサーバ２００−１及びデータベースサーバ２００−２の状態を監視する。ここで、図１の（ｉ）に示すように、監視サーバ４００は、データベースサーバ２００−１又はデータベースサーバ２００−２の状態についての情報である装置情報を取得し、データベースサーバ２００の状態を判定する。そして、図１の（ｉｉ）に示すように、監視サーバ４００は、データベースサーバ２００−１及びデータベースサーバ２００−２に対して、各データベースサーバ２００各々についての判定結果となる装置状態を格納する旨の装置状態格納要求を送信する。また、図１の（ｉｉｉ）に示すように、監視サーバ４００は、故障したと判定したデータベースサーバ２００に対して、キャッシュサーバ３００との間におけるデータの送受信を閉塞する旨の閉塞要求を送信する。
【００３５】
ここで、詳細については後述するように、実施例１に係るキャッシュ制御システムでは、データベースサーバ２００各々は、自データベースサーバ２００のデータが更新される場合に、更新されるデータを識別するキー情報を含むＩＲ情報を複数あるキャッシュサーバを識別する識別情報各々に対応付けて生成する。また、キャッシュサーバ３００各々は、複数あるデータベースサーバ２００各々から、自キャッシュサーバを識別する識別情報に対応付けて生成されたＩＲ情報を取得し、取得したＩＲ情報により識別されるデータのキャッシュを無効にする。この結果、１つでも正常なデータベースサーバ２００があれば、キャッシュサーバ３００に記憶された更新前のデータを無効にすることが可能である。なお、キー情報は「更新データ識別情報」とも称し、ＩＲ情報は「更新情報」とも称する。
【００３６】
また、詳細については後述するように、実施例１に係るキャッシュ制御システムでは、複数あるデータベースサーバ２００各々は、複数あるデータベースサーバ２００各々について、データの更新が終了したか否かを示す更新結果を記憶する。また、キャッシュサーバ３００各々は、データベースサーバ２００から、複数あるデータベースサーバ２００各々についての更新結果を取得する。そして、キャッシュサーバ３００は、更新結果情報各々に基づいて、複数あるデータベースサーバすべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合にはＩＲ情報をデータベースサーバ２００から削除する削除処理を実行し、更新が終了していないと判定した場合には削除処理を実行しない。この結果、詳細については後述するように、データベースサーバ２００がどのような状況において故障したとしても、キャッシュサーバ３００によって古いデータが有効なまま記憶され続けることがなくなり、データベースサーバとキャッシュサーバとを確実に一致させることが可能である。
【００３７】
また、詳細については後述するように、実施例１に係るキャッシュ制御システムでは、キャッシュサーバ３００は、データベースサーバ２００における更新が正常に実行されている状態か否かを複数あるデータベースサーバ２００各々について判定する。そして、キャッシュサーバ３００は、正常に実行されている状態であると判定されたデータベースサーバ２００すべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合に削除処理を実行し、更新が終了していないと判定した場合には削除処理を実行しない。の結果、データベースサーバ２００とキャッシュサーバ３００とを一致させることが可能である。
【００３８】
［実施例１に係るキャッシュ制御システムの構成］
実施例１に係るキャッシュ制御システムの構成の一例について説明する。以下では、実施例１におけるデータベースサーバ２００の構成の一例と、実施例１におけるキャッシュサーバ３００の構成の一例と、実施例１における監視サーバ４００の構成の一例とを順に説明する。
【００３９】
［実施例１におけるデータベースサーバ２００の構成］
図２は、実施例１におけるデータベースサーバの構成の一例を示すブロック図である。図２に示す例では、データベースサーバ２００は、通信制御Ｉ／Ｆ部２０１と、記憶部２１０と、制御部２２０とを有する。
【００４０】
通信制御Ｉ／Ｆ部２０１は、制御部２２０と接続される。通信制御Ｉ／Ｆ部２０１は、キャッシュサーバ３００や、監視サーバ４００、他のデータベースサーバ２００との間でデータの送受信を行う。なお、通信制御Ｉ／Ｆ部２０１により送受信される情報の詳細については、適宜後述する。
【００４１】
記憶部２１０は、制御部２２０と接続される。記憶部２１０は、制御部２２０による各種処理に用いるデータ及びプログラムを記憶する。記憶部２１０は、例えば、ＲＡＭ（Random  Access  Memory）やフラッシュメモリ（Flash  Memory）などの半導体メモリ素子、又は、ハードディスクや光ディスクなどの記憶装置である。図２に示す例では、記憶部２１０は、ユーザ情報ＤＢ２１１と、ＩＲ情報ＤＢ２１２と、配信情報ＤＢ２１３と、装置情報ＤＢ２１４とを有する。なお、ＩＲ情報ＤＢ２１２は、「更新情報記憶部」とも称し、配信情報ＤＢ２１３は、「更新結果記憶部」とも称する。
【００４２】
ユーザ情報ＤＢ２１１は、クライアント端末５００により利用されるデータやクライアント端末５００に対してサービスを提供する際に用いられるデータを記憶する。ここで、複数あるデータベースサーバ２００のユーザ情報ＤＢ２１１各々は、非同期で更新され、同一のデータを記憶する。
【００４３】
以下では、ユーザ情報ＤＢ２１１が、キー情報と属性情報とを対応付けて記憶する場合を用いて説明する。ここで、属性情報とは、更新対象となるデータである。以下では、具体的な例をあげて説明する場合には、属性情報がユーザごとに一意となるパスワードである場合を用いて説明するが、これに限定されるものではなく、任意の情報であって良い。また、キー情報とは、属性情報を一意に識別する情報である。以下では、具体的な例をあげて説明する場合には、キー情報がユーザを識別するユーザ情報である場合を用いて説明するが、これに限定されるものではなく、任意の情報であって良い。
【００４４】
また、以下では、ユーザ情報ＤＢ２１１が、キー情報と属性情報とを同じテーブルで記憶する場合を用いて説明するが、これに限定されるものではなく、別々のテーブルで記憶しても良い。また、以下では、キー情報と属性情報とがそれぞれ別個の情報である場合を用いて説明するが、これに限定されるものではなく、１つの情報であっても良く、任意の数の情報に分散されても良い。
【００４５】
図３は、実施例１におけるデータベースサーバのユーザ情報ＤＢに記憶された情報の一例を示す図である。図３に示す例では、ユーザ情報ＤＢ２１１は、キー情報「Ｕ００１」と属性情報「Ｐ００１」とを対応付けて記憶し、キー情報「Ｕ００２」と属性情報「Ｐ００２」とを対応付けて記憶する。すなわち、ユーザ情報ＤＢ２１１は、キー情報「Ｕ００１」により識別されるデータが、属性情報「Ｐ００１」であることを記憶する。
【００４６】
図２の説明に戻る。ＩＲ情報ＤＢ２１２は、キャッシュサーバを識別する識別情報に対応付けて、ＩＲ情報を記憶する。図４は、実施例１におけるデータベースサーバのＩＲ情報ＤＢに記憶された情報の一例を示す図である。図４に示す例では、ＩＲ情報ＤＢ２１２は、キャッシュサーバを識別する識別情報である「キャッシュサーバ名」に対応付けて、キー情報と更新ＩＤとを含むＩＲ情報を記憶する。ここで、更新ＩＤとは、データベースサーバ２００に記憶されたデータに対する更新を一意に識別する情報である。また、ＩＲ情報ＤＢ２１２に記憶されたキャッシュサーバ名は、ＩＲ情報の適用先となるキャッシュサーバ３００を示す。
【００４７】
図４に示す例では、ＩＲ情報ＤＢ２１２は、キャッシュサーバ名「キャッシュサーバ「Ａ」」に対応付けて、キー情報「Ｕ００１」と更新ＩＤ「Ｉ００１」とを含むＩＲ情報を記憶する。すなわち、ＩＲ情報ＤＢ２１２は、キャッシュサーバ「Ａ」に適用されるＩＲ情報として、更新ＩＤ「Ｉ００１」により識別される更新により、ユーザ情報ＤＢ２１１に記憶されたデータのうちキー情報「Ｕ００１」により識別されるデータが更新されたことを示すＩＲ情報を記憶する。
【００４８】
ここで、ＩＲ情報ＤＢ２１２は、後述するように、データベースサーバ２００のデータが更新されると、キャッシュサーバ３００それぞれについてＩＲ情報が制御部２２０によって生成され、制御部２２０によって格納される。すなわち、ＩＲ情報ＤＢ２１２は、ＩＲ情報が生成された後、キャッシュサーバ３００に用いられる前の段階においては、キャッシュサーバ名すべてについて、ＩＲ情報を対応付けて記憶する。また、ＩＲ情報ＤＢ２１２に記憶されたＩＲ情報は、後述するように、キャッシュサーバ３００が自装置内のキャッシュの最新化を行う際にキャッシュサーバ３００によって参照される。
【００４９】
図２の説明に戻る。配信情報ＤＢ２１３は、複数あるデータベースサーバ２００各々について、データの更新が終了したか否かを示す更新結果を記憶する。図５は、実施例１におけるデータベースサーバの配信情報ＤＢに記憶された情報の一例を示す図である。図５に示す例では、配信情報ＤＢ２１３は、「更新ＩＤ」と、データベースサーバ２００を一意に識別する識別情報である「データベースサーバ名」と、「配信結果」と、「更新結果」とを含むレコードを記憶する。
【００５０】
ここで、配信結果は、任意のデータベースサーバが更新された場合に、更新データが配信されたか否か示す。以下では、配信結果「ＯＫ」は、更新データの配信が成功した場合を示す。また、配信結果「未配信」は、更新データが配信されていない場合や、更新内用の配信が失敗した場合などが該当する。すなわち、配信結果「ＯＫ」である場合には、データベースサーバ２００に更新データが届いていることを示し、更新結果「未配信」である場合には、データベースサーバ２００に更新データが届いてないことを示す。
【００５１】
また、更新結果は、データの更新が終了したか否かを示す。以下では、更新結果「初期」は、更新ＩＤにより識別される更新が行われていないことを示す。また、更新結果「ＯＫ」は、更新ＩＤにより識別される更新が成功したことを示す。また、更新結果「ＮＧ」は、更新ＩＤにより識別される更新が失敗したことを示す。すなわち、更新結果「ＯＫ」である場合には、データベースサーバ２００に更新が反映されたことを示し、更新結果「初期」や「ＮＧ」である場合には、データベースサーバ２００に更新が反映されていないことを示す。
【００５２】
図５に示す例では、配信情報ＤＢ２１３は、更新ＩＤ「Ｉ００１」と、データベースサーバ名「データベースサーバＡ」と、配信結果「ＯＫ」と、更新結果「ＯＫ」とを含むレコードを記憶する。すなわち、図５に示す例では、配信情報ＤＢ２１３は、更新ＩＤ「Ｉ００１」により識別される更新について、データベースサーバ「Ａ」に対する更新データの配信が成功したことを記憶し、データベースサーバＢに対する配信が終了したことを記憶する。
【００５３】
また、配信情報ＤＢ２１３に記憶された情報は、制御部２２０により更新され、キャッシュサーバ３００がＩＲ情報をデータベースサーバ２００から削除するか否かを判定する際に用いられる。また、複数あるデータベースサーバ２００の配信情報ＤＢ２１３は、同一の情報を記憶する。言い換えると、複数あるデータベースサーバ２００各々が、データベースサーバ２００各々についての配信結果や更新結果を共有する。
【００５４】
なお、配信情報ＤＢ２１３に記憶された情報は、後述するように、キャッシュサーバ３００が、ＩＲ情報をデータベースサーバ２００から削除する削除処理を実行するか否かを判定する際に用いられる。配信情報ＤＢ２１３に記憶された情報は、後述するように、制御部２２０によって更新される。
【００５５】
図２の説明に戻る。装置情報ＤＢ２１４は、データベースサーバ２００各々の状態を記憶する。具体的には、装置情報ＤＢ２１４は、データベースサーバ２００各々について、他のデータベースサーバ２００からの更新データを受信したり、更新を実行したり、他のデータベースサーバ２００に更新データを配信したりすることが可能であるか否かを示す情報を記憶する。
【００５６】
図６は、実施例１におけるデータベースサーバの装置情報ＤＢに記憶された情報の一例を示す図である。図６に示す例では、装置情報ＤＢ２１４は、「データベースサーバ名」に対応付けて、データベースサーバ２００の状態を示す「装置状態」を記憶する。以下では、装置状態「正常」は、データベースサーバ２００が更新データを配信したり受信したり、更新を実行したりする際に用いられるリソースが正常に動作しており、更新データの配信や受信が可能な状態であることを示す。また、装置状態「故障」は、データベースサーバ２００が更新データを配信したり受信したり、更新を実行したりする際に用いられるリソースのいずれか１つ以上が故障しており、更新データの配信や受信、更新が不可能な状態であることを示す。
【００５７】
図６に示す例では、装置情報ＤＢ２１４は、データベースサーバ名「データベースサーバＡ」に対応付けて、装置状態「正常」を記憶する。また、装置情報ＤＢ２１４は、データベースサーバ名「データベースサーバＢ」に対応付けて、装置状態「正常」を記憶する。すなわち、装置情報ＤＢ２１４は、データベースサーバ「Ａ」とデータベースサーバ「Ｂ」とが、共に、更新データの配信や受信が可能な状態であることを記憶する。なお、各データベースサーバ３００の装置情報ＤＢ２１４各々が、全データベースサーバ２００についての装置情報を記憶する。
【００５８】
ここで、装置情報ＤＢ２１４に記憶された情報は、データベースサーバ２００が、自データベースサーバのユーザ情報ＤＢ２１１のデータが更新された場合に、更新データを配信する配信先となるデータベースサーバ２００を決定する際に用いられる。また、装置情報ＤＢ２１４に記憶された情報は、監視サーバ４００によって更新される。
【００５９】
図２の説明に戻る。制御部２２０は、通信制御Ｉ／Ｆ部２０１及び記憶部２１０と接続される。制御部２２０は、ＯＳ（Operating  System）などの制御プログラム、各種の処理手順などを規定したプログラムを記憶する内部メモリを有し、種々の処理を制御する。制御部２２０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）などである。図２に示す例では、制御部２２０は、キャッシュ応答部２２１と、ＩＲ情報応答部２２２と、更新情報応答部２２３と、更新成否応答部２２４と、装置状態応答部２２５と、装置状態格納部２２６と、閉塞制御部２２７と、更新情報配信部２２８と、更新再伝播部２２９とを有する。なお、各部の詳細については後述する。なお、更新情報配信部２２８は、「格納部」とも称する。また、更新情報応答部２２３は、「更新情報送信部」とも称する。
【００６０】
［実施例１におけるキャッシュサーバの構成］
図７は、実施例１におけるキャッシュサーバの構成の一例を示すブロック図である。図７に示す例では、キャッシュサーバ３００は、通信制御Ｉ／Ｆ部３０１と、記憶部３１０と、制御部３２０とを有する。
【００６１】
通信制御Ｉ／Ｆ部３０１は、制御部３２０と接続される。通信制御Ｉ／Ｆ部３０１は、データベースサーバ２００やクライアント端末５００との間でデータの送受信を行う。なお、通信制御Ｉ／Ｆ部３０１により送受信される情報の詳細については、適宜後述する。
【００６２】
記憶部３１０は、制御部３２０と接続される。記憶部３１０は、制御部３２０による各種処理に用いるデータ及びプログラムを記憶する。記憶部３１０は、例えば、ＲＡＭやフラッシュメモリなどの半導体メモリ素子、又は、ハードディスクや光ディスクなどである。図７に示す例では、記憶部３１０は、キャッシュ３１１と、検索先状態ＤＢ３１２と、更新登録状態ＤＢ３１３とを有する。
【００６３】
キャッシュ３１１は、データベースサーバ２００のユーザ情報ＤＢ２１１に記憶されたデータのキャッシュを記憶する。具体的には、キャッシュ３１１は、ユーザ情報ＤＢ２１１に記憶されたデータのうち、過去に利用されたデータのキャッシュを記憶する。
【００６４】
図８は、実施例１におけるキャッシュサーバのキャッシュに記憶された情報の一例を示す図である。図８に示す例では、キャッシュ３１１は、キー情報と属性情報とを対応付けて記憶する。図８に示す例では、キャッシュ３１１は、キー情報「Ｕ００１」と属性情報「Ｐ００１」とを対応付けて記憶し、キー情報「Ｕ００２」と属性情報「Ｐ００２」とを対応付けて記憶する。
【００６５】
なお、キャッシュ３１１に記憶されるデータは、ユーザ情報ＤＢ２１１に記憶されるデータの一部又は全てとなる。なお、ユーザ情報ＤＢ２１１のデータが更新され、更新されたデータのコピーをキャッシュ３１１が記憶していた場合について説明する。この場合、キャッシュ３１１が記憶するデータは、古いデータとなる。キャッシュ３１１に記憶された古いデータは、後述するように、制御部３２０によって、データベースサーバ２００から取得するＩＲ情報に基づいて削除される。
【００６６】
図７の説明に戻る。検索先状態ＤＢ３１２は、データベースサーバ２００各々の状態を記憶する。具体的には、検索先状態ＤＢ３１２は、データベースサーバ２００各々について、データ検索要求の送信先として良いか否かを記憶する。つまり、検索先状態ＤＢ３１２は、データ要求により要求されるデータのキャッシュがない場合に、データ要求により要求されるデータの検索を要求しても良いデータベースサーバ２００のデータベースサーバ名を記憶する。
【００６７】
図９は、実施例１におけるキャッシュサーバの検索先状態ＤＢに記憶された情報の一例を示す図である。図９に示す例では、「データベースサーバ名」と「閉塞状態」とを対応付けて記憶する。ここで、閉塞状態「未閉塞」は、データベースサーバ２００が閉塞されておらず、データベースサーバ２００に対してデータ検索要求の送信先として良いことを示す。また、閉塞状態「閉塞」は、データベースサーバ２００が閉塞されており、データベースサーバ２００に対してデータ検索要求の送信先とできないことを示す。
【００６８】
すなわち、後述するように、キャッシュサーバ３００は、データベースサーバ２００にデータ検索要求を送信する場合に、閉塞状態「閉塞」となっているデータベースサーバ２００にはデータ検索要求を送信しない。また、キャッシュサーバ３００は、データベースサーバ２００にデータ検索要求を実行する場合に、閉塞状態「未閉塞」となっているデータベースサーバ２００にデータ検索要求を送信する。
【００６９】
図９に示す例では、検索先状態ＤＢ３１２は、データベースサーバ名「データベースサーバＡ」と閉塞状態「未閉塞」とを対応付けて記憶する。また、検索先状態ＤＢ３１２は、データベースサーバ名「データベースサーバＢ」と閉塞状態「未閉塞」とを対応付けて記憶する。すなわち、検索先状態ＤＢ３１２は、データベースサーバ「Ａ」とデーベースサーバ「Ｂ」との両方が閉塞されておらず、データ検索が可能な状態であることを示す。
【００７０】
検索先状態ＤＢ３１２に記憶されたデータベースサーバ名各々により識別されるデータベースサーバ２００各々は、キャッシュサーバ３００が自装置に存在しないデータについてのデータ検索要求を送信する場合に、送信先となる検索先となるデータベースサーバ２００となる。また、検索先状態ＤＢ３１２の閉塞状態の初期値は、例えば、「閉塞」とする。検索先状態ＤＢ３１２に記憶される閉塞状態は、後述するように、制御部３２０により更新される。
【００７１】
図７の説明に戻る。更新登録状態ＤＢ３１３は、複数あるデータベースサーバ２００各々について、データベースサーバ２００においてデータの更新が成功している状態であるかを記憶する。図１０は、実施例１におけるキャッシュサーバの更新登録状態ＤＢ３１３に記憶された情報の一例を示す図である。図１０に示す例では、更新登録状態ＤＢ３１３は、「データベースサーバ名」と、データベースサーバ２００においてデータの更新が成功している状態であるかを示す「更新登録状態」とを対応付けて記憶する。
【００７２】
ここで、登録状態情報「正常」は、データベースサーバ２００において更新が正常に行われていることを示す。登録状態情報「伝播異常検出」は、データベースサーバ２００において故障などにより更新が失敗したことを検出したことを示す。登録状態情報「伝播異常」は、データベースサーバ２００において故障などにより更新が失敗し、更新が失敗している状態が継続していることを示す。登録状態情報「正常移行中」は、故障回復などにより、前回の更新登録状態は「伝播異常」であったが、現在はデータベースサーバ２００において更新が正常に行われていることを示す。
【００７３】
図１０に示す例では、更新登録状態ＤＢ３１３は、データベースサーバ名「データベースサーバＡ」と更新登録状態「正常」とを対応付けて記憶する。また、更新登録状態ＤＢ３１３は、データベースサーバ名「データベースサーバＢ」と更新登録状態「正常」とを対応付けて記憶する。すなわち、更新登録状態ＤＢ３１３は、データベースサーバ「Ａ」とデータベースサーバ「Ｂ」とにおいて、更新が正常に行われていることを記憶する。
【００７４】
なお、更新登録状態ＤＢ３１３に記憶された情報は、後述するように、制御部３２０が、ＩＲ情報をデータベースサーバ２００から削除する削除処理を実行するか否かを判定する際に用いられる。更新登録状態ＤＢ３１３に記憶された情報は、後述するように、制御部３２０によって更新される。また、更新登録状態ＤＢ３１３は、例えば、自装置が参照する可能性のあるすべてのデータベースサーバ２００について、更新登録状態の初期値として、更新登録状態「伝播異常」を記憶する。
【００７５】
図７の説明に戻る。制御部３２０は、通信制御Ｉ／Ｆ部３０１及び記憶部３１０と接続される。制御部３２０は、ＯＳなどの制御プログラム、各種の処理手順などを規定したプログラムを記憶する内部メモリを有し、種々の処理を制御する。制御部３２０は、例えば、ＡＳＩＣ、ＦＰＧＡ、ＣＰＵ、ＭＰＵなどである。図７に示す例では、制御部３２０は、キャッシュ判定部３２１と、ＩＲ情報判定部３２２と、応答処理部３２３とを有する。なお、各部の詳細については後述する。なお、ＩＲ情報判定部３２２は、「更新情報取得部」や「無効処理部」、「更新結果取得部」、「削除処理部」、「更新状態判定部」とも称する。
【００７６】
［実施例１における監視サーバの構成］
図１１は、実施例１における監視サーバの構成の一例を示すブロック図である。図１１に示す例では、監視サーバ４００は、通信制御Ｉ／Ｆ部４０１と、記憶部４１０と、制御部４２０とを有する。
【００７７】
通信制御Ｉ／Ｆ部４０１は、制御部４２０と接続される。通信制御Ｉ／Ｆ部４０１は、データベースサーバ２００各々とデータの送受信を行う。なお、通信制御Ｉ／Ｆ部４０１により送受信される情報の詳細については、適宜後述する。
【００７８】
記憶部４１０は、制御部４２０と接続される。記憶部４１０は、制御部４２０による各種処理に用いるデータ及びプログラムを記憶する。記憶部４１０は、例えば、ＲＡＭやフラッシュメモリなどの半導体メモリ素子、又は、ハードディスクや光ディスクなどである。図１１に示す例では、記憶部４１０は、装置情報ＤＢ４１１を有する。
【００７９】
装置情報ＤＢ４１１は、データベースサーバ２００各々の状態を記憶する。図１２は、実施例１における監視サーバの装置情報ＤＢに記憶された情報の一例を示す図である。図１２に示す例では、装置情報ＤＢ４１１は、「データベースサーバ名」に対応付けて「装置状態」を記憶する。なお、装置情報ＤＢ４１１は、初期値として、複数あるデータベースサーバ２００各々のデータベースサーバ名を記憶する。
【００８０】
図１２に示す例では、装置情報ＤＢ４１１は、データベースサーバ名「データベースサーバＡ」に対応付けて、装置状態「正常」を記憶する。また、装置情報ＤＢ４１１は、データベースサーバ名「データベースサーバＢ」に対応付けて、装置状態「正常」を記憶する。すなわち、装置情報ＤＢ４１１は、データベースサーバ「Ａ」とデータベースサーバ「Ｂ」とが、共に、更新データの配信や受信、更新が可能な状態であることを記憶する。装置情報ＤＢ４１１に記憶された情報は、制御部４２０によって格納される。
【００８１】
図１１の説明に戻る。制御部４２０は、通信制御Ｉ／Ｆ部４０１及び記憶部４１０と接続される。制御部４２０は、ＯＳなどの制御プログラム、各種の処理手順などを規定したプログラムを記憶する内部メモリを有し、種々の処理を制御する。制御部４２０は、例えば、ＡＳＩＣ、ＦＰＧＡ、ＣＰＵ、ＭＰＵなどである。図１１に示す例では、制御部４２０は、故障判定部４２１を有する。なお、故障判定部４２１の詳細については後述する。
【００８２】
［実施例１に係るキャッシュ制御システムによる処理］
実施例１に係るキャッシュ制御システムによる処理について説明する。以下では、キャッシュ制御システムが有する各装置間における処理の流れの一例をシーケンス図を用いて簡単に説明し、その後、各装置の各部による詳細な処理の流れの一例をフローチャートを用いて説明する。
【００８３】
［実施例１におけるデータベースサーバ各々間における処理］
図１３は、実施例１におけるデータベースサーバ各々間における処理の流れの一例を示すシーケンス図である。図１３では、２つのデータベースサーバ２００がある場合を用いて説明する。具体的には、データベースサーバ「Ａ」及びデータベースサーバ「Ｂ」を用いて説明する。また、以下では、データベースサーバ「Ａ」のユーザ情報ＤＢ２１１に記憶されたデータに対する更新指示があった場合を用いて説明する。
【００８４】
図１３に示すように、更新指示があると（ステップＳ１４０１肯定）、データベースサーバ「Ａ」の更新情報配信部２２８は、更新ＩＤの払い出す（ステップＳ１４０２）。例えば、更新情報配信部２２８は、配信時刻を更新ＩＤとして払い出したり、配信情報に枝番号を付加した情報を更新ＩＤとして払い出したりする。より詳細な一例をあげて説明すると、更新情報配信部２２８は、更新ＩＤ「Ｉ００１」を払い出す。
【００８５】
そして、更新情報配信部２２８は、複数あるデータベースサーバ２００各々に更新データを配信する（ステップＳ１４０３）。例えば、更新情報配信部２２８は、データベースサーバ「Ｂ」に、更新ＩＤ「Ｉ００１」と、更新指示により更新されるデータを識別するキー情報と、更新後のデータとを送信する。
【００８６】
その後、データベースサーバ「Ａ」の更新情報配信部２２８は、複数あるデータベースサーバ２００の配信情報ＤＢ２１３各々に、データベースサーバ２００各々についての配信結果を更新ＩＤに対応付けて格納する（ステップＳ１４０４）。例えば、更新情報配信部２２８は、配信が成功したデータベースサーバ２００のデータベースサーバ名と更新ＩＤ「Ｉ００１」とに対応付けて配信結果「ＯＫ」を格納し、配信が成功しなかったデータベースサーバ２００のデータベースサーバ名と更新ＩＤ「Ｉ００１」とに対応付けて配信結果「未配信」を格納する。なお、更新情報配信部２２８は、装置状態が正常ではなく、配信先とならなかったデータベースサーバ２００についても、データベースサーバ名と更新ＩＤ「Ｉ００１」とに対応付けて、配信結果「未配信」を初期値として格納する。
【００８７】
そして、データベースサーバ「Ａ」の更新情報配信部２２８は、配信結果「ＯＫ」となっているデータベースサーバ２００のユーザ情報ＤＢ２１１を更新する（ステップＳ１４０５）。そして、データベースサーバ「Ａ」の更新情報配信部２２８は、複数あるデータベースサーバ２００の配信情報ＤＢ２１３各々に、データベースサーバ２００各々についての更新結果を更新ＩＤに対応付けて格納する（ステップＳ１４０６）。例えば、更新情報配信部２２８は、更新が成功したと判定したデータベースサーバ２００のデータベースサーバ名と更新ＩＤ「Ｉ００１」とに対応付けて、更新結果「ＯＫ」を格納する。より詳細な一例をあげて説明すると、更新情報配信部２２８は、データベースサーバ名「データベースサーバＢ」と更新ＩＤ「Ｉ００１」とに対応付けて更新結果「ＯＫ」を格納する。また、更新情報配信部２２８は、データベースサーバ名「データベースサーバＡ」についても、更新ＩＤ「Ｉ００１」に対応付けて更新結果「ＯＫ」を格納する。また、例えば、更新情報配信部２２８は、更新が成功したと判定しなかったデータベースサーバ２００のデータベースサーバ名と更新ＩＤ「Ｉ００１」とに対応付けて、更新結果「ＮＧ」を格納する。つまり、各データベースサーバ２００は、複数あるデータベースサーバ２００各々について、データの更新が終了したか否かを示す更新結果を記憶する。
【００８８】
また、ここで、各データベースサーバ２００では、ユーザ情報ＤＢ２１１が更新されると、更新情報配信部２２８が、ＩＲ情報を生成し、自装置のデータベースサーバ２００のＩＲ情報ＤＢ２１２に格納する（ステップＳ１４０７）。具体的には、更新情報配信部２２８は、更新データに含まれる更新ＩＤとキー情報とを対応付けて、ＩＲ情報ＤＢ２１２に格納する。また、ここで、更新情報配信部２２８は、データベースサーバ２００と接続された複数あるキャッシュサーバ３００のキャッシュサーバ名各々に対応付けて、ＩＲ情報を格納する。例えば、更新情報配信部２２８が、キャッシュサーバ名「キャッシュサーバＡ」に対応付けてＩＲ情報を格納し、キャッシュサーバ名「キャッシュサーバＢ」に対応付けてＩＲ情報を格納する。
【００８９】
つまり、各データベースサーバ３００の更新情報配信部２２８各々は、自データベースサーバのデータが更新される場合に、更新されるデータを識別するキー情報を含むＩＲ情報を複数あるキャッシュサーバ名各々に対応付けてＩＲ情報ＤＢ２１２に格納する。
【００９０】
なお、図１３に示す例では、データベースサーバ「Ａ」とデータベースサーバ「Ｂ」の両方について、ユーザ情報ＤＢ２１１が更新された結果、ＩＲ情報が生成されて格納された場合を示した。
【００９１】
なお、上記の処理手順は、上記の順番に限定されるものではなく、処理内容を矛盾させない範囲で適宜変更しても良い。例えば、上述の説明では、データベースサーバ２００が２つである場合を用いて説明したが、これに限定されるものではなく、３つ以上であっても良い。
【００９２】
また、上述した説明では、データベースサーバ「Ａ」の更新情報配信部２２８が、データベースサーバ「Ｂ」のユーザ情報ＤＢ２１１を更新したり、配信情報ＤＢ２１３に配信結果や更新結果を格納したりする場合を例に示した。ただし、これに限定されるものではなく、データベースサーバ「Ｂ」の更新情報配信部２２８がユーザ情報ＤＢ２１１を更新したり、配信情報ＤＢ２１３に配信結果や更新結果を格納したりしても良い。なお、更新情報配信部２２８により更新データが配信されなかったデータベースサーバ２００に対しては、後述するように、更新再伝播部２２９により配信される。
【００９３】
［実施例１におけるデータベースサーバと監視サーバ間における処理］
図１４は、実施例１におけるデータベースサーバと監視サーバ間における処理の流れの一例を示すシーケンス図である。以下に説明する処理は、定期的に実行されたり、不定期に実行されたりする。図１４に示す例では、記載の便宜上、データベースサーバ２００を１つ示した。
【００９４】
図１４に示すように、監視サーバ４００の故障判定部４２１は、送信タイミングとなると（ステップＳ１５０１肯定）、自装置の装置情報ＤＢ４１１から、データベースサーバ名の一覧を取得し、取得したデータベースサーバ名により識別されるデータベースサーバ２００各々に装置状態要求を送信する（ステップＳ１５０２）。例えば、故障判定部４２１は、データベースサーバ「Ａ」に装置状態要求を送信する。
【００９５】
その後、データベースサーバ２００の装置状態応答部２２５は、装置状態要求を受信すると、自装置の状態を確認し（ステップＳ１５０３）、装置状態要求に対応する応答となる装置情報を送信する（ステップＳ１５０４）。例えば、装置状態応答部２２５は、後述する更新情報配信部２２８や更新再伝播部２２９による処理が実行される際に用いられる各種プロセスやネットワークの状態等を確認し、装置情報として送信する。
【００９６】
その後、監視サーバ４００の故障判定部４２１は、装置情報を受信すると、データベースサーバ２００からの装置状態応答に基づいて故障判定を実行し（ステップＳ１５０５）、判定結果を装置情報ＤＢ４１１に格納する（ステップＳ１５０６）。例えば、データベースサーバ「Ａ」について装置状態が「正常」であると判定した場合には、故障判定部４２１は、装置情報ＤＢ４１１に記憶された装置状態のうち、データベースサーバ「Ａ」に対応付けられた装置状態を「正常」に更新する。
【００９７】
ここで、監視サーバ４００の故障判定部４２１は、故障していると判定した場合には（ステップＳ１５０７肯定）、処理対象となったデータベースサーバ２００に、キャッシュサーバ３００との間におけるデータの送受信を閉塞する旨の閉塞要求を送信する（ステップＳ１５０８）。なお、故障判定部４２１は、故障であると判定しなかった場合には（ステップＳ１５０７否定）、閉塞要求を送信しない。
【００９８】
そして、監視サーバ４００の故障判定部４２１は、全データベースサーバ２００について実施していない場合には（ステップＳ１５０９否定）、ステップＳ１５０２に戻って処理を繰り返す。一方、故障判定部４２１は、全データベースサーバ２００について実施した場合には（ステップＳ１５０９肯定）、各データベースサーバ２００各々についての判定結果となる装置状態各々を格納する旨の装置状態格納要求をデータベースサーバ２００各々に送信し（ステップＳ１５１０）、処理を終了する。
【００９９】
一方、データベースサーバ２００では、閉塞要求を受信すると、閉塞制御部２２７が、キャッシュサーバとの間におけるデータの送受信を閉塞する（ステップＳ１５１１）。また、データベースサーバ２００では、装置状態格納要求を受信すると、装置状態格納部２２６が、データベースサーバ２００各々についての装置状態を受信した装置情報格納要求から取得し、自装置の装置情報ＤＢ２１４に格納する（ステップＳ１５１２）。
【０１００】
［実施例１におけるキャッシュサーバとデータベースサーバの間における処理］
図１５及び図１６は、実施例１におけるキャッシュサーバとデータベースサーバの間における処理の流れの一例について示すシーケンス図である。以下に詳細に説明するように、図１５に記載された一連の処理は、キャッシュサーバ３００が検索先状態ＤＢ３１２を更新する際に実行される。また、図１６に記載された一連の処理は、キャッシュサーバ３００がＩＲ情報をデータベースサーバ２００から取得する際に実行される。なお、以下では、説明の便宜上、キャッシュサーバ３００が検索先状態ＤＢ３１２を更新する際に実行される処理と、キャッシュサーバ３００がＩＲ情報をデータベースサーバ２００から取得する処理とを分けて説明するが、一連の処理として連続して実行しても良い。
【０１０１】
図１５を用いて、キャッシュサーバ３００が検索先状態ＤＢ３１２を更新する際に、キャッシュサーバ３００とデータベースサーバ２００との間で行われる処理の流れの一例を示す。
【０１０２】
図１５に示す例では、キャッシュサーバ３００のＩＲ情報判定部３２２は、送信タイミングとなると（ステップＳ１６０１肯定）、検索先状態ＤＢ３１２に記憶されたデータベースサーバ名を含む更新成否要求を送信する（ステップＳ１６０２）。更新成否要求は、データベースサーバ２００における更新処理の状況を示す更新成否結果を要求する情報である。また、ＩＲ情報判定部３２２は、検索先状態ＤＢ３１２に記憶されたデータベースサーバ名それぞれについて、更新成否要求を送信する。
【０１０３】
その後、データベースサーバ２００の更新成否応答部２２４は、更新成否要求を受信すると、受信した更新成否要求に含まれるデータベースサーバ名に対応付けられた更新結果を配信情報ＤＢ２１３から取得する（ステップＳ１６０３）。例えば、更新成否応答部２２４は、更新成否要求に「データベースサーバＡ」が含まれていた場合には、更新成否応答部２２４は、図５に示す例では、更新結果「ＯＫ」を取得する。
【０１０４】
そして、データベースサーバ２００の更新情報配信部２２８は、取得した更新結果に基づいて更新成否結果を判定し（ステップＳ１６０４）、更新成否結果をキャッシュサーバ３００に応答する（ステップＳ１６０５）。なお、更新情報配信部２２８による更新成否結果の判定処理については、後述するため、ここでは説明を省略する。
【０１０５】
その後、キャッシュサーバ３００のＩＲ情報判定部３２２は、データベースサーバ２００から更新成否結果を受信すると、受信した更新成否結果に基づいて、データベースサーバ２００の更新登録状態を判定する（ステップＳ１６０６）。つまり、ＩＲ情報判定部３２２は、データベースサーバ２００における更新が正常に実行されている状態か否かを複数あるデータベースサーバ２００各々について判定する。なお、ＩＲ情報判定部３２２による更新登録状態の判定処理については、後述するため、ここでは説明を省略する。
【０１０６】
そして、キャッシュサーバ３００のＩＲ情報判定部３２２は、判定結果となる更新登録状態を更新登録状態ＤＢ３１３に格納する（ステップＳ１６０７）。また、ＩＲ情報判定部３２２は、検索先状態ＤＢ３１２の閉塞状態を更新する（ステップＳ１６０８）。具体的には、詳細については後述するように、更新登録状態が「正常」である場合には、閉塞状態「未閉塞」を格納し、更新登録状態が「正常」でない場合には、閉塞状態「閉塞」を格納する。
【０１０７】
続いて、図１６を用いて、キャッシュサーバ３００がＩＲ情報をデータベースサーバ２００から取得する際に、キャッシュサーバ３００とデータベースサーバ２００との間で行われる処理の流れの一例を示す。
【０１０８】
図１６に示すように、キャッシュサーバ３００のＩＲ情報判定部３２２は、送信タイミングとなると（ステップＳ１７０１肯定）、自キャッシュサーバ名を含むＩＲ情報要求を送信する（ステップＳ１７０２）。例えば、キャッシュサーバ「Ａ」は、キャッシュサーバ名「キャッシュサーバＡ」を含むＩＲ情報要求を送信する。この場合、ＩＲ情報判定部３２２は、キャッシュサーバ「Ａ」用のＩＲ情報を要求することになる。つまり、ＩＲ情報判定部３２２は、複数あるデータベースサーバ２００各々から、ＩＲ情報ＤＢ２１２によって自キャッシュサーバ３００を識別するキャッシュサーバ名に対応付けて記憶されたＩＲ情報を取得する。
【０１０９】
その後、データベースサーバ２００のＩＲ情報応答部２２２は、ＩＲ情報要求を受信すると、受信したＩＲ情報要求に含まれる「キャッシュサーバ名」に対応するＩＲ情報を自装置のＩＲ情報ＤＢ２１２から取得し（ステップＳ１７０３）、ＩＲ情報応答としてキャッシュサーバ３００に送信する（ステップＳ１７０４）。つまり、ＩＲ情報応答部２３３は、キー情報と更新ＩＤとを含むＩＲ情報を送信する。
【０１１０】
その後、キャッシュサーバ３００のＩＲ情報判定部３２２は、ＩＲ情報に含まれる更新ＩＤをキーとする更新情報要求を送信する（ステップＳ１７０５）。例えば、ＩＲ情報として、キー情報「Ｕ００１」と更新ＩＤ「Ｉ００１」とを受信した場合を用いて説明する。この場合、ＩＲ情報判定部３２２は、更新ＩＤ「Ｉ００１」を含む更新情報要求を送信する。すなわち、ＩＲ情報判定部３２２は、更新ＩＤにより識別される更新について、データベースサーバ２００各々について更新が行われたか否かを示す更新結果各々を要求する。言い換えると、ＩＲ情報判定部３２２は、データベースサーバ２００から、配信情報ＤＢ２１３に記憶された複数あるデータベースサーバ２００各々についての更新結果を取得する。
【０１１１】
その後、データベースサーバ２００の更新情報応答部２２３は、キャッシュサーバ３００から更新情報要求を受信すると、受信した更新情報要求に含まれる更新ＩＤに対応付けられた「データベースサーバ名、更新結果」すべてを配信情報ＤＢ２１３から取得し（ステップＳ１７０６）、更新情報応答としてキャッシュサーバ３００に送信する（ステップＳ１７０７）。
【０１１２】
その後、キャッシュサーバ３００のＩＲ情報判定部３２２は、自装置の更新登録状態ＤＢ３１３にデータベースサーバ２００各々について記憶された更新登録状態と、受信した更新結果とに基づいて、ＩＲ情報を削除可能であるかを判定するＩＲ情報削除判定処理を実行する（ステップＳ１７０８）。なお、ＩＲ情報削除判定処理の詳細については、後述するためここでは説明を後述する。
【０１１３】
そして、キャッシュサーバ３００のＩＲ情報判定部３２２は、削除可能であると判定した場合には（ステップＳ１７０９肯定）、削除しても良いと判定したＩＲ情報に含まれるキー情報により識別されるデータをキャッシュ３１１から削除する（ステップＳ１７１０）。つまり、ＩＲ情報判定部３２２は、ＩＲ情報により識別されるデータのキャッシュを無効にする。
【０１１４】
また、ＩＲ情報判定部３２２は、削除しても良いと判定したＩＲ情報を削除する旨のＩＲ情報削除要求をデータベースサーバ２００に送信する（ステップＳ１７１１）。ＩＲ情報削除要求には、削除対象となるＩＲ情報に含まれる更新ＩＤが含まれる。その後、データベースサーバ２００では、ＩＲ情報削除要求を受信すると、ＩＲ情報削除要求に含まれる更新ＩＤを含むＩＲ情報が削除される（ステップＳ１７１３）。
【０１１５】
つまり、キャッシュサーバ３００のＩＲ情報判定部３２２は、ＩＲ情報削除要求を送信することで、キャッシュサーバ３００からＩＲ情報を削除する。具体的には、詳細については後述するように、ＩＲ情報判定部３２２は、更新結果各々に基づいて、複数あるデータベースサーバ２００すべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合には、ＩＲ情報をＩＲ情報ＤＢ２１２から削除する削除処理を実行し、更新が終了していないと判定した場合には削除処理を実行しない。より詳細には、ＩＲ情報判定部３２２は、正常に実行されている状態であると判定されたデータベースサーバ２００すべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合には削除処理を実行し、更新が終了していないと判定した場合には削除処理を実行しない。
【０１１６】
また、キャッシュサーバ３００のＩＲ情報判定部３２２は、ＩＲ情報の取得先となるデータベースサーバ２００すべてについて処理を実行したか否かを判定し（ステップＳ１７１２）、実行したと判定した場合には（ステップＳ１７１２肯定）、処理を終了する。一方、ＩＲ情報判定部３２２は、実行していないと判定した場合には（ステップＳ１７１２否定）、上述したステップＳ１７０２に戻り、処理を繰り返す。
【０１１７】
［実施例１におけるクライアント端末とキャッシュサーバとデータベースサーバ間における処理］
図１７は、実施例１におけるクライアント端末とキャッシュサーバとデータベースサーバと間における処理の流れの一例を示すシーケンス図である。具体的には、クライアント端末がデータ要求をキャッシュサーバ３００に送信した場合における処理の流れを説明する。以下では、クライアント端末５００がデータ要求をキャッシュサーバ３００に送信した場合に、キャッシュサーバ３００が、クライアント端末５００から受信したデータ要求に含まれるキー情報により識別される属性情報を記憶していない場合を用いて説明する。
【０１１８】
図１７に示すように、クライアント端末５００は、送信タイミングとなると（ステップＳ１８０１肯定）、要求するデータを識別するキー情報を含むデータ要求をキャッシュサーバ３００に送信する（ステップＳ１８０２）。例えば、クライアント端末５００は、自装置が記憶しないデータを利用する場合に、キャッシュサーバ３００にデータ要求を送信する。
【０１１９】
その後、キャッシュサーバ３００のキャッシュ判定部３２１は、クライアント端末５００からデータ要求を受信すると、受信したデータ要求に含まれるキー情報を取得し、取得したキー情報に対応付けられた属性情報をキャッシュ３１１にて検索する（ステップＳ１８０３）。
【０１２０】
ここで、キャッシュサーバ３００のキャッシュ判定部３２１は、キー情報に対応付けられた属性情報がキャッシュ３１１に存在しない場合に、検索先状態ＤＢ３１２か閉塞状態「閉塞」となっていないデータベースサーバ名を検索する（ステップＳ１８０４）。そして、キャッシュ判定部３２１は、検索の結果得られた閉塞していないデータベースサーバ２００に対して、データ要求に含まれるキー情報に対応する属性情報を要求するデータ検索要求を送信する（ステップＳ１８０５）。
【０１２１】
その後、データベースサーバ２００のキャッシュ応答部２２１は、キャッシュサーバ３００からデータ検索要求を受信すると、受信したデータ検索要求からキー情報を取得し、自装置のユーザ情報ＤＢ２１１から取得したキー情報に対応する属性情報を取得する（ステップＳ１８０６）。そして、キャッシュ応答部２２１は、データ検索要求に対する応答をキャッシュサーバ３００に送信する（ステップＳ１８０７）。例えば、キャッシュ応答部２２１は、取得したキー情報に対応する属性情報が自装置のユーザ情報ＤＢ２１１に存在する場合には取得した属性情報をデータ応答として送信し、自装置のユーザ情報ＤＢ２１１に存在しない場合にはキー情報が存在しない旨をデータ応答として送信する。
【０１２２】
その後、キャッシュサーバ３００の応答処理部３２３は、データ応答を受信すると、クライアント端末５００からのデータ要求に対するデータ応答をクライアント端末５００に送信する（ステップＳ１８０８）。例えば、応答処理部３２３は、キー情報が存在しない旨をクライアント端末５００に送信したり、ユーザ情報ＤＢ２１１から取得された属性情報を送信したり、キャッシュ３１１から取得された属性情報をクライアント端末５００に送信したりする。
【０１２３】
［実施例１におけるデータベースサーバのキャッシュ応答部による処理］
図１８は、実施例１におけるデータベースサーバのキャッシュ応答部による処理の流れの一例を示すフローチャートである。以下に説明するように、キャッシュ応答部２２１は、キャッシュサーバ３００からデータ検索要求を受信するごとに、以下に説明する一連の処理を実行する。
【０１２４】
図１８に示すように、キャッシュ応答部２２１は、キャッシュサーバ３００からデータ検索要求を受信すると（ステップＳ１２０１肯定）、受信したデータ検索要求からキー情報を取得する（ステップＳ１２０２）。そして、キャッシュ応答部２２１は、自装置のユーザ情報ＤＢ２１１から、取得したキー情報に対応する属性情報を取得する（ステップＳ１２０３）。
【０１２５】
そして、キャッシュ応答部２２１は、取得したキー情報に対応する属性情報が自装置のユーザ情報ＤＢ２１１に存在する場合には（ステップＳ１２０４肯定）、ユーザ情報ＤＢ２１１から属性情報を取得してキャッシュサーバ３００に応答する（ステップＳ１２０５）。一方、キャッシュ応答部２２１は、取得したキー情報に対応する属性情報が自装置のユーザ情報ＤＢ２１１に存在しない場合には（ステップＳ１２０４否定）、データ要求に含まれるキー情報が存在しない旨をキャッシュサーバ３００に応答する（ステップＳ１２０６）。つまり、キャッシュ応答部２２１は、データ検索要求に対するデータ応答をキャッシュサーバ３００に送信する。
【０１２６】
［実施例１におけるデータベースサーバのＩＲ情報応答部による処理］
図１９は、実施例１におけるデータベースサーバのＩＲ情報応答部による処理の流れの一例を示すフローチャートである。以下に説明するように、ＩＲ情報応答部２２２は、キャッシュサーバ３００からＩＲ情報要求を受信するごとに、以下に説明する一連の処理を実行する。
【０１２７】
図１９に示すように、データベースサーバ２００のＩＲ情報応答部２２２は、ＩＲ情報要求を受信すると（ステップＳ１３０１肯定）、受信したＩＲ情報要求に含まれる「キャッシュサーバ名」を取得する（ステップＳ１３０２）。つまり、ＩＲ情報要求の送信元となるキャッシュサーバ３００のキャッシュサーバ名を取得する。
【０１２８】
そして、ＩＲ情報応答部２２２は、自装置のＩＲ情報ＤＢ２１２から、取得した「キャッシュサーバ名」に対応付けられた「キー情報、更新ＩＤ」を取得する（ステップＳ１３０３）。つまり、ＩＲ情報応答部２２２は、ＩＲ情報要求の送信元となるキャッシュサーバ３００を宛先とするＩＲ情報を取得する。
【０１２９】
ここで、ＩＲ情報応答部２２２は、取得した「キャッシュサーバ名」に対応付けられた「キー情報、更新ＩＤ」が自装置のＩＲ情報ＤＢ２１２に存在する場合には（ステップＳ１３０４肯定）、キャッシュサーバ名に対応付けられた「キー情報、更新ＩＤ」をキャッシュサーバ３００に応答する（ステップＳ１３０５）。一方、ＩＲ情報応答部２２２は、取得した「キャッシュサーバ名」に対応付けられた「キー情報、更新ＩＤ」が存在しない場合には（ステップＳ１３０４否定）、「ＩＲ情報なし」を、キャッシュサーバ３００に応答する（ステップＳ１３０６）。すなわち、ＩＲ情報応答部２２２は、ＩＲ情報要求に対して、ＩＲ情報応答をキャッシュサーバ３００に送信する。
【０１３０】
すなわち、ＩＲ情報応答部２２２は、キャッシュサーバ３００からＩＲ情報要求を受信すると、ＩＲ情報要求の送信元を示すキャッシュサーバ名に対応付けられたＩＲ情報がＩＲ情報ＤＢ２１２に記憶されているか否かを判定する。そして、ＩＲ情報応答部２２２は、ＩＲ情報ＤＢ２１２に記憶されている場合には、「キャッシュサーバ名」に対応付けられたＩＲ情報を取得してキャッシュサーバ３００に応答する。ここで、ＩＲ情報に含まれる「キー情報」及び「更新ＩＤ」は、「キー情報」が自装置内で更新されており、その更新情報の配信状態が「更新ＩＤ」で参照できることを示す。また、ＩＲ情報応答部２２２は、ＩＲ情報ＤＢ２１２にＩＲ情報が記憶されていない場合には、「ＩＲ情報なし」をキャッシュサーバ３００に応答する。
【０１３１】
［実施例１におけるデータベースサーバの更新情報応答部による処理］
図２０は、実施例１におけるデータベースサーバの更新情報応答部による処理の流れの一例を示すフローチャートである。以下に説明するように、更新情報応答部２２３は、キャッシュサーバ３００から更新情報要求を受信するごとに、以下に説明する一連の処理を実行する。
【０１３２】
図２０に示すように、データベースサーバ２００の更新情報応答部２２３は、キャッシュサーバ３００から更新情報要求を受信すると（ステップＳ５０１肯定）、受信した更新情報要求に含まれる更新ＩＤを取得する（ステップＳ５０２）。例えば、更新情報応答部２２３は、更新ＩＤ「Ｉ００１」を取得する。
【０１３３】
そして、更新情報応答部２２３は、自装置の配信情報ＤＢ２１３から取得した、「更新ＩＤ」に対応付けられた「データベースサーバ名、更新結果」をすべて取得する（ステップＳ５０３）。例えば、更新情報応答部２２３は、更新ＩＤ「Ｉ００１」に対応付けられたデータベースサーバ名と更新結果との組み合わせをすべて取得する。
【０１３４】
ここで、更新情報応答部２２３は、自装置の配信情報ＤＢ２１３に「更新ＩＤ」に対応付けられた「データベースサーバ名、更新結果」が存在する場合には（ステップＳ５０４肯定）、更新ＩＤに対応付けられた「データベースサーバ名、更新結果」をキャッシュサーバ３００に応答する（ステップＳ５０５）。一方、更新情報応答部２２３は、自装置の配信情報ＤＢ２１３に「更新ＩＤ」に対応付けられた「データベースサーバ名、更新結果」が存在しない場合には（ステップＳ５０４否定）、「更新情報なし」をキャッシュサーバ３００に応答する（ステップＳ５０６）。すなわち、更新情報応答部２２３は、更新情報要求に対して、更新情報応答をキャッシュサーバ３００に送信する。
【０１３５】
なお、ここで、更新情報応答部２２３により取得される、「データベースサーバ名」及び、「更新結果」は、それぞれ、キャッシュサーバ３００がＩＲ情報要求の結果取得したＩＲ情報に対応する更新情報が、更新ＩＤにより識別される更新が完了しているかをデータベースサーバ名ごとに示す。
【０１３６】
［実施例１におけるデータベースサーバの更新成否応答部による処理］
図２１は、実施例１におけるデータベースサーバの更新成否応答部による処理の流れの一例を示すフローチャートである。以下に説明するように、更新成否応答部２２４は、キャッシュサーバ３００から更新成否要求情報を受信するごとに、以下に説明する一連の処理を実行する。
【０１３７】
図２１に示すように、データベースサーバ２００の更新成否応答部２２４は、キャッシュサーバ３００から更新成否要求を受信すると（ステップＳ６０１肯定）、受信した更新成否要求に含まれるデータベースサーバ名を取得する（ステップＳ６０２）。例えば、更新成否応答部２２４は、データベースサーバ名「データベースサーバＡ」を取得する。
【０１３８】
そして、更新成否応答部２２４は、自装置の配信情報ＤＢ２１３から、更新成否要求から取得したデータベースサーバ名に対応する更新結果を取得する（ステップＳ６０３）。例えば、図５に示す例では、配信情報ＤＢ２１３が、データベースサーバ名「データベースサーバＡ」に対応付けて更新結果「ＯＫ」を記憶している。この場合、更新成否応答部２２４は、更新結果「ＯＫ」を取得する。
【０１３９】
つまり、更新成否応答部２２４は、キャッシュサーバ３００から配信成否要求を受信すると、配信成否要求に含まれるデータベースサーバ名が、配信情報ＤＢ２１３に記憶されているか否かを判定する。そして、更新成否応答部２２４は、配信情報ＤＢ２１３に記憶されていると判定した場合には、「データベースサーバ名」に対応付けられた更新結果と更新ＩＤとの組み合わせをすべて取得する。
【０１４０】
そして、更新成否応答部２２４は、取得した更新結果に基づいて更新成否結果を判定し（ステップＳ６０４）、判定結果となる更新成否結果をキャッシュサーバ３００に応答する（ステップＳ６０５）。ここで、更新成否結果とは、データベースサーバ２００において実行されている更新処理の状態を示す情報である。
【０１４１】
ここで、更新成否結果の判定について更に説明する。更新成否応答部２２４は、配信情報ＤＢ２１３の更新結果と更新成否結果とが対応付けられた更新成否結果対応表に基づいて、更新成否結果を判定する。
【０１４２】
図２２は、実施例１における更新成否結果対応表の一例を示す図である。図２２に示す例では、更新成否結果が、「登録正常」と「登録異常」と「登録待ち」とのうちいずれかである場合を例に示したが、これに限定されるものではなく、任意の更新成否結果を用いて良い。ここで、「登録正常」は、該当のデータベースサーバ２００において、更新情報の登録が成功していることを示す。「登録異常」は、該当のデータベースサーバ２００において、更新情報の登録が失敗していることを示す。「登録待ち」は、現在、データベースサーバ２００間で更新情報の配信又は更新再伝播処理が行われており、該当のデータベースサーバ２００において、今後、更新情報の登録が行われることを示す。
【０１４３】
図２２に示すように、更新成否応答部２２４は、配信情報ＤＢ２１３から更新結果を取得すると、取得した更新結果に対応付けられた更新成否結果を更新成否結果対応表から取得し、判定結果とする。例えば、配信情報ＤＢ２１３から更新結果「ＯＫ」を取得した場合を用いて説明する。この場合、更新成否応答部２２４は、更新結果「ＯＫ」に対応付けられた更新成否結果「登録正常」を取得し、判定結果とする。
【０１４４】
すなわち、更新成否応答部２２４は、更新成否結果対応表を用いて、データベースサーバ名における「更新成否結果」を判定し、「登録正常」、「登録異常」、「登録待ち」のいずれかをキャッシュサーバ３００に応答する。例えば、「配信情報ＤＢの更新結果」が「レコードなし」である場合には、更新成否応答部２２４は、更新成否結果対応表における同一行にある更新成否結果「登録正常」を判定結果とする。
【０１４５】
［実施例１におけるデータベースサーバの装置状態応答部による処理］
図２３は、実施例１におけるデータベースサーバの装置状態応答部による処理の一例を示すフローチャートである。以下に説明するように、装置状態応答部２２５は、監視サーバ４００から装置状態要求を受信するごとに、以下に説明する一連の処理を実行する。
【０１４６】
図２３に示すように、データベースサーバ２００の装置状態応答部２２５は、監視サーバ４００から装置状態要求を受信する（ステップＳ８０１肯定）、自装置の配信関連リソースの状態を確認する（ステップＳ８０２）。具体的には、装置状態応答部２２５は、自装置が、後述する更新情報配信部２２８や更新再伝播部２２９による処理が実行される際に用いられる各種プロセスやネットワークの状態等を確認する。
【０１４７】
そして、装置状態応答部２２５は、装置状態要求に対応する応答となる装置状態応答を送信し（ステップＳ８０３）、処理を終了する。例えば、装置状態応答部２２５は、確認した配信関連リソースの情報を装置状態応答として監視サーバ４００に送信し、処理を終了する。
【０１４８】
［実施例１におけるデータベースサーバの装置状態格納部による処理］
図２４は、実施例１におけるデータベースサーバの装置状態格納部による処理の流れの一例を示すフローチャートである。以下に説明するように、装置状態格納部２２６は、監視サーバ４００から装置状態格納要求を受信するごとに、以下に説明する一連の処理を実行する。
【０１４９】
図２４に示すように、データベースサーバ２００の装置状態格納部２２６は、監視サーバ４００からの装置状態格納要求を受信すると（ステップＳ９０１肯定）、受信した装置状態格納要求から、データベースサーバ２００各々についての装置状態を取得し（ステップＳ９０２）、自装置の装置情報ＤＢ２１４に格納する（ステップＳ９０３）。
【０１５０】
例えば、装置状態格納部２２６は、データベースサーバ「Ａ」の装置状態とデータベースサーバ「Ｂ」の装置状態とを監視サーバ４００から受信し、受信した装置状態データベースサーバ名に対応付けて格納する。
【０１５１】
［実施例１におけるデータベースサーバの閉塞制御部による流れ］
図２５は、実施例１におけるデータベースサーバの閉塞制御部による処理の流れの一例を示すフローチャートである。以下に説明するように、閉塞制御部２２７は、監視サーバ４００から閉塞要求を受信するごとに、以下に説明する一連の処理を実行する。
【０１５２】
図２５に示すように、閉塞制御部２２７は、監視サーバ４００からの閉塞要求を受信すると（ステップＳ７０１肯定）、自装置がキャッシュサーバ３００に提供する検索要求の遮断処理を行う（ステップＳ７０２）。つまり、閉塞制御部２２７は、キャッシュサーバとの間におけるデータの送受信を閉塞する。
【０１５３】
そして、閉塞制御部２２７は、遮断処理が成功した場合には（ステップＳ７０３肯定）、遮断成功を監視サーバ４００に応答する（ステップＳ７０４）。一方、閉塞制御部２２７は、遮断処理が失敗した場合には（ステップＳ７０３否定）、閉塞制御部は２２７、遮断失敗を監視サーバ４００に応答する（ステップＳ７０５）。そして、閉塞制御部は処理を終了する。
【０１５４】
すなわち、閉塞制御部２２７は、監視サーバ４００から閉塞要求を受信すると、自装置が提供するキャッシュサーバ３００からの要求をすべて遮断し、遮断の成否を監視サーバ４００に応答する。
【０１５５】
［実施例１におけるデータベースサーバの更新情報配信部による処理］
図２６は、実施例１におけるデータベースサーバの更新情報配信部による詳細な処理の流れの一例を示すフローチャートである。更新情報配信部２２８は、ユーザ情報ＤＢ２１１が更新される場合に、以下に説明する一連の処理を実行する。以下に説明する一連の処理は、図１３を用いて説明した一連の処理において、更新指示を受け付けたデータベースサーバ「Ａ」の更新情報配信部２２８が実行する処理となる。以下では、具体例をあげて説明する場合には、データベースサーバ「Ａ」に対して更新指示があった場合を用いて説明する。
【０１５６】
図２６に示すように、更新指示があると、データベースサーバ２００の更新情報配信部２２８は、自装置が配信を行う装置であるかを判定する（ステップＳ３０１）。例えば、更新情報配信部２２８は、自装置が利用者から更新指示を受け付けた装置である場合には、配信を行う装置であると判定し、他のデータベースサーバ２００から更新データを受け付けた装置である場合には、配信を行う装置ではないと判定する。なお、ここで、更新情報配信部２２８は、配信を行う装置でないと判定した場合には（ステップＳ３０１否定）、更新処理を継続することができないため、配信処理又は更新処理が失敗したことを示す登録失敗を応答し（ステップＳ３１０）、処理を終了する。
【０１５７】
ここで、更新情報配信部２２８は、配信を行う装置であると判定した場合には（ステップＳ３０１肯定）、更新データの配信順序を決定する（ステップＳ３０２）。具体的には、更新情報配信部２２８は、自装置の装置情報ＤＢ２１４からデータベースサーバ名に対応付けられた装置状態を取得し、装置状態「正常」に対応付けられたデータベースサーバ２００の一覧を生成する。また、更新情報配信部２２８は、一覧の先頭が自装置となるように一覧を生成する。ここで、更新情報配信部２２８により生成された一覧が配信先となるデータベースサーバ２００の一覧となり、一覧に記載されたデータベースサーバ２００の並び順が配信順序となる。
【０１５８】
そして、更新情報配信部２２８は、更新ＩＤの払い出しを行う（ステップＳ３０３）。更新ＩＤはキャッシュ制御システムにおいて順序性を有する識別情報となる。例えば、更新情報配信部２２８は、配信時刻を更新ＩＤとして払い出したり、配信情報に枝番号を付加した情報を更新ＩＤとして払い出したりする。例えば、更新情報配信部２２８は、更新ＩＤ「Ｉ００１」を払い出す。
【０１５９】
そして、更新情報配信部２２８は、配信先となるデータベースサーバ２００に更新データを配信する（ステップＳ３０４）。つまり、更新情報配信部２２８は、装置状態「正常」に対応付けられたデータベースサーバ２００の一覧のうち、未配信のデータベースサーバ２００を配信順序に従って１つ選択し、選択したデータベースサーバ２００に更新データを送信する。また、更新情報配信部２２８は、更新データとして、更新ＩＤと、更新されたデータを識別するキー情報と、更新後のデータとを送信する。
【０１６０】
そして、更新情報配信部２２８は、配信が成功したかを判定し（ステップＳ３０５）、配信が成功したと判定した場合には（ステップＳ３０５肯定）、配信先となるデータベースサーバ２００すべてについて配信を実行したかを判定する（ステップＳ３０７）。ここで、更新情報配信部２２８は、配信先となる全データベースサーバ２００について配信を実行していないと判定した場合には（ステップＳ３０７否定）、ステップＳ３０４に戻り、処理を繰り返す。
【０１６１】
一方、更新情報配信部２２８は、配信を失敗したと判定した場合には（ステップＳ３０５否定）、配信先となったデータベースサーバ２００が自装置であるか否かを判定する（ステップＳ３０６）。なお、自装置に対する配信が失敗する場合とは、例えば、自装置が故障しており、更新指示を正常に受信できなかった場合がある。ここで、更新情報配信部２２８は、配信先となったデータベースサーバ２００が自装置であると判定した場合には（ステップＳ３０６肯定）、更新処理を継続することができないため、配信処理又は更新処理が失敗したことを示す登録失敗を応答し（ステップＳ３１０）、処理を終了する。
【０１６２】
一方、更新情報配信部２２８は、配信先となったデータベースサーバ２００が自装置でないと判定した場合には（ステップＳ３０６否定）、上述したステップＳ３０７の処理を実行する。
【０１６３】
そして、上述したステップＳ３０７において、配信先となるデータベースサーバ２００すべてについて配信を実行したと判定した場合には（ステップＳ３０７肯定）、更新情報配信部２２８は、更新ＩＤに対応付けて、データベースサーバ２００各々についての配信結果を更新ＩＤに対応付けて配信情報ＤＢ２１３に格納する（ステップＳ３０８）。具体的には、更新情報配信部２２８は、配信が成功したデータベースサーバ２００のデータベースサーバ名と更新ＩＤ「Ｉ００１」とに対応付けて配信結果「ＯＫ」を格納し、配信が成功しなかったデータベースサーバ２００についても、データベースサーバ名と更新ＩＤ「Ｉ００１」とに対応付けて配信結果「未配信」を格納する。また、更新情報配信部２２８は、装置状態が正常ではなく、配信先とならなかったデータベースサーバ２００についても、データベースサーバ名と更新ＩＤ「Ｉ００１」とに対応付けて、配信結果「未配信」を格納する。
【０１６４】
ここで、更新情報配信部２２８は、データベースサーバ２００各々についての配信結果を、全データベースサーバ２００に格納する。すなわち、全データベースサーバ２００の配信情報ＤＢ２１３に、データベースサーバ２００各々についての配信結果が格納される。なお、例えば、データベースサーバ「Ａ」の更新情報配信部２２８は、データベースサーバ「Ｂ」の配信情報ＤＢ２１３に直接格納しても良く、データベースサーバ「Ｂ」とデータを送受信することで、データベースサーバ「Ｂ」にデータベースサーバ「Ｂ」の配信情報ＤＢ２１３に格納させるようにしても良い。
【０１６５】
そして、更新情報配信部２２８は、配信情報ＤＢ２１３の配信結果が「ＯＫ」のデータベースサーバ名を取得する（ステップＳ３１１）。また、ここで、更新情報配信部２２８は、取得したデータベースサーバ名の一覧を作成し、作成した一覧の先頭が自装置となるようにする。
【０１６６】
そして、更新情報配信部２２８は、配信結果が「ＯＫ」となっているデータベースサーバ２００を１つ選択し、選択したデータベースサーバ２００のユーザ情報ＤＢ２１１を更新する（ステップＳ３１２）。具体的には、更新情報配信部２２８は、ユーザ情報ＤＢ２１１に記憶されたデータのうち、予め配信された更新データに含まれるキー情報により識別されるデータを、予め配信された更新データに含まれる更新後のデータに更新する。
【０１６７】
また、ここで、各データベースサーバ２００では、更新情報配信部２２８が、データベースサーバ２００のユーザ情報ＤＢ２１１のデータが更新されると、ＩＲ情報を生成し、自装置のデータベースサーバ２００のＩＲ情報ＤＢ２１２に格納する。すなわち、更新情報配信部２２８は、更新データに含まれる更新ＩＤとキー情報とを対応付けて、ＩＲ情報ＤＢ２１２に格納する。また、ここで、更新情報配信部２２８は、データベースサーバ２００と接続された複数あるキャッシュサーバ３００のキャッシュサーバ名各々に対応付けて、ＩＲ情報を格納する。
【０１６８】
なお、例えば、データベースサーバ「Ａ」の更新情報配信部２２８は、データベースサーバ「Ｂ」のユーザ情報ＤＢ２１１を直接更新しても良く、データベースサーバ「Ｂ」の更新情報配信部２２８にユーザ情報ＤＢ２１１を更新させるようにしても良い。また、同様に、データベースサーバ「Ａ」の更新情報配信部２２８は、データベースサーバ「Ｂ」のＩＲ情報ＤＢ２１２にＩＲ情報を直接格納しても良く、データベースサーバ「Ｂ」の更新情報配信部２２８にＩＲ情報を格納させても良い。
【０１６９】
そして、更新情報配信部２２８は、更新が成功したか否かを判定する（ステップＳ３１３）。ここで、更新情報配信部２２８は、更新が成功したと判定した場合には（ステップＳ３１３肯定）、更新が成功したデータベースサーバ名に対応付けて、更新結果「ＯＫ」を格納する（ステップＳ３１６）。
【０１７０】
一方、更新情報配信部２２８は、更新が成功したと判定しなかった場合には（ステップＳ３１３否定）、更新先となったデータベースサーバ２００が自装置であるか否かを判定する（ステップＳ３１４）。ここで、更新情報配信部２２８は、更新先となったデータベースサーバ２００が自装置であると判定した場合には（ステップＳ３１４肯定）、更新処理を継続することができないため、配信情報ＤＢ２１３から処理対象となった更新ＩＤを含む行を削除し（ステップＳ３０９）、配信処理又は更新処理が失敗したことを示す登録失敗を応答し（ステップＳ３１０）、処理を終了する。また、ここで、更新情報配信部２２８は、更新先となったデータベースサーバ２００が自装置でないと判定した場合には（ステップＳ３１４否定）、更新が成功しなかったデータベースサーバ名に対応付けて、更新結果「ＮＧ」を格納する（ステップＳ３１５）。
【０１７１】
ここで、更新情報配信部２２８は、データベースサーバ２００各々についての更新結果を、全データベースサーバ２００に格納する。すなわち、全データベースサーバ２００の配信情報ＤＢ２１３に、データベースサーバ２００各々についての更新結果が格納される。なお、例えば、データベースサーバ「Ａ」の更新情報配信部２２８は、データベースサーバ「Ｂ」の配信情報ＤＢ２１３に直接格納しても良く、データベースサーバ「Ｂ」とデータを送受信することで、データベースサーバ「Ｂ」にデータベースサーバ「Ｂ」の配信情報ＤＢ２１３に格納させるようにしても良い。
【０１７２】
そして、更新情報配信部２２８は、更新先となる全データベースサーバ２００について更新を実行したかを判定する（ステップＳ３１７）。ここで、更新情報配信部２２８は、更新先となるデータベースサーバ２００すべてについて更新を実行していないと判定した場合には（ステップＳ３１７否定）、ステップＳ３１２に戻り、処理を繰り返す。一方、更新情報配信部２２８は、更新先となるデータベースサーバ２００すべてについて更新を実行したと判定した場合には（ステップＳ３１７肯定）、更新処理が終了したことを示す登録成功応答を行い（ステップＳ３１８）、処理を終了する。
【０１７３】
［実施例１におけるデータベースサーバの更新再伝播部による処理］
図２７は、実施例１におけるデータベースサーバの更新再伝播部による処理の流れの一例を示すフローチャートである。以下に説明するように、更新情報配信部２２８により配信が行われなかったデータベースサーバ２００に対して、更新データを送信する。
【０１７４】
すなわち、以下に説明するように、更新再伝播部２２９は、故障などにより、更新情報配信部２２８で更新データの配信がなされなかったデータベースサーバ２００や更新が行われなかったデータベースサーバ２００に対して、更新データを配信したり、更新を実行したりする。なお、更新再伝播部２２９は、以下に説明する処理を定期的に実行したり、不定期に実行したりする。
【０１７５】
図２７に示すように、データベースサーバ２００の更新再伝播部２２９は、再伝播処理を開始すると、自データベースサーバ２００が配信装置であるか否かを判定する（ステップＳ４０１）。ここで、更新再伝播部２２９は、配信装置であると判定した場合には（ステップＳ４０１肯定）、配信情報ＤＢ２１３から自装置の更新結果が「ＯＫ」以外の更新ＩＤを取得する（ステップＳ４０２）。
【０１７６】
ここで、更新再伝播部２２９は、更新ＩＤが存在する場合に（ステップＳ４０３肯定）、更新ＩＤに対応する更新データを用いて、更新対象となるデータベースサーバ２００のデータを更新する（ステップＳ４０４）。
【０１７７】
そして、更新再伝播部２２９は、更新対象となるデータベースサーバ２００の更新が成功した場合には（ステップＳ４０５肯定）、更新が成功したデータベースサーバ名に対応付けて更新結果「ＯＫ」を配信情報ＤＢ２１３に格納する（ステップＳ４０７）。
【０１７８】
そして、更新再伝播部２２９は、未処理の更新ＩＤが存在するかを判定し（ステップＳ４０８）、すべての更新ＩＤ分の処理が終わっていると判定した場合には（ステップＳ４０８否定）、自装置以外のデータベースサーバ２００の一覧を作成する（ステップＳ４０９）。
【０１７９】
一方、ステップＳ４０８に戻り、更新再伝播部２２９は、未処理の更新ＩＤが存在すると判定した場合には（ステップＳ４０８肯定）、ステップＳ４０４に戻り、処理を繰り返す。
【０１８０】
また、ステップＳ４０５に戻り、更新再伝播部２２９は、更新が失敗した場合（ステップＳ４０５否定）、配信情報ＤＢ２１３の対象データベースサーバ名に対応する更新結果欄に更新結果「ＮＧ」を格納し（ステップＳ４０６）、ステップＳ４０９以降の処理を継続する。また、ステップＳ４０３に戻り、更新ＩＤが存在しない場合には（ステップＳ４０３否定）、更新再伝播部２２９は、ステップＳ４０９以降の処理を継続する。
【０１８１】
次に、ステップＳ４０９以降の処理を説明する。以下に説明するように、更新再伝播部２２９は、装置以外のデータベースサーバ２００の一覧から、データベースサーバ２００ごとに、該当のデータベースサーバ２００の配信結果が「ＯＫ」以外の結果が格納されている行の更新ＩＤを配信情報ＤＢ２１３から取得して、更新データを配信する処理や更新を実行する。
【０１８２】
ステップＳ４０９に示すように、更新再伝播部２２９は、検索順序を任意の手法にて決定する（ステップＳ４０９）。そして、更新再伝播部２２９は、検索順序に従って選択された、１つデータベースサーバ２００について、配信結果が「ＯＫ」以外の結果が格納されている行の更新ＩＤを取得する（ステップＳ４１０）。例えば、配信装置となるデータベースサーバ２００がデータベースサーバ「Ａ」であり、データベースサーバ「Ｂ」を選択した場合を用いて説明する。この場合、データベースサーバ「Ａ」の更新再伝播部２２９は、自装置の配信情報ＤＢ２１３を参照し、データベースサーバ名「データベースサーバＢ」に対応付けられた更新ＩＤのうち、配信結果「ＯＫ」以外に対応付けられた更新ＩＤを取得する。
【０１８３】
ここで、更新再伝播部２２９は、更新ＩＤが存在する場合（ステップＳ４１１肯定）、取得した更新ＩＤについての更新データを対象となるデータベースサーバ２００に配信し、配信結果を配信情報ＤＢ２１３に格納する（ステップＳ４１２）。つまり、更新再伝播部２２９は、配信が成功した場合には配信結果「ＯＫ」を格納し、配信が成功しなかった場合には配信結果「未配信」を格納する。
【０１８４】
そして、更新再伝播部２２９は、ステップＳ４１０で取得した更新ＩＤをすべて処理したかを判定し（ステップＳ４１３）、処理していないと判定した場合（ステップＳ４１３否定）、ステップＳ４１２に戻り、処理を繰り返す。一方、更新再伝播部２２９は、すべて処理したと判定した場合には（ステップＳ４１３肯定）、ステップＳ４１４以降の処理を実施する。また、ステップＳ４１１で、そもそも更新ＩＤがなかった場合にも（ステップＳ４１１否定）、ステップＳ４１４以降の処理を実施する。
【０１８５】
そして、更新再伝播部２２９は、配信情報ＤＢ２１３から、処理対象となるデータベースサーバ２００の更新結果が、「ＯＫ」以外の更新ＩＤを取得する（ステップＳ４１４）。例えば、配信装置となるデータベースサーバ２００がデータベースサーバ「Ａ」であり、データベースサーバ「Ｂ」を選択した場合を用いて説明する。この場合、データベースサーバ「Ａ」の更新再伝播部２２９は、自装置の配信情報ＤＢ２１３を参照し、データベースサーバ名「データベースサーバＢ」に対応付けられた更新ＩＤのうち、更新結果「ＯＫ」以外に対応付けられた更新ＩＤを取得する。
【０１８６】
ここで、更新再伝播部２２９は、更新ＩＤが存在する場合（ステップＳ４１５肯定）、更新ＩＤに対応する配信済みの更新データを用いて、処理対象となるデータベースサーバ２００のユーザ情報ＤＢ２１１を更新する（ステップＳ４１６）。また、更新再伝播部２２９は、更新が成功した場合には（ステップＳ４１７肯定）、処理対象となった更新ＩＤと処理対象となったデータベースサーバ名とに対応付けて、更新結果「ＯＫ」を配信情報ＤＢ２１３に格納する（ステップＳ４１８）。一方、更新再伝播部２２９は、更新が成功しなかった場合には（ステップＳ４１７否定）、処理対象となった更新ＩＤと処理対象となったデータベースサーバ名とに対応付けて、更新結果「ＮＧ」を配信情報ＤＢ２１３に格納する（ステップＳ４２０）。
【０１８７】
そして、更新再伝播部２２９は、まだ処理すべき更新ＩＤが残っている場合には（ステップＳ４１９否定）、ステップＳ４１６に戻り、処理を繰り返す。一方、更新再伝播部２２９は、すべての更新ＩＤを処理した場合には（ステップＳ４１９肯定）、すべてのデータベースサーバ２００について処理を実行したかを判定する（ステップＳ４２１）。ここで、処理を実行したと判定した場合には（ステップＳ４２１肯定）、処理を終了する。一方、更新再伝播部２２９は、処理を実行していない判定した場合には（ステップＳ４２１否定）、ステップＳ４１０に戻り、検索順序に従って次のデータベースサーバ２００を選択して処理を繰り返す。
【０１８８】
［実施例１におけるキャッシュサーバのキャッシュ判定部による処理］
図２８は、実施例１におけるキャッシュサーバのキャッシュ判定部による処理の流れの一例を示すフローチャートである。以下に説明するように、キャッシュサーバ３００のキャッシュ判定部３２１は、クライアント端末５００からデータ要求を受信するごとに、図２８に示す一連の処理を実行する。すなわち、クライアント端末５００が要求するデータのキー情報を含むデータ要求をキャッシュサーバ３００に送信するごとに、以下に説明する処理が実行される。
【０１８９】
図２８に示すように、キャッシュサーバ３００のキャッシュ判定部３２１は、クライアント端末５００からデータ要求を受信すると（ステップＳ１０１肯定）、受信したデータ要求に含まれるキー情報を取得し、取得したキー情報に対応付けられた属性情報をキャッシュ３１１にて検索する（ステップＳ１０２）。
【０１９０】
ここで、キャッシュ判定部３２１は、キー情報に対応付けられた属性情報がキャッシュ３１１に存在する場合には（ステップＳ１０３肯定）、キャッシュ３１１に記憶されていた属性情報を応答処理部３２３に出力する（ステップＳ１０４）。
【０１９１】
例えば、データ要求にキー情報「Ｕ００１」が含まれる場合を用いて説明する。この場合、キャッシュ判定部３２１は、キー情報「Ｕ００１」に対応付けられた属性情報をキャッシュ３１１にて検索する。ここで、例えば、キー情報「Ｕ００１」と属性情報「Ｐ００１」を対応付けてキャッシュ３１１が記憶していた場合には、キャッシュ判定部３２１は、属性情報「Ｐ００１」をキャッシュ３１１から取得し、応答処理部３２３に出力する。
【０１９２】
一方、ステップＳ１０３に戻り、キャッシュ判定部３２１は、キー情報に対応付けられた属性情報がキャッシュ３１１に存在しない場合には（ステップＳ１０３否定）、検索先状態ＤＢ３１２から閉塞状態「閉塞」となっていないデータベースサーバ名を検索する（ステップＳ１０５）。すなわち、キャッシュ判定部３２１は、自装置内の検索先状態ＤＢ３１２を参照することで、閉塞状態「閉塞」となっていないデータベースサーバ２００を検索する。
【０１９３】
ここで、キャッシュ判定部３２１は、データベースサーバ２００の閉塞状態がすべて「閉塞」となっていた場合には（ステップＳ１０６肯定）、検索失敗を応答処理部３２３に出力する（ステップＳ１１１）。つまり、この場合、キャッシュサーバ３００が自装置のキャッシュ３１１にないデータを要求する要求先となるデータベースサーバ２００がなく、データベースサーバ２００からデータを取得してクライアント端末５００に送信することができない。このことを踏まえ、キャッシュ判定部３２１は、検索失敗を応答処理部３２３に出力する。
【０１９４】
一方、キャッシュ判定部３２１は、データベースサーバ２００の閉塞状態がすべて「閉塞」となっていない場合には（ステップＳ１０６否定）、未閉塞なデータベースサーバ２００のいずれかを選択し、データ要求に含まれるキー情報に対応する属性情報を要求するデータ検索要求を選択した未閉塞なデータベースサーバ２００に送信する（ステップＳ１０７）。
【０１９５】
すなわち、キャッシュ３１１に属性情報が記憶されていない場合、例えば、キャッシュ判定部３２１は、データ要求に含まれていたキー情報「Ｕ００１」に対応する属性情報を要求するデータ検索要求を送信する。ここで、送信先となるデータベースサーバ２００は、図９に示す例では、閉塞状態「未閉塞」に対応付けられたデータベースサーバ「Ａ」又はデータベースサーバ「Ｂ」となる。
【０１９６】
そして、キャッシュ判定部３２１は、データベースサーバ２００からのデータ検索要求に対する応答を受信する（ステップＳ１０８）。ここで、キャッシュ判定部３２１は、検索結果がありの場合には（ステップＳ１０９肯定）、キャッシュ３１１にデータを格納し（ステップＳ１１０）、属性情報をクライアント端末５００に出力する。一方、キャッシュ判定部３２１は、検索結果がなしの場合には（ステップＳ１０９否定）、つまり、データ要求に含まれるキー情報が存在しない旨を応答処理部３２３に出力する（ステップＳ１１２）。
【０１９７】
［実施例１におけるキャッシュサーバのＩＲ情報判定部による処理］
図２９は、実施例１におけるキャッシュサーバのＩＲ情報判定部による処理の流れの一例を示すフローチャートである。以下では、キャッシュサーバ３００が検索先状態ＤＢ３１２を更新する際に実行される処理と、キャッシュサーバ３００がＩＲ情報をデータベースサーバ２００から取得する処理とを連続して実行する場合を用いて説明するキャッシュサーバ３００のＩＲ情報判定部３２２は、以下に説明する一連の処理を、定期的に実行したり、不定期にて実行したりする。
【０１９８】
図２９に示すように、キャッシュサーバ３００のＩＲ情報判定部３２２は、ＩＲ情報の検索先となるデータベースサーバ２００の検索順序を決定する（ステップＳ２０１）。ここで、ＩＲ情報の検索先となるデータベースサーバ２００各々は、キャッシュサーバ３００各々の検索先状態ＤＢ３１２に記憶されたデータベースサーバ名により識別されるデータベースサーバ２００各々となる。すなわち、ＩＲ情報判定部３２２は、更新処理が正常に行われていないデータベースサーバ２００からＩＲ情報を取得することができないことを踏まえ、ＩＲ情報の検索先となるデータベースサーバ２００各々について、更新処理の状況を検索する。
【０１９９】
図２９の説明に戻る。そして、ＩＲ情報判定部３２２は、データベースサーバ２００に対して、検索先となるデータベースサーバ名を含む更新成否情報検索要求を送信する（ステップＳ２０２）。検索先となるデータベースサーバ２００がデータベースサーバ「Ａ」である場合を用いて説明する。この場合、ＩＲ情報判定部３２２は、任意のデータベースサーバ２００に対して、データベースサーバ名「データベースサーバＡ」を含む更新成否要求を送信する。
【０２００】
そして、ＩＲ情報判定部３２２は、データベースサーバ２００から更新成否結果を受信し（ステップＳ２０３）、受信した更新成否結果に基づいて、データベースサーバ２００の更新登録状態を判定する（ステップＳ２０４）。
【０２０１】
ここで、ＩＲ情報判定部３２２による更新登録状態判定処理について更に説明する。具体的には、ＩＲ情報判定部３２２は、受信した更新成否結果と、前回の更新登録状態判定結果とに基づいて、今回の更新登録状態を判定する。例えば、ＩＲ情報判定部３２２は、更新成否結果と前回の更新登録状態判定結果と今回の更新登録状態とが対応付けられた更新登録状態対応表に基づいて、更新登録状態を判定する。また、ＩＲ情報判定部３２２は、判定結果となる更新登録状態を更新登録状態ＤＢ３１３に格納する。
【０２０２】
図３０は、実施例１における更新登録状態対応表の一例を示す図である。図３０に示す例では、更新登録状態が、「正常」と「伝播異常検出」と「伝播異常」と「正常移行中」とのうちいずれかである場合を例に示したが、これに限定されるものではなく、任意の更新登録状態を用いて良い。
【０２０３】
図３０に示すように、ＩＲ情報判定部３２２は、更新成否結果を受信すると、前回の更新登録状態と受信した更新成否結果とを検索キーとして、更新登録状態対応表から更新登録状態を取得し、今回の更新登録状態とする。例えば、更新結果「登録正常」を受信した場合を用いて説明する。また、更新登録状態ＤＢ３１３に記憶された前回の更新登録状態が「伝播異常」である場合を用いて説明する。この場合、ＩＲ情報判定部３２２は、更新結果「登録正常」と前回の更新登録状態「任意」とを検索キーとして、更新登録状態対応表から更新登録状態「正常」を取得し、今回の更新登録状態とする。
【０２０４】
そして、ＩＲ情報判定部３２２は、更新登録状態が「正常」以外であるかを判定する（ステップＳ２０５）。ここで、ＩＲ情報判定部３２２は、更新登録状態が「正常」であると判定した場合には（ステップＳ２０５否定）、自装置の検索先状態ＤＢ３１２に対して、ＩＲ情報の検索先となるデータベースサーバ２００のデータベースサーバ名に対応付けて閉塞状態「未閉塞」を格納する（ステップＳ２０７）。一方、ＩＲ情報判定部３２２は、更新登録状態が「正常」以外であると判定した場合には（ステップＳ２０５肯定）、自装置の検索先状態ＤＢ３１２に対して、ＩＲ情報の検索先となるデータベースサーバ２００のデータベースサーバ名に対応付けて閉塞状態「閉塞」を格納する（ステップＳ２０６）。
【０２０５】
そして、ＩＲ情報判定部３２２は、すべてのデータベースサーバ２００各々について処理を実行したかを判定し（ステップＳ２０８）、実行していないと判定した場合には（ステップＳ２０８否定）、検索順序が次のデータベースサーバ２００を決定し、上述したステップＳ２０２に戻り、処理を繰り返す。
【０２０６】
そして、すべてのデータベースサーバ２００各々について処理を実行したと判定した場合には（ステップＳ２０８肯定）、ＩＲ情報判定部３２２は、データベースサーバ２００各々について、ＩＲ情報を検索する検索順序を任意の手法にて決定する（ステップＳ２１０）。
【０２０７】
そして、ＩＲ情報判定部３２２は、データベースサーバ２００に対して、自キャッシュサーバ名を含むＩＲ情報要求を送信する（ステップＳ２１１）。例えば、キャッシュサーバ「Ａ」は、キャッシュサーバ名「キャッシュサーバＡ」を含むＩＲ情報要求を送信する。
【０２０８】
そして、ＩＲ情報判定部３２２は、データベースサーバ２００からの検索結果を受信すると（ステップＳ２１２）、受信した検索結果にＩＲ情報が存在する否かを判定する（ステップＳ２１３）。ここで、ＩＲ情報判定部３２２は、ＩＲ情報が存在すると判定した場合には（ステップＳ２１３肯定）、ＩＲ情報に含まれる更新ＩＤをキーとする更新情報要求を送信する（ステップＳ２１４）。例えば、ＩＲ情報として、キー情報「Ｕ００１」と更新ＩＤ「Ｉ００１」とを受信した場合を用いて説明する。この場合、ＩＲ情報判定部３２２は、更新ＩＤ「Ｉ００１」を含む更新情報要求を送信する。すなわち、ＩＲ情報判定部３２２は、更新ＩＤにより識別される更新について、データベースサーバ２００各々について更新が行われたか否かを示す情報を取得する。言い換えると、ＩＲ情報判定部３２２は、受信したＩＲ情報に含まれる更新ＩＤにより識別される更新についての更新結果を、ＩＲ情報の取得先となるデータベースサーバ２００すべてについて取得する。
【０２０９】
そして、ＩＲ情報判定部３２２は、更新ＩＤに対応した更新結果をデータベースサーバ２００から受信すると（ステップＳ２１５）、自装置の更新登録状態ＤＢ３１３にデータベースサーバ２００各々について記憶された更新登録状態と、受信した更新結果とに基づいて、ＩＲ情報を削除するかを判定するＩＲ情報削除判定処理を実行する（ステップＳ２１６）。
【０２１０】
例えば、ＩＲ情報判定部３２２は、各データベースサーバ２００の更新登録状態の組み合わせごとに、ＩＲ情報が削除可能となる条件が対応付けられたＩＲ情報削除対象判定表に基づいて、ＩＲ情報削除判定処理を実行する。図３１は、実施例１におけるＩＲ情報削除対象判定表の一例を示す図である。図３１に示す例では、ＩＲ情報の取得先となるデータベースサーバ２００が「２つ」である場合を用いて説明する。すなわち、例えば、ＩＲ情報判定部３２２は、自装置の更新登録状態ＤＢ３１３からデータベースサーバ各々についての更新登録状態をすべて取得する。そして、ＩＲ情報判定部３２２は、取得した更新登録状態各々をＩＲ情報削除対象判定表にあてはめ、削除可能となるＩＲ情報を判定する。
【０２１１】
図３１に示す例では、ＩＲ情報削除対象判定表は、「ＩＲ情報削除対象データベースサーバ（サーバ１）の更新登録状態」と「ＩＲ情報削除非対象データベースサーバ（サーバ２）の更新登録状態」との組み合わせに対応付けて、「ＩＲ情報削除対象となる更新ＩＤの状態」を記憶する。
【０２１２】
ここで、「ＩＲ情報削除対象データベースサーバ（サーバ１）の更新登録状態」は、ＩＲ情報を削除するか否かが判定される対象となるデータベースサーバ２００を示す。例えば、上述したステップＳ２１１において、ＩＲ情報要求を送信した送信先となるデータベースサーバ２００が該当する。以下では、「ＩＲ情報削除対象データベースサーバ（サーバ１）の更新登録状態」は、データベースサーバ「Ａ」であるものとして説明する。
【０２１３】
「ＩＲ情報削除非対象データベースサーバ（サーバ２）の更新登録状態」は、複数あるデータベースサーバ２００のうち、「ＩＲ情報削除対象データベースサーバ（サーバ１）の更新登録状態」を除いた他のデータベースサーバ２００を示す。例えば、更新登録状態ＤＢ３１３にデータベースサーバ名が記憶されたデータベースサーバ２００から、データベースサーバ「Ａ」を除いた全データベースサーバ２００各々が該当する。以下では、「ＩＲ情報削除非対象データベースサーバ（サーバ２）の更新登録状態」は、データベースサーバ「Ｂ」１つである場合を用いて説明する。
【０２１４】
「ＩＲ情報削除対象となる更新ＩＤの状態」は、ＩＲ情報が削除可能となる条件を示す。具体的には、「（サーバ１）（サーバ２）ともＯＫ」は、（サーバ１）と（サーバ２）とにおいて共に更新結果「ＯＫ」となっている更新ＩＤを含むＩＲ情報が削除可能となることを示す。また、「（サーバ１）がＯＫ」は、（サーバ１）にて更新結果「ＯＫ」となっている更新ＩＤを含むＩＲ情報が削除可能となることを示す。なお、ここで、ＩＲ情報が削除される対象となるデータベースサーバ２００は、「ＩＲ情報削除対象データベースサーバ（サーバ１）」となる。
【０２１５】
ここで、データベースサーバ「Ａ」の更新登録状態が「正常」であり、データベースサーバ「Ｂ」の更新登録状態が「正常」である場合を用いて説明する。この場合、ＩＲ情報判定部３２２は、ＩＲ情報削除対象データベースサーバ（サーバ２）の更新登録状態「正常」と、ＩＲ情報削除非対象データベースサーバ（サーバ２）の更新登録状態「正常」との組み合わせに対応付けられた「ＩＲ情報削除対象となる更新ＩＤの状態」を取得する。図３１に示す例では、ＩＲ情報判定部３２２は、ＩＲ情報削除対象となる更新ＩＤの状態「（サーバ１）（サーバ２）ともＯＫ」を取得する。この場合、「（サーバ１）（サーバ２）ともＯＫ」が、ＩＲ情報が削除可能であるための条件となる。つまり、データベースサーバ「Ａ」にて更新結果が「ＯＫ」となっており、データベースサーバ「Ｂ」にて更新結果が「ＯＫ」となっている更新ＩＤについて、データベースサーバ「Ａ」からＩＲ情報を削除しても良いと判定する。そして、ＩＲ情報判定部３２２は、そして、得られた条件となる「（サーバ１）（サーバ２）ともＯＫ」を、データベースサーバ２００から受信した更新結果応答に含まれる「データベースサーバ名、更新結果」と照合し、条件に合致するＩＲ情報について削除可能であると判定する。
【０２１６】
詳細な一例をあげて説明する。例えば、データベースサーバ「Ａ」の「更新登録状態」が「正常」である場合を用いて説明する。また、例えば、データベースサーバ「Ｂ」の「更新登録状態」が「正常」である場合を用いて説明する。また、例えば、更新情報応答に含まれる「サーバ名、更新結果」が、それぞれ、「データベースサーバ「Ａ」、ＯＫ」、「データベースサーバ「Ｂ」、ＯＫ」である場合を用いて説明する。この場合、ＩＲ情報判定部３２２は、ＩＲ情報削除対象判定表から「（サーバ１）（サーバ２）ともＯＫ」というＩＲ情報削除可能条件を取得する。ここで、（サーバ１）はデータベースサーバ「Ａ」であり、（サーバ２）はデータベースサーバ「Ｂ」であるので、ＩＲ情報削除対象判定表は、ＩＲ情報は削除可能であると判定する。
【０２１７】
また、詳細な一例をあげて説明する。例えば、データベースサーバ「Ａ」の「更新登録状態」が「正常」である場合を用いて説明する。また、例えば、データベースサーバ「Ｂ」の「更新登録状態」が「伝播異常検出」である場合を用いて説明する。また、例えば、更新情報応答に含まれる「サーバ名、更新結果」が、それぞれ、「データベースサーバ「Ａ」、ＯＫ」、「データベースサーバ「Ｂ」、ＮＧ」である場合を用いて説明する。この場合、ＩＲ情報判定部３２２は、ＩＲ情報削除対象判定表から「（サーバ１）（サーバ２）がＯＫ」というＩＲ情報削除可能条件を取得する。この結果、ＩＲ情報判定部３２２は、ＩＲ情報は削除不可能という判定する。
【０２１８】
すなわち、ＩＲ情報判定部３２２は、データベースサーバ２００から、配信情報ＤＢ２１３に記憶された複数あるデータベースサーバ各々についての更新結果を取得する。そして、ＩＲ情報判定部３２２は、取得した更新結果各々に基づいて、複数あるデータベースサーバすべてについて更新が終了したか否かを更新ＩＤごとに判定し、更新が終了したと判定した更新ＩＤについて、ＩＲ情報を削除して良いと判定し、更新が終了したと判定しなかった更新ＩＤについて、ＩＲ情報を削除しないと判定する。
【０２１９】
より詳細には、ＩＲ情報判定部３２２は、データベースサーバ２００における更新が正常に実行されている状態か否かを複数あるデータベースサーバ各々について判定する。そして、ＩＲ情報判定部３２２は、正常に実行されている状態であると判定されたデータベースサーバ２００すべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合にはＩＲ情報を削除して良いと判定し、更新が終了していないと判定した場合にはＩＲ情報を削除しないと判定する。
【０２２０】
図２９の説明に戻る。ＩＲ情報判定部３２２は、ＩＲ情報削除判定処理の結果、ＩＲ情報は削除可能であると判定した場合には（ステップＳ２１７肯定）、削除しても良いと判定したＩＲ情報に含まれるキー情報により識別されるデータを、キャッシュ３１１から削除する。例えば、ＩＲ情報判定部３２２は、削除しても良いと判定したＩＲ情報に含まれるキー情報により識別される属性情報と、削除しても良いと判定したＩＲ情報に含まれるキー情報自体とをキャッシュ３１１から削除する（ステップＳ２１８）。
【０２２１】
すなわち、ＩＲ情報判定部３２２は、ＩＲ情報が削除可能である場合、ＩＲ情報の「キー情報」を用い、自装置のキャッシュ３１１に該当するキー情報が存在する場合には、該当の「キー情報」と、キー情報に対応付けられた「属性情報」とを削除することで、キャッシュ３１１の最新化を行う。
【０２２２】
そして、ＩＲ情報判定部３２２は、選択したデータベースサーバ２００へＩＲ情報削除要求を送信する（ステップＳ２１９）。すなわち、例えば、ＩＲ情報判定部３２２は、データベースサーバ「Ａ」に対して、削除対象となるＩＲ情報についての更新ＩＤを含むＩＲ情報削除要求を送信することで、データベースサーバ「Ａ」にＩＲ情報を削除させる。
【０２２３】
そして、ＩＲ情報判定部３２２は、ＩＲ情報の取得先となるデータベースサーバ２００すべてについて処理を実行したか否かを判定し（ステップＳ２２０）、実行したと判定した場合には（ステップＳ２２０肯定）、処理を終了する。一方、ＩＲ情報判定部３２２は、実行していないと判定した場合には（ステップＳ２２０否定）、次に検索するデータベースサーバをステップＳ２１０にて決定した検索順序に従って決定し（ステップＳ２２１）、上述したステップＳ２１１に戻り、処理を繰り返す。
【０２２４】
すなわち、ＩＲ情報判定部３２２は、閉塞されていないデータベースサーバ２００各々からＩＲ情報を取得し、上述したステップＳ２１２からステップＳ２１９までの処理を繰り返す。
【０２２５】
なお、ステップＳ２１３において、ＩＲ情報が存在しない場合には（ステップＳ２１３否定）、ＩＲ情報判定部３２２は、ＩＲ削除判定処理を実行することなく、上述したステップＳ２２０以降の処理を実行する。また、ステップＳ２１７において、ＩＲ情報が削除可能でない場合には（ステップＳ２１７否定）、ＩＲ情報判定部３２２は、ＩＲ情報を削除する処理を行うことなく、上述したステップＳ２２０以降の処理を実行する。
【０２２６】
なお、上述したステップＳ２１０において、ＩＲ情報判定部３２２は、閉塞状態「未閉塞」が格納されたデータベースサーバ２００各々について、ＩＲ情報を検索する検索順序を任意の手法にて決定しても良い。言い換えると、閉塞状態「閉塞」が格納されたデータベースサーバ２００各々については、ＩＲ情報を検索する検索先としなくても良い。
【０２２７】
［実施例１におけるキャッシュサーバの応答処理部による流れ］
図３２は、実施例１におけるキャッシュサーバの応答処理部による流れの一例を示すフローチャートである。以下に説明するように、応答処理部３２３は、クライアント端末５００に対してデータ要求に対する応答を送信する際に、以下の処理を実行する。
【０２２８】
図３２に示すように、応答処理部３２３は、キャッシュ判定部３２１から応答情報が入力されると（ステップＳ１００１肯定）、キャッシュ判定部３２１から指定された「キー情報、属性情報」、「キー情報なし」、「検索失敗」をもとに、クライアント端末５００への応答情報を組み立てる（ステップＳ１００２）。そして、応答処理部３２３は、組み立てた応答情報をクライアント端末５００に送信する（ステップＳ１００３）。すなわち、応答処理部３２３は、キャッシュ判定部３２１によって入力された情報を応答情報としてクライアント端末５００に送信する。
【０２２９】
［実施例１における監視サーバの故障判定部による処理］
図３３は、実施例１における監視サーバの故障判定部による処理の流れの一例を示すフローチャートである。故障判定部４２１は、図３３を用いて説明する一連の処理を定期的に実行したり、不定期に実行したりする。
【０２３０】
図３３に示すように、故障判定部４２１は、自装置の装置情報ＤＢ４１１から、データベースサーバ名の一覧を取得し、処理順序を決定する（ステップＳ１１０１）。例えば、故障判定部４２１は、取得した一覧に記載された順番を処理順序として決定する。
【０２３１】
そして、故障判定部４２１は、データベースサーバ２００に装置状態要求を送信する（ステップＳ１１０２）。例えば、故障判定部４２１は、一覧の最初に記載されたデータベースサーバ２００に対して装置状態要求を送信する。
【０２３２】
その後、故障判定部４２１は、データベースサーバ２００から装置状態応答を受信する処理を実行し（ステップＳ１１０３）、装置状態応答が受信したかを判定する（ステップＳ１００４）。ここで、故障判定部４２１は、装置状態応答を受信したと判定した場合には（ステップＳ１１０４肯定）、受信した装置情報を用いて、予め設定された判定基準に基づいて故障判定を実行する（ステップＳ１１０５）。すなわち、例えば、故障判定部４２１は、データベースサーバ２００の配信関連リソースの状態を示す情報を受信すると、受信した情報に基づいて故障判定を実行する。なお、故障判定部４２１による判定処理においては、任意の判定基準を用いて、任意の手法を用いて実行して良い。
【０２３３】
そして、故障判定部４２１は、装置状態の判定結果が正常である場合には（ステップＳ１１０６肯定）、装置情報ＤＢ４１１に記憶された装置状態のうち、処理対象となったデータベースサーバ２００のデータベースサーバ名に対応付けられた装置状態を、装置状態「正常」に更新する（ステップＳ１１０７）。
【０２３４】
そして、故障判定部４２１は、全データベースサーバ２００について処理を行った場合には（ステップＳ１１１０否定）、データベースサーバ名の一覧から次のデータベースサーバ２００を選択し（ステップＳ１１１２）、ステップＳ１１０２に戻って処理を繰り返す。一方、故障判定部４２１は、全データベースサーバ２００分の処理を行っていない場合には（ステップＳ１１１０肯定）、各データベースサーバ２００各々についての判定結果となる装置状態を格納する旨の装置状態格納要求をデータベースサーバ２００各々に送信し（ステップＳ１１１１）、処理を終了する。
【０２３５】
一方、上述したステップＳ１１０４に戻り、装置状態応答を受信しなかったと判定した場合（ステップＳ１１０４否定）や、装置状態の判定結果が正常ではなかった場合（ステップＳ１１０６否定）について説明する。この場合、故障判定部４２１は、装置情報ＤＢ４１１に記憶された装置状態のうち、処理対象となったデータベースサーバ２００のデータベースサーバ名に対応付けられた装置状態を、装置状態「故障」に更新する（ステップＳ１１０８）。そして、故障判定部４２１は、処理対象となったデータベースサーバ２００に、キャッシュサーバ３００との間におけるデータの送受信を閉塞する旨の閉塞要求を送信することで、キャッシュサーバ３００を閉塞する（ステップＳ１１０９）。そして、上述したステップＳ１１１０以降の処理を実行する。
【０２３６】
なお、故障判定部４２１は、一度閉塞要求を送信した後に、データベースサーバ２００にて遮断処理が失敗すると、例えば、再度閉塞要求を送信し、成功するまで繰り返す。ただし、これに限定されるものではなく、成功するまで繰り返さなくても良い。例えば、故障判定部４２１は、所定の回数閉塞要求を送信した後に、エラーとして処理を終了しても良い。すなわち、閉塞が失敗した場合には、何らかの想定外の故障が存在することが想定されることを踏まえ、繰り返しを一切行わなくても良く、所定回数以上繰り返しを行わなくても良い。
【０２３７】
［実施例１の効果］
上述したように、実施例１によれば、キャッシュ制御システムでは、データベースサーバ各々は、自データベースサーバのデータが更新される場合に、更新されるデータを識別するキー情報を含むＩＲ情報を複数あるキャッシュサーバ３００を識別するキャッシュサーバ名に対応付けてＩＲ情報ＤＢ２１２に格納する。また、キャッシュサーバ３００各々は、複数あるデータベースサーバ２００各々から、ＩＲ情報ＤＢ２１２に自キャッシュサーバを識別するキャッシュサーバ名に対応付けて格納されたＩＲ情報を取得する。そして、キャッシュサーバ３００は、取得したＩＲ情報により識別されるデータのキャッシュを無効にする。この結果、１つでも正常なデータベースサーバ２００があれば、キャッシュサーバ３００に記憶された更新前のデータを無効化可能である。
【０２３８】
また、実施例１によれば、キャッシュ制御システムでは、複数あるデータベースサーバ２００各々は、複数あるデータベースサーバ２００各々について、データの更新が終了したか否かを示す更新結果を記憶する配信情報ＤＢ２１３を有する。また、キャッシュサーバ３００各々は、データベースサーバ２００から、配信情報ＤＢ２１３に記憶された複数あるデータベースサーバ２００各々についての更新結果を取得する。そして、キャッシュサーバ３００各々は、取得した更新結果各々に基づいて、複数あるデータベースサーバ２００すべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合には、取得したＩＲ情報をＩＲ情報ＤＢ２１２から削除する削除処理を実行し、更新が終了していないと判定した場合には削除処理を実行しない。この結果、データベースサーバ２００とキャッシュサーバ３００とを一致させることが可能である。例えば、更新済みのデータベースサーバが１台でも残っていれば、キャッシュデータに古いデータが有効なまま残るのを防止可能である。
【０２３９】
すなわち、キャッシュサーバが、データベースサーバ各々からＩＲ情報を取得し、ＩＲ情報を取得すると直ちにデータベースサーバからＩＲ情報を削除する場合を用いて説明する。また、データベースサーバ「１」とデータベースサーバ「２」とがある場合を用いて説明する。また、データベースサーバ「１」に更新が行われてＩＲ情報が生成された場合を用いて説明する。ここで、キャッシュサーバは、データベースサーバ「１」及びデータベースサーバ「２」に対してＩＲ情報を要求すると、データベースサーバ「１」からＩＲ情報を取得する。そして、キャッシュサーバは、ＩＲ情報に基づいて自キャッシュの古いデータを削除し、データベースサーバ「１」からＩＲ情報を削除する。ここで、データベースサーバ「１」に対する更新がデータベースサーバ「２」に対して反映される前に、データベースサーバ「１」に故障が発生するとする。そうすると、キャッシュサーバは、クライアント端末からデータ要求を受信すると、古いデータを削除しており、データベースサーバにデータを要求する。ここで、データベースサーバ「１」は故障しており、キャッシュサーバは、データベースサーバ「２」にデータを要求することになる。ここで、データベースサーバ「２」には、更新が反映されておらず、ＩＲ情報についてもデータベースサーバ「１」から削除されている。この結果、キャッシュサーバは、データベースサーバ「２」から古いデータを受信すると、かかる古いデータが有効なまま継続して保持することになる。
【０２４０】
これに対して、上述したように、実施例１によれば、キャッシュ制御システムでは、キャッシュサーバ３００は、更新がデータベースサーバ２００すべてに反映されていることを確認した上で、ＩＲ情報を削除するので、どの時点においてデータベースサーバ２００が故障したとしても、古いデータを確実に削除することが可能である。
【０２４１】
また、実施例１によれば、キャッシュ制御システムでは、キャッシュサーバ３００は、データベースサーバ２００における更新が正常に実行されている状態か否かを複数あるデータベースサーバ２００各々について判定する。そして、キャッシュサーバ３００は、正常に実行されている状態であると判定されたデータベースサーバ２００すべてについて更新が終了したか否かを判定し、更新が終了したと判定した場合には削除処理を実行し、更新が終了していないと判定した場合には削除処理を実行しない。この結果、データベースサーバ２００とキャッシュサーバ３００とを一致させることが可能である。
【０２４２】
また、実施例１によれば、キャッシュ制御システムでは、データベースサーバを監視する監視サーバ４００を更に備える。そして、監視サーバ４００は、監視結果に基づいて、データベースサーバ２００の状態が正常であるか否かを判定し、正常でないと判定したデータベースサーバ２００について、キャッシュサーバ３００との間におけるデータの送受信を閉塞する。この結果、正常でないデータベースサーバ２００がキャッシュサーバ３００に応答することを防止可能である。
【実施例２】
【０２４３】
［システム構成］
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については（図１〜図３３）、特記する場合を除いて任意に変更することができる。
【０２４４】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、データベースサーバ２００の配信情報ＤＢ２１３を外部装置として、ネットワーク経由で各データベースサーバ２００が接続して同一の配信情報ＤＢ２１３を共有しても良い。また、例えば、監視サーバ４００を用いなくても良い。
【０２４５】
［プログラム］
図３４は、キャッシュ制御システムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。図３４に例示するように、コンピュータ３０００は、例えば、メモリ３０１０と、ＣＰＵ（Central  Processing  Unit）３０２０と、ハードディスクドライブインタフェース３０３０と、ネットワークインタフェース３０７０とを有する。コンピュータ３０００の各部はバス３１００によって接続される。
【０２４６】
メモリ３０１０は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース３０３０は、図３４に例示するように、ハードディスクドライブ３０８０に接続される。
【０２４７】
ここで、図３４に例示するように、ハードディスクドライブ３０８０は、例えば、ＯＳ３０８１、アプリケーションプログラム３０８２、プログラムモジュール３０８３、プログラムデータ３０８４を記憶する。すなわち、開示の技術に係る更新プログラムは、コンピュータによって実行される指令が記述されたプログラムモジュール３０８３として、例えばハードディスクドライブ３０８０に記憶される。具体的には、上記実施例で説明した制御部２２０の各部や制御部３２０の各部、制御部４２０の各部と同様の情報処理を実行する手順各々が記述されたプログラムモジュールが、ハードディスクドライブ３０８０に記憶される。
【０２４８】
また、上記実施例で説明した記憶部２１０や記憶部３１０、記憶部４１０に記憶されるデータのように、キャッシュ制御システムによる情報処理にて用いられるデータは、プログラムデータ３０８４として、例えばハードディスクドライブ３０８０に記憶される。そして、ＣＰＵ３０２０が、ハードディスクドライブ３０８０に記憶されたプログラムモジュール３０８３やプログラムデータ３０８４を必要に応じてＲＡＭに読み出し、各種の手順を実行する。
【０２４９】
なお、キャッシュ制御システムを実行するプログラムに係るプログラムモジュール３０８３やプログラムデータ３０８４は、ハードディスクドライブ３０８０に記憶される場合に限られない。例えば、プログラムモジュール３０８３やプログラムデータ３０８４は、着脱可能な記憶媒体に記憶されても良い。この場合、ＣＰＵ３０２０は、ディスクドライブなどの着脱可能な記憶媒体を介してデータを読み出す。また、同様に、更新プログラムに係るプログラムモジュール３０８３やプログラムデータ３０８４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されても良い。この場合、ＣＰＵ３０２０は、ネットワークインタフェースを介して他のコンピュータにアクセスすることで各種データを読み出す。
【０２５０】
［その他］
なお、本実施例で説明したキャッシュ制御システムの制御プログラムは、インターネットなどのネットワークを介して配布することができる。また、制御プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【０２５１】
２００      データベースサーバ
２０１      通信制御Ｉ／Ｆ部
２１０      記憶部
２１１      ユーザ情報ＤＢ
２１２      ＩＲ情報ＤＢ
２１３      配信情報ＤＢ
２１４      装置情報ＤＢ
２２０      制御部
２２１      キャッシュ応答部
２２２      ＩＲ情報応答部
２２３      更新情報応答部
２２４      更新成否応答部
２２５      装置状態応答部
２２６      装置状態格納部
２２７      閉塞制御部
２２８      更新情報配信部
２２９      更新再伝播部
３００      キャッシュサーバ
３０１      通信制御Ｉ／Ｆ部
３１０      記憶部
３１１      キャッシュ
３１２      検索先状態ＤＢ
３１３      更新登録状態ＤＢ
３２０      制御部
３２１      キャッシュ判定部
３２２      ＩＲ情報判定部
３２３      応答処理部
４００      監視サーバ
４０１      通信制御Ｉ／Ｆ部
４１０      記憶部
４１１      装置情報ＤＢ
４２０      制御部
４２１      故障判定部
５００      クライアント端末
【図１】
0005265711.tif 000002
【図２】
0005265711.tif 000003
【図３】
0005265711.tif 000004
【図４】
0005265711.tif 000005
【図５】
0005265711.tif 000006
【図６】
0005265711.tif 000007
【図７】
0005265711.tif 000008
【図８】
0005265711.tif 000009
【図９】
0005265711.tif 000010
【図１０】
0005265711.tif 000011
【図１１】
0005265711.tif 000012
【図１２】
0005265711.tif 000013
【図１３】
0005265711.tif 000014
【図１４】
0005265711.tif 000015
【図１５】
0005265711.tif 000016
【図１６】
0005265711.tif 000017
【図１７】
0005265711.tif 000018
【図１８】
0005265711.tif 000019
【図１９】
0005265711.tif 000020
【図２０】
0005265711.tif 000021
【図２１】
0005265711.tif 000022
【図２２】
0005265711.tif 000023
【図２３】
0005265711.tif 000024
【図２４】
0005265711.tif 000025
【図２５】
0005265711.tif 000026
【図２６】
0005265711.tif 000027
【図２７】
0005265711.tif 000028
【図２８】
0005265711.tif 000029
【図２９】
0005265711.tif 000030
【図３０】
0005265711.tif 000031
【図３１】
0005265711.tif 000032
【図３２】
0005265711.tif 000033
【図３３】
0005265711.tif 000034
【図３４】
0005265711.tif 000035
【図３５】
0005265711.tif 000036
【図３６】
0005265711.tif 000037
【図３７】
0005265711.tif 000038
【図３８】
0005265711.tif 000039