JP2017228211A - アクセスプログラム、データアクセス方法及び情報処理装置 - Google Patents

アクセスプログラム、データアクセス方法及び情報処理装置 Download PDF

Info

Publication number
JP2017228211A
JP2017228211A JP2016125570A JP2016125570A JP2017228211A JP 2017228211 A JP2017228211 A JP 2017228211A JP 2016125570 A JP2016125570 A JP 2016125570A JP 2016125570 A JP2016125570 A JP 2016125570A JP 2017228211 A JP2017228211 A JP 2017228211A
Authority
JP
Japan
Prior art keywords
data
memory device
storage area
data storage
stored
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.)
Pending
Application number
JP2016125570A
Other languages
English (en)
Inventor
駿 五木田
Shun Gokita
駿 五木田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016125570A priority Critical patent/JP2017228211A/ja
Publication of JP2017228211A publication Critical patent/JP2017228211A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】レイテンシの異なる複数のメモリデバイスを用いて、データを保管するコンピュータにおけるデータアクセスを高速化する。【解決手段】データアクセス方法は、レイテンシが小さい第1メモリデバイスとレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域を有し、アドレスとキーとを対応付ける記録を記憶するコンピュータにより実行される。新しいキーで識別される追加データの保存要求を受け付けた場合に、第1メモリデバイスの空き容量が不足しているか否かを判定する。空き容量が不足している場合に、当該データ格納領域の一部のデータを第2メモリデバイスに移動させ、移動させた一部のデータに関する記録におけるアドレスを更新し、第1メモリデバイスに、追加データを格納し、追加データが格納されたアドレスと、新たなキーとを対応付ける記録を設定する。【選択図】図9

Description

