(57)【特許請求の範囲】
【請求項１】
データを永続的に記憶可能な記憶媒体を有する第１および第２のデータ記憶装置と、
前記データを前記第１および第２のデータ記憶装置と比較して高速に記憶可能な記憶媒体を有するデータ保持装置と、
処理対象であるデータの種別を判別し、
前記処理対象であるデータが構造化されたデータである場合に、前記処理対象であるデータを前記データ保持装置に既に記憶される構造化データに上書きして前記データ保持装置に記憶すると共に、前記処理対象であるデータを前記第１のデータ記憶装置に記憶し、
前記処理対象であるデータがバイナリデータである場合に、前記処理対象であるデータを前記データ保持装置に記憶すると共に、前記処理対象であるデータを前記第２のデータ記憶装置に記憶するコントローラと、
前記コントローラに用いる設定情報を生成する設定情報生成部と、
前記設定情報の生成元の情報であり、クラスを定義する情報を含む生成元情報を記憶する記憶装置と
を備え、
前記コントローラは、前記設定情報生成部により生成された設定情報に基づいて、前記処理対象であるデータの種別を判別するものであって、
前記設定情報は、前記生成元情報に定義されたクラスと当該クラスのデータが構造化データであるかバイナリデータであるかといったデータの種別を対応づける情報であり、
前記コントローラは、前記設定情報と、前記処理対象であるデータを蓄積する要求のヘッダに含まれるクラスを照合することで前記処理対象であるデータの種別を判別する、
データ処理システム。
【請求項２】
アプリケーションに用いるインタフェースを前記アプリケーションへ提供する第１のインタフェース提供部と、
デバイスに用いるインタフェースを前記デバイスへ提供する第２のインタフェース提供部とをさらに備え、
前記設定情報生成部は、
前記アプリケーションに用いるインタフェースと前記デバイスに用いるインタフェースとの一貫性を有する前記設定情報を前記生成元情報を用いて生成する、
請求項１に記載のデータ処理システム。
【請求項３】
アプリケーションに用いるインタフェースを前記アプリケーションへ提供する第１のインタフェース提供部と、
デバイスに用いるインタフェースを前記デバイスへ提供する第２のインタフェース提供部とをさらに備え、
前記生成元情報は、
前記アプリケーションに用いるインタフェース、前記デバイスに用いるインタフェース、前記設定情報をそれぞれ生成するための共通の情報としての共通データ構造生成元情報である、
請求項１に記載のデータ処理システム。
【請求項４】
前記コントローラは、
前記処理対象であるデータが前記構造化されたデータであるときに、前記処理対象であるデータを前記データ保持装置に記憶すると共に、前記データ保持装置に記憶された前記構造化されたデータを、データを生成したデバイス毎に分類し、前記バイナリデータと比較してサイズが小さいデータを、前記構造化されたデータの取得用のキー情報および時刻情報とともに前記第１のデータ記憶装置にまとめて記憶し、
取得対象であるデータが前記構造化されたデータであるときに、前記キー情報を用いて前記データ保持装置を検索し、
前記取得対象である前記構造化されたデータが前記データ保持装置に記憶されているときは、この構造化されたデータを含むファイル中から取得対象である構造化されたデータを検索して前記データ保持装置から取得し、
前記取得対象である構造化されたデータが前記データ保持装置に記憶されていないときは、前記キー情報および前記時刻情報を用いて、前記第１のデータ記憶装置から前記取得対象である構造化されたデータを含むファイルを前記データ保持装置にコピーし、前記データ保持装置から、この構造化されたデータを含むファイル中から取得対象である構造化されたデータを検索して取得する、
請求項１ないし請求項３のいずれか１項に記載のデータ処理システム。
【請求項５】
前記コントローラは、
前記処理対象であるデータが前記バイナリデータであるときに、前記処理対象であるデータを前記データ保持装置に記憶すると共に、前記データ保持装置に記憶された前記バイナリデータを、データを生成したデバイス毎に分類し、前記構造化されたデータと比較してサイズが大きいデータを、前記バイナリデータの取得用のキー情報とともに前記第２のデータ記憶装置に個別に記憶し、
取得対象であるデータが前記バイナリデータであるときに、前記キー情報を用いて前記データ保持装置を検索し、
前記取得対象である前記バイナリデータが前記データ保持装置に記憶されているときは、このバイナリデータを前記データ保持装置から取得し、
前記取得対象である前記バイナリデータが前記データ保持装置に記憶されていないときは、前記キー情報を用いて、前記第２のデータ記憶装置から前記取得対象であるバイナリデータを含むファイルを前記データ保持装置にコピーし、前記データ保持装置からこのバイナリデータを取得する、
請求項１ないし請求項３のいずれか１項に記載のデータ処理システム。
【請求項６】
データ処理システムにおいて実施されるデータ処理方法であって、
前記データ処理システムが、
データを永続的に記憶可能な記憶媒体を有する第１および第２のデータ記憶装置と、
前記データを前記第１および第２のデータ記憶装置と比較して高速に記憶可能な記憶媒体を有するデータ保持装置とを有し、
処理対象であるデータの種別を判別し、
前記処理対象であるデータが構造化されたデータである場合に、前記処理対象であるデータを前記データ保持装置に既に記憶される構造化データに上書きして前記データ保持装置に記憶すると共に、前記処理対象であるデータを前記第１のデータ記憶装置に記憶し、
前記処理対象であるデータがバイナリデータである場合に、前記処理対象であるデータを前記データ保持装置に記憶すると共に、前記処理対象であるデータを前記第２のデータ記憶装置に記憶し、
前記処理対象であるデータの種別を判別することは、
クラスを定義する情報を含む生成元情報に基づいて生成されるものであって、前記生成元情報に定義されたクラスと当該クラスのデータが構造化データであるかバイナリデータであるかといったデータの種別を対応づける情報である設定情報と、前記処理対象であるデータを蓄積する要求のヘッダに含まれるクラスを照合することで行う、
データ処理方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ処理システムおよびデータ処理方法に関する。
【背景技術】
【０００２】
近年、様々なセンサ（Sensor）、デバイス（Device）とネットワーク（Network）とを接続し、データ活用を行うＩｏＴ（Internet of Things）が注目されている。ＩｏＴでは多種多様のセンサ、デバイス等からデータが継続的に収集される。このことから、大量で、１つあたりのデータサイズが小さい時系列データを蓄積するデータベースシステム（Database system）が必要である。【０００３】
また、ＩｏＴを活用する例の一部である、故障予測等を行なうアプリケーション（Application）は、センサデータに加えて、カメラ（Camera）により撮影した画像等のデータを利用する。画像等のデータの特性は、一般的なセンサデータの特性とは異なる。画像等のデータは、バイナリデータ（Binary data）でなる。バイナリデータは、ファイルサイズが大きく、かつ構造化されていないデータである。【０００４】
以上の特性から、ＩｏＴ向けデータ処理システムは、データの種類に応じて適切なデータ蓄積手法を選択するシステムであることが求められる。【０００５】
また、ＩｏＴの活用例の多くの場合において、デバイス、センサから直近のタイミングで取得したデータを元に、分析、予測、アクチュエーション（Actuation）等を行なう。このことから、以下の（１）、（２）がシステムの特徴である。【０００６】
（１）時系列順に高頻度でデータが記憶装置に書込まれる
（２）全データのうち時系列上で最新の区分に属する値を参照する頻度が高い
さらに、ＩｏＴシステムの代表的な活用例は、長期的に記憶（記録、蓄積）したデータを用いた分析およびリアルタイム（Real time）分析に基づく異常検知等が一般的である。このことから、下記の（１）、（２）で示される要求がある（例えば非特許文献１参照）。【０００７】
（１）センサデータを時系列データと紐付けて永続的に蓄積し、バルク（Bulk）で処理を行う
（２）最新のデータを高い速度で取得する
以上の要求から、ＩｏＴ向けシステムは、時系列データに紐付けられたデータの永続的蓄積と最新のデータの取得の高速性とを両立するデータ処理システムであることが求められる。【０００８】
既存のデータ処理システムは、一般的なコンピュータ（Computer）の構成のように、以下の（１）、（２）により構成される。【０００９】
（１）ハードディスク（Hard disk）等のように、容量が一般的に大きく、データを永続的に記憶可能であるが、データの読み出し速度が比較的高くない記憶装置
（２）メモリ（Memory）に設けられるキャッシュ（Cache）等のように、データの読み出し速度が比較的高いが、容量が一般的に小さく、データを永続的に保存しないデータ保持装置
【発明の概要】
【００１０】
一般的なデータ処理システムは、データの検索速度を高くするために、インデックス（Index）をメモリに保持する仕組みを有する。しかし、インデックスの数はデータ数に応じて増加する。このため、センサデータのように、数が非常に多いデータを扱う場合、インデックスを生成することがデータ書き込み時のボトルネック（Bottleneck）となるとともに、インデックスのデータサイズがメモリに記憶可能なデータサイズを超えるという課題が生じる。
【００１１】
さらに、センサデータでは、最新の区分の値が参照される（読み込まれる）頻度が高い。このため、全データについてインデックスを生成したとしても、このインデックスの大部分は参照されない。このため、インデックスによる高速化の効果は小さい。
【００１２】
さらに、一般的なデータ処理システムは、キャッシュを用いて同一のデータの読み込み速度を高くする仕組みを有する。しかし、容量が限られたキャッシュに大量のセンサデータの最新値を保持させることは現実的ではない。さらに、時系列順に最新値が常時更新されるセンサデータに関しては、同一のデータの参照頻度が低い。このため、キャッシュを用いることによる読み込み速度の高速化の効果は小さい。
【００１３】
これらの書き込みおよび読み込み時の課題があるため、インデックスを用いたデータベースおよびキャッシュを単純に用いる従来の構成では、センサデータの高速な処理と保存データの永続化との両立が難しかった。
【００１４】
また、画像等のバイナリデータは、構造化されておらずファイルサイズが大きい特徴を有する。このため、バイナリデータをセンサデータと同じデータベースに保存すると、ファイル形式を変換する必要があるため、高速な書き込みおよび読み込みが難しい。
【００１５】
さらに、データ処理システムでは、デバイス接続構成の変更およびアプリ要件の変更が発生することにより、データモデルが更新されること等に伴い、アプリケーション、デバイス、データ処理系のＩ／Ｆ（インタフェース（Interface））、および設定情報の間の整合性が失われやすい。このため、システム全体のＩ／Ｆの整合性を維持するための管理負担が大きい。
【００１６】
上記のように、ＩｏＴ分野では従来のデバイスよりも多数のセンサデータの処理を要求される。さらに、長期的な分析とリアルタイム分析との両方が処理対象となりうるため、時系列データを永続的に蓄積することと、データの最新値を高速かつ高頻度に読み込むことがそれぞれ求められる。また、センサデータ等の、データサイズが小さい、構造化されたデータと、画像データ等の、データサイズが大きい（構造化されたデータと比較してデータサイズが大きい）バイナリデータとの両方を蓄積する仕組みが必要である。
【００１７】
従来のデータ処理システムでは、時系列の大量の構造化されたデータ、バイナリデータについて書き込み速度および読み込み速度の向上と保存データの永続性とを共に達成することが難しい。
【００１８】
本発明はこのような事情に鑑みてなされたものであり、その目的は、データのアクセス速度の向上と保存データの永続性とを両立できるデータ処理システムおよびデータ処理方法を提供することである。
【００１９】
上記目的を達成するために、この発明の実施形態におけるデータ処理システムの態様は、データを永続的に記憶可能な記憶媒体を有する第１および第２のデータ記憶装置と、前記データを前記第１および第２のデータ記憶装置と比較して高速に記憶可能な記憶媒体を有するデータ保持装置と、処理対象であるデータの種別を判別し、前記処理対象であるデータが構造化されたデータである場合に、前記処理対象であるデータを前記データ保持装置に既に記憶される構造化データに上書きして前記データ保持装置に記憶すると共に、前記処理対象であるデータを前記第１のデータ記憶装置にまとめて記憶し、前記処理対象であるデータがバイナリデータである場合に、前記処理対象であるデータを前記データ保持装置に記憶すると共に、前記処理対象であるデータを前記第２のデータ記憶装置に記憶するコントローラと、前記コントローラに用いる設定情報を生成する設定情報生成部と、前記設定情報の生成元の情報であり、クラスを定義する情報を含む生成元情報を記憶する記憶装置とを備え、前記コントローラは、前記設定情報生成部により生成された設定情報に基づいて、前記処理対象であるデータの種別を判別するものであって、前記設定情報は、前記生成元情報に定義されたクラスと当該クラスのデータが構造化データであるかバイナリデータであるかといったデータの種別を対応づける情報であり、前記コントローラは、前記設定情報と、前記処理対象であるデータを蓄積する要求のヘッダに含まれるクラスを照合することで前記処理対象であるデータの種別を判別するシステムを提供する。 
【００２０】
本発明によれば、データのアクセス速度の向上と保存データの永続性とを両立することが可能になる。
【図面の簡単な説明】
【００２１】
【図１】図１は、本発明の実施形態におけるデータ処理システムの第１の構成例を示す図である。
【図２】図２は、本発明の実施形態におけるデータ処理システムの第２の構成例を示す図である。
【図３】図３は、本発明の実施形態におけるデータ処理システムの処理について説明する図である。
【図４】図４は、本発明の実施形態におけるデータ処理システムデータ参照（検索）時の処理について説明するフローチャートである。
【実施形態】
【００２２】
以下、発明の実施形態のデータ処理方法が適用されたデータ処理システムを、図面を参照して説明する。  
本実施形態では、ＩｏＴ分野では、状態監視等を定期的に実行するアプリケーションが多く、データ検索において最新の時刻のデータを読み込む頻度が高い特徴を有することに注目した。本実施形態では、データ保持装置に最近の時刻のデータを保持することでデータを高速に読み込むことを可能とする。
【００２３】
従来の一般的な構成では、アクセスされる頻度が高いデータが、データ保持装置、例えばメモリ上のキャッシュ等に保持され、最新のデータが必ずしもデータ保持装置に記憶されているとは限らない。  
この場合、データを永続的に記憶するデータ記憶装置、例えばハードディスク等からデータを読み込む必要がある。データ記憶装置からのデータを読み込み速度は、データ保持装置からのデータの読み込み速度より遅いため、最新のデータを読み込むためにかかる時間が長くなってしまう。
【００２４】
そこで、本実施形態では、データ処理システムは、デバイス等から受け取ったデータ（Data）を、まず、データ保持装置、例えばメモリに設けられるキャッシュまたはOS（Operating System）のカーネル空間のメモリ等に書き込む。そして、データ処理システムは、このデータおよび時系列情報をデータ記憶装置に書き込む。これにより、データを時系列と紐付けてデータ記憶装置に永続的に保存し、かつ最新のデータを高速に参照可能とした。
【００２５】
図１は、本発明の実施形態におけるデータ処理システムの第１の構成例を示す図である。
【００２６】
図１に示すように、実施形態におけるデータ処理システム（データ蓄積・処理システム）１０は、アプリケーション向けＩ／Ｆ提供部（第１のインタフェース提供部）４０、デバイス側Ｉ／Ｆ提供部（第２のインタフェース提供部）５０、データ処理部６０を備える。  
データ処理システム１０内の各部は、例えばパーソナルコンピュータ（Personal computer（ＰＣ））などのコンピュータデバイスとした装置により実現することができる。例えば、コンピュータデバイスは、ＣＰＵ（Central Processing Unit）などのプロセッサ（Processor）と、プロセッサに接続される揮発性メモリと、不揮発性メモリと、通信インタフェースなどを備える。プロセッサが不揮発性メモリに記憶したプログラム（Program）を実行することにより、データ処理システム１０の各部は、各種の処理を実現する。
【００２７】
図２は、本発明の実施形態におけるデータ蓄積処理システムの第２の構成例を示す図である。  
図２に示した例では、データ処理システム１０は、図１で説明した構成に加え、設定情報生成機能部（設定情報生成部）２０をさらに備える。この設定情報生成機能部２０は、Ｉ／Ｆおよび設定情報生成機能部２０ａを有する。  
このＩ／Ｆおよび設定情報生成機能部２０ａは、共通データ構造生成元情報、またはそれを記述したファイルを記憶する共通データ構造生成元情報記憶装置３０を備える。  
共通データ構造生成元情報は、（１）アプリケーションプログラム（Application）（アプリケーションまたはアプリと称することもある）、（２）デバイス側Ｉ／Ｆ、（３）ＡＰＩ（アプリケーションプログラミングインタフェース（Application programming interface））、（４）データ処理部向け設定情報、（５）各種Ｉ／Ｆ等、の生成元としての共通の情報である。  
共通データ構造生成元情報は、クラス（Class）、アトリビュート（Attribute）、リレーション（Relation）を定義したｃｓｖファイル、およびインスタンス（Instance）間のリレーションを定義したｊｓｏｎファイルであってもよい。
【００２８】
以下、設定情報生成機能部２０、アプリケーション向けＩ／Ｆ提供部４０、デバイス側Ｉ／Ｆ提供部５０、データ処理部６０についてそれぞれ説明する。
アプリケーション向けＩ／Ｆ提供部４０は、アプリケーション８０向けのインタフェース、例えばＡＰＩをアプリケーション８０に提供する機能を有する。
【００２９】
データ処理部６０は、データ保持装置６１、第１のデータ記憶装置６２ａ、第２のデータ記憶装置６２ｂ，クエリ（Query）コントローラ６３を有する。
【００３０】
クエリコントローラ６３は、アプリケーション等から入力されたデータ参照（取得）等の要求を処理する機能を有する。クエリコントローラ６３は、データ保持装置６１、第１のデータ記憶装置６２ａ、または第２のデータ記憶装置６２ｂに蓄積されるデータ、もしくはクエリにより要求されるデータの種類を判別する機能を有する。  
クエリコントローラ６３は、この判別の結果に応じて、データ保持装置６１、第１のデータ記憶装置６２ａ、第２のデータ記憶装置６２ｂのいずれかとの間で、処理対象となるデータの蓄積または取得のためのやり取りを行なう機能を有する。
【００３１】
データ保持装置６１は、データを記憶可能な不揮発性メモリなどの記憶媒体を有する。同じコストの条件下では、データ保持装置６１が有する記憶媒体の記憶容量は、第１のデータ記憶装置６２ａが有する記憶媒体および第２のデータ記憶装置６２ｂが有する記憶媒体の容量より少ない。  
この記憶媒体が有する特性により、データ保持装置６１は、この記憶媒体からデータを高速に読み出す機能と、新たなデータを当該記憶媒体に保存する機能を有する。  
第１のデータ記憶装置６２ａは、データを永続的に可能な不揮発性メモリなどの記憶媒体を有する。この記憶媒体が有する特性により、データ保持装置６１は、この記憶媒体に対し、バイナリデータでないデータを永続的に蓄積する機能と、この記憶媒体からバイナリデータでないデータを高速に読み出す機能とを有する。
【００３２】
第２のデータ記憶装置６２ｂは、データを永続的に記憶可能な不揮発性メモリなどの記憶媒体を有する。この記憶媒体が有する特性により、データ保持装置６１は、この記憶媒体に対し、バイナリデータを永続的に蓄積する機能と、この記憶媒体からバイナリデータを高速に読み出す機能を有する。  
データ保持装置６１が有する記憶媒体は、第１のデータ記憶装置６２ａが有する記憶媒体および第２のデータ記憶装置６２ｂが有する記憶媒体と比較して、データを高速に書き込み、またはデータを高速に読み出すことができる特性を有する。
【００３３】
デバイス側Ｉ／Ｆ提供部５０は、デバイスドライバ（Device driver）／プロトコルコンバータ（Protocol converter）／センサ／デバイス等９０のアプリケーション向けのインタフェース、例えばＡＰＩを、デバイスドライバ／プロトコルコンバータ／センサ／デバイス等９０に提供する機能を有する。デバイスドライバ（Device driver）／プロトコルコンバータ（Protocol converter）／センサ／デバイス等を総称してデバイスと呼ぶこともある。
【００３４】
デバイスドライバ／プロトコルコンバータ／センサ／デバイス等９０から入力されたデータをデータ処理部６０へ蓄積するときに、データ処理システム１０のクエリコントローラ６３は、データ処理部６０による処理対象、つまりデータ処理部６０内のデータ保持装置６１、第１のデータ記憶装置６２ａまたは第２のデータ記憶装置６２ｂへの蓄積対象）であるデータの種類を判別する。このデータが構造化されたデータであるとき、クエリコントローラ６３は、当該構造化されたデータをデータ保持装置６１に書き込む（永続的には蓄積しない）。  
また、クエリコントローラ６３は、この構造化されたデータ及び当該データの検索キーとなる情報ならびに時刻情報をデータ保持装置６１を経由して第１のデータ記憶装置６２ａに永続的に蓄積する。これにより、構造化されたデータの永続性を維持する。
【００３５】
また、上記の判別されたデータが構造化されたデータでなくバイナリデータであるとき、クエリコントローラ６３は、このバイナリデータをデータ保持装置６１に蓄積すると共に、このデータ保持装置６１に蓄積されたバイナリデータを第２のデータ記憶装置６２ｂに永続的に蓄積する。これにより、バイナリデータの永続性を維持する。
【００３６】
クエリコントローラ６３がデータ保持装置６１を経由してバイナリデータを第２のデータ記憶装置６２ｂに蓄積する際、クエリコントローラ６３は、この第２のデータ記憶装置６２ｂに蓄積されるバイナリデータのファイル名等に対し、バイナリデータを検索する際のＫｅｙとなる情報（Ｋｅｙ情報）、例えばクラス名、インスタンスＩＤ、タイムスタンプ（Time stamp）を含めてもよい。これにより、後にバイナリデータを第２のデータ記憶装置６２ｂから取得する時に、クエリコントローラ６３は、このＫｅｙとなる情報を用いてバイナリデータを第２のデータ記憶装置６２ｂからデータ保持装置６１を経由して取得できる。
【００３７】
また、同じく、クエリコントローラ６３がバイナリデータを第２のデータ記憶装置６２ｂに蓄積するとき、クエリコントローラ６３は、このバイナリデータの保存先の情報（第２のデータ記憶装置６２ｂのファイルパス等）を、構造化されたデータと同様の経路でデータ保持装置６１または第１のデータ記憶装置６２ａに書き込んでもよい。これにより、クエリコントローラ６３は、バイナリデータの保存先の情報を、上記のＫｅｙとなる情報を用いて検索し、この保存先の情報を高速に取得できる。
【００３８】
また、設定情報生成機能部２０内のＩ／Ｆおよび設定情報生成機能部２０ａは、共通データ構造生成元情報記憶装置３０に記憶される共通データ構造生成元情報に基づいて、データ種別設定情報、アプリケーション向けＩ／Ｆ、デバイス側Ｉ／Ｆ、またはそれらの一部を、これらが一貫性を有するように生成してもよい。
【００３９】
クエリコントローラ６３は、共通データ構造生成元情報記憶装置３０に記憶される共通データ構造生成元情報に基づいて生成されたデータ種別設定情報を用いて、データの種類を判別してもよい。
【００４０】
さらに、クエリコントローラ６３が、構造化されたデータにおける、参照頻度の高い最新のデータセットをデータ保持装置６１に既に記憶されているデータセットに常に上書きすることにより、時系列的に新しい構造化されたデータを高速に読み込み可能である。
【００４１】
データ読み込み時に、読み込みが要求されたデータの種別を判別する。この種別が、ｊｓｏｎ等の構造化されたデータである場合には、クエリコントローラ６３は、この構造化されたデータを検索するときのＫｅｙとなる情報、例えばクラス名、インスタンスＩＤ、タイムスタンプを用いて、まずデータ保持装置６１を検索し、データがデータ保持装置６１に記憶されていなかった場合にデータ保持装置６１を経由して第１のデータ記憶装置６２ａを検索する。
【００４２】
一方、判別した種別がバイナリデータである場合には、クエリコントローラ６３は、上記のバイナリデータを検索するときのＫｅｙとなる情報を用いて、まずデータ保持装置６１を検索し、データがデータ保持装置６１に記憶されていなかった場合にデータ保持装置６１を経由して第２のデータ記憶装置６２ｂを検索する。
【００４３】
次に、本発明の実施形態におけるデータ処理システムによる処理について説明する。  
データ処理部６０は、アプリ向けＩ／Ｆ、デバイス側Ｉ／Ｆ、およびデータ種別設定情報を自動的に生成することができる。
【００４４】
共通データ構造生成元情報記憶装置３０に記憶される共通データ構造生成元情報は、例えば、（１）クラス・アトリビュート・リレーション等を定義したｃｓｖファイル、および（２）インスタンス間のリレーションを定義したｊｓｏｎファイルであってもよい。
【００４５】
共通データ構造生成元情報記憶装置３０に記憶される共通データ構造生成元情報に基づいて、Ｉ／Ｆおよび設定情報生成機能部２０ａは、（１）データ種別の対応関係を表すデータ種別設定情報、（２）ＲＥＳＴ  ＡＰＩ等のアプリ向けＩ／Ｆ、（３）ＭＱＴＴ  ＡＰＩ等のデバイス側Ｉ／Ｆ、またはそれらの一部を生成してもよい。  
データ種別の対応関係は、例えば、（１）クラス名とバイナリデータとの対応関係、または（２）クラス名と構造化されたデータ（ｊｓｏｎ等）との対応関係である。
【００４６】
アプリ向けＩ／Ｆの一例である、ＲＥＳＴ  ＡＰＩのｅｎｄｐｏｉｎｔは、「／クラス名／インスタンスＩＤ／タイムスタンプ」でもよい。また、デバイス側Ｉ／Ｆの一例である、ＭＱＴＴ  ＡＰＩのトピック名は、「／クラス名／インスタンスＩＤ／タイムスタンプ」でもよい。
【００４７】
また、共通データ構造生成元情報に基づいて生成された上記のデータ種別設定情報に基づき、Ｉ／Ｆおよび設定情報生成機能部２０ａは、データ処理部６０内のデータを参照するときのアプリ向けＩ／Ｆ（例えば、ＲＥＳＴ  ＡＰＩのｅｎｄｐｏｉｎｔ）およびデバイス側Ｉ／Ｆ（例えば、ＭＱＴＴ  ＡＰＩのトピック（Topic）名）を、一貫性が維持されるＩ／Ｆとして一元的に生成してもよい。
【００４８】
また、ＨＴＴＰリクエスト（Request）のクラス名等の情報およびデータ種別設定情報に基づき、クエリコントローラに６３は、適切な性質を有するデータベース等を、データの種別に応じて選択し、データをデータ保持装置６１、第１のデータ記憶装置６２ａ、第２のデータ記憶装置６２ｂの間で書き込みおよび読み出しする。
【００４９】
図３は、本発明の実施形態におけるデータ処理システムによる処理について説明する図である。  
次に、図３を参照してデータ蓄積時の処理について説明する。図３に示した例では、図１で説明したデータ保持装置６１、第１のデータ記憶装置６２ａ、第２のデータ記憶装置６２ｂが、メモリ６１−２、ＤＢ（Database）６２ａ−２、ファイルＤＢ６２ｂ−２に１対１で対応する。ＤＢ６２ａ−２は、ファイルＤＢ６２ｂ−２に記憶するバイナリデータと比較してデータサイズが小さい構造化されたデータをまとめて記憶する。ファイルＤＢ６２ｂ−２は、ＤＢ６２ａ−２に記憶する構造化されたデータと比較してデータサイズが大きいバイナリデータを個別に記憶する。また、図３に示した例では、クエリコントローラ６３とデバイス側Ｉ／Ｆ提供部５０との間にブローカ（Broker）６４が設けられる。ブローカ６４は、クエリコントローラ６３とデバイス側Ｉ／Ｆ提供部５０との間でデータをやり取りする。
【００５０】
クエリコントローラ６３は、データ種別設定情報と、デバイスドライバ／プロトコルコンバータ／センサ／デバイス等９０から入力されたデータを蓄積する要求であるＨＴＴＰリクエストにおけるヘッダ（Header）に含まれるクラス名などの情報とを照合する。この照合により、クエリコントローラ６３は、デバイスドライバ／プロトコルコンバータ／センサ／デバイス等９０からデータ処理部６０内のデータ保持装置６１、第１のデータ記憶装置６２ａ、第２のデータ記憶装置６２ｂへ蓄積する対象、つまり、データ処理部６０による処理対象であるデータの種別を判別する。  
判別の結果、上記の蓄積対象であるデータが、ｊｓｏｎ等の形式で記述された構造化されたデータである場合、クエリコントローラ６３は、データをメモリ６１−２に書き込むとともに、このメモリ６１−２に書き込まれたデータを、データを生成したデバイス毎に、共通データ構造生成元情報に基づいて分類し、この分類したデータを、当該データの取得用の１つまたは複数のＫｅｙ情報（キー情報）とＶａｌｕｅ情報（蓄積対象である測定データ）とともにＤＢ６２a−２にまとめて書き込む。
【００５１】
上記の蓄積対象であるデータが、画像等のバイナリデータであるとき、クエリコントローラ６３は、このバイナリデータをメモリ６１−２に蓄積すると共に、メモリ６１−２に書き込まれたデータを、データを生成したデバイス毎に、共通データ構造生成元情報に基づいて分類し、この分類したデータを、バイナリ形式で、また、Ｋｅｙとなる情報で検索可能な形でファイルＤＢ６２ｂ−２に個別に書き込む。
【００５２】
次に、図３、図４を参照してデータ参照（検索）時の処理について説明する。  
アプリケーションから入力されたデータ取得要求（ＨＴＴＰなど）がクエリコントローラ６３に送られると（Ｓ１）、クエリコントローラ６３は、データ種別設定情報と、データ取得要求のヘッダに含まれるクラス名などの情報と、を照合することで、クエリコントローラ６３によるデータ処理部６０からの取得対象（検索対象）であるデータの種別を判別する。
【００５３】
取得対象であるデータが構造化されたデータであるとき（Ｓ２のＹｅｓ）、クエリコントローラ６３は、Ｋｅｙとなる情報（クラス名・インスタンスＩＤ・タイムスタンプ等）を用いてメモリ６１−２を検索し、取得対象である構造化されたデータがメモリ６１−２に蓄積されているとき（Ｓ３のＹｅｓ）、メモリ６１−２から、この構造化されたデータを含むファイル中から取得対象である構造化されたデータを高速に取得する（Ｓ４）。  
また、取得対象である構造化されたデータがメモリ６１−２に蓄積されていないとき（Ｓ３のＮｏ）、クエリコントローラ６３は、時刻情報およびＫｅｙとなる情報を用いてＤＢ６２ａ−２を検索し、このＤＢ６２ａ−２から取得対象である構造化されたデータを含むファイルをメモリ６１−２にコピーし、メモリ６１−２から、この構造化されたデータを含むファイル中から取得対象であるデータを高速に取得する（Ｓ５）。
【００５４】
取得対象であるデータがバイナリデータ（画像など）である場合（Ｓ２のＮｏ）、クエリコントローラ６３は、上記のＫｅｙとなる情報を用いてメモリ６１−２を検索し、取得対象であるバイナリデータがメモリ６１−２に蓄積されているとき（Ｓ６のＹｅｓ）、このバイナリデータをメモリ６１−２から高速に取得する（Ｓ７）。
【００５５】
また、取得対象であるバイナリデータがメモリ６１−２に蓄積されていないとき（Ｓ６のＮｏ）、クエリコントローラ６３は、Ｋｅｙとなる情報を用いてメモリ６１−２を経由してファイルＤＢ６２ｂ−２を検索し、このファイルＤＢ６２ｂ−２から取得対象であるバイナリデータを含むファイルをメモリ６１−２にコピーし、メモリ６１−２から取得対象であるバイナリデータを高速に取得する（Ｓ８）。クエリコントローラ６３は、Ｓ４、Ｓ５、Ｓ７、またはＳ８により取得したデータを、データ取得要求により要求されたデータとしてアプリケーションに返す（Ｓ９）。このように、Ｋｅｙとなる情報を用いてデータを取得することで、効率的にデータを取得できる。
【００５６】
（発明の効果）
本発明の実施形態では、データ処理システムは、ＩｏＴシステムのデータ特性に合わせて、データ種別に応じて、適切な特性を有する装置にデータの保存または取得処理を行なう。これにより、時系列データを永続的に蓄積可能で、かつ、参照頻度が高い最新のデータを高速に読み出し可能であるシステムを構築することができる。
【００５７】
また、データ処理システム１０が、共通データ構造生成元情報に基づいて生成されたデータ種別設定情報を用いてデータ種別を判別することで、アプリケーションおよびデバイス等のＩ／Ｆとの整合性保持およびデータ構造の変更に対応することが可能である。本発明の実施形態では、バイナリデータおよび時系列データを扱うアプリケーションおよびデバイスと接続可能なデータ処理システム、ならびに、このシステムに基づくＩｏＴプラットフォーム（Platform）を構築することが可能である。
【００５８】
なお、本願発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は可能な限り適宜組み合わせて実施してもよく、その場合組み合わせた効果が得られる。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適当な組み合わせにより種々の発明が抽出され得る。
【００５９】
また、各実施形態に記載した手法は、計算機（コンピュータ）に実行させることができるプログラム（ソフトウエア（Software）手段）として、例えば磁気ディスク（フロッピー（登録商標）ディスク（Floppy disk）、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ等）、半導体メモリ（ＲＯＭ、ＲＡＭ、フラッシュメモリ（Flash memory）等）等の記憶媒体に格納し、また通信媒体により伝送して頒布することもできる。なお、媒体側に格納されるプログラムには、計算機に実行させるソフトウエア手段（実行プログラムのみならずテーブル（Table）構造およびデータ構造も含む）を計算機内に構成させる設定プログラムをも含む。本装置を実現する計算機は、記憶媒体に記憶されたプログラムを読み込み、また場合により設定プログラムによりソフトウエア手段を構築し、このソフトウエア手段によって動作が制御されることにより上述した処理を実行する。なお、本明細書でいう記憶媒体は、頒布用に限らず、計算機内部あるいはネットワークを介して接続される機器に設けられた磁気ディスクおよび半導体メモリ等の記憶媒体を含む。
【図１】
0006629994.tif 000002
【図２】
0006629994.tif 000003
【図３】
0006629994.tif 000004
【図４】
0006629994.tif 000005