(57)【要約】  同一のデータを異なる複数のデータ構造で保持する分散ストレージシステムにおいて、各データ構造に適したアクセスの頻度および量の変化に従って、データの更新をデータ格納部に反映させるタイミングを適切に調整する。分散ストレージシステムは、第１のデータ構造でデータを保持する第１のデータ格納部と、第２のデータ構造でデータを保持する第２のデータ格納部と、データの更新内容を表す更新情報を保持するとともに、所定の更新条件が満たされた場合、更新情報を第２のデータ格納部に適用して、更新内容を第２のデータ格納部に反映させる更新情報保持部と、更新情報保持部が保持する更新情報を監視し、第２のデータ格納部への更新情報の適用状態を更新状況として抽出する更新状況監視部と、更新状況に応じて決定された変更命令に基づいて、所定の更新条件を変更する更新条件変更部と、を備える。（図１）
2013141308.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータ構造でデータを保持する第１のデータ格納部と、
前記第１のデータ構造とは異なる第２のデータ構造で、前記データを保持する第２のデータ格納部と、
前記データの更新内容を表す更新情報を保持するとともに、所定の更新条件が満たされた場合、前記更新情報を前記第２のデータ格納部に適用して、前記更新内容を前記第２のデータ格納部に反映させる更新情報保持部と、
前記更新情報保持部が保持する前記更新情報を監視し、前記第２のデータ格納部への前記更新情報の適用状態を更新状況として抽出する更新状況監視部と、
前記更新状況に応じて決定された、前記所定の更新条件の変更命令に基づいて、前記所定の更新条件を変更する更新条件変更部と、を備える分散ストレージシステム。
【請求項２】
前記更新状況監視部によって抽出された前記更新状況を表示する更新状況表示部と、
前記変更命令を受け付ける更新条件入力部と、を備える、請求項１に記載の分散ストレージシステム。
【請求項３】
前記更新状況に応じて、前記変更命令を生成する更新情報制御部を備える、請求項１に記載の分散ストレージシステム。
【請求項４】
前記更新情報制御部は、前記更新状況に基づいて、前記更新情報保持部が将来保持する更新情報の個数を予測し、前記個数に応じて前記変更命令を生成する、請求項３に記載の分散ストレージシステム。
【請求項５】
前記更新情報制御部は、前記更新情報が前記第２のデータ格納部に適用される頻度を変更する命令を、前記変更命令として生成する、請求項４に記載の分散ストレージシステム。
【請求項６】
前記更新情報制御部は、前記個数が所定の上限値よりも多い場合、前記更新情報が前記第２のデータ格納部に適用される頻度が高くなるように前記変更命令を生成し、前記個数が所定の下限値よりも少ない場合、前記頻度が低くなるように前記変更命令を生成する、請求項５に記載の分散ストレージシステム。
【請求項７】
前記第１のデータ格納部は、前記データを行指向で保持する行指向データベースであり、
前記第２のデータ格納部は、前記データを列指向で保持する列指向データベースである、請求項１ないし６いずれか１項に記載の分散ストレージシステム。
【請求項８】
前記更新情報保持部は、レコードに対する更新ログを前記更新情報として保持し、
前記更新状況監視部は、前記更新情報保持部に存在する更新ログの個数を、前記更新状況として抽出する、請求項１ないし７のいずれか１項に記載の分散ストレージシステム。
【請求項９】
前記第２のデータ格納部は、オブジェクト、タプル、ブロック等の所定の単位で前記データを管理し、
前記更新情報保持部が保持する更新情報の個数は、前記所定の単位による更新アクセスまたは削除アクセスに応じて増加し、前記所定の単位による参照アクセスによっては変動しない、請求項１ないし８のいずれか１項に記載の分散ストレージシステム。
【請求項１０】
第１のデータ構造でデータを保持する第１のデータ格納部と、前記第１のデータ構造とは異なる第２のデータ構造で前記データを保持する第２のデータ格納部と、前記データの更新内容を表す更新情報を保持する更新情報保持部と、を備えた分散ストレージシステムを制御するストレージ制御方法であって、
所定の更新条件が満たされた場合、前記更新情報を前記第２のデータ格納部に適用して、前記更新内容を前記第２のデータ格納部に反映させる工程と、
前記更新情報保持部が保持する前記更新情報を監視し、前記第２のデータ格納部への前記更新情報の適用状態を更新状況として抽出する工程と、
前記更新状況に応じて決定された、前記所定の更新条件の変更命令に基づいて、前記所定の更新条件を変更する工程と、を含むストレージ制御方法。
【請求項１１】
抽出された前記更新状況を表示する工程と、
前記変更命令を受け付ける工程と、を含む、請求項１０に記載のストレージ制御方法。
【請求項１２】
前記更新状況に応じて、前記変更命令を生成する工程を含む、請求項１０に記載のストレージ制御方法。
【請求項１３】
前記更新状況に基づいて、前記更新情報保持部が将来保持する更新情報の個数を予測し、前記個数に応じて前記変更命令を生成する、請求項１２に記載のストレージ制御方法。
【請求項１４】
前記更新情報が前記第２のデータ格納部に適用される頻度を変更する命令を、前記変更命令として生成する、請求項１３に記載のストレージ制御方法。
【請求項１５】
前記個数が所定の上限値よりも多い場合、前記更新情報が前記第２のデータ格納部に適用される頻度が高くなるように前記変更命令を生成し、前記個数が所定の下限値よりも少ない場合、前記頻度が低くなるように前記変更命令を生成する、請求項１４に記載のストレージ制御方法。
【請求項１６】
前記第１のデータ格納部は、前記データを行指向で保持する行指向データベースであり、
前記第２のデータ格納部は、前記データを列指向で保持する列指向データベースである、請求項１０ないし１５のいずれか１項に記載のストレージ制御方法。
【請求項１７】
前記更新情報保持部は、レコードに対する更新ログを前記更新情報として保持し、
前記更新情報保持部に存在する更新ログの個数を、前記更新状況として抽出する、請求項１０ないし１６のいずれか１項に記載のストレージ制御方法。
【請求項１８】
前記第２のデータ格納部は、オブジェクト、タプル、ブロック等の所定の単位で前記データを管理し、
前記更新情報保持部が保持する更新情報の個数は、前記所定の単位による更新アクセスまたは削除アクセスに応じて増加し、前記所定の単位による参照アクセスによっては変動しない、請求項１０ないし１７のいずれか１項に記載のストレージ制御方法。
【請求項１９】
第１のデータ構造でデータを保持する第１のデータ格納部と、前記第１のデータ構造とは異なる第２のデータ構造で前記データを保持する第２のデータ格納部と、前記データの更新内容を表す更新情報を保持する更新情報保持部と、を備えた分散ストレージシステムを制御するコンピュータに対して、
所定の更新条件が満たされた場合、前記更新情報を前記第２のデータ格納部に適用して、前記更新内容を前記第２のデータ格納部に反映させる処理と、
前記更新情報保持部が保持する前記更新情報を監視し、前記第２のデータ格納部への前記更新情報の適用状態を更新状況として抽出する処理と、
前記更新状況に応じて決定された、前記所定の更新条件の変更命令に基づいて、前記所定の更新条件を変更する処置と、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１２−０６５１９０号（２０１２年３月２２日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、分散ストレージシステム、ストレージ制御方法およびプログラムに関し、特に、異なるデータ構造で複製を保持する分散ストレージシステム、その動的性能パラメータの監視、調整等の制御を行うストレージ制御方法およびプログラムに関する。
【背景技術】
【０００２】
ネットワークを介して多数の計算機を接続し、各計算機のＨＤＤ（Hard Disk Drive）やメモリを用いてデータを格納・利用する分散ストレージ技術が知られている。分散ストレージ技術では、いずれの計算機にデータを配置し、いずれの計算機でデータを処理するかを、ソフトウェアまたは特別なハードウェアによって決定する。また、システムの状態に応じて動的に動作を変更することで、システム内のリソース使用量を調整し、クライアント計算機に提供する性能の向上を図る。【０００３】
格納されるデータは、意味的な単位でアクセスされる。例えば、関係データベースでは、データはレコード（record）またはタプル（tuple）と呼ばれる単位で書き込まれる。また、ファイルシステムでは、データはブロックの集合として書き込まれる。さらに、キーバリューストア（Key-Value Store）では、データはオブジェクトとして書き込まれる。こうして書き込まれたデータは、その単位ごとにクライアント計算機によって読み込まれる。【０００４】
また、データを保持するＨＤＤ、メモリ等のデバイスにおいては、データを格納する空間に対して、アドレスと呼ばれる一意の番号が割り振られている。アドレスが隣接する領域へのアクセスは、一般に、高速に処理される。したがって、レコードやブロックが使用時になるべく連続アドレスでアクセスされるよう、アドレス空間にデータを配置する必要がある。【０００５】
したがって、格納データのデータ構造が重要となる。ここで、データ構造とは、データの集まりをアドレス空間に配置するときの形式のことをいう。【０００６】
例えば、オンライントランザクション処理で用いられる行指向の関係データベースでは、レコードを複数まとめたページと呼ばれる単位で、メモリ上のバッファまたはディスク上に書き込まれる。ページは、ディスクやメモリが高速にアクセスできる単位の固定長データである。オンライントランザクション処理では、レコード単位で更新、挿入、書き込みが行われるからである。【０００７】
一方、データウェアハウス（Data Warehouse）等のデータ解析処理で用いられる列指向の関係データベースでは、各レコードをカラムまたは属性と呼ばれる単位に分解し、各レコードの同一の属性を連続してアドレス空間に配置する。データ解析処理では、属性単位ごとの利用が多いからである。また、列指向データベースでは、ある属性について同一の値をもつレコードが多く存在する場合、これらを圧縮して１つのデータにまとめることができ、データの格納効率が良い。【０００８】
一例として、非特許文献１には、行指向データベースと列指向データベースそれぞれのデータ構造が記載されている。【０００９】
ところで、上述の分散ストレージ技術では、同一のデータの複製データを、複数の計算機に格納することがある。これは、ある計算機が故障し、そのデータ格納デバイスがアクセス不能となった場合においても、クライアント計算機に対して格納データを提供するためである。特に、格納デバイスがＤＲＡＭ（Dynamic Random Access Memory）等の揮発性メモリである場合、ＨＤＤ等の磁気デバイスやＳＳＤ（Solid State Drive）等の不揮発性メモリと比較して、電源故障、ソフトウェア障害等により当該計算機のデータが失われる確率が高いため、３つ以上の複製データを異なる計算機に格納することもある。【００１０】
また、複数の複製データを、それぞれ異なるデータ構造で格納し、異なる種類のアクセスに対して、各アクセスに適した複製をアクセス先として提供する技術が知られている。【００１１】
特許文献１に記載された分散ストレージ方法では、データ更新時に行われるデータの複製において、複製先のデータノードでは、更新対象のデータを、それぞれ、指定された目的のデータ構造に変換してデータ格納部に格納し、その際、データノードは、更新対象のデータを一旦、中間構造を保持して更新に対する応答を返し、更新要求とは非同期で、目的のデータ構造に変換して格納する。【００１２】
一方、特許文献２に記載された分散ストレージは、それぞれがデータ格納部を備え、ネットワーク結合される複数のデータノードを備え、データ更新時に行われるデータの複製において、複製先のデータノードでは、更新対象のデータを、一旦、書き込みデータ保持用の中間構造に格納し、更新要求とは非同期で、それぞれ目的のデータ構造に変換してデータ格納部に格納し、データノードへのアクセス頻度の履歴を記憶するアクセス履歴記録部を備え、データノードで非同期に行われる目的のデータ構造への変換の契機となる契機情報を、アクセス履歴記録部に記録されたアクセス情報に基づき、可変させる手段を備える。【００１３】
また、耐障害性のための複製は、同期的に更新する必要がある。すなわち、両方の複製の更新が終了した段階で、クライアント計算機に更新終了を伝える必要がある。同一のデータを異なるデータ構造に格納する場合、一方のデータ構造は、他方のデータ構造と比較して、少量のデータ単位のアクセスには不向きなときがある。例えば、一方がＨＤＤ上のデータの更新であり、他方がメモリ上のデータの更新である場合、遅いほうのデータ構造が更新されるまで、クライアント計算機には更新完了通知が届かない。したがって、クライアント計算機の利用者は、システム性能が低下したように感じる。【００１４】
ここで、遅いデータ構造の前段に、追記が高速な専用のデータ構造を設ける方法が知られている。例えば、非特許文献２に記載された技術では、データベースへの更新情報をメモリ上のコピーには適用し、ＨＤＤ等の永続装置の上にはＷＡＬ（Write Ahead Logging、ログ先行書き込み）によって書き込み、その後、ＷＡＬの内容をＨＤＤ上のマスターデータベースに更新する。また、更新が速いデータ構造をメモリ上の行指向保存形式のデータ構造とし、更新が遅いデータ構造をメモリ上の列指向保存形式のデータ構造とした場合にも、列指向保存形式の前段に更新情報を保持するメモリ上のＦＩＦＯ（First-In First-Out）構造をはさむことで、高速にクライアント計算機に更新終了を返すことができる。このように、データストア（ないしはデータ格納部）への更新情報を一時的に保持する構成要素を、以下では、「更新情報保持部」と呼ぶ。【００１５】
また、複数の計算機から構成された分散ストレージシステムは、管理者による監視が行われる。非特許文献３に記載された技術では、ネットワーク上の複数の計算機の単位時間当たりのＣＰＵ（Central Processing Unit）利用率やネットワークパケット送信量が、ウェブ（Web）画面に表示される。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特願２０１１−０５０１５１号
【特許文献２】特願２０１１−１６９５８８号
【非特許文献】
【００１７】
【非特許文献１】上村純平 他、「ＧＰＵ援用カラムストアデータベースの設計と評価」、情報処理学会研究報告、Ｖｏｌ．２０１１−ＨＰＣ−１３０、Ｎｏ．２６、ｐｐ．１−７、２０１１
【非特許文献２】C. Mohan, et al., "ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging," ACM Transactions on Database Systems (TODS), Vol. 17, No. 1, March 1992, pp. 94-162.
【非特許文献３】Ganglia Monitoring System, [online], [平成24年3月8日検索], インターネット<URL: http://monitor.millennium.berkeley.edu/>
【非特許文献４】北川源四郎、「時系列解析入門」、ｐｐ．１２０−１２３、岩波書店、２００５
【発明の概要】
【発明が解決しようとする課題】
【００１８】
上記の特許文献及び非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。【００１９】
分散ストレージシステムにおいて、第１のデータ構造と第２のデータ構造で複製を保持する場合を考える。ここで、第２のデータ構造は少量の更新に時間を要するため、更新情報保持部を用いて非同期に更新するものとする。【００２０】
第１のデータ構造向けアクセスは、第１のデータ構造の複製により処理される。例えば、第１のデータ構造がメモリ上のバッファや、行指向保存形式である場合、レコード単位のリードアクセスは第１のデータ構造から読み書きされる。【００２１】
一方、第２のデータ構造向けアクセスは、第２のデータ構造の複製により処理されるのが望ましい。例えば、第２のデータ構造がＨＤＤ上の行指向保存形式や、メモリ上の列指向保存形式である場合、レコードのある特定の属性だけを必要とするアクセスや、格納されたすべてのデータを順に必要とするようなアクセスは、第２のデータ構造の複製から読まれる。【００２２】
第２のデータ構造を利用する場合において、更新情報保持部に更新情報が存在するときには、第２のデータ構造へのアクセスでは、最新の情報を利用することができない。そこで、第２のデータ構造へのアクセスが発生した場合には、分散ストレージシステムは、まず、第２のデータ構造の複製に付随する更新情報保持部に存在する更新情報を、更新情報が保持された順に第２のデータ構造に適用し、第２のデータ構造を最新のデータとする。その後、第２のデータ構造向けのアクセスが、最新データとなった第２のデータ構造で処理され、結果がクライアント計算機に返却される。【００２３】
このとき、アクセスに要する時間は、蓄積された更新情報を第２のデータ構造に適用するのに要する時間と、第２のデータ構造にアクセスするのに要する時間とを足し合わせたものとなる。【００２４】
ここで、更新情報保持部に蓄積された更新情報を適用するタイミングが、第２のデータ構造向けのアクセスが到達したときのみである場合、更新情報の量が多いとアクセス時間が長大化する。また、更新情報保持部における更新情報の格納量は有限であるため、第２のデータ構造向けのアクセスの発行頻度が低い場合、更新情報保持部における更新情報が溢れるおそれがある。【００２５】
そこで、更新情報保持部には、更新情報を吐き出すための条件として更新条件を設け、更新条件が真となった場合、第２のデータ構造向けのアクセス到達の有無に依らず、格納された更新情報の全部または一部を第２のデータ構造に適用する。更新条件として、例えば、更新情報の合計データ量が一定量となった場合が考えられる。また、他の更新条件として、更新情報の更新数が一定数となった場合が考えられる。さらに、他の更新条件として、前回の更新情報適用からの経過時間が定められた一定時間を経過した場合が考えられる。【００２６】
第２のデータ構造向けアクセスの一度のアクセスが微小時間であることが多い場合には、更新情報を頻繁に適用することで、更新情報保持部に蓄積される更新情報の数を少なくしないと、第２のデータ構造向けのアクセス性能が低下するおそれがある。これは、更新情報を第２のデータ構造に適用する時間の全部または一部が第２のデータ構造へのアクセス時間に含まれるからである。【００２７】
一方、第２のデータ構造向けのアクセスの発生頻度が低く、かつ、一度のアクセスが長大である場合には、第２のデータ構造は少量の更新のアクセス性能が悪いため、更新情報の適用頻度が高いと、第２のデータ構造の複製を保持する計算機のリソースをより多く消費してしまう。また、同一の計算機上に第１のデータ構造の複製が存在する場合や、同一の計算機を他の用途に利用していた場合にも、性能が低下する。【００２８】
これらのアクセスの発生率や時間は、運用時間の経過とともに変化することが多い。したがって、第１のデータ構造向けアクセスの頻度および量、ならびに、第２のデータ構造向けアクセスの頻度および量の変化によって、更新条件を適切に設定しないと、分散ストレージシステムの性能が低下するという問題がある。【００２９】
そこで、同一のデータを異なる複数のデータ構造で保持する分散ストレージシステムにおいて、各データ構造に適したアクセスの頻度および量の変化に従って、データの更新を各データ格納部に反映させるタイミングを適切に調整できるようにすることが課題となる。本発明の目的は、かかる課題を解決する分散ストレージシステム、ストレージ制御方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００３０】
本発明の第１の視点に係る分散ストレージシステムは、
第１のデータ構造でデータを保持する第１のデータ格納部と、
前記第１のデータ構造とは異なる第２のデータ構造で、前記データを保持する第２のデータ格納部と、
前記データの更新内容を表す更新情報を保持するとともに、所定の更新条件が満たされた場合、前記更新情報を前記第２のデータ格納部に適用して、前記更新内容を前記第２のデータ格納部に反映させる更新情報保持部と、
前記更新情報保持部が保持する前記更新情報を監視し、前記第２のデータ格納部への前記更新情報の適用状態を更新状況として抽出する更新状況監視部と、
前記更新状況に応じて決定された、前記所定の更新条件の変更命令に基づいて、前記所定の更新条件を変更する更新条件変更部と、を備える。【００３１】
本発明の第２の視点に係るストレージ制御方法は、
第１のデータ構造でデータを保持する第１のデータ格納部と、前記第１のデータ構造とは異なる第２のデータ構造で前記データを保持する第２のデータ格納部と、前記データの更新内容を表す更新情報を保持する更新情報保持部と、を備えた分散ストレージシステムを制御するストレージ制御方法であって、
所定の更新条件が満たされた場合、前記更新情報を前記第２のデータ格納部に適用して、前記更新内容を前記第２のデータ格納部に反映させる工程と、
前記更新情報保持部が保持する前記更新情報を監視し、前記第２のデータ格納部への前記更新情報の適用状態を更新状況として抽出する工程と、
前記更新状況に応じて決定された、前記所定の更新条件の変更命令に基づいて、前記所定の更新条件を変更する工程と、を含む。【００３２】
本発明の第３の視点に係るプログラムは、
第１のデータ構造でデータを保持する第１のデータ格納部と、前記第１のデータ構造とは異なる第２のデータ構造で前記データを保持する第２のデータ格納部と、前記データの更新内容を表す更新情報を保持する更新情報保持部と、を備えた分散ストレージシステムを制御するコンピュータに対して、
所定の更新条件が満たされた場合、前記更新情報を前記第２のデータ格納部に適用して、前記更新内容を前記第２のデータ格納部に反映させる処理と、
前記更新情報保持部が保持する前記更新情報を監視し、前記第２のデータ格納部への前記更新情報の適用状態を更新状況として抽出する処理と、
前記更新状況に応じて決定された、前記所定の更新条件の変更命令に基づいて、前記所定の更新条件を変更する処置と、を実行させる。【００３３】
なお、プログラムは、非トランジエントなコンピュータ読み取り可能な記録媒体（non-transitory computer-readable recording medium）に記録されたプログラム製品として提供することができる。
【発明の効果】
【００３４】
本発明に係る分散ストレージシステム、ストレージ制御方法およびプログラムによると、同一のデータを異なる複数のデータ構造で保持する分散ストレージシステムにおいて、各データ構造に適したアクセスの頻度および量の変化に従って、データの更新を各データ格納部に反映させるタイミングを適切に調整することが可能となる。
【図面の簡単な説明】
【００３５】
【図１】第１の実施形態に係る分散ストレージシステムの構成を一例として示すブロック図である。
【図２】第１の実施形態に係る分散ストレージシステムにおいて、各ストレージノードが第１および第２のデータ格納部を有する場合の構成を一例として示すブロック図である。
【図３】第２の実施形態に係る分散ストレージシステムの構成を一例として示すブロック図である。
【図４】第２の実施形態に係る分散ストレージシステムにおいて、各ストレージノードが第１および第２のデータ格納部を有する場合の構成を一例として示すブロック図である。
【図５】第３の実施形態に係る分散ストレージシステムの構成を一例として示すブロック図である。
【図６】第３の実施形態に係る分散ストレージシステムにおけるストレージノードの構成を一例として示すブロック図である。
【図７】関連技術である行指向保存形式を説明する図である。
【図８】関連技術である列指向保存形式を説明する図である。
【図９】関連技術であるハッシュマップ形式を説明する図である。
【図１０】第３の実施形態に係る分散ストレージシステムにおけるランダムリードアクセス動作を一例として示すシーケンス図である。
【図１１】第３の実施形態に係る分散ストレージシステムにおけるライトアクセス動作を一例として示すシーケンス図である。
【図１２】第３の実施形態に係る分散ストレージシステムにおけるシーケンシャルリードアクセス動作を一例として示すシーケンス図である。
【図１３】第３の実施形態に係る分散ストレージシステムにおけるデータ解析アクセス動作を一例として示すシーケンス図である。
【図１４】第３の実施形態に係る分散ストレージシステムにおける更新状況表示部の表示内容を一例として示す図である。
【図１５】第３の実施形態に係る分散ストレージシステムにおける更新条件入力部の構成を一例として示す図である。
【図１６】第３の実施形態に係る分散ストレージシステムにおける更新条件入力部の構成を一例として示す図である。
【図１７】第３の実施形態に係る分散ストレージシステムにおける更新状況表示部および更新条件入力部を同時に実装したときの構成を一例として示す図である。
【図１８】第３の実施形態に係る分散ストレージシステムにおける更新条件入力部の構成を一例として示す図である。
【図１９】第４の実施形態に係る分散ストレージシステムの構成を一例として示すブロック図である。
【図２０】第４の実施形態に係る分散ストレージシステムにおける更新情報制御部の実装アルゴリズムの一例について説明するための図である。
【図２１】第４の実施形態に係る分散ストレージシステムにおける更新情報制御部の実装アルゴリズムの一例について説明するための図である。
【発明を実施するための形態】
【００３６】
はじめに、一実施形態に係る分散ストレージシステムの概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００３７】
図１は、一実施形態に係る分散ストレージシステムの構成を一例として示すブロック図である。図１を参照すると、分散ストレージシステムは、第１のデータ構造でデータを保持する第１のデータ格納部（１２ａ）と、第１のデータ構造とは異なる第２のデータ構造で、前記データを保持する第２のデータ格納部（１２ｂ）と、前記データの更新内容を表す更新情報を保持するとともに、所定の更新条件が満たされた場合、前記更新情報を第２のデータ格納部（１２ｂ）に適用して、前記更新内容を第２のデータ格納部（１２ｂ）に反映させる更新情報保持部（２３）と、更新情報保持部（２３）が保持する前記更新情報を監視し、第２のデータ格納部（１２ｂ）への前記更新情報の適用状態を更新状況として抽出する更新状況監視部（２４）と、前記更新状況に応じて決定された、前記所定の更新条件の変更命令に基づいて、前記所定の更新条件を変更する更新条件変更部（２７）と、を備える。
【００３８】
図１を参照すると、分散ストレージシステムは、更新状況監視部（２４）によって抽出された前記更新状況を表示する更新状況表示部（３３）と、前記変更命令を受け付ける更新条件入力部（４１）と、を備えていてもよい。
【００３９】
かかる分散ストレージシステムによると、分散ストレージシステムが同一のデータを異なる複数のデータ構造で保持する場合に、各データ構造に適したアクセスの頻度および量の変化に従って、データの更新を各データ格納部に反映させるタイミングを適切に調整することが可能となる。なぜなら、分散ストレージシステムの管理者は、更新状況表示部（３３）に表示された更新状況、すなわち、第２のデータ格納部（１２ｂ）への更新情報の適用状態を把握することができ、必要に応じて、更新条件を変更するための変更命令を、更新条件入力部（４１）に入力することで、更新条件を調整することができるからである。
【００４０】
図３を参照すると、分散ストレージシステムは、前記更新状況に応じて、前記変更命令を生成する更新情報制御部（３４）を備えていてもよい。ここで、更新情報制御部（３４）は、前記更新状況に基づいて、更新情報保持部（２３）が将来保持する更新情報の個数を予測し、予測した個数に応じて前記変更命令を生成してもよい。また、更新情報制御部（３４）は、前記更新情報が第２のデータ格納部（１２ｂ）に適用される頻度を変更する命令を、前記変更命令として生成してもよい。さらに、更新情報制御部（３４）は、予測した個数が所定の上限値よりも多い場合、前記更新情報が第２のデータ格納部（１２ｂ）に適用される頻度が高くなるように前記変更命令を生成し、一方、予測した個数が所定の下限値よりも少ない場合、前記頻度が低くなるように前記変更命令を生成してもよい。
【００４１】
かかる分散ストレージシステムによると、分散ストレージシステムが同一のデータを異なる複数のデータ構造で保持する場合に、各データ構造に適したアクセスの頻度および量の変化に従って、データの更新を各データ格納部に反映させるタイミングを自動で調整することが可能となる。なぜなら、更新情報制御部（３４）は、更新状況、すなわち、第２のデータ格納部（１２ｂ）への更新情報の適用状態に応じて、更新条件を変更するための変更命令を生成し、更新条件を自動で調整するからである。
【００４２】
なお、本発明において、下記の形態が可能である。
［形態１］
上記第１の視点に係る分散ストレージシステムのとおりである。
［形態２］
前記分散ストレージシステムは、前記更新状況監視部によって抽出された前記更新状況を表示する更新状況表示部と、
前記変更命令を受け付ける更新条件入力部と、を備えていてもよい。
［形態３］
前記分散ストレージシステムは、前記第１のデータ格納部、前記第２のデータ格納部、前記更新情報保持部、前記更新状況監視部、および、前記更新条件変更部を有する複数の計算機を備え、
前記更新状況表示部は、前記複数の計算機のそれぞれに設けられた前記更新状況監視部によって抽出された前記更新状況を表示してもよい。
［形態４］
前記更新条件入力部は、前記複数の計算機のそれぞれに設けられた前記更新条件変更部に対する前記変更命令を受け付けてもよい。
［形態５］
前記更新状況表示部は、前記更新情報を円グラフ、棒グラフおよび折れ線グラフの少なくともいずれかを用いて表示してもよい。
［形態６］
前記分散ストレージシステムは、前記更新状況に応じて、前記変更命令を生成する更新情報制御部を備えていてもよい。
［形態７］
前記更新情報制御部は、前記更新状況に基づいて、前記更新情報保持部が将来保持する更新情報の個数を予測し、前記個数に応じて前記変更命令を生成してもよい。
［形態８］
前記更新情報制御部は、前記更新情報が前記第２のデータ格納部に適用される頻度を変更する命令を、前記変更命令として生成してもよい。
［形態９］
前記更新情報制御部は、前記個数が所定の上限値よりも多い場合、前記更新情報が前記第２のデータ格納部に適用される頻度が高くなるように前記変更命令を生成し、前記個数が所定の下限値よりも少ない場合、前記頻度が低くなるように前記変更命令を生成してもよい。
［形態１０］
前記更新情報制御部は、前記更新情報保持部が保持する更新情報の個数を時刻の多項式で近似し、前記更新情報保持部が将来保持する更新情報の個数を前記多項式に基づいて推定してもよい。
［形態１１］
前記第１のデータ格納部は、前記データを行指向で保持する行指向データベースであり、
前記第２のデータ格納部は、前記データを列指向で保持する列指向データベースであってもよい。
［形態１２］
前記第１のデータ格納部は、主記憶上に設けられたキーバリューストア（Key-Value Store）であり、
前記第２のデータ格納部は、主記憶上に設けられた列指向データベースであってもよい。
［形態１３］
前記第１のデータ格納部に格納された前記データは、ＣＰＵ（Central Processing Unit）によって処理され、
前記第２のデータ格納部に格納された前記データは、ＧＰＵ（Graphics Processing Unit）によって処理されてもよい。
［形態１４］
前記更新情報保持部は、レコードに対する更新ログを前記更新情報として保持し、
前記更新状況監視部は、前記更新情報保持部に存在する更新ログの個数を、前記更新状況として抽出してもよい。
［形態１５］
前記更新状況監視部は、前記更新情報保持部に存在する更新ログの個数の時間平均を、前記更新状況として抽出してもよい。
［形態１６］
前記第２のデータ格納部は、オブジェクト、タプル、ブロック等の所定の単位で前記データを管理し、
前記更新情報保持部が保持する更新情報の個数は、前記所定の単位による更新アクセスまたは削除アクセスに応じて増加し、前記所定の単位による参照アクセスによっては変動しないようにしてもよい。
［形態１７］
前記更新情報保持部が保持する更新情報の個数は、複数の単位の参照アクセスが前記第２のデータ格納部に到達した場合、ゼロに戻るようにしてもよい。
［形態１８］
前記更新情報保持部が保持する更新情報の個数は、前記所定の更新条件が満たされた場合、ゼロに戻るようにしてもよい。
［形態１９］
前記更新情報保持部は、レコードに対する更新ログを第１のＦＩＦＯ（First-In First-Out）形式で保持し、前記第２のデータ格納部へのアクセスが生じた場合、更新情報を保持しない第２のＦＩＦＯ形式に切り替え、前記第１のＦＩＦＯ形式の更新ログを前記第２のデータ格納部に適用しつつ、クライアント計算機からのライトアクセスを前記第２のＦＩＦＯ形式に保持してもよい。
［形態２０］
上記第２の視点に係るストレージ制御方法のとおりである。
［形態２１］
前記ストレージ制御方法は、抽出された前記更新状況を表示する工程と、
前記変更命令を受け付ける工程と、を含んでもよい。
［形態２２］
前記ストレージ制御方法は、前記更新状況に応じて、前記変更命令を生成する工程を含んでもよい。
［形態２３］
前記ストレージ制御方法において、前記更新状況に基づいて、前記更新情報保持部が将来保持する更新情報の個数を予測し、前記個数に応じて前記変更命令を生成してもよい。
［形態２４］
前記ストレージ制御方法において、前記更新情報が前記第２のデータ格納部に適用される頻度を変更する命令を、前記変更命令として生成してもよい。
［形態２５］
前記ストレージ制御方法において、前記個数が所定の上限値よりも多い場合、前記更新情報が前記第２のデータ格納部に適用される頻度が高くなるように前記変更命令を生成し、前記個数が所定の下限値よりも少ない場合、前記頻度が低くなるように前記変更命令を生成してもよい。
［形態２６］
前記ストレージ制御方法において、前記第１のデータ格納部は、前記データを行指向で保持する行指向データベースであり、
前記第２のデータ格納部は、前記データを列指向で保持する列指向データベースであってもよい。
［形態２７］
前記ストレージ制御方法において、前記更新情報保持部は、レコードに対する更新ログを前記更新情報として保持し、
前記更新情報保持部に存在する更新ログの個数を、前記更新状況として抽出してもよい。
［形態２８］
前記ストレージ制御方法において、前記第２のデータ格納部は、オブジェクト、タプル、ブロック等の所定の単位で前記データを管理し、
前記更新情報保持部が保持する更新情報の個数は、前記所定の単位による更新アクセスまたは削除アクセスに応じて増加し、前記所定の単位による参照アクセスによっては変動しないようにしてもよい。
［形態２９］
上記第３の視点に係るプログラムのとおりである。
［形態３０］
前記プログラムは、抽出された前記更新状況を表示する処理と、
前記変更命令を受け付ける処置と、を前記コンピュータに実行させてもよい。
［形態３１］
前記プログラムは、前記更新状況に応じて、前記変更命令を生成する処理を、前記コンピュータに実行させてもよい。
【００４３】
（実施形態１）
第１の実施形態に係る分散ストレージシステムについて、図面を参照して説明する。図１は、本実施形態に係る分散ストレージシステムの構成を一例として示すブロック図である。
【００４４】
図１を参照すると、分散ストレージシステムは、第１のデータ格納部１２ａ、第２のデータ格納部１２ｂ、更新情報保持部２３、更新状況監視部２４、更新状況送信部２５、更新状況受信部３２、更新状況表示部３３、更新条件入力部４１、更新条件送信部４２、更新条件受信部２６、および、更新条件変更部２７、を備える。
【００４５】
第２のデータ格納部１２ｂは、第１のデータ格納部１２ａとは異なる特徴（例えば、データ構造）を持つ。更新情報保持部２３は、第２のデータ格納部１２ｂへの適用前の更新情報を更新条件が偽（false）の間保持し、当該条件が真（true）のとき第２のデータ格納部１２ｂに適用する。更新状況監視部２４は、更新情報保持部２３が保持する更新情報の状態を監視する。更新状況送信部２５は、更新状況監視部２４から出力される更新状況を送信する。更新状況受信部３２は、当該更新状況を受信する。更新状況表示部３３は、当該更新状況を表す情報を表示する。更新条件入力部４１は、更新条件変更命令を受け付ける。更新条件送信部４２は、当該更新条件変更命令を送信する。更新条件受信部２６は、当該更新条件変更命令を受信する。更新条件変更部２７は、当該更新条件変更命令に基づいて更新情報保持部２３の更新条件を変更する。
【００４６】
また、図２に示すように、分散ストレージシステムは、第１のデータ格納部１２ａと第２のデータ格納部１２ｂを備える１つ以上のシステム計算機２１を備え、更新状況受信部３２は１つ以上の更新状況送信部２５から更新状況を受信し、更新状況表示部３３は１つ以上の更新状況を表示するようにしてもよい。
【００４７】
また、図２に示すように、更新条件入力部４１は、１つ以上の更新条件変更命令を受け付け、更新条件送信部４２は、１つの更新条件変更命令につき、１つ以上の更新条件受信部２６に送信するようにしてもよい。
【００４８】
本実施形態に係る分散ストレージシステムによると、第１のデータ構造向けアクセスの頻度および量、ならびに、第２のデータ構造向けアクセスの頻度および量の変化に応じて、更新条件を適切に設定することが可能となる。
【００４９】
なぜなら、分散ストレージシステムの管理者は、更新状況表示部３３を通して、第１のデータ構造向けアクセスと第２のデータ構造向けアクセスのリソース振り分けのパラメータとなる、１つ以上の更新情報保持部２３の状態を観測・確認し、その結果に応じて、管理者が次に設定するのが適切と考える更新条件に設定し、更新条件入力部４１を通して１つ以上の変更命令を入力できるからである。これにより、更新情報保持部２３は、分散ストレージシステムへのアクセスの傾向が変化したとしても、変更命令に従うことで適切な更新条件に設定でき、更新情報を適用する際の計算機負荷を低減することができる。
【００５０】
（実施形態２）
第２の実施形態に係る分散ストレージシステムについて、図面を参照して説明する。図３は、本実施形態に係る分散ストレージシステムの構成を一例として示すブロック図である。
【００５１】
図３を参照すると、分散ストレージシステムは、第１のデータ格納部１２ａ、第２のデータ格納部１２ｂ、更新情報保持部２３、更新状況監視部２４、更新状況送信部２５、更新情報制御部３４、更新条件入力部４１、更新条件送信部４２、更新条件受信部２６、および、更新条件変更部２７を備える。
【００５２】
第２のデータ格納部１２ｂは、第１のデータ格納部１２ａとは異なる特徴（例えば、データ構造）を持つ。更新情報保持部２３は、第２のデータ格納部１２ｂへの適用前の更新情報を更新条件が偽（false）の間保持し、当該条件が真（true）のとき第２のデータ格納部１２ｂに適用する。更新状況監視部２４は、更新情報保持部２３が保持する更新情報の状態を監視する。更新状況送信部２５は、更新状況監視部２４から出力される更新状況を送信する。更新状況受信部３２は、当該更新状況を受信する。更新情報制御部３４は、当該更新状況を少なくとも利用し、必要に応じて更新条件変更命令を生成する。更新条件入力部４１は、当該更新条件変更命令を受け付ける。更新条件送信部４２は、当該更新条件変更命令を送信する。更新条件受信部２６は、当該更新条件変更命令を受信する。更新条件変更部２７は、当該更新条件変更命令に基づいて更新情報保持部２３の更新条件を変更する。
【００５３】
また、図４を参照すると、分散ストレージシステムは、第１のデータ格納部１２ａと第２のデータ格納部１２ｂを備える１つ以上のシステム計算機２１を備え、更新状況受信部３２は、１つ以上の更新状況送信部２５から更新状況を受信するようにしてもよい。
【００５４】
また、図４に示すように、更新条件入力部４１は、１つ以上の更新条件変更命令を受け付け、更新条件送信部４２は、１つの更新条件変更命令につき、１つ以上の更新条件受信部２６に送信するようにしてもよい。
【００５５】
本実施形態の分散ストレージシステムでは、変更命令を更新情報制御部３４により生成することで、２４時間３６５日連続稼動するようなシステムにおいても、管理者が常に更新状況を監視し続けることなく、更新条件を適切に設定することが可能となる。
【００５６】
（実施形態３）
第３の実施形態に係る分散ストレージシステムについて、図面を参照して説明する。図５は、本実施形態に係る分散ストレージシステムの構成を一例として示すブロック図である。
【００５７】
図５を参照すると、本実施形態の分散ストレージシステムは、ネットワーク７０を介して結合された分散制御の分散ストレージ装置、クライアント計算機５０、監視計算機３０、および、制御計算機４０を備える。
【００５８】
クライアント計算機５０上のデータ利用プロセス５１は、分散ストレージ装置に対して、データ識別子とデータ操作を表す識別子を含むアクセスを行うことで、１つまたは複数のデータに対するデータの格納、格納されたデータの取得、格納されたデータの更新、格納されたデータの消去を行う。
【００５９】
監視計算機３０は、表示装置を備え、前述の更新状況受信部３２および更新状況表示部３３が実装される。ここで、表示装置は、計算機内の情報を、人が五感の１つ以上で確認できる物理現象に変換する装置であり、例えば、ディスプレイ、プリンタ、スピーカ等である。
【００６０】
制御計算機４０は、入力装置を備え、前述の更新条件入力部４１および更新条件送信部４２が実装される。ここで、入力装置は、人の挙動を計算機内の情報に変換する装置であり、例えば、キーボード、マウス、タッチパネル、カメラ、マイク、熱センサ等である。
【００６１】
ストレージノードＮｘ（ｘ＝ａ、ｂ、ｃ、…）は、図６に示すように１つ以上のＣＰＵ１５、１つ以上のメモリ１６、１つ以上のＩ／Ｏコントローラ１７、１つ以上のデータ格納部１２ｘ、１つ以上の通信コントローラ１８を備える計算機である。ストレージノードＮｘは、通信コントローラ１８を介してネットワーク７０とデータの送受信を行い、必要なデータの格納・読み出しを、Ｉ／Ｏコントローラ１７を介してデータ格納部１２ｘと行う。分散ストレージ装置は、ストレージノードＮａ〜Ｎｃを含んで構成される。ストレージノードＮｘを制御するソフトウェアは、メモリ１６に格納され、ＣＰＵ１５で実行される。
【００６２】
データ格納部１２ｘ（ｘ＝ａ、ｂ、ｃ、…）は、例えば、ハードディスクドライブ、フラッシュメモリ、ＤＲＡＭ、ＭＲＡＭ（Magnetoresistive RAM）、ＦｅＲＡＭ（Ferroelectric RAM）、ＲＡＩＤ（Redundant Arrays of Inexpensive(Independent) Disks）コントローラに結合された１つ以上の記憶装置、磁気テープ等のデータを記録可能な物理媒体、または、ストレージノードの外部に設置された当該媒体へデータを記録可能な制御装置である。
【００６３】
また、メモリ１６とデータ格納部１２ｘとは、同一のハードウェアであってもよい。
【００６４】
ストレージノードＮｘ（ｘ＝ａ、ｂ、ｃ、…）は、ネットワーク７０によって相互に接続され、ネットワーク７０を通してデータの送受信を行う。
【００６５】
ネットワーク７０は、例えば、Fibre Channel、ＦＣｏＥ（Fibre Channel over Ethernet（登録商標））、Infiniband、Ethernet上のＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）等の上位プロトコル等により実現される。ただし、ネットワーク７０の実現方法は、これらに限定されない。
【００６６】
分散ストレージ装置に記録されるデータは、ストレージノードＮｘ中のデータ格納部１２ｘに分散格納される。データは、固定長または任意長のデータ塊の集合と、当該データ塊を表すデータ識別子とによって管理され、データ管理部１４ｘで実装されるアクセス分配部６０によって、各データへのアクセスは当該データを保持するストレージノードＮｘに到達する。例えば、データ塊はファイルであり、データ識別子はi-node番号である。また、他の例では、データ塊は４キロバイト長のブロックであり、データ識別子はボリューム名とブロック番号の組である。さらに、他の例では、データ塊はレコードであり、データ識別子は主キーである。
【００６７】
格納されるデータは、複数の複製が作られ、それぞれ異なるストレージノードＮｘに格納される。データ管理部１４ｘは、格納するデータのデータ構造を決定し、データ格納部１２ｘに格納する。
【００６８】
ここで、データ構造とは、データ格納部１２ｘのデバイス上のどのアドレスに格納するデータをどの順で記録するかを決める指標である。
【００６９】
例えば、データ構造が行指向データベースであり、データ格納部１２ｘが主記憶である場合には、図７に示すように、格納するデータはレコードごとに区切られ、主記憶アドレス空間に連続に記録される。連続に記録する方法として、主記憶を４ＫＢごとのページという固定長に区切り、固定長の末尾から順にデータを配置し、データの先頭位置をページの先頭から順に格納する方式が知られている。また、行指向データベースでは、B-Treeに代表される索引データ構造をさらに格納することで、高速にアクセスできることも知られている。
【００７０】
また、データ構造が列指向データベースであり、データ格納部１２ｘが主記憶である場合には、図８に示すように、格納するデータはレコード内の属性やカラムという単位で区切られ、主記憶アドレス空間には同じカラムごとに連続に記録される。連続に記録する方法として、ページ内にカラム内容を順に記載する方法のほか、カラムの同じ値を省略して記載する方法もある（非特許文献１）。
【００７１】
さらに、データ構造がハッシュマップまたはキーバリューストアであり、データ格納部１２ｘが主記憶である場合には、図９に示すように、格納するデータのデータ塊をあるアドレスに連続で記録し、その先頭アドレスを、データ識別子のハッシュ値を元に計算する添え字を持つメモリ内の配列に格納することができる。
【００７２】
なお、データ構造の例は、これらに限定されない。例えば、データ格納部１２ｘがＨＤＤ、ＳＳＤ等である場合でも、一意に連続したアドレス空間を提供可能なデバイスであれば、上記のデータ構造を採用することができる。
【００７３】
各データ構造に対して、性能の良いアクセス方法と、性能の悪いアクセス方法とが存在する。
【００７４】
例えば、行指向データベースでは、各レコードごとの挿入、各レコードごとの参照は、索引構造が利用できるため、高速である。一方、行指向データベースでは、各レコードのうち一部のカラムだけを、すべての格納データについて取り出すようなアクセスは性能が悪い。
【００７５】
また、列指向データベースでは、各レコードのうち一部のカラムだけを、すべての格納データについて取り出すようなアクセスや、関係データベースにおいてJOINとして知られるような、あるカラムの値について各レコード相互をつき合わせるようなアクセスは高速に処理できる。一方、列指向データベースでは、各レコードの更新や各レコードのデータ識別子を指定してのアクセスは、全レコードのデータ識別子総当りのアクセスとなるため、処理に時間を要する。
【００７６】
さらに、データ構造がハッシュマップである場合、データ識別子を指定してのレコード参照やレコード挿入は高速である。一方、データ構造がハッシュマップである場合、データ識別子以外の値を指定してのデータ取得や、データ識別子の範囲を指定してのレコードアクセスは低速である。
【００７７】
本実施形態において、性能が良い、または、性能が悪いとは、相対的な指標である。ここでは、あるデータ構造１で格納されたデータと他のデータ構造２で格納されたデータについて、データ構造１についてあるアクセス方法Ａでアクセスした場合のスループットまたはレイテンシが、同一のデータを異なるデータ構造２で格納したデータ格納部に同一のアクセス方法Ａでアクセスした場合のスループットまたはレイテンシよりも良い場合、アクセス方法Ａについてデータ構造１の方が「性能が良い」という。
【００７８】
なお、「性能が良い」ことの定義として、スループットまたはレイテンシが良いこととする代わりに、次のようにしてもよい。すなわち、スループット、レイテンシなどのように、アクセス量やアクセス速度が早いこととしてもよい。また、消費電力が少ない、廃棄物が少ないなどのように、アクセス量による環境負荷が少ないこととしてもよい。さらに、アクセスやデータ転送量の課金量が少ない、消耗品の消耗速度が少ないなどのように、運用コストが低いこととしてもよい。また、部品の精度が良い、内部にさらに冗長構成を有するなどのように、データ喪失率が低いこととしてもよい。さらに、これらを組み合わせたものを、性能が良いことの定義としてもよい。
【００７９】
以下では、異なる２つのデータ構造１およびデータ構造２について、データ構造１の方が性能が良いアクセス方法を、データ構造１向きのアクセス方法といい、データ構造２の方が性能が良いアクセス方法を、データ構造２向きのアクセス方法という。３つ以上のデータ構造についても、２つのデータ構造のときと同様に、相対的な性能を比較する。
【００８０】
ここでは、格納される同一のデータの複製のうちの一部は、異なるデータ構造で格納されるものとする。
【００８１】
例えば、データ１は３つに複製され、それぞれ、ストレージノードＮａ、Ｎｂ、Ｎｃに格納されるとする。このとき、ストレージＮａおよびＮｂではデータ構造１で格納され、ストレージＮｃではデータ構造２で格納されるようにしてもよい。また、他の例として、データ２は４つに複製され、ストレージノードＮｄ〜Ｎｇに格納されるとする。このとき、ストレージＮｄではデータ構造３で格納され、ストレージＮｅではデータ構造４で格納され、ストレージＮｆではデータ構造５で格納され、ストレージＮｇはデータ構造６で格納されるようにしてもよい。
【００８２】
また、あるデータ１とデータ２の複製の１つをそれぞれストレージＮａに格納するとき、データ１はデータ構造１で格納され、データ２はデータ構造２で格納されるようにしてもよい。
【００８３】
同一のデータの複製が異なるストレージノードに作成（または更新）されるとき、それらは同期的に更新されるものとする。すなわち、ストレージノードＮａ上のデータ格納部１２ａとストレージノードＮｂ上のデータ格納部１２ｂの両方で、記録とアクセス可能なデータ構造の作成が完了した後、クライアント計算機５０に更新終了通知が送出される。
【００８４】
ここで、２つ以上の複製が２つ以上の異なるデータ構造１、２、…で格納され、データ識別子単位での更新アクセスがデータ構造１向けである場合、データ構造２、…に格納する前に、ストレージノードは更新情報保持部２３にデータの更新を格納して更新終了通知を返すことができる。
【００８５】
更新情報保持部２３は、データ構造の一種で、更新情報、すなわち、更新を表す情報を追記するアクセスがデータ構造２よりも向いているデータ構造を有する。更新情報とは、あるデータを変更するアクセス（作成、更新、削除）を時間を置いて、後段のデータ構造２上のデータに適用することができる情報のことである。例えば、更新情報保持部２３は、主記憶上のＦＩＦＯに更新されるデータ自体を、更新情報として保持してもよい。また、他の例として、更新情報保持部２３は、ＨＤＤ上のログ構造ファイルシステムにデータの更新前の値と更新後の値、データ識別子の組を更新情報としてアクセスの順に記録するようにしてもよい。更新情報保持部２３は、上記定義を満たすものであればよく、これらの例に限定されない。なお、適用された更新情報は、更新情報保持部２３から除去される。
【００８６】
更新情報保持部２３には、ある時間ごとに真または偽となる更新条件が設定される。更新情報保持部は、更新条件が真となると、格納された更新情報の一部または全部をデータ構造２に適用して、データ構造２を更新する。
【００８７】
更新条件は、アルゴリズムとパラメータを含む。更新条件のアルゴリズムの例として、更新情報の合計データ量が一定量になった場合が考えられる。このとき、一定量の値がパラメータとなる。また、更新条件のアルゴリズムの他の例として、更新情報の更新数が一定数になった場合が考えられる。このとき、一定数の値がパラメータとなる。さらに、更新条件のアルゴリズムの他の例として、前回の更新情報適用からの経過時間が定められた一定時間経過した後である場合が考えられる。このとき、一定時間の値がパラメータとなる。また、更新条件のアルゴリズムの他の例として、第２のデータ格納部を持つ計算機のＣＰＵの利用率がある一定割合以上になった場合または一定割合以下になった場合が考えられる。このとき、一定割合がパラメータとなる。ただし、更新条件は、これらに限定されない。
【００８８】
また、更新情報保持部２３は、更新条件の真偽に依らず、第２のデータ構造向けのアクセスが当該ストレージノードに到達した場合には、そのアクセスを処理する前に更新情報を第２のデータ構造に適用する。
【００８９】
図１０ないし図１３は、第１のデータ構造によるデータ（第１のデータ格納部１２ａ）、第２のデータ構造によるデータ（第２のデータ格納部１２ｂ）、更新情報保持部２３を用いた場合のアクセスのシーケンスを示す。
【００９０】
図１０ないし図１３では、一例として、ランダムリード、ランダムライトを第１のデータ格納部１２ａ向けアクセスとし、シーケンシャルリードや複雑なクエリを第２のデータ格納部１２ｂ向けアクセスとする。ただし、これらのアクセスは説明の便宜上のものに過ぎず、各データ格納部向けのアクセスはこれらに限定されない。
【００９１】
図１０は、ランダムリードアクセスを示す。アクセス分配部６０によって、ランダムリードアクセスは第１のデータ格納部１２ａ向けであることが解決される。したがって、クライアント計算機５０からのランダムリードアクセスは、第１のデータ格納部１２ａに到達し、当該リクエストの返答となるデータは第１のデータ格納部１２ａから返却される。
【００９２】
図１１は、ライトアクセス（データの作成、更新あるいは削除アクセス）のシーケンスを示す。アクセス分配部６０によって、ライトアクセスは当該データのすべての複製を保持するデータ格納部をもつ計算機に投入される。ランダムライトは第１のデータ格納部１２ａ向けアクセスであるため、第１のデータ格納部１２ａは更新をそのまま適用する。一方、第２のデータ格納部１２ｂでは、その前段に位置する更新情報保持部２３が当該データへのランダムライトから更新情報を作成して保持する。次に、更新条件が真になると、当該更新情報は第２のデータ格納部１２ｂに適用される。
【００９３】
図１２は、シーケンシャルリードアクセスのシーケンスを示す。シーケンシャルリードアクセスは第２のデータ格納部１２ｂ向けのアクセスであるため、アクセス分配部６０によって、クライアント計算機５０からのシーケンシャルリードアクセスは第２のデータ格納部１２ｂに到達する。第２のデータ格納部１２ｂは、アクセスを処理する前に、前段にある更新情報保持部２３に格納された一部または全部の更新情報を、更新情報保持部２３によって定められた順番がある場合はその順に従いつつ、第２のデータ格納部１２ｂに適用してデータを更新する。次に、アクセスを処理して、アクセスの結果をクライアント計算機５０に返す。図１２では、更新の適用後にアクセスを処理している。ただし、更新が適用されないデータからアクセスを処理したり、適切に排他制御をすることにより、アクセスを処理しながら更新を適用することもできる。
【００９４】
図１３は、複雑なデータ解析のシーケンスを示す。データ解析は第２のデータ格納部向けのアクセスであるため、図１２に示したシーケンシャルリードの場合と同様、第２のデータ格納部で処理され、結果はクライアント計算機に返却される。
【００９５】
更新情報保持部２３を実装するストレージノードは、更新状況監視部２４および更新状況送信部２５を備える。
【００９６】
更新状況監視部２４は、更新情報保持部２３の更新情報の量の増減を表す情報として「更新状況」を生成する。例えば、第２のデータ格納部１２ｂがオブジェクト、タプル、ブロック等のデータ単位で格納データを管理している場合、更新状況は、データ単位の更新アクセスまたは削除アクセスが更新情報保持部２３に格納されると増加するようにしてもよい。また、データ単位の参照アクセスは更新情報保持部２３に格納されないか、または、格納されたとしても、更新状況は増加しないようにしてもよい。さらに、複数のデータ単位の参照アクセスが第２のデータ格納部１２ｂに到達すると、更新状況はゼロに戻るようにしてもよい。
【００９７】
更新状況は、更新条件が真に到達するとゼロに戻る値としてもよい。
【００９８】
また、更新状況は、更新情報保持部２３に格納された更新情報の数としてもよい。さらに、更新状況は、更新情報保持部に格納された更新情報の数の単位時間当たりの平均としてもよい。
【００９９】
また、更新状況は、更新情報保持部２３に格納された更新情報の更新データサイズの合計としてもよい。
【０１００】
さらに、更新状況は、更新情報保持部２３に格納された更新情報の数の最近一定時間当たりの最大数としてもよい。また、更新状況は、更新情報保持部２３に格納された更新情報の数の最近一定時間当たりの最小数としてもよい。
【０１０１】
さらに、更新状況は、更新情報保持部２３に格納された更新情報の数を、更新情報保持部２３に格納可能な最大の更新情報数で割った％値としてもよい。
【０１０２】
また、更新状況は、更新情報保持部２３に格納された最新の更新情報と最古の更新情報の格納時刻の差で更新情報の数を割った値としてもよい。
【０１０３】
さらに、更新状況は、上記で例示した更新状況をｘとしたとき、ｘに対して単調に増加する関数ｆ（ｘ）の値としてもよい。また、更新状況は、上記で例示した更新状況をｘとしたとき、ｘに対して単調に減少する関数ｇ（ｘ）の値としてもよい。
【０１０４】
さらに、更新状況は、上記で例示した更新状況を一定時間ごとに採取した時系列ｘ１、ｘ２、…、ｘ＿ｎに対し、変化時点推定を行った結果、最近一定時間以内に変化があった可能性を表す確率値としてもよい。なお、変化時点推定アルゴリズムは、一例として、非特許文献４に記載されている、時系列の複数の小区間ごとにＡＩＣ（Akaike's Information Criterion、赤池情報量規準）を計算する手法を用いることができる。
【０１０５】
また、更新状況は、上記で例示した更新状況を一定時間ごとに採取した時系列ｘ１、ｘ２、…、ｘ＿ｎに対し、最新のｘ＿ｎが、それ以前のｘ１、ｘ２、…、ｘ＿ｎ−１の平均よりある定められた割合だけ外れていた際に１となるような値としてもよい。
【０１０６】
更新状況送信部２５は、更新状況監視部２４によって採取された更新状況を、監視計算機３０に実装された更新状況受信部３２に送信する。更新状況送信部２５は、定期的に更新状況を送信してもよい。更新状況送信部２５は、更新状況受信部３２から要求があった場合、最新の更新状況を送信してもよい。また、更新状況送信部２５は、更新状況として、最近の値だけを送信してもよい。さらに、更新状況送信部２５は、更新状況として、最近一定時間以内に採取されたゼロ個以上の値を送信してもよい。また、更新状況送信部２５は、更新状況として、最近一定数採取された１つ以上の値を送信してもよい。
【０１０７】
監視計算機３０では、受信した更新状況を更新状況表示部３３によって表示する。表示は、更新状況の大小、または、時間的変化の有無が人に分かる形式に変換して実行される。
【０１０８】
図１４は、更新状況表示部３３による表示例を示す。図１４では、更新状況表示部３３は、Web等の画面を介して、更新状況の大小を含む情報を提示している。図１４では、更新状況表示部３３は、更新状況を棒グラフとして表示している。このとき、棒グラフの横方向の長さに基づいて、更新状況の大小を把握することができる。
【０１０９】
また、更新状況表示部３３は、更新状況を、折れ線グラフで過去の値とともに表示してもよい。さらに、更新状況表示部３３は、更新状況を、ある定められた値を１００％とする円グラフで表現してもよい。また、更新状況表示部３３は、最近一定時間に傾向に変化があったことを示すアイコンで、更新状況を表示してもよい。さらに、更新状況表示部３３は、数値を読み上げる音声合成で、更新状況を表現してもよい。
【０１１０】
更新状況表示部３３から更新状況を読み取った人（多くの場合、システム管理者であるがこれに限られない）は、必要に応じて、制御計算機４０の更新条件入力部４１より、更新条件を入力する。更新条件入力部４１は、人が更新条件をどのように変更するか入力するための機能を提供する。
【０１１１】
図１５は、更新条件入力部４１の構成を一例として示す。図１５に示した更新条件入力部４１によると、Web等の画面を介して、現在設定されている更新条件のパラメータを変更することができる。図１５では、ストレージノードごとに更新条件を設定可能であり、当該ストレージノードのラベルがついているテキストボックスの現在の値を変更し、送信ボタンを選択することで、更新条件変更命令を入力することができる。
【０１１２】
図１６は、更新条件入力部４１の他の構成を例示する。図１６に示した更新条件入力部４１によると、Web等の画面を介して、更新条件のアルゴリズムを変更することができる。図１６では、ストレージノード番号を指定するテキストボックスでストレージノードを指定し、アルゴリズムを選択する排他ラジオボタンでアルゴリズムの変更を指定して、送信ボタンを選択することで、更新条件変更命令を入力することができる。さらに、個々のストレージノードごとに更新条件変更命令を設定するのみならず、図１６に例示するように、複数のストレージノードで動作する更新情報保持部２３の更新条件を、まとめて設定することもできる。
【０１１３】
図１７は、更新条件入力部４１の他の構成を例示する。図１７では、監視計算機３０と制御計算機４０が同一の計算機である場合に、更新状況表示部３３と更新条件入力部４１とが同一画面において提供される場合を示す。
【０１１４】
更新条件入力部４１の他の例として、変更パラメータは音声でマイクから入力され、音声合成された値を基に更新条件変更命令を入力するようにしてもよい。
【０１１５】
図１８は、更新条件入力部４１の他の構成を例示する。図１８では、制御計算機４０のコマンドプロンプトから変更値を入力し、ＯＳ（Operating System）の持つプロセス間通信機能により、送信先であるnodeaを引数として、更新条件送信部４２に相当するchange_conditionコマンドに入力している。
【０１１６】
更新条件入力部４１の他の例として、変更パラメータは音声でマイクから入力され、音声合成された値を基に更新条件変更命令を入力するようにしてもよい。
【０１１７】
入力された更新条件変更命令は、制御計算機４０の更新条件送信部４２から、ストレージノードの更新条件受信部２６を介して、更新条件変更部２７に入力される。
【０１１８】
更新条件変更部２７は、更新情報保持部２３が更新情報を適用するタイミングである更新条件のアルゴリズムもしくはパラメータ、または、その両方を変更する。
【０１１９】
以上の構成を備えた本実施形態の分散ストレージシステムによると、更新条件をアクセスの傾向の変化に応じて、適切に変更することができる。
【０１２０】
例えば、ランダムリードとランダムライトのみで既に運用されている分散ストレージ装置が、新たにデータ分析アクセスが投入されることになった場合、管理者はアクセス傾向が変化することを知っているため、アクセス傾向が変化する時点において、更新状況に基づいて更新情報保持部２３の内部の更新情報量を把握することができ、更新条件を変更すべきか否か、変更する場合にはどの程度更新頻度を上げればよいかを判断することができる。また、管理者は、変更後の更新状況を更新状況表示部３３から取得することができるため、変更した更新条件が適切でなかった場合に、更新状況が適切でないことを把握でき、再度、更新条件を変更することができる。
【０１２１】
また、監視計算機３０が、更新状況のみならずクライアント計算機５０のアクセス性能その他の性能指標も表示可能な場合には、本実施形態の分散ストレージシステムの有用性がさらに向上する。例えば、クライアント計算機５０のアクセス性能が減退した場合、更新状況表示部３３に基づいて、更新情報保持部２３の状況が以前とどのように異なるかを把握することができ、更新情報保持部２３がアクセス性能減退の要因である場合には、更新条件変更部２７を介して更新情報保持部２３の更新情報を変更し、アクセス性能を回復することができる。
【０１２２】
（実施形態４）
第４の実施形態に係る分散ストレージシステムについて、図面を参照して説明する。図１９は、本実施形態に係る分散ストレージシステムの構成を一例として示すブロック図である。
【０１２３】
図１９を参照すると、本実施形態に係る分散ストレージシステムは、第３の実施形態に係る分散ストレージシステム（図５）における制御計算機４０および監視計算機３０の代わりに、更新状況受信部３２、更新条件送信部４２および更新情報制御部３４を実装する監視・制御計算機３１を備える。
【０１２４】
本実施形態の分散ストレージシステムのその他の要素は、第３の実施形態に係る分散ストレージシステム（図５）と同様である。
【０１２５】
本実施形態の更新情報制御部３４は、更新状況受信部３２が受けた更新状況を元に、必要があれば更新条件変更命令を作成し、更新条件送信部４２を介して、ストレージノードの更新条件変更部２７に入力する。
【０１２６】
更新情報制御部３４の一例として、更新状況の上限・下限を利用したアルゴリズムを用いることが考えられる。図２０を参照して、更新情報制御部３４の動作について説明する。あるストレージノード（ストレージノードＮｘとする）のデータ格納部１２ｘに対する更新情報保持部２３に、その更新状況の値の上限と下限を定める。例えば、更新状況が、更新情報保持部２３内の更新情報の数であった場合、下限を０、上限を更新情報保持部２３内に格納可能な更新情報の最大数とすることができる。
【０１２７】
更新情報制御部３４は、更新状況を観測し続け、その値を時系列として、未来の値を予測する。例えば、更新情報制御部３４は、最小二乗法を用いて時系列が入力が観測時刻ｔ、出力がｓ＊ｔ＋ｕとなる１次関数と近似することで、将来の値を予測することができる。
【０１２８】
また、他の例として、更新情報制御部３４は、より複雑な時系列解析に基づいて、更新状況を予測するようにしてもよい。一例として、非特許文献４には、状態空間モデルにトレンドモデルと周期モデルを当てはめ、最尤推定や情報量規準を用いることにより、各モデルで最も時系列をよく近似するパラメータを求める時系列予測手法が記載されている。更新情報制御部３４は、かかる時系列予測手法を用いて、更新状況を予測するようにしてもよい。
【０１２９】
更新情報制御部３４は、予測された未来の値が、ある時間以内に上記の上限を上回る場合、更新条件が真となる頻度が高くなるように、更新条件変更命令を生成し、更新条件送信部４２に発行することが好ましい。
【０１３０】
更新情報制御部３４は、例えば、更新条件がある定められた時間ｔ１ごとに真となる条件である場合、ｔ１＞ｔ２なる時間ｔ２へ変更する命令を発行する。また、更新情報制御部３４は、更新条件がある定められた数ｎ１個の更新情報が更新情報保持部２３に格納されたときに真となる条件である場合、ｎ１＞ｎ２なる個数ｎ２が新たに設定されるような命令を発行する。
【０１３１】
更新情報制御部３４は、予測された未来の値が、ある時間以内に前記の下限を下回る場合、更新条件が真となる頻度が低下するように、更新条件変更命令を生成し、更新条件送信部４２に発行することが好ましい。
【０１３２】
更新情報制御部３４は、例えば、更新条件がある定められた時間ｔ１ごとに真となる条件である場合、ｔ１＜ｔ３なる時間ｔ３へ変更する命令を発行する。また、更新情報制御部３４は、更新条件がある定められた数ｎ１個の更新情報が更新情報保持部２３に格納されたときに真となる条件である場合、ｎ１＜ｎ３なる個数ｎ３が新たに設定されるような命令を発行する。
【０１３３】
更新情報制御部３４の他の例として、各ストレージノードの更新状況の乖離を是正するアルゴリズムを用いることが考えられる。更新情報制御部３４は、分散ストレージシステムに存在する２つ以上のストレージノードから更新状況を取得する。更新情報制御部３４は、取得した更新状況の値の平均を算出し、平均値より大きく外れた更新状況を示すストレージノードが存在する場合、当該ストレージノードの更新条件を変更する更新条件変更命令を発行する。
【０１３４】
更新情報制御部３４は、平均値から大きく外れたことを検出する際、例えば、ある定められた割合を超える、ある定められた固定値を超える、ある定められた割合を一定時間越え続ける等の条件で検出するようにしてもよい。
【０１３５】
図２１は、ストレージノードＮａ〜Ｎｅの更新状況を示す。更新情報制御部３４は、図２１に示した更新状況の場合、ストレージノードＮａ〜Ｎｅの更新状況を観測することで、ストレージノードＮｅの更新状況が平均から乖離していることを検出する。このとき、更新情報制御部３４は、ストレージノードＮｅの更新情報保持部２３に対し、更新条件変更命令を発行する。
【０１３６】
本実施形態に係る分散ストレージ装置によると、第３の実施形態の分散ストレージ装置と同様に、アクセスの傾向の変化に応じて更新条件を適切に変更することができる。
【０１３７】
また、本実施形態によると、第３の実施形態のようにシステム管理者が常にシステムを監視する必要がないため、人的なコストを削減することできる。また、本実施形態によると、第３の実施形態と比較して、時間的に細粒度の更新条件の再設定が可能となる。ただし、更新情報制御部３４への入力情報や、その計算能力が限られていることを考慮した場合には、人間の知識に基づいて適切な値を設定することができる第３の実施形態の方が好ましい。
【０１３８】
上記実施形態に係る分散ストレージシステムは、例えば、並列データベース、並列データ処理システム、分散ストレージ、並列ファイルシステム、分散データベース、データグリッド、クラスタコンピュータ等に適用することができる。
【０１３９】
なお、上記の特許文献等の先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１４０】
１０、２０、２１    システム計算機
１２、１２ａ〜１２ｃ、１２ｘ、２２    データ格納部
１４ａ〜１４ｃ、１４ｘ    データ管理部
１５    ＣＰＵ（Central Processing Unit）
１６    メモリ
１７    Ｉ／Ｏコントローラ
１８    通信コントローラ
２３    更新情報保持部
２４    更新状況監視部
２５    更新状況送信部
２６    更新条件受信部
２７    更新条件変更部
３０    監視計算機
３１    監視・制御計算機
３２    更新状況受信部
３３    更新状況表示部
３４    更新情報制御部
４０    制御計算機
４１    更新条件入力部
４２    更新条件送信部
５０    クライアント計算機
５１    データ利用プロセス
６０    アクセス分配部
７０    ネットワーク
Ｎａ〜Ｎｆ、Ｎｘ    ストレージノード
【図１】
2013141308.tif 000003
【図２】
2013141308.tif 000004
【図３】
2013141308.tif 000005
【図４】
2013141308.tif 000006
【図５】
2013141308.tif 000007
【図６】
2013141308.tif 000008
【図７】
2013141308.tif 000009
【図８】
2013141308.tif 000010
【図９】
2013141308.tif 000011
【図１０】
2013141308.tif 000012
【図１１】
2013141308.tif 000013
【図１２】
2013141308.tif 000014
【図１３】
2013141308.tif 000015
【図１４】
2013141308.tif 000016
【図１５】
2013141308.tif 000017
【図１６】
2013141308.tif 000018
【図１７】
2013141308.tif 000019
【図１８】
2013141308.tif 000020
【図１９】
2013141308.tif 000021
【図２０】
2013141308.tif 000022
【図２１】
2013141308.tif 000023
【国際調査報告】
2013141308.tif 000024
2013141308.tif 000025
2013141308.tif 000026