(57)【要約】【課題】書込アクセスと読み出しアクセスとの競合による書込性能の低下を抑制できる。【解決手段】記憶装置１は、イベントデータと、時系列情報ｔと、第１属性情報ｐ１と、第２属性情報ｐ２とを含むデータブロックＤＢを取得する。取得したデータブロックＤＢを、第１一時蓄積部２は第１一時記憶部３に一時蓄積し、第２一時蓄積部４は第２一時記憶部５に一時蓄積する。第１格納部６は、第１一時記憶部３が蓄積した複数のデータブロックＤＢを、第１属性情報ｐ１ごとに、かつ時系列情報ｔから特定される時系列順に並べ替えて第１記憶部７に格納する。第２格納部８は、第２一時記憶部５が蓄積した複数のデータブロックＤＢを、第２属性情報ｐ２ごとに、かつ時系列情報ｔから特定される時系列順に並べ替えて第２記憶部９に格納する。【選択図】図１
2015195067.tif 000002
【特許請求の範囲】
【請求項１】
第１属性情報と前記第１属性情報と異なる第２属性情報とに対応するイベントデータと、前記イベントデータの時系列順序を特定可能な時系列情報と、前記第１属性情報と、前記第２属性情報とを含むデータブロックを取得して、第１一時記憶部に前記データブロックを一時蓄積する第１一時蓄積部と、
前記データブロックを取得して、第２一時記憶部に前記データブロックを一時蓄積する第２一時蓄積部と、
前記第１一時記憶部が蓄積した複数の前記データブロックを、前記第１属性情報ごとに並べ替えて第１記憶部に格納する第１格納部と、
前記第２一時記憶部が蓄積した複数の前記データブロックを、前記第２属性情報ごとに並べ替えて第２記憶部に格納する第２格納部と、
を備える記憶装置。
【請求項２】
前記第１格納部は、前記第１属性情報ごとに並べ替えた前記データブロックについてさらに、時系列順に並べ替え、
前記第２格納部は、前記第２属性情報ごとに並べ替えた前記データブロックについてさらに、時系列順に並べ替える請求項１記載の記憶装置。
【請求項３】
同一の前記第１属性情報を含む複数の前記データブロックに対する読み出しリクエストを受け付けた場合に、前記データブロックの読出し対象として前記第１格納部を決定する決定部を備える請求項１記載の記憶装置。
【請求項４】
同一の前記第２属性情報を含む複数の前記データブロックに対する読み出しリクエストを受け付けた場合に、前記データブロックの読出し対象として前記第２格納部を決定する決定部を備える請求項１または請求項３記載の記憶装置。
【請求項５】
前記イベントデータは、ストリームデータから構成された所要の属性を有する一塊のデータである請求項１記載の記憶装置。
【請求項６】
コンピュータに、
第１属性情報と前記第１属性情報と異なる第２属性情報とに対応するイベントデータと、前記イベントデータの時系列順序を特定可能な時系列情報と、前記第１属性情報と、前記第２属性情報とを含むデータブロックを、第１一時記憶部に一時蓄積し、
第２一時記憶部に前記データブロックを一時蓄積し、
前記第１一時記憶部が蓄積した複数の前記データブロックを、前記第１属性情報ごとに並べ替えて第１記憶部に格納し、
前記第２一時記憶部が蓄積した複数の前記データブロックを、前記第２属性情報ごとに並べ替えて第２記憶部に格納する、
処理を実行させるデータ記憶プログラム。
【請求項７】
コンピュータが、
第１属性情報と前記第１属性情報と異なる第２属性情報とに対応するイベントデータと、前記イベントデータの時系列順序を特定可能な時系列情報と、前記第１属性情報と、前記第２属性情報とを含むデータブロックを、第１一時記憶部に一時蓄積し、
第２一時記憶部に前記データブロックを一時蓄積し、
前記第１一時記憶部が蓄積した複数の前記データブロックを、前記第１属性情報ごとに並べ替えて第１記憶部に格納し、
前記第２一時記憶部が蓄積した複数の前記データブロックを、前記第２属性情報ごとに並べ替えて第２記憶部に格納する、
処理を実行するデータ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置、データ記憶プログラム、およびデータ記憶方法に関する。
【背景技術】
【０００２】
時系列順に到来するデータをシーケンシャルに蓄積するストレージシステムとして、ＩＰ（Internet Protocol）ネットワークを流れるパケットをキャプチャするパケットキャプチャリングシステムなどが知られている。このようなストレージシステムは、クライアントとサーバから構成されて、複数のサーバが信頼性確保のために同一データを保持する冗長性を有する。また、クライアントとサーバの間に設けられるプロキシは、負荷分散のためにサーバに対してクライアントからのリクエストを振り分けるロードシェアをおこなう。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２６８８２９号公報
【特許文献２】特開２００２−７４５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
パケットキャプチャリングシステムなどのストレージシステムは、一般に、読み出しアクセスと比較して書込アクセスの頻度が高く、記憶装置に対して十分なデータの書込性能が要求される。
【０００５】
しかしながら、パケットキャプチャリングシステムなどのストレージシステムは、記憶装置に対して書込アクセスをおこなっているときに、同じ記憶装置に対して読み出しアクセスをおこなうと、記憶装置の書込性能が低下する場合がある。
【０００６】
１つの側面では、本発明は、書込アクセスと読み出しアクセスとの競合による書込性能の低下を抑制できる記憶装置、データ記憶プログラム、およびデータ記憶方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、以下に示すような、記憶装置が提供される。記憶装置は、第１一時蓄積部と、第２一時蓄積部と、第１格納部と、第２格納部と、を備える。第１一時蓄積部は、データブロックを取得して、第１一時記憶部にデータブロックを一時蓄積する。第２一時蓄積部は、データブロックを取得して、第２一時記憶部にデータブロックを一時蓄積する。データブロックは、第１属性情報と第１属性情報と異なる第２属性情報とに対応するイベントデータと、イベントデータの時系列順序を特定可能な時系列情報と、第１属性情報と、第２属性情報とを含む。第１格納部は、第１一時記憶部が蓄積した複数のデータブロックを、第１属性情報ごとに並べ替えて第１記憶部に格納する。第２格納部は、第２一時記憶部が蓄積した複数のデータブロックを、第２属性情報ごとに第２記憶部に格納する。
【発明の効果】
【０００８】
１態様によれば、記憶装置、データ記憶プログラム、およびデータ記憶方法において、書込アクセスと読み出しアクセスとの競合による書込性能の低下を抑制できる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態の記憶装置の構成の一例を示す図である。
【図２】第２の実施形態のストレージシステムの構成の一例を示す図である。
【図３】第２の実施の形態のクライアントのハードウェア構成の一例を示す図である。
【図４】第２の実施の形態のクライアントの機能ブロック構成の一例を示す図である。
【図５】第２の実施形態の書込リクエストの一例を示す図である。
【図６】第２の実施形態の検索リクエストの一例を示す図である。
【図７】第２の実施形態の読み出しリクエストの一例を示す図である。
【図８】第２の実施の形態のプロキシの機能ブロック構成の一例を示す図である。
【図９】第２の実施の形態のサーバ情報の一例を示す図である。
【図１０】第２の実施の形態のサーバの機能ブロック構成の一例を示す図である。
【図１１】第２の実施の形態のイベントデータをバッファに蓄積する様子の一例を示す図である。
【図１２】第２の実施の形態のバッファを交換する様子の一例を示す図である。
【図１３】第２の実施の形態の書込リクエストの発生順序と、サーバごとのイベントデータの格納状態の一例を示す図である。
【図１４】図１４は、プロキシ１３が転送する書込リクエストに含まれるイベントデータの一例を示す図である。
【図１５】第２の実施の形態の読み出しリクエストと、そのリプライの一例を示す図である。
【図１６】第２の実施形態の書込リクエスト生成処理のフローチャートを示す図である。
【図１７】第２の実施形態の転送先サーバ決定処理のフローチャートを示す図である。
【図１８】第２の実施形態のバッファ制御処理のフローチャートを示す図である。
【図１９】第２の実施形態のソート処理のフローチャートを示す図である。
【発明を実施するための形態】
【００１０】
以下、実施の形態について、図面を参照しながら詳細に説明する。
［第１の実施形態］
まず、第１の実施形態の記憶装置について図１を用いて説明する。図１は、第１の実施形態の記憶装置の構成の一例を示す図である。
【００１１】
記憶装置１は、時系列に到来するデータを記憶部に記憶する。時系列に到来するデータは、連続的な受信処理や書込処理を要求されるデータであり、たとえば、通信パケットのキャプチャデータや、通信ログなどのログデータなどがある。記憶部は、データを格納可能なストレージデバイスであり、たとえば、ＨＤＤ（Hard Disk Drive）やテープ装置などである。
【００１２】
記憶装置１は、第１一時蓄積部２と、第２一時蓄積部４と、第１格納部６と、第２格納部８と、を備える。記憶装置１は、データブロックＤＢを取得する。データブロックＤＢは、イベントデータと、時系列情報ｔと、第１属性情報ｐ１と、第２属性情報ｐ２とを含む。データブロックＤＢは、たとえば、図示しない他の情報処理装置により収集されたデータ、あるいは図示しない他の情報処理装置により生成されたデータにもとづいて、他の情報処理装置が生成する。記憶装置１は、他の情報処理装置からデータブロックＤＢを取得する。
【００１３】
イベントデータは、図示しない他の情報処理装置により収集されたデータ、あるいは図示しない他の情報処理装置により生成されたデータから構成されるデータである。ここでいうデータの構成は、データのブロック化など、所要のフォーマットへの変更を含む。
【００１４】
時系列情報ｔは、イベントデータの時系列順序、すなわちデータの時間的前後関係を特定可能な情報である。時系列情報ｔは、データの生成時刻や発生時刻、送信時刻、受信時刻などデータに関する時刻、あるいはシーケンシャル番号などである。
【００１５】
第１属性情報ｐ１および第２属性情報ｐ２は、イベントデータの属性を示す情報である。第１属性情報ｐ１および第２属性情報ｐ２は、たとえば、データの送信元や送信先、通信プロトコルなどがある。
【００１６】
第１一時蓄積部２は、データブロックＤＢを取得する。第１一時蓄積部２は、取得したデータブロックＤＢを第１一時記憶部３に一時蓄積する。第１一時記憶部３は、データブロックＤＢを一時記憶するバッファであり、たとえば、ＲＡＭ（Random Access Memory）である。
【００１７】
第２一時蓄積部４は、データブロックＤＢを取得する。第２一時蓄積部４は、取得したデータブロックＤＢを第２一時記憶部５に一時蓄積する。第２一時記憶部５は、データブロックＤＢを一時記憶するバッファであり、たとえば、ＲＡＭである。
【００１８】
第１格納部６は、第１一時記憶部３が蓄積した複数のデータブロックＤＢを、第１属性情報ｐ１ごとに、かつ時系列情報ｔから特定される時系列順に並べ替えて第１記憶部７に格納する。第１記憶部７は、記憶部の１つであり、ＨＤＤやテープ装置などのストレージデバイスである。
【００１９】
第２格納部８は、第２一時記憶部５が蓄積した複数のデータブロックＤＢを、第２属性情報ｐ２ごとに、かつ時系列情報ｔから特定される時系列順に並べ替えて第２記憶部９に格納する。第２記憶部９は、記憶部の１つであり、ＨＤＤやテープ装置などのストレージデバイスである。
【００２０】
ここで、記憶装置１が取得したデータブロックＤＢを記憶部に格納する流れについて、データブロックＤＢ１，ＤＢ２，ＤＢ３，ＤＢ４を用いて説明する。記憶装置１が取得したデータブロックＤＢは、時系列順序で古い順に、データブロックＤＢ１と、データブロックＤＢ２と、データブロックＤＢ３と、データブロックＤＢ４がある。データブロックＤＢ１は、イベントデータと、時系列情報ｔ１と、第１属性情報ｐ１１と、第２属性情報ｐ２１を含む。データブロックＤＢ２は、イベントデータと、時系列情報ｔ２と、第１属性情報ｐ１１と、第２属性情報ｐ２２を含む。データブロックＤＢ３は、イベントデータと、時系列情報ｔ３と、第１属性情報ｐ１２と、第２属性情報ｐ２２を含む。データブロックＤＢ４は、イベントデータと、時系列情報ｔ４と、第１属性情報ｐ１２と、第２属性情報ｐ２１を含む。
【００２１】
第１一時蓄積部２は、データブロックＤＢを取得した順に第１一時記憶部３に蓄積する。したがって、第１一時記憶部３は、時系列順序で古い順に、データブロックＤＢ１と、データブロックＤＢ２と、データブロックＤＢ３と、データブロックＤＢ４を蓄積する。
【００２２】
第２一時蓄積部４は、データブロックＤＢを取得した順に第２一時記憶部５に蓄積する。したがって、第２一時記憶部５は、時系列順序で古い順に、データブロックＤＢ１と、データブロックＤＢ２と、データブロックＤＢ３と、データブロックＤＢ４を蓄積する。
【００２３】
第１格納部６は、データブロックＤＢ１，ＤＢ２，ＤＢ３，ＤＢ４を、第１属性情報ｐ１ごとに並べ替える。さらに、第１格納部６は、第１属性情報ｐ１ごとに並べ替えたデータブロックＤＢごとに、時系列情報ｔから特定される時系列順に並べ替えて第１記憶部７に格納する。すなわち、第１格納部６は、データブロックＤＢ１，ＤＢ２がともに第１属性情報ｐ１１であることから、データブロックＤＢ１，ＤＢ２を時系列順（時系列情報ｔ１，ｔ２の順）にして第１記憶部７に格納する。また、第１格納部６は、データブロックＤＢ３，ＤＢ４がともに第１属性情報ｐ１２であることから、データブロックＤＢ３，ＤＢ４を時系列順（時系列情報ｔ３，ｔ４の順）にして第１記憶部７に格納する。これにより、第１記憶部７は、データブロックＤＢ１，ＤＢ２，ＤＢ３，ＤＢ４の順にデータブロックＤＢを格納する。
【００２４】
第２格納部８は、データブロックＤＢ１，ＤＢ２，ＤＢ３，ＤＢ４を、第２属性情報ｐ２ごとに並べ替える。さらに、第２格納部８は、第２属性情報ｐ２ごとに並べ替えたデータブロックＤＢごとに、時系列情報ｔから特定される時系列順に並べ替えて第２記憶部９に格納する。すなわち、第２格納部８は、データブロックＤＢ１，ＤＢ４がともに第２属性情報ｐ２１であることから、データブロックＤＢ１，ＤＢ４を時系列順（時系列情報ｔ１，ｔ４の順）にして第２記憶部９に格納する。また、第２格納部８は、データブロックＤＢ２，ＤＢ３がともに第２属性情報ｐ２２であることから、データブロックＤＢ２，ＤＢ３を時系列順（時系列情報ｔ２，ｔ３の順）にして第２記憶部９に格納する。これにより、第２記憶部９は、データブロックＤＢ１，ＤＢ４，ＤＢ２，ＤＢ３の順にデータブロックＤＢを格納する。
【００２５】
これにより、記憶装置１は、第１属性情報ｐ１ごとに時系列順に並ぶデータを記憶部（第１記憶部７）に格納することができる。また、記憶装置１は、第２属性情報ｐ２ごとに時系列順に並ぶデータを記憶部（第２記憶部９）に格納することができる。
【００２６】
したがって、記憶装置１は、第１属性情報ｐ１のデータブロックＤＢについての時系列順序のデータアクセスに対してシーケンシャルに読み出しをおこなうことができる。また、記憶装置１は、第２属性情報ｐ２のデータブロックＤＢについての時系列順序のデータアクセスに対してシーケンシャルに読み出しをおこなうことができる。
【００２７】
このような記憶装置１は、記憶部に対する読み出し負荷を低減することができることから、書込アクセスと読み出しアクセスとの競合による書込性能の低下を抑制できる。
なお、記憶装置１は、第１一時蓄積部２と第２一時蓄積部４とを別個に備えるものとして説明したが、一時蓄積部２ａとして第１一時蓄積部２が第２一時蓄積部４を兼ねるものであってもよい。
【００２８】
また、記憶装置１は、第１一時記憶部３と第２一時記憶部５とを別個に備えるものとして説明したが、一時記憶部３ａとして第１一時記憶部３が第２一時記憶部５を兼ねるものであってもよい。
【００２９】
［第２の実施形態］
次に、第２の実施形態のストレージシステムの構成について図２を用いて説明する。図２は、第２の実施形態のストレージシステムの構成の一例を示す図である。
【００３０】
ストレージシステム１０は、通信ネットワーク（たとえば、ＩＰ（Internet Protocol）ネットワーク）を流れるパケットをキャプチャするパケットキャプチャリングシステムである。なお、パケットキャプチャリングシステムは、時系列順序のデータを蓄積するストレージシステムの一例であって、時系列順序のデータをストレージデバイスに蓄積するものであればこれに限らない。
【００３１】
ストレージシステム１０は、クライアント１１と、ネットワーク１２，１４と、プロキシ１３と、サーバ１５，１６，１７を備える。ストレージシステム１０は、クライアント１１が受信したストリームデータをプロキシ１３を介してサーバ１５，１６，１７に記録する。ストリームデータは、信頼性確保のため冗長化（ミラーリング）されてサーバ１５，１６，１７のうち２以上のサーバに記録される。なお、図２に図示するサーバは、サーバ１５，１６，１７の３つであるが、２以上であればいくつであってもよい。
【００３２】
なお、ストリームデータは、時系列に到来するデータであり、連続的な受信処理や書込処理を要求されるデータであり、たとえば、通信パケットのキャプチャデータである。
クライアント１１は、ネットワーク１２を介してプロキシ１３と接続する。プロキシ１３は、ネットワーク１４を介してサーバ１５，１６，１７と接続する。クライアント１１は、ストリームデータから書込リクエストを生成し、プロキシ１３に書込リクエストを送信する。プロキシ１３は、書込リクエストを受信してサーバ１５，１６，１７のうち２以上のサーバに書込リクエストを振り分ける。サーバ１５，１６，１７は、内蔵するストレージデバイス、または外部接続するストレージデバイスに書込リクエストの対象となったデータを格納する。したがって、ストレージシステム１０は、２以上のサーバが同じストリームデータを記憶する。
【００３３】
なお、ストレージシステム１０は、サーバ１５，１６，１７を別個の情報処理装置に備える場合に限らず、サーバ１５，１６，１７を１つの情報処理装置１５ａ上に備えるものであってもよい。また、ストレージシステム１０は、サーバ１５，１６，１７のうち少なくとも１つのサーバと、プロキシ１３とを１つの情報処理装置１３ａ上に備えるものであってもよい。
【００３４】
次に、第２の実施形態のクライアント１１のハードウェア構成について図３を用いて説明する。図３は、第２の実施の形態のクライアントのハードウェア構成の一例を示す図である。
【００３５】
クライアント１１は、制御部（コンピュータ）１００と、制御部１００に接続する複数の周辺機器を含む。制御部１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してＲＡＭ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、たとえばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３６】
ＲＡＭ１０２は、制御部１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００３７】
バス１０９に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３８】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しをおこなう。ＨＤＤ１０３は、制御部１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００３９】
グラフィック処理装置１０４には、モニタ１１０が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令にしたがって、画像をモニタ１１０の画面に表示させる。
【００４０】
入力インタフェース１０５には、キーボード１１１とマウス１１２とが接続されている。入力インタフェース１０５は、キーボード１１１やマウス１１２から送られてくる信号をプロセッサ１０１に送信する。なお、マウス１１２は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４１】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１１３に記録されたデータの読み取りをおこなう。光ディスク１１３は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１１３には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４２】
機器接続インタフェース１０７は、制御部１００に周辺機器を接続するための通信インタフェースである。たとえば機器接続インタフェース１０７には、メモリ装置１１４やメモリリーダライタ１１５を接続することができる。メモリ装置１１４は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ１１５は、メモリカード１１６へのデータの書き込み、またはメモリカード１１６からのデータの読み出しをおこなう装置である。メモリカード１１６は、カード型の記録媒体である。
【００４３】
ネットワークインタフェース１０８は、ネットワーク１２に接続されている。ネットワークインタフェース１０８は、ネットワーク１２を介して、他のコンピュータまたは通信機器との間でデータの送受信をおこなう。
【００４４】
以上のようなハードウェア構成によって、第２の実施形態の制御部１００の処理機能を実現することができる。なお、プロキシ１３、サーバ１５，１６，１７、および第１の実施形態に示した記憶装置１も、図３に示したクライアント１１と同様のハードウェアにより実現することができる。
【００４５】
制御部１００は、たとえば、コンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施形態の処理機能を実現する。制御部１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、制御部１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。また、制御部１００に実行させるプログラムを、光ディスク１１３、メモリ装置１１４、メモリカード１１６などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４６】
次に、第２の実施形態のクライアント１１の機能ブロック構成について図４を用いて説明する。図４は、第２の実施の形態のクライアントの機能ブロック構成の一例を示す図である。
【００４７】
クライアント１１は、ストレージシステム１０においてストリームデータを受信する。クライアント１１は、書込リクエスト、検索リクエスト、および読み出しリクエストをプロキシ１３に送信する。クライアント１１は、書込リクエスト、検索リクエスト、および読み出しリクエストに応じたリプライを受信する。
【００４８】
クライアント１１は、書込リクエスト生成部２０と、検索リクエスト生成部２５と、読み出しリクエスト生成部２６と、リクエスト送信部２７と、リプライ受信部２８とを含む。
【００４９】
書込リクエスト生成部２０は、ストリームデータを受信して書込リクエストを生成する。書込リクエスト生成部２０は、データ受信部２１と、イベントデータ構成部２２と、イベントデータＩＤ付与部２３と、メタデータ付与部２４とを含む。
【００５０】
データ受信部２１は、ストリームデータを受信する。たとえば、データ受信部２１は、スイッチのミラーポートと接続し、スイッチを流れるパケットをストリームデータとして取得する。
【００５１】
イベントデータ構成部２２は、データ受信部２１が受信したストリームデータからイベントデータを構成する。イベントデータは、所要の属性を有する一塊のデータである。たとえばパケットキャプチャリングシステムの場合、ストリームデータは、ＩＰネットワークを流れるパケットである。イベントデータは、ストリームデータのうちから特定のＴＣＰ（Transmission Control Protocol）コネクションを流れるパケットを抽出したものである。この場合、送信元ＩＰアドレス、送信先ＩＰアドレス、プロトコルなどが所要の属性に相当する。
【００５２】
イベントデータＩＤ付与部２３は、イベントデータ構成部２２が構成したイベントデータを一意に特定可能な識別情報を、イベントデータＩＤ（IDentification）としてイベントデータに付与する。
【００５３】
メタデータ付与部２４は、イベントデータの属性をメタデータとしてイベントデータに付与する。これにより、書込リクエスト生成部２０は、イベントデータとイベントデータＩＤとメタデータを含む書込リクエストを生成することができる。書込リクエスト生成部２０が生成した書込リクエストは、リクエスト送信部２７によりプロキシ１３に送信される。書込リクエストのリプライは、リプライ受信部２８によりプロキシ１３から受信される。
【００５４】
検索リクエスト生成部２５は、検索条件を含む検索リクエストを生成する。検索リクエスト生成部２５が生成した検索リクエストは、リクエスト送信部２７によりプロキシ１３に送信される。検索リクエストのリプライは、リプライ受信部２８によりプロキシ１３から受信される。検索リクエストのリプライは、検索条件に対する検索結果であるイベントデータＩＤを含む。
【００５５】
読み出しリクエスト生成部２６は、検索リクエストで指定した検索条件と、検索リクエストのリプライに含まれるイベントデータＩＤとを含む読み出しリクエストを生成する。読み出しリクエスト生成部２６が生成した読み出しリクエストは、リクエスト送信部２７によりプロキシ１３に送信される。読み出しリクエストのリプライは、リプライ受信部２８によりプロキシ１３から受信される。
【００５６】
次に、第２の実施形態の書込リクエストについて図５を用いて説明する。図５は、第２の実施形態の書込リクエストの一例を示す図である。
書込リクエスト２００は、イベントデータＩＤと、メタデータと、イベントデータを含む。イベントデータＩＤは「１」である。メタデータは、送信元ＩＰアドレスと、送信先ＩＰアドレスと、通信プロトコルと、開始時刻とを含む。送信元ＩＰアドレスは「１９２．１６８．０．１」であり、送信先ＩＰアドレスは「１９２．１６８．１００．１００」であり、通信プロトコルは「ＴＣＰ」であり、開始時刻は「２０１３／０９／３０／１２：００」である。イベントデータはストレージデバイスの記憶対象となるデータであり、たとえばパケットキャプチャデータである。
【００５７】
次に、第２の実施形態の検索リクエストについて図６を用いて説明する。図６は、第２の実施形態の検索リクエストの一例を示す図である。
検索リクエスト２１０は、検索条件を含む。検索条件は、１または２以上の検索項目を指定可能であり、メタデータに含まれる属性ごとに検索項目を指定可能である。検索リクエスト２１０は、検索項目として送信元ＩＰアドレスと、送信先ＩＰアドレスと、通信プロトコルと、開始時刻とを含む。送信元ＩＰアドレスは「１９２．１６８．０．１」であり、送信先ＩＰアドレスは「＊」であり、通信プロトコルは「＊」であり、開始時刻は「２０１３／０９／３０／１２：００−２０１３／０９／３０／１３：００」である。なお、「＊」は、ワイルドカードを意味する。
【００５８】
次に、第２の実施形態の読み出しリクエストについて図７を用いて説明する。図７は、第２の実施形態の読み出しリクエストの一例を示す図である。
読み出しリクエスト２２０は、イベントデータＩＤと検索条件とを含む。読み出しリクエスト２２０は、検索リクエスト２１０のリプライに含まれるイベントデータＩＤの一部または全部のイベントデータＩＤを指定可能である。イベントデータＩＤは、「３，５」である。読み出しリクエスト２２０に含まれる検索条件は、イベントデータＩＤを得るのに用いられた検索条件、すなわち、検索リクエストに含まれた検索条件である。
【００５９】
次に、第２の実施形態のプロキシ１３の機能ブロック構成について図８を用いて説明する。図８は、第２の実施の形態のプロキシの機能ブロック構成の一例を示す図である。
プロキシ１３は、クライアント１１からリクエスト（書込リクエスト、検索リクエスト、読み出しリクエスト）を受信し、受信したリクエストをサーバ１５，１６，１７に振り分けて送信する。また、プロキシ１３は、サーバ１５，１６，１７からのリプライを受信してクライアント１１に送信する。
【００６０】
プロキシ１３は、リクエスト受信部３０と、転送先サーバ決定部３１と、サーバ情報管理部３２と、リクエスト送信部３３と、リプライ受信部３４と、リプライ送信部３５を含む。
【００６１】
リクエスト受信部３０は、クライアント１１からリクエストを受信する。転送先サーバ決定部３１は、クライアント１１から受信したリクエストの転送先を決定する。転送先サーバ決定部３１は、クライアント１１から受信したリクエストが書込リクエストの場合、ミラーリング対象のサーバ１５，１６，１７のすべてを書込リクエストの転送先に決定する。
【００６２】
転送先サーバ決定部３１は、クライアント１１から受信したリクエストが検索リクエストの場合、サーバ１５，１６，１７のいずれかを検索リクエストの転送先に決定する。転送先サーバ決定部３１は、ラウンドロビンで検索リクエストの転送先を決定してもよいし、無作為に検索リクエストの転送先を決定してもよい。また、転送先サーバ決定部３１は、サーバ１５，１６，１７の負荷を検出して負荷の大きさに応じて検索リクエストの転送先を決定してもよい。
【００６３】
転送先サーバ決定部３１は、クライアント１１から受信したリクエストが読み出しリクエストの場合、サーバ情報管理部３２が管理するサーバ情報にもとづいてサーバ１５，１６，１７のいずれかを読み出しリクエストの転送先に決定する。サーバ情報は、サーバがイベントデータをストレージデバイスに蓄積（記憶）する際にイベントデータのソートに用いるソートキーと、サーバとの関係を示す情報である。
【００６４】
リクエスト送信部３３は、転送先サーバ決定部３１が決定した転送先にしたがいクライアント１１から受信したリクエストをサーバに送信する。
リプライ受信部３４は、リクエストを送信したサーバからリプライを受信する。リプライ送信部３５は、リプライ受信部３４が受信したリプライをクライアント１１に送信する。
【００６５】
なお、リクエスト受信部３０と、転送先サーバ決定部３１と、サーバ情報管理部３２と、リクエスト送信部３３とは、読み出しリクエストを転送する読み出しリクエスト転送部として機能する。また、リクエスト受信部３０と、転送先サーバ決定部３１と、リクエスト送信部３３とは、検索リクエストを転送する検索リクエスト転送部として機能する。また、リクエスト受信部３０と、転送先サーバ決定部３１と、リクエスト送信部３３とは、書込リクエストを転送する書込リクエスト転送部として機能する。
【００６６】
次に、第２の実施形態のサーバ情報について図９を用いて説明する。図９は、第２の実施の形態のサーバ情報の一例を示す図である。
サーバ情報２３０は、プロキシ１３のサーバ情報管理部３２が管理する情報である。サーバ情報２３０は、サーバＩＤとソートキーとの対応関係を示す。サーバＩＤは、サーバを一意に特定可能な情報である。ソートキーは、サーバがイベントデータのソートに用いる項目である。ソートキーは、イベントデータのミラーリングをおこなっているサーバごとに異なる項目が設定される。たとえば、サーバＩＤ「＃１」は、サーバ１５を特定可能にする。ソートキー「送信元ＩＰアドレス」は、サーバが送信元ＩＰアドレスでイベントデータをソートすることを示す。したがって、サーバＩＤ「＃１」で特定されるサーバ１５は、送信元ＩＰアドレスでイベントデータをソートする。同様にして、サーバＩＤ「＃２」で特定されるサーバ１６は、送信先ＩＰアドレスでイベントデータをソートし、サーバＩＤ「＃３」で特定されるサーバ１７は、通信プロトコルでイベントデータをソートする。
【００６７】
次に、第２の実施形態のサーバ１５，１６，１７の機能ブロック構成について図１０を用いて説明する。図１０は、第２の実施の形態のサーバの機能ブロック構成の一例を示す図である。なお、図１０を用いてサーバ１５について説明するが、サーバ１６，１７もサーバ１５と同様である。
【００６８】
サーバ１５は、プロキシ１３からリクエスト（書込リクエスト、検索リクエスト、読み出しリクエスト）を受信し、受信したリクエストに応じたリプライをプロキシ１３に送信する。
【００６９】
サーバ１５は、リクエスト受信部４０と、バッファ制御部４１と、バッファ４２，４３と、ソート部４４と、キー情報記憶部４５と、検索部４６と、読み出し／書込部４７と、リプライ送信部４８と、ストレージデバイス５０を含む。
【００７０】
リクエスト受信部４０は、プロキシ１３からリクエストを受信する。バッファ制御部４１は、リクエスト受信部４０が書込リクエストを受信した場合に、バッファ４２，４３のいずれか一方にイベントデータを格納する。リプライ送信部４８は、書込リクエストに対するリプライをプロキシ１３に送信する。
【００７１】
バッファ制御部４１は、イベントデータの格納先となるバッファ（書込用バッファ）がオーバフローする前に、イベントデータの格納先を空になっているもう１つのバッファ（ソート用バッファ）に切り替える。バッファ４２，４３は、ストレージデバイス５０と比較して高速なアクセスが可能なＲＡＭ１０２などに設けられる。
【００７２】
ソート部４４は、バッファの切り替えによりイベントデータの格納先から外れたバッファをソート対象に選択する。たとえば、バッファ制御部４１がイベントデータの格納先をバッファ４２からバッファ４３に切り替えた場合、ソート部４４は、バッファ４２をソート対象に選択する。
【００７３】
ソート部４４は、キー情報記憶部４５が記憶するソートキーを用いて、ソート対象のバッファが格納するイベントデータをソートする。ソートキーは、プロキシ１３のサーバ情報管理部３２が管理するサーバ情報に含まれるソートキーに対応する。キー情報記憶部４５は、あらかじめプロキシ１３からソートキーを受信して記憶する。
【００７４】
ソート部４４は、同じ属性を有するイベントデータが複数ある場合に、さらに時系列順にソートする。読み出し／書込部４７は、ソート部４４がソートしたイベントデータを、ストレージデバイス５０に書き込む。ストレージデバイス５０は、たとえば、ＨＤＤ５１，５２，５３のように、１または２以上のストレージデバイス（ストレージ装置）から構成される。読み出し／書込部４７は、ストレージデバイス５０のうち１つのストレージデバイス（たとえば、ＨＤＤ５１）を選択して、ソートしたイベントデータを書き込む。これにより、同じ属性を有するイベントデータは、時系列順にストレージデバイスにシーケンシャルに書き込まれる。
【００７５】
ソート部４４は、ソート対象のバッファからイベントデータを削除してバッファを空にする。このように、サーバ１５は、書込リクエストの処理と非同期に、ストレージデバイス５０にイベントデータを書き込む。
【００７６】
検索部４６は、リクエスト受信部４０が検索リクエストを受信した場合に、検索条件に応じた検索をおこない、読み出し／書込部４７を介して検索結果（たとえば、イベントデータＩＤのリスト）を得る。リプライ送信部４８は、検索リクエストに対する検索結果をリプライとしてプロキシ１３に送信する。
【００７７】
読み出し／書込部４７は、リクエスト受信部４０が読み出しリクエストを受信した場合に、イベントデータＩＤにもとづいてイベントデータとメタデータをストレージデバイス５０から読み出す。リプライ送信部４８は、読み出しリクエストに対するイベントデータとメタデータをリプライとしてプロキシ１３に送信する。
【００７８】
なお、読み出しリクエストに含まれるイベントデータＩＤがソートキーと同じ属性の検索条件を含む場合、読み出しリクエストに対するイベントデータは、ストレージデバイス５０の連続する記憶領域に書き込まれている蓋然性が高い。たとえば、読み出し対象のイベントデータが同一のバッファフラッシュでストレージデバイス５０に書き込まれた場合、読み出し対象のイベントデータは、単一の記憶領域（たとえば、ＨＤＤにおける同一セグメント）、または連続する記憶領域にある。そのため、読み出し／書込部４７は、ストレージデバイス５０からシーケンシャルにイベントデータを読み出すことができる。このような読み出し処理は、ストレージデバイス５０に与える負荷が小さく、同時に実行される書込処理における書込性能の低下を抑制できる。
【００７９】
次に、第２の実施形態のイベントデータのバッファへの蓄積と、バッファの交換について、図１１と図１２を用いて説明する。まず、イベントデータのバッファへの蓄積について図１１を用いて説明する。図１１は、第２の実施の形態のイベントデータをバッファに蓄積する様子の一例を示す図である。
【００８０】
バッファ制御部４１は、書込リクエストに対応するイベントデータの格納先としてバッファ４２を選択し、バッファ４３を選択していない。ＨＤＤ５１は、バッファフラッシュしたイベントデータの格納先である。
【００８１】
なお、図示するバッファ４２とバッファ４３の白塗り部分は、イベントデータが書き込まれていない領域を示す。図示するバッファ４２のハッチングパタンは、イベントデータが書き込まれている領域を示す。異なるハッチングパタンは、イベントデータの属性が異なることを示す。
【００８２】
バッファ制御部４１は、書込リクエストを受信する都度、バッファ４２にイベントデータを書き込む。そのため、バッファ４２は、属性の異なるイベントデータをランダムに並べて蓄積する。
【００８３】
次に、バッファの交換について図１２を用いて説明する。図１２は、第２の実施の形態のバッファを交換する様子の一例を示す図である。
バッファ制御部４１は、バッファ４２がオーバフローする前に、イベントデータの格納先を空になっているバッファ４３に切り替える。ソート部４４は、イベントデータの格納先から外れたバッファ４２をソート対象に選択する。ソート部４４は、バッファ４２が格納するイベントデータをソートし、読み出し／書込部４７を介してＨＤＤ５１にソート済みイベントデータを格納する。このようにして、同じ属性を有するイベントデータは、ＨＤＤ５１にシーケンシャルに書き込まれる。
【００８４】
次に、プロキシ１３が転送する書込リクエストとサーバ１５，１６，１７ごとのイベントデータの格納状態について図１３を用いて説明する。図１３は、第２の実施の形態の書込リクエストの発生順序と、サーバごとのイベントデータの格納状態の一例を示す図である。
【００８５】
プロキシ１３は、イベントデータＥＤ１，ＥＤ２，ＥＤ３，ＥＤ４，ＥＤ５の順に書込リクエストを、サーバ１５，１６，１７に対して送信する。サーバ１５は、送信元ＩＰアドレスをソートキーにして、イベントデータに付されるメタデータにもとづいてイベントデータをソートする。これにより、サーバ１５は、たとえば、イベントデータＥＤ３，ＥＤ５，ＥＤ２，ＥＤ４，ＥＤ１の順にイベントデータを格納する。サーバ１６は、送信先ＩＰアドレスをソートキーにして、イベントデータに付されるメタデータにもとづいてイベントデータをソートする。これにより、サーバ１６は、たとえば、イベントデータＥＤ１，ＥＤ４，ＥＤ３，ＥＤ２，ＥＤ５の順にイベントデータを格納する。サーバ１７は、通信プロトコルをソートキーにして、イベントデータに付されるメタデータにもとづいてイベントデータをソートする。これにより、サーバ１７は、たとえば、イベントデータＥＤ４，ＥＤ２，ＥＤ３，ＥＤ１，ＥＤ５の順にイベントデータを格納する。
【００８６】
ここで、プロキシ１３が送信した書込リクエストに含まれるイベントデータについて、図１４に示すより具体的な一例を用いて説明する。図１４は、プロキシ１３が転送する書込リクエストに含まれるイベントデータの一例を示す図である。
【００８７】
図１３に示したイベントデータＥＤ１，ＥＤ２，ＥＤ３，ＥＤ４，ＥＤ５について、イベントデータＩＤと送信元ＩＰアドレスの詳細を示す。イベントデータＥＤ１は、イベントデータＩＤが「１」であり、送信元ＩＰアドレスが「１９２．１６８．０．３」である。イベントデータＥＤ２は、イベントデータＩＤが「２」であり、送信元ＩＰアドレスが「１９２．１６８．０．２」である。イベントデータＥＤ３は、イベントデータＩＤが「３」であり、送信元ＩＰアドレスが「１９２．１６８．０．１」である。イベントデータＥＤ４は、イベントデータＩＤが「４」であり、送信元ＩＰアドレスが「１９２．１６８．０．２」である。イベントデータＥＤ５は、イベントデータＩＤが「５」であり、送信元ＩＰアドレスが「１９２．１６８．０．１」である。
【００８８】
これによれば、サーバ１５は、送信元ＩＰアドレスでソートしていることから、イベントデータをイベントデータＥＤ３，ＥＤ５、イベントデータＥＤ２，ＥＤ４、イベントデータＥＤ１の３つのデータ群にソートする。さらに、サーバ１５は、各データ群について時系列順にソートする。このようにして、サーバ１５は、図１３に示したように、イベントデータＥＤ３，ＥＤ５，ＥＤ２，ＥＤ４，ＥＤ１の順にイベントデータを格納する。
【００８９】
同様にして、サーバ１６は、送信先ＩＰアドレスでイベントデータをソートし、イベントデータＥＤ１，ＥＤ４，ＥＤ３，ＥＤ２，ＥＤ５の順にイベントデータを格納する。サーバ１７は、通信プロトコルでイベントデータをソートし、イベントデータＥＤ４，ＥＤ２，ＥＤ３，ＥＤ１，ＥＤ５の順にイベントデータを格納する。
【００９０】
このように、サーバ１５，１６，１７は、異なるソートキーを用いてイベントデータをソートしているので、サーバごとにイベントデータの格納順序が異なる。
次に、プロキシ１３が転送する読み出しリクエストと、そのリプライについて図１５を用いて説明する。図１５は、第２の実施の形態の読み出しリクエストと、そのリプライの一例を示す図である。
【００９１】
プロキシ１３は、イベントデータＩＤのリスト「３，５」と、イベントデータＩＤのリスト「３，５」を検索結果として得た検索条件を含む読み出しリクエストをサーバ１５に転送する。プロキシ１３は、検索条件が送信元ＩＰアドレスを検索項目としていることから送信元ＩＰアドレスをソートキーとするサーバ１５を読み出しリクエストの転送先とする。サーバ１５は、イベントデータＥＤ３，ＥＤ５をシーケンシャルに読み出し可能な領域に格納していることから、サーバ１６，１７と比較してイベントデータＥＤ３，ＥＤ５の読み出し負荷が小さい。サーバ１５は、ストレージデバイス５０からイベントデータＥＤ３，ＥＤ５を読み出すと、イベントデータＥＤ３，ＥＤ５をリプライに含めてプロキシ１３に送信する。プロキシ１３は、このように読み出し対象となるイベントデータを検索結果として得た検索条件に応じて読み出しリクエストの転送先を決定することで、ストレージシステム１０における読み出し負荷を低減する。また、このようなストレージシステム１０は、書込アクセスと読み出しアクセスとの競合による書込性能の低下を抑制できる。
【００９２】
次に、第２の実施形態の書込リクエスト生成処理について図１６を用いて説明する。図１６は、第２の実施形態の書込リクエスト生成処理のフローチャートを示す図である。
書込リクエスト生成処理は、受信したストリームデータから書込リクエストを生成する処理である。書込リクエスト生成処理は、クライアント１１の書込リクエスト生成部２０がストリームデータを受信して実行する処理である。
【００９３】
［ステップＳ１１］書込リクエスト生成部２０は、受信データからイベントデータを構成する。
［ステップＳ１２］書込リクエスト生成部２０は、イベントデータにイベントデータＩＤを付与する。
【００９４】
［ステップＳ１３］書込リクエスト生成部２０は、イベントデータにメタデータを付与して書込リクエスト生成処理を終了する。
次に、第２の実施形態の転送先サーバ決定処理について図１７を用いて説明する。図１７は、第２の実施形態の転送先サーバ決定処理のフローチャートを示す図である。
【００９５】
転送先サーバ決定処理は、受信したリクエストの転送先を決定する処理である。転送先サーバ決定処理は、転送先サーバ決定部３１がリクエストを受信して実行する処理である。
【００９６】
［ステップＳ２１］転送先サーバ決定部３１は、受信したリクエストの種別を判定する。転送先サーバ決定部３１は、受信したリクエストが書込リクエストであればステップＳ２２にすすみ、検索リクエストであればステップＳ２４にすすみ、読み出しリクエストであればステップＳ２６にすすむ。
【００９７】
［ステップＳ２２］転送先サーバ決定部３１は、ミラーリング対象のすべてのサーバを選択する。
［ステップＳ２３］転送先サーバ決定部３１は、書込リクエストを選択したサーバに転送して、転送先サーバ決定処理を終了する。
【００９８】
［ステップＳ２４］転送先サーバ決定部３１は、任意のサーバを選択する。転送先サーバ決定部３１は、ラウンドロビンで、あるいは無作為にサーバを選択してもよいし、サーバの負荷に応じて選択してもよい。
【００９９】
［ステップＳ２５］転送先サーバ決定部３１は、検索リクエストを選択したサーバに転送して、転送先サーバ決定処理を終了する。
［ステップＳ２６］転送先サーバ決定部３１は、読み出しリクエストに含まれる検索条件を取得する。
【０１００】
［ステップＳ２７］転送先サーバ決定部３１は、サーバ情報管理部３２からサーバ情報を取得する。
［ステップＳ２８］転送先サーバ決定部３１は、ステップＳ２６で取得した検索条件と、ステップＳ２７で取得したサーバ情報に含まれるソートキーとの対応関係を判定する。転送先サーバ決定部３１は、検索条件とソートキーと同じ属性である場合に対応関係があると判定する。転送先サーバ決定部３１は、検索条件に対応するソートキーがある場合に、ソートキーに対応するサーバの有無を判定する。転送先サーバ決定部３１は、ソートキーに対応するサーバがある場合、すなわち検索条件に対応するサーバがある場合に、ステップＳ２９にすすみ、対応するサーバがない場合にステップＳ３０にすすむ。
【０１０１】
［ステップＳ２９］転送先サーバ決定部３１は、検索条件に対応するサーバを選択する。
［ステップＳ３０］転送先サーバ決定部３１は、任意のサーバを選択する。転送先サーバ決定部３１は、ラウンドロビンで、あるいは無作為にサーバを選択してもよいし、サーバの負荷に応じて選択してもよい。
【０１０２】
［ステップＳ３１］転送先サーバ決定部３１は、読み出しリクエストを選択したサーバに転送して、転送先サーバ決定処理を終了する。
次に、第２の実施形態のバッファ制御処理について図１８を用いて説明する。図１８は、第２の実施形態のバッファ制御処理のフローチャートを示す図である。
【０１０３】
バッファ制御処理は、書込用バッファの交換、および書込用バッファへのイベントデータの書き込みをおこなう処理である。バッファ制御処理は、リクエスト受信部４０が書込リクエストを受信したことを契機に、バッファ制御部４１が実行する処理である。
【０１０４】
［ステップＳ４１］バッファ制御部４１は、バッファ４２とバッファ４３の交換条件が成立したか否かを判定する。交換条件は、イベントデータの格納先となるバッファ（書込用バッファ）の空き容量が所定の閾値以下になった場合である。なお、交換条件は、書込用バッファの空き容量が所定の閾値以下になった場合に代えて、あるいはこれに加えて、前回のバッファ４２とバッファ４３の交換から所定時間が経過した場合などであってもよい。バッファ制御部４１は、バッファ４２とバッファ４３の交換条件が成立した場合にステップＳ４２にすすみ、交換条件が成立しない場合にステップＳ４３にすすむ。
【０１０５】
［ステップＳ４２］バッファ制御部４１は、書込用バッファについてバッファ４２とバッファ４３を交換する。これにより、バッファ４２とバッファ４３のうち書込用バッファはソート用バッファとなり、ソート用バッファは書込用バッファとなる。
【０１０６】
［ステップＳ４３］バッファ制御部４１は、書込リクエストの対象となったイベントデータを書込用バッファに書き込み、バッファ制御処理を終了する。
次に、第２の実施形態のソート処理について図１９を用いて説明する。図１９は、第２の実施形態のソート処理のフローチャートを示す図である。
【０１０７】
ソート処理は、バッファが蓄積するイベントデータのソートと、ストレージデバイス５０へのイベントデータの格納をおこなう処理である。ソート処理は、バッファ４２とバッファ４３の交換を契機に、ソート部４４が実行する処理である。
【０１０８】
［ステップＳ５１］ソート部４４は、キー情報記憶部４５からソートキーを取得する。
［ステップＳ５２］ソート部４４は、イベントデータに付されたメタデータを参照して、取得したソートキーでソート用バッファのイベントデータをソートする。さらに、ソート部４４は、ソートキーでソートしたイベントデータごとに時系列順にソートする。
【０１０９】
［ステップＳ５３］ソート部４４は、ソート用バッファから読み出したイベントデータをストレージデバイス５０に格納する。
［ステップＳ５４］ソート部４４は、ソート用バッファをクリアしてソート処理を終了する。
【０１１０】
これにより、ストレージシステム１０は、ストレージシステム１０における読み出し負荷を低減することができ、ストレージデバイス５０に対する書込アクセスと読み出しアクセスとの競合による書込性能の低下を抑制できる。
【０１１１】
なお、イベントデータのミラーリングをおこなうサーバの数よりもメタデータの属性の数が多い場合は、ストレージシステム１０は、検索条件として用いられる頻度の高いメタデータの属性を、イベントデータのミラーリングをおこなうサーバに割り当てればよい。
【０１１２】
なお、第２の実施形態では、クライアント１１と、プロキシ１３と、サーバ１５，１６，１７をそれぞれ別個の情報処理装置に配置したが、１または２以上の情報処理装置に任意の組合せで配置してもよい。たとえば、１つの情報処理装置がプロキシ１３とサーバ１５，１６，１７を実装するものであってもよい。あるいは、１つの情報処理装置がクライアント１１とプロキシ１３を実装するものであってもよい。
【０１１３】
なお、ソート部４４は、バッファ４２とバッファ４３の交換ごとにソートキーによるソート時の昇順と降順とを交互に切り替えてもよい。たとえば、バッファ４２をソート用バッファとしたとき、サーバ１５は、送信元ＩＰアドレスを「１９２．１６８．０．１」，「１９２．１６８．０．２」，「１９２．１６８．０．３」の順（昇順）にソートする。一方、バッファ４３をソート用バッファとしたとき、サーバ１５は、送信元ＩＰアドレスを「１９２．１６８．０．３」，「１９２．１６８．０．２」，「１９２．１６８．０．１」の順（降順）にソートする。これにより、ストレージシステム１０は、ストレージデバイス５０に格納するイベントデータがバッファ交換の前後で同一属性で並ぶことが期待できる。
【０１１４】
なお、サーバ１５，１６，１７は、２つのバッファ４２，４３を備えたが、これに限らず３以上のバッファを備えてローテーションをおこなうものであってもよい。
なお、サーバ１５，１６，１７は、２つのバッファ４２，４３を備えたが、これに代えて十分な大きさのリングバッファを１つ設けるようにしてもよい。この場合、ソート部４４は、リングバッファが所定の閾値を超えて蓄積したイベントデータを対象にしてソートをおこなえばよい。
【０１１５】
なお、ストレージシステム１０は、サーバ１５，１６，１７ごとにミラーリングをおこなったが、サーバ１５が備えるＨＤＤ５１，５２，５３ごとにミラーリングをおこなうものであってもよい。この場合、サーバ１５は、プロキシ１３が備えるリクエストの振り分け機能に代えて、ＨＤＤ５１，５２，５３へのＩ／Ｏリクエストの振り分け機能を有すればよい。また、サーバ１５は、ＨＤＤ５１，５２，５３ごとにバッファを設けてもよいし、ＨＤＤ５１，５２，５３で共通のバッファを設けるようにしてもよい。
【０１１６】
また、ストレージシステム１０は、サーバ１５，１６，１７ごとにミラーリングをおこなったが、サーバ１５，１６，１７ごとにレプリケーションをおこなうものであってもよい。また、ストレージシステム１０は、サーバ１５が備えるＨＤＤ５１，５２，５３ごとにレプリケーションをおこなうものであってもよい。
【０１１７】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、記憶装置１、クライアント１１、プロキシ１３、サーバ１５，１６，１７が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１８】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１９】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【０１２０】
また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤなどの電子回路で実現することもできる。
以上の実施の形態に関し、更に以下の付記を開示する。
【０１２１】
（付記１）  第１属性情報と前記第１属性情報と異なる第２属性情報とに対応するイベントデータと、前記イベントデータの時系列順序を特定可能な時系列情報と、前記第１属性情報と、前記第２属性情報とを含むデータブロックを取得して、第１一時記憶部に前記データブロックを一時蓄積する第１一時蓄積部と、
前記データブロックを取得して、第２一時記憶部に前記データブロックを一時蓄積する第２一時蓄積部と、
前記第１一時記憶部が蓄積した複数の前記データブロックを、前記第１属性情報ごとに並べ替えて第１記憶部に格納する第１格納部と、
前記第２一時記憶部が蓄積した複数の前記データブロックを、前記第２属性情報ごとに並べ替えて第２記憶部に格納する第２格納部と、
を備える記憶装置。
【０１２２】
（付記２）  前記第１格納部は、前記第１属性情報ごとに並べ替えた前記データブロックについてさらに、時系列順に並べ替え、
前記第２格納部は、前記第２属性情報ごとに並べ替えた前記データブロックについてさらに、時系列順に並べ替える付記１記載の記憶装置。
【０１２３】
（付記３）  同一の前記第１属性情報を含む複数の前記データブロックに対する読み出しリクエストを受け付けた場合に、前記データブロックの読出し対象として前記第１格納部を決定する決定部を備える付記１記載の記憶装置。
【０１２４】
（付記４）  同一の前記第２属性情報を含む複数の前記データブロックに対する読み出しリクエストを受け付けた場合に、前記データブロックの読出し対象として前記第２格納部を決定する決定部を備える付記１または付記３記載の記憶装置。
【０１２５】
（付記５）  連続する前記第１属性情報を含む複数の前記データブロックに対する読み出しリクエストを受け付けた場合に、前記データブロックの読出し対象として前記第１格納部を決定する決定部を備える付記１記載の記憶装置。
【０１２６】
（付記６）  連続する前記第２属性情報を含む複数の前記データブロックに対する読み出しリクエストを受け付けた場合に、前記データブロックの読出し対象として前記第２格納部を決定する決定部を備える付記１または付記５記載の記憶装置。
【０１２７】
（付記７）前記イベントデータは、ストリームデータから構成された所要の属性を有する一塊のデータである付記１記載の記憶装置。
（付記８）  コンピュータに、
第１属性情報と前記第１属性情報と異なる第２属性情報とに対応するイベントデータと、前記イベントデータの時系列順序を特定可能な時系列情報と、前記第１属性情報と、前記第２属性情報とを含むデータブロックを、第１一時記憶部に一時蓄積し、
第２一時記憶部に前記データブロックを一時蓄積し、
前記第１一時記憶部が蓄積した複数の前記データブロックを、前記第１属性情報ごとに並べ替えて第１記憶部に格納し、
前記第２一時記憶部が蓄積した複数の前記データブロックを、前記第２属性情報ごとに並べ替えて第２記憶部に格納する、
処理を実行させるデータ記憶プログラム。
【０１２８】
（付記９）  コンピュータが、
第１属性情報と前記第１属性情報と異なる第２属性情報とに対応するイベントデータと、前記イベントデータの時系列順序を特定可能な時系列情報と、前記第１属性情報と、前記第２属性情報とを含むデータブロックを、第１一時記憶部に一時蓄積し、
第２一時記憶部に前記データブロックを一時蓄積し、
前記第１一時記憶部が蓄積した複数の前記データブロックを、前記第１属性情報ごとに並べ替えて第１記憶部に格納し、
前記第２一時記憶部が蓄積した複数の前記データブロックを、前記第２属性情報ごとに並べ替えて第２記憶部に格納する、
処理を実行するデータ記憶方法。
【０１２９】
（付記１０）  ストレージ装置へのアクセス要求をおこなう第１情報処理装置と、前記ストレージ装置のうち第１ストレージ装置へのアクセス制御をおこなう第２情報処理装置と、前記ストレージ装置のうち第２ストレージ装置へのアクセス制御をおこなう第３情報処理装置と、前記第２情報処理装置と前記第３情報処理装置とに前記アクセス要求を転送可能な第４情報処理装置とを備えるストレージシステムにおいて、
前記第１情報処理装置は、
ストリームデータから所定の属性を有するイベントデータを構成し、前記イベントデータと、前記イベントデータを識別する識別情報と、前記属性に関する属性情報とを含むデータブロックの前記ストレージ装置への書き込みリクエストを生成する書込リクエスト生成部を備え、
前記第４情報処理装置は、
前記第１情報処理装置から取得した前記書込リクエストを前記第２情報処理装置と前記第３情報処理装置とに転送する書込リクエスト転送部を備え、
前記第２情報処理装置は、
取得した前記書込リクエストを受けて第１一時記憶部に複数の前記データブロックを一時蓄積し、前記第１一時記憶部が蓄積した前記データブロックを、前記属性情報のうち第１属性情報ごとに並べ替えて前記第１ストレージ装置に格納する第１格納部を備え、
前記第３情報処理装置は、
取得した前記書込リクエストを受けて第２一時記憶部に複数の前記データブロックを一時蓄積し、前記第２一時記憶部が蓄積した前記データブロックを、前記属性情報のうち前記第１属性情報と異なる第２属性情報ごとに並べ替えて前記第２ストレージ装置に格納する第２格納部を備えるストレージシステム。
【０１３０】
（付記１１）  前記第１情報処理装置は、
前記ストレージ装置が格納する前記データブロックの読み出しリクエストを生成する読み出しリクエスト生成部を備え、
前記第４情報処理装置は、
前記第２情報処理装置と前記第３情報処理装置のうちから前記読み出しリクエストが読出し対象とする前記データブロックの属性情報にもとづいていずれか一方を選択して、前記第１情報処理装置から取得した前記読み出しリクエストを転送する読み出しリクエスト転送部を備える付記１０記載のストレージシステム。
【０１３１】
（付記１２）  前記第１格納部は、前記第１属性情報ごとに並べ替えた前記データブロックについてさらに、時系列順に並べ替え、
前記第２格納部は、前記第２属性情報ごとに並べ替えた前記データブロックについてさらに、時系列順に並べ替える付記１０記載のストレージシステム。
【０１３２】
（付記１３）  前記第４情報処理装置は、前記第１属性情報を含む読み出しリクエストを受け付けた場合に、前記読み出しリクエストを前記第２情報処理装置に転送し、前記第２属性情報を含む読み出しリクエストを受け付けた場合に、前記読み出しリクエストを前記第３情報処理装置に転送する付記１０記載のストレージシステム。
【０１３３】
（付記１４）  前記第３情報処理装置は、前記第２情報処理装置に含まれる付記１０記載のストレージシステム。
（付記１５）  前記第４情報処理装置は、前記第２情報処理装置に含まれる付記１０または付記１４記載のストレージシステム。
【符号の説明】
【０１３４】
１  記憶装置
２  第１一時蓄積部
３  第１一時記憶部
４  第２一時蓄積部
５  第２一時記憶部
６  第１格納部
７  第１記憶部
８  第２格納部
９  第２記憶部
１０  ストレージシステム
１１  クライアント
１２，１４  ネットワーク
１３  プロキシ
１５，１６，１７  サーバ
２０  書込リクエスト生成部
２１  データ受信部
２２  イベントデータ構成部
２３  イベントデータＩＤ付与部
２４  メタデータ付与部
２５  検索リクエスト生成部
２６  読み出しリクエスト生成部
２７，３３  リクエスト送信部
２８，３４  リプライ受信部
３０，４０  リクエスト受信部
３１  転送先サーバ決定部
３２  サーバ情報管理部
３５，４８  リプライ送信部
４１  バッファ制御部
４２，４３  バッファ
４４  ソート部
４５  キー情報記憶部
４６  検索部
４７  読み出し／書込部
５０  ストレージデバイス
５１，５２，５３，１０３  ＨＤＤ
１００  制御部
１０１  プロセッサ
１０２  ＲＡＭ
【図１】
2015195067.tif 000003
【図２】
2015195067.tif 000004
【図３】
2015195067.tif 000005
【図４】
2015195067.tif 000006
【図５】
2015195067.tif 000007
【図６】
2015195067.tif 000008
【図７】
2015195067.tif 000009
【図８】
2015195067.tif 000010
【図９】
2015195067.tif 000011
【図１０】
2015195067.tif 000012
【図１１】
2015195067.tif 000013
【図１２】
2015195067.tif 000014
【図１３】
2015195067.tif 000015
【図１４】
2015195067.tif 000016
【図１５】
2015195067.tif 000017
【図１６】
2015195067.tif 000018
【図１７】
2015195067.tif 000019
【図１８】
2015195067.tif 000020
【図１９】
2015195067.tif 000021