(57)【要約】  本発明の一態様によれば、データ処理装置が提供される。データ処理装置は、データ処理部を含む。データ処理部は、共通のデータベースにアクセスする複数のアプリケーションの１つによって発行された共通のデータベースへのデータ処理要求に対する前処理とデータ処理要求に応じて共通のデータベースから返された検索結果に対する後処理とのうち少なくとも一部を行う。
2018074479.tif 000002
【特許請求の範囲】
【請求項１】
共通のデータベースにアクセスする複数のアプリケーションの１つによって発行された前記共通のデータベースへのデータ処理要求に対する前処理と前記データ処理要求に応じて前記共通のデータベースから返された検索結果に対する後処理とのうち少なくとも一部を行うデータ処理部
を具備する、データ処理装置。
【請求項２】
前記データ処理部は、前記データ処理要求のクエリ変換を含む前処理と、前記検索結果を用いた統計処理を含む後処理とのうち少なくとも一部を行う、請求項１に記載のデータ処理装置。
【請求項３】
前記共通のデータベース用の第１の仮想化単位をさらに具備し、
前記データ処理部は、前記第１の仮想化単位とは異なる第２の仮想化単位に含まれる、
請求項１に記載のデータ処理装置。
【請求項４】
前記データ処理部は、１対１でセッションを継続的に維持するプロトコルを用いてセッションを確立し、前記前処理が行われたデータ処理要求の送信と、前記検索結果の受信とのうちの少なくとも一方を行う、請求項１に記載のデータ処理装置。
【請求項５】
前記データ処理部は、（１）前記データ処理要求に対する前処理の少なくとも一部として、前記複数のアプリケーションの１つからのリクエストの受け付けおよびパース処理、（２）前記検索結果に対する後処理の少なくとも一部として、当該検索結果のキャッシュ処理、ならびに（３）セッション管理、のうちの少なくとも１つを行う、請求項１に記載のデータ処理装置。
【請求項６】
前記第１の仮想化単位は、前記共通のデータベースに対するデータの読み書きを行うデータ管理部をさらに含み、
前記データ管理部は、前記データ処理部との間でセッションを確立し、前記前処理が行われたデータ処理要求の受信と、前記検索結果の送信とのうちの少なくとも一方を行い、
前記データ管理部は、前記前処理が行われたデータ処理要求に対するデシリアライズ処理と、前記検索結果に対する送信前のシリアライズ処理とのうちの少なくとも一方を行う、
請求項３に記載のデータ処理装置。
【請求項７】
共通のデータベースにアクセスする複数のアプリケーションの１つである第１のアプリケーションによって発行された前記共通のデータベースへの第１のデータ処理要求に対する前処理と前記第１のデータ処理要求に応じて前記共通のデータベースから返された第１の検索結果に対する後処理とのうち少なくとも一部を行う第１のデータ処理部を含む第１の仮想化単位と、
前記複数のアプリケーションの１つである第２のアプリケーションによって発行された前記共通のデータベースへの第２のデータ処理要求に対する前処理と前記第２のデータ処理要求に応じて前記共通のデータベースから返された第２の検索結果に対する後処理とのうち少なくとも一部を行う第２のデータ処理部を含む第２の仮想化単位と
を具備する、データ処理装置。
【請求項８】
前記第１のデータ処理部は、前記第１のデータ処理要求のクエリ変換を含む前処理と、前記第１の検索結果を用いた統計処理を含む後処理とのうち少なくとも一部を行い、
前記第２のデータ処理部は、前記第２のデータ処理要求のクエリ変換を含む前処理と、前記第２の検索結果を用いた統計処理を含む後処理とのうち少なくとも一部を行う、
請求項７に記載のデータ処理装置。
【請求項９】
前記共通のデータベース用の第３の仮想化単位をさらに具備する、請求項７に記載のデータ処理装置。
【請求項１０】
前記第１のデータ処理部は、１対１でセッションを継続的に維持するプロトコルを用いてセッションを確立し、前記前処理が行われた第１のデータ処理要求の送信と、前記第１の検索結果の受信とのうちの少なくとも一方を行い、
前記第２のデータ処理部は、１対１でセッションを継続的に維持するプロトコルを用いてセッションを確立し、前記前処理が行われた第２のデータ処理要求の送信と、前記第２の検索結果の受信とのうちの少なくとも一方を行う、
請求項７に記載のデータ処理装置。
【請求項１１】
前記第１のデータ処理部は、（１）前記第１のデータ処理要求に対する前処理の少なくとも一部として、前記複数の第１のアプリケーションの１つからのリクエストの受け付けおよびパース処理、（２）前記第１の検索結果に対する後処理の少なくとも一部として、当該第１の検索結果のキャッシュ処理、ならびに（３）セッション管理、のうちの少なくとも１つを行い、
前記第２のデータ処理部は、（１）前記第２のデータ処理要求に対する前処理の少なくとも一部として、前記複数の第２のアプリケーションの１つからのリクエストの受け付けおよびパース処理、（２）前記第２の検索結果に対する後処理の少なくとも一部として、当該第２の検索結果のキャッシュ処理、ならびに（３）セッション管理、のうちの少なくとも１つを行う、
請求項７に記載のデータ処理装置。
【請求項１２】
前記第３の仮想化単位は、前記共通のデータベースに対するデータの読み書きを行うデータ管理部をさらに含み、
前記データ管理部は、前記第１のデータ処理部との間でセッションを確立し、前記前処理が行われた第１のデータ処理要求の受信と、前記第１の検索結果の送信とのうちの少なくとも一方を行い、
前記データ管理部は、前記前処理が行われた第１のデータ処理要求に対するデシリアライズ処理と、前記第１の検索結果に対する送信前のシリアライズ処理とのうちの少なくとも一方を行い、
前記データ管理部は、前記第２のデータ処理部との間でセッションを確立し、前記前処理が行われた第２のデータ処理要求の受信と、前記第２の検索結果の送信とのうちの少なくとも一方を行い、
前記データ管理部は、前記前処理が行われた第２のデータ処理要求に対するデシリアライズ処理と、前記第２の検索結果に対する送信前のシリアライズ処理とのうちの少なくとも一方を行う、
請求項９に記載のデータ処理装置。
【請求項１３】
第１のデータ処理装置または第１の仮想化単位が、共通のデータベースにアクセスする複数のアプリケーションの１つである第１のアプリケーションによって発行された前記共通のデータベースへの第１のデータ処理要求に対する前処理と前記第１のデータ処理要求に応じて前記共通のデータベースから返された第１の検索結果に対する後処理とのうち少なくとも一部を行うことと、
第２のデータ処理装置または第２の仮想化単位が、前記複数のアプリケーションの１つである第２のアプリケーションによって発行された前記共通のデータベースへの第２のデータ処理要求に対する前処理と前記第２のデータ処理要求に応じて前記共通のデータベースから返された第２の検索結果に対する後処理とのうち少なくとも一部を行うことと
を具備する、データ処理方法。
【請求項１４】
前記第１のデータ処理装置または前記第１の仮想化単位は、前記第１のデータ処理要求のクエリ変換を含む前処理と、前記第１の検索結果を用いた統計処理を含む後処理とのうち少なくとも一部を行い、
前記第２のデータ処理装置または前記第２の仮想化単位は、前記第２のデータ処理要求のクエリ変換を含む前処理と、前記第２の検索結果を用いた統計処理を含む後処理とのうち少なくとも一部を行う、
請求項１３に記載のデータ処理方法。
【請求項１５】
前記第１のデータ処理装置または前記第１の仮想化単位は、（１）前記第１のデータ処理要求に対する前処理の少なくとも一部として、前記複数の第１のアプリケーションの１つからのリクエストの受け付けおよびパース処理、（２）前記第１の検索結果に対する後処理の少なくとも一部として、当該第１の検索結果のキャッシュ処理、ならびに（３）セッション管理、のうちの少なくとも１つを行い、
前記第２のデータ処理装置または前記第２の仮想化単位は、（１）前記第２のデータ処理要求に対する前処理の少なくとも一部として、前記複数の第２のアプリケーションの１つからのリクエストの受け付けおよびパース処理、（２）前記第２の検索結果に対する後処理の少なくとも一部として、当該第２の検索結果のキャッシュ処理、ならびに（３）セッション管理、のうちの少なくとも１つを行う、
請求項１３に記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースの検索に付随するデータ処理に関する。
【背景技術】
【０００２】
近年、多数のセンサ／デバイスをネットワークに接続し、データを収集／活用するＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）が注目されている。センサ／デバイスから収集されたデータは、データベースに蓄積され、アプリケーションによって活用のために参照される。なお、データベースにアクセスするアプリケーションは１つとは限らない。すなわち、複数の異なるアプリケーションが１つのデータベースに共通にアクセスするシステムも構築可能である。【０００３】
従来のデータベースは、アプリケーションからのデータ処理要求を受けて、当該データ処理要求のクエリ変換などの前処理を行い、次いで検索を行う。さらに、従来のデータベースは、オプションとして、検索結果を用いた統計処理（例えば、集約、フィルタ、平均値計算およびソート）などの後処理を行うこともある。一般に、ＩｏＴにおいて、センサ／デバイスから収集されるデータの個々のサイズは小さいものの、膨大な数のデータが収集されデータベースに蓄積される。故に、ＩｏＴでは、データベースには大きなデータ処理負荷が課されることになる。従って、特にＩｏＴでは、複数のアプリケーションが同時期にデータベースにデータ処理を要求した場合に、データベースの計算能力（ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））および記憶領域（メモリ）などのハードウェアリソースが特定のアプリケーションによって長時間占有され、他方で残りのアプリケーションの待ち時間は長くなる。【０００４】
また、仮想化技術を用いて、アプリケーションおよびデータベースを同一の装置内の異なる仮想化単位（例えば、仮想マシン、コンテナなどであり得る）として共存させることも想定される。この場合に、アプリケーション用の仮想化単位およびデータベース用の仮想化単位には、それぞれ使用可能なリソースの上限を設定することができる。しかしながら、データベース用の仮想化単位に利用可能なハードウェアリソースが特定のアプリケーションによって長時間占有されれば、やはり残りのアプリケーションの待ち時間は長くなる。
【発明の概要】
【０００５】
本発明は、複数のアプリケーション間でのデータベース利用の公平性を向上させることを目的とする。
【０００６】
本発明の一態様によれば、データ処理装置が提供される。データ処理装置は、データ処理部とを含む。データ処理部は、共通のデータベースにアクセスする複数のアプリケーションの１つによって発行された共通のデータベースへのデータ処理要求に対する前処理とデータ処理要求に応じて共通のデータベースから返された検索結果に対する後処理とのうち少なくとも一部を行う。
【０００７】
本発明の別の態様によれば、データ処理装置が提供される。データ処理装置は、第１の仮想化単位と、第２の仮想化単位とを含む。第１の仮想化単位は、第１のデータ処理部を含む。第２の仮想化単位は、第２のデータ処理部を含む。第１のデータ処理部は、共通のデータベースにアクセスする複数のアプリケーションの１つである第１のアプリケーションによって発行された共通のデータベースへの第１のデータ処理要求に対する前処理と第１のデータ処理要求に応じて共通のデータベースから返された第１の検索結果に対する後処理とのうち少なくとも一部を行う。第２のデータ処理部は、複数のアプリケーションの１つである第２のアプリケーションによって発行された共通のデータベースへの第２のデータ処理要求に対する前処理と第２のデータ処理要求に応じて共通のデータベースから返された第２の検索結果に対する後処理とのうち少なくとも一部を行う。
【０００８】
本発明によれば、複数のアプリケーション間でのデータベース利用の公平性を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態に係るデータ処理装置を例示するブロック図である。
【図２】図２は、第１の実施形態に係るデータ処理装置を含むデータ処理システムを例示するブロック図である。
【図３】図３は、図２のデータベースを例示するブロック図である。
【図４】図４は、第１の実施形態に係るデータ処理装置を含むデータ処理システムの詳細を例示するブロック図である。
【図５】図５は、図２または図４のデータ処理システムの動作を例示するフローチャートである。
【図６】図６は、第１の実施形態に係るデータ処理装置のハードウェア構成を例示するブロック図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら実施形態の説明が述べられる。尚、以降、説明済みの要素と同一または類似の要素には同一または類似の符号が付され、重複する説明は基本的に省略される。例えば、複数の同一または類似の要素が存在する場合に、各要素を区別せずに説明するために共通の符号を用いることがあるし、各要素を区別して説明するために当該共通の符号に加えて枝番号を用いることもある。
【００１１】
（第１の実施形態）  
図１に例示されるように、第１の実施形態に係るデータ処理装置１００は、アプリケーション実行部１０１と、データ処理部１０２とを含む。データ処理装置１００は、典型的にはコンピュータであって、ＣＰＵなどのプロセッサおよびメモリを含む。プロセッサは、メモリにロードされた所定のプログラムを実行することで、アプリケーション実行部１０１およびデータ処理部１０２としてそれぞれ機能することができる。なお、アプリケーションは、データ処理装置１００にインストールされたアプリケーションに限られず、ウェブアプリ、クラウドアプリなどを含み得る。
【００１２】
なお、アプリケーション実行部１０１およびデータ処理部１０２は、データ処理装置１００内の１つの仮想化単位（例えば、仮想マシンまたはコンテナなどであり得る）として実装されてもよいし、異なる仮想化単位として実装されてもよい。さらに、アプリケーション実行部１０１は、データ処理装置１００に含まれず、当該データ処理装置１００とは異なる装置（例えばアプリケーション装置と呼ぶことができる）に含まれていることもある。
【００１３】
アプリケーション実行部１０１は、共通のデータベースにアクセスする複数のアプリケーションの１つを実行し、このデータベースに対するデータ処理要求（例えば、データ参照要求であり得る）を発行する。アプリケーション実行部１０１は、発行したデータ処理要求をデータ処理部１０２へ送る。
【００１４】
また、アプリケーション実行部１０１は、当該アプリケーション実行部１０１によって既に発行されたデータ処理要求に応じたデータベースの検索結果、または、この検索結果に後述の後処理を施した後処理結果を、データ処理部１０２から受け取る。
【００１５】
データ処理部１０２は、アプリケーション実行部１０１からデータ処理要求を受け取り、当該データ処理要求に対する前処理を行う。前処理は、例えば、データ処理要求のクエリ変換などであり得る。データ処理部１０２は、前処理済みのデータ処理要求をデータベース（例えば、後述されるデータベース管理装置２００）へ送る。
【００１６】
また、データ処理部１０２は、前処理済みのデータ処理要求に応じたデータベースの検索結果を当該データベース管理装置２００から受け取る。データ処理部１０２は、検索結果に対して後処理を必要に応じて行う。後処理は、例えば、検索結果を用いた統計処理（例えば、集約、フィルタ、平均値計算またはソート）などであり得る。具体的には、データ処理部１０２は、データ処理要求に後処理が含まれる場合には後処理を行うことを決定し、そうでない場合には後処理を行わないことを決定してもよい。データ処理部１０２は、後処理を行った場合には後処理結果をアプリケーション実行部１０１に返し、後処理を行わなかった場合には検索結果をアプリケーション実行部１０１に返す。
【００１７】
なお、データ処理部１０２は、上記機能を組み込んだ、例えば、共通アプリケーションとして実装してもよい。あるいは、データ処理部１０２は、上記機能を組み込んだ、ｎｏｄｅ．ｊｓなどのウェブサーバを実装してもよい。また、アプリケーション実行部１０１と、データ処理部１０２との間は、データ処理要求を変換するためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）（例えば、ＲＥＳＴ  ＡＰＩ）などを介して接続されてもよい。
【００１８】
データ処理装置１００は、図２に例示されるデータ処理システムの一部となる。図２のデータ処理システムは、データベース管理装置２００と、当該データベース管理装置２００に共通にアクセスする複数のアプリケーションを実行する複数のデータ処理装置１００−１，１００−２，・・・とを含む。
【００１９】
なお、複数のデータ処理装置１００−１，１００−２，・・・に含まれるデータ処理部１０２−１，１０２−２，・・・と、データベース管理装置２００とのうち一部または全部が、同一のコンピュータ（例えば、データ処理装置、データベース管理装置などのより具体的な名称で呼ぶこともできる）内の複数の異なる仮想化単位として実装されてもよい。具体的には、１つまたは複数のデータ処理装置１００に含まれるデータ処理部１０２とデータベース管理装置２００とが同一のコンピュータ内の複数の異なる仮想化単位として実装されてもよいし、複数のデータ処理装置１００に含まれるデータ処理部１０２が同一のコンピュータ内の複数の異なる仮想化単位として実装されてもよい。
【００２０】
データベース管理装置２００（またはデータベース用の仮想化単位）は、図３に例示されるように、データ管理部２０１と、データ記録部２０２とを含む。データベース管理装置２００は、典型的にはコンピュータであって、ＣＰＵなどのプロセッサ、メモリおよび補助記憶装置（例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などであり得る）を含む。プロセッサは、メモリにロードされた所定のプログラムを実行することで、データ管理部２０１として機能することができる。また、補助記憶装置はデータ記録部２０２として機能する。
【００２１】
データ管理部２０１は、いずれかのデータ処理装置１００（またはデータ処理用の仮想化単位）から前処理済みのデータ処理要求を受け取る。データ管理部２０１は、前処理済みのデータ処理要求に応じて、データ記録部２０２に構築されているデータベースを検索する。そして、データ管理部２０１は、検索結果を、前処理済みのデータ処理要求の送信元であるデータ処理装置１００へ返す。
【００２２】
また、データ管理部２０１は、センサ／デバイス（例えば、図４のセンサ／デバイス４００）から収集されたデータをデータ記録部２０２に書き込むことでデータベースを更新する。
【００２３】
データ記録部２０２は、センサ／デバイスから収集されたデータがデータ管理部２０１によって書き込まれ、これを永続的に記録する。データ記録部２０２に蓄積されたデータの集合がデータベースに相当する。データ記録部２０２に構築されたデータベースは、データ管理部２０１によって必要に応じて検索を行われる。
【００２４】
図４は、第１の実施形態に係るデータ処理システム３００の詳細を例示する。データ処理システム３００は、複数のデータ処理用の仮想化単位３１０−１，３１０−２，・・・と、データベース用の仮想化単位３２０と、メッセージブローカ３３０と、コンバータ３４０とを含む。データ処理システム３００では、複数のセンサ／デバイス４００−１，４００−２，・・・から収集されたデータを用いてデータベースが構築され、複数のアプリケーションがこのデータベースに共通にアクセスする。
【００２５】
なお、データ処理用の仮想化単位３１０は、独立したハードウェア（例えば、データ処理装置１００）に置き換えることが可能である。同様に、データベース用の仮想化単位３２０は、独立したハードウェア（例えば、データベース管理装置２００）に置き換えることが可能である。
【００２６】
各データ処理用の仮想化単位３１０は、アプリケーション３１１およびウェブサーバ３１２を実装する。アプリケーション３１１およびウェブサーバ３１２は、それぞれアプリケーション実行部１０１およびデータ処理部１０２に対応する。なお、図４には示されていないが、ウェブサーバ３１２は、データ処理部１０２と同様の機能を組み込んだ共通アプリケーションであってもよい。また、アプリケーション３１１は、データ処理用の仮想化単位３１０とは異なる仮想化単位（例えばアプリケーション用の仮想化単位と呼ぶことができる）または独立したハードウェア（例えばアプリケーション装置）によって実装されてもよい。
【００２７】
アプリケーション３１１は、データベース用の仮想化単位３２０によって実装されるデータベースに対するデータ処理要求を発行する。アプリケーション３１１は、発行したデータ処理要求をウェブサーバ３１２へ送る。
【００２８】
また、アプリケーション３１１は、当該アプリケーション３１１によって既に発行されたデータ処理要求に応じたデータベースの検索結果、または、この検索結果に後処理を施した後処理結果を、ウェブサーバ３１２から受け取る。
【００２９】
ウェブサーバ３１２は、アプリケーション３１１からデータ処理要求を受け取り、当該データ処理要求に対する前処理を行う。ウェブサーバ３１２は、前処理済みのデータ処理要求をデータベース用の仮想化単位３２０へ送る。
【００３０】
具体的には、ウェブサーバ３１２は、アプリケーション３１１との間にセッションを確立し、アプリケーション３１１からデータ処理要求を受け取る。そして、ウェブサーバ３１２は、データ処理要求に対する前処理として、（１）ＨＴＭＬ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）リクエストの受け付け、（２）例えばＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）、ＸＭＬ(Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ)などの形式であるリクエストボディのパース処理、および（３）クエリの分析を行うことができる。クエリの分析は、データ処理要求がデータの書き込み、または検索のどちらの要求であるかの判別、検索の要求である場合には検索条件の分析などを含むことができる。  
なお、アプリケーション３１１と、ウェブサーバ３１２との間は、データ処理要求を変換するためのＡＰＩなどを介して接続されてもよい。
【００３１】
また、ウェブサーバ３１２は、前処理済みのデータ処理要求に応じたデータベースの検索結果を当該データベースから受け取る。ウェブサーバ３１２は、検索結果に対して後処理を必要に応じて行う。ウェブサーバ３１２は、後処理を行った場合には後処理結果をアプリケーション３１１に返し、後処理を行わなかった場合には検索結果をアプリケーション３１１に返す。
【００３２】
具体的には、ウェブサーバ３１２は、前処理済みのデータ処理要求に応じたデータベースの検索結果をクエリコントローラ３２１から受け取る。ウェブサーバ３１２は、検索結果に対する後処理として、取得したデータの統計処理、キャッシュ処理などを必要に応じて行うことができる。
【００３３】
ウェブサーバ３１２は、クエリコントローラ３２１との間に１対１のセッションを確立する。ここで、ウェブサーバ３１２は、1対1のセッションを継続的に維持する簡単なプロトコルを利用してセッションを確立・維持することにより、クエリコントローラ３２１の処理負担を小さくすることができる。また、ウェブサーバ３１２とクエリコントローラ３２１との間のプロトコルにＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）を利用することにより、セキュリティを高めることもできる。
【００３４】
これらの前処理および後処理の負荷、ならびにセッションを確立・維持する際の大部分の処理負荷をウェブサーバ３１２が負担することで、クエリコントローラ３２１の処理負荷が小さくなる。故に、１つのデータベース管理装置２００に対して複数のデータ処理装置１００を接続した場合の公平性を高めることができる。
【００３５】
データベース用の仮想化単位３２０は、クエリコントローラ３２１と、データマネージャ３２２と、データ記録部３２３と、メッセージクライアント３２４とを含む。クエリコントローラ３２１、データマネージャ３２２およびメッセージクライアント３２４は、データ管理部２０１に対応する。データ記録部３２３は、データ記録部２０２に対応する。
【００３６】
クエリコントローラ３２１は、いずれかのデータ処理用の仮想化単位３１０から前処理済みのデータ処理要求を受け取り、データマネージャ３２２へと送る。また、クエリコントローラ３２１は、データマネージャ３２２から検索結果を受け取り、このデータ処理用の仮想化単位３１０へと返す。
【００３７】
具体的には、クエリコントローラ３２１は、いずれかのデータ処理用の仮想化単位３１０のウェブサーバ３１２とのセッションを確立し、ウェブサーバ３１２から前処理（例えば、前述の（１）ＨＴＭＬリクエストの受け付け、（２）例えばＪＳＯＮ、ＸＭＬなどの形式であるリクエストボディのパース処理、および（３）クエリの分析など）済みのデータ処理要求を受け取る。そして、クエリコントローラ３２１は、受け取ったデータのデシリアライズ処理、およびデシリアライズされたデータの型などが適切であるかを確認する処理（バリデーション）を行う。さらに、クエリコントローラ３２１は、ウェブサーバ３１２によって分析されたクエリに従い、データの検索または書き込み要求をデータマネージャ３２２へと送る。また、クエリコントローラ３２１は、データマネージャ３２２からデータ検索または書き込み結果、すなわちデータ処理結果を受け取り、データ処理用の仮想化単位３１０のウェブサーバ３１２との通信プロトコルに従ってデータのシリアライズ処理を行い、ウェブサーバ３１２へと返す。
【００３８】
また、クエリコントローラ３２１は、メッセージクライアント３２４とのセッションを確立し、メッセージクライアント３２４からパース処理されたデータを受け取り、データのデシリアライズ処理、およびバリデーションを行い、データの書き込み要求をデータマネージャ３２２へと送る。また、クエリコントローラ３２１は、データマネージャ３２２から受け取ったデータをウェブサーバ３１２に送る。
【００３９】
データマネージャ３２２は、クエリコントローラ３２１からデータの検索または書き込み要求を受け取り、これに応じて、データ記録部３２３に構築されているデータベースを検索し、またはデータの書き込みを行う。データマネージャ３２２は、検索結果または書き込み結果をクエリコントローラ３２１へ返す。
【００４０】
また、データマネージャ３２２は、センサ／デバイス４００−１，４００−２，・・・から収集されたデータを、クエリコントローラ３２１から受け取る。データマネージャ３２２は、受け取ったデータをデータ記録部３２３に書き込むことでデータベースを更新する。
【００４１】
データ記録部３２３には、センサ／デバイス４００−１，４００−２，・・・から収集されたデータがデータマネージャ３２２によって書き込まれる。データ記録部３２３に蓄積されたデータの集合がデータベースに相当する。データ記録部３２３に構築されたデータベースは、データマネージャ３２２によって必要に応じて検索を行われる。
【００４２】
メッセージクライアント３２４は、センサ／デバイス４００−１，４００−２，・・・から収集されたデータを、メッセージブローカ３３０を介して受け取り、クエリコントローラ３２１に送る。
【００４３】
メッセージクライアント３２４は、クエリコントローラ３２１とのセッションを確立し、クエリコントローラ３２１からシリアライズされたデータを受け取り、メッセージブローカ３３０との通信プロトコルに従ってメッセージの整形を行い、メッセージブローカ３３０に送る。また、メッセージクライアント３２４は、メッセージブローカ３３０とのセッションを確立し、センサ／デバイス４００−１，４００−２，・・・から収集されたデータを、メッセージブローカ３３０から受け取り、パース処理を行い、クエリコントローラ３２１へと送る。なお、メッセージクライアント３２４は、クエリコントローラ３２１を介さすることなく、パース処理を行ったデータを直接データマネージャ３２２へ送ってもよい。
【００４４】
メッセージブローカ３３０は、センサ／デバイス４００から送られるデータを受け取り、データベース用の仮想化単位３２０に送る。なお、メッセージブローカ３３０は、データを、センサ／デバイス４００から直接受け取ることも可能であるし、コンバータ３４０またはその他の機能部を経由して受け取ることも可能である。図４の例では、メッセージブローカ３３０は、センサ／デバイス４００−１からのデータをコンバータ３４０を経由して受け取り、センサ／デバイス４００−２からのデータを直接受け取る。また、メッセージブローカ３３０と、コンバータ３４０またはセンサ／デバイス４００との間は、データを変換するためのＡＰＩなどを介して接続されてもよい。
【００４５】
コンバータ３４０は、センサ／デバイス４００（図４の例では、センサ／デバイス４００−１）からデータを受け取り、所定の変換を施す。コンバータ３４０は、変換済みのデータをメッセージブローカ３３０に送る。コンバータ３４０は、例えばソフトウェア実装され、データ処理用の仮想化単位３１０およびデータベース用の仮想化単位３２０とは異なる仮想化単位によって実行されてもよいし、単独の装置によって実行されてもよい。
【００４６】
センサ／デバイス４００は、所定のデータを収集し、収集したデータをメッセージブローカ３３０に向けて送る。前述の通り、センサ／デバイス４００とメッセージブローカ３３０との間には、コンバータ３４０またはその他の機能部が介在することもある。なお、センサ／デバイス４００およびコンバータ３４０は、同一の仮想化単位または装置に含まれていてもよいし、別々の仮想化単位または装置に含まれていてもよい。
【００４７】
図５には、データ処理用の仮想化単位３１０（またはデータ処理装置１００）およびデータベース用の仮想化単位３２０（またはデータベース管理装置２００）の動作例が示される。
【００４８】
最初に、いずれかのアプリケーション３１１（またはアプリケーション実行部１０１）が、データベースに対するデータ処理要求を発行する（ステップＳ５０１）。ウェブサーバ３１２（またはデータ処理部１０２）は、ステップＳ５０１において発行されたデータ処理要求に対する前処理を行い、前処理済みのデータ処理要求をデータベース用の仮想化単位３２０（またはデータベース管理装置２００）へと送る（ステップＳ５０２）。
【００４９】
次のステップＳ５０３では、以下の処理（１）〜（３）によってデータベースの検索（または書き込み）が実現される。
【００５０】
（１）クエリコントローラ３２１（またはデータ管理部２０１）は、ステップＳ５０２において送られた、前処理済みのデータ処理要求に応じて、受け取ったデータのデシリアライズ処理、およびバリデーションを行う。さらに、クエリコントローラ３２１は、ウェブサーバ３１２によって分析されたクエリに従い、データの検索または書き込み要求をデータマネージャ３２２へと送る。
【００５１】
（２）データマネージャ３２２（またはデータ管理部２０１）は、クエリコントローラ３２１（またはデータ管理部２０１）から送られた、データの検索（または書き込み要求）に応じて、データ記録部３２３（またはデータ記録部２０２）に構築されたデータベースの検索（または書き込み）を行う。そして、データマネージャ３２２は、クエリコントローラ３２１に検索結果（または書き込み結果）を返す。
【００５２】
（３）クエリコントローラ３２１（またはデータ管理部２０１）は、データマネージャ３２２（またはデータ管理部２０１）から検索（または書き込み結果）を受け取り、データのシリアライズ処理を行い、ウェブサーバ３１２（またはデータ処理部１０２）へと返す。
【００５３】
ウェブサーバ３１２（またはデータ処理部１０２）は、アプリケーション３１１およびクエリコントローラ３２１それぞれとの間でセッションを確立し、ステップＳ５０３において返された検索結果を受け取り（ステップＳ５０４）、ステップＳ５０１において発行されたデータ処理要求に後処理が含まれているか否かを判定する（ステップＳ５０５）。データ処理要求に後処理が含まれていれば処理はステップＳ５０６へと進み、そうでなければ処理はステップＳ５０７へと進む。
【００５４】
ステップＳ５０６では、ウェブサーバ３１２（またはデータ処理部１０２）は、検索結果に対して後処理を行い、処理はステップＳ５０７へと進む。ステップＳ５０７では、ウェブサーバ３１２（またはデータ処理部１０２）は、検索結果（ステップＳ５０６を経由しなかった場合）または後処理結果（ステップＳ５０６を経由した場合）を、アプリケーション３１１（または、アプリケーション実行部１０１）へ返す。
【００５５】
次に、図６を用いて、本実施形態に係るデータ処理装置１００のハードウェア構成の一例について説明する。図６は、本実施形態に係るデータ処理装置１００のハードウェア構成の一例を模式的に例示する。
【００５６】
図６に例示するように、本実施形態に係るデータ処理装置１００は、制御部６０１と、記憶部６０２と、通信インタフェース６０３と、入力装置６０４と、出力装置６０５と、外部インタフェース６０６と、ドライブ６０７とが電気的に接続されたコンピュータであってよい。なお、図６では、通信インタフェース及び外部インタフェースをそれぞれ、「通信Ｉ／Ｆ」及び「外部Ｉ／Ｆ」と記載している。
【００５７】
制御部６０１は、ＣＰＵ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭなどを含む。ＣＰＵは、記憶部６０２に格納されたプログラムをＲＡＭに展開する。そして、ＣＰＵがこのプログラムを解釈および実行することで、制御部６０１は、前述の様々な情報処理を実行可能となる。
【００５８】
記憶部６０２は、いわゆる補助記憶装置であり、例えば、内蔵または外付けの、ＨＤＤ、ＳＳＤ、若しくはフラッシュメモリなどの半導体メモリであり得る。記憶部６０２は、制御部６０１で実行されるプログラム（例えば、データ処理部１０２によって行われる各種処理を制御部６０１に実行させるためのプログラム）、制御部６０１によって使用されるデータなどを記憶する。
【００５９】
通信インタフェース６０３は、各種の無線通信または有線通信モジュールであって、ネットワークを介して無線通信または有線通信を行うためのインタフェースであってよい。入力装置６０４は、例えばタッチスクリーン、キーボード、マウスなどのユーザ入力を受け付けるための装置を含んでもよい。
【００６０】
出力装置６０５は、例えば、ディスプレイ、スピーカなどの出力を行うための装置である。外部インタフェース６０６は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、メモリカードスロットなどであり、外部装置と接続するためのインタフェースである。
【００６１】
ドライブ６０７は、例えば、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）ドライブ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）ドライブ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）ドライブなどである。ドライブ６０７は、記憶媒体６０８に記憶されたプログラムおよび／またはデータを読み込み、制御部６０１に渡す。なお、前述の記憶部６０２に記憶され得ると説明したプログラムおよびデータの一部または全部がドライブ６０７によって、記憶媒体６０８から読み込まれてもよい。
【００６２】
記憶媒体６０８は、コンピュータを含む機械が読み取り可能な形式で、プログラムおよび／またはデータを、電気的、磁気的、光学的、機械的または化学的作用によって蓄積する媒体である。記憶媒体６０８は、例えば、ＣＤ、ＤＶＤ、ＢＤなどの着脱可能なディスク媒体であるが、これに限られず、フラッシュメモリまたはその他の半導体メモリであり得る。
【００６３】
なお、データ処理装置１００の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部６０１は、複数のプロセッサを含んでもよい。データ処理装置１００は、提供されるサービス専用に設計された情報処理装置であってもよいし、汎用の情報処理装置、例えば、スマートフォン、タブレットＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ラップトップＰＣ、デスクトップＰＣなどであってもよい。また、データ処理装置１００は、複数台の情報処理装置などで構成されてもよい。
【００６４】
以上説明したように、第１の実施形態に係るデータ処理装置は、データ処理を実行するハードウェアリソース（例えば、仮想化単位）を含んでおり、従来のデータベースにおいて検索に付随して行われていた前処理（例えば、クエリ変換、およびパース処理）、後処理（例えば、検索結果を用いた統計処理（例えば、集約、フィルタ、平均値計算またはソート）、および取得したデータのキャッシュ処理）、ならびにデータベース管理装置との間でセッションを確立・維持する処理の大部分を、当該ハードウェアリソースによって実行する。従って、このデータ処理装置によれば、データベースにおける前処理および後処理、ならびにセッションを管理する処理の大部分の負荷が取り除かれるので、複数のアプリケーションが同時期にデータ処理要求を発行したとしても、個々のアプリケーションがデータベースのハードウェアリソースを占有する時間は短くて済む。すなわち、複数のアプリケーション間でのデータベース利用の公平性を向上させることができる。なお、前処理および後処理の負荷はデータの数と共に増加するので、係る負荷の除去効果は、個々のサイズは小さいが多数のデータを取り扱うＩｏＴにおいて特に大きい。
【００６５】
なお、上記説明では、前処理および後処理の両方を、各アプリケーションによって発行されたデータ処理要求を取り扱うデータ処理装置または仮想化単位において分散的に行うことで、データベース利用の公平性を向上させている。しかしながら、前処理と後処理とのうち一部をこのデータ処理装置または仮想化単位において分散的に行い、残部をデータベースにおいて集中的に行ったとしても、上記効果をある程度得ることは可能である。
【００６６】
上述の実施形態は、本発明の概念の理解を助けるための具体例を示しているに過ぎず、本発明の範囲を限定することを意図されていない。実施形態は、本発明の要旨を逸脱しない範囲で、様々な構成要素の付加、削除または転換をすることができる。
【００６７】
上記各実施形態において説明された種々の機能部は、回路を用いることで実現されてもよい。回路は、特定の機能を実現する専用回路であってもよいし、プロセッサのような汎用回路であってもよい。
【００６８】
上記各実施形態の処理の少なくとも一部は、汎用のコンピュータを基本ハードウェアとして用いることでも実現可能である。上記処理を実現するプログラムは、コンピュータで読み取り可能な記録媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記録媒体に記憶される。記録媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリなどである。記録媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上記処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ（サーバ）上に格納し、ネットワーク経由でコンピュータ（クライアント）にダウンロードさせてもよい。
【図１】
2018074479.tif 000003
【図２】
2018074479.tif 000004
【図３】
2018074479.tif 000005
【図４】
2018074479.tif 000006
【図５】
2018074479.tif 000007
【図６】
2018074479.tif 000008
【国際調査報告】
2018074479.tif 000009
2018074479.tif 000010
2018074479.tif 000011
2018074479.tif 000012