(57)【要約】【課題】使用状況が変化した場合などにおいて、ＫＶＳの性能を維持することが難しいという問題を解決すること。【解決手段】複数の要素からなるレコードデータの当該要素のうちの１つをキー値として、当該キー値と、１つ又は複数のレコードデータからなるバリュー値と、を対応付けたキーバリューデータを記憶するデータ記憶手段と、データ記憶手段が記憶するキーバリューデータのデータ構造を、キー値を変更して別のデータ構造に変換するデータ構造変換手段と、を備え、データ構造変換手段は、データ記憶手段が記憶するキーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行う。【選択図】図１
2015184685.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素からなるレコードデータの当該要素のうちの１つをキー値として、当該キー値と、１つ又は複数のレコードデータからなるバリュー値と、を対応付けたキーバリューデータを記憶するデータ記憶手段と、
前記データ記憶手段が記憶する前記キーバリューデータのデータ構造を、前記キー値を変更して別のデータ構造に変換するデータ構造変換手段と、を備え、
前記データ構造変換手段は、前記データ記憶手段が記憶する前記キーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行う、
情報記憶システム。
【請求項２】
請求項１に記載の情報記憶システムであって、
前記データ記憶手段が記憶する前記キーバリューデータを検索して所定の処理を行う検索処理手段と、
前記検索処理手段による検索結果に基づく統計情報を収集して記憶する統計情報収集手段と、を備え、
前記データ構造変換手段は、前記統計情報が示す前記利用状況に応じて前記キーバリューデータのデータ構造を変換する、
情報記憶システム。
【請求項３】
請求項２に記載の情報記憶システムであって、
前記統計情報収集手段は、前記統計情報として、前記検索処理手段が検索した前記キーバリューデータの数と、前記キーバリューデータのうち前記所定の処理の対象となる前記レコードデータの数と、前記所定の処理の対象とならない前記レコードデータの数と、を収集するよう構成され、
前記データ構造変換手段は、前記統計情報収集手段が収集した、前記キーバリューデータの数と、前記キーバリューデータのうち前記所定の処理の対象となる前記レコードデータの数と、前記所定の処理の対象とならない前記レコードデータの数と、が示す前記利用状況に応じて前記キーバリューデータのデータ構造を変換する、
情報記憶システム。
【請求項４】
請求項２又は３に記載の情報記憶システムであって、
前記検索処理手段は、前記所定の処理として、検索した前記キーバリューデータに含まれる前記レコードデータの更新を行うよう構成され、当該レコードデータの更新が前記データ構造変換手段による前記データ構造の変換中に行われる場合は、当該更新した前記レコードデータを含む前記キーバリューデータを変換対象のキーバリューデータとは別の場所に記憶し、
前記データ構造変換手段は、前記データ記憶手段が記憶する前記キーバリューデータのデータ構造の変換の終了後、前記別の場所に記憶した前記キーバリューデータのデータ構造を変換する、
情報記憶システム。
【請求項５】
請求項２乃至４の何れかに記載の情報記憶システムであって、
前記統計情報収集手段は、予め定められた時間よりも過去の前記統計情報を削除するよう構成された、
情報記憶システム。
【請求項６】
請求項２乃至５の何れかに記載の情報記憶システムであって、
前記データ構造変換手段によるデータ構造の変換履歴を示す変換履歴情報を記憶する変換履歴情報記憶手段と、
前記統計情報収集手段から取得した前記統計情報と前記変換履歴情報記憶手段から取得した前記変換履歴情報とに基づいて、前記キーバリューデータのデータ構造を変換する日時を計画するデータ構造変換計画作成手段と、を備え、
前記データ構造変換手段は、前記データ構造変換計画作成手段の計画に基づいて前記データ構造の変換を行う、
情報記憶システム。
【請求項７】
請求項１乃至６の何れかに記載の情報記憶システムであって、
前記データ構造変換手段を有する情報処理装置のリソースを監視するリソース負荷監視手段を備え、
前記リソース負荷監視手段は、前記監視するリソースに基づいて前記データ構造変換手段に対して前記データ構造の変換を行うよう指示し、
前記データ構造変換手段は、前記リソース負荷監視手段からの指示に基づいて前記データ構造の変換を行う、
情報記憶システム。
【請求項８】
請求項１乃至７の何れかに記載の情報記憶システムであって、
前記データ記憶手段は、前記複数の要素のうち各レコードデータに固有の識別情報となる前記要素をキー値とする第１のデータ構造と、複数のレコードデータに含まれる前記第１のデータ構造の前記キー値とは異なる前記要素をキー値とする第２のデータ構造と、の何れかのデータ構造を用いて前記キーバリューデータを記憶するよう構成され、
前記データ構造変換手段は、前記データ記憶手段が記憶する前記キーバリューデータのデータ構造を前記第１のデータ構造と前記第２のデータ構造との間で変換する、
情報記憶システム。
【請求項９】
データ記憶手段が記憶するキーバリューデータの利用状況を取得し、
当該取得した利用状況に基づいて、前記データ記憶手段が記憶するキーバリューデータのデータ構造を前記キーバリューデータのキー値を変更して別のデータ構造に変換する、
情報記憶方法。
【請求項１０】
情報処理装置に、
複数の要素からなるレコードデータの当該要素のうちの１つをキー値として、当該キー値と、１つ又は複数のレコードデータからなるバリュー値と、を対応付けたキーバリューデータを記憶するデータ記憶手段と、
前記データ記憶手段が記憶する前記キーバリューデータのデータ構造を、前記キー値を変更して別のデータ構造に変換するデータ構造変換手段と、を実現させ、
前記データ構造変換手段は、前記データ記憶手段が記憶する前記キーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行う、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報記憶システム、情報記憶方法、プログラムに関する。
【背景技術】
【０００２】
近年、スケーラブルなアプリケーションの実行基盤として、多数のコンピュータを用いるいわゆるクラウドが注目されている。また、クラウドのインフラストラクチャにおいて、スケーラブルなデータ永続化手段として、ＫＶＳ（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）というものが広く知られている。
【０００３】
ＫＶＳは、記憶したいデータを、識別標識となるキー（Ｋｅｙ）と記憶したいデータ（Ｖａｌｕｅ）とのペアとして記憶する方式である。そのため、ＫＶＳには、ＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ）の表で定義されたデータをそのまま格納することは出来ない。
【０００４】
そこで、ＲＤＢの表で定義されたデータをＫＶＳに格納する際には、表形式のデータをＫＶ（Ｋｅｙ  Ｖａｌｕｅ）データの構造に変換してＫＶＳに格納することになる。つまり、ユーザがあらかじめ表形式をどのようにＫＶデータに変換するかを定義しておき、その定義に従って挿入された表形式のレコードをＫＶデータに変換する。そして、表形式のレコードをＫＶデータに変更した後に、当該変更したＫＶデータをＫＶＳにデータを格納する。このような処理を用いて、データを格納することが必要となっていた。
【０００５】
このようなＫＶＳを用いた技術として、例えば、特許文献１が知られている。特許文献１には、ＫＶＳに格納される一部のデータを特別に扱う事の出来る計算機システムが記載されている。具体的には、特許文献１には、データベースを構成する複数の計算機の各々に分散して配置されたデータを管理する管理範囲管理部と、特定データに対してデータベースを構成する記憶領域以外の記憶領域である特定領域を割り当てる特定データ管理部と、を有する計算機システムが記載されている。特許文献１によると、例えばアクセス頻度の高いデータを特定データとすることで、アクセス性能を低下させることなく特定データの処理を高速化することが可能となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】ＷＯ２０１３―１１８２７０
【発明の概要】
【発明が解決しようとする課題】
【０００７】
表形式のデータをＫＶデータに変換する方法にはいくつか種類があり、それぞれの変換方法は処理するクエリに応じて利点、欠点を有している。しかしながら、上記特許文献１に記載されているようなシステムでは、一度表形式のデータをＫＶデータに変換してＫＶＳに格納すると、そのＫＶデータを後から別の変換方法によるＫＶデータに変更することが出来ないという問題があった。
【０００８】
このため、ユーザが最初に定義した変換方法が実行するワークロードに適した変換方法でない場合でも、そのＫＶデータを別の変換方法によるＫＶデータに変更することは出来なかった。また、ワークロードが運用開始時から変わり、最初に定義した変換方法が現在実行するワークロードに適した変換方法でなくなった場合でも、そのＫＶデータを別の変換方法によるＫＶデータに変更することは出来なかった。その結果、変換方式が間違っていた場合や、ワークロードに適する変換方式が変わった場合などにおいて、計算機資源を十分に活用してＫＶＳが十分な性能を発揮することが難しいという問題が生じていた。
【０００９】
このように、ＫＶＳには、使用状況が変化した場合などにおいて、性能を維持することが難しい、という問題が生じていた。
【００１０】
そこで、本発明の目的は、使用状況が変化した場合などにおいて、性能を維持することが難しい、という問題を解決する情報記憶システムを提供することにある。
【課題を解決するための手段】
【００１１】
かかる目的を達成するため本発明の一形態である情報記憶システムは、
複数の要素からなるレコードデータの当該要素のうちの１つをキー値として、当該キー値と、１つ又は複数のレコードデータからなるバリュー値と、を対応付けたキーバリューデータを記憶するデータ記憶手段と、
前記データ記憶手段が記憶する前記キーバリューデータのデータ構造を、前記キー値を変更して別のデータ構造に変換するデータ構造変換手段と、を備え、
前記データ構造変換手段は、前記データ記憶手段が記憶する前記キーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行う、
という構成を採る。
【００１２】
また、本発明の他の形態である情報記憶方法は、
データ記憶手段が記憶するキーバリューデータの利用状況を取得し、
当該取得した利用状況に基づいて、前記データ記憶手段が記憶するキーバリューデータのデータ構造を前記キーバリューデータのキー値を変更して別のデータ構造に変換する、
という構成を採る。
【００１３】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
複数の要素からなるレコードデータの当該要素のうちの１つをキー値として、当該キー値と、１つ又は複数のレコードデータからなるバリュー値と、を対応付けたキーバリューデータを記憶するデータ記憶手段と、
前記データ記憶手段が記憶する前記キーバリューデータのデータ構造を、前記キー値を変更して別のデータ構造に変換するデータ構造変換手段と、を実現させ、
前記データ構造変換手段は、前記データ記憶手段が記憶する前記キーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行う、
プログラムである。
【発明の効果】
【００１４】
本発明は、以上のように構成されることにより、使用状況が変化した場合などにおいても性能を維持することが可能な情報記憶システムを提供することが出来る。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態にかかるＫＶＳの構成を示すブロック図である。
【図２】表形式のデータの一例を示す表である。
【図３】図１で示すＫＶデータ記憶手段が記憶するＦＬＡＴ構造のＫＶデータの一例を示す表である。
【図４】図１で示すＫＶデータ記憶手段が記憶するＣＬＵＳＴＥＲ構造のＫＶデータの一例を示す表である。
【図５】図１で示すＫＶデータ記憶手段が記憶するインデックスの一例を示す表である。
【図６】図１で示す統計情報記憶手段が記憶する統計情報の一例を示す表である。
【図７】図１で示すシステムカタログが記憶するシステムカタログ情報の一例を示す表である。
【図８】本発明の第１の実施形態においてクライアントからクエリが入力された際のＫＶストアの動作を示すフローチャートである。
【図９】本発明の第１の実施形態においてデータ構造を変換する際の流れを示すフローチャートである。
【図１０】本発明の第２の実施形態に係るＫＶストアの構成を示すブロック図である。
【図１１】本発明の第３の実施形態に係るＫＶストアの構成を示すブロック図である。
【図１２】本発明の第４の実施形態に係るＫＶストアの構成を示すブロック図である。
【図１３】図１２で示すシステムカタログが記憶するシステムカタログ情報の一例を示す表である。
【図１４】本発明の第４の実施形態において構造変換計画を作成する際の動作を示すフローチャートである。
【図１５】本発明の第５の実施形態に係る情報記憶システムの構成の概略を示す概略ブロック図である。
【発明を実施するための形態】
【００１６】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第１の実施形態]
本発明の第１の実施形態では、表形式のデータをＫＶ（Ｋｅｙ  Ｖａｌｕｅ）形式のデータに変換して記憶するＫＶＳ１（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）について説明する。つまり、本実施形態におけるＫＶＳ１は、記憶する対象となるレコードデータから構成されるバリュー値とバリュー値を識別する情報であるキー値との組み合わせからなるＫＶデータを記憶する情報記憶システムである。また、後述するように、本実施形態におけるＫＶＳ１は、フラット（ＦＬＡＴ）構造（第１のデータ構造）若しくはクラスタ（ＣＬＵＳＴＥＲ）構造（第２のデータ構造）のＫＶデータを記憶する。そして、ＫＶＳ１は、ＫＶデータの利用状況に応じて、上記フラット構造、クラスタ構造間でデータ構造の変換を行うことが出来るよう構成されている。なお、フラット構造、クラスタ構造の詳細については後述する。
【００１７】
図１を参照すると、本発明の第１の実施形態に係るＫＶＳ１は、問合せ処理手段１１（検索処理手段）と、統計情報収集手段１２と、データ構造変換手段１３と、ＫＶデータ削除手段１４と、ＫＶデータ記憶手段１５（データ記憶手段）と、差分データ記憶手段１６と、変換データ記憶手段１７と、統計情報記憶手段１８と、システムカタログ１９と、を有している。
【００１８】
本実施形態におけるＫＶＳ１は、例えば、問合せ処理手段１１と、統計情報収集手段１２と、データ構造変換手段１３と、ＫＶデータ削除手段１４と、統計情報記憶手段１８と、システムカタログ１９と、を備える情報処理装置と、ＫＶデータ記憶手段１５と、差分データ記憶手段１６と、変換データ記憶手段１７と、を備える記憶装置と、を備えて構成されている。情報処理装置は図示しない中央演算装置（ＣＰＵ）と、図示しない記憶装置（メモリ及びハードディスク）と、を備えており、記憶装置が備えるプログラムをＣＰＵが実行することで上記各機能（手段）が実現されることになる。また、記憶装置は、１つ又は複数の記憶装置から構成することが出来る。
【００１９】
上記場合では、情報処理装置と記憶装置とはネットワークを介して互いに通信可能なよう接続されていることになる。情報処理装置と記憶装置とが情報の送受信を行うことで、クライアントからのクエリに応答することが出来る。なお、ＫＶＳ１の構成は、上記場合に限定されない。ＫＶＳ１は、１つの情報処理装置から構成されていても構わないし、複数の情報処理装置から構成されていても構わない。
【００２０】
問合せ処理手段１１は、クライアントからのクエリを受け付けて、当該受け付けたクエリを処理する機能を有している。問合せ処理手段１１は、クライアントからクエリを受け付けると、後述するシステムカタログ１９を参照しつつ当該クエリに応じて、ＫＶデータ記憶手段１５や差分データ記憶手段１６、変換データ記憶手段１７を検索する。そして、問合せ処理手段１１は、受け付けたクエリに応じたＫＶデータを、上記検索したＫＶデータ記憶手段１５や差分データ記憶手段１６、変換データ記憶手段１７から取得する。その後、問合せ処理手段１１は、クエリに応じた所定の処理を実行する。また、問合せ処理手段１１は、問合せの傾向や検索した結果に応じた統計情報を統計情報収集手段１２へと送信する。
【００２１】
ここで、本実施形態においてクライアントから入力されるクエリとしては、参照クエリと更新クエリとがある。クライアントから入力されるクエリが参照クエリであった場合には、問合せ処理手段１１は、各記憶手段（ＫＶデータ記憶手段１５、差分データ記憶手段１６、変換データ記憶手段１７）からＫＶデータを取得した後、上記所定の処理として、当該取得したＫＶデータをクライアントへと送信する。また、クライアントから入力されるクエリが更新クエリであった場合には、問合せ処理手段１１は、各記憶手段からＫＶデータを取得した後、上記所定の処理として、ＫＶデータを更新して当該更新した記憶データを各記憶手段に書き戻す。そして、問合せ処理手段１１は、処理結果をクライアントに通知する。
【００２２】
なお、問合せ処理手段１１が上記ＫＶデータ記憶手段１５、差分データ記憶手段１６、変換データ記憶手段１７のいずれの記憶手段を検索するかは、後述するデータ構造変換手段１３によるデータ構造変換処理の段階に応じて変化することになる。同様に、問合せ処理手段１１が上記ＫＶデータ記憶手段１５、差分データ記憶手段１６、変換データ記憶手段１７のいずれの記憶手段に更新クエリに応じた更新結果を書き戻すかは、データ構造変換手段１３によるデータ構造変換処理の段階に応じて変化することになる。データ構造変換手段１３によるデータ構造変換処理の段階に応じた検索先や更新の書き込み先の変化の詳細については、後述する。
【００２３】
また、問合せ処理手段１１は、差分データ記憶手段１６や変換データ記憶手段１７に更新データを書き戻す場合、図示しない時計部を参照して、ＫＶデータを構成するレコードデータに更新時間を表す情報を付加するよう構成することが出来る。具体的には、問合せ処理手段１１は、フラット構造のＫＶデータに対しては、１つ１つのＫＶデータに対して更新時間を表す情報を付加する。また、問合せ処理手段１１は、クラスタ構造のＫＶデータに対しては、１つのＫＶデータに含まれるレコードデータの１つ１つに更新時間を表す情報を付加する。このようにすることで、後述する差分データ記憶手段１６に含まれる情報が最新のものであるか否か分からなくなる可能性がある問題を解消することが出来る。なお、問合せ処理手段１１は、更新データを書き戻す場合、常に、ＫＶデータを構成するレコードデータに更新時間を表す情報を付加するよう構成しても構わない。
【００２４】
統計情報収集手段１２は、クライアントから入力されたクエリの傾向や入力されたクエリに応じた検索結果に基づく統計情報を問合せ処理部１１から取得する機能を有している。統計情報収集手段１２は、統計情報として、例えば、アクセス対象となった表やアクセス時間、検索を行った検索列やアクセスしたＫＶデータの数、アクセスしたＫＶデータのうち上記参照や更新の対象となったレコードデータの数や参照や更新の対象とならなかったレコードデータの数を収集する。そして、統計情報収集手段１２は、収集した統計情報を、後述する統計情報記憶手段１８へと書き込む。なお、統計情報収集手段１２が収集する統計情報は、上記例示した場合に限定されない。統計情報収集手段１２は、上記例示した以外の統計情報を収集しても構わない。
【００２５】
データ構造変換手段１３は、ＫＶＳ１において行われるデータ構造変換処理全体の制御を行う機能を有している。本実施形態におけるデータ構造変換手段１３は、統計情報記憶手段１８が記憶する統計情報と、後述するシステムカタログ１９が記憶するシステムカタログ情報と、を例えば定期的に参照して、データ構造変換処理を開始するか否かの判断を行う。また、データ構造変換手段１３は、ＫＶデータ記憶手段１５や差分データ記憶手段１６が記憶するＫＶデータのデータ構造をフラット構造、クラスタ構造間で変換する、データ構造変換処理を実行する。さらに、データ構造変換手段１３は、問合せ処理手段１１による検索先や更新データの書き込み先の制御を行う。なお、本実施形態におけるデータ構造変換手段１３は、例えば図示しない時計部などを利用することで、定期的に上記統計情報とシステムカタログ情報とを参照するよう構成されている。
【００２６】
ここで、データ構造変換手段１３により実行されるデータ構造変換処理と、問合せ処理手段１１に対する検索先や更新データの書き込み先の制御について詳細に説明する。なお、データ構造変換手段１３により行われるデータ構造変換処理を開始するか否かの判断については、後述する。
【００２７】
データ構造変換手段１３は、データ構造変換処理を開始すると、まず、問合せ処理手段１１にデータ構造変換処理が開始したことを通知する。具体的には、データ構造変換手段１３は、問合せ処理手段１１に対して、データ構造変換処理の対象となる表（ＫＶデータ）の情報を通知する。
【００２８】
問合せ処理手段１１は、上記通知を受け取ると、以後、データ構造変換処理の対象となる表に対する更新処理結果（更新データ）の書き込み先をＫＶデータ記憶手段１５から差分データ記憶手段１６へと変更する。また、問合せ処理手段１１は、上記通知以後、クライアントから受け取ったクエリに応じて、ＫＶデータ記憶手段１５と差分データ記憶手段１６とを検索する。
【００２９】
次に、データ構造変換手段１３は、ＫＶデータ記憶手段１５からＫＶデータの構造を変換する対象となる（クエリに応じた）ＫＶデータを抽出し、当該抽出したＫＶデータのデータ構造を変換する。そして、データ構造変換手段１３は、当該データ構造を変換したＫＶデータを変換データ記憶手段１７へと格納する。
【００３０】
データ構造変換手段１３は、ＫＶデータ記憶手段１５に記憶されている変換対象のＫＶデータのデータ構造を変換して変換データ記憶手段１７へ格納した後、問合せ処理手段１１に対してデータ構造変換処理の１段階目のフェーズが完了したことを通知する。
【００３１】
問合せ処理手段１１は、上記通知を受け取ると、以後、データ構造変換処理の対象となる表に対する更新処理結果（更新データ）の書き込み先を差分データ記憶手段１６から変換データ記憶手段１７へと変更する。また、問合せ処理手段１１は、上記通知以後、クライアントから受け取ったクエリに応じて、変換データ記憶手段１７と差分データ記憶手段１６とを検索する。
【００３２】
続いて、データ構造変換手段１３は、差分データ記憶手段１６に記憶されているＫＶデータを取得して、当該取得したＫＶデータのデータ構造を変換する。そして、データ構造変換手段１３は、当該データ構造を変換したＫＶデータを変換データ記憶手段１７へと格納する。
【００３３】
そして、データ構造変換手段１３は、差分データ記憶手段１６内のデータを全て変換した後、問合せ処理手段１１に対してデータ構造変換処理の２段階目のフェーズが完了したことを通知する。
【００３４】
問合せ処理手段１１は、上記通知を受け取ると、以後、変換データ記憶手段１７のみを検索する。また、問合せ処理手段１１は、更新データを変換データ記憶手段１７へと書き込む。
【００３５】
データ構造変換手段１３は、差分データ記憶手段１６内のデータを全て変換した後、後述するＫＶデータ削除手段１４に対して、変換済みのＫＶデータの削除を依頼する。その後、後述するように、ＫＶデータ削除手段１４によりデータ構造を変換済みのＫＶデータが削除されることになる。
【００３６】
以上が、データ構造変換手段１３により実行されるデータ構造変換処理と、問合せ処理手段１１に対する検索先や更新データの書き込み先の制御についての詳細である。
【００３７】
なお、１段階目のフェーズ終了後２段階目のフェーズ終了前の段階においては、上述したように、問合せ処理手段１１による検索先が変換データ記憶手段１７と差分データ記憶手段１６とになる。一方で、問合せ処理手段１１による更新データの書き込み先は変換データ記憶手段１７になる。そのため、差分データ記憶手段１６が記憶するデータの方が、変換データ記憶手段１７が記憶するデータよりも古くなる場合がある。つまり、差分データ記憶手段１６が記憶するデータと、変換データ記憶手段１７が記憶するデータと、のどちらが新しいデータであるか分からなくなる場合がある。この問題に対処するため、問合せ処理手段１１は、上述したように、差分データ記憶手段１６や変換データ記憶手段１７に更新データを書き戻す際に、ＫＶデータを構成するレコードデータに更新時間を表す情報を付加するよう構成することが出来る。このような構成により、問合せ処理手段１１は、ＫＶデータに含まれるレコードデータの更新時間を参照することで、最新のＫＶデータを特定することが可能となる。
【００３８】
ここで、問合せ処理手段１１の検索先や更新データの書き込み先の変化をまとめると以下のようになる。
・データ構造変換処理の前
検索先→ＫＶデータ記憶手段１５
更新データの書き込み先→ＫＶデータ記憶手段１５
・データ構造変換処理開始後１段階目のフェーズ終了前
検索先→ＫＶデータ記憶手段１５と差分データ記憶手段１６
更新データの書き込み先→差分データ記憶手段１６
・１段階目のフェーズ終了後２段階目のフェーズ終了前
検索先→変換データ記憶手段１７と差分データ記憶手段１６
更新データの書き込み先→変換データ記憶手段１７
・２段階目のフェーズ終了後
検索先→変換データ記憶手段１７
更新データの書き込み先→変換データ記憶手段１７
【００３９】
また、データ構造変換手段１３によるデータ構造変換処理をまとめると以下のようになる。
・データ構造変換処理の開始
ＫＶデータ記憶手段１５が記憶する変換対象のＫＶデータのデータ構造を変換する。
・ＫＶデータ記憶手段１５に対するデータ構造変換処理（１段階目のフェーズ）の終了
差分データ記憶手段１６内のＫＶデータのデータ構造を変換する。
・差分データ記憶手段１６に対するデータ構造変換処理（２段階目のフェーズ）の終了
ＫＶデータ削除手段１４に対してデータ構造変換済みのＫＶデータの削除を依頼する。
【００４０】
ＫＶデータ削除手段１４は、ＫＶデータ記憶手段１５と差分データ記憶手段１６とに記憶されている、データ構造を変換済みのＫＶデータ（データ構造変換前のＫＶデータ）を削除する機能を有している。上述したように、ＫＶデータ削除手段１４は、データ構造変換手段１３からの依頼に応じて、ＫＶデータ記憶手段１５と差分データ記憶手段１６とに記憶されている、データ構造を変換済みのＫＶデータを削除する。
【００４１】
ＫＶデータ記憶手段１５は、ハードディスクやメモリなどの記憶装置からなり、ＫＶＳで構成されている。ＫＶデータ記憶手段１５は、クライアントから参照・更新されるＫＶデータを記憶している。上述したように、データ構造変換手段１３によるデータ構造変換処理前及びデータ構造変換処理開始後１段階目のフェーズの終了前において、問合せ処理部１１は、ＫＶデータ記憶手段１５を検索して、参照・更新処理を行うことになる。また、ＫＶデータ記憶手段１５には、データ構造変換処理前において、更新されたＫＶデータの書き込みが行われることになる。
【００４２】
具体的には、ＫＶデータ記憶手段１５は、表形式のデータをフラット構造又はクラスタ構造のいずれかのデータ構造に基づいて変換したＫＶデータを、記憶している。また、ＫＶデータ記憶手段１５は、後述するインデックスを記憶している。なお、ＫＶデータ記憶手段１５が表形式のデータを変換するＫＶデータのデータ構造（フラット構造又はクラスタ構造）は、表単位で選択することが出来る。
【００４３】
ここで、本実施形態におけるＫＶデータの構造について例を挙げて説明する。上述したように、本実施形態におけるＫＶＳ１は、表形式のデータをフラット構造又はクラスタ構造のＫＶデータに変換して記憶している。そのため、以下においては、ＫＶデータのデータ構造のうち、フラット構造、クラスタ構造について説明する。
【００４４】
図２を参照すると、例えば、商品ＩＤと商品名と商品分類と在庫と金額とを項目名（カラム名）として有している表形式のデータがあるとする。また、図２で示す表形式のデータにおいては、主キー（ＰＫ；Ｐｒｉｍａｒｙ  Ｋｅｙ）は商品ＩＤである。つまり、図２で示す表形式のデータは、商品ＩＤを用いて各レコードを一意に識別することが出来るよう構成されている。
【００４５】
具体的には、例えば、以下のようなレコードを有している表形式のデータを想定する。
（商品ＩＤ、商品名、商品分類、在庫、金額）
（ｉ１、商品Ａ、パソコン、１０、１２０，０００）
（ｉ２、商品Ｂ、パソコン、３、１００，０００）
（ｉ３、商品Ｃ、スマートフォン、５、３５，０００）
（ｉ４、商品Ｄ、タブレット、８、５０，０００）
（ｉ５、商品Ｅ、スマートフォン、１５、２５，０００）
【００４６】
この場合において、上記表形式のデータをフラット構造のＫＶデータに変換すると、例えば、図３で示すようになる。図３を参照すると、フラット構造のＫＶデータは、キー値を主キー値とし、バリュー値を表形式のデータの全フィールド値の集合とするＫＶデータとなる。また、フラット構造では、ＫＶデータの一つが表形式の１つのレコードデータに対応することになる。
【００４７】
具体的には、上記表形式のデータをフラット構造のＫＶデータに変換すると、例えば以下のようになる。
｛（キー値）、（バリュー値）｝
｛（ｉ１）、（ｉ１、商品Ａ、パソコン、１０、１２０，０００）｝
｛（ｉ２）、（ｉ２、商品Ｂ、パソコン、３、１００，０００）｝
｛（ｉ３）、（ｉ３、商品Ｃ、スマートフォン、５、３５，０００）｝
｛（ｉ４）、（ｉ４、商品Ｄ、タブレット、８、５０，０００）｝
｛（ｉ５）、（ｉ５、商品Ｅ、スマートフォン、１５、２５，０００）｝
【００４８】
このように、フラット構造は、レコードデータの一つがＫＶデータの一つに対応するデータ構造である。そのため、フラット構造のＫＶデータでは、キー値を用いて所望のレコードデータのみを検索することが可能となる。従って、フラット構造は、主キー値などのユニーク値を持つ列での検索や更新処理に向いているといえる。
【００４９】
次に、図２で示す表形式のデータをクラスタ構造のＫＶデータに変換する場合について説明する。まず、表形式のデータをクラスタ構造で変換するためには、予めクラスタを構成するためのキー列（クラスタキー列）を設定する必要がある。そこで、例えば、商品分類列をクラスタキー列とするとする。そして、上記表形式のデータを、商品分類列をクラスタキー列とするクラスタ構造でＫＶデータに変換すると、例えば、図４で示すようになる。図４を参照すると、クラスタ構造のＫＶデータは、キー値をクラスタキー列の値とし、バリュー値をクラスタキー値が同じレコードの集合とするＫＶデータとなる。そのため、クラスタ構造では、ＫＶデータの１つが表形式のレコードデータの一つ又は複数と対応することになる。
【００５０】
具体的には、上記表形式のデータをクラスタ構造のＫＶデータに変換すると、例えば以下のようになる。
｛（キー値）、（バリュー値）｝
｛（パソコン）、（ｉ１、商品Ａ、パソコン、１０、１２０，０００）
（ｉ２、商品Ｂ、パソコン、３、１００，０００）｝
｛（スマートフォン）、（ｉ３、商品Ｃ、スマートフォン、５、３５，０００）
（ｉ５、商品Ｅ、スマートフォン、１５、２５，０００）｝
｛（タブレット）、（ｉ４、商品Ｄ、タブレット、８、５０，０００）｝
【００５１】
このように、クラスタ構造は、複数のレコードデータがＫＶデータの一つに対応することが可能なデータ構造である。そのため、クラスタ構造のＫＶデータでは、キー値を用いて一度に複数のレコードデータを検索することが可能となる。従って、フラット構造は、重複度が高いキー値での検索や更新処理に向いているといえる。
【００５２】
また、ＫＶＳ１は、キー値を指定してデータ（バリュー値）を取得する。そのため、原則としては、キー値以外ではデータにアクセスすることが出来ないことになる。例えば、図３で示すフラット構造のＫＶデータでは、上述したように、商品ＩＤ値がキー値となる。従って、図３の例では、商品ＩＤ列以外の検索条件では、ＫＶデータを取得することが出来ない。そこで、任意の列を検索条件として指定できるようにするために、上述したインデックスという構造を用いることになる。
【００５３】
インデックスは、キー値をインデックスを生成する列の値とし、バリュー値をインデックスを生成する列値が同じレコードの主キー値（インデックスの対象となるＫＶデータのキー値）とするＫＶデータである。図５を参照すると、例えば、以下のようなインデックスを生成することが出来る。なお、例示した以外のインデックスを生成しても構わない。
｛（キー値）、（バリュー値）｝
・インデックス（Ａ）
｛（パソコン）、（ｉ１、ｉ２）｝
｛（スマートフォン）、（ｉ３、ｉ５）｝
｛（タブレット）、（ｉ４）｝
・インデックス（Ｂ）
｛（商品Ａ）、（ｉ１）｝
｛（商品Ｂ）、（ｉ２）｝
｛（商品Ｃ）、（ｉ３）｝
｛（商品Ｄ）、（ｉ４）｝
｛（商品Ｅ）、（ｉ５）｝
・インデックス（Ｃ）
｛（商品Ａ）、（パソコン）｝
｛（商品Ｂ）、（パソコン）｝
｛（商品Ｃ）、（スマートフォン）｝
｛（商品Ｄ）、（タブレット）｝
｛（商品Ｅ）、（スマートフォン）｝
【００５４】
上記３つのインデックスのうち、インデックス（Ａ）とインデックス（Ｂ）は図３で示すフラット構造のＫＶデータに対するインデックスである。例えばインデックス（Ａ）を用いることで、商品ＩＤ列以外である商品分類列を検索条件としてＫＶデータを取得することが可能となる。また、インデックス（Ｂ）を用いることで、商品名列を検索条件としてＫＶデータを取得することが可能となる。
【００５５】
一方、インデックス（Ｃ）は図４で示すクラスタ構造のＫＶデータに対するインデックスである。インデックス（Ｃ）を用いることで、商品名列を検索条件としてＫＶデータを取得することが可能となる。
【００５６】
本実施形態におけるＫＶデータ記憶部１５は、このようなフラット構造のＫＶデータとクラスタ構造のＫＶデータとインデックスとを記憶している。また、上述したように、ＫＶデータをフラット構造とクラスタ構造のいずれを用いて記憶するかは、表単位で選択することが出来る。
【００５７】
差分データ記憶手段１６は、ハードディスクやメモリなどの記憶装置からなり、ＫＶＳで構成されている。差分データ記憶手段１６は、上述したように、データ構造変換処理開始後１段階目のフェーズ終了前まで、問合せ処理部１１による更新データの書き込み先になる記憶装置である。また、差分データ記憶手段１６は、データ構造変換処理開始後２段階目のフェーズ終了前まで、問合せ処理部１１によるデータ検索の対象となることになる。
【００５８】
変換データ記憶手段１７は、ハードディスクやメモリなどの記憶装置からなり、ＫＶＳで構成されている。変換データ記憶手段１７は、上述したように、データ構造変換手段１３によりデータ構造が変換されたＫＶデータを記憶する。また、変換データ記憶手段１７は、データ構造変換処理の１段階目のフェーズ終了後から、問合せ処理部１１によるデータ更新の書き込み先とデータ検索の対象になることになる。
【００５９】
このように、ＫＶデータ記憶手段１５と、差分データ記憶手段１６と、変換データ記憶手段１７とは、全てＫＶＳで構成されている。上述したように、ＫＶデータ記憶手段１５と、差分データ記憶手段１６と、変換データ記憶手段１７とは、１つの記憶装置から構成されても構わないし、複数の記憶装置から構成されても構わない。ＫＶデータ記憶手段１５と、差分データ記憶手段１６と、変換データ記憶手段１７と、に格納されるＫＶデータが全て１つのＫＶＳの中に入っていればその構成は特に限定しない。
【００６０】
統計情報記憶手段１８は、ハードディスクやメモリなどの記憶装置から構成されている。上述したように、統計情報記憶手段１８は、統計情報収集手段１２が収集した統計情報を記憶する。
【００６１】
図６を参照すると、統計情報記憶手段１８は、統計情報として、例えば、テーブルとアクセス時間と検索列とアクセスＫＶ数と処理レコード数と処理対象外レコード数とを記憶している。
【００６２】
ここで、テーブルとは、アクセス対象となった表の名前である。また、アクセス時間とは、アクセス対象となった表にアクセスした時間である。また、検索列とは、検索対象となった列のことであり、項目名（カラム名）を示している。また、アクセスＫＶ数は、問合せ処理手段１１がアクセスしたＫＶデータの個数である。また、処理レコード数は、問合せ処理手段１１がアクセスしたＫＶデータのうち、処理の対象となったレコードデータの数である。また、処理対象外レコード数は、問合せ処理手段１１がアクセスしたＫＶデータのうち、処理の対象とならなかったレコードデータの数である。なお、ここでいう処理は、参照処理若しくは更新処理のことを指す。
【００６３】
具体的には、統計情報記憶手段１８は、例えば、以下のような統計情報を記憶している（図６参照）。なお、下記で示す統計情報は、統計情報記憶手段１８が記憶可能な統計情報の一例である。
（テーブル、アクセス時間、検索列、アクセスＫＶ数、処理レコード数、処理対象外レコード数）
（テーブルＡ、２０１３／１１／２８  １０：０１、商品ＩＤ、１、１、０）
（テーブルＢ、２０１３／１１／２８  １０：０２、ユーザ名、１、３０、０）
（テーブルＡ、２０１３／１１／２８  １０：０３、商品分類、１２１、１２０、０）
（テーブルＣ、２０１３／１１／２８  １０：０４、注文ＩＤ、１、１、１８０）
（テーブルＢ、２０１３／１１／２８  １０：０５、ユーザ名、１、２０、０）
（テーブルＣ、２０１３／１１／２８  １０：０６、注文ＩＤ、１、１、２００）
（テーブルＡ、２０１３／１１／２８  １０：０７、商品分類、１５１、１５０、０）
【００６４】
統計情報記憶手段１８は、このような統計情報を統計情報収集手段１２から取得して記憶する。そして、上述したように、本実施形態においては、統計情報記憶手段１８が記憶する統計情報は、例えば定期的にデータ構造変換手段１３へと送信される。その後、統計情報は、データ構造変換手段１３がデータ構造変換処理を開始するか否かの判断を行う際に利用されることになる。
【００６５】
なお、統計情報記憶手段１８が記憶する統計情報は、上記例示した場合に限定されない。統計情報記憶手段１８は、上記例示した場合以外にも、統計情報収集手段１２による統計情報の収集に応じた統計情報を記憶することが出来る。
【００６６】
また、本実施形態における統計情報記憶手段１８には、システム運用開始時からの統計情報が全て格納されていることになる。しかしながら、統計情報記憶手段１８が記憶する統計情報のうちデータ構造変換手段１３へと送信される統計情報は、例えば、後述するシステムカタログ情報が記憶するＫＶ構造変換時間以降の統計情報に限ることが出来る。このような制御は、例えば、データ構造変換手段１３が統計情報記憶手段１８から統計情報を取得する際に、システムカタログ情報を参照することで実現することが出来る。このように、データ構造変換手段１３が受信する統計情報をＫＶ構造変換時間以降の統計情報に限ることで、より実態に即したデータ構造変換処理を行うか否かの判断を行うことが可能となる。また、統計情報記憶手段１８は、予め定められた時間よりも古い統計情報を削除するように構成しても構わない。
【００６７】
システムカタログ１９は、ハードディスクやメモリなどの記憶装置から構成されている。システムカタログ１９は、ＫＶデータ記憶手段１５や差分データ記憶手段１６や変換データ記憶手段１７に記憶されているＫＶデータのデータ構造に関する情報であるシステムカタログ情報を記憶している。
【００６８】
図７で示すように、システムカタログ１９は、システムカタログ情報として、例えば、テーブルと、ＫＶ構造と、ＫＶ構造変換時間と、を記憶している。
【００６９】
ここで、テーブルとは、各記憶手段に存在する表の名前である。また、ＫＶ構造には、テーブルが示す表がフラット構造とクラスタ構造のいずれのデータ構造のＫＶデータに変換されているかを示す情報が記載されている。また、ＫＶ構造変換時間には、ＫＶデータのデータ構造が最後に変換された時間に関する情報が記載されている。
【００７０】
具体的には、システムカタログ１９は、例えば、以下のようなシステムカタログ情報を記憶しているとする（図７参照）。なお、下記で示すシステムカタログ情報は、システムカタログ１９が記憶可能なシステムカタログ情報の一例である。
（テーブル、ＫＶ構造、ＫＶ構造変換時間）
（テーブルＡ、フラット、２０１３／１１／２８  １０：００）
（テーブルＢ、クラスタ、２０１３／１１／２８  １０：００）
（テーブルＣ、クラスタ、２０１３／１１／２８  １０：００）
【００７１】
システムカタログ１９は、このようなシステムカタログ情報を、データ構造変換手段１３と通信することで取得する。そして、上述したように、本実施形態においては、システムカタログ１９が記憶するシステムカタログ情報は、例えば定期的にデータ構造変換手段１３へと送信される。その後、システムカタログ情報は、データ構造変換手段１３がデータ構造変換処理を開始するか否かの判断を行う際に利用されることになる。また、上述したように、システムカタログ情報は、データ構造変換手段１３が統計情報記憶手段１８から統計情報を取得する際に利用することも出来る。
【００７２】
なお、システムカタログ１９が記憶するシステムカタログ情報は、上記例示した場合に限定されない。システムカタログ１９は、上記例示した場合以外の項目についてのシステムカタログ情報を記憶していても構わない。また、本実施形態においては、システムカタログ１９は、システムカタログ情報として、現在のＫＶ構造と最後に構造変換が行われた時間であるＫＶ構造変換時間とを記憶するとした。しかしながら、システムカタログ１９
は、システムカタログ情報として、例えば、システム運用時からの変換履歴を格納するように構成しても構わない。
【００７３】
ここで、データ構造変換手段１３により実行されるデータ構造変換処理を開始するか否かの判断の一例について、上記例示した統計情報記憶手段１８が記憶する統計情報とシステムカタログ１９が記憶するシステムカタログ情報とを用いて説明する。
【００７４】
上述したように、データ構造変換手段１３は、例えば時計部などを用いることで、統計情報記憶手段１８が記憶する統計情報とシステムカタログ１９が記憶するシステムカタログ情報とを取得する。そして、データ構造変換手段１３は、統計情報とシステムカタログ情報とを参照して、ＫＶデータ構造変換の対象となる表があるか否かについて判定する。
【００７５】
具体的には、データ構造変換手段１３は、例えば以下のような方法で、フラット構造からクラスタ構造への変換を行うか否か判断する。データ構造変換手段１３は、まず、システムカタログ情報を参照して、ＫＶ構造がフラットであるテーブルを見つける。図７を参照すると、例示した場合においては、テーブルＡのデータ構造がフラットであることが分かる。次に、データ構造変換手段１３は、統計情報を参照して、もっとも多くの検索が行われている列を探す。図６を参照すると、例示した場合においては、テーブルＡのうち商品ＩＤで検索した回数が１回で、商品分類で検索した回数が２回となる。そのため、データ構造変換手段１３は、もっとも多くの検索が行われている列として、商品分類列を見つける。このもっとも検索が行われている列が、クラスタ構造へ変換する場合のクラスタキーの候補になることになる。そして、データ構造変換手段１３は、もっとも多くの検索が行われている列のアクセスＫＶ数の平均値と（平均値以外を用いても構わない）、予め定められたフラットクラスタ変換閾値（第１データ変換閾値）とを比較して、商品分類列をクラスタキーとするクラスタ構造に変換するか否か決定する。例えば、フラットクラスタ変換閾値として１００が予め定められていたとする。また、図６を参照すると、商品分類列のアクセスＫＶ数の平均値は１３６である。そのため、例示した場合においては、データ構造変換手段１３は、商品分類列のアクセスＫＶ数の平均値がフラットクラスタ変換閾値を超えていると判断し、商品分類列をクラスタキーとするクラスタ構造に変換するデータ構造変換処理の開始を決定する。以上が、データ構造変換手段１３により行われるフラット構造からクラスタ構造への変換の対象となるか否かの判断の一例である。なお、フラットクラスタ変換閾値は、例えば、ユーザが予め設定しておくことになる。
【００７６】
また、データ構造変換手段１３は、例えば以下のような方法で、クラスタ構造からフラット構造への変換を行うか否か判断する。データ構造変換手段１３は、まず、システムカタログ情報を参照して、ＫＶ構造がクラスタであるテーブルを見つける。図７を参照すると、例示した場合においては、テーブルＢとテーブルＣのデータ構造がクラスタであることが分かる。次に、データ構造変換手段１３は、統計情報を参照して、もっとも多くの検索が行われている列を探す。図６を参照すると、例示した場合においては、テーブルＢの場合はユーザ名列であり、テーブルＣの場合は注文ＩＤ列である。そして、データ構造変換手段１３は、もっとも多くの検索が行われている列の処理レコード数と処理対象外レコード数との比率からフラット構造に変換するか否か決定する。具体的には、データ構造変換手段１３は、以下の式により求められる値と、予め定められたクラスタフラット変換閾値（第２データ変換閾値）とを比較して、以下の式により求められる値がクラスタフラット変換閾値以下となる場合に、フラット構造に変換すると決定する。
値＝処理レコード数／（処理レコード数＋処理対象外レコード数）
なお、対象となる処理レコード数と処理対象外レコード数とが複数ある場合は、例えば平均値を用いて上記値を算出する。
【００７７】
例えば、フラットクラスタ変換閾値として１／５０が予め定められていたとする。また、図６を参照すると、テーブルＢの上記式により求められる値は１になる。また、テーブルＣの上記式により求められる値は１／１９１になる。そのため、データ構造変換手段１３は、テーブルＢに対してデータ構造変換処理を行わないと決定する。一方、データ構造変換手段１３は、テーブルＣに対してデータ構造変換処理を行うと決定する。以上が、データ構造変換手段１３により行われるクラスタ構造からフラット構造への変換の対象となるか否かの判断の一例である。なお、クラスタフラット変換閾値は、例えば、ユーザが予め設定しておくことになる。
【００７８】
以上が、データ構造変換手段１３により実行されるデータ構造変換処理を開始するか否かの判断の一例である。データ構造変換手段１３がデータ構造変換処理を開始すると決定した場合、上述したように、データ構造変換手段１３によりデータ構造変換処理が行われることになる。なお、データ構造変換手段１３により実行されるデータ構造変換処理を開始するか否かの判断は、上記例示した場合に限定されない。データ構造変換手段１３は、例示した場合以外の方法でデータ構造変換処理を開始するか否か判断しても構わない。
【００７９】
以上が、本実施形態におけるＫＶＳ１の構成である。なお、本実施形態においては、統計情報記憶手段１８が記憶する統計情報やシステムカタログ１９が記憶するシステムカタログ情報を表形式のデータであるとして説明した。しかしながら、これらのデータは必ずしも表形式のデータで格納されている必要はない。
【００８０】
次に、本実施形態に係るＫＶＳ１の動作について説明する。まず、クライアントからクエリが入力された際のＫＶＳ１の動作について説明する。
【００８１】
まず、クライアントがＫＶＳ１に対してクエリを入力する。これにより、図８で示す動作が開始する。
【００８２】
クライアントがＫＶＳ１に対してクエリを入力すると、ＫＶＳ１の問合せ処理手段１１は当該クエリを受信する。すると、問合せ処理手段１１は、受信したクエリを解析して、解析した結果とシステムカタログ１９から取得したシステムカタログ情報とを基にアクセス対象のＫＶデータを検索して特定する。そして、問合せ処理手段１１は、特定したＫＶデータを取得する（Ｓ００１）。
【００８３】
なお、問合せ処理手段１１が、ＫＶデータ記憶手段１５と差分データ記憶手段１６と変換データ記憶手段１７とのいずれの記憶手段を検索するかは、データ構造変換手段１３によるデータ構造変換処理の段階で変化することになる。具体的には、問合せ処理手段１１は、以下のように検索することになる。
・データ構造変換処理の前
ＫＶデータ記憶手段１５を検索する。
・データ構造変換処理開始後１段階目のフェーズ終了前
ＫＶデータ記憶手段１５と差分データ記憶手段１６とを検索する。
・１段階目のフェーズ終了後２段階目のフェーズ終了前
変換データ記憶手段１７と差分データ記憶手段１６とを検索する。
・２段階目のフェーズ終了後
変換データ記憶手段１７を検索する。
【００８４】
次に、問合せ処理手段１１は、統計情報収集手段１２に対して統計情報を入力する（Ｓ００２）。統計情報収集手段１２は、問合せ処理手段１１から統計情報を入力されると、当該入力された統計情報を統計情報記憶手段１８に格納することになる。
【００８５】
続いて、問合せ処理手段１１は、入力されたクエリが更新処理を行うクエリであるか。参照処理を行うクエリであるかを判断する（Ｓ００３）。そして、入力されたクエリが更新処理を行うクエリである場合には、問合せ処理手段１１は、データの更新処理を行い（Ｓ００４）、更新処理の結果をクライアントに返却する（Ｓ００５）。また、問合せ処理手段１１は、更新した更新データを記憶手段に書き込む。
【００８６】
なお、問合せ処理手段１１がＫＶデータ記憶手段１５と差分データ記憶手段１６と変換データ記憶手段１７とのいずれの記憶手段に更新データを書き込むかは、データ構造変換手段１３によるデータ構造変換処理の段階で変化することになる。具体的には、問合せ処理手段１１は、以下のように更新データを書き込む。
・データ構造変換処理の前
ＫＶデータ記憶手段１５に更新データを書き込む。
・データ構造変換処理開始後１段階目のフェーズ終了前
差分データ記憶手段１６に更新データを書き込む。
・１段階目のフェーズ終了後２段階目のフェーズ終了前
変換データ記憶手段１７に更新データを書き込む。
・２段階目のフェーズ終了後
変換データ記憶手段１７に更新データを書き込む。
【００８７】
また、問合せ処理手段１１は、差分データ記憶手段１６と変換データ記憶手段１７とに更新データを書き込む際には、例えば図示しない時計部を参照して、ＫＶデータを構成するレコードデータに更新時間を表す情報を付加することが出来る。
【００８８】
一方、入力されたクエリが参照処理を行うクエリである場合には、取得したＫＶデータを参照処理結果としてクライアントに返却する（Ｓ００６）。
【００８９】
以上が、クライアントからクエリが入力された際のＫＶＳ１の動作である。ＫＶＳ１は、このような動作を行うことで、クライアントから入力されたクエリに応じた参照結果や更新結果をクライアントに返却することが出来る。
【００９０】
なお、上記のように、１段階目のフェーズ終了後２段階目のフェーズ終了前の段階においては、問合せ処理手段１１による検索先は変換データ記憶手段１７と差分データ記憶手段１６とになる。一方で、問合せ処理手段１１による更新データの書き込み先は変換データ記憶手段１７になる。そのため、差分データ記憶手段１６が記憶するデータの方が、変換データ記憶手段１７が記憶するデータよりも古くなる場合がある。このような場合には、上述したように、問合せ処理手段１１は、ＫＶデータに含まれるレコードデータの更新時間を参照することで、最新のＫＶデータを特定することが出来る。
【００９１】
次に、データ構造変換手段１３により行われるデータ構造変換処理の動作について説明する。
【００９２】
図９を参照すると、データ構造変換手段１３は、システムカタログ１９からシステムカタログ情報を取得する（Ｓ１０１）。また、データ構造変換手段１３は、統計情報記憶手段１８から統計情報を取得する（Ｓ１０２）。なお、データ構造変換手段１３による統計情報の取得の際には、データ構造変換手段１３は、システムカタログ情報を参照して、ＫＶ構造変換時間以降（最後にデータ構造変換処理が行われた時間以降）の統計情報のみを取得しても構わない。
【００９３】
データ構造変換手段１３が統計情報記憶手段１８から統計情報を記憶するタイミングやシステムカタログ１９からシステムカタログ情報を取得するタイミングは、例えば、時計部などによって定期的に動作するよう制御されている。なお、データ構造変換手段１３は、例えば、予め定められた構造変換計画に基づいて上記情報を取得したり、データ構造変換手段１３の負荷などに応じて上記情報の取得を開始したりしても構わない。
【００９４】
次に、データ構造変換手段１３は、取得した統計情報とシステムカタログ情報とに基づいて、データ構造変換処理の対象になる表があるか否かを判定する（Ｓ１０３）。ある表がデータ構造変換処理の対象になるか否かは、例えば、以下のように決定する。
【００９５】
データ構造変換手段１３は、まず、システムカタログ情報を参照する。そして、データ構造変換手段１３は、フラット構造のＫＶデータとして記憶されている表とクラスタ構造のＫＶデータとして記憶されている表とを判別する。
【００９６】
続いて、データ構造変換手段１３は、統計情報を参照する。そして、データ構造変換手段１３は、各表のうちもっとも多くの検索が行われている検索列を探し出す。
【００９７】
その後、データ構造変換手段１３は、フラット構造のＫＶデータとして記憶されている表のうちに対して、上記もっとも多くの検索が行われている検索列を用いてアクセスしたアクセスＫＶ数の平均値と予め定められたフラットクラスタ変換閾値との比較を行う。そして、データ構造変換手段１３は、アクセスＫＶ数の平均値がフラットクラスタ変換閾値を超えている場合に、もっとも多くの検索が行われている検索列をクラスタキーとする、フラット構造をクラスタ構造に変換するデータ構造変換処理の開始を決定する。
【００９８】
また、データ構造変換手段１３は、クラスタ構造のＫＶデータとして記憶されている表のうちに対して、上記もっとも多くの検索が行われている列で検索したときの処理レコード数と処理対象外レコード数の比とクラスタフラット変換閾値との比較を行う。そして、データ構造変換手段１３は、上記比がクラスタフラッ変換閾値を超えている場合に、クラスタ構造をフラット構造に変換するデータ構造変換処理の開始を決定する。
【００９９】
例えば、このような動作により、データ構造変換手段１３は、データ構造変換処理の対象となる表があるか否か判断する。そして、データ構造変換手段１３は、データ構造変換処理の対象となる表がなかった場合は、下記の動作を省略してデータ構造変換処理を終了することになる（Ｓ１０３、ｎｏ）。
【０１００】
一方、データ構造変換手段１３は、データ構造変換処理の対象となる表があった場合は（Ｓ１０３、ｙｅｓ）、データ構造変換処理を開始する。なお、データ構造変換手段１３は、以降のデータ構造の変換を、データ構造変換処理の対象となる表ごとに行う。
【０１０１】
データ構造変換手段１３は、データ構造変換処理を開始すると、まず問合せ処理手段１１に対して、ＫＶ構造変換処理の対象となった表の情報を通知する（Ｓ１０４）。問合せ処理手段１１は、上記通知を受け取ると、データ構造変換処理の対象となった表に対する更新処理結果をＫＶデータ記憶手段１５ではなく差分データ記憶手段１６に書き込むようになる。また、問合せ処理手段１１は、クライアントから受け取ったクエリに応じて、ＫＶデータ記憶手段１５と差分データ記憶手段１６とを検索するようになる。
【０１０２】
次に、データ構造変換手段１３は、ＫＶデータ記憶手段１５からデータ構造変換処理の対象となる表のＫＶデータを全て取得する（Ｓ１０５）。そして、データ構造変換手段１３は、ＫＶデータ記憶手段１５から取得したＫＶデータに対してデータ構造の変換を行う（Ｓ１０６）。その後、データ構造変換手段１３は、変換後のＫＶデータを変換データ記憶手段１７に書き込む。
【０１０３】
続いて、データ構造変換手段１３は、問合せ処理手段１１に対して、データ構造変換処理の１段階目のフェーズが終了したことを通知する（Ｓ１０７）。つまり、データ構造変換手段１３は、問合せ処理手段１１に対して、上記通知したデータ構造変換処理の対象となる表に対するＫＶデータのうち、ＫＶデータ記憶手段１５に記憶されているＫＶデータのデータ構造変換処理が終了したことを通知する。問合せ処理手段１１は、上記通知を受け取ると、データ構造変換処理の対象となった表に対する更新処理結果を差分データ記憶手段１６ではなく変換データ記憶手段１７に書き込むようになる。また、問合せ処理手段１１は、クライアントから受け取ったクエリに応じて、変換データ記憶手段１７と差分データ記憶手段１６とを検索するようになる。
【０１０４】
次に、データ構造変換手段１３は、差分データ記憶手段１６からデータ構造変換処理の対象になる表のＫＶデータを全て取得する（Ｓ１０８）。そして、データ構造変換手段１３は、差分データ記憶手段１６から取得したＫＶデータに対してデータ構造の変換を行う（Ｓ１０９）。その後、データ構造変換手段１３は、変換後のＫＶデータを変換データ記憶手段１７に書き込む。
【０１０５】
そして、データ構造変換手段１３は、システムカタログ１９が記憶するシステムカタログ情報を更新する（Ｓ１１０）。つまり、データ構造変換手段１３は、システムカタログ情報中のＫＶ構造を変換したデータ構造に変更する。また、データ構造変換手段１３は、ＫＶ構造変換時間を、データ構造変換処理を行った時間に変更する。
【０１０６】
また、データ構造変換手段１３は、問合せ処理手段１１に対して、データ構造変換処理の２段階目のフェーズが終了したことを通知する（Ｓ１１１）。つまり、データ構造変換手段１３は、問合せ処理手段１１に対して、上記通知したデータ構造変換処理の対象となる表に対するＫＶデータのデータ構造変換処理が終了したことを通知する。問合せ処理手段１１は、上記通知を受け取ると、データ構造変換処理が完了した表に対する参照処理に関して、変換データ記憶手段１７のみからデータを検索するようになる。
【０１０７】
その後、データ構造変換手段１３は、データ構造変換処理の対象となった表の情報をＫＶデータ削除手段１４に対して通知する。ＫＶデータ削除手段１４は、上記通知を受け取ると、対象の表に関するデータ構造変換前のＫＶデータをＫＶデータ記憶手段１５と差分データ記憶手段１６とから削除する（Ｓ１１２）。
【０１０８】
そして、データ構造変換手段１３は、データ構造変換処理の対象となる全ての表に対してデータ構造変換処理を行ったか否かの判断を行う。データ構造変換処理の対象となる全ての表に対してデータ構造変換処理を行った場合、データ構造変換手段１３は、データ構造変換処理を終了する（Ｓ１１３、ｙｅｓ）。一方、データ構造変換処理の対象となる表がまだ残っている場合、データ構造変換手段１３は、その表に対するデータ構造の変換を開始する（Ｓ１１３、ｎｏ）。
【０１０９】
以上が、データ構造変換手段１３により行われるデータ構造変換処理の動作である。
【０１１０】
このように、本実施形態におけるＫＶＳ１は、統計情報収集手段１２と、データ構造変換手段１３と、を有している。このような構成により、ＫＶＳ１は、統計情報収集手段１２が収集した統計情報に基づいてＫＶデータのデータ構造を変換することが出来るようになる。その結果、ＫＶＳ１は、例えばユーザがアクセスするクエリ処理の傾向に合わせて格納しているＫＶデータの構造を変換して、アクセスするＫＶデータを最適化することが可能となる。また、クエリの処理性能を向上させることが可能となる。
【０１１１】
また、本実施形態におけるＫＶＳ１は、ＫＶデータ記憶手段１５と、差分データ記憶手段１６と、変換データ記憶手段１７と、を有している。このような構成により、ＫＶＳ１は、データ構造変換手段１３によるデータ構造変換処理の段階に応じて、検索する記憶手段と更新データの書き込み先の記憶手段とを変えることが出来るようになる。その結果、ＫＶＳ１は、クライアントからの問合せを止めることなくＫＶデータのデータ構造を変換することが可能になる。
【０１１２】
なお、図３で示すフラット構造のＫＶデータと図４で示すクラスタ構造のＫＶデータと図５で示すインデックスとを用いて、フラット構造の利点とクラスタ構造の利点について詳細に説明すると、以下のようになる。
【０１１３】
例えば、商品分類がパソコンのデータを検索する場合を考える。このような場合、図３で示すフラット構造のＫＶデータでは、まず、図５で示すインデックス（Ａ）に対してアクセスすることになる。そしてその後、図５のインデックス（Ａ）が示すキー値が「ｉ１」と「ｉ２」のＫＶデータにアクセスする。これにより、商品分類がパソコンのレコードデータを取得することが出来る。つまり、フラット構造の場合では、アクセスするＫＶデータの数は３つとなる。
【０１１４】
一方、同じクエリを図４で示すクラスタ構造のＫＶデータに対して実施する場合、キー値がパソコンのＫＶデータにアクセスすることになる。これにより、商品分類がパソコンのレコードデータを取得することが出来る。つまり、クラスタ構造の場合では、アクセスするＫＶデータの数は１つとなる。
【０１１５】
通常、ＫＶデータへのアクセスはネットワークを介して行われる。そのため、ＫＶデータへのアクセス回数が、実行されるクエリの応答性能に大きく影響することになる。また、上記例示したように、重複度の高いキー値での検索・更新処理を行う場合、複数のレコードデータがＫＶデータの一つに対応するクラスタ構造を用いると少ないアクセス回数で目的のデータを取得することが可能となる。従って、重複度の高いキー値での検索・更新処理を行う場合には、クラスタ構造の方が向いているということが出来る。
【０１１６】
また、例えば、商品名がＡのデータを検索する場合を考える。このような場合、図３で示すフラット構造のＫＶデータでは、まず、図５で示すインデックス（Ｂ）に対してアクセスすることになる。そしてその後、図５のインデックス（Ｂ）が示すキー値が「ｉ１」のＫＶデータにアクセスする。これにより、商品名が商品Ａのレコードデータを取得することが出来る。つまり、フラット構造の場合では、アクセスするＫＶデータの数は２つとなる。
【０１１７】
一方、同じクエリを図４で示すクラスタ構造のＫＶデータに対して実施する場合、まず、図５で示すインデックス（Ｃ）に対してアクセスすることになる。そしてその後、図５のインデックス（Ｃ）が示すキー値が「パソコン」のＫＶデータにアクセスする。これにより、商品名が商品Ａのレコードデータを取得することが出来る。つまり、フラット構造の場合では、アクセスするＫＶデータの数は２つとなる。
【０１１８】
この例においては、フラット構造の場合もクラスタ構造の場合も、ＫＶデータへのアクセス回数は２回で同じである。しかしながら、クラスタ構造の場合は１つのＫＶデータに複数のレコードデータが含まれるため、クエリの処理に不必要なデータにまでアクセスすることになる。例示した場合においては、商品分類がパソコンの商品は２つだけであるが、例えば、商品分類がパソコンである商品が１０００個ある場合、１つのＫＶデータには１０００個のレコードデータが含まれることになる。そのため、このような場合には、商品名が商品Ａのデータを検索する場合は、１件のデータを取得したいために、１０００件分のデータすべてを取得することになることになる。その結果、ネットワーク上を無駄なデータが流れることになり、クエリの応答性能が悪くなることになる。このように、主キー値やユニークな値など重複度が低いキー値での検索・更新処理には、不要なデータを取得することのないフラット構造が向いているということが出来る。
【０１１９】
このように、フラット構造とクラスタ構造にはそれぞれ利点がある。そのため、利用状況（統計情報など）に応じて、ＫＶＳ１のデータ構造をフラット構造とクラスタ構造との間で変換することで、より利用状況に適したデータ構造に変換することが可能となることになる。
【０１２０】
また、本実施形態においては、フラット構造とクラスタ構造との間でデータ構造変換処理を行うＫＶＳ１について説明した。しかしながら、ＫＶＳ１が行うデータ構造変換処理は、上記２つの構造の間で行う場合に限定されない。ＫＶＳ１は、上記例示したフラット構造とクラスタ構造との間以外でもデータ構造変換処理を行うよう構成することが出来る。
【０１２１】
上記以外のデータ構造としては、例えば、ネスト構造がある。ネスト構造は、複数の表のデータを組み合わせる構造である。つまり、ネスト構造では、１つのキー値に対応するバリュー値が複数のデーブルのレコードデータを有している。このような構造のＫＶデータでは、１つのトランザクション処理で複数のテーブルのレコードを同時に変更することが出来る。そのため、上記のような複数のテーブルのレコードを同時に変更することが想定される場合に、ネスト構造は利点を有している。一方、ネスト構造においては、片方のテーブルの１つのレコードにだけアクセスしたい場合でも、大きなデータを取得することが必要となることになる。ＫＶＳ１は、このようなネスト構造と他の構造との間でデータ構造変換処理を行うよう構成することが出来る。
【０１２２】
また、ＫＶＳ１は、２つのデータ構造の間でデータ構造変換処理を行うように構成しても構わないし、３つ以上の複数のデータ構造の間でデータ構造変換処理を行うように構成しても構わない。また、ＫＶＳ１は、上記例示した以外のデータ構造間でデータ構造変換処理を行うように構成しても構わない。
【０１２３】
[第２の実施形態]
次に本発明の第２の実施形態について図面を参照して詳細に説明する。第２の実施形態では、システムが稼働する情報処理装置の負荷を検出して、マシンリソースの負荷が低い時にデータ構造変換処理を行うことが可能なＫＶＳ２について説明する。なお、本実施形態におけるＫＶＳ２は、第１の実施形態で説明したＫＶＳ１と一部同様の構成を備えている。そのため、本実施形態においては、第１の実施形態と異なる部分について重点的に説明する。
【０１２４】
図１０を参照すると、本実施形態におけるＫＶＳ２は、問合せ処理手段１１と、統計情報収集手段１２と、データ構造変換手段１３と、ＫＶデータ削除手段１４と、ＫＶデータ記憶手段１５と、差分データ記憶手段１６と、変換データ記憶手段１７と、統計情報記憶手段１８と、システムカタログ１９と、リソース負荷監視手段２１と、を有している。なお、第１の実施形態において説明した構成と同様の構成については、同じ符号を付すこととする。本実施形態におけるＫＶＳ２は、リソース負荷監視手段２１を有している点が第１の実施形態におけるＫＶＳ１と異なっている。
【０１２５】
リソース負荷監視手段２１は、データ構造変換手段１３が稼働している情報処理装置のリソース（ＣＰＵ使用率やディスクＩＯ量（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）など）を定期的に監視する機能を有している。リソース負荷監視手段２１は、データ構造変換手段１３が稼働している情報処理装置のリソース使用量が少ない場合に、データ構造変換手段１３に対してデータ構造変換処理を開始するよう指示する。本実施形態におけるデータ構造変換手段１３は、リソース負荷監視手段２１からの指示を受けて、データ構造変換処理を開始するか否かの判断を行って、データ構造変換処理を開始することになる。つまり、本実施形態におけるデータ構造変換手段１３は、リソース負荷監視手段２１からの指示を受けると、システムカタログ情報と統計情報とを参照した後、構造変換対象の表があるかの判断をして、データ構造変換処理を開始する。
【０１２６】
変換するデータの量が多い場合、データ構造変換処理は高負荷な処理となる可能性がある。データ構造変換処理中もクライアントからのクエリ処理は実行可能であるが、データ構造変換処理に多くのマシンリソースが割かれている場合、クライアントからのクエリ処理の性能が劣化することが考えられる。そこで、本実施形態のようにマシンリソースの負荷が低いときにデータ構造変換処理を行うことで、データ構造変換手段１３が稼動する情報処理装置の資源を有効に利用することが可能となる。また、本実施形態のように構成することで、クライアントが実行するクエリ処理の性能劣化を抑えることが出来る。
【０１２７】
このように、本実施形態におけるＫＶＳ２は、リソース負荷監視手段２１を有している。このような構成により、ＫＶＳ２は、リソース負荷監視手段２１が監視するマシンリソースの負荷が低い時にデータ構造変換処理を行うことが出来るようになる。その結果、ＫＶＳ２は、情報処理装置の資源を有効に利用することが可能となる。また、ＫＶＳ２は、クライアントが実行するクエリ処理の性能劣化を抑えつつデータ構造変換処理を行うことが出来るようになる。
【０１２８】
[第３の実施形態]
次に本発明の第３の実施形態について図面を参照して詳細に説明する。第３の実施形態では、統計情報記憶手段１８が記憶する統計情報を定期的に削除することが可能なよう構成されたＫＶＳ３について説明する。なお、本実施形態におけるＫＶＳ３は、上述したＫＶＳ１、ＫＶＳ２と一部同様の構成を備えている。そのため、本実施形態においては、ＫＶＳ１、ＫＶＳ２と異なる部分について重点的に説明する。
【０１２９】
図１１を参照すると、本実施形態におけるＫＶＳ３は、問合せ処理手段１１と、統計情報収集手段１２と、データ構造変換手段１３と、ＫＶデータ削除手段１４と、ＫＶデータ記憶手段１５と、差分データ記憶手段１６と、変換データ記憶手段１７と、統計情報記憶手段１８と、システムカタログ１９と、統計情報管理手段３１と、を有している。本実施形態におけるＫＶＳ３は、統計情報管理手段３１を有している点がＫＶＳ１、ＫＶＳ２と異なっている。
【０１３０】
統計情報管理手段３１は、統計情報記憶手段１８が記憶する統計情報を定期的に削除する機能を有している。具体的には、統計情報管理手段３１は、予め定められた一定時間よりも過去の統計情報を削除するよう構成されている。統計情報管理手段３１は、例えば、図示しない時計部を参照して、統計情報が記憶するアクセス時間から一定時間経過したか否かの判断を行う。そして、統計情報管理手段３１は、統計情報が記憶するアクセス時間から一定時間経過したと判断した場合、当該一定時間経過した統計情報を統計情報記憶手段１８から削除する。これにより、統計情報記憶手段１８には、予め定められた一定時間よりも過去の統計情報は削除されることになる。なお、上記予め定められた一定時間は、ユーザが予め統計情報管理手段３１に設定しておけばよい。また、上記予め定められた一定時間は、システム運用中（ＫＶＳ３の稼動中）に変更することが出来るよう構成されても構わない。
【０１３１】
このように、本実施形態におけるＫＶＳ３は、統計情報管理手段３１を有している。このような構成により、ＫＶＳ３は、定期的に統計情報記憶手段１８が記憶する古い統計情報を削除することが出来る。一般的に、ＫＶデータのデータ構成を変更するか否かの判断をする場合、過去の統計情報を基に判断するよりも、現在（データ構造変換処理を行おうとするとき）の時間に近い統計情報を基に判断した方が、精度が高くなる可能性があると考えられる。そのため、このように古い統計情報を定期的に削除することで、データ構造を変換するか否かの判断をより正確に行うことが可能となる。
【０１３２】
なお、ＫＶＳ３の構成は上述した場合に限定されない。ＫＶＳ３は、例えば、リソース負荷監視手段２１を備えていても構わない。
【０１３３】
[第４の実施形態]
次に本発明の第４の実施形態について図面を参照して詳細に説明する。第４の実施形態では、アクセスパターンなどに基づいて構造変換計画を作成し、当該作成した構造変換計画に基づいてデータ構造変換処理を実行するＫＶＳ４について説明する。データベースシステムに対する問合せの傾向は、日付や時間帯によってある程度パターンが決まっている場合がある（例えば、週末には特定のキー値でのアクセスが集中するなど）。そこで、予め特定のパターンに従った構造変換計画を作成し、当該計画に基づいてデータ構造変換処理を行うことで、より効果的な構造変換を実施することが可能となる。なお、本実施形態におけるＫＶＳ４は、上述したＫＶＳ１、ＫＶＳ２、ＫＶＳ３と一部同様の構成を備えている。そのため、本実施形態においては、ＫＶＳ１、ＫＶＳ２、ＫＶＳ３と異なる部分について重点的に説明する。
【０１３４】
図１２を参照すると、本実施形態におけるＫＶＳ４は、問合せ処理手段１１と、統計情報収集手段１２と、データ構造変換手段１３と、ＫＶデータ削除手段１４と、ＫＶデータ記憶手段１５と、差分データ記憶手段１６と、変換データ記憶手段１７と、統計情報記憶手段１８と、システムカタログ１９（変換履歴情報記憶手段）と、構造変換計画作成手段４１（データ構造変換計画作成手段）と、を有している。本実施形態におけるＫＶＳ４は、構造変換計画作成手段４１を有している点がＫＶＳ１、ＫＶＳ２、ＫＶＳ３と異なっている。また、本実施形態におけるシステムカタログ１９は、システム運用時からの変換履歴を記憶するよう構成されている。
【０１３５】
上記のように、本実施形態におけるシステムカタログ１９は、システムカタログ情報として、システム運用時からの変換履歴を記憶している。具体的には、システムカタログ１９は、例えば、以下のようなシステムカタログ情報を記憶しているとする（図１３参照）。なお、下記で示すシステムカタログ情報は、システムカタログ１９が記憶するシステムカタログ情報の一例である。
（テーブル、ＫＶ構造、ＫＶ構造変換時間）
（テーブルＡ、フラット、２０１３／１１／２８  １０：００）
（テーブルＢ、クラスタ、２０１３／１１／２８  １０：００）
（テーブルＣ、クラスタ、２０１３／１１／２８  １０：００）
（テーブルＡ、クラスタ、２０１３／１１／２８  １２：００）
（テーブルＣ、フラット、２０１３／１１／２８  １２：００）
【０１３６】
例えば、図１３の例では、テーブルＡのデータ構造が２０１３／１１／２８  １０：００から２０１３／１１／２８／  １２：００まではフラット構造であり、２０１３／１１／２８  １２：００からはクラスタ構造であることが分かる。このように、本実施形態におけるシステムカタログ情報は、データ構造の変換履歴を参照可能なよう構成されている。
【０１３７】
構造変換計画作成手段４１は、構造変換を作成する計画である構造変換計画を作成する機能を有している。構造変換計画作成手段４１は、統計情報記憶手段１８から統計情報を取得する。また、構造変換計画作成手段４１は、システムカタログ１９からシステムカタログ情報を取得する。そして、構造変換計画作成手段４１は、取得した統計情報とシステムカタログ情報とに基づいて、構造変換計画を作成する。
【０１３８】
計画を作成するパターンとしては、例えば、時間帯、曜日、日付、月などが考えられる。構造変換計画作成手段４１は、統計情報とシステムカタログ情報とから、時間帯、曜日、日付、月ごとのアクセスパターンを解析する。そして、構造変換計画作成手段４１は、当該解析したアクセスパターンに基づいて構造変換計画を作成する。構造変換計画としては、例えば、「テーブルＡは土曜日の１２：００から日曜日の１２：００までは商品分類列をクラスタキーとするクラスタ構造に変換する」や「テーブルＢは月末日の１５：００から翌月初日の１５：００までフラット構造に変換する」といったものが考えられる。このように、構造変換計画には、変換する日時と、変換するデータ構造、クラスタ構造に変換する場合のクラスタキー、などが定められている。
【０１３９】
また、構造変換計画作成手段４１は、図示しない構造変換計画記憶手段を備えている。構造変換計画作成手段４１が作成した構造計画は、構造変換計画記憶手段に記憶されることになる。また、構造変換計画作成手段４１は、構造変換計画記憶手段に記憶されている構造変換計画に従って、データ構造変換手段１３に対してデータ構造変換処理を開始するよう指示する。データ構造変換手段１３は、構造変換計画作成手段４１からの指示に従ってデータ構造変換処理を開始することになる。これにより、計画に従ったより効果的な構造変換を行うことが可能となる。
【０１４０】
ここで、構造変換計画を作成する際の構造変換計画作成手段４１の動作（構造計画更新処理の動作）について説明する。
【０１４１】
図１４を参照すると、構造変換計画作成手段４１は、システムカタログ１９からシステムカタログ情報を取得する（Ｓ２０１）。また、構造変換計画作成手段４１は、統計情報記憶手段１８から統計情報を取得する（Ｓ２０２）。
【０１４２】
次に、構造変換計画作成手段４１は、取得したシステムカタログ情報と、統計情報と、に基づいて、構造変換計画を作成する（Ｓ２０３）。構造変換計画作成手段４１は、例えば、統計情報とシステムカタログ情報とから、時間帯、曜日、日付、月ごとのアクセスパターンを解析する。そして、構造変換計画作成手段４１は、当該解析したアクセスパターンに基づいて構造変換計画を作成する。
【０１４３】
続いて、構造変換計画作成手段４１は、作成した構造変換計画と構造変換計画記憶手段が記憶する過去の構造変換計画との比較を行う。そして、構造変換計画を更新する表がある場合（Ｓ２０４、ｙｅｓ）、構造変換計画作成手段４１は、構造変換計画記憶手段が記憶する構造変換計画を作成した構造変換計画に更新する（Ｓ２０５）。または、構造変換計画を初めて作成した場合、構造変換計画手段４１は、生成した構造変換計画を構造変換計画記憶手段に記憶する。一方、構造変換計画を更新する表がない場合、構造変換計画作成手段４１は、作成した構造変換計画を例えば廃棄する。このような動作により、構造変換計画記憶手段が記憶する構造変換計画が最新のものになる。
【０１４４】
そして、構造変換計画作成手段４１は、構造変換計画記憶手段が記憶する構造変換計画に従って、データ構造変換手段１３に対して、データ構造変換手段１３に対してデータ構造変換処理を開始するよう指示する。データ構造変換手段１３は、構造変換計画作成手段４１からの指示に従ってデータ構造変換処理を開始することになる。
【０１４５】
なお、構造変換計画作成手段４１による構造変換計画更新処理は定期的に動作するように構成されていれば構わない。そのため、構造変換計画作成手段４１による構造変換計画更新処理がどのようなタイミングで行われるかについては特には限定しない。
【０１４６】
このように、本実施形態におけるＫＶＳ４は、構造変換計画作成手段４１を有している。このような構成により、ＫＶＳ４は、構造変換計画作成手段４１が作成する構造変換計画に従ってデータ構造変換処理を行うことが出来るようになる。一般に、データベースシステムに対する問合せの傾向は、日付や時間帯によってある程度パターンが決まっている場合がある。そのため、上記パターンに応じた構造変換計画を作成しておき、当該構造変換計画に従ってデータ構造変換処理を行うことで、より効果的なデータ構造の変換を行うことが出来るようになる。
【０１４７】
[第５の実施形態]
次に本発明の第５の実施形態について図面を参照して説明する。本実施形態では、キーバリューデータのデータ構造を変換することが可能なように構成された情報記憶システムについて説明する。なお、本実施形態においては、情報記憶システムの構成の概略について説明する。
【０１４８】
図１５を参照すると、情報記憶システム５は、データ記憶手段５１と、データ構造変換手段５２と、を有している。
【０１４９】
データ記憶手段５１は、ハードディスクやメモリなどの記憶装置である。データ記憶手段５１は、予め定められた複数の種類のデータ構造の何れかを用いて、記憶する対象となるレコードデータからなるバリュー値とバリュー値を識別する情報であるキー値とを対応付けたキーバリューデータを記憶している。
【０１５０】
データ構造変換手段５２は、データ記憶手段５１が記憶するキーバリューデータのデータ構造を、予め定められた複数の種類間で変換する機能を有している。データ構造変換手段５２は、データ記憶手段５１が記憶するキーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行うことになる。
【０１５１】
このように、本実施形態における情報記憶システム５は、データ記憶手段５１と、データ構造変換手段５２と、を有している。また、データ構造変換手段５２は、データ記憶手段５１が記憶するキーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行うよう構成されている。このような構成により、情報記憶システム５は、例えばキーバリューデータの利用状況が変化した場合に、当該キーバリューデータの利用状況の変化に応じて、キーバリューデータのデータ構造の変換を行うことが出来る。その結果、情報記憶システム５は、利用状況が変化した場合などにおいても性能を維持することが可能となる。
【０１５２】
また、上述した情報記憶システム５は、情報処理装置に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、情報処理装置に、予め定められた複数の種類のデータ構造の何れかを用いて、記憶する対象となるレコードデータからなるバリュー値とバリュー値を識別する情報であるキー値とを対応付けたキーバリューデータを記憶するデータ記憶手段と、データ記憶手段が記憶するキーバリューデータのデータ構造を、予め定められた複数の種類間で変換するデータ構造変換手段と、を実現させ、データ構造変換手段は、データ記憶手段が記憶するキーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行う、プログラムである。
【０１５３】
また、上述した情報記憶システム５が作動することにより実行される情報記憶方法は、データ記憶手段が記憶するキーバリューデータの利用状況を取得し、当該取得した利用状況に基づいて、前記データ記憶手段が記憶するキーバリューデータのデータ構造を、予め定められた複数の種類間で変換する、というものである。
【０１５４】
上述した構成を有する、プログラム、又は、情報記憶方法、の発明であっても、上記情報記憶システムと同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【０１５５】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報記憶システムなどの概略を説明する。但し、本発明は、以下の構成に限定されない。
【０１５６】
（付記１）
複数の要素からなるレコードデータの当該要素のうちの１つをキー値として、当該キー値と、１つ又は複数のレコードデータからなるバリュー値と、を対応付けたキーバリューデータを記憶するデータ記憶手段と、
前記データ記憶手段が記憶する前記キーバリューデータのデータ構造を、前記キー値を変更して別のデータ構造に変換するデータ構造変換手段と、を備え、
前記データ構造変換手段は、前記データ記憶手段が記憶する前記キーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行う、
情報記憶システム。
【０１５７】
この構成によると、情報記憶システムは、データ記憶手段と、データ構造変換手段と、を有している。また、データ構造変換手段は、データ記憶手段が記憶するキーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行うよう構成されている。このような構成により、情報記憶システムは、例えばキーバリューデータの利用状況が変化した場合に、当該キーバリューデータの利用状況の変化に応じて、キーバリューデータのデータ構造の変換を行うことが出来る。その結果、情報記憶システムは、利用状況が変化した場合などにおいても性能を維持することが可能となる。
【０１５８】
（付記２）
付記１に記載の情報記憶システムであって、
前記データ記憶手段が記憶する前記キーバリューデータを検索して所定の処理を行う検索処理手段と、
前記検索処理手段による検索結果に基づく統計情報を収集して記憶する統計情報収集手段と、を備え、
前記データ構造変換手段は、前記統計情報が示す前記利用状況に応じて前記キーバリューデータのデータ構造を変換する、
情報記憶システム。
【０１５９】
この構成によると、情報記憶システムは、検索処理手段と、統計情報収集手段と、を備えている。また、データ構造変換手段は、統計情報収集手段が収集した統計情報に基づいてキーバリューデータのデータ構造を変換するよう構成されている。このような構成により、情報記憶システムは、検索結果に応じて変化する統計情報に基づいてデータ構造を変換することが出来るようになる。その結果、情報記憶システムは、より安定的に性能を維持することが可能となる。
【０１６０】
（付記３）
付記２に記載の情報記憶システムであって、
前記統計情報収集手段は、前記統計情報として、前記検索処理手段が検索した前記キーバリューデータの数と、前記キーバリューデータのうち前記所定の処理の対象となる前記レコードデータの数と、前記所定の処理の対象とならない前記レコードデータの数と、を収集するよう構成され、
前記データ構造変換手段は、前記統計情報収集手段が収集した、前記キーバリューデータの数と、前記キーバリューデータのうち前記所定の処理の対象となる前記レコードデータの数と、前記所定の処理の対象とならない前記レコードデータの数と、が示す前記利用状況に応じて前記キーバリューデータのデータ構造を変換する、
情報記憶システム。
【０１６１】
（付記４）
付記２又は３に記載の情報記憶システムであって、
前記検索処理手段は、前記所定の処理として、検索した前記キーバリューデータに含まれる前記レコードデータの更新を行うよう構成され、当該レコードデータの更新が前記データ構造変換手段による前記データ構造の変換中に行われる場合は、当該更新した前記レコードデータを含む前記キーバリューデータを変換対象のキーバリューデータとは別の場所に記憶し、
前記データ構造変換手段は、前記データ記憶手段が記憶する前記キーバリューデータのデータ構造の変換の終了後、前記別の場所に記憶した前記キーバリューデータのデータ構造を変換する、
情報記憶システム。
【０１６２】
この構成によると、情報記憶システムの検索処理手段は、検索したキーバリューデータに含まれるレコードデータの更新を行うよう構成され、当該レコードデータの更新がデータ構造変換手段によるデータ構造の変換中に行われる場合は、当該更新したレコードデータを含むキーバリューデータを変換対象のキーバリューデータとは別の場所に記憶する。また、データ構造変換手段は、データ記憶手段が記憶するキーバリューデータのデータ構造の変化の終了後、別の場所に記憶したキーバリューデータのデータ構造を変換する。このような構成により、情報記憶システムは、データ構造の変換中にレコードデータの更新があった場合でも、データ構造の変換に影響を与えることなくレコードデータの更新が出来るようになる。また、データ構造の変換中に更新されたレコードデータをデータ構造の変換に反映させることが出来るようになる。その結果、情報記憶システムは、クライアントからの問合せを止めることなくデータ構造を変換することが出来るようになる。
【０１６３】
（付記５）
付記２乃至４の何れかに記載の情報記憶システムであって、
前記統計情報収集手段は、予め定められた時間よりも過去の前記統計情報を削除するよう構成された、
情報記憶システム。
【０１６４】
この構成によると、統計情報収集手段は、予め定められた一定時間よりも過去の統計情報を削除するよう構成されている。このような構成により、古い統計情報が削除されることになる。一般に、新しい統計情報を基にデータ構成を変更するか否かの判断を行った方が、より正確な判断を行うことが可能である。そのため、このように構成することで、データ構造を変換するか否かの判断をより正確に行うことが可能となる。
【０１６５】
（付記６）
付記２乃至５の何れかに記載の情報記憶システムであって、
前記データ構造変換手段によるデータ構造の変換履歴を示す変換履歴情報を記憶する変換履歴情報記憶手段と、
前記統計情報収集手段から取得した前記統計情報と前記変換履歴情報記憶手段から取得した前記変換履歴情報とに基づいて、前記キーバリューデータのデータ構造を変換する日時を計画するデータ構造変換計画作成手段と、を備え、
前記データ構造変換手段は、前記データ構造変換計画作成手段の計画に基づいて前記データ構造の変換を行う、
情報記憶システム。
【０１６６】
この構成によると、情報記憶システムは、データ構造変換計画作成手段を備えている。また、データ構造変換手段は、データ構造変換計画作成手段の計画に基づいてデータ構造の変換を行う。このような構成により、問合せの傾向などの一定のパターンに応じたデータ構造の変換を行うことが可能となる。その結果、より効果的なデータ構造の変換を行うことが出来るようになる。
【０１６７】
（付記７）
付記１乃至６の何れかに記載の情報記憶システムであって、
前記データ構造変換手段を有する情報処理装置のリソースを監視するリソース負荷監視手段を備え、
前記リソース負荷監視手段は、前記監視するリソースに基づいて前記データ構造変換手段に対して前記データ構造の変換を行うよう指示し、
前記データ構造変換手段は、前記リソース負荷監視手段からの指示に基づいて前記データ構造の変換を行う、
情報記憶システム。
【０１６８】
この構成によると、情報記憶システムがリソース負荷監視手段を備えている。また、データ構造変換手段は、リソース負荷監視手段からの指示に基づいてデータ構造の変換を行う。このような構成により、情報記憶システムは、情報処理装置の負荷が少ないときにデータ構造の変換を行うことが出来るようになる。その結果、ユーザが実行するクエリ処理の性能劣化を抑えつつデータ構造変換処理を行うことが可能となる。
【０１６９】
（付記８）
付記１乃至７の何れかに記載の情報記憶システムであって、
前記データ記憶手段は、前記複数の要素のうち各レコードデータに固有の識別情報となる前記要素をキー値とする第１のデータ構造と、複数のレコードデータに含まれる前記要素をキー値とする第２のデータ構造と、の何れかのデータ構造を用いて前記キーバリューデータを記憶するよう構成され、
前記データ構造変換手段は、前記データ記憶手段が記憶する前記キーバリューデータのデータ構造を前記第１のデータ構造と前記第２のデータ構造との間で変換する、
情報記憶システム。
【０１７０】
（付記８−１）
付記８に記載の情報記憶システムであって、
前記データ記憶手段が記憶する前記キーバリューデータを検索して所定の処理を行う検索処理手段と、
前記検索処理手段による検索結果に基づく統計情報を収集して記憶する統計情報収集手段と、を備え、
前記統計情報収集手段は、前記統計情報として、前記検索処理手段が検索した前記キーバリューデータの数を取得し、
前記データ構造変換手段は、前記統計情報収集手段が収集した前記キーバリューデータの数に基づいて、前記第１のデータ構造から前記第２のデータ構造へと前記キーバリューデータのデータ構造を変換する、
情報記憶システム。
【０１７１】
（付記８−２）
付記８−１に記載の情報記憶システムであって、
前記データ構造変換手段は、前記統計情報収集手段が収集した前記キーバリューデータの数と予め定められた第１データ変換閾値とを比較して、前記キーバリューデータの数が前記第１データ変換閾値以上である場合に、前記第１のデータ構造から前記第２のデータ構造へとデータ構造を変換する、
情報記憶システム。
【０１７２】
（付記８−３）
付記８乃至８−３の何れかに記載の情報記憶システムであって、
前記データ記憶手段が記憶する前記キーバリューデータを検索して所定の処理を行う検索処理手段と、
前記検索処理手段による検索結果に基づく統計情報を収集して記憶する統計情報収集手段と、を備え、
前記統計情報収集手段は、前記統計情報として、前記検索処理手段が検索した前記キーバリューデータのうち前記所定の処理の対象となる前記レコードデータの数と前記所定の処理の対象とならない前記レコードデータの数とを取得し、
前記データ構造変換手段は、前記統計情報収集手段が収集した前記所定の処理の対象となる前記レコードデータの数と前記所定の処理の対象とならない前記レコードデータの数とに基づいて、前記第２のデータ構造から前記第１のデータ構造へとデータ構造を変換する、
情報記憶システム。
【０１７３】
（付記８−４）
付記８−３に記載の情報記憶システムであって、
前記データ構造変換手段は、前記所定の処理の対象となる前記レコードデータの数と前記所定の処理の対象とならない前記レコードデータの数との比率と、予め定められた第２データ変換閾値と、を比較して、前記比率が前記第２データ変換閾値以上である場合に、前記第２のデータ構造から前記第１のデータ構造へと前記データ構造を変換する、
情報記憶システム。
【０１７４】
（付記９）
データ記憶手段が記憶するキーバリューデータの利用状況を取得し、
当該取得した利用状況に基づいて、前記データ記憶手段が記憶するキーバリューデータのデータ構造を前記キーバリューデータのキー値を変更して別のデータ構造に変換する、
情報記憶方法。
【０１７５】
（付記１０）
情報処理装置に、
複数の要素からなるレコードデータの当該要素のうちの１つをキー値として、当該キー値と、１つ又は複数のレコードデータからなるバリュー値と、を対応付けたキーバリューデータを記憶するデータ記憶手段と、
前記データ記憶手段が記憶する前記キーバリューデータのデータ構造を、前記キー値を変更して別のデータ構造に変換するデータ構造変換手段と、を実現させ、
前記データ構造変換手段は、前記データ記憶手段が記憶する前記キーバリューデータの利用状況に応じて当該キーバリューデータのデータ構造の変換を行う、
プログラム。
【０１７６】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１７７】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【０１７８】
１、２、３、４  ＫＶＳ
１１  問合せ処理手段
１２  統計情報収集手段
１３  データ構造変換手段
１４  ＫＶデータ削除手段
１５  ＫＶデータ記憶手段
１６  差分データ記憶手段
１７  変換データ記憶手段
１８  統計情報記憶手段
１９  システムカタログ
２１  リソース負荷監視手段
３１  統計情報管理手段
４１  構造変換計画作成手段
５  情報記憶システム
５１  データ記憶手段
５２  データ構造変換手段
【図１】
2015184685.tif 000003
【図２】
2015184685.tif 000004
【図３】
2015184685.tif 000005
【図４】
2015184685.tif 000006
【図５】
2015184685.tif 000007
【図６】
2015184685.tif 000008
【図７】
2015184685.tif 000009
【図８】
2015184685.tif 000010
【図９】
2015184685.tif 000011
【図１０】
2015184685.tif 000012
【図１１】
2015184685.tif 000013
【図１２】
2015184685.tif 000014
【図１３】
2015184685.tif 000015
【図１４】
2015184685.tif 000016
【図１５】
2015184685.tif 000017