(57)【要約】【課題】データ収集システムにおいて、多数の端末から収集したデータをストレージ装置が速やかに格納できるようにすること。【解決手段】データ収集システムは、１または２以上の端末から送出された複数のデータを中継する中継装置と、複数のデータを蓄積する複数のストレージノードを有する分散ストレージ装置と、を備え、中継装置は、複数のデータのそれぞれに付与すべき識別子を分散ストレージ装置から取得するとともに、取得した複数の識別子と複数のデータを含む結合データを生成して分散ストレージ装置に送出し、分散ストレージ装置は、中継装置からの問い合わせに応じて識別子を中継装置に回答するとともに、中継装置から受信した結合データに含まれる複数のデータを、複数の識別子に従って複数のストレージノードに分散して格納する。【選択図】図１
2013257798.tif 000002
【特許請求の範囲】
【請求項１】
１または２以上の端末から送出された複数のデータを中継する中継装置と、
前記複数のデータを蓄積する複数のストレージノードを有する分散ストレージ装置と、を備え、
前記中継装置は、前記複数のデータのそれぞれに付与すべき識別子を前記分散ストレージ装置から取得するとともに、取得した複数の識別子と前記複数のデータを含む結合データを生成して前記分散ストレージ装置に送出し、
前記分散ストレージ装置は、前記中継装置からの問い合わせに応じて前記識別子を前記中継装置に回答するとともに、前記中継装置から受信した前記結合データに含まれる前記複数のデータを、前記複数の識別子に従って前記複数のストレージノードに分散して格納する、データ収集システム。
【請求項２】
前記複数のデータは、互いに異なる複数の端末から送出されたデータである、請求項１に記載のデータ収集システム。
【請求項３】
前記中継装置は、前記複数のデータのそれぞれを送出した端末を前記分散ストレージ装置に通知し、
前記分散ストレージ装置は、前記複数のデータのそれぞれを送出した端末を表す識別子を、前記複数のデータのそれぞれに付与すべき識別子とする、請求項１または２に記載のデータ収集システム。
【請求項４】
前記分散ストレージ装置は、同一の端末が送出したデータを前記複数のストレージノードのうちの同一のストレージノードに格納する、請求項３に記載のデータ収集システム。
【請求項５】
前記分散ストレージ装置は、前記複数のデータのそれぞれを送出した端末および前記中継装置を表す識別子を、前記複数のデータのそれぞれに付与すべき識別子とする、請求項１または２に記載のデータ収集システム。
【請求項６】
前記分散ストレージ装置は、同一の中継装置が送出したデータを前記複数のストレージノードのうちの同一のストレージノードに格納する、請求項５に記載のデータ収集システム。
【請求項７】
前記中継装置は、前記結合データに含まれる前記複数のデータをバッファに一時的に蓄積し、
前記分散ストレージ装置から前記結合データを受信した旨の通知を受けると、前記バッファに蓄積された前記複数のデータを削除する、請求項１ないし６のいずれか１項に記載のデータ収集システム。
【請求項８】
１または２以上の端末から送出された複数のデータを中継する中継装置と、
前記複数のデータを蓄積する複数のストレージノードを有する分散ストレージ装置と、を備えたデータ収集システムによるデータ収集方法であって、
前記中継装置が、前記複数のデータのそれぞれに付与すべき識別子を前記分散ストレージ装置に問い合わせる工程と、
前記分散ストレージ装置が、前記中継装置からの問い合わせに応じて前記識別子を前記中継装置に回答する工程と、
前記中継装置が、取得した複数の識別子と前記複数のデータを含む結合データを生成して前記分散ストレージ装置に送出する工程と、
前記分散ストレージ装置が、前記中継装置から受信した前記結合データに含まれる前記複数のデータを、前記複数の識別子に従って前記複数のストレージノードに分散して格納する工程と、を含む、データ収集方法。
【請求項９】
前記複数のデータは、互いに異なる複数の端末から送出されたデータである、請求項９に記載のデータ収集方法。
【請求項１０】
前記中継装置が、前記複数のデータのそれぞれを送出した端末を前記分散ストレージ装置に通知する工程と、
前記分散ストレージ装置が、前記複数のデータのそれぞれを送出した端末を表す識別子を、前記複数のデータのそれぞれに付与すべき識別子とする工程と、を含む、請求項８または９に記載のデータ収集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ収集システムおよびデータ収集方法に関し、特に、センサ端末、ユーザ端末などの端末から収集したデータを分散ストレージ装置に格納するデータ収集システムおよびデータ収集方法に関する。
【背景技術】
【０００２】
センサ端末、ユーザ端末などの地理的に離れた複数の端末から時々刻々と発生するデータを収集し、インターネットなどの広域ネットワークを通じてデータセンターに転送し、データセンター内のストレージ装置に格納するとともに、格納したデータを処理するデータ収集システムが知られている。
【０００３】
センサ端末から収集されるデータとして、ＧＰＳ（Global Positioning System）を用いた位置情報、温度計による温度情報、加速度センサによる加速度や速度、スマートメータによる電力消費量などの少数の数値データや、マイクによって録音された音声情報、カメラによって撮影された静止画、動画像ストリームなどの複雑なバイナリデータなどが考えられる。一方、ユーザ端末から収集されるデータとして、マイクロブログサービス（micro-blogging service）への投稿データ、電話の呼情報のログデータなどが考えられる。
【０００４】
インターネットを介して接続された計算機リソースを利用してデータを処理するクラウドコンピューティングの普及に伴い、上記のデータはインターネット、公衆無線網などを通じて、地理的に離れたデータセンターに集約されるようになってきている。収集されたデータをデータセンターのシステムに送信するためには、データセンターのシステムの入り口に設けられたゲートウェイサーバ（またはアプリケーションサーバ）に対してデータを送信する必要がある。以下では、データセンターの入り口に設けられたゲートウェイサーバ（またはアプリケーションサーバ）を、「ストレージクライアント」と呼ぶ。
【０００５】
スマートフォンのように、センサを備えた端末自身が公衆無線網、インターネットなどの通信プロトコルを処理できる場合、端末自身がストレージクライアントに対してデータを送信することができる。例えば、非特許文献１には、AndroidスマートフォンがBluetooth（登録商標）と呼ばれる無線接続方式によってセンサ情報を集約し、インターネットを経由してシステムの管理サーバへ送信する技術が記載されている。
【０００６】
一方、センサ端末においては、コストや消費電力を削減する目的で、ハードウェアリソースが制約されている場合がある。この場合、センサ端末自身は公衆網にはアクセスすることができず、センサ端末とストレージクライアントとを仲介する中継装置が必要となる。なお、中継装置は、１台のセンサ端末に対して１つ設ける必要はなく、複数台のセンサ端末を収容するようにしてもよい。また、センサ端末とデータセンターのストレージクライアントとの間に、多段の中継装置が介在するようにしてもよい。
【０００７】
例えば、非特許文献２には、スマートメータと呼ばれるセンサ端末と中継装置との間をZigBeeと呼ばれる無線規格で接続するとともに、中継装置と公益事業会社（Utility Company）との間を公衆無線網であるCellular上に暗号回線（ＶＰＮ：Virtual Private Network）を作成して接続することで、センサデータをデータセンターに送信する技術が記載されている。
【０００８】
また、非特許文献１には、端末と管理サーバとの間に、基地局、ゲートウェイ、ルータなどの複数の中継器が介在する技術が記載されている。
【０００９】
中継装置は、通信方式を変換する以外に、センサのデータを中継装置内の記憶領域（バッファ）に一時的に保持するバッファリングを行う場合がある。例えば、公衆通信網の最低送信可能量が決まっている場合、データ転送の効率を上げるために、中継装置によるバッファリングが行われる。また、公衆通信網のデータ到達可能性が低い場合には、データの喪失を回避するために、データセンター側で確実にデータが受領されたことを確かめるまで、中継装置がバッファリングを行うこともある。
【００１０】
データセンター内のネットワークに到達した収集データは、ストレージクライアントによって受け取られ、加工されるとともに、ストレージ装置に格納することで永続化され、分析などの用途に供される。ここでは、「データの永続化」とは、データが消えることなく存続するように保持することをいう。永続化の例として、システムにおいて規定された冗長性を満たすだけの複製、符号などを不揮発性記憶媒体に格納することが挙げられる。
【００１１】
ストレージ装置は、データを保持するとともに、保持するデータを提供するシステムである。具体的には、ストレージ装置は、データの一部に対するCREATE(INSERT), READ, WRITE(UPDATE）, DELETEなどの基本機能（アクセス）を提供する。また、ストレージ装置は、権限管理、データ構造化整理などの多様な機能を提供することもある。
【００１２】
分散ストレージ装置は、ネットワークを介して接続された多数の計算機を有し、これらの計算機のハードディスクドライブ（ＨＤＤ：Hard Disk Drive）、メモリ等を用いてストレージ装置を実現する。分散ストレージ装置では、いずれの計算機にデータを配置し、いずれの計算機によってデータを処理するのかを、ソフトウェアまたは特別なハードウェアによって決定する。また、分散ストレージ装置の動作を動的に変更することにより、システム内のリソース使用量を調整するとともに、ストレージクライアントおよび利用者に対する性能を向上させる。
【００１３】
分散ストレージ装置においては、データは複数のストレージノードに分散して格納されている。したがって、ストレージクライアントがデータにアクセスする場合には、データを保持しているストレージノードを把握する必要がある。また、アクセス対象のデータを保持するストレージノードが複数存在する場合には、ストレージクライアントは、いずれのストレージノードにアクセスすべきかを把握する必要がある。
【００１４】
格納されるデータは、ある意味的な単位でアクセスされる。例えば、関係データベースでは、データはレコードまたはタプルと呼ばれる単位で書き込まれる。また、ファイルシステムでは、データはブロックの集合として書き込まれる。さらに、キーバリューストアでは、データはオブジェクトとして書き込まれる。こうして書き込まれたデータは、その単位ごとにユーザ計算機により読み込まれる。以下では、このデータ単位を「データオブジェクト」と呼ぶ。
【００１５】
センサから取得したデータを格納する際、例えば、１つのセンサ当り１つのオブジェクトを割り当て、その中身に時々刻々と取得したデータを更新（update）していく方法が考えられる。また、１回のセンシングデータごとに新しくオブジェクトを作成し、挿入（insert）する方法が考えられる。さらに、テーブルなどのより大きなデータ単位を用意し、テーブル内にタプルとしてデータを挿入する方法が考えられる。
【００１６】
データオブジェクトを保持しているストレージノードをストレージクライアントが把握する方式として、データオブジェクトの位置情報を管理する１または２以上の計算機から成るメタサーバを設ける方式（以下「メタサーバ方式」という。）が知られている。
【００１７】
非特許文献３に記載されたGoogle File Systemと呼ばれる分散ストレージ装置では、メタサーバはデータチャンクの位置を一元管理する。
【００１８】
データオブジェクトを保持しているストレージノードをストレージクライアントが把握するための他の方式として、分散関数（例えば、ハッシュ関数）を用いてデータオブジェクトの格納ノードを求める方式（分散関数方式）が知られている。分散関数方式においては、すべてのストレージクライアントが、分散関数、および、システムに参加しているストレージノードのリスト（ノードリスト）を共有する。また、格納データは固定長または任意長のデータ断片（Value、バリュー）に分割され、各Valueにはこれを一意に特定するための識別子（Key、キー）が付与されている。ストレージクライアントは、データにアクセスする場合には、分散関数にキーを入力として与え、分散関数の出力値とノードリストに基づいて、データを格納しているストレージノードを算術的に求める。
【００１９】
例えば、非特許文献４に記載された技術によると、ストレージクライアントは、ハッシュ関数を複数回適用することで、システム中のデータオブジェクトを格納しているストレージノードを発見することができる。
【００２０】
分散関数方式によると、集中アクセスされるメタサーバを経由することなく、各ストレージクライアントはストレージノードにアクセスすることができるため、メタサーバが性能上のボトルネックになることがない。例えば、特許文献２には、乱数関数を用いてデータの配置を決定する技術が記載されている。
【００２１】
また、ストレージ装置とサーバ以外に、これらの間にキューを設け、ストレージ装置やデータ処理システムでの処理が終わる前にデータの永続性を確保する技術が知られている。例えば、非特許文献５には、クライアント（証券会社参加者）からのデータ（注文）をデータ処理システム（トレーディングサーバ）で処理する前に、キュー（注文管理サーバ）でデータがシステムで受け取られたことを保証し、データを処理する前にクライアントにレスポンスを返す技術が記載されている。
【００２２】
さらに、特許文献１には、多数の小サイズのユーザ利用データを格納するときに必要とされる時間が長いという問題、および、データ転送元のユーザ計算端末上の転送済データを高速に削除できないという問題に対処するために、多数の小サイズデータをまとめて送信する技術が記載されている。
【００２３】
以下では、一例として、端末はデータセンター外に存在し、データ格納システムはデータセンター内に存在する場合について説明する。ただし、端末およびデータ格納システムは、いずれもデータセンターの外部に存在していてもよいし、いずれもデータセンターの内部に存在していてもよい。なお、以下では、センサ端末、ユーザ端末などの情報源となる端末を、単に「端末」という。
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】特開２０１１−０４８４２７号公報
【特許文献２】国際公開第２０１２／０２３３８４号
【非特許文献】
【００２５】
【非特許文献１】加藤大智、他３名、「高齢者を見守るリモート監視システムの提案と実装」、情報処理学会第73回全国大会講演論文集，pp.22，Mar.2011．
【非特許文献２】"ConnectPort(R) X2 for Smart Energy, ZigBee Smart Energy enabled IP gateway, "［online］、［平成24年5月29日検索］、インターネット〈URL： http://www.digi.com/products/wireless-routers-gateways/gateways/connectportx2#overview>
【非特許文献３】S. Ghemawat, et al., "The Google File System," SIGOPS Oper. Syst. Rev. 37, 5 (October 2003), pp. 29-43.
【非特許文献４】Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan, "Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications," ACM SIGCOMM Computer Communication, Review 31(4), pp.149-160, ACM Press, 2001.
【非特許文献５】平田 剛、他１名、「高速応答を支えるデータ同期、可用性は３重化で保証する、東京証券取引所（技術編）」、［online］、［平成24年5月29日検索］、インターネット〈URL： http://itpro.nikkeibp.co.jp/article/COLUMN/20110114/356097/>
【発明の概要】
【発明が解決しようとする課題】
【００２６】
以下の分析は、本発明者によってなされたものである。
【００２７】
上述のデータ収集システムを安価に構成するには、多数の端末から時々刻々と送信されるデータを、データセンター側で速やかに永続化する技術が必要とされる。特に、多数の端末からのデータを少ない計算機で処理できれば、データセンター内のシステム構築コストおよび運用コストを低く抑えることができる。また、データセンター側で高速にデータを永続化できれば、中継装置に搭載すべきバッファの容量を小さくすることができ、データセンター外のシステム構築コストおよび運用コストも低く抑えることができる。
【００２８】
ストレージクライアントは、データセンター外から送信されてきた端末ごとのデータを分散ストレージ装置に格納する。ストレージクライアントが端末ごとのネットワークセッションを維持する負荷や、ストレージクライアントがデータ毎のネットワークプロトコルを変換する負荷は、端末の数が増大するに従って大きくなる。したがって、端末の数が増大すると、より多くの台数のストレージクライアントが必要とされる。また、各端末による１回のデータ送出の都度、分散ストレージ装置上のオブジェクトに対するネットワーク上のやり取りが発生すると、アクセス時間および永続化に要する時間が増大する。
【００２９】
そこで、端末の数が増大した場合には、中継装置が複数のデータを予め大きなデータ構造にパッキングしてからストレージクライアントに送信する方法が考えられる。中継装置が複数の端末からのデータまたは１つの端末からの複数のデータをまとめて１つのデータ構造にパッキングすることにより、ストレージクライアントにおけるネットワークセッションの維持に必要な資源を、端末の個数ではなく中継装置の個数のオーダにまで削減することができる。
【００３０】
また、ストレージクライアントがセンサデータを格納する際、特許文献２に記載された技術のように、複数のデータをまとめてストレージノードに送信することで、前述のネットワーク上のやり取りに起因するアクセス時間の長大化を防ぐことができる。
【００３１】
しかし、上述の関連技術のように、データセンターの内外においてそれぞれ異なる方式に基づいて複数のデータをまとめた場合、ストレージクライアントは、データセンター外の方式に基づいてまとめられたデータを、データセンター内の方式に適合するように変換しなければならず、ストレージクライアントの負荷が増大し、収集したデータを速やかに格納して永続化することが困難となる。
【００３２】
そこで、データ収集システムにおいて、多数の端末から収集したデータをストレージ装置が速やかに格納できるようにすることが課題となる。本発明の目的は、かかる課題を解決するデータ収集システムおよびデータ収集方法を提供することにある。
【課題を解決するための手段】
【００３３】
本発明の第１の視点に係るデータ収集システムは、
１または２以上の端末から送出された複数のデータを中継する中継装置と、
前記複数のデータを蓄積する複数のストレージノードを有する分散ストレージ装置と、を備え、
前記中継装置は、前記複数のデータのそれぞれに付与すべき識別子を前記分散ストレージ装置から取得するとともに、取得した複数の識別子と前記複数のデータを含む結合データを生成して前記分散ストレージ装置に送出し、
前記分散ストレージ装置は、前記中継装置からの問い合わせに応じて前記識別子を前記中継装置に回答するとともに、前記中継装置から受信した前記結合データに含まれる前記複数のデータを、前記複数の識別子に従って前記複数のストレージノードに分散して格納する。
【００３４】
本発明の第２の視点に係るデータ収集方法は、
１または２以上の端末から送出された複数のデータを中継する中継装置と、
前記複数のデータを蓄積する複数のストレージノードを有する分散ストレージ装置と、を備えたデータ収集システムによるデータ収集方法であって、
前記中継装置が、前記複数のデータのそれぞれに付与すべき識別子を前記分散ストレージ装置に問い合わせる工程と、
前記分散ストレージ装置が、前記中継装置からの問い合わせに応じて前記識別子を前記中継装置に回答する工程と、
前記中継装置が、取得した複数の識別子と前記複数のデータを含む結合データを生成して前記分散ストレージ装置に送出する工程と、
前記分散ストレージ装置が、前記中継装置から受信した前記結合データに含まれる前記複数のデータを、前記複数の識別子に従って前記複数のストレージノードに分散して格納する工程と、を含む。
【発明の効果】
【００３５】
本発明に係るデータ収集システムおよびデータ収集方法によると、多数の端末から収集したデータをストレージ装置が速やかに格納することが可能となる。
【図面の簡単な説明】
【００３６】
【図１】本発明に係るデータ収集システムの構成を一例として示す図である。
【図２】第１の実施形態に係るデータ収集システムの構成を一例として示すブロック図である。
【図３】第２の実施形態に係るデータ収集システムの構成を一例として示すブロック図である。
【図４】第３の実施形態に係るデータ収集システムの構成を一例として示すブロック図である。
【図５】実施例のデータ収集システムの構成を一例として示すブロック図である。
【図６】実施例のデータ収集システムにおける分散ストレージ装置の構成を一例として示すブロック図である。
【図７】実施例のデータ収集システムにおける分散ストレージ装置の構成を一例として示すブロック図である。
【図８】実施例におけるデータ収集システムにおける端末の構成を一例として示すブロック図である。
【図９】実施例のデータ収集システムにおける中継装置に設けられた識別子ＤＢの構成を一例として示す図である。
【図１０】実施例のデータ収集システムにおける結合データのフォーマットを一例として示す図である。
【発明を実施するための形態】
【００３７】
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００３８】
図１は、本発明に係るデータ収集システムの構成を一例として示すブロック図である。図１を参照すると、データ収集システムは、中継装置（２）および分散ストレージ装置（３）を備える。中継装置（２）は、１または２以上の端末（１）から送出された複数のデータを中継する。分散ストレージ装置（３）は、複数のデータを蓄積する複数のストレージノード（３０）を有する。
【００３９】
中継装置（２）は、複数のデータのそれぞれに付与すべき識別子を分散ストレージ装置（３）から取得するとともに、取得した複数の識別子と複数のデータを含む結合データを生成して分散ストレージ装置（３）に送出する。分散ストレージ装置（３）は、中継装置（２）からの問い合わせに応じて識別子を中継装置（２）に回答するとともに、中継装置（２）から受信した結合データに含まれる複数のデータを、複数の識別子に従って複数のストレージノード（３０）に分散して格納する。ここで、複数のデータは、互いに異なる複数の端末（１）から送出されたデータであってもよい。
【００４０】
また、中継装置（２）は、複数のデータのそれぞれを送出した端末（１）を分散ストレージ装置（３）に通知し、分散ストレージ装置（３）は、複数のデータのそれぞれを送出した端末（１）を表す識別子を、複数のデータのそれぞれに付与すべき識別子としてもよい。さらに、分散ストレージ装置（３）は、同一の端末（１）が送出したデータを複数のストレージノード（３０）のうちの同一のストレージノードに格納してもよい。
【００４１】
また、分散ストレージ装置（３）は、複数のデータのそれぞれを送出した端末（１）および中継装置（２）を表す識別子を、複数のデータのそれぞれに付与すべき識別子としてもよい。さらに、分散ストレージ装置（３）は、同一の中継装置（２）が送出したデータを複数のストレージノード（３０）のうちの同一のストレージノードに格納するようにしてもよい。
【００４２】
かかるデータ収集システムによると、端末（１）に近い下流側に設けられた中継装置（２）において、１または２以上の端末（１）から収集した複数のデータを結合して単一のデータとすることで、収集したデータを分散ストレージ装置（３）に対して効率よく送信することができる。また、分散ストレージ装置（３）が中継装置（２）から受信した結合データに含まれるデータに対して、分散ストレージ装置（３）自身が決定した識別子が中継装置（２）によって付与されている。したがって、分散ストレージ装置（３）は、結合データを受信すると、結合データに含まれる識別子に基づいて、結合データに含まれるデータをストレージノード（３０）に速やかに格納することができる。よって、かかるデータ収集システムによると、多数の端末（１）から収集したデータをストレージ装置（３）が速やかに格納し、永続化することが可能となる。
【００４３】
また、中継装置（２）は、結合データに含まれる複数のデータをバッファ（図１において非図示）に一時的に蓄積し、分散ストレージ装置（３）から結合データを受信した旨の通知を受けると、バッファに蓄積された前記複数のデータを削除するようにしてもよい。
【００４４】
かかるデータ収集システムによると、端末（１）から収集したデータが分散ストレージ装置（３）に格納され、永続化される前に消失するリスクを軽減すると同時に、中継装置（２）においてデータをバッファリングするためのバッファの容量を小さくすることができる。
【００４５】
なお、本発明において、下記の形態が可能である。
［形態１］
前記第１の視点に係るデータ収集システムのとおりである。
［形態２］
前記複数のデータは、互いに異なる複数の端末から送出されたデータであってもよい。
［形態３］
前記中継装置は、前記複数のデータのそれぞれを送出した端末を前記分散ストレージ装置に通知し、
前記分散ストレージ装置は、前記複数のデータのそれぞれを送出した端末を表す識別子を、前記複数のデータのそれぞれに付与すべき識別子としてもよい。
［形態４］
前記分散ストレージ装置は、同一の端末が送出したデータを前記複数のストレージノードのうちの同一のストレージノードに格納してもよい。
［形態５］
前記分散ストレージ装置は、前記複数のデータのそれぞれを送出した端末および前記中継装置を表す識別子を、前記複数のデータのそれぞれに付与すべき識別子としてもよい。
［形態６］
前記分散ストレージ装置は、同一の中継装置が送出したデータを前記複数のストレージノードのうちの同一のストレージノードに格納してもよい。
［形態７］
前記中継装置は、前記結合データに含まれる前記複数のデータをバッファに一時的に蓄積し、
前記分散ストレージ装置から前記結合データを受信した旨の通知を受けると、前記バッファに蓄積された前記複数のデータを削除してもよい。
［形態８］
前記第２の視点に係るデータ収集方法のとおりである。
［形態９］
前記データ収集方法において、前記複数のデータは、互いに異なる複数の端末から送出されたデータであってもよい。
［形態１０］
前記データ収集方法は、
前記中継装置が、前記複数のデータのそれぞれを送出した端末を前記分散ストレージ装置に通知する工程と、
前記分散ストレージ装置が、前記複数のデータのそれぞれを送出した端末を表す識別子を、前記複数のデータのそれぞれに付与すべき識別子とする工程と、を含んでもよい。
［形態１１］
前記データ収集方法において、前記分散ストレージ装置が、同一の端末が送出したデータを前記複数のストレージノードのうちの同一のストレージノードに格納してもよい。
［形態１２］
前記データ収集方法において、前記分散ストレージ装置が、前記複数のデータのそれぞれを送出した端末および前記中継装置を表す識別子を、前記複数のデータのそれぞれに付与すべき識別子としてもよい。
［形態１３］
前記データ収集方法において、前記分散ストレージ装置が、同一の中継装置が送出したデータを前記複数のストレージノードのうちの同一のストレージノードに格納してもよい。
［形態１４］
前記データ収集方法は、
前記中継装置が、前記結合データに含まれる前記複数のデータをバッファに一時的に蓄積する工程と、
前記分散ストレージ装置から前記結合データを受信した旨の通知を受けると、前記バッファに蓄積された前記複数のデータを削除する工程と、を含んでもよい。
【００４６】
（実施形態１）
第１の実施形態に係るデータ収集システムについて、図面を参照して説明する。図２は、本実施形態に係るデータ収集システムの構成を一例として示すブロック図である。図２を参照すると、データ収集システムは、端末１から取得したデータを中継する中継装置２と、データを格納する分散ストレージ装置３を備える。
【００４７】
中継装置２は、データ受信部２１、識別子付与部２５、識別子ＤＢ２２、識別子結合部２３、および、データ結合・送信部２４を備える。また、分散ストレージ装置３は、ストレージクライアント３９および分散データ記憶部３３を備える。ストレージクライアント３９は、記憶資源管理部３２および結合データ受信部３１を備える。さらに、記憶資源管理部３２は、識別子取得部３５およびデータ配置管理部３４を備える。また、分散データ記憶部３３は、図１に示すように、複数のストレージノード３０を備える。
【００４８】
データ受信部２１は、１つ以上の端末１からデータを取得する。識別子付与部２５は、端末１から取得したデータに付与するための識別子を分散ストレージ装置３の識別子取得部３５から取得する。識別子ＤＢ２２は、識別子付与部２５が取得した識別子を保持する。識別子結合部２３は、端末１から取得したデータに対して、識別子付与部２５が取得した識別子を付与する。データ結合・送信部２４は、識別子を付与された１つ以上のデータを結合してより大きなデータにパックし、分散ストレージ装置３のもつ結合データ受信部３１へ送信する。
【００４９】
結合データ受信部３１は、中継装置２のデータ結合・送信部２４から送出された結合データを取得する。データ配置管理部３４は、データを格納すべきストレージノード決定と、データを保持するストレージノードの検索を行う。データ配置管理部３４は、一例として、データ識別子に基づいて、データを格納すべき１つ以上のストレージノードを決定し、分散データ記憶部３３にデータを格納する。識別子取得部３５は、識別子付与部２５からの依頼に基づいて、端末１から取得したデータに識別子を付与する。
【００５０】
識別子取得部３５は、上記の識別子として、システム内で端末１を識別可能な識別子を生成してもよい。また、識別子取得部３５は、上記の識別子として、分散ストレージ装置３に格納するデータの識別子を生成してもよい。このとき、当該識別子を持つ一連のデータ構造の更新情報として、データを分散ストレージ装置３に格納するようにしてもよい。さらに、識別子取得部３５は、上記の識別子として、システム内で中継装置２および端末１を識別可能な識別子を生成してもよい。
【００５１】
また、記憶資源管理部３２は、オブジェクト識別子と１つ以上の格納ストレージノードの対情報を、データ配置情報として記録するとともに、データ配置に利用するメタサーバ形式であってもよい。このとき、識別子付与部２５は、少なくとも新たに依頼する端末１の個数を識別子依頼として識別子取得部３５に送信する。また、識別子取得部３５は、依頼された個数の識別子をオブジェクト識別子として、１つ以上の格納ストレージを表す情報とともにメタサーバに記録する。識別子取得部３５は、当該オブジェクト識別子を上記の識別子とする。データ配置管理部３４は、結合データに付与されているオブジェクト識別子に応じて、データを格納するストレージノード３０を決定する。なお、識別子取得部３５は、識別子を生成する際、１つの結合データに含まれる複数のデータが１つのストレージノード３０に格納されるように、予めオブジェクト識別子と格納ストレージノードの対を決定してもよい。
【００５２】
データ配置管理部３４は、オブジェクト識別子を所定の１つ以上の関数に入力し、関数と同数の格納ストレージノードを表す情報を得ることで、データを格納するストレージノード３０を決定する分散関数形式のデータ配置方式であってもよい。このとき、識別子付与部２５は、少なくとも新たに依頼する端末の個数を識別子依頼として送信する。記憶資源管理部３２は、依頼された個数の識別子をオブジェクト識別子として返却する。記憶資源管理部３２は、結合データに付与されている識別子をオブジェクト識別子として、データを格納するストレージノード３０を決定する。なお、識別子取得部３５は、識別子を生成する際、１つの結合データに含まれる複数のデータが１つのストレージノード３０に格納されるように、オブジェクト識別子を決定してもよい。
【００５３】
さらに、識別子取得部３５によって生成される識別子は、中継装置２を表す情報と中継装置２内で端末１を表す情報の少なくとも２つに分けることができるようにし、記憶資源管理部３２が、識別子のうちの中継装置２を表す情報の一部を利用してストレージノードを決定する関数を利用するようにしてもよい。
【００５４】
本実施形態のデータ収集システムにおいて、中継装置２は、１または２以上の端末１から取得した複数のデータのそれぞれに対して、分散ストレージ装置３によって決定された識別子を付与するとともに、識別子付与後の複数のデータを結合して１つの結合データにまとめた後、分散ストレージ装置３に送出する。また、分散ストレージ装置３は、結合データに含まれるデータを結合データに付与された識別子に応じて複数のストレージノードに格納する。したがって、本実施形態のデータ収集システムによると、分散ストレージ装置３は、多数の端末１から収集したデータを速やかに永続化することが可能となる。
【００５５】
（実施形態２）
第２の実施形態に係る分散ストレージ装置について、図面を参照して説明する。図３は、本実施形態に係る分散ストレージ装置３の構成を一例として示すブロック図である。図３を参照すると、本実施形態のデータ収集システムにおいては、中継装置２は、さらに、バッファ２６および送信済みデータ削除部２７を備える。これらの各部は、中継装置２に設けられたハードウェアによって実現してもよいし、中継装置２のコンピュータ資源を用いてソフトウェアを実行することで実現してもよい。
【００５６】
バッファ２６は、送信データを一時的に格納する。本実施形態の結合データ受信部３１は、第１の実施形態における結合データ受信部３１の機能を有するとともに、分散データ記憶部３３によるデータの永続化が完了した後、当該データを送信した中継装置２の送信済みデータ削除部２７に対して、受信確認を送信する。送信済みデータ削除部２７は、受信確認を受け取ると、バッファ２６に蓄積された送信済みデータを削除する。
【００５７】
本実施形態のデータ収集システムにおいても、分散ストレージ装置３の記憶資源管理部３２は、同一の中継装置２から依頼されて生成した識別子が付与されたデータが同一のストレージノードにより高い確率で格納されるようにしてもよい。
【００５８】
本実施形態のデータ収集システムにおいて、端末１によって生成されたデータは、次のようにして永続化される。
【００５９】
端末１によって生成されたデータは、バッファ２６に一時的に格納される。なお、識別子が付与されたデータをバッファ２６に格納してもよい。一方、バッファ２６からデータを取り出す際に、データに識別子を付与してもよい。
【００６０】
データ結合・送信部２４は、所定のデータ送信タイミングに従って、バッファ２６に格納されたデータを送信する。データ送信タイミングを、一定時間毎としてもよい。また、データ送信タイミングを、バッファ２６のメモリが所定の割合だけ使用されたタイミングとしてもよい。さらに、データ送信タイミングを、以前の通信が終了した時点としてもよい。また、データ送信タイミングを、中継装置２に設けられたデータ送信ボタン（非図示）がユーザによって押下されたタイミングとしてもよい。ただし、データ送信タイミングは、これらに限定されない。
【００６１】
データ結合・送信部２４は、バッファ２６中の全部または一部のデータを結合して結合データを生成し、生成した結合データを結合データ受信部３１または上流の中継装置（図３において非図示）に送信する。この時点では、バッファ２６中のデータを削除することなく保持する。
【００６２】
分散データ記憶部３３でデータが永続化されると、分散ストレージ装置３の結合データ受信部３１は、中継装置２に受信確認を返却する。中継装置２の送信済みデータ削除部２７は、受信確認を受け取ると、当該受信確認に対応する送信済みのデータをバッファ２６から削除する。
【００６３】
本実施形態に係るデータ収集システムによると、ネットワーク障害や分散ストレージ装置における永続化以前の障害に起因するデータ喪失の確率を低く抑えるとともに、バッファ２６のメモリ容量を少なく抑えることができる。なぜなら、結合データごとに受信確認を行うことで、中継装置２と分散ストレージ装置３のネットワーク上の応答回数を削減しつつ、バッファ２６に蓄積された不要なデータを素早く削除することができるからである。
【００６４】
（実施形態３）
第３の実施形態に係るデータ収集システムについて、図面を参照して説明する。図４は、本実施形態に係るデータ収集システムの構成を一例として示すブロック図である。図４を参照すると、データ収集システムは、さらに、上流結合装置４を備える。また、上流結合装置４は、上流結合部４１を有する。
【００６５】
上流結合部４１は、１または２以上の中継装置２から送信された複数の結合データをさらに結合して、上流結合データを生成する。また、上流結合部４１は、生成した上流結合データを分散ストレージ装置３の結合データ受信部３１に送信する。
【００６６】
本実施形態に係るデータ収集システムによると、中継装置２から送出された複数の結合データや複数の中継装置２のそれぞれから送出された結合データを、１つの上流結合データにまとめることで、ストレージクライアント３９がデータを受信する負荷を第１の実施形態と比較してさらに軽減することができる。
【実施例】
【００６７】
上記実施形態に係るデータ収集システムについて、実施例に基づいて説明する。図５は、本実施例におけるデータ収集システムの構成を示すブロック図である。
【００６８】
図５を参照すると、データ収集システムは、端末１、中継装置２、データ受信サーバ７、および、ストレージノード３０を備える。なお、データ収集システムは、端末１、中継装置２、データ受信サーバ７、および、ストレージノード３０を、それぞれ複数備えていてもよい。データ受信サーバ７は、データ受信プロセス７１およびストレージクライアント３９を有する。分散ストレージ装置３は、ストレージクライアント３９およびストレージノード３０を備える。
【００６９】
図５においては、中継装置２が接続された外部ネットワーク５と、ストレージノード３０が接続された内部ネットワーク６とを分けて記載している。ただし、これらのネットワークは、単一のネットワークであってもよい。
【００７０】
図６は、本実施例における分散ストレージ装置３の構成、特に、データの格納およびアクセスに関する構成を示すブロック図である。図６を参照すると、分散ストレージ装置３は、内部ネットワーク６に接続されたストレージクライアント３９と、複数のストレージノード３０と、配置方式伝達手段（非図示）とを備える。図６においては、一例として、３台のストレージノード３０を記載したが、ストレージノードの台数はこれに限定されない。
【００７１】
ストレージノード３０は、それぞれ、データ送受信部３６およびデータ格納部３７を備える。一方、ストレージクライアント３９は、データ送受信部７５およびデータ送受信ノード決定部７４を備える。
【００７２】
図７は、図６に示したストレージノード３０に相当するデータ処理計算機１３０の構成を一例として示すブロック図である。図７を参照すると、ストレージクライアント３９に相当するサーバ計算機１３９は、内部ネットワーク６を介して、データ処理計算機１３０に接続されている。
【００７３】
データ処理計算機１３０は、それぞれ、ＣＰＵ（Central Processing Unit）１３１、データ記憶装置１３２、および、データ転送装置１３３を備える。ＣＰＵ１３１は、ソフトウェアとともに、本実施例のストレージノード３０の機能を実現する。
【００７４】
データ記憶装置１３２は、例えば、ＨＤＤ、フラッシュメモリ、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＴＴ−ＲＡＭ（Spin Torque Transfer RAM）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＰＲＡＭ（Phase change RAM）、ＲＡＩＤ（Redundant Array of Inexpensive Disks）コントローラやＳＳＤ（Solid State Drive）コントローラなどに接続された記憶装置、磁気テープのようにデータを記録可能な物理媒体、または、ノードの外部に設置された媒体にデータを記録する制御装置である。
【００７５】
内部ネットワーク６およびデータ転送装置１３３は、例えば、Ethernet（登録商標）、Fibre ChannelやＦＣｏＥ（Fibre Channel over Ethernet（登録商標））、InfiniBand、QsNet、Myrinet、Ethernet、PCI Express、Thunderbolt、または、これらを利用するＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）、ＲＤＭＡ（Remote Direct Memory Access）などの上位プロトコルにより実現することができる。ただし、内部ネットワーク６およびデータ転送装置１３３の実現方法は、これらに限定されない。
【００７６】
格納データは、固定長または意味的に区切られたデータ断片（以下「オブジェクト」という。）の集合として、ストレージノード３０のそれぞれのデータ格納部３７に格納される。各オブジェクトには、一意の識別子（キー）が与えられている。ストレージクライアント３９は、キーを指定することで所望のデータを取得する。また、各オブジェクトの複製は、複数のストレージノード３０に格納され得る。
【００７７】
また、各オブジェクトの代わりに、または、各オブジェクトとともに、オブジェクトに基づいて計算された冗長符号情報が他のストレージノード３０に格納されるようにしてもよい。冗長符号情報は、ストレージノード３０の故障などによりデータの一部がアクセスできない状態になったときに、データの消失を防ぐために用いられる。
【００７８】
オブジェクトの例として、例えば、ブロックストレージのブロックまたはセクタ、ファイルシステムのファイル、ファイルと関連するメタデータの集合、関係データベースのタプルまたはテーブル、オブジェクトデータベースのデータ、Key-Valueデータ格納システムのValue、ＸＭＬ（Extensible Markup Language）文書のタグで囲まれた内容、ＲＤＦ（Resource Description Framework）文書のリソース、Google App Engineのデータエンティティ、Microsoft Windows（登録商標） Azureキューのメッセージ、Cassandra等のWide Column StoreのColumn、ＪＳＯＮ（JavaScript（登録商標） Object Notation）、ＢＳＯＮ（Binary JSON）で記載されたドキュメント等が挙げられる。
【００７９】
対応するキーの例として、ブロック番号、論理ボリューム識別子とブロック番号の組、セクタ番号、ファイル名、メタデータプロパティ名、ファイル名とメタデータプロパティ名の組、タプルの主キー値、テーブル名、テーブル名と主キー値の組、オブジェクト名、オブジェクトＩＤ、タグ名、リソース名などが挙げられる。
【００８０】
なお、本実施例におけるオブジェクトおよびキーは、これらに限定されない。
【００８１】
ストレージクライアント３９のデータ送受信部７５は、ストレージノード３０を特定する識別子（以下「ノード識別子」という。）と、データキーから当該データを保持するストレージノードを特定し、データオブジェクトを送信または受信する。
【００８２】
配置方式として、例えば、メタサーバ形式が考えられる。このとき、配置方式伝達手段はメタサーバに相当し、メタサーバが保持する情報の一部を各ストレージノード３０の配置方式の部分情報とする。また、メタサーバが保持する情報は、データオブジェクト毎の識別子と、そのオブジェクトが格納されているストレージノード３０の識別子の組とする。 
【００８３】
図８は、本実施例における端末１の構成を一例として示すブロック図である。端末１は、外界またはコンピュータ上の何らかの事象（イベント）を観測し、中継装置２で解釈可能なデータに変換する。
【００８４】
図８（ａ）は、端末１の一形態を示す。図８（ａ）を参照すると、端末１は、センサ１１および制御コンピュータ１２を有する。センサ１１は、外界で生じた物理現象に基づく観測データを電気信号に変換する。制御コンピュータ１２は、当該電気信号をデジタル化し、デジタルデータに変換する。さらに、制御コンピュータ１２は、デジタルデータをインターコネクト８の形式に変換する。インターコネクト８は、制御コンピュータ１２と中継装置２を接続する。
【００８５】
センサ１１の例として、外界の音声を音声情報に変換するマイクロフォン、衛星の電波や近隣の基地局の電波の強度および方向に基づいてセンサ１１の位置情報を取得する位置情報センサ、外界の温度を温度情報に変換する温度計、外界の明るさを照度情報に変換する照度計などが挙げられる。ただし、本実施例におけるセンサ１１は、これらに限定されない。
【００８６】
インターコネクト８は、制御コンピュータ１２で得られたデジタルデータおよびアナログデータを中継装置２に送信する通信手段である。インターコネクト８として、例えば、ZigBee、IEEE802.11、Bluetoothなどの無線通信形式がある。また、インターコネクト８として、ＵＳＢ（Universal Serial Bus）、Ethernet、ＨＤＭＩ（High-Definition Multimedia Interface）、コンポジット映像信号、ＣＡＮ（Controller Area Network）などの有線通信形式がある。さらに、インターコネクト８として、例えば、赤外線通信、可視光通信などの光通信がある。ただし、インターコネクト８は、これらに限定されない。
【００８７】
図８（ｂ）は、端末１の他の形態を示す。図８（ｂ）を参照すると、端末１はユーザ入力装置１３およびアプリケーションソフトウェア１４を備える。ユーザ入力装置１３は、ユーザが入力した文字、声などを、コンピュータ上のデータとして扱える形式（デジタルデータ）に変換する。端末１では、アプリケーションソフトウェア１４が動作しており、ユーザ入力装置１３から得たデータを必要に応じて加工した後、インターコネクト８に送信する。
【００８８】
例えば、文字入力を受け付けるユーザ入力装置１３と、マイクロブログサービスへつぶやきデータを送信するアプリケーションソフトウェア１４とによって、ユーザのつぶやき情報をデータとして送信するようにしてもよい。また、ユーザ入力装置１３が端末１に設けられたカメラであり、アプリケーションソフトウェア１４がカメラで撮影された写真データを変換・加工・送信するアプリケーションである場合には、アプリケーションソフトウェア１４がユーザによって撮影されたデータを送信するようにしてもよい。
【００８９】
端末１は、データを連続して送信するようにしてもよい。また、端末１は、一定時間間隔でセンサ１１からデータを取得して、送信するようにしてもよい。また、端末１は、センサ１１のデータを制御コンピュータ１２で監視し、何らかの変化が検知された場合にデータを送信するようにしてもよい。さらに、制御コンピュータ１２は、バッファメモリを備え、センサ１１からのデータは逐次バッファメモリに追記され、端末１は、バッファメモリ内のデータ量が所定の量に達した場合に、データを送信するようにしてもよい。また、端末１は、ユーザがボタンを操作する都度、データを送信するようにしてもよい。また、これらの組み合わせによって、データが送信されるようにしてもよい。ただし、データが送信されるタイミングは、これらに限定されない。
【００９０】
中継装置２は、インターコネクト８の形式で通信を行い、接続されている１つ以上の端末１からデータを受け取る。中継装置２は、図７のブロック図に示したデータ処理計算機１３０と同様の構成を有する計算機であってもよい。図２に示したデータ受信部２１、識別子付与部２５、識別子ＤＢ２２、識別子結合部２３、および、データ結合・送信部２４は、それぞれ、計算機上で動作するソフトウェア、または、計算機に設けられたハードウェアによって実現される。
【００９１】
図２を参照すると、識別子ＤＢ２２は、接続された端末１ごとにその送信データに付与すべき識別子を表すデータを保持する。識別子付与部２５は、分散ストレージ装置３の識別子取得部３５に識別子依頼を送出し、識別子取得部３５によって生成された識別子を受け取る。識別子ＤＢ２２は、識別子付与部２５が受け取った識別子を保持する。
【００９２】
データ受信部２１は、端末１から送信されたデータを受け付ける。データ受信部２１が受け付けたデータは、識別子結合部２３、データ結合・送信部２４および識別子ＤＢ２２を利用して結合データに変換され、分散ストレージ装置３のストレージクライアント３９に設けられた結合データ受信部３１に送信される。
【００９３】
中継装置２は、データを端末１から取得し、分散ストレージ装置３の入り口に相当するストレージクライアント３９に送信する。ストレージクライアント３９は、受信したデータを複数のストレージノードを有する分散データ記憶部３３に格納する。
【００９４】
本実施例のデータ収集システムにおいて、端末１（または、端末１から取得したデータ）に対する識別子の付与は、次のようにして行われる。
【００９５】
中継装置２は、分散ストレージ装置３に識別子依頼を送信する。分散ストレージ装置３は、端末１に対応する識別子を生成する。分散ストレージ装置３は、識別子が付与されたデータの格納リクエストが到来した際に、効率よくデータを格納できるように、識別子を生成することが好ましい。そこで、分散ストレージ装置３は、自身に設けられた記憶資源管理部３２の情報を用いて、識別子を生成するようにしてもよい。
【００９６】
また、分散ストレージ装置３は、同一の中継装置２からの依頼に対しては、同一の識別子を付与するようにしてもよい。このとき、同一の中継装置２から到来するデータは、同一の識別子が付与されているため、記憶資源管理部３２は、例えば、所定のストレージノード３０にデータが記憶されるようにしたり、１つのＣＰＵの近くに配置されたストレージノード３０（例えば、メモリ）にデータを配置したりして、効率の良い制御を実現することができる。
【００９７】
また、分散ストレージ装置３は、データ配置管理部３４が保持するデータ識別子を識別子として付与してもよい。分散ストレージ装置３は、データにはデータ識別子が付与される。データ識別子の一部を含む識別子を用いることで、分散ストレージ装置３によるデータ分散がデータ識別子の一部を用いて行われる方式の場合、分散ストレージ装置３は端末１のデータを効率良く扱うことができる。
【００９８】
また、データ識別子の一部を識別子とする他の方法として、次の方法が考えられる。分散ストレージ装置３がメタサーバ形式である場合には、分散ストレージ装置３は、データ識別子と当該識別子が付与されたデータが格納されるストレージノード３０とを、識別子の付与時に決定してもよい。分散ストレージ装置３は、同一の中継装置２に収容された端末１からのデータが、分散ストレージ装置３のリソース利用効率が良いストレージノード３０に格納されるように、予めストレージノード３０を決定し、当該識別子と格納ストレージノードの組を表す情報を分散ストレージ装置３のデータ配置管理において利用する。このとき、分散ストレージ装置３のリソース利用効率が良く、性能の高いデータ収集システムを実現することができる。
【００９９】
リソース利用効率が良い場合として、例えば、同一のストレージノード３０に格納することが考えられる。また、並列に動作する複数のストレージノード３０に分散して格納することが考えられる。さらに、中継装置２に地理的に近いストレージノード３０に格納することが考えられる。ただし、ストレージノード３０の決定方式は、これらに限定されない。
【０１００】
また、データ識別子の一部を識別子とするさらに他の方法として、次の方法が考えられる。分散ストレージ装置３が分散関数形式のデータ配置を行う場合には、分散ストレージ装置３は、データ識別子と当該識別子が付与されたデータが格納されるストレージノード３０とを、識別子の付与時に決定してもよい。分散ストレージ装置３は、同一の中継装置２に収容された端末１からのデータが、分散ストレージ装置３のリソース利用効率が良いストレージノード３０に格納されるように、予めストレージノード３０を決定し、当該格納ストレージノード３０に格納されるようなデータ識別子を計算によって求めて、データに付与する識別子とする。このとき、分散ストレージ装置３のリソース利用効率が良く、性能の高いデータ収集システムを実現することができる。
【０１０１】
例えば、データ識別子をデータ構造１とデータ構造２の少なくとも２つのデータ構造から合成されるデータ構造とし、分散関数形式でストレージノード３０を決定する際、データ構造１の情報を用いるようにしてもよい。すなわち、ｘを引数とする分散関数ｈ（ｘ）を用いて、ｈ（“データ構造１”）の値に応じてストレージノード３０を決定する。分散ストレージ装置３は、同一の中継装置２に収容された端末１に対しては同一のデータ構造１の情報を持ち、異なるデータ構造２の情報を持つデータ識別子を生成する。このとき、同一の中継装置２に収容された端末１から生成されるデータは、同一のストレージノード３０に格納される。
【０１０２】
中継装置２による識別子の取得および格納は、端末１が新たに中継装置２に接続された後、データが送信される前に行うようにしてもよい。また、中継装置２は、端末１が接続される前に投機的に識別子を付与して識別子ＤＢ２２に格納しておいて、端末１が接続された後、分散ストレージ装置３は、予め付与されている識別子を割り当てるようにしてもよい。
【０１０３】
分散ストレージ装置３によって付与された識別子は、中継装置２の識別子ＤＢ２２に格納される。図９は、識別子ＤＢ２２の一例を示す。図９を参照すると、識別子ＤＢ２２は、中継装置２内で端末１を一意に示す情報と、付与された識別子との組を有する。識別子ＤＢ２２によると、端末１を一意に示す情報に基づいて、識別子を取得することができる。なお、性能や格納効率の観点から、識別子を別のデータに変換して保持し、必要に応じて識別子を組み立てるようにしてもよい。
【０１０４】
本実施例のデータ収集システムにおいて、端末１から生成されたデータは次のように永続化される。
【０１０５】
１つ以上の端末１から時々刻々と発生したデータは識別子結合部２３により識別子が付与される。次に、データ結合・送信部２４は、複数のデータを含むより大きなサイズの結合データとして分散ストレージ装置に送信する。
【０１０６】
図１０は、識別子が付与された結合データを示す。図１０（ａ）は、採取データごとに対応する識別子を並べた結合データの例を示す。識別子のフォーマットにデータ分割点情報を含めるようにするか、または、各項目を固定長とすることで、結合データからデータを抽出することが可能となる。なお、図１０（ａ）に示すように、結合データに対して、データ、識別子の順序で格納する代わりに、識別子、データの順序で格納してもよい。
【０１０７】
図１０（ｂ）を参照すると、結合データに対して、まず、識別子を並べて、次に、採取データを並べるようにしてもよい。図１０（ｃ）を参照すると、結合データに対して、データおよび識別子以外に、データの切れ目を表すデリミタのような情報を挿入してもよい。図１０（ｄ）を参照すると、結合データに対して、データおよび識別子以外に、結合データ自体を示すヘッダやフッタなどの情報を挿入してもよい。ヘッダやフッタの中には、結合データの長さや、中継装置２を表す情報を含めてもよい。図１０（ｅ）を参照すると、結合データに含まれる、複数の端末１からのデータの個数は端末ごとに異なっていてもよい。また、同一の端末１からのデータが複数含まれるときには、重複する識別子を割愛してもよい。また、結合データは、図１０（ａ）ないし（ｅ）の方式の組合せであってもよい。ただし、データ結合方式は、これらに限定されない。
【０１０８】
結合データは、分散ストレージ装置３に送信される。なお、第３の実施形態（図４）のように、結合データは、上流結合装置４へ送信され、複数の中継装置２から送信された複数の結合データが上流中継装置４の上流結合部４１で再度結合さるようにしてもよい。
【０１０９】
分散ストレージ装置３のストレージクライアント３９に設けられた結合データ受信部３１は、中継装置２から送出された結合データを受信する。結合データ受信部３１は、必要に応じて結合データを分解し、分散データ記憶部３３に格納する。分散データ記憶部３３への格納方法として、結合データ受信部３１が結合データを分解し、個別のデータとして、分散ストレージ装置３のオブジェクトへ追記するようにしてもよい。
【０１１０】
また、分散データ記憶部３３への格納方法として、次のようにしてよい。識別子取得部３５は、結合データ受信部３１で受け取った１つの中継装置２から得られた結合データを、同一のストレージノード３０に登録してもよいことを予め把握している。そこで、分散データ記憶部３３は、データ配置管理部３４から該当結合データ内の個々のデータを格納すべきストレージノード３０を決定し、そのストレージノード３０へデータを格納する。ストレージノード３０では、受け取ったデータを記憶装置により永続化する前後に当該結合データを分解し、今後データを利用する別のプロセスが格納データを探し出せるような処理を行う。かかる処理として、例えば、索引構造のアップデート、メタデータの更新などがあるが、これらに限定されない。
【０１１１】
本実施例に係るデータ収集システムによると、多数の端末１から時々刻々と生成される大量のデータを高速に永続化することが可能となる。
【０１１２】
第１の理由は、本実施例によると、データセンター内で複数の計算機をまとめる分散ストレージ装置３のデータ配置管理機構の情報をもとに、データセンター外の端末１に近い中継装置２の段階で多数の端末１のデータを結合することで、端末１の数の多さに起因する性能減退要因を回避することができるからである。
【０１１３】
例えば、中継装置２と分散ストレージ装置３の間がＴＣＰにより接続されている場合、ＴＣＰのセッション数が増大すると、セッション情報および取りまとめるスレッド数の増大により、システムのスループットが著しく減少する。本実施例では、細かいデータを個別に送出する代わりに、結合してから送出することで、かかる性能減退要因を回避することができる。
【０１１４】
第２の理由は、本実施例では、分散ストレージ装置３のデータ配置機構の情報に基づいて結合データが生成されるからである。このとき、ストレージノードにおけるデータオブジェクト数の多さに起因する性能減退要因も回避できるため、データを高速に永続化することができる。
【０１１５】
本実施例では、複数のデータが、分散ストレージ装置３のリソースを効率よく利用するための情報が、端末１に近い中継装置２の段階で識別子として付与されて、結合データに含まれている。したがって、分散ストレージ装置３のリソースを効率良く利用することが可能となる。リソースを効率良く利用することで、より高速なリソースによるサービスの提供や、適切な負荷分散が行われ、システムの応答の高速化が可能となる。
【０１１６】
第３の理由は、中継装置２がデータの結合を行っているからである。中継装置２および分散ストレージ装置３のそれぞれが個別にデータの結合を行った場合、分散ストレージ装置３のストレージクライアント３９に到達した結合データ内のデータは、分散ストレージ装置３のリソースを効率良く扱えるとは限らない。また、ストレージクライアント３９は、データ転送に適した結合データから、データ格納に適した結合データへと変換を行う必要がある。本実施例では、中継装置２が端末１からデータを取得した際、分散ストレージ装置３から取得した識別子を付与することによって、分散ストレージ３のリソースを効率良く扱うことのできる結合データを作成できる。したがって、ストレージクライアント３９の負荷が減り、分散ストレージ装置３のリソースを効率良く利用することができる。このとき、多数の端末１から生起するデータを高速かつ少ないリソースで永続化することが可能となる。
【０１１７】
本発明に係るデータ収集システムは、例えば、携帯電話、スマートフォンなどのセンサ情報を格納・処理するシステム、コンピュータシステムのログ情報を格納・処理するシステム、スマートグリッド、デジタルグリッドなどの電力発電・利用情報を格納・処理するシステム、高度道路交通システム（ＩＴＳ：Intelligent Transport Systems）のように車のセンサ、カーナビなどの情報を格納・処理するシステム、自動販売機などの機械の購買情報、動作情報などを逐次ネットワークで収集するＭ２Ｍ（Machine To Machine）システムに対して適用することができる。
【０１１８】
なお、上記の特許文献等の先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１１９】
１    端末
２    中継装置
３    分散ストレージ装置
４    上流結合装置
５    外部ネットワーク
６    内部ネットワーク
７    データ受信サーバ
８    インターコネクト
１１    センサ
１２    制御コンピュータ
１３    ユーザ入力装置
１４    アプリケーションソフトウェア
２１    データ受信部
２２    識別子ＤＢ
２３    識別子結合部
２４    データ結合・送信部
２５    識別子付与部
２６    バッファ
２７    送信済みデータ削除部
３０    ストレージノード
３１    結合データ受信部
３２    記憶資源管理部
３３    分散データ記憶部
３４    データ配置管理部
３５    識別子取得部
３６    データ送受信部
３７    データ格納部
３９    ストレージクライアント
４１    上流結合部
７１    データ受信プロセス
７４    データ送受信ノード決定部
７５    データ送受信部
１３０    データ処理計算機
１３１    ＣＰＵ
１３２    データ記憶装置
１３３    データ転送装置
１３９    サーバ計算機
【図１】
2013257798.tif 000003
【図２】
2013257798.tif 000004
【図３】
2013257798.tif 000005
【図４】
2013257798.tif 000006
【図５】
2013257798.tif 000007
【図６】
2013257798.tif 000008
【図７】
2013257798.tif 000009
【図８】
2013257798.tif 000010
【図９】
2013257798.tif 000011
【図１０】
2013257798.tif 000012