JP5492146B2 - データベースシステム及び制御方法 - Google Patents

データベースシステム及び制御方法 Download PDF

Info

Publication number
JP5492146B2
JP5492146B2 JP2011131028A JP2011131028A JP5492146B2 JP 5492146 B2 JP5492146 B2 JP 5492146B2 JP 2011131028 A JP2011131028 A JP 2011131028A JP 2011131028 A JP2011131028 A JP 2011131028A JP 5492146 B2 JP5492146 B2 JP 5492146B2
Authority
JP
Japan
Prior art keywords
information
cache
data
combination
specific
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011131028A
Other languages
English (en)
Other versions
JP2013003637A (ja
Inventor
直樹 高田
高生 山下
拓也 南
充 瀬尾
恭之 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2011131028A priority Critical patent/JP5492146B2/ja
Publication of JP2013003637A publication Critical patent/JP2013003637A/ja
Application granted granted Critical
Publication of JP5492146B2 publication Critical patent/JP5492146B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベースシステム及び制御方法に関する。
レコードを複数蓄積したデータベースと、データベース応答を高速化するためのキャッシュを連携させる場合のキャッシュ検索技術がある。例えば、オープンハッシュ法によるデータ構造を用いる手法や、k−d木を用いる手法がある。なお、オープンハッシュ法は、外部ハッシュ法とも称される。
キャッシュ検索技術は、例えば、認証要求やネットワークを制御するためのデータ要求の処理において用いられる。
図27は、検索アルゴリズムを用いて目的となるレコードを抽出することになる場面の一例を示す図である。図27に示す例では、ネットワーク機器501が、ユーザ502からの要求に基づいて、ネットワーク機器503を特定したり、ユーザ502を認証したりする場合を例に示した。また、図27に示す例では、ネットワーク機器501が、ネットワーク機器503を特定したり、ユーザ502を認証したりする場合に、認証サーバ504や網制御サーバ505に問い合わせる場合を例に示した。図27に示す例では、認証サーバ504や網制御サーバ505がデータベースと接続され、レコードを抽出する場合を用いて説明する。
この場合、認証サーバ504や網制御サーバ505は、ネットワーク機器501によって送信される情報に基づいて、データベースからレコードを抽出することで、どのような認証を行うかを特定したり、どのような網制御を行うかを特定したりする。
以下では、レコードの抽出に用いられる情報を「サービス特定情報」とも記載する。「サービス特定情報」により提供されるサービスを「制御サービス」とも記載し、「制御サービス」の提供に用いられる情報を「制御サービスデータ」とも記載する。「サービス特定情報」は、一つ又は複数の「サービス特定情報要素」から構成され、サービス特定情報を構成するサービス特定情報要素が、N個あり、それぞれを、サービス特定情報要素(E1、E2、・・・EN)と記載する。
図27に示す例に当てはめると、例えば、ネットワーク機器501は、サービス特定情報を認証サーバ504や網制御サーバ505に送信する。ここで、認証サーバ504や網制御サーバ505は、ネットワーク機器501から受信したサービス特定情報に基づいて、データベースからレコードを抽出する。
なお、サービス特定情報要素を「特定情報」とも記載する。ここで、制御サービスには、全てのサービス特定情報要素により制御サービスデータが決定されるものもあれば、一部のサービス特定情報要素の集合により制御サービスデータが決定されるものもある。例えば、ネットワーク機器501によって送信されたサービス特定情報に含まれる複数の特定情報のうち、すべてが用いられる場合もあれば、一部が用いられる場合もある。
図28を用いて、オープンハッシュ法について簡単に示す。図28は、オープンハッシュ法の基本的なデータ構造の一例を示す図である。図28に示すように、オープンハッシュ法では、検索対象となるカラムをキーとして、このキーがB個の有限個のクラスに分割される。また、B個に分割したクラス各々に対して、0、1、・・・B−1の整数の番号をつける。更に、キーになり得るxに対して、0からB−1までの整数h(x)を与えるようなハッシュ関数hを用意する。h(x)がxの属するクラスを表す。ここで、h(x)は、xのハッシュ値とも称される。xは、バケットh(x)に属するとも称される。図28に示すように、同一のハッシュ値を持つキーを含むレコードは、言い換えると、同一のバケットに属するキーを含むレコードは、リストとして管理される。
図28に示すデータ構造を用いて、オープンハッシュ法におけるレコードの追加操作、削除操作、検索操作の一例を順に説明する。オープンハッシュ法における追加操作の一例について説明する。この場合、(1)追加対象のレコードのキーxのハッシュ値h(x)を計算し、バケットを特定する。そして、(2)特定されたバケットのリストを順に調査し、リストの最後まで同一のキーのレコードがリストに存在しない場合に、リストの最後に追加対象のレコードを連結する。言い換えると、追加対象となるレコードを追加する。
次に、オープンハッシュ法における検索操作の一例について説明する。この場合、(1)追加対象のレコードのキーxのハッシュ値h(x)を計算し、バケットを特定する。そして、(2)特定されたバケットのリストを順に調査し同一のキーであるかの判定を行う。その後、(3)同一のキーが存在すれば、検索対象のレコードと判定する。
続いて、オープンハッシュ法における削除操作の一例について説明する。この場合、(1)追加対象のレコードのキーxのハッシュ値h(x)を計算し、バケットを特定する。そして、(2)特定されたバケットのリストを順に調査し同一のキーであるかの判定を行う。その後、(3)同一のキーが存在すれば、リストから該当するキーのレコードを削除する。
図29を用いて、k−d木法について簡単に示す。図29は、k−d木を用いた方法のデータ構造の一例を示す図である。k−d木法では、k個のカラムが検証対象となる。以下では、検証対象となるk個のカラムを、それぞれ、c0、c1、・・・ck−1と記載する。図29には、kを3とした場合を例に示した。図29の丸に示すデータ構造にあるノードには、レコードが登録される。各ノードには、木のルートとなるノードからの深さに応じたディスクリミネータと呼ばれる値が割り当てられる。ルートであるノードAのディスクリミネータは、「0」である。また、ノードB、Cのディスクリミネータは、「1」である。ノードD、E、Fのディスクリミネータは、「2」である。更に、ノードGのディスクリミネータは、「0」である。この例のように、ルートとなるノードのディスクリミネータを「0」とし、深さに応じて一つずつk−1まで増加させ、その後、「0」に戻ることを繰り返しながら、ディスクリミネータをノードに割り当てる。
ここで、ディスクリミネータは、割り当てられているノードで比較すべきカラムを示す。例えば、ディスクリミネータが1のノードでは、カラムc1が比較対象となる。
以下では、ノードPのカラムciの値を、Ki(P)と記載する。また、各ノードPには、2つの子ノードが存在し、LOSON(P)及びHISON(P)と記載する。また、ノードPのディスクリミネータが「i」であるとき、LOSON(P)以下の任意のノードについて、カラムciの値が、Ki(P)よりも小さくなるようにノードを配置する。また、HISON(P)以下の任意のノードについて、カラムciの値が、Ki(P)よりも大きくなるようにノードを配置する。
図29に示すデータ構造を用いて、k−d木法におけるレコードの追加操作、完全一致検索、部分一致検索、削除の一例を順に説明する。なお、完全一致検索とは、全てのカラムの条件が指定された場合における検索を示し、部分一致検索とは、一部のカラムの条件が指定された場合における検索を示す。
k−d木を用いた方法における追加操作の一例について説明する。この場合、(1)追加対象のレコードをk−d木に組み込んだときのノードをノードPと表すものとして説明する。ここで、(2)ルートノードが存在しなければ、追加対象のレコードをルートノードとし、LOSON(P)とHISON(P)には、「空」を割り当て、終了する。一方、ルートノードが存在する場合は、ルートノードをノードQとして以下を実施する。具体的には、(3)全てのカラムciについて、Ki(P)とKi(Q)を比較し、全て同じ場合には、既に存在するため追加を行わない。(4)一方、Ki(P)<Ki(Q)ならば、LOSON(Q)をSON(Q)とし、Ki(P)>Ki(Q)ならば、HISON(Q)をSON(Q)とする。また、(5)SON(Q)が「空」であれば、SON(Q)にノードPを連結し、LOSON(P)とHISON(P)には、「空」を割り当て、終了する。SON(Q)が「空」でない場合、SON(Q)をQとして、上記の(3)を実行する。Ki(P)=Ki(Q)ならば、全てのカラムを繋げた値で、Ki(P)とKi(Q)を比較する。
k−d木を用いた方法における完全一致検索操作の一例について説明する。(1)検索対象のレコードをk−d木に組み込んだと仮定したときのノードをノードPと表すものとして説明する。ここで、(2)ルートノードが存在しない場合には、検索対象なしとして終了し、ルートノードが存在する場合には、ルートノードをノードQとして以下の処理を実行する。具体的には、(3)全てのカラムciについて、Ki(P)とKi(Q)を比較し、全て同じ場合は、Qに割り当てられたレコードを検索結果とする。(4)もし、Ki(P)<Ki(Q)となる場合には、LOSON(Q)をSON(Q)とし、Ki(P)>Ki(Q)となる場合には、HISON(Q)をSON(Q)とする。(5)その上で、SON(Q)が「空」であれば、検索対象なしとして終了する。また、SON(Q)が「空」でない場合、SON(Q)をQとして、上記の(3)を実行する。また、Ki(P)=Ki(Q)ならば、全てのカラムを繋げた値で、Ki(P)とKi(Q)を比較する。
k−d木を用いた方法における部分一致検索操作の一例について説明する。この場合、(1)検索対象のレコードをk−d木に組み込んだと仮定したときのノードをノードPと表すものとして説明する。ここで、(2)ルートノードが存在しない場合には、検索対象なしとして終了する。ルートノードが存在する場合は、ルートノードをノードQとして以下を実施する。具体的には、(3)検索条件となっている全てのカラムciについて、検索条件とKi(Q)を比較し、全て条件に合致すれば、Qを検索対象とし、以下を実施する。すなわち、(4)QのディスクリミネータがJであり、カラムcJが検索条件として指定されているとき、カラムcJの検索条件とKi(Q)を比較する。比較の結果、Ki(Q)が大きければ、LOSON(Q)について、(3)の処理を再帰的に実行する。比較の結果、Ki(Q)が小さければ、HISON(Q)について、(3)の処理を再帰的に実行する。カラムcJが検索条件として指定されていないとき、LOSON(Q)とHISON(Q)の双方について、(3)の処理を再帰的に実行する。ここで、(5)もし、Ki(P)<Ki(Q)ならば、LOSON(Q)をSON(Q)とし、Ki(P)>Ki(Q)ならば、HISON(Q)をSON(Q)とする。(6)SON(Q)が「空」であれば、検索対象なしとして終了する。SON(Q)が「空」でない場合、SON(Q)をQとして、上記の(3)を実行する。Ki(P)=Ki(Q)ならば、全てのカラムを繋げた値で、Ki(P)とKi(Q)を比較する。
k−d木を用いた方法における削除操作の一例について説明する。この場合、(1)削除対象のレコードを持つノードをノードPと表すものとして説明する。ここで、(2)ノードPについて、LOSON(P)とHISON(P)が共に、「空」の場合、ノードPを指し示している親ノードRのLOSON(R)又はHISON(R)を「空」とし、ノードPをk−d木から取り除く。そして、(3)ノードPについて、LOSON(P)とHISON(P)のうち少なくとも、一方が「空」でないの場合、ノードPのディスクリミネータをJとすると、LOSON(P)をルートとする部分木の中で、カラムcJの最も大きいノードをQとするか、HISON(P)をルートとする部分木の中で、カラムcJの最も小さいノードをQとし、ノードPをノードQで置き換える。Qは、同様に、k−d木の元の位置から取り除く。
なお、レコードを抽出する上で必要となる特定情報の集合が受信時点において不明である場合がある。図27に示す例では、認証サーバ504や網制御サーバ505は、ネットワーク機器501からサービス特定情報を受信した時点において、サービス特定情報に含まれる特定情報のうち、レコードを抽出する上で必要となるサービス特定情報要素の集合が不明である場合がある。更に、ネットワーク機器501についても、認証サーバ504や網制御サーバ505に制御サービスを送信する時点において、送信するサービス特定情報に含まれる特定情報のうち、レコードを抽出する上で必要となるサービス特定情報要素の集合不明である場合もある。
「データ構造とアルゴリズム」、A.V.エイホ、J.E.ホップクロフト、J.D.ウルマン著、大野義夫訳、培風館、1987年発行 「Multidimensional Binary Search Trees Used for Associative Searching」、J.L.Bentley著、Communications of the ACM、Vol. 18、No. 9、 pp. 509−517、September 1975年
ここで、データベースからレコードを抽出する上で必要となる特定情報の集合が不明である場合に、上述した従来の検索アルゴリズムを応用し、以下に説明する処理を実行することが考えられるが、適切に検索できないという課題がある。
なお、以下では、説明の便宜上、サービス特定情報要素に(E1、E2、E3)が含まれている場合を用いて説明する。また、E1に依存して、制御サービスデータの特定に必要なサービス特定情報要素の集合が、{E1}となるか、{E1, E2}となるか、{E1, E2, E3}となるかが決定される場合を用いて説明する。
例えば、上述した従来の検索アルゴリズムを用いた検索を2回行う2回手法が考えられる。この場合、制御サービスデータの特定に用いられるサービス特定情報要素の集合を示すテーブルが予め作成される。図30は、制御サービスデータの特定に用いられるサービス特定情報要素の集合を示すテーブルの一例を示す図である。図30に示す例では、E1が「ServiceName−001」である場合には、サービス特定情報要素の集合として{E1}が用いられることになる場合を示した。同様に、図30に示す例では、E1が「ServiceName−002」である場合には、サービス特定情報要素の集合として{E1, E2, E3}が用いられることになる場合を示した。
2回手法では、まず、予め作成したテーブルから、サービス特定情報要素の集合を検索する。その後、1回目の検索結果となるサービス特定情報要素の集合を一つのカラムとして2回目の検索を行うことで、制御サービスデータを特定する。図31−1〜図31−3は、2回目の検索にて用いられるサービス特定情報要素の組み合わせの一例を示す図である。図31−1〜図31−3は、それぞれ、サービス特定情報要素の集合が、{E1}{E1, E2}{E1, E2, E3}となる場合各々に対応する。なお、図31−1〜図31−3に示す例では、サービス特定情報要素の組み合わせに対応付けて、制御サービスデータの一例を併せて示した。
このように、2回手法を用いる場合には、検索アルゴリズムを2回実行することになり、検索性能が低下する。
また、公知の検索アルゴリズムによる検索において、サービス特定情報要素の組み合わせ全てをキーとして、全てのキーについて検索を行う全手法が考えられる。図32は、全手法においてキーとして用いられるサービス特定情報要素の組み合わせを示すテーブルの一例を示す図である。図32に示すテーブルの場合、E1が「ServiceName−001」となる場合には、E2やE3に関係なく同じ制御サービスデータとなることを踏まえ、E1の値に対応付けられた制御サービスデータは、E2とE3との組み合わせ全てについて、同じ値が登録される。図32に示す例では、E1として「ServiceName−001」を含むレコードが6つ登録され、6つのレコードの制御サービスデータがどれも「データ1」となる。なお、図32に示す例では、サービス特定情報要素の組み合わせに対応付けて、制御サービスデータの一例を併せて示した。全手法の場合、{E1, E2, E3}を一つのカラムとして検索が行われることで、制御サービスデータを特定する。
このように、全手法を用いる場合には、同じ制御サービスデータを有するレコードを複数登録されることになり、サーバのメモリまたはハードディスクなどのサーバの記憶域が浪費される。また、キャッシュ技術を用いて、制御サービスデータを格納して高速に処理する設計にした場合、キャッシュサーバのメモリに同じ制御サービスデータを持つレコードが複数登録されることになり、キャッシュサーバのメモリが重複した制御サービスデータにより浪費される結果、キャッシュサーバにキャッシュ可能なレコード数が減少し、少数の制御サービスデータによる処理しか受け持つことができなくなる。
また、全手法に対してk−d木を用いた手法を適用し、レコードを集約して完全一致と部分一致とを併用する集約手法も考えられる。図32を参照して説明すると、図32に示すテーブルにおいて、同じ制御サービスデータを持つレコードを一つに集約し、且つ、検索方法として、完全一致検索と部分一致検索とを併用することで、制御サービスデータを特定する手法が考えられる。
図33は、図32に示すテーブルにおいて、同じ制御サービスデータを持つレコードを一つに集約したテーブルの一例を示す図である。図32に示す例では、制御サービスデータ「データ1」を含むレコードが6であるのに対して、図33に示す例では、1つのレコードに集約されている。
集約手法では、全てのサービス特定情報要素の組み合わせについて、完全一致検索と部分一致検索とを行い、制御サービスデータの検索を行う。例えば、集約手法では、まず、{E1, E2, E3}を指定した完全一致検索を行い、レコードが検索できない場合は、{E1, E2}を指定して、部分一致検索を行い、更に、レコードが検索できない場合は、{E1}のみを指定した部分一致検索を行うことで、制御サービスデータを特定する。また、集約手法では、{E1}のみを指定してもレコードが検索できない場合には、該当レコードが存在しないと判断する。
このように、集約手法を用いる場合には、複数回の制御サービスデータの検索を行うことがあり、検索性能が低下する場合がある。また、集約手法を用いる場合には、部分一致検索を用いた場合、k−d木の中で、2つある検索経路のうち、HISON及びLOSONの双方を検索しなければならないことになり、検索のための処理負荷が増大し、検索性能が低下する。
開示の技術は、上述に鑑みてなされたものであって、適切に検索可能となるデータベースシステム及び制御方法を提供することを目的とする。
開示するデータベースシステムは、一つの態様において、データベースと、キャッシュサーバとを有する。データベースは、記憶部と、キャッシュ応答部とを有する。キャッシュサーバは、キャッシュと、判定部と、特定情報送信部と、格納部と、データ送信部とを有する。記憶部は、データごとに、該データを特定するための特定情報と、前記特定情報の複数の種類のうち該データを特定する際に用いられない種類である非特定種類を示す非特定種類情報との組み合わせを記憶する。キャッシュは、前記データベースに記憶された前記データの少なくとも一部について、前記特定情報と前記非特定種類情報との組み合わせと、複数種類の前記特定情報の組み合わせとのうち少なくとも一つと対応付けて記憶する。判定部は、データ要求を受信すると、該データ要求に含まれる複数種類の前記特定情報各々の組み合わせが前記キャッシュに記憶されているかを判定する。特定情報送信部は、前記判定部により記憶されていないと判定された場合に、前記データ要求に含まれる組み合わせを前記データベースに送信する。キャッシュ応答部は、前記特定情報送信部により送信された組み合わせである組み合わせを受信すると、受信した組み合わせである受信組み合わせに相当する前記記憶部に記憶された前記特定情報と前記非特定種類情報との組み合わせと、該特定情報と該非特定種類情報との組み合わせに対応付けられた前記データとを前記記憶部から取得し、前記キャッシュサーバに応答する。格納部は、前記キャッシュ応答部により送信された前記特定情報と前記非特定種類情報との組み合わせが前記キャッシュに記憶されている場合には、記憶されていた前記特定情報と前記非特定種類情報との組み合わせに対応付けられるデータと対応付けて、前記受信組み合わせを前記キャッシュに格納し、前記キャッシュに記憶されていない場合には、前記キャッシュ応答部により送信されたデータと対応付けて、前記キャッシュ応答部により送信された前記特定情報と前記非特定種類情報との組み合わせと、前記受信組み合わせとを前記キャッシュに格納する。データ送信部は、前記判定部により記憶されていると判定された場合には、前記キャッシュから前記データを取得して前記データ要求の送信元に送信し、前記判定部により記憶されていないと判定された場合には、前記キャッシュ応答部により送信された前記データを前記データ要求の送信元に送信する。
開示するデータベースシステムの一つの態様によれば、適切に検索可能となるという効果を奏する。
図1は、実施例1におけるデータベースシステムの全体像の一例を示す図である。 図2は、実施例1におけるデータベースサーバの構成の一例を示すブロック図である。 図3は、実施例1におけるユーザ情報DBに記憶された情報の一例を示す図である。 図4は、実施例1におけるIR情報DBに記憶された情報の一例を示す図である。 図5は、実施例1におけるキャッシュ応答部により用いられる応答データ判定表の一例を示す図である。 図6は、実施例1におけるキャッシュサーバの構成の一例を示す図である。 図7−1は、実施例1におけるキャッシュに記憶された情報の一例を示す図である。 図7−2は、実施例1におけるキャッシュに記憶された情報の一例を示す図である。 図7−3は、実施例1におけるキャッシュに記憶された情報の一例を示す図である。 図8−1は、実施例1におけるキャッシュ判定部によりレコードが追加された後のキャッシュに記憶された情報の一例を示す図である。 図8−2は、実施例1におけるキャッシュ判定部によりレコードが追加された後のキャッシュに記憶された情報の一例を示す図である。 図8−3は、実施例1におけるキャッシュ判定部によりレコードが追加された後のキャッシュに記憶された情報の一例を示す図である。 図9は、実施例1におけるデータベースサーバのキャッシュ応答処理による処理の流れの一例を示すフローチャートである。 図10は、実施例1におけるIR情報応答部による処理の流れの一例を示すフローチャートである。 図11は、実施例1におけるデータベースサーバのIR情報削除部による流れの一例を示すフローチャートである。 図12は、実施例1におけるデータベースサーバのユーザ情報更新部による処理の流れの一例を示すフローチャートである。 図13は、実施例1におけるキャッシュサーバのキャッシュ判定部による処理の流れの一例を示すフローチャートである。 図14は、実施例1におけるキャッシュ登録処理の流れの一例を示すフローチャートである。 図15は、実施例1におけるキャッシュ削除処理の流れの一例を示すフローチャートである。 図16は、実施例1におけるキャッシュサーバのIR情報判定部による処理の流れの一例を示すフローチャートである。 図17は、実施例1におけるキャッシュサーバの応答部による処理の流れの一例を示すフローチャートである。 図18−1は、実施例2におけるキャッシュに記憶された情報の一例を示す図である。 図18−2は、実施例2におけるキャッシュに記憶された情報の一例を示す図である。 図18−3は、実施例2におけるキャッシュに記憶された情報の一例を示す図である。 図19は、実施例2における事前に決定されているサービス特定要素の値の一覧の例である。 図20−1は、実施例2におけるキャッシュ判定部によるレコード登録処理後のキャッシュに記憶された情報の一例を示す図である。 図20−2は、実施例2におけるキャッシュ判定部によるレコード登録処理後のキャッシュに記憶された情報の一例を示す図である。 図20−3は、実施例2におけるキャッシュ判定部によるレコード登録処理後のキャッシュに記憶された情報の一例を示す図である。 図21は、実施例2におけるキャッシュ登録処理の一例を示すフローチャートである。 図22は、実施例3におけるユーザ情報DBに記憶された情報の一例を示す図である。 図23は、実施例3におけるIR情報DBに記憶された情報の一例を示す図である。 図24は、実施例3におけるデータベースサーバのキャッシュ応答部による処理の流れの一例を示すフローチャートである。 図25は、実施例3におけるキャッシュ削除処理の流れの一例を示すフローチャートである。 図26は、データベースシステムによる処理をプログラムにて実行するための制御プログラムによる情報処理が、コンピュータを用いて具体的に実現されることを示す図である。 図27は、検索アルゴリズムを用いて目的となるレコードを抽出することになる場面の一例を示す図である。 図28は、オープンハッシュ法の基本的なデータ構造の一例を示す図である。 図29は、k−d木を用いた方法のデータ構造の一例を示す図である。 図30は、制御サービスデータの特定に用いられるサービス特定情報要素の集合を示すテーブルの一例を示す図である。 図31−1は、2回目の検索にて用いられるサービス特定情報要素の組み合わせの一例を示す図である。 図31−2は、2回目の検索にて用いられるサービス特定情報要素の組み合わせの一例を示す図である。 図31−3は、2回目の検索にて用いられるサービス特定情報要素の組み合わせの一例を示す図である。 図32は、全手法においてキーとして用いられるサービス特定情報要素の組み合わせを示すテーブルの一例を示す図である。 図33は、図32に示すテーブルにおいて、同じ制御サービスデータを持つレコードを一つに集約したテーブルの一例を示す図である。
以下に、開示するデータベースシステム及び制御方法の実施例について、図面に基づいて詳細に説明する。なお、本実施例により開示する発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[実施例1における全体構成]
図1を用いて、実施例1におけるデータベースシステムの像を簡単に説明する。図1は、実施例1におけるデータベースシステムの全体像の一例を示す図である。図1に示すように、データベースシステムは、クライアント100と、データベースサーバ200と、キャッシュサーバ300とを有する。クライアント100と、データベースサーバ200と、キャッシュサーバ300とは、ネットワークを介して接続される。なお、図1に示す例では、クライアント100が1つあり、データベースサーバ200が1つあり、キャッシュサーバ300が2つある場合を示したが、これに限定されるものではなく、各装置は任意の数あって良い。
クライアント100は、キャッシュサーバ300又はデータベースサーバ200に格納されているデータを要求するデータ要求をキャッシュサーバ300に送信する。また、クライアント100は、キャッシュサーバ300又はキャッシュサーバ300からのデータ応答を受信する。その後、例えば、クライアント100は、データ応答に含まれるデータを用いて、各種サービスを実行する。クライアント100は、例えば、利用者により用いられる情報処理端末が該当する。
データベースサーバ200は、大容量の記憶部を有する。データベースサーバ200は、クライアント100により参照されるデータを記憶部に記憶する。具体的には、データベースサーバ200は、データごとに、データを特定するための特定情報と、特定情報の複数の種類のうちデータを特定する際に用いられない種類である非特定種類を示す非特定種類情報との組み合わせを記憶部に記憶する。
また、データベースサーバ200は、図1の(i)に示すように、データが更新されると、Invalidation Report技術を用い、データベース上で変更となった情報(IR情報)を生成する。なお、以下に説明するように、データベースサーバ200とキャッシュサーバ300とは、IR情報を用いて、データベースサーバ200に記憶された情報のうち更新された情報を共有する。ただし、これに限定されるものではなく、IR情報を用いるのではなく、任意の手法を用いてデータベースサーバ200とキャッシュサーバ300とが共有しても良い。
キャッシュサーバ300は、データベースサーバ200に記憶されたデータのうち、過去にキャッシュサーバ300が使用したデータをキャッシュ311に記憶する。具体的には、キャッシュサーバ300は、データベースサーバ200に記憶されたデータの少なくとも一部について、特定情報と非特定種類情報との組み合わせと、複数種類の特定情報の組み合わせとのうち少なくとも一つと対応付けてキャッシュ311に記憶する。キャッシュサーバ300は、過去に使用したデータをキャッシュ311に記憶して用いることで、高速なアクセスを実現する。
キャッシュサーバ300は、クライアント100からデータ要求を受信すると、データ要求により要求されたデータを自装置のキャッシュ311に記憶している場合には、図1の(4)に示すように、キャッシュ311に記憶されたデータをデータ応答として送信する。一方、キャッシュサーバ300は、データ要求により要求されたデータを自装置のキャッシュ311に記憶していない場合には、図1の(2)に示すように、データ検索要求をデータベースサーバ200に送信する。その後、キャッシュサーバ300は、図1の(3)に示すように、データ検索要求に対する応答となるデータ応答をデータベースサーバ200から受信することで、データ要求により要求されたデータをデータベースサーバ200から取得する。キャッシュサーバ300は、受信したデータを自装置のキャッシュ311に格納した上で、図1の(4)に示すように、クライアント100にデータ応答として送信する。
つまり、キャッシュサーバ300は、データ要求を受信すると、データ要求に含まれる複数種類の特定情報各々の組み合わせがキャッシュ311に記憶されているかを判定する。ここで、キャッシュサーバ300は、記憶されていないと判定した場合に、データ要求に含まれる組み合わせをデータベースサーバ200に送信する。その後、データベースサーバ200は、キャッシュサーバ300により送信された組み合わせである組み合わせを受信すると、受信した組み合わせである受信組み合わせに相当する特定情報と非特定種類情報との組み合わせと、特定情報と非特定種類情報との組み合わせに対応付けられたデータとを記憶部から取得し、キャッシュサーバ300に応答する。その後、キャッシュサーバ300は、データベースサーバ200により送信された特定情報と非特定種類情報との組み合わせがキャッシュ311に記憶されている場合には、記憶されていた特定情報と非特定種類情報との組み合わせに対応付けられるデータと対応付けて、受信組み合わせをキャッシュに格納する。また、キャッシュサーバ300は、キャッシュ311に記憶されていない場合には、データベースサーバ200により送信されたデータと対応付けて、データベースサーバ200により送信された特定情報と非特定種類情報との組み合わせと、受信組み合わせとをキャッシュ311に格納する。また、キャッシュサーバ300は、キャッシュ311に記憶されていると判定した場合には、キャッシュ311からデータを取得してデータ要求の送信元に送信し、キャッシュ311に記憶されていないと判定された場合には、データベースサーバ200により送信されたデータをデータ要求の送信元に送信する。
また、キャッシュサーバ300は、図1の(a)に示すように、IR情報を要求するIR情報要求をデータベースサーバ200に送信し、図1の(b)に示すように、IR情報要求に対する応答であるIR情報応答を受信する。すなわち、キャッシュサーバ300は、自装置に対するIR情報の有無を確認する。ここで、自装置に対するIR情報がある場合とは、データベースサーバ200に記憶されたデータが更新され、キャッシュサーバ300のキャッシュ311に記憶されたデータが過去のデータとなっていることを示す。キャッシュサーバ300は、IR情報がデータベースサーバ200に存在する場合には、自装置のキャッシュ311に記憶された過去のデータをクライアント100に送信しないよう、キャッシュ311に記憶されているデータを削除する。
また、キャッシュサーバ300は、IR情報が自装置のキャッシュ311に適用された場合には、図1の(c)に示すように、IR情報を削除する要求であるIR情報削除要求をデータベースサーバ200に送信する。その後、データベースサーバ200では、キャッシュサーバ300に適用されたIR情報が削除され、キャッシュサーバ300が、図1の(d)に示すように、IR情報削除要求に対する応答であるIR情報削除応答をデータベースサーバ200から受信する。
[実施例1におけるデータベースサーバの構成]
図2は、実施例1におけるデータベースサーバの構成の一例を示すブロック図である。図2に示すように、データベースサーバ200は、通信制御I/F部201と、記憶部210と、制御部220とを有する。
通信制御I/F部201は、制御部220と接続される。通信制御I/F部201は、キャッシュサーバ300との間でやりとりする各種情報に関する通信を制御する。具体的には、通信制御I/F部201は、制御部220による制御に基づき、データ要求やIR情報要求、IR情報削除要求をキャッシュサーバ300に送信する。また、通信制御I/F部201は、制御部220による制御に基づき、キャッシュ311応答やIR情報応答、IR情報削除応答をキャッシュサーバ300に送信する。
記憶部210は、制御部220と接続される。記憶部210は、制御部220による各種処理に用いるデータを記憶する。記憶部210は、例えば、RAM(Random Access Memory)やROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、又は、ハードディスクや光ディスクなどである。図2に示す例では、記憶部210は、ユーザ情報DB211と、IR情報DB212とを有する。
ユーザ情報DB211は、少なくとも1種類の特定情報により特定されるデータごとに、該データを特定するための特定情報と、複数ある特定情報の種類のうちデータを特定する際に用いられない種類である非特定種類を示す非特定種類情報との組み合わせを記憶する。例えば、ユーザ情報DB211は、データごとに、データを特定する際に用いられる特定情報種類に属する特定情報と、非特定種類情報との組み合わせを記憶する。
例えば、ユーザ情報DB211は、キー情報と属性値とを対応付けて記憶する。属性値とは、クライアント100により参照されるデータである。言い換えると、データ要求により要求される対象となるデータである。キー情報とは、属性値を一意に特定するための情報である。キー情報は、一つ又は複数の特定要素を含む。キー情報を「サービス特定情報」とも記載し、キー情報に含まれる要素各々を「サービス特定情報要素」や「特定情報」とも記載する。キー情報は、クライアント100により送信されるデータ要求に含まれる。なお、データ要求には、複数の種類の特定情報が含まれており、データ要求に含まれる特定情報の全てがキー情報として用いられない場合もある。言い換えると、データ要求には、データを特定する際に用いられない種類である非特定種類に属する特定情報が含まれる場合もある。
なお、データ要求に含まれるキー情報に、N個の要素が含まれる場合を例に用いて、属性値とキー情報との関係について簡単に説明する。属性値には、N個の要素のうちN個の要素全てによって特定される属性値もあれば、N個の要素のうち一部の要素により特定される属性値もある。
図3は、実施例1におけるユーザ情報DBに記憶された情報の一例を示す図である。図3に示すように、ユーザ情報DB211は、キー情報と属性値とを対応付けて記憶する。なお、図3に示す例では、キー情報に3つの要素が含まれる場合を示したが、これに限定されるものではなく、要素の数は任意であって良い。図3に示す例では、キー情報に含まれる3つの要素をそれぞれ「K1」「K2」「K3」と示した。なお、図3における「ANY」は、任意の要素に合致することを示す。言い換えると、非特定種類であることを示す。「ANY」を「ANY要素」「非特定種類情報」とも記載する。同様に、図3に示す例では、キー情報ごとに一つの属性値が対応付けられた場合を示したが、これに限定されるものではなく、属性値の数は任意であって良い。
図3に示す例では、ユーザ情報DB211は、K1「ServiceName−001」とK2「ANY」とK3「ANY」とを含むキー情報と、属性値「データ1」とを対応付けて記憶する。すなわち、ユーザ情報DB211は、キー情報が「ServiceName−001、UserType−001、AccountType−001」や、「ServiceName−001、UserType−002、AccountType−002」である場合には、属性値「データ1」が特定されることを記憶する。言い換えると、「ServiceName−001、UserType−001、AccountType−001」や、「ServiceName−001、UserType−002、AccountType−002」がキー情報に含まれるデータ要求がクライアント100により送信された場合には、クライアント100に属性値「データ1」が送信されることを記憶する。
また、図3に示す例では、ユーザ情報DB211は、K1「ServiceName−002」とK2「UserType−001」とK3「AccountType−001」とを含むキー情報と、属性値「データ100」とを対応付けて記憶する。言い換えると、ユーザ情報DB211は、「ANY」が含まれないキー情報に対応づけて属性値を記憶する。この場合、「ServiceName−002」と「UserType−001」と「AccountType−001」とをキー情報にデータ要求がクライアント100により送信された場合に、クライアント100に属性値「データ100」が送信されることを記憶する。
IR情報DB212は、IR情報を記憶する。具体的には、IR情報DB212は、IR情報の適用先となるキャッシュサーバ300を識別するキャッシュサーバ名と、更新された属性値を特定するキー情報とを含むIR情報を記憶する。
図4は、実施例1におけるIR情報DBに記憶された情報の一例を示す図である。図4に示すように、IR情報DB212は、キャッシュサーバ名「キャッシュサーバA」と、K1「ServiceName−001」とK2「ANY」とK3「ANY」とを含むキー情報とを含むIR情報を記憶する。すなわち、IR情報DB212は、K1「ServiceName−001」とK2「ANY」とK3「ANY」とにより特定される属性値が更新されたことを示し、キャッシュサーバAに適用されるIR情報を記憶する。
IR情報DB212に記憶されるIR情報は、ユーザ情報DB211が更新される際に格納され、キャッシュサーバ300に適用された後に削除される。
制御部220は、通信制御I/F部201及び記憶部210と接続される。制御部220は、OS(Operating System)などの制御プログラム、各種の処理手順などを規定したプログラム及び所要データなどを格納するための内部メモリを有し、種々の処理を制御する。制御部220は、例えば、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、CPU(Central Processing Unit)、MPU(Micro Processing Unit)などである。図2に示す例では、制御部220は、キャッシュ応答部221と、IR情報応答部222と、IR情報削除部223と、ユーザ情報更新部224とを有する。
キャッシュ応答部221は、キャッシュサーバ300からデータ検索要求を受信すると、データ検索要求に含まれるキー情報が、ユーザ情報DB211に記憶されているか否かを判定する。言い換えると、キャッシュ応答部221は、ユーザ情報DB211を検索することで、データ検索要求に含まれるキー情報と一致するレコードを検索結果として取得する。
例えば、キー情報にサービス特定情報要素(E1、E2、E3)が含まれる場合には、キャッシュ応答部221は、ユーザ情報DB211を検索することで、サービス特定情報要素(E1、E2、E3)に相当するキー情報を含むレコードを検索結果とする。
なお、ユーザ情報DB211は、特定情報として「ANY」を記憶する場合がある。この結果、サービス特定情報要素(E1、E2、E3)に相当するキー情報を含むレコードが複数ある場合がある。このことを踏まえ、キャッシュ応答部221は、複数のレコードのうち優先するレコードを決定するための判定表である応答データ判定表を生成し、生成した応答データ判定表と合致するレコード全てをユーザ情報DB211から検索した上で、最も優先度の高いレコードを一つ検索結果として選択する。
図5は、実施例1におけるキャッシュ応答部により用いられる応答データ判定表の一例を示す図である。図5に示す例では、サービス特定情報要素として、「K1」「K2」「K3」とがキー情報に含まれる場合を例に示した。言い換えると、例えば、ユーザ情報DB211に記憶されているデータのうち、「K1」「K2」「K3」をキー情報として含むレコードだけでなく、「K1」「K2」「ANY」をキー情報として含むレコードや、「K1」「ANY」「K3」をキー情報として含むレコード、「K1」「ANY」「ANY」をキー情報として含むレコードなどについても検索結果となる場合を例に示した。図5に示す例では、応答データ判定表に記憶されたサービス特定情報要素の組み合わせのうち検索結果となり得る組み合わせと、優先度とが対応付けられた表となる。図5に示す例では、優先度の数字が大きければ大きい程、優先して検索結果とする場合を示した。すなわち、図5に示す例では、「K1」「K2」「K3」をキー情報として含むレコードが検索結果となる場合には、かかるレコードが検索結果とされることを示す。次に、「K1」「K2」「ANY」をキー情報として含むレコードが検索結果となる場合には、かかるレコードが検索結果とされることを示す。
なお、図5に示す例では、キャッシュ応答部221が、応答データ判定表を用いて検索結果を一つ選択する場合を示したが、キャッシュ応答部221による処理はこれに限定されるものではなく、任意の手法を用いて良い。例えば、データ問い合わせ言語などで実現しても良い。
ここで、図3に示すユーザ情報DB211と図5に示す応答データ判定表とを用いて、詳細な一例を説明する。また、キャッシュサーバ300からのデータ検索要求に含まれるキー情報が、「ServiceName−003、UserType−001、AccounType−003」である場合を用いて説明する。この場合、キャッシュ応答部221は、図5の応答データ判定表を用いてユーザ情報DB211を検索することで、優先度「4」の「ServiceName−003、UserType−001、AccounType−003、データ105」を含むレコードと、優先度「3」の「ServiceName−003、UserType−001、ANY、データ10」を含むレコードとが得られる。ここで、図5に示す応答データ判定表では、優先度「4」は優先度「3」と比較して高優先として扱われることとなり、キャッシュ応答部221は、検索結果として、「ServiceName−003、UserType−001、AccounType−003、データ105」を含むレコードを選択する。
キャッシュ応答部221は、キャッシュサーバ300から受信したデータ検索要求に含まれるキー情報に相当するレコードをユーザ情報DB211が記憶している場合には、ユーザ情報DB211に記憶されたレコードを取得し、キャッシュサーバ300にデータ応答として送信する。例えば、キャッシュ応答部221は、検索結果となるレコードのキー情報と属性値とをユーザ情報DB211から取得し、データ応答をキャッシュサーバ300に送信する。また、キャッシュ応答部221は、キャッシュサーバ300から受信したデータ検索要求に含まれるキー情報を含むレコードをユーザ情報DB211が記憶していない場合には、「キー情報なし」をキャッシュサーバ300に応答する。
なお、キャッシュ応答部221により送信されるデータ応答に含まれるキー情報は、データ検索要求に含まれるキー情報とは異なるキー情報と同一とはならない場合がある。例えば、キャッシュ応答部221が、ユーザ情報DB211から「ANY」を含むレコードを検索結果として選択した場合には、データ検索要求に含まれるキー情報と同一とはならない。データ検索要求に含まれるキー情報には「ANY」は含まれないからである。このことを踏まえ、以下では、データ応答に含まれるキー情報に含まれる特定情報各々について、「部分特定情報要素」「D1」「D2」「D3」などと記載する。
上述したように、キャッシュ応答部221は、キャッシュサーバ300により送信されたデータ検索要求に含まれる特定情報の組み合わせを受信すると、受信した組み合わせである受信組み合わせに相当する特定情報と非特定種類情報との組み合わせと、特定情報と非特定種類情報との組み合わせに対応付けられたデータとをユーザ情報DB211から取得し、キャッシュサーバ300に応答する。より詳細には、キャッシュ応答部221は、キャッシュサーバ300により送信された受信組み合わせを受信すると、組み合わせに相当する特定情報と非特定種類情報との組み合わせ各々のうち一つを選択し、選択した特定情報と非特定種類情報との組み合わせと、選択した組み合わせに対応付けて記憶されたデータとを送信する。
IR情報応答部222は、キャッシュサーバ300からIR情報要求を受信すると、IR情報要求の送信元となるキャッシュサーバ300のキャッシュサーバ名を含むIR情報がIR情報DB212に記憶されているか否かを判定する。そして、IR情報応答部222は、IR情報DB212に記憶されていると判定した場合には、送信元となるキャッシュサーバ名を含む全てのIR情報から、キー情報を取得し、取得したキー情報を含むIR情報応答をキャッシュサーバ300に送信する。ここで、IR情報応答に含まれるキー情報は、ユーザ情報DB211において更新された属性値を特定するキー情報となる。また、IR情報応答部222は、IR情報DB212に記憶されていないと判定した場合には、「IR情報なし」をキャッシュサーバ300に応答する。
IR情報削除部223は、キャッシュサーバ300からIR情報削除要求を受信すると、IR情報削除要求の送信元となるキャッシュサーバ300のキャッシュサーバ名を含むIR情報をIR情報DB212から削除し、削除結果をキャッシュサーバ300に応答する。
ユーザ情報更新部224は、ユーザ情報DB211が更新されるごとに、更新されたレコードを示すキー情報と、データベースサーバ200に接続されたキャッシュサーバ300のキャッシュサーバ名とを含むIR情報を生成してIR情報DB212に格納する。ユーザ情報DB211が更新される場合とは、例えば、利用者によって、ユーザ情報DB211に記憶されたレコードが更新された場合や、ユーザ情報DB211に新たなレコードが追加された場合や、ユーザ情報DB211に記憶されたレコードが削除された場合などが該当する。
[実施例1におけるキャッシュサーバの構成]
図6は、実施例1におけるキャッシュサーバの構成の一例を示す図である。図6に示す例では、キャッシュサーバ300は、通信制御I/F部301と、記憶部310と、制御部320を有する。
通信制御I/F部301は、制御部320と接続される。通信制御I/F部301は、データベースサーバ200、クライアント100との間でやりとりする各種情報に関する通信を制御する。具体的には、通信制御I/F部301は、制御部320による制御に基づき、クライアント100からデータ要求を受信し、データ応答をクライアント100に送信する。また、通信制御I/F部301は、制御部320による制御に基づき、データベースサーバ200にデータ検索要求やIR情報要求、IR情報削除要求を送信しデータ応答やIR情報応答、IR情報削除応答を受信する。
記憶部310は、制御部320と接続される。記憶部310は、制御部320による各種処理に必要なデータ及びプログラムを格納する。記憶部310は、例えば、キャッシュ311が該当する。図6に示す例では、記憶部310は、キャッシュ311を有する。
キャッシュ311は、データベースサーバ200のユーザ情報DB211に記憶された情報のうち一部を記憶する。つまり、キャッシュ311は、データベースに記憶されたデータの少なくとも一部について、特定情報と非特定種類情報との組み合わせと、複数種類の特定情報の組み合わせとのうち少なくとも一つと対応付けて記憶する。具体的には、ユーザ情報DB211に記憶された情報のうち、キャッシュサーバ300により用いられたデータのキャッシュを記憶する。以下では、オープンハッシュ法によるデータ構造を例に説明する。
図7−1〜図7−3は、実施例1におけるキャッシュに記憶された情報の一例を示す図である。図7に示す例では、キャッシュ311が、ハッシュテーブルと、レコードテーブルと、属性情報テーブルとを有する場合を示した。図7−1〜図7−3は、ハッシュテーブルと、レコードテーブルと、属性情報テーブルとの一例を示す。それぞれ、図7−1〜図7−3に示すように、ハッシュテーブルと、レコードテーブルと、属性情報テーブルとは、「レコードID」と「属性情報ID」とによって連結される。言い換えると、図7−1〜図7−3に示す例では、キャッシュ311において、「レコードID」と「属性情報ID」とは、キャッシュ311に記憶されたデータを識別するためのデータとして用いられる。ただし、これに限定されるものではなく、任意の手法を用いて良く、例えば、レコードごとのメモリ上のアドレスなどを用いても良い。
図7−1に示す例では、ハッシュテーブルは、「ハッシュ値」と「レコードID」とを対応付けて記憶する。ここで、ハッシュテーブルに記憶されたハッシュ値は、キー情報を所定のハッシュ関数を用いて変換した値である。ハッシュテーブルに記憶されたレコードIDは、ハッシュテーブルとレコードテーブルとの連結に用いられる。図7−1に示す例では、ハッシュテーブルは、ハッシュ値「0」に対応付けてレコードID「0」を記憶する。また、同様に、ハッシュテーブルは、ハッシュ値「1」に対応付けてレコードID「1」を記憶する。
図7−2に示すように、レコードテーブルは、「レコードID」とキー情報と「属性情報ID」とを対応付けて記憶する。レコードテーブルに記憶されたレコードIDは、ハッシュテーブルに記憶されたレコードIDと対応する。「属性情報ID」は、レコードテーブルと属性情報テーブルとの連結に用いられる。図7−2に示す例では、レコードテーブルは、レコードID「0」と、K1「ServiceName−001」とK2「ANY」とK3「ANY」とを含むキー情報と、属性情報ID「0」とを対応付けて記憶する。
図7−3に示すように、属性情報テーブルは、「属性情報ID」と、「属性値」と、属性値の有効期限を示す「有効期限」と「参照元レコード一覧」とを対応付けて記憶する。ここで、「参照元レコード一覧」は、同一の属性情報IDに対応付けられたレコードテーブルに含まれるレコードのレコードIDの一覧を示す。参照元レコード一覧は、可変長配列のような、複数の要素を含むことのできる構造をとる。図7−3に示す例では、属性情報テーブルは、属性情報ID「0」と属性値「1」と有効期限「2011/1/1」と参照元レコード一覧「0、1」とを対応付けて記憶する。なお、有効期限は、例えば、キャッシュ311にレコードが追加される時点から一定期間後の期日が用いられる。ただし、これに限定されるものではなく、任意の期日を用いて良い。
なお、図7では、ハッシュテーブルの構造として、オープンハッシュ法を用いて記憶させる例を示したが、データ構造はこれに限るものではない。例えば、クローズドハッシュ法を用いても良い。また、図7に示す例では、キー情報が3個、属性値が1個の情報である場合を図示しているが、これに限定されるものではなく、任意の数の情報によって構成されても良い。
制御部320は、通信制御I/F部301及び記憶部310と接続される。制御部320は、OSなどの制御プログラム、各種の処理手順などを規定したプログラム及び所要データを格納するための内部メモリを有し、種々の処理を制御する。制御部320は、例えば、ASIC、FPGA、CPU、MPUなどである。また、図6に示す例では、制御部320は、キャッシュ判定部321と、IR情報判定部322と、応答処理部323とを有する。
キャッシュ判定部321は、クライアント100からデータ要求を受信すると、受信したデータ要求に含まれるサービス特定情報要素を取得し、取得したサービス特定情報要素をキー情報としてキャッシュ311を検索する。つまり、キャッシュ判定部321は、データ要求を受信すると、データ要求に含まれる複数種類の特定情報各々の組み合わせがキャッシュ311に記憶されているかを判定する。
また、キャッシュ判定部321は、判定結果に応じて、以下に説明する処理を実行する。具体的には、キャッシュ判定部321は、キャッシュ311に記憶されていないと判定した場合に、データ要求に含まれる組み合わせをデータベースサーバ200に送信する。その後、キャッシュ判定部321は、データベースサーバ200により送信された特定情報と非特定種類情報との組み合わせを受信する。ここで、キャッシュ判定部321は、データベースサーバ200により送信された特定情報と非特定種類情報との組み合わせがキャッシュ311に記憶されている場合には、記憶されていた特定情報と非特定種類情報との組み合わせに対応付けられるデータと対応付けて、受信組み合わせをキャッシュ311に格納する。一方、キャッシュ判定部321は、キャッシュに記憶されていない場合には、データベースサーバ200により送信されたデータと対応付けて、データベースサーバ200により送信された特定情報と非特定種類情報との組み合わせと、受信組み合わせとをキャッシュ311に格納する。
また、キャッシュ判定部321は、キャッシュ311に記憶されていると判定した場合には、キャッシュ311からデータを取得してデータ要求の送信元に送信する。また、キャッシュ判定部321は、キャッシュ311に記憶されていないと判定した場合には、データベースサーバ200により送信されたデータをデータ要求の送信元に送信する。なお、キャッシュ判定部321は、「判定部」や「特定情報送信部」、「格納部」「データ送信部」とも称する。
ここで、キャッシュ判定部321は、キャッシュ311の検索結果に応じて実行する一連の処理について、場合分けした上で、更に具体的に説明する。
以下では、まず、キャッシュ311にキー情報が記憶されていた場合における処理について説明する。次に、キャッシュ判定部321による処理のうち、キャッシュ311にキー情報が記憶されておらず、データベースサーバ200から属性情報を取得できた場合における処理について説明する。続いて、キャッシュ判定部321による処理のうち、キャッシュ311にキー情報が記憶されておらず、データベースサーバ200から属性情報を取得できなかった場合における処理について説明する。
キャッシュ判定部321による処理のうち、キャッシュ311にキー情報が記憶されていた場合における処理について説明する。この場合、キャッシュ判定部321は、キャッシュ311に記憶されていたキー情報に対応する属性値をキャッシュ311から取得し、データ応答をクライアント100に送信する。
なお、ここで、キャッシュ判定部321は、取得した属性値に対応付けられた有効期限が有効期限切れとなっている場合には、データ応答を実行することなく、該当するレコードを削除する処理を実行する。キャッシュ判定部321は、取得した属性値に対応付けられたキー情報全てをキャッシュ311から特定し、特定したキー情報と属性値とを削除する。例えば、キャッシュ判定部321は、属性情報ID「2」に対応付けられた参照元レコード一覧に含まれるレコードID「3」を取得し、取得したレコードIDを含むレコードをキャッシュ311のレコードテーブルから削除する。この場合、その後、後述するキャッシュ311にキー情報が記憶されていない場合の処理を行う。
図3と図7を用いて具体的に説明する。また、クライアント100から受信したデータ要求にK1「ServiceName−002」とK2「UserType−001」とK3「AccountType−002」とが含まれていた場合を用いて説明する。この場合、キャッシュ判定部321は、キー情報となる「ServiceName−002、UserType−001、AccountType−002」からハッシュ値を算出する。以下では、ハッシュ値「B−1」が算出されたものとして説明する。キャッシュ判定部321は、ハッシュ値「B−1」を用いてキャッシュ311のハッシュテーブルを検索することで、レコードID「3」を取得する。そして、キャッシュ判定部321は、レコードID「3」を用いてキャッシュ311のレコードテーブルを検索し、検索結果となるレコードに含まれるキー情報と、クライアント100からのデータ要求から取得したキー情報とを比較し、検索対象となるキー情報が既に記憶されていると判定する。その後、キャッシュ判定部321は、キャッシュ311のレコードテーブルに記憶されたレコードのうち、レコードID「3」を含むレコードから属性情報ID「2」を取得し、キャッシュ311の属性情報テーブルから属性情報ID「2」に対応付けられた属性値「データ101」を取得する。また、キャッシュ判定部321は、取得した属性値「データ101」を応答処理部323に出力する。
なお、ここで、キャッシュ判定部321は、属性情報ID「2」に対応付けられた有効期限が有効期限切れとなっていた場合には、キャッシュを削除する処理を実行する。その後、後述するキャッシュ311にキー情報が記憶されていない場合の処理を行う。
次に、キャッシュ判定部321による処理のうち、キャッシュ311にキー情報が記憶されておらず、データベースサーバ200から属性情報を取得できた場合における処理について説明する。すなわち、例えば、キャッシュ311にキー情報が記憶されていた場合における処理において説明したように、キャッシュ判定部321は、検索対象となるキー情報が既に記憶されていると判定する。この際、クライアント100からのデータ要求から取得したキー情報が記憶されていないと判定する場合が該当する。
この場合、キャッシュ判定部321は、データ要求から取得したキー情報を含むデータ検索要求をデータベースサーバ200に送信する。例えば、キャッシュ判定部321は、サービス特定情報要素(E1、E2、E3)を含むデータ検索要求をデータベースサーバ200に送信する。その後、キャッシュ判定部321は、データベースサーバ200から、データ検索結果として、部分特定情報要素(D1、D2、D3)と属性値とを含むデータ応答を受信する。
ここで、受信したデータ応答に含まれる部分特定情報要素(D1、D2、D3)が、自装置のキャッシュ311にキー情報として既に記憶されている場合について説明する。この場合、キャッシュ判定部321は、データ要求から取得したサービス特定情報要素(E1、E2、E3)を、部分特定情報要素(D1、D2、D3)に対応付けて既に記憶されていた属性値に対応付けてキャッシュ311に格納する。より詳細な一例をあげて説明すると、キャッシュ判定部321は、データ要求から取得したサービス特定情報要素(E1、E2、E3)をキー情報とし、部分特定情報要素(D1、D2、D3)に対応付けて既に記憶されていた属性値と、新たに付与したレコードIDとを含むレコードをキャッシュ311のレコードテーブルに格納する。また、キャッシュ判定部321は、新たに付与したレコードIDを、サービス特定情報要素(E1、E2、E3)から算出したハッシュ値に対応付けてハッシュテーブルに格納する。また、キャッシュ判定部321は、キャッシュ311の属性情報テーブルに記憶されたレコードのうち、部分特定情報要素(D1、D2、D3)に対応付けて既に記憶されていた属性値を含むレコードについて、「参照元レコード一覧」に、新たに付与したレコードIDを追加する。そして、キャッシュ判定部321は、部分特定情報要素(D1、D2、D3)に対応付けて既に記憶されていた属性値を応答処理部323に出力する。
図3と図7を用いて具体的に説明する。また、クライアント100から受信したデータ要求にK1「ServiceName−001」とK2「UserType−001」とK3「AccountType−002」とが含まれていた場合を用いて説明する。この場合、キャッシュ判定部321は、キー情報となるK1「ServiceName−001」とK2「UserType−001」とK3「AccountType−002」とからハッシュ値を算出する。以下では、ハッシュ値「2」が算出されたものとして説明する。今回の場合、キャッシュ311のハッシュテーブルは、ハッシュ値「2」に対応付けられたレコードIDを記憶していないため、キャッシュ判定部321は、K1「ServiceName−001」とK2「UserType−001」とK3「AccountType−002」とを含めた上でデータ検索要求をデータベースサーバ200に送信する。その後、例えば、キャッシュ判定部321は、データベースサーバ200から、部分特定情報要素(D1、D2、D3)として、「ServiceName−001、ANY、ANY」とを含み、属性値「データ1」とを含むデータ応答を受信する。その後、キャッシュ判定部321は、部分特定要素(D1、D2、D3)からハッシュ値をキー情報として、自装置のキャッシュ311のハッシュテーブルを検索する。ここで、キャッシュ判定部321は、レコードID「0」が得られた場合には、部分特定要素(D1、D2、D3)がキー情報として既に記憶されていると判定することとなる。この結果、キャッシュ判定部321は、例えば、レコードID「0」を用いて、キャッシュ311のレコードテーブルから属性情報ID「0」を取得する。そして、キャッシュ判定部321は、キャッシュ311のレコードテーブルに、新たに付与したレコードID「4」と、K1「ServiceName−001」とK2「UserType−001」とK3「AccountType−002」と、属性情報ID「0」とを含む新たなレコードをキャッシュ311のレコードテーブルに格納する。また、キャッシュ判定部321は、K1「ServiceName−001」とK2「UserType−001」とK3「AccountType−002」により算出されるハッシュ値が「2」である場合には、キャッシュ311のハッシュテーブルに対して、ハッシュ値「2」に対応付けてレコードID「4」を格納する。また、キャッシュ判定部321は、キャッシュ311の属性情報テーブルのうち、属性情報ID「0」を含むレコードの参照元レコード一覧にレコードID「4」を追加する。その後、キャッシュ判定部321は、属性情報ID「0」に対応付けられた属性値「データ1」を取得し、応答処理部323に出力する。
図8−1〜図8−3は、実施例1におけるキャッシュ判定部によりレコードが追加された後のキャッシュに記憶された情報の一例を示す図である。図8−1〜図8−3は、それぞれ、図7−1〜図7−3に対応する。なお、図8−1〜図8−3に示す例では、レコードID「4」に加えて、レコードID「5」「6」についても追加されている場合を示した。
なお、属性情報ID「2」に対応付けられた有効期限が有効期限切れとなっていた場合には、参照元レコード一覧に含まれるレコードID「0」「1」「3」に対応するレコードを、キャッシュ311のレコードテーブルやハッシュテーブルから削除し、属性情報ID「2」を含むレコードを属性情報テーブルから削除する。
ここで、受信したデータ応答に含まれる部分特定情報要素(D1、D2、D3)が、自装置のキャッシュ311にキー情報として既に記憶されていなかった場合について説明する。この場合、キャッシュ判定部321は、部分特定情報要素(D1、D2、D3)と、データベースサーバ200から取得した属性値を対応付けて、自装置のキャッシュ311に格納する。その後、キャッシュ判定部321は、部分特定情報要素(D1、D2、D3)に対応付けて格納した属性値を、サービス特定情報要素(E1、E2、E3)に対応させてキャッシュ311にレコードを格納し、属性値を応答処理部323に出力する。
図3と図8を用いて具体的に説明する。また、クライアント100から受信したデータ要求にK1「ServiceName−003」とK2「UserType−001」とK3「AccountType−001」とが含まれていた場合を用いて説明する。この場合、キャッシュ判定部321は、キー情報となるK1「ServiceName−003」とK2「UserType−001」とK3「AccountType−001」とからハッシュ値を算出する。以下では、ハッシュ値「3」が算出されたものとして説明する。今回の場合、キャッシュ311のハッシュテーブルは、ハッシュ値「3」に対応付けられたレコードIDを記憶していないため、キャッシュ判定部321は、K1「ServiceName−003」とK2「UserType−001」とK3「AccountType−001」とを含めた上でデータ検索要求をデータベースサーバ200に送信する。その後、例えば、キャッシュ判定部321は、データベースサーバ200から、部分特定情報要素(D1、D2、D3)として、「ServiceName−003、UserType−001、ANY」を含み、属性値「データ10」を含むデータ応答を受信する。その後、キャッシュ判定部321は、部分特定要素(D1、D2、D3)からハッシュ値をキー情報として、自装置のキャッシュ311のハッシュテーブルを検索する。ここで、キャッシュ判定部321は、レコードID「3」が得られない場合には、部分特定要素(D1、D2、D3)がキー情報として既に記憶されていないと判定することとなる。この結果、キャッシュ判定部321は、新たに付与した属性情報ID「3」と属性値「データ10」とを含むレコードをキャッシュ311の属性情報テーブルに格納する。また、キャッシュ判定部321は、キャッシュ311のレコードテーブルに対して、新たに付与したレコード「5」と、キー情報として部分特定情報要素(D1、D2、D3)「ServiceName−003、UserType−001、ANY」と、属性情報ID「3」とを含むレコードを新たに格納する。また、キャッシュ判定部321は、キャッシュ311のハッシュテーブルに対して、新たに格納したレコードID「5」をハッシュ値「4」に対応付けて格納する。その後、キャッシュ判定部321は、キャッシュ311のレコードテーブルに対して、新たに付与したレコード「5」と、データ要求に含まれるキー情報(K1、K2、K3)「ServiceName−003、UserType−001、AccountType−001」、属性情報ID「3」とを含むレコードを格納する。また、キャッシュ判定部321は、キャッシュ311のハッシュテーブルに対して、データ要求に含まれるキー情報(K1、K2、K3)から算出されたハッシュ値が「3」である場合には、ハッシュ値「3」に対応付けてレコードID「6」を対応付けて格納する。その後、キャッシュ判定部321は、属性情報ID「3」の属性情報から、属性値「データ10」を取得し、応答処理部323に出力する。
最後に、キャッシュ判定部321による処理のうち、キャッシュ311にキー情報が記憶されておらず、データベースサーバ200から属性情報を取得できなかった場合における処理について説明する。この場合、キャッシュ判定部321は、「データなし」をクライアント100に送信する。
IR情報判定部322は、データベースサーバ200にIR情報要求を送信する。例えば、IR情報判定部322は、定期的にIR情報要求を送信したり、任意のタイミングにてIR情報要求を送信したりする。また、IR情報判定部322は、IR情報要求に対するIR情報をデータベースサーバ200から受信することで、データベースサーバ200から、自キャッシュサーバ300向けのIR情報として、ユーザ情報DB211に記憶された属性値のうち更新された属性値を示す「キー情報(K1、K2、K3)」を取得する。
IR情報判定部322は、データベースサーバ200から受信したIR情報を用いて、キャッシュ311を更新する。つまり、IR情報判定部322は、キャッシュ311情報の最新化を行う。IR情報に含まれるキー情報が(K1、K2、K3)である場合を用いて説明する。IR情報判定部322は、IR情報の「キー情報(K1、K2、K3)」に基づき、自装置のキャッシュ311にキー情報(K1、K2、K3)と一致するキー情報が記憶されている場合には、自装置のキャッシュ311から「キー情報(K1、K2、K3)」と、「キー情報(K1、K2、K3)」に対応付けられた「属性値」とを削除する。つまり、IR情報判定部322は、後述するキャッシュ削除処理を実行したり、キャッシュ判定部321にキャッシュ削除処理を実行させたりする。
また、IR情報判定部322は、IR情報に基づいてキャッシュ311を更新すると、IR情報に含まれるキー情報を含むIR情報削除要求をデータベースサーバ200に送信することで、データベースサーバ200から受信したIR情報をデータベースサーバ200から削除する。
図8を用いて具体的に説明する。また、IR情報に含まれるキー情報(K1、K2、K3)が、「ServiceName−001、User Type−001、AccountType−001」である場合を用いて説明する。言い換えると、「ServiceName−001、User Type−001、AccountType−001」により特定される属性値が、更新されたか、新たに格納された場合を用いて説明する。この場合、例えば、IR情報判定部322は、最初に、キー情報からハッシュ値を算出する。以下では、ハッシュ値「1」が算出された場合を用いて説明する。IR情報判定部322は、ハッシュ値「1」に対応するレコードID「1」をキャッシュ311のハッシュテーブルから取得し、レコードID「1」に対応するレコードをキャッシュ311のレコードテーブルから取得する。そして、IR情報判定部322は、レコードID「1」を含むレコードをキャッシュ311のレコードテーブルから削除する。また、IR情報判定部322は、このタイミングにて、ハッシュテーブルからも、該当のレコードを削除するという動作を行う。また、IR情報判定部322は、取得したレコードID「1」を含むレコード内にある属性情報ID「0」を取得し、属性情報ID「0」を含むレコードをキャッシュ311の属性情報テーブルから取得し、参照元レコード一覧からレコードID「1」を削除する。ここで、上述した例では、属性情報テーブルから取得したレコードの参照元レコード一覧には、レコードID「0」「4」が残っており、IR情報判定部322は、属性情報テーブルから取得したレコードそのものは削除しない。ただし、IR情報判定部322は、参照元レコード一覧からレコードIDを削除することで、参照元レコードID一覧にレコードIDが存在しなくなる場合には、取得したレコードそのものを属性情報テーブルから削除する。また、IR情報判定部322は、データベースサーバ200に、キー情報として「ServiceName−001、User Type−001、AccountType−001」を含むIR情報削除要求を送信する。
ここで、キー情報(K1、K2、K3)にANY要素が含まれている場合について説明する。この場合、IR情報に含まれるキー情報により示される属性値に、複数のレコードが対応付けられていることがある。このことを踏まえ、IR情報判定部322は、削除対象の属性値の参照元レコード一覧を用いて、IR情報に含まれるキー情報により示される属性値を参照する全てのキー情報を削除する。
例えば、IR情報に含まれるキー情報(K1、K2、K3)が、「ServiceName−003、User Type−001、ANY」である場合を用いて説明する。言い換えると、「ServiceName−003、User Type−001、ANY」により特定される属性値が、更新されたか、新たに格納された場合を用いて説明する。この場合、IR情報判定部322は、最初に、キー情報からハッシュ値を算出する。以下では、ハッシュ値「4」が算出された場合を用いて説明する。IR情報判定部322は、ハッシュ値「4」に対応するレコードID「5」をキャッシュ311のハッシュテーブルから取得し、レコードID「5」に対応するレコードをキャッシュ311のレコードテーブルから取得する。そして、IR情報判定部322は、取得したレコードに含まれる属性情報ID「3」を取得し、属性情報ID「3」を含むレコードをキャッシュ311の属性情報テーブルから取得する。そして、IR情報判定部322は、属性情報テーブルから取得したレコードの参照元レコード一覧に含まれるレコードID「5」「6」のレコードを、キャッシュ311のレコードテーブルから削除する。また、IR情報判定部322は、このタイミングにて、ハッシュテーブルからも、該当のレコード(レコードID「5」「6」のレコード)を削除するという動作を行う。また、IR情報判定部322は、属性情報テーブルから、属性情報ID「3」のレコードを削除する。その後、IR情報判定部322は、データベースサーバ200に、キー情報として「ServiceName−003、User Type−001、ANY」を含むIR情報削除要求を送信する。
応答処理部323は、キャッシュ判定部321から受信した属性値をクライアント100に送信する。具体的には、応答処理部323は、キャッシュ判定部321から受信した属性値と、クライアント100から受信したデータ要求に含まれるキー情報とを含むデータ応答をクライアント100に送信する。なお、上述した説明では、応答処理部323が、クライアント100から受信したデータ要求に含まれるキー情報を含むデータ応答を送信する場合を例に示したが、これに限定されるものではなく、キー情報を含めなくても良い。
[データベースサーバのキャッシュ応答部による処理の流れ]
図9は、実施例1におけるデータベースサーバのキャッシュ応答処理による処理の流れの一例を示すフローチャートである。
図9に示すように、キャッシュ応答部221は、キャッシュサーバ300からデータ検索要求を受信すると(ステップS101)、受信したデータ検索要求から、キー情報K1〜KNを取得する(ステップS102)。
そして、キャッシュ応答部221は、キー情報から、応答データ判定表を得る(ステップS103)。具体的には、キャッシュ応答部221は、取得したキー情報をもとに、図5に示すような応答データ判定表を作成する。そして、キャッシュ応答部221は、ユーザ情報DB211から、応答データ判定表に合致するデータを全て取得する(ステップS104)。具体的には、キャッシュ応答部221は、応答データ判定表に記載されたキー情報と合致するデータが自装置内のユーザ情報DB211に存在するかを検索し、合致したデータ全てを取得する。
ここで、キャッシュ応答部221は、データが存在する場合には(ステップS105肯定)、検索結果のうち、応答データ判定表の最も優先度が高いデータをデータ応答とする(ステップS106)。具体的には、キャッシュ応答部221は、応答データ判定表の優先度が最も高いデータとなる属性値を検索結果として選択し、検索結果として属性値を選択した際に用いられた応答データ判定表のキー情報を部分特定情報要素(D1〜DN)として含むデータ応答であって、検索結果として取得した属性値を含むデータ応答をキャッシュサーバ300に送信する。一方、キャッシュ応答部221は、データが存在しない場合には(ステップS105否定)、キー情報なしを応答する(ステップS107)。つまり、キャッシュ応答部221は、データ検索要求に含まれるキー情報が自装置のユーザ情報DB211に存在しない旨を示すデータ応答をキャッシュサーバ300に送信する。
[データベースサーバのIR情報応答部による処理の流れ]
図10は、実施例1におけるIR情報応答部による処理の流れの一例を示すフローチャートである。
図10に示すように、IR情報応答部222は、キャッシュサーバ300からIR情報要求を受信すると(ステップS201)と、受信したIR情報要求から、要求元のキャッシュサーバ名を取得する(ステップS202)。つまり、IR情報応答部222は、IR情報要求の送信元となるキャッシュサーバ300のキャッシュサーバ名を取得する。
そして、IR情報応答部222は、自装置のIR情報DB212から、IR情報一覧を取得する(ステップS203)。つまり、IR情報応答部222は、取得したキャッシュサーバ名に対応するIR情報を全て取得する。
ここで、IR情報応答部222は、自装置のIR情報DB212に該当のデータが存在する場合には(ステップS204肯定)、つまり、取得したキャッシュサーバ名を含むIR情報がIR情報DB212に記憶されており、IR情報を取得した場合には、IR情報応答部222は、キャッシュサーバ名に対応するIR情報の一覧をIR情報応答としてキャッシュサーバ300に送信する(ステップS205)。言い換えると、IR情報応答部222は、IR情報要求の送信元となるキャッシュサーバ300に適用されるIR情報の一覧を送信する。一方、自装置のIR情報DB212に該当のデータが存在しない場合には(ステップS204否定)、IR情報応答部222は、「IR情報なし」を、キャッシュサーバ300に応答する(ステップS206)。つまり、IR情報がないことを示すIR情報応答をキャッシュサーバ300に送信する。
[データベースサーバのIR情報削除部による流れ]
図11は、実施例1におけるデータベースサーバのIR情報削除部による流れの一例を示すフローチャートである。
図11に示すように、IR情報削除部223は、キャッシュサーバ300からIR情報削除要求を受信すると(ステップS301)、受信したIR情報削除要求から、要求元キャッシュサーバ名と、削除対象となるキー情報(K1〜KN)を取得する(ステップS302)。
そして、IR情報削除部223は、自装置のIR情報DB212から、取得したキャッシュサーバ名とキー情報(K1〜KN)とに該当するレコードを削除する(ステップS303)。つまり、IR情報削除部223は、取得した「キャッシュサーバ名」及び「キー情報」に対応するIR情報がIR情報DB212に記憶されている場合には、IR情報DB212から該当のIR情報を削除する。そして、IR情報応答部222はIR削除応答をキャッシュサーバ300に送信する(ステップS304)。
[データベースサーバのユーザ情報更新部による処理]
図12は、実施例1におけるデータベースサーバのユーザ情報更新部による処理の流れの一例を示すフローチャートである。
図12に示すように、ユーザ情報更新部224は、登録対象データを受信すると(ステップS401)、受信した登録対象データから、対象データの操作(追加、更新、削除等)、操作対象となるレコードの「キー情報(K1〜KN)」及び「属性値」を取得する(ステップS402)。例えば、ユーザ情報更新部224は、利用者から登録対象データを受信する。なお、登録対象データには、例えば、操作内容を特定するための情報や、キー情報、属性値などが含まれる。
そして、ユーザ情報更新部224は、ユーザ情報DB211の「キー情報(K1〜KN)」のレコードを編集する(ステップS403)。具体的には、操作内容が「追加」である場合には、ユーザ情報更新部224は、登録対象データから取得した「キー情報」と「属性値」とを対応付けてユーザ情報DB211に格納する。また、操作内容が「更新」である場合には、ユーザ情報更新部224は、ユーザ情報DB211に記憶されたレコードのうち更新対象となるレコードの属性値を更新する。また、操作内容が「削除」である場合には、ユーザ情報更新部224は、登録対象データから取得したキー情報により特定されるレコードをユーザ情報DB211から削除する。
そして、ユーザ情報更新部224は、自装置に接続されるキャッシュサーバ名の一覧を取得する(ステップS404)。そして、ユーザ情報更新部224は、キャッシュサーバ名の一覧の先頭のキャッシュサーバ名を取得する(ステップS405)。そして、ユーザ情報更新部224は、IR情報DB212へ、ユーザ情報DB211へ格納した情報のキー情報部分を格納する(ステップS406)。つまり、ユーザ情報DB211は、取得したキャッシュサーバ名と、ユーザ情報DB211に対する操作対象となったレコードを特定するキー情報とを含むIR情報を生成し、IR情報DB212に格納する。例えば、ユーザ情報更新部224は、レコードを削除した場合には、削除されたレコードに含まれていたキー情報とキャッシュサーバ名とを含むIR情報を生成して格納する。
そして、ユーザ情報更新部224は、キャッシュサーバ名の一覧を全て処理したかを判定し、処理していない場合には(ステップS407否定)、キャッシュサーバ名の一覧から次のキャッシュサーバ名を取得し(ステップS408)、上述したステップS406に戻り、処理を繰り返す。一方、ユーザ情報更新部224は、キャッシュサーバ名の一覧を全て処理した場合には(ステップS407肯定)、処理を終了する。
[キャッシュサーバのキャッシュ判定部による処理の流れ]
図13は、実施例1におけるキャッシュサーバのキャッシュ判定部による処理の流れの一例を示すフローチャートである。
図13に示すように、キャッシュ判定部321は、クライアント100からデータ要求を受信すると(ステップS501)、受信したデータ要求からサービス特定情報要素(E1〜EN)を取得し、取得したサービス特定情報要素をキー情報として、キャッシュ311のハッシュテーブルを検索する(ステップS502)。例えば、キャッシュ判定部321は、データ要求から取得したサービス特定情報要素(E1〜EN)各々を事前に決定しておいた手法にて連結し、連結した値をxとして、ハッシュ関数h(x)の入力とする。そして、キャッシュ判定部321は、ハッシュ関数h(x)で計算されたハッシュ値を用いて、キャッシュ311のハッシュテーブルに記憶されたレコードを絞り込む。そして、キャッシュ判定部321は、絞り込んだレコードのリストにおいて、サービス特定要素(E1〜EN)と一致するキー情報(K1〜KN)を有するレコードを検索する。なお、キャッシュ判定部321は、「x」として、「E1〜EN」の連結を用いる場合を用いて説明したが、これに限定されるものではなく、任意の手法を用いて良い。例えば、キャッシュ判定部321は、「E1〜EN」に対する特定の演算により「x」を導出して用いても良く、「E1〜EN」までのN個の値をパラメータとする関数を、ハッシュ関数として用いても良い。
ここで、キャッシュ311のハッシュテーブルにキー情報として「E1〜EN」を持つレコードが存在しない場合には(ステップS503否定)、キャッシュ判定部321は、サービス特定情報要素(E1〜EN)をキー情報として含むデータ検索要求をデータベースサーバ200に送信する(ステップS504)。そして、キャッシュ判定部321は、データベースサーバ200から、データ検索要求に対するデータ応答として、部分特定情報要素(D1〜DN)と、属性値を受信する(ステップS505)。ここで、データベースサーバ200からのデータ応答が、検索結果なしの場合には(ステップS506否定)、キャッシュ判定部321は、キー情報なしとし(ステップS509)、応答処理部323に結果を出力する(ステップS514)。
一方、上述したステップS506に戻り、データベースサーバ200からの検索結果が検索結果ありの場合には(ステップS506肯定)、キャッシュ判定部321は、サービス特定情報要素(E1〜EN)、データベースサーバ200からのデータ応答に含まれる部分特定情報要素(D1〜DN)、データベースサーバ200からのデータ応答に含まれる属性値、有効期限情報として、事前に決定しておく有効期限情報計算方法の結果を用いて、キャッシュ登録処理を行う(ステップS507)。なお、キャッシュ登録処理の流れについては、図14を用いて後述する。
キャッシュ登録処理が完了すると、キャッシュ判定部321は、キャッシュ登録処理の結果としてキャッシュ311に登録されたレコードを取得し、取得したレコードに含まれる属性情報IDから属性情報を取得(ステップS508)し、属性情報から属性値を取得する(ステップS513)。つまり、キャッシュ判定部321は、取得したレコードに含まれる属性情報IDを含むレコードをキャッシュ311の属性情報テーブルから取得し、取得したレコードに含まれる属性値を取得する。そして、キャッシュ判定部321は、応答処理部323へ結果を出力する(ステップS514)。つまり、キャッシュ判定部321は、取得した属性値を応答処理部323に出力する。
また、上述したステップS503に戻り、キャッシュ311のハッシュテーブルにキー情報としてE1〜ENを持つレコードが存在する場合には(ステップS503肯定)、キャッシュ判定部321は、レコード内の属性情報IDから属性情報を取得し、属性情報から有効期限情報を取得する(ステップS510)。ここで、属性情報の有効期限が切れていない場合(ステップS511否定)、キャッシュ判定部321は、属性情報から属性値を取得(ステップS513)し、取得した属性値を用いて、応答処理部323へ属性値を出力する(ステップS514)。
また、上述したステップS511に戻り、属性情報の有効期限が切れていた場合には(ステップS511肯定)、キャッシュ判定部321は、サービス特定情報要素(E1〜EN)を、キー情報として、キャッシュ削除処理を行う(ステップS512)。なお、キャッシュ削除処理については、図15を用いて後述する。キャッシュ削除処理では、指定されたキー情報のレコードがキャッシュ311のハッシュテーブルに存在する場合、該当するレコードをハッシュテーブルから削除する。その後、キャッシュ判定部321は、キャッシュ削除処理が完了すると、ステップS504以降の処理を継続する。
[キャッシュ登録処理の流れ]
図14は、実施例1におけるキャッシュ登録処理の流れの一例を示すフローチャートである。
図14に示すように、キャッシュ判定部321は、サービス特定情報要素(E1〜EN)、部分特定情報要素(D1〜DN)、属性値、有効期限情報を取得する(ステップS601)。そして、キャッシュ判定部321は、部分特定情報要素(D1〜DN)をキー情報としてハッシュ値を算出し、キャッシュ311のハッシュテーブルを検索する(ステップS602)。
ここで、キャッシュ311のハッシュテーブルにレコードが存在しない場合には(ステップS603否定)、キャッシュ判定部321は、属性値、有効期限情報を用いて新たな属性情報を作成する(ステップS604)。例えば、キャッシュ判定部321は、取得した属性値と有効期限情報に加えて、新たに付与した属性情報IDを含むレコードをキャッシュ311の属性情報テーブルに格納する。そして、作成した属性情報の属性情報IDを取得(ステップS605)し、キャッシュ311のレコードテーブルに、新たなレコードIDを付与した上で、キー情報(D1〜DN)と作成した属性情報IDとを対応付けてレコードを追加するとともに、新たに付与したレコードIDをハッシュテーブルに追加する(ステップS606)。
具体的には、キャッシュ判定部321は、部分特定情報要素(D1〜DN)を、事前に決定しておいた方法を用いて連結し、連結した値をxとして、ハッシュ関数h(x)の入力とする。そして、キャッシュ判定部321は、ハッシュ関数h(x)で計算されたハッシュ値を用いて、ハッシュテーブルのレコードを絞り込み、絞り込んだレコードのリストに、レコードのキー情報としてD1〜DN、属性情報IDを設定したレコードを追加する。また、キャッシュ判定部321は、新たなレコードIDをハッシュテーブルに追加する。
そして、キャッシュ判定部321は、キャッシュ311のレコードテーブルに追加したレコードのレコードIDを取得し(ステップS607)、属性情報の参照元レコード一覧に、レコードIDを追加する(ステップS608)。つまり、キャッシュ判定部321は、上述したステップS604にて属性情報テーブルに格納したレコードの参照元レコード一覧に対して、上述したステップS606にてレコードテーブルに格納したレコードのレコードIDを追加する。
そして、キャッシュ判定部321は、ステップS601にて取得しているサービス特定情報要素(E1〜EN)と、部分特定情報要素(D1〜DN)の各要素をそれぞれ比較し、各要素が全て等しい場合には(ステップS613肯定)、ハッシュテーブルに新たに追加したレコードを返却(ステップS617)し、処理を終了する。
また、ステップS613に戻り、サービス特定情報要素(E1〜EN)と、部分特定情報要素(D1〜DN)の各要素が異なった場合には(ステップS613否定)、キャッシュ判定部321は、レコードテーブルに、新たにレコードIDを付与した上で、キー情報としてサービス特定情報要素(E1〜EN)と、属性情報IDとを対応付けてレコードを追加し、新たに付与したレコードIDをハッシュテーブルに追加する(ステップS614)。
そして、キャッシュ判定部321は、キャッシュ311のレコードテーブルに追加したレコードのレコードIDを取得し(ステップS615)、属性情報の参照元レコード一覧に、レコードIDを追加する(ステップS616)。その後、ハッシュテーブルに新たに追加したレコードを返却(ステップS617)し、処理を終了する。
また、ステップS603に戻り、レコードテーブルにレコードが存在する場合には(ステップS603肯定)、キャッシュ判定部321は、該当するレコード内の属性情報IDから、属性情報を取得し、属性情報に含まれる有効期限情報を取得する(ステップS609)。そして、キャッシュ判定部321は、属性情報の有効期限情報が、有効期限切れでない場合には(ステップS610否定)、該当するレコードの属性情報IDから、属性情報を取得し(ステップS611)、ステップS613以降の処理を継続する。
一方、ステップS610に戻り、属性情報の有効期限情報が有効期限切れであった場合には(ステップS610肯定)、部分特定情報要素(D1〜DN)をキー情報として、キャッシュ削除処理を行う。キャッシュ削除処理では、キャッシュ判定部321は、指定されたキー情報のレコードがハッシュテーブルに存在する場合、そのレコードをハッシュテーブルから削除する。その後、キャッシュ判定部321は、キャッシュ削除処理が完了すると、ステップS604以降の処理を継続する。
[キャッシュ削除処理の流れ]
図15には、実施例1におけるキャッシュ削除処理の流れの一例を示すフローチャートである。以下では、サービス特定情報要素(K1〜KN)をキー情報として、キャッシュ削除処理を行う場合を例に説明する。以下では、キャッシュ判定部321を例に説明するが、これに限定されるものではなく、IR情報判定部322が実行しても良い。
図15に示すように、キャッシュ判定部321は、削除対象を示すキー情報であるサービス特定情報要素(K1〜KN)を取得する(ステップS701)。そして、キャッシュ判定部321は、サービス特定情報要素(K1〜KN)をキー情報としてハッシュ値を算出し、キャッシュ311のハッシュテーブルを検索する(ステップS702)。そして、キャッシュ判定部321は、ハッシュテーブルにレコードが存在しない場合には(ステップS703否定)、削除対象のレコードは存在しないため、処理を終了する。
一方、ハッシュテーブルにレコードが存在する場合には(ステップS703肯定)、キャッシュ判定部321は、有効期限切れに基づく削除として呼び出されたものかを判定する(ステップS704)。ここで、有効期限切れによる削除ではない場合には(ステップS704否定)、キャッシュ判定部321は、キー情報K1〜KN対応するレコードの中に、ANY要素があるかを判定する(ステップS705)。ここで、キー情報K1〜KNにANY要素がない場合には(ステップS705否定)、キャッシュ判定部321は、キー情報K1〜KNに対応するレコードから属性情報IDを取得し(ステップS706)、属性情報IDで示される属性情報から、参照元レコード一覧を取得する(ステップS707)。つまり、キャッシュ判定部321は、属性情報IDを含むレコードを属性情報テーブルから取得し、取得したレコードに含まれる参照元レコード一覧を取得する。
そして、キャッシュ判定部321は、参照元レコード一覧からレコードを削除する(ステップS708)。つまり、キャッシュ判定部321は、参照元レコード一覧に存在するレコードIDから、キー情報K1〜KNに対応するレコードIDを削除する。ここで、ステップS708の結果、参照元レコード一覧が空のリストとなった場合には(ステップS709肯定)、キャッシュ判定部321は、参照元レコード一覧が空となった属性情報を削除する(ステップS710)。つまり、キャッシュ判定部321は、参照元レコード一覧が空となったレコードを属性情報テーブルから削除する。そして、キャッシュ判定部321は、キー情報K1〜KNを用いて、レコードテーブルからレコードを削除するとともに、ハッシュテーブルからレコードIDを削除する(ステップS711)。一方、ステップS709に戻り、参照元レコード一覧が空のリストとならなかった場合(ステップS709否定)、ステップS711からの処理を継続する。
次に、ステップS704に戻り、有効期限切れによる削除の場合(ステップS704肯定)、又は、ステップS705に戻り、キー情報の中にANY要素がある場合(ステップS705肯定)について説明する。なお、有効期限切れによる削除の場合とは、例えば、図13のステップS511において、有効期限切れであるとしてキャッシュ削除処理が実行される場合が該当する。
この場合、キャッシュ判定部321は、該当のレコードから属性情報IDを取得(ステップS712)し、属性情報IDで示される属性情報から参照元レコード一覧を取得する(ステップS713)。そして、キャッシュ判定部321は、参照元レコード一覧の最初のレコードIDを取得する(ステップS714)。その後、キャッシュ判定部321は、取得したレコードIDで示されるレコードをキャッシュ311のレコードテーブルから取得し、取得したレコードのキー情報がキー情報K1〜KNと合致する場合に取得したレコードをレコードテーブルから削除するとともに、ハッシュテーブルからレコードIDを削除する(ステップS715)。
そして、キャッシュ判定部321は、参照元レコード一覧の全てのレコードIDをハッシュテーブルから削除していない場合には(ステップS716否定)、参照元レコード一覧の次のレコードIDを取得し(ステップS717)、ステップS715の処理を継続する。
また、ステップS716に戻り、参照元レコードの全てのレコードIDで示されるレコードをハッシュテーブルから削除した場合には(ステップS716肯定)、キャッシュ判定部321は、属性情報を削除し(ステップS718)、処理を終了する。つまり、キャッシュ判定部321は、ステップS712にて取得した属性情報IDを含むレコードを属性情報テーブルから削除する。
[キャッシュサーバのIR情報判定部による処理の流れ]
図16は、実施例1におけるキャッシュサーバのIR情報判定部による処理の流れの一例を示すフローチャートである。
図16に示すように、IR情報判定部322は、定期的にデータベースサーバ200へIR情報要求を送信し(ステップS801)、データベースサーバ200からIR情報の一覧を受信する(ステップS802)。
そして、IR情報判定部322は、受信したIR情報一覧が存在する場合(ステップS803肯定)、つまり、データベースサーバ200からIR情報を受信したIR情報応答にIR情報が含まれている場合には、IR情報の一覧の先頭のIR情報を取得し(ステップS804)、IR情報から、キー情報K1〜KNを取得する(ステップS805)。そして、IR情報判定部322は、キー情報K1〜KNを用いて、図15で示されるキャッシュ削除処理を行い(ステップS806)、キャッシュ削除処理終了後、データベースサーバ200に該当のIR情報について、IR情報削除要求を送信する(ステップS807)。つまり、IR情報判定部322は、キャッシュサーバ300においてキー情報K1〜KNを含むレコードについて削除されたことを踏まえ、キャッシュサーバ300に適用済みとなったIR情報を削除する旨の指示をデータベースサーバ200に送信する。
その後、全てのIR情報を処理していない場合には(ステップS808否定)、IR情報判定部322は、IR情報の一覧から次のIR情報を取得し(ステップS809)、ステップS805からの処理を繰り返す。
一方、ステップS803に戻り、IR情報の一覧が存在しない場合には(ステップS803否定)、又は、ステップS808に戻り、全てのIR情報を処理した場合には(ステップS808肯定)、IR情報判定部322は、処理を終了する。
[キャッシュサーバの応答部による処理の流れ]
図17は、実施例1におけるキャッシュサーバの応答部による処理の流れの一例を示すフローチャートである。
図17に示すように、応答処理部323は、キャッシュ判定部321から指定された属性情報をクライアントへの応答として組み立てる(ステップS901)。つまり、応答処理部323は、キャッシュ判定部321から受信した属性値と、クライアント100から受信したデータ要求に含まれるキー情報とを含むデータ応答を生成したり、キー情報がないことを示すデータ応答を生成したりする。なお、上述した説明では、応答処理部323が、クライアント100から受信したデータ要求に含まれるキー情報を含むデータ応答を送信する場合を例に示したが、これに限定されるものではなく、キー情報を含めなくても良い。
そして、応答処理部323は、生成したデータ応答をクライアント100に送信し(ステップS902)、処理を終了する。
[実施例1による効果]
少なくとも1種類の特定情報により特定されるデータごとに、データを特定するための特定情報と、複数ある特定情報の種類のうちデータを特定する際に用いられない種類である非特定種類を示す非特定種類情報との組み合わせと対応付けて記憶する。また、キャッシュサーバ300は、データベースサーバ200に記憶されたデータの少なくとも一部について、特定情報と非特定種類情報との組み合わせと、複数種類の特定情報の組み合わせとのうち少なくとも一つと対応付けて記憶するキャッシュ311を有する。ここで、キャッシュサーバ300は、データ要求を受信すると、データ要求に含まれる複数種類の特定情報各々の組み合わせがキャッシュに記憶されているかを判定し、記憶されていないと判定した場合に、データ要求に含まれる組み合わせをデータベースサーバ200に送信する。また、データベースサーバ200は、キャッシュサーバ300により送信された組み合わせである組み合わせを受信すると、受信した組み合わせである受信組み合わせに相当する特定情報と非特定種類情報との組み合わせと、特定情報と非特定種類情報との組み合わせに対応付けられたデータとを記憶部から取得し、キャッシュサーバ300に応答する。また、キャッシュサーバ300は、データベースサーバ200により送信された特定情報と非特定種類情報との組み合わせがキャッシュ311に記憶されている場合には、記憶されていた特定情報と非特定種類情報との組み合わせに対応付けられるデータと対応付けて、受信組み合わせをキャッシュ311に格納する。また、データベースサーバ200は、キャッシュ311に記憶されていない場合には、データベースサーバ200により送信されたデータと対応付けて、データベースサーバ200により送信された特定情報と非特定種類情報との組み合わせと、受信組み合わせとをキャッシュ311に格納する。また、キャッシュサーバ300は、キャッシュ311に記憶されていると判定された場合には、キャッシュ311からデータを取得してデータ要求の送信元に送信し、記憶されていないと判定した場合には、データベースサーバ200により送信されたデータをデータ要求の送信元に送信する。この結果、適切に検索可能となる。
具体的には、ANY要素を有するデータ構造のデータベースサーバとキャッシュサーバとを組み合わせ可能となる。また、データベースサーバからデータを抽出する上で必要となる特定情報の集合が受信時点において不明である場合が想定される状況下においても、キャッシュの容量を節約することが可能であり、一度の検索で抽出できることで検索性能の低下を防止可能となる。
すなわち、例えば、キャッシュ311では、データが複数のキー情報と共有される結果、キャッシュ311の容量を節約することが可能となる。また、キャッシュサーバ300は、一度の検索において、キャッシュにデータが記憶されているか否かを判定可能となり、検索性能の低下を防止可能となる。
また、データベースサーバ200では、{E1,ANY,…ANY}という1レコードで複数のキー情報を表現可能となり、データベースサーバ200の記憶装置の消費を防止可能となる。また、キャッシュサーバ300では、複数の属性値が複数のキー情報と対応付けられる結果、メモリ等の記憶装置に冗長に持つことを防止可能となる。このように、実施例1によれば、属性値が複数のキー情報にて共有される結果、キャッシュ311の容量を節約可能となる。
また、上述したように、データ要求に含まれる複数種類の特定情報各々の組み合わせがキャッシュ311に記憶されているかの判定を、ハッシュ値を用いて実行することで、キャッシュ311に記憶されているかを迅速に判定可能となる。
また、データベースサーバ200は、データごとに、データを特定する際に用いられる特定情報種類に属する特定情報と、非特定種類情報との組み合わせを対応付けて記憶する。また、データベースサーバ200は、キャッシュサーバ300により送信された受信組み合わせを受信すると、組み合わせに相当する特定情報と非特定種類情報との組み合わせ各々のうち一つを選択し、選択した特定情報と非特定種類情報との組み合わせと、選択した組み合わせに対応付けて記憶されたデータとを送信する。この結果、データベースサーバ200が、ANY要素を含むレコードを記憶することで、記憶部にて使用される容量を節約することが可能となる。
実施例1に加えて、キャッシュサーバ300が、非特定種類情報を含む組み合わせと属性値とを受信した場合に、受信した属性値を、非特定種類情報に適用される可能性がある特定情報各々に特定種類情報を置き換えた組み合わせ各々と共有する場合について説明する。
すなわち、例えば、ANY要素を含む組み合わせをキャッシュサーバ300が受信すると、受信した組み合わせに含まれるANY要素を、ANY要素に適用される可能性がある特定情報各々に置き換えた組み合わせ各々を生成し、生成した組み合わせ各々についても、受信したデータと対応付けてキャッシュ311に格納しても良い。以下では、実施例1と異なる点について説明し、その他の点については適宜説明を省略する。
[実施例2におけるキャッシュサーバの構成]
実施例2におけるキャッシュサーバでは、キャッシュ判定部321b以外については、実施例1と同様であり、説明を省略する。
実施例2において、キャッシュ判定部321bは、クライアント100から受信したデータ要求から、サービス特定情報要素(E1、E2、E3)を取得し、これを、キー情報として、キャッシュ311に記憶される属性情報を検索する。キャッシュ判定部321bはキャッシュ311検索の結果に応じた処理を行い、応答を行う。
キャッシュ311にキー情報が記憶されておらず、データベースサーバ200から属性情報を取得できた場合における処理について説明する。すなわち、クライアント100からのデータ要求から取得したキー情報がキャッシュ311に記憶されていない場合について説明する。
この場合、キャッシュ判定部321bは、データ要求から取得したキー情報を含むデータ検索要求をデータベースサーバ200に送信する。例えば、キャッシュ判定部321は、サービス特定情報要素(E1、E2、E3)を含むデータ検索要求をデータベースサーバ200に送信する。その後、キャッシュ判定部321は、データベースサーバ200から、データ検索結果として、部分特定情報要素(D1、D2、D3)と属性値とを含むデータ応答を受信する。
ここで、キャッシュ判定部321bは、部分特定情報要素(D1、D2、D3)が、自装置のキャッシュ311に既に存在する場合には、事前にキャッシュ311上に展開されるべき、サービス特定情報要素(E1、E2、E3)と、部分特定情報要素(D1、D2、D3)の対応が取れていないと判断し、部分特定情報要素(D1、D2、D3)を用いてキャッシュ311を削除した上で、部分特定情報要素(D1、D2、D3)がキャッシュ311に既に存在しない場合における処理を実行する。なお、部分特定情報要素(D1、D2、D3)がキャッシュ311に既に存在しない場合における処理については後述する。
なお、実施例2の場合には、ANY要素が得られた場合には、ANY要素に適用される可能性のある特定情報の組み合わせ各々を生成し、受信した属性値と対応付けてキャッシュ311に予め登録しておくことになる。この結果、データベースサーバ200に問い合わせる際には、キャッシュ311に対応するレコードが何も記憶されていない場合となり、データベースサーバ200に問い合わせが行われない際には、キャッシュ311に対応するレコードがすべて記憶されている場合となる。このことを踏まえ、キャッシュ判定部321bは、問い合わせたにもかかわらず、データベースサーバ200から受信した部分特定情報要素(D1、D2、D3)が、自装置のキャッシュ311に既に存在する場合には、おかしいと判断し、キャッシュ311から削除した上で一連の処理を実行する。
図7を用いて具体的に説明する。データ要求から取得したキー情報(K1、K2、K3)が「ServiceName−001、UserType−001、AccountType−002」である場合を用いて説明する。キャッシュ判定部321bは、キー情報からハッシュ値を算出する。以下では、キャッシュ判定部321bにより算出されたハッシュ値が「2」である場合を用いて説明する。ここで、キャッシュ判定部321bは、キャッシュ311のハッシュテーブルには、ハッシュ値「2」に対応付けられたレコードIDが存在しないため、キー情報(K1、K2、K3)を含むデータ検索要求をデータベースサーバ200に送信する。例えば、キャッシュ判定部321bは、データベースサーバ200から、部分特定情報要素(D1、D2、D3)として、「ServiceName−001、ANY、ANY」とを含み、属性値「データ1」とを含むデータ応答を受信する。その後、キャッシュ判定部321は、部分特定要素(D1、D2、D3)をキー情報として、自装置のキャッシュ311のハッシュテーブルを検索する。ここで、キャッシュ判定部321は、レコードID「0」が得られた場合には、キャッシュ311のレコードテーブルからレコードID「0」に対応付けられる属性情報ID「0」を取得する。そして、キャッシュ判定部321bは、属性情報ID「0」を含むレコードを属性情報テーブルから取得し、取得したレコードの参照元レコード一覧に含まれるレコードID「0」「1」を取得し、レコードID「0」「1」を含むレコードをキャッシュ311のレコードテーブルから削除する。また、キャッシュ判定部321bは、属性情報ID「0」を含むレコードを属性情報テーブルから削除する。
キャッシュ311にキー情報が記憶されておらず、データベースサーバ200から受信したデータ応答に含まれる部分特定情報要素(D1、D2、D3)がキャッシュ311に存在しない場合における処理について説明する。以下では、データベースサーバ200からデータ応答を受信した後の処理について説明する。
キャッシュ判定部321bは、データベースサーバ200から受信した部分特定情報要素(D1、D2、D3)と、データベースサーバから取得した属性値とについて、キャッシュ登録処理を実行する。
また、キャッシュ判定部321bは、データベースサーバ200から受信した部分特定情報要素のうち、ANY要素となっているカラムを取得する。そして、キャッシュ判定部321bは、ANY要素が存在する各々のカラムの位置から、事前に決定されているANY要素に入る可能性があるサービス特定情報要素の値の一覧を取得する。そして、キャッシュ判定部321bは、カラム各々のサービス特定情報要素の値の一覧を組み合わせ、ANY要素を展開したサービス特定情報要素の一覧を算出する。その後、キャッシュ判定部321bは、既にキャッシュ311に格納した属性情報を、算出したサービス特定情報要素の一覧のそれぞれのサービス特定情報要素(E1、E2、E3)の組み合わせに対応させたレコードを登録する。すなわち、キャッシュ判定部321bは、算出したサービス特定情報要素の一覧各々と、データベースサーバ200から取得した属性値とについて、キャッシュ登録処理を実行する。また、この際、キャッシュ判定部321bは、キャッシュ311の属性情報テーブルの参照元レコード一覧に、算出したサービス特定情報要素の一覧各々に対応するレコードIDを追加する。その後、キャッシュ判定部321bは、データベースサーバ200から受信した属性値を応答処理部323に出力する。
図18−1〜図18−3を用いて具体的に説明する。図18−1〜図18−3は、実施例2におけるキャッシュに記憶された情報の一例を示す図である。図18−1〜図18−3に示す例では、キャッシュ311が、ハッシュテーブルと、レコードテーブルと、属性情報テーブルとを有する場合を示した。図18−1〜図18−3は、実施例2におけるハッシュテーブルと、レコードテーブルと、属性情報テーブルとの一例を示す。また、以下では、キャッシュ判定部321bが、クライアント100から受信したデータ要求にキー情報(K1、K2、K3)が「ServiceName−001、UserType−001、AccountType−001」が含まれていた場合を用いて説明する。また、以下では、キャッシュ判定部321bが、データベースサーバ200から、部分特定情報要素(D1、D2、D3)として、「ServiceName−001、ANY、ANY」を含み、属性値「データ1」を含むデータ応答を受信した場合を用いて説明する。
この場合、キャッシュ判定部321bは、データベースサーバ200からのデータ応答に含まれる部分特定要素(D1、D2、D3)をキー情報として、自装置のキャッシュ311を確認する。つまり、キャッシュ判定部321bは、部分特定要素(D1、D2、D3)からハッシュ値を算出し、算出したハッシュ値を用いてキャッシュ311のハッシュテーブルを検索する。以下では、算出されたハッシュ値が「0」であるものとして説明する。図18−1に示す例では、ハッシュテーブルのハッシュ値「0」にはレコードIDが存在しない。この場合、キャッシュ判定部321bは、新たに付与した属性情報ID「0」と属性値「データ1」とを含むレコードをキャッシュ311の属性情報テーブルに格納する。そして、キャッシュ判定部321bは、新たに付与したレコードID「0」と、キー情報として部分特定情報要素(D1、D2、D3)「ServiceName−001、ANY、ANY」と、属性情報ID「0」とを含むレコードをキャッシュ311のレコードテーブルに格納する。また、キャッシュ判定部321bは、属性情報ID「0」を含む属性情報テーブルに記憶されたレコードの参照元レコード一覧に対して、レコードID「0」を追加し、キャッシュ311のハッシュテーブルのハッシュ値「0」に対応付けてレコードID「0」を格納する。
また、キャッシュ判定部321bは、部分特定要素(D1、D2、D3)のうち、ANYとなっている要素である、D2、D3の要素の、事前に決定されているサービス特定要素の値の一覧をそれぞれ得る。図19は、実施例2における事前に決定されているサービス特定要素の値の一覧の例である。図19に示す例では、部分特定要素「D2」がANYであった場合には、「UserType−001」又は、「UserType−002」を取りうることを示し、D3がANYであった場合には、「AccountType−001」又は、「AccountType−002」を取りうることを示す。図19に示す一覧は、例えば、予め生成されたり、キャッシュ判定部321bにより適宜生成されたりする。ここで、キャッシュ判定部321bは、ANYとなっているカラムの全ての組み合わせをサービス特定要素の一覧として算出する。例えば、ANYではない要素(D1)の値である「ServiceName−001」と、図19により示されるD2及びD3のサービス特定要素の値の一覧から、以下に記載する組み合わせ各々を算出する。なお、図19に示す一覧は、データベースシステム一意の情報であり、キャッシュサーバ内に格納されている。
組み合わせ(1){ServiceName−001, UserType−001, AccountType−001},
組み合わせ(2){ServiceName−001, UserType−001, AccountType−002},
組み合わせ(3){ServiceName−001, UserType−002, AccountType−001},
組み合わせ(4){ServiceName−001, UserType−002, AccountType−002}
以下では、上述した組み合わせ(1)〜組み合わせ(4)から算出されるハッシュ値が、それぞれ「1」〜「4」であるものとして説明する。この場合、例えば、キャッシュ判定部321bは、キャッシュ311のレコードテーブルに対して、レコードID「1」と、キー情報として組み合わせ(1)と、属性情報ID「0」とを含むレコードを追加し、属性情報ID「0」を含む属性情報テーブルに格納されたレコードの参照元レコード一覧にレコードID「1」を追加し、ハッシュテーブルのハッシュ値「1」に対応付けてレコードID「1」を格納する。また、同様に、キャッシュ判定部321bは、他の組み合わせについても処理を実行する。図20−1〜図20−3は、実施例2におけるキャッシュ判定部によるレコード登録処理後のキャッシュに記憶された情報の一例を示す図である。図20−1〜図20−3は、それぞれ、キャッシュ311のハッシュテーブルと、レコードテーブルと、属性情報テーブルとに対応する。
[キャッシュ登録処理の流れ]
図21は、実施例2におけるキャッシュ登録処理の一例を示すフローチャートである。なお、図21に示す一連の処理のうち、S1001〜S1003、S1005〜S1010、S1019は、それぞれ、図14におけるステップS601〜S603、S604〜S608、S613、S617に対応する。以下では、図14に示す一連の処理と異なる点について説明し、同様の点については適宜省略する。
図21に示すように、キャッシュ判定部321bは、サービス特定情報要素(E1〜EN)、部分特定情報要素(D1〜DN)、属性値、有効期限情報を取得し(ステップS1001)。部分特定情報要素(D1〜DN)をキー情報としてキャッシュ311のハッシュテーブルを検索する(ステップS1002)。
ここで、キャッシュ311のハッシュテーブルにレコードが存在しない場合には(ステップS1003否定)、キャッシュ311のレコードテーブルや属性情報テーブルにレコードを格納する(ステップS1005〜S1009)。その後、キャッシュ判定部321bは、サービス特定情報要素(E1〜EN)と、部分特定情報要素(D1〜DN)の各要素をそれぞれ比較し、各要素が全て等しい場合には(ステップS1010肯定)、ハッシュテーブルに新たに追加したレコードを返却し(ステップS1019)、処理を終了する。
一方、ステップS1010に戻り、キャッシュ判定部321bは、サービス特定情報要素(E1〜EN)と、部分特定情報要素(D1〜DN)の各要素が異なった場合について説明する(ステップS1010否定)。キャッシュ判定部321bは、部分特定情報要素(D1〜DN)の中で、ANYとなっているカラムに対応したサービス特定情報要素の値の一覧を取得する(ステップS1011)。例えば、キャッシュ判定部321bは、予め生成された図19に示す表に基づいて、サービス特定情報要素の一覧を取得する。
そして、キャッシュ判定部321bは、ANY要素となっている全てのカラムのサービス特定情報要素の値の一覧と、非ANY要素となっているカラムのサービス特定情報をもとに、ANY要素が示す、サービス特定情報要素の全ての組み合わせの一覧を取得する(ステップS1012)。そして、キャッシュ判定部321bは、サービス特定情報要素の全ての組み合わせの一覧の最初のサービス特定情報要素を取得する(ステップS1013)。
そして、キャッシュ判定部321bは、キャッシュ311のハッシュテーブルに、キー情報としてサービス特定情報要素(E1〜EN)と、属性情報IDを対応付けてレコードを追加する(ステップS1014)。つまり、キャッシュ判定部321bは、取得した組み合わせをキー情報として含み、ステップS1005にて付与した属性情報IDを含み、新たに付与したレコードIDを含むレコードをキャッシュ311のレコードテーブルに格納する。
そして、キャッシュ判定部321bは、キャッシュ311のレコードテーブルに追加したレコードのレコードIDを取得し(ステップS1015)、属性情報の参照元レコード一覧に、レコードIDを追加する(ステップS1016)。
そして、サービス特定情報要素の全ての組み合わせの一覧を全て処理した場合には(ステップS1017肯定)、キャッシュ判定部321bは、ハッシュテーブルに新たに追加したサービス特定情報要素(E1〜EN)に対応したレコードを返却(ステップS1019)し、処理を終了する。一方、ステップS1017に戻り、サービス特定情報要素の全ての組み合わせの一覧を全て処理していない場合には(ステップS1017否定)、キャッシュ判定部321bは、サービス特定情報要素の全ての組み合わせの一覧から、次のサービス特定情報要素を取得し、ステップS1014以降を継続する(ステップS1018)。
ステップS1003に戻り、ハッシュテーブルにレコードが存在する場合(ステップS1003肯定)について説明する。この場合、キャッシュ判定部321bは、部分特定情報要素(D1〜DN)をキー情報として、キャッシュ削除処理を行う(ステップS1004)。なお、キャッシュ削除処理の流れは、実施例1と同様であり、説明を省略する。そして、キャッシュ削除処理が完了すると、キャッシュ判定部321bは、ステップS1005以降の処理を継続する。
[実施例2の効果]
上述したように、実施例2によれば、キャッシュサーバ300は、組み合わせに含まれる非特定種類情報を、非特定種類情報に適用される可能性がある特定情報各々に置き換えた組み合わせ各々を生成し、生成した組み合わせ各々についても、データベースサーバ200により送信されたデータと対応付けてキャッシュ311に格納しておく。この結果、その後、キャッシュサーバ300には、ANY要素に対応する特定情報の組み合わせ各々が予めキャッシュ311に格納されることになり、キャッシュ311のヒット率を向上することが可能となる。
実施例3では、データベースサーバ200のユーザ情報DB211cが、複数の要素からなるキー情報と属性値とに加えて、非特定要素情報を更に対応付けて記憶する。すなわち、以下では、データベースサーバ200が、データごとに、データが特定される複数種類の特定情報の組み合わせと、組み合わせに含まれる特定情報の種類に含まれる非特定種類を示す非特定種類情報との組み合わせを記憶する場合について説明する。以下では、実施例1と差分がある個所以外の点については、適宜省略する。
[実施例3におけるデータベースサーバの構成]
ユーザ情報DB211cは、複数の要素からなるキー情報と属性値とに加えて、非特定要素情報を更に対応付けて記憶する。つまり、ユーザ情報DB211cは、データごとに、データが特定される複数種類の特定情報の組み合わせと、組み合わせに含まれる特定情報の種類に含まれる非特定種類を示す非特定種類情報との組み合わせを記憶する。ここで、非特定要素情報とは、キー情報のうち、ANYとして扱われるサービス特定情報要素を示す情報である。
図22は、実施例3におけるユーザ情報DBに記憶された情報の一例を示す図である。図22に示す例では、ユーザ情報DB211cは、「キー情報(K1、K2、K3)」と、「非特定要素情報(K2、K3)」と、「属性値」とを対応付けて記憶する。図22に示す例では、非特定要素情報として、「K2」又は「K3」がANY要素か否かを記憶する場合を示したがこれに限定されるものではなく、任意の情報を用いて良い。
図22に示す例では、ユーザ情報DB211cは、キー情報「ServiceName−001、UserType−001、AccountType−001」と、非特定要素情報「K2:ANY」「K3:ANY」と、属性値「データ1」とを含むレコードを記憶する。すなわち、ユーザ情報DB211cは、サービス特定情報要素のうち、「UserType−001」と「AccountType−001」とについては、ANY要素であることを記憶する。つまり、ユーザ情報DB211cは、属性値「データ1」が、「ServiceName−001、ANY、ANY」と共有されることを記憶する。
また、ユーザ情報DB211cは、キー情報「ServiceName−002、UserType−001、AccountType−001」と属性値「データ100」とを含み、非特定要素情報にデータがないレコードを記憶する。すなわち、ユーザ情報DB211cは、属性値「データ100」が、「ServiceName−002、UserType−001、AccountType−001」以外のキー情報と共有されないことを記憶する。言い換えると、ユーザ情報DB211cは、非特定要素情報「ANY」がない場合には、属性値が共有されないことを示す。
IR情報DB212cは、IR情報を記憶する。図23は、実施例3におけるIR情報DBに記憶された情報の一例を示す図である。図23に示すように、IR情報DB212cは、「キャッシュサーバ名、キー情報(K1、K2、K3)」として、「キャッシュサーバA、ServiceName−001、UserType−001、AccountType−001」などを記録する。
キャッシュ応答部221cは、キャッシュサーバ300からデータ検索要求を受信すると、受信したデータ検索要求に含まれるサービス特定情報要素(E1、E2、E3)をキー情報として、キー情報がユーザ情報DB211cに記憶されているか否かを検索する。ここで、ユーザ情報DB211cには、上述したように、非特定要素情報を記憶している。このことを踏まえ、キャッシュ応答部221cは、データが存在する場合には、キー情報のうち、非特定要素情報がANYであるカラムの値をANY要素に置き換えた上で、置き換えた後のキー情報を部分特定情報要素として属性値とともにキャッシュサーバ300に送信する。
図22に示すユーザ情報DB211cを例に更に説明する。また、キャッシュサーバ300からのデータ検索要求に含まれるキー情報が、「ServiceName−001、UserType−001、AccounType−001」である場合を用いて説明する。この場合、キャッシュ応答部221cは、データ応答として、部分特定情報要素「ServiceName−001、ANY、ANY」と属性値「データ1」とを送信する。
つまり、キャッシュ応答部221cは、キャッシュサーバ300により送信された受信組み合わせを受信すると、組み合わせと一致する複数種類の特定情報の組み合わせと非特定種類情報との組み合わせを記憶部から取得し、取得した特定情報各々のうち取得した非特定種類情報により示される特定情報を非特定種類情報に置き換えた上で、置き換えた後の組み合わせと、組み合わせに対応付けて記憶されたデータとを送信する。
[実施例3におけるキャッシュサーバの構成]
IR情報判定部322cは、データベースサーバ200から受信したIR情報を用いて、キャッシュ311を更新する。例えば、受信したIR情報に「キー情報(K1、K2、K3)」が含まれる場合を用いて説明する。この場合、IR情報判定部322cは、受信したIR情報に含まれるキー情報と一致するキー情報が自装置のキャッシュ311に存在する場合には、該当する「キー情報(K1、K2、K3)」と、該当するキー情報に対応付けられた属性値を削除することで、キャッシュ311を最新化する。
ここで、IR情報判定部322cは、削除対象となる属性値に対応付けられた参照元レコード一覧を用いて、削除対象となる属性値を参照する全てのキー情報を削除する。そして、IR情報判定部322cは、キャッシュ311からレコードを削除した後、受信したIR情報に含まれる「キー情報」をもとに、データベースサーバ200からIR情報を削除する。つまり、IR情報判定部322cは、受信したIR情報に含まれるキー情報を含むIR情報削除要求をデータベースサーバ200に送信する。
図20を用いて具体的に説明する。IR情報に含まれるキー情報(K1、K2、K3)が、「ServiceName−001、User Type−001、AccountType−001」であった場合を用いて説明する。言い換えると、データベースサーバ200において、「ServiceName−001、User Type−001、AccountType−001」により示される属性値が更新された場合を用いて説明する。
この場合、IR情報判定部322cは、該当するキー情報は、任意のカラムが他のキー情報と共有されている可能性があるため、属性値を共有している全てのレコードを削除する。具体的には、IR情報判定部322cは、「ServiceName−001、User Type−001、AccountType−001」からハッシュ値を算出する。以下では、算出されたハッシュ値が「1」であるものとして説明する。この場合、IR情報判定部322cは、キャッシュ311のハッシュテーブルからハッシュ値「1」に対応付けられたレコードID「1」を取得し、レコードID「1」を含むレコードをレコードテーブルから取得する。そして、IR情報判定部322cは、取得したレコード内の属性情報ID「0」を取得し、属性情報ID「0」を含むレコードを属性情報テーブルから取得し、取得したレコードに含まれる参照元レコード一覧で示されるレコードID「0」「1」「4」を取得する。そして、IR情報判定部322cは、レコードID「0」「1」「4」を含むレコードをレコードテーブルから削除し、属性情報ID「0」を含むレコードを属性情報テーブルから削除する。そして、IR情報判定部322cは、データベースサーバ200に、「ServiceName−001、User Type−001、AccountType−001」をキー情報として含むIR情報削除要求を送信する。
[実施例3におけるデータベースサーバのキャッシュ応答部による処理の流れ]
図24は、実施例3におけるデータベースサーバのキャッシュ応答部による処理の流れの一例を示すフローチャートである。
図24に示すように、キャッシュ応答部221cは、クライアント100からデータ検索要求を受信すると(ステップS1101)、受信したデータ検索要求から、キー情報K1〜KNを取得する(ステップS1102)。
そして、キャッシュ応答部221cは、受信したキー情報を持つレコードが自装置内のユーザ情報DB211cに存在するかを検索し、合致したデータを取得する(ステップS1103)。ここで、キャッシュ応答部221cは、データが存在する場合には(ステップS1104肯定)、検索結果の非特定要素情報カラムを”ANY要素”に置き換えて、部分特定情報要素と属性値を応答する(ステップS1105)。つまり、キャッシュ応答部221cは、検索結果として得られたレコードに含まれるキー情報のうち、非特定要素情報「ANY」に対応する要素について、ANY要素に置き換えた上で、置き換えられた後のキー情報と属性値とを含むデータ応答をキャッシュサーバ300に送信する。
一方、ステップS1104に戻り、自装置内のユーザ情報DB211cにデータが存在しない場合には(ステップS1104否定)、キャッシュ応答部221cは、キー情報なしを応答する(ステップS1106)。
[実施例3におけるキャッシュ削除処理の流れ]
図25は、実施例3におけるキャッシュ削除処理の流れの一例を示すフローチャートである。
図25に示すように、IR情報判定部322cは、削除対象を示すキー情報であるサービス特定情報要素(K1〜KN)を取得する(ステップS1201)。そして、IR情報判定部322cは、取得したK1〜KNをキー情報としてハッシュ値を算出し、キャッシュ311のハッシュテーブルを検索する(ステップS1202)。
ここで、IR情報判定部322cは、ハッシュテーブルに、キー情報K1〜KNに該当するレコードが存在しない場合には(ステップS1203否定)、削除対象のレコードは存在しないため、処理を終了する。
一方、キー情報K1〜KNに対応するレコードが、自装置内のハッシュテーブルに存在する場合には(ステップS1203肯定)、IR情報判定部322cは、該当するレコードから属性情報IDを取得し(ステップS1204)、属性情報IDで示される属性情報から、参照元レコード一覧を取得する(ステップS1205)。そして、IR情報判定部322cは、参照元レコード一覧の最初のレコードIDを取得する(ステップS1206)。
そして、IR情報判定部322cは、取得したレコードIDで示されるレコードをレコードテーブルから削除するとともに、削除したレコードのレコードIDをハッシュテーブルから削除する(ステップS1207)。そして、IR情報判定部322cは、参照元レコード一覧の全てのレコードIDをハッシュテーブルから削除していない場合には(ステップS1208否定)、参照元レコード一覧の次のレコードIDを取得し(ステップS1209)、ステップS1207の処理を継続する。一方、ステップS1208に戻り、参照元レコードの全てのレコードIDで示されるレコードをハッシュテーブルから削除した場合には(ステップS1208肯定)、属性情報テーブルから取得したレコードを削除し(ステップS1210)、処理を終了する。
[実施例3の効果]
上述したように、実施例3によれば、データベースサーバ200は、データごとに、データが特定される複数種類の特定情報の組み合わせと、組み合わせに含まれる特定情報の種類に含まれる非特定種類を示す非特定種類情報との組み合わせを記憶する。また、データベースサーバ200は、特定情報送信部により送信された受信組み合わせを受信すると、組み合わせと一致する複数種類の特定情報の組み合わせと非特定種類情報との組み合わせを記憶部から取得し、取得した特定情報各々のうち取得した非特定種類情報により示される特定情報を非特定種類情報に置き換えた上で、置き換えた後の組み合わせと、組み合わせに対応付けて記憶されたデータとを送信する。この結果、データベースサーバ200における検索処理を迅速に実行可能となる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例を示す。
例えば、上述した実施例3において、キャッシュサーバ300が、非特定種類情報を含む組み合わせを受信した場合に、特定情報に含まれる非特定種類情報に適用される可能性がある特定情報各々に特定種類情報を置き換えた組み合わせ各々をデータベースに送信しても良い。
[システム構成]
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については(図1〜図25)、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、キャッシュサーバ300とデータベースサーバ200との一部を統合しても良い。
[プログラム]
図26は、データベースシステムによる処理をプログラムにて実行するための制御プログラムによる情報処理が、コンピュータを用いて具体的に実現されることを示す図である。図26に例示するように、コンピュータ3000は、例えば、メモリ3010と、CPU(Central Processing Unit)3020とを有する。コンピュータ3000の各部はバス3100によって接続される。
メモリ3010は、図26に例示するように、ROM3011及びRAM3012を含む。ROM3011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。
ここで、図26に例示するように、ハードディスクドライブ3080は、例えば、OS3081、アプリケーションプログラム3082、プログラムモジュール3083、プログラムデータ3084を記憶する。すなわち、開示の技術に係る制御プログラムは、コンピュータによって実行される指令が記述されたプログラムモジュール3083として、例えばハードディスクドライブ3080に記憶される。具体的には、上記実施例で説明した制御部220や制御部320と同様の情報処理を実行する手順各々が記述されたプログラムモジュールが、ハードディスクドライブ3080に記憶される。
また、上記実施例で説明した記憶部210や記憶部310に記憶されるデータのように、制御プログラムによる情報処理に用いられるデータは、プログラムデータ3084として、例えばハードディスクドライブ3080に記憶される。そして、CPU3020が、ハードディスクドライブ3080に記憶されたプログラムモジュール3083やプログラムデータ3084を必要に応じてRAM3012に読み出し、各種の手順を実行する。
なお、制御プログラムに係るプログラムモジュール3083やプログラムデータ3084は、ハードディスクドライブ3080に記憶される場合に限られない。例えば、プログラムモジュール3083やプログラムデータ3084は、着脱可能な記憶媒体に記憶されても良い。この場合、CPU3020は、ディスクドライブなどの着脱可能な記憶媒体を介してデータを読み出す。また、同様に、制御プログラムに係るプログラムモジュール3083やプログラムデータ3084は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されても良い。この場合、CPU3020は、ネットワークインタフェース3070を介して他のコンピュータにアクセスすることで各種データを読み出す。
[その他]
なお、本実施例で説明した制御プログラムは、インターネットなどのネットワークを介して配布することができる。また、制御プログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
100 クライアント
200 データベースサーバ
201 通信制御I/F部
210 記憶部
211 ユーザ情報DB
212 IR情報DB
220 制御部
221 キャッシュ応答部
222 IR情報応答部
223 IR情報削除部
224 ユーザ情報更新部
300 キャッシュサーバ
301 通信制御I/F部
310 記憶部
311 キャッシュ
320 制御部
321 キャッシュ判定部
322 IR情報判定部
323 応答処理部
501 ネットワーク機器
502 ユーザ
503 ネットワーク機器
504 認証サーバ
505 網制御サーバ

Claims (5)

  1. データごとに、該データを特定するための特定情報と、前記特定情報の複数の種類のうち該データを特定する際に用いられない種類である非特定種類を示す非特定種類情報との組み合わせを記憶する記憶部を有するデータベースと、
    前記記憶部に記憶された前記データの少なくとも一部について、前記特定情報と前記非特定種類情報との組み合わせと、複数種類の前記特定情報の組み合わせとのうち少なくとも一つを対応付けて記憶するキャッシュを有するキャッシュサーバとを有し、
    前記キャッシュサーバは、
    データ要求を受信すると、該データ要求に含まれる複数種類の前記特定情報各々の組み合わせが前記キャッシュに記憶されているかを判定する判定部と、
    前記判定部により記憶されていないと判定された場合に、前記データ要求に含まれる組み合わせを前記データベースに送信する特定情報送信部とを有し、
    前記データベースは、
    前記特定情報送信部により送信された組み合わせを受信すると、受信した組み合わせである受信組み合わせに相当する前記特定情報と前記非特定種類情報との組み合わせと、該特定情報と該非特定種類情報との組み合わせに対応付けられた前記データとを前記記憶部から取得し、前記キャッシュサーバに送信するキャッシュ応答部を有し、
    前記キャッシュサーバは、
    前記キャッシュ応答部により送信された前記特定情報と前記非特定種類情報との組み合わせが前記キャッシュに記憶されている場合には、記憶されていた前記特定情報と前記非特定種類情報との組み合わせに対応付けられるデータと対応付けて、前記受信組み合わせを前記キャッシュに格納し、前記キャッシュに記憶されていない場合には、前記キャッシュ応答部により送信されたデータと対応付けて、前記キャッシュ応答部により送信された前記特定情報と前記非特定種類情報との組み合わせと、前記受信組み合わせとを前記キャッシュに格納する格納部と、
    前記判定部により記憶されていると判定された場合には、前記キャッシュから前記データを取得して前記データ要求の送信元に送信し、前記判定部により記憶されていないと判定された場合には、前記キャッシュ応答部により送信された前記データを前記データ要求の送信元に送信するデータ送信部と
    を有することを特徴とするデータベースシステム。
  2. 前記データベースの前記記憶部は、前記データごとに、該データを特定する際に用いられる特定情報種類に属する前記特定情報と、前記非特定種類情報との組み合わせを対応付けて記憶し、
    前記キャッシュ応答部は、前記特定情報送信部により送信された前記受信組み合わせを受信すると、該組み合わせに相当する前記特定情報と前記非特定種類情報との組み合わせの一つを選択し、選択した前記特定情報と前記非特定種類情報との組み合わせと、選択した該組み合わせに対応付けて記憶された前記データとを送信することを特徴とする請求項1に記載のデータベースシステム。
  3. 前記データベースの前記記憶部は、前記データごとに、該データが特定される複数種類の前記特定情報の組み合わせと、該組み合わせに含まれる特定情報の種類のうち非特定種類となる特定情報を示す非特定種類情報との組み合わせを記憶し、
    前記キャッシュ応答部は、前記特定情報送信部により送信された前記受信組み合わせを受信すると、該組み合わせと一致する前記特定情報の組み合わせと前記非特定種類情報との組み合わせを前記記憶部から取得し、取得した該特定情報各々のうち取得した該非特定種類情報により示される特定情報を該非特定種類情報に置き換えた上で、置き換えた後の該組み合わせと、該組み合わせに対応付けて記憶された前記データとを送信することを特徴とする請求項1に記載のデータベースシステム。
  4. 前記格納部は、前記キャッシュ応答部により送信された前記組み合わせに含まれる前記非特定種類情報を、該非特定種類情報に適用される可能性がある特定情報各々に置き換えた組み合わせ各々を生成し、生成した組み合わせ各々についても、該キャッシュ応答部により送信されたデータと対応付けて前記キャッシュに格納することを特徴とする請求項1〜3のいずれか一つに記載のデータベースシステム。
  5. データごとに、該データを特定するための特定情報と、前記特定情報の複数の種類のうち該データを特定する際に用いられない種類である非特定種類を示す非特定種類情報との組み合わせを記憶する記憶部を有するデータベースと、
    前記データベースに記憶された前記データの少なくとも一部について、前記特定情報と前記非特定種類情報との組み合わせと、複数種類の前記特定情報の組み合わせとのうち少なくとも一つを対応付けて記憶するキャッシュを有するキャッシュサーバとを有するデータベースシステムで実行される制御方法であって、
    前記キャッシュサーバが、データ要求を受信すると、該データ要求に含まれる複数種類の前記特定情報各々の組み合わせが前記キャッシュに記憶されているかを判定する判定工程と、
    前記キャッシュサーバが、前記判定工程により記憶されていないと判定された場合に、前記データ要求に含まれる組み合わせを前記データベースに送信する特定情報送信工程と、
    前記データベースが、前記特定情報送信工程により送信された組み合わせを受信すると、受信した組み合わせである受信組み合わせに相当する前記記憶部に記憶された前記特定情報と前記非特定種類情報との組み合わせと、該特定情報と該非特定種類情報との組み合わせに対応付けられた前記データとを前記記憶部から取得し、前記キャッシュサーバに送信するキャッシュ応答工程と、
    前記キャッシュサーバが、前記キャッシュ応答工程により送信された前記特定情報と前記非特定種類情報との組み合わせが前記キャッシュに記憶されている場合には、記憶されていた前記特定情報と前記非特定種類情報との組み合わせに対応付けられるデータと対応付けて、前記受信組み合わせを前記キャッシュに格納し、前記キャッシュに記憶されていない場合には、前記キャッシュ応答工程により送信されたデータと対応付けて、前記キャッシュ応答部により送信された前記特定情報と前記非特定種類情報との組み合わせと、前記受信組み合わせとを前記キャッシュに格納する格納工程と、
    前記キャッシュサーバが、前記判定工程により記憶されていると判定された場合には、前記キャッシュから前記データを取得して前記データ要求の送信元に送信し、前記判定工程により記憶されていないと判定された場合には、前記キャッシュ応答工程により送信された前記データを前記データ要求の送信元に送信するデータ送信工程と
    を含むことを特徴とする制御方法。
JP2011131028A 2011-06-13 2011-06-13 データベースシステム及び制御方法 Expired - Fee Related JP5492146B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011131028A JP5492146B2 (ja) 2011-06-13 2011-06-13 データベースシステム及び制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011131028A JP5492146B2 (ja) 2011-06-13 2011-06-13 データベースシステム及び制御方法

Publications (2)

Publication Number Publication Date
JP2013003637A JP2013003637A (ja) 2013-01-07
JP5492146B2 true JP5492146B2 (ja) 2014-05-14

Family

ID=47672189

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011131028A Expired - Fee Related JP5492146B2 (ja) 2011-06-13 2011-06-13 データベースシステム及び制御方法

Country Status (1)

Country Link
JP (1) JP5492146B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014118914A1 (ja) * 2013-01-30 2014-08-07 三菱電機株式会社 配列データキャッシュシステム、配列データキャッシュ管理装置及び配列データキャッシュ方法
WO2015061222A1 (en) * 2013-10-21 2015-04-30 Amazon Technologies, Inc. Managing media content
JP6632853B2 (ja) * 2015-10-07 2020-01-22 株式会社藤商事 遊技機
US10574777B2 (en) * 2017-06-06 2020-02-25 International Business Machines Corporation Edge caching for cognitive applications
CN111459931A (zh) * 2019-01-21 2020-07-28 中车信息技术有限公司 数据查重方法和数据查重装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000020385A (ja) * 1998-07-07 2000-01-21 Hitachi Ltd データ検索システムにおけるデータキャッシュ方法
JP2006011989A (ja) * 2004-06-28 2006-01-12 Ntt Docomo Inc 認証方法、端末装置、中継装置及び認証サーバ
JP4344957B2 (ja) * 2008-02-14 2009-10-14 日本電気株式会社 処理分散システム、認証サーバ、分散サーバ及び処理分散方法
JP4937302B2 (ja) * 2009-07-10 2012-05-23 日本電信電話株式会社 認証装置、認証方法、認証プログラムおよび認証システム

Also Published As

Publication number Publication date
JP2013003637A (ja) 2013-01-07

Similar Documents

Publication Publication Date Title
JP4671332B2 (ja) ユーザ識別情報を変換するファイルサーバ
CN106815350B (zh) 一种云环境中动态的密文多关键词模糊搜索方法
US8676951B2 (en) Traffic reduction method for distributed key-value store
JP5320433B2 (ja) 統合検索装置、統合検索システム、統合検索方法
JP5492146B2 (ja) データベースシステム及び制御方法
US9300471B2 (en) Information processing apparatus, information processing method, and program
JP2001313639A (ja) ネットワーク構成データ管理システム及び方法並びに記録媒体
CN107004013A (zh) 用于使用基于硬件的处理来提供分布式树遍历的系统和方法
JP2012531688A (ja) メタデータに従ってファイルシステムのファイルにアクセスする方法、およびその方法を実装する装置
JP2020013539A (ja) 情報管理装置、情報管理方法及び情報管理プログラム
WO2009096030A2 (ja) 装置構成統合情報管理プログラム、装置構成情報管理プログラム、装置構成統合情報管理装置および装置構成情報管理装置
JP2018147301A (ja) 計算機システム及び処理の割当方法
US20180203908A1 (en) Distributed database system and distributed data processing method
JP7390356B2 (ja) クローニング後のテナント識別子変換のためのレコードの識別
JP2010266952A (ja) メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法
CN103902554B (zh) 数据访问方法与装置
JP2001318942A (ja) 情報提供システムおよび仲介装置
KR101986851B1 (ko) M2m 통신에서의 자원 검색 방법 및 그 장치
KR20170125665A (ko) M2M/IoT 플랫폼에서의 시맨틱 정보 관리 방법
WO2014147811A1 (ja) ファイルストレージシステムおよびユーザデータ管理方法
JP5345577B2 (ja) 名前解決装置、名前解決方法および名前解決プログラム
JP5402066B2 (ja) 情報検索システム、情報検索装置、情報検索プログラム及び情報検索方法
JP6229997B2 (ja) データ管理システム及びプログラム
JP7364039B2 (ja) 情報管理方法、情報管理プログラム及び情報管理装置
Abawajy et al. A framework for scalable distributed provenance storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130627

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140228

R150 Certificate of patent or registration of utility model

Ref document number: 5492146

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees