(57)【要約】  局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータを提供するストレージ装置が開示される。係るストレージ装置は、ブロック単位でデータを格納するメインメモリと、メインメモリに格納されるデータをブロック単位で格納可能なキャッシュメモリとを含むデータ格納手段と、データ格納手段に格納されるデータに対するアクセス要求を蓄積するアクセス要求蓄積手段と、アクセス要求蓄積手段に蓄積されたアクセス要求が所定の条件を満たすのに応じて、メインメモリに格納されているデータを、ブロック単位で順に読み出してキャッシュメモリに書き込むと共に走査するデータ走査手段と、走査によって特定されたデータに対するアクセス要求を、アクセス要求蓄積手段から読み出すと共に、当該アクセス要求の送信元に対して特定されたデータを特定できる情報を返信するアクセス検索手段とを備える。
2015015727.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納手段と、
前記データ格納手段に格納されるデータに対するアクセス要求を蓄積するアクセス要求蓄積手段と、
前記アクセス要求蓄積手段に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納手段に含まれる前記メインメモリに格納されているデータを、前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査するデータ走査手段と、
前記走査によって特定されたデータに対するアクセス要求を、前記アクセス要求蓄積手段から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信するアクセス検索手段と
を備えたストレージ装置。
【請求項２】
前記データ走査手段は、前記メインメモリのメモリアドレス順に、前記データを、前記ブロック単位で読み出して、前記キャッシュメモリに書き込む
請求項１記載のストレージ装置。
【請求項３】
前記データ走査手段は、前記キャッシュメモリにデータが格納される場合は、そのデータを走査した後に、未走査のデータを前記ブロック単位で順に前記メインメモリから読み出して前記キャッシュメモリに書き込む
請求項１記載のストレージ装置。
【請求項４】
キー値と、当該キー値に紐づけられたプロパティとを含むデータを、前記キー値と前記プロパティとに分解すると共に、分解した状態で当該データを前記データ格納手段に格納するデータ分解手段をさらに備え、
前記データ走査手段は、前記データ格納手段に含まれる前記メインメモリに格納されているデータの前記プロパティを前記キャッシュメモリに書き込むと共に走査する
請求項１記載のストレージ装置。
【請求項５】
前記アクセス要求を、前記データを特定するための対象ごとに前記アクセス要求蓄積手段の異なる領域に蓄積するアクセス仕分手段をさらに備え、
前記アクセス検索手段は、前記走査によって特定されたデータに対するアクセス要求を、当該データを特定するための対象を含むアクセス要求が蓄積された領域から読み出す
請求項１記載のストレージ装置。
【請求項６】
前記アクセス要求から、前記データを特定可能な情報を抽出すると共に、当該抽出した情報と前記アクセス要求とを、前記アクセス要求蓄積手段の異なる領域に蓄積するアクセス圧縮手段をさらに備え、
前記アクセス検索手段は、前記走査によって特定されたデータに対するアクセス要求を、前記データを特定可能な情報が蓄積された領域から読み出す
請求項１記載のストレージ装置。
【請求項７】
前記データ走査手段は、前記メインメモリのメモリアドレス順に、前記ブロック単位ですべてのデータを読み出し、前記キャッシュメモリに書き込む
請求項１記載のストレージ装置。
【請求項８】
ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納手段に格納されるデータに対するアクセス要求をアクセス要求蓄積手段に蓄積し、
前記アクセス要求蓄積手段に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納手段に含まれる前記メインメモリに格納されているデータを、データ走査手段により前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査し、
前記走査によって特定されたデータに対するアクセス要求を、アクセス検索手段により、前記アクセス要求蓄積手段から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信する
データアクセス方法。
【請求項９】
前記走査する際に、前記メインメモリのメモリアドレス順に、前記ブロック単位で前記データを前記キャッシュメモリに書き込む
請求項８記載のデータアクセス方法。
【請求項１０】
ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納手段に格納されるデータに対するアクセス要求をアクセス要求蓄積手段に蓄積する処理と、
前記アクセス要求蓄積手段に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納手段に含まれる前記メインメモリに格納されているデータを、前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査する処理と、
前記走査によって特定されたデータに対するアクセス要求を、前記アクセス要求蓄積手段から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信する処理
を、コンピュータに実行させるデータアクセスプログラムを記録するプログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データ記憶配信システム、ストレージ装置、データ分散方法、分割データ管理装置、ホスト端末、およびデータ分散用プログラムに関し、特に、地理的に離れた複数の情報源から発生するデータを、複数の記憶装置に分散させて格納する技術に関する。
【背景技術】
【０００２】
センサやユーザ端末などの地理的に離れた複数の端末から、時々刻々と発生するデータを収集し、インターネットなどの広域ネットワークを介してデータセンタに転送し、データセンタ内の計算機群にデータを格納すると共に、格納したデータを処理するシステムが知られている。【０００３】
センサからの情報として、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）を用いた位置情報、温度計による温度情報、加速度センサによる加速度や速度、スマートメータによる電力消費量などの数値データなどが考えられる。あるいは、マイクによって取得された音声情報、カメラによって取得された静止画、動画像ストリームなどの複雑なバイナリデータなども考えられる。【０００４】
また、ユーザ端末からの情報としては、マイクロブログサービスへの投稿、電話の呼情報のログ等の情報が考えられる。【０００５】
インターネットを介して接続された計算機リソースを利用してデータを処理するクラウドコンピューティングの普及に伴い、上記のデータはインターネット、公衆無線網などを通じて、地理的に離れたデータセンタに集約されるようになってきている。収集されたデータ（以降、「収集データ」と称する）をデータセンタのシステムに送信するためには、データセンタのシステムの入り口に設けられたゲートウェイサーバ（またはアプリケーションサーバ）に対してデータを送信する必要がある。以下では、データセンタの入り口に設けられたゲートウェイサーバ（またはアプリケーションサーバ）を、「ストレージクライアント」と呼ぶ。【０００６】
データセンタ内のネットワークに到達した収集データは、ストレージクライアントによって受け取られ、加工されるとともに、ストレージシステムに格納されることにより永続化され、分析などの用途に供される。ここで、「データの永続化」とは、データが消えることなく存続するように保持することをいう。永続化の一例は、システムにおいて規定された冗長性を満たすだけの複製や符号などを不揮発性記憶媒体に格納することである。【０００７】
ストレージシステムは、データを保持するとともに、保持するデータを提供するシステムである。具体的には、ストレージシステムは、データの一部に対するＣＲＥＡＴＥ（ＩＮＳＥＲＴ）、ＲＥＡＤ、ＷＲＩＴＥ（ＵＰＤＡＴＥ）、ＤＥＬＥＴＥなどの基本機能（アクセス）を提供する。また、ストレージシステムは、権限管理、データ構造化整理などの多様な機能を提供することもある。【０００８】
分散ストレージシステムは、通信ネットワーク、インターコネクトを介して接続された多数の計算機を有し、これらの計算機が備える記憶装置を用いてストレージシステムを実現する。【０００９】
分散ストレージシステムにおいては、データは複数のストレージノードに分散して格納されている。したがって、ストレージクライアントがデータにアクセスする場合には、データを保持しているストレージノードを把握する必要がある。また、アクセス対象のデータを保持するストレージノードが複数存在する場合には、ストレージクライアントは、いずれのストレージノードにアクセスすべきかを把握する必要がある。【００１０】
格納されるデータは、ある意味をなす単位でアクセスされる。例えば、関係データベースでは、データはレコードまたはタプルと呼ばれる単位で書き込まれる。また、ファイルシステムでは、データはブロックの集合として書き込まれる。さらに、キーバリューストアでは、データはオブジェクトとして書き込まれる。こうして書き込まれたデータは、その単位ごとにユーザ計算機により読み込まれる。以下では、このデータ単位を「データオブジェクト」と呼ぶ。【００１１】
記憶装置として、通常は、ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）や磁気テープが用いられてきた。近年では、ＨＤＤに加え、より高速な読み書きが可能なフラッシュメモリなどの不揮発性半導体メモリを利用した、ソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を利用する場合も多い。また、分散ストレージシステムは、複数のストレージノードに複製を保持することにより、揮発性の記憶装置も利用できる。【００１２】
例えば、計算機の主記憶装置として用いられているＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を利用した、ＳＳＤよりもさらに高速な読み書きが可能な「インメモリストレージ」を利用する例も増えている。特に、上述したセンサからの情報を格納したり利用したりする際は、各データオブジェクトのサイズは数十バイトから数百バイトと小さいので、通常ＨＤＤで使われてきた４ＫＢｙｔｅ単位のアクセスでは非効率である。そこで、インメモリストレージの利用が好適である。【００１３】
インメモリストレージの場合、データの格納、取得、走査、特定のために、ストレージノードのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が、当該ストレージノードの主記憶内のデータを閲覧したり処理したりする。【００１４】
ＤＲＡＭへのアクセス速度は、一般に、ＣＰＵの動作クロックより数百倍低速である。よって、ＣＰＵは、より高速かつ低レイテンシ（すなわち、データ転送などが要求されてからその結果が返送されるまでの時間が短い）であるアクセスが可能なＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などにより構成されるキャッシュメモリを有する。【００１５】
また、近年の計算機は、複数のＣＰＵを搭載したマルチコア構成を有することが多い。この場合、キャッシュメモリは多段階構成を有し、複数コアにより共有される、比較的アクセスレイテンシの長いキャッシュが利用される。あるいは、各コアに保持されコア間で一貫性管理されるレイテンシの短いキャッシュ、またはＣＰＵとほぼ等速で動作する１次キャッシュなども利用される。【００１６】
さらに、ＣＰＵは、主記憶を効率よく扱うため、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）と呼ばれる機能を有する場合がある。計算機において動作するプログラムからのアクセスは、そのプログラム（あるいはプロセス）ごとに閉じた、一連のメモリアドレス空間（仮想メモリ空間）を利用する。【００１７】
各プロセスの主記憶へのアクセスは、仮想メモリ空間のアドレス（論理アドレス）によって指定され、この論理アドレスは、論理−物理アドレス変換機能（論物変換）によって物理的なメモリユニットのアドレス（物理アドレス）に変換される。この論理−物理アドレス変換は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）ソフトウェアに実装されるが、ソフトウェアのみによる実現による場合、動作が遅いという問題がある。そこで、ＭＭＵが論理−物理アドレス変換の一部を実施する。ＭＭＵは、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）と呼ばれる少量のキャッシュメモリを搭載し、よく使われる論物変換用データをＴＬＢに記録することによりに、高速に論物変換することができる。【００１８】
近年、インメモリストレージとして主記憶に格納可能なデータ量、つまり各計算機が搭載するメモリ量は増加しており、また、ＣＰＵはＤＲＡＭよりも高速化している。よって、主記憶をインメモリストレージとして使う際のキャッシュミスやＴＬＢミスに起因するアクセス時間の長大化（ペナルティ）が性能上問題となることが知られている。ここで、キャッシュミスとは、キャッシュメモリに、必要なデータが存在しなかったときのＤＲＡＭアクセスである。また、ＴＬＢミスとは、ＭＭＵのＴＬＢに、必要なデータアクセスのための論物変換情報が存在しなかったときのＤＲＡＭアクセスである。【００１９】
例えば、非特許文献２には、キャッシュミスやＴＬＢミスのペナルティを考慮したメモリの索引構造が提案されている。【００２０】
また、インメモリストレージにおける性能上の別の問題として、処理スレッドのコンテキストスイッチの発生が挙げられる。近年の計算機は、複数のＣＰＵを搭載したマルチコア構成を有し、このコアによる処理を活用するために、処理は複数のスレッドと呼ばれる処理単位に分割されることが好ましい。【００２１】
このスレッドの数は、コアと同数であればコアのコンテキストスイッチは発生しないが、当該スレッドの数は、一般にはコア数よりもずっと多い。これは、プログラムの簡便化（設計の容易化）、キャッシュミス時のコア遊休リソースの隠ぺい、多種多様なハードウエアにおいて同じソフトウェアを使いまわす、などの理由による。【００２２】
この結果、ひとつのコアにおいて複数のスレッドが、利用するレジスタセットを交互に入れ替えながら動作するコンテキストスイッチが発生する。このコンテキストスイッチの性能への影響は小さくない。例えば、非特許文献１には、このコンテキストスイッチの影響を鑑みたＯＬＴＰ（Ｏｎ−Ｌｉｎｅ  Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ）向けのスレッド割り当てに関する技術が開示されている。【００２３】
ストリームデータを、オブジェクトを時系列に並べたリストとしたとき、ひとつのオブジェクトは、一意の主キー（primary key）と、１または２以上のプロパティ（metadata1, metadata2,・・・）とを含む。例えば、主キーに加えて２個のプロパティ(name1, name2)の値を含むストリームデータは、{key: hogehoge, name1: value1, name2: value2}という構成を有する。【００２４】
新しくセンサにより取得されたデータは、上記一塊のデータとして格納される。データを利用する際、key値を指定するか、プロパティのひとつ以上の値や範囲を指定することにより、ひとつ以上のオブジェクトを特定することができる。【００２５】
利用するデータを特定する動作を高速化するため、格納するデータに、索引構造あるいはインデックスを作成する技術が知られている。索引構造としては、高速な範囲検索や特定が可能なＢ＋−Ｔｒｅｅと呼ばれる木構造が知られている。あるいは、非特許文献３に記載のように、インメモリストレージでは、よりメモリアクセスに適したＴ−Ｔｒｅｅなどの構造も知られている。
【先行技術文献】
【特許文献】
【００２６】
【非特許文献１】Robert Kallman, Hideaki Kimura, Jonathan Natkins, Andrew Pavlo, Alexander Rasin, Stanley Zdonik, Evan P. C. Jones, Samuel Madden, Michael Stonebraker, Yang Zhang, John Hugg, and Daniel J. Abadi 著, "H-store: a high-performance, distributed main memory transaction processing system", Proc. VLDB Endow. 1, 2巻 (2008年8月), pp. 1496-1499.
【非特許文献２】Changkyu Kim, Jatin Chhugani, Nadathur Satish, Eric Sedlar, Anthony D. Nguyen, Tim Kaldewey, Victor W. Lee, Scott A. Brandt, and Pradeep Dubey 著,"FAST: fast architecture sensitive tree search on modern CPUs and GPUs", Proceedings of the 2010 ACM SIGMOD International Conference on Management of data (SIGMOD '10), ACM, New York, pp. 339-350.
【非特許文献３】T.J.Lehman 著, "A Study of Index Structures for Main Memory Database Management Systems", Proceedings of the Twelfth International Conference on Very Large Data Bases, 1986年, pp. 294 - 303.
【発明の概要】
【発明が解決しようとする課題】
【００２７】
インメモリストレージを使用してデータを保存する分散ストレージに、ストリームデータを格納することを考える。センサごとに、ストリームデータの発生頻度や、そのデータに対する利用頻度に差がある場合、データ利用の局所性が発生するので、キャッシュメモリの高速化が寄与する。しかしながら、近年利用されるシステムでは、発生頻度の偏りの少ないストリームに対し、偏りの少ない（局所性の少ない）データ利用のためのアクセス要求（以降、「データ利用アクセス」と称する）が発生するような用途も考えられるようになってきた。例えば、このようなシステムには、監視カメラ等により取得されたすべての映像データをストリームデータとして格納すると共に、そのすべてのデータを顔画像認識のために利用するシステムが考えられる。【００２８】
このようなシステムにおいて、データ利用アクセスによりインデックス構造を用いてストリームデータにアクセスした場合、格納されているすべてのデータに満遍なくアクセスされるので、キャッシュミスとＴＬＢミスが高頻度で発生する。このキャッシュミスとＴＬＢミスは、インメモリストレージのアクセス性能を低下させる。【００２９】
特に、近年では、直近数秒間に生じたデータを特定した大量のデータ利用アクセスが発生する利用環境も考えられる。例えば、直近１秒間に生じた百万件のオブジェクトに対し、秒間１億件のデータ利用アクセスが生じる場合、上述のキャッシュミスとＴＬＢミスによるアクセス性能低下の影響が大きくなる。【００３０】
また、分散ストレージシステムでは、データをある条件に従って分散して格納する。例えば、主キー値の範囲やハッシュ値に従って、格納するノードを決定する手法が用いられる。この場合、主キー以外のデータを特定するには、所望のデータが全てのノードに格納されている可能性があるため、全てのノードにデータ利用アクセスを発行しなければならない。したがって、各ストレージノードに対するデータ利用アクセスの数が飛躍的に増大するので、上記と同様にキャッシュミスによるアクセス性能低下の影響が大きくなる。【００３１】
一方で、上述のような大量のデータ利用アクセスが発生するようなデータ利用は、金融機関や企業内で用いられている分散ストレージシステムと違い、より大きなアクセス遅延時間も許容されるという特徴がある。公衆無線回線の遅延時間は数十ミリ秒と大きいので、そのような公衆無線回線を介した通信を行う分散ストレージシステムが必ずしもマイクロ秒オーダーでデータ提供を行わなかったとしても、性能への影響は少ない。上記のようなデータ利用環境では、レスポンスよりも、秒間にいくつのアクセスに対応できるかというスループット性能が重視される。【００３２】
このように、局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータの提供が望まれるが、上記非特許文献１ないし３には、そのような技術は開示されていない。【００３３】
本願発明は、上記課題を鑑みてなされたものであり、局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータの提供ができるストレージ装置、データアクセス方法およびプログラム記録媒体を提供することを主要な目的とする。
【課題を解決するための手段】
【００３４】
本発明の一態様におけるストレージ装置は、ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納部と、前記データ格納部に格納されるデータに対するアクセス要求を蓄積するアクセス要求蓄積部と、前記アクセス要求蓄積部に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納部に含まれる前記メインメモリに格納されているデータを、前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査するデータ走査部と、前記走査によって特定されたデータに対するアクセス要求を、前記アクセス要求蓄積部から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信するアクセス検索部とを備える。【００３５】
本発明の一態様におけるデータアクセス方法は、ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納部に格納されるデータに対するアクセス要求をアクセス要求蓄積部に蓄積し、前記アクセス要求蓄積部に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納部に含まれる前記メインメモリに格納されているデータを、データ走査部により前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査し、前記走査によって特定されたデータに対するアクセス要求を、アクセス検索部により、前記アクセス要求蓄積部から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信する。【００３６】
なお同目的は、上記の各構成を有するストレージ装置またはデータアクセス方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記録媒体によっても達成される。
【発明の効果】
【００３７】
本願発明によれば、局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータの提供ができるという効果が得られる。
【図面の簡単な説明】
【００３８】
【図１】本発明の第１の実施形態に係る分散ストレージシステムの構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るストレージノードの構成を示すブロック図である。
【図３】本発明の第１の実施形態に係るストレージノードの動作を説明するフローチャートである。
【図４】本発明の第１の実施形態に係るデータ格納部のデータ格納例を示す図である。
【図５】本発明の第２の実施形態に係るストレージノードの構成を示すブロック図である。
【図６】本発明の第３の実施形態に係るストレージノードの構成を示すブロック図である。
【図７】本発明の第４の実施形態に係るストレージノードの構成を示すブロック図である。
【図８】本発明の第５の実施形態に係るストレージノードの構成を示すブロック図である。
【図９】本発明の第１の実施形態に係るストレージノードのハードウエア構成を示す図である。
【発明を実施するための形態】
【００３９】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００４０】
第１の実施形態
図１は、本発明の第１の実施形態に係る分散ストレージシステム１００の構成を示すブロック図である。図１に示すように、分散ストレージシステム１００は、内部ネットワーク３００を介して互いに通信可能なデバイス２００と分散ストレージ装置４００を備える。
【００４１】
デバイス２００は、例えばＧＰＳ、加速度センサ、カメラ等を搭載するデバイスであり、位置情報、加速度、画像データ等を取得すると共に、それらを内部ネットワーク３００を介して分散ストレージ装置４００に送信する。
【００４２】
内部ネットワーク３００は、例えば、Ethernet（登録商標）、Fibre ChannelやＦＣｏＥ（Fibre Channel over Ethernet（登録商標））、InfiniBand、QsNet、Myrinet、Ethernet、PCI Express、Thunderbolt、または、これらを利用するＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）、ＲＤＭＡ（Remote Direct Memory Access）などの上位プロトコルにより実現される。
【００４３】
分散ストレージ装置４００は、複数のストレージノード４０を含む。ストレージノード４０は、内部ネットワーク３００を介してストリームデータを送受信するデータ送受信部４１と、受信したストリームデータを格納するデータ格納部４２を備える。
【００４４】
なお、分散ストレージ装置４００は、デバイス２００から送信されたストリームデータを自装置４００が受信することに限定されず、図示しないコンピュータが当該ストリームデータを受信し、そのコンピュータからストリームデータを受け取ってもよい。
【００４５】
ストレージノード４０は、内部ネットワーク３００を介して互いにストリームデータを送受信する。他のストレージノード４０にアクセスするストレージノード４０は、クライアント端末となる。クライアント端末は、自ノードとは別のコンピュータ、または当該コンピュータで動作するソフトウェア・インスタンス（プロセス、スレッド、ファイバ等）であってもよい。また、クライアント端末は、ストレージノード４０や、分散ストレージ装置４００を構成する他の装置で動作するソフトウェア・インスタンスであってもよい。また、１つ以上の計算機で動作する複数のソフトウェアを、仮想的に１つのクライアント端末とみなしてもよい。
【００４６】
かかる分散ストレージ装置４００によれば、クライアント端末は、デバイス２００から送信されたストリームデータを分散して蓄積する複数のストレージノード４０のそれぞれから、ストリームデータを取得することができる。
【００４７】
図２は、本発明の第１の実施形態に係るストレージノード４０の構成を示すブロック図である。図２に示すように、ストレージノード４０は、データ送受信部４１、データ格納部４２、制御部４３、データ利用アクセスバッファ４４、データ走査部４５、データ取得部４６およびデータ検索部４７を備える。データ格納部４２は、メインメモリ４２ａとキャッシュメモリ４２ｂを備える。
【００４８】
データ利用のためのアクセス要求（リードアクセス）を「データ利用アクセス」、データ格納のためのアクセス要求（ライトアクセス）を「データ格納アクセス」と称する。ストレージノード４０に対して、データ利用アクセスまたはデータ格納アクセスを送信する端末を、クライアント端末４０ａと称する。ストレージノード４０は、クライアント端末４０ａからアクセス要求を受信すると、当該要求に応じた処理を行うと共に、クライアント端末４０ａに返答を返信する。
【００４９】
ここで、ストレージノード４０は、データ格納アクセスに対して、格納の成否を含む返答を返信してもよい。また、ストレージノード４０は、データ利用アクセスに対して、アクセス要求された条件に合致するデータが存在したか否かを含む返答を返信してもよい。また、ストレージノード４０は、データ利用アクセスに対して、該当するデータが存在する場合はそのデータの一部または全部を含む返答を返信してもよいし、データの一部または全部の代わりに、当該データを取得するのに必要なハンドル情報を含む返答を返信してもよい。
【００５０】
返答にハンドル情報が含まれる場合、クライアント端末４０ａは、当該ハンドル情報を利用してストレージノード４０あるいは別のストレージノードあるいは別の情報システムからデータを取得できる。
【００５１】
図２に示すストレージノード４０の各構成要素の概要を説明する。データ送受信部４１は、クライアント端末４０ａとの間でストリームデータやアクセス要求の送受信を行う。データ格納部４２は、データ送受信部４１を介して受信したストリームデータを格納する。
【００５２】
制御部４３は、データ送受信部４１が受信したアクセス要求の種類に基づいて、ストリームデータをデータ格納部４２に格納したり、アクセス要求をデータ利用アクセスバッファ４４に格納したりする。
【００５３】
データ利用アクセスバッファ４４は、制御部４３から取得したデータ利用アクセスを蓄積する。データ走査部４５は、データ利用アクセスバッファ４４に格納されたデータ利用アクセスに基づいて、データ格納部４２に格納されるストリームデータを走査する。データ取得部４６は、データ走査部４５が走査したストリームデータを取得する。データ検索部４７は、データ取得部４６が取得したストリームデータに対応するデータ利用アクセスを、データ利用アクセスバッファ４４を検索することにより読み出す。
【００５４】
図３は、ストレージノード４０の動作を説明するフローチャートである。図３を参照して、ストレージノード４０の動作の詳細について説明する。
【００５５】
データ送受信部４１は、クライアント端末４０ａからアクセス要求を受信すると、制御部４３にそのアクセス要求を通知する。制御部４３は、受け取ったアクセス要求の種類を判定する（ステップＳ１０１）。アクセス要求がデータ格納アクセスである場合（ステップＳ１０２）、制御部４３は、データ格納アクセスと共に取得しているストリームデータ（以降、単に「データ」とも称する）を、データ格納部４２に格納する（ステップＳ１０３）。
【００５６】
このとき、制御部４３は、ストリームデータをデータ格納部４２に物理的に格納すると共に、そのストリームデータの永続化処理を行ってもよい。すなわち、制御部４３は、ストリームデータの複製を作成し、それを格納したり、誤り訂正符号を計算してストリームデータに付加したりする等してもよい。また、制御部４３は、ストリームデータ自体だけではなくデータを管理する構造体データの変更をしてもよい。
【００５７】
制御部４３は、ストリームデータを格納した後、クライアント端末４０ａに適切な返答を行う（ステップＳ１０４）。適切な返答とは、ストリームデータが正常にデータ格納部４２に格納された旨を示す情報を含む。当該返答は、データ格納前になされてもよいし、データ格納後になされてもよい。データ格納前に返答することが許される場合、ストレージノード４０はより高速な構成となる。データ格納後に返却することが許される場合、ストレージノード４０はより障害に強い構成となる。
【００５８】
一方、上記アクセス要求がデータ利用アクセスである場合、制御部４３は、当該アクセス要求をデータ利用アクセスバッファ４４に格納する（ステップＳ１０５）。
【００５９】
データ利用アクセスは、データ特定条件を含む。データ特定条件とは、ストリームデータのキー値、または当該ストリームデータを構成する部分の特定の値、または特定の値の範囲を含むか含まない等の条件である。
【００６０】
例えば、ストリームデータが、{key: hogehoge, name1: value1, name2: value2}と構成されていたときのデータ特定条件は、「"key"が"hogehoge"であること」、または「"name1"が"value0"から"valu2"の間であること」等である。ただし、本願の本実施形態を例に説明する本発明におけるデータ特定条件は、上記に限定されない。
【００６１】
制御部４３は、所定のアクセストリガーコンディションが満たされるまで、受け取ったデータ利用アクセスをデータ利用アクセスバッファ４４に格納する（ステップＳ１０６）。ここで、アクセストリガーコンディションとは、例えば、データ利用アクセスバッファ４４に格納されたアクセス要求の数が一定数以上となった場合でもよい。あるいは、アクセストリガーコンディションは、データ利用アクセスバッファ４４に格納されたアクセス要求の量が一定量以上となった場合でもよい。あるいは、アクセストリガーコンディションは、データ利用アクセスバッファ４４に格納される最も古いデータ利用アクセスの発行時刻から所定の時間経過した場合でもよい。あるいは、アクセストリガーコンディションは、上記の例を組み合わせた場合でもよい。ただし、本願の本実施形態を例に説明する本発明におけるアクセストリガーコンディションは、上記に限定されない。
【００６２】
所定のアクセストリガーコンディションが満たされた場合、制御部４３は、データ走査部４５にストリームデータの走査を指示する。データ走査部４５は、上記指示に応じて、データ利用アクセスバッファ４４に格納されるアクセス要求を参照して、データ格納部４２に格納されているデータを順に走査する（ステップＳ１０７）。走査する順は、データ格納部４２から、より高速にアクセスできる方式であることが望ましい。
【００６３】
走査とは、具体的には、メインメモリ４２ａに格納されるデータを読み出して、キャッシュメモリ４２ｂに書き込むと共に、キャッシュメモリ４２ｂにおいて、書き込まれたデータを順に特定することである。
【００６４】
例えば、データ走査部４５は、データ格納部４２のメインメモリ４２ａのメモリアドレス順に全データを走査してもよい。あるいは、データ走査部４５は、まず、キャッシュメモリ４２ｂに格納されるデータに先に走査し、その後、未走査のデータを走査してもよい（詳細は後述する）。
【００６５】
なお、走査対象となるデータは、データ格納部４２に格納される、予め定められた必要なデータ全てが対象となる。必要なデータとは、例えば、格納されている全データ、格納されているデータのうち前回走査後に更新されたデータ、あるいは、格納されているデータのうち直近１秒以内に更新されたデータ等である。
【００６６】
上記のように、データ走査部４５は特定したデータを、順にデータ取得部４６に送る（ステップＳ１０８）。ここで、データ走査部４５は、特定したデータをすべてデータ取得部４６に送ってもよいし、データアクセスに必要な一部のデータのみを送ってもよい。
【００６７】
上記データは、データ取得部４６からデータ検索部４７に送られる。データ検索部４７は、データを受け取ると、当該データに対するアクセス要求（データ利用アクセス）を、データ利用アクセスバッファ４４から読み出す（ステップＳ１０９）。当該データに対するアクセス要求が存在する場合（ステップＳ１１０）、データ検索部４７は、アクセス要求の返答領域に、データ取得部４６から取得したデータ、または当該データの一部、または当該データを特定するためのハンドル情報を挿入する（ステップＳ１１１）。
【００６８】
例えば、データ利用アクセスバッファ４４に格納されるアクセス要求”Ｘ”に含まれるデータ特定条件が、「"key"が"hogehoge"である」とする。この場合、データ走査部４５により、"key=hogehoge"となるデータ”Ｐ”が特定され、データ”Ｐ”を取得したデータ検索部４７は、データ”Ｐ”をアクセス要求”Ｘ”の返答領域に格納する。
【００６９】
また、例えば、データ利用アクセスバッファ４４に格納されるアクセス要求”Ｙ”に含まれるデータ特定条件が、「"key"が"hogehoge"であるデータの"name1"」とする。この場合、データ走査部４５により、"key=hogehoge"となるデータ”Ｐ”が特定され、データ”Ｐ”を取得したデータ検索部４７は、データＰの"name1"をアクセス要求”Ｙ”の返答領域に格納する。
【００７０】
データ検索部４７は、返答領域にデータを挿入したアクセス要求を制御部４３に送る。制御部４３は、データ走査部４５から必要なデータをすべて走査した旨の通知を受けると（ステップＳ１１２）、データ利用アクセスバッファ４４に格納される情報に基づいて、データ送受信部４１を介してクライアント端末４０ａに、アクセス要求への返答をする（ステップＳ１１３）。そして、制御部４３は、返答済みのアクセス要求をデータ利用アクセスバッファ４４から削除する（ステップＳ１１４）。
【００７１】
以上の動作により、ストレージノード４０は、データ利用アクセスをデータ利用アクセスバッファ４４に蓄積し、アクセストリガーコンディションが満たされると、データ格納部４２に格納されているデータを順に走査する。この動作により、ストレージノード４０は、他の端末からデータ利用アクセスを受信した際に、適切なデータの返信を行うことができる。
【００７２】
ここで、上述のようにデータ格納部４２を走査する場合のキャッシュのヒット率について説明する。例えば、図４に示すように、データ格納部４２が備えるメインメモリ４２ａに、データ”Ａ”−”Ｌ”が格納されており、キャッシュメモリ４２ｂにデータ”Ｅ”−”Ｈ”が格納されているとする。データは、ブロックごとに格納され、キャッシュサイズは１ブロックとする。
【００７３】
例えば、データ利用アクセスが、データ”Ｃ”、”Ｇ”、”Ｌ”、”Ｄ”に対して順に送られ、データ利用アクセスバッファ４４にそれらが蓄積されたときに、アクセストリガーコンディションが満たされた（図３のステップＳ１０６においてＹＥＳ）場合について説明する。データ走査部４５は、データ格納部４２のメインメモリ４２ａのメモリアドレスの順に全データを走査する。すなわち、まず、データ走査部４５は、メインメモリ４２ａのブロック１を読み出してキャッシュメモリ４２ｂに書き込み、キャッシュメモリ４２ｂを走査する（この走査を、「第１の走査」と称する）。第１の走査の結果、データ”Ａ”、”Ｂ”、”Ｃ”、”Ｄ”が特定される。続いて、データ走査部４５は、メインメモリ４２ａのブロック２を読み出してキャッシュメモリ４２ｂに書き込み、キャッシュメモリ４２ｂを走査する（この走査を、「第２の走査」と称する）。第２の走査の結果、データ”Ｅ”、”Ｆ”、”Ｇ”、”Ｈ”が特定される。続いて、データ走査部４５は、メインメモリ４２ａのブロック３を読み出してキャッシュメモリ４２ｂに書き込み、キャッシュメモリ４２ｂを走査する（この走査を、「第３の走査」と称する）。第３の走査の結果、データ”Ｉ”、”Ｊ”、”Ｋ”、”Ｌ”が特定される。
【００７４】
第１の走査において、データＡに対するアクセスはミス（キャッシュミス）するが、ブロック１がキャッシュメモリ４２ｂに格納されることによりブロック１のデータのうち、”Ｂ”、”Ｃ”、”Ｄ”はキャッシュメモリ４２ｂから読み出すことができる（キャッシュヒット）。同様に、第２の走査において、データＥに対するアクセスはキャッシュミスするが、ブロック２がキャッシュメモリ４２ｂに格納されることによりブロック２のデータのうち、”Ｆ”、”Ｇ”、”Ｈ”はキャッシュヒットする。同様に、第３の走査において、データＩに対するアクセスはキャッシュミスするが、ブロック３がキャッシュメモリ４２ｂに格納されることによりブロック３のデータのうち、”Ｊ”、”Ｋ”、”Ｌ”はキャッシュヒットする。
【００７５】
すなわち、上記の、データ利用アクセスに対するキャッシュミス／キャッシュヒットの結果は、Ａ(miss)Ｂ(hit)Ｃ(hit)Ｄ(hit)Ｅ(miss)Ｆ(hit)Ｇ(hit)Ｈ(hit)Ｉ(miss)Ｊ(hit)Ｋ(hit)Ｌ(hit)となる。ここで、Ａ（miss）は、データＡに対するアクセスがミスしたこと（キャッシュミス）を示し、Ｂ(hit)は、データＢをキャッシュメモリ４２ｂから読み出しできたこと（キャッシュヒット）を示す。このように走査されたすべてのデータのうち、データＣ、Ｇ、Ｌ、Ｄが上記アクセス要求の対象となる。この例では、キャッシュミスは、３回発生する。
【００７６】
一方、データ走査部４５は、メインメモリ４２ａの全データを走査するのではなく、アクセス要求を受信するごとにデータＣ、Ｇ、Ｌ、Ｄにアクセスするとした場合、そのアクセス結果は、図４に示す例の場合、Ｃ(miss)Ｇ(miss)Ｌ(miss)Ｄ(miss)となる。すなわち、この場合、キャッシュミスは４回発生する。
【００７７】
このように、例えば、Ｎ回のデータ利用アクセスを処理する場合、通常技術では最悪の場合Ｎ回のキャッシュミスとＮ回のＴＬＢミスが発生する。一方、本第１の実施形態では、データ格納部４２のキャッシュメモリ４２ｂが１ページに１００個のオブジェクトを格納できた場合、最悪でもＮ／１００回のキャッシュミスでデータを取得することができるので、キャッシュのヒット率を向上することができる。
【００７８】
以上のように、本第１の実施形態によれば、制御部４３は、受信したアクセス要求をデータ利用アクセスバッファ４４に蓄積し、アクセストリガーコンディションが満たされたら、データ走査部４５は、データ格納部４２の全データを順に走査する。データ検索部４７は、走査により特定されたデータに対するアクセス要求を、データ利用アクセスバッファ４４から読み出す。制御部４３は、読み出したアクセス要求に当該データに関する情報を挿入して、クライアント端末４０ａに返答する。
【００７９】
この構成により、本第１の実施形態によれば、データ利用アクセスの実行が、データ格納部４２に対しシーケンシャルとなり、時間当たりアクセス数に対するキャッシュミスやＴＬＢミスの回数を減らすことができるので、局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータの提供ができるという効果が得られる。
【００８０】
第２の実施形態
図５は、本発明の第２の実施形態に係るストレージノード５０の構成を示すブロック図である。図５に示すように、ストレージノード５０は、第１の実施形態に係るストレージノード４０に加えて、データ分解部５１を備える。
【００８１】
データ分解部５１は、制御部４３から送られるストリームデータを、複数の断片に分解すると共に、分解した状態でデータ格納部４２に格納する。
【００８２】
データ分解部５１がデータ格納部４２にデータを格納する手法の一例として、列指向形式（Ｃｏｌｕｍｎ−ｏｒｉｅｎｔｅｄ）と呼ばれる手法が考えられる。
【００８３】
例えば、データ分解部５１は、３つのデータ、すなわち、
・{key: "key1", uid:"101", temp: 3},
・{key: "key2", uid:"102", temp: 10},
・{key: "key3", uid:"103", temp: 1},
を、列指向形式で格納する場合、以下のように各データを分解した状態で格納する。すなわち、データ分解部５１は、
・memory-area1{ "key1", "key2", "key3",...},
・memory-area2{ "101", "102", "103",...},
・memory-area3{ 3, 10, 1,...},
のように各データを格納する。ここで、上記格納形式は一例であり、本願の本実施形態を例に説明する本発明における格納形式は、上記に限定されない。
【００８４】
上記のように格納すると、例えば、すべてのデータに関して"uid"値のみにアクセスしたい場合、"key"値や"temp"値等をメモリやＣＰＵレジスタに書き込むことなくアクセスすることができる。これにより、高速にアクセスできることが知られている。一方で、列指向形式に基づいてデータを格納する場合、必要でなくても他のデータの同じプロパティの内容も読み出してしまうので、非効率的な面もある。
【００８５】
そこで、本発明の第２の実施形態に係るストレージノード５０により、データ格納をさらに効率化することにより、データ利用アクセスをさらに高速化する。
【００８６】
すなわち、データ分解部５１は、制御部４３から取得したデータを列指向形式でデータ格納部４２に格納する。データ走査部４５は、データ格納部４２に格納されるデータのうち、データ特定条件に含まれるプロパティ部分のみを走査する。他の構成要素については、第１の実施形態で説明した動作と同様に動作するので、その説明を省略する。
【００８７】
このように、本第２の実施形態では、データ分解部５１はデータ格納部４２にデータを分解した状態で格納し、データ走査部４５はデータ特定条件に含まれるプロパティ部分のみを走査するので、時間当たりアクセス数に対するキャッシュミスの回数をさらに減らすことができる。
【００８８】
例えば、Ｎ回のデータ利用アクセスを処理する場合、第１の実施形態で説明した構成では、最悪の場合Ｎ／１００回のキャッシュミスとＮ回のＴＬＢミスが発生する。一方、本第２の実施形態によれば、例えばアクセス対象のプロパティの容量がデータオブジェクト全体に占める容量の１０％である場合、最悪でもＮ／１０００回のキャッシュミスおよびＴＬＢミスでデータを取得することができる。
【００８９】
以上のように、第２の実施形態によれば、データ分解部５１は、制御部４３から取得したデータを、例えば列指向形式に基づいて分解した状態でデータ格納部４２に格納する。データ走査部４５は、データ格納部４２に格納されるデータのうち、データ特定条件に含まれるプロパティ部分のみを走査する。この構成により、時間当たりアクセス数に対するキャッシュミスやＴＬＢミスの回数をさらに減らすことができるという効果が得られる。
【００９０】
第３の実施形態
図６は、本発明の第３の実施形態に係るストレージノード６０の構成を示すブロック図である。図６に示すように、ストレージノード６０は、第１の実施形態に係るストレージノード４０と比較して、制御部６１がアクセス仕分部６２を備え、データ利用アクセスバッファ６３が第１のバッファ６３ａと第２のバッファ６３ｂを備える構成が異なる。その他の構成は、第１の実施形態に係るストレージノード４０と同様である。
【００９１】
制御部６１は、データ送受信部４１からアクセス要求を受け取ると共に、当該アクセス要求がデータ利用アクセスであると判定すると、アクセス仕分部６２において、アクセスバッファ条件にしたがって当該アクセス要求を仕分けする。アクセス仕分部６２は、仕分けにしたがって当該アクセス要求を、第１のバッファ６３ａと第２のバッファ６３ｂのいずれか一方、または両方に格納する。
【００９２】
アクセスバッファ条件とは、例えば、データ利用アクセスがデータ特定に利用するプロパティごとに、アクセス要求を仕分けする条件である。例えば、データ{key: hogehoge, name1: value1, name2: value2}に対するデータ特定条件が、"key"を対象とするアクセス要求を第１のバッファ６３ａに格納し、"name1"を対象とするアクセス要求を第２のバッファ６３ｂに格納する、という条件である。
【００９３】
この場合、データ検索部４７は、図３のＳ１０９におけるバッファからのアクセス要求の読み出しにおいて、データの"key"部分を第１のバッファ６３ａの検索に、"name1"部分を第２のバッファ６３ｂの検索に利用する。
【００９４】
すなわち、データ検索部４７は、データ取得部４６から受け取った特定されたデータを、必要に応じてアクセスバッファ条件に基づいて分解し（この場合は、データを"key"部分と"name1"部分とに分解し）、データの"key"部分を第１のバッファ６３ａの検索に、"name1"部分を第２のバッファ６３ｂの検索に利用する。
【００９５】
また、ストレージノード６０は、第２の実施形態において説明したように、データ分解部５１を備え、データ格納部４２はデータを分解した状態で格納してもよい。この場合、データ走査部４５は、データ格納部４２の、"key"部分を格納する領域と、"name"部分を格納する領域とを、平行して走査する。データ検索部４７は、データ走査部４５から受け取った特定されたデータに関して、データの"key"部分を第１のバッファ６３ａの検索に、"name1"部分を第２のバッファ６３ｂの検索に利用する。このような構成を採用することにより、ストレージノード６０はさらに高速化される。
【００９６】
さらに、アクセスバッファ条件の別の例として、データの一部の値の範囲に応じてアクセス要求を仕分けする条件が考えられる。例えば、データ{key: hogehoge, name1: value1, name2: value2}に対するデータ特定条件が、"key"の頭文字が”a”であるデータを対象にしたアクセス要求を第１のバッファ６３ａに格納し、"key"の頭文字が”b”であるデータを対象にしたアクセス要求を第２のバッファ６３ｂに格納する。
【００９７】
以上のように、第３の実施形態によれば、アクセス仕分部６２は、アクセス要求をアクセスバッファ条件にしたがって仕分けすると共に、第１のバッファ６３ａと第２のバッファ６３ｂのいずれか一方、または両方に格納する。データ検索部４７は、データ取得部４６から受け取ったデータに対するアクセスを、アクセスバッファ条件に基づいて第１のバッファ６３ａと第２のバッファ６３ｂとを並行して検索する。このような構成を採用することにより、データ利用アクセスバッファ６３を効率よく利用できるので、ストレージノード６０はさらに高速化されるという効果が得られる。
【００９８】
また、ストレージノード６０のプロセッサが複数のマルチコアであり、それぞれのコアが独自のキャッシュメモリを保持する場合、複数のアクセスバッファ手段を異なるコアのキャッシュにそれぞれ配置してもよい。この構成により、さらにキャッシュ利用効率を向上し、システムスループットを向上することができる。
【００９９】
第４の実施形態
図７は、本発明の第４の実施形態に係るストレージノード７０の構成を示すブロック図である。図７に示すように、ストレージノード７０は、第１の実施形態に係るストレージノード４０と比較して、制御部７１がアクセス圧縮部７２を備える構成が異なり、その他の構成は、第１の実施形態に係るストレージノード４０と同様である。
【０１００】
制御部７１は、データ送受信部４１からアクセス要求を受け取ると共に、当該アクセス要求がデータ利用アクセスであると判定すると、アクセス圧縮部７２において、データを圧縮する。すなわち、アクセス圧縮部７２は、データ利用アクセスから、データを特定できる最低限の情報（アクセス特定情報）を抽出する。例えば、アクセス圧縮部７２は、数ビットのデータアクセス識別子と数ビットのデータ特定条件の組を抽出する。これにより、ストレージノード７０は、２バイト程度の情報に基づいて１アクセスを実行することができる。
【０１０１】
アクセス圧縮部７２は、データ利用アクセスバッファ４４に、アクセス特定情報とアクセス全体を表す情報とを別領域に格納する。データ検索部４７は、図３のステップＳ１０９において、データ利用アクセスバッファ４４に格納されるアクセス特定情報のみを検索することにより、特定されたデータに対応するアクセス要求を読み出す。
【０１０２】
以上のように、第４の実施形態によれば、アクセス圧縮部７２は、データ利用アクセスからアクセス特定情報を抽出すると共に、当該アクセス特定情報をデータ利用アクセスバッファ４４に格納する。データ検索部４７は、データ利用アクセスバッファ４４からアクセス特定情報を検索することにより、特定されたデータに対応するアクセス要求を読み出す。この構成により、データ検索部４７は、アクセス特定情報を格納するデータ利用アクセスバッファ４４の領域のみを検索するので、データ利用アクセスをより高速化できるという効果が得られる。
【０１０３】
第５の実施形態
図８は、本発明の第５の実施形態に係るストレージノード８０の構成を示すブロック図である。図８に示すように、ストレージノード８０は、データ格納部８１、アクセス要求蓄積部（データ利用アクセスバッファ）８２、データ走査部８３およびアクセス検索部８４を備える。
【０１０４】
データ格納部８１は、ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、ブロック単位で格納可能なキャッシュメモリとを含む。
【０１０５】
アクセス要求蓄積部８２は、データ格納部８１に格納されるデータに対するアクセス要求を蓄積する。データ走査部８３は、アクセス要求蓄積部８２に蓄積されたアクセス要求が所定の条件を満たすのに応じて、データ格納部８１に含まれるメインメモリに格納されているデータを、ブロック単位で順に読み出してキャッシュメモリに書き込むと共に走査する。
【０１０６】
アクセス検索部８４は、走査によって特定されたデータに対するアクセス要求を、アクセス要求蓄積部８２から読み出すと共に、当該アクセス要求の送信元に対して特定されたデータを特定できる情報を返信する。
【０１０７】
上記構成により、本第５の実施形態によれば、局所性が少ないアクセス環境でのインメモリストレージアクセスにおいて、よりスループット性能の高いデータの提供ができるという効果が得られる。
【０１０８】
なお、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。また、本願発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０１０９】
また、図２、図５、図６、図７および図８に示したストレージノード（ストレージ装置）の各部は、コンピュータにより実現した場合、図９に例示するハードウエア資源において実現される。すなわち、図９に示す構成は、ＣＰＵ１０、ＲＡＭ（Random Access Memory）１１、ＲＯＭ（Read Only Memory）１２、ネットワークインタフェース１３および記憶媒体１４を備える。ストレージノードのＣＰＵ１０は、ＲＯＭ１２または記憶媒体１４に記憶された各種ソフトウェア・プログラム（コンピュータ・プログラム）を読み出し、ＲＡＭ１１に書き込むと共に実行することにより、ストレージノードの全体的な動作を司る。すなわち、上記各実施形態において、ＣＰＵ１０は、ＲＯＭ１２または記憶媒体１４を適宜参照しながら、ストレージノードが備える各機能（各部）を実行するソフトウエア・プログラムを実行する。
【０１１０】
また、上述した各実施形態では、図２、図５、図６、図７および図８に示したストレージノード（ストレージ装置）を、図９に示すＣＰＵ１０が実行する一例として、ソフトウエア・プログラムによって実現する場合について説明した。しかしながら、上記各図に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
【０１１１】
各実施形態を例に説明した本発明は、ストレージノード（ストレージ装置）に対して、その説明において参照したフローチャート（図３）の機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、ＣＰＵ１０がＲＡＭ１１に書き込むと共に実行することによって達成される。
【０１１２】
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ（一時記憶媒体）またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記録媒体によって構成されると捉えることができる。
【０１１３】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
【０１１４】
この出願は、２０１３年７月３０日に出願された日本出願特願２０１３−１５７３４６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１５】
本発明は、例えば、携帯電話やスマートフォンのセンサ情報を格納および処理するシステム、コンピュータシステムのログ情報を格納および処理するシステムに適用できる。また、本発明は、例えば、スマートグリッドやデジタルグリッドなど電力発電情報および利用情報を格納および処理するシステム、ＩＴＳ（Intelligent Transport Systems）など車のセンサやカーナビ情報を格納および処理システムに適用できる。また、本発明は、例えば、自動販売機など機械の購買情報や動作情報を逐次ネットワークで収集するＭ２Ｍ（Machine To Machine）システムに適用することができる。
【符号の説明】
【０１１６】
４０  ストレージノード
４１  データ送受信部
４２  データ格納部
４３  制御部
４４  データ利用アクセスバッファ
４５  データ走査部
４６  データ取得部
４７  データ検索部
５１  データ分解部
６２  アクセス仕分部
７２  アクセス圧縮部
【図１】
2015015727.tif 000003
【図２】
2015015727.tif 000004
【図３】
2015015727.tif 000005
【図４】
2015015727.tif 000006
【図５】
2015015727.tif 000007
【図６】
2015015727.tif 000008
【図７】
2015015727.tif 000009
【図８】
2015015727.tif 000010
【図９】
2015015727.tif 000011
【手続補正書】
【提出日】平成27年12月18日(2015.12.18)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
ブロック単位でデータを格納するメインメモリと、当該メインメモリに格納されるデータを、前記ブロック単位で格納可能なキャッシュメモリとを含むデータ格納手段に格納されるデータに対するアクセス要求をアクセス要求蓄積手段に蓄積する処理と、
前記アクセス要求蓄積手段に蓄積されたアクセス要求が所定の条件を満たすのに応じて、前記データ格納手段に含まれる前記メインメモリに格納されているデータを、前記ブロック単位で順に読み出して前記キャッシュメモリに書き込むと共に走査する処理と、
前記走査によって特定されたデータに対するアクセス要求を、前記アクセス要求蓄積手段から読み出すと共に、当該アクセス要求の送信元に対して前記特定されたデータを特定できる情報を返信する処理
を、コンピュータに実行させるデータアクセスプログラム。
【国際調査報告】
2015015727.tif 000012
2015015727.tif 000013