(57)【要約】【課題】関連するレコードを複数保持するキーバリューストアにおいて、処理効率の低下を抑制すること。【解決手段】本発明の情報処理システムは、複数の属性の値を有するレコード群を、相互に関連する索引キーバリューペアとレコードキーバリューペアとによるデータ構造にて管理するデータ管理手段を備え、当該データ管理手段は、レコード群に含まれる所定の属性の値を分類する基準を示す分類基準値を含むバリュー値と、当該バリュー値に関連付けられたキー値と、からなる索引キーバリューペアを生成すると共に、当該索引キーバリューペアのバリュー値内の分類基準値に関連付けられたキー値と、当該分類基準値に対応する所定の属性の値を有するレコードの情報を含むバリュー値と、からなるレコードキーバリューペアを生成する、という構成をとる。【選択図】図１２
2015069461.tif 000002
【特許請求の範囲】
【請求項１】
複数の属性の値を有するレコード群を、相互に関連する索引キーバリューペアとレコードキーバリューペアとによるデータ構造にて管理するデータ管理手段を備え、
前記データ管理手段は、前記レコード群に含まれる所定の属性の値を分類する基準を示す分類基準値を含むバリュー値と、当該バリュー値に関連付けられたキー値と、からなる前記索引キーバリューペアを生成すると共に、当該索引キーバリューペアのバリュー値内の前記分類基準値に関連付けられたキー値と、当該分類基準値に対応する前記所定の属性の値を有する前記レコードの情報を含むバリュー値と、からなる前記レコードキーバリューペアを生成する、
情報処理システム。
【請求項２】
請求項１に記載の情報処理システムであって、
前記データ管理手段は、新たに設定された複数の前記分類基準値に従い、前記レコードキーバリューペアに含まれる複数の前記レコードの情報を、当該レコードの情報に含まれる前記所定の属性の値に応じて複数のバリュー値に分割し、当該分割した各バリュー値と、当該各バリュー値のそれぞれに関連付けられた各キー値と、からなる複数の前記レコードキーバリューペアをそれぞれ生成し、さらに、前記索引キーバリューペアのバリュー値を前記新たに設定された複数の分類基準値に更新すると共に、当該各分類基準値と生成した前記複数のレコードキーバリューペアの各キー値とを対応付ける、
情報処理システム。
【請求項３】
請求項２に記載の情報処理システムであって、
前記データ管理手段は、前記レコードキーバリューペアのデータサイズ、あるいは、レコード数が予め設定された閾値以上である場合に、当該レコードキーバリューペアを分割する、
情報処理システム。
【請求項４】
請求項１乃至３のいずれかに記載の情報処理システムであって、
前記索引キーバリューペアと前記レコードキーバリューペアとを記憶する記憶装置から当該レコードキーバリューペアを取得するデータ取得手段を備え、
前記データ取得手段は、前記索引キーバリューペアのキー値と前記分類基準値とを指定する検索要求を受け付け、当該検索要求にかかるキー値を含む前記索引キーバリューペア内において、前記検索要求にかかる分類基準値を満たす前記分類基準値に対応付けられたキー値を含む前記レコードキーバリューペアを記憶装置内から取得する、
情報処理システム。
【請求項５】
請求項４に記載の情報処理システムであって、
前記データ取得手段は、前記検索要求として受け付けた前記分類基準値を蓄積し、
前記データ管理手段は、前記データ取得手段にて蓄積された前記分類基準値に応じて、前記レコードキーバリューペアを生成する、
情報処理システム。
【請求項６】
請求項２又は３に記載の情報処理システムであって、
前記索引キーバリューペアと前記レコードキーバリューペアとを記憶する記憶装置から当該レコードキーバリューペアを取得するデータ取得手段を備え、
前記データ取得手段は、前記索引キーバリューペアのキー値と前記分類基準値とを指定する検索要求を受け付け、当該検索要求にかかるキー値を含む前記索引キーバリューペアにおける、前記検索要求にかかる分類基準値を満たす前記分類基準値に対応付けられたキー値を含む前記レコードキーバリューペアを記憶装置内から取得すると共に、前記検索要求として受け付けた前記分類基準値を蓄積し、
前記分割手段は、前記データ取得手段にて蓄積された前記分類基準値のうち、最も多く検索要求された分類基準値に応じて、前記レコードキーバリューペアを分割する、
情報処理システム。
【請求項７】
請求項１乃至６のいずれかに記載の情報処理システムであって、
前記データ管理手段は、前記索引キーバリューペアと、当該索引キーバリューペアのバリュー値に含まれる前記分類基準値に対応付けられたキー値を有する前記レコードキーバリューペアとを、同一のトランザクション処理にて記憶装置に格納する、
情報処理システム。
【請求項８】
請求項７に記載の情報処理システムであって、
前記データ管理手段は、前記レコードを構成する属性の値のうちの１つを代表キーとして選出し、当該代表キーをキーバリューペアのキー値とする当該キーバリューペアのログを用いて、前記トランザクション処理を実行する、
情報処理システム。
【請求項９】
情報処理装置に、
複数の属性の値を有するレコード群を、相互に関連する索引キーバリューペアとレコードキーバリューペアとによるデータ構造にて管理するデータ管理手段を実現させると共に、
前記データ管理手段は、前記レコード群に含まれる所定の属性の値を分類する基準を示す分類基準値を含むバリュー値と、当該バリュー値に関連付けられたキー値と、からなる前記索引キーバリューペアを生成すると共に、当該索引キーバリューペアのバリュー値内の前記分類基準値に関連付けられたキー値と、当該分類基準値に対応する前記所定の属性の値を有する前記レコードの情報を含むバリュー値と、からなる前記レコードキーバリューペアを生成する、
ことを実現させるためのプログラム。
【請求項１０】
情報処理装置にて、複数の属性の値を有するレコード群を、相互に関連する索引キーバリューペアとレコードキーバリューペアとによるデータ構造にて管理する際に、
前記レコード群に含まれる所定の属性の値を分類する基準を示す分類基準値を含むバリュー値と、当該バリュー値に関連付けられたキー値と、からなる前記索引キーバリューペアを生成すると共に、当該索引キーバリューペアのバリュー値内の前記分類基準値に関連付けられたキー値と、当該分類基準値に対応する前記所定の属性の値を有する前記レコードの情報を含むバリュー値と、からなる前記レコードキーバリューペアを生成する、
データ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置にかかり、特に、キーバリューストア方式でデータを管理する情報処理システムに関する。
【背景技術】
【０００２】
近年、スケーラブルなＷｅｂアプリケーションの実行基盤として、データセンタ内の多数のコンピュータを用いるクラウド技術が注目されている。このクラウド技術のインフラストラクチャの１つとして、キー値とバリュー値とのペア（Key-Valueペア；KVペア）をデータとして扱うキーバリューストア（Key Value Store；KVS）が知られている（例えば、特許文献１，２参照）。特許文献１，２に記載されているKVペアのデータ構造は、図１に示すように、１つのキー値Ｋに対してデータ（レコードＲ）を１つだけ保持したバリュー値Ｖが対応付けられた構造となっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２５４５３号公報
【特許文献２】特開２０１１−８４５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、クライアント等の要求元がノード装置からレコードを取得する場合、KVSでは取得したいレコードに対応するキー値を含んだレコード取得要求を要求元からノード装置へ送信する。従って、１つのキー値に対してレコードを１つだけ保持する特許文献１，２に記載されている技術では、例えば関連する複数のレコードを取得する場合、要求元からノード装置へ複数回、レコード取得要求を送信しなければならない。このため、ネットワーク転送効率が低下する、という問題が生じる。
【０００５】
このような問題点を解決するために、KVペアのデータ構造として、図２に示すように、１つのキー値Ｋに対して関連する複数のレコードＲを保持したバリュー値Ｖが対応付けられた構造を採用することが考えられる。このようなデータ構造を採用することにより、要求元はレコード取得要求を１回ノード装置へ送信するだけで、関連する複数のレコードを取得することができ、ネットワーク転送効率が向上する。
【０００６】
しかしながら、上述したようなデータ構造を採用すると、１つのＫＶペアに含まれるレコード数が増加した場合、１つのKVペアのサイズが肥大化し、取得したレコード群に不要なレコードが含まれ、処理効率が低下する、という問題が生じる。
【０００７】
そこで、本発明の目的は、上述した課題である、キーバリューストア方式を採用する場合において処理効率が低下することを解決することができる、情報処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一形態である情報処理装置は、
複数の属性の値を有するレコード群を、相互に関連する索引キーバリューペアとレコードキーバリューペアとによるデータ構造にて管理するデータ管理手段を備え、
前記データ管理手段は、前記レコード群に含まれる所定の属性の値を分類する基準を示す分類基準値を含むバリュー値と、当該バリュー値に関連付けられたキー値と、からなる前記索引キーバリューペアを生成すると共に、当該索引キーバリューペアのバリュー値内の前記分類基準値に関連付けられたキー値と、当該分類基準値に対応する前記所定の属性の値を有する前記レコードの情報を含むバリュー値と、からなる前記レコードキーバリューペアを生成する、
という構成をとる。
【０００９】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
複数の属性の値を有するレコード群を、相互に関連する索引キーバリューペアとレコードキーバリューペアとによるデータ構造にて管理するデータ管理手段を実現させると共に、
前記データ管理手段は、前記レコード群に含まれる所定の属性の値を分類する基準を示す分類基準値を含むバリュー値と、当該バリュー値に関連付けられたキー値と、からなる前記索引キーバリューペアを生成すると共に、当該索引キーバリューペアのバリュー値内の前記分類基準値に関連付けられたキー値と、当該分類基準値に対応する前記所定の属性の値を有する前記レコードの情報を含むバリュー値と、からなる前記レコードキーバリューペアを生成する、
ことを実現させるためのプログラムである。
【００１０】
また、本発明の他の形態であるデータ管理方法は、
情報処理装置にて、複数の属性の値を有するレコード群を、相互に関連する索引キーバリューペアとレコードキーバリューペアとによるデータ構造にて管理する際に、
前記レコード群に含まれる所定の属性の値を分類する基準を示す分類基準値を含むバリュー値と、当該バリュー値に関連付けられたキー値と、からなる前記索引キーバリューペアを生成すると共に、当該索引キーバリューペアのバリュー値内の前記分類基準値に関連付けられたキー値と、当該分類基準値に対応する前記所定の属性の値を有する前記レコードの情報を含むバリュー値と、からなる前記レコードキーバリューペアを生成する、
という構成をとる。
【発明の効果】
【００１１】
本発明は、以上のように構成されることにより、キーバリューストア方式を採用する場合において、データの処理性能を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明に関連するキーバリューストアのデータ構造の一例を示す図である。
【図２】本発明に関連するキーバリューストアのデータ構造の一例を示す図である。
【図３】本発明の実施形態１における情報処理システムの構成を示すブロック図である。
【図４】本発明の実施形態１における情報処理システムにて処理されるデータの一例を示す図である。
【図５】本発明の実施形態１における情報処理システムにて処理されるデータの一例を示す図である。
【図６】本発明の実施形態１における情報処理システムにて処理されるデータの一例を示す図である。
【図７】本発明の実施形態１における情報処理システムにて処理されるデータの一例を示す図である。
【図８】本発明の実施形態１における情報処理システムによる動作を示すフローチャートである。
【図９】本発明の実施形態１における情報処理システムによる動作を示すフローチャートである。
【図１０】本発明の実施形態２における情報処理システムの構成を示すブロック図である。
【図１１】本発明の実施形態３における情報処理システムにて処理されるデータの一例を示す図である。
【図１２】本発明の付記１における情報処理システムの構成を示す図である。
【発明を実施するための形態】
【００１３】
＜実施形態１＞
本発明の第１の実施形態を、図３乃至９を参照して説明する。図３は、情報処理システムの構成を示す図である。図４乃至図７は、情報処理システムにて処理されるデータの一例を示す図である。図８乃至図９は、情報処理システムの動作を示すフローチャートである。
【００１４】
［構成］
実施形態１における情報処理システムは、図３に示すように、処理対象となるデータを記憶する記憶装置であるKVS（Key Value Store）４を備えている。そして、情報処理システムは、上記KVS４に連結され、当該KVS４にデータをトランザクション処理にて格納するトランザクション処理装置３を備える。また、情報処理システムは、データの取得要求を行うアプリケーション５と、アプリケーション５からの要求に応じてKVS４からデータを取得するデータ取得部１と、データを分割して上記トランザクション処理装置３を介してデータをKVS４に格納するデータ分割部２と、を備えている。
【００１５】
上記データ分割部２（データ管理手段）は、情報処理システムに装備された演算装置にプログラムが組み込まれることで構築された、分割指定部２１と、KVペア分割部２２と、索引情報更新部２３と、を備えている。まず、データ分割部２は、基本的な機能として、図５に示すような索引KVペアＤ１とレコードKVペアＤ２との組み合わせのデータ構造にて、データをKVS４に格納する機能を有する。
【００１６】
ここで、KVS４に格納するデータのデータ構造について説明する。まず、KVS４に格納する元となるデータは、図４に示すように、商品に対する入札状況を示すデータのレコード群である。例えば、図４（Ａ）に示すように、商品ＩＤが付与された商品に入札があると、図４（Ｂ）に示すように、入札時刻、商品ＩＤ、入札を行ったユーザＩＤ、入札金額、を記録する。ここで、入札時刻、商品ＩＤ、ユーザＩＤ、入札金額は、それぞれレコードを構成する属性であり、各レコードは、各属性の値を有して構成されている。そして、上述した入力状況を示すデータを、データ分割部２は、図５に示すデータ構造にてKVS４に格納する。
【００１７】
KVS４に格納されるデータ構造は、上述したように、索引KVペアＤ１とレコードKVペアＤ２との組み合わせにて表される（図５参照）。まず、レコードKVペアＤ２は、複数のレコードＲを１つにまとめたバリュー値Ｖを有し、当該バリュー値Ｖに所定のキー値Ｋが関連付けられたKVペア（キーバリューペア）である。ここで、レコードKVペアＤ２のバリュー値Ｖを構成する複数のレコードを１つにまとめるルールは、次の通りである。
【００１８】
まず、図３（Ｂ）に示すレコード群のうち、１つの属性の値が代表キーであるクラスタキーとして決定される。ここでは、属性「商品ＩＤ」がクラスタキーとして決定されると、当該クラスタキーと同一の属性を有する複数のレコードを、１つのKVペアとしてまとめる。つまり、レコードKVペアＤ２のバリュー値Ｖは、同一の属性「商品ＩＤ」を有するレコードをいくつかまとめたものとなる。
【００１９】
そして、レコードKVペアＤ２のバリュー値Ｖは、予め設定された属性であるレンジキーの値のある担当範囲毎で、まとめられて構成されている。例えば、図５の例では、各レコードKVペアＤ２には、それぞれレンジキーとなる「入札時刻」を所定範囲の時間毎に分類する担当範囲（分類基準値）が設定されており、それぞれのレコードKVペアＤ２に設定された担当範囲に対応する複数のレコードＲが、バリュー値Ｖとして含められている。このとき、レンジキーの担当範囲は、クラスタキーの値ごとに重複しないものが設定されることとする。そして、各レコードKVペアＤ２のキー値Ｋには、それぞれに設定されたレンジキーの担当範囲に応じて一意に決定された値（例えば、図５の例では、０．１や０．２など）が決定されて、それぞれに設定されている。
【００２０】
そして、上記索引KVペアＤ１は、上記レコードKVペアＤ２毎に設定されたレンジキーの担当範囲の値をレコードＲとして含むバリュー値Ｖを有し、当該バリュー値Ｖに上記クラスタキーをキー値Ｋとして関連付けたKVペア（キーバリューペア）である。なお、バリュー値Ｖには、１つ又は複数の担当範囲（分類基準値）の値が含まれ、それぞれの担当範囲に、対応するレコードKVペアＤ２のキー値が対応付けられている。例えば、図５の例における索引KVペアＤ１は、属性「商品ＩＤ」の値が「ｉ１」である商品に対する入札状況を表すレコードの索引であり、キー値Ｋとして「ｉ１」が設定され、バリュー値ＶのレコードＲとして、属性「入札時刻」の担当範囲が複数含まれて設定されている。そして、バリュー値Ｖに含まれる各担当範囲には、それぞれ各レコードKVペアＤ２のキー値Ｋ（０．１や０．２など）がそれぞれ対応付けられている。
【００２１】
以上のように、データ分割部２は、上述したデータ構造の相互に対応付けられたKVペアを生成して、KVS４に格納する。なお、相互に対応付けられたKVペアをKVS４に格納する際には、後述するトランザクション処理装置３を介して、同一のトランザクション処理にて格納する。
【００２２】
また、データ分割部２は、レコードKVペアＤ２を分割して、索引KVペアＤ１を更新する機能を有する。KVペアの分割について、図６乃至図７を参照して説明する。ここでは、図６に示すKVペアを、図７に示すように分割する場合を説明する。
【００２３】
分割指定部２１は、KVペアを分割するかどうかを決定する。例えば、分割指定部２１は、図６に示すレコードKVペアＤ２０のサイズ、あるいは、レコードＲの個数が、あらかじめ設定された閾値以上になった場合に分割する、と決定する。
【００２４】
分割指定部２１は、分割することになった場合、レンジキーの値の担当範囲をどのように分割するかを決定する。例えば、図７に示すように、分割後のすべてのレコードKVペアＤ２１，Ｄ２に含まれるレコード数が同一またはほぼ同一（予め設定された基準により同一）、あるいは、サイズが同一またはほぼ同一（予め設定された基準により同一）となるように、レンジキーの値の担当範囲を決定する。ここでは、図６に示す分割前の担当範囲である入札時刻「2013/01/01 00:00:01〜2013/01/01 00:00:59」を、「2013/01/01 00:00:01〜2013/01/01 00:00:50」と「2013/01/01 00:00:51〜2013/01/01 00:00:59」との複数の担当範囲に分割することとする。
【００２５】
そして、KVペア分割部２２は、上述したように新しく決めた担当範囲を元に、図７に示すように新しくレコードKVペアＤ２２を作成し、当該新しいレコードKVペアＤ２２に分割対象となる元のレコードKVペアＤ２１中のレコードを振り分ける。そして、KVペア分割部２２は、新しく作成したレコードKVペアＤ２２に対して適切なキー値を設定する。このとき、分割対象の元なるレコードKVペアＤ２１のキー値はそのまま再利用し、分割によって追加されるレコードKVペアＤ２２のキー値は採番する。採番の方法としては任意であるが、キー値を管理する採番装置を導入しても良く、また、後述するそれ以外の方法を利用してもよい。
【００２６】
また、索引情報更新部２３は、上述したように新しく作成したレコードKVペアＤ２１，Ｄ２２を参照するように、索引KVペアＤ１１を更新する。つまり、索引情報更新部２３は、索引KVペアＤ２１のバリュー値を、上述したように分割したレンジキーの担当範囲に更新し、各担当範囲と各レコードKVペアＤ２１，Ｄ２２の各キー値とを対応づける。
【００２７】
上記トランザクション処理装置３は、上述したデータ分割部２で作成されたKVペア、つまり、まとめられた索引KVペア及びレコードKVペアを、同一のトランザクション処理にてKSV４に格納する。なお、関連付けられた複数のKVペアを同一トランザクション処理にて格納する処理については、「特開２０１２−２３８０６１（以下、関連文献１）」に開示の方法で実現でき、その他の方法で実現してもよい。
【００２８】
次に、上述のようにしてKVS４に格納されているデータを取得するデータ取得部１について詳述する。データ取得部１（データ取得手段）は、情報処理システムに装備された演算装置にプログラムが組み込まれることで構築された、索引情報解釈部１１と、ＫＶペア取得部１２とを備える。そして、データ取得部１は、アプリケーション５からの要求を解釈し、ＫＶペア取得部１２、索引情報解釈部１１と連携し、要求されたデータを返却する。
【００２９】
具体的に、データ取得部１は、アプリケーション５から要求のあったKVペアを取得するために、KVペア取得部１２にデータ取得の要求を出す。このとき、データ取得の要求は、「クラスタキーのキー値」と「レンジキーの範囲」が指定されていることとする。そして、KVペア取得部１２は、要求された「クラスターのキー値」を有する索引KVペアをKVS４から取得して、当該取得した索引KVペアを索引情報解釈部１１にて解釈して、要求された「レンジキーの範囲」が含まれる担当範囲に対応するレコードKVペアのキー値を取得する。そして、KVペア取得部１２は、索引情報解釈部１１が取得したレコードKVペアのキー値をもとに、レコードが格納されたレコードKVペアをKVS４から取得して、取得したレコードKVペアをアプリケーション５に返却する。
【００３０】
なお、本実施形態における本実施形態における情報処理システムは、１台又は複数台の情報処理装置にて構成されている。一例として、図３に示す情報処理システムは、複数台の情報処理装置にて構成されており、アプリケーション５、データ取得部１、データ分割部２、トランザクション処理装置３、ＫＶＳ４が、それぞれ個別の情報処理装置にて構成されている。
【００３１】
［動作］
次に、上述した構成の情報処理システムの動作を説明する。まず、図８を参照して、KVSからデータを取得するときの動作を説明する。また、図９を参照して、レコードKVペアを分割するときの動作を説明する。さらに、KVSに格納されていないログ中のデータを取得するときの動作も説明する。
【００３２】
はじめに、KVSからデータを取得するときの動作を説明する。なお、ここでは、KVS４に、図５に示すデータ構造のKVペアが格納されていることとする。
【００３３】
まず、アプリケーション５からデータ取得部１に、「クラスタキーのキー値」と「レンジキーの範囲」を指定したデータ取得要求が発行される（ステップＳ１）。このとき、クラスタキーのキー値が「i1」、レンジキーの範囲が「2013/01/01 00:00:51〜2013/01/01 00:00:59」であるデータ取得要求が発行されたとする。
【００３４】
続いて、KVペア取得部１２は、指定されたクラスタキーのキー値「i1」を用いて、KVS４から該当する索引KVペアＤ１を取得する（ステップＳ２）。そして、索引情報解釈部１１は、上記KVペア取得部１２にて取得した索引KVペアＤ１を解釈し、データ取得要求にて指定された「レンジキーの範囲」が含まれるレコードが格納されたレコードKVペアＤ２のキー値を取得する（ステップＳ３）。図５における索引KVペアＤ１によると、データ取得要求にて指定された「2013/01/01 00:00:51〜2013/01/01 00:00:59」のデータは、キー値が「0.2」のレコードKVペアＤ２に格納されていることが分かる。そして、KVペア取得部１２は、索引情報解釈部１１が取得したレコードKVペアＤ２のキー値「0.2」をもとに、該当するレコードKVペアＤ２をKVS４から取得する（ステップＳ４）。
【００３５】
なお、索引情報解釈部１１が取得したキー値が複数ある場合は、KVペア取得部１２は、キー値の個数だけ対応するレコードKVペアＤ２を取得する（ステップＳ５でＮｏ，ステップＳ７）。
【００３６】
そして、データ取得部１は、KVペア取得部１２にてデータ取得要求にかかる「レンジキーの範囲」の全てのレコードKVペアＤ２を取得すると（ステップＳ５でＹｅｓ）、当該取得したレコードKVペアＤ２をアプリケーション５に返却する（ステップＳ６）。
【００３７】
次に、KVペアを分割するときの動作を説明する。なお、ここでは、図６に示すKVペアを図７に示すように分割することとする。
【００３８】
まず、アプリケーション５から、「クラスタキーのキー値」と「レンジキーの範囲」を指定してレコードKVペアの分割要求が出される（ステップＳ１１）。そして、アプリケーション５からの要求に基づき、トランザクション処理装置３はトランザクション開始処理を実行する（ステップＳ１２）（この処理は、上記関連文献１のトランザクション開始処理と同等である）。
【００３９】
続いて、KVペア取得部１２は、指定された「クラスタキーのキー値」をもとに、KVS４から索引KVペアＤ１０を取得する（ステップＳ１３）。そして、索引情報解釈部１１は、指定された「レンジキーの範囲」をもとに、取得した索引KVペアＤ１０から指定された「レンジキーの範囲」のレコードを含むレコードKVペアＤ２０のキー値を取得する。索引情報解釈部１１が取得したキー値をもとに、KVペア取得部１２は、分割対象のレコードKVペアＤ２０をKVS４から取得する（ステップＳ１４）。そして、データ取得部１は、KVペア取得部１２にて取得したレコードKVペアＤ２０を、データ分割部２に渡す。
【００４０】
続いて、データ分割部２の分割指定部２１は、レコードKVペアＤ２０を分割するかどうかを決定する。分割の判断は、レコードKVペアＤ２０のサイズがあらかじめ設定された閾値以上になった場合に分割する、といった方法で判断する。なお、分割の判断方法は任意であり、例えば、レコードKVペアＤ２０が含むレコード数があらかじめ設定された閾値以上になった場合に分割してもよい。そして、分割することになった場合、レンジキーの担当範囲をどのように分割するかを決定する。たとえば、分割後のすべてのレコーKVペアに含まれるレコード数が同一あるいはほぼ同一（予め設定された基準により同一）となるように、レンジキーの担当範囲を決定する。ここでは、図６に示す分割前の担当範囲である入札時刻「2013/01/01 00:00:01〜2013/01/01 00:00:59」を、「2013/01/01 00:00:01〜2013/01/01 00:00:50」と「2013/01/01 00:00:51〜2013/01/01 00:00:59」との複数の担当範囲に分割することとする。
【００４１】
そして、KVペア分割部２２は、上述したように新しく決めた担当範囲を元に、図７に示すように新しくレコードKVペアＤ２２を作成し、当該新しいレコードKVペアＤ２２に分割対象となる元のレコードKVペアＤ２１中のレコードを振り分ける（ステップＳ１５）。そして、KVペア分割部２２は、新しく作成したレコードKVペアＤ２２に対して適切なキー値を設定する。このとき、分割対象の元なるレコードKVペアＤ２１のキー値はそのまま再利用し、分割によって追加されるレコードKVペアＤ２２のキー値は採番する。データ分割部２は、新しく作成したレコードKVペアＤ２１，Ｓ２２をトランザクション処理装置３へ渡す。
【００４２】
続いて、索引情報更新部２３は、上述したように新しく作成したレコードKVペアＤ２１，Ｄ２２を参照するように、索引KVペアＤ１１を更新する（ステップＳ１６）。つまり、索引情報更新部２３は、索引KVペアＤ２１のバリュー値を、上述したように分割したレンジキーの担当範囲に更新し、各担当範囲と各レコードKVペアＤ２１，Ｄ２２の各キー値とを対応づける。データ分割部２は、更新した索引KVペアＤ１１をトランザクション処理装置３へ渡す。
【００４３】
続いて、トランザクション処理装置３は、上述したようにデータ分割部２から渡された索引KVペアＤ１１とレコードKVペアＤ２１，Ｄ２２との更新及び挿入のトランザクション処理を実行する。つまり、ここでは、クラスタキー「ｉ１」に関するデータについてまとめられた索引KVペアＤ１１及びレコードKVペアＤ２１，Ｄ２２を、同一のトランザクション処理にてKSV４に格納する。このとき、KVペアを同一トランザクション処理にて格納する処理については、上記関連文献１に開示の方法で実現可能である。
【００４４】
例えば、トランザクション処理は、以下のようにして行う。まず、トランザクション処理で整合性を保持する対象となるデータ群、つまり、索引KVペアＤ１１及びレコードKVペアＤ２１，Ｄ２２にそれぞれ対応するログのうち、代表キーであるクラスタキー「ｉ１」をキー値とするログを代表ログとし、代表ログ以外のログを従属ログとする。そして、従属ログに処理中識別情報を付加し、他のトランザクションによるアクセスを制限する。また、代表ログに各KVペアの更新情報を書き込み、これをKVS４における各KVペアに書き込む。このようにして、関連する各KVペアの整合性を保持することができる。なお、KVペアをトランザクション処理にてKVS４に書き込む方法は上記方法に限定されず、他のいかなる方法を用いて行ってもよい。
【００４５】
なお、本発明では、上述したように、索引KVペアＤ１１及びレコードKVペアＤ２１，Ｄ２２からなる複数のKVペアの更新をアトミックに実行する必要がある。かかる処理を実現するためには、上述した関連文献１に開示の方法で実現可能であるが、当該関連文献１の方法では、「代表キー」を選出する必要がある。このため、本実施形態では、上述したように、索引KVペアＤ１１及びレコードKVペアＤ２１，Ｄ２２のうち、クラスタキーに設定した属性の値を「代表キー」として選出することで、複数のKVペアをアトミックに更新することができる。
【００４６】
ここで、上記では、データを全てKVS４から取得している場合を説明したが、上述したトランザクション処理により「ログ」の中にのみ存在し、KVS４からは取得できないデータが存在する場合がある。かかる場合には、ログ中にのみ存在するデータを参照できるように、下記の手順でKVペアを取得する。
【００４７】
まず、アプリケーションからの要求に基づき、トランザクション処理装置３はトランザクション開始処理を実行する。続いて、KVペア取得部１２は、トランザクション処理装置３に対して、指定された「クラスタキーのキー値」に対応するデータの取得要求を出す。
【００４８】
すると、トランザクション処理装置３は、KVペア取得部１２からの要求を満たすデータがログ中に存在するかどうかをチェックする。ログ中に該当するデータが存在した場合、トランザクション処理装置３は、ログからKVペアを復元する。そして、復元したKVペアを、トランザクション処理装置３からKVペア取得部１２に渡す。この場合、トランザクション処理装置３からKVペア取得部１２へのデータの受け渡しが発生するため、トランザクション処理装置３中に、ログからKVS４にデータを復元する機能を設けるとよい。
【００４９】
以上のように、本実施形態における情報処理装置によると、関連するレコード（上記の場合には商品ＩＤ「ｉ１」のレコード）をまとめつつ、索引とレコードのKVペアに分けることで、必要なレコードのみを取得することが可能となる。その結果、不要なデータ転送を削減することができるようになり、処理性能の改善を図ることができる。また、レコードのKVペアをさらに分割してスケールアウトすることで、より不要なデータの取得を抑制でき、処理性能のさらなる改善を図ることができる。
【００５０】
また、関連するレコードをまとめた複数のKVペアを同一のトランザクション処理でKVSに格納することで、これらの整合性、アトミック性を保証することができ、データの信頼性の向上を図ることができる。そして、複数のKVペアを操作できることで、木構造などの複雑なデータ構造を導入でき、これにより値の範囲を指定したアトミックなデータ操作などが可能となる。
【００５１】
＜実施形態２＞
【００５２】
次に、本発明の第２の実施形態を、図１０を参照して説明する。本実施形態における情報処理システムは、上述した実施形態１の構成に加えて、以下の構成を備えている。
【００５３】
図１０に示すように、情報処理システムは、範囲指定履歴記憶部６を備えている。また、データ取得部１が、取得範囲保存部１３を備えている。
【００５４】
上記取得範囲保存部１３は、上述したように、データ取得（検索）の際にアプリケーション５から指定されたレンジキーの範囲（分類基準値）の履歴を、範囲指定履歴記憶部６に蓄積する。そして、分割指定部１１は、レコードKVペアの分割の際に、範囲指定履歴記憶部６に記憶された履歴を分析し、当該レコードKVペアの内容をどのように分割するか判断する。分割の方法としては、例えば、もっとも検索（取得）頻度が高い範囲の境界値でデータを分割する、という方法がある。この場合、境界値以下のデータが含まれるレコードKVペアと、境界値よりも大きいデータが含まれるレコードKVペアと、に分割する。
【００５５】
ここで、レコードKVペアの分割の具体例を説明する。
例えば、下記（１），（２）のように、それぞれ異なるレコードKVペア内に、各レコードが格納されていることとする。
（１）[{2013/01/01 00:00:51, i1, …}, {2013/01/01 00:00:54, i1, …},
{2013/01/01 00:00:58, i1, …}, {2013/01/01 00:01:01, i1, …}]
（２）[{2013/01/01 00:01:25, i1, …}, {2013/01/01 00:01:28, i1, …}]
【００５６】
そして、アプリケーションからの取得要求（検索要求）として、「2013/01/01 00:01:00〜2013/01/01 00:02:00」の範囲で指定されることが多い場合を考える。このような場合には、（１）のレコードKVペアを、下記の（１−１），（１−２）のレコードKVペアに分割する。これにより、検索要求が多い範囲以外の（１−１）の不要なデータをKVS４から取得することを抑制でき、処理効率の向上を図ることができる。
（１−１） [{2013/01/01 00:00:51, i1, …}, {2013/01/01 00:00:54, i1, …},
{2013/01/01 00:00:58, i1, …}]
（１−２） [{2013/01/01 00:01:01, i1, …}]
（２） [{2013/01/01 00:01:25, i1, …}, {2013/01/01 00:01:28, i1, …}]
【００５７】
＜実施形態３＞
次に、本発明の第３の実施形態を、図１１を参照して説明する。本実施形態における情報処理システムは、上述した実施形態１又は２の構成に加えて、以下の構成を備えている。
【００５８】
本実施形態におけるデータ分割部２は、上述したレコードKVペアだけでなく、索引KVペアも分割する機能を有する。例えば、図１１に示すように、索引KVペアＤ１００が存在する際に、当該索引KVペアＤ１００のバリュー値に含まれるレコードであるレンジキーの各担当範囲を、他の索引KVペアＤ１０１，Ｄ１０２に分割する。具体的に、図１１の例では、担当範囲である入札時刻「2013/01/01 00:00:01〜2013/01/01 00:01:50」と「2013/01/01 00:01:51〜2013/01/01 00:01:58」とに、それぞれキー値「1.1」と「1.5」を対応付けて、各キー値の他の索引KVペアＤ１０１，Ｄ１０２を生成する。そして、これら他の索引KVペアＤ１０１，Ｄ１０２のバリュー値には、さらに、分割した担当範囲を設定し、当該分割担当範囲に、対応するレコードが含まれるレコードKVペアを対応づける。
【００５９】
このように、索引KVペアを分割することで、さらに所望のレコードのみを取得することができ、処理効率のさらなる向上を図ることができる。
【００６０】
＜実施形態４＞
次に、本発明の第４の実施形態を説明する。本実施形態における情報処理システムは、上述した実施形態１乃至３のいずれかの構成とほぼ同様であるが、かかる構成に加えて、以下のように、分割されて生成されたKVペアのキー値を設定する機能を有する。
【００６１】
例えば、キー値の値が「0.0」と「1.0」のKVペアが存在するときに、「0.0」のキー値のKVペアが分割するとする。このとき、あたらしいキー値として中間の値、つまり(0.0 + 1.0)/2 = 0.5をキー値として設定する。このように、すでに存在するキー値の中間値をあたらしいキー値としてしようすることで、分散システムの並列処理を妨げることなく分割を実行できる。別の処理でもKVペアが分割され、キー値が競合するケースが考えられるが、このケースは、そもそもトランザクション処理の競合であるため、考慮する必要がない。
【００６２】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理システム１００（図１２参照）、プログラム、データ管理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００６３】
（付記１）
複数の属性の値を有するレコード群を、相互に関連する索引キーバリューペアとレコードキーバリューペアとによるデータ構造にて管理するデータ管理手段１０１を備え、
前記データ管理手段１０１は、前記レコード群に含まれる所定の属性の値を分類する基準を示す分類基準値を含むバリュー値と、当該バリュー値に関連付けられたキー値と、からなる前記索引キーバリューペアを生成すると共に、当該索引キーバリューペアのバリュー値内の前記分類基準値に関連付けられたキー値と、当該分類基準値に対応する前記所定の属性の値を有する前記レコードの情報を含むバリュー値と、からなる前記レコードキーバリューペアを生成する、
情報処理システム１００。
【００６４】
（付記２）
付記１に記載の情報処理システムであって、
前記データ管理手段は、新たに設定された複数の前記分類基準値に従い、前記レコードキーバリューペアに含まれる複数の前記レコードの情報を、当該レコードの情報に含まれる前記所定の属性の値に応じて複数のバリュー値に分割し、当該分割した各バリュー値と、当該各バリュー値のそれぞれに関連付けられた各キー値と、からなる複数の前記レコードキーバリューペアをそれぞれ生成し、さらに、前記索引キーバリューペアのバリュー値を前記新たに設定された複数の分類基準値に更新すると共に、当該各分類基準値と生成した前記複数のレコードキーバリューペアの各キー値とを対応付ける、
情報処理システム。
【００６５】
（付記３）
付記２に記載の情報処理システムであって、
前記データ管理手段は、前記レコードキーバリューペアのデータサイズ、あるいは、レコード数が予め設定された閾値以上である場合に、当該レコードキーバリューペアを分割する、
情報処理システム。
【００６６】
（付記３−１）
付記２又は３に記載の情報処理システムであって、
前記データ管理手段は、分割後の複数の前記レコードキーバリューペアのデータサイズ、あるいは、レコード数が同一となるよう、当該レコードキーバリューペアを分割する、
情報処理システム。
【００６７】
（付記４）
付記１乃至３のいずれかに記載の情報処理システムであって、
前記索引キーバリューペアと前記レコードキーバリューペアとを記憶する記憶装置から当該レコードキーバリューペアを取得するデータ取得手段を備え、
前記データ取得手段は、前記索引キーバリューペアのキー値と前記分類基準値とを指定する検索要求を受け付け、当該検索要求にかかるキー値を含む前記索引キーバリューペア内において、前記検索要求にかかる分類基準値を満たす前記分類基準値に対応付けられたキー値を含む前記レコードキーバリューペアを記憶装置内から取得する、
情報処理システム。
【００６８】
（付記５）
付記４に記載の情報処理システムであって、
前記データ取得手段は、前記検索要求として受け付けた前記分類基準値を蓄積し、
前記データ管理手段は、前記データ取得手段にて蓄積された前記分類基準値に応じて、前記レコードキーバリューペアを生成する、
情報処理システム。
【００６９】
（付記６）
付記２又は３に記載の情報処理システムであって、
前記索引キーバリューペアと前記レコードキーバリューペアとを記憶する記憶装置から当該レコードキーバリューペアを取得するデータ取得手段を備え、
前記データ取得手段は、前記索引キーバリューペアのキー値と前記分類基準値とを指定する検索要求を受け付け、当該検索要求にかかるキー値を含む前記索引キーバリューペアにおける、前記検索要求にかかる分類基準値を満たす前記分類基準値に対応付けられたキー値を含む前記レコードキーバリューペアを記憶装置内から取得すると共に、前記検索要求として受け付けた前記分類基準値を蓄積し、
前記分割手段は、前記データ取得手段にて蓄積された前記分類基準値のうち、最も多く検索要求された分類基準値に応じて、前記レコードキーバリューペアを分割する、
情報処理システム。
【００７０】
（付記７）
付記１乃至６のいずれかに記載の情報処理システムであって、
前記データ管理手段は、前記索引キーバリューペアと、当該索引キーバリューペアのバリュー値に含まれる前記分類基準値に対応付けられたキー値を有する前記レコードキーバリューペアとを、同一のトランザクション処理にて記憶装置に格納する、
情報処理システム。
【００７１】
（付記８）
付記７に記載の情報処理システムであって、
前記データ管理手段は、前記レコードを構成する属性の値のうちの１つを代表キーとして選出し、当該代表キーをキーバリューペアのキー値とする当該キーバリューペアのログを用いて、前記トランザクション処理を実行する、
情報処理システム。
【００７２】
（付記９）
情報処理装置に、
複数の属性の値を有するレコード群を、相互に関連する索引キーバリューペアとレコードキーバリューペアとによるデータ構造にて管理するデータ管理手段を実現させると共に、
前記データ管理手段は、前記レコード群に含まれる所定の属性の値を分類する基準を示す分類基準値を含むバリュー値と、当該バリュー値に関連付けられたキー値と、からなる前記索引キーバリューペアを生成すると共に、当該索引キーバリューペアのバリュー値内の前記分類基準値に関連付けられたキー値と、当該分類基準値に対応する前記所定の属性の値を有する前記レコードの情報を含むバリュー値と、からなる前記レコードキーバリューペアを生成する、
ことを実現させるためのプログラム。
【００７３】
（付記９−１）
付記９に記載のプログラムであって、
前記データ管理手段は、新たに設定された複数の前記分類基準値に従い、前記レコードキーバリューペアに含まれる複数の前記レコードの情報を、当該レコードの情報に含まれる前記所定の属性の値に応じて複数のバリュー値に分割し、当該分割した各バリュー値と、当該各バリュー値のそれぞれに関連付けられた各キー値と、からなる複数の前記レコードキーバリューペアをそれぞれ生成し、さらに、前記索引キーバリューペアのバリュー値を前記新たに設定された複数の分類基準値に更新すると共に、当該各分類基準値と生成した前記複数のレコードキーバリューペアの各キー値とを対応付ける、
プログラム。
【００７４】
（付記９−２）
付記９又は９−１に記載のプログラムであって、
前記情報処理装置に、さらに、前記索引キーバリューペアと前記レコードキーバリューペアとを記憶する記憶装置から当該レコードキーバリューペアを取得するデータ取得手段を実現し、
前記データ取得手段は、前記索引キーバリューペアのキー値と前記分類基準値とを指定する検索要求を受け付け、当該検索要求にかかるキー値を含む前記索引キーバリューペア内において、前記検索要求にかかる分類基準値を満たす前記分類基準値に対応付けられたキー値を含む前記レコードキーバリューペアを記憶装置内から取得する、
プログラム。
【００７５】
（付記９−３）
付記９乃至９−２のいずれかに記載のプログラムであって、
前記データ管理手段は、前記索引キーバリューペアと、当該索引キーバリューペアのバリュー値に含まれる前記分類基準値に対応付けられたキー値を有する前記レコードキーバリューペアとを、同一のトランザクション処理にて記憶装置に格納する、
プログラム。
【００７６】
（付記１０）
情報処理装置にて、複数の属性の値を有するレコード群を、相互に関連する索引キーバリューペアとレコードキーバリューペアとによるデータ構造にて管理する際に、
前記レコード群に含まれる所定の属性の値を分類する基準を示す分類基準値を含むバリュー値と、当該バリュー値に関連付けられたキー値と、からなる前記索引キーバリューペアを生成すると共に、当該索引キーバリューペアのバリュー値内の前記分類基準値に関連付けられたキー値と、当該分類基準値に対応する前記所定の属性の値を有する前記レコードの情報を含むバリュー値と、からなる前記レコードキーバリューペアを生成する、
データ管理方法。
【００７７】
（付記１０−１）
付記１０に記載のデータ管理方法であって、
新たに設定された複数の前記分類基準値に従い、前記レコードキーバリューペアに含まれる複数の前記レコードの情報を、当該レコードの情報に含まれる前記所定の属性の値に応じて複数のバリュー値に分割し、当該分割した各バリュー値と、当該各バリュー値のそれぞれに関連付けられた各キー値と、からなる複数の前記レコードキーバリューペアをそれぞれ生成し、さらに、前記索引キーバリューペアのバリュー値を前記新たに設定された複数の分類基準値に更新すると共に、当該各分類基準値と生成した前記複数のレコードキーバリューペアの各キー値とを対応付ける、
データ管理方法。
【００７８】
（付記１０−２）
付記１０又は１０−１に記載のデータ管理方法であって、
前記索引キーバリューペアと前記レコードキーバリューペアとを記憶する記憶装置から当該レコードキーバリューペアを取得する際に、
前記索引キーバリューペアのキー値と前記分類基準値とを指定する検索要求を受け付け、当該検索要求にかかるキー値を含む前記索引キーバリューペア内において、前記検索要求にかかる分類基準値を満たす前記分類基準値に対応付けられたキー値を含む前記レコードキーバリューペアを記憶装置内から取得する、
データ管理方法。
【００７９】
（付記１０−３）
付記１０乃至１０−２のいずれかに記載の情報処理装置であって、
前記索引キーバリューペアと、当該索引キーバリューペアのバリュー値に含まれる前記分類基準値に対応付けられたキー値を有する前記レコードキーバリューペアとを、同一のトランザクション処理にて記憶装置に格納する、
データ管理方法。
【００８０】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００８１】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００８２】
１  データ取得部
１１  索引情報解釈部
１２  ＫＶペア取得部
１３  取得範囲保存部
２  データ分割部
２１  分割指定部
２２  ＫＶペア分割部
２３  索引情報取得部
３  トランザクション処理装置
４  ＫＶＳ
５  アプリケーション
６  範囲指定履歴記憶部
【図１】
2015069461.tif 000003
【図２】
2015069461.tif 000004
【図３】
2015069461.tif 000005
【図４】
2015069461.tif 000006
【図５】
2015069461.tif 000007
【図６】
2015069461.tif 000008
【図７】
2015069461.tif 000009
【図８】
2015069461.tif 000010
【図９】
2015069461.tif 000011
【図１０】
2015069461.tif 000012
【図１１】
2015069461.tif 000013
【図１２】
2015069461.tif 000014