JP5718974B2 - 情報処理装置、情報処理方法、および、情報処理プログラム - Google Patents

情報処理装置、情報処理方法、および、情報処理プログラム Download PDF

Info

Publication number
JP5718974B2
JP5718974B2 JP2013107572A JP2013107572A JP5718974B2 JP 5718974 B2 JP5718974 B2 JP 5718974B2 JP 2013107572 A JP2013107572 A JP 2013107572A JP 2013107572 A JP2013107572 A JP 2013107572A JP 5718974 B2 JP5718974 B2 JP 5718974B2
Authority
JP
Japan
Prior art keywords
key
value
cache
group
file
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.)
Active
Application number
JP2013107572A
Other languages
English (en)
Other versions
JP2014229036A (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 JP2013107572A priority Critical patent/JP5718974B2/ja
Publication of JP2014229036A publication Critical patent/JP2014229036A/ja
Application granted granted Critical
Publication of JP5718974B2 publication Critical patent/JP5718974B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、情報処理装置、情報処理方法、および、情報処理プログラムに関する。
近年、BigTable(非特許文献1参照)等の様々なKeyValueストア技術が提案されている。例えば、BigTableは、ファイルシステム(非特許文献2参照)上で(key,value)のテーブルを管理し、以下のような特徴を持つ。
(1)(key,value)のテーブルをいくつかの範囲に分割し、クラスタ上のサーバ群で管理する。
(2)各サーバでは、ログ先行書き込み用ログファイル(以下、WALログとする)を一つ有する。WALログは、書き込み要求に対して永続性を担保する。
(3)各サーバは、(key,value)の削除、更新、追加といったオペレーションのWALログへの書き込みが成功すると、メインメモリ上に確保した(key,value)を格納するためのメインメモリ上のバッファ領域へ書き込みを行う。この時点で、書き込まれた(key,value)は参照可能となる。
(4)上記のメインメモリ上に確保したバッファ領域のデータ量が大きくなった場合、各サーバは、分割した範囲ごとにファイルへ書き込みを行い、バッファ領域を解放する。このように、各サーバは、メインメモリ上のバッファ領域をファイルに書きこんだ時点で、そのバッファ領域を解放することで、WALログの肥大化を防いでいる。
このWALログは、バッファ領域に(key,value)が存在する間、サーバに障害が発生した場合であってもリカバリを可能とするために存在している。例えば、リカバリを依頼されたサーバは、WALログを用いて、更新された(key,value)をサーバ上のメインメモリ上のバッファのデータに読み込むことで、更新された(key,value)の復旧を行う。
一般的にサーバのメインメモリ上のバッファ領域が大きければ、WALログも大きくなる。そして、WALログが肥大化すると、サーバの障害発生後、リカバリ時にメインメモリバッファに展開する為に読み込むデータ量が多くなるため、リカバリ時間が増大してしまう。しかし一方で、メインメモリ上のバッファ領域が大きければ、検索要求受信時にメインメモリ上のバッファを検索し、結果を返却できるため、検索時間を短縮できるというメリットもある。
ここで、リカバリ時間を短縮するため、予めサーバのメインメモリ上のバッファ領域を小さくしておくことも考えられる。しかし、バッファ領域を小さくしてしまうと、サーバは、検索要求受信時に、メインメモリ上のバッファから結果を返却できないこともあり、検索時間が増加してしまう可能性がある。
このような問題を解決するため、ブロックキャッシュという技術がある。このブロックキャッシュは、サーバのメインメモリ上のバッファとは別にキャッシュ領域を準備し、サーバがハードディスク等からブロック(複数の(key,value)のかたまり)をメインメモリ上に読み込んだときには、このブロックをキャッシュとしてメインメモリ上に記憶する。そして、サーバは、次回の検索において、同一ブロックへの読み込み要求がなされた場合、キャッシュ上に存在するブロックを利用する。このようにすることで、サーバにおけるリカバリ時間をある程度短縮しつつ、検索時間を短縮することができる。
F.Chang他、「Bigtable:A Distributed Storage System for Structured Data」、OSDI、2006 S. Ghemawat他、「The Google File System」、SOSP、2003
しかし、前記したブロックキャッシュにおいて、キャッシュ上に存在するブロックは、少なくとも一度はディスクI/Oが発生したブロックである。このため、サーバが、一度もハードディスクから読み出されたことのないデータの検索要求を受け付けたときには、ハードディスク等からデータを読み込む必要があり、検索時間は必ずしも短縮しない。
そこで、本発明は、前記した問題を解決し、KeyValueストアに用いられるサーバに障害が発生した場合のリカバリ時間を短縮しつつ、検索時間も短縮することを課題とする。
前記した課題を解決するため、本発明の情報処理装置は、メインメモリ上に、WAL(Write Ahead Logging)ログを備え、前記WALログに、KeyValueストアに用いられる(key,value)の削除、変更、または、追加を示すオペレーションの書き込みが成功すると、前記(key,value)を、前記メインメモリ上のバッファ領域へ書き込む情報処理装置であって、前記バッファ領域に書き込まれた前記(key,value)の集合である(key,value)群のデータ量が所定の閾値を超えたとき、前記バッファ領域に書き込まれた(key,value)群をファイルへ書き出すファイル作成部と、前記バッファ領域に書き込まれた(key,value)群を、前記メインメモリ上に確保されたキャッシュ領域に移動させるキャッシュ作成部と、前記(key,value)群のファイルへの書き出し、および、前記キャッシュ領域への移動完了後、前記バッファ領域を解放するバッファ解放部と、前記keyを含む検索要求を受け付けたとき、前記キャッシュ領域から前記keyを含む(key,value)を検索し、前記キャッシュ領域に前記keyを含む(key,value)がないとき、前記ファイルから前記keyを含む(key,value)を検索する検索部とを備える。
本発明によれば、KeyValueストアに用いられるサーバに障害が発生した場合のリカバリ時間を短縮しつつ、検索時間も短縮することができる。
図1は、第1の実施形態のサーバの概要を説明する図である。 図2は、サーバの機能構成図である。 図3は、バッファ領域に(key,ts,value)の削除に関する情報が含まれていた場合におけるファイル作成手順例を説明する図である。 図4は、サーバの処理手順を説明する図である。 図5は、図4のS16の処理を詳細に説明する図である。 図6は、図5のS164を詳細に説明する図である。 図7は、サーバが、外部から(key,ts,value)のテーブルの検索要求を受け付けたときの処理手順を説明する図である。 図8は、第2の実施形態のキャッシュ作成部の処理手順を説明する図である。 図9は、第2の実施形態のサーバにおけるキャッシュの例を示す図である。 図10は、検索部の処理手順を説明する図である。 図11は、分散KeyValueストアにおけるサーバを例示した図である。 図12は、情報処理プログラムを実行するコンピュータを示す図である。
[第1の実施形態]
[概要]
以下、本発明の実施形態を第1の実施形態および第2の実施形態に分けて説明する。まず、図1を用いて第1の実施形態の情報処理装置(サーバ)の概要を説明する。図1は、第1の実施形態のサーバの概要を説明する図である。
このサーバ10は、KeyValueストアに用いられるサーバであり、(key,ts,value)のテーブルを記憶する。なお、本実施形態において、(key,ts,value)のテーブルの内容は、一時的にメインメモリ上のバッファ領域に格納され、その後、ファイルに書き出される。なお、ここではテーブルを構成するデータは、(key,ts,value)である場合を例に説明するが、少なくとも(key,value)を含めばよく、ts(タイムスタンプ値、(key,value)の作成時刻を示す情報)を含まないデータであってもよい。また、サーバ10が書き出すファイルは、ソート済みKeyValueファイルである場合を例に説明するが、これに限定されない。
サーバ10は、外部装置からの指示に基づき(key,ts,value)のテーブルに対し(key,ts,value)の追加、削除、更新を行う。また、サーバ10は、外部からkeyを含む検索要求を受信すると、(key,ts,value)のテーブルにおいて、当該Keyを持つ値を検索して、その検索結果を返す。
さらに、このサーバ10は、ログ先行書き込み用ログファイル(以下、WALログとする)を有する。WALログは、(key,ts,value)のテーブルに対する、追加、削除、更新等の変更内容を示す情報であり、(key,ts,value)のテーブルの実際の変更前に書き込まれる。そして、サーバ10に障害が発生したとき、サーバ10は、メインメモリのバッファ領域上にある更新された(key,value)を読み込み、WALログを用いて、更新データの復旧を行う。このサーバ10は、メインメモリ上に、バッファ領域とキャッシュ領域とを備える。
このようなサーバ10が、(1)ユーザの端末装置等から、(newkey,tsN,newvalue)の追加指示を受け付けた場合、サーバ10は、(2)追加指示の内容のWALログへの書き込みを行う。その後、(3)メインメモリ上のバッファ領域へ(newkey,tsN,newvalue)の書き込みを行う。そして、(4)メインメモリ上のバッファが大きくなると(つまり、バッファ領域のデータ量が所定の閾値を超えた場合)、サーバ10は、バッファ領域のデータ((key,ts,value)群)をファイルに書き出す。例えば、サーバ10は、バッファ領域の(key,ts,value)群を、keyの値でソートし、ソート済みKeyValueファイル1へ書き込む。
また、(5)サーバ10は、バッファ領域のデータをメインメモリ上に確保したキャッシュ領域へ移動する。そして、(6)サーバ10は、メインメモリ上のバッファ領域のデータをクリアする。
その後、(7)サーバ10が、keyを含む検索要求を受信したとき、まず、メインメモリ上のキャッシュ領域を検索し、(8)次に、補助記憶部上のファイルを検索する。つまり、サーバ10は、keyを含む検索要求を受信したとき、まず、メインメモリ上のキャッシュ領域からkeyを含む(key,ts,value)を検索し、キャッシュ領域に当該keyを含む(key,ts,value)がなければ、補助記憶部上のソート済みKeyValueファイルからkeyを含む(key,ts,value)を検索する。
このように、サーバ10は、メインメモリ上のバッファ領域のデータが大きくなると、ファイルへの書き込みを行い、バッファ領域のデータをクリアする。これにより、WALログの肥大化を抑制でき、サーバ10に障害が発生した場合のリカバリ時間を短縮できる。また、サーバ10が、バッファ領域のデータをクリアする前に、バッファ領域の(key,ts,value)群をキャッシュ領域に移動しておく。そして、サーバ10が、検索要求を受信した場合、まず、メインメモリ上のキャッシュ領域を検索する。これにより、サーバ10における検索時間を短縮できる。
[構成]
次に、図2を用いて、サーバ10の構成を説明する。図2は、サーバの機能構成図である。サーバ10は、図2に示すように、補助記憶部11、メインメモリ12、制御部13、および、入出力インタフェース14を備える。
補助記憶部11は、WALログと、ソート済みKeyValueファイルとを記憶する。WALログは、前記したとおり、サーバ10の(key,ts,value)のテーブルに対する、追加、削除、更新等の変更内容を示す情報であり、(key,ts,value)のテーブルの実際の変更前に書き込まれる。そして、このWALログは、サーバ10に障害が発生したとき、リカバリ部137(後記)が、更新データの復旧を行う際に参照される。
ソート済みKeyValueファイルは、(key,ts,value)のテーブルを格納するファイルである。このソート済みKeyValueファイルは、例えば、バッファ領域の(key,ts,value)群を、keyの値でソートしたファイルである。
メインメモリ12は、バッファ領域と、キャッシュ領域とを備える。バッファ領域は、当該サーバ10において受け付けた(key,ts,value)のテーブルに対する、追加、削除、更新内容を示す情報(実際には(key,ts,value)群で示されるデータ)を一時的に格納する領域である。
キャッシュ領域は、バッファ領域にあった(key,ts,value)群を一時的に格納する領域である。このキャッシュ領域の(key,ts,value)群は、検索部134(後記)がKeyを含む検索要求を受け付けたときに、検索される。
制御部13は、サーバ10全体の制御を司り、データ書き込み部130と、ファイル作成部131と、キャッシュ作成部132と、バッファ解放部133と、検索部134と、キャッシュ削除部135と、最大キャッシュサイズ登録部136と、リカバリ部137とを備える。キャッシュ作成部132a、および、キャッシュ保持期間登録部138は装備する場合と、装備しない場合とがあり、装備する場合については、第2の実施形態で述べる。
データ書き込み部130は、入出力インタフェース14経由で、(key,ts,value)のテーブルに対する、削除、変更、または、追加等の更新内容を示す情報の入力を受け付けると、この情報をWALログへ書き込む。そして、データ書き込み部130は、WALログへの書き込みが成功すると、この更新内容を示す(key,ts,value)を、メインメモリ12上のバッファ領域へ書き込む。つまり、データ書き込み部130は、(key,ts,value)の削除、変更、または、追加を示すオペレーションをWALログへ書き込み、この書き込みが成功すると、このオペレーションの内容をメインメモリ12上のバッファ領域へ書き込む。
ファイル作成部131は、メインメモリ12上のバッファ領域に書き込まれた(key,ts,value)群のデータ量が所定の閾値を超えた場合、この(key,ts,value)群をファイルへ書き出す。例えば、ファイル作成部131は、メインメモリ12上のバッファ領域に書き込まれた(key,ts,value)群のデータ量が所定の閾値を超えた場合、この(key,ts,value)群をKeyの値でソートして、ソート済みKeyValueファイルを作成し、補助記憶部11へ格納する。
なお、このバッファ領域に書き込まれた(key,ts,value)群に、(key,ts,value)の削除に関する情報が含まれていた場合、このバッファ領域に書き込まれた(key,ts,value)群と、すべてのソート済みKeyValueファイルを読み込み、削除すべき(key,ts,value)を削除した上で新しいソート済みKeyValueファイルを作成する。
図3は、バッファ領域に(key,ts,value)の削除に関する情報が含まれていた場合におけるファイル作成手順例を説明する図である。例えば、図3に示すように、バッファ領域の(key,ts,value)群に(key,ts,value)の削除に関する情報であるD(key303,ts13,value303)が含まれていた場合、まず、ファイル作成部131は、(1)全ての(key,ts,value)ペアを読み込み、削除するべき(key,ts,value)を削除した上で新しいファイルを作成する。つまり、ファイル作成部131は、メインメモリ12のバッファ領域の(key,ts,value)および補助記憶部11のソート済みKeyValueファイル1,2,…,を読み込み、(key303,ts13,value303)を削除した上でソート済みKeyValueファイルnewを作成する。その後、ファイル作成部131は、(2)既存のファイルとメインメモリ12上の(key,ts,value)を削除する。つまり、ファイル作成部131は、ソート済みKeyValueファイル1,2,…,と、バッファ領域の(key,ts,value)群を削除する。
このようにすることで、ファイル作成部131は、(key,ts,value)の削除を、(key,ts,value)のテーブルへ反映させることができる。
図2のキャッシュ作成部132は、メインメモリ12上のバッファ領域に書き込まれた(key,ts,value)群のデータ量が所定の閾値を超え、ファイル作成部131によりバッファ領域の(key,ts,value)群がソート済みKeyValueファイルへ書き出されるとき、バッファ領域の(key,ts,value)群を、キャッシュとしてメインメモリ12のキャッシュ領域に移動させる。なお、前記したファイル作成部131により、(key,ts,value)の削除が行われ、新たなソート済みKeyValueファイルへ書き出されるときは、削除対象の(key,ts,value)が削除された(key,ts,value)群を、キャッシュとしてメインメモリ12のキャッシュ領域に移動する。
バッファ解放部133は、バッファ領域の(key,ts,value)群の、ファイルへの書き出し、および、キャッシュ領域への移動完了後、バッファ領域を解放する。つまり、バッファ領域のデータをクリアして、他のデータを書き込み可能な状態にする。
検索部134は、keyを含む検索要求を受け付けたとき、まず、メインメモリ12のキャッシュ領域から当該keyを含むキャッシュを検索する。ここで、当該keyを持つ(key,ts,value)を含むキャッシュがあれば、このキャッシュの(key,ts,value)群からの検索結果を、検索要求の送信元へ返す。一方、キャッシュ領域に、当該keyを持つ(key,ts,value)を含むキャッシュがなければ、ソート済みKeyValueファイルから当該keyを持つ(key,ts,value)を検索し、検索結果を検索要求の送信元へ返す。なお、この検索部134は、キャッシュ領域のキャッシュを検索したとき、検索でヒットしたキャッシュに、このときの検索時刻を示す情報を付与しておく。詳細は後記するが、キャッシュに付与された検索時刻を示す情報は、キャッシュ削除部135が、削除対象のキャッシュを選択する際に参照される。
キャッシュ削除部135は、キャッシュ領域のデータ量が、所定のデータ量(最大キャッシュサイズA)を超えたとき、キャッシュ領域のキャッシュのうち、検索時刻の古いキャッシュから優先的に削除する。
最大キャッシュサイズ登録部136は、入出力インタフェース14経由で、キャッシュ削除部135が用いる最大キャッシュサイズAの登録を受け付ける。受け付けた最大キャッシュサイズAは、メインメモリ12に格納する。
リカバリ部137は、サーバ10に障害等が発生したとき、メインメモリ12のバッファ領域の(key,ts,value)を読み込み、WALログを用いて、データの復旧を行う。例えば、サーバ10において更新データの入力を受け付けたが、障害等により、バッファ領域の更新データが、ソート済みKeyValueファイルに反映されていないとき、リカバリ部137は、メインメモリ12のバッファ領域のデータと、WALログとを用いて、更新データを復旧し、必要に応じてソート済みKeyValueファイルへ反映させる。
入出力インタフェース14は、当該サーバ10へのデータ入力およびデータ出力を司るインタフェースである。例えば、入出力インタフェース14は、外部装置から、このサーバ10の(key,ts,value)のテーブルに対する、追加、削除、更新内容を示す情報、(key,ts,value)のテーブルの検索要求、メインメモリ12の最大キャッシュサイズA、当該サーバ10への設定情報等の情報の入力を受け付けると、これらの情報を制御部13へ渡す。また、入出力インタフェース14は、制御部13から出力された検索結果等を外部装置等へ出力する。
[処理手順]
次に、図4を用いて、サーバ10の処理手順を説明する。なお、事前にサーバ10の最大キャッシュサイズ登録部136において、最大キャッシュサイズAの登録を受け付け、メインメモリ12に格納しておくものとする。図4は、サーバの処理手順を説明する図である。
まず、サーバ10のデータ書き込み部130は、入出力インタフェース14経由で、(key,ts,value)のテーブルに対する、削除、変更、または、追加等の更新情報の入力を受け付けると(S11)、この情報をWALログへ書き込む(S12)。また、データ書き込み部130は、当該情報をメインメモリ12上のバッファ領域へも書き込む(S13)。
S13の後、ファイル作成部131は、メインメモリ12上のバッファ領域のデータ量が所定の閾値を超えた場合(S14のYes)、バッファ領域の(key,ts,value)群をファイルへ書き出す(S15)。例えば、ファイル作成部131は、メインメモリ12上のバッファ領域に書き込まれた(key,ts,value)群をKeyの値でソートしてソート済みKeyValueファイルを作成し、補助記憶部11に格納する。
一方、メインメモリ12上のバッファ領域のデータ量が所定の閾値以下の場合(S14のNo)、S11へ戻る。
また、S15の後、サーバ10のキャッシュ作成部132は、バッファ領域の(key,ts,value)群を、キャッシュとしてメインメモリ12のキャッシュ領域に移動させる(S16)。このS16の処理の詳細は後記する。
S16の後、バッファ解放部133は、バッファの解放を行う(S17)。つまり、バッファ解放部133は、バッファ領域の(key,ts,value)群をクリアし、データを書き込み可能な状態にし、処理を終了する。
次に、図5を用いて、図4のS16の処理を詳細に説明する。図5は、図4のS16の処理を詳細に説明する図である。
図4のS15の後、サーバ10のキャッシュ作成部132は、メインメモリ12上のバッファをキャッシュ領域に移動する(S161)。つまり、キャッシュ作成部132は、バッファ領域の(key,ts,value)群を、キャッシュとしてメインメモリ12のキャッシュ領域に移動する。
S161の後、キャッシュ作成部132は、現時点で利用しているキャッシュサイズBに、移動したバッファサイズを追加する(S162)。つまり、キャッシュ作成部132は、バッファ領域からキャッシュ領域へ移動した(key,ts,value)群のデータ量をキャッシュサイズBに加算する。
そして、キャッシュ作成部132は、S162で追加したキャッシュサイズBが最大キャッシュサイズAを超えているか否かを判断し、S162で追加したキャッシュサイズBが最大キャッシュサイズAを超えていると判断したとき(S163のYes)、キャッシュ削除部135は、キャッシュ削除を行う(S164)。そして、S16の処理を終了する。S164の処理の詳細は後記する。
一方、キャッシュ作成部132は、S162で追加したキャッシュサイズBが最大キャッシュサイズAを超えていないと判断したとき(S163のNo)、S16の処理を終了する。
次に、図6を用いて、図5のS164を詳細に説明する。図6は、図5のS164を詳細に説明する図である。
図5のS163でYesだったとき、キャッシュ削除部135は、キャッシュ領域の全キャッシュの中から、検索時刻が最も古いものを選択し、メインメモリ12上から解放する(S1641)。S1641の後、キャッシュ削除部135は、キャッシュサイズBから、解放したキャッシュのデータ分のサイズを削減し(S1642)、キャッシュサイズBが最大キャッシュサイズAを超えているか否かを判断し(S1643)、キャッシュサイズBが最大キャッシュサイズAを超えていなければ(S1643のNo)、S164の処理を終了する。一方、キャッシュ削除後も、キャッシュサイズBが最大キャッシュサイズAを超えていれば(S1643のYes)、S1641へ戻り、キャッシュ削除部135は、さらにキャッシュ領域のキャッシュの削除を行う。
このように、キャッシュ削除部135は、キャッシュ領域のキャッシュの占めるデータ量が、最大キャッシュサイズA以下となるよう、検索時刻が最も古いキャッシュから順に削除する。これにより、メインメモリ12上の限られたキャッシュ領域上には比較的最近に検索された(key,ts,value)が乗ることになる。なお、サーバ10の受け付ける検索要求は、比較的最近作成された(key,ts,value)に関する検索要求が多い場合、サーバ10がキャッシュ領域に比較的最近に検索された(key,ts,value)を乗せるようにすることで、検索時間を短縮できる可能性を高めることができる。
次に、図7を用いて、サーバ10が、外部から(key,ts,value)のテーブルの検索要求を受け付けたときの処理手順を説明する。図7は、サーバが、外部から(key,ts,value)のテーブルの検索要求を受け付けたときの処理手順を説明する図である。
まず、サーバ10の検索部134は、keyを含む検索要求を受け付けると(S21)、まず、キャッシュ領域に当該keyを含むキャッシュが存在するか否かを判断する(S22)。ここで、検索部134は、キャッシュ領域に当該keyを含むキャッシュが存在するとき(S22のYes)、ソート済みKeyValueファイルの代わりに当該キャッシュを検索する(S23)。そして、検索部134は、キャッシュから得られた当該keyを含む(key,ts,value)を検索結果として返す。一方、検索部134は、キャッシュ領域に当該keyを含むキャッシュが存在しないとき(S22のNo)、ソート済みKeyValueファイルを検索する(S24)。そして、検索部134は、ソート済みKeyValueファイルから得られた当該keyを含む(key,ts,value)を検索結果として返す。
つまり、サーバ10は、キャッシュ領域に検索対象の(key,ts,value)が存在すれば、このキャッシュ領域の(key,ts,value)を返すので、(key,ts,value)の検索時間を短縮できる可能性が高くなる。特に、サーバ10が、比較的最近に(key,ts,value)のテーブルに追加されたり、検索されたりした(key,ts,value)に関する検索要求を受信することが多い場合、(key,ts,value)の検索時間を短縮できる可能性はさらに高くなる。
なお、第1の実施形態において、キャッシュ削除部135がキャッシュ削除をするとき、キャッシュのうち、検索時刻が古いものから優先的に削除することとしたが、これに限定されない。例えば、キャッシュ削除部135は、キャッシュに含まれる(key,ts,value)群のうち、tsの値が古い(key,ts,value)から優先的に削除するようにしてもよい。
[第2の実施形態]
次に、本発明の第2の実施形態を説明する。第1の実施形態と同じ構成、同じ処理については説明を省略する。第2の実施形態のサーバ10aは、バッファ領域の(key,ts,value)群をキャッシュ領域へ移動させるとき、このバッファ領域の(key,ts,value)群のうち、現在時刻から過去所定時間分の(key,ts,value)群をキャッシュ領域へ移動させることを特徴とする。
[構成]
この第2の実施形態のサーバ10aは、図2の破線で示すキャッシュ保持期間登録部138をさらに備える。また、サーバ10aは、キャッシュ作成部132に代えて、キャッシュ作成部132aを備える。
キャッシュ保持期間登録部138は、入出力インタフェース14経由で、キャッシュ保持期間の入力を受け付ける。このキャッシュ保持期間Tは、メインメモリ12上に格納される。
キャッシュ作成部132aは、メインメモリ12上のバッファ領域の(key,ts,value)群をキャッシュ領域に移動するとき、バッファ領域の(key,ts,value)群のうち、tsの値が(現在時刻−キャッシュ保持期間=時刻T)である(key,ts,value)群を選択し、移動する。
[処理手順]
このようなキャッシュ作成部132aの処理手順を、図8を用いて説明する。図8は、第2の実施形態のキャッシュ作成部の処理手順を説明する図である。なお、サーバ10aは、事前に、キャッシュ保持期間登録部138により、入出力インタフェース14経由で、キャッシュ保持期間の入力を受け付けておくものとする。
まず、キャッシュ作成部132aは、メインメモリ12上のバッファ領域に書き込まれた(key,ts,value)群のデータ量が所定の閾値を超え、ファイル作成部131によりバッファ領域の(key,ts,value)群がソート済みKeyValueファイルへ書き出されるとき、バッファ領域の(key,ts,value)群のtsを取得する。また、キャッシュ作成部132aは、(現在時刻−キャッシュ保持期間)をTと置く(S31)。
S31の後、キャッシュ作成部132aは、S31で取得したtsについて、T<tsであるか否かを判断し(S32)、T<tsであるとき(S32のYes)、すなわち、tsの示す時刻が時刻Tより後であるとき、当該tsを持つ(key,ts,value)群をキャッシュ領域のキャッシュとして移動し(S33)、S34へ進む。一方、T<tsでないとき(S32のNo)は、S34へ進む。
S34において、キャッシュ作成部132aは、バッファ領域の(key,ts,value)群のうち未処理の(key,ts,value)があれば(S34のNo)、S31へ戻り、バッファ領域の(key,ts,value)群をすべて処理したときには(S34のYes)、S35へ進む。このS35以降の処理は、前記した図5のS163以降の処理と同様なので詳細な説明を省略するが、キャッシュ削除部135は、現時点で利用しているキャッシュサイズBが最大キャッシュサイズAを超えたとき(S36のYes)、S37において、キャッシュ領域のキャッシュから、tsの値が最も古い(key,ts,value)を含むキャッシュを削除する。
このようにすることで、キャッシュ領域には、tsの値が比較的新しい(key,ts,value)群が乗ることになる。よって、サーバ10aの受け付ける検索要求が、比較的最近作成された(key,ts,value)に関する検索要求が多い場合、キャッシュ領域にtsの値が比較的新しい(key,ts,value)群が乗ることで、サーバ10aにおける検索時間を短縮できる可能性は高くなる。
この第2の実施形態のサーバ10aの効果を、図9を参照しながら詳細に説明する。図9は、第2の実施形態のサーバにおけるキャッシュの例を示す図である。ここではキャッシュ領域上にキャッシュ1〜キャッシュ4の4つのキャッシュが乗る場合を例に説明する。
図9における横軸は、tsの値を示す。実線の囲みは、第2の実施形態のサーバ10aにおける各キャッシュを構成する(key,ts,value)群を示し、破線の囲みは、キャッシュ1〜キャッシュ4の元となったバッファ領域の(key,ts,value)群を示す。つまり、図9の各囲みにおける右端の値は、その(key,ts,value)群の中で最も新しいtsの値を示し、各囲みにおける左端の値は、その(key,ts,value)群の中で最も古いtsの値を示す。例えば、符号91〜94に示す(key,ts,value)群をすべてがキャッシュとしてキャッシュ領域に乗った後、キャッシュ削除部135が、tsの値の最も古い、符号93に示す(key,ts,value)群を削除してしまうと、tsの値が比較的新しい(key,ts,value)も削除してしまい、検索時にキャッシュ領域上でヒットしない可能性が出てくる。
しかし、サーバ10aのキャッシュ作成部132aは、バッファ領域の(key,ts,value)群のうち、(現在時刻−キャッシュ保持期間)<tsである(key,ts,value)群を選択して、キャッシュ領域に乗せる。これにより、キャッシュ領域におけるキャッシュのメモリ使用量を短縮でき、かつ、tsの値が比較的新しい(key,ts,value)群が占める割合を高くすることができる。つまり、限られたキャッシュ領域上にヒットする可能性の高いデータを乗せることができる。
[その他の実施形態]
また、サーバ10,10aの検索部134が受け付ける検索要求は、keyのみならず、検索の対象であるtsの範囲(タイムスタンプ区間)を含んでいてもよい。この場合、検索部134は、受け付けた検索要求に示される範囲のtsの値を持つ(key,ts,value)を、キャッシュ領域、および、ファイルから検索する。
この検索部134の処理手順を、図10を用いて説明する。図10は、検索部の処理手順を説明する図である。検索部134は、keyおよびタイムスタンプ区間を含む検索要求を受け付けると(S41)、キャッシュ領域に、当該keyを含むキャッシュ((key,ts,value)群)が存在し(S42のYes)、かつ、当該キャッシュのtsが、当該タイムスタンプ区間に含まれる場合(S43のYes)、S44へ進む。S44は、図7のS23と同様なので説明を省略する。
一方、キャッシュ領域に、当該keyを含むキャッシュが存在しない(S42のNo)、または、当該キャッシュのtsが、当該タイムスタンプ区間に含まれない(S43のNo)場合、S45へ進む。S45は、図7のS24と同様なので説明を省略する。
このようにすることで、サーバ10,10aは、タイムスタンプ区間が指示された検索要求についても検索結果を返すことができる。
なお、前記したサーバ10,10aを分散KeyValueストアのシステムに用いてもよい。この場合、サーバ10,10aが保持する(key,ts,value)のテーブルは、分散KeyValueストアにおいて、元のテーブルを分割したテーブルである。図11は、分散KeyValueストアにおけるサーバを例示した図である。
例えば、図11に示すように、システムが、マスタサーバ(サーバ10D)と、複数のスレーブサーバ(サーバ10A,10B,10C)とにより構成される場合を考える。このような場合において、サーバ10A,10B,10Cそれぞれが保持する(key,ts,value)のテーブルは、元のテーブルAを複数のエリアに分割したテーブルである。例えば、サーバ10Aは、エリア0,3の(key,ts,value)のテーブルを保持し、サーバ10Bは、エリア1,4の(key,ts,value)のテーブルを保持する。そして、サーバ10Dは、(key,ts,value)の削除、変更、追加、検索等の要求を受け付けると、その(key,ts,value)を含むエリアの(key,ts,value)のテーブルを保持するスレーブサーバ(サーバ10A,10B,10C)へ、その要求を転送する。そして、サーバ10A,10B,10Cは、前記した各実施形態で述べた処理と同様の処理を実行し、その実行結果を、サーバ10Dへ返す。
[プログラム]
前記したサーバ10,10aが実行する処理をコンピュータが実行可能な言語で記述したプログラム(情報処理プログラム)で実現することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータで読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより前記した実施形態と同様の処理を実現してもよい。以下に、サーバ10,10aと同様の機能を実現する情報処理プログラムを実行するコンピュータの一例を説明する。
図12は、情報処理プログラムを実行するコンピュータを示す図である。図12に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有し、これらの各部はバス1080によって接続される。
メモリ1010は、図12に例示するように、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、図12に例示するように、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、図12に例示するように、ディスクドライブ1041に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1041に挿入される。シリアルポートインタフェース1050は、図12に例示するように、例えばマウス1051、キーボード1052に接続される。ビデオアダプタ1060は、図12に例示するように、例えばディスプレイ1061に接続される。
ここで、図12に例示するように、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記のプログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1031に記憶される。
また、上記実施の形態で説明した各種データは、プログラムデータとして、例えばメモリ1010やハードディスクドライブ1031に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、制御部13の各部の機能を実現する。
なお、プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
10,10a サーバ(情報処理装置)
11 補助記憶部
12 メインメモリ
13 制御部
14 入出力インタフェース
130 データ書き込み部
131 ファイル作成部
132,132a キャッシュ作成部
133 バッファ解放部
134 検索部
135 キャッシュ削除部
136 最大キャッシュサイズ登録部
137 リカバリ部
138 キャッシュ保持期間登録部

Claims (7)

  1. メインメモリ上に、WAL(Write Ahead Logging)ログを備え、前記WALログに、KeyValueストアに用いられる(key,value)の削除、変更、または、追加を示すオペレーションの書き込みが成功すると、前記(key,value)を、前記メインメモリ上のバッファ領域へ書き込む情報処理装置であって、
    前記バッファ領域に書き込まれた前記(key,value)の集合である(key,value)群のデータ量が所定の閾値を超えたとき、
    前記バッファ領域に書き込まれた(key,value)群をファイルへ書き出すファイル作成部と、
    前記バッファ領域に書き込まれた(key,value)群を、前記メインメモリ上に確保されたキャッシュ領域に移動させるキャッシュ作成部と、
    前記(key,value)群のファイルへの書き出し、および、前記キャッシュ領域への移動完了後、前記バッファ領域を解放するバッファ解放部と、
    前記keyを含む検索要求を受け付けたとき、
    前記キャッシュ領域から前記keyを含む(key,value)を検索し、前記キャッシュ領域に前記keyを含む(key,value)がないとき、前記ファイルから前記keyを含む(key,value)を検索する検索部とを備えることを特徴とする情報処理装置。
  2. 前記キャッシュ領域の前記(key,value)群のデータ量が、所定のデータ量を超えたとき、前記キャッシュ領域の前記(key,value)群のうち、前記検索の時刻または作成時刻の古い(key,value)群から優先的に削除するキャッシュ削除部をさらに備えることを特徴とする請求項1に記載の情報処理装置。
  3. 前記バッファ領域に書き込まれた前記(key,value)群のデータ量が所定の閾値を超えた場合において、前記バッファ領域に書き込まれた前記(key,value)群に、前記(key,value)の削除を示す情報が含まれていたとき、
    前記ファイル作成部は、
    前記バッファ領域に書き込まれた(key,value)群をファイルへ書き出す際、前記ファイル内から削除の対象の(key,value)を削除した新たなファイルを作成し、
    前記キャッシュ作成部は、
    前記バッファ領域に書き込まれた(key,value)群のうち、削除の対象の(key,value)を削除した(key,value)群を、前記キャッシュ領域に移動させることを特徴とする請求項1または請求項2に記載の情報処理装置。
  4. 前記キャッシュ作成部は、
    前記バッファ領域に書き込まれた(key,value)群を、前記キャッシュ領域に移動させるとき、
    前記(key,value)群のうち、現在時刻から、過去所定時間分までの間に、更新、または、追加された前記(key,value)群を移動させることを特徴とする請求項1ないし請求項3のいずれか1項に記載の情報処理装置。
  5. 前記検索部は、
    前記検索要求が、検索の対象である(key,value)の作成時刻の範囲をさらに含むとき、前記キャッシュ領域、および、前記ファイルから、前記keyを含み、かつ、前記作成時刻の範囲に作成された(key,value)を検索することを特徴とする請求項1ないし請求項4のいずれか1項に記載の情報処理装置。
  6. メインメモリ上に、WAL(Write Ahead Logging)ログを備え、前記WALログに、KeyValueストアに用いられる(key,value)の削除、変更、または、追加を示すオペレーションの書き込みが成功すると、前記(key,value)を、前記メインメモリ上のバッファ領域へ書き込む情報処理装置を用いた情報処理方法であって、
    前記情報処理装置が、
    前記バッファ領域に書き込まれた前記(key,value)の集合である(key,value)群のデータ量が所定の閾値を超えたとき、
    前記バッファ領域に書き込まれた(key,value)群をファイルへ書き出すファイル作成ステップと、
    前記バッファ領域に書き込まれた(key,value)群を、前記メインメモリ上に確保されたキャッシュ領域に移動させるキャッシュ作成ステップと、
    前記(key,value)群のファイルへの書き出し、および、前記キャッシュ領域への移動完了後、前記バッファ領域を解放するバッファ解放ステップと、
    前記keyを含む検索要求を受け付けたとき、
    前記キャッシュ領域からkeyを含む(key,value)を検索し、前記キャッシュ領域に前記keyを含む(key,value)がないとき、前記ファイルから前記keyを含む(key,value)を検索する検索ステップとを実行することを特徴とする情報処理方法。
  7. メインメモリ上に、WAL(Write Ahead Logging)ログを備え、前記WALログに、KeyValueストアに用いられる(key,value)の削除、変更、または、追加を示すオペレーションの書き込みが成功すると、前記(key,value)を、前記メインメモリ上のバッファ領域へ書き込むための情報処理プログラムであって、
    前記バッファ領域に書き込まれた前記(key,value)の集合である(key,value)群のデータ量が所定の閾値を超えたとき、
    前記バッファ領域に書き込まれた(key,value)群をファイルへ書き出すファイル作成ステップと、
    前記バッファ領域に書き込まれた(key,value)群を、前記メインメモリ上に確保されたキャッシュ領域に移動させるキャッシュ作成ステップと、
    前記(key,value)群のファイルへの書き出し、および、前記キャッシュ領域への移動完了後、前記バッファ領域を解放するバッファ解放ステップと、
    前記keyを含む検索要求を受け付けたとき、
    前記キャッシュ領域からkeyを含む(key,value)を検索し、前記キャッシュ領域に前記keyを含む(key,value)がないとき、前記ファイルから前記keyを含む(key,value)を検索する検索ステップとをコンピュータに実行させるための情報処理プログラム。
JP2013107572A 2013-05-22 2013-05-22 情報処理装置、情報処理方法、および、情報処理プログラム Active JP5718974B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013107572A JP5718974B2 (ja) 2013-05-22 2013-05-22 情報処理装置、情報処理方法、および、情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013107572A JP5718974B2 (ja) 2013-05-22 2013-05-22 情報処理装置、情報処理方法、および、情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2014229036A JP2014229036A (ja) 2014-12-08
JP5718974B2 true JP5718974B2 (ja) 2015-05-13

Family

ID=52128840

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013107572A Active JP5718974B2 (ja) 2013-05-22 2013-05-22 情報処理装置、情報処理方法、および、情報処理プログラム

Country Status (1)

Country Link
JP (1) JP5718974B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109960212B (zh) * 2017-12-25 2020-07-31 北京京东乾石科技有限公司 任务发送方法和装置
WO2023008008A1 (ja) 2021-07-30 2023-02-02 株式会社ソフトギア 情報処理プログラム、情報処理装置及び情報処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5405530B2 (ja) * 2011-06-27 2014-02-05 日本電信電話株式会社 分散データストアシステムおよび障害復旧方法
US20130110767A1 (en) * 2011-10-26 2013-05-02 Nec Laboratories America, Inc. Online Transaction Processing

Also Published As

Publication number Publication date
JP2014229036A (ja) 2014-12-08

Similar Documents

Publication Publication Date Title
CN107003935B (zh) 用于优化数据库去重的装置、方法和计算机介质
US10599337B2 (en) Method and device for writing data and acquiring data in a distributed storage system
US8086810B2 (en) Rapid defragmentation of storage volumes
US11580162B2 (en) Key value append
US9043334B2 (en) Method and system for accessing files on a storage system
US9740422B1 (en) Version-based deduplication of incremental forever type backup
US11409616B2 (en) Recovery of in-memory databases after a system crash
EP3316150B1 (en) Method and apparatus for file compaction in key-value storage system
US8850148B2 (en) Data copy management for faster reads
US20150277966A1 (en) Transaction system
CN110597797A (zh) 表空间碎片回收方法、装置、电子设备及存储介质
KR102345517B1 (ko) 엣지 컴퓨팅을 위해 데이터중복제거 기술이 적용된 casedb(키 벨류 저장장치)
US9690658B2 (en) Distributed storage system and method
KR20210058118A (ko) CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치
JP5718974B2 (ja) 情報処理装置、情報処理方法、および、情報処理プログラム
JP2018045285A (ja) 情報処理システム、制御装置、処理プログラム、及び処理方法
US8738571B1 (en) Extended recycle bin
US20160188214A1 (en) Apparatus, method and medium
US10430287B2 (en) Computer
KR20220006458A (ko) 키-밸류 저장 장치 및 키 분류 방법
US10152492B1 (en) Extended recycle bin for versioning
JP6251121B2 (ja) サーバ、データ管理方法、データ管理プログラム、および、分散Key−Valueストア
US20210406243A1 (en) Non-transitory computer-readable storage medium for storing information processing program, information processing method, and information processing apparatus
JP2019101595A (ja) データベース管理システム及び方法
TWI475419B (zh) 用於在儲存系統上存取檔案的方法和系統

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150302

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: 20150317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150319

R150 Certificate of patent or registration of utility model

Ref document number: 5718974

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150