JP5058209B2 - ストリームデータ処理において逆再生を行うデータ処理システム - Google Patents

ストリームデータ処理において逆再生を行うデータ処理システム Download PDF

Info

Publication number
JP5058209B2
JP5058209B2 JP2009124611A JP2009124611A JP5058209B2 JP 5058209 B2 JP5058209 B2 JP 5058209B2 JP 2009124611 A JP2009124611 A JP 2009124611A JP 2009124611 A JP2009124611 A JP 2009124611A JP 5058209 B2 JP5058209 B2 JP 5058209B2
Authority
JP
Japan
Prior art keywords
data
output
input
time
input data
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.)
Expired - Fee Related
Application number
JP2009124611A
Other languages
English (en)
Other versions
JP2010272022A (ja
Inventor
順一 今西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009124611A priority Critical patent/JP5058209B2/ja
Priority to US13/322,074 priority patent/US8751566B2/en
Priority to PCT/JP2010/001467 priority patent/WO2010134242A1/ja
Publication of JP2010272022A publication Critical patent/JP2010272022A/ja
Application granted granted Critical
Publication of JP5058209B2 publication Critical patent/JP5058209B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/005Reproducing at a different information rate from the information rate of recording
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/32Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
    • G11B27/322Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier used signal is digitally coded
    • G11B27/323Time code signal, e.g. on a cue track as SMPTE- or EBU-time code

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Television Signal Processing For Recording (AREA)

Description

本発明は、ストリームデータ処理に関する。
ストリームデータ処理を行うコンピュータシステムでは、一般に、時々刻々と到来するデータ(以下、「時系列データ」と言うことがある)が扱われる。時系列データは、ストリームデータを構成する一つの要素である。言い換えれば、ストリームデータは、時系列データの集合である。
時系列データは、その時系列データの発生時刻を表す情報であるタイムスタンプを含んでいる。ストリームデータ処理では、時系列データに対する演算(例えば、グループ分け、重複排除、和・差・積集合演算、集計演算、或いは、結合演算)が行われる。
ただし、時系列データは、無限に到来し続けるので、演算を行うためには、ストリームデータ(多数の時系列データ)を有限のデータ集合に区切る必要がある。ストリームデータを有限のデータ集合に区切る方法としては、例えば、スライディングウィンドウ方式を利用する方法がある(例えば非特許文献1)。
スライディングウィンドウ方式によれば、時系列データの生存期間が設定される。ストリームデータ処理は、例えば、以下の処理:
(1)設定された生存期間を基に、図2に示すように、入力されたストリームデータ41から、或る時点における演算対象となるウィンドウ(データ集合)42を取得する処理;
(2)データ集合42に含まれている時系列データ(入力データ)45に対する演算を行う処理;
(3)演算結果を含んだ出力データ46のデータ集合43内の出力データ46を順次に出力する処理;
を含む。この結果、順次に出力された出力データ46でストリームデータ44が構築される。
B.Babcock、 S.Babu、 M.Datar、 R.Motwani and J.WIDom、 "Modelsand issues in data stream systems"、 In Proc. ofPODS 2002、 pp.1-16.(2002)
以下、適宜、時刻について「古い」/「新しい」と表現する。例えば、第1の時刻が第2の時刻より古いとは、第1の時刻が第2の時刻より過去であることを意味する。一方、第1の時刻が第2の時刻より新しいとは、第1の時刻が第2の時刻より未来であることを意味する。
ところで、時々刻々と到来した時系列データ(入力データ)は一旦蓄積される。そして、イベント(例えば、障害或いは障害の兆候)が検出された場合に、イベントが検出された時刻(以下、イベント検出時刻)よりも過去の時刻を表すタイムスタンプを含んだ入力データを基に、イベントに関連する事象(例えば、イベントの発生原因、以下、イベント関連事象)を探索する処理(以下、探索処理)が行われる。具体的には、例えば、基準となる時刻(以下、基準時刻)が設定され、その時刻を基準に、探索処理が行われる。探索処理では、例えば、基準時刻以降の時刻を表すタイムスタンプを含んだ入力データが、時間順に(時間軸方向に沿って)処理される。すなわち、最古タイムスタンプ(基準時刻以降の時刻を表すタイムスタンプのうち最も古い時刻を表すタイムスタンプ)を含んだ入力データから先に、複数の入力データが、タイムスタンプが表す時刻が古い順に処理される。イベント関連事象は、例えば、イベント関連事象に関わる入力データを基に生成された出力データから発見される。
イベント関連事象は、探索処理において発見される事象であるため、通常、イベント関連事象が生じた時刻(以下、イベント関連時刻)を探索処理の開始前に知ることはできない。そのため、基準時刻の設定が難しい。
イベント検出時刻から基準時刻までの時間が長いと、基準時刻がイベント関連時刻よりも過去の時刻となる可能性が高く、故に、探索処理でイベント関連事象が見つかる可能性が高い。しかし、この場合、イベント関連事象が見つかるまでに処理しなければならない時系列データがたくさん存在する可能性があり、それ故、イベント関連事象が見つかるまで、長い時間を要する可能性がある。
一方、イベント検出時刻から基準時刻までの時間が短いと、基準時刻がイベント関連時刻より未来の時刻となる可能性が高く、故に、探索処理でイベント関連事象が見つからない可能性が高い。この場合、基準時刻を変えて探索処理をやり直さなければならない。探索処理のやり直しが生じると、結局、イベント関連事象が見つかるまでに長い時間を要してしまう。
そこで、本発明の目的は、検出されたイベントに関連する事象を見つけるのに要する時間を短くすることにある。
基準時刻(例えばイベント検出時刻)以前の時刻を表すタイムスタンプのうち最も新しい時刻を表すタイムスタンプ(以下、基準最新スタンプ)を含んだ入力データから先に、複数の入力データが、入力データ内のタイムスタンプが表す時刻が新しい順に処理される。つまり、ストリームデータ処理において逆再生が行われる。
「ストリームデータ処理における逆再生」とは、ストリームデータ処理における正再生とは逆の順序での再生のことである。
「ストリームデータ処理における正再生」とは、時間順(以下、「正順」と言うことがある)での再生のことである。具体的には、ストリームデータ処理における正再生とは、図3Aに示すように、入力データ内のタイムスタンプが表す時刻が古い順に、複数の入力データをデータ集合(ウィンドウ)に入力して処理し、その処理の結果として生成された複数の出力データ(51〜55)を、出力データ内のタイムスタンプが表す時刻が古い順(T=1、2、3、4、5の順)に出力することである。この場合、或る時刻を基準に時間軸方向に沿って入力データが処理される。
一方、「ストリームデータ処理における逆再生」とは、時間順とは逆の順序(以下、「逆順」と言うことがある)での再生のことである。具体的には、ストリームデータ処理における逆再生とは、図3Bに示すように、入力データ内のタイムスタンプが表す時刻が新しい順に入力データをデータ集合に入力し、入力された入力データを処理し、その処理の結果として生成された複数の出力データ(61〜65)を、出力データ内のタイムスタンプが表す時刻が新しい順(T=5、4、3、2、1の順)に出力することである。ここで、出力データが持つ処理の結果は、正再生時のタイムスタンプが同じ出力データが持つ処理の結果と同じである。この場合、ある時刻を基準に時間軸方向と逆方向に沿って入力データが処理される。
本発明によれば、基準最新スタンプを含んだ入力データから先に、複数の入力データが、逆順(すなわち時間を遡る順序)で処理される。これにより、イベント関連事象を見つけるのに要する時間を短くすることが期待できる。
なお、ストリームデータ処理における逆再生を採用するにあたり、幾つかの点、例えば以下の4つの点に留意することが望ましい。なお、以下の説明では、1つの入力データは、タイムスタンプ(T)と値(V)を含んでおり、1又は複数の入力データを用いた演算により生成された1つの出力データは、タイムスタンプ(T)と値(V)の合計とを含むとする。従って、演算は、集計であるとする。
<第1の留意点>。
第1の留意点は、出力データの作成に関する。
図4Aに示すように、正再生では、入力データ(71〜72)が入力されると、そのときに生存している入力データの演算の結果が出力される(73〜74)。例えば、入力データ71が入力された場合、生存している入力データは入力データ71のみのため、入力データ71と同じタイムスタンプ及び値(T=1、合計=1)を含んだ出力データ73が出力される。次に、入力データ72が入力された場合、生存している入力データは入力データ71及び72のため、入力データ71のV=1と入力データ72のV=2との合計である合計=3と、入力データ72のT=2とを含んだ出力データ74が出力される。
このとき、演算対象の入力データ(71〜72)のデータ集合は、ある時点から過去に遡った期間の中で発生したデータの集合である。つまり、入力データ72が入力されたとき、そのデータよりも過去に発生した入力データ71が、演算対象のデータ集合中に存在している。
従って、単純に時間軸と逆方向に入力データを入力して演算を行っても(つまり単純に逆再生を行っても)、演算結果を正しく再生することができない。具体的には、例えば、図4Bに示すように、逆再生では、タイムスタンプが表す時刻が新しい順に入力データが入力されるので、入力データ82が入力され、その後で、入力データ81が入力される。入力データ82が入力されたときには、本来なら入力データ81が演算対象のデータ集合中に存在しているはずだが、存在しない状態で演算が行われる。このため、誤った合計=2を含んだ出力データ84が出力されてしまう。また、入力データ81が入力されたときには、入力データ82は演算対象のデータ集合中に存在しないはずなのに、その入力データ82が存在する状態で演算が行われる。このため、誤った合計=3を含んだ出力データ83が出力されてしまう。
そこで、入力データの生存期間を考慮して逆再生を行う必要がある。生存期間は、例えば、時間と最新データ個数のいずれかで指定(表現)される。「最新データ個数」とは、データ集合(ウィンドウ)に入れられる入力データの最大数である。
生存期間が時間で指定されている場合は、入力データ内のタイムスタンプが補正される。補正後のタイムスタンプが表す時刻は、補正前のタイムスタンプが表す時刻に生存期間を足すことにより算出される時刻である。補正後のタイムスタンプが表す時刻は、正順での消滅時刻(正再生において、入力データが消滅する時刻)、言い換えれば、逆順での入力時刻(逆再生において、入力データ内のタイムスタンプが表す時刻)である。一方、補正前のタイムスタンプが表す時刻は、正順での入力時刻(正再生において、入力データ内のタイムスタンプが表す時刻)、言い換えれば、逆順での消滅時刻(逆再生において、入力データが消滅する時刻)である。従って、逆再生では、入力データは、その入力データ内の補正前のタイムスタンプが表す時刻(言い換えれば、その入力データ内の補正後のタイムスタンプが表す時刻に生存期間が足された時刻)に、その入力データが消滅することになる。図4Cに示すように、入力データ(92〜91)内の補正後のタイムスタンプが表す時刻(T=5、T=4)に、入力データが存在しないとして演算が行われ、補正前のタイムスタンプが表す時刻(T=2、T=1)に、入力データ(92〜91)が存在するとして演算が行われる(図4Cの例では生存期間は3である)。この結果、正再生での入力時刻(T=2、T=1)の時点における演算対象のデータ集合の状態を正しく再生すること、つまり、本来の出力データ(94〜93)を得ることができる。出力データ(94〜93)は、出力データ94、93の順に出力される。つまり、正再生で出力される出力データ73、74と同じ出力データ93、94が、正再生の場合と逆の順序で出力される。
生存期間が最新データ個数で指定された場合は、入力データ内のタイムスタンプが表す時刻が新しい順に入力データが入力されたとき、データ集合の状態は、そのデータ集合に最後に入力された入力データ内のタイムスタンプが表す時刻での状態ではなく、そのデータ集合に最初に入力された入力データ内のタイムスタンプが表す時刻での状態である。つまり、データ集合の状態に対応した時刻は、指定された最新データ個数に応じてずれることになる。従って、この場合、出力データ内のタイムスタンプを、指定された最新データ個数に応じて補正する必要がある。
<第2の留意点>。
第2の留意点は、出力データを出力するタイミングに関する。
図5Aに示すように、正再生では、入力データ(101〜103)をウィンドウ(データ集合)100に入力するたびに出力データ(演算結果を含んだデータ)を出力することができる。
しかし、図5Bに示すように、逆再生では、T=10を含んだ入力データがウィンドウ110に入力されても、その時点では正しい演算結果は得られない。このケースでは、データ集合が正しく再現された時点、つまり、ウィンドウ110に、データの生存期間で指定した分の数(例えば6個)の入力データ(111〜116)が入力された時点で、最新の演算結果の出力を開始する必要がある。
そこで、生存期間が時間で指定された場合は、正再生では、最新の時刻を表すタイムスタンプを含んだ入力データが正順でデータ集合に入力されたときに、そのデータ集合が最新の状態となる。一方、逆再生では、データ集合に入力された入力データのうち最新の時刻を表すタイムスタンプを含んだ入力データが消滅するときが、そのデータ集合が最新の状態となる。したがって、最新の時刻を表すタイムスタンプを含んだ入力データが消滅した時点から、以降の最新の演算結果(出力データ)が出力される。
生存期間が最新データ個数で指定された場合は、データ集合の中が入力データで埋まったとき、つまり、指定された最新データ個数分の入力データがデータ集合に入力されたときが、そのデータ集合が最新の状態のときである。そのときから、以降の最新の演算結果(出力データ)が出力される。
<第3の留意点>。
第3の留意点は、データ集合の結合を行う際の同期化に関する。すなわち、データの生存期間や出力タイミングを考慮すると、或る入力データを入力した時点で、複数のデータ集合の間で、データ集合がどの時点(タイムスタンプ)の状態であるかがずれる場合がある。したがって、複数のデータ集合の結合を行う際、データ集合がどの時点の状態であるかのずれを考慮して、データ集合の同期化を行う必要がある。
<第4の留意点>。
第4の留意点は、ユーザが指定した出力タイミングと、逆再生での出力タイミングとの関係に関する。具体的には、例えば、入力データが入力された時に演算結果を出力するとユーザから指定されている場合は、逆再生では、入力データが消滅するときに演算結果が出力される。一方、入力データが削除される時に演算結果を出力するとユーザから指定されている場合は、逆再生では、入力データが入力されるときに演算結果が出力される。
本発明に係るストリームデータ処理技術は、様々な分野、例えば、株の取引データに基づく株価予測、たくさんの車両から収集された稼動データ(例えば、速度、進行方向などを表すデータ)を利用した渋滞予測、WEBサーバへのアクセスの監視、機器の稼動状況の監視、物流業等での車両等の運行管理、蓄積されたビジネスデータ(ビジネスに関するデータ)に基づく新たな経営指標の作成、収集された複数の診察データ(例えば、複数の患者の心電図データやスキャン画像データ等)に基づく異常パターンの発見などに適用することが期待できる。
図1は、本発明の一実施形態に係るデータ処理システムが適用された計算機システム3の構成を示す。 図2は、ストリームデータ処理の説明図である。 図3Aは、正再生の結果を示す。図3Bは、逆再生の結果を示す。 図4Aは、正再生の結果の具体例を示す。図4Bは、単純な逆再生の結果の具体例を示す。図4Cは、生存期間が考慮された逆再生の結果の具体例を示す。 図5Aは、正再生での出力可能なタイミングの説明図である。図5Bは、逆再生での出力可能なタイミングの説明図である。 図6は、データ蓄積装置4のデータ構造を示す。 図7は、クエリ保存装置5のデータ構造を示す。 図8Aは、クエリ131のデータ構造を示す。図8Bは、クエリ定義情報23のデータ構造を示す。 図9Aは、入力データ141のデータ構造を示す。図9Bは、データ集合151のデータ構造を示す。図9Cは、内部データ161のデータ構造を示す。図9Dは、出力データ171のデータ構造を示す。 図10は、再生制御プログラム16内でのデータの流れを示す。 図11は、入力データ141の入力処理の流れを示す。 図12は、演算およびデータ出力の処理の流れを示す。 図13は、同期処理を行う必要がない場合で、且つ生存期間133が時間で指定されている場合の、出力データ171の生成方法を示す。 図14は、同期処理を行う必要がない場合で、且つ生存期間133が最新データ個数で指定されている場合の、出力データ171の生成方法を示す。 図15は、出力可否判断の処理の流れを示す(但し、出力方法135の指定は無し)。 図16は、データ集合151の同期化の流れを示す。 図17は、データ集合151の同期化処理のうち、結合演算の対象となるデータ集合151のコピーとタイムスタンプ142の組を、データ集合保存部32に保存した後、実際に同期化を行う処理の具体例を示す。 図18は、出力可否判断の処理の流れを示す(但し、出力方法135の指定は有り)。 図19は、出力方法135として「一定間隔」が指定されている場合の出力処理の流れを示す。 図20は、図19のステップS273とステップS274の具体例を示す。 図21は、クエリの連結処理の流れを示す。 図22は、第1の条件(データ集合が正常になる条件)が真になる条件が書かれた表を示す。 図23は、第2の条件(クエリ定義情報23内の出力方法135と、演算結果のデータタイプ164との関係)が真/偽になる条件が書かれた表を示す。 図24は、ストリームデータ処理において逆再生を行うことの一つの効果の説明図である。 図25は、データ集合151の同期化処理のうち、結合演算の対象となるデータ集合151のコピーとタイムスタンプ142の組をデータ集合保存部32に保存するまでの処理であって、生存期間が時間で指定されている場合の具体例を示す。 図26は、データ集合151の同期化処理のうち、結合演算の対象となるデータ集合151のコピーとタイムスタンプ142の組をデータ集合保存部32に保存するまでの処理であって、生存期間が最新データ個数で指定されている場合の具体例を示す。
図1は、本発明の一実施形態に係るデータ処理システムが適用された計算機システム3の構成を示す。
計算機システム3は、1又は複数の計算機で構成されている。計算機システム3は、例えば、第1の監視システムと第2の監視システムを有する。第1の監視システムは、簡易的な情報を有する時系列データで構成される第1のストリームデータを処理し、第2の監視システムは、詳細な情報を有する時系列データで構成される第2のストリームデータを処理する。第1の監視システムが、第1のストリームデータを処理することによって何らかのイベントを検出し、第2の監視システムが、第2のストリームデータを処理することによって、第1の監視システムによって検出されたイベントに関する事象を探索する。第1及び第2の監視システムの少なくとも一方を、コンピュータプログラムで実現することができる。後述する再生制御プログラム16は、第2の監視システムに相当する。
計算機システム3は、1又は複数のストリームデータソース1から、ネットワーク2を通じて、時系列データを受信する。
ストリームデータソース1は、時々刻々と時系列データを送信する。時系列データは、例えば、温度センサ等のデバイスから取得された値(情報)とその時系列データが作成された時刻を表すタイムスタンプとを含んでいる。
計算機システム3には、データ蓄積装置4と、クエリ保存装置5が接続される。データ蓄積装置4とクエリ保存装置5は、例えば、計算機システム3に接続された外部記憶装置で実現されても良いし、計算機システム3に内蔵されている記憶装置で実現されても良い。データ蓄積装置4とクエリ保存装置5は、別々の記憶装置で実現されても良いし、一つの記憶装置で実現されても良い。
データ蓄積装置4には、ストリームデータソース1から受信された時系列データが蓄積される。データ蓄積装置4のデータ構造を図6に示す。データ蓄積装置4は、ストリームデータテーブル121を保持する。ストリームデータテーブル121は、時系列データ毎に、ストリームID(122)と、タイムスタンプ(123)と、データ項目1(124)〜データ項目N(125)とを含む(Nは自然数)。ストリームID(122)は、時系列データの送信元のストリームデータソース1の識別子である。タイムスタンプ123は、時系列データが有するタイムスタンプが表す時刻である。データ項目1(124)〜データ項目N(125)は、時系列データに含まれている値を示す。なお、データ項目が1つだけの場合もあり得る。なお、時系列データは、このようにテーブル形式で管理することに限らず、他種の形式で管理されても良い。
クエリ保存装置5は、クエリ131を保存する。クエリ131は、特定の言語、例えば、SQL(Structured Query Language)に類似した宣言型の検索言語CQL(Continuous
Query Language)で記述される。クエリ保存装置5は、ファイルシステムであり、図7に示すように、ファイル名の付いたクエリ131をファイル形式で保存する。クエリ131は、解析されて、解析結果を表す情報であるクエリ定義情報が、主記憶装置11に展開される。
図8Aは、クエリ131のデータ構造を示し、図8Bは、クエリ定義情報23のデータ構造を示す。クエリ131及びクエリ定義情報にそれぞれ含まれる情報は実質的に同一なので、同種の情報には同じ参照符号が付されている。
クエリ131及びクエリ定義情報23は、ストリームID(132)、生存期間(133)、演算定義(134)及び出力方法(135)を含む。
ストリームID(132)は、クエリ131がどのストリームデータソース1から送信された時系列データを解析するかを示す情報(つまりストリームデータソース1の識別子)である。
生存期間(133)は、時系列データの生存期間を表す情報である。生存期間133を指定する(表現する)方法は幾つか考えられるが、本実施形態では、時間と最新データ個数のいずれかで指定される。
演算定義(134)は、時系列データに対してどのような演算を行うかを表す情報である。
出力方法(135)は、演算結果をどのように出力するかを表す情報である。出力方法(135)として指定される値は、例えば、時系列データが入力された時に演算結果を出力する「入力時」、時系列データが消滅するときに出力する「消滅時」、入力時と消滅時の両方で演算結果を出力する「入力時・消滅時」、及び、一定時間間隔で演算結果を出力する「一定間隔」のいずれかである。
再び図1を参照する。計算機システム3は、主記憶装置11と、操作装置12と、プロセッサ13と、入力装置14と、出力装置15とを有する。
操作装置12は、マンマシンインタフェースである。具体的には、例えば、操作装置12は、ユーザから探索処理の指示を受け付ける。操作装置12が探索処理の指示を受けると、後述のクエリ制御部22およびデータ投入部21に、探索処理の指示が通知される。
プロセッサ13は、典型的にはマイクロプロセッサであり、主記憶装置11にロードされた再生制御プログラム16を実行する。このプログラム16は、可搬型の記憶媒体(例えばCD−ROM)或いは遠隔のサーバ等のプログラムソースからインストールされたプログラムである。
入力装置14は、ストリームデータソース1又はデータ蓄積装置4から入力される時系列データを受け付ける。その時系列データは、後述の入力処理部31に入力される。また、入力装置14は、クエリ保存装置5が保持するクエリ131を受け付ける。そのクエリ131は、後述のクエリ制御部22に入力される。
出力装置15は、後述の出力処理部37が出力した出力データを、計算機システム3の外部に出力する。
主記憶装置11は、再生制御プログラム16を記憶する。再生制御プログラム16は、データ投入部21と、クエリ制御部22と、再生制御部24といった機能を有する。データ投入部21、クエリ制御部22、再生制御部24(後述する入力処理部31、データ集合保存部32、同期処理部33、演算処理部34、出力処理部37、出力判断部35及び出力データ生成部36)のうちのいずれか、或いは、それらのうちのいずれかの少なくとも一部分が、集積回路化するなどしてハードウェアで実現されても良い。以下の説明において、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサ13によって処理が行われるものとする。
再生制御プログラム16が利用するデータとして、図9Aに示す入力データ141と、図9Bに示すデータ集合151と、図9Cに示す内部データ161と、図9Dに示す出力データ171とがある。
入力データ141は、データ蓄積装置4から入力された時系列データ(すなわち、入力されたストリームデータの一データ要素)である。入力データ141は、タイムスタンプ(142)、データ内容(143)、ストリームID(146)を有する。タイムスタンプ(142)は、図6に示したテーブル121に登録されているタイムスタンプ123である。データ内容(143)は、データ項目1(144)〜データ項目N(145)を有し、それは、そのテーブル121に登録されているデータ項目1(124)〜データ項目N(125)である。ストリームID(146)は、そのテーブル121に登録されているストリームID(122)である。
データ集合151は、クエリ131に記述した演算定義134の演算対象となる入力データ141の集合である。データ集合151は、入力データ141の他に、ストリームID(152)を含む。ストリームID(152)は、このデータ集合151に対応するクエリ131が有するストリームID(132)である。つまり、データ集合151は、クエリ131毎に作成される。
内部データ161は、再生制御プログラム16内で演算結果を受け渡すために用いられるデータである。内部データ161は、タイムスタンプ(162)、データ内容(163)、データタイプ(164)を有する。タイムスタンプ(162)は、この内部データ161の基になった1又は複数の入力データ141内のタイムスタンプ142に基づいて決定された時刻を表す。データ内容(163)は、データ項目1(165)からデータ項目M(166)といった演算結果を含む。データタイプ(164)は、演算結果のタイプを表す情報である。データタイプ(164)としては、例えば、「入力」と「消滅」がある。データタイプ「入力」は、内部データ161内の演算結果が、データ集合151の中に新しい入力データが入力(追加)されたときの演算結果であることを意味する。データタイプ「消滅」は、内部データ161内の演算結果が、データ集合151の中で生存期間が終了した入力データ141が消滅したときの演算結果であることを意味する。
出力データ171は、演算結果として出力されるデータである。出力データ171は、入力データ141と同様、タイムスタンプ(172)、データ内容(173)、ストリームID(176)を持つ。タイムスタンプ(172)は、この出力データ171の基になった1又は複数の入力データ141内のタイムスタンプ142に基づいて決定された時刻、具体的には、この出力データ171に対応する内部データ161内のタイムスタンプ(162)である。データ内容(173)は、データ項目1(174)からデータ項目L(175)といった演算結果を含んでいる。これらは、具体的には、この出力データ171に対応する内部データ161内のデータ内容(163)に含まれているデータ項目1(165)からデータ項目M(166)である。ストリームID(176)は、出力データ171を時系列データととらえたときのデータ系列のIDを示し、後述の出力処理部37で割り振られる。
図10は、再生制御プログラム16内でのデータの流れを示す。
入力データ141は、データ投入部21から入力処理部31に入力され、入力処理部31からデータ集合保存部32に保持される。そして、入力データ141の集合であるデータ集合151が、データ集合保存部32から、同期処理部33を介して又は介することなく、演算処理部34に入力される。ここで、データ集合保存部32から演算処理部34にデータ集合151が入力されるとき、および、同期処理部33から演算処理部34にデータ集合151が入力されるときには、データタイプ164、および、データ集合151がどの時刻の状態であるかを示すタイムスタンプ142も一緒に入力される。また、データ集合保存部32から同期処理部33にデータ集合151が入力されるときには、データタイプ164も一緒に入力される。内部データ161は、演算処理部34から出力処理部37に入力され、出力処理部37から出力判断部35及び出力データ生成部36に入力される。出力データ171は、出力データ生成部36によって生成され、出力処理部37に入力される。出力処理部37に入力された出力データ171は、再生制御プログラム16の外に出力される。
図1に示したクエリ制御部22は、例えば、ユーザから、操作装置12を通じて、探索処理の指示(例えば逆再生の指示)、及び、クエリ131のファイル名を受ける。ファイル名を受けた場合、クエリ制御部22は、入力装置14を通じて、クエリ保存装置5から、ユーザから指定されたファイル名を有するクエリ131を取得する。クエリ131を取得した場合、クエリ制御部22は、そのクエリ131を解析し、その解析結果を表すクエリ定義情報23(図8B参照)を保持する(例えば主記憶装置11に格納する)。クエリ制御部22は、クエリ定義情報23を再生制御部24に渡し、また、データ投入部21に、データ入力の指示を出す。データ投入部21に指示を出す際、クエリ制御部22は、クエリ定義情報23中のストリームID(132)を渡す。
データ投入部21は、クエリ制御部22からデータ入力の指示およびストリームID(132)を受けた場合、入力装置14を通じて、データ蓄積装置4から、クエリ制御部22から渡されたストリームID(132)を含んだ入力データ141を、タイムスタンプ123が表す時刻が新しい順に取得し、取得した入力データ141を入力処理部31に入力する。
再生制御部24は、クエリ制御部22から渡されたクエリ定義情報23の内容に基づいて、ストリームデータ処理における再生を制御する。再生としては、前述したように、正再生と逆再生がある。再生制御部24は、再生制御部24は、入力処理部31、データ集合保存部32、同期処理部33、演算処理部34、出力処理部37、出力判断部35及び出力データ生成部36を有する。これらの機能(31〜37)は、クエリ定義情報23を参照することができる。
入力処理部31は、データ投入部21から入力データ141を受け、クエリ定義情報23内の生存期間133を参照する。生存期間133が時間で指定されている場合は、入力処理部31は、入力データ141内のタイムスタンプ142が表す時刻に生存期間133を足すことで正順での消滅時刻を算出し、タイムスタンプ142を正順での消滅時刻を表すタイムスタンプ142に補正し、補正後のタイムスタンプを含んだ入力データ141をデータ集合保存部32に入力する。生存期間133が最新データ個数で指定されている場合は、入力処理部31は、入力データ141をそのままデータ集合保存部32に入力する。
データ集合保存部32は、クエリ定義情報23内のストリームID(132)を参照し、そのストリームID(132)と同じストリームID(152)を持つデータ集合(ウィンドウ)151を保持する。また、データ集合保存部32は、入力処理部31から入力データ141を受け、その入力データ141内のストリームID(146)と同じストリームID(152)を有するデータ集合151に、その入力データ141を追加する。また、データ集合保存部32は、データ集合151内の入力データ141のうち、そのデータ集合151に対応するクエリ定義情報23内の生存期間133が表す期間が経過した入力データ141を削除する。データ集合保存部32は、入力データ141の追加および削除の際、その追加または削除が行われたデータ集合151を、演算処理部34に渡す。その際に、データ集合保存部32は、入力データ141の追加の場合は、データタイプ164「入力」を、そのデータ集合151と一緒に演算処理部34に渡す。一方、入力データ141の削除の場合は、データ集合保存部32は、データタイプ164「消滅」を、演算処理部34に、データ集合151と一緒に渡す。また、データ集合保存部32は、そのデータ集合151がどの時刻の状態であるかを示すタイムスタンプ142を、演算処理部34に、そのデータ集合151と一緒に渡す。ただし、クエリ定義情報23から、データ集合151が結合演算の対象であり且つ同期化が必要であることが特定された場合、データ集合保存部32は、データ集合151に入力データ141が追加または削除されても、データ集合151を演算処理部34に渡さない。そのデータ集合151は同期処理部33に渡される。ここでデータ集合保存部32は、入力データ141の追加の場合は、データタイプ164「入力」を、入力データ141の削除の場合は、データタイプ164「消滅」を、同期処理部33に、データ集合151と一緒に渡す。
同期処理部33は、クエリ定義情報23を参照し、演算定義134に従って、複数のデータ集合151に対して結合処理を行う場合は、タイムスタンプのずれが発生するので、データ集合151の同期化を行い、同期化した複数のデータ集合151を、演算処理部34に渡す。まず、同期処理部33は、データ集合保存部32が保持するデータ集合151に入力データ141が追加または削除されたとき、そのデータ集合151のコピーを、データ集合保存部32に保存する。また、その際、同期処理部33は、別系統の入力データ141で、データ集合151のコピーを保存してあるものを取得し、その取得したデータ集合151のコピーと、入力データ141が追加または削除されたデータ集合151のコピーを、演算処理部34に渡す。その際、入力データ141追加の場合は、データタイプ164「入力」が、データ集合151のコピーと一緒に演算処理部34に渡され、一方、入力データ141の削除の場合は、データタイプ164「消滅」が、データ集合151のコピーと一緒に演算処理部34に渡される。データ集合151のコピーが演算処理部34に渡された後、同期処理部33は、取得した別系統のデータ集合151のコピーを削除する。
演算処理部34は、データ集合保存部32または同期処理部33から、1又は複数のデータ集合151とデータタイプ164とを受ける。演算処理部34は、クエリ定義情報23内の演算定義134に従って、受けたデータ集合151を用いて演算を行う。演算処理部34は、演算結果と受けたデータタイプ164とを含んだ内部データ161を出力処理部37に渡す。
出力判断部35は、出力処理部37から内部データ161を受け、演算結果を出力してよいかどうかを判断し、判断結果を出力処理部37に返す。出力可と判断されるための条件は、下記第1及び第2の条件の両方が満たされていることである。内部データ161は、第2の条件の判定で用いられる。
第1の条件は、データ集合151が正常な状態であることである。入力データ141が正順で処理された場合、データ集合151の正常な最新の状態は、最新の入力データをそのデータ集合151に入力した時刻での状態である。図22の表321に、第1の条件が真になる条件(つまり第1の条件が満たされる条件)が示されている。ただし、クエリ定義情報23の演算定義134に結合処理が定義されている場合は、同期処理部33においてデータ集合151が正常な状態であることを確認する。この場合、出力判断部35においては、第1の条件は常に真と判断される。
すなわち、生存期間133が時間で指定されており、且つ、入力データ141が逆順にデータ集合151に入力された場合、入力データ141の発生時刻と消滅時刻が入れ替わる。この場合、データ集合151の正常な最新の状態は、最新の入力データ141の消滅時刻での状態である。このため、最新の時刻を表すタイムスタンプ142を有する入力データ141(最初に入力された入力データ)が消滅した時点から、第1の条件が真と判断される。
生存期間133が最新データ個数で指定されている場合、指定した最新データ個数分の入力データがデータ集合151に入力された時点(最新データ個数分の演算結果を取得した時点)以降に、第1の条件が真と判断される。
第2の条件は、クエリ定義情報23内の出力方法135と、演算結果のデータタイプ164との関係である。第2の条件が真になる条件(つまり第2の条件が満たされる条件)が、図23の表331に示されている。
すなわち、出力方法135が「データ入力時」の場合、正順での入力データ141の入力時、つまり、逆順での入力データ141の消滅時に、演算結果を出力する必要がある。このため、このケースでは、データタイプ164が「消滅」の場合に、第2の条件が真と判断される。
出力方法135が「データ消滅時」の場合、正順での入力データ141の消滅時、つまり、逆順での入力データ141の入力時に、演算結果を出力する必要がある。このため、このケースでは、データタイプ164が「入力」の場合に、第2の条件が真と判断される。
出力方法135が「データ入力・消滅時」または「一定間隔」の場合、および、出力方法135が指定されていない場合は、第2の条件は常に真である。
出力判断部35は、第1の条件と第2の条件が両方とも真である場合に、出力可と判断する。いずれかの条件が偽である場合は、出力判断部35は、出力不可と判断する。判断結果は、出力処理部37に返される。
出力データ生成部36は、出力処理部37から内部データ161を受け、クエリ定義情報23を参照して、以下の方法で出力データ171を生成し、生成した出力データ171を出力処理部37に返す。
図13は、同期処理を行う必要がない場合で、且つ生存期間133が時間で指定されている場合の、出力データ171の生成方法を示す。
内部データ161内のデータタイプ164が「入力」の場合、この内部データ161内のタイムスタンプ162は、正順での入力データ141の消滅時刻である。このため、演算結果は、入力データが存在しないとして演算された結果を出力する必要がある。
また、データタイプ164が「消滅」の場合は、この内部データ161内のタイムスタンプ162は、正順での入力データ141の入力時刻である。このため、演算結果は、消滅した入力データ141が存在するとして演算された結果を出力する必要がある。
そこで、いずれのケースでも、出力データ生成部36は、直前のデータ内容(入力データ141の入力前又は消滅前での演算結果)214と、最新の内部データ211内のタイムスタンプ212とを含んだ出力データ215を生成する。直前のデータ内容(演算結果)214が無い場合は、出力データ215は生成されない。この場合は、データ集合151が正しい状態でない場合に該当するので、出力データ171が無くても問題ない。
出力データ生成部36は、以上の処理を実行するために、クエリ定義情報23内の生存期間133が時間で指定されている場合は、内部データ161を、次の演算結果を含んだ内部データ161を受けるまで保存する。
なお、ここで、「入力データが存在しない」または「消滅した入力データが存在する」としての演算を、演算処理部34で行わず、出力データ生成部36が、保持した直前の演算結果を用いて行う理由は、演算処理部34のアルゴリズムを、正再生と逆再生で共通にすることにある。これにより、処理の高速化等の理由で演算処理部34のアルゴリズムを変更した場合、変更後のアルゴリズムを正再生と逆再生の両方に適用することができる。
図14は、同期処理を行う必要がない場合で、且つ生存期間133が最新データ個数で指定されている場合の、出力データ171の生成方法を示す。
この場合、最新データ個数分の入力データ141を基に生成された複数の内部データ内のタイムスタンプ(保存されている複数のタイムスタンプ)のうち、最後に受けた内部データ(最新の内部データ)内のタイムスタンプが、最古の時刻を表す。しかし、正順では、データ集合151の最新の状態は、データ集合151中の最新タイムスタンプが表す時刻での状態である。従って、このケースでは、出力データ生成部36は、保存されているタイムスタンプのうち最も新しい(最も過去に保存された)タイムスタンプ225と最新のデータ内容(演算結果)223と含んだ出力データ224を生成する。具体的には、例えば、最新データ個数分の入力データ141を基に生成された複数の内部データ内のタイムスタンプが、T=10、9、8、7、6、5である場合、T=5の内部データ(最新の内部データ)が入力されたときに、T=5の内部データ内のデータ内容(演算結果)と、最新のタイムスタンプ(最も過去に保存されたタイムスタンプ)T=10とを含んだ出力データ224が生成される。
出力処理部37は、演算処理部34で行った演算結果の内部データ161を受け、受けた内部データ161を出力判断部35に渡し、出力判断部35から出力可否の判断結果を受ける。また、出力可否にかかわらず、出力処理部37は、演算結果の内部データ161を出力データ生成部36に渡し、出力データ171を出力データ生成部36から受ける。出力可否判断の結果が出力可であったら、出力処理部37は、以下の方法で、出力データ171を出力する。
すなわち、出力処理部37は、クエリ定義情報23内の出力方法135が「データ入力時」、「データ消滅時」、或いは「データ入力・消滅時」の場合、出力データ生成部36から受け取った出力データ171を、そのまま出力する。
出力方法135が「一定間隔」であり、且つ、出力データ生成部36から受けた出力データ171が、出力判断部35が出力不可と判断した場合を除いて最初に受けた出力データである場合、出力処理部37は、出力データ171をそのまま出力する。その出力データ171内のタイムスタンプ172が表す時刻は、次回出力時のタイムスタンプリスト生成の起点となる。
出力方法135が「一定間隔」であり、且つ、出力データ生成部36から受けた出力データ171が、出力判断部35が出力不可と判断した場合を除いて最初に受けた出力データでない場合(受けた出力データ171が2回目以降に受けた出力データの場合)、タイムスタンプ生成の起点から新しく受けた出力データ171内のタイムスタンプ172が表す時刻までの間で、指定時間間隔でタイムスタンプのリストが作成される。ここで、起点は含まれない。タイムスタンプのリストを作成した場合、出力処理部37は、そのタイムスタンプで、受けた出力データ171のデータ内容173を持つ出力データ171を新たに生成し、その新たに生成した出力データ171を出力する(出力データ171は、単数の場合、複数の場合、或いは無い場合がある)。出力データ171が出力された場合、出力処理部37は、タイムスタンプ生成の起点を、生成したタイムスタンプ中の最も古いものに置き換えて、次回出力時のタイムスタンプリスト生成の起点とする。
直前の出力データ171が存在しない場合は、出力判断部35に関する上記第1の条件が満たされていない(つまり、「データ集合が正常な状態でない」に該当する)ので、データを出力する必要はない。
次に、ストリームデータ処理においての逆再生の具体的な流れを説明する。
図11は、入力データ141の入力処理の流れを示す。
まず、ステップS181において、データ投入部21は、クエリ制御部22からデータ入力の指示を受けた場合、データ蓄積装置4から、入力データ141をタイムスタンプ123の時刻が新しい順(つまり逆順)に取得する。データ投入部21は、取得した入力データを入力処理部31に入力する。なお、このステップS181では、データ入力の指示を受けた時刻以前の時刻を表すタイムスタンプ123を含んだ入力データ141が逆順に取得されるが、それに代えて、データ入力の指示を受けた時刻よりも或る過去の時刻(例えばイベント検出時刻)以前の時刻を表すタイムスタンプ123を含んだ入力データ141が逆順に取得されても良い。
次に、ステップS182において、入力処理部31は、クエリ制御部22から渡されたクエリ定義情報23を参照し、生存期間133の指定方法を調べる。生存期間133が時間で指定されている場合は、ステップS183が行われる。生存期間133が最新データ個数で指定されている場合は、ステップS183が行われることなくステップS184が行われる。
ステップS183において、入力処理部31は、入力データ141内のタイムスタンプ142が表す時刻に、生存期間133として指定された時間を足すことにより、正順での消滅時刻を算出する。入力処理部31は、入力データ141のタイムスタンプ142を、算出した消滅時刻を表すタイムスタンプ142に更新する。
ステップS184において、入力処理部31は、入力データ141をデータ集合保存部32に入力する。データ集合保存部32は、入力データ141を、その入力データ141内のストリームID(146)と同じストリームID(152)を有するデータ集合151に追加する。
図12は、演算およびデータ出力の処理の流れを示す。図12は、説明を分かり易くするために、クエリ131内に出力方法135の指定が無いとした場合の流れを示す。出力方法135の指定が有る場合の流れは、後述する。
まず、ステップS191において、データ集合保存部32は、データ集合151に対して入力データ141の追加または削除が行われた場合、そのデータ集合151を演算処理部34に渡す。この際、データ集合保存部32は、入力データ141の追加の場合はデータタイプ164「入力」を、入力データ141の削除の場合はデータタイプ164「消滅」を、データ集合151と一緒に演算処理部34に渡す。演算処理部34は、データ集合保存部32からデータ集合151及びデータタイプ164を受けた場合、受けたデータ集合151を用いて演算を実行し、演算結果を含んだ内部データ161を生成する。
次に、ステップS192において、演算処理部34は、内部データ161に、データ集合保存部32から受けたデータタイプ164を設定する。
次に、ステップS193において、演算処理部34は、内部データ161を出力処理部37に渡す。出力処理部37は、受けた内部データ161を出力判断部35に渡す。出力判断部35は、その内部データ161を基に出力可否を判断し、その判断の結果を出力処理部37に返す。出力可否判断の処理の流れについては、後述する。
次に、ステップS194において、出力処理部37は、出力判断部35から出力可否の判断結果を受けた場合、判断結果に関わらず、出力データ生成部36に内部データ161を渡す。出力データ生成部36は、クエリ定義情報23を参照し、演算定義134の内容と生存期間133の指定方法を調べる。演算定義134に結合処理が定義されている場合は、ステップS201が行われる。結合処理が不要で、且つ生存期間133が時間で指定されている場合は、ステップS195が行われる。結合処理が不要で、且つ生存期間133が最新データ個数で指定されている場合は、ステップS197が行われる。
ステップS195において、出力データ生成部36は、出力データ生成部36の中に保存されている内部データ(直前の演算結果を含んだ内部データ)161を参照する。出力データ生成部36は、最新の演算結果を含んだ内部データ161内のタイムスタンプ162と、直前の演算結果を含んだ内部データ161内のデータ内容163とを含んだ出力データ171を生成する。出力データ生成部36は、その生成した出力データ171を出力処理部37に渡す。次に、ステップS196において、出力データ生成部36は、直前の演算結果を含んだ内部データ161を削除し、最新の演算結果を含んだ内部データ(最古のタイムスタンプを含んだ内部データ)161を出力データ生成部36の中に保存する。
ステップS197において、出力データ生成部36は、出力データ生成部36の中に保存されている複数のタイムスタンプのうち最も前に保存したタイムスタンプ(それら複数のタイムスタンプのうちの最新のタイムスタンプ)と、最新の演算結果を含んだ内部データ161内のデータ内容163とを含んだ出力データ171を生成する。出力データ生成部36は、その生成した出力データ171を出力処理部37に渡す。次に、ステップS198において、出力データ生成部36は、保存されている複数のタイムスタンプの中で最も前に保存したタイムスタンプを削除し、最新の演算結果を含んだ内部データ内のタイムスタンプを出力データ生成部36の中に保存する。
ステップS201において、出力データ生成部36は、最新の演算処理結果である内部データ161のタイムスタンプ162とデータ内容163を含んだ出力データ171を生成する。出力データ生成部は、その生成した出力データ171を出力処理部37に渡す。
次に、ステップS199において、出力処理部37は、出力データ生成部36から出力データ171を受け、且つ、出力判断部35から受けた出力判断結果が出力可を表す場合は、ステップS200に進み、出力不可の場合は、処理を終了する。出力可の場合、ステップS200において、出力処理部37は、出力データ171を出力する。出力データ171の出力は、出力装置15を通じて、計算機システム3の外部に出力する場合と、主記憶装置11の中の別のプログラム(別の再生制御部24を含む)に出力する場合がある。
図15は、出力可否判断の処理の流れを示す。この処理の流れは、図12のステップS193で行う処理の流れである。ただし、クエリ131での出力方法135の指定は無いとする。出力方法135の指定が有る場合については、後述する。
まず、ステップS231において、出力判断部35は、クエリ定義情報23を参照して、演算定義134に結合処理が定義されているか、および、生存期間133が、時間指定か最新データ個数指定かを調べる。演算定義134に結合処理が定義されている場合は、ステップS235が行われる。ステップS235では、出力判断部35は、出力可と判断し、その判断結果を出力処理部37に返し、処理を終了する。結合処理が不要で、且つ生存期間133が時間で指定されている場合は、ステップS232が行われる。結合処理が不要で、且つ生存期間133が最新データ個数で指定されている場合は、ステップS233が行われる。
ステップS232において、出力判断部35は、最初の入力データ141が消滅したかどうかを判断する。具体的には、例えば、出力判断部35は、出力処理部37から連続的に渡される内部データ161のデータタイプ164を参照し、初めて受けたデータタイプ164が「消滅」であれば、最初の入力データ141が消滅したと判断する。消滅したと判断したならば、ステップS235が行われる。ステップ235では、出力判断部35は、出力可と判断して、その判断結果を出力処理部37に返し、処理を終了する。消滅していないと判断したならば、ステップS234が行われる。ステップS234では、出力判断部35は、出力不可と判断し、その判断結果を出力処理部37に返し、処理を終了する。
ステップS233において、出力判断部35は、生存期間133に指定された最新データ個数分、データ集合151にデータが入力されたかを判断する。具体的には、例えば、出力判断部35は、出力処理部37から渡された内部データ161のうちデータタイプ164「入力」を含んだ内部データ161の数をカウントする。そのカウント値が、最新データ個数に基づく値(例えば最新データ個数それ自体)であれば、ステップS235が行われる。ステップS235では、出力判断部35は、出力可と判断し、その判断結果を出力処理部37に返し、処理を終了する。上記カウント値が、最新データ個数に基づく値でなければ、ステップS236が行われる。ステップS236では、出力判断部35は、出力不可と判断し、その判断結果を出力処理部37に返し、処理を終了する。
図16は、データ集合151の同期化(データ集合151同士の結合処理)の流れを示す。結合されたデータ集合151に対して、図12に示した演算および出力処理が行われる。結合処理の対象となるデータ集合151は、クエリ定義情報23(クエリ131)に指定されている。
まず、ステップS241において、同期処理部33は、結合処理の対象となるデータ集合151に入力データ141の追加または削除が行われた場合、クエリ定義情報23の生存期間133を参照して、生存期間が時間指定か最新データ個数指定かを調べる。時間指定の場合は、ステップS242が実行される。最新データ個数指定の場合は、ステップS246が実行される。
ステップS242において、同期処理部33は、最初の入力データ141が消滅したかどうかを判断する。具体的には、例えば、同期処理部33は、データ集合保存部32からデータ集合151と一緒に渡されるデータタイプ164を参照して、初めて受けたデータタイプ164が「消滅」であれば、最初の入力データ141が消滅したと判断する。消滅したと判断したならば、ステップS243が行われる。消滅していないと判断したならば、処理を終了する。ステップS243では、同期処理部33は、データ集合保存部32から受取ったデータ集合151のコピーを、同期処理部33の中で保存し、ステップS244に進む。S244では、同期処理部33は、以前に図16のフローチャートを実行したとき、今回ステップS243でコピーを保存したデータ集合と同系統のデータ集合のコピーを保存したかどうかを調べ、保存していればステップS245に進む。保存していなければ、処理を終了する。S245では、同期処理部33は、今回S243でコピーを保存したデータ集合151に追加または削除した入力データ141のタイムスタンプ142を取得して、そのタイムスタンプ142と、以前にステップS243で保存したデータ集合151を組にして、データ集合保存部32に保存する。このとき、以前にS243で保存したデータ集合151は削除して、ステップS248に進む。
ステップS246において、同期処理部33は、生存期間133に指定された最新データ個数分、データ集合151にデータが入力されたかを判断する。具体的には、例えば、同期処理部33は、データ集合保存部32からデータ集合151と一緒に渡されるデータタイプ164で「入力」のものの数をカウントする。そのカウント値が、最新データ個数に基づく値(例えば最新データ個数それ自体)であれば、ステップS247が行われる。カウント値が、最新データ個数に基づく値でなければ、処理を終了する。ステップS247では、同期処理部33は、データ集合保存部32から受取ったデータ集合151と、そのデータ集合151が保持する入力データのタイムスタンプで最新(最も未来の時刻を示す)のものを組にして、データ集合保存部32に保存する。保存したら、ステップS248に進む。
ステップS248において、同期処理部33は、コピーしたデータ集合とは別系統のデータ集合のコピーが、データ集合保存部32に存在するかどうかを判断する。存在する場合は、ステップS249において、同期処理部33は、入力データ141の追加または削除が行われたデータ集合151のコピーと、既に保存されている別系統のデータ集合151のコピーと、入力データ141の追加または削除が行われたことを示すデータタイプ164とを、演算処理部34に渡す。ただし、別系統のデータ集合のコピーで、組となっているタイムスタンプが、今回データを追加または削除したデータ集合と組のものより過去ものが複数ある場合は、その過去のもののうち、最も新しい(未来の時刻を示す)ものだけを、結合演算対象として演算処理部34に渡す。次に、ステップS250において、同期処理部33は、不要になった(以降の処理で結合演算対象となることのない)データ集合のコピーを、データ集合保存部32から削除する。具体的には、データが入力または削除されたデータ集合のコピーと、それとは別系統のデータ集合のコピーの、組になっているタイムスタンプを比べて、データが新しい(未来の時刻を示す)もののデータ集合のコピーを、データ集合保存部32から削除する。ステップS248において、データ集合151のコピーが存在しない場合は、同期処理部33は、同期処理を行わず、処理を終了する。
データ集合151の同期化処理のうち、結合演算の対象となるデータ集合151のコピーとタイムスタンプ142の組を、データ集合保存部32に保存するまでの処理(図16のステップS243〜S245、ステップS247)の具体例を、図25および図26に示す。図25は、生存期間を時間指定した場合(ステップS243〜S245)で、図26は、生存期間を最新データ個数で指定した場合(ステップS247)である。
生存期間を時間指定した場合、図25において、T=1で入力データ(1713)がデータ集合に追加されると、同期処理部は、データが追加されたデータ集合のコピー(1702)を、同期処理部の中で保存する(図16のステップS243に相当)。次に、以前に今回保存したデーッタ集合のコピー(1702)と同系統のデータ集合のコピー(1701)が保存されているかどうかを調べる(図16のステップS244に相当)。図25の例では存在するので、その以前保存したデータ集合のコピー(1701)と、今回入力されたデータのタイムスタンプ(T=1)の組(1703)を、データ集合保存部32に保存する(図16のステップS245に相当)。データ集合のコピーとタイムスタンプの組(1703)をデータ集合保存部32に保存したら、元のデータ集合のコピー(1701)は削除する。
生存期間を最新データ個数指定した場合、図26において、T=1で入力データ(1721)がデータ集合に追加されると、同期処理部は、データが追加されたデータ集合(1721)をデータ集合保存部32から受け取り、そのデータ集合(1721)の中の入力データから、最新のタイムスタンプ(T=3)を探して取得する。取得したら、そのタイムスタンプ(T=3)と、データ集合(1721)の組(1722)を、データ集合保存部32に保存する。(以上、図16のステップS247に相当。)
図17は、データ集合151の同期化処理のうち、結合演算の対象となるデータ集合151のコピーとタイムスタンプ142の組を、データ集合保存部32に保存した後、実際に同期化を行う処理(図16のステップS248〜ステップS250)の具体例を示す。
同期処理部33は、図16のステップS245またはS247において、系統1のデータ集合のコピーとタイムスタンプ(T=3)の組(251)をデータ集合保存部32に保存したら、他の系統のデータ集合のコピーが存在するかを確認する(図16のステップS248に相当)。この時点で、他の系統のデータ集合のコピーは存在しないから、同期処理部33は、演算対象を演算処理部34に渡すことはしない。
同期処理部33は、図16のステップS245またはS247において、系統1のデータ集合のコピーとタイムスタンプ(T=2)の組(252)をデータ集合保存部32に保存したら、他の系統のデータ集合のコピーが存在するかを確認する(図16のステップS248に相当)。この時点で、他の系統のデータ集合のコピーは存在しないから、同期処理部33は、演算対象を演算処理部34に渡すことはしない。
同期処理部33は、図16のステップS245またはS247において、系統2のデータ集合のコピーとタイムスタンプ(T=1)の組(253)をデータ集合保存部32に保存する。
保存した後、同期処理部33は、系統1のデータ集合の各コピー(保存してある各コピー)(251、252)を取得する。そして、同期処理部33は、演算対象(256)と(257)を作成し、それらを演算処理部34に渡す(図16のステップS248およびステップS249に相当)。演算対象(256)は、系統2のデータ集合(253)と、系統1のデータ集合のコピー(251)と、系統2のデータ集合(253)に入力データ141が追加または削除されたことを示すデータタイプ(254)とを含んでいる。演算対象(257)は、系統2のデータ集合(253)と、系統1のデータ集合のコピー(252)と、系統2のデータ集合(253)に入力データ141が追加または削除されたことを示すデータタイプ(255)とを含んでいる。同期処理部33は、系統2のデータ集合(253)に対する、系統1のデータ集合(251、252)の結合処理を行ったら、組となっているタイムスタンプが未来の時刻を示す系統1のデータ集合のコピー(251、252)を削除する(図16のステップS250に相当)。
図18は、クエリ131に出力方法135の指定が有る場合の、出力可否判断の処理の流れを示す。
まず、ステップS261において、出力判断部35は、出力処理部37から内部データ161が渡された場合、クエリ定義情報23を参照して、生存期間133が、時間指定か最新データ個数指定かを判断する。生存期間133が時間で指定されている場合、ステップS262が行われ、生存期間133が最新データ個数で指定されている場合、ステップS263が行われる。
ステップS262において、出力判断部35は、最初の入力データが消滅したかどうかを判断する。判断方法は、図15のステップS232と同様である。消滅したと判断されれば、ステップS264が行われる。消滅していないと判断されれば、ステップS267が行われる。ステップS267では、出力判断部35は、出力不可と判断し、その判断結果を出力処理部37に返し、処理を終了する。
ステップS263において、出力判断部35は、生存期間133として指定された最新データ個数分、入力データがデータ集合に入力されたかを判断する。判断方法は、図15のステップS233と同様である。最新データ個数分の入力データが入力されたと判断されれば、ステップS264が行われる。最新データ個数分の入力データが入力されていないと判断されれば、ステップS269が行われる。ステップS269では、出力判断部35は、出力不可と判断し、その判断結果を出力処理部37に返し、処理を終了する。
ステップS264では、出力判断部35は、クエリ定義情報23を参照して、出力方法135の指定を調べる。出力方法135として「入力時」が指定されている場合は、ステップS265が行われる。出力方法135として「消滅時」が指定されている場合は、ステップS266が行われる。出力方法135として「入力時・消滅時」または「一定間隔」が指定されている場合は、ステップS268が行われる。ステップS268では、出力判断部35は、出力可と判断し、その判断結果を出力処理部37に返し、処理を終了する。
ステップS265では、出力処理部35は、出力処理部37から渡された内部データ161のデータタイプ164を参照する。データタイプ164が「入力」の場合は、ステップS267が行われる。ステップS267では、出力判断部35は、出力不可と判断し、その判断結果を出力処理部37に返し、処理を終了する。データタイプ164が「消滅」の場合は、ステップS268が行われる。ステップS268では、出力処理部35は、出力可と判断し、その判断結果を出力処理部37に返し、処理を終了する。
ステップS266では、出力判断部35は、出力処理部37から渡された内部データ161のデータタイプ164を参照する。データタイプ164が「消滅」の場合は、ステップS269が行われる。ステップS269では、出力判断部35は、出力不可と判断し、その判断結果を出力処理部37に返し、処理を終了する。データタイプ164が「入力」の場合は、ステップS268が行われる。出力判断部35は、出力可と判断し、その判断結果を出力処理部37に返し、処理を終了する。
図19は、出力方法135として「一定間隔」が指定されている場合の出力処理の流れを示す。なお、出力方法135が「入力時」、「消滅時」又は「入力時・消滅時」の場合、出力方法135の指定が無い場合と同様に、出力データ171がそのまま出力される。
まず、ステップS271で、出力処理部37は、出力データ生成部36から渡された出力データ171が、最初に生成した出力データかどうかを判断する。「最初に生成した出力データ」とは、対象のデータ集合を基に初めて生成された内部データに対応する出力データである。具体的には、例えば、出力処理部37は、最初に出力データ171を受けたときにフラグを立てて、そのフラグを、出力処理部37の中に保存する。フラグが立っているかどうかで、渡された出力データが最初にせいせいされた出力データかどうかが判断される。ただし、出力判断部35が出力不可と判断した場合、出力処理部37はフラグを立てない。最初の出力データである場合、ステップS272が行われ、最初の出力データでない場合は、ステップS273が行われる。
ステップS272では、出力処理部37は、受けた出力データ171を出力データとして、ステップS275に進む。
ステップS273では、出力処理部37は、タイムスタンプ生成の起点(直前に行われた出力処理のステップS276で設定された起点)から、受けた出力データ171内のタイムスタンプが表す時刻までの間で、出力方法135に指定された時間間隔でタイムスタンプのリストを生成する。ここで、起点は含まれない。
次に、ステップS274で、出力処理部37は、ステップS273で生成したタイムスタンプリストに含まれているタイムスタンプと、出力データ生成部36から受けた出力データ171内のデータ内容173とを含んだ出力データを新たに生成する。
次に、ステップS275で、出力処理部37は、生成した新たな出力データを、再生制御部24の外部に出力する。出力された出力データは、前述したように、計算機システム3の外部に出力される場合と、主記憶装置11の中の別のプログラム(別の再生制御部24を含む)に出力される場合とがあり得る。
次に、ステップS276で、出力処理部37は、生成した新たな出力データのタイムスタンプの中で最も古い(過去の)タイムスタンプが表す時刻を、新たなタイムスタンプ生成の起点として設定する。
図20は、図19のステップS273とステップS274の具体例を示す。クエリ131において、出力方法135として「一定間隔」が指定され、時間間隔=3が設定されたとする。
出力処理部37は、タイムスタンプT=10を含んだ出力データ(初めての出力データ)281が渡された場合、その初めての出力データ281を出力し、2回目のタイムスタンプ生成の起点をT=10に設定する。
出力処理部37は、タイムスタンプT=5を含んだ出力データ(2回目の出力データ)282が渡された場合、時間間隔=3に従い、起点(T=10)と2回目の出力データ282のタイムスタンプ(T=5)の間で起点を除くタイムスタンプ(T=7)を、タイムスタンプリストとして生成する。T=7は、起点T=10から、時間間隔=3を引いた値である。出力処理部37は、そのタイムスタンプリスト内のタイムスタンプT=7と、2回目の出力データ282のデータ内容とを含んだ新たな出力データ292を生成し出力する。出力データ292を出力した場合、出力処理部37は、次回(3回目)のタイムスタンプ生成の起点を、新たな出力データ中で最も古いT=7に設定する。
出力処理部37は、タイムスタンプT=0を含んだ出力データ(3回目の出力データ)283が渡された場合、時間間隔=3に従い、起点(T=7)と3回目の出力データ283内のタイムスタンプT=0との間で起点を除いたタイムスタンプ(T=4、T=1)を、タイムスタンプリストとして生成する。T=4は、起点T=7から、時間間隔=3を引いた値であり、T=1は、求まったT=4から、時間間隔=3を引いた値である。出力処理部37は、そのタイムスタンプリスト内のタイムスタンプ(T=4、T=1)と、3回目の出力データ283のデータ内容とを含んだ新たな出力データ(293、294)を生成し出力する。出力データ(293、294)を出力した場合、出力処理部37は、次回(4回目)のタイムスタンプ生成の起点を、新たな出力データ中で最も古いT=1に設定する。
図21は、クエリの連結処理の流れを示す。
「クエリの連結処理」とは、第1のクエリに従う出力データを第2のクエリに従う再生の際の入力データとし、その入力データを基に出力データを出力することである。この場合、複数の再生制御部(301、302)が使用される。
データ投入部21は、入力データ311を第1の再生制御部301に入力する。第1の再生制御部301は、再生(例えば逆再生)の結果として出力する出力データ312を、第2の再生制御部302に入力する。第2の再生制御部302が再生(例えば逆再生)の結果として出力する出力データ313が、ストリームデータ処理における再生(例えば逆再生)の結果として出力された最終的な出力データである。
以上、上述した実施形態によれば、ストリームデータ処理において逆再生が行われる。このため、基準時刻(例えば、データ投入部21がデータ入力の指示を受けた時刻)以前の時刻を表すタイムスタンプのうち最新のタイムスタンプを含んだ入力データから逆順に入力データが処理される。これにより、イベントに関する事象の検出に要する時間を短くすることが期待できる。
また、ストリームデータ処理において逆再生が可能になると、基準時刻(例えば現在時刻)から過去の入力データに基づく解析を行いながら、基準時刻から未来の入力データに基づくリアルタイムな解析を行うことが可能になり、入力データの解析をさらに効率的に行うことが期待できる。具体的には、例えば、データ投入部21は、データ蓄積装置4から、基準時刻(例えばイベント検出時刻)以前の時刻を表すタイムスタンプを含んだ入力データ141のうち最新の時刻を表すタイムスタンプを含んだ入力データ141から先に、時間の逆順に入力データを取得することに並行して、基準時刻以降の時刻を表すタイムスタンプを含んだ入力データ141のうち最古の時刻を表すタイムスタンプを含んだ入力データから先に、時間順に入力データを取得して再生制御部24(入力処理部31)に入力する。再生制御部24は、時間と逆順に入力される入力データを用いた逆再生と並行して、時間順に入力される入力データを用いた正再生を行う。再生制御部24(出力制御部37)は、逆再生の結果と正再生の結果を別々の画面(例えばグラフ)或いは同一の画面(例えばグラフ)に表示することができる。
図24に、入力ストリームデータ341内の過去の入力データの解析と未来の入力データのリアルタイムな監視を並行して行うことによる効果を示す。イベント(例えば障害兆候)の検出時刻を基準とした再生結果(過去と未来の双方向に再生された結果、つまり、逆再生と正再生の結果)を表すグラフ342が出力処理部37によって生成され表示される。これにより、ストリームデータ341を監視するユーザにとって、イベントに関する事象(例えば、イベントの発生原因)を検知することが容易であると考えられる。なお、グラフ32において、横軸は、時間を表し、縦軸は、演算結果(出力データ内のデータ内容に含まれている値)を表す。
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
1…ストリームデータソース 3…計算機システム 4…データ蓄積装置 5…クエリ保存装置 21…データ投入部 22…クエリ制御部 23…クエリ定義情報 24…再生制御部 31…入力処理部 32…データ集合保存部 33…同期処理部 34…演算処理部 35…出力判断部 36…出力データ生成部 37…出力処理部

Claims (15)

  1. 時刻を表すタイムスタンプと演算対象の値とを含んだ入力データのストリームであるストリームデータ内の入力データの生存期間と演算方法とを表す情報を含んだ定義情報を記憶する定義情報記憶部と、
    1又は複数の入力データ内の演算対象の値を用いた演算の結果を含んだ出力データの出力である再生を行う再生制御部と、
    前記ストリームデータから、或る基準時刻以前の時刻を表すタイムスタンプを含んだ入力データのうち最新の時刻を表すタイムスタンプを含んだ入力データから先に、時間の逆順に入力データを取得し、取得した入力データを前記再生制御部に入力するデータ投入部と
    を備え、
    前記再生制御部が、下記の処理:
    (a)入力された入力データを入力データのデータ集合に追加する;
    (b)前記データ集合における前記1又は複数の入力データ内の演算対象の値を用いて、前記定義情報が表す演算方法で演算を行う;
    (c)前記定義情報が表す生存期間を基に出力が可能か否かを判断する;
    (d)前記1又は複数の入力データ内のタイムスタンプと前記生存期間とに基づくタイムスタンプと、前記演算の結果とを含んだ出力データを生成する;
    (e)前記(c)の結果が肯定的であれば、前記(d)で生成された出力データを出力する、
    を行う、
    データ処理システム。
  2. 前記生存期間は、時間と、データ集合に入られる入力データの最大数である最新データ個数とのいずれかで指定されており、
    前記再生制御部は、入力処理部と、データ集合保存部と、演算処理部と、出力処理部と、出力判断部と、出力データ生成部とを有し、
    前記(a)において、前記入力処理部が、前記データ投入部から入力された入力データを前記データ集合保存部に入力し、前記データ集合保存部が、入力された入力データを前記データ集合に追加し、
    前記(b)において、前記演算処理部が、前記データ集合内の前記1又は複数の入力データ内のタイムスタンプと、それら1又は複数の入力データ内の演算対象の値を用いた演算の結果とを含んだ内部データを生成し、
    前記(c)において、前記出力判断部が、出力が可能か否かを判断し、
    前記(d)において、前記出力データ生成部が、前記出力データを生成し、
    前記(e)において、前記(c)の結果が肯定的であれば、前記出力処理部が、前記(d)で生成された出力データを出力し、
    前記出力データ生成部は、前記(b)で生成された内部データを保存し、
    (A)前記生存期間が時間で指定されている場合、
    前記(a)において、前記入力処理部が、入力される入力データ内のタイムスタンプが表す時刻を、その時刻に生存期間を足すことにより算出された時刻である正順での消滅時刻に補正し、前記データ集合保存部が、補正後のタイムスタンプを含んだ入力データをデータ集合に追加し、
    前記(c)において、前記出力判断部が、前記データ集合に最初に追加された入力データが消滅した以降であれば、出力可と判断し、
    前記(d)において、前記出力データ生成部が、最新の内部データ内のタイムスタンプと、直前の内部データ内の演算結果とを含んだ出力データを生成し、
    (B)前記生存期間が最新データ個数で指定されている場合、
    前記(c)において、前記出力判断部が、前記データ集合に最新データ個数分の入力データが入力された以降であれば、出力可と判断し、
    前記(d)において、前記出力データ生成部が、保存されているタイムスタンプのうち最も過去に保存されたタイムスタンプと、最新の内部データ内演算結果とを含んだ出力データを生成する、
    請求項1記載のデータ処理システム。
  3. 前記内部データは、更に、データタイプを表す情報を含み、
    前記内部データの基になった前記1又は複数の入力データを含んだ前記データ集合が、入力データが追加された時のデータ集合であれば、前記データタイプは「入力」という第1のタイプであり、そのデータ集合が、入力データが消滅する時のデータ集合であれば、前記データタイプは「消滅」という第2のタイプであり、
    前記定義情報は、出力方法を表す情報を含み、
    前記出力方法としては、入力データがデータ集合に追加された時に演算結果を出力する方法である「入力時」と、入力データがデータ集合から消滅する時に演算結果を出力する方法である「消滅時」とがあり、
    前記出力判断部は、前記生存期間が時間で指定されており、且つ、前記データ集合に最初に追加された入力データが消滅した以降である場合、又は、前記生存期間が最新データ個数で指定されており、且つ、前記データ集合に最新データ個数分の入力データが入力された以降である場合において、
    (X)前記出力方法が「入力時」である場合、
    (x1)前記内部データに含まれている情報が表すデータタイプが「入力」であれば、出力不可と判断し、
    (x2)前記内部データに含まれている情報が表すデータタイプが「消滅」であれば、出力可と判断し、
    (Y)前記出力方法が「消滅時」である場合、
    (y1)前記内部データに含まれている情報が表すデータタイプが「消滅」であれば、出力不可と判断し、
    (y2)前記内部データに含まれている情報が表すデータタイプが「入力」であれば、出力可と判断する、
    請求項2記載のデータ処理システム。
  4. 前記出力方法としては、入力データがデータ集合に追加された時と入力データがデータ集合から消滅する時のいずれの時にも出力する方法である「入力時・消滅時」と、一定時間間隔で演算結果を出力する方法である「一定間隔」とがあり、
    前記出力判断部は、前記生存期間が時間で指定されており、且つ、前記データ集合に最初に追加された入力データが消滅した以降である場合、又は、前記生存期間が最新データ個数で指定されており、且つ、前記データ集合に最新データ個数分の入力データが入力された以降である場合において、前記出力方法が、「入力時・消滅時」又は「一定間隔」であれば、前記内部データ内の情報が表すデータタイプに関わらず出力可と判断する、
    請求項3記載のデータ処理システム。
  5. 前記出力方法が「一定間隔」である場合、前記出力処理部は、前記(e)において、以下の処理:
    (e1)前記出力データ生成部によって生成された出力データが、最初に生成された出力データかどうかを判断する;
    (e2)前記(e1)の判断の結果が肯定的である場合、
    (e2−1)その最初に生成された出力データを出力し、
    (e2−2)その出力データ内のタイムスタンプが表す時刻を起点として設定し、
    (e3)前記(e2)の判断の結果が肯定的である場合、
    (e3−1)所定の時間間隔に従い、起点と前記生成された出力データ内のタイムスタンプが表す時刻の間で起点を除く時刻を表すタイムスタンプを生成し、
    (e3−2)生成されたタイムスタンプ毎に、そのタイムスタンプと、前記生成された出力データ内の演算結果とを含んだ新たな出力データを生成して出力し、
    (e3−3)前記(e3−2)で最後に出力された出力データ内のタイムスタンプが表す時刻を起点として設定する、
    を行う、
    請求項4記載のデータ処理システム。
  6. 前記再生制御部は、前記生存期間が時間で指定されている場合、
    前記(a)において、入力される入力データ内のタイムスタンプが表す時刻を、その時刻に生存期間を足すことにより算出された時刻である正順での消滅時刻に補正し、補正後のタイムスタンプを含んだ入力データをデータ集合に追加し、
    前記(c)において、前記データ集合に最初に追加された入力データが消滅した以降であれば、出力可と判断し、
    前記(d)において、最新の内部データ内のタイムスタンプと、直前の内部データ内の演算結果とを含んだ出力データを生成する、
    請求項1記載のデータ処理システム。
  7. 前記再生制御部は、前記生存期間が、データ集合に入られる入力データの最大数である最新データ個数で指定されている場合、
    前記(c)において、前記データ集合に最新データ個数分の入力データが入力された以降であれば、出力可と判断し、
    前記(d)において、保存されているタイムスタンプのうち最も過去に保存されたタイムスタンプと、最新の内部データ内演算結果とを含んだ出力データを生成する、
    請求項1記載のデータ処理システム。
  8. 前記定義情報は、出力方法を表す情報を含み、前記出力方法としては、入力データがデータ集合に追加された時に演算結果を出力する方法があり、この場合、前記再生制御部は、入力データが消滅する時の前記データ集合に基づく演算の結果についてのみ、出力を可能と判断する、
    請求項1、6又は7記載のデータ処理システム。
  9. 前記定義情報は、出力方法を表す情報を含み、前記出力方法としては、入力データがデータ集合から消滅する時に演算結果を出力する方法があり、この場合、前記再生制御部は、入力データが追加された時のデータ集合に基づく演算の結果についてのみ、出力を可能と判断する、
    請求項1、6乃至8のうちのいずれか1項に記載のデータ処理システム。
  10. 前記再生制御部は、複数のデータ集合の結合処理を行うとき、データ集合のタイムスタンプの同期をとる、
    請求項1、6乃至9のうちのいずれか1項に記載のデータ処理システム。
  11. 前記再生制御部は、前記結合処理において、以下の処理:
    (f)結合処理の対象となるデータ集合に対して入力データの追加または削除が行われた場合、そのデータ集合である第1のデータ集合のコピーを保存する;
    (g)前記第1のデータ集合とは別系統のデータ集合である第2のデータ集合のコピーが存在するかどうかを判断する;
    (h)存在すると判断された場合、前記第1のデータ集合のコピーと、前記第2のデータ集合のコピーと、入力データ141の追加または削除が行われたことを示すデータタイプ164とを含んだデータ集合ユニットを作成し、前記第2のデータ集合のコピーを削除する;
    を行い、
    前記再生制御部は、前記結合処理内の前記(h)で作成されたデータ集合ユニットを用いて演算を行う、
    請求項10記載のデータ処理システム。
  12. 前記データ投入部は、前記ストリームデータから、或る基準時刻以前の時刻を表すタイムスタンプを含んだ入力データのうち最新の時刻を表すタイムスタンプを含んだ入力データから先に、時間の逆順に入力データを取得することに並行して、前記基準時刻以降の時刻を表すタイムスタンプを含んだ入力データのうち最古の時刻を表すタイムスタンプを含んだ入力データから先に、時間順に入力データを取得して前記再生制御部に入力し、
    前記再生制御部は、前記(a)乃至(e)の処理と並行して、時間順に入力される入力データを用いた正再生を行う、
    請求項1、6乃至11のうちのいずれか1項に記載のデータ処理システム。
  13. 時刻を表すタイムスタンプと演算対象の値とを含んだ入力データのストリームであるストリームデータから、或る基準時刻以前の時刻を表すタイムスタンプを含んだ入力データのうち最新の時刻を表すタイムスタンプを含んだ入力データから先に、時間の逆順に入力データを取得し、
    取得された入力データを入力データのデータ集合に追加し、
    前記データ集合における前記1又は複数の入力データ内の演算対象の値を用いて、入力データの生存期間と演算方法とを表す情報を含んだ定義情報が表す演算方法で演算を行い、
    前記定義情報が表す生存期間を基に出力が可能か否かを判断し、
    前記1又は複数の入力データ内のタイムスタンプと前記生存期間とに基づくタイムスタンプと、前記演算の結果とを含んだ出力データを生成し、
    出力が可能と判断された場合、前記生成された出力データを出力する、
    ことをコンピュータに実行させるためのコンピュータプログラム。
  14. 記憶資源と、
    前記記憶資源に接続されたプロセッサと
    を備え、
    前記記憶資源は、時刻を表すタイムスタンプと演算対象の値とを含んだ入力データのストリームであるストリームデータ内の入力データの生存期間と演算方法とを表す情報を含んだ定義情報を記憶し、
    前記プロセッサが、下記の処理:
    (a)前記ストリームデータから、或る基準時刻以前の時刻を表すタイムスタンプを含んだ入力データのうち最新の時刻を表すタイムスタンプを含んだ入力データから先に、時間の逆順に入力データを取得する;
    (b)前記取得された入力データを入力データのデータ集合に追加する;
    (c)前記データ集合における前記1又は複数の入力データ内の演算対象の値を用いて、入力データの生存期間と演算方法とを表す情報を含んだ定義情報が表す演算方法で演算を行う;
    (d)前記定義情報が表す生存期間を基に出力が可能か否かを判断する;
    (e)前記1又は複数の入力データ内のタイムスタンプと前記生存期間とに基づくタイムスタンプと、前記演算の結果とを含んだ出力データを生成する;
    (f)出力が可能と判断された場合、前記生成された出力データを出力する;
    計算機システム。
  15. (x)時刻を表すタイムスタンプと演算対象の値とを含んだ入力データのストリームであるストリームデータから、或る基準時刻以前の時刻を表すタイムスタンプを含んだ入力データのうち最新の時刻を表すタイムスタンプを含んだ入力データから先に、時間の逆順に入力データを入力し、
    (a)入力された入力データを入力データのデータ集合に追加し、
    (b)前記データ集合における前記1又は複数の入力データ内の演算対象の値を用いて、ストリームデータ内の入力データの生存期間と演算方法とを表す情報を含んだ定義情報が表す演算方法で演算を行い、
    (c)前記定義情報が表す生存期間を基に出力が可能か否かを判断し、
    (d)前記1又は複数の入力データ内のタイムスタンプと前記生存期間とに基づくタイムスタンプと、前記演算の結果とを含んだ出力データを生成し、
    (e)前記(c)の結果が肯定的であれば、前記(d)で生成された出力データを出力する、
    データ処理方法。
JP2009124611A 2009-05-22 2009-05-22 ストリームデータ処理において逆再生を行うデータ処理システム Expired - Fee Related JP5058209B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009124611A JP5058209B2 (ja) 2009-05-22 2009-05-22 ストリームデータ処理において逆再生を行うデータ処理システム
US13/322,074 US8751566B2 (en) 2009-05-22 2010-03-03 Data processing system for reverse reproduction in data stream processing
PCT/JP2010/001467 WO2010134242A1 (ja) 2009-05-22 2010-03-03 ストリームデータ処理において逆再生を行うデータ処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009124611A JP5058209B2 (ja) 2009-05-22 2009-05-22 ストリームデータ処理において逆再生を行うデータ処理システム

Publications (2)

Publication Number Publication Date
JP2010272022A JP2010272022A (ja) 2010-12-02
JP5058209B2 true JP5058209B2 (ja) 2012-10-24

Family

ID=43125936

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009124611A Expired - Fee Related JP5058209B2 (ja) 2009-05-22 2009-05-22 ストリームデータ処理において逆再生を行うデータ処理システム

Country Status (3)

Country Link
US (1) US8751566B2 (ja)
JP (1) JP5058209B2 (ja)
WO (1) WO2010134242A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5634607B2 (ja) * 2011-07-20 2014-12-03 株式会社日立製作所 ストリームデータ処理サーバ及びストリームデータ処理プログラムを記録した記録媒体
JP6102409B2 (ja) * 2013-03-27 2017-03-29 富士通株式会社 イベント処理方法、イベント処理システム、およびイベント処理プログラム
JP6115308B2 (ja) * 2013-05-22 2017-04-19 富士通株式会社 情報処理システム、情報処理システムの制御方法、及び制御プログラム
JP6032680B2 (ja) 2013-10-31 2016-11-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 受信したデータごとに集計処理を行うシステム、方法およびプログラム
CN106911589B (zh) * 2015-12-22 2020-04-24 阿里巴巴集团控股有限公司 一种数据处理方法和设备
US20230185941A1 (en) * 2021-12-14 2023-06-15 International Business Machines Corporation Multi-partitioned global data system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003051964A (ja) * 2001-08-08 2003-02-21 Matsushita Electric Ind Co Ltd 画像処理装置
JP4687253B2 (ja) * 2005-06-03 2011-05-25 株式会社日立製作所 ストリームデータ処理システムのクエリ処理方法
JP4382012B2 (ja) * 2005-07-08 2009-12-09 シャープ株式会社 データ記録装置およびその制御方法、データ記録装置制御プログラム、ならびに該プログラムを記録した記録媒体
JP4723301B2 (ja) * 2005-07-21 2011-07-13 株式会社日立製作所 ストリームデータ処理システムおよびストリームデータ処理方法
JP4804233B2 (ja) * 2006-06-09 2011-11-02 株式会社日立製作所 ストリームデータ処理方法
JP4859558B2 (ja) * 2006-06-30 2012-01-25 株式会社日立製作所 コンピュータシステムの制御方法及びコンピュータシステム
JP2008113301A (ja) * 2006-10-31 2008-05-15 Hitachi Ltd ビデオ送信装置及びビデオ送信方法
US8149748B2 (en) * 2006-11-14 2012-04-03 Raytheon Company Wireless data networking
JP4933222B2 (ja) * 2006-11-15 2012-05-16 株式会社日立製作所 インデックス処理方法及び計算機システム
US7552128B2 (en) * 2007-01-25 2009-06-23 Gaurav Bhalotia Compression of timestamps
JP2008262046A (ja) * 2007-04-12 2008-10-30 Hitachi Ltd 会議可視化システム、会議可視化方法、及び集計処理サーバ
US7668094B2 (en) * 2007-08-06 2010-02-23 Ittiam Systems (P) Ltd. Time-offset regulated method and system for synchronization and rate control of media data
EP2056511B1 (en) * 2007-10-31 2012-06-06 Siemens Aktiengesellschaft Method for transmission of data samples
RU2011120258A (ru) * 2008-10-30 2012-12-10 Нокиа Корпорейшн Способ и устройство для перемежения блока данных
EP2386239A4 (en) * 2009-05-12 2012-08-15 Olympus Medical Systems Corp IN VIVO IMAGING SYSTEM OF THE SUBJECT AND IN VIVO INTRODUCTION DEVICE IN THE FIELD
US20110231499A1 (en) * 2010-03-22 2011-09-22 Research In Motion Limited Management and display of grouped messages on a communication device

Also Published As

Publication number Publication date
US20120136914A1 (en) 2012-05-31
JP2010272022A (ja) 2010-12-02
WO2010134242A1 (ja) 2010-11-25
US8751566B2 (en) 2014-06-10

Similar Documents

Publication Publication Date Title
US11074560B2 (en) Tracking processed machine data
JP5058209B2 (ja) ストリームデータ処理において逆再生を行うデータ処理システム
US20230122210A1 (en) Resource dependency system and graphical user interface
US10261711B1 (en) Proof of non-tampering for stored data
US8595381B2 (en) Hierarchical file synchronization method, software and devices
US9922114B2 (en) Systems and methods for distributing indexer configurations
US9645843B2 (en) Image instance mapping
US8103621B2 (en) HSM two-way orphan reconciliation for extremely large file systems
CN108920698A (zh) 一种数据同步方法、装置、系统、介质及电子设备
US20110197207A1 (en) System and method for producing audit trails
JPWO2010061735A1 (ja) 検出イベントに応じたアクション実行を支援するシステム、検出イベントに応じたアクション実行を支援する方法、支援装置及びコンピュータプログラム
US20170199903A1 (en) System for backing out data
US11734235B2 (en) Automatic drift detection and handling
US20200104404A1 (en) Seamless migration of distributed systems
CN111753012A (zh) 数据同步方法、装置、设备及存储介质
CN109947730B (zh) 元数据恢复方法、装置、分布式文件系统及可读存储介质
US11709862B2 (en) Selective synchronization of database objects
US9524315B1 (en) Date updating in support of data analysis
JP4848760B2 (ja) リポジトリシステム、リポジトリシステムの管理方法、及びそのプログラム
CN111522875B (zh) 一种全量数据同步的分布式系统数据副本一致性监测方法
US20210365307A1 (en) Streaming data pipeline with batch performance
CN113157716A (zh) 一种数据处理方法、装置、设备及介质
JP6680897B2 (ja) 計算機システム及び分析ソースデータ管理方法
US20230401183A1 (en) Data drift detection between data storage
US11947542B2 (en) Certifying events in a streaming pipeline

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110215

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: 20120717

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120731

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees