(57)【特許請求の範囲】
【請求項１】
連続して発生するデータを解析するデータストリーム解析システムであって、
解析用に前記データを格納するためのメモリ領域が複数のメモリプールとして割り当てられるデータ記憶手段と、
前記複数のメモリプールのうちいずれか１つのメモリプールと１対１に対応し、対応づけられた一のメモリプールに対する手続きをとりまとめて行う複数のメモリ管理手段と、
予め区分けされたデータの種類別に独立して動作し、解析対象とするデータが発生すると、前記メモリ領域に該データを格納する１つ以上のメモリ格納手段と、
前記メモリ格納手段と前記メモリ管理手段との対応づけを示す情報を記憶する対応関係記憶手段と、
前記メモリ格納手段と前記メモリ管理手段との対応づけを最適化する最適化手段とを備え、
前記複数のメモリ管理手段は、
排他制御を行った上でメモリプールに対する手続きを行う共有メモリ管理手段と、
排他制御を行わずにメモリプールに対する手続きを行う専用メモリ管理手段とに分けられ、
前記最適化手段は、種類別のデータの発生頻度、共有メモリ管理手段として機能するメモリ管理手段の数および専用メモリ管理手段として機能するメモリ管理手段の数に基づいて、前記メモリ格納手段と前記メモリ管理手段との対応づけを最適化し、
前記対応関係記憶手段は、前記最適化手段によって最適化された前記メモリ格納手段と前記メモリ管理手段との対応づけを示す情報を記憶し、
前記メモリ格納手段は、解析対象とするデータが発生すると、当該メモリ格納手段に対応づけられているメモリ管理手段を用いて前記複数のメモリプールのいずれかから確保したメモリ領域に該データを格納する
ことを特徴とするデータストリーム解析システム。
【請求項２】
データの種類として、解析対象とするデータの入力方法、発生源もしくは発生要因又はそれらの組み合わせに基づいて区分けされた種類を用いる
請求項１に記載のデータストリーム解析システム。
【請求項３】
最適化手段は、データの発生頻度が所定の閾値よりも高い種類を処理対象としているメモリ格納手段に、専用メモリ管理手段として機能するメモリ管理手段を１対１に割り当てた後、残りのメモリ格納手段に、共有メモリ管理手段として機能するメモリ管理手段を均等に割り当てることによって、メモリ格納手段とメモリ管理手段との対応づけを最適化する
請求項１または請求項２に記載のデータストリーム解析システム。
【請求項４】
最適化手段は、専用メモリ管理手段として機能するメモリ管理手段の数に対し、データの発生頻度が所定の閾値よりも高い種類を処理対象としているメモリ格納手段の数が多い場合には、該メモリ格納手段のうちの一部または全部に対して共有メモリ管理手段として機能するメモリ管理手段を割り当てることによって、メモリ格納手段とメモリ管理手段との対応づけを最適化する
請求項１から請求項３のうちのいずれか１項に記載のデータストリーム解析システム。
【請求項５】
データの種類別に、メモリ領域の確保が行われる頻度であるメモリ確保頻度を計測する頻度計測手段を備え、
最適化手段は、前記頻度計測手段によって計測される種類別のメモリ確保頻度を種類別のデータの発生頻度とし、メモリ格納手段とメモリ管理手段との対応づけを最適化する
請求項１から請求項４のうちのいずれか１項に記載のデータストリーム解析システム。
【請求項６】
頻度計測手段によって計測された種類別のメモリ確保頻度に基づいて、将来の種類別のデータ発生頻度を予測するデータ発生頻度予測手段を備え、
最適化手段は、前記データ発生頻度予測手段によって予測される種類別のデータの発生頻度に基づいて、メモリ格納手段とメモリ管理手段との対応づけを更新する
請求項１から請求項４のうちのいずれか１項に記載のデータストリーム解析システム。
【請求項７】
解析対象とするデータを格納するためのメモリ領域が、メモリ容量の異なる複数のメモリプールに分かれて割り当てられるデータ記憶手段を備えたデータストリーム解析システムであって、
最適化手段は、さらに種類別の平均解析時間に基づいて、メモリ格納手段とメモリ管理手段とを対応づける
請求項１から請求項６のうちのいずれか１項に記載のデータストリーム解析システム。
【請求項８】
最適化手段は、データの発生頻度に応じて専用メモリ管理手段として機能するメモリ管理手段または共有メモリ管理手段として機能するメモリ管理手段を割り当てる際に、平均解析時間が所定の基準時間よりも長い種類を処理対象としているメモリ格納手段に対し、可能な限りメモリ容量が大きく取られたメモリプールに対応づけられたメモリ管理手段を割り当てることによって、メモリ格納手段とメモリ管理手段とを対応づけを最適化する
請求項７に記載のデータストリーム解析システム。
【請求項９】
データの種類別に、実際にメモリプールからメモリ領域が確保されてから該メモリ領域が解放されるまでの期間の平均値である平均メモリ確保期間を計測するメモリ確保期間計測手段を備え、
最適化手段は、メモリ確保期間計測手段によって計測された種類別の平均メモリ確保期間を種類別の平均解析時間とし、メモリ格納手段とメモリ管理手段との対応づけを最適化する
請求項８に記載のデータストリーム解析システム。
【請求項１０】
連続して発生するデータを解析するために用いる情報処理装置であって、
解析用に前記データを格納するためのメモリ領域が複数のメモリプールとして割り当てられるデータ記憶手段と、
前記複数のメモリプールのうちいずれか１つのメモリプールと１対１に対応し、対応づけられた一のメモリプールに対する手続きをとりまとめて行う複数のメモリ管理手段と、
予め区分けされたデータの種類別に独立して動作し、解析対象とするデータが発生すると、前記メモリ領域に該データを格納する１つ以上のメモリ格納手段と、
前記メモリ格納手段と前記メモリ管理手段との対応づけを示す情報を記憶する対応関係記憶手段と、
前記メモリ格納手段と前記メモリ管理手段との対応づけを最適化する最適化手段とを備え、
前記複数のメモリ管理手段は、
排他制御を行った上でメモリプールに対する手続きを行う共有メモリ管理手段と、
排他制御を行わずにメモリプールに対する手続きを行う専用メモリ管理手段とに分けられ、
前記最適化手段は、種類別のデータの発生頻度、共有メモリ管理手段として機能するメモリ管理手段の数および専用メモリ管理手段として機能するメモリ管理手段の数に基づいて、前記メモリ格納手段と前記メモリ管理手段との対応づけを最適化し、
前記対応関係記憶手段は、前記最適化手段によって最適化された前記メモリ格納手段と前記メモリ管理手段との対応づけを示す情報を記憶し、
前記メモリ格納手段は、解析対象とするデータが発生すると、当該メモリ格納手段に対応づけられているメモリ管理手段を用いて前記複数のメモリプールのいずれかから確保したメモリ領域に該データを格納する
ことを特徴とする情報処理装置。
【請求項１１】
連続して発生するデータを格納するためのメモリ領域が、複数のメモリプールに分かれて割り当てられる記憶手段と、前記複数のメモリプールのうちいずれか１つのメモリプールと１対１に対応づけられ、対応づけられた１つのメモリプールに対する手続きをとりまとめて行う複数のメモリ管理手段とを備えた情報処理装置に適用されるメモリ格納方法であって、
前記複数のメモリ管理手段を、排他制御を行った上でメモリプールに対する手続きを行う共有メモリ管理手段と、排他制御を行わずにメモリプールに対する手続きを行う専用メモリ管理手段とに分けた上で、種類別のデータの発生頻度、共有メモリ管理手段として機能するメモリ管理手段の数および専用メモリ管理手段として機能するメモリ管理手段の数に基づいて、予め区分けされたデータの種類別に独立して動作するメモリ格納手段と前記メモリ管理手段との対応づけを最適化し、
最適化された前記メモリ格納手段と前記メモリ管理手段との対応づけを示す情報を記憶し、
前記メモリ格納手段が、当該メモリ格納手段が処理対象としているデータを受け付けた際に、当該メモリ格納手段と対応づけられているメモリ管理手段を用いて確保したメモリ領域に該データを格納する
ことを特徴とするメモリ格納方法。
【請求項１２】
連続して発生するデータを解析する情報処理装置に適用されるメモリ格納用プログラムであって、
連続して発生するデータを格納するためのメモリ領域が、複数のメモリプールに分かれて割り当てられる記憶手段を備えたコンピュータに、
予め区分けされたデータの種類別に独立して動作するメモリ格納処理、
前記複数のメモリプールのいずれか１つと１対１に対応づけられ、対応づけられた１つのメモリプールに対する手続きをとりまとめて行う複数のメモリ管理処理、
前記複数のメモリ管理処理を、排他制御を行った上でメモリプールに対する手続きを行う共有メモリ管理処理と、排他制御を行わずにメモリプールに対する手続きを行う専用メモリ管理処理とに分けた上で、種類別のデータの発生頻度、共有メモリ管理手段として機能するメモリ管理手段の数および専用メモリ管理手段として機能するメモリ管理手段の数に基づいて、予め区分けされたデータの種類別に独立して動作するメモリ格納処理と前記メモリ管理処理との対応づけを最適化する最適化処理、および
前記最適化された前記メモリ格納処理と前記メモリ管理処理との対応づけを示す情報を記憶する処理を実行させ、
前記メモリ格納処理で、当該メモリ格納処理が対象とする種類のデータを受け付けた際に、前記複数のメモリプールのいずれか１つと１対１に対応するメモリ管理処理のうち、当該メモリ格納処理と対応づけられているメモリ管理処理を用いて確保したメモリ領域に、該データを格納させ、
前記メモリ管理処理で、設定に応じて、排他制御を行った上で対応づけられている１のメモリプールに対する手続きを行わせるか、または排他制御を行わないで対応づけられている１のメモリプールに対する手続きを行わせる
ためのメモリ格納用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連続して発生する情報を逐次的に解析するデータストリーム解析システム、情報処理装置、メモリ格納方法およびメモリ格納用プログラムに関する。
【背景技術】
【０００２】
連続して発生する情報を逐次的に解析するにあたり、その情報を解析するためのメモリ確保に関する技術が、特許文献１や特許文献２に記載されている。
【０００３】
特許文献１には、特定ソフトウェアが使用するための専用メモリプールと、主として他のソフトウェアが使用する汎用メモリプールとをメモリ内に備え、特定ソフトウェアに対するメモリ割り当てを行う際に、専用メモリプールの残量が不足している場合に、汎用メモリプールの一部を使用するよう割り当てを行うメモリ割り当て手段を備えた情報処理装置が記載されている。
【０００４】
また、特許文献２には、共有メモリを全ＣＰＵに割り当て可能な部分（共用部分）と、所定のＣＰＵにのみ割り当て可能な部分（専用部分）とに分けて管理するメモリ管理システムであって、各ＣＰＵのメモリ需要予測量を求めるメモリ需要予測手段と、ＣＰＵからのメモリ確保要求に応じてメモリを確保する際に、専用部分のメモリ容量が不足する場合に、需要予測容量分のメモリ量を共用部分から専用部分に移すメモリ確保手段とを備えたメモリ管理システムが記載されている。
【０００５】
【特許文献１】特開平８−３３９３２４号公報
【特許文献２】特開平１０−３２０３５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、大量に、かつ永続的に時々刻々とデータが発生すると、解析用のメモリ確保が追いつかずセンサデータが消失してしまう可能性がある。例えば、センサが検出する情報（以下、センサデータという。）を汎用コンピュータで解析する場合、センサ内部に一時的にセンサデータを保持するためのメモリを備えていたとしても、あくまで一時的であって解析するためにはそのセンサデータを汎用コンピュータのメモリに記憶させる必要がある。なお、複数のセンサのセンサデータを解析する場合には、複数のセンサから発生するセンサデータをそれぞれ汎用コンピュータのメモリに記憶させなければならない。一般に、汎用コンピュータのＯＳにより提供されるメモリ確保機能は処理が遅く、センサデータの発生頻度によっては、メモリ確保が追いつかずセンサデータが消失してしまう可能性がある。
【０００７】
特許文献１に記載されている情報処理装置で、時々刻々と発生するセンサデータを処理させようとすると、メモリ割り当て手段にアクセスが集中することになる。また、特許文献１に示される情報処理装置の構成では、メモリ割り当て手段がメモリを確保する際に排他制御が必要となる。このため、発生頻度が異なるデータの発生が重なったりすると、それらを処理している間に発生頻度の高いセンサデータのコピー（引き取り）が間に合わなくなり、新たに発生したセンサデータにより上書き消去されてしまう可能性がある。
【０００８】
なお、特許文献１に記載されている技術を利用して、メモリ割り当て手段をセンサ数だけ分散化させた場合には、メモリ容量の管理が煩雑となり、メモリの使用効率が低下する場合が生じる。
【０００９】
なお、特許文献２に記載されているメモリ管理システムでは、各ＣＰＵが排他処理をすることなく確保できるメモリ領域を予め用意しておき、そのメモリ容量が足りなくなった場合に共用部分から需要予測容量分のメモリ量を移すことで、共用部分へのアクセスに伴う排他処理をなるべく少なくしている。しかし、特許文献２に記載されているメモリ管理システムは、マルチＣＰＵにおける各ＣＰＵの処理の最適化が目的であって、何千，何万といったセンサから発生されるセンサデータに対するメモリ確保処理を高速に行うということは考慮されていない。例えば、特許文献２に記載されている方法をセンサデータに対するメモリ確保処理で利用しようとすると、各センサデータに対するメモリ確保処理を平等に高速にすることはできるが、頻繁にデータが更新されないセンサに対しても専用メモリ領域を割り当てることになる。このため、メモリ管理のためのメモリ領域が必要であることからも、メモリの使用効率を著しく低下させることになる。
【００１０】
そこで、本発明は、連続して発生する情報を逐次的に解析するデータストリーム解析システムにおいて、メモリの使用効率と実行速度とのバランスをとることができるようにすることを目的とする。なお、本発明において、データストリームとは、時々刻々と変化するデータの発生をデータの流れとして捉えたものであって、値を変化させながら永続的に（連続して）発生するデータの集合体を指す。なお、値を変化させながら永続的にデータを発生させる発生源が複数ある場合には、複数の発生源から発生するデータの集合体を指す場合もある。
【課題を解決するための手段】
【００１１】
本発明によるデータストリーム解析システムは、連続して発生するデータを解析するデータストリーム解析システムであって、解析用にデータを格納するためのメモリ領域が複数のメモリプールとして割り当てられるデータ記憶手段と、複数のメモリプールのうちいずれか１つのメモリプールと１対１に対応し、対応づけられた一のメモリプールに対する手続きをとりまとめて行う複数のメモリ管理手段と、予め区分けされたデータの種類別に独立して動作し、解析対象とするデータが発生すると、メモリ領域に該データを格納する１つ以上のメモリ格納手段と、メモリ格納手段とメモリ管理手段との対応づけを示す情報を記憶する対応関係記憶手段と、メモリ格納手段とメモリ管理手段との対応づけを最適化する最適化手段とを備え、複数のメモリ管理手段は、排他制御を行った上でメモリプールに対する手続きを行う共有メモリ管理手段と、排他制御を行わずにメモリプールに対する手続きを行う専用メモリ管理手段とに分けられ、最適化手段は、種類別のデータの発生頻度、共有メモリ管理手段として機能するメモリ管理手段の数および専用メモリ管理手段として機能するメモリ管理手段の数に基づいて、メモリ格納手段とメモリ管理手段との対応づけを最適化し、対応関係記憶手段は、最適化手段によって最適化されたメモリ格納手段とメモリ管理手段との対応づけを示す情報を記憶し、メモリ格納手段は、解析対象とするデータが発生すると、当該メモリ格納手段に対応づけられているメモリ管理手段を用いて複数のメモリプールのいずれかから確保したメモリ領域に該データを格納することを特徴とする。
【００１２】
また、本発明による情報処理装置は、連続して発生するデータを解析するために用いる情報処理装置であって、解析用にデータを格納するためのメモリ領域が複数のメモリプールとして割り当てられるデータ記憶手段と、複数のメモリプールのうちいずれか１つのメモリプールと１対１に対応し、対応づけられた一のメモリプールに対する手続きをとりまとめて行う複数のメモリ管理手段と、予め区分けされたデータの種類別に独立して動作し、解析対象とするデータが発生すると、メモリ領域に該データを格納する１つ以上のメモリ格納手段と、メモリ格納手段と、メモリ管理手段との対応づけを示す情報を記憶する対応関係記憶手段と、メモリ格納手段とメモリ管理手段との対応づけを最適化する最適化手段とを備え、複数のメモリ管理手段は、排他制御を行った上でメモリプールに対する手続きを行う共有メモリ管理手段と、排他制御を行わずにメモリプールに対する手続きを行う専用メモリ管理手段とに分けられ、最適化手段は、種類別のデータの発生頻度、共有メモリ管理手段として機能するメモリ管理手段の数および専用メモリ管理手段として機能するメモリ管理手段の数に基づいて、メモリ格納手段とメモリ管理手段との対応づけを最適化し、対応関係記憶手段は、最適化手段によって最適化されたメモリ格納手段とメモリ管理手段との対応づけを示す情報を記憶し、メモリ格納手段は、解析対象とするデータが発生すると、当該メモリ格納手段に対応づけられているメモリ管理手段を用いて複数のメモリプールのいずれかから確保したメモリ領域に該データを格納することを特徴とする。
【００１３】
また、本発明によるメモリ格納方法は、連続して発生するデータを格納するためのメモリ領域が、複数のメモリプールに分かれて割り当てられる記憶手段と、複数のメモリプールのうちいずれか１つのメモリプールと１対１に対応づけられ、対応づけられた１つのメモリプールに対する手続きをとりまとめて行う複数のメモリ管理手段とを備えた情報処理装置に適用されるメモリ格納方法であって、複数のメモリ管理手段を、排他制御を行った上でメモリプールに対する手続きを行う共有メモリ管理手段と、排他制御を行わずにメモリプールに対する手続きを行う専用メモリ管理手段とに分けた上で、種類別のデータの発生頻度、共有メモリ管理手段として機能するメモリ管理手段の数および専用メモリ管理手段として機能するメモリ管理手段の数に基づいて、予め区分けされたデータの種類別に独立して動作するメモリ格納手段とメモリ管理手段との対応づけを最適化し、最適化されたメモリ格納手段とメモリ管理手段との対応づけを示す情報を記憶し、メモリ格納手段が、当該メモリ格納手段が処理対象としているデータを受け付けた際に、当該メモリ格納手段と対応づけられているメモリ管理手段を用いて確保したメモリ領域に、該データを格納することを特徴とする。
【００１４】
また、本発明によるメモリ格納用プログラムは、連続して発生するデータを解析する情報処理装置に適用されるメモリ格納用プログラムであって、連続して発生するデータを格納するためのメモリ領域が、複数のメモリプールに分かれて割り当てられる記憶手段を備えたコンピュータに、予め区分けされたデータの種類別に独立して動作するメモリ格納処理、複数のメモリプールのいずれか１つと１対１に対応づけられ、対応づけられた１つのメモリプールに対する手続きをとりまとめて行う複数のメモリ管理処理、複数のメモリ管理処理を、排他制御を行った上でメモリプールに対する手続きを行う共有メモリ管理処理と、排他制御を行わずにメモリプールに対する手続きを行う専用メモリ管理処理とに分けた上で、種類別のデータの発生頻度、共有メモリ管理手段として機能するメモリ管理手段の数および専用メモリ管理手段として機能するメモリ管理手段の数に基づいて、予め区分けされたデータの種類別に独立して動作するメモリ格納処理と前記メモリ管理処理との対応づけを最適化する最適化処理、および最適化された前記メモリ格納処理と前記メモリ管理処理との対応づけを示す情報を記憶する処理を実行させ、メモリ格納処理で、当該メモリ格納処理が対象とする種類のデータを受け付けた際に、前記複数のメモリプールのいずれか１つと１対１に対応するメモリ管理処理のうち、当該メモリ格納処理と対応づけられているメモリ管理処理を用いて確保したメモリ領域に、該データを格納させ、メモリ管理処理で、設定に応じて、排他制御を行った上で対応づけられている１のメモリプールに対する手続きを行わせるか、または排他制御を行わないで対応づけられている１のメモリプールに対する手続きを行わせることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、連続して発生する情報を逐次的に解析するデータストリーム解析システムにおいて、メモリの使用効率と実行速度とのバランスをとることができる。
【発明を実施するための最良の形態】
【００１６】
実施形態１．
以下、本発明の実施形態を図面を参照して説明する。図１は、本発明の第１の実施形態におけるデータストリーム解析システムの構成例を示す説明図である。図１に示すデータストリーム解析システムは、データ発生源から連続して発生するデータを逐次的に解析するためのコンピュータ１００を備え、コンピュータ１００は、複数のメモリ格納手段１１（１１−１〜１１−ｎ）と、複数のメモリ管理手段１２（１２−１〜１２−ｍ）と、対応関係記憶手段１３と、データ解析手段１４とを含む。
【００１７】
メモリ格納手段１１は、予め区分けされたデータの種類別に独立して動作する処理手段であって、解析対象とするデータが発生すると、当該コンピュータ１００内のメモリ領域（具体的には、データ解析手段１４が参照可能なメモリ領域）に該データを格納する。なお、このメモリ領域は、当該コンピュータ１００が備えるデータ記憶手段（図示せず。）に、複数のメモリプールとして割り当てられている。メモリ格納手段１１は、当該メモリ格納手段１１が処理対象としている種類のデータが発生すると、当該メモリ格納手段１１に対応づけられているメモリ管理手段１２を用いて当該コンピュータ１００が備えるデータ記憶手段に割り当てられた複数のメモリプールのいずれかから確保したメモリ領域に該データを格納する。なお、メモリ格納手段１１とメモリ管理手段１２との対応づけは、データ類別−メモリ対応管理手段１４で保持されている情報に従う。
【００１８】
ここで、データの種類とは、例えば、解析対象とするデータの入力方法、発生源もしくは発生要因又はそれらの組み合わせに基づいて区分けされたものであってもよい。当該コンピュータ１００が備える入力手段とのインタフェース（例えば、ポートデバイスドライバやプロトコルスタックやファイルシステムが提供するＡＰＩ）において判別可能な種類であれば、どのような種類であってもよいが、解析対象とするデータをメモリに格納する際に並列動作させることを考慮し、データの発生頻度に応じて区分けされていることが好ましい。
【００１９】
各メモリ格納手段１１は、例えば、当該コンピュータ１００上で動作するプログラム処理上の処理主体（ここでは、プロセス、スレッド、タスク等）のインスタンスとして実装される。なお、図１におけるメモリ格納手段１１−１〜１１−ｎの”ｎ”は、メモリ格納手段１１として動作するプログラム処理上のインスタンスの数（ここでは、データの種類の数と同じ）を示している。以下、各メモリ格納手段１１といった場合には、メモリ格納手段１１として動作する各インスタンスを指すものとする。なお、データの種類に対し、どのメモリ格納手段１１が動作するかは、予め対応づけられているものとする。
【００２０】
次に、メモリ格納手段１１の具体例を示す。例えば、データ発生源（例えば、ＲＦＩＤタグから情報を読み込むＲＦＩＤリーダ）が当該コンピュータ１００のＵＳＢポート等にＨＵＢを介して接続される接続形態である場合には、メモリ格納手段１１は、ＵＳＢポートドライバを介してデータ発生源が出力したデータを受け付ける（入力する）処理を行う処理手段となる。なお、データの種類は、例えば、予めデータ発生源毎に割り当てておいたデバイス番号により判別されるようにすればよい。
【００２１】
また、例えば、データ発生源（例えば、ログ情報を出力するサーバ装置）が、ネットワークを介して接続される接続形態である場合には、メモリ格納手段１１は、プロトコルスタックを介してデータ発生源（またはそのデータ発生源と接続されている通信装置）が送信したデータを受け付ける（受信する）処理を行う処理手段となる。なお、データの受け付け動作には、データ発生源にデータを要求し、その応答として受信する場合も含む。また、データの種類は、例えば、受信ポートによって一意に定まるようにしたり、データの発信元（ＩＰアドレス等）を示す情報により判別されるようにすればよい。なお、解析対象とするデータがログ情報である場合には、そのログの発生要因に応じてデータの種類を区分けしてもよい。もちろん、ログを発生させた発生源に応じて区分けしてもよいし、これらの組み合わせで区分けすることも可能である。
【００２２】
また、例えば、コンピュータ１００内にデータ発生源（例えば、コンピュータ１００上で動作する他の処理手段）が含まれている場合には、メモリ格納手段１１は、例えば、ファイルシステムやＯＳを介してデータ発生源が出力したデータを受け付ける処理を行う処理手段となる。例えば、データ発生源がファイル形式でデータを出力する場合には、メモリ格納手段１１は、ファイルシステムを介してそのデータを読み出す処理を行う処理手段となる。また、例えば、データ発生源がスレッド間メッセージとしてデータを出力する場合には、メモリ格納手段１１は、ＯＳを介してそのデータを受信する処理を行う処理手段となる。なお、データの受け付け動作には、メモリ格納手段１１が予め定められた周期に従って自発的に出力有無を確かめてそれを読み出す場合も含む。また、データの種類は、例えば、ファイル名や、スレッド間メッセージの発信元で宛先を指定することによって一意に定まるようにすればよい。なお、これらの接続形態を組み合わせることも可能である。
【００２３】
メモリ管理手段１２は、データを格納するためのメモリ領域が割り当てられた複数のメモリプールのうちのいずれかと１対１に対応づけられ、対応づけられた１つのメモリプール（以下、管理対象メモリプールという。）に対する手続きをとりまとめて行う。ここで、メモリプールとは、プログラム処理上で利用するために割り当てられるメモリ領域を一塊りにまとめたものをいう。なお、メモリプールから所定の手続きに従って取得されるメモリ領域のことをメモリブロックと呼ぶ場合がある。従って、メモリプールは、複数のメモリブロックの集合体として扱われるメモリ領域であるとも言える。なお、管理対象メモリプールの生成（実メモリ領域への割り当て）をメモリ管理手段１２が行ってもよい。
【００２４】
メモリ管理手段１２は、管理対象メモリプールについて、少なくとも管理対象メモリプールとして割り当てられたメモリ領域の使用状況（確保された状態であるか解放された状態であるか）を管理しながら、他の手段（具体的には、メモリ格納手段１１）からの要求に応じて管理対象メモリプールからメモリ領域を確保したり、他の手段（具体的には、データ解析手段１４）からの要求に応じて当該メモリプールから確保されたメモリ領域を解放したりする処理を取りまとめて行う。なお、管理対象メモリプールに対する手続きには、管理対象メモリプールの使用状況を示す情報を参照したり、更新する処理を含む。
【００２５】
本実施形態において、メモリ管理手段１２は、排他制御を行った上で管理対象メモリプールに対する手続きを行う共有メモリ管理手段として機能するものと、排他制御を行わずに管理対象メモリプールに対する手続きを行う専用メモリ管理手段として機能するものとに分けられる。なお、少なくとも１つ以上の共有メモリ管理手段と、少なくとも１つ以上の専用メモリ管理手段とが含まれるようにする。例えば、各メモリ管理手段１２は、管理対象メモリプールが、１つのデータ種類に専用で用いられるか、または複数のデータ種類から共有で用いられるかを設定できるようにし、その設定を切り替えることによって共有メモリ管理手段として機能する場合と、専用メモリ管理手段として機能する場合とを切り替えられるようにしてもよい。
【００２６】
各メモリ管理手段１２は、例えば、当該コンピュータ１００上で動作するプログラム処理上の手続き関数群およびそれに用いる変数のインスタンスとして実装される。なお、図１におけるメモリ管理手段１２−１〜１２−ｍの”ｍ”は、メモリ管理手段１２として機能するプログラム処理上のインスタンスの数（ここでは、メモリプールの数と同じ）を示している。なお、メモリプールの数は、データの種類数よりも少ない数でよい（ｍ＜ｎ）。以下、各メモリ管理手段１２といった場合には、メモリ管理手段１２として機能する各インスタンスを指すものとする。
【００２７】
例えば、各メモリ管理手段１２は、他の手段に向けて管理対象メモリプールに対する手続きを行うための関数を提供するにあたり、スレッドセーフモードとスレッドフリーモードの２種類のモードを切り替えられるようにしてもよい。スレッドセーフモードは、あるデータや手続き（ここでは、管理対象メモリプールに対する一連の手続き）に対し排他制御をすることで複数プロセスからの同時呼び出しを強制的にシーケンシャルの呼び出しに変換して正しく動作させるモードである。排他制御をするためにスレッドセーフモードの動作は遅い。スレッドフリーモードは、複数プロセスから同時呼び出しがないことを前提とした排他制御をしないモードである。排他制御をしないために、スレッドフリーモードはスレッドセーフモードと比較して非常に高速に動作することができる。
【００２８】
対応関係記憶手段１３は、メモリ格納手段１１と、メモリ管理手段１２との対応づけを示す情報を記憶する。対応関係記憶手段１３は、例えば、メモリ格納手段１１を識別するための識別子と、メモリ管理手段１２を識別するための識別子とを対応づけた情報を記憶してもよい。また、各メモリ格納手段１１は、データの種類と１対１に対応づけられるものであり、各メモリ管理手段１２は、メモリプールと１対１に対応づけられるものであるから、対応関係記憶手段１３は、例えば、データの種類を識別するためのデータ種別ＩＤと、メモリプールを識別するためのメモリプールＩＤとを対応づけた情報を記憶してもよい。また、例えば、データ種別ＩＤと、各メモリ管理手段１２へのポインタ（メモリ管理手段１２として実装された各インスタンスを指すポインタ変数）とを対応づけた情報を記憶してもよい。
【００２９】
データ解析手段１４は、連続して発生するデータの解析を行う。データ解析手段１４は、メモリ格納手段１１によって当該コンピュータ１００が備えるメモリ（具体的には、当該コンピュータ１００が備えるデータ記憶手段に複数のメモリプールとして割り当てられたメモリ領域のいずれか）に格納されたデータを読み出して解析を行う。データ解析手段１４は、例えば、メモリ格納手段１１からメモリ領域にデータを格納した旨の通知を受けて、該メモリ領域に格納されたデータを逐次的に読み出して解析を行ってもよい。なお、データ解析手段１４の数（データ解析手段１４として動作する処理主体のインスタンスの数）は、いくつであってもよい。例えば、データの全種別をまとめて解析する一つのインスタンスとして実装されてもよいし、データの種類別に独立して動作する複数のインスタンスとして実装されてもよい。
【００３０】
以下、より具体的な構成例を用いて説明する。図２は、本実施形態によるデータストリーム解析システムのより具体的な構成例を示すブロック図である。図２に示すデータストリーム解析システムは、センサから発生されるセンサデータを解析するデータストリーム解析システムの例であって、解析対象となるセンサデータの発生源である複数のセンサ２００−１〜２００−ｎと、センサ２００−１〜２００−ｎから発生されるセンサデータの解析を行うコンピュータ１００とを備える。なお、本例では、センサデータの種類は、センサデータの発生源別に区分けたものとする。
【００３１】
また、コンピュータ１００は、センサデータ受付手段１１−１〜１１−ｎと、メモリ管理手段１２−１〜１２−ｍと、センサ−メモリ対応管理手段１３と、データ解析手段１４と、対応関係最適化手段１５と、センサ属性管理手段１６と、排他制御手段１７とを含む。
【００３２】
センサ２００は、解析対象とするセンサデータを発生する手段であり、時々刻々と変化するデータを発生する手段であればよい。センサ２００は、例えば、１分間隔に気温を計測し、そのデータを発生させる装置や、ＲＦＩＤシステムのように商品情報が書き込まれたＩＣチップの情報をＲＦＩＤリーダで読み取り、そのデータを発生させる手段などである。
【００３３】
センサ２００が発生したセンサデータは、各センサ２００内のデータ記憶手段に一旦記憶される。なお、本例では、センサ２００内のデータ記憶手段に対して、データ解析手段１７は、直接にはアクセスできないものとする。従って、発生したセンサデータを解析するためには、データ解析手段１７からアクセス可能なメモリ領域にセンサデータを格納する必要がある。なお、本例では、複数のセンサ２００（センサ２００−１〜２００−ｎ）から発生するセンサデータを１つのコンピュータ１００で解析することを前提としている。
【００３４】
センサデータ受付手段１１は、予め区分けされたセンサデータの種類別（すなわち、センサデータの発生源別）に独立して動作する処理手段であって、解析対象とするセンサデータが発生すると、当該コンピュータ１００内のメモリ領域（具体的には、データ解析手段１４が参照可能なメモリ領域）に該センサデータを格納する。なお、解析対象とするセンサデータを格納するためのメモリ領域は、当該コンピュータ１００が備えるデータ記憶装置（図示せず。）に、複数のメモリプール１２１として割り当てられている。なお、センサデータ受付手段１１は、図１におけるメモリ格納手段１１に相当する処理手段である。本例では、センサデータの発生源であるセンサ２００に対し、各センサ２００を識別するための識別子が割り当てられているものとする。以下、この識別子をセンサＩＤという。なお、センサＩＤは、センサデータ受付手段１１として動作する各インスタンスを識別するための識別子でもあり、センサデータの種別を識別するための識別子でもある。センサＩＤは、例えば、通し番号であってもよい。本例では、Ｓ１，Ｓ２，・・・，Ｓｎ（ｎはセンサ数）というセンサＩＤが付与されているものとする。
【００３５】
また、メモリ管理手段１２は、センサデータを格納するためのメモリ領域が割り当てられた複数のメモリプールのうちのいずれかと１対１に対応づけられ、対応づけられた１つのメモリプール（管理対象メモリプール）に対する手続きをとりまとめて行う。メモリ管理手段１２は、これらの機能を実現するための機能ブロックとして、空きメモリ管理手段１２２と、メモリ獲得・解放手段１２３と、アクセスモード記憶手段１２４とを含む。本例では、解析用のセンサデータを格納するためのメモリプールに対し、各メモリプールをを識別するための識別子が割り当てられているものとする。以下、この識別子をメモリＩＤという。なお、メモリＩＤは、メモリ管理手段１２として機能する各インスタンスを識別するための識別子でもある。メモリＩＤは、例えば、通し番号であってもよい。本例では、Ｍ１，Ｍ２，・・・，Ｍｍ（ｍはメモリプール数）というメモリＩＤが付与されているものとする。
【００３６】
空きメモリ管理手段１２２は、管理対象メモリプール１２１について、少なくとも管理対象メモリプールとして割り当てられたメモリ領域の使用状況を管理する。空きメモリ管理手段１２２は、初期化処理として、センサデータの解析を開始する前に、当該コンピュータ１００上で動作しているＯＳが提供するシステムコールを利用して、当該コンピュータ１００が備えるデータ記憶手段（図示せず。）から管理対象メモリプール１２１として使用するメモリ領域を確保することによって、管理対象メモリプール１２１を生成してもよい。なお、コンピュータ１００上で動作するＯＳは、例えば、Ｗｉｎｄｏｗｓ（登録商標）やＬＩＮＵＸなどの汎用的なＯＳでよい。
【００３７】
具体的には、予め定められているメモリブロックの数分、メモリブロックとして扱うメモリ領域を確保するためのシステムコールを呼び出せばよい。その際、メモリブロックのサイズを指定する。メモリブロックのサイズは、全センサ２００のセンサデータのサイズが共通であれば、そのサイズを用いればよい。共通でなければ、最も大きいセンサデータのサイズを用いればよい。そして、システムコールの戻り値として得られる、確保したメモリ領域（メモリブロック）へのポインタの集合を、管理対象メモリプール１２１の実体情報として保持するようにすればよい。以下、メモリブロックへのポインタをメモリブロックポインタと呼ぶ。なお、メモリブロックの数は、実行マシンの搭載メモリ量と、センサデータの発生頻度等に基づいて設定されればよい。なお、必ずしもＯＳから条件通りのメモリ領域が確保されるとは限らないため、より厳密には、メモリ領域が確保されなかった場合の例外処理等は必要である。
【００３８】
なお、空きメモリ管理手段１２２は、予め定められているメモリブロックのサイズとメモリブロックの数によって示される管理対象メモリプール１２１の全メモリ容量として必要なメモリサイズを指定して、一括してメモリプールとして扱うメモリ領域を確保するようにしてもよい。そのような場合、システムコールの戻り値として得られる、確保したメモリ領域（メモリプール）へのポインタから、メモリブロックのサイズをオフセットとして加算することによって得られるポインタの集合を、管理対象メモリプール１２１の実体情報として保持するようにすればよい。このようにすれば、ＯＳのシステムコールの呼び出し回数を減少させることができる。また、このような場合において、ＯＳからの一括確保に失敗した場合に、メモリブロック毎の確保を試みるようにしてもよい。
【００３９】
空きメモリ管理手段１２２は、管理対象メモリプール１２１が生成される（実メモリ領域が割り当てられる）と、管理対象メモリプール１２１として割り当てられたメモリ領域の使用状況を示す情報を初期化する。例えば、空きメモリ管理手段１２２は、メモリブロックが他の処理手段によって確保されていない状態（以下、空き状態という。）にあるメモリブロックへのポインタの集合を、未使用のメモリブロックを示す情報として保持するようにしてもよい。なお、これはスタックやキューによって実現できる。
【００４０】
空きメモリ管理手段１２２は、例えば、図３に示すような利用可能メモリキューを用いて、空き状態にあるメモリブロックへのポインタを保持するようにしてもよい。空きメモリ管理手段１２２では、例えば、管理対象メモリプール１２１を生成した際に、利用可能メモリキューに全てのメモリブロックポインタを格納すればよい。以後、メモリブロックの確保要求に応じて利用可能メモリキューからメモリブロックポインタを取り出したり（Ｐｏｐ）、メモリブロックの解放要求に応じて解放されるメモリブロックへのポインタを利用可能メモリキューに戻したりすればよい（Ｐｕｓｈ）。
【００４１】
メモリ獲得・解放手段１２３は、他の手段に対して、管理対象メモリプール１２１からメモリブロックを獲得するための手続き、および獲得したメモリブロックを解放するための手続きを提供する。メモリ獲得・解放手段１２３は、具体的には、管理対象メモリプール１２１からのメモリブロックを獲得するための手続き、および獲得したメモリブロックを解放するための手続きを規定して代行する提供関数として実装される。
【００４２】
メモリ獲得・解放手段１２３は、他の手段（具体的には、センサデータ受付手段１１）からのメモリブロック獲得要求に応じて、管理対象メモリプール１２１から空き状態にあるメモリブロックを獲得する。本例では、メモリ獲得・解放手段１２３は、空きメモリ管理手段１２２で管理されている利用可能メモリキューからメモリブロックポインタを一つ取り出す（Ｐｏｐ）ことによって、空き状態にあるメモリブロックを獲得すればよい。図４は、メモリブロックの獲得にかかる管理対象メモリプール１２１の空き状態の変化を示す説明図である。図４（ａ）は、メモリブロック獲得前の管理対象メモリプール１２１の空き状態の一例を示す説明図である。また、図４（ｂ）は、メモリブロック獲得後の管理対象メモリプール１２１の空き状態の一例を示す説明図である。図４（ａ）に示すように、例えば、利用可能メモリキューの最も先頭にあるメモリブロックポインタがメモリブロックＭＢ１へのポインタであった場合、メモリ獲得・解放手段１２３では、空きメモリ管理手段１２２が利用可能メモリキューからメモリブロックＭＢ１へのポインタを取り出す。なお、具体的には、先頭にあるメモリブロックポインタに関するエントリを参照した後、そのエントリを利用可能メモリキューから削除する。
【００４３】
メモリ獲得・解放手段１２３では、当該メモリ管理手段１２が共有メモリ管理手段として機能している場合には、利用可能メモリキューに対する一連のアクセス（利用可能メモリキューから１つのメモリブロックポインタを取り出してそのエントリを削除するまでの一連の処理）を、クリティカルセクションとする。具体的には、利用可能メモリキューから１つのメモリブロックポインタを取り出す前またはエントリの有無を確認する前に排他制御を開始し、取り出したメモリブロックポインタに関するエントリを削除した後に、排他制御を解除すればよい。あるセンサデータ受付手段１１からの呼び出しによってあるメモリ管理手段１２のメモリ獲得・解放手段１２３で、利用可能メモリキューの先頭にあるエントリを参照して、このエントリをキューから削除する前に、他のセンサデータ受付手段１１からの呼び出しによって同じメモリ管理手段１２のメモリ獲得・解放手段１２３で、このエントリにアクセスできると、同じメモリ領域を提供してしまうことになるため、これを防ぐためである。
【００４４】
なお、このとき取得されたメモリブロックＭＢ１へのポインタは、メモリ獲得・解放手段１２３を呼び出した他の手段（具体的には、センサデータ受付手段１１）に渡され、解析対象とするセンサデータの格納先を示す情報として利用される。具体的には、センサデータ受付手段１１で、そのメモリブロックポインタが指すメモリブロックＭＢ１にセンサデータが格納され、データ解析手段１４に渡される。なお、図４では、データ解析メモリキューを用いてデータ解析手段１４へメモリブロックポインタを引き渡す例が示されている。ここでは、データ解析メモリキューの最後尾に追加される。
【００４５】
一方、メモリ獲得・解放手段１２３は、他の手段（具体的には、データ解析手段１４）からのメモリブロック解放要求に応じて、獲得されたメモリブロックを解放する。メモリ獲得・解放手段１２３は、空きメモリ管理手段１２２が管理している利用可能メモリキューに渡されたメモリブロックポインタを追加する（Ｐｕｓｈ）ことによってメモリブロックを解放すればよい。図５は、メモリブロックの解放にかかる管理対象メモリプール１２１の空き状態の変化を示す説明図である。図５（ａ）は、メモリブロック解放前の管理対象メモリプール１２１の空き状態の一例を示す説明図である。また、図５（ｂ）は、メモリブロック解放後の管理対象メモリプール１２１の空き状態の一例を示す説明図である。図５（ａ）に示すように、例えば、データ解析手段１４によって解析が完了したセンサデータを格納しているメモリブロックがメモリブロックＭＢ１へのポインタであった場合、メモリ獲得・解放手段１２３には、メモリブロックＭＢ１へのポインタを指定したメモリブロック解放要求がされる。このような場合には、メモリ獲得・解放手段１２３では、空きメモリ管理手段１２２を用いて利用可能メモリキューにメモリブロックＭＢ１へのポインタを追加する。なお、具体的には、指定されたメモリブロックポインタに関する情報を登録したエントリを利用可能メモリキューに追加する。ここでは、利用可能メモリキューの最後尾に追加する。利用可能メモリキューにエントリが追加されることによって、そのメモリブロックポインタは空き状態となり、別のセンサデータを格納するためのメモリ領域として利用可能になる。
【００４６】
なお、メモリブロックの解放時において、複数のプロセスが同時にアクセスすることによってキューの整合性がとれなくなる可能性がある場合には、当該メモリ管理手段１２が共有メモリ管理手段として機能しているかに応じて排他制御を行うようにすればよい。なお、本例では、センサデータ受付手段１１とデータ解析手段１４とは、同期を取ったり、同じインスタンスとして実装される等により、管理対象メモリプール１２１へのアクセスが競合しないように実装されているものとする。
【００４７】
なお、当該メモリ管理手段１２が共有メモリ管理手段として機能しているかまたは専用メモリ管理手段１２として機能しているかは、アクセスモード記憶手段１２４に記憶されている情報に従えばよい。なお、メモリ獲得・解放手段１２３は、メモリブロック獲得要求またはメモリブロック解放要求が呼び出される度に、アクセスモード記憶手段１２４に記憶されている情報を参照するようにしてもよい。なお、予め共有メモリ管理手段として機能するメモリ管理手段１２と、専用メモリ管理手段として機能するメモリ管理手段１２とを固定的に分けて定義しておくことも可能である。そのような場合には、アクセスモード記憶手段１２４は省略してもよい。
【００４８】
アクセスモード記憶手段１２４は、管理対象メモリプール１２１に対する手続きに関して、排他制御の必要性の有無を示すフラグを記憶する。このフラグは、１ビットでよい。
【００４９】
センサ−メモリ対応管理手段１３は、センサデータ受付手段１１と、メモリ管理手段１２との対応付けを示す情報を記憶する。本例では、センサ−メモリ対応管理手段１３は、図６に示すように、センサＩＤと、メモリＩＤとを対応づけた情報を記憶する。なお、図６では、センサＩＤ＝Ｓ１とメモリＩＤ＝Ｍ１とが対応づけられている。また、センサＩＤ＝Ｓ２とメモリＩＤ＝Ｍ２とが対応づけられている。また、センサＩＤ＝Ｓ３とメモリＩＤ＝Ｍ１とが対応づけられている。従って、センサＩＤ＝Ｓ１で識別されるセンサデータ受付手段１１が受け付けるセンサデータは、メモリＩＤ＝Ｍ１で識別されるメモリ管理手段１２を用いて確保したメモリブロックに格納されることがわかる。また、メモリＩＤ＝Ｍ１が、センサＩＤ＝Ｓ１とセンサＩＤ＝Ｓ３とに対応づけられていることから、メモリＩＤ＝Ｍ１で識別されるメモリ管理手段１２は、共有メモリ管理手段として機能することがわかる。
【００５０】
データ解析手段１４は、センサデータ受付手段１１によって当該コンピュータ１００内のメモリ領域に格納されたセンサデータを随時読み出して解析を行う。なお、本例では、データ解析手段１４は、センサデータ受付手段１１と１対１に対応づけられているものとする。例えば、センサデータ受付手段１１は、対応するデータ解析手段１４へのポインタを記憶しておくことによって、どのデータ解析手段１４に解析処理をさせるかを特定するようにしてもよい。
【００５１】
データ解析手段１４は、図４（ｂ）に示したように、解析対象とするセンサデータの格納先を示す情報（メモリブロックポインタ）を、発生時間順に保持しておくデータ解析キューを有していてもよい。データ解析手段１４に対する要件の一例は、時々刻々と変化しながら永続的に発生するセンサデータを逐次的に解析することである。ここで、逐次的とは、解析が終了した過去のセンサデータの内容は消去されることが前提であり、再度解析には利用しないことを意味している。従って、データ解析手段１４は、最新のある一定期間のセンサデータを解析対象にする。具体的な解析方法は特に問わない。例えば、広く知られたアルゴリズムを利用して、センサデータの統計処理をしたり、パターンマッチングをしたり、分類したりしてもよい。なお、データ解析手段１４は、あるセンサデータについて解析が終了すると、そのセンサデータを格納しているメモリ領域（メモリブロック）の獲得元であるメモリプールを管理しているメモリ管理手段１２を用いて、メモリブロックの解放を行う。
【００５２】
対応関係最適化手段１５は、各種類のデータの発生頻度（本例では、各センサのデータの発生頻度）、共有メモリ管理手段の数（共有使用されるメモリプールの数）および専用メモリ管理手段の数（専用使用されるメモリプールの数）に基づいて、センサデータ受付手段１１とメモリ管理手段１２との対応づけを最適化する。例えば、対応関係最適化手段１５は、センサ属性管理手段１６に記憶されている各センサの発生頻度に関する属性情報に基づき、高頻度センサにはそれぞれに専用のメモリプールを割り当て、低頻度センサには、共有のメモリプールを均等に割り当てることによって、センサデータ受付手段１１とメモリ管理手段１２との対応づけを最適化してもよい。なお、各センサには、専用のメモリプールか共有のメモリプールのいずれかが割り当てられる。なお、専用のメモリプールを割り当てる場合には、そのセンサに対応づけられたセンサデータ受付手段１１と、専用メモリ管理手段として機能するメモリ管理手段１２とを１対１に対応づければよい。また、また、共有のメモリプールを割り当てる場合には、共有メモリ管理手段として機能する１つのメモリ管理手段１２を、そのセンサに対応づけられた複数のセンサデータ受付手段１１に対応づければよい。
【００５３】
センサ属性管理手段１６は、データの種類毎（センサ毎）に、そのデータの発生頻度に関する情報を記憶する。例えば、センサ毎に、そのセンサが高頻度センサか、又は低頻度センサかを示す情報を記憶してもよい。ここで、高頻度センサーとは、更新が頻繁であり、排他制御をするとその影響が大きいセンサをいう。また、低頻度センサーとは、更新がまれであり、排他制御をしても影響が小さいセンサをいう。ただし、これは一例であり、これに限定されない。例えば、センサ毎に、５段階や１０段階でデータの発生頻度を示す情報を記憶してもよい。センサ属性管理手段１６は、各センサのデータの発生頻度に関する情報を、例えば、当該コンピュータ１００が備える入力手段を介してを受け取ることにより、取得してもよいし、予め設定ファイル等に記憶された内容を読み出すことにより取得してもよい。
【００５４】
排他制御手段１７は、メモリ獲得・解放手段１２３からの要求に応じて、排他制御を行う。ここで、排他制御とは、同時に一つの処理主体しかクリティカルセクションに入ることを許さないようにすることをいう。なお、排他制御の実現は、例えば、汎用的なＯＳで一般にＡＰＩとして提供されているミューテックスやセマフォ等を利用すればよい。
【００５５】
次に、図７を参照して、本実施形態の動作を説明する。図７は、本実施形態によるデータストリーム解析システムの動作例を示すフローチャートである。図７に示すように、まず、センサ属性管理手段１６に、各センサのデータの発生頻度に関する情報を設定（記憶）する（ステップＳ１１）。ステップＳ１１では、センサ属性管理手段１６が、各センサのデータの発生頻度に関する情報を、例えば、当該コンピュータ１００が備える入力手段を介してを受け取ることにより取得し、または予め設定ファイル等に記憶された内容を読み出すことにより取得して、所定のメモリ領域に記憶すればよい。
【００５６】
次に、対応関係最適化手段１５が、センサ属性管理手段１６で保持されている各センサのデータの発生頻度に関する情報に基づいて、センサデータ受付手段１１とメモリ管理手段１２との対応づけを最適化する（ステップＳ１２）。対応関係最適化手段１５は、例えば、図８に示すようなアルゴリズムにより、各センサデータ受付手段１１に対し、メモリ管理手段１２を割り当てることによって、センサデータの種類とメモリ管理手段１２との対応づけを最適化してもよい。図８は、対応関係最適化手段１５による最適化のアルゴリズムの例を示すフローチャートである。以下、センサの数（すなわち、センサデータ受付手段１１の数）をＳＮＵＭと呼び、メモリプールの数（すなわち、メモリ管理手段１２の数）をＭＮＵＭと呼ぶこととする。なお、図８におけるＭｐＮＵＭは、専用メモリ管理手段として機能するメモリ管理手段１２の数を示している。なお、共有メモリ管理手段として機能するメモリ管理手段１２の数をＭｃＮＵＭとすると、ＭＮＵＭ＝ＭｐＮＵＭ＋ＭｃＮＵＭという関係がなりたつ。本例では、ＭｐＮＵＭとＭｃＮＵＭとはそれぞれ１以上の数値とする。なお、センサの総数または低頻度センサの数によってはＭｃＮＵＭが０になる場合もある。
【００５７】
図８に示すように、対応関係最適化手段１５は、まず、高頻度センサとして分類されるセンサの数と、ＭｐＮＵＭの数とを比較する（ステップＳ１２１）。なお、ＭｐＮＵＭは、設定により専用メモリ管理手段と共有メモリ管理手段とが切り替わる場合には、専用メモリ管理手段として機能しうるメモリ管理手段１２の最大数とする。なお、専用メモリ管理手段として機能しうるメモリ管理手段１２の最大数は、高頻度センサの数＝ＳＮＵＭである場合にはＭＮＵＭ、それ以外はＭＮＵＭ−１となる。
【００５８】
ここで、もし高頻度センサとして分類されるセンサの数の方が大きければ（ステップＳ１２１のＮｏ）、高頻度センサすべてに専用のメモリプールを割り当てることができないため、ステップＳ１２２に進んでこの問題の解決を試みる。なお、高頻度センサとして分類されるセンサの数の方が小さければ（ステップＳ１２１のＹｅｓ）、そのままステップＳ１２３に進めばよい。
【００５９】
ステップＳ１２２では、高頻度センサに分類されるセンサの一部または全てを低頻度センサに振り替える処理を行って、高頻度センサの数を減らしていく。例えば、高頻度センサに分類されたセンサの中からランダムに選んだ１つのセンサを低頻度センサに分類するようにしてもよい。なお、各センサのより詳細の頻度情報がわかる場合には、高頻度センサに分類されたセンサの中から最も頻度が低いセンサを低頻度センサに分類するようにしてもよい。ステップＳ１２２の繰り返し処理により、高頻度センサの数を減らしていく。
【００６０】
ステップＳ１２３では、高頻度センサそれぞれに、専用のメモリプールを割り当てる。すなわち、高頻度センサに対応づけられた各センサデータ受付手段１１と、専用メモリ管理手段として機能するメモリ管理手段１２とを１対１に対応づける。対応関係最適化手段１５は、例えば、高頻度センサに対応づけられた各センサデータ受付手段１１に、順番に、メモリ管理手段１２を対応づけていくとともに、そのメモリ管理手段１２を排他制御オフのモードに設定するようにしてもよい。
【００６１】
最後に、対応関係最適化手段１５は、低頻度センサに、残りのメモリプールを均等に割り当てる（ステップＳ１２４）。すなわち、残りのメモリ管理手段１２を共有メモリ管理手段とした上で、低頻度センサに対応づけられたセンサデータ受付手段１１に均等に割り当てる。例えば、ＳＮＵＭ＝１０（高頻度＝２，低頻度＝８）、ＭＮＵＭ＝５であった場合、５つのメモリ管理手段１２のうち、２つのメモリ管理手段１２が専用メモリ管理手段として高頻度センサに割り当てられれば、残りのメモリ管理手段１２は３つとなる。対応関係最適化手段１５は、この残った３つのメモリ管理手段１２を８つの低頻度センサで共有させればよい。例えば、残った３つのメモリ管理手段１２をそれぞれａ，ｂ，ｃとすると、ａとｂのメモリ管理手段１２を、それぞれ３つの低頻度センサで共有させるように割り当て、ｃのメモリ管理手段１２を２つの低頻度センサで共有させるように割り当てればよい。
【００６２】
このようにして対応関係最適化手段１５は、センサデータ受付手段１１とメモリ管理手段１２との対応づけの最適化が完了すると、その対応関係を示す情報をセンサ−メモリ対応管理手段１３に反映させる。ここまでの処理が、センサデータの解析のための前処理となる。
【００６３】
そして、各センサはセンシングを開始する（図７のステップＳ１３）。例えば、各センサの実行を開始させることによって、時々刻々と変化するセンサデータを発生させる。なお、各センサは非同期にセンサデータを発生させる。
【００６４】
各センサがセンシングを開始したことによりセンサデータが発生すると、該センサデータの種類（ここでは、センサデータの発生源）に応じて、センサデータ受付手段１１が該センサデータを受け付ける（ステップＳ１４）。センサデータ受付手段１１は、まず、センサ−メモリ対応管理手段１３で保持されているセンサデータ受付手段１１とメモリ管理手段１２との対応関係を示す情報に基づいて、利用するメモリ管理手段１２を特定する（ステップＳ１５）。センサデータ受付手段１１は、センサ−メモリ対応管理手段１３で、当該センサデータ受付手段１１が処理対象としているセンサに割り当てられているセンサＩＤに対応づけられているメモリＩＤを得ることによって、どのメモリ管理手段１２を利用するかを特定すればよい。
【００６５】
そして、特定したメモリ管理手段１２を用いてセンサデータを格納するためのメモリブロックを確保し、確保したメモリブロックに受け付けたセンサデータを格納する（ステップＳ１６）。これにより、センサデータは、当該コンピュータ１００内のメモリにコピーされたことになる。なお、メモリ管理手段１２では、メモリ獲得・解放手段１２３が、空きメモリ管理手段１２２を介して利用可能メモリキューからメモリブロックポインタを取り出す処理を代行している。なお、この際、メモリ管理手段１２が共有メモリ管理手段として機能している場合には、排他制御を行った上で、空きメモリ管理手段１２２を介して利用可能メモリキューからメモリブロックポインタを取り出す処理が行われる。なお、センサデータ受付手段１１がメモリ管理手段１２にセンサデータを渡し、メモリ管理手段１２でコピー処理も行うようにしてもよい。
【００６６】
データ解析手段１４は、当該コンピュータ１００内のメモリにコピーされたセンサデータを解析する（ステップＳ１７）。データ解析手段１４は、解析が終了したセンサデータがあれば、そのセンサデータを格納しているメモリブロックを解放する（ステップＳ１８）。なお、ステップＳ１４〜Ｓ１７の一連の処理は、センサデータが発生する毎に、各センサデータ受付手段１１が独立して動作することにより非同期で行われる。
【００６７】
以上のように、本実施形態によれば、メモリの使用効率と実行速度とのバランスをとることができる。また、本実施形態では、メモリ管理手段１２への集中アクセスによる速度の低減を少なくすることができる。その理由は、データの発生頻度に関する属性情報に基づいて、各センサのセンサデータのメモリ格納処理を非同期に行うセンサデータ受付手段１１に対し、専用のメモリプールを割り当てるか、共有のメモリプールを割り当てるかを定めることで、センサデータ受付手段１１とメモリ管理手段１２との対応を最適化することができるからである。
【００６８】
また、本実施の形態では、メモリ管理手段１２へのアクセスに伴う排他制御による速度の低減を少なくすることができる。この速度が低減する原因たる排他制御は、複数のセンサデータ受付手段１１間でメモリ確保の要求が競合することから必要となっている。本実施形態では、センサデータ受付手段１１とメモリ管理手段１２との対応づけにより、発生頻度の高いセンサに対応づけられているセンサデータ受付手段１１に対しては専用のメモリプールを与えることができ、メモリ確保の要求頻度が高いセンサデータ受付手段１１間での競合をなくすことができるからである。
【００６９】
実施形態２．
次に、本発明の第２の実施形態について説明する。図９は、第２の実施形態によるデータストリーム解析システムの構成例を示すブロック図である。図９に示すように、本実施形態によるデータストリーム解析システムは、図２に示す第１の実施形態と比べて、さらに、発生頻度分類手段１８を備える点、およびメモリ管理手段１２が利用状況監視手段１２５を含む点が異なる。
【００７０】
利用状況監視手段１２５は、メモリブロックの確保が行われるタイミングを監視し、センサデータの種類別（すなわち、センサ毎）に、メモリブロックの確保が行われる頻度を計測する。なお、利用状況監視手段１２５は、例えば、メモリ獲得・解放手段１２３で、メモリブロック獲得処理が行われたことを受けて、その呼び出し元のセンサデータ受付手段１１に対応づけられているセンサＩＤを判別し、センサＩＤ別に呼び出し回数をカウントしていく手段であってもよい。なお、呼び出し元のセンサデータ受付手段１１に対応づけられているセンサＩＤは、メモリ獲得・解放手段１２３を用いる際に、引数として渡されるようにしてもよい。
【００７１】
発生頻度分類手段１８は、利用状況監視手段１２５による監視結果から、各センサを、データの発生頻度で分類する。
【００７２】
図１０は、利用状況監視手段１２５による監視結果の一例を示す説明図である。図１０に示すように、利用状況監視手段１２５は、例えば、１時間単位にセンサＩＤ別のメモリ獲得要求の呼び出し回数をカウントして保持するようにしてもよい。図１０に示す例では、例えば、１０：００までの１時間の間に、センサＩＤ＝Ｓ１で識別されるセンサデータ受付手段１１から６０回の呼び出しがされたことが示されている。なお、単位時間は１時間でなくてもよい。なお、利用状況監視手段１２５の処理を、メモリ獲得・解放手段１２３が行うようにしてもよい。その際、メモリ獲得・解放手段１２３では、内部でカウントし、一定周期毎に図１０に占めすようなテーブルに書き込むようにしてもよい。また、カウントはメモリ獲得・解放手段１２３で行い、テーブルの反映を利用状況監視手段１２５が行うようにしてもよい。例えば、利用状況監視手段１２５が、メモリ獲得・解放手段１２３に問い合わせを行い、このテーブルを更新するようにしてもよい。
【００７３】
発生頻度分類手段１８は、例えば、各センサを高頻度センサと低頻度センサに分類してもよい。図１１は、センサの分類方法の一例を示す説明図である。図１１に示すように、例えば、発生頻度に関してある閾値を設定しておき、監視結果で示される一定期間内のメモリ獲得要求の呼び出し回数の平均が、この閾値より大きいかどうかを判定することによって、分類してもよい。図１１において、横軸は時間、縦軸は監視結果である。また、図１１では、４つの期間にわたるメモリ獲得要求の呼び出し回数の平均によって判定した例を示している。例えば、図１１では、センサＩＤ＝Ｓ１，Ｓ２のセンサに対応づけられた各センサデータ受付手段１１からの一定期間内のメモリ獲得要求の呼び出し回数の平均は、それぞれ閾値よりも高いため、センサＩＤ＝Ｓ１，Ｓ２で識別される各センサは高頻度センサに分類される。また、例えば、図１１では、センサＩＤ＝Ｓ３のセンサに対応づけられたセンサデータ受付手段１１からの一定期間内のメモリ獲得要求の呼び出し回数の平均が、閾値よりも低いため、センサＩＤ＝Ｓ３で識別されるセンサは低頻度センサに分類される。なお、発生頻度分類手段１８は、例えば、Ｋ−平均法などを利用して、各センサを高頻度センサと低頻度センサにクラスタリングすることによって分類してもよい。
【００７４】
次に、本実施形態の動作を説明する。図１２は、本実施形態におけるデータストリーム解析システムの動作例を示すフローチャートである。図１２では、図７に示す第１の実施形態と同じ動作については、同じステップ番号を付し、説明を省略する。なお、図１２において破線矢印は、矢印の元のステップが矢印の先のステップに、非同期に影響を与えることを意味している。
【００７５】
本実施形態では、ステップＳ１６（センサデータメモリ格納処理）の後に、センサデータ受付手段１１毎のメモリ獲得要求の状況を示す情報をロギングする処理を行う（ステップＳ２１）。ステップＳ２１では、例えば、利用状況監視手段１２５が、各センサデータ受付手段１１からのメモリ獲得要求の呼び出し回数を図１０に示すようなテーブルに書き込んでいく。
【００７６】
また、本実施形態では、一連のメモリ解析処理（ステップＳ１４〜Ｓ１７。以下、メインフローという。）と並行して、非同期に実行する別のフロー（以下、サブフローという。）が動作する（ステップＳ２２〜Ｓ２４の繰り返し）。
【００７７】
このサブフローでは、まず、ステップＳ２１の利用状況監視手段１２５による監視結果を受けて、発生頻度分類手段１８が、各センサをデータの発生頻度で分類する（ステップＳ２２）。発生頻度分類手段１８は、利用状況監視手段１２５による監視結果で示される、センサデータ受付手段１１毎の一定期間内のメモリ獲得要求の呼び出し回数の平均を、センサ毎のデータの発生頻度とみなして、各センサを分類すればよい。そして、その分類結果を、センサ属性管理手段１６に反映させる（ステップＳ２３）。対応関係最適化手段１５は、センサ属性が更新されたことを受けて、センサデータ受付手段１１とメモリ管理手段１２との対応づけを最適化する（ステップＳ２４）。
【００７８】
本例では、メインフローのステップＳ２１のロギング結果が、サブフローのステップＳ２２で非同期に参照されて、センサの分類が行われる。そして、その分類結果を受けたサブフローのステップＳ２４の最適化結果が、メインフローのステップＳ１５で非同期に参照されて、利用メモリ管理手段の特定が行われる。
【００７９】
本実施形態によれば、事前に各センサのデータの発生頻度がわからない場合においても、自動的にセンサの属性をシステムが作成し、最適にメモリ割り当てを行うことができる。なお、他の点に関しては第１の実施形態と同様である。
【００８０】
実施形態３．
次に、本発明の第３の実施形態について説明する。図１３は、第３の実施形態によるデータストリーム解析システムの構成例を示すブロック図である。図１３に示すように、本実施形態によるデータストリーム解析システムは、図９に示す第２の実施形態と比べて、さらに、データ発生数予測手段１９を備える点が異なる。
【００８１】
データ発生数予測手段１９は、利用状況監視手段１２５による監視結果に基づいて、将来の各センサのデータの発生頻度を予測する。なお、データ発生数予測手段１９によって予測された各センサのデータの発生頻度は、例えば、利用状況監視手段１２５による監視結果の出力先となるテーブルに追加して記憶するようにしてもよいし、データ発生数予測手段１９が別途異なるテーブルに記憶するようにしてもよい。
【００８２】
データ発生数予測手段１９の予測方法は、特に限定されない。例えば、最小二乗法を用いてもよい。図１４は、データ発生数予測手段１９による予測結果の一例を示す説明図である。ここでは、最小二乗法を用いた例として示している。最小二乗法では、各期間における監視結果を関数で近似する方式であり、想定する近似関数が測定値に対してより近似となるように、残差の二乗和を最小とするような係数を決定する方法である。図１４は、線形関数で近似させた例を示している。なお、線形関数で近似する方法に限らず、２次以降の高次の関数で近似してもかまわない。関数で近似できると、将来の時間をこの関数に入力することで、将来の予測ができる。図１４に示す例では、センサＩＤ＝Ｓ１で識別されるセンサのデータ発生頻度が、将来の時間であるｔ１において、ｉ１と予測されている。
【００８３】
次に、本実施形態の動作を説明する。図１５は、本実施形態におけるデータストリーム解析システムの動作例を示すフローチャートである。図１５では、図１２に示す第２の実施形態と同じ動作については、同じステップ番号を付し、説明を省略する。なお、図１５においても破線矢印は、矢印の元のステップが矢印の先のステップに、非同期に影響を与えることを意味している。
【００８４】
本実施形態では、サブフローのステップＳ２２（センサ分類処理）の前に、利用状況監視手段１２５による監視結果から将来のデータ発生頻度を予測する処理を行う（ステップＳ３１）。ステップＳ３１では、データ発生数予測手段１９が、利用状況監視手段１２５による監視結果に基づき、各センサの将来のデータの発生頻度を予測する。また、ステップＳ２２では、発生頻度分類手段１８は、データ発生数予測手段１９が予測した各センサの将来のデータの発生頻度に基づいて、各センサを分類すればよい。
【００８５】
なお、本例では、メインフローのステップＳ２１のロギング結果が、サブフローのステップＳ３１で非同期に参照されて、将来のデータの発生頻度の予測が行われる。そして、その予測結果を受けたサブフローのステップＳ２４の最適化結果が、メインフローのステップＳ１５で非同期に参照されて、利用メモリ管理手段の特定が行われる。
【００８６】
本実施形態によれば、現在のデータ発生状態ではなく、将来のデータ発生状態を考慮して、最適にメモリ割り当てを行うことができる。なお、他の点に関しては、第２の実施形態と同様である。
【００８７】
実施形態４．
次に、本発明の第４の実施形態について説明する。図１６は、第４の実施形態によるデータストリーム解析システムの構成例を示すブロック図である。図１６に示すように、本実施形態によるデータストリーム解析システムは、図９に示す第２の実施形態と比べて、さらに、メモリ管理手段１２が平均解析寿命監視手段１２６を含む点が異なる。
【００８８】
平均解析寿命監視手段１２６は、メモリブロックの確保および解放が行われるタイミングを監視し、センサデータの種類別（すなわち、センサ毎）に、メモリ領域が確保されてから該メモリ領域が解放されるまでにかかる時間（すなわち、データ解析にかかる時間）の平均（以下、平均解析寿命という。）を計測する。
【００８９】
なお、本実施形態では、平均解析寿命監視手段１２６を実現するために、図１７に示すように、メモリプールの各メモリブロックに、該メモリブロックが確保された時間を示す情報を格納しておくための領域（以下、ヘッダ領域という。）を含ませる。
【００９０】
平均解析寿命監視手段１２６は、例えば、メモリ獲得・解放手段１２３で、メモリブロック獲得処理が行われたことを受けて、そのときの日時を獲得されたメモリブロックのヘッダ領域に記憶させる。そして、メモリ獲得・解放手段１２３で、メモリブロック解放処理が行われたことを受けて、そのときの日時（解放日時）と、指定されたメモリブロックポインタが指すメモリブロックのヘッダ領域に記憶されている日時（獲得日時）との差分から、データ解析にかかる時間（解析寿命）を算出する。なお、平均解析寿命監視手段１２６は、一時的にセンサ毎の解析寿命を記憶しておき、一定の時間毎にその平均値を求めてもよい。
【００９１】
図１８は、平均解析寿命監視手段１２６による観察結果の一例を示す説明図である。図１８に示すように、平均解析寿命監視手段１２６は、例えば、観察結果を示す手段として、１時間単位にセンサＩＤ別の平均解析寿命を記憶するテーブルを有していてもよい。なお、センサＩＤは、メモリブロック解放に係るメモリ獲得・解放手段１２３を用いる際に、引数として渡されるようにしてもよいし、メモリブロック獲得に係るメモリ獲得・解放手段１２３を用いる際に引数として渡されるようにした上で、ヘッダ領域に記憶しておいてもよい。図１８において、時刻は、平均値を算出した時刻を示している。また、平均解析寿命は、前回の平均を算出した時刻以降の解析寿命の平均値を示している。なお、図１８における平均解析寿命の単位は、ミリ秒である。
【００９２】
本実施形態では、センサ属性管理手段１６は、各センサについて、データの発生頻度に関する属性情報と、解析寿命に関する属性情報とを記憶する。解析寿命に関する属性情報は、例えば、長寿センサか又は短命センサかを示す情報であってもよい。ここで、長寿センサとは、解析に多くの時間が必要であり、センサデータを格納しておくためのメモリが多く必要なセンサをいう。また、短命センサは、解析にあまり時間を要しないセンサであり、センサデータを格納しておくためのメモリをあまり必要としないセンサをいう。ただし、この解析寿命に関する分類は一例であり、例えば、５段階や１０段階でデータの解析寿命を表現してもかまわない。
【００９３】
メモリ割り当ての無駄を少なくするためには、メモリを多く使う解析が行われるセンサと、メモリが少なくてよい解析が行われるセンサとを区別して割り当てるとよい。例えば、メモリプールを大サイズのメモリプールと小サイズのメモリプールの２種類用意し、センサ毎の解析寿命に応じて、選択的に割り当てるようにしてもよい。なお、大サイズのメモリプールとは、メモリプール全体として大きな容量が確保されたメモリプールをいう。また、小サイズのメモリプールとは、メモリプール全体として比較的小さな容量が確保されたメモリプールをいう。なお、メモリプール全体としての容量は、メモリブロックの数によって調整できる。本実施形態では、対応関係最適化手段１５は、データの発生頻度に応じて専用メモリ管理手段として機能するメモリ管理手段１２または共有メモリ管理手段として機能するメモリ管理手段１２を割り当てる際に、平均解析寿命が所定の基準時間よりも長いセンサに対し、可能な限りメモリ容量が大きく取られたメモリプールに対応づけられたメモリ管理手段１２を割り当てることによって、メモリ格納手段１１とメモリ管理手段１２とを対応づけを最適化する。
【００９４】
図１９は、本実施形態における対応関係最適化手段１５による最適化のアルゴリズムの例を示すフローチャートである。なお、図１９におけるＭｂＮＵＭは、大サイズのメモリプールの数を示している。なお、小サイズのメモリプールの数をＭｓＮＵＭとすると、ＭＮＵＭ＝ＭｂＮＵＭ＋ＭｓＮＵＭという関係がなりたつ。本例では、ＭｂＮＵＭとＭｓＮＵＭとはそれぞれ１以上の数値とする。なお、長寿センサの数、または短命センサの数によってはＭｂＮＵＭが０であってもよいし、ＭｓＮＵＭが０であってもよい。なお、ＭｂＮＵＭおよびＭｓＮＵＭは予め定められるものであり、動作中の変更はされない。
【００９５】
なお、図１９におけるステップＳ１２１，１２２は、図８に示すステップＳ１２１，１２２と同様であるため、説明は省略する。
【００９６】
高頻度センサとして分類されるセンサの数に対する専用メモリ管理手段として機能しうるメモリ管理手段１２の数の問題が解決されると、対応関係最適化手段１５は、長寿センサとして分類されるセンサの数と、ＭｂＮＵＭの数とを比較する（ステップＳ２２１）。
【００９７】
ここで、もし長寿センサとして分類されるセンサの数の方が大きければ（ステップＳ２２１のＮｏ）、長寿センサすべてに専用の大サイズのメモリプールを割り当てることができないため、ステップＳ２２２に進んでこの問題の解決を試みる。なお、長寿センサとして分類されるセンサの数の方が小さければ（ステップＳ２２１のＹｅｓ）、そのままステップＳ２２３に進めばよい。
【００９８】
ステップＳ２２２では、長寿センサに分類されるセンサの一部または全てを短命センサに振り替える処理を行って、長寿センサの数を減らしていく。例えば、長寿センサに分類されたセンサの中からランダムに選んだ１つのセンサを短命センサに分類するようにしてもよい。なお、各センサのより詳細の解析寿命情報がわかる場合には、長寿センサに分類されたセンサの中から最も解析寿命が短いセンサを短命センサに分類するようにしてもよい。ステップＳ１２２の繰り返し処理により、長寿センサの数を減らしていく。
【００９９】
ステップＳ２２３では、長寿の高頻度センサそれぞれに、大サイズの専用のメモリプールを割り当てる。すなわち、長寿かつ高頻度センサに対応づけられた各センサデータ受付手段１１と、大サイズのメモリプールに対応づけらえたメモリ管理手段１２であって専用メモリ管理手段として機能するメモリ管理手段１２とを１対１に対応づける。対応関係最適化手段１５は、例えば、高頻度センサに対応づけられた各センサデータ受付手段１１に、順番に、メモリ管理手段１２を対応づけていくとともに、そのメモリ管理手段１２を排他制御オフのモードに設定するようにしてもよい。
【０１００】
次に、対応関係最適化手段１５は、短命の高頻度センサそれぞれに、小サイズの専用のメモリプールを割り当てる。すなわち、短命かつ高頻度センサに対応づけられた各センサデータ受付手段１１と、小サイズのメモリプールに対応づけらえたメモリ管理手段１２であって専用メモリ管理手段として機能するメモリ管理手段１２とを１対１に対応づける。なお、小サイズのメモリプールが足りなければ、大サイズのメモリプールを割り当ててもよい。対応関係最適化手段１５は、例えば、低頻度センサに対応づけられた各センサデータ受付手段１１に、順番に、小サイズのメモリプールに対応づけらえたメモリ管理手段１２を対応づけていくとともに、そのメモリ管理手段１２を排他制御オフのモードに設定するようにしてもよい。
【０１０１】
最後に、対応関係最適化手段１５は、低頻度センサに、残りのメモリプールを均等に割り当てる（ステップＳ２２４）。なお、大サイズのメモリプールが残っている場合には、長寿命の低頻度センサを含む組み合わせに対して、可能な限り大サイズのメモリプールを割り当てるようにしてもよい。
【０１０２】
次に、本実施形態の動作について説明する。図２０は、本実施形態におけるデータストリーム解析システムの動作例を示すフローチャートである。図２０では、図１２に示す第２の実施形態と同じ動作については、同じステップ番号を付し、説明を省略する。なお、図２０においても破線矢印は、矢印の元のステップが矢印の先のステップに、非同期に影響を与えることを意味している。
【０１０３】
本実施形態では、メインフローのステップＳ１６（センサデータメモリ格納処理）において、平均解析寿命監視手段１２６が、獲得されるメモリブロックのヘッダ領域に獲得日時を記憶する処理を追加する。また、メインフローのステップＳ１８（メモリブック解放処理）において、平均解析寿命監視手段１２６が、解放されるメモリブロックのヘッダ領域に記憶された獲得日時と解放日時とを取得する処理を追加する。なお、該センサデータの解析寿命を求めてもよい。
【０１０４】
そして、ステップＳ１８の後、平均解析寿命監視手段１２６は、センサデータの解析寿命を求め、必要に応じて、センサデータの種類別の平均解析寿命を求める（ステップＳ４１）。
【０１０５】
また、本実施形態では、サブフローのステップＳ２２（センサ分類処理）の後に、平均解析寿命監視手段１２６による監視結果（センサデータの種類別の平均解析寿命）を、センサ属性管理手段１６に設定する処理を行う（ステップＳ４２）。例えば、センサ属性管理手段１６が、平均解析寿命監視手段１２６によって算出されたセンサデータの種類別の平均解析寿命を取得して、センサ属性管理手段１６の解析寿命に関する属性情報を更新するようにしてもよい。対応関係最適化手段１５は、センサ属性が更新されたことを受けて、センサデータ受付手段１１とメモリ管理手段１２との対応づけを最適化する（ステップＳ４３）。なお、対応関係最適化手段１５は、データの発生頻度と、解析寿命とを考慮して、センサデータ受付手段１１とメモリ管理手段１２との対応づけを最適化する。
【０１０６】
本実施形態では、メモリ管理手段１２の分散化によるメモリ効率低下を低減することができる。その理由は、各センサデータの種類別の発生頻度だけでなく、平均解析寿命を考慮して、サイズの異なるメモリプールによるメモリ割り当てを行うことで、メモリ効率をよくすることができるからである。なお、本実施形態は、例えば、第３の実施形態に平均解析寿命監視手段１２６を追加させた形態としても実施可能である。
【０１０７】
また、本発明の各実施形態における各構成要素は、その機能をハードウェアによって実現させることができるだけでなく、コンピュータとプログラムとによって実現することも可能である。プログラムは、磁気ディスクや半導体メモリ等のコンピュータ可読機能媒体に記録されて提供され、コンピュータの立ち上げ時などに、コンピュータに読み取られ、そのコンピュータの動作を制御することによって、そのコンピュータを各構成要素として機能させる。
【０１０８】
なお、上記実施形態には、解析用にデータを格納するためのメモリ領域が複数のメモリプール（例えば、各メモリプール１２１）として割り当てられるデータ記憶手段と、複数のメモリプールのうちいずれか１つのメモリプールと１対１に対応し、対応づけられた一のメモリプールに対する手続きをとりまとめて行う複数のメモリ管理手段（例えば、各メモリ管理手段１２）と、予め区分けされたデータの種類別に独立して動作し、解析対象とするデータが発生すると、メモリ領域に該データを格納する１つ以上のメモリ格納手段と、メモリ格納手段（例えば、各メモリ格納手段１１）と、メモリ管理手段との対応づけを示す情報を記憶する対応関係記憶手段（例えば、対応関係記憶手段１３）とを備え、複数のメモリ管理手段は、排他制御を行った上でメモリプールに対する手続きを行う共有メモリ管理手段と、排他制御を行わずにメモリプールに対する手続きを行う専用メモリ管理手段とに分けられ、メモリ格納手段が、解析対象とするデータが発生すると、当該メモリ格納手段に対応づけられているメモリ管理手段を用いて複数のメモリプールのいずれかから確保したメモリ領域に該データを格納するデータストリーム解析システムの構成が示されている。
【０１０９】
また、上記実施形態には、データの種類として、解析対象とするデータの入力方法、発生源もしくは発生要因又はそれらの組み合わせに基づいて区分けされた種類を用いるデータストリーム解析システムの構成が示されている。
【０１１０】
また、上記実施形態には、種類別のデータの発生頻度、共有メモリ管理手段として機能するメモリ管理手段の数および専用メモリ管理手段として機能するメモリ管理手段の数に基づいて、メモリ格納手段とメモリ管理手段との対応づけを最適化する最適化手段（例えば、対応関係最適化手段１５）を備え、対応関係記憶手段が、最適化手段によって最適化されたデータの種類とメモリ管理手段との対応づけを示す情報を記憶するデータストリーム解析システムの構成が示されている。
【０１１１】
また、上記実施形態には、最適化手段が、データの発生頻度が所定の閾値よりも高い種類を処理対象としているメモリ格納手段に、専用メモリ管理手段として機能するメモリ管理手段を１対１に割り当てた後、残りのメモリ格納手段に、共有メモリ管理手段として機能するメモリ管理手段を均等に割り当てることによって、メモリ格納手段とメモリ管理手段との対応づけを最適化するデータストリーム解析システムの構成が示されている。
【０１１２】
また、上記実施形態には、最適化手段が、専用メモリ管理手段として機能するメモリ管理手段の数に対し、データの発生頻度が所定の閾値よりも高い種類を処理対象としているメモリ格納手段の数が多い場合には、該メモリ格納手段のうちの一部または全部に対して共有メモリ管理手段として機能するメモリ管理手段を割り当てることによって、メモリ格納手段とメモリ管理手段との対応づけを最適化するデータストリーム解析システムの構成が示されている。
【０１１３】
また、上記実施形態には、最適化手段が、専用メモリ管理手段として機能するメモリ管理手段の数に対し、データの発生頻度が所定の閾値よりも高い種類を処理対象としているメモリ格納手段の数が多い場合には、該メモリ格納手段のうちの一部または全部に対して共有メモリ管理手段として機能するメモリ管理手段を割り当てることによって、メモリ格納手段とメモリ管理手段との対応づけを最適化するデータストリーム解析システムの構成が示されている。
【０１１４】
また、上記実施形態には、データの種類別に、メモリ領域の確保が行われる頻度であるメモリ確保頻度を計測する頻度計測手段（例えば、利用状況監視手段１２５）を備え、最適化手段は、頻度計測手段によって計測される種類別のメモリ確保頻度を種類別のデータの発生頻度とし、メモリ格納手段とメモリ管理手段との対応づけを最適化するデータストリーム解析システムの構成が示されている。
【０１１５】
また、上記実施形態には、頻度計測手段によって計測された種類別のメモリ確保頻度に基づいて、将来の種類別のデータ発生頻度を予測するデータ発生頻度予測手段（例えば、データ発生数予測手段１９）を備え、最適化手段は、データ発生頻度予測手段によって予測される種類別のデータの発生頻度に基づいて、メモリ格納手段とメモリ管理手段との対応づけを更新するデータストリーム解析システムの構成が示されている。
【０１１６】
また、上記実施形態には、解析対象とするデータを格納するためのメモリ領域が、メモリ容量の異なる複数のメモリプールに分かれて割り当てられるデータ記憶手段を備えたデータストリーム解析システムであって、最適化手段が、種類別のデータの発生頻度、種類別の平均解析時間、共有メモリ管理手段として機能するメモリ管理手段の数および専用メモリ管理手段として機能するメモリ管理手段の数に基づいて、メモリ格納手段とメモリ管理手段とを対応づけるデータストリーム解析システムの構成が示されている（例えば、実施形態４参照。）。
【０１１７】
また、上記実施形態には、最適化手段が、データの発生頻度に応じて専用メモリ管理手段として機能するメモリ管理手段または共有メモリ管理手段として機能するメモリ管理手段を割り当てる際に、平均解析時間が所定の基準時間よりも長い種類を処理対象としているメモリ格納手段に対し、可能な限りメモリ容量が大きく取られたメモリプールに対応づけられたメモリ管理手段を割り当てることによって、メモリ格納手段とメモリ管理手段とを対応づけを最適化するデータストリーム解析システムの構成が示されている。
【０１１８】
また、上記実施形態には、データの種類別に、実際にメモリプールからメモリ領域が確保されてから該メモリ領域が解放されるまでの期間の平均値である平均メモリ確保期間を計測するメモリ確保期間計測手段（例えば、平均解析寿命監視手段１２６）を備え、最適化手段が、メモリ確保期間計測手段によって計測された種類別の平均メモリ確保期間を種類別の平均解析時間とし、メモリ格納手段とメモリ管理手段との対応づけを最適化するデータストリーム解析システムの構成が示されている。
【産業上の利用可能性】
【０１１９】
本発明は、連続して発生するデータを解析するデータストリーム解析システムに限らず、連続して発生するデータをメモリに格納する必要があるシステムであれば、好適に適用可能である。
【図面の簡単な説明】
【０１２０】
【図１】第１の実施形態におけるデータストリーム解析システムの構成例を示す説明図である。
【図２】第１の実施形態によるデータストリーム解析システムのより具体的な構成例を示すブロック図である。
【図３】利用可能メモリキューを用いた空き状態管理の一例を示す説明図である。
【図４】メモリブロックの獲得にかかる管理対象メモリプール１２１の空き状態の変化を示す説明図である。
【図５】メモリブロックの解放にかかる管理対象メモリプール１２１の空き状態の変化を示す説明図である。
【図６】センサ−メモリ対応管理手段１３の例を示す説明図である。
【図７】第１の実施形態によるデータストリーム解析システムの動作例を示すフローチャートである。
【図８】対応関係最適化手段１５による最適化のアルゴリズムの例を示すフローチャートである。
【図９】第２の実施形態によるデータストリーム解析システムの構成例を示すブロック図である。
【図１０】利用状況監視手段１２５による監視結果の一例を示す説明図である。
【図１１】センサの分類方法の一例を示す説明図である。
【図１２】第２の実施形態におけるデータストリーム解析システムの動作例を示すフローチャートである。
【図１３】第３の実施形態によるデータストリーム解析システムの構成例を示すブロック図である。
【図１４】データ発生数予測手段１９による予測結果の一例を示す説明図である。
【図１５】第３の実施形態におけるデータストリーム解析システムの動作例を示すフローチャートである。
【図１６】第４の実施形態によるデータストリーム解析システムの構成例を示すブロック図である。
【図１７】第４の実施形態におけるメモリプール１２１の一例を示す説明図である。
【図１８】平均解析寿命監視手段１２６による観察結果の一例を示す説明図である。
【図１９】第４の実施形態における対応関係最適化手段１５による最適化のアルゴリズムの例を示すフローチャートである。
【図２０】第４の実施形態におけるデータストリーム解析システムの動作例を示すフローチャートである。
【符号の説明】
【０１２１】
１００  コンピュータ
１１  メモリ格納手段，センサデータ受付手段
１２  メモリ管理手段
１２１  メモリプール（管理対象メモリプール）
１２２  空きメモリ管理手段
１２３  メモリ獲得・解放手段
１２４  アクセスモード記憶手段
１２５  利用状況監視手段
１２６  平均解析寿命監視手段
１３  対応関係記憶手段、センサ−メモリ対応管理手段
１４  データ解析手段
１５  対応関係最適化手段
１６  センサ属性管理手段
１７  排他制御手段
１８  発生頻度分類手段
１９  データ発生数予測手段
２００  センサ
【図１】
0005169117.tif 000002
【図２】
0005169117.tif 000003
【図３】
0005169117.tif 000004
【図４】
0005169117.tif 000005
【図５】
0005169117.tif 000006
【図６】
0005169117.tif 000007
【図７】
0005169117.tif 000008
【図８】
0005169117.tif 000009
【図９】
0005169117.tif 000010
【図１０】
0005169117.tif 000011
【図１１】
0005169117.tif 000012
【図１２】
0005169117.tif 000013
【図１３】
0005169117.tif 000014
【図１４】
0005169117.tif 000015
【図１５】
0005169117.tif 000016
【図１６】
0005169117.tif 000017
【図１７】
0005169117.tif 000018
【図１８】
0005169117.tif 000019
【図１９】
0005169117.tif 000020
【図２０】
0005169117.tif 000021