本発明は、複数の種類に係るメモリデバイスを用いてデータを保管する技術に関する。
例えばSNS(Social Networking Service)のように、大量のユーザがアクセスするようなサービスにおいて、アクセスがDBMS(Data Base Management System)に集中することがある。一般的にDBMSは低速なディスクが用いられているので、DBMSにアクセスが集中するとレスポンスが悪化する。その結果、ユーザーエクスペリエンスの低下を招き、アクセス障害が生じることもある。
このような事態を回避するため、複数のサーバによる分散処理を行うキャッシュサービスが適用されることがある。この場合、複数のサーバは、それぞれレイテンシの小さいDRAM(Dynamic Random Access Memory)を用いてデータをキャッシュする。
しかし、DRAMは高価であるので、キャッシュサーバのコストは高い。これに対して、低価格のメモリデバイスを用いると、キャッシュサーバの処理性能が低くなるという問題がある。
特開2013−200889号公報 特表2015−522886号公報
本発明の目的は、一側面では、レイテンシの異なる複数のメモリデバイスを用いてデータを保管するコンピュータにおけるデータアクセスを、より早めることである。
一態様に係るデータアクセス方法は、(A)第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータにより実行されるデータアクセス方法であって、(B)新たなキーで識別される追加データの保存要求を受け付けた場合に、第1メモリデバイスのデータ格納領域における空き容量が不足しているか否かを判定する判定処理と、(C)上記空き容量が不足していると判定した場合に、第1メモリデバイスのデータ格納領域に格納されているデータのうち一部のデータを第2メモリデバイスのデータ格納領域に移動させる処理と、(D)移動させた一部のデータに関する記録におけるアドレスを更新する処理と、(E)第1メモリデバイスのデータ格納領域に、追加データを格納する処理と、(F)追加データが格納されたアドレスと、新たなキーとを対応付ける記録を設定する処理とを含む。
一態様に係るデータアクセス方法は、(G)第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータにより実行されるデータアクセス方法であって、(H)第1メモリデバイスのデータ格納領域における空き容量が不足しているか否かを判定する処理と、(I)上記空き容量が不足していると判定した場合に、第1メモリデバイスのデータ格納領域に格納されているデータのうち一部のデータを第2メモリデバイスのデータ格納領域に移動させる処理と、(J)移動させた一部のデータに関する記録におけるアドレスを更新する処理とを含む第1ルーチン処理と、(K)新たなキーで識別される追加データの保存要求を受け付けた場合に、上記空き容量が充足されるタイミングを待って、第1メモリデバイスのデータ格納領域に、追加データを格納する処理と、(L)追加データが格納されたアドレスと、新たなキーとを対応付ける記録を設定する処理とを含む第2ルーチン処理とを並行に実行する。
一側面としては、レイテンシの異なる複数のメモリデバイスを用いてデータを保管するコンピュータにおけるデータアクセスを、より早めることができる。
図1は、コンピュータシステムの動作概要を示す図である。 図2は、コンピュータシステムの動作概要を示す図である。 図3は、アイテム保存のシーケンスを示す図である。 図4は、アイテム取得のシーケンスを示す図である。 図5は、アイテム取得のシーケンスを示す図である。 図6は、キャッシュサーバのハードウエア構成例を示す図である。 図7は、メモリデバイスに対するキャッシュ領域の割り当ての例を示す図である。 図8は、アイテム保存の処理概要を示す図である。 図9は、アイテム保存の処理概要を示す図である。 図10は、アイテム保存の処理概要を示す図である。 図11は、アイテム保存の処理概要を示す図である。 図12は、アイテム取得の処理概要を示す図である。 図13は、キャッシュサーバのモジュール構成例を示す図である。 図14は、ハッシュテーブルの例を示す図である。 図15は、メイン処理フローを示す図である。 図16は、第1サブルーチン処理フローを示す図である。 図17は、アイテム追加処理(A)フローを示す図である。 図18は、格納処理(A)フローを示す図である。 図19は、第1移動処理フローを示す図である。 図20は、削除処理(A)フローを示す図である。 図21は、第2サブルーチン処理(A)フローを示す図である。 図22は、実施の形態2におけるハッシュテーブルの例を示す図である。 図23は、アイテム追加処理(B)フローを示す図である。 図24は、格納処理(B)フローを示す図である。 図25は、削除処理(B)フローを示す図である。 図26は、第2サブルーチン処理(B)フローを示す図である。 図27は、実施の形態3におけるアイテム保存の処理概要を示す図である。 図28は、アイテム追加処理(C)フローを示す図である。 図29は、削除処理(C)フローを示す図である。 図30は、第2移動処理フローを示す図である。 図31は、実施の形態4におけるキャッシュサーバのモジュール構成例を示す図である。 図32は、アイテム追加処理(D)フローを示す図である。 図33は、調整処理フローを示す図である。 図34は、コンピュータの機能ブロック図である。
[実施の形態1]
図1に、コンピュータシステムの動作概要を示す。この例におけるコンピュータシステムは、Webサーバ101、キャッシュサーバ103及びデータベースサーバ105を含む。Webサーバ101、キャッシュサーバ103及びデータベースサーバ105は、それぞれネットワーク(例えば、LAN(Local Area Network))に接続している。
Webサーバ101が、所定データを取得しようとする場合のデータフローについて説明する。まず、Webサーバ101は、所定データの取得要求(Get要求)をキャッシュサーバ103へ送信する(S111)。
このとき、キャッシュサーバ103に所定データがキャッシュされていれば、キャッシュサーバ103は、所定データをWebサーバ101へ返信する(S113)。
一方、キャッシュサーバ103に所定データがキャッシュされていない場合の流れについて、図2を用いて説明する。S111の場合と同様に、Webサーバ101は、所定データの取得要求をキャッシュサーバ103へ送信する(S201)。キャッシュサーバ103は、所定データがキャッシュされていないと判断した場合、「キャッシュなし」の旨を示す通知をWebサーバ101へ返信する(S203)。
Webサーバ101は、「キャッシュなし」の旨を示す通知を受信すると、改めてデータベースサーバ105へ所定データの取得要求を送信する(S205)。
データベースサーバ105は、所定データをデータベースから取得して、Webサーバ101へ返信する(S207)。
所定データを受信したWebサーバ101は、所定データの保存要求(Set要求)をキャッシュサーバ103に送信する(S209)。
キャッシュサーバ103は、所定データの保存要求を受信すると、所定データをキャッシュする。この後、当該所定データの取得要求をWebサーバ101から受信した場合に、キャッシュサーバ103は、図1に示したように動作する。
続いて、Webサーバ101とキャッシュサーバ103との通信に係るシーケンスについて説明する。まず、アイテム保存のシーケンスについて図3を用いて説明する。アイテムは、キャッシュサーバ103において保管されるデータの単位である。Webサーバ101は、アイテムの保存要求をキャッシュサーバ103へ送信する(S301)。アイテムの保存要求は、キー及び値を含んでいる。値は、アイテムとして保存されるデータを表す。キーは、値を一意に識別するデータである。
保存対象のアイテムのキーが新規である場合には、キャッシュサーバ103は、当該アイテムを追加する。一方、保存対象のアイテムのキーが新規ではない場合、つまり既に保存しているアイテムのキーと一致する場合には、キャッシュサーバ103は、既に保存しているアイテムを更新する(S303)。
そして、キャッシュサーバ103は、成功の旨をWebサーバ101へ通知する(S305)。
次に、アイテム取得のシーケンスについて、図4及び図5を用いて説明する。図4は、取得対象のアイテムがキャッシュサーバ103に存在する場合のシーケンスである。Webサーバ101は、アイテムの取得要求をキャッシュサーバ103へ送る(S401)。アイテムの取得要求は、取得対象のアイテムを特定するためのキーを含んでいる。
キャッシュサーバ103は、当該キーで識別されるアイテムが存在すると判定し(S403)、アイテムを提供する。具体的には、キャッシュサーバ103は、当該キーに対応する値を特定し、当該値をWebサーバ101へ送信する(S405)。
一方、図5は、取得対象のアイテムがキャッシュサーバ103に存在しない場合のシーケンスである。S501において、図4のS401の場合と同様に、Webサーバ101からキャッシュサーバ103へアイテムの取得要求が送られる。
キャッシュサーバ103は、当該キーで識別されるアイテムが存在しないと判定し(S503)、「キャッシュなし」の旨の通知をWebサーバ101へ送る(S505)。以上で、シーケンスについての説明を終える。
図6に、キャッシュサーバ103のハードウエア構成例を示す。CPU(Central Processing Unit)601は、DRAM制御回路603、NVRAM(Non-Volatile Random Access Memory)制御回路607及び通信制御回路611と接続している。DRAM制御回路603は、DRAM605と接続している。DRAM制御回路603は、DRAM605を制御する。NVRAM制御回路607は、NVRAM609と接続している。NVRAM制御回路607は、NVRAM609を制御する。DRAM605及びNVRAM609は、主記憶装置として用いられる。通信制御回路611は、ネットワーク通信を制御する。尚、NVRAM609は、DRAM605よりもレイテンシが大きい。NVRAM609は、例えばPCM(Phase Change Memory)、ReRAM(Resistive Random Access Memory)及びMRAM(Magnetoresistive Random Access Memory)である。
図7に、メモリデバイスに対するキャッシュ領域の割り当ての例を示す。キャッシュ領域の一部は、DRAM605に割り当てられ、キャッシュ領域の残りの部分は、NVRAM609に割り当てられている。つまり、キャッシュ領域は、DRAM605とNVRAM609との両方を用いている。尚、この例で、ハッシュテーブルもDRAM605に割り当てられている。
本実施の形態におけるアイテム保存の処理概要について説明する。まず、新たなアイテムを追加する場合について説明する。図8に示すように、DRAM605のキャッシュ領域における空き容量が、保存対象のアイテムのサイズ以上である場合、キャッシュサーバ103は、当該アイテムをDRAM605のキャッシュ領域に追加する。
一方、図9に示すように、DRAM605のキャッシュ領域における空き容量が、保存対象のアイテムのサイズ未満である場合、キャッシュサーバ103は、DRAM605のキャッシュ領域における空き容量を増やす処理を行う。具体的には、キャッシュサーバ103は、DRAM605のキャッシュ領域に格納されているアイテムの一部をNVRAM609のキャッシュ領域に移す。そして、キャッシュサーバ103は、DRAM605のキャッシュ領域における空き容量を増やした後に、保存対象のアイテムをDRAM605のキャッシュ領域に追加する。本実施の形態では、キャッシュサーバ103は、DRAM605のキャッシュ領域に格納されているアイテムのうち、アクセス日時が古いものを優先的に移動させる。アクセス日時は、当該アイテムを書き込んだ日時及び読み取った日時のうち最近の日時である。後述する実施の形態では、キャッシュサーバ103は、DRAM605のキャッシュ領域に格納されているアイテムのうち、書き込み日時が古いものを優先的に移動させる。
尚、図9に示すように、NVRAM609のキャッシュ領域へアイテムを移動させるためには、NVRAM609のキャッシュ領域における空き容量が基準サイズ以上であることが条件となる。基準サイズについては、後に述べる。
NVRAM609のキャッシュ領域における空き容量が基準サイズに満たない場合には、図10に示すように、まず、キャッシュサーバ103は、NVRAM609のキャッシュ領域に格納されているアイテムの一部を削除する。その後、キャッシュサーバ103は、図9の場合と同様にアイテムを移動させ、新たなアイテムを追加する。
続いて、既存のアイテムを更新する場合について説明する。図11は、アイテムの保存要求に含まれるキーに対応する値が既に記憶されている状態を示している。このような場合には、値が書き換えられる。保存対象のアイテムがNVRAM609のキャッシュ領域に存在する場合も、同様である。
最後に、図12を用いてアイテム取得の処理について説明する。アイテムの取得要求に含まれるキーに対応するアイテムの値が既に記憶されているものとする。当該値が読み出されて、Webサーバ101へ返信される。取得対象のアイテムがNVRAM609のキャッシュ領域に存在する場合も、同様である。
尚、図8乃至図12において、移動元のアイテム、移動先のアイテム及び削除対象のアイテムを便宜的に1つのブロックで示した。実際には、移動対象のアイテムが複数であれば、各移動対象のアイテムが連続する範囲に格納されているとは限らない。従って、図示した移動元のアイテムは、複数のブロックに分かれていることがある。また、図示した移動先のアイテムは、複数のブロックに分かれていることがある。同様に、削除対象のアイテムが複数であれば、各削除対象のアイテムが連続する範囲に格納されているとは限らない。図示した削除対象のアイテムは、複数のブロックに分かれていることがある。尚、アイテムの大きさは、図8乃至図12に示した通りであるとは限らない。以上で本実施の形態における処理概要の説明を終える。
以下、キャッシュサーバ103の動作について説明する。図13に、キャッシュサーバ103のソフトウェアのモジュール構成例を示す。キャッシュサーバ103は、メイン処理部1300を有する。メイン処理部1300は、メイン処理及びメイン処理が呼び出す下位ルーチンの処理を実行する。メイン処理部1300は、受信部1301、送信部1303、探索部1305、第1判定部1307、追加部1309、読み取り部1327、書き込み部1329及び第2更新部1331を有する。
受信部1301は、クライアント(上述した例におけるWebサーバ101に相当する。)からアイテムの取得要求及びアイテムの保存要求を受信する。送信部1303は、クライアントへの応答を送信する。探索部1305は、ハッシュテーブルにおいて、キーに対応するレコードを探索する。第1判定部1307は、受信した要求の種別を判定する。追加部1309は、アイテムを追加する。読み取り部1327は、取得要求の対象となったアイテムの値をキャッシュ領域から読み取る。書き込み部1329は、保存要求の対象となったアイテムの値をキャッシュ領域へ書き込む。第2更新部1331は、アイテムに対するアクセス日時を更新する。
追加部1309は、第2判定部1311、格納処理部1313、設定部1315、第3判定部1317、第1移動部1319、第1更新部1321、削除部1323及び第2移動部1325を有する。
第2判定部1311は、DRAM605のキャッシュ領域における空き容量がアイテムのサイズ以上であるか否かを判定する。格納処理部1313は、アイテムをDRAM605のキャッシュ領域に格納する処理を行う。設定部1315は、ハッシュテーブルのレコードの各フィールドにパラメータを設定する。第3判定部1317は、NVRAM609のキャッシュ領域における空き容量が基準サイズ以上であるか否かを判定する。第1移動部1319は、DRAM605のキャッシュ領域に保持されているアイテムの一部を、NVRAM609のキャッシュ領域に移動する。第1更新部1321は、アイテムの値が格納されている仮想アドレスを更新する。削除部1323は、アイテムの削除に相当する処理を行う。具体的には、ハッシュテーブルにおける削除対象のアイテムのレコードがクリアされる。第2移動部1325は、NVRAM609のキャッシュ領域に保持されているアイテムの一部を、DRAM605のキャッシュ領域に移動する。
また、キャッシュサーバ103は、テーブル記憶部1341を有する。テーブル記憶部1341は、ハッシュテーブルを記憶する。ハッシュテーブルについては、図14を用いて後述する。その他、キャッシュサーバ103は、OS(オペレーティング・システム)1351を有する。OS1351は、例えば仮想アドレスを物理アドレスに変換する処理を行う。
上述した受信部1301、送信部1303、探索部1305、第1判定部1307、追加部1309、第2判定部1311、格納処理部1313、設定部1315、第3判定部1317、第1移動部1319、第1更新部1321、削除部1323、第2移動部1325、読み取り部1327、書き込み部1329及び第2更新部1331は、ハードウエア資源(例えば、図34)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
上述したテーブル記憶部1341は、ハードウエア資源(例えば、図34)を用いて実現される。
図14に、ハッシュテーブルの例を示す。この例におけるハッシュテーブルは、アイテムに対応するレコードを有している。レコードは、インデックスが格納されるフィールドと、キーが格納されるフィールドと、仮想アドレスが格納されるフィールドと、サイズが格納されるフィールドと、アクセス日時が格納されるフィールドとを有している。
インデックスは、キーのハッシュ値である。第3レコード及び第4レコードに示すように、1つのインデックスに複数のキーが対応する場合もある。一方、第5レコードに示すように、1つのインデックスにキーが対応付けられていない場合もある。キーが対応付けられていない場合には、キー、仮想アドレス、サイズ及びアクセス日時の各フィールドには、未設定のコードが格納される。
仮想アドレスは、値が設定されているキャッシュ領域の位置を示す。サイズは、値を示すデータの大きさである。アクセス日時は、当該アイテムの追加、更新又は提供を行った時点を表す。
図15に、メイン処理フローを示す。受信部1301が、クライアントからアイテムの取得要求又はアイテムの保存要求を受信すると(S1501)、探索部1305は、当該要求に含まれるキーを特定し(S1503)、当該キーに基づくハッシュ値を算出する(S1505)。そして、探索部1305は、ハッシュテーブルにおいて当該ハッシュ値と一致するインデックスのレコードを特定する(S1507)。そして、探索部1305は、当該レコードに当該キーが設定されているか否かを判定する(S1509)。当該レコードに当該キーが設定されていないと判定した場合、つまり当該キーが新たなキーである場合には、メイン処理部1300は、第1サブルーチン処理を実行する(S1511)。第1サブルーチン処理については、図16を用いて後述する。第1サブルーチン処理を終えると、S1501の処理に戻る。
一方、当該レコードに当該キーが設定されていると判定した場合には、メイン処理部1300は、第2サブルーチン処理を実行する(S1513)。第2サブルーチン処理については、図21を用いて後述する。第2サブルーチン処理を終えると、S1501の処理に戻る。
図16に、第1サブルーチン処理フローを示す。第1判定部1307は、図15のS1501において受信した要求が、アイテムの取得要求であるか否かを判定する(S1601)。当該受信した要求がアイテムの取得要求であると判定した場合には、送信部1303は、「キャッシュなし」の通知を、アイテムの取得要求の送信元であるクライアントに送信する(S1603)。第1サブルーチン処理を終えると、呼び出し元のメイン処理に復帰する。
一方、図15のS1501において受信した要求が、アイテムの取得要求ではないと判定した場合、つまり当該受信した要求がアイテムの保存要求である場合には、追加部1309は、アイテム追加処理を実行する(S1605)。アイテム追加処理では、新たなアイテムをキャッシュ領域に追加する。アイテム追加処理を終えると、呼び出し元のメイン処理に復帰する。
ここでは、アイテム追加処理(A)を実行する。図17に、アイテム追加処理(A)フローを示す。第2判定部1311は、DRAM605のキャッシュ領域における空き容量を算出する(S1701)。そして、第2判定部1311は、DRAM605のキャッシュ領域における空き容量が保存要求に係るアイテムのサイズ以上であるか否かを判定する(S1703)。アイテムのサイズは、具体的には保存要求に含まれる値のデータサイズである。
DRAM605のキャッシュ領域における空き容量がアイテムのサイズ以上であると判定した場合には、格納処理部1313は、格納処理を実行する(S1705)。格納処理では、DRAM605のキャッシュ領域に新たなアイテムを格納する。
ここでは、格納処理(A)を実行する。図18に、格納処理(A)フローを示す。格納処理部1313は、DRAM605のキャッシュ領域において、アイテムのサイズに相当する領域を確保し(S1801)、保存要求に含まれる値を当該領域に書き込む(S1803)。
設定部1315は、ハッシュテーブルにおいて、保存要求に含まれるキーに基づくハッシュ値に該当するインデックスのレコードに、当該キー、上記値を書き込んだ領域の仮想アドレス、当該アイテムのサイズ及び現時点を示すアクセス日時を設定する(S1805)。格納処理(A)を終えると、呼び出し元のアイテム追加処理(A)に復帰する。
図17の説明に戻る。格納処理を終えると、アイテム追加処理(A)も終え、第1サブルーチン処理に復帰する。
S1703において、DRAM605のキャッシュ領域における空き容量が保存要求に係るアイテムのサイズ未満であると判定した場合には、第3判定部1317は、DRAM605のキャッシュ領域に格納されているアイテムのうち、アクセス日時が古い順にM個(所定数)のアイテムを選択する(S1707)。そして、第3判定部1317は、M個のアイテムの合計サイズを算出する(S1709)。M個のアイテムの合計サイズは、空き容量の判定における基準サイズとなる。
第3判定部1317は、NVRAM609のキャッシュ領域における空き容量が基準サイズ以上であるか否かを判定する(S1711)。NVRAM609のキャッシュ領域における空き容量が基準サイズ以上であると判定した場合には、第1移動部1319は、第1移動処理を実行する(S1713)。第1移動処理では、DRAM605のキャッシュ領域に保持されているアイテムの一部を、NVRAM609のキャッシュ領域に移動する。尚、基準サイズは、所定の大きさであってもよい。
図19に、第1移動処理フローを示す。第1移動部1319は、図17のS1707で選択されたM個のアイテムのうち1つのアイテムを特定する(S1901)。
第1移動部1319は、NVRAM609のキャッシュ領域において、当該アイテムのサイズに相当する領域を確保する(S1903)。第1移動部1319は、DRAM605のキャッシュ領域において、当該アイテムの仮想アドレスに格納されている値を読み取る(S1905)。そして、第1移動部1319は、NVRAM609のキャッシュ領域において確保した領域に当該値を書き込む(S1907)。
第1更新部1321は、ハッシュテーブルにおいて、当該アイテムのレコードにおける仮想アドレスを更新する(S1909)。具体的には、第1更新部1321は、DRAM605のキャッシュ領域における移動元の仮想アドレスを、NVRAM609のキャッシュ領域における移動先の仮想アドレスに書き換える。
第1移動部1319は、M個のアイテムのうち未特定のアイテムがあるか否かを判定する(S1911)。M個のアイテムのうち未特定のアイテムがあると判定した場合には、S1901に示した処理に戻って、上述した処理を繰り返す。一方、未特定のアイテムがないと判定した場合には、第1移動処理を終え、呼び出し元のアイテム追加処理(A)に復帰する。
図17の説明に戻る。S1713における第1移動処理を終えると、格納処理部1313は、格納処理を実行する(S1715)。格納処理は、S1705の場合と同様である。そして、アイテム追加処理(A)を終え、第1サブルーチン処理に復帰する。
S1711において、NVRAM609のキャッシュ領域における空き容量が基準サイズ未満であると判定した場合には、削除部1323は、削除処理を実行する(S1717)。削除処理では、NVRAM609のキャッシュ領域に保持されている一部のアイテムを削除し、NVRAM609のキャッシュ領域における空き容量を増加させる。
本実施の形態では、削除処理(A)を実行する。図20に、削除処理(A)フローを示す。削除部1323は、NVRAM609のキャッシュ領域に格納されているアイテムのうち、アクセス日時が古い順に、削除対象のアイテムを1つ特定する(S2001)。
削除部1323は、ハッシュテーブルにおいて、当該削除対象のアイテムのレコードをクリアする(S2003)。具体的には、当該レコードにおけるキー、仮想アドレス、サイズ及びアクセス日時の各フィールドに未設定のコードを格納する。このとき、削除部1323は、更に、NVRAM609のキャッシュ領域に格納されている値をクリアするようにしてもよい。
削除部1323は、削除したアイテムの合計サイズを算出する(S2005)。具体的には、削除部1323は、S2003でクリアされたサイズを順次加算する。削除したアイテムの合計サイズは、新たに空き容量に加えられたサイズ、つまり解放サイズに相当する。
削除部1323は、算出した解放サイズが図17のS1709において算出した基準サイズ以上であるか否かを判定する(S2007)。解放サイズが基準サイズ未満であると判定した場合には、S2001に示した処理に戻って、上述した処理を繰り返す。
一方、解放サイズが基準サイズ以上であると判定した場合には、削除処理(A)を終え、呼び出し元のアイテム追加処理(A)に復帰する。
図17の説明に戻る。S1717における削除処理(A)を終えると、第1移動部1319は、第1移動処理を実行する(S1719)。第1移動処理は、S1713の場合と同様である。
続いて、格納処理部1313は、格納処理を実行する(S1721)。格納処理は、S1705の場合と同様である。そして、アイテム追加処理(A)を終え、第1サブルーチン処理に復帰する。
続いて、第2サブルーチン処理について説明する。本実施の形態では、第2サブルーチン処理(A)を実行する。図21に、第2サブルーチン処理(A)フローを示す。
第1判定部1307は、図15のS1501において受信した要求が、アイテムの取得要求であるか否かを判定する(S2101)。当該要求がアイテムの取得要求であると判定した場合には、読み取り部1327は、図15のS1507において特定したレコードから仮想アドレスを読む(S2103)。読み取り部1327は、当該仮想アドレスに格納されている値を読み取る(S2105)。送信部1303は、取得した値を、アイテムの取得要求の送信元であるクライアントに送信する(S2107)。第2更新部1331は、当該レコードのアクセス日時を更新する(S2109)。具体的には、第2更新部1331は、アクセス日時を現時点に改める。
一方、S2101において、図15のS1501において受信した要求が、アイテムの取得要求ではないと判定した場合、つまり当該受信した要求がアイテムの保存要求である場合には、書き込み部1329は、図15のS1507において特定したレコードから仮想アドレスを読む(S2111)。書き込み部1329は、当該仮想アドレスに、アイテムの保存要求に含まれる値を書き込む(S2113)。そして、第2更新部1331は、当該レコードのアクセス日時を更新する(S2109)。第2サブルーチン処理(A)を終えると、呼び出し元のメイン処理に復帰する。
本実施の形態によれば、レイテンシの異なる複数のメモリデバイスを用いてアイテムを保管するキャッシュサーバ103におけるデータアクセスを、より早めることができる。尚、NVRAM609は、DRAM605よりも安価であり、消費電力も少ないので、NVRAM609をDRAM605と組み合わせることによって、キャッシュサーバ103が安価になり、運用コストも削減できる面がある。
また、追加アイテムのサイズを基準として、DRAM605のキャッシュ領域における空き容量が不足しているか否かを判定するので、レイテンシの小さいDRAM605に追加データを書き込むことができる。従って、時間的局所性に鑑みて、キャッシュサーバ103における応答性能がよくなると期待できる。
また、DRAM605のキャッシュ領域に格納されているアイテムのうち、アクセス時点が古いアイテムを優先して移動対象として選択するので、アクセス頻度が高いデータをDRAM605に残すことができる。
また、NVRAM609のキャッシュ領域における空き容量が不足していると判定した場合に、当該キャッシュ領域に格納されている一部のアイテムに関するレコードをクリアするので、優先度が低いと見込まれるアイテムを選択的に排除することができる。
[実施の形態2]
上述した実施の形態では、DRAM605のキャッシュ領域に格納されているアイテムのうち、アクセス時点が古いアイテムを優先して移動対象として選択する例について説明したが、本実施の形態では、書き込み時点が古いアイテムを優先して移動対象として選択する例について説明する。
図22に、実施の形態2におけるハッシュテーブルの例を示す。本実施の形態におけるハッシュテーブルのレコードは、インデックスが格納されるフィールドと、キーが格納されるフィールドと、仮想アドレスが格納されるフィールドと、サイズが格納されるフィールドと、書き込み日時が格納されるフィールドとを有している。つまり、本実施の形態では、アクセス日時に代えて書き込み日時が格納される。その他は、実施の形態1の場合と同様である。
また、本実施の形態では、アイテム追加処理(A)に代えてアイテム追加処理(B)を実行する。図23に、アイテム追加処理(B)フローを示す。S1701乃至S1705における処理は、アイテム追加処理(A)の場合と同様である。
S1703において、DRAM605のキャッシュ領域における空き容量が保存要求に係るアイテムのサイズ未満であると判定した場合には、第3判定部1317は、DRAM605のキャッシュ領域に格納されているアイテムのうち、書き込み日時が古い順にM個のアイテムを選択する(S2301)。
S1709乃至S1721における処理は、アイテム追加処理(A)の場合と同様である。
また、本実施の形態では、格納処理(A)に代えて格納処理(B)を実行する。図24に、格納処理(B)フローを示す。S1801及びS1803における処理は、格納処理(A)の場合と同様である。
設定部1315は、ハッシュテーブルにおいて、保存要求に含まれるキーに基づくハッシュ値に該当するインデックスのレコードに、当該キー、保存要求に含まれる値を書き込んだ領域の仮想アドレス、当該アイテムのサイズ及び現時点を示す書き込み日時を設定する(S2401)。
また、本実施の形態では、削除処理(A)に代えて削除処理(B)を実行する。図25に、削除処理(B)フローを示す。削除部1323は、NVRAM609のキャッシュ領域に格納されているアイテムのうち、書き込み日時が古い順に、削除対象のアイテムを1つ特定する(S2501)。
S2003乃至S2007の処理は、削除処理(A)の場合と同様である。
更に、本実施の形態では、第2サブルーチン処理(A)に代えて第2サブルーチン処理(B)を実行する。図26に、第2サブルーチン処理(B)フローを示す。S2101乃至S2107の処理は、第2サブルーチン処理(A)の場合と同様である。尚、アイテムの取得要求に応じる処理において、書き込み日時は更新されない。
一方、図15のS1501において受信した要求が、アイテムの取得要求ではないと判定した場合、つまり当該要求がアイテムの保存要求である場合におけるS2111及びS2113の処理は、第2サブルーチン処理(A)の場合と同様である。
そして、第2更新部1331は、当該レコードの書き込み日時を更新する(S2601)。具体的には、第2更新部1331は、書き込み日時を現時点に改める。
本実施の形態によれば、より新しく書き込まれたデータを、レイテンシが小さいDRAM605に残すことができる。従って、時間的局所性に鑑みて、キャッシュサーバ103における応答性能がよくなると期待できる。
[実施の形態3]
本実施の形態では、NVRAM609のキャッシュ領域に格納されているアイテムをDRAM605のキャッシュ領域に復帰させる例について説明する。
図27に、実施の形態3におけるアイテム保存の処理概要を示す。DRAM605のキャッシュ領域における空き容量が保存対象のアイテムのサイズ未満であって、且つNVRAM609のキャッシュ領域における空き容量が基準サイズ未満である場合に、図10の場合と同様に、NVRAM609のキャッシュ領域に格納されているアイテムを削除して、NVRAM609のキャッシュ領域における空き容量を増やす。
本実施の形態では、そのときNVRAM609のキャッシュ領域に格納されているアイテムのうち、アクセス日時が新しいものをDRAM605のキャッシュ領域に移動させる。つまり、NVRAM609側のアイテムをDRAM605側へ復帰させる。このときDRAM605側へ復帰させるアイテムの合計サイズに関する上限を復帰サイズという。復帰サイズは、図17のS1709で算出した基準サイズよりも小さいものとする。
その後、上述した実施の形態と同様に、DRAM605のキャッシュ領域に格納されているアイテムのうち、アクセス日時が古いもの(或いは書き込み日時が古いもの)をNVRAM609のキャッシュ領域へ移動させる。そして、新しいアイテムをDRAM605のキャッシュ領域へ格納する。
本実施の形態では、アイテム追加処理(A)に代えてアイテム追加処理(C)を実行する。図28に、アイテム追加処理(C)フローを示す。S1701乃至S1715の処理は、アイテム追加処理(A)の場合と同様である。
アイテム追加処理(C)では、S1717において、削除処理(A)に代えて削除処理(C)を実行する。図29に、削除処理(C)フローを示す。S2001乃至S2005の処理は、削除処理(A)の場合と同様である。
削除部1323は、S2005において算出した解放サイズから復帰サイズを引いた差が、図17のS1709において算出した基準サイズ以上であるか否かを判定する(S2901)。この例における復帰サイズは、定数である。解放サイズから復帰サイズを引いた差が基準サイズ未満であると判定した場合には、S2001に示した処理に戻って、上述した処理を繰り返す。
一方、解放サイズから復帰サイズを引いた差が基準サイズ以上であると判定した場合には、削除処理(C)を終え、呼び出し元のアイテム追加処理(C)に復帰する。
図28の説明に戻る。S1717における削除処理に続いて、第2移動部1325は、第2移動処理を実行する(S2801)。第2移動処理では、NVRAM609のキャッシュ領域に保持されているアイテムの一部を、DRAM605のキャッシュ領域に移動する。
図30に、第2移動処理フローを示す。第2移動部1325は、NVRAM609のキャッシュ領域に格納されているアイテムのうち、アクセス日時が新しい順にアイテムを1つ特定する(S3001)。第2移動部1325は、既に移動したアイテムの合計サイズと、S3001で特定したアイテムのサイズとの合計が復帰サイズを超えたか否かを判定する(S3003)。当該合計サイズは、当初0である。
既に移動したアイテムの合計サイズと、S3001で特定したアイテムのサイズとの合計が、復帰サイズを超えていないと判定した場合には、第2移動部1325は、DRAM605のキャッシュ領域において、当該アイテムのサイズに相当する領域を確保する(S3005)。第2移動部1325は、NVRAM609のキャッシュ領域において、当該アイテムの仮想アドレスに格納されている値を読み取る(S3007)。第2移動部1325は、DRAM605のキャッシュ領域において確保した領域に当該値を書き込む(S3009)。
第2移動部1325は、当該アイテムのレコードにおける仮想アドレスを更新する(S3011)。具体的には、第2移動部1325は、NVRAM609のキャッシュ領域における移動元の仮想アドレスを、DRAM605のキャッシュ領域における移動先の仮想アドレスに書き換える。
第2移動部1325は、移動したアイテムの合計サイズを算出する(S3013)。具体的には、第2移動部1325は、S3001で特定したアイテムのレコードに格納されているサイズを順次加算する。そして、S3001に示した処理に戻って、上述した処理を繰り返す。
S3003において、既に移動したアイテムの合計サイズと、S3001で特定したアイテムのサイズとの合計が、復帰サイズを超えたと判定した場合には、第2移動処理を終える。そして、アイテム追加処理(C)に復帰する。
図28の説明に戻る。S1719及びS1721の処理は、アイテム追加処理(A)の場合と同様である。
本実施の形態によれば、アクセス頻度が高まったアイテムへのアクセスを早めることができる。
[実施の形態4]
上述した実施の形態では、新たなアイテムを追加する際に、キャッシュ領域における空き容量の調整を行う例について説明した。本実施の形態では、キャッシュ領域における空き容量の調整をメイン処理とは別のスレッドで行う例について説明する。
図31に、実施の形態4におけるキャッシュサーバ103のモジュール構成例を示す。本実施の形態における追加部1309の構成は、上述した実施の形態の場合と異なる。実施の形態4における追加部1309は、第2判定部1311、格納処理部1313及び設定部1315を有する。
また、本実施の形態におけるキャッシュサーバ103は、調整部3103を有する。調整部3103は、上述した第3判定部1317、第1移動部1319、第1更新部1321、削除部1323及び第2移動部1325の他に、第4判定部3105を有する。第4判定部3105は、DRAM605のキャッシュ領域における空き容量が所定サイズに満たないか否かを判定する。
メイン処理部3101は、メイン処理及びメイン処理が呼び出す下位ルーチンの処理を、第1のスレッドとして実行する。調整部3103は、後述する調整処理及び調整処理が呼び出す下位ルーチンの処理を、第2のスレッドとして実行する。つまり、キャッシュサーバ103は、メイン処理部3101によるルーチン処理と、調整部3103によるルーチン処理とを並行に実行する。キャッシュサーバ103は、メイン処理部3101によるルーチン処理と調整部3103によるルーチン処理とを、別個のスレッドとして起動させる起動部を有するようにしてもよい。
上述したメイン処理部3101、調整部3103及び第4判定部3105は、ハードウエア資源(例えば、図34)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
本実施の形態では、アイテム追加処理(A)に代えてアイテム追加処理(D)を実行する。図32に、アイテム追加処理(D)フローを示す。S1701の処理は、アイテム追加処理(A)の場合と同様である。
第2判定部1311は、DRAM605のキャッシュ領域における空き容量が保存要求に係るアイテムのサイズ以上であるか否かを判定する(S3201)。
DRAM605のキャッシュ領域における空き容量が保存要求に係るアイテムのサイズ以上であると判定した場合には、格納処理部1313は、格納処理を実行する(S3203)。格納処理は、格納処理(A)の場合と同様である。
一方、DRAM605のキャッシュ領域における空き容量がアイテムのサイズ未満であると判定した場合には、S1701の処理に戻って、上述した処理を繰り返す。つまり、追加部1309は、DRAM605のキャッシュ領域における空き容量が充足されるタイミングを待つように動作する。
図33に、調整処理フローを示す。第4判定部3105は、DRAM605のキャッシュ領域における空き容量を算出する(S3301)。そして、第4判定部3105は、DRAM605のキャッシュ領域における空き容量が所定サイズに満たないか否かを判定する(S3303)。
DRAM605のキャッシュ領域における空き容量が所定サイズに満たないと判定した場合には、第3判定部1317は、DRAM605のキャッシュ領域に格納されているアイテムのうち、アクセス日時が古い順にM個(所定数)のアイテムを選択する(S3305)。
第3判定部1317は、M個のアイテムの合計サイズを算出する(S3307)。M個のアイテムの合計サイズは、空き容量の判定における基準サイズとなる。
第3判定部1317は、NVRAM609のキャッシュ領域における空き容量が基準サイズ以上であるか否かを判定する(S3309)。NVRAM609のキャッシュ領域における空き容量が基準サイズ以上であると判定した場合には、第1移動部1319は、第1移動処理を実行する(S3311)。第1移動処理は、図17に示したS1713の場合と同様である。そして、S3301に示した処理に戻って、上述した処理を繰り返す。
一方、NVRAM609のキャッシュ領域における空き容量が基準サイズ未満であると判定した場合には、削除部1323は、削除処理を実行する(S3313)。削除処理は、図17に示したS1717の場合と同様である。
続いて、第1移動部1319は、第1移動処理を実行する(S3315)。第1移動処理は、図17に示したS1719の場合と同様である。そして、S3301に示した処理に戻って、上述した処理を繰り返す。
S3303の説明に戻る。DRAM605のキャッシュ領域における空き容量が所定サイズ以上であると判定した場合には、第4判定部3105は、一定時間の経過を待つ(S3317)。一定時間が経過すると、第4判定部3105は、調整処理のスレッドを停止するか否かを判定する(S3319)。例えば、スレッド停止の指示を受け付けているか否かを判定する。
調整処理のスレッドを停止すると判定した場合には、調整処理を終える。一方、スレッドを停止しないと判定した場合には、S3301に示した処理に戻って、上述した処理を繰り返す。
本実施の形態によれば、複数のスレッドに処理負荷が分散されるので、全体として処理が早まることが期待できる。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
なお、上で述べたキャッシュサーバ103は、コンピュータ装置であって、図34に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係るデータアクセス方法は、(A)第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータにより実行されるデータアクセス方法であって、(B)新たなキーで識別される追加データの保存要求を受け付けた場合に、第1メモリデバイスのデータ格納領域における空き容量が不足しているか否かを判定する判定処理と、(C)上記空き容量が不足していると判定した場合に、第1メモリデバイスのデータ格納領域に格納されているデータのうち一部のデータを第2メモリデバイスのデータ格納領域に移動させる処理と、(D)移動させた一部のデータに関する記録におけるアドレスを更新する処理と、(E)第1メモリデバイスのデータ格納領域に、追加データを格納する処理と、(F)追加データが格納されたアドレスと、新たなキーとを対応付ける記録を設定する処理とを含む。
このようにすれば、レイテンシの異なる複数のメモリデバイスを用いてデータを保管するコンピュータにおけるデータアクセスを、より早めることができる。
更に、上記判定処理において、追加データのサイズを基準として、上記空き容量が不足しているか否かを判定するようにしてもよい。
このようにすれば、レイテンシが小さい方のメモリデバイスに、追加データを書き込むことができる。
更に、第1メモリデバイスのデータ格納領域に格納されているデータのうち、アクセス時点が古いデータを優先して移動対象として選択する処理を含むようにしてもよい。
このようにすれば、アクセス頻度が高いデータを、レイテンシが小さい方のメモリデバイスに残すことができる。
更に、第1メモリデバイスのデータ格納領域に格納されているデータのうち、書き込み時点が古いデータを優先して移動対象として選択する処理を含むようにしてもよい。
このようにすれば、より新しく書き込まれたデータを、レイテンシが小さい方のメモリデバイスに残すことができる。
更に、第2メモリデバイスのデータ格納領域における空き容量が不足していると判定した場合に、当該データ格納領域に格納されているデータのうち一部のデータに関する記録をクリアする処理を含むようにしてもよい。
このようにすれば、優先度が低いと見込まれるデータを排除することができる。
更に、第2メモリデバイスのデータ格納領域に格納されているデータのうち、アクセス時点が新しい一部のデータを復帰対象として選択する処理と、復帰対象として選択された一部のデータを第1メモリデバイスのデータ格納領域に移動させる処理と、第1メモリデバイスのデータ格納領域に移動させた一部のデータに関する記録におけるアドレスを更新する処理とを含むようにしてもよい。
このようにすれば、アクセス頻度が高まったデータへのアクセスを早めることができる。
本実施の形態に係るデータアクセス方法は、(G)第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータにより実行されるデータアクセス方法であって、(H)第1メモリデバイスのデータ格納領域における空き容量が不足しているか否かを判定する処理と、(I)上記空き容量が不足していると判定した場合に、第1メモリデバイスのデータ格納領域に格納されているデータのうち一部のデータを第2メモリデバイスのデータ格納領域に移動させる処理と、(J)移動させた一部のデータに関する記録におけるアドレスを更新する処理とを含む第1ルーチン処理と、(K)新たなキーで識別される追加データの保存要求を受け付けた場合に、上記空き容量が充足されるタイミングを待って、第1メモリデバイスのデータ格納領域に、追加データを格納する処理と、(L)追加データが格納されたアドレスと、新たなキーとを対応付ける記録を設定する処理とを含む第2ルーチン処理とを並行に実行する。
このようにすれば、更に、全体として処理が早まることが期待できる。
上記第1ルーチン処理は、更に、第2メモリデバイスのデータ格納領域における空き容量が不足していると判定した場合に、当該データ格納領域に格納されているデータのうち一部のデータに関する記録をクリアする処理を含むようにしてもよい。
このようにすれば、優先度が低いと見込まれるデータを排除することができる。
更に、上記コンピュータは、キャッシュサーバであってもよい。上記記録は、キーのハッシュ値をインデックスとするハッシュテーブルに設定されるようにしてもよい。また、データ格納領域は、キャッシュ領域であってもよい。
このようにすれば、レイテンシの異なるメモリデバイスを組み合わせたキャッシュサーバにおける処理性能を向上させることができる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータに、
新たなキーで識別される追加データの保存要求を受け付けた場合に、前記第1メモリデバイスの前記データ格納領域における空き容量が不足しているか否かを判定する判定処理と、
前記空き容量が不足していると判定した場合に、前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち一部のデータを前記第2メモリデバイスの前記データ格納領域に移動させる処理と、
移動させた前記一部のデータに関する前記記録における前記アドレスを更新する処理と、
前記第1メモリデバイスの前記データ格納領域に、前記追加データを格納する処理と、
前記追加データが格納されたアドレスと、前記新たなキーとを対応付ける前記記録を設定する処理と
を実行させるアクセスプログラム。
(付記2)
前記判定処理において、前記追加データのサイズを基準として、前記空き容量が不足しているか否かを判定する
付記1記載のアクセスプログラム。
(付記3)
更に、
前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち、アクセス時点が古いデータを優先して移動対象として選択する処理
を含む付記1又は2記載のアクセスプログラム。
(付記4)
更に、
前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち、書き込み時点が古いデータを優先して移動対象として選択する処理
を含む付記1又は2記載のアクセスプログラム。
(付記5)
更に、
前記第2メモリデバイスの前記データ格納領域における空き容量が不足していると判定した場合に、当該データ格納領域に格納されているデータのうち一部のデータに関する前記記録をクリアする処理
を含む付記1乃至4のうち1つ記載のアクセスプログラム。
(付記6)
更に、
前記第2メモリデバイスの前記データ格納領域に格納されているデータのうち、アクセス時点が新しい一部のデータを復帰対象として選択する処理と、
前記復帰対象として選択された前記一部のデータを前記第1メモリデバイスの前記データ格納領域に移動させる処理と、
前記第1メモリデバイスの前記データ格納領域に移動させた前記一部のデータに関する前記記録における前記アドレスを更新する処理と
を含む付記1乃至5のうち1つ記載のアクセスプログラム。
(付記7)
第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータに、
前記第1メモリデバイスの前記データ格納領域における空き容量が不足しているか否かを判定する処理と、
前記空き容量が不足していると判定した場合に、前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち一部のデータを前記第2メモリデバイスの前記データ格納領域に移動させる処理と、
移動させた前記一部のデータに関する前記記録における前記アドレスを更新する処理と
を含む第1ルーチン処理と、
新たなキーで識別される追加データの保存要求を受け付けた場合に、前記空き容量が充足されるタイミングを待って、前記第1メモリデバイスの前記データ格納領域に、前記追加データを格納する処理と、
前記追加データが格納されたアドレスと、前記新たなキーとを対応付ける前記記録を設定する処理と
を含む第2ルーチン処理と
を並行に実行させるアクセスプログラム。
(付記8)
前記第1ルーチン処理は、更に、
前記第2メモリデバイスの前記データ格納領域における空き容量が不足していると判定した場合に、当該データ格納領域に格納されているデータのうち一部のデータに関する前記記録をクリアする処理
を含む付記7記載のアクセスプログラム。
(付記9)
前記コンピュータは、キャッシュサーバであり、
前記記録は、前記キーのハッシュ値をインデックスとするハッシュテーブルに設定され、
前記データ格納領域は、キャッシュ領域である
付記1乃至8のうち1つ記載のアクセスプログラム。
(付記10)
第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータにより実行されるデータアクセス方法であって、
新たなキーで識別される追加データの保存要求を受け付けた場合に、前記第1メモリデバイスの前記データ格納領域における空き容量が不足しているか否かを判定する判定処理と、
前記空き容量が不足していると判定した場合に、前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち一部のデータを前記第2メモリデバイスの前記データ格納領域に移動させる処理と、
移動させた前記一部のデータに関する前記記録におけるアドレスを更新する処理と、
前記第1メモリデバイスの前記データ格納領域に、前記追加データを格納する処理と、
前記追加データが格納されたアドレスと、前記新たなキーとを対応付ける前記記録を設定する処理と
を含むデータアクセス方法。
(付記11)
第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータにより実行されるデータアクセス方法であって、
前記第1メモリデバイスの前記データ格納領域における空き容量が不足しているか否かを判定する処理と、
前記空き容量が不足していると判定した場合に、前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち一部のデータを前記第2メモリデバイスの前記データ格納領域に移動させる処理と、
移動させた前記一部のデータに関する前記記録における前記アドレスを更新する処理と
を含む第1ルーチン処理と、
新たなキーで識別される追加データの保存要求を受け付けた場合に、前記空き容量が充足されるタイミングを待って、前記第1メモリデバイスの前記データ格納領域に、前記追加データを格納する処理と、
前記追加データが格納されたアドレスと、前記新たなキーとを対応付ける前記記録を設定する処理と
を含む第2ルーチン処理と
を並行に実行するデータアクセス方法。
(付記12)
前記コンピュータは、キャッシュサーバであり、
前記記録は、前記キーのハッシュ値をインデックスとするハッシュテーブルに設定され、
前記データ格納領域は、キャッシュ領域である
付記10又は11に記載のデータアクセス方法。
(付記13)
第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部と、
新たなキーで識別される追加データの保存要求を受け付けた場合に、前記第1メモリデバイスの前記データ格納領域における空き容量が不足しているか否かを判定する判定部と、
前記空き容量が不足していると判定した場合に、前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち一部のデータを前記第2メモリデバイスの前記データ格納領域に移動させる移動部と、
移動させた前記一部のデータに関する前記記録における前記アドレスを更新する更新部と、
前記第1メモリデバイスの前記データ格納領域に、前記追加データを格納する格納処理部と、
前記追加データが格納されたアドレスと、前記新たなキーとを対応付ける前記記録を設定する設定部と
を含む情報処理装置。
(付記14)
第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有し、
更に、
前記第1メモリデバイスの前記データ格納領域における空き容量が不足しているか否かを判定する判定部と、
前記空き容量が不足していると判定した場合に、前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち一部のデータを前記第2メモリデバイスの前記データ格納領域に移動させる移動部と、
移動させた前記一部のデータに関する前記記録における前記アドレスを更新する更新部と
を含む第1ルーチン部と、
新たなキーで識別される追加データの保存要求を受け付けた場合に、前記空き容量が充足されるタイミングを待って、前記第1メモリデバイスの前記データ格納領域に、前記追加データを格納する格納処理部と、
前記追加データが格納されたアドレスと、前記新たなキーとを対応付ける前記記録を設定する設定部と
を含む第2ルーチン部と
を有し、
前記第1ルーチン部における処理と、前記第2ルーチン部における処理とを並行に実行する情報処理装置。
(付記15)
前記情報処理装置は、キャッシュサーバであり、
前記記録は、前記キーのハッシュ値をインデックスとするハッシュテーブルに設定され、
前記データ格納領域は、キャッシュ領域である
付記13又は14に記載の情報処理装置。
101 Webサーバ 103 キャッシュサーバ
105 データベースサーバ 601 CPU
603 DRAM制御回路 605 DRAM
607 NVRAM制御回路 609 NVRAM
611 通信制御回路 1300 メイン処理部
1301 受信部 1303 送信部
1305 探索部 1307 第1判定部
1309 追加部 1311 第2判定部
1313 格納処理部 1315 設定部
1317 第3判定部 1319 第1移動部
1321 第1更新部 1323 削除部
1325 第2移動部 1327 読み取り部
1329 書き込み部 1331 第2更新部
1341 テーブル記憶部 1351 OS
3101 メイン処理部 3103 調整部
3105 第4判定部

