JP5948399B2 - 情報記録装置、方法およびプログラム - Google Patents
情報記録装置、方法およびプログラム Download PDFInfo
- Publication number
- JP5948399B2 JP5948399B2 JP2014245933A JP2014245933A JP5948399B2 JP 5948399 B2 JP5948399 B2 JP 5948399B2 JP 2014245933 A JP2014245933 A JP 2014245933A JP 2014245933 A JP2014245933 A JP 2014245933A JP 5948399 B2 JP5948399 B2 JP 5948399B2
- Authority
- JP
- Japan
- Prior art keywords
- search
- search expression
- expression
- data value
- repository
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
この発明は、例えばセンサ情報を記録するために使用される情報記録装置、方法およびプログラムに関する。
従来、センサの計測データのような情報すなわちセンサ情報を扱う情報管理システムとして、uTupleSpace(非特許文献1および特許文献1)が知られている。uTupleSpaceの特徴の一つに、センサ情報をuTuple形式という、「キー=値」の並びにより自由に表現できる点がある。データ値だけでなく検索式もuTuple形式で表現することができ、両者の間で検索が成立するか否かを判定するマッチング規則についても上記文献にて開示されている。なお、uTupleSpaceの用語では、データ値を示すuTupleをEvent Actual(EA)と呼び、また検索式を表すuTupleをEvent Formal (EF)と呼ぶ。
また、uTupleSpaceの他の特徴として、通常のデータベース管理システムのようなデータ値蓄積型の検索処理だけでなく、検索式待ち受け型の検索処理もサポートし、これらを区別なく扱える点がある。データ値蓄積型の検索処理は、計測されたデータ値を先に蓄積しておき、後から検索式を投入することで、マッチするデータ値を検索して検索式の投入元に返却する。一方、検索式待ち受け型の検索処理は、検索式を先に蓄積しておき、後からデータ値を登録することで、マッチするデータ値を検索式の蓄積元に即時に返却する。
この「区別なく扱える」という趣旨は、データ値蓄積型の検索処理と検索式待ち受け型の検索処理の両方を、単一のApplication Programming Interface(API)で実行できるということだけにとどまらない。それに加え、一回の当該単一のAPIの実行により、データ値蓄積型の検索処理と検索式待ち受け型の検索処理とを併せて実行できるという特徴的機能も含んでいる。例えば、検索式の中に「時刻が10秒前のデータ値から10秒後のデータ値を対象とする」という意味の情報を含めて、当該APIを呼んだとする。この場合、時刻が10秒前から0秒前、すなわち現在までの蓄積済みデータを対象としてデータ値蓄積型の検索処理を行い、さらに引き続いて時刻が0秒後すなわち現在から10秒後までのデータを対象に10秒間の検索式待ち受け状態に入り、現在から10秒後までに新たに登録されたデータ値について、マッチしたデータ値をAPI呼び出し元に返却する動作を行う。
このように、両者の動きを単一のAPIで区別なく扱えることにより、センサ情報を扱う情報管理システムでは実用上の利点がある。例えば、これら検索動作を行っているのと同時に、新たなセンサ値が次々と計測されデータベースに登録されている状況を想定する。もし、データ値蓄積型の検索処理と検索式待ち受け型の検索処理とが区別なく扱えなかった場合には、アプリケーションはこれらの処理を順次呼び出す必要が生じるため、ちょうどこれらの処理の隙間にあたる時間に登録された新たな計測結果のデータ値は、アプリケーションが取りこぼしてしまうという問題が発生する。しかし、前記従来の技術によれば、両者が区別なく扱えるため、上記示したようなデータの取りこぼし問題を回避できるという利点が得られる。
また特許文献2には、上記データ値蓄積型の検索処理と検索式待ち受け型の検索処理とを区別なく扱うための効率的な装置の構成が記載されている。特許文献2に記載された技術によれば、装置はデータ値を蓄積するデータ値用木構造と、検索式を蓄積する検索式用木構造を有する。これらの木構造は、木構造アルゴリズムを用いて索引を作成し、大量データを効率的に蓄積し検索することが可能である。これらの木構造を用いて、当該装置は、データ値の蓄積の際にデータ値用木構造に書き込みかつ検索式用木構造へ検索を行うとともに、検索式の蓄積の際に検索式用木構造に書き込みかつデータ値用木構造へ検索を行う。このようにすることで、データ値蓄積型の検索処理と検索式待ち受け型の検索処理とを区別なく扱うという特徴的機能を効率的に実現できる。
さらに特許文献3には、スマートフォンに代表される小型の携帯型装置で用いるため、比較的小さな計算量および使用メモリによって、センサ情報などのデータをチャンクを生成しつつ順次蓄積し、検索を行う情報記録方法および情報記録装置が記載されている。特許文献1および2に記載された技術は、主にネットワークサーバやクラウドで用い、大量のデータ値を蓄積し検索することを主眼とした技術であった。一方、特許文献3では、比較的少量のデータ値を対象とし、木構造を用いずデータ値を蓄積し、効率的に扱えるようにする手法が示されている。特に、マルチスレッド動作の際に、他のスレッドの動作を阻害することなく動作できる手法となっていることが特徴であり、計測情報が次々と到着するセンサ情報を扱う情報管理システムにおいては重要なポイントといえる。
また特許文献3では、アプリケーションに検索結果を返却する際に、アプリケーションから指定されたコールバック関数に対して複数回に分けて呼び出しを行うことにより、使用メモリを抑えつつ検索結果のデータ値を受け渡す方法が示されている。小型の携帯型装置では使用メモリの低減は重要であるため、アプリケーションから使いやすい形でコールバック関数を活用できるようにすることは重要なポイントといえる。
"Design and Implementation of New uTupleSpace Enabling Storage and Retrieval of Large Amount of Schema-less Sensor Data"、Takayuki Nakamura, Keiichiro Kashiwagi, Yutaka Arakawa, Motonori Nakamura、Second International Workshop on Enablers for Ubiquitous and Context-Aware Services on Sensor Networks (EUCASS 2011)、2011年7月
ところが特許文献3には、主にデータ値蓄積型の検索処理については詳細に記載されているが、検索式待ち受け型の検索処理や、この検索式待ち受け型の検索処理とデータ値蓄積型の検索処理を区別なく扱う手法については特段言及されていなかった。
また、特許文献3に記載された手法を基にデータ値蓄積型の検索処理を実現し、さらに、特許文献2に記載された手法を参考にして検索式待ち受け型の検索処理を実現しようとした場合、以下に述べるいくつかの課題を解決する必要があった。
解決すべき課題の一つ目は、アプリケーションから使いやすい形で、検索結果をコールバック関数で返却できるようにすることである。使いやすさを担保するためには、呼び出しの逐次性と、検索終了コールバックの確実性が重要となる。
呼び出しの逐次性とは、検索結果を複数回に分けてアプリケーションに返却する際に、アプリケーションが提示したコールバック関数を呼び出し、その関数からリターンするまで、次のコールバック関数が呼ばれないことを保証することである。この保証すべきコールバックには、検索結果のコールバックと、次に示す検索終了コールバックを含む。これにより、システム全体としてマルチスレッド動作している場合であっても、アプリケーションからは同時に1スレッドのみがコールバックで動作することになる。このため、単一スレッドでの呼び出しが行われているように扱うことができ、アプリケーションの記述を容易化することができる。従って、この呼び出しの逐次性を確保することが、解決すべき課題の一つ目のポイントであった。
また、検索終了コールバックの確実性とは、検索結果を複数回に分けてアプリケーションに返却した後、検索が完了したことをコールバックで1回だけアプリケーションに通知する動作を保証することである。これが0回あるいは2回以上であってはならず、また検索終了コールバックの後に検索結果のコールバックが行われてはならない。これにより、アプリケーションはコールバックされた検索結果を中間集計するために一時的なデータ構造を確保し、かつ当該データ構造を解放する契機として検索終了コールバックを用いることができるため、メモリリークやメモリ二重解放や浮きメモリ参照等のバグの回避が容易になる。従って、この検索終了コールバックの確実性を確保することも、解決すべき課題の一つ目のポイントであった。
解決すべき課題の二つ目は、検索式の削除操作を提供することである。検索式待ち受け型の検索処理を行っている際に、例えば検索の必要性がなくなった等の理由により、検索式を削除する操作をアプリケーションから行いたいという要望がある。その際、データ値蓄積型の検索処理と検索式待ち受け型の検索処理とを区別なく扱うには、データ値蓄積型の検索処理を行っている最中であっても、検索式の削除操作を行えるようにする必要がある。また、削除された検索式についても、例えばアプリケーションに対してデータ構造を解放する契機を与えるためには、検索終了コールバックを行う必要があり、その際に検索終了コールバックの確実性を確保する必要がある。
この発明は上記事情に着目してなされたもので、その目的とするところは、比較的少ない計算量およびメモリ容量により、データに対してデータ値蓄積型の検索処理と検索式待ち受け型の検索処理を区別なく扱えるようにすると共に、コールバックを逐次に行い検索終了コールバックを確実に行えるようにし、さらに検索式の削除操作を行えるようにする情報記録装置、方法およびプログラムを提供することにある。
この発明は上述した課題を解決するためになされたもので、以下にその概要を述べる。
すなわち、この発明の一様態による情報記録装置は、特許文献2と類似する手法を用いて、データ値を保持するデータ値用リポジトリと検索式を保持する検索式用リポジトリとを使用し、データ値の蓄積の際にデータ値用リポジトリに書き込みかつ検索式用リポジトリへ検索を行うと共に、検索式の蓄積の際に検索式用リポジトリに書き込みかつデータ値用リポジトリへ検索を行うことで、データ値蓄積型の検索処理と検索式待ち受け型の検索処理とを区別なく扱うという基本的手法を採用する。
すなわち、この発明の一様態による情報記録装置は、特許文献2と類似する手法を用いて、データ値を保持するデータ値用リポジトリと検索式を保持する検索式用リポジトリとを使用し、データ値の蓄積の際にデータ値用リポジトリに書き込みかつ検索式用リポジトリへ検索を行うと共に、検索式の蓄積の際に検索式用リポジトリに書き込みかつデータ値用リポジトリへ検索を行うことで、データ値蓄積型の検索処理と検索式待ち受け型の検索処理とを区別なく扱うという基本的手法を採用する。
さらに、この発明の一様態による情報記録装置は、データ値蓄積型の検索処理の処理中リスト情報を有し、データ値の蓄積の際および検索式の削除の際に、排他制御を行いつつ当該リストの操作を行うことで、データ値蓄積型の検索処理と検索式待ち受け型の検索処理とを区別なく扱いつつ検索式の削除を可能にする。
また、この発明の一様態による情報記録装置は、検索結果を通知し、検索式の時間経過に応じて検索終了を通知し、検索式の削除に応じて検索終了を通知し、さらに0回以上の検索結果の通知の後に1回の検索終了の通知を実行する制御手段を有することで、検索式の時間経過に応じて起動された検索終了あるいは検索式の削除に応じて起動された検索終了が、検索結果の通知と時間的に重ならずただ1回だけ行われることを保証可能にする。
さらに、この発明の一様態による情報記録装置は、データ値ならびに検索式としてuTuple形式を用いることによって、待ち受け検索の処理を高速にでき、スマートフォン等への適用を想定して比較的小さな計算量および使用メモリで動作することを可能にする。
より具体的には、以下のような態様とする。
すなわち、第1の態様は、データ値群を記録する情報記録装置において、データ値を保持するデータ値用リポジトリ、検索式を保持する検索式用リポジトリおよび蓄積検索処理中リスト情報を記憶する記憶部と、前記データ値を登録するためのデータ値登録処理手段、前記検索式を登録するための検索式登録処理手段、および前記検索式を削除するための検索式削除処理手段を備える処理部とを具備する。
そして、前記データ値登録処理手段により、前記データ値用リポジトリにデータ値を書き込む処理と、前記データ値をもとに合致する検索式を前記検索式用リポジトリから検索する検索式待ち受け型検索処理と、前記検索式待ち受け型検索処理による検索結果を通知する処理を実行する。
また、前記検索式登録処理手段により、前記蓄積検索処理中リスト情報に、処理中の検索式を追加する処理と、前記検索式をもとに前記データ値用リポジトリからデータ値の集合を検索するデータ値蓄積型検索処理と、前記検索式群に関し排他制御を行う処理と、前記排他制御が行われている状態で、前記蓄積検索処理中リスト情報から該当する検索式を削除すると共に、前記データ値蓄積型検索処理から前記検索式待ち受け型検索処理への移行の可否を判定する処理と、前記移行が可能と判定された場合に、前記検索式用リポジトリに前記検索式を書き込む処理と、前記データ値蓄積型検索処理による検索結果を通知する処理を実行する。
さらに、前記検索式削除処理手段により、前記検索式群に関し排他制御を行う処理と、前記排他制御が行われている状態で、前記蓄積検索処理中リスト情報から削除対象の検索式を削除する処理と、前記検索式用リポジトリから削除対象の検索式を検索して、当該検索式を削除する処理と、前記削除対象とした検索式の削除に応じて検索が終了したことを通知する処理を実行するようにしたものである。
すなわち、第1の態様は、データ値群を記録する情報記録装置において、データ値を保持するデータ値用リポジトリ、検索式を保持する検索式用リポジトリおよび蓄積検索処理中リスト情報を記憶する記憶部と、前記データ値を登録するためのデータ値登録処理手段、前記検索式を登録するための検索式登録処理手段、および前記検索式を削除するための検索式削除処理手段を備える処理部とを具備する。
そして、前記データ値登録処理手段により、前記データ値用リポジトリにデータ値を書き込む処理と、前記データ値をもとに合致する検索式を前記検索式用リポジトリから検索する検索式待ち受け型検索処理と、前記検索式待ち受け型検索処理による検索結果を通知する処理を実行する。
また、前記検索式登録処理手段により、前記蓄積検索処理中リスト情報に、処理中の検索式を追加する処理と、前記検索式をもとに前記データ値用リポジトリからデータ値の集合を検索するデータ値蓄積型検索処理と、前記検索式群に関し排他制御を行う処理と、前記排他制御が行われている状態で、前記蓄積検索処理中リスト情報から該当する検索式を削除すると共に、前記データ値蓄積型検索処理から前記検索式待ち受け型検索処理への移行の可否を判定する処理と、前記移行が可能と判定された場合に、前記検索式用リポジトリに前記検索式を書き込む処理と、前記データ値蓄積型検索処理による検索結果を通知する処理を実行する。
さらに、前記検索式削除処理手段により、前記検索式群に関し排他制御を行う処理と、前記排他制御が行われている状態で、前記蓄積検索処理中リスト情報から削除対象の検索式を削除する処理と、前記検索式用リポジトリから削除対象の検索式を検索して、当該検索式を削除する処理と、前記削除対象とした検索式の削除に応じて検索が終了したことを通知する処理を実行するようにしたものである。
この発明の第2の態様は、データ値群を記録する情報記録装置において、検索式を保持する検索式用リポジトリを記憶する記憶部と、データ値を登録するためのデータ値登録処理手段、検索式を登録するための検索式登録処理手段、および時間経過に応じて処理を起動する計時手段を有する処理部とを具備する。
そして、前記データ値登録処理手段により、データ値をもとに合致する検索式を前記検索式用リポジトリから検索する検索式待ち受け型検索処理と、前記検索式待ち受け型検索処理による検索式の検索結果を通知する処理を実行する。
また、前記検索式登録処理手段により、前記検索式用リポジトリに検索式を書き込む処理を実行する。
さらに、前記計時手段により、前記検索式用リポジトリから検索終了時刻が経過した検索式を検索して当該検索式を削除する処理と、前記検索終了時刻が経過した検索式に対する検索終了を通知する第1の検索終了通知処理とを実行する。
また、前記第1の検索終了通知処理では、0回以上の検索結果の通知の後に、1回の前記検索式に対する検索終了の通知を実行するようにしたものである。
そして、前記データ値登録処理手段により、データ値をもとに合致する検索式を前記検索式用リポジトリから検索する検索式待ち受け型検索処理と、前記検索式待ち受け型検索処理による検索式の検索結果を通知する処理を実行する。
また、前記検索式登録処理手段により、前記検索式用リポジトリに検索式を書き込む処理を実行する。
さらに、前記計時手段により、前記検索式用リポジトリから検索終了時刻が経過した検索式を検索して当該検索式を削除する処理と、前記検索終了時刻が経過した検索式に対する検索終了を通知する第1の検索終了通知処理とを実行する。
また、前記第1の検索終了通知処理では、0回以上の検索結果の通知の後に、1回の前記検索式に対する検索終了の通知を実行するようにしたものである。
この発明の第3の態様は、前記記憶部に、データ値を保持するデータ値用リポジトリをさらに設け、前記処理部には、検索式を削除する検索式削除処理手段をさらに設ける。そして、前記データ値登録処理手段により、前記データ値用リポジトリにデータ値を書き込む処理をさらに実行し、前記検索式登録処理手段により、前記検索式をもとに前記データ値用リポジトリからデータ値の集合を検索するデータ値蓄積型検索処理を実行する処理と、前記データ値蓄積型検索処理による検索結果を通知する処理をさらに実行し、前記検索式削除処理手段により、前記検索式用リポジトリから削除対象に合致する検索式を検索して当該検索式を削除する処理と、前記削除対象とした検索式の削除に応じて検索が終了したことを通知する第2の検索終了通知処理を実行するようにしたものである。
この発明の第4の態様は、前記第1及び第2の検索終了通知手段の少なくとも一方において、検索結果の通知中の処理の有無を保持する処理と、検索終了の通知済みの有無を保持する処理と、前記保持されている検索結果の通知中の処理の有無と前記保持されている検索終了の通知済みの有無に応じて通知中の処理の完了を待ち合わせる処理を実行するようにしたものである。
この発明の第5の態様は、前記情報記録装置が取り扱うデータ値および検索式として、キーと値との組あるいはキーと値範囲との組の並びを含むようにしたものである。
この発明の各態様によれば、比較的小さな計算量および使用メモリによって、データ値蓄積型の検索処理と検索式待ち受け型の検索処理を区別なく扱うことができる。また、データ値蓄積型の検索処理と検索式待ち受け型の検索処理とを区別なく扱いつつ検索式の削除操作を行うことができる。さらに、検索式の時間経過あるいは検索式の削除に応じて起動された検索終了が、検索結果の通知と時間的に重ならずただ1回だけ行われることを保証することができる。
すなわちこの発明によれば、比較的少ない計算量およびメモリ容量により、データに対してデータ値蓄積型の検索処理と検索式待ち受け型の検索処理を区別なく扱うことができ、かつコールバックを逐次に行い検索終了コールバックを確実に行うことができ、さらに検索式の削除操作を行うことができる情報記録装置、方法およびプログラムを提供することができる。
以下、図面を参照してこの発明に係わる実施形態を説明する。
[一実施形態]
(構成)
図1は、この発明の一実施形態に係る情報記録装置の機能構成を示すブロック図である。
情報記録装置は100は、例えばスマートフォンやタブレット型端末等の携帯端末からなり、本実施形態に係るハードウェアとして、図示しないプロセッサ、メモリ、通信や入出力のための各種インタフェースおよびタッチパネル/ディスプレス105に加え、温度センサ103と、加速度センサ104を備えている。また情報記録装置は、本実施形態に係るソフトウェアとして、ライブラリ101と、アプリケーション102を備えている。ライブラリ101およびアプリケーション102は、いずれも上記メモリに格納されたプログラムを上記プロセッサに実行させることにより動作する。
[一実施形態]
(構成)
図1は、この発明の一実施形態に係る情報記録装置の機能構成を示すブロック図である。
情報記録装置は100は、例えばスマートフォンやタブレット型端末等の携帯端末からなり、本実施形態に係るハードウェアとして、図示しないプロセッサ、メモリ、通信や入出力のための各種インタフェースおよびタッチパネル/ディスプレス105に加え、温度センサ103と、加速度センサ104を備えている。また情報記録装置は、本実施形態に係るソフトウェアとして、ライブラリ101と、アプリケーション102を備えている。ライブラリ101およびアプリケーション102は、いずれも上記メモリに格納されたプログラムを上記プロセッサに実行させることにより動作する。
ライブラリ101は、EA登録部121と、EF登録部122と、EF削除部123と、計時部124と、EA用リポジトリ131と、EF用リポジトリ132と、蓄積検索処理中リスト133とを有する。さらにライブラリ101は、上記EF用リポジトリ132および蓄積検索処理中リスト133に関するマルチスレッド動作を保護するためにEF用ロック134を有している。上記EF削除部123は、待ち受け検索中断処理リスト135を持ち、また計時部124も待ち受け検索中断処理リスト136を持っている。
温度センサ103および加速度センサ104は、それぞれ温度の計測データおよび3軸加速度の計測データを出力するもので、大分類を“smphone”と呼称し、小分類をそれぞれ“temperature”および“accel”と呼称する。
上記情報記録装置100は、例えば以下のように構築される。すなわち、先ずライブラリ101のプログラムは予め作成しておく。次に、アプリケーション102のプログラムを作成し、上記作成したライブラリ101のプログラムと共にコンパイルして、スマートフォン用の実行ファイルを生成する。そして、当該実行ファイルを、記録媒体あるいは通信回線を通じてスマートフォン用アプリとしてインストールする。この構築手法は、スマートフォン用のアプリケーション開発において一般的に行われているものである。
ちなみに、データベースの管理システムは、通常、サーバを別途準備するなどの大規模な構成とすることが多い。しかし、スマートフォン等携帯端末への適用を想定し、比較的少ない計算量およびメモリ容量で動作するデータベースの管理システムとしては、本実施形態のような構成を採用することが適切である。
図2はEA用リポジトリ131の内容の一例を示すものである。EA用リポジトリ131は、EA、つまりデータ値の集合を保持する。本実施形態では、データ値はuTuple形式で表記する。すなわち、それぞれのデータ値は「キー=値」の任意個数の並びにより構成されるデータ形式によって記述することとする。ここでは、行201〜行203からなる3個のデータ値が例示されている。例えば、行201のデータは、日時(date)が“2014年10月01日02時36分18秒”で、かつ大分類(subject)が“smphone”、小分類(type)が“temperature”、観測値(value)が“3.7(度)”であることを示す一つの観測データ値を表している。なお、簡単のため、以下では時刻表記に“2014-10-01 02:36:18”のような記載も用いることとする。
また同様に、例えば行202のデータは、日時が“2014-10-01 02:37:10”、大分類が“smphone”、小分類が“accel”、観測値(x, y, z)がそれぞれ(0.52, 0.23, 9.78)であることを示す一つの観測データ値を表している。
図3はEF用リポジトリ132の内容の一例を示す。EF用リポジトリ132は、EF、つまり検索式の集合を保持する。本実施形態では、検索式はuTuple形式で表記する。ここに保持されているEFは、データ値蓄積型の検索処理が完了し、引き続いて検索式待ち受け型の検索処理に移行した結果として、現在待ち受け状態となっている検索式である。ここでは、行211〜行213からなる3つの検索式が待ち受け状態となっている様子を例示している。カラム215は待ち受け状態となっている検索式の内容を表し、カラム216は当該検索式に対応するコールバックラッパーのオブジェクトの中身を表す。
コールバックラッパーとは、0回以上の検索結果の通知の後に1回の検索終了の通知を実行する制御を行うためのオブジェクトであり、以下に詳細な実施方法を例示する。すなわち、コールバックラッパーは4つの値を保持している。これらの値は、左から順にコールバック関数、検索結果の通知中の処理を数えるためのカウンタ、検索終了通知済みフラグ、通知中の処理の完了を待ち合わせるための状態変数を表す。なお、状態変数とは一般的にマルチスレッドプログラミングにおいて状態変数あるいは condition variable として知られる機能であり、例えばC++言語においてはboostライブラリのconditionクラス、あるいはpthreadライブラリのcondition_variable機能を用いて容易に実現できる。
状態変数によって提供される基本的機能を用いれば、複数のスレッドあるいはタスクが当該状態変数を用いて待ち合わせを行うことができ、さらに別のスレッドあるいはタスクから、当該待ち合わせているスレッドあるいはタスクの中の1つを起動して再度走行状態とすることができる。
例えば、行211の検索式は、待ち受け状態になっている検索式が時刻(date)の範囲が“2014-10-01 00:00:00”から“2014-10-01 02:40:00”に含まれ、かつ大分類(subject)が“smphone”、小分類(type)が“temperature”、valueが“−10.0から10.0”という条件を全て満たすデータを検索するための検索式である。またこの検索式は、検索結果をアプリケーション102に返却する際に関数func1を呼び出し、現在func1の呼び出し中の数は“0”であり、現在func1に対して検索終了はまだ呼び出されておらず、もし当該呼び出しに対して待ち合わせを行う場合には状態変数cv1を用いるという内容も表している。さらに、行211に示される検索式による待ち受け中の検索は、時刻(date)の終値に“2014-10-01 02:40:00”と記載されているので、この検索は当該時刻になった時点で検索終了となる趣旨を表している。
なお検索式には、例えば行212に示すように値の範囲として「+∞」と記述することができる。さらに、例えば行212にキー「x」やキー「y」が記載されていないように、検索条件の絞り込みに用いるキーのみを記述することもできる。
図4は、蓄積検索処理中リスト133の中身を示すものである。蓄積検索処理中リスト133は、EF、つまり検索式の集合を保持する。ここに保持されているEFは、データ値蓄積型の検索処理が完了しておらず現在処理中となっている検索式である。従って、ここに保持されているEFは、以下に述べる詳細手順に従って本実施形態に係る情報記録装置100が動作することにより、現在処理中であるデータ値蓄積型の検索処理が完了した後は、引き続いて検索式待ち受け型の検索処理に移行し、EF用リポジトリ132に登録されることが予期されている。
この例では、蓄積検索処理中リスト133の中身は行221で示される検索式が1つだけ登録されている状態である。もし複数のデータ値蓄積型の検索処理が同時に処理中となっている場合には、本リストも複数の検索式が登録されている状態になりうる。
(動作)
次に、以上のように構成された装置の動作を説明する。
(1)EA登録処理
図5はEA登録処理の手順と処理内容を示すフローチャートである。
アプリケーション102がライブラリ101のEA登録関数を呼び出すと、ライブラリ101のEA登録部121は以下のようにEA登録処理を実行する。なお、上記呼び出し際にアプリケーション102は、データ値を引数としてEA登録部121に渡す。
次に、以上のように構成された装置の動作を説明する。
(1)EA登録処理
図5はEA登録処理の手順と処理内容を示すフローチャートである。
アプリケーション102がライブラリ101のEA登録関数を呼び出すと、ライブラリ101のEA登録部121は以下のようにEA登録処理を実行する。なお、上記呼び出し際にアプリケーション102は、データ値を引数としてEA登録部121に渡す。
すなわち、EA登録関数が呼び出されるとEA登録部102は、先ずステップS301において当該データ値をEA用リポジトリ131に追加する。次にEA登録部121は、ステップS302によりEF用ロック134を確保したのち、ステップS303により当該データ値によりEF用リポジトリ132を検索し、ステップS304でEF用ロック134を解放する。ここで、「データ値によりEF用リポジトリ132を検索する」とは、データ値とEF用リポジトリ132が保持する各々の検索式とのマッチングを行い、合致する検索式の集合を得ることを意味する。この得られた検索式の集合は、上記データ値の登録によってヒットした待ち受け中の検索式に相当する。
本実施形態では、データ値および検索式はいずれもuTuple形式で表記するが、これらuTuple間のマッチング規則については、特許文献1あるいは特許文献2に詳しく記載されている。具体的には、検索式に含まれる各々のキーに対して、当該キーがデータ値にも含まれており、かつ当該キーに対応する検索式における値範囲と当該キーに対応するデータ値における値(または値範囲)との積集合が空集合ではないという判定基準が、検索式に含まれる全てのキーに対して成立するとき、データ値と検索式とが合致すると判定する。
このように、データ値ならびに検索式としてuTuple形式を用いることによって、データ値および検索式のマッチング処理を高速に行うことができ、これにより待ち受け検索の処理を軽量化できるという利点が得られる。このため、スマートフォン等のように、比較的少ない計算量およびメモリ容量で動作するデータベースの管理システムに適用すると、特に顕著な相乗効果を得ることができる。
上記ステップS303では、検索式と対応するコールバックラッパーとの組の並びが得られる。このため、EA登録部121は、ステップS305により各々のコールバックラッパーのカウンタを1増やした後、ステップS306により各々のコールバックラッパーを用いて該データ値を待ち受け検索における検索結果として返却する。なお、ステップS306における検束結果の返却処理は、後に詳しく説明する。
最後にEA登録部121は、ライブラリの呼び出し元にリターンし、一連の処理を完了する。
最後にEA登録部121は、ライブラリの呼び出し元にリターンし、一連の処理を完了する。
(2)EF登録処理
図6はEF登録処理の手順と処理内容を示すフローチャートである。
アプリケーション102がライブラリ101のEF登録関数を呼び出すと、ライブラリ101のEF登録部122は以下のようにEF登録処理を開始する。なお、呼び出しに際し、アプリケーション101は検索式とコールバック関数を引数としてEF登録部122に渡す。コールバック関数は、例えばC++言語であれば関数ポインタとして実現できる。
図6はEF登録処理の手順と処理内容を示すフローチャートである。
アプリケーション102がライブラリ101のEF登録関数を呼び出すと、ライブラリ101のEF登録部122は以下のようにEF登録処理を開始する。なお、呼び出しに際し、アプリケーション101は検索式とコールバック関数を引数としてEF登録部122に渡す。コールバック関数は、例えばC++言語であれば関数ポインタとして実現できる。
すなわち、コールバック関数が呼び出されるとEF登録部122は、先ずステップS351において、上記アプリケーション101から渡された検索式を蓄積検索処理中リスト133に登録する。次にステップS352により、上記検索式によりEA用リポジトリ131を検索する。この検索により得られたデータ値の集合は、データ値蓄積型の検索処理における検索結果に相当する。
次にEF登録部122は、ステップS353によりEF用ロック134を確保する。続いてEF登録部122は、ステップS354により、蓄積検索処理中リスト133に対して、上記ステップS351において登録した検索式を削除する。ただし、このとき、既に該検索式が蓄積検索処理中リスト133に存在しなければ、該検索式の削除が既に要求されていたと判断する。そしてEF登録部122は、該検索式の削除が既に要求されていた場合には、ステップS355によりデータ値蓄積型の検索処理から検索式待ち受け型の検索処理への移行が阻害されているか否かを判定する。そして、この判定の結果、移行が阻害されていれば、ステップS356によりEF用ロック134を解放した後、ステップS357により上記コールバック関数に検索終了のコールバックを行う。
一方、データ値蓄積型の検索処理から検索式待ち受け型の検索処理への移行が阻害されていなかったとする。この場合EF登録部122は、ステップS360によりEF用ロック134を解放した後、ステップS361においてコールバックラッパーのオブジェクトを作成する。このときコールバックラッパーには、上記コールバック関数と、値1のカウンタと、値“no”の検索終了通知済みフラグと、新たに確保した状態変数を含める。次にEF登録部122は、ステップS362により上記検索式とコールバックラッパーをEFリポジトリ132に登録する。そして、ステップS363において、当該コールバックラッパーを用いて、上記ステップS352により得られた検索結果を返却する。なお、このステップS363による検索結果の返却手順は、後に詳しく述べる。
最後にEF登録部122は、ライブラリの呼び出し元にリターンし、一連の処理を完了する。
最後にEF登録部122は、ライブラリの呼び出し元にリターンし、一連の処理を完了する。
(3)EF退役処理
図7はEF退役処理の手順と処理内容を示すフローチャートである。
EF退役処理とは、待ち受け中の検索が時刻の終値になったために検索終了となるときの処理を指し示す。計時部124は、EF用リポジトリ132内の各検索式について、時刻の終値になると以下のようにEF退役処理を実行する。例えば、図3に示したEF用リポジトリ132を例にとると、行211で示される待ち受け中の検索は、時刻の終値に“2014-10-01 02:40:00”と記載されているので、計時部124は当該時刻になった時点でEF退役処理を開始する。
図7はEF退役処理の手順と処理内容を示すフローチャートである。
EF退役処理とは、待ち受け中の検索が時刻の終値になったために検索終了となるときの処理を指し示す。計時部124は、EF用リポジトリ132内の各検索式について、時刻の終値になると以下のようにEF退役処理を実行する。例えば、図3に示したEF用リポジトリ132を例にとると、行211で示される待ち受け中の検索は、時刻の終値に“2014-10-01 02:40:00”と記載されているので、計時部124は当該時刻になった時点でEF退役処理を開始する。
すなわち、計時部124は先ずステップS381により、EF用ロック134を確保する。続いて計時部124は、ステップS382において、EF用リポジトリ132から時刻の終値が現在時刻と同値または現在時刻を過ぎているものを検索する。そして、対象となる行をEF用リポジトリ132から削除し、当該行に記載されていたコールバックラッパーを計時部124内の待ち受け検索中断処理リスト136に登録する。登録が終了すると計時部124は、ステップS383により各コールバックラッパーのカウンタの値を“1”増やした後、ステップS384によりEF用ロック134を解放する。
次に計時部124は、ステップS385において、待ち受け検索中断処理リスト136の各々のコールバックラッパーに対して、当該コールバックラッパーを用いて検索終了を返却する。なおステップS385による検索終了の返却処理は、後に詳しく述べる。
最後に計時部124は、ステップS386において待ち受け検索中断処理リスト136の内容を破棄する。特に、その中に含まれるコールバックラッパーも破棄する。そして、EF退役に係る一連の処理を終了する。
(4)EF削除処理
図8はEF削除処理の手順と処理内容を示すフローチャートである。
アプリケーション102がライブラリ101のEF削除関数を呼び出すと、ライブラリ101のEF削除部123は以下のようにEF削除処理を実行する。なお、呼び出しに際しアプリケーション102は、削除条件を表す検索式を引数としてEF削除部123に渡す。
図8はEF削除処理の手順と処理内容を示すフローチャートである。
アプリケーション102がライブラリ101のEF削除関数を呼び出すと、ライブラリ101のEF削除部123は以下のようにEF削除処理を実行する。なお、呼び出しに際しアプリケーション102は、削除条件を表す検索式を引数としてEF削除部123に渡す。
すなわち、EF削除関数が呼び出されるとEF削除部123は、先ずステップS401によりEF用ロック134を確保する。続いてEF削除部123は、ステップS402において、上記削除条件を表す検索式により蓄積検索処理中リスト133を検索し、対象となる行を蓄積検索処理中リスト133から削除する。その際、本実施形態では、上記削除条件を表す検索式をEFと見なし、かつ蓄積検索処理中リスト133中の検索式をEAと見なして、既に示したEAとEFとのマッチング規則を適用することにより、検索が合致するか否かの判定を行うこととする。
次にEF削除部123は、ステップS403において、上記削除条件を表す検索式によりEF用リポジトリ13132を検索し、削除対象となる行をEF用リポジトリ132から削除する。そして、当該行に記載されていたコールバックラッパーをEF削除部123内の待ち受け検索中断処理リスト135に登録する。この登録が終了するとEF削除部123は、ステップS404により、各コールバックラッパーのカウンタの値を1増やす。そして、ステップS405によりEF用ロック134を解放する。
次にEF削除部123は、ステップS406において、待ち受け検索中断処理リスト135の各々のコールバックラッパーに対して、当該コールバックラッパーを用いて検索終了を返却する。なお、この検索終了を返却手順は後に詳しく述べる。
最後にEF削除部123は、ステップS407において、待ち受け検索中断処理リスト135の内容を破棄する。特に、その中に含まれるコールバックラッパーも破棄する。そして、この破棄後にライブラリ101の呼び出し元にリターンし、一連の処理を完了する。
(5)コールバックラッパーを用いた検索結果の返却処理
前記EA登録処理およびEF登録処理における、コールバックラッパーを用いた検索結果の返却処理はサブルーチンにより以下のように行われる。図9はその処理手順と処理内容を示すフローチャートである。
前記EA登録処理およびEF登録処理における、コールバックラッパーを用いた検索結果の返却処理はサブルーチンにより以下のように行われる。図9はその処理手順と処理内容を示すフローチャートである。
すなわち、サブルーチンが呼ばれると、ライブラリ101は返却処理を開始する。先ずステップS451により、当該コールバックラッパーの検索終了通知済みフラグが“検索終了通知済”か“否か”を判定し、まだ通知されていない場合(no)には、ステップS452により当該コールバックラッパーのコールバック関数を呼び出す。なお、コールバックラッパーの検索終了通知済みフラグが“検索終了通知済”(yes)であれば、ステップS452によるコールバック関数の呼び出しは省略する。
次にライブラリ101は、ステップS453において当該コールバックラッパーのカウンタの値を1減じ、カウンタ値が0に達したか否かをステップS454で判定する。そして、この判定の結果、カウンタ値が“0”に達していれば、ステップS455において、当該コールバックラッパーの状態変数の機能を用い、当該状態変数を用いて待ち合わせているタスクを起動させる。これに対しカウンタ値が“0”に達していなければ、ステップS455によるタスクの起動は行わずにサブルーチンの処理を終了する。
(6)コールバックラッパーを用いた検索終了の返却処理
前記EF退役処理およびEF削除処理における、コールバックラッパーを用いた検索終了の返却処理はサブルーチンにより以下のように行われる。図10はその処理手順と処理内容を示すフローチャートである。なお、EF削除処理において行われる検索式の削除に伴う検索終了通知を第1の検索終了通知、EF退役処理において行われる時間経過に応じた検索終了通知を第2の検索終了通知とそれぞれ定義する。
前記EF退役処理およびEF削除処理における、コールバックラッパーを用いた検索終了の返却処理はサブルーチンにより以下のように行われる。図10はその処理手順と処理内容を示すフローチャートである。なお、EF削除処理において行われる検索式の削除に伴う検索終了通知を第1の検索終了通知、EF退役処理において行われる時間経過に応じた検索終了通知を第2の検索終了通知とそれぞれ定義する。
すなわち、サブルーチンが呼ばれると、ライブラリ101は返却処理を開始する。先ずステップS471により当該コールバックラッパーのカウンタの値を“1”減じ、その結果カウンタ値が“0”に達したか否かをステップS472で判定する。この判定の結果、カウンタ値が“0”に達していなければ(noであれば)、ステップS473により、当該コールバックラッパーの状態変数の機能を用い、当該タスクについて当該状態変数を用いて待ち合わせを行う。なお、カウンタ値が“0”に達していれば(yesであれば)、ステップS473による待ち合わせは省略する。
次にライブラリ101は、ステップS474において当該コールバックラッパーの検索終了通知済みフラグが“検索終了通知済”か“否か”を判定し、まだ通知されていない場合(no)には、ステップS477により当該コールバックラッパーのコールバック関数を呼び出す。そしてステップS478において、当該コールバックラッパーの検索終了通知済みフラグを“検索終了通知済”に設定し、サブルーチンの処理を終了する。
一方、上記コールバックラッパーの検索終了通知済みフラグが“検索終了通知済”(yes)だったとする。この場合ライブラリ101は、ステップS475により当該コールバックラッパーのカウンタ値を判定する。そして、カウンタ値が“0”に達していた場合には、ステップS476において、当該コールバックラッパーの状態変数の機能を用い、当該状態変数を用いて待ち合わせているタスクを起動し、サブルーチンの処理を終了する。
なお、既に述べたように、状態変数による待ち合わせ処理は、マルチスレッドプログラミングにおいて一般的に用いられる機能であり、既存のライブラリを用いて実現できる。
(動作の具体例とその効果)
(1)現在時刻が“2014-10-01 02:40:00”であり、新たにデータ値を登録する場合
いま、例えば図11に示すデータ値(EA)を新たに登録するものとする。当該データ値(EA)は、図3に示した待ち受け中の検索式のうちの行211にほぼ合致するが、時刻の終値と同時刻であるため、処理タイミングによっては検索式の合致よりも検索式の退役のほうが先に起きる可能性もある。この場合、どちらであっても処理として矛盾は生じないが、アプリケーション102への検索結果のコールバックと検索終了のコールバックに関する呼び出しの逐次性や、検索終了コールバックの確実性について問題が生じ得る。
(1)現在時刻が“2014-10-01 02:40:00”であり、新たにデータ値を登録する場合
いま、例えば図11に示すデータ値(EA)を新たに登録するものとする。当該データ値(EA)は、図3に示した待ち受け中の検索式のうちの行211にほぼ合致するが、時刻の終値と同時刻であるため、処理タイミングによっては検索式の合致よりも検索式の退役のほうが先に起きる可能性もある。この場合、どちらであっても処理として矛盾は生じないが、アプリケーション102への検索結果のコールバックと検索終了のコールバックに関する呼び出しの逐次性や、検索終了コールバックの確実性について問題が生じ得る。
つまり、本実施形態によらず、すなわちコールバックラッパーを用いて図9および図10に記載の手順を採らない実施においては、呼び出しの逐次性が担保されない。例えば、図11に示したデータ値の登録が先だった場合、図3の行211に記載された検索式に関して検索結果のコールバック関数の呼び出しが行われている最中に、当該検索式の退役処理が実行され、検索終了のコールバック関数の呼び出しが同時に行われてしまい、呼び出しの逐次性が担保されない。
これに対し本実施形態では、図10に示した検索結果の返却処理のステップS452においてコールバック関数の呼び出しが行われた際に、カウンタ値が0より大きな値となっている。このため、図10に示す検索終了の返却処理において、ステップS472〜S473において待ち合わせが行われ、検索結果のコールバック関数の呼び出し(ステップS452)が完了した後にステップS455によって待ち合わせている処理が再開される。このため、ステップS477による検索終了のコールバック関数の呼び出しを、検索結果のコールバック関数の呼び出しに対して逐次化することができる。
同様に、従来の装置では、データ値の登録処理中に検索式の退役処理が並行して実行された場合、検索終了のコールバック関数の呼び出し後に検索結果のコールバック関数の呼び出しが生じ得るため、検索終了コールバックの確実性が担保されない。これに対し本実施形態では、コールバックラッパーの検索終了通知済みフラグを用いて、ステップS451により検索結果のコールバック関数を呼び出さないようにすることができる。
(2)新たに検索式を登録し、その直後に検索式の削除を行う場合
いま、例えば図12に示すデータ値(EF)を新たに登録するものとする。当該検索式(EF)は、図2に示したデータ値の集合のうち、行201と行203に合致する例となっている。データ値蓄積型の検索処理によってこれらの行の検索を行った後、上記検索式(EF)は、検索式待ち受け型の検索処理に移行する。
いま、例えば図12に示すデータ値(EF)を新たに登録するものとする。当該検索式(EF)は、図2に示したデータ値の集合のうち、行201と行203に合致する例となっている。データ値蓄積型の検索処理によってこれらの行の検索を行った後、上記検索式(EF)は、検索式待ち受け型の検索処理に移行する。
図13に検索式の削除条件の例を示す。当該削除条件は、図3に示した待ち受け中の検索式のうち、行211と行213に合致する例となっている。また、図4に示した蓄積検索処理中リストのうち、行221に合致する例となっている。さらに、図12に示した検索式にも合致する例となっている。つまり、図12に示した検索式を登録した後に、図13に示した削除条件に従い削除を行うのであるから、ライブラリ101を呼び出すプログラマの視点からは、図12に示した削除対象の検索式は削除された状態になっていることが期待されている。
ここで、検索式の削除は主に検索式待ち受け型の検索で待ち受け状態になっている検索式を削除するものであることを考えると、削除対象の検索式が検索式待ち受け型の検索処理に移行した後に削除条件の削除処理が行われた場合の挙動は、自然なものである。
一方、削除対象の検索式が検索式待ち受け型の検索処理に移行する前、すなわちデータ値蓄積型の検索処理を行っている最中に、削除条件の削除処理が行われた場合にも、本実施形態によれば削除処理を行うことができる。
具体的には、図6に示したEF登録処理のステップS351によって登録された検索式(図12)は、図8に示したEF削除処理によりステップS402で削除される。このため、図6に示したEF登録処理のステップS355による移行阻害判定で“yes”と判定されて、直ちにステップS357で検索終了コールバックが行われ、検索式待ち受け型の検索処理に移行することなく検索処理が完了する。
したがって、ライブラリ101を呼び出すプログラマの視点からは、削除対象の検索式に関してライブラリ101内部でデータ値蓄積型の検索処理を行っているか検索式待ち受け型の検索処理を行っているかにかかわらず、削除条件の削除処理によって検索式が検索式待ち受け型の検索処理をそれ以上行わず削除されることが担保される。このため、データ値蓄積型の検索処理と検索式待ち受け型の検索処理を区別なく扱うことができるという利点が得られる。
また、(2)の例では、図13に示す削除条件によって複数の検索式が削除されることから、複数の検索終了コールバックが行われる。その際、検索終了コールバックに時間がかかる場合にも、本実施形態によれば正しく処理ができる利点について、併せて言及する。
EF削除処理においては、検索式待ち受け型の検索処理が行われている検索式に関して検索終了コールバックを行う際、EFロック134を用いて排他制御を行っている区間ではコールバックそのものは実行せず、待ち受け検索中断処理リスト135への登録に処理を留めている。その後、ステップS405によりEFロック134を解放してから、ステップS406において検索終了のコールバックを実行する。ここで、コールバック関数はアプリケーション102が記述する処理であるため、短時間のうちに処理が戻されるという保証がない。しかし、上記処理手順を実行することにより、排他制御を行った結果として他のスレッドが並行動作できず性能が低下する時間を最小限に留めつつ、全てのコールバックを正しく実行することができるという利点が得られる。
(3)現在時刻が“2014-10-01 02:40:00”であり、新たに図11に示したデータ値を登録し、かつ同時に図13に示した削除条件に示す検索式の削除を行う場合
削除条件の削除対象のうち、図3の行211で示す検索式は“2014-10-01 02:40:00”に退役処理が行われる。このため本例は、データ値の登録による検索結果のコールバックと、検索式の削除による検索終了のコールバックと、検索式の退役による検索終了のコールバックとが競合する例となっている。以下ではいくつかの特徴的な競合タイミングについて、本実施形態がもたらす利点を説明する。
削除条件の削除対象のうち、図3の行211で示す検索式は“2014-10-01 02:40:00”に退役処理が行われる。このため本例は、データ値の登録による検索結果のコールバックと、検索式の削除による検索終了のコールバックと、検索式の退役による検索終了のコールバックとが競合する例となっている。以下ではいくつかの特徴的な競合タイミングについて、本実施形態がもたらす利点を説明する。
先ず、検索式の削除による検索終了のコールバックと検索式の退役による検索終了のコールバックの競合について例示する。従来の手法では、これらのコールバックが両方とも行われる場合があり得るため問題である。
これに対し本実施形態では、コールバックラッパーの検索終了通知済みフラグを用いて、図10に示すようにステップS474により検索終了通知済みと判定することで、ステップS477による検索終了のコールバック関数の呼び出しが行われないようにすることができる。このため、検索終了コールバックの確実性、すなわち検索が完了したことをコールバックでちょうど1回だけアプリケーション102に通知する動作を保証することができる。
また、データ値の登録による検索結果のコールバックと検索式の退役による検索終了のコールバックとの競合に関しては、上記(1)で既に述べた。一方、本例に関連して、データ値の登録による検索結果のコールバックと検索式の削除による検索終了のコールバックとの競合に関しても、アプリケーションへの検索結果のコールバックと検索終了のコールバックに関する呼び出しの逐次性や、検索終了コールバックの確実性について、本実施形態を用いれば保証することができるという利点が得られる。
[他の実施形態]
前記実施形態ではデータ値および検索式をいずれもuTuple形式で表記する場合を例にとって説明した。しかしこれに限るものではなく、その他のデータ値や検索式の表現を取り扱ってもよい。例えば、一般的なリレーショナルデータベースのように、データ値を表形式で格納し、検索式をSQL文で記述するようにしてもよい。
前記実施形態ではデータ値および検索式をいずれもuTuple形式で表記する場合を例にとって説明した。しかしこれに限るものではなく、その他のデータ値や検索式の表現を取り扱ってもよい。例えば、一般的なリレーショナルデータベースのように、データ値を表形式で格納し、検索式をSQL文で記述するようにしてもよい。
さらに、前記実施形態においては、待ち受け検索の終了時刻は検索式に含めることとした。しかし、それに限らず、例えば検索式を何秒間保持するかを示す秒数情報を検索式以外の引数として渡すようにしてもよい。
また、前記実施形態では、検索結果のコールバックと検索終了のコールバックに同一のコールバック関数を用いることとした。しかし、それに限るものではなく、複数のコールバック関数を用いてもよい。また同様に、前記一実施形態では、EF削除したことに起因する検索終了と、EFが時刻経過により退役したことに起因する検索終了とは、区別しないコールバックとした。しかし、それに限らず、アプリケーション102が検索終了理由を取得できるように、別の種類のコールバックとしてもよい。或いは、通信等のコールバック以外の手段によって、検索結果や検索終了を通知するようにしてもよい。
さらに、前記実施形態では、EA用リポジトリ131およびEF用リポジトリ132は、表などの単純なデータ構造を用いる場合を例にとって説明した。このようなデータ構造において、検索処理は上から順に照合していくことで実現できる。しかし、本発明はこれに限るものではなく、木構造のように検索処理を高速に行える他のデータ構造を用いてもよい。あるいは、特許文献3に開示されている、データ値を複数のテキストファイルに分割して保存する手法を用いてもよい。
また、この発明に係る情報記録装置は、扱う対象となるデータ値として主にセンサ情報を想定している。センサ情報とは温度や加速度に限らず、様々な情報がその対象となるものである。一例を挙げると、湿度、電流あるいは電圧値、流体の流量、物質の濃度、明度、騒音、位置、速度などの、各種センサデバイスが計測した値を取り扱うことができる。またセンサに限らず、例えばWebやインターネットを経由して取得した情報を取り扱ってもよい。さらに、それら値に加えて、センサの特性や状態、計測日時等を示すメタデータを含む情報を取り扱ってもよい。
さらに、本発明の情報記録装置で使用するプログラムを記録媒体に記録することも、またネットワークを通して提供することも可能である。要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
100…情報記録装置、101…ライブラリ、102…アプリケーション、103…温度センサ、104…加速度センサ、105…タッチパネル/ディスプレイ、121…EA登録部、122…EF登録部、123…EF削除部、124…計時部、131…EA用リポジトリ、132…EF用リポジトリ、133…蓄積検索処理中リスト、134…EF用ロック、135,136…待ち受け検索中断処理リスト。
Claims (8)
- データ値群を記録する情報記録装置であって、
データ値を保持するデータ値用リポジトリ、検索式を保持する検索式用リポジトリおよび蓄積検索処理中リスト情報を記憶する記憶部と、
前記データ値を登録するためのデータ値登録処理手段、前記検索式を登録するための検索式登録処理手段、および前記検索式を削除するための検索式削除処理手段を備える処理部と
を具備し、
前記データ値登録処理手段は、
前記データ値用リポジトリにデータ値を書き込む手段と、
前記データ値をもとに合致する検索式を前記検索式用リポジトリから検索する検索式待ち受け型検索処理を実行する手段と、
前記検索式待ち受け型検索処理による検索結果を通知する手段と
を有し、
前記検索式登録処理手段は、
前記蓄積検索処理中リスト情報に、処理中の検索式を追加する手段と、
前記検索式をもとに前記データ値用リポジトリからデータ値の集合を検索するデータ値蓄積型検索処理を実行する手段と、
前記検索式群に関し排他制御を行う手段と、
前記排他制御が行われている状態で、前記蓄積検索処理中リスト情報から該当する検索式を削除すると共に、前記データ値蓄積型検索処理から前記検索式待ち受け型検索処理への移行の可否を判定する手段と、
前記移行が可能と判定された場合に、前記検索式用リポジトリに前記検索式を書き込む手段と、
前記データ値蓄積型検索処理による検索結果を通知する手段と
を有し、
前記検索式削除処理手段は、
前記検索式に関し排他制御を行う手段と、
前記排他制御が行われている状態で、前記蓄積検索処理中リスト情報から削除対象の検索式を削除する手段と、
前記検索式用リポジトリから削除対象の検索式を検索して、当該検索式を削除する手段と、
前記削除対象とした検索式の削除に応じて検索が終了したことを通知する手段と
を有する
ことを特徴とする情報記録装置。 - データ値群を記録する情報記録装置であって、
検索式を保持する検索式用リポジトリを記憶する記憶部と、
データ値を登録するためのデータ値登録処理手段、検索式を登録するための検索式登録処理手段、および時間経過に応じて処理を起動する計時手段を有する処理部と
を具備し、
前記データ値登録処理手段は、
データ値をもとに合致する検索式を前記検索式用リポジトリから検索する検索式待ち受け型検索処理を実行する手段と、
前記検索式待ち受け型検索処理による検索式の検索結果を通知する手段と
を有し、
前記検索式登録処理手段は、
前記検索式用リポジトリに検索式を書き込む手段を有し、
前記計時手段は、
前記検索式用リポジトリから検索終了時刻が経過した検索式を検索して、当該検索式を削除する手段と、
前記検索終了時刻が経過した検索式に対する検索終了を通知する第1の検索終了通知手段と
を有し、
前記第1の検索終了通知手段は、0回以上の検索結果の通知の後に、1回の前記検索式に対する検索終了の通知を実行することを特徴とする情報記録装置。 - 前記記憶部は、データ値を保持するデータ値用リポジトリをさらに有し、
前記処理部は、検索式を削除する検索式削除処理手段をさらに有し、
前記データ値登録処理手段は、
前記データ値用リポジトリにデータ値を書き込む手段をさらに有し、
前記検索式登録処理手段は、
前記検索式をもとに前記データ値用リポジトリからデータ値の集合を検索するデータ値蓄積型検索処理を実行する手段と、
前記データ値蓄積型検索処理による検索結果を通知する手段と
をさらに有し、
前記検索式削除処理手段は、
前記検索式用リポジトリから削除対象に合致する検索式を検索して、当該検索式を削除する手段と、
前記削除対象とした検索式の削除に応じて検索が終了したことを通知する第2の検索終了通知手段と
を有することを特徴とする請求項2に記載の情報記録装置。 - 前記第1及び第2の検索終了通知手段の少なくとも一方は、
検索結果の通知中の処理の有無を保持する手段と、
検索終了の通知済みの有無を保持する手段と、
前記保持されている検索結果の通知中の処理の有無と、前記保持されている検索終了の通知済みの有無に応じて、通知中の処理の完了を待ち合わせる手段と
を有することを特徴とする請求項2または3に記載の情報記録装置。 - 前記情報記録装置が取り扱うデータ値および検索式として、キーと値との組あるいはキーと値範囲との組の並びを含むことを特徴とする請求項1乃至4のいずれかに記載の情報記録装置。
- データ値を保持するデータ値用リポジトリ、検索式を保持する検索式用リポジトリ、および蓄積検索処理中リスト情報を記憶する記憶部と、前記データ値を登録するためのデータ値登録処理手段、前記検索式を登録するための検索式登録処理手段、および前記検索式を削除するための検索式削除処理手段を備える処理部とを具備する情報記録装置が実行する情報記録方法であって、
前記データ値登録処理手段により、
前記データ値用リポジトリにデータ値を書き込む過程と、
前記データ値をもとに合致する検索式を前記検索式用リポジトリから検索する検索式待ち受け型検索処理を実行する過程と、
前記検索式待ち受け型検索処理による検索結果を通知する過程と
を実行し、
前記検索式登録処理手段により、
前記蓄積検索処理中リスト情報に、処理中の検索式を追加する過程と、
前記検索式をもとに前記データ値用リポジトリからデータ値の集合を検索するデータ値蓄積型検索処理を実行する過程と、
前記検索式群に関し排他制御を行う過程と、
前記排他制御が行われている状態で、前記蓄積検索処理中リスト情報から該当する検索式を削除すると共に、前記データ値蓄積型検索処理から前記検索式待ち受け型検索処理への移行の可否を判定する過程と、
前記移行が可能と判定された場合に、前記検索式用リポジトリに前記検索式を書き込む過程と、
前記データ値蓄積型検索処理による検索結果を通知する過程と
を実行し、
前記検索式削除処理手段により、
検索式に関する排他制御を行う過程と、
前記排他制御行われている状態で、前記蓄積検索処理中リスト情報から削除対象の検索式を削除する過程と、
前記検索式用リポジトリから削除対象の検索式を検索して、当該検索式を削除する過程と、
前記削除対象とした検索式の削除に応じて検索が終了したことを通知する過程と
を実行する
ことを特徴とする情報記録方法。 - 検索式を保持する検索式用リポジトリを記憶する記憶部と、データ値を登録するためのデータ値登録処理手段、検索式を登録するための検索式登録処理手段、および時間経過に応じて処理を起動する計時手段を有する処理部とを具備する情報記録装置が実行する情報記録実行方法であって、
前記データ値登録処理手段により、
データ値をもとに合致する検索式を前記検索式用リポジトリから検索する検索式待ち受け型検索処理を実行する過程と、
前記検索式待ち受け型検索処理による検索式の検索結果を通知する過程と
を実行し、
前記検索式登録処理手段により、
前記検索式用リポジトリに検索式を書き込む過程を実行し、
前記計時手段により、
前記検索式用リポジトリから検索終了時刻が経過した検索式を検索して、当該検索式を削除する過程と、
前記検索終了時刻が経過した検索式に対する検索終了を通知する検索終了通知過程と
を実行し、
さらに前記検索終了通知過程は、0回以上の検索結果の通知の後に、1回の前記検索式に対する検索終了の通知を実行することを特徴とする情報記録方法。 - 請求項1乃至5のいずれかに記載の情報記録装置が有する各手段による処理を、当該情報記録装置の処理部が具備するプロセッサに実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014245933A JP5948399B2 (ja) | 2014-12-04 | 2014-12-04 | 情報記録装置、方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014245933A JP5948399B2 (ja) | 2014-12-04 | 2014-12-04 | 情報記録装置、方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016110318A JP2016110318A (ja) | 2016-06-20 |
JP5948399B2 true JP5948399B2 (ja) | 2016-07-06 |
Family
ID=56124312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014245933A Active JP5948399B2 (ja) | 2014-12-04 | 2014-12-04 | 情報記録装置、方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5948399B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11392650B2 (en) | 2016-11-10 | 2022-07-19 | Nippon Telegraph And Telephone Corporation | Data accumulation apparatus, data accumulation method, and program |
US11514083B2 (en) | 2016-12-22 | 2022-11-29 | Nippon Telegraph And Telephone Corporation | Data processing system and data processing method |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018116933A1 (ja) | 2016-12-22 | 2018-06-28 | 日本電信電話株式会社 | Rpc変換処理システムおよびrpc変換方法 |
JP6689412B2 (ja) | 2016-12-22 | 2020-04-28 | 日本電信電話株式会社 | データ処理システムおよび方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5467002B2 (ja) * | 2010-06-16 | 2014-04-09 | 日本電信電話株式会社 | 間接通信装置、通信システム、通信方法および通信プログラム |
JP5871698B2 (ja) * | 2012-04-06 | 2016-03-01 | 日本電信電話株式会社 | 情報蓄積検索装置 |
-
2014
- 2014-12-04 JP JP2014245933A patent/JP5948399B2/ja active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11392650B2 (en) | 2016-11-10 | 2022-07-19 | Nippon Telegraph And Telephone Corporation | Data accumulation apparatus, data accumulation method, and program |
US11514083B2 (en) | 2016-12-22 | 2022-11-29 | Nippon Telegraph And Telephone Corporation | Data processing system and data processing method |
Also Published As
Publication number | Publication date |
---|---|
JP2016110318A (ja) | 2016-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8849753B2 (en) | Automating asynchronous programming in single threaded systems | |
US20190379650A1 (en) | Reactive programming subscription context | |
US10042746B2 (en) | Callpath finder | |
JP5948399B2 (ja) | 情報記録装置、方法およびプログラム | |
US20080256513A1 (en) | Interruptible client-side scripts | |
JP6726285B2 (ja) | クライアント側アクティビティ監視 | |
US8271768B2 (en) | Concurrent handling of exceptions in received aggregate exception structure with supplied exception handlers and marking handled exceptions | |
JP2005235228A5 (ja) | ||
US20150324178A1 (en) | Hash-based change tracking for software make tools | |
CN114518908A (zh) | 服务编排方法、介质、装置和计算设备 | |
US8751872B2 (en) | Separation of error information from error propagation information | |
US8146085B2 (en) | Concurrent exception handling using an aggregated exception structure | |
US9626296B2 (en) | Prefetch list management in a computer system | |
CN111078418B (zh) | 操作同步方法、装置、电子设备及计算机可读存储介质 | |
CN105224583B (zh) | 日志文件的清理方法及装置 | |
US9588747B2 (en) | Method and apparatus for converting programs | |
JP5879284B2 (ja) | 情報記録方法及び情報記録装置及びプログラム | |
CN114356299A (zh) | 页面搭建过程中的事件编排方法和装置 | |
CN106354722B (zh) | 一种流式计算系统的消息处理方法和装置 | |
US20140325271A1 (en) | Terminal device, information processing method, and computer program product | |
WO2017041673A1 (zh) | 刷新磁盘输入输出请求的处理方法及设备 | |
US10922236B2 (en) | Cascade cache refreshing | |
JP2018005667A (ja) | キャッシュ情報出力プログラム、キャッシュ情報出力方法及び情報処理装置 | |
KR100987332B1 (ko) | 메모리 구조에 따른 메모리 관리 장치 | |
TWI448965B (zh) | 解析程式碼的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160531 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160606 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5948399 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |