(57)【要約】【課題】インデックスデータの読み出し性能を向上すること。【解決手段】第１の記憶装置３１にストリームデータを書き込み、第１の記憶装置３１に書き込まれたストリームデータの検索に用いるインデックスデータを第１の記憶装置３１及び第２の記憶装置３２に書き込むストレージ制御部１１と、インデックスデータを読み出す際に、第１の記憶装置３１及び第２の記憶装置３２のうち、より速くインデックスデータを読み出せる記憶装置からインデックスデータを読み出すリード制御部１２とを有する、情報処理装置１０が提供される。【選択図】図１
2018018133.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶装置にストリームデータを書き込み、前記第１の記憶装置に書き込まれた前記ストリームデータの検索に用いるインデックスデータを前記第１の記憶装置及び第２の記憶装置に書き込むストレージ制御部と、
前記インデックスデータを読み出す際に、前記第１の記憶装置及び前記第２の記憶装置のうち、より速く前記インデックスデータを読み出せる記憶装置から前記インデックスデータを読み出すリード制御部と
を有する、情報処理装置。
【請求項２】
前記リード制御部は、前記インデックスデータを読み出す際に、前記第１の記憶装置への書き込みが行われているストリームデータのアドレスと、前記インデックスデータのアドレスとの間の距離に基づいて、前記第１の記憶装置から前記インデックスデータを読み出すか、前記第２の記憶装置から前記インデックスデータを読み出すかを決定する
請求項１に記載の情報処理装置。
【請求項３】
前記リード制御部は、前記インデックスデータを読み出す際に、前記第１の記憶装置に対する書き込み処理が実行されているストリームデータの流量及び前記距離に基づいて、前記第１の記憶装置から前記インデックスデータを読み出すか、前記第２の記憶装置から前記インデックスデータを読み出すかを決定する
請求項２に記載の情報処理装置。
【請求項４】
前記第２の記憶装置におけるデータの読み出し速度の情報と、前記ストリームデータの流量及び前記距離に基づいて前記第１の記憶装置におけるデータの読み出し速度を評価する評価式の情報とを記憶する記憶部をさらに有し、
前記リード制御部は、前記インデックスデータを読み出す際に、前記評価式に基づいて算出した前記第１の記憶装置における前記インデックスデータの読み出し速度と、前記第２の記憶装置における前記データの読み出し速度とを比較した結果に応じて、前記第１の記憶装置から前記インデックスデータを読み出すか、前記第２の記憶装置から前記インデックスデータを読み出すかを決定する
請求項３に記載の情報処理装置。
【請求項５】
コンピュータに、
第１の記憶装置にストリームデータを書き込み、
前記第１の記憶装置に書き込まれた前記ストリームデータの検索に用いるインデックスデータを前記第１の記憶装置及び第２の記憶装置に書き込み、
前記インデックスデータを読み出す際に、前記第１の記憶装置及び前記第２の記憶装置のうち、より速く前記インデックスデータを読み出せる記憶装置から前記インデックスデータを読み出す
処理を実行させる、ストリームストレージ制御プログラム。
【請求項６】
コンピュータが、
第１の記憶装置にストリームデータを書き込み、
前記第１の記憶装置に書き込まれた前記ストリームデータの検索に用いるインデックスデータを前記第１の記憶装置及び第２の記憶装置に書き込み、
前記インデックスデータを読み出す際に、前記第１の記憶装置及び前記第２の記憶装置のうち、より速く前記インデックスデータを読み出せる記憶装置から前記インデックスデータを読み出す
インデックスデータ参照方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ストリームストレージ制御プログラム、及びインデックスデータ参照方法に関する。
【背景技術】
【０００２】
通信回線などのデータ伝送路を通じて時々刻々と流れるデータ（ストリームデータ）を蓄積するストレージシステム（ストリームストレージシステム）がある。例えば、ＩＰ（Internet Protocol）ネットワークを流れるパケットを捕捉してトラフィックの変化などを解析するパケットキャプチャを実施する際、解析対象となるパケットの蓄積にストリームストレージシステムが利用される。
【０００３】
ストリームストレージシステムでは、蓄積されたストリームデータの検索用にインデックスデータが生成される。生成されたインデックスデータは、ストリームデータと同じ記憶装置に格納される。ストリームストレージシステムでは、ストリームデータを読み出す際、そのストリームデータに対応するインデックスデータが参照され、そのインデックスデータに基づいて記憶装置に蓄積されているストリームデータの検索が実施される。
【０００４】
なお、実データの検索にメタデータを利用する方法が提案されている。この方法では、データ提供装置が実データと共にメタデータを提供し、データ格納部に予め格納してあるメタデータと、データ提供装置から提供を受けたメタデータとを比較し、その比較の結果に応じてデータ格納部のメタデータを更新する。
【０００５】
また、画像データの検索にインデックスデータを利用する方法が提案されている。この方法では、画像データに対するアクセスのキーになるインデックスデータを高速な記憶媒体（インデックス媒体）及び大容量の記憶媒体（画像媒体）に格納し、インデックス媒体に適当なインデックスデータがない場合に画像媒体のインデックスデータを利用する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１２２６４３号公報
【特許文献２】実開昭５８−５１３６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ストリームストレージシステムでは、時々刻々と流れるストリームデータを記憶装置に蓄積するため、その記憶装置に対する書き込み負荷が高い傾向にある。そのため、ストリームデータを蓄積する記憶装置にインデックスデータを格納すると、ストリームデータの書き込み負荷が高い状況ではインデックスデータの読み出しに時間がかかることがある。
【０００８】
ストリームデータを蓄積する記憶装置（データボリューム）とは異なる他の記憶装置（インデックスボリューム）にインデックスデータを格納すれば、ストリームデータの書き込み負荷が高い状況でも、インデックスデータを高速に読み出すことができる。
【０００９】
但し、要求される性能やコストなどの理由から、多くの場合、データボリュームにはインデックスボリュームに比べてアクセス性能が高いハードウェアが利用される。そのため、インデックスボリュームを設けた場合でもデータボリュームをインデックスデータの格納に利用することでインデックスデータの読み出し性能を向上する余地がある。
【００１０】
１つの側面によれば、本開示の目的は、インデックスデータの読み出し性能を向上できる情報処理装置、ストリームストレージ制御プログラム、及びインデックスデータ参照方法を提供することにある。
【課題を解決するための手段】
【００１１】
１つの側面によれば、第１の記憶装置にストリームデータを書き込み、第１の記憶装置に書き込まれたストリームデータの検索に用いるインデックスデータを第１の記憶装置及び第２の記憶装置に書き込むストレージ制御部と、インデックスデータを読み出す際に、第１の記憶装置及び第２の記憶装置のうち、より速くインデックスデータを読み出せる記憶装置からインデックスデータを読み出すリード制御部とを有する、情報処理装置が提供される。
【発明の効果】
【００１２】
インデックスデータの読み出し性能を向上できる。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態に係る情報処理装置の一例を示した図である。
【図２】第２実施形態に係るストリームストレージシステムの一例を示した図である。
【図３】第２実施形態に係るストリームデータの書き込み処理の流れを示したシーケンス図である。
【図４】書き込みリクエストの一例を示した図である。
【図５】インデックスデータの一例を示した図である。
【図６】インデックス管理テーブルの一例を示した図である。
【図７】第２実施形態に係るインデックスデータの書き込み方法について説明するための図である。
【図８】第２実施形態に係るクライアント装置の機能を実現可能なハードウェアの一例を示したブロック図である。
【図９】第２実施形態に係るサーバ装置が有する機能の一例を示したブロック図である。
【図１０】第２実施形態に係るインデックスデータの管理に関する処理の流れを示したフロー図である。
【図１１】第２実施形態に係るイベントデータの検索に関する処理の流れを示した第１のフロー図である。
【図１２】第２実施形態に係るイベントデータの検索に関する処理の流れを示した第２のフロー図である。
【図１３】検索リクエストの一例を示した図である。
【図１４】第２実施形態に係る速度情報の生成に関する処理の流れを示したフロー図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
【００１５】
＜１．第１実施形態＞
図１を参照しながら、第１実施形態について説明する。第１実施形態は、ストリームデータの検索に用いるインデックスデータを高速に読み出すことが可能なストリームストレージシステムに関する。図１は、第１実施形態に係る情報処理装置の一例を示した図である。図１に示した情報処理装置１０は、第１実施形態に係る情報処理装置の一例である。
【００１６】
図１に示すように、情報処理装置１０は、ストレージ制御部１１、及びリード制御部１２を有する。なお、情報処理装置１０は、ネットワーク２０に接続されている。また、情報処理装置１０は、第１の記憶装置３１、及び第２の記憶装置３２に接続されている。
【００１７】
なお、情報処理装置１０は、ＲＡＭ（Random Access Memory）などの揮発性記憶装置（非図示）、或いは、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置（非図示）を有する。ストレージ制御部１１、及びリード制御部１２は、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などのプロセッサである。ストレージ制御部１１、及びリード制御部１２は、例えば、ＲＡＭやＨＤＤなどに記憶されたプログラムを実行する。
【００１８】
第１の記憶装置３１、及び第２の記憶装置３２は、ＨＤＤやＳＳＤなどの記憶装置である。また、第１の記憶装置３１、及び第２の記憶装置３２は、複数の記憶装置を組み合わせたＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置であってもよい。
【００１９】
第１の記憶装置３１は、ネットワーク２０を流れるデータ（ストリームデータ）の格納に利用される記憶装置である。一方、第２の記憶装置３２は、第１の記憶装置３１に格納されたストリームデータの検索に用いるデータ（インデックスデータ）の格納に利用される記憶装置である。但し、第１の記憶装置３１には、インデックスデータも格納される。
【００２０】
ストリームデータの書き込み処理は、書き込み重視（Write-Intensive）なワークロードである。そのため、第１の記憶装置３１には、例えば、ＲＡＩＤ０（ストライピング）に設定されたＲＡＩＤ装置が用いられる。なお、複数のＨＤＤにパリティを分散配置するＲＡＩＤ５などのＲＡＩＤ装置を第１の記憶装置３１に適用してもよい。一方、第２の記憶装置３２は、第１の記憶装置３１に比べて書き込み性能が重視されない。そのため、第２の記憶装置３２は、第１の記憶装置３１より読み書き性能の低い記憶装置でよい。
【００２１】
ストレージ制御部１１は、第１の記憶装置３１にストリームデータを書き込む。また、ストレージ制御部１１は、第１の記憶装置３１に書き込まれたストリームデータの検索に用いるインデックスデータを第１の記憶装置３１及び第２の記憶装置３２に書き込む。図１の例では、第１の記憶装置３１の記憶領域３１ａにストリームデータ及びインデックスデータが書き込まれ、同じインデックスデータが第２の記憶装置３２の記憶領域３２ａに書き込まれている。
【００２２】
上記のように、ストレージ制御部１１は、インデックスデータを記憶領域３１ａ、３２ａの両方に書き込む。そのため、リード制御部１２は、記憶領域３１ａ、３２ａのいずれからもインデックスデータを読み出すことができる。リード制御部１２は、インデックスデータを読み出す際に、第１の記憶装置３１及び第２の記憶装置３２のうち、より速くインデックスデータを読み出せる記憶装置からインデックスデータを読み出す。
【００２３】
既に述べたように、第１の記憶装置３１にはストリームデータが書き込まれるため、第１の記憶装置３１は書き込み負荷の高い状態にあることが多い。そのため、ストリームデータが書き込まれている最中に第１の記憶装置３１からインデックスデータを読み出そうとすると、インデックスデータの読み出しに長い時間がかかる。
【００２４】
一方、第２の記憶装置３２には、第１の記憶装置３１に比べて読み書き性能の低い記憶装置が採用されうる。この場合、第１の記憶装置３１に書き込まれるストリームデータの流量が少なければ、第２の記憶装置３２からインデックスデータを読み出すよりも、第１の記憶装置３１からインデックスデータを読み出す方が早いことがある。そのため、リード制御部１２は、上記のように、より速くインデックスデータを読み出せる記憶装置からインデックスデータを読み出す。
【００２５】
例えば、リード制御部１２は、第１の記憶装置３１において、現在書き込みが行われているストリームデータのアドレス（書き込みアドレス４１）と、インデックスデータのアドレス（読み出しアドレス４２）との間の距離を算出する。なお、書き込みアドレス４１、読み出しアドレス４２は、第１の記憶装置３１における物理アドレス又は論理アドレスである。リード制御部１２は、算出した距離に基づいて、第１の記憶装置３１からインデックスデータを読み出すか、第２の記憶装置３２からインデックスデータを読み出すかを決定する。
【００２６】
上記のように、第１の記憶装置３１及び第２の記憶装置３２の用途に応じて性能の異なる記憶装置が用いられうるため、第１実施形態では、両装置にインデックスデータを格納しておき、より速く読み出せる記憶装置からインデックスデータを読み出す方法を採る。この方法を適用することで、インデックスデータの読み出し性能が向上しうるため、ストリームデータの検索が高速化されうる。
【００２７】
以上、第１実施形態について説明した。
＜２．第２実施形態＞
次に、第２実施形態について説明する。
【００２８】
［２−１．システム］
第２実施形態は、ストリームデータの検索に用いるインデックスデータを高速に読み出すことが可能なストリームストレージシステムに関する。図２は、第２実施形態に係るストリームストレージシステムの一例を示した図である。図２に示したストリームストレージシステム１００は、第２実施形態に係るストリームストレージシステムの一例である。
【００２９】
図２に示すように、ストリームストレージシステム１００は、クライアント装置１１０、サーバ装置１３０、及び記憶装置１４０、１５０を有する。クライアント装置１１０とサーバ装置１３０とはネットワーク１２０を介して接続されている。クライアント装置１１０、及びサーバ装置１３０は、後述するように、ＣＰＵなどの演算装置及びＲＡＭなどのメモリを搭載するコンピュータである。ネットワーク１２０は、例えば、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）などの通信網である。
【００３０】
記憶装置１４０、１５０は、ＨＤＤやＳＳＤなどの記憶装置、或いは、複数の記憶装置を組み合わせたＲＡＩＤ装置である。記憶装置１４０は、ストリームデータ及び該ストリームデータの検索に用いるインデックスデータの格納に利用される記憶装置である。一方、記憶装置１５０は、インデックスデータの格納に利用される記憶装置である。以下では、説明の都合上、記憶装置１４０をデータボリューム（Data Volume）、記憶装置１５０をインデックスボリューム（Index Volume）と呼ぶ場合がある。
【００３１】
（書き込み時の動作）
上記のように、ストリームストレージシステム１００は、ストリームデータをデータボリュームに蓄積するシステムである。データボリュームに対するストリームデータの書き込みは、例えば、図３のような流れで実施される。図３は、第２実施形態に係るストリームデータの書き込み処理の流れを示したシーケンス図である。
【００３２】
（Ｓ１０１）クライアント装置１１０は、インターネットなどの広域通信網やＬＡＮなどの局域通信網を時々刻々と流れるストリームデータを捕捉する。例えば、クライアント装置１１０は、ストリームデータとして、ＩＰネットワークを流れるパケット（ＩＰパケット）を捕捉する。
【００３３】
また、クライアント装置１１０は、捕捉したストリームデータから共通の属性を有するデータの集合（イベントデータ）を抽出する。例えば、ＩＰパケットには、送信元ＩＰアドレス、宛先ＩＰアドレス、プロトコル番号（プロトコル種別を示す番号）などの情報が含まれる。上記の属性として、これらの情報（例えば、送信元ＩＰアドレス、宛先ＩＰアドレス、プロトコル種別）を適用することができる。
【００３４】
例えば、クライアント装置１１０は、ＩＰパケットをストリームデータとして捕捉し、捕捉したＩＰパケットのうち、送信元ＩＰアドレス、宛先ＩＰアドレス、プロトコル種別が共通するＩＰパケットの集合をイベントデータとして抽出する。
【００３５】
（Ｓ１０２）クライアント装置１１０は、Ｓ１０１で抽出したイベントデータに識別情報（イベントデータＩＤ）を付与する。イベントデータＩＤは、対応するイベントデータを一意に特定するための識別情報である。また、クライアント装置１１０は、イベントデータの属性を示す情報（メタデータ）をイベントデータに付与する。
【００３６】
上述したＩＰパケットの例では、送信元ＩＰアドレス、宛先ＩＰアドレス、プロトコル種別を示す情報などがメタデータとしてイベントデータに付与される。以下、イベントデータＩＤ及びメタデータが付与されたイベントデータを書き込みリクエストと呼ぶ場合がある。書き込みリクエストは、例えば、図４に示すような構造を有する。図４は、書き込みリクエストの一例を示した図である。
【００３７】
図４に示すように、書き込みリクエストは、イベントデータＩＤ、メタデータ、イベントデータを有する。図４の例では、送信元ＩＰアドレス、宛先ＩＰアドレス、通信プロトコル（プロトコル種別）の他に、開始時刻がメタデータに含まれている。この開始時刻は、イベントデータの書き込みに関する処理を開始する時刻であり、例えば、イベントデータの書き込みをサーバ装置１３０に依頼する時刻である。
【００３８】
（Ｓ１０３）クライアント装置１１０は、書き込みリクエストをサーバ装置１３０に送信し、データボリュームに対するイベントデータの書き込みを依頼する。
（Ｓ１０４）サーバ装置１３０は、クライアント装置１１０から受信した書き込みリクエストからイベントデータを抽出する。そして、サーバ装置１３０は、抽出したイベントデータをデータボリュームに格納する。
【００３９】
（Ｓ１０５）サーバ装置１３０は、クライアント装置１１０から受信した書き込みリクエストからメタデータ及びイベントデータＩＤを抽出する。そして、サーバ装置１３０は、抽出したメタデータに基づいて、データボリュームに格納したイベントデータの検索に用いるインデックスデータを生成する。なお、データボリューム及びインデックスボリュームに格納前のインデックスデータがある場合（サーバ装置１３０のメモリにある場合）、サーバ装置１３０は、そのインデックスデータを更新する。
【００４０】
イベントデータの検索に用いる検索キーを送信元ＩＰアドレスに設定している場合、インデックスデータは、例えば、図５に示すような構造を有する。図５は、インデックスデータの一例を示した図である。この場合、インデックスデータは、送信元ＩＰアドレスと、イベントデータＩＤとを対応付ける。つまり、このインデックスデータを参照すれば、指定した送信元ＩＰアドレスに対応するイベントデータを特定することができる。
【００４１】
（Ｓ１０６）上述したように、インデックスデータは、データボリューム及びインデックスボリュームに格納される。但し、インデックスデータの格納は、例えば、前回格納した時点から所定の時間（例えば、１時間）が経過したタイミングで実施される。サーバ装置１３０は、この時間が経過するまでインデックスデータの格納を待つ。
【００４２】
なお、この時間が経過するまでの期間もＳ１０１〜Ｓ１０５の処理は継続的に実行される。そのため、所定の時間が経過するまでの期間、インデックスデータには、送信元ＩＰアドレスなどの情報が継続的に追記される。
【００４３】
（Ｓ１０７、Ｓ１０８）上述した所定の時間が経過したタイミングで、サーバ装置１３０は、データボリュームにインデックスデータを格納する。また、サーバ装置１３０は、データボリュームに格納したインデックスデータと同じデータをインデックスボリュームに格納する。なお、サーバ装置１３０は、インデックスデータをインデックスボリュームに対して先に格納してもよい。
【００４４】
（Ｓ１０９）サーバ装置１３０は、インデックスデータを格納したデータボリューム上の場所を管理するためのインデックス管理テーブルを更新する。インデックス管理テーブルは、例えば、図６に示すような構造を有する。図６は、インデックス管理テーブルの一例を示した図である。インデックス管理テーブルは、図６に示すように、インデックスデータに情報が追加された時間帯と、インデックスデータが格納されたデータボリューム上のアドレス（格納アドレス）とを対応付ける。
【００４５】
上記のように、クライアント装置１１０が抽出したイベントデータは、継続的にサーバ装置１３０に送られてデータボリュームに格納される。また、イベントデータの検索に用いるインデックスデータは、イベントデータの格納に伴い逐次更新され、所定の期間が経過した後でデータボリューム及びインデックスボリュームの両方に格納される。そして、データボリュームに格納されたインデックスデータはインデックス管理テーブルを用いて管理される。
【００４６】
例えば、データボリュームがストライピング構成（ＲＡＩＤ０）のＨＤＤ＃１、＃２で構築され、インデックスボリュームがＨＤＤ＃３で構築されている場合、インデックスデータは、両ボリュームに対して図７のように格納される。図７は、第２実施形態に係るインデックスデータの書き込み方法について説明するための図である。
【００４７】
なお、図７において、ＨＤＤ＃１、＃２、＃３の表記をそれぞれ付した枠は、ＨＤＤ＃１、＃２、＃３の記憶領域を示している。また、斜線のハッチングが施されている部分はイベントデータが書き込まれている領域を示している。一方、ハッチングが施されている部分はインデックスデータが書き込まれている領域を示している。また、各記憶領域には、説明の都合上、枠の下側から順にデータが格納されるものとする。つまり、現在の書き込み位置はハッチングの上端に対応する。
【００４８】
上述したように、データボリュームに対してイベントデータが継続的に書き込まれる一方、インデックスデータは所定の時間間隔で書き込まれる。インデックスボリュームにはイベントデータが書き込まれないため、連続領域にインデックスデータが蓄積される。一方、データボリュームには、イベントデータを挟む形で断続的にインデックスデータが格納される。そのため、イベントデータの書き込み途中にデータボリュームのインデックスデータを読み出すと、ＨＤＤの読み書きヘッドのシーク動作が頻繁に発生する。
【００４９】
また、書き込みアドレスと読み出しアドレスとが離れているため、シーク動作の際にヘッドが長い距離を移動することになる。これらの理由から、イベントデータの書き込み負荷が高い状況では、インデックスデータをデータボリュームから読み出す際に長い時間がかかる。
【００５０】
但し、サーバ装置１３０はインデックスボリュームにインデックスデータを格納するため、イベントデータの書き込み負荷が高い状況ではインデックスボリュームからインデックスデータを読み出すことで、高速にインデックスデータを読み出せる。また、サーバ装置１３０はデータボリュームにもインデックスデータを格納するため、イベントデータの書き込み負荷が低い状況では、高性能なデータボリュームからインデックスデータを読み出すことで、高速にインデックスデータを読み出せる。
【００５１】
このように、第２実施形態に係るストリームストレージシステム１００では、インデックスデータをデータボリュームとインデックスボリュームとに格納することでインデックスデータの読み出しを高速化する。以下では、クライアント装置１１０及びサーバ装置１３０のハードウェアや、インデックスデータを高速に読み出せる好適なボリュームを選択するサーバ装置１３０の機能などについて説明する。
【００５２】
［２−２．ハードウェア］
まず、図８を参照しながら、クライアント装置１１０のハードウェアについて説明する。図８は、第２実施形態に係るクライアント装置の機能を実現可能なハードウェアの一例を示したブロック図である。
【００５３】
クライアント装置１１０が有する機能は、例えば、図８に示すハードウェア資源を用いて実現することが可能である。つまり、クライアント装置１１０が有する機能は、コンピュータプログラムを用いて図８に示すハードウェアを制御することにより実現される。
【００５４】
図８に示すように、このハードウェアは、主に、ＣＰＵ９０２と、ＲＯＭ（Read Only Memory）９０４と、ＲＡＭ９０６と、ホストバス９０８と、ブリッジ９１０とを有する。さらに、このハードウェアは、外部バス９１２と、インターフェース９１４と、入力部９１６と、出力部９１８と、記憶部９２０と、ドライブ９２２と、接続ポート９２４と、通信部９２６とを有する。
【００５５】
ＣＰＵ９０２は、例えば、演算処理装置又は制御装置として機能し、ＲＯＭ９０４、ＲＡＭ９０６、記憶部９２０、又はリムーバブル記録媒体９２８に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ＲＯＭ９０４は、ＣＰＵ９０２に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。ＲＡＭ９０６には、例えば、ＣＰＵ９０２に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
【００５６】
これらの要素は、例えば、高速なデータ伝送が可能なホストバス９０８を介して相互に接続される。一方、ホストバス９０８は、例えば、ブリッジ９１０を介して比較的データ伝送速度が低速な外部バス９１２に接続される。また、入力部９１６としては、例えば、マウス、キーボード、タッチパネルなどが用いられる。
【００５７】
出力部９１８としては、例えば、ＣＲＴ（Cathode Ray Tube）、ＬＣＤ（Liquid Crystal Display）、ＰＤＰ（Plasma Display Panel）、又はＥＬＤ（Electro-Luminescence Display）などのディスプレイ装置が用いられる。また、出力部９１８として、プリンタなどが用いられることもある。
【００５８】
記憶部９２０は、各種のデータを格納するための装置である。記憶部９２０としては、例えば、ＨＤＤなどの磁気記憶デバイスが用いられる。また、記憶部９２０として、ＳＳＤやＲＡＭディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
【００５９】
ドライブ９２２は、着脱可能な記録媒体であるリムーバブル記録媒体９２８に記録された情報を読み出し、又はリムーバブル記録媒体９２８に情報を書き込む装置である。リムーバブル記録媒体９２８としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
【００６０】
接続ポート９２４は、例えば、ＵＳＢ（Universal Serial Bus）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Small Computer System Interface）など、外部接続機器９３０を接続するためのポートである。外部接続機器９３０としては、例えば、プリンタなどが用いられる。
【００６１】
通信部９２６は、ネットワーク９３２に接続するための通信デバイスである。通信部９２６としては、例えば、有線又は無線ＬＡＮ用の通信回路、ＷＵＳＢ（Wireless USB）用の通信回路、光通信用の通信回路やルータ、ＡＤＳＬ（Asymmetric Digital Subscriber Line）用の通信回路やルータなどが用いられる。通信部９２６に接続されるネットワーク９３２は、有線又は無線により接続されたネットワークであり、例えば、インターネット、ＬＡＮなどを含む。
【００６２】
以上、クライアント装置１１０のハードウェアについて説明した。なお、サーバ装置１３０が有する機能も図８に示したハードウェアを利用して実現することが可能である。そのため、サーバ装置１３０のハードウェアについては詳細な説明を省略する。
【００６３】
［２−３．機能］
次に、図９を参照しながら、サーバ装置１３０の機能について、さらに説明する。図９は、第２実施形態に係るサーバ装置が有する機能の一例を示したブロック図である。
【００６４】
図９に示すように、サーバ装置１３０は、記憶部１３１、Ｒ／Ｗ制御部１３２、インデックス管理部１３３、及び検索処理部１３４を有する。なお、記憶部１３１の機能は、上述したＲＡＭ９０６や記憶部９２０などを用いて実現できる。Ｒ／Ｗ制御部１３２、インデックス管理部１３３、及び検索処理部１３４の機能は、上述したＣＰＵ９０２などを用いて実現できる。
【００６５】
記憶部１３１には、インデックスデータ１３１ａ、インデックス管理テーブル１３１ｂ、及び速度情報１３１ｃが格納される。
インデックスデータ１３１ａは、イベントデータの検索に利用する属性（例えば、送信元ＩＰアドレス）と、その属性を有するイベントデータのイベントデータＩＤとを対応付けるデータである（図５を参照）。
【００６６】
インデックス管理テーブル１３１ｂは、データボリュームにおけるインデックスデータ１３１ａの格納アドレスと、そのインデックスデータ１３１ａに情報（属性、イベントデータＩＤ）が蓄積された期間（時間帯）とを対応付けるテーブルである（図６を参照）。
【００６７】
速度情報１３１ｃは、データボリュームにおけるデータの読み出し速度ＲＤを計算するための計算式及びその計算式に含まれるパラメータＡ1、Ａ2、Ａ3、Ａ4などの情報である。また、速度情報１３１ｃは、インデックスボリュームにおけるデータの読み出し速度ＲIを含む。計算式は、例えば、下記の式（１）で与えられる。
【００６８】
【数１】
2018018133.tif 000003
【００６９】
上記の式（１）において、ＷDは、データボリュームにおける現在（読み出し速度ＲDを評価する時点）の書き込み速度である。書き込み速度ＷDは、データボリュームに書き込まれるイベントデータの流量（単位時間当たりの書き込みデータ量）で近似できる。
【００７０】
Ｄは、シーク距離である。シーク距離Ｄは、書き込みアドレスと読み出しアドレスとの間の距離である。例えば、データボリュームからインデックスデータ１３１ａを読み出す場合、そのインデックスデータ１３１ａがあるアドレスが読み出しアドレスとなり、現在の書き込み位置（図７を参照）を示すアドレスが書き込みアドレスとなる。
【００７１】
なお、書き込みアドレス及び読み出しアドレスは、物理アドレスでもよいし、論理アドレスでもよい。パラメータＡ1、Ａ2、Ａ3、Ａ4の計算方法については後述する。
Ｒ／Ｗ制御部１３２は、データボリュームに対するイベントデータの読み書きを制御する。また、Ｒ／Ｗ制御部１３２は、データボリューム及びインデックスボリュームに対するインデックスデータ１３１ａの読み書きを制御する。
【００７２】
インデックス管理部１３３は、インデックスデータ１３１ａの生成及び更新を実施する。また、インデックス管理部１３３は、Ｒ／Ｗ制御部１３２を制御して、記憶部１３１に格納されているインデックスデータ１３１ａをデータボリューム及びインデックスボリュームに書き出す。また、インデックス管理部１３３は、インデックス管理テーブル１３１ｂの書き出しに伴ってインデックス管理テーブル１３１ｂを更新する。
【００７３】
検索処理部１３４は、イベントデータの検索条件を含む検索リクエストをクライアント装置１１０から受信する。そして、検索処理部１３４は、Ｒ／Ｗ制御部１３２を制御して、検索リクエストに含まれる検索条件を満たすインデックスデータ１３１ａをデータボリューム又はインデックスボリュームから読み出す。このとき、検索処理部１３４は、速度情報１３１ｃを利用してデータボリュームにおけるデータの読み出し速度ＲDを計算し、読み出し速度が速いボリュームからインデックスデータ１３１ａを読み出す。
【００７４】
検索処理部１３４は、読み出したインデックスデータ１３１ａを参照し、検索リクエストに含まれる検索条件を満たすイベントデータＩＤのリストをクライアント装置１１０に返す。クライアント装置１１０は、このリストの中から所望のイベントデータに対応するイベントデータＩＤを選択し、選択したイベントデータＩＤを示す読み出しリクエストをサーバ装置１３０に送信する。
【００７５】
検索処理部１３４は、クライアント装置１１０から読み出しリクエストを受信する。そして、検索処理部１３４は、Ｒ／Ｗ制御部１３２を制御して、読み出しリクエストが示すイベントデータＩＤに対応するイベントデータをデータボリュームから読み出し、読み出したイベントデータをクライアント装置１１０に送信する。
【００７６】
上記のように、より読み出し速度が速いボリュームからインデックスデータ１３１ａを読み出すことで、イベントデータの検索及び応答にかかる時間を短縮できる。
以上、サーバ装置１３０の機能について説明した。
【００７７】
［２−４．処理フロー］
次に、上記のサーバ装置１３０が実行する処理の流れについて説明する。
（インデックスデータの管理）
まず、図１０を参照しながら、インデックス管理部１３３が実行するインデックスデータ１３１ａの管理に関する処理の流れについて説明する。図１０は、第２実施形態に係るインデックスデータの管理に関する処理の流れを示したフロー図である。
【００７８】
（Ｓ１１１）インデックス管理部１３３は、クライアント装置１１０からサーバ装置１３０が書き込みリクエスト（図４を参照）を受信したか否かを判定する。なお、書き込みリクエストには、書き込み対象のイベントデータと、そのイベントデータを識別するためのイベントデータＩＤと、そのイベントデータの属性を示すメタデータとが含まれる。書き込みリクエストを受信した場合、処理はＳ１１２へと進む。一方、書き込みリクエストを受信していない場合、処理はＳ１１３へと進む。
【００７９】
（Ｓ１１２）インデックス管理部１３３は、サーバ装置１３０が受信した書き込みリクエストからイベントデータＩＤ及びメタデータを抽出する。また、インデックス管理部１３３は、メタデータから、イベントデータの検索に利用する属性（例えば、送信元ＩＰアドレス）の情報を抽出する。そして、インデックス管理部１３３は、抽出したイベントデータＩＤ及び属性の情報に基づいて、記憶部１３１にあるインデックスデータ１３１ａを更新する。
【００８０】
例えば、図５に例示した内容のインデックスデータ１３１ａが記憶部１３１にあり、クライアント装置１１０が、送信元ＩＰアドレス「１９２．１６８．０．１」、イベントデータＩＤ「１１」を含む書き込みリクエストを送信したとする。この場合、インデックス管理部１３３は、インデックスデータ１３１ａの中で、送信元ＩＰアドレス「１９２．１６８．０．１」に対応するイベントデータＩＤの欄に「１１」を追記する。
【００８１】
（Ｓ１１３）インデックス管理部１３３は、前回格納時（前回、記憶部１３１にあるインデックスデータ１３１ａをデータボリューム及びインデックスボリュームに格納した時点）から一定時間（例えば、１時間）が経過したか否かを判定する。前回格納時から一定時間が経過した場合、処理はＳ１１４へと進む。一方、前回格納時から一定時間が経過していない場合、処理はＳ１１１へと進む。
【００８２】
（Ｓ１１４）インデックス管理部１３３は、記憶部１３１にある現在のインデックスデータ１３１ａを更新禁止に設定する。
（Ｓ１１５）インデックス管理部１３３は、Ｒ／Ｗ制御部１３２を制御して、記憶部１３１にある現在のインデックスデータ１３１ａをデータボリューム及びインデックスボリュームに移動する。
【００８３】
（Ｓ１１６）インデックス管理部１３３は、Ｓ１１５でデータボリューム及びインデックスボリュームに移動したインデックスデータ１３１ａに関する情報に基づいてインデックス管理テーブル１３１ｂ（図６を参照）を更新する。
【００８４】
例えば、「２０１６／３／３１  ０４：００−０５：００」の時間帯にデータボリュームに格納されたイベントデータに関する情報を記録したインデックスデータ１３１ａがデータボリューム及びインデックスボリュームに移動されたとする。また、インデックスデータ１３１ａの格納先が「０ｘ４０００４０００−０ｘ４０００８０００」である場合、インデックス管理部１３３は、これらの時間帯及び格納先（格納先アドレス）の情報をインデックス管理テーブル１３１ｂに追記する。
【００８５】
（Ｓ１１７）インデックス管理部１３３は、インデックスデータ１３１ａの更新禁止を解除し、記憶部１３１に新たなインデックスデータ１３１ａを生成する。
（Ｓ１１８）ストリームストレージシステム１００の動作を終了する場合、図１０に示した一連の処理は終了する。一方、ストリームストレージシステム１００の動作が継続する場合、処理はＳ１１１へと進む。
【００８６】
以上、インデックスデータ１３１ａの管理に関する処理の流れについて説明した。
（イベントデータの検索）
次に、図１１及び図１２を参照しながら、検索処理部１３４によるイベントデータの検索に関する処理の流れについて説明する。図１１は、第２実施形態に係るイベントデータの検索に関する処理の流れを示した第１のフロー図である。図１２は、第２実施形態に係るイベントデータの検索に関する処理の流れを示した第２のフロー図である。
【００８７】
（Ｓ１２１）検索処理部１３４は、クライアント装置１１０から検索リクエストを受信する。検索リクエストは、イベントデータの検索条件となる属性などの情報を含む。
例えば、検索リクエストは、図１３に示すように、送信元ＩＰアドレス、宛先ＩＰアドレス、通信プロトコル、時間帯などの情報を含む。図１３は、検索リクエストの一例を示した図である。図１３の例では、送信元ＩＰアドレスに値が設定され、宛先ＩＰアドレス及び通信プロトコルにワイルドカード「＊」が設定されている。ワイルドカードは、任意の値が条件に合致することを意味する。
【００８８】
また、図１３の例では、インデックスデータ１３１ａに情報が蓄積された時間帯がさらに設定されている。図１３に例示した検索リクエストは、検索条件として、送信元ＩＰアドレスが「１９２．１６８．０．１」であり、かつ、時間帯が「２０１３／０９／３０  １２：００−１３：００」であることを示している。また、この検索リクエストは、宛先ＩＰアドレス及び通信プロトコルについて条件を課さないことを示している。
【００８９】
（Ｓ１２２）検索処理部１３４は、インデックス管理テーブル１３１ｂを参照し、検索リクエストで指定された時間帯（指定時間帯）に対応するインデックスデータ１３１ａの格納アドレスを特定する。つまり、検索処理部１３４は、指定時間帯に対応するインデックスデータ１３１ａがデータボリュームのどの領域にあるかを特定する。
【００９０】
（Ｓ１２３）検索処理部１３４は、インデックスデータ１３１ａが格納されている領域の始点を示す格納アドレス（読み出しアドレス）と、イベントデータの書き込み処理が実行されているデータボリュームのアドレス（書き込みアドレス）とを検出する。そして、検索処理部１３４は、書き込みアドレスと読み出しアドレスとの差（シーク距離Ｄ）を計算する。例えば、書き込みアドレスをＸW、読み出しアドレスをＸDとすると、検索処理部１３４は、｜ＸD−ＸW｜を計算し、計算結果をシーク距離Ｄとする（｜…｜は絶対値）。
【００９１】
（Ｓ１２４）検索処理部１３４は、現在のデータボリュームに対するイベントデータの流量（単位時間当たりの書き込みデータ量）から現在の書き込み速度ＷDを得る。そして、検索処理部１３４は、記憶部１３１にある速度情報１３１ｃ及びＳ１２３で計算したシーク距離Ｄに基づき、上記の式（１）に従ってデータボリュームに対する現在の読み出し速度ＲDを計算する。
【００９２】
（Ｓ１２５）検索処理部１３４は、記憶部１３１にある予め格納されているインデックスボリュームの読み出し速度ＲIを参照し、データボリュームの読み出し速度ＲDがＲIより大きいか否かを判定する。ＲDがＲIより大きい場合、処理はＳ１２６へと進む。一方、ＲDがＲIより大きくない場合、処理はＳ１２７へと進む。
【００９３】
なお、インデックスボリュームは、常時イベントデータが書き込まれるデータボリュームとは異なり、インデックスデータ１３１ａの読み出し速度にイベントデータの書き込み負荷が影響を及ぼすことはない。そのため、事前にインデックスボリュームからデータを読み出す処理を実行し、その実行時に測定した読み出し速度ＲIをそのまま上記の判定に利用することができる。
【００９４】
（Ｓ１２６）検索処理部１３４は、Ｒ／Ｗ制御部１３２を制御し、Ｓ１２２で特定した格納アドレスに基づいて、データボリュームからインデックスデータ１３１ａを読み出す。Ｓ１２６の処理が完了すると、処理はＳ１２８へと進む。
【００９５】
（Ｓ１２７）検索処理部１３４は、Ｒ／Ｗ制御部１３２を制御して、インデックスボリュームからインデックスデータ１３１ａを読み出す。
（Ｓ１２８）検索処理部１３４は、読み出したインデックスデータ１３１ａから、検索リクエストで指定されたイベントデータの属性（図１３の例では送信元ＩＰアドレス）に対応するイベントデータＩＤの集合を抽出する。そして、検索処理部１３４は、抽出した集合に含まれるイベントデータＩＤの一覧をクライアント装置１１０に送信する。
【００９６】
（Ｓ１２９）イベントデータＩＤの一覧を受信したクライアント装置１１０は、受信した一覧の中から所望のイベントデータＩＤを選択し、選択したイベントデータＩＤを指定する読み出しリクエストをサーバ装置１３０に送信する。検索処理部１３４は、クライアント装置１１０から読み出しリクエストを受信する。
【００９７】
（Ｓ１３０、Ｓ１３１）検索処理部１３４は、Ｒ／Ｗ制御部１３２を制御し、読み出しリクエストで指定されたイベントデータＩＤ（指定イベントデータＩＤ）に対応するイベントデータをデータボリュームから読み出す。そして、検索処理部１３４は、読み出したイベントデータをクライアント装置１１０に送信する。Ｓ１３１の処理が完了すると、図１１及び図１２に示した一連の処理は終了する。
【００９８】
以上、イベントデータの検索に関する処理の流れについて説明した。
（速度情報の生成）
次に、図１４を参照しながら、速度情報１３１ｃの生成に関する処理の流れについて説明する。図１４は、第２実施形態に係る速度情報の生成に関する処理の流れを示したフロー図である。
【００９９】
（Ｓ１４１）検索処理部１３４は、インデックスボリュームの読み出し速度ＲIを測定する。例えば、検索処理部１３４は、インデックスボリュームから一定量のデータを読み出し、その読み出しにかかる時間から単位時間当たりの読み出しデータ量（読み出し速度ＲI）を計算する。そして、検索処理部１３４は、インデックスボリュームにおける読み出し速度ＲIを記憶部１３１に格納する。
【０１００】
（Ｓ１４２、Ｓ１４８）検索処理部１３４は、パラメータｎを１からＮまで変えながらＳ１４２のステップとＳ１４８のステップとで挟まれたステップ群の処理を実行する。なお、Ｎは１以上の整数である。但し、後述するＭとＮとの積が４以上である。例えば、Ｍが２、Ｎが２に設定される。
【０１０１】
（Ｓ１４３）検索処理部１３４は、データボリュームの書き込み速度をＷnに設定する。但し、書き込み速度Ｗn（ｎ＝１，…，Ｎ）は、データボリュームに対するデータの流量（単位時間当たりに書き込まれるデータ量）であり、事前に値が決められる。例えば、実際に観測されるストリームデータの流量を基準に書き込み速度Ｗnが決められる。なお、Ｗ1、…、ＷNは互いに異なる値に設定される。
【０１０２】
（Ｓ１４４、Ｓ１４７）検索処理部１３４は、パラメータｍを１からＭまで変えながらＳ１４４のステップとＳ１４７のステップとで挟まれたステップ群の処理を実行する。なお、Ｍは１以上の整数である。但し、ＭとＮとの積が４以上である。
【０１０３】
（Ｓ１４５）検索処理部１３４は、シーク距離をＤmに設定する。Ｄmは任意に設定可能である。但し、Ｄ1、…、ＤMは互いに異なる正値に設定される。なお、ここで設定するシーク距離Ｄmは、読み出し速度ＲD（ｎ，ｍ）を測定する際に、データボリュームにデータを書き込むアドレスと、データボリュームからデータを読み出すアドレスとの間の距離になる。
【０１０４】
（Ｓ１４６）検索処理部１３４は、Ｒ／Ｗ制御部１３２を制御し、データボリュームに対して書き込み速度Ｗnでデータを書き込むと共に、書き込みアドレスからシーク距離Ｄmだけ離れたアドレスにある所定量のデータを読み出す。そして、検索処理部１３４は、データの読み出しにかかった時間を計測し、計測した時間及び所定量に基づいて読み出し速度ＲD（ｎ，ｍ）を算出する。つまり、検索処理部１３４は、データボリュームに対するデータの読み書きを同時に実行して読み出し速度ＲD（ｎ，ｍ）を測定する。
【０１０５】
（Ｓ１４９）Ｓ１４２からＳ１４８までのステップ群の処理を実行し終えると、パラメータｎ、ｍの各組み合わせについて、読み出し速度ＲD（ｎ，ｍ）が得られる。また、ＲD（ｎ，ｍ）、Ｗn、Ｄmの組み合わせを上記の式（１）に代入することで、パラメータＡ1、Ａ2、Ａ3、Ａ4を未知数とするＮ×Ｍ個の式が得られる。
【０１０６】
検索処理部１３４は、上記のＮ×Ｍ個の式を連立させて解くことでパラメータＡ1、Ａ2、Ａ3、Ａ4を計算する。そして、検索処理部１３４は、計算したパラメータＡ1、Ａ2、Ａ3、Ａ4を記憶部１３１に格納する。Ｓ１４９の処理が完了すると、図１４に示した一連の処理は終了する。
【０１０７】
以上、速度情報１３１ｃの生成に関する処理の流れについて説明した。
［２−５．変形例］
上記の説明では、データボリュームにおけるインデックスデータ１３１ａの格納アドレスを物理アドレス又は論理アドレスで表現する方法について述べた。格納アドレスの表現方法は任意であり、ブロックデバイスにインデックスデータ１３１ａを直接書き込む場合には物理アドレスを利用しうる。また、データボリュームが論理ボリュームである場合、論理アドレスを格納アドレスの表現として利用する方が容易である。
【０１０８】
また、データボリュームにインデックスデータ１３１ａを十分に格納可能な単一のデータファイルを生成し、そのデータファイルの先頭アドレスからのオフセットを格納アドレスの表現として利用することもできる。例えば、論理ボリュームに仮想ボリュームを生成し、その仮想ボリューム内の位置を示すアドレスを格納アドレスの表現として利用することができる。このような変形も第２実施形態の技術的範囲に属する。
【０１０９】
また、上記の説明では、説明の都合上、データボリュームをストライピング構成にする場合について説明してきたが、データボリュームをＲＡＩＤ５などの他のＲＡＩＤレベルの構成にすることもできる。但し、データボリュームは、イベントデータ（ストリームデータ）の蓄積に利用される記憶領域であるため、書き込み速度を重視したＲＡＩＤレベルに設定することが好ましい。このような変形も第２実施形態の技術的範囲に属する。
【０１１０】
以上、第２実施形態について説明した。
【符号の説明】
【０１１１】
１０  情報処理装置
１１  ストレージ制御部
１２  リード制御部
２０  ネットワーク
３１  第１の記憶装置
３２  第２の記憶装置
３１ａ、３２ａ  記憶領域
４１  書き込みアドレス
４２  読み出しアドレス
【図１】
2018018133.tif 000004
【図２】
2018018133.tif 000005
【図３】
2018018133.tif 000006
【図４】
2018018133.tif 000007
【図５】
2018018133.tif 000008
【図６】
2018018133.tif 000009
【図７】
2018018133.tif 000010
【図８】
2018018133.tif 000011
【図９】
2018018133.tif 000012
【図１０】
2018018133.tif 000013
【図１１】
2018018133.tif 000014
【図１２】
2018018133.tif 000015
【図１３】
2018018133.tif 000016
【図１４】
2018018133.tif 000017