Claims (11)

  1. 第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータに、
    新たなキーで識別される追加データの保存要求を受け付けた場合に、前記第1メモリデバイスの前記データ格納領域における空き容量が不足しているか否かを判定する判定処理と、
    前記空き容量が不足していると判定した場合に、前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち一部のデータを前記第2メモリデバイスの前記データ格納領域に移動させる処理と、
    移動させた前記一部のデータに関する前記記録における前記アドレスを更新する処理と、
    前記第1メモリデバイスの前記データ格納領域に、前記追加データを格納する処理と、
    前記追加データが格納されたアドレスと、前記新たなキーとを対応付ける前記記録を設定する処理と
    を実行させるアクセスプログラム。
  2. 前記判定処理において、前記追加データのサイズを基準として、前記空き容量が不足しているか否かを判定する
    請求項1記載のアクセスプログラム。
  3. 更に、
    前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち、アクセス時点が古いデータを優先して移動対象として選択する処理
    を含む請求項1又は2記載のアクセスプログラム。
  4. 更に、
    前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち、書き込み時点が古いデータを優先して移動対象として選択する処理
    を含む請求項1又は2記載のアクセスプログラム。
  5. 更に、
    前記第2メモリデバイスの前記データ格納領域における空き容量が不足していると判定した場合に、当該データ格納領域に格納されているデータのうち一部のデータに関する前記記録をクリアする処理
    を含む請求項1乃至4のうち1つ記載のアクセスプログラム。
  6. 更に、
    前記第2メモリデバイスの前記データ格納領域に格納されているデータのうち、アクセス時点が新しい一部のデータを復帰対象として選択する処理と、
    前記復帰対象として選択された前記一部のデータを前記第1メモリデバイスの前記データ格納領域に移動させる処理と、
    前記第1メモリデバイスの前記データ格納領域に移動させた前記一部のデータに関する前記記録における前記アドレスを更新する処理と
    を含む請求項1乃至5のうち1つ記載のアクセスプログラム。
  7. 第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータに、
    前記第1メモリデバイスの前記データ格納領域における空き容量が不足しているか否かを判定する処理と、
    前記空き容量が不足していると判定した場合に、前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち一部のデータを前記第2メモリデバイスの前記データ格納領域に移動させる処理と、
    移動させた前記一部のデータに関する前記記録における前記アドレスを更新する処理と
    を含む第1ルーチン処理と、
    新たなキーで識別される追加データの保存要求を受け付けた場合に、前記空き容量が充足されるタイミングを待って、前記第1メモリデバイスの前記データ格納領域に、前記追加データを格納する処理と、
    前記追加データが格納されたアドレスと、前記新たなキーとを対応付ける前記記録を設定する処理と
    を含む第2ルーチン処理と
    を並行に実行させるアクセスプログラム。
  8. 前記第1ルーチン処理は、更に、
    前記第2メモリデバイスの前記データ格納領域における空き容量が不足していると判定した場合に、当該データ格納領域に格納されているデータのうち一部のデータに関する前記記録をクリアする処理
    を含む請求項7記載のアクセスプログラム。
  9. 前記コンピュータは、キャッシュサーバであり、
    前記記録は、前記キーのハッシュ値をインデックスとするハッシュテーブルに設定され、
    前記データ格納領域は、キャッシュ領域である
    請求項1乃至8のうち1つ記載のアクセスプログラム。
  10. 第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部を有するコンピュータにより実行されるデータアクセス方法であって、
    新たなキーで識別される追加データの保存要求を受け付けた場合に、前記第1メモリデバイスの前記データ格納領域における空き容量が不足しているか否かを判定する判定処理と、
    前記空き容量が不足していると判定した場合に、前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち一部のデータを前記第2メモリデバイスの前記データ格納領域に移動させる処理と、
    移動させた前記一部のデータに関する前記記録における前記アドレスを更新する処理と、
    前記第1メモリデバイスの前記データ格納領域に、前記追加データを格納する処理と、
    前記追加データが格納されたアドレスと、前記新たなキーとを対応付ける前記記録を設定する処理と
    を含むデータアクセス方法。
  11. 第1メモリデバイスと、当該第1メモリデバイスよりもレイテンシが大きい第2メモリデバイスとを用いたデータ格納領域に格納されているデータに関して、当該データが格納されているアドレスと、当該データを識別するキーとを対応付ける記録を記憶する記憶部と、
    新たなキーで識別される追加データの保存要求を受け付けた場合に、前記第1メモリデバイスの前記データ格納領域における空き容量が不足しているか否かを判定する判定部と、
    前記空き容量が不足していると判定した場合に、前記第1メモリデバイスの前記データ格納領域に格納されているデータのうち一部のデータを前記第2メモリデバイスの前記データ格納領域に移動させる移動部と、
    移動させた前記一部のデータに関する前記記録における前記アドレスを更新する更新部と、
    前記第1メモリデバイスの前記データ格納領域に、前記追加データを格納する格納処理部と、
    前記追加データが格納されたアドレスと、前記新たなキーとを対応付ける前記記録を設定する設定部と
    を含む情報処理装置。
