(57)【特許請求の範囲】
【請求項１】
データを永続的に保存可能な第１の記憶部と、
前記第１の記憶部よりも読み込み速度が速い第２の記憶部と、
データ発生源で発生したデータを前記第１の記憶部に保存し、前記データ発生源で発生したデータが事前に登録されている検索条件に合致する場合に、前記データ発生源で発生したデータを前記第２の記憶部にさらに保存する処理部と、
アプリケーションからのデータ処理要求に応答して前記第２の記憶部を検索し、前記第２の記憶部を検索した結果、前記データ処理要求の対象となるデータが前記第２の記憶部に存在しない場合に、前記第１の記憶部を検索する検索部と、
を具備するデータ処理装置。
【請求項２】
前記検索条件は、対象のデータが時系列上の最新区分に属するという条件を含む、請求項１に記載のデータ処理装置。
【請求項３】
前記検索条件は、対象のデータがエラーデータであるという条件を含む、請求項１に記載のデータ処理装置。
【請求項４】
前記データ処理装置、前記データ発生源、および前記アプリケーションは、異なる仮想化単位に実装される、請求項１に記載のデータ処理装置。
【請求項５】
データを永続的に保存可能な第１の記憶部と、前記第１の記憶部よりも読み込み速度が速い第２の記憶部と、を備えるデータ処理装置によって実行されるデータ処理方法であって、
データ発生源で発生したデータを前記第１の記憶部に保存し、前記データ発生源で発生したデータが事前に登録されている検索条件に合致する場合に、前記データ発生源で発生したデータを前記第２の記憶部にさらに保存することと、
アプリケーションからのデータ処理要求に応答して前記第２の記憶部を検索することと、
前記第２の記憶部を検索した結果、前記データ処理要求の対象となるデータが前記第２の記憶部に存在しない場合に、前記第１の記憶部を検索することと、
を具備するデータ処理方法。
【請求項６】
前記検索条件は、対象のデータが時系列上の最新区分に属するという条件を含む、請求項５に記載のデータ処理方法。
【請求項７】
前記検索条件は、対象のデータがエラーデータであるという条件を含む、請求項５に記載のデータ処理方法。
【請求項８】
前記データ処理装置、前記データ発生源、および前記アプリケーションは、異なる仮想化単位に実装される、請求項５に記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、膨大なデータのデータベースへの蓄積およびデータベースに対するデータ参照を高速に行うための技術に関する。
【背景技術】
【０００２】
近年、様々なデバイス／センサをネットワークに接続し、これらのデバイス／センサから収集したデータを活用するＩｏＴ（Internet of Things）が注目されている。ＩｏＴでは、多数のデバイス／センサからデータを収集することから、軽量のデータを大量に蓄積することができるデータベースを有するデータ処理装置が必要となる。【０００３】
ＩｏＴの活用例の多くの場合において、デバイス／センサから取得した直近のデータを用いて分析、予測およびアクチュエーションなどが行われる。この点に関して、以下の２点がデータベースの特徴となる。
１．時系列順に高頻度でデータの書き込みが行われること。
２．全データのうち時系列上で最新の区分に属する値を参照する頻度が高いこと。【０００４】
さらに、ＩｏＴの代表的な活用例として、長期的に蓄積したデータを用いた分析やリアルタイム分析に基づいて異常検知などが行われる。この点に関して、以下の２点がデータ処理装置に要求される。
１．データを永続的に蓄積してバルクで処理を行えること。
２．データの最新値を高速に取得できること。【０００５】
すなわち、ＩｏＴ向けのデータ処理装置には、データの永続性と最新値取得の高速性とを両立できることが求められる。【０００６】
既存のデータ処理装置は、一般的なコンピュータの構成に見られるように、データを永続的に記録可能であるがデータ読み込み速度が高速でないハードディスクなどの記憶装置と、高速なデータ読み込みが可能であるが容量が小さくデータを永続的に保存しないメモリ上のキャッシュなどのデータ保持部との２種類により構成されている。【０００７】
従来のデータ処理装置には、データの検索を高速化するために、インデックスをメモリに保持する仕組みを有するものがある。しかしながら、センサデータのようにデータ数が非常に大きい場合、データ数に応じて増加するインデックスの生成がデータ書き込み時のボトルネックとなるとともに、インデックスがメモリに入りきらなくなることがある。さらに、センサデータおいては、最新区分の値を参照する頻度が高いため、全データにインデックスを生成したとしてもその大部分が参照されず、インデックスによる高速化の効果が小さい。【０００８】
さらに、従来のデータ処理装置には、データの読み込みの高速化のために、キャッシュを用いて同一のデータの参照を高速化する仕組みを有するものがある。しかしながら、限られた容量のキャッシュに大量のセンサデータの最新値を保持することは現実的でないことに加え、時系列順に最新値が常時更新されるセンサデータでは、同一データの参照頻度が低いため、キャッシュによる高速化の効果が小さい。【０００９】
このように、インデックスを用いるあるいはキャッシュを単純に用いる従来の技術では、センサデータなどのデータの高速な処理および永続化の両立は困難である。【００１０】
ＩｏＴ分野では、多数のデータの処理を要求されることに加え、長期的な分析とリアルタイム分析との両方が対象となり得るため、保存データの永続性と最新値の高速かつ高頻度な参照が求められる。しかしながら、従来のデータ処理装置では、大量のデータについて書き込み速度およびデータ参照速度の向上と保存データの永続性とを同時に達成することは困難である。
【発明の概要】
【００１１】
本発明は、上記の事情を鑑みてなされたものであり、保存データの永続性および高速なデータ処理を実現可能なデータ処理装置およびデータ処理方法を提供することを目的とする。
【００１２】
本発明の第１の態様は、データ処理装置が、データを永続的に保存可能な第１の記憶部と、前記第１の記憶部よりも読み込み速度が速い第２の記憶部と、データ発生源で発生したデータを前記第１の記憶部に保存し、前記データ発生源で発生したデータが事前に登録されている検索条件に合致する場合に、前記データ発生源で発生したデータを前記第２の記憶部にさらに保存する処理部と、アプリケーションからのデータ処理要求に応答して、前記第１の記憶部よりも優先的に前記第２の記憶部を検索する検索部と、を備えるようにしたものである。
【００１３】
本発明の第２の態様は、前記検索部が、前記第２の記憶部を検索した結果、前記データ処理要求の対象となるデータが前記第２の記憶部に存在しない場合に、前記第１の記憶部を検索するようにしたものである。
【００１４】
本発明の第３の態様は、前記検索条件が、対象のデータが時系列上の最新区分に属するという条件を含むようにしたものである。
【００１５】
本発明の第４の態様は、前記検索条件が、対象のデータがエラーデータであるという条件を含むようにしたものである。
【００１６】
本発明の第５の態様は、前記データ処理装置、前記データ発生源、および前記アプリケーションが、異なる仮想化単位に実装されるようにしたものである。データ処理装置、データ発生源、およびアプリケーションを異なる仮想化単位で実装することで、リソースを隔離して安全に利用することができる。また、データ処理装置、データ発生源、およびアプリケーションを仮想化単位で実装することで、ＣＰＵやメモリなどのハードウェア資源を節約し、ソフトウェアの更新、追加または削除を行う手間が削減できる場合がある。
【００１７】
本発明によれば、保存データの永続性および高速なデータ処理を実現することができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、第１の実施形態に係るデータ処理装置の構成例を示すブロック図である。
【図２】図２は、第１の実施形態に係るデータ処理装置を含むデータ処理システムの構成例を示すブロック図である。
【図３】図３は、図２に示したデータ処理システムにおけるデータ蓄積方法を説明する図である。
【図４】図４は、図２に示したデータ処理システムにおけるデータ蓄積方法を示すフローチャートである。
【図５】図５は、図２に示したデータ処理システムにおけるデータ参照方法を説明する図である。
【図６】図６は、図２に示したデータ処理システムにおけるデータ参照方法を示すフローチャートである。
【図７】図７は、図２に示したデータ処理装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照しながら本発明の実施形態を説明する。全図を通して同様の構成要素に同様の参照符号を付して、各構成要素についての重複する説明を適宜省略する。また、各構成要素に関して、個々の構成要素を区別して説明するために、参照符号に枝番号を追加することもある。
【００２０】
（第１の実施形態）
図１は、第１の実施形態に係るデータ処理装置１０の構成例を概略的に示している。データ処理装置１０は、図１に示すように、データ管理機能部１１、データ保持部１２、およびデータ記録部１３を備える。データ管理機能部１１は、データ処理装置１０の外部と通信するとともに、データベースを構成するデータ保持部１２およびデータ記録部１３とデータをやり取りする。データ処理装置１０の機能の一部または全部は、メモリに格納されたコンピュータプログラムをプロセッサ（例えばＣＰＵ（Central Processing Unit））に実行させることにより実現することができる。
【００２１】
データ処理装置１０には、データ発生源が接続される。データ処理装置１０に接続されるデータ発生源の数は動的に変化することができる。すなわち、データ処理装置１０に接続されるデータ発生源は追加することも削除することもできる。データ発生源の例は、センサ、デバイス、コミュニケーションソフトウェアなどである。データ発生源は、任意のタイミングで次々に（例えば周期的に）データを発生し、データ処理装置１０に順次に送る。データ処理装置１０において、データ発生源からのデータはデータ管理機能部１１に入力する。データ管理機能部１１は、データ発生源から受け取ったデータをデータ記録部１３に保存する。
【００２２】
データ記録部１３は、データを永続的に保存する。データ記録部１３はデータの書き込み速度が高速であることが望ましい。データ記録部１３には、例えば、ハードディスクドライブ（ＨＤＤ）などの不揮発性メモリを用いることができる。具体的には、データ記録部１３は、ＨＤＤ上に構築されるデータベースであり得る。全てのデータをデータ記録部１３に蓄積することで永続性が維持される。データ記録部１３は、事前に登録された検索条件を格納しており、検索条件を用いた待ち受け検索およびコールバックなどの通知機能を有する。具体的には、データ記録部１３は、データが保存されると、そのデータを検索条件と照合し、そのデータが検索条件に合致する場合には、そのデータをデータ保持部１２に渡す。このデータはデータ保持部１２に保存される。データ保持部１２は、データ記録部１３よりも読み込み速度が速い。また、データ保持部１２は、典型的には、データ記録部１３よりも容量が小さく、データの永続性をサポートしない。データ保持部１２はデータの書き込み（例えば上書き）速度が高速であることが望ましい。データ保持部１２には、例えば、メモリ上のキャッシュを用いることができる。データ保持部１２は、例えば、インメモリデータベース、redisなどにより実施されることができる。インメモリデータベースおよびredisは、主にメインメモリ（メインメモリは一般的には揮発性メモリである）上の領域にデータを格納するデータベースである。このように、検索条件に合致するデータはデータ保持部１２に一時的に保持される。一例では、最新１０００件分のデータがデータ保持部１２に保持される。
【００２３】
データ処理装置１０は、アプリケーションなどと通信する。アプリケーションは、データベースに対するデータ処理要求（例えばデータ参照要求）を生成し、データ処理装置１０に送る。データ管理機能部１１は、アプリケーションからのデータ処理要求に応答して、データベースを検索する。データベースを検索する際には、データ処理装置１０は、データ記録部１３よりも優先的にデータ保持部１２を検索する。具体的には、データ管理機能部１１は、データ処理要求を受けると、データ処理要求の対象となるデータを取得するために、まずデータ保持部１２を検索する。検索の結果、対象のデータがデータ保持部１２に存在しなかった場合に、データ管理機能部１１は、データ記録部１３を検索して対象のデータを取得する。データ管理機能部１１によるデータ保持部１２、データ記録部１３の参照時には、例えば、ＪＳＯＮ（JavaScript（登録商標） Object Notation）、ＸＭＬ（Extensible Markup Language）などの形式で書かれた検索式を用いることができる。また、検索式はDate=2015,2016かつDevice_no=1など複数の条件の組み合わせによるものであってもよい。
【００２４】
ＩｏＴ分野では、状態監視などの処理の定期的に実行するアプリケーションが多く用いられ、データ検索においてよく使われる検索条件が存在する。例えば、時系列上の最新区分に属するデータという検索条件がよく使われる。従来の一般的な構成では、最新のデータが必ずしも読み込み速度のより速いデータ保持部に記録されているとは限らず、その場合、読み込み速度のより遅いデータ記録部を参照することになるため、参照速度が遅くなることがある。本実施形態では、データ検索においてよく使われる検索条件に対応する検索条件を登録しておき、検索条件に適合するデータをデータ保持部１２に保持し、アプリケーションからのデータ処理要求に応答してデータ保持部１２を優先的に検索するようにしている。これにより、アプリケーションによって参照される可能性が高いデータが読み込み速度のより速いデータ保持部１２に保持され、データ保持部１２が優先的に検索されることになるので、データの参照速度が向上する。
【００２５】
なお、データ処理装置１０に登録される検索条件は、時系列上の最新区分に属するデータという検索条件に限定されない。例えば、エラーデータを参照するアプリケーションを用いる場合には、エラーデータという検索条件が登録されてもよい。データ処理装置１０に登録される検索条件は、データベースを参照するアプリケーションに応じて変更（例えば、修正、追加、または削除）することができる。検索条件は、例えば、Key:Date, Value:2016などのような検索式の形式とすることができる。また、検索条件は、データ発生源を指定する条件を含むことができる。
【００２６】
書き込まれる全てのデータにインデックスを逐次に付与し、参照時にインデックスを用いたデータ取得を行う従来のデータ処理装置と比較して、本実施形態に係るデータ処理装置１０は、インデックスを付与する処理が不要であることから、データの書き込みが高速化されるとともに、参照頻度の高い検索条件に合致するデータを高速に読み込み可能なデータ保持部１２に保持することで、参照されやすいデータの取得が高速化される。これらの効果は、数が多く時系列的にデータが更新され、かつ、最新値などの参照頻度が高い条件が存在するデータを扱う場合において特に大きくなる。
【００２７】
図２は、データ処理装置１０を含むデータ処理システム２０の構成例を示している。図２に示すように、アプリケーション２４は、直接に、あるいは、ウェブサーバ２５（例えばnode.jsなど）などを経由して、データ管理機能部１１に接続し、データ処理要求をデータ管理機能部１１に送る。図２の例では、アプリケーション２４−１は、ウェブサーバ２５を介してデータ管理機能部１１に接続され、アプリケーション２４−２はデータ管理機能部１１に直接に接続されている。アプリケーション２４は、ウェブサーバ２５上に構築されていてもよい。また、アプリケーションからのデータ処理要求は、ＡＰＩ（Application Programing Interface）（例えば、ＲＥＳＴ  ＡＰＩ）などを通じて変換されてもよい。アプリケーション２４は、データ処理装置１０と同じハードウェア上で動作するものであってもよく、データ処理装置１０と異なるハードウェア上で動作するものであってもよい。また、アプリケーションは、クラウド上のサーバにおいて動作するものであってもよい。
【００２８】
データ処理装置１０は、センサ／デバイス２１（この例では、３つのセンサ／デバイス２１−１、２１−２、２１−３）からデータを収集する。データ処理装置１０とセンサ／デバイス２１との間の通信経路はいかなる形態であってもよい。例えば、データ処理装置１０は、メッセージブローカなどを介してセンサ／デバイス２１からデータを受信することもでき、センサ／デバイス２１から直接にデータを受信することもできる。図２の例では、センサ／デバイス２１−１、２１−２、２１−３とデータ処理装置１０との間にメッセージブローカ２３が設けられている。メッセージブローカ２３は、センサ／デバイス２１から直接にデータを受け取ることもでき、コンバータなどのソフトウェアを介して受け取ることもできる。図２の例では、メッセージブローカ２３は、コンバータ２２−１を介してセンサ／デバイス２１−１からデータを受け取り、コンバータ２２−２を介してセンサ／デバイス２１−２からデータを受け取り、センサ／デバイス２１−３から直接にデータを受け取る。センサ／デバイス２１からのデータは、ＡＰＩなどを通じて変換されてもよい。
【００２９】
データ処理装置１０、アプリケーション２４、およびコンバータ２２を含む部分２９は、同じハードウェア上に実装されてもよい。また、データ処理装置１０、アプリケーション２４、コンバータ２２、およびセンサ／デバイス２１は、図２において破線のブロックで示されるように、異なる仮想化単位（例えば、コンテナ、仮想マシンなど）として分離して実装されてもよく、同一の仮想化単位として実装されてもよい。データ処理装置１０、アプリケーション２４、コンバータ２２、およびセンサ／デバイス２１を異なる仮想化単位で実装することで、リソースを隔離して安全に利用することができる。また、データ処理装置１０、アプリケーション２４、コンバータ２２、およびセンサ／デバイス２１を仮想化単位で実装することで、ＣＰＵやメモリなどのハードウェア資源を節約し、ソフトウェアの更新、追加または削除を行う手間が削減できる場合がある。
【００３０】
次に、データ処理装置１０の動作について説明する。  
図３および図４を参照してデータ蓄積方法の一例を説明する。ここでは、図３に示すように、データ管理機能部１１が、メッセージクライアント１１１、データマネージャ１１２、およびクエリコントローラ１１３を備え、データ記録部１３が、検索式登録部１３１およびデータ蓄積部１３２を備える。
【００３１】
検索条件を表す検索式が検索式登録部１３１に事前に登録される（図４のステップＳ４１）。データ管理機能部１１がセンサ／デバイス２１から取得したデータをデータ蓄積部１３２に保存する（ステップＳ４２）。具体的には、メッセージクライアント１１１が、メッセージブローカ２３を介してセンサ／デバイス２１からデータを受け取り、データマネージャ１１２に送る。続いて、データマネージャ１１２が、センサ／デバイス２１からのデータをデータ記録部１３内のデータ蓄積部１３２に書き込む。
【００３２】
保存されたデータが検索式登録部１３１に登録されている検索式に合致するか否かが判定される（ステップＳ４３）。保存されたデータが検索式に合致する場合、当該データはデータ保持部１２に上書きされ（ステップＳ４４）、処理が終了する。一方、保存されたデータが検索式に合致しない場合、データ保持部１２への上書きが行われることなく、処理が終了する。
【００３３】
図５および図６を参照してデータ参照方法の一例を説明する。  
データ管理機能部１１内のクエリコントローラ１１３が、アプリケーション２４からデータ処理要求を受け取る（図５および図６のステップＳ６１）。例えば、図５に示すように、クエリコントローラ１１３は、ウェブサーバ２５を介してアプリケーション２４−１からデータ処理要求を受け取る、あるいは、アプリケーション２４−２から直接にデータ処理要求を受け取る。
【００３４】
クエリコントローラ１１３が、データ処理要求に応答してデータ保持部１２を検索する（ステップＳ６２）。検索対象のデータがデータ保持部１２に存在する場合、クエリコントローラ１１３は、データ保持部１２からデータを取得する（ステップＳ６４）。一方、検索対象のデータがデータ保持部１２に存在しない場合、クエリコントローラ１１３は、データ記録部１３内のデータ蓄積部１３２を検索し（ステップＳ６３）、データ蓄積部１３２からデータを取得する（ステップＳ６４）。
【００３５】
クエリコントローラ１１３が、データ保持部１２またはデータ蓄積部１３２から取得したデータをアプリケーションに送る（ステップＳ６５）。例えば、図５に示すように、クエリコントローラ１１３は、ウェブサーバ２５を介してアプリケーション２４−１にデータを送る、あるいは、アプリケーション２４−２に直接にデータを送る。これにより、処理が終了する。
【００３６】
図７は、データ処理装置１０を実現するハードウェアの一例であるコンピュータ７０を示している。図７に示すように、コンピュータ７０は、ＣＰＵ７１、メインメモリ７２、プログラムメモリ７３、補助記憶装置７４、通信インタフェース７５、および外部インタフェース７６を備え、これらは、バス７７を通じて接続されている。
【００３７】
ＣＰＵ７１は、プログラムメモリ７３に記憶されているプログラムを読み出してメインメモリ７２に展開し、そのプログラムを実行することで、データ処理装置１０の上述した機能を実現する。メインメモリ７２は、例えばＳＲＡＭ（Static Random Access Memory）またはＤＲＡＭ（Dynamic Random Access Memory）である。メインメモリ７２は、データ保持部１２のために使用されることができる。プログラムメモリ７３は、ＲＯＭ（Read-Only memory）であってもよく、補助記憶装置７４の一部として実施されてもよい。補助記憶装置７４は、例えば、ＨＤＤ、ＳＳＤ（Solid State drive）であり、各種データを記憶する。補助記憶装置７４は、データ記録部１３のために使用されることができる。
【００３８】
通信インタフェース７５は、有線通信モジュール、無線通信モジュール、またはそれらの組み合わせを含み、外部機器（例えばセンサ／デバイス２１）と通信する。外部インタフェース７６は、キーボードなどの入力装置、ディスプレイ装置などの出力装置などと接続するためのインタフェースである。上述した検索条件は、入力装置を用いて登録されてもよく、通信インタフェース７５を介して外部機器から受信されてもよい。
【００３９】
ＣＰＵ７１は、プロセッサの一例である。プロセッサは、ＣＰＵ７１などの汎用の処理回路に限らず、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field Programmable Gate Array）などの専用の処理回路であってもよい。プロセッサとして専用の処理回路が使用される場合、プログラムはその専用の処理回路内に存在していてもよい。プロセッサは、１つまたは複数の汎用の処理回路および／または１つまたは複数の専用の処理回路を含むことができる。
【００４０】
上述した処理を実現するプログラムは、コンピュータで読み取り可能な記録媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記録媒体に記憶される。記憶媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリなどを使用することができる。記録媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上述した処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ（サーバ）上に格納し、ネットワーク経由でコンピュータ７０にダウンロードさせてもよい。
【００４１】
以上のように、本実施形態に係るデータ処理装置は、データを永続的に保存可能なデータ記録部と、データ記録部よりも読み込み速度が速いデータ保持部と、を備え、データ発生源で発生したデータをデータ記録部に保存し、データ発生源で発生したデータが事前に登録されている検索条件に合致する場合に、そのデータをデータ保持部にさらに保存し、アプリケーションからのデータ処理要求に応答してデータ保持部を優先的に検索するようにしている。これにより、全てのデータが永続化されるとともに、参照されやすいデータは読み込み速度のより速いデータ保持部にも格納されることになり、データ処理要求に応答してデータ保持部が優先的に検索されるので、データ参照の速度が向上する。また、インデックスを付与する従来の技術と比べて、高速にデータを保存することができる。すなわち、保存データの永続化および高速なデータ処理の両方が達成される。
【００４２】
（他の実施形態）
上述した第１の実施形態では、データ記録部１３にデータが保存されると、データ記録部１３において、保存されたデータを検索条件と照合し、保存されたデータが検索条件に合致する場合には、そのデータをデータ保持部１２に渡すようにしている。他の実施形態では、この処理はデータ管理機能部１１によって行われてもよい。具体的には、データ管理機能部１１が、データ発生源からのデータをデータ記録部１３に蓄積するとともに、このデータが事前に登録された検索条件と合致するかどうかを判定し、このデータが検索条件に合致する場合には、このデータをデータ保持部１２に上書きする。
【００４３】
本発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図１】
0006789307.tif 000002
【図２】
0006789307.tif 000003
【図３】
0006789307.tif 000004
【図４】
0006789307.tif 000005
【図５】
0006789307.tif 000006
【図６】
0006789307.tif 000007
【図７】
0006789307.tif 000008