(57)【要約】【課題】  従来の時系列データ記録用バッファ管理方法では、時系列データ生産者が複数の場合には、排他制御のためのオーバーヘッドやバッファの利用効率の点で問題があり、また、可変長のデータである場合には、最古等のデータの先頭位置を把握することが困難である。【解決手段】  複数の時系列データ生産者からの時系列データを記録するためのバッファを複数のバッファエレメントに分割して時系列データを管理する方法であって、前記方法は、前記各生産者に対して、動的に前記バッファエレメントを割り当てることを特徴とする。【選択図】  図３
2006079463.tif 000002
【特許請求の範囲】
【請求項１】
複数の時系列データ生産者からの時系列データを記録するためのバッファを複数のバッファエレメントに分割して時系列データを管理する方法であって、
前記方法は、前記各生産者に対して、動的に前記バッファエレメントを割り当て、
前記バッファエレメントに空き領域が有るか否かを確認し、前記バッファに空き領域がない場合に最も古いデータを記録しているバッファ・エレメントを割り当てる工程を有することを特徴とする時系列データ管理方法。
【請求項２】
さらに、前記工程は、時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげる初期化操作工程後に行なうことを特徴とする請求項１に記載の時系列データ管理方法。
【請求項３】
前記バッファ・エレメントを割り当てる工程は、
データ書き込み位置情報が指示したデータ記憶領域に、時系列データ生産手段から渡された書き込むべきデータと時計を参照して得た現在時刻を示す値とを時刻情報として書き込むステップと、
データ書き込み位置情報を、書き込んだデータおよび時刻情報が、データ記憶部内で占めるデータのサイズを、バッファ・エレメント内データ書き込み位置情報部に保持された値に加算するステップとを有することを特徴とする請求項１または２に記載の時系列データ管理方法。
【請求項４】
時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげる初期化ステップと、
時系列データ生産手段３からのデータ書き込み要求を受け、当該データをバッファに書き込むステップの前に当該書き込み先となるバッファ・エレメントのデータ記録領域が不足するか否かを判断するステップと、
書き込み手段からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在するか否かを判断するステップとを有し、
前記未使用のバッファ・エレメントが存在するか否かを判断するステップにおいて、未使用のバッファ・エレメントが存在しない場合には、時刻の最も古いデータを記録しているバッファを割り当てることを特徴とする時系列データ管理方法。
【請求項５】
時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげ、順序カウンタを予め決められた初期値を設定する初期化ステップと、
時系列データ生産手段からのデータ書き込み要求を受け、当該データをバッファに書き込むステップの前に当該書き込み先となるバッファ・エレメントのデータ記録領域が不足するか否かを判断するステップと、
書き込み手段からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在するか否かを判断するステップとを有し、
前記未使用のバッファ・エレメントが存在するか否かを判断するステップにおいて、未使用のバッファ・エレメントが存在しない場合には、時刻の最も古いデータを記録しているバッファを割り当てることを特徴とする時系列データ管理方法。
【請求項６】
前記時系列データ生産手段が、バッファ・エレメントに書き込むデータを生成した際に前記書き込み手段に渡す情報に加え、時系列生産手段が内部に持っている時計を参照して得た現在時刻を示す値を有することを特徴とする請求項５に記載の時系列データ管理方法。
【請求項７】
さらに前記書き込み手段は、末尾ポインタの指すバッファ・エレメントを、書き込み先バッファ・エレメントとし、当該データ書き込み位置情報を参照してデータ記憶領域の残りのサイズを調べ、書き込むべきデータが書き込める空き領域の有無を判断するステップを有し、
前記空き領域の有無を判断するステップの結果、前記書き込み手段が書き込み可能であると判断すれば、前記書き込みステップを行なうことを特徴とする請求項５または６に記載の時系列データ管理方法。
【請求項８】
前記書き込みステップは、
順序カウンタから現在の順序値を取得するとともに、その値に１を加えた値を順序カウンタに設定し、
データ書き込み位置情報が指し示すデータ記憶領域に、前記時系列データ生産手段から渡された書き込むべきデータと、時刻を示す値である時刻情報と、順序カウンタを参照して得た現在の順序値とを書き込み、
データ書き込み位置情報を更新する操作であることを特徴とする請求項５〜７のいずれか１項に記載の時系列データ管理方法。
【請求項９】
複数のバッファ・エレメントを動的に管理して複数のバッファ使用者で共有する時系列データ管理方法であって
個々のバッファ・エレメントを各バッファ使用者に割り当てるときにその順序を保持するステップと、
第１のバッファ使用者からバッファ・エレメントの割り当て要求が有ったときに、未使用のバッファがない場合、前記第１のステップで保持されている順序を基に、最古に割り当てられたバッファ・エレメントを、当該最古のバッファ・エレメントが割り当てられている第２のバッファ使用者への割り当てを解除する第２のステップと、
前記第２のステップで解除されたバッファ・エレメントを、前記第１のバッファ使用者に割り当てる第３のステップと、
を有することを特徴とする時系列データ管理方法。
【請求項１０】
管理手段と、複数のバッファ・エレメントと、複数の時系列データ生産手段と、時計時刻設定手段とを有して構成され、
前記管理手段は、時系列データ生産者から生産されたデータに対して動的にバッファを割り当て、バッファに空き領域がなくなった場合には、最も古いデータを記録しているバッファ・エレメントを再利用して、バッファ全体として常に最新のデータを記録し、バッファ・エレメントの先頭にはデータの最初から記録するように管理する機能を有し、
前記バッファエレメントは、前記時系列データ生産手段から生産されたデータを前記管理手段の命令に従って保存する機能を有し、
前記時系列データ生産手段は、データを時系列に生産する機能を有することを特徴とする時系列データ制御装置。
【請求項１１】
前記時系列生産者には、前記時刻設定手段が内蔵され、順序カウンタをさらに有して構成され、前記順序カウンタは、予め決められた初期値を設定する機能を有することを特徴とする請求項１０に記載の時系列データ制御装置。
【請求項１２】
管理手段と、複数のバッファ・エレメントと、複数の時系列データ生産手段と、時計時刻設定手段とを含み、前記時系列データ生産手段は、コンピュータであり、前記管理手段は、別のコンピュータであり、前記バッファ・エレメントは、管理手段に支配される管理手段と独立したかまたは管理手段内のストレージであり、
前記管理手段は、時系列データ生産者から生産されたデータに対して動的にバッファを割り当て、バッファに空き領域がなくなった場合には、最も古いデータを記録しているバッファ・エレメントを再利用して、バッファ全体として常に最新のデータを記録し、バッファ・エレメントの先頭にはデータの最初から記録するように管理する機能を有し、
前記バッファエレメントは、前記時系列データ生産手段から生産されたデータを前記管理手段の命令に従って保存する機能を有し、
前記時系列データ生産手段は、あるデータを時系列に生産する機能を有することを特徴とする時系列データ制御システム。
【請求項１３】
前記時系列生産者には、前記時刻設定手段が内蔵され、順序カウンタをさらに有して構成され、前記順序カウンタは、予め決められた初期値を設定する機能を有することを特徴とする請求項１２に記載の時系列データ制御システム。
【請求項１４】
前記管理手段は、初期化手段と、割り当て手段と、書き込み手段と、管理データ保持手段とを有して構成され、
前記各バッファ・エレメントには、リストのためのポインタを持たせて、前記管理データ保持手段内の各ポインタを用いた複数のリストで管理し、
前記初期化手段は、時系列データ生産者からのデータをバッファに記録する初期化操作を行なう機能を有し、
前記書き込み手段は、前記時系列データ生産者からのデータ書き込み要求を受け、当該データをバッファに書き込む操作を行う機能を有し、
前記割り当て手段は、前記書き込み手段からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在する場合には、未使用の未使用のバッファ・エレメントを割り当て、未使用のバッファ・エレメントが存在しない場合には、時刻の最も古いデータを記録しているバッファを割り当てることを特徴とする請求項または１２または１３に記載の時系列データ制御システム。
【請求項１５】
複数の時系列データ生産者からの時系列データを記録するためのバッファを複数のバッファエレメントに分割して時系列データを管理する方法をコンピュータに実行するためのプログラムであって、
前記プログラムは、前記各生産者に対して、動的に前記バッファエレメントを割り当て、前記バッファエレメントに空き領域が有るか否かを確認し、前記バッファに空き領域がない場合に最も古いデータを記録しているバッファ・エレメントを割り当てる工程を有することを特徴とする時系列データ管理方法をコンピュータに実行させるためのプログラム。
【請求項１６】
さらに、前記工程は、時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげる初期化操作工程後に行なうことを特徴とする請求項１５に記載の時系列データ管理方法をコンピュータに実行させるためのプログラム。
【請求項１７】
前記バッファ・エレメントを割り当てる工程は、
データ書き込み位置情報が指示したデータ記憶領域に、時系列データ生産手段から渡された書き込むべきデータと時計を参照して得た現在時刻を示す値とを時刻情報として書き込むステップと、
データ書き込み位置情報を、書き込んだデータおよび時刻情報が、データ記憶部内で占めるデータのサイズを、バッファ・エレメント内データ書き込み位置情報部に保持された値に加算するステップを有することを特徴とする請求項に１６または１７に記載のプログラム。
【請求項１８】
時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげる初期化ステップと、
時系列データ生産手段３からのデータ書き込み要求を受け、当該データをバッファに書き込むステップの前に当該書き込み先となるバッファ・エレメントのデータ記録領域が不足するか否かを判断するステップと、
書き込み手段からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在するか否かを判断するステップとを有し、
前記未使用のバッファ・エレメントが存在するか否かを判断するステップにおいて、未使用のバッファ・エレメントが存在しない場合には、時刻の最も古いデータを記録しているバッファを割り当てる時系列データ管理方法をコンピュータに実行させるためのプログラム。
【請求項１９】
時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげ、順序カウンタを予め決められた初期値を設定する初期化ステップと、
時系列データ生産手段からのデータ書き込み要求を受け、当該データをバッファに書き込むステップの前に当該書き込み先となるバッファ・エレメントのデータ記録領域が不足するか否かを判断するステップと、
書き込み手段からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在するか否かを判断するステップとを有し、
前記未使用のバッファ・エレメントが存在するか否かを判断するステップにおいて、未使用のバッファ・エレメントが存在しない場合には、時刻の最も古いデータを記録しているバッファを割り当てる時系列データ管理方法をコンピュータに実行させるためのプログラム。
【請求項２０】
前記時系列データ生産手段が、バッファ・エレメントに書き込むデータを生成した際に前記書き込み手段に渡す情報に加え、時系列生産手段が内部に持っている時計を参照して得た現在時刻を示す値を有することを特徴とする請求項２０に記載のプログラム。
【請求項２１】
さらに前記書き込み手段は、末尾ポインタの指すバッファ・エレメントを、書き込み先バッファ・エレメントとし、当該データ書き込み位置情報を参照してデータ記憶領域の残りのサイズを調べ、書き込むべきデータが書き込める空き領域の有無を判断するステップを有し、
前記空き領域の有無を判断するステップの結果、前記書き込み手段が書き込み可能であると判断すれば、前記書き込みステップを行なうことを特徴とする請求項１０または２０に記載のプログラム。
【請求項２２】
前記書き込みステップは、
順序カウンタから現在の順序値を取得するとともに、その値に１を加えた値を順序カウンタに設定し、
データ書き込み位置情報が指し示すデータ記憶領域に、前記時系列データ生産手段から渡された書き込むべきデータと、時刻を示す値である時刻情報と、順序カウンタを参照して得た現在の順序値とを書き込み、
データ書き込み位置情報を更新する操作であることを特徴とする請求項１９〜２１のいずれか１項に記載のプログラム。
【請求項２３】
複数のバッファ・エレメントを動的に管理して複数のバッファ使用者で共有する時系列データ管理方法をコンピュータに実行するためのプログラムであって
前記プログラムは、
個々のバッファ・エレメントを各バッファ使用者に割り当てるときにその順序を保持するステップと、
第１のバッファ使用者からバッファ・エレメントの割り当て要求が有ったときに、未使用のバッファがない場合、前記第１のステップで保持されている順序を基に、最古に割り当てられたバッファ・エレメントを、当該最古のバッファ・エレメントが割り当てられている第２のバッファ使用者への割り当てを解除する第２のステップと、
前記第２のステップで解除されたバッファ・エレメントを、前記第１のバッファ使用者に割り当てる第３のステップと、
を有することを特徴とする時系列データ管理方法をコンピュータに実行するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時系列データ記録用バッファ管理方法、バッファ管理装置、システムおよびおよび時系列データ記録用バッファ管理用プログラムに関する。
【背景技術】
【０００２】
最新のデータを記録しておくためのバッファ制御技術としてリングバッファ（ring buffer）が知られている。このようなリングバッファの一般的な問題として、リングバッファに記録する各データの長さが一定していない（可変長の）場合、リングバッファに記録されている最古データあるいはそれに近い古いデータの先頭位置の把握ができないという点が挙げられる。
可変長データの場合、各データの先頭位置はそれより前のデータに依存するため、データの先頭は決まった位置に固定されないために、最古データ等の先頭位置の把握が困難である。リングバッファにおいて、最古データの先頭位置を示す情報を保持するとともに、古いデータを上書きする度に最古データの先頭位置を示す情報を更新していく解決方法とすると、データ書き込みのための処理量が増加するという問題が生じてしまう。
【０００３】
また複数の時系列データ生産者が存在する場合に関して問題がある。
リングバッファ技術を、複数の時系列データ生産者が存在する場合に適用する方法は２種類考えられている。
第一の方法は、１つのリングバッファを複数のデータ生産者で共有する方法である。この方法の問題点は、あるデータ生産者がデータを書き込もうとする際に、他のデータ生産者との間でバッファの使用について排他制御を行なう必要がある点である。
この排他制御は個々のデータ書き込み操作に対して賦課されることになるため、バッファへの書き込み操作に必要な処理が増加する（バッファへの書き込み性能が低下する）ことになる。
【０００４】
第二の方法は、各データ生産者に対して１つのみのリングバッファを割り当てる方法である。この方法では、第一の方法における排他制御の問題は生じないが、バッファの有効利用の点で問題が生じる。すなわち、各データ生産者が生産するデータの時間的割合に著しい不均衡があると、バッファに記録できる時系列データの有効な時間長は、最も頻繁にデータを生産する生産者のバッファが一杯になるまでの時間で決められてしまい、データ生産頻度の低いバッファは有効に利用されない点である。
【０００５】
例えば、生産者１と２の単位時間当たりのデータ生産量が、それぞれ1と０．１であり、各生産者に容量1のリングバッファ（バッファ１および２とする）が割り当てられているとすると、バッファ1および２が保持する時系列データの時間長は、それぞれ、1と10となる。この場合、バッファ全体（バッファ１と２の両方）として保持可能なデータの時間長は、各バッファが保持するデータの時間長の中で最も短い時間、すなわち、１（バッファ１）となる。なぜなら、バッファ１に保持されていない時間帯については、「各生産者が作成した各データは、そのデータ作成時刻順に取り出す必要がある」という条件を満たせないためである。このため、バッファ２において（現在時刻−１０）から（現在時刻−１）のデータを保持するバッファ領域は、有効に活用されていないことになる。なお一般に、各生産者のデータ生成頻度の予測は不可能であり、また、各生産者のデータ生成は、状況によって変化することもあるので、予め最適な容量のバッファを各生産者に割り当てておくことはできず、割り当ては効率的にもバッファ量の点でも不利である。
第二の方法における別の問題点として、データ作成時刻順（時系列順）に、各データを取り出すことができない点がある。
【０００６】
たとえば、特許文献１には、寺家入れるデータファイル方式の発明が記載されている。この文献の図３には、ファイル領域とファイル管理情報の構成例が示されている。そして、この文献には、ファイル領域のデータレコード及び空きレコード長を固定に限定されている。
しかしながら、この文献の発明では、複数データ生産者の状況が１つのバッファに書き込みを行なうと、バッファ使用に対して生産者間で調整が必要になるという問題点が存在する。
【０００７】
また、特許文献２には、記憶制御装置の発明が記載されている。そしてこの文献の図１には、管理情報記憶部内に、第１のポインタと第２のポインタとが示されている。しかしながら、ここでいう第１のポインタは次のデータがデータ記憶部に格納されるべき領域の先頭アドレスを指定するものであり、また、第２のポインタは、最も古い有効なデータがデータ記憶部に格納された領域の先頭アドレスを指定するものであり、使用されるポインタが、本発明とは異なっている。
【０００８】
また、特許文献３には、各データ生産者について、リングバッファを形成し、バッファが不足した場合には、使用済みのバッファから、アルゴリズムによって１つを選択し、再利用する発明が開示されている。
【特許文献１】特開平６−２６６８５５号公報
【特許文献２】特開平１１−７３３６７号公報
【特許文献３】特許第３３６５３７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来の時系列データ記録用バッファ管理方法では、時系列データ生産者が複数の場合には、排他制御のためのオーバーヘッドやバッファの利用効率の点で問題があった。
また、可変長のデータである場合には、最古等のデータの先頭位置を把握することが困難であるという課題もあった。
【課題を解決するための手段】
【００１０】
請求項１に記載の時系列データ管理方法の発明は、複数の時系列データ生産者からの時系列データを記録するためのバッファを複数のバッファエレメントに分割して時系列データを管理する方法であって、前記方法は、前記各生産者に対して、動的に前記バッファエレメントを割り当て、前記バッファエレメントに空き領域が有るか否かを確認し、前記バッファに空き領域がない場合に最も古いデータを記録しているバッファ・エレメントを割り当てる工程を有することを特徴とする。
【００１１】
請求項２に記載の発明は、請求項１に記載の時系列データ管理方法において、さらに、前記工程は、時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげる初期化操作工程後に行なうことを特徴とする。
【００１２】
請求項３に記載の発明は、請求項１または２に記載の時系列データ管理方法において、前記バッファ・エレメントを割り当てる工程は、データ書き込み位置情報が指示したデータ記憶領域に、時系列データ生産手段から渡された書き込むべきデータと時計を参照して得た現在時刻を示す値とを時刻情報として書き込み、データ書き込み位置情報を、書き込んだデータおよび時刻情報が、データ記憶部内で占めるデータのサイズを、バッファ・エレメント内データ書き込み位置情報部に保持された値に加算する操作を行なうことを特徴とする。
【００１３】
請求項４に記載の時系列データ管理方法の発明は、時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげる初期化ステップと、時系列データ生産手段３からのデータ書き込み要求を受け、当該データをバッファに書き込むステップの前に当該書き込み先となるバッファ・エレメントのデータ記録領域が不足するか否かを判断するステップと、書き込み手段からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在するか否かを判断するステップとを有し、前記未使用のバッファ・エレメントが存在するか否かを判断するステップにおいて、未使用のバッファ・エレメントが存在しない場合には、時刻の最も古いデータを記録しているバッファを割り当てることを特徴とする。
【００１４】
請求項５に記載の時系列データ管理方法の発明は、時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげ、順序カウンタを予め決められた初期値を設定する初期化ステップと、時系列データ生産手段からのデータ書き込み要求を受け、当該データをバッファに書き込むステップの前に当該書き込み先となるバッファ・エレメントのデータ記録領域が不足するか否かを判断するステップと、書き込み手段からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在するか否かを判断するステップとを有し、前記未使用のバッファ・エレメントが存在するか否かを判断するステップにおいて、未使用のバッファ・エレメントが存在しない場合には、時刻の最も古いデータを記録しているバッファを割り当てることを特徴とする。
【００１５】
請求項６に記載の時系列データ管理方法の発明は、請求項５において、前記時系列データ生産手段が、バッファ・エレメントに書き込むデータを生成した際に前記書き込み手段に渡す情報に加え、時系列生産手段が内部に持っている時計を参照して得た現在時刻を示す値を有することを特徴とする。
【００１６】
請求項７に記載の発明は、請求項５または６に記載の時系列データ管理方法において、さらに前記書き込み手段は、末尾ポインタの指すバッファ・エレメントを、書き込み先バッファ・エレメントとし、当該データ書き込み位置情報を参照してデータ記憶領域の残りのサイズを調べ、書き込むべきデータが書き込める空き領域の有無を判断するステップを有し、前記空き領域の有無を判断するステップの結果、前記書き込み手段が書き込み可能であると判断すれば、データ書き込み操作を行なうことを特徴とする。
【００１７】
請求項８に記載の発明は、請求項５〜７のいずれか１項に記載の時系列データ管理方法において、前記書き込み操作は、順序カウンタから現在の順序値を取得するとともに、その値に１を加えた値を順序カウンタに設定し、データ書き込み位置情報が指し示すデータ記憶領域に、前記時系列データ生産手段から渡された書き込むべきデータと、時刻を示す値である時刻情報と、順序カウンタを参照して得た現在の順序値とを書き込み、データ書き込み位置情報を更新する操作であることを特徴とする。
【００１８】
請求項９に記載の発明は、複数のバッファ・エレメントを動的に管理して複数のバッファ使用者で共有する時系列データ管理方法であって、個々のバッファ・エレメントを各バッファ使用者に割り当てるときにその順序を保持するステップと、第１のバッファ使用者からバッファ・エレメントの割り当て要求が有ったときに、未使用のバッファがない場合、前記第１のステップで保持されている順序を基に、最古に割り当てられたバッファ・エレメントを、当該最古のバッファ・エレメントが割り当てられている第２のバッファ使用者への割り当てを解除する第２のステップと、前記第２のステップで解除されたバッファ・エレメントを、前記第１のバッファ使用者に割り当てる第３のステップと、を有することを特徴とする。
【００１９】
請求項１０に記載の時系列データ制御装置の発明は、管理手段と、複数のバッファ・エレメントと、複数の時系列データ生産手段と、時計時刻設定手段とを有して構成され、前記管理手段は、時系列データ生産者から生産されたデータに対して動的にバッファを割り当て、バッファに空き領域がなくなった場合には、最も古いデータを記録しているバッファ・エレメントを再利用して、バッファ全体として常に最新のデータを記録し、バッファ・エレメントの先頭にはデータの最初から記録するように管理する機能を有し、前記バッファエレメントは、前記時系列データ生産手段から生産されたデータを前記管理手段の命令に従って保存する機能を有し、前記時系列データ生産手段は、データを時系列に生産する機能を有することを特徴とする。
【００２０】
請求項１１に記載の発明は、請求項１０に記載の時系列データ制御装置において、前記時系列生産者には、前記時刻設定手段が内蔵され、順序カウンタをさらに有して構成され、前記順序カウンタは、予め決められた初期値を設定する機能を有することを特徴とする。
【００２１】
請求項１２に記載の時系列データ制御システムの発明は、管理手段と、複数のバッファ・エレメントと、複数の時系列データ生産手段と、時計時刻設定手段とを含み、前記時系列データ生産手段は、コンピュータであり、前記管理手段は、別のコンピュータであり、前記バッファ・エレメントは、管理手段に支配される管理手段と独立したかまたは管理手段内のストレージであり、前記管理手段は、時系列データ生産者から生産されたデータに対して動的にバッファを割り当て、バッファに空き領域がなくなった場合には、最も古いデータを記録しているバッファ・エレメントを再利用して、バッファ全体として常に最新のデータを記録し、バッファ・エレメントの先頭にはデータの最初から記録するように管理する機能を有し、前記バッファエレメントは、前記時系列データ生産手段から生産されたデータを前記管理手段の命令に従って保存する機能を有し、前記時系列データ生産手段は、あるデータを時系列に生産する機能を有することを特徴とする。
【００２２】
請求項１３に記載の発明は、請求項１２に記載の時系列データ制御システムにおいて、前記時系列生産者には、前記時刻設定手段が内蔵され、順序カウンタをさらに有して構成され、前記順序カウンタは、予め決められた初期値を設定する機能を有することを特徴とする。
【００２３】
請求項１４に記載の発明は、請求項または１２または１３に記載の時系列データ制御システムにおいて、前記管理手段は、初期化手段と、割り当て手段と、書き込み手段と、管理データ保持手段とを有して構成され、前記各バッファ・エレメントには、リストのためのポインタを持たせて、前記管理データ保持手段内の各ポインタを用いた複数のリストで管理し、前記初期化手段は、時系列データ生産者からのデータをバッファに記録する初期化操作を行なう機能を有し、前記書き込み手段は、前記時系列データ生産者からのデータ書き込み要求を受け、当該データをバッファに書き込む操作を行う機能を有し、前記割り当て手段は、前記書き込み手段からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在する場合には、未使用の未使用のバッファ・エレメントを割り当て、未使用のバッファ・エレメントが存在しない場合には、時刻の最も古いデータを記録しているバッファを割り当てることを特徴とする。
【００２４】
請求項１５に記載の時系列データ管理方法をコンピュータに実行させるためのプログラムの発明は、複数の時系列データ生産者からの時系列データを記録するためのバッファを複数のバッファエレメントに分割して時系列データを管理する方法をコンピュータに実行するためのプログラムであって、前記プログラムは、前記各生産者に対して、動的に前記バッファエレメントを割り当て、前記バッファエレメントに空き領域が有るか否かを確認し、前記バッファに空き領域がない場合に最も古いデータを記録しているバッファ・エレメントを割り当てる工程を有することを特徴とする。
【００２５】
請求項１６に記載の時系列データ管理方法をコンピュータに実行させるためのプログラムの発明は、請求項１５において、さらに、前記工程は、時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげる初期化操作工程後に行なうことを特徴とする。
【００２６】
請求項１７に記載に記載の時系列データ管理方法をコンピュータに実行させるためのプログラムの発明は、請求項１５または１６において、前記バッファ・エレメントを割り当てる工程は、データ書き込み位置情報が指示したデータ記憶領域に、時系列データ生産手段から渡された書き込むべきデータと時計を参照して得た現在時刻を示す値とを時刻情報として書き込み、データ書き込み位置情報を、書き込んだデータおよび時刻情報が、データ記憶部内で占めるデータのサイズを、バッファ・エレメント内データ書き込み位置情報部に保持された値に加算する操作を行なうことを特徴とする。
【００２７】
請求項１８に記載に記載の時系列データ管理方法をコンピュータに実行させるためのプログラムの発明は、請求項に１５または１６において、時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげる初期化ステップと、時系列データ生産手段３からのデータ書き込み要求を受け、当該データをバッファに書き込む書き込みステップの前に当該書き込み先となるバッファ・エレメントのデータ記録領域が不足するか否かを判断するステップと、書き込み手段からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在するか否かを判断するステップとを有し、前記未使用のバッファ・エレメントが存在するか否かを判断するステップにおいて、未使用のバッファ・エレメントが存在しない場合には、時刻の最も古いデータを記録しているバッファを割り当てることを特徴とする。
【００２８】
請求項１９に記載の時系列データ管理方法をコンピュータに実行させるためのプログラムの発明は、時系列データ生産手段からのデータをバッファに記録する準備である各時系列データ生産手段に対応するリストにバッファ・エレメントをつなぎ、前記以外のバッファ・エレメントを全体リストにつなげ、順序カウンタを予め決められた初期値を設定する初期化ステップと、時系列データ生産手段からのデータ書き込み要求を受け、当該データをバッファに書き込む書き込みステップの前に当該書き込み先となるバッファ・エレメントのデータ記録領域が不足するか否かを判断するステップと、書き込み手段からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在するか否かを判断するステップとを有し、前記未使用のバッファ・エレメントが存在するか否かを判断するステップにおいて、未使用のバッファ・エレメントが存在しない場合には、時刻の最も古いデータを記録しているバッファを割り当てることを特徴とする。
【００２９】
請求項２０に記載の時系列データ管理方法をコンピュータに実行させるためのプログラムの発明は、請求項１９において、前記時系列データ生産手段が、バッファ・エレメントに書き込むデータを生成した際に前記書き込み手段に渡す情報に加え、時系列生産手段が内部に持っている時計を参照して得た現在時刻を示す値を有することを特徴とする。
【００３０】
請求項２１に記載の時系列データ管理方法をコンピュータに実行させるためのプログラムの発明は、請求項１９または２０において、さらに前記書き込み手段は、末尾ポインタの指すバッファ・エレメントを、書き込み先バッファ・エレメントとし、当該データ書き込み位置情報を参照してデータ記憶領域の残りのサイズを調べ、書き込むべきデータが書き込める空き領域の有無を判断するステップを有し、前記空き領域の有無を判断するステップの結果、前記書き込み手段が書き込み可能であると判断すれば、前記書き込みステップを行なうことを特徴とする。
【００３１】
請求項２２に記載の時系列データ管理方法をコンピュータに実行させるためのプログラムの発明は、請求項１８〜２１のいずれか１項において、前記書き込みステップは、順序カウンタから現在の順序値を取得するとともに、その値に１を加えた値を順序カウンタに設定し、データ書き込み位置情報が指し示すデータ記憶領域に、前記時系列データ生産手段から渡された書き込むべきデータと、時刻を示す値である時刻情報と、順序カウンタを参照して得た現在の順序値とを書き込み、データ書き込み位置情報を更新する操作であることを特徴とする。
【００３２】
請求項２３に記載の時系列データ管理方法をコンピュータに実行させるためのプログラムの発明は、複数のバッファ・エレメントを動的に管理して複数のバッファ使用者で共有する時系列データ管理方法をコンピュータに実行させるためのプログラムであって、個々のバッファ・エレメントを各バッファ使用者に割り当てるときにその順序を保持するステップと、第１のバッファ使用者からバッファ・エレメントの割り当て要求が有ったときに、未使用のバッファがない場合、前記第１のステップで保持されている順序を基に、最古に割り当てられたバッファ・エレメントを、当該最古のバッファ・エレメントが割り当てられている第２のバッファ使用者への割り当てを解除する第２のステップと、前記第２のステップで解除されたバッファ・エレメントを、前記第１のバッファ使用者に割り当てる第３のステップと、を有することを特徴とする。
【発明の効果】
【００３３】
本発明によって得られる第１の効果は、データ書き込みにおける他のデータ生産者との間でのバッファ使用についての排他制御を不要にできる。
その理由は、各時系列データ生産者のデータ書き込み先バッファ・エレメントを別に構成したためである。
【００３４】
本発明によって得られる第２の効果は、固定サイズのバッファ・エレメントを各時系列データ生産者に割り当てる制御の際に発生するバッファ利用効率の問題を回避できることにある。
その理由は、各時系列データ生産者へのバッファ割り当てが動的に行なわれるためである。
【００３５】
本発明によって得られる第３の効果は、最新の時系列データを絶えず記録する状況において、最古またはそれに近いデータの先頭（区切り）を認識することができる。
その理由は、各バッファ・エレメントには、データ記録領域の先頭からデータが書き込まれるように構成されているためである。
【発明を実施するための最良の形態】
【００３６】
本発明に係る時系列データ記録用バッファを複数の部分（バッファ・エレメント）に分割して管理する時系列データ管理方法、装置および時系列データ記録用バッファ管理用プログラムであり、下記の特徴を持つものである。
１）各生産者に対して動的にバッファを割り当てる。すなわち、各生産者のデータ書き込みが進捗していくのに伴い、それまでのバッファの使用状況に基ずいて、各生産者へのバッファ割り当てを行う。
２）バッファに空き領域がなくなった（全バッファ・エレメントを使い終えた）場合、最も古いデータを記録しているバッファ・エレメントを再利用する。これにより、リング・バッファと同様、バッファ全体として常に最新のデータを記録する。
３）バッファ・エレメントの先頭にはデータの最初から記録する。これにより各データの長さが一定でない場合でもデータの先頭を容易に見つけることができる。このデータの最初とは、一回の書込み操作によって、バッファに書き込む１データの先頭を言い、換言すれば、バッファ・エレメントの先頭にデータの境界を合わせてデータを書き込むことを言う。
４）各生産者が書き込むデータの発生時刻順を示す値を各データに付与して時系列データ記録用バッファに書き込む。
【００３７】
このような本発明を実現するために、管理手段に初期化手段、割り当て手段、書き込み手段、管理データ保持手段を持たせ、各バッファ・エレメントには、リストのためのポインタ（２種類）を持たせる。複数のバッファ・エレメントは、管理データ保持手段内の各ポインタを用いた２種類のリスト（全体リストおよび生産者リスト）で管理する。初期化手段は、時系列データ生産者からのデータをバッファに記録する前準備として、全体リストと生産者リストの初期化を行なう。
【００３８】
割り当て手段は、全体リストの先頭にあるバッファ・エレメントを全体リストから取り外し、バッファ割り当てを要求したデータ生産者に対応するリストの末尾につなぐ機能を有する。書き込み手段は、生産者が生成したデータをバッファ・エレメント内部に書き込む機能を有する。このとき、バッファ・エレメント内の領域が不足する場合には、割り当て手段に新しいバッファを割り当てる要求を行い、その結果として得られる新しいバッファに対してデータの書き込みを行なう。
【００３９】
本発明は、複数の時系列データ生産者が存在する場合のデータ記録を効率的に行なうため、時系列データ記録用バッファを、複数のバッファ・エレメントに分割して管理するようにしている。この際に、本発明では、データ生産者毎のリストにより管理し、また、本発明では、時刻順に並べたリストの２種類のリストを用いて、バッファを管理している。
このような本発明の時系列データ記録用バッファ管理方法および時系列データ記録用バッファ管理用プログラム等の発明について、実施の形態により、説明する。まず、第１実施形態の構成について、図面を参照して詳細に説明する。
【００４０】
図１は、本発明の時系列データ記録用バッファ管理方法に使用される装置またはシステムの構成例を示し、第１の実施形態では、図１に示すように、管理手段１と、複数のバッファ・エレメント（本実施形態ではa〜hおよびｊ）２と、複数の時系列データ生産者（データ生産手段）３と、時計４とを含む構成となっている。そして前記管理手段１は、初期化手段１０１と、割り当て手段１０２と、書き込み手段１０３と、管理データ保持手段１０４とを有して構成される。
また図２に示すように、各バッファ・エレメント２（２−ａ〜２−ｊ）は、全体リスト用ポインタ２０１と、生産者リスト用ポインタ２０２と、生産者番号情報部２０３と、データ書き込み位置情報部２０４と、データ記録領域部２０５とを含んで構成される。
【００４１】
全体リストポインタは、全体リストのポインタである。生産者リスト用ポインタ２０２は、生産者リストのポインタである。生産者番号情報部２０３は、生産者毎にその生産者を識別する番号の情報を管理する機能を有する。データ書き込み位置情報部２０４は、データ書き込み位置の情報を保存し管理する機能を有している。データ記録領域部２０５は、全体リスト、生産者リストなどを含むデータをその領域に分けて記録する機能を有する。本実施形態では、全体リスト、生産者リストをリストポインタで構成されることとしたが、バッファ・エレメントの順序を管理できる方法であれば、特に制限されず使用でき、本発明では、このような他のバッファ・エレメントの順序を管理できる方法も含む。
【００４２】
本実施形態では、時系列データ生産者の数を３として説明するが、この数は単に説明をするための例示に過ぎず、この数は、２以上の任意の整数である。
【００４３】
管理手段１に含まれる各手段（１０１〜１０４）は、それぞれ、図３に示すように、概略つぎのように動作する。
初期化手段１０１は、時系列データ生産者３（３−１〜３−３）からのデータをバッファに記録する準備操作（初期化操作：ステップＳ１）を行なう。
【００４４】
書き込み手段１０３は、時系列データ生産者３からのデータ書き込み要求を受け（ステップＳ２）、そのデータをバッファに書き込む。その際に、書き込み先となるバッファ・エレメント２のデータ記録領域が不足する場合には（ステップＳ３でＹｅｓの場合）、割り当て手段１０２を用いて新たなバッファを割り当て、そのバッファを新たな書き込み先バッファ・エレメント２とする。
【００４５】
割り当て手段１０２は、書き込み手段１０３からのバッファ割り当て要求を受け、未使用のバッファ・エレメントが存在する場合（ステップＳ４でＹｅｓの場合）には、未使用の未使用のバッファ・エレメントを割り当て、未使用のバッファ・エレメントが存在しない場合（ステップＳ４でＮｏの場合）には、時刻の最も古いデータを記録しているバッファを割り当てる（ステップＳ５）。
【００４６】
なお前記時系列データ生産者３は、少なくともＣＰＵまたはＭＰＵなどのプロセッサであってよく、また、バッファ・エレメントは記憶部の各エリアに分割したものであってもよく、各バッファ・エレメントは同一または別個独立した記憶媒体で構成されていてもよい。また、時系列データ生産者３がＣＰＵまたはＭＰＵなどのプロセッサの場合には、それらのプロセッサが管理手段の処理（たとえばポインタの付け替え処理など）を実行してもよい。すなわち、本実施形態では、時系列データ生産者３と、管理手段と、バッファ・エレメントとが、１台のコンピュータで構成されていてもよい。これらの手段がバス等を介して接続されていることが好ましい。
【００４７】
また、本実施形態では、時系列データ生産者３は、コンピュータ（クライアントコンピュータ）であり、管理手段は、別のコンピュータであり（ＣＰＵまたはＭＰＵを有するサーバであり）、バッファ・エレメントは、管理手段に支配される管理手段と独立したかまたは管理手段内のストレージであってよい。バッファ・エレメントが管理手段内に存在する構成の場合には、このバッファ・エレメントは、揮発性および／または永続型（パーマネント：不揮発型）の記憶媒体などの記憶手段となっており、このような管理手段は、通信手段を有するサーバ側のコンピュータである。また時系列データ生産者３は、パーソナルコンピュータ、携帯電話、ＰＤＡなどの端末であってよい。これらは、管理手段と、有線又は無線を介して、接続されているようにしてもよい。
【００４８】
これらの接続手段は、インターネット回線であってもよく、ＷＡＮ（wide area network）あるいはＬＡＮ（local area network）であってもよい。また前記管理手段は、前記したインターネット回線等でバッファ・エレメントと接続されていてもよい。この場合、バッファ・エレメントは、データベースとしてインターネット上に存在してもよく、前記管理手段に従属するスレーブ型コンピュータ内のバッファエレメントとして含まれていてもよい。
【００４９】
〈第１実施形態の動作例〉
本発明に係る時系列データ記録用バッファ管理方法等の第１の実施形態の動作例について、詳細に説明する。
本発明に係る時系列データ記録用バッファ管理方法に使用される装置またはシステムは、管理手段と、複数のバッファ・エレメントと、複数の時系列データ生産手段と、時計時刻設定手段とを有して構成される。
【００５０】
管理手段は、時系列データ生産者から生産されたデータに対して動的にバッファを割り当て、バッファに空き領域がなくなった場合には、最も古いデータを記録しているバッファ・エレメントを再利用して、バッファ全体として常に最新のデータを記録し、バッファ・エレメントの先頭にはデータの最初から記録するように管理する機能を有する。
バッファエレメントは、時系列データ生産手段（時系列データ生産者）から生産されたデータを管理手段の命令に従って保存するエレメントである。
時系列データ生産手段（たとえば、時系列データ生産者）は、あるデータを時系列に生産するための入力装置またはＣＰＵあるいはＭＰＵである。
【００５１】
まず、初期化手段１０１は、時系列データ生産者３からのデータをバッファに記録する準備操作（初期化操作）として、各時系列データ生産者３−１〜３−ｎに対応するリストに１個ずつバッファ・エレメント２−ａ〜２−ｊ（この例ではa, d, g）をつなぎ、他のバッファ・エレメントを全体リストにつなげる。ここで、「つなげる」操作は、「リスト構造を作成するために用意したポインタ領域に、バッファ・エレメントのアドレスを設定する」操作を意味している。すなわち、この例では、管理データ保持手段１０４内の「生産者１  先頭」および「生産者１  末尾」というポインタ変数（２変数）に、バッファ・エレメントｄのアドレス、管理データ保持手段１０４内の「生産者３  先頭」および「生産者３  末尾」というポインタ変数（２変数）に、バッファ・エレメントｇのアドレスを設定することが、時系列データ生産者３−１〜３−ｎに対応するリストに、バッファ・エレメントを「つなげる」操作である。また、他のバッファ・エレメントを全体リストに「つなげる」操作は、たとえば、以下のように操作する。
【００５２】
管理データ保持手段１０４内の「全体  先頭」ポインタに、バッファ・エレメントｂのアドレスを設定し、
バッファ・エレメントｂ内の全体リスト用ポインタに、バッファ・エレメントｃのアドレスを設定し、
バッファ・エレメントｃ内の全体リスト用ポインタに、バッファ・エレメントｅのアドレスを設定し、
バッファ・エレメントｅ内の全体リスト用ポインタに、バッファ・エレメントｆのアドレスを設定し、
バッファ・エレメントｆ内の全体リスト用ポインタに、バッファ・エレメントｈのアドレスを設定し、
バッファ・エレメントｈ内の全体リスト用ポインタおよび管理データ保持手段１０４内の「全体  末尾」ポインタに、バッファ・エレメントｊのアドレスを設定する操作である。
【００５３】
また、「バッファ・エレメントにつながっている」とは、前記「バッファ・エレメントにつなげる」操作の結果、管理データ保持手段内の各ポインタおよび各バッファ・エレメントのリスト用ポインタによって適切なつながりが設定されて、各バッファ・エレメント間に順序付けられた関係が設定された状態を言う。上記「「全体  先頭」および「生産者１  先頭」などは、本明細書では、全体リストおよび生産者リスト中の先頭のことを意味するように使用する。
【００５４】
この初期化操作により、
1」 全体リストにつながるバッファ・エレメントは b, c, e, f, h, jという状態になり、
2」生産者リストの1, 2, 3は夫々a, d, gという図４に示すような状態になる。
【００５５】
次に、書き込み手段の動作について説明する。最初にバッファ・エレメント２を管理する各リストが図１の状態になっているものとして説明する。
まず、時系列データ生産者３がバッファに書き込むデータを生成すると、時系列データ生産者は、書き込み手段を起動する。この際すなわち書き込み手段を起動後に、時系列データ生産者は、書き込むべきデータ（たとえばその内容とサイズ）および自分の番号（この説明では生産者３（時系列データ生産者３−３））を書き込み手段に渡す。
【００５６】
書き込み手段１０３は、末尾ポインタの指すバッファ・エレメント（この説明ではｊ）を書き込み先バッファ・エレメントとし、そのデータ書き込み位置情報を参照してデータ記憶領域の残りサイズを調べ、書き込むべきデータを書き込むための空き領域があるかどうかを判断する。
その結果、書き込み可能と判断された場合には、書き込み手段は、データ書き込み操作を以下のように実行する。
【００５７】
すなわち、書き込み先バッファ・エレメントにおいて、
1」データ書き込み位置情報が指示したデータ記憶領域に、時系列データ生産者から渡された書き込むべきデータと、時計を参照して得た現在時刻を示す値とを、時刻情報として書き込み、次いで、
2」データ書き込み位置情報を更新、すなわち、書き込んだデータおよび時刻情報が、データ記憶部２０５内で占める領域の大きさ（データのサイズ）を、そのバッファ・エレメント２内データ書き込み位置情報部２０４に保持された値に加算する操作を行なうことである（ステップＳ１）。
【００５８】
また、書き込み手段１０３が、前記したデータを書き込むための空き領域があるかどうかを判断した結果、書き込み不可能（領域不足）であると判断した場合には（ステップＳ３／Ｙｅｓ）、書き込み手段１０３は、割り当て手段１０２に対して、書き込み手段１０３が対応している時系列データ生産者３−３の番号（この説明例では３）を渡して、バッファ・エレメントの割り当て要求を行なう。
【００５９】
割り当て手段１０２は、書き込み手段１０３からバッファ・エレメント割り当て要求を受け取ると、まず、管理データ保持手段内の全体リスト管理情報の先頭ポインタの指すバッファ・エレメント（この説明では全体リスト管理情報の先頭ポインタのa）を取り外す。
この取り外し操作は、
1)取り外すバッファ・エレメント（この説明ではバッファ・エレメント２−aの全体リスト用ポインタの内容（この説明ではバッファ・エレメントa 内の（図１の管理データ保持手段１０４内にある「全体  先頭  ａ」の内容）d）を、全体リスト管理情報の先頭ポインタａにコピーする。
2）取り外すバッファ・エレメント（この説明ではバッファ・エレメントa）の生産者リスト用ポインタの内容（この説明ではバッファ・エレメントa 内のb）を、取り外すバッファ・エレメント（この説明ではバッファ・エレメントa）の生産者番号情報に格納された生産者番号（この説明ではバッファ・エレメントａ内の1）に対応する管理データ保持手段１０４内のリスト管理情報の先頭ポインタにコピーするというようにして、管理情報の変更を行なう。
【００６０】
次に、割り当て手段１０２は、取り外したバッファ・エレメント２（この説明ではバッファ・エレメントa）を、書き込み手段より渡された生産者番号（この例では図１に示す管理データ保持手段１０４内の生産者3）に対応するリストの末尾ｌにつなぎ込むために、全体リスト更新操作と、つなぎ込み操作と、バッファ・エレメント２の初期化操作とを実行する。ここで、「生産者３に対応するリストの末尾に、バッファａをつなぎこむ操作」とは、生産者３に対応するリストに関してバッファ・エレメントが、図１に示すように、ｇ、ｈ、ｊの順に３つがつながった状態（バッファ・エレメントａをつなぎこむ前の状態）を、ｇ、ｈ、ｊ、ａの順に４つがつながった状態（バッファ・エレメントａをつなぎこんだ後の状態）に変更する操作を行なうことである。
【００６１】
以下の説明では、書き込み手段１０３により渡された生産者番号に対応する管理データ保持手段１０４内のリスト管理情報の末尾ポインタが指し示すバッファ・エレメント２（この説明ではバッファ・エレメントj）を、操作対象エレメント（操作対象バッファ・エレメント）と呼ぶ。まず、全体リスト更新操作について説明すると、この操作は、操作対象のエレメント（この説明ではバッファ・エレメントj）を全体リストの末尾ｌにつなぎこむ操作である。
【００６２】
すなわち、操作対象エレメント（この場合はバッファ・エレメントj）の示す値を、全体リストの末尾ポインタが指し示すバッファ・エレメント（この説明ではb）の全体リスト用ポインタ、および、管理データ保持手段１０４内の全体リスト管理情報の末尾ポインタｂ（図１の管理データ保持手段１０４内の「全体  末尾  ｂ」）にコピーする。
【００６３】
取り外したバッファ・エレメントのつなぎ込み操作は、取り外したエレメント（この説明ではa）を示す値を、操作対象エレメントの生産者リスト用ポインタ、および、書き込み手段より渡された生産者番号（この例では図１の管理データ保持手段１０４内の生産者3）に対応するリスト管理情報の末尾ポインタｌ（図１の管理データ保持手段１０４内の「生産者３  末尾ｌ」）にコピーする操作である。
【００６４】
バッファ・エレメントの初期化操作は、
1)取り外したバッファ・エレメント（この説明ではバッファ・エレメントa）のデータ書き込み位置情報を、自分（この説明ではバッファ・エレメントa）のデータ記憶領域の先頭を示す値にし、
2)取り外したバッファ・エレメント（この説明ではバッファ・エレメントa）の生産者番号情報に、書き込み手段１０３から渡された生産者番号（この例では図１の管理データ保持手段１０４内の「生産者３」の番号）３を書き込む、という管理情報の変更の操作である。
【００６５】
以上、本実施形態で実行したバッファ割り当て操作例である図１のバッファ状態に対して実施された結果を、図５に示す。
割り当て手段１０２による割り当て操作が完了した直後のバッファ・エレメント２では、そのデータ書き込み位置情報が、データ記憶領域の先頭を指している（すなわち、これはデータ記録領域全体が空き領域であることを意味する）ため、書き込み手段１０３によるデータ書き込みが可能な状態となる。
【００６６】
書き込み手段１０３は、割り当てられたバッファ・エレメント２を書き込み先バッファ・エレメントとして、前記のデータ書き込み操作を行なう。
以上の操作により、全体リストには、現在書き込み対象となっているバッファ・エレメントを除く全バッファ・エレメントが、各バッファ・エレメントが使い終わった時刻順に並ぶことになる。また、各時系列データ生産者に対応する各リストには、その時系列データ生産者からのデータが書き込まれた順に並ぶことになる。
【００６７】
以上説明したような操作により、バッファに記録されている各データにはバッファに書き込まれた時刻が付与されることになるので、全時系列データ生産者が生成したデータを、その時刻順に取り出す（読み出し操作）ことが可能である。なお、本実施形態では、説明上、ひとつの時系列データ生産者が、バッファ・エレメントの要求、設定、使用および／または開放などを行なうことを前提にしている。これらは、実際の応用においてもバッファ・エレメントの要求、設定、使用および／または開放などを複数の異なるステップあるいはプロセスで行なわれこともあり、このような場合でも、本発明の方法を自在に変更あるいは変形して適用可能である。
【００６８】
本発明の第１実施形態では、各時系列データ生産者のデータ書き込み先バッファ・エレメントが別に設けられる構成としたため、データ書き込みにおける他のデータ生産者との間のバッファ使用について、排他制御を不要にすることができる。
【００６９】
また、本発明の第１の実施例では、各時系列データ生産者へのバッファ割り当ては動的に行なわれ、割り当ての順番は各バッファ・エレメントが使い終わった時刻順となるように構成されているため、固定サイズのバッファを各時系列データ生産者に割り当てる制御発生するバッファ利用効率の問題、すなわち、バッファに記録されている時系列データの時間長が短くなる問題は生じない。
【００７０】
さらに、本発明の第１の実施例では、各バッファ・エレメントではデータ記録領域の先頭からデータが書き込まれるように構成されているため、最新の時系列データを絶えず記録する状況において、最古（に近い）データの先頭（区切り）を認識することができる。
【００７１】
本発明では、上述したように、各時系列データ生産者に対して、動的にバッファを割り当てている。すなわち、各時系列データ生産者のデータ書き込みが進捗していくのに伴い、それまでのバッファの使用状況に基ずいて、各生産者へのバッファ割り当てを行っている。
【００７２】
〈第２実施形態〉
次に、本発明の第２の実施形態の構成について図面を参照して詳細に説明する。
図６に示すように、本発明の第２の実施形態は、管理手段１と、複数のバッファ・エレメント（本実施形態ではa〜hおよびｊ）２と、複数の時系列データ生産者３と、時計４と、順序カウンタを含む構成となっている。そして前記管理手段１は、第１実施形態の構成と同様に、初期化手段１０１と、割り当て手段１０２と、書き込み手段１０３と、管理データ保持手段１０４とを有して構成されている。バッファ・エレメントの構成は第１実施形態と同じである。また、これらの手段の動作は、第１実施形態と略同一である。
ただし、本実施形態では、第１実施形態と異なり時系列生産者には、時計（時刻設定手段）４が内蔵されており、また順序カウンタ５をさらに有して構成されている。
【００７３】
次に、本発明の第２の実施形態の動作について、第１の実施形態と異なる部分について、詳細に説明する。
初期化操作では、第１の実施形態で行なった初期化操作に加え、順序カウンタをリセット（予め決められた初期値を設定）する操作を行なう（ステップＳ１'）。
時系列データ生産者３が、バッファ・エレメントに書き込むデータを生成した際の書き込み手段の起動では、時系列データ生産者３から書き込み手段１０３に渡す情報として、第１の実施形態で記載した情報に加え、時系列生産者３が内部に持っている時計を参照して得た現在時刻を示す値を時系列生産者３は、書き込み手段１０３に渡す。
【００７４】
書き込み手段１０３は、末尾ポインタの指すバッファ・エレメントを、書き込み先バッファ・エレメントとし、そのデータ書き込み位置情報を参照してデータ記憶領域の残りのサイズを調べ、書き込むべきデータを書き込む空き領域があるかどうかを判断する（ステップＳ３'）。
その結果、書き込み手段１０３が書き込み可能であると判断すれば、書き込み手段１０３は、データ書き込み操作を行なう（ステップＳ６）。
【００７５】
この書き込み操作は、
１)順序カウンタから現在の順序値を取得するとともに、その値に１を加えた値を順序カウンタに設定し、
２)データ書き込み位置情報が指し示すデータ記憶領域に、時系列データ生産者から渡された、書き込むべきデータと、時刻を示す値（時刻情報）と、順序カウンタを参照して得た現在の順序値とを書き込み、
３)データ書き込み位置情報を更新、すなわち、書き込むべきデータと時刻情報と順序値のサイズ分、書き込み位置を進める（更新する）操作を行なう。なお、判断の結果が書き込み不可能（領域不足）の場合の動作は、第１の実施形態と同じである。
【００７６】
またデータの読み出しにおいては、バッファに記録されている各データにバッファに書き込まれた順序を示す情報が付与されているので、データを読み出す際は、その順序順にデータを取り出すことで、全時系列データ生産者が生成したデータを、それらが書き込まれた順と同じ順序で読み出すことができる。
【産業上の利用可能性】
【００７７】
本発明によれば、時系列データ生産者が生産するデータの内、最近のデータを記録する目的で設置する時系列データ記録用バッファの制御に適用できる。
特に、
１）時系列データ生産者は複数存在する。
２）各生産者が作成した各データは、そのデータ作成時刻順に取り出す必要がある。
３）各データの長さは一定していない（可変長）、という環境下で使用する時系列データ記録用バッファの制御に適している。
【図面の簡単な説明】
【００７８】
【図１】本発明に係る時系列データ管理方法に使用される装置またはシステムの構成例を示す図である。
【図２】バッファエレメント２の構成例を示す図である。
【図３】管理理手段１に含まれる各手段（１０１〜１０４）の概略の動作例を示すフローチャートである。
【図４】初期化操作により、得られる状態例の説明をするための図である。
【図５】初期化操作によって得られた（つながった）状態の例を示した図である。
【図６】本発明に係る時系列データ管理方法に使用される装置またはシステムの他の構成例を示す図である。
【符号の説明】
【００７９】
１    管理手段
２（２−ａ〜２−ｊ）    バッファ・エレメント
３    時系列データ生産者（時系列データ生産手段）
４    時計
５    順序カウンタ
１０１    初期化手段
１０２    割り当て手段
１０３    書き込み手段
１０４    管理データ保持手段
２０１    全体リスト用ポインタ
２０２    生産者リスト用ポインタ
２０３    生産者番号情報部
２０４    データ書き込み位置情報部
２０５    データ記録領域部
【図１】
2006079463.tif 000003
【図２】
2006079463.tif 000004
【図３】
2006079463.tif 000005
【図４】
2006079463.tif 000006
【図５】
2006079463.tif 000007
【図６】
2006079463.tif 000008