JP2016125570A 2016-06-24 2016-06-24 アクセスプログラム、データアクセス方法及び情報処理装置 Pending JP2017228211A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016125570A JP2017228211A (ja) 2016-06-24 2016-06-24 アクセスプログラム、データアクセス方法及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016125570A JP2017228211A (ja) 2016-06-24 2016-06-24 アクセスプログラム、データアクセス方法及び情報処理装置

Publications (1)

Publication Number Publication Date
JP2017228211A true JP2017228211A (ja) 2017-12-28

Family

ID=60889349

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016125570A Pending JP2017228211A (ja) 2016-06-24 2016-06-24 アクセスプログラム、データアクセス方法及び情報処理装置

Country Status (1)

Country Link
JP (1) JP2017228211A (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0490034A (ja) * 1990-08-02 1992-03-24 Hitachi Ltd 外部記憶装置のデータセット割当方法
US20100293337A1 (en) * 2009-05-13 2010-11-18 Seagate Technology Llc Systems and methods of tiered caching
JP2013536478A (ja) * 2010-12-28 2013-09-19 株式会社日立製作所 ストレージシステム、及びその制御方法
US20140181377A1 (en) * 2010-01-29 2014-06-26 Netapp, Inc. Concurrent content management and wear optimization for a non-volatile solid-state cache

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0490034A (ja) * 1990-08-02 1992-03-24 Hitachi Ltd 外部記憶装置のデータセット割当方法
US20100293337A1 (en) * 2009-05-13 2010-11-18 Seagate Technology Llc Systems and methods of tiered caching
US20140181377A1 (en) * 2010-01-29 2014-06-26 Netapp, Inc. Concurrent content management and wear optimization for a non-volatile solid-state cache
JP2013536478A (ja) * 2010-12-28 2013-09-19 株式会社日立製作所 ストレージシステム、及びその制御方法

Similar Documents

Publication Publication Date Title
US10725707B2 (en) Storage tier-based volume placement
US10795905B2 (en) Data stream ingestion and persistence techniques
US10691716B2 (en) Dynamic partitioning techniques for data streams
US10296494B2 (en) Managing a global namespace for a distributed filesystem
US10168912B2 (en) Short stroking and data tiering for a distributed filesystem
JP6250189B2 (ja) データストリームのためのクライアント構成可能なセキュリティオプション
US9794135B2 (en) Managed service for acquisition, storage and consumption of large-scale data streams
US9348842B2 (en) Virtualized data storage system optimizations
CA2930026C (en) Data stream ingestion and persistence techniques
US9811662B2 (en) Performing anti-virus checks for a distributed filesystem
US10635644B2 (en) Partition-based data stream processing framework
US9268651B1 (en) Efficient recovery of storage gateway cached volumes
US9274956B1 (en) Intelligent cache eviction at storage gateways
US10698829B2 (en) Direct host-to-host transfer for local cache in virtualized systems wherein hosting history stores previous hosts that serve as currently-designated host for said data object prior to migration of said data object, and said hosting history is checked during said migration
US9330108B2 (en) Multi-site heat map management
JP5032210B2 (ja) 制御計算機、計算機システム及びアクセス制御方法
US20130055371A1 (en) Storage control method and information processing apparatus
US20140195551A1 (en) Optimizing snapshot lookups
US11080207B2 (en) Caching framework for big-data engines in the cloud
JP2010020441A (ja) 計算機システム、構成管理方法及び管理計算機
US10165040B2 (en) Small disk support for large cloud-based storage systems
CN107153512B (zh) 一种数据迁移方法和装置
US10996857B1 (en) Extent map performance
CN109254958A (zh) 分布式数据读写方法、设备及系统
JP2017228211A (ja) アクセスプログラム、データアクセス方法及び情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190311

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200714