(57)【要約】【課題】キャッシュが無効であるか否かの判定を短い時間で行うデータ読み込み装置、データ書き込み装置、分散システム、方法、及びプログラムを提供すること。【解決手段】データ読み込み装置２０００は、キーに対応するデータの複製であるキャッシュを格納しているキャッシュ格納領域３０００から、キーに対応するキャッシュを取得する。データ読み込み装置２０００は、キャッシュに関する情報であるキャッシュ情報を格納するキャッシュ情報格納部２０２０、無効キー集合を受信する無効キー集合受信部２０４０、無効キー情報を格納する無効キー情報格納部２０６０、キャッシュ情報と無効キー情報に基づいて、キャッシュの有効性をキーごとに判定するキャッシュ有効性判定部２０８０を有する。【選択図】図１
2014089627.tif 000002
【特許請求の範囲】
【請求項１】
キーに対応するソースデータの複製であるキャッシュを前記キーに対応づけて格納しているキャッシュ格納領域から、前記キーに対応する前記キャッシュを読み込むデータ読み込み装置であって、
前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納手段と、
無効な前記キャッシュに対応する前記キーを所定の方法で変換した値であるキー変換値を含む無効キー集合を受信する無効キー情報受信手段と、
前記無効キー情報受信手段が受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納手段と、
前記キーを取得し、前記キャッシュ情報格納手段から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納手段から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定手段と、
を有するデータ読み込み装置。
【請求項２】
前記キャッシュ有効性判定手段は、前記無効キー情報を複数取得した際、複数の前記無効キー情報それぞれが示す前記無効キー集合の和集合である無効キー和集合を生成し、入力として取得した前記キーから前記所定の方法で算出した前記キー変換値が、該無効キー和集合に含まれている場合に、該キーに対応する前記キャッシュが無効であると判定する請求項１記載のデータ読み込み装置。
【請求項３】
前記キャッシュ情報格納手段に格納されているキャッシュ情報が示すキャッシュ有効時点の中から、最も過去の時点を示す前記キャッシュ有効時点を基準有効時点として抽出し、前記無効キー情報格納手段に格納されている前記無効キー情報が示すキャッシュ無効時点が、前記基準有効時点より前の時点を示す場合は、該無効キー情報を前記無効キー情報格納手段から削除する無効キー情報削除手段をさらに有する請求項１又は２記載のデータ読み込み装置。
【請求項４】
前記キーに対応する前記キャッシュを取得する時に、該キーを与えて前記キャッシュ有効性判定手段を動作させる読み込み手段をさらに有する請求項１乃至３いずれか一項に記載のデータ読み込み装置。
【請求項５】
請求項１乃至４いずれか一項に記載のデータ読み込み装置であって、
前記ソースデータが格納されているソースデータ格納領域に対して前記ソースデータの書き込みを行う書き込み手段と、
書き込んだ前記ソースデータに対応する前記キーを前記所定の方法で変換して前記キー変換値を算出し、算出した前記キー変換値を含む前記無効キー集合を生成する無効キー集合生成手段と、
前記無効キー集合を送信する無効キー集合送信手段と、
をさらに有するデータ読み込み装置。
【請求項６】
キーに対応づけてソースデータが格納されているソースデータ格納領域に対して、前記ソースデータの書き込みを行う書き込み手段と、
書き込んだ前記ソースデータに対応する前記キーを所定の方法で変換してキー変換値を算出し、算出した前記キー変換値を含む無効キー集合を生成する無効キー集合生成手段と、
前記無効キー集合を送信する無効キー集合送信手段と、
を有するデータ書き込み装置。
【請求項７】
キーに対応するソースデータを格納しているソースデータ格納領域に対して前記ソースデータを書き込むデータ書き込み装置と、前記ソースデータの複製であるキャッシュを、該ソースデータに対応するキーと対応づけて格納しているキャッシュ格納領域から、前記キャッシュを読み込むデータ読み込み装置と、前記キャッシュの一貫性を管理する一貫性管理装置とを有する分散システムであって、
前記データ書き込み装置は、
前記ソースデータ格納領域に対して前記ソースデータの書き込みを行う書き込み手段と、
書き込んだ前記ソースデータに対応する前記キーを所定の方法で変換してキー変換値を算出し、算出した前記キー変換値を含む無効キー集合を生成する無効キー集合生成手段と、
前記無効キー集合を前記一貫性管理装置へ送信する無効キー集合送信手段と、
を有し、
前記データ読み込み装置は、
前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納手段と、
無効な前記キャッシュに対応する前記キーを前記所定の方法で変換した値である前記キー変換値を含む無効キー集合を前記一貫性管理装置から受信する無効キー情報受信手段と、
前記無効キー情報受信手段が受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納手段と、
前記キーを取得し、前記キャッシュ情報格納手段から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納手段から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定手段と、
を有し、
前記一貫性管理装置は、
前記無効キー集合を格納する無効キー集合格納手段と、
前記データ書き込み装置から前記無効キー集合を受信し、受信した該無効キー集合を前記無効キー集合格納手段に格納する無効キー集合受信手段と、
前記データ読み込み装置に対し、前記無効キー集合格納手段に格納されている前記無効キー集合を送信する無効キー集合送信手段と、
を有する分散システム。
【請求項８】
請求項７記載の分散システムであって、
複数のデータ読み込み装置を有し、
前記一貫性管理装置において、
前記無効キー集合格納手段は、前記無効キー集合を前記データ読み込み装置のＩＤと紐づけ、複数の前記データ読み込み装置ごとに前記無効キー集合を格納し、
前記無効キー集合受信手段は、
受信した前記無効キー集合に含まれる値を、前記無効キー集合格納手段に格納されている前記無効キー集合それぞれに加え、
前記無効キー集合送信手段は、前記データ読み込み装置に対し、該データ読み込み装置のＩＤに紐づいている前記無効キー集合を送信し、
前記無効キー集合送信手段が前記データ読み込み装置に対して前記無効キー集合を送信した場合に、該無効キー集合を前記無効キー集合格納手段から削除する無効キー集合削除手段をさらに有すること、
を特徴とする分散システム。
【請求項９】
コンピュータが、キーに対応するソースデータの複製であるキャッシュを前記キーに対応づけて格納しているキャッシュ格納領域から、前記キーに対応する前記キャッシュを読み込むデータ読み込み装置として動作する方法であって、
前記コンピュータが、前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納ステップと、
前記コンピュータが、無効な前記キャッシュに対応する前記キーを所定の方法で変換した値であるキー変換値を含む無効キー集合を受信する無効キー情報受信ステップと、
前記コンピュータが、前記無効キー情報受信ステップで受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納ステップと、
前記コンピュータが、前記キーを取得し、前記キャッシュ情報格納ステップで格納した前記キャッシュ情報から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納ステップで格納した前記無効キー情報から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定ステップと、
を有する方法。
【請求項１０】
コンピュータに、キーに対応するソースデータの複製であるキャッシュを前記キーに対応づけて格納しているキャッシュ格納領域から、前記キーに対応する前記キャッシュを読み込むデータ読み込み装置として動作する機能を持たせるプログラムであって、前記コンピュータに、
前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納機能と、
無効な前記キャッシュに対応する前記キーを所定の方法で変換した値であるキー変換値を含む無効キー集合を受信する無効キー情報受信機能と、
前記無効キー情報受信機能で受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納機能と、
前記キーを取得し、前記キャッシュ情報格納機能が格納した前記キャッシュ情報から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納機能が格納した前記無効キー情報から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定機能と、
を持たせるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ読み込み装置、分散システム、方法、及びプログラムに関する。
【背景技術】
【０００２】
分散システムにおいて、キーに対応づけてデータを格納するデータ格納領域が利用される。分散システムが有するノードは、データ格納領域からキーに対応するデータを取得し、又は、データ格納領域に対してキーに対応するデータの書き込みを行う。ここでノードとは、例えばＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やサーバなどである。
【０００３】
データの読み出し又は書き込みにかかる時間を短くするために、データ格納領域から取得したデータの複製を、そのデータが格納されているデータ格納領域とは別の記憶領域に格納する場合がある。以下、上記データ格納領域に格納されている複製元のデータをソースデータと表記し、上記データ格納領域とは異なる記憶領域に格納されるソースデータの複製をキャッシュと表記する。また、ソースデータを格納しているデータ格納領域をソースデータ格納領域と表記し、キャッシュを格納している記憶領域をキャッシュ格納領域と表記する。
【０００４】
ソースデータ格納領域に格納されているソースデータが更新された場合、そのソースデータと同一のキーに対応づけられているキャッシュの内容を、更新されたソースデータの内容に変更する必要がある。このように、同一のキーに対応づけられているソースデータとキャッシュの内容が同一になるように管理することを、キャッシュ一貫性管理と呼ぶ。
【０００５】
キャッシュ一貫性管理の方法の一つに、リリースコンシステンシと呼ばれる方法がある。リリースコンシステンシとは、排他制御のためのロックの獲得／解放を行うタイミングで、キャッシュの内容を、そのキャッシュと同一のキーに対応づけられているソースデータの内容と同一にする方法である。各ノードは、一貫性を保証したいソースデータの複製であるキャッシュにアクセスする前に、排他制御のためのロックを取得する。ノードは、ロックを獲得した時点で、無効なキャッシュを示す情報を取得する。ここで、無効なキャッシュとは、キャッシュの内容と、そのキャッシュと同一のキーに対応づけられているソースデータの内容とが異なっているキャッシュである。さらにノードは、ロックを解放する前に、ロックを獲得している間に更新したソースデータと同一のキーに対応づけられているキャッシュが無効であることを示す情報を生成する。
【０００６】
データを読み込むノードは、データを読み込む際、キャッシュ領域に格納されているキャッシュを読み込むか、ソースデータ格納領域に格納されているソースデータを読み込むかを判断する必要がある。そのため、データを読み込むノードは、どのキャッシュが無効であるかを把握する必要がある。
【０００７】
そこで、データを読み込むノードは、無効なキャッシュを示す情報を取得する。ここで一般に、分散システムにおいては、ネットワークの通信負荷を低くすることが望ましい。したがって、無効なキャッシュを示す情報を、データ量が少ないデータ構造で示すことが望ましい。
【０００８】
非特許文献１記載のシステムは、Ｂｌｏｏｍ  Ｆｉｌｔｅｒというデータ構造を用いて、ＣＰＵの各キャッシュラインに格納されているキャッシュが無効か否かを判定している。Ｂｌｏｏｍ  Ｆｉｌｔｅｒは、表したい集合の上位集合を表すことができる。Ｂｌｏｏｍ  Ｆｉｌｔｅｒに対しては、所定の方法に従った値の投入と、ある値がＢｌｏｏｍ  Ｆｉｌｔｅｒに入っているか否かの判別とが行える。ここで、Ｂｌｏｏｍ  Ｆｉｌｔｅｒに入っている値を個別に取得することはできない。また、Ｂｌｏｏｍ  Ｆｉｌｔｅｒに入っている値を個別に削除することもできない。
【０００９】
Ｂｌｏｏｍ  Ｆｉｌｔｅｒへの値の投入には、例えば複数のハッシュ関数が利用される。例えばＮビットで構成されるＢｌｏｏｍ  Ｆｉｌｔｅｒがあるとする。この場合、出力が１〜Ｎのいずれかとなる複数のハッシュ関数それぞれに対し、Ｂｌｏｏｍ  Ｆｉｌｔｅｒに投入する値を入力する。そして、Ｂｌｏｏｍ  Ｆｉｌｔｅｒの各ビットのうち、ハッシュ関数の出力値に該当するビットを１とする。例えば、３つのハッシュ関数を利用し、それぞれの出力が１、３、及び５であった場合は、Ｂｌｏｏｍ  Ｆｉｌｔｅｒの１ビット目、３ビット目、及び５ビット目を１とする。
【００１０】
Ｂｌｏｏｍ  Ｆｉｌｔｅｒにある値が入っているか否かを判定するためには、値の投入に用いたハッシュ関数を利用する。具体的には、判定を行いたい値を各ハッシュ関数に入力し、その出力値に該当するビットが１であるか否かをチェックする。各ハッシュ関数の出力値に該当するビットが全て１であれば、判定を行った値はＢｌｏｏｍ  Ｆｉｌｔｅｒに含まれている。一方、ハッシュ関数の出力値に該当するビットのいずれかが０であれば、判定を行った値は、Ｂｌｏｏｍ  Ｆｉｌｔｅｒに含まれていない。
【００１１】
非特許文献１記載のシステムは、ＣＰＵのキャッシュラインに格納されているキャッシュが無効か否かをＢｌｏｏｍ  Ｆｉｌｔｅｒを用いて判定するためのハードエア機構を、キャッシュラインごとに備えている。そして、排他制御のためのロックを獲得した際に、全てのキャッシュラインについて並行に、キャッシュが無効か否かをチェックする。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】Thomas J. Ashby, Pedro Diaz, and Marcelo Cintra、「Software-Based Cache Coherence with Hardware-Assisted Selective Self-Invalidations Using Bloom Filters」、IEEE Transactions on Computers、VOL. 60、NO. 4、２０１１年４月
【発明の概要】
【発明が解決しようとする課題】
【００１３】
非特許文献１のシステムは、分散システムにおけるキャッシュの一貫性管理に利用されることを考慮していない。一般に分散システムにおいて、キャッシュはソフトウエアで管理される。そのため、非特許文献１のように、各キャッシュが無効か否かを判定するハードウエア機構を、キャッシュを読み込むノードに備えることは難しい。また、分散システムでは、上記キャッシュをソフトウエアで管理するため、キャッシュが無効か否かの判定にかかる時間が長い。そのため、非特許文献１のように、ある時点において、キャッシュが無効か否かの判定を全てのキャッシュ格納領域について行うと、その時点以降の処理が大きく遅延されてしまう。
【００１４】
本発明の目的は、キャッシュが無効であるか否かの判定を短い時間で行うデータ読み込み装置、データ書き込み装置、分散システム、方法、及びプログラムを提供することである。
【課題を解決するための手段】
【００１５】
本発明が提供するデータ読み込み装置は、キーに対応するソースデータの複製であるキャッシュを前記キーに対応づけて格納しているキャッシュ格納領域から、前記キーに対応する前記キャッシュを読み込む。当該データ読み込み装置は、前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納手段と、無効な前記キャッシュに対応する前記キーを所定の方法で変換した値であるキー変換値を含む無効キー集合を受信する無効キー情報受信手段と、前記無効キー情報受信手段が受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納手段と、前記キーを取得し、前記キャッシュ情報格納手段から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納手段から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定手段とを有する。
【００１６】
本発明が提供するプログラムは、上記データ読み込み装置が有する各機能構成部を実現する各機能を、コンピュータに持たせるプログラムである。
【００１７】
本発明が提供する方法は、コンピュータが、キーに対応するソースデータの複製であるキャッシュを前記キーに対応づけて格納しているキャッシュ格納領域から、前記キーに対応する前記キャッシュを読み込むデータ読み込み装置として動作する方法である。当該方法は、前記コンピュータが、前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納ステップと、前記コンピュータが、無効な前記キャッシュに対応する前記キーを所定の方法で変換した値であるキー変換値を含む無効キー集合を受信する無効キー情報受信ステップと、前記コンピュータが、前記無効キー情報受信手段が受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納ステップと、前記コンピュータが、前記キーを取得し、前記キャッシュ情報格納ステップで格納した前記キャッシュ情報から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納ステップで格納した前記無効キー情報から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定ステップとを有する。
【００１８】
本発明が提供するデータ書き込み装置は、キーに対応づけてソースデータが格納されているソースデータ格納領域に対して、前記ソースデータの書き込みを行う書き込み手段と、書き込んだ前記ソースデータに対応する前記キーを所定の方法で変換してキー変換値を算出し、算出した前記キー変換値を含む無効キー集合を生成する無効キー集合生成手段と、前記無効キー集合を送信する無効キー集合送信手段と、
を有するデータ書き込み装置。
【００１９】
本発明が提供する分散システムは、キーに対応するソースデータを格納しているソースデータ格納領域に対して前記ソースデータを書き込むデータ書き込み装置と、前記ソースデータの複製であるキャッシュを、該ソースデータに対応するキーと対応づけて格納しているキャッシュ格納領域から、前記キャッシュを読み込むデータ読み込み装置と、前記キャッシュの一貫性を管理する一貫性管理装置とを有する。前記データ書き込み装置は、前記ソースデータ格納領域に対して前記ソースデータの書き込みを行う書き込み手段と、書き込んだ前記ソースデータに対応する前記キーを所定の方法で変換してキー変換値を算出し、算出した前記キー変換値を含む無効キー集合を生成する無効キー集合生成部と、前記無効キー集合を前記一貫性管理装置へ送信する無効キー集合送信部とを有する。前記データ読み込み装置は、前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納手段と、無効な前記キャッシュに対応する前記キーを前記所定の方法で変換した値である前記キー変換値を含む無効キー集合を前記一貫性管理装置から受信する無効キー情報受信手段と、前記無効キー情報受信手段が受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納手段と、前記キーを取得し、前記キャッシュ情報格納手段から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納手段から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定手段とを有する。前記一貫性管理装置は、前記無効キー集合を格納する無効キー集合格納手段と、前記データ書き込み装置から前記無効キー集合を受信し、受信した該無効キー集合を前記無効キー集合格納手段に格納する無効キー集合受信手段と、前記データ読み込み装置に対し、前記無効キー格納手段に格納されている前記無効キー集合を送信する無効キー集合送信部とを有する。
【発明の効果】
【００２０】
本発明によれば、キャッシュが無効であるか否かの判定を短い時間で行うことができるデータ読み込み装置、データ書き込み装置、分散システム、方法、プログラムを提供できる。
【図面の簡単な説明】
【００２１】
【図１】実施形態１に係るデータ読み込み装置を示すブロック図である。
【図２】実施形態１に係るデータ読み込み装置の動作を概念的に示した図である。
【図３】無効キー集合にＢｌｏｏｍ  Ｆｉｌｔｅｒを用いた場合における、実施形態１に係るデータ読み込み装置の動作を概念的に示す図である。
【図４】キャッシュ情報テーブルの構成を示す図である。
【図５】無効キー情報テーブルの構成を示す図である。
【図６】実施形態１のキャッシュ有効性判定部が行うキャッシュ有効性判定処理の流れの一例を示すフローチャートである。
【図７】実施形態２に係るデータ読み込み装置を示すブロック図である。
【図８】実施形態３に係るデータ読み込み装置を示すブロック図である。
【図９】実施形態４に係るデータ書き込み装置を示すブロック図である。
【図１０】実施形態５に係る分散システムを示すブロック図である。
【図１１】実施形態６に係る分散システムを示すブロック図である。
【図１２】実施形態１に係るデータ読み込み装置のハードウエア構成を示す図である。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００２３】
[実施形態１]
＜概要＞
図１は、実施形態１に係るデータ読み込み装置２０００を示すブロック図である。図１において、矢印は情報の流れを表している。また、図１において、各機能構成部は、ハードウエア単位の構成ではなく、機能単位の構成を示している。
【００２４】
データ読み込み装置２０００は、キーに対応するデータの複製であるキャッシュを格納しているキャッシュ格納領域３０００から、キーに対応するキャッシュを取得する。以下、キャッシュの複製元の上記データを、ソースデータと表記する。さらにデータ読み込み装置２０００は、キャッシュ格納領域３０００から取得したキャッシュが有効であるか否かの判定を、データに対応するキーごとに行う。
【００２５】
キャッシュとは、キーに対応するソースデータの複製である。キャッシュは、例えばレプリカと表記されてもよい。キャッシュ格納領域３０００は、キャッシュを格納する領域であり、ソースデータ格納領域以外の領域である。
【００２６】
データ読み込み装置２０００は、キャッシュ情報格納部２０２０を有する。キャッシュ情報格納部２０２０は、データ読み込み装置２０００がキャッシュ格納領域３０００から取得したキャッシュに関する情報であるキャッシュ情報を格納する。具体的には、キャッシュ情報は、キーと、そのキーに対応するキャッシュ有効時点とを紐づけた情報である。
【００２７】
キャッシュ有効時点とは、キャッシュが有効であることが確認された時点である。例えば、あるキーに対応するキャッシュ有効情報が示すキャッシュ有効時点は、そのキーに対応するソースデータから複製したキャッシュを生成した時点や、その生成したキャッシュをキャッシュ格納領域に格納した時点である。その他にも例えば、あるキーに対応するキャッシュ有効情報が示すキャッシュ有効時点は、キャッシュ有効性判定部２０８０が、そのキーに対応するキャッシュが有効であると判定した時点である。
【００２８】
データ読み込み装置２０００は、無効キー集合受信部２０４０を有する。無効キー集合受信部２０４０は、無効キー集合を受信する。無効キー集合は、無効なキャッシュに対応するキーを所定の方法で変換した値の集合である。以下、キーを所定の方法で変換した値を、キー変換値と表記する。
【００２９】
データ読み込み装置２０００は、無効キー情報格納部２０６０を有する。無効キー情報格納部２０６０は、無効キー情報を格納する。無効キー情報は、無効キー集合受信部２０４０が受信した無効キー集合と、キャッシュ無効時点とを対応づけた情報である。
【００３０】
キャッシュ無効時点とは、無効キー集合に含まれるキーに対応するキャッシュが、無効になった時点である。例えば、無効キー集合に対応するキャッシュ無効キー時点は、その無効キー集合が生成された時点である。その他にも例えば、無効キー集合に対応するキャッシュ無効時点は、その無効キー集合が送信された時点や、無効キー集合受信部２０４０がその無効キー集合を受信した時点である。
【００３１】
データ読み込み装置２０００は、キャッシュ有効性判定部２０８０を有する。キャッシュ有効性判定部２０８０は、キーに対応するキャッシュが有効であるか否かを判定する。以下、キーに対応するキャッシュが有効であるか否かを判定する処理を、キャッシュ有効性判定処理と表記する。
【００３２】
まずキャッシュ有効性判定部２０８０は、入力としてキーを取得する。次に、キャッシュ有効性判定部２０８０は、キャッシュ情報格納部２０２０から、取得したキーに対応するキャッシュ情報が示すキャッシュ有効時点を取得する。さらに、キャッシュ有効性判定部２０８０は、無効キー情報格納部２０６０から、無効キー情報が示すキャッシュ無効時点が、取得したキャッシュ有効時点よりも後の時点を示す無効キー情報に含まれる無効キー集合を取得する。次に、キャッシュ有効性判定部２０８０は、取得したキーのキー変換値を算出する。そして、キャッシュ有効性判定部２０８０は、算出したキー変換値が、上記取得した無効キー集合に含まれている場合に、取得したキーに対応するキャッシュが無効であると判定する。
【００３３】
図２を用いて、本実施形態におけるデータ読み込み装置２０００の動作を説明する。図２は、本実施形態におけるデータ読み込み装置２０００の動作を概念的に示した図である。ここで図２において、キャッシュ情報が示すキャッシュ有効時点、及び無効キー情報が示すキャッシュ無効時点は数値で表されており、数値が大きい方が後の時点を表している。本例において、データ読み込み装置２０００は、キーＸに対応するキャッシュが有効であるか否かを判定する。
【００３４】
まずキャッシュ有効性判定部２０８０は、キーがＸであるキャッシュ情報が示すキャッシュ有効時点を取得する。図２より、キーがＸであるキャッシュ情報のキャッシュ有効時点は２０を示している。次に、キャッシュ有効性判定部２０８０は、無効キー情報格納部２０６０から、キャッシュ無効時点が２０より大きい無効キー情報に含まれる無効キー集合を取得する。結果として、キャッシュ有効性判定部２０８０は、キャッシュ無効時点が２５である無効キー情報に含まれる無効キー集合を取得する。
【００３５】
そして、キャッシュ有効性判定部２０８０は、キーＸのキー変換値が、取得した無効キー集合に含まれているか否かを調べる。ここで、キーＸのキー変換値は７であるとする。図２において、キャッシュ無効時点が２５である無効キー集合は７を含んでいる。したがって、キャッシュ有効性判定部２０８０は、キーＸに対応するキャッシュは無効であると判定する。
【００３６】
キャッシュ格納領域３０００は、データ読み込み装置２０００の内部に設けられてもよいし、データ読み込み装置２０００の外部にある他の装置に設けられてもよい。キャッシュ格納領域３０００がデータ読み込み装置２０００の内部に設けられている場合、キャッシュ格納領域３０００は、例えばＲＡＭ等の一次記憶装置や、ハードディスク等の二次記憶装置に設けられる。
【００３７】
キャッシュ格納領域３０００がデータ読み込み装置２０００の外部に設けられる場合、キャッシュ格納領域３０００は、例えばネットワーク上において、データ読み込み装置２０００の近傍に位置する外部装置の一次記憶装置や二次記憶装置に設けられる。ここで、データ読み込み装置２０００が複数ある場合、キャッシュ格納領域３０００は複数のデータ読み込み装置２０００で共有されてもよい。
【００３８】
キャッシュ格納領域３０００の実装方法は様々である。例えばキャッシュ格納領域は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のバッファキャッシュとして実装される。またキャッシュ格納領域３０００は、例えばｍｅｍｃａｃｈｅｄ等のキーバリューストアや、リレーショナルデータベース等で実装されてもよい。
【００３９】
ソースデータを格納するソースデータ格納領域は、例えばｍｅｍｃａｃｈｅｄ等のキーバリューストアである。その他にも、ソースデータ格納領域は、リレーショナルデータベース等であっても構わない。
【００４０】
以上により、本実施形態のデータ読み込み装置２０００は、キーをキャッシュ有効性判定部２０８０に入力することで、キーに対応するキャッシュが無効であるか否かを判定することができる。したがって、データ読み込み装置２０００は、キーに対応するキャッシュが無効であるか否かを、キーごとに判定することができる。これにより、キャッシュが無効であるか否かの判定が全てのキャッシュについて一度に行われる場合と比較し、キャッシュが無効であるか否かの判定を行う処理にかかる時間が短くなる。
【００４１】
以下、本実施形態の詳細を述べる。
【００４２】
＜無効キー集合の詳細＞
無効キー集合は、無効なキャッシュに対応するキーを所定の方法で変換した値であるキー変換値の集合である。例えば無効キー集合はＢｌｏｏｍ  Ｆｉｌｔｅｒで実現される。
【００４３】
キー変換値を算出するための上記所定の方法は、例えばハッシュ関数による変換である。また、上記所定の方法は、無効なキャッシュに対応するキーを複数の方法で変換し、複数のキー変換値を算出してもよい。この場合、上記複数のキー変換値の一部又は全部が無効キー集合に投入される。
【００４４】
図３は、無効キー集合にＢｌｏｏｍ  Ｆｉｌｔｅｒを用いた場合における、本実施形態のデータ読み込み装置２０００の動作を概念的に示す図である。ここで図３において、キャッシュ情報が示すキャッシュ有効時点、及び無効キー情報が示すキャッシュ無効時点は、数値で表されており、数値が大きい方が後の時点を表している。本例において、データ読み込み装置２０００は、キーＸに対応するキャッシュが有効であるか否かを判定する。
【００４５】
図３において、無効キー集合は、８ビットの２進数で表されるＢｌｏｏｍ  Ｆｉｌｔｅｒである。また、データ読み込み装置２０００は、キーを２つのハッシュ関数ｈ１とｈ２のそれぞれに入力して、２つのキー変換値を得る。そして、データ読み込み装置２０００は、Ｂｌｏｏｍ  Ｆｉｌｔｅｒにおいて、２つのキー変換値が示すビットが両方とも１である場合、キーに対応するキャッシュは無効であると判定する。
【００４６】
まずキャッシュ有効性判定部２０８０は、キーがＸであるキャッシュ情報が示すキャッシュ有効時点を取得する。図３より、キーがＸであるキャッシュ情報のキャッシュ有効時点は２０を示している。次に、キャッシュ有効性判定部２０８０は、無効キー情報格納部２０６０から、キャッシュ無効時点が２０より大きい無効キー情報が示す無効キー集合を取得する。結果として、キャッシュ有効性判定部２０８０は、キャッシュ無効時点が２５である無効キー情報が示す無効キー集合を取得する。取得した無効キー集合は、４ビット目、５ビット目、及び７ビット目が１であり、残りのビットが０であるＢｌｏｏｍ  Ｆｉｌｔｅｒである。
【００４７】
キャッシュ有効性判定部２０８０は、キーＸを２つのハッシュ関数ｈ１及びｈ２に入力し、２つのキー変換値ｈ１（Ｘ）及びｈ２（Ｘ）を得る。ここで、図３が示すように、ｈ１（Ｘ）は７であり、ｈ２（Ｘ）は５であるとする。図３より、取得したＢｌｏｏｍ  Ｆｉｌｔｅｒにおいて、７ビット目と５ビット目は両方とも１である。したがって、キャッシュ有効性判定部２０８０は、キーＸに対応するキャッシュは無効であると判定する。
【００４８】
＜キャッシュ情報格納部２０２０の詳細＞
キャッシュ情報格納部２０２０が格納するキャッシュ情報は、例えば図４に示すキャッシュ情報テーブル２００で表される。図４は、キャッシュ情報テーブル２００の構成を示す図である。キャッシュ情報テーブル２００は、キー２０２及びキャッシュ有効時点２０４を有する。
【００４９】
データ読み込み装置２０００において、時点を示す方法は様々である。例えば、時点は、日時で表される。その他にも例えば、時点は、キャッシュがアクセスされるなどの所定条件が満たされる度に増加又は減少する指標値を用いて表されてもよい。
【００５０】
無効キー情報格納部２０６０は、例えば無効キー情報を、無効キー情報が示すキャッシュ無効時点の大きさの降順又は昇順にソートして格納してもよい。こうすることで、キャッシュ有効性判定部２０８０が、キーに対応するキャッシュ情報が示すキャッシュ有効時点と、各無効キー情報が示すキャッシュ無効時点との比較に要する時間を短くすることができる。
【００５１】
例えばデータ読み込み装置２０００は、あるキーに対応するキャッシュが有効であると判定した場合に、そのキーと対応づけられているキャッシュ情報のキャッシュ有効時点を更新する。
【００５２】
またデータ読み込み装置２０００が、ソースデータ格納領域からソースデータを取得し、そのソースデータの複製であるキャッシュを生成して、キャッシュ格納領域３０００に格納する機能を有するとする。この場合、例えばデータ読み込み装置２０００は、生成したキャッシュに対応するキーに対応づけられているキャッシュ情報のキャッシュ有効時点を、このキャッシュを生成した時点や、上記ソースデータを取得した時点に更新する。また、生成したキャッシュに対応するキーに対応づけられているキャッシュ情報がキャッシュ情報格納部２０２０に格納されていない場合、データ読み込み装置２０００は、生成したキャッシュに対応するキャッシュ情報を新たに生成する。
【００５３】
＜無効キー情報格納部２０６０の詳細＞
無効キー情報格納部２０６０が格納する無効キー情報は、例えば図５に示す無効キー情報テーブル３００で表される。図５は、無効キー情報テーブル３００の構成を示す図である。無効キー情報テーブル３００は、無効キー集合３０２及びキャッシュ無効時点３０４を有する。
【００５４】
キャッシュ情報テーブル２００のキャッシュ有効時点２０４において時点を示す方法と、無効キー情報テーブル３００のキャッシュ無効時点３０４において時点を示す方法は、同じであってもよいし、異なっていてもよい。
【００５５】
＜キャッシュ有効性判定部２０８０の詳細＞
キャッシュ有効性判定部２０８０は、無効キー情報が示すキャッシュ無効時点が、キーに対応するキャッシュ情報が示すキャッシュ有効時点よりも後の時点である無効キー情報が複数ある場合、それら複数の無効キー情報からそれぞれ無効キー集合を取得する。この場合、キャッシュ有効性判定部２０８０は、取得したキーのキー変換値が無効キー集合に含まれているか否かの判定を、各無効キー集合それぞれについて個別に行ってもよいし、複数の無効キー集合についてまとめて行ってもよい。
【００５６】
キー変換値が無効キー集合に含まれているか否かの判定を、複数の無効キー集合それぞれについて個別に行う場合、キャッシュ有効性判定部２０８０は、キー変換値が複数の無効キー集合のいずれかに含まれている場合に、キャッシュが無効であると判定する。
【００５７】
キー変換値が無効キー集合に含まれているか否かの判定を複数の無効キー集合についてまとめて行う場合、例えばキャッシュ有効性判定部２０８０は、まず複数の無効キー集合の和集合を生成する。以下、この和集合を無効キー和集合と表記する。キャッシュ有効性判定部２０８０は、キー変換値が、生成した無効キー和集合に含まれているか否かを判定する。キャッシュ有効性判定部２０８０は、キー変換値が上記無効キー和集合に含まれている場合に、取得したキーに対応するキャッシュは無効であると判定する。
【００５８】
キー変換値が無効キー集合に含まれているかの判定を複数の無効キー集合それぞれについて個別に行う場合、キャッシュ有効性判定部２０８０は、キャッシュの有効性の判定精度を高くすることができる。一方、キー変換値が無効キー集合に含まれているかの判定を複数の無効キー集合についてまとめて行う場合、キャッシュ有効性判定部２０８０は、キャッシュ有効性判定処理にかかる時間を短くすることできる。
【００５９】
ここで、キャッシュ有効性判定処理の判定精度について説明する。キー変換値の算出方法によっては、キャッシュ有効性判定処理は、キーに対応するキャッシュが有効であるにもかかわらず、キーに対応するキャッシュが無効であると判定する場合がある。以下、このように有効なキャッシュが無効であると判定されることを誤判定と表記する。また、キャッシュ有効性判定処理の判定精度が高いとは、誤判定が起こる確率が低いことを表すとする。
【００６０】
誤判定が起こりうるキー変換値の算出方法は、例えば複数の値について同じ値を算出する可能性がある算出方法である。そのような算出の方法の例として、キーの値を特定の整数で除算した余り（ｍｏｄ）を求めるハッシュ関数を用いる方法がある。
【００６１】
誤判定が起こりうる場合、誤判定が起こる確率は、無効キー集合に含まれる個数が多いほど高くなりやすい。そのため、無効キー集合に含まれる値の個数が少ないほど、キャッシュ有効性判定処理の判定精度が高いといえる。
【００６２】
キャッシュ有効性判定部２０８０は、キー変換値が無効キー集合に含まれているか否かの判定を行う際、まず複数の無効キー集合についてまとめて判定を行い、キャッシュが無効であると判定された場合のみ、各無効キー集合について個別に判定を行ってもよい。こうすることで、キャッシュ有効性判定部２０８０は、キャッシュが無効でない場合に、各無効キー集合について個別の判定を行わないため、キャッシュ有効性判定処理にかかる時間が短くなる。また、複数の無効キー集合についてまとめて判定を行い、キャッシュが無効であると判定された場合はその後に各無効キー集合について個別の判定を行うため、キャッシュの有効性の判定精度を高くすることができる。したがって、データ読み込み装置２０００は、キャッシュ有効性の判定精度を高くしつつ、キャッシュ有効性判定処理にかかる時間を短くすることができる。例えばこの方法は、キャッシュが有効である可能性が高い状況において採用されることが好ましい。
【００６３】
＜無効キー集合の受信について＞
データ読み込み装置２０００は、外部の装置から無効キー集合を受信する。データ読み込み装置２０００に対して無効キー集合を送信する装置は、例えばソースデータ格納領域に格納されているソースデータに対して書き込みを行う装置である。以下、この装置を書き込み装置と表記する。この場合、書き込み装置は、自身が書き込んだソースデータと同一のキーに対応づけられているキャッシュが無効であることを示す無効キー集合を、データ読み込み装置２０００へ送信する。
【００６４】
その他にも例えば、キャッシュ有効性判定部２０８０は、無効キー集合を集中管理する管理装置から無効キー集合を受信してもよい。この管理装置は、例えば上記書き込み装置から無効キー集合を受信する。そして、この管理装置は、受信した無効キー集合をデータ読み込み装置２０００へ送信する。
【００６５】
データ読み込み装置２０００が無効キー集合を受信するタイミングは様々である。例えばデータ読み込み装置２０００は、排他制御のためのロックを獲得するタイミングやバリヤ同期を行うタイミングで、無効キー情報を受信する。その他にも例えばデータ読み込み装置２０００は、いずれかのキーに対応するキャッシュを読み込む前に、無効キー集合を受信する。その他にも例えば、データ読み込み装置２０００は、上記書き込み装置や管理装置が送信した無効キー集合がデータ読み込み装置２０００に到達したタイミングで、その無効キー集合を受信する。
【００６６】
＜ハードウエア構成＞
図１２は、データ読み込み装置２０００のハードウエア構成の一例を示す図である。図１２において、データ読み込み装置２０００は、バス１０２０、ＣＰＵ１０４０、ＲＡＭ１０６０、及びストレージ１０８０を有する。
【００６７】
バス１０２０は、ＣＰＵ１０４０、ＲＡＭ１０６０、及びストレージ１０８０の各ハードウエア間で情報を送受信するための伝送経路である。
【００６８】
ＣＰＵ１０４０は、無効キー集合受信部２０４０が行う処理を実現するプログラムである無効キー集合受信処理１１００を実行することで、無効キー集合受信部２０４０の機能を実現する。また、ＣＰＵ１０４０は、キャッシュ有効性判定部２０８０が行う処理を実現するプログラムであるキャッシュ有効性判定処理１１２０を実行することで、無効キー集合受信部２０４０の機能を実現する。
【００６９】
無効キー集合受信処理１１００及びキャッシュ有効性判定処理１１２０は、例えばストレージ１０８０に格納されている。そして、ＣＰＵ１０４０によって、例えばＲＡＭ１０６０に読み出される。無効キー集合受信処理１１００やキャッシュ有効性判定処理１１２０は、ＲＡＭ１０６０に格納されていてもよい。また、データ読み込み装置２０００がＲＯＭを有する場合、無効キー集合受信処理１１００やキャッシュ有効性判定処理１１２０は、このＲＯＭに格納されてもよい。
【００７０】
キャッシュ情報格納部２０２０は、例えばストレージ１０８０によって実現される。この場合、ストレージ１０８０はキャッシュ情報１１６０を格納する。キャッシュ情報格納部２０２０は、ＲＡＭ１０６０によって実現されてもよい。この場合、キャッシュ情報１１６０はＲＡＭ１０６０に格納される。
【００７１】
無効キー情報格納部２０６０は、例えばストレージ１０８０によって実現される。この場合、ストレージ１０８０は無効キー情報１１４０を格納する。無効キー情報格納部２０６０は、ＲＡＭ１０６０によって実現されてもよい。この場合、無効キー情報１１４０はＲＡＭ１０６０に格納される。
【００７２】
ストレージ１０８０は、例えばハードディスク、ＵＳＢメモリ、又はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などの記憶装置である。また、ストレージ１０８０は、ＲＯＭやＲＡＭ等の記憶装置であってもよい。
【００７３】
＜キャッシュ有効性判定処理の流れ＞
図６は、本実施形態のキャッシュ有効性判定部２０８０が行うキャッシュ有効性判定処理の流れの一例を示すフローチャートである。
【００７４】
ステップＳ１０２において、キャッシュ有効性判定部２０８０は、キーを取得する。
【００７５】
ステップＳ１０４において、キャッシュ有効性判定部２０８０は、キャッシュ情報格納部２０２０から、取得したキーに対応するキャッシュ情報が示すキャッシュ有効時点を取得する。
【００７６】
ステップＳ１０６において、キャッシュ有効性判定部２０８０は、無効キー情報格納部２０６０に格納されている無効キー情報のうち、無効キー情報が示すキャッシュ無効時点が、取得したキャッシュ有効時点よりも前の時点である無効キー情報に含まれる無効キー集合を取得する。
【００７７】
ステップＳ１０７において、キャッシュ有効性判定部２０８０は、取得したキーからキー変換値を算出する。
【００７８】
ステップＳ１０８〜ステップＳ１１２は、取得した無効キー集合それぞれについて行うループ処理Ａである。ステップＳ１０８において、キャッシュ有効性判定部２０８０は、取得した全ての無効キー集合を対象にしてループ処理Ａを行ったか否かをチェックする。取得した全ての無効キー集合を対象にしてループ処理Ａを行った場合、キャッシュ有効性判定処理は、ステップＳ１１６に進む。
【００７９】
まだループ処理Ａの対象にしていない無効キー集合がある場合、キャッシュ有効性判定部２０８０は、まだループ処理Ａの対象としていない無効キー集合の中から１つを選択する。ここで、キャッシュ有効性判定部２０８０が選択した無効キー集合を、無効キー集合ｉと表記する。そして、キャッシュ有効性判定処理は、ステップＳ１１０に進む。
【００８０】
ステップＳ１１０において、キャッシュ有効性判定部２０８０は、算出したキー変換値が、無効キー集合ｉに含まれているか否かを判定する。算出したキー変換値が無効キー集合ｉに含まれている場合、キャッシュ有効性判定処理は、ステップＳ１１４に進む。そしてステップＳ１１４において、キャッシュ有効性判定部２０８０は、取得したキーに対応するキャッシュは無効であると判定する。
【００８１】
算出したキー変換値が無効キー集合ｉに含まれていない場合、キャッシュ有効性判定処理は、ステップＳ１１２に進む。ステップＳ１１２は、ループ処理Ａの終端である。そのため、キャッシュ有効性判定処理は、ステップＳ１０８に戻る。
【００８２】
ステップＳ１１６において、キャッシュ有効性判定部２０８０は、取得したキーに対応するキャッシュは有効であると判定する。
【００８３】
＜作用・効果＞
以上により、本実施形態のデータ読み込み装置２０００は、キーをキャッシュ有効性判定部２０８０に入力することで、キーに対応するキャッシュが無効であるか否かを判定する。したがって、データ読み込み装置２０００は、キーに対応するキャッシュが無効であるか否かを、キーごとに判定することができる。これにより、キャッシュが無効であるか否かの判定を全てのキャッシュについて一度に行う場合と比較し、キャッシュが無効であるか否かの判定を行う処理にかかる時間を短くすることができる。
【００８４】
[実施形態２]
図７は、本実施形態に係るデータ読み込み装置２０００を表すブロック図である。図７が示す機能構成部のうち、図１に同符号の機能構成部があるものは、特に説明しない限り図１における同符号の機能構成部と同じ機能を有する。また、図７において、各機能構成部は、ハードウエア単位の構成ではなく、機能単位の構成を示している。
【００８５】
本実施形態のデータ読み込み装置２０００は、無効キー情報削除部２０９０を有する。無効キー情報削除部２０９０は、無効キー情報格納部２０６０から、以下に示す方法で無効キー情報を削除する。まず無効キー情報削除部２０９０は、キャッシュ情報格納部２０２０に格納されているキャッシュ情報が示すキャッシュ有効時点の中から、最も過去の時点を示すキャッシュ有効時点を抽出する。ここで、抽出されたキャッシュ有効時点を、基準キャッシュ有効時点と表記する。
【００８６】
そして、無効キー情報削除部２０９０は、無効キー情報格納部２０６０に格納されている無効キー情報のうち、キャッシュ無効時点が基準キャッシュ有効時点より前の時点を示す無効キー情報を、無効キー情報格納部２０６０から削除する。
【００８７】
＜作用・効果＞
以上により、本実施形態によれば、データ読み込み装置２０００は、無効キー情報格納部２０６０に格納されている無効キー情報を削除する。無効キー情報削除部２０９０が削除する無効キー情報は、キャッシュ有効性判定部２０８０によって利用されることがない無効キー情報である。実施形態１で述べた通り、キャッシュ有効性判定部２０８０のキャッシュ有効性判定処理は、無効キー情報が示すキャッシュ無効時点が、キーに対応するキャッシュ情報が示すキャッシュ有効時点より後の時点を示す無効キー情報を用いる。したがって、無効キー情報が示すキャッシュ無効時点が、キャッシュ情報が示すキャッシュ有効時点のうち最も過去の時点を示すキャッシュ有効時点（基準キャッシュ有効時点）よりも前を示す無効キー情報は、キャッシュ有効性判定処理に利用されない。
【００８８】
そのため、無効キー情報削除部２０９０が、上記に示す方法でキャッシュ情報を削除しても、キャッシュ有効性判定処理の精度は下がらない。したがって、本実施形態の２０００は、キャッシュ有効性判定処理の精度を下げずに、無効キー情報の格納に要する計算機資源を少なくすることができる。
【００８９】
[実施形態３]
図８は、実施形態３に係るデータ読み込み装置２０００を示す図である。図８が示す機能構成部のうち、図１に同符号の機能構成部があるものは、特に説明しない限り図１における同符号の機能構成部と同じ機能を有する。また、図８において、各機能構成部は、ハードウエア単位の構成ではなく、機能単位の構成を示している。
【００９０】
本実施形態のデータ読み込み装置２０００は、読み込み部２１００を有する。読み込み部２１００は、キーに対応するキャッシュを読み込む時に、そのキーに対応するキャッシュが有効であるか否かの判定を、キャッシュ有効性判定部２０８０に行わせる。
【００９１】
キャッシュ有効性判定部２０８０が、キャッシュは有効であると判定した場合、読み込み部２１００は、例えばそのキーに対応するキャッシュを取得する。
【００９２】
キャッシュ有効性判定部２０８０が、キャッシュは無効であると判定した場合、例えば読み込み部２１００は、キーに対応するソースデータを、ソースデータ格納領域から取得する。
【００９３】
その他にも例えば、読み込み部２１００は、キャッシュが無効である場合、データの読み出しを遅延してもよい。例えば複数のデータ読み込み装置２０００が、１つのキャッシュ格納領域３０００を共有しているとする。この場合、例えば処理量が多いデータ読み込み装置２０００の読み込み部２１００はデータの読み出しを遅延し、処理量が少ないデータ読み込み装置２０００の読み込み部２１００はキャッシュ格納領域３０００からデータの読み出しを行うようにする。こうすることで、複数のデータ読み込み装置２０００の間で負荷が分散される。
【００９４】
＜作用・効果＞
以上の構成により、データ読み込み装置２０００は、キーに対応するキャッシュが無効であるか否かを、キーに対応するキャッシュを読み込む時に行う。そのため、データ読み込み装置２０００は、無効なキャッシュを取得することを防ぎつつ、キーに対応するキャッシュが無効であるか否かの判定を行う回数を少なくすることができる。
【００９５】
[実施形態４]
＜概要＞
図９は、本実施形態におけるデータ書き込み装置５０００を示す図である。図９において、矢印は情報の流れを表している。また、図９において、各機能構成部は、ハードウエア単位の構成ではなく、機能単位の構成を示している。
【００９６】
本実施形態のデータ書き込み装置５０００は、ソースデータ格納領域６０００に対し、キーに対応するソースデータの書き込みを行う。
【００９７】
データ書き込み装置５０００は、書き込み部２１３０、無効キー集合生成部２１４０および無効キー集合送信部２１６０を有する。書き込み部２１３０は、キーに対応するソースデータを、ソースデータ格納領域６０００に書き込む。
【００９８】
無効キー集合生成部２１４０は、データ書き込み装置５０００が、ソースデータ格納領域６０００に対して書き込んだキャッシュが無効であることを示す無効キー集合を生成する。具体的には、無効キー集合生成部２１４０は、データ書き込み装置５０００がソースデータ格納領域６０００に対して書き込んだソースデータに対応するキーのキー変換値を算出し、算出したキー変換値を含む無効キー集合を生成する。
【００９９】
無効キー集合送信部２１６０は、無効キー集合生成部２１４０が生成した無効キー集合を送信する。無効キー集合送信部２１６０は、例えばデータ読み込み装置２０００や無効キー集合を集中管理する管理装置へ無効キー集合を送信する。
【０１００】
以上のように、本実施形態のデータ書き込み装置５０００は、ソースデータ格納領域６０００に対して書き込んだソースデータと同一のキーに対応するキャッシュが無効であることを示す無効キー集合を生成する。そして、データ書き込み装置５０００は、生成した無効キー集合を送信する。こうすることで、データ書き込み装置５０００は、ソースデータの複製であるキャッシュの読み出しを行う装置に対して、キャッシュが無効なデータに対応するキーを示す情報を提供することができる。
【０１０１】
以下、本実施形態の詳細を述べる。
【０１０２】
＜無効キー集合生成部２１４０の詳細＞
例えば無効キー集合生成部２１４０は、次に示す方法で無効キー集合を生成する。まず無効キー集合生成部２１４０は、空の無効キー集合を生成する。そして、データ書き込み装置５０００がソースデータ格納領域６０００に対して書き込んだソースデータに対応するキーのキー変換値を、無効キー集合に追加する。
【０１０３】
データ書き込み装置５０００がソースデータ格納領域６０００に対して複数のソースデータを書き込んだ場合、無効キー集合生成部２１４０は、それぞれのソースデータについて無効キー集合を生成してもよいし、複数のソースデータについてまとめて無効キー集合を生成してもよい。複数のソースデータについてまとめて無効キー集合を生成する場合、無効キー集合生成部２１４０は、各ソースデータに対応するキーそれぞれについてキー変換値を算出する。そして、算出した複数のキー変換値を含む無効キー集合を生成する。
【０１０４】
無効キー集合生成部２１４０が無効キー集合を生成するタイミングは様々である。例えば無効キー集合生成部２１４０は、データ書き込み装置５０００がソースデータ格納領域６０００に対してソースデータの書き込みを行う度に、そのソースデータと同一のキーに対応するキャッシュが無効であることを示す無効キー集合を生成する。その他にも例えば、データ書き込み装置５０００は、他のデータ書き込み装置５０００や、ソースデータ格納領域６０００に格納されているソースデータの複製であるキャッシュを読み込む装置とバリヤ同期を行うタイミングで、無効キー集合を生成する。
【０１０５】
その他にも例えば、無効キー集合生成部２１４０は、所定期間の間にデータ書き込み装置５０００がソースデータ格納領域６０００に対して書き込んだソースデータについて、無効キー集合を生成する。上記所定期間とは、例えばデータ書き込み装置５０００が排他制御のためのロックを獲得してから、そのロックを解放するまでの間である。
【０１０６】
この場合、例えば無効キー集合生成部２１４０は、データ書き込み装置５０００がロックを解放する時に、無効キー集合を生成してもよい。また、無効キー集合生成部２１４０は、データ書き込み装置５０００がロックを獲得した時に空の無効キー集合を生成し、データ書き込み装置５０００がソースデータの書き込みを行う度に、そのソースデータに対応するキーのキー変換値を無効キー集合に追加してもよい。
【０１０７】
＜無効キー集合送信部２１６０の詳細＞
無効キー集合送信部２１６０が無効キー集合を送信するタイミングは様々である。例えば無効キー集合送信部２１６０は、排他制御のために獲得したロックを解放する時に、無効キー集合を送信する。その他にも例えば無効キー集合送信部２１６０は、定期的に無効キー集合を送信してもよい。その他にも例えば、無効キー集合送信部２１６０は、無効キー集合生成部２１４０が無効キー集合を生成する度に、無効キー集合生成部２１４０が生成した無効キー集合を送信してもよい。
【０１０８】
＜変形例４−１＞
実施形態１、２、または３のデータ読み込み装置２０００は、本実施形態のデータ書き込み装置５０００が有する機能構成部を有してもよい。この場合のデータ読み込み装置２０００を、変形例４−１のデータ読み込み装置２０００と表記する。変形例４−１のデータ読み込み装置２０００は、キャッシュ格納領域３０００からのキャッシュの読み出し、及びソースデータ格納領域６０００へのソースデータの書き込みを行う。
【０１０９】
＜変形例４−２＞
同様に、本実施形態のデータ書き込み装置５０００は、実施形態１、２、または３のデータ読み込み装置２０００が有する機能構成部を有してもよい。
【０１１０】
＜作用・効果＞
以上の構成により、本実施形態によれば、データ書き込み装置５０００は、ソースデータ格納領域６０００に対して書き込んだソースデータと同一のキーに対応するキャッシュが無効であることを示す無効キー集合を生成する。そして、データ書き込み装置５０００は、生成した無効キー集合を送信する。こうすることで、データ書き込み装置５０００は、キャッシュ格納領域３０００からキーに対応するソースデータの複製であるキャッシュの読み込みを行う装置に対して、キャッシュが無効なソースデータに対応するキーを示す情報を提供することができる。
【０１１１】
[実施形態５]
図１０は、本実施形態に係る分散システム４０００を示すブロック図である。図１０の機能構成部のうち、図１、７、８又は１０に同符号の機能構成部があるものは、特に説明しない限り、図１、７、８、又は１０における同符号の機能構成部と同じ機能を有するとする。また、図１０において、各機能構成部は、ハードウエア単位の構成ではなく、機能単位の構成を示している。
【０１１２】
分散システム４０００は、データ書き込み装置５０００及びデータ読み込み装置２０００を有する。データ書き込み装置５０００は、ソースデータ格納領域６０００に対し、キーに対応するソースデータの書き込みを行う。データ読み込み装置２０００は、キャッシュ格納領域３０００から、キーに対応するソースデータの複製であるキャッシュを読み込む。一貫性管理装置７０００は、分散システム４０００におけるキャッシュの一貫性を管理する。
【０１１３】
データ書き込み装置５０００は、例えば図９が示す実施形態４におけるデータ書き出し装置３０００と同じ機能構成部を有する。そのため、図１０において、データ書き込み装置５０００の内部構成は省略している。ただし本実施形態において、データ書き込み装置５０００の無効キー集合送信部２１６０は、一貫性管理装置７０００に対して無効キー集合の送信を行う。
【０１１４】
データ読み込み装置２０００は、例えば図１が示す実施形態１に係るデータ読み込み装置２０００、図７が示す実施形態２に係るデータ読み込み装置２０００、又は図８が示す実施形態３に係るデータ読み込み装置２０００と同じ機能構成部を有する。そのため、図１０において、データ読み込み装置２０００の内部構成は省略している。ただし、本実施形態のデータ読み込み装置２０００の無効キー集合受信部２０４０は、一貫性管理装置７０００から無効キー集合を受信する。
【０１１５】
一貫性管理装置７０００は、無効キー集合格納部７０２０、無効キー集合受信部７０４０、及び無効キー集合送信部７０６０を有する。無効キー集合格納部７０２０は、無効キー集合を格納する。無効キー集合受信部７０４０は、データ書き込み装置５０００から無効キー集合を受信し、受信した無効キー集合を無効キー集合格納部７０２０に格納する。無効キー集合送信部７０６０は、無効キー集合格納部７０２０に格納されている無効キー集合を、データ読み込み装置２０００へ送信する。
【０１１６】
無効キー集合受信部７０４０が複数の無効キー集合を受信した場合、例えば無効キー集合格納部７０２０は、その複数の無効キー集合をそれぞれ格納する。これにより、各無効キー集合に含まれるキー変換値の個数が少なくなるため、データ読み込み装置２０００が行うキャッシュ有効性判定処理の精度が高くなる。
【０１１７】
その他にも例えば、無効キー集合受信部７０４０が複数の無効キー集合を受信した場合、無効キー集合格納部７０２０は、受信した複数の無効キー集合の和集合を、一つの無効キー集合として格納してもよい。こうすることで、データ読み込み装置２０００に対して送信する無効キー集合の容量を小さくすることができる。
【０１１８】
＜変形例５−１＞
データ書き込み装置５０００は、データ読み込み装置２０００が有する機能構成部をさらに有してもよい。またこの場合、一貫性管理装置７０００は、データ読み込み装置２０００が有する機能構成部をさらに有するデータ書き込み装置５０００を、データ読み込み装置２０００としても扱う。
【０１１９】
また、データ読み込み装置２０００は、データ書き込み装置５０００が有する機能構成部をさらに有してもよい。またこの場合、一貫性管理装置７０００は、データ書き込み装置５０００が有する機能構成部をさらに有するデータ読み込み装置２０００を、データ書き込み装置５０００としても扱う。
【０１２０】
＜作用・効果＞
以上の構成により、本実施形態によれば、分散システム４０００は、データ書き込み装置５０００、データ読み込み装置２０００、及び一貫性管理装置７０００を有する。そして、一貫性管理装置７０００は、データ書き込み装置５０００から受信した無効キー集合を格納し、格納している無効キー集合をデータ読み込み装置２０００へ送信する。こうすることで、分散システム４０００は、一貫性管理装置７０００により無効キー集合の集中管理を行うことができる。
【０１２１】
一貫性管理装置７０００が無効キー集合の集中管理を行うことで、例えば分散システム４０００は、データ書き込み装置５０００やデータ読み込み装置２０００の処理負荷を小さくすることができる。
【０１２２】
例えば、データ書き込み装置５０００が送信した無効キー集合を一貫性管理装置７０００が受信するため、データ読み込み装置２０００は、データ書き込み装置５０００が無効キー集合を送信する度に無効キー集合を受信する必要がない。したがって、例えば分散システム４０００は、データ読み込み装置２０００の処理負荷を考慮したタイミングで、データ読み込み装置２０００に対して無効キー集合を送信することができる。
【０１２３】
その他にも例えば、一貫性管理装置７０００が受信した複数の無効キー集合の和集合を格納することで、データ書き込み装置５０００やデータ読み込み装置２０００が複数の無効キー集合の和集合を生成する処理を行う回数を少なくすることができる。
【０１２４】
また、データ書き込み装置５０００が送信した無効キー集合を一貫性管理装置７０００が受信するため、データ書き込み装置５０００とデータ読み込み装置２０００は通信できなくてもよい。そのため、分散システム４０００は、ネットワークを柔軟に構成することができる。
【０１２５】
[実施形態６]
図１１は、本実施形態の分散システム４０００を示すブロック図である。ここで、図１１が示す機能構成部のうち、図１０に同符号の機能構成部があるものは、特に説明しない限り図１０に示す機能構成部と同じ機能を有するとする。また、図１１において、各機能構成部は、ハードウエア単位の構成ではなく、機能単位の構成を示している。
【０１２６】
本実施形態における分散システム４０００は、データ読み込み装置２０００を複数有する。また、本実施形態における一貫性管理装置７０００は、無効キー集合削除部７０８０をさらに有する。無効キー集合削除部７０８０の機能については後述する。
【０１２７】
本実施形態における一貫性管理装置７０００の無効キー集合格納部７０２０は、無効キー集合を、データ読み込み装置２０００ごとに格納する。
【０１２８】
本実施形態における一貫性管理装置７０００の無効キー集合受信部７０４０は、受信した無効キー集合に含まれる値を、データ読み込み装置２０００ごとに格納している無効キー集合それぞれに追加する。これにより、データ読み込み装置２０００のＩＤに紐づけられた無効キー集合は、無効キー集合格納部７０２０が受信した無効キー集合の和集合となる。
【０１２９】
本実施形態における一貫性管理装置７０００は、無効キー集合削除部７０８０を有する。無効キー集合削除部７０８０は、無効キー集合送信部７０６０が無効キー集合の送信を行った場合に、無効キー集合格納部７０２０から、無効キー集合送信部７０６０が送信した無効キー集合を削除する。
【０１３０】
例えば無効キー集合削除部７０８０は、無効キー集合削除部７０８０から、無効キー集合送信部７０６０が無効キー集合を送信した送信先であるデータ読み込み装置２０００のＩＤを取得する。そして、無効キー集合削除部７０８０は、無効キー集合格納部７０２０から、取得したＩＤに紐付いている無効キー集合を削除する。
＜変形例６−１＞
データ書き込み装置５０００は、データ読み込み装置２０００が有する機能構成部をさらに有してもよい。またこの場合、一貫性管理装置７０００は、データ読み込み装置２０００が有する機能構成部をさらに有するデータ書き込み装置５０００を、データ読み込み装置２０００としても扱う。
【０１３１】
また、データ読み込み装置２０００は、データ書き込み装置５０００が有する機能構成部をさらに有してもよい。またこの場合、一貫性管理装置７０００は、データ書き込み装置５０００が有する機能構成部をさらに有するデータ読み込み装置２０００を、データ書き込み装置５０００としても扱う。
【０１３２】
無効キー集合受信部７０４０は、データ読み込み装置２０００の機能構成部を有するデータ書き込み装置５０００から無効キー集合を受信した場合、そのデータ書き込み装置５０００のＩＤに紐づけられて格納されている無効キー集合に対しては、受信した無効キー集合に含まれる値を追加しなくてもよい。
【０１３３】
＜作用・効果＞
以上の構成により、本実施形態によれば、無効キー集合格納部７０２０は、無効キー集合を、データ読み込み装置２０００のＩＤに紐付けて格納する。無効キー集合受信部７０４０は、受信した無効キー集合に含まれる値を、各データ読み込み装置２０００のＩＤに紐づけられた無効キー集合に加える。これにより、データ読み込み装置２０００のＩＤに紐づけられた無効キー集合は、無効キー集合格納部７０２０が受信した無効キー集合の和集合となる。こうすることで分散システム４０００は、一貫性管理装置７０００が無効キー集合を格納するための計算機資源を削減することができる。
【０１３４】
さらに、無効キー集合削除部７０８０は、無効キー集合送信部７０６０が無効キー集合の送信を行った場合に、無効キー集合格納部７０２０から、無効キー集合送信部７０６０が送信した無効キー集合を削除する。こうすることで、無効キー集合削除部７０８０は、各無効キー集合に含まれる値の個数が増加していくことを防ぐ。こうすることで、本実施形態の分散システム４０００は、一貫性管理装置７０００により、データ読み込み装置２０００が行うキャッシュ有効性判定処理の判定精度を高くすることができる。
【０１３５】
以上、図面を参照して本発明の実施形態及び変形例について述べたが、これらは本発明の例示であり、上記実施形態及び変形例の組み合わせ、及び上記実施形態及び変形例以外の様々な構成を採用することもできる。
【０１３６】
＜付記＞
（付記１）
キーに対応するソースデータの複製であるキャッシュを前記キーに対応づけて格納しているキャッシュ格納領域から、前記キーに対応する前記キャッシュを読み込むデータ読み込み装置であって、
前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納手段と、
無効な前記キャッシュに対応する前記キーを所定の方法で変換した値であるキー変換値を含む無効キー集合を受信する無効キー情報受信手段と、
前記無効キー情報受信手段が受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納手段と、
前記キーを取得し、前記キャッシュ情報格納手段から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納手段から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定手段と、
を有するデータ読み込み装置。
（付記２）
前記キャッシュ有効性判定手段は、前記無効キー情報を複数取得した際、複数の前記無効キー情報それぞれが示す前記無効キー集合の和集合である無効キー和集合を生成し、入力として取得した前記キーから前記所定の方法で算出した前記キー変換値が、該無効キー和集合に含まれている場合に、該キーに対応する前記キャッシュが無効であると判定する付記１記載のデータ読み込み装置。
（付記３）
前記キャッシュ情報格納手段に格納されているキャッシュ情報が示すキャッシュ有効時点の中から、最も過去の時点を示す前記キャッシュ有効時点を基準有効時点として抽出し、前記無効キー情報格納手段に格納されている前記無効キー情報が示すキャッシュ無効時点が、前記基準有効時点より前の時点を示す場合は、該無効キー情報を前記無効キー情報格納手段から削除する無効キー情報削除手段をさらに有する付記１又は２記載のデータ読み込み装置。
（付記４）
前記キーに対応する前記キャッシュを取得する時に、該キーを与えて前記キャッシュ有効性判定手段を動作させる読み込み手段をさらに有する付記１乃至３いずれか一項に記載のデータ読み込み装置。
（付記５）
付記１乃至４いずれか一項に記載のデータ読み込み装置であって、
前記ソースデータが格納されているソースデータ格納領域に対して前記ソースデータの書き込みを行う書き込み手段と、
書き込んだ前記ソースデータに対応する前記キーを前記所定の方法で変換して前記キー変換値を算出し、算出した前記キー変換値を含む前記無効キー集合を生成する無効キー集合生成手段と、
前記無効キー集合を送信する無効キー集合送信手段と、
をさらに有するデータ読み込み装置。
（付記６）
キーに対応づけてソースデータが格納されているソースデータ格納領域に対して、前記ソースデータの書き込みを行う書き込み手段と、
書き込んだ前記ソースデータに対応する前記キーを所定の方法で変換してキー変換値を算出し、算出した前記キー変換値を含む無効キー集合を生成する無効キー集合生成手段と、
前記無効キー集合を送信する無効キー集合送信手段と、
を有するデータ書き込み装置。
（付記７）
キーに対応するソースデータを格納しているソースデータ格納領域に対して前記ソースデータを書き込むデータ書き込み装置と、前記ソースデータの複製であるキャッシュを、該ソースデータに対応するキーと対応づけて格納しているキャッシュ格納領域から、前記キャッシュを読み込むデータ読み込み装置と、前記キャッシュの一貫性を管理する一貫性管理装置とを有する分散システムであって、
前記データ書き込み装置は、
前記ソースデータ格納領域に対して前記ソースデータの書き込みを行う書き込み手段と、
書き込んだ前記ソースデータに対応する前記キーを所定の方法で変換してキー変換値を算出し、算出した前記キー変換値を含む無効キー集合を生成する無効キー集合生成手段と、
前記無効キー集合を前記一貫性管理装置へ送信する無効キー集合送信手段と、
を有し、
前記データ読み込み装置は、
前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納手段と、
無効な前記キャッシュに対応する前記キーを前記所定の方法で変換した値である前記キー変換値を含む無効キー集合を前記一貫性管理装置から受信する無効キー情報受信手段と、
前記無効キー情報受信手段が受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納手段と、
前記キーを取得し、前記キャッシュ情報格納手段から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納手段から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定手段と、
を有し、
前記一貫性管理装置において、
前記無効キー集合を格納する無効キー集合格納手段と、
前記データ書き込み装置から前記無効キー集合を受信し、受信した該無効キー集合を前記無効キー集合格納手段に格納する無効キー集合受信手段と、
前記データ読み込み装置に対し、前記無効キー格納手段に格納されている前記無効キー集合を送信する無効キー集合送信手段と、
を有する分散システム。
（付記８）
付記７記載の分散システムであって、
複数のデータ読み込み装置を有し、
前記一貫性管理装置は、
前記無効キー集合格納手段は、前記無効キー集合を前記データ読み込み装置のＩＤと紐づけ、複数の前記データ読み込み装置ごとに前記無効キー集合を格納し、
前記無効キー集合受信手段は、
受信した前記無効キー集合に含まれる値を、前記無効キー集合格納手段に格納されている前記無効キー集合それぞれに加え、
前記無効キー集合送信手段は、前記データ読み込み装置に対し、該データ読み込み装置のＩＤに紐づいている前記無効キー集合を送信し、
前記無効キー集合送信手段が前記データ読み込み装置に対して前記無効キー集合を送信した場合に、該無効キー集合を前記無効キー集合格納手段から削除する無効キー集合削除手段をさらに有すること、
を特徴とする分散システム。
（付記９）
コンピュータが、キーに対応するソースデータの複製であるキャッシュを前記キーに対応づけて格納しているキャッシュ格納領域から、前記キーに対応する前記キャッシュを読み込むデータ読み込み装置として動作する方法であって、
前記コンピュータが、前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納ステップと、
前記コンピュータが、無効な前記キャッシュに対応する前記キーを所定の方法で変換した値であるキー変換値を含む無効キー集合を受信する無効キー情報受信ステップと、
前記コンピュータが、前記無効キー情報受信ステップで受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納ステップと、
前記コンピュータが、前記キーを取得し、前記キャッシュ情報格納ステップで格納した前記キャッシュ情報から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納ステップで格納した前記無効キー情報から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定ステップと、
を有する方法。
（付記１０）
前記キャッシュ有効性判定ステップは、前記コンピュータが、前記無効キー情報を複数取得した際、複数の前記無効キー情報それぞれが示す前記無効キー集合の和集合である無効キー和集合を生成し、入力として取得した前記キーから前記所定の方法で算出した前記キー変換値が、該無効キー和集合に含まれている場合に、該キーに対応する前記キャッシュが無効であると判定する付記９記載の方法。
（付記１１）
前記コンピュータが、前記キャッシュ情報格納ステップで格納したキャッシュ情報が示すキャッシュ有効時点の中から、最も過去の時点を示す前記キャッシュ有効時点を基準有効時点として抽出し、前記無効キー情報格納ステップで格納した前記無効キー情報が示すキャッシュ無効時点が、前記基準有効時点より前の時点を示す場合は、該無効キー情報を削除する無効キー情報削除ステップをさらに有する付記９又は１０記載の方法。
（付記１２）
前記コンピュータが、前記キーに対応する前記キャッシュを取得する時に、該キーを与えて前記キャッシュ有効性判定ステップを動作させる読み込みステップをさらに有する付記９乃至１１いずれか一項に記載の方法。
（付記１３）
付記９乃至１２いずれか一項に記載の方法であって、
前記コンピュータが、前記ソースデータが格納されているソースデータ格納領域に対して前記ソースデータの書き込みを行う書き込みステップと、
前記コンピュータが、書き込んだ前記ソースデータに対応する前記キーを前記所定の方法で変換して前記キー変換値を算出し、算出した前記キー変換値を含む前記無効キー集合を生成する無効キー集合生成ステップと、
前記コンピュータが、前記無効キー集合を送信する無効キー集合送信ステップと、
をさらに有する方法。
（付記１４）
コンピュータが、キーに対応づけてソースデータが格納されているソースデータ格納領域に対して、前記ソースデータの書き込みを行うデータ書き込み装置として動作する方法であって、
前記コンピュータが、前記ソースデータ格納領域に対して、前記ソースデータの書き込みを行う書き込みステップと、
前記コンピュータが、書き込んだ前記ソースデータに対応する前記キーを所定の方法で変換してキー変換値を算出し、算出した前記キー変換値を含む無効キー集合を生成する無効キー集合生成ステップと、
前記コンピュータが、前記無効キー集合を送信する無効キー集合送信ステップと、
を有する方法。
（付記１５）
キーに対応するソースデータを格納しているソースデータ格納領域に対して前記ソースデータを書き込むデータ書き込み装置と、前記ソースデータの複製であるキャッシュを、該ソースデータに対応するキーと対応づけて格納しているキャッシュ格納領域から、前記キャッシュを読み込むデータ読み込み装置と、前記キャッシュの一貫性を管理する一貫性管理装置とを有する分散システムを制御する方法であって、
前記データ書き込み装置が、前記ソースデータ格納領域に対して前記ソースデータの書き込みを行う書き込みステップと、
前記データ書き込み装置が、書き込んだ前記ソースデータに対応する前記キーを所定の方法で変換してキー変換値を算出し、算出した前記キー変換値を含む無効キー集合を生成する無効キー集合生成ステップと、
前記データ書き込み装置が、前記無効キー集合を前記一貫性管理装置へ送信する無効キー集合送信ステップと、
前記データ読み込み装置が、前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納ステップと、
前記データ読み込み装置が、無効な前記キャッシュに対応する前記キーを所定の方法で変換した値であるキー変換値を含む無効キー集合を、前記一貫性管理装置から受信する無効キー情報受信ステップと、
前記コンピュータが、前記無効キー情報受信ステップが受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納ステップと、
前記コンピュータが、前記キーを取得し、前記キャッシュ情報格納ステップで格納した前記キャッシュ情報から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納ステップで格納した前記無効キー情報から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定ステップと、
前記一貫性管理装置が、前記無効キー集合を格納する無効キー集合格納ステップと、
前記一貫性管理装置が、前記データ書き込み装置から前記無効キー集合を受信し、受信した該無効キー集合を前記無効キー集合格納ステップで格納する無効キー集合受信ステップと、
前記一貫性管理装置が、前記データ読み込み装置に対し、前記無効キー格納ステップで格納した前記無効キー集合を送信する無効キー集合送信ステップと、
を有する方法。
（付記１６）
付記１５記載の方法であって、
前記分散システムは、複数のデータ読み込み装置を有し、
前記無効キー集合格納ステップは、前記一貫性管理装置が、前記無効キー集合を前記データ読み込み装置のＩＤと紐づけ、複数の前記データ読み込み装置ごとに前記無効キー集合を格納し、
前記無効キー集合受信ステップは、前記一貫性管理装置が、受信した前記無効キー集合に含まれる値を、前記無効キー集合格納ステップで格納した前記無効キー集合それぞれに加え、
前記無効キー集合送信ステップは、前記一貫性管理装置が、前記データ読み込み装置に対し、該データ読み込み装置のＩＤに紐づいている前記無効キー集合を送信し、
前記無効キー集合送信ステップで、前記データ読み込み装置に対して前記無効キー集合を送信した場合に、該無効キー集合を削除する無効キー集合削除ステップをさらに有すること、
を特徴とする方法。
（付記１７）
コンピュータに、キーに対応するソースデータの複製であるキャッシュを前記キーに対応づけて格納しているキャッシュ格納領域から、前記キーに対応する前記キャッシュを読み込むデータ読み込み装置として動作する機能を持たせるプログラムであって、前記コンピュータに、
前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納機能と、
無効な前記キャッシュに対応する前記キーを所定の方法で変換した値であるキー変換値を含む無効キー集合を受信する無効キー情報受信機能と、
前記無効キー情報受信機能が受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納機能と、
前記キーを取得し、前記キャッシュ情報格納機能が格納した前記キャッシュ情報から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納機能が格納した前記無効キー情報から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定機能と、
を持たせるプログラム。
（付記１８）
前記キャッシュ有効性判定機能は、前記無効キー情報を複数取得した際、複数の前記無効キー情報それぞれが示す前記無効キー集合の和集合である無効キー和集合を生成し、入力として取得した前記キーから前記所定の方法で算出した前記キー変換値が、該無効キー和集合に含まれている場合に、該キーに対応する前記キャッシュが無効であると判定する付記１７記載のプログラム。
（付記１９）
前記コンピュータに、前記キャッシュ情報格納機能で格納したキャッシュ情報が示すキャッシュ有効時点の中から、最も過去の時点を示す前記キャッシュ有効時点を基準有効時点として抽出し、前記無効キー情報格納機能で格納した前記無効キー情報が示すキャッシュ無効時点が、前記基準有効時点より前の時点を示す場合は、該無効キー情報を削除する無効キー情報削除機能をさらに持たせる付記１７又は１８記載のプログラム。
（付記２０）
前記コンピュータに、前記キーに対応する前記キャッシュを取得する時に、該キーを与えて前記キャッシュ有効性判定機能を動作させる読み込み機能をさらに持たせる付記１７乃至１９いずれか一項に記載の方法。
（付記２１）
付記１７乃至２０いずれか一項に記載のプログラムであって、前記コンピュータに、
前記ソースデータが格納されているソースデータ格納領域に対して前記ソースデータの書き込みを行う書き込み機能と、
書き込んだ前記ソースデータに対応する前記キーを前記所定の方法で変換して前記キー変換値を算出し、算出した前記キー変換値を含む前記無効キー集合を生成する無効キー集合生成機能と、
前記無効キー集合を送信する無効キー集合送信機能と、
をさらに持たせるプログラム。
（付記２２）
コンピュータを、キーに対応づけてソースデータが格納されているソースデータ格納領域に対して、前記ソースデータの書き込みを行うデータ書き込み装置として機能させるプログラムであって、前記コンピュータに、
前記ソースデータ格納領域に対して、前記ソースデータの書き込みを行う書き込み機能と、
書き込んだ前記ソースデータに対応する前記キーを所定の方法で変換してキー変換値を算出し、算出した前記キー変換値を含む無効キー集合を生成する無効キー集合生成機能と、
前記無効キー集合を送信する無効キー集合送信機能と、
を持たせるプログラム。
（付記２３）
キーに対応するソースデータを格納しているソースデータ格納領域に対して前記ソースデータを書き込むデータ書き込み装置と、前記ソースデータの複製であるキャッシュを、該ソースデータに対応するキーと対応づけて格納しているキャッシュ格納領域から、前記キャッシュを読み込むデータ読み込み装置と、前記キャッシュの一貫性を管理する一貫性管理装置とを有する分散システムを制御するプログラムであって、
前記データ書き込み装置に、
前記ソースデータ格納領域に対して前記ソースデータの書き込みを行う書き込み機能と、
前記書き込み機能が書き込んだ前記ソースデータに対応する前記キーを、所定の方法で変換し、キー変換値を算出し、算出した前記キー変換値を含む無効キー集合を生成する無効キー集合生成機能と、
前記無効キー集合を前記一貫性管理装置へ送信する無効キー集合送信機能と、
を持たせ、
前記データ読み込み装置に、
前記キーと、該キーに対応する前記キャッシュのキャッシュ有効時点とを紐づけた情報であるキャッシュ情報を格納するキャッシュ情報格納機能と、
無効な前記キャッシュに対応する前記キーを所定の方法で変換した値であるキー変換値を含む無効キー集合を、前記一貫性管理装置から受信する無効キー情報受信機能と、
前記無効キー情報受信機能が受信した前記無効キー集合と、該無効キー集合によって無効であることを示される前記キャッシュのキャッシュ無効時点とを紐づけた情報である無効キー情報を格納する無効キー情報格納機能と、
前記キーを取得し、前記キャッシュ情報格納機能で格納した前記キャッシュ情報から、該キーに紐づけられたキャッシュ有効時点を取得し、前記無効キー情報格納機能で格納した前記無効キー情報から、前記無効キー情報の前記キャッシュ無効時点が該キャッシュ有効時点より後の時点を示す前記無効キー情報を取得し、該キーから前記所定の方法で算出した前記キー変換値が、該無効キー情報が示す前記無効キー集合に含まれている場合は、該キーに対応する前記キャッシュが無効であると判定するキャッシュ有効性判定機能と、
を持たせ、
前記一貫性管理装置に、
前記無効キー集合を格納する無効キー集合格納機能と、
前記データ書き込み装置から前記無効キー集合を受信し、受信した該無効キー集合を前記無効キー集合格納機能で格納する無効キー集合受信機能と、
前記データ読み込み装置に対し、前記無効キー格納機能で格納した前記無効キー集合を送信する無効キー集合送信機能と、
を持たせるプログラム。
（付記２４）
付記２３記載のプログラムであって、
前記分散システムは、複数のデータ読み込み装置を有し、
前記無効キー集合格納機能は、前記一貫性管理装置が、前記無効キー集合を前記データ読み込み装置のＩＤと紐づけ、複数の前記データ読み込み装置ごとに前記無効キー集合を格納し、
前記無効キー集合受信機能は、前記一貫性管理装置が、受信した前記無効キー集合に含まれる値を、前記無効キー集合格納機能で格納した前記無効キー集合それぞれに加え、
前記無効キー集合送信機能は、前記一貫性管理装置が、前記データ読み込み装置に対し、該データ読み込み装置のＩＤに紐づいている前記無効キー集合を送信し、
前記一貫性管理装置に、前記無効キー集合送信機能で、前記データ読み込み装置に対して前記無効キー集合を送信した場合に、該無効キー集合を削除する無効キー集合削除機能をさらに持たせること、
を特徴とするプログラム。
【符号の説明】
【０１３７】
２００ キャッシュ情報テーブル
２０２ キー
２０４ キャッシュ有効時点
３００ 無効キー情報テーブル
３０２ 無効キー集合
３０４ キャッシュ無効時点
１０２０ バス
１０４０ ＣＰＵ
１０６０ ＲＡＭ
１０８０ ストレージ
１１００ 無効キー集合受信処理
１１２０ キャッシュ有効性判定処理
１１４０ 無効キー情報
１１６０ キャッシュ情報
２０００ データ読み込み装置
２０２０ キャッシュ情報格納部
２０４０ 無効キー集合受信部
２０６０ 無効キー情報格納部
２０８０ キャッシュ有効性判定部
２０９０ 無効キー情報削除部
２１００ 読み込み部
２１３０ 書き込み部
２１４０ 無効キー集合生成部
２１６０ 無効キー集合送信部
３０００ キャッシュ格納領域
４０００ 分散システム
５０００ データ書き込み装置
６０００ ソースデータ格納領域
７０００ 一貫性管理装置
７０２０ 無効キー集合格納部
７０４０ 無効キー集合受信部
７０６０ 無効キー集合送信部
７０８０ 無効キー集合削除部
【図１】
2014089627.tif 000003
【図２】
2014089627.tif 000004
【図３】
2014089627.tif 000005
【図４】
2014089627.tif 000006
【図５】
2014089627.tif 000007
【図６】
2014089627.tif 000008
【図７】
2014089627.tif 000009
【図８】
2014089627.tif 000010
【図９】
2014089627.tif 000011
【図１０】
2014089627.tif 000012
【図１１】
2014089627.tif 000013
【図１２】
2014089627.tif 000014