(57)【要約】【課題】データベースシステムにおいてデータを格納する際に、当該データに対するアクセス性能の低下とデータ量の増加とを適切に回避する。【解決手段】データ格納制御装置５０は、記憶部５３に記憶された、第１のデータ及び第２のデータが関連付けされたペアデータ５３０について、第１のデータへのアクセス状況を監視することによって、ペアデータ５３０ごとのアクセス実績情報５１０を生成するアクセス実績生成部５１と、アクセス実績情報５１０に基づいて、ペアデータ５３０の状態を、データ圧縮した圧縮状態、あるいは、データ圧縮していない非圧縮状態に変換する状態変換部５２と、を備える【選択図】      図６
2016170453.tif 000002
【特許請求の範囲】
【請求項１】
記憶手段に記憶された、第一のデータ及び第二のデータが関連付けされたペアデータについて、前記第一のデータへのアクセス状況を監視することによって、前記ペアデータごとのアクセス実績情報を生成するアクセス実績生成手段と、
前記アクセス実績情報に基づいて、前記ペアデータの状態を、データ圧縮した圧縮状態、あるいは、データ圧縮していない非圧縮状態に変換する状態変換手段と、
を備えるデータ格納制御装置。
【請求項２】
前記アクセス実績生成手段は、所定の時間内における前記ペアデータへのアクセス頻度を、前記アクセス実績情報として生成し、
前記状態変換手段は、前記アクセス頻度が基準以下である前記ペアデータを圧縮状態に変換する、
請求項１に記載のデータ格納制御装置。
【請求項３】
前記アクセス実績生成手段は、前記ペアデータへのアクセスが前回に行われた時刻である前回アクセス時刻を、前記アクセス実績情報として生成し、
前記状態変換手段は、前記前回アクセス時刻と現在時刻との差分が基準を満たす前記ペアデータを圧縮状態に変換する、
請求項１または２に記載のデータ格納制御装置。
【請求項４】
前記アクセス実績生成手段は、非圧縮状態にある前記ペアデータの数である非圧縮状態データ数を含む前記アクセス実績情報を生成し、
前記状態変換手段は、前記非圧縮状態データ数が閾値以上である場合は、前記記憶手段に記憶されている少なくともいずれかの非圧縮状態にある前記ペアデータを圧縮状態に変換する、
請求項１乃至３のいずれかに記載のデータ格納制御装置。
【請求項５】
前記状態変換手段は、前記非圧縮状態データ数が前記閾値以上である場合は、前記非圧縮状態データ数が前記閾値未満になるまで、前記アクセス回数が低い順に、あるいは、前記前回アクセス時刻が古い順に、非圧縮状態にある前記ペアデータを圧縮状態に変換する、
請求項４に記載のデータ格納制御装置。
【請求項６】
前記状態変換手段は、前記記憶手段における未使用である記憶領域の容量に基づいて、前記ペアデータの状態を、圧縮状態あるいは非圧縮状態に変換する
請求項１乃至５のいずれかに記載のデータ格納制御装置。
【請求項７】
前記状態変換手段は、前記記憶手段に記憶された、前記第二のデータの一部と、当該第二のデータの一部に関連付けられる前記第一のデータを識別可能な識別子とを関連付けた索引データの状態を、圧縮状態にある前記ペアデータが占める割合に基づいて、圧縮状態あるいは非圧縮状態に変換する、
請求項１乃至６のいずれかに記載のデータ格納制御装置。
【請求項８】
複数の、請求項１乃至７のいずれかに記載のデータ格納制御装置と、
前記ペアデータを、所定の規則に従って、複数の前記データ格納制御装置に分散格納する分散格納装置と、
を備えるデータ格納制御システム。
【請求項９】
情報処理装置によって、
記憶手段に記憶された、第一のデータ及び第二のデータが関連付けされたペアデータについて、前記第一のデータへのアクセス状況を監視することによって、前記ペアデータごとのアクセス実績情報を生成し、
前記アクセス実績情報に基づいて、前記ペアデータの状態を、データ圧縮した圧縮状態、あるいは、データ圧縮していない非圧縮状態に変換する、
データ格納制御方法。
【請求項１０】
記憶手段に記憶された、第一のデータ及び第二のデータが関連付けされたペアデータについて、前記第一のデータへのアクセス状況を監視することによって、前記ペアデータごとのアクセス実績情報を生成するアクセス実績生成処理と、
前記アクセス実績情報に基づいて、前記ペアデータの状態を、データ圧縮した圧縮状態、あるいは、データ圧縮していない非圧縮状態に変換する状態変換処理と、
をコンピュータに実行させる、データ格納制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、データベースシステムにおいて、データの格納を制御するデータ格納制御装置等に関する。
【背景技術】
【０００２】
情報化が高度に発達した現代社会において、大規模なデータを管理するデータベースシステムが、様々な領域において急速に増加している。このようなデータベースシステムを効率的に管理すると共に、データへのアクセスを高速に行うことを実現する技術への期待が高まってきている。
【０００３】
このような技術に関連する技術の一例として、特許文献１には、監視基盤において、ログデータベースに対する設定変更案を自動生成し、この設定変更案を運用管理者に提示することにより、運用管理者の設定変更作業を支援する設定自動生成システムが開示されている。このシステムでは、運用管理者が設定管理インタフェースを介してログデータベースに対する設定を変更した場合、設定管理インタフェースは、設定された情報を管理データベースに記録する。監視対象装置に関するログデータがログ収集ユニットを介してログデータベースに収集されたときに、ログデータ量分析ユニットは、ログデータベースに関する利用情報を読み取り、管理データベースに記録する。設定変更案生成ユニットは、管理データベースに記録された情報をもとに、ログデータベースに対する設定変更案を自動生成する。
【０００４】
また、特許文献２には、データ圧縮を施すことによってインデックスファイル容量を削減すると共に、元のデータを復元せずに、データベースにおける検索キーを表すキー値の比較処理が行えるインデックス格納方法が開示されている。この方法では、インデックスページを新規作成する際に、インデックスページに格納するキー値の最大値と最小値を比較して前方一致データを決定する。この方法は、インデックスエントリをインデックスページに格納するときは、キー値から当該前方一致データを除き、この前方一致データを、圧縮データとしてページ制御情報に設定する。この方法は、インデックスページへエントリを追加する際に、追加するキー値がページ制御情報内の前方一致データを含まない場合は、圧縮せずに格納して非圧縮エントリ数を増やす。この方法は、インデックスページ内の圧縮したキーと検索対象であるキーとを比較する場合は、検索対象であるキーからページ制御情報における前方一致データを除くことにより、圧縮したキーを復元せずに比較する。
【０００５】
また、特許文献３には、分散ストレージにおけるデータの複製において、可用性を確保するとともに、ストレージの利用効率の低下、及び、応答性能の低下の少なくともいずれかを回避できる分散ストレージシステムが開示されている。
【０００６】
また、特許文献４には、メタデータに対する操作要求をキーバリューストア方式によって効率的かつ高速に処理することができるメモリシステムが開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開2014-106655号公報
【特許文献２】特開2004-062475号公報
【特許文献３】国際公開第2014-063540号
【特許文献４】特開2014-063540号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
データベースシステムでは、リレーショナルデータベース（以降「ＲＤＢ」と称する）が広く利用されている。ＲＤＢは、柔軟な表形式のデータ構造と様々な機能を備えるが、スケーラビリティについては限られる。近年、このＲＤＢに代わる、極めて大量のデータを保管する方式として、キーバリューストア（以降「ＫＶＳ」と称する）という技術が注目されている。このＫＶＳを実装する方式の１つとして、例えば、Voldemort（http://www.project-voldemort.com/）が知られている。
【０００９】
ＫＶＳでは、キーデータとバリューデータとが関連付けされたキーバリューペアデータ（以降「ＫＶペアデータ」と称する）を使用する。ＫＶＳは、構造が単純であるＫＶペアデータを使用することによって、データアクセスについて優れたスケーラビリティとスループットを実現する。ＫＶＳは、データを保管する機能を実現する単位であるノードの数が少ない小規模なシステムに対して、必要に応じてノードを追加することによって、大規模なシステムを構築することができる。そして、ＫＶＳは、極めて大規模なシステムである場合であっても、データを効率的に管理すると共に、データへのアクセスを高速に行うことが期待されている。
【００１０】
大規模なデータベースシステムでは、膨大な量のデータを保管するハードウェア資源の量が膨大となるので、システム構築に必要なコストが増加する。このため、このような大規模なデータベースシステムでは、コストを低減するために、データを圧縮して保管することが一般的に行われる。この場合、データを格納する際にデータを圧縮する処理が行われ、圧縮状態で格納されたデータを参照する際にはデータを非圧縮状態に戻す処理が行われる。このため、データを圧縮して保管する場合、データを非圧縮状態のまま保管する場合と比較して性能が低下することになる。
【００１１】
上述したＫＶＳによって実現される大規模なデータベースシステムには、保管するデータの量を削減することによるコストの削減と、保管するデータに対して高速にアクセスすることの両方が要求される。しかしながら、データの量を削減すればデータへのアクセス性能は低下し、その逆に、アクセス性能の低下を防止すればデータの量が増加するという一般的な性質がある。したがって、データを格納する際に、このような一般的な性質をふまえて、当該データに対するアクセス性能の低下とデータ量の増加とを適切に回避することが課題である。特許文献１乃至４に記載された技術では、この課題を解決することは困難である。本願発明の主たる目的は、この課題を解決したデータ格納制御装置等を提供することである。
【課題を解決するための手段】
【００１２】
本願発明の一態様に係るデータ格納制御装置は、記憶手段に記憶された、第一のデータ及び第二のデータが関連付けされたペアデータについて、前記第一のデータへのアクセス状況を監視することによって、前記ペアデータごとのアクセス実績情報を生成するアクセス実績生成手段と、前記アクセス実績情報に基づいて、前記ペアデータの状態を、データ圧縮した圧縮状態、あるいは、データ圧縮していない非圧縮状態に変換する状態変換手段と、を備える。
【００１３】
上記目的を達成する他の見地において、本願発明の一態様に係るデータ格納制御方法は、情報処理装置によって、記憶手段に記憶された、第一のデータ及び第二のデータが関連付けされたペアデータについて、前記第一のデータへのアクセス状況を監視することによって、前記ペアデータごとのアクセス実績情報を生成し、前記アクセス実績情報に基づいて、前記ペアデータの状態を、データ圧縮した圧縮状態、あるいは、データ圧縮していない非圧縮状態に変換する。
【００１４】
また、上記目的を達成する更なる見地において、本願発明の一態様に係るデータ格納制御プログラムは、記憶手段に記憶された、第一のデータ及び第二のデータが関連付けされたペアデータについて、前記第一のデータへのアクセス状況を監視することによって、前記ペアデータごとのアクセス実績情報を生成するアクセス実績生成処理と、前記アクセス実績情報に基づいて、前記ペアデータの状態を、データ圧縮した圧縮状態、あるいは、データ圧縮していない非圧縮状態に変換する状態変換処理と、をコンピュータに実行させる。
【００１５】
更に、本発明は、係るデータ格納制御プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。
【発明の効果】
【００１６】
本願発明は、データベースシステムにおいてデータを格納する際に、当該データに対するアクセス性能の低下とデータ量の増加とを適切に回避することを可能とする。
【図面の簡単な説明】
【００１７】
【図１】本願発明の第１の実施形態に係るデータ格納制御システムの構成を示すブロック図である。
【図２Ａ】本願発明の第１の実施形態に係るＫＶペアデータの構成を例示する図である。
【図２Ｂ】本願発明の第１の実施形態に係るＫＶペアデータをＲＤＢ形式により表したＲＤＢデータの構成を例示する図である。
【図２Ｃ】本願発明の第１の実施形態に係る索引データの第１の構成例を示す図である。
【図２Ｄ】本願発明の第１の実施形態に係る索引データの第２の構成例を示す図である。
【図３】本願発明の第１の実施形態に係るアクセス実績情報の構成を例示する図である。
【図４】本願発明の第１の実施形態に係るデータ格納制御システムが、ＫＶペアデータを書き込む動作を示すフローチャートである。
【図５Ａ】本願発明の第１の実施形態に係るデータ格納制御システムが、ＫＶペアデータを読み出す動作を示すフローチャートである（１／２）。
【図５Ｂ】本願発明の第１の実施形態に係るデータ格納制御システムが、ＫＶペアデータを読み出す動作を示すフローチャートである（２／２）。
【図６】本願発明の第２の実施形態に係るデータ格納制御システムの構成を示すブロック図である。
【図７】本願発明の各実施形態に係るデータ格納制御装置を実行可能な情報処理装置の構成を例示するブロック図である。
【発明を実施するための形態】
【００１８】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１９】
＜第１の実施形態＞
図１は、本願発明の第１の実施形態に係るデータ格納制御システム１を概念的に示すブロック図である。本実施形態に係るデータ格納制御システム１は、例えば、ＫＶＳを実装することによってデータを保管するシステムである。データ格納制御システム１は、データ格納制御装置１０及び２０、分散格納装置３０、及び、クライアント端末装置４０を備えている。データ格納制御装置１０及び２０は、同等の機能を備えていることとする。本実施形態に係るデータ格納制御システム１は、２つのデータ格納制御装置１０及び２０を備えているが、データ格納制御システム１は、データ格納制御装置を１つ備えてもよいし、３つ以上備えてもよい。尚、データ格納制御システム１がデータ格納制御装置を１つ備える場合は、分散格納装置３０は不要となる。
【００２０】
クライアント端末装置４０は、キーボード、マウス、及び、モニター画面等の入出力インターフェース（不図示）を備えている。データ格納制御システム１を使用するユーザは、クライアント端末装置４０を使用して、データ格納制御装置１０及び２０に対して、データを格納あるいは参照することができる。本実施形態に係るデータ格納制御システム１は、クライアント端末装置４０を２つ以上備えてもよい。
【００２１】
分散格納装置３０は、クライアント端末装置４０から、データ格納制御装置１０及び２０に対してデータを格納する命令を受信したときに、格納するデータの内容に基づき、所定の規則にしたがって、当該データをデータ格納制御装置１０及び２０に分散格納する。分散格納装置３０は、例えば、当該データにおける所定の位置のビットの値が０あるいは１であるかに応じた値域分割によって、当該データをデータ格納制御装置１０または２０に振り分けてもよい。あるいは、分散格納装置３０は、ハッシュ関数を使用することによって、当該データの内容に基づいて、当該データをデータ格納制御装置１０または２０に振り分けてもよい。分散格納装置３０は、クライアント端末装置４０から、データ格納制御装置１０及び２０に対してデータを参照する命令を受信したときは、データを格納したときに適用した規則にしたがって、データ格納制御装置１０または２０にアクセスする。
【００２２】
データ格納制御装置１０は、アクセス実績生成部１１、状態変換部１２、及び、ＫＶＳ記憶部１３を備えている。アクセス実績生成部１１、及び、状態変換部１２は、電子回路の場合もあれば、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される場合もある。ＫＶＳ記憶部１３は、電子メモリあるいは磁気ディスク等の記憶デバイスである。ＫＶＳ記憶部１３は、データ格納制御装置１０と通信可能に接続された、外部のストレージ装置等に備えられてもよい。
【００２３】
ＫＶＳ記憶部１３は、ＫＶデータ１３０、及び、索引データ１３１を記憶している。ＫＶデータ１３０の構成例を図２Ａに示す。図２Ａに例示する通り、ＫＶデータ１３０は、購入履歴を管理するデータであり、ＫＶペアデータ１３０−１、ＫＶペアデータ１３０−２等、複数のＫＶペアデータを含んでいる。ＫＶペアデータ１３０−１は、キーデータ１３００−１、及び、バリューデータ１３０１−１が関連付けされた、ＫＶＳ方式により格納されたデータである。ＫＶペアデータ１３０−２等、他のＫＶペアデータについても同様である。ＫＶペアデータは、例えば、それぞれが個別のファイルであり、ＫＶペアデータごとにデータ圧縮処理を行うことが可能である。
【００２４】
図２Ａに例示するＫＶデータ１３０を、ＲＤＢ形式により表したＲＤＢデータ１００を、図２Ｂに例示する。図２Ｂに例示する通り、ＲＤＢデータ１００は、「購入履歴ＩＤ」、「名前」、「都道府県」、「商品」、及び、「購入数」という項目が関連付けされたデータである。図２Ｂに例示するＲＤＢデータ１００では、「購入履歴ＩＤ」が主キーとなる項目である。
【００２５】
ＫＶＳ形式では、データは、通常、キーデータとバリューデータとの組み合わせにより表される。したがって、ＲＤＢデータ１００をＫＶＳ形式により表したＫＶデータ１３０は、ＲＤＢデータ１００における項目「購入履歴ＩＤ」の内容を、キーデータ１３００として含んでいる。そして、ＫＶデータ１３０は、ＲＤＢデータ１００における全ての項目の内容を、バリューデータ１３０１として含んでいる。
【００２６】
ＫＶＳ形式では、通常、キーデータ以外の項目をキーとしてデータを検索することはできない。例えば図２Ａに例示するＫＶデータ１３０では、キーデータである「購入履歴ＩＤ」以外の項目をキーとしてデータを検索することはできない。すなわち、ＫＶデータ１３０では、例えば、「都道府県」あるいは「商品」などをキーとして、データを検索することができない。ＫＶＳ形式では、キーデータ以外の項目をキーとしてデータを検索する場合、バリューデータに含まれるキーにしたいデータの内容（項目）と、キーデータを識別可能な情報とが関連付けされた索引データが必要となる。
【００２７】
図２Ａに例示するＫＶデータ１３０について、「都道府県」をキーとしてデータを検索する際に必要となる索引データ１３１を図２Ｃに例示する。図２Ｃに例示する通り、この場合、索引データ１３１は、バリューデータ１３０１に含まれる「都道府県」をキーとし、このキーと、キーとなる「都道府県」に関連付けられるキーデータ１３００を識別可能な識別子とが関連付けられたデータである。例えば図２Ａ及び２Ｃに例示するＫＶＳ形式のデータにおいて「埼玉県」に関する購入履歴を参照する場合、データ格納制御装置１０は、索引データ１３１を参照することによって、「埼玉県」に関する購入履歴が、キーデータ１３００における２番目のデータであるキーデータ１３００−２等であることを取得する。そしてデータ格納制御装置１０は、キーデータ１３００−２に関連付けされたバリューデータ１３０１−２を参照する。同様に、図２Ａに例示するＫＶデータ１３０について、「商品」をキーとしてデータを検索する際に必要となる索引データ１３１を図２Ｄに例示する。
【００２８】
アクセス実績生成部１１は、クライアント端末装置４０からＫＶＳ記憶部１３に格納されたＫＶデータ１３０に対して行われたアクセス状況を監視する。アクセス実績生成部１１は、その監視結果をアクセス実績情報１１０として生成し、生成したアクセス実績情報１１０を、内部に記憶する。アクセス実績情報１１０の構成を図３に例示する。
【００２９】
図３（ａ）は、アクセス実績生成部１１が、ＫＶデータ１３０に対して所定の期間内に行われたアクセス回数をアクセス状況として監視する場合に生成するアクセス実績情報１１０の構成例である。図３（ａ）に例示するとおり、アクセス実績情報１１０は、キーデータ１３００−１等、個々のキーデータについて、上述したアクセス回数、及び、「圧縮フラグ」を関連付けた情報である。「圧縮フラグ」は、キーデータにより特定されるＫＶペアデータが、状態変換部１２によってデータが圧縮された状態であるか否かを示す情報である。図３（ａ）に示す例は、図２Ａに示すＫＶペアデータ１３０−１及び１３０−３が、圧縮フラグ「０」によってデータが圧縮されていない状態であることを示す。そして図３（ａ）に示す例は、ＫＶペアデータ１３０−２が、圧縮フラグ「１」によってデータが圧縮された状態であることを示している。
【００３０】
図３（ｂ）は、アクセス実績生成部１１が、ＫＶデータ１３０に対して行われたアクセス時刻をアクセス状況として監視する場合に生成するアクセス実績情報１１０の構成例である。この場合、アクセス実績生成部１１は、時計を備え、キーデータにより特定されるＫＶペアデータに対してアクセスが行われる毎に、アクセス時刻を更新する。したがって、この場合、アクセス実績情報１１０には、ＫＶペアデータに対して前回にアクセスが行われた時刻（以降「アクセス時刻」と称する）が登録されている。尚、アクセス実績情報１１０は、アクセス時刻の代わりに、状態変換部１２によってＫＶペアデータの圧縮状態が解除された前回の時刻である前回圧縮状態解除時刻を含んでもよい。
【００３１】
アクセス実績生成部１１は、図３（ａ）に例示するアクセス回数、及び、図３（ｂ）に例示するアクセス時刻を、両方とも監視して、アクセス実績情報１１０を生成してもよい。
【００３２】
状態変換部１２は、ＫＶペアデータへのアクセスが行われる際に、当該ＫＶペアデータをデータ圧縮した状態でＫＶＳ記憶部１３に格納するか否かを判定するための判定指標を示す値を、当該ＫＶペアデータに関するアクセス実績情報１１０が示す値を基に算出する。状態変換部１２は、アクセス実績情報１１０が、ＫＶペアデータに対するアクセス回数を示す場合、そのアクセス回数を、判定指標を示す値として使用する。状態変換部１２は、アクセス回数が閾値以下である場合に、例えばＺＩＰ等のデータ圧縮技術を用いることによって、当該ＫＶペアデータをデータ圧縮した状態でＫＶＳ記憶部１３に格納する。
【００３３】
状態変換部１２は、アクセス実績情報１１０が、ＫＶペアデータへのアクセス時刻を示す場合、（（アクセス時刻）−（現在時刻））を算出した値を、判定指標を示す値として使用する。状態変換部１２は、この判定指標を示す値が閾値以下である場合に、当該ＫＶペアデータをデータ圧縮した状態でＫＶＳ記憶部１３に格納する。
【００３４】
状態変換部１２は、アクセス実績情報１１０が、ＫＶペアデータに対するアクセス回数及びアクセス時刻を示す場合、（Ａｘ（（アクセス時刻）−（現在時刻））＋Ｂｘ（アクセス回数））を算出した値を、判定指標を示す値として使用する。ここで、Ａ及びＢは、ユーザによって値が指定された、数式の項に対する重み付けを示す任意の係数である。状態変換部１２は、この判定指標を示す値が閾値以下である場合に、当該ＫＶペアデータをデータ圧縮した状態でＫＶＳ記憶部１３に格納する。
【００３５】
状態変換部１２は、データ圧縮されたＫＶペアデータに対してアクセスが行われる際に、当該ＫＶペアデータについて、判定指標を示す値が閾値より大きい場合は、当該ＫＶペアデータを非圧縮状態にしてＫＶＳ記憶部１３に格納する。このとき、状態変換部１２は、アクセス実績情報１１０を参照し、ＫＶＳ記憶部１３に格納されている非圧縮状態にあるＫＶペアデータの数を算出する。状態変換部１２は、非圧縮状態にあるＫＶペアデータの数が閾値以上である場合、ＫＶＳ記憶部１３に格納されている少なくともいずれかの非圧縮状態にあるＫＶペアデータを、データ圧縮した状態に変換する。
【００３６】
より具体的には、状態変換部１２は、アクセス実績情報１１０を参照し、ＫＶＳ記憶部１３に格納されている非圧縮状態にあるＫＶペアデータのうち、例えば、アクセス回数が最も低い、あるいは、アクセス時刻が最も古いＫＶペアデータをデータ圧縮した状態に変換する。また、状態変換部１２は、非圧縮状態にあるＫＶペアデータの数が閾値未満になるまで、アクセス回数が低い順に、あるいは、アクセス時刻が古い順に、非圧縮状態にあるＫＶペアデータをデータ圧縮した状態に変換する処理を繰り返し行ってもよい。
【００３７】
状態変換部１２は、ＫＶＳ記憶部１３における未使用である記憶領域の容量を、例えばＯＳ（Operating System）が備える容量確認コマンドを使用して確認したのち、未使用である記憶領域の容量に基づいて、ＫＶペアデータを圧縮状態に変換するか否かを判定する際に使用する閾値を設定してもよい。状態変換部１２は、例えば、未使用である記憶領域が大きい場合は、当該閾値を小さい値に設定し、未使用である記憶領域が小さい場合は、当該閾値を大きい値に設定する。
【００３８】
状態変換部１２は、索引データ１３１についても、圧縮状態あるいは非圧縮状態に変換して、ＫＶＳ記憶部１３に格納する。状態変換部１２は、ＫＶＳ記憶部１３に格納されたＫＶペアデータのうち、圧縮状態にあるＫＶペアデータが占める割合が所定の割合より高い場合に、索引データ１３１を圧縮状態に変換する。状態変換部１２は、ＫＶＳ記憶部１３に格納されたＫＶペアデータが全て圧縮状態にある場合にのみ、索引データ１３１を圧縮状態に変換してもよい。
【００３９】
ＫＶＳを実装したシステムにおいて、ＫＶペアデータへアクセスするために準備されているコマンドとしては、下記のコマンドがある。
【００４０】
・get：ＫＶペアデータにおけるキーを指定することによりバリューを取得する、
・put：ＫＶペアデータを格納する、
・delete：ＫＶペアデータにおけるキーを指定することによりＫＶペアデータを削除する
ＫＶＳを実装したシステムでは、これらのコマンドを組み合わせることによって行われるＣＡＳ（Compare-And-Swap）操作と呼ばれる操作がある。ＣＡＳ操作は、「バリューの値が期待値（expectedValue）と等しい場合に、そのバリューの値を設定値（newValue）に書き換える」操作である。ＣＡＳ操作は、下記の命令文により表すことができる。
compareAndSwap(Key, expectedValue, newValue){
currentValue := get(key)
if (currentValue = expectedValue){
put(key, newValue)
}
}
状態変換部１２は、ＫＶＳ記憶部１３から読み出したＫＶペアデータを、非圧縮状態から圧縮状態、あるいは、圧縮状態から非圧縮状態に変更する場合、状態を変更したＫＶペアデータを、ＣＡＳ操作によってＫＶＳ記憶部１３に格納する。
【００４１】
次に図４のフローチャートを参照して、本実施形態に係るデータ格納制御システム１が、ＫＶペアデータを書き込む（ｐｕｔコマンド）動作（処理）について詳細に説明する。
【００４２】
分散格納装置３０は、クライアント端末装置４０から、書き込むＫＶペアデータを受信する（ステップＳ１０１）。分散格納装置３０は、受信したＫＶペアデータを、データ格納制御装置１０又は２０へ入力する（ステップＳ１０２）。尚、以降のフローは、受信したＫＶペアデータが、分散格納装置３０によってデータ格納制御装置１０に入力された場合のフローを示すが、受信したＫＶペアデータが、分散格納装置３０によってデータ格納制御装置２０に入力された場合のフローも同様である。
【００４３】
状態変換部１２は、当該ＫＶペアデータを、アクセス実績情報１１０と照合する（ステップＳ１０３）。当該ＫＶペアデータのキーデータがアクセス実績情報１１０に存在しない場合（ステップＳ１０４でＮｏ）、状態変換部１２は、当該ＫＶペアデータを圧縮する（ステップＳ１０５）。状態変換部１２は、当該ＫＶペアデータを、ＫＶＳ記憶部１３に書き込む（ステップＳ１０６）。アクセス実績生成部１１は、当該ＫＶペアデータについて、アクセス実績情報１１０に登録、あるいは、アクセス実績情報１１０を更新し（ステップＳ１０７）、全体の処理は終了する。
【００４４】
当該ＫＶペアデータのキーデータがアクセス実績情報１１０に存在する場合（ステップＳ１０４でＹｅｓ）、状態変換部１２は、当該ＫＶペアデータを圧縮するか否かを判定するための判定指標を示す値を算出する（ステップＳ１０８）。当該ＫＶペアデータについて、判定指標を示す値が基準を満たす場合（ステップＳ１０９でＹｅｓ）、処理はステップＳ１０５へ進む。当該ＫＶペアデータについて、判定指標を示す値が基準を満たさない場合（ステップＳ１０９でＮｏ）、処理はステップＳ１０６へ進む。
【００４５】
次に図５Ａ及び５Ｂのフローチャートを参照して、本実施形態に係るデータ格納制御システム１が、ＫＶペアデータを読み出す（ｇｅｔコマンド）動作（処理）について詳細に説明する。
【００４６】
分散格納装置３０は、クライアント端末装置４０から、読み出すＫＶペアデータを指定するキーデータを受信する（ステップＳ２０１）。分散格納装置３０は、読み出すキーデータを、データ格納制御装置１０又は２０へ入力する（ステップＳ２０１）。尚、以降のフローは、受信したキーデータが、分散格納装置３０によってデータ格納制御装置１０に入力された場合のフローを示すが、受信したキーデータが、分散格納装置３０によってデータ格納制御装置２０に入力された場合のフローも同様である。
【００４７】
アクセス実績生成部１１は、読み出すキーデータについて、アクセス実績情報１１０を更新する（ステップＳ２０３）。読み出すキーデータを含むＫＶペアデータが圧縮されていない場合（ステップＳ２０４でＮｏ）、状態変換部１２は、読み出すキーデータを、アクセス実績情報１１０と照合し、判定指標を示す値を算出する（ステップＳ２０５）。
【００４８】
読み出すＫＶペアデータについて、判定指標を示す値が基準を満たさない場合（ステップＳ２０６でＮｏ）、データ格納制御装置１０は、読み出すＫＶペアデータが含む、非圧縮状態であるバリューデータを、クライアント端末装置４０へ送信し（ステップＳ２０７）、全体の処理は終了する。
【００４９】
読み出すＫＶペアデータについて、判定指標を示す値が基準を満たす場合（ステップＳ２０６でＹｅｓ）、状態変換部１２は、読み出すＫＶペアデータを圧縮し、圧縮したＫＶペアデータを、ＣＡＳ操作によりＫＶＳ記憶部１３に格納する（ステップＳ２０８）。アクセス実績生成部１１は、読み出すＫＶペアデータについて、アクセス実績情報１１０における圧縮フラグを更新し（ステップＳ２０９）、処理はステップＳ２０７へ進む。
【００５０】
読み出すキーデータを含むＫＶペアデータが圧縮されている場合（ステップＳ２０４でＹｅｓ）、状態変換部１２は、読み出すＫＶペアデータについて、圧縮状態を解除する（ステップＳ２１０）。状態変換部１２は、読み出すキーデータを、アクセス実績情報１１０と照合することにより、上述した手順によって判定指標を示す値を算出する（ステップＳ２１１）。読み出すＫＶペアデータについて、判定指標を示す値が基準を満たす場合（ステップＳ２１２でＹｅｓ）、処理はステップＳ２０７へ進む。
【００５１】
読み出すＫＶペアデータについて、判定指標を示す値が基準を満たす場合（ステップＳ２１２でＮｏ）、状態変換部１２は、アクセス実績情報１１０において圧縮フラグが「０」であるキーデータの総数から、非圧縮状態にあるＫＶペアデータの数を算出する（ステップＳ２１３）。算出した数が、閾値以上でない場合（ステップＳ２１４でＮｏ）、状態変換部１２は、圧縮状態を解除した、読み出すＫＶペアデータを、ＣＡＳ操作によりＫＶＳ記憶部１３に格納し（ステップＳ２１５）、処理はステップＳ２０９へ進む。
【００５２】
算出した数が、閾値以上である場合（ステップＳ２１４でＹｅｓ）、状態変換部１２は、非圧縮状態にあるＫＶペアデータのうち、アスセス時刻が最も古いＫＶペアデータを圧縮し、圧縮したデータを、ＣＡＳ操作によりＫＶＳ記憶部１３に格納する（ステップＳ２１６）。アクセス実績生成部１１は、圧縮したＫＶペアデータについて、アクセス実績情報１１０における圧縮フラグを更新し（ステップＳ２１７）、処理はステップＳ２１３へ戻る。
【００５３】
本実施形態に係るデータ格納制御システム１は、データベースシステムにおいてデータを格納する際に、当該データに対するアクセス性能の低下とデータ量の増加とを適切に回避することができる。その理由は、アクセス実績生成部１１が、ＫＶペアデータに対するアクセス状況を監視することによってアクセス実績情報１１０を生成し、状態変換部１２が、アクセス実績情報１１０に基づいて、ＫＶペアデータの状態を、圧縮状態あるいは非圧縮状態に変換するからである。
【００５４】
ＫＶＳによって実現される大規模なデータベースシステムには、保管するデータの量を削減することによるコストの削減と、保管するデータに対して高速にアクセスすることとの両方が要求される。しかしながら、データの量を圧縮処理によって削減すれば目的とするデータへのアクセス性能は低下し、その逆に、アクセス性能の低下を防止すればデータの量が増加するという一般的な性質がある。したがって、「発明が解決しようとする課題」欄において前述したように、データを格納する際に、このような一般的な性質をふまえて、当該データに対するアクセス性能の低下とデータ量の増加とを適切に回避することが要求される。
【００５５】
本実施形態に係るデータ格納制御システム１によれば、アクセス実績生成部１１は、ＫＶＳ記憶部１３に格納されたＫＶペアデータに対するアクセス状況を監視して、その監視結果であるアクセス実績情報１１０を生成する。状態変換部１２は、アクセス実績情報１１０が含む、ＫＶペアデータに対するアクセス状況に基づいて、当該ＫＶペアデータの状態を、圧縮状態あるいは非圧縮状態に変換する。すなわち、状態変換部１２は、アクセスがあまり行われていないＫＶペアデータについては、アクセス性能の低下による影響が小さいので、圧縮状態でＫＶＳ記憶部１３に格納する。状態変換部１２は、アクセスが頻繁に行われているＫＶペアデータについては、アクセス性能の低下による影響が大きいので、非圧縮状態でＫＶＳ記憶部１３に格納する。これにより、本実施形態に係るデータ格納制御システム１は、ＫＶペアデータに対するアクセス性能の低下と、ＫＶペアデータのデータ量の増加とを、バランスよく適切に回避することができる。
【００５６】
また、本実施形態に係る状態変換部１２は、ＫＶＳ記憶部１３に格納されたいずれかのＫＶペアデータの状態を圧縮状態から非圧縮状態に変更した際、非圧縮状態にあるＫＶペアデータの数が閾値以上であるか否かを判定する。そして、状態変換部１２は、非圧縮状態にあるＫＶペアデータの数が閾値以上である場合は、ＫＶＳ記憶部１３に格納されている非圧縮状態にあるＫＶペアデータのうち、例えば、アクセス回数が最も低い、あるいは、アクセス時刻が最も古いＫＶペアデータを圧縮状態に変更する。状態変換部１２は、非圧縮状態にあるＫＶペアデータの数が閾値未満になるまで、アクセス回数が低い順に、あるいは、アクセス時刻が古い順に、非圧縮状態にあるＫＶペアデータを圧縮状態に変更する処理を繰り返し行うことができる。これにより、本実施形態に係るデータ格納制御システム１は、ＫＶペアデータのデータ容量が所定の値以下になるように維持することができる。
【００５７】
また、本実施形態に係る状態変換部１２は、アクセス実績情報１１０に加えて、ＫＶＳ記憶部１３における未使用である記憶領域の容量もふまえて、ＫＶペアデータを圧縮状態あるいは非圧縮状態に変換することができる。すなわち、状態変換部１２は、ＫＶＳ記憶部１３における未使用である記憶領域の容量に余裕がある場合は、ＫＶペアデータを圧縮状態にするか否かを判定する際の基準を緩く設定し、未使用である記憶領域の容量に余裕がない場合は、当該基準を厳しく設定する。これにより、本実施形態に係るデータ格納制御システム１は、ＫＶペアデータの格納について、ＫＶＳ記憶部１３の使用状況をふまえた柔軟な制御を行うことができる。
【００５８】
また、ＫＶＳ記憶部１３に格納された索引データ１３１は、複数のＫＶペアデータに対するアクセスにおいて、共通して参照されるデータである。したがって、ＫＶＳ記憶部１３に、アクセスが頻繁に行われている非圧縮状態にあるＫＶペアデータが存在する場合は、索引データ１３１に対するアクセスが頻繁に行われる可能性がある。本実施形態に係る状態変換部１２は、圧縮状態にあるＫＶペアデータが占める割合が所定の割合より高い場合に、あるいは、ＫＶＳ記憶部１３に格納されたＫＶペアデータが全て圧縮状態にある場合にのみ、索引データ１３１を圧縮状態に変換する。これにより、本実施形態に係るデータ格納制御システム１は、索引データ１３１を使用したアクセスについて、アクセス性能が低下することを回避できる。
【００５９】
また、状態変換部１２が圧縮状態を変更したＫＶペアデータをＫＶＳ記憶部１３に格納する処理を行っている最中に、当該ＫＶペアデータに対する異なる書き込みアクセスが発生した場合、書き込むタイミングによっては、その異なる書き込みアクセスが行う処理が消失する可能性がある。本実施形態に係る状態変換部１２は、状態を変更したＫＶペアデータを、ＣＡＳ操作によってＫＶＳ記憶部１３に格納する。これにより本実施形態に係るデータ格納制御システム１は、いずれかのアクセスが行う処理が消失することによってデータが不正となることを防止できる。
【００６０】
尚、本実施形態に係る状態変換部１２が、ＫＶＳ記憶部１３に格納されたＫＶペアデータの圧縮状態を変更するタイミングは、クライアント端末装置４０からＫＶペアデータに対するアクセス要求を受信したときに限定されない。状態変換部１２は、例えば、クライアント端末装置４０からのＫＶペアデータに対するアクセス要求を受信したタイミングとは非同期に、ＫＶペアデータの圧縮状態を変更してもよい。
【００６１】
また、本実施形態に係るデータ格納制御システム１は、ＫＶＳを実装することによってデータを保管するシステムに限定されない。データ格納制御システム１は、ＫＶＳとは異なる方式のデータベースシステムを実装してもよい。
【００６２】
＜第２の実施形態＞
図６は、第２の実施形態に係るデータ格納制御装置５０の構成を概念的に示すブロック図である。
【００６３】
本実施形態に係るデータ格納制御装置５０は、アクセス実績生成部５１、及び、状態変換部５２を備えている。
【００６４】
アクセス実績生成部５１は、記憶部５３に記憶された、第一のデータ及び第二のデータが関連付けされたペアデータ５３０について、第一のデータへのアクセス状況を監視することによって、ペアデータ５３０ごとのアクセス実績情報５１０を生成する。
【００６５】
状態変換部５２は、アクセス実績情報５１０に基づいて、ペアデータ５３０の状態を、データ圧縮した圧縮状態、あるいは、データ圧縮していない非圧縮状態に変換する。
【００６６】
本実施形態に係るデータ格納制御装置５０は、データベースシステムにおいてデータを格納する際に、当該データに対するアクセス性能の低下とデータ量の増加とを適切に回避することができる。その理由は、アクセス実績生成部５１が、ペアデータ５３０に対するアクセス状況を監視することによってアクセス実績情報５１０を生成し、状態変換部５２が、アクセス実績情報５１０に基づいて、ペアデータ５３０の状態を、圧縮状態あるいは非圧縮状態に変換するからである。
【００６７】
＜ハードウェア構成例＞
上述した各実施形態において図１、及び、図６に示した各部は、専用のＨＷ（ＨａｒｄＷａｒｅ）（電子回路）によって実現することができる。また、少なくとも、アクセス実績生成部１１及び５１、及び、状態変換部１２及び５２は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図７を参照して説明する。
【００６８】
図７は、本発明の各実施形態に係るデータ格納制御装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図７は、図１及び図６に示したデータ格納制御装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００６９】
図７に示した情報処理装置９００は、構成要素として下記を備えている。
・ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）９０１、
・ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、
・ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、
・ハードディスク（記憶装置）９０４、
・外部装置との通信インタフェース９０５、
・ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記録媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、
・入出力インタフェース９０９、
情報処理装置９００は、これらの構成がバス９０６（通信線）を介して接続された一般的なコンピュータである。
【００７０】
そして、上述した実施形態を例に説明した本発明は、図７に示した情報処理装置９００に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図（図１及び図６）における、アクセス実績生成部１１及び５１、及び、状態変換部１２及び５２、或いはフローチャート（図４、図５Ａ及び図５Ｂ）の機能である。本発明は、その後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ（ＲＡＭ９０３）またはハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００７１】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、ＣＤ−ＲＯＭ等の各種記録媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体９０７によって構成されると捉えることができる。
【００７２】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００７３】
１    データ格納制御システム
１０    データ格納制御装置
１１    アクセス実績生成部
１１０    アクセス実績情報
１２    状態変換部
１３    ＫＶＳ記憶部
１００    ＲＤＢデータ
１３０    ＫＶデータ
１３０−１    ＫＶペアデータ
１３０−２    ＫＶペアデータ
１３００    キーデータ
１３０１    バリューデータ
１３１    索引データ
２０    データ格納制御装置
３０    分散格納装置
４０    クライアント端末装置
５０    データ格納制御装置
５１    アクセス実績生成部
５１０    アクセス実績情報
５２    状態変換部
５３    記憶部
５３０    ペアデータ
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク（記憶装置）
９０５    通信インタフェース
９０６    バス
９０７    記録媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
2016170453.tif 000003
【図２Ａ】
2016170453.tif 000004
【図２Ｂ】
2016170453.tif 000005
【図２Ｃ】
2016170453.tif 000006
【図２Ｄ】
2016170453.tif 000007
【図３】
2016170453.tif 000008
【図４】
2016170453.tif 000009
【図５Ａ】
2016170453.tif 000010
【図５Ｂ】
2016170453.tif 000011
【図６】
2016170453.tif 000012
【図７】
2016170453.tif 000013