(57)【特許請求の範囲】
【請求項１】
転送手段、受信手段、および処理手段を少なくとも備えている分散演算システム（２００）の第１のノードＮ1のイベント検出器を上記分散演算システム（２００）の第２のノードＮ2に移動するための方法（１００；３００）であって、
上記イベント検出器は、入力イベントに基づき少なくとも１つの出力イベント（Ｄ）を生成するために複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を処理し、
上記入力イベントのそれぞれは、上記入力イベントの上記第１のノードＮ1への伝播時間に対応する個々のイベント遅延に関連しており、
上記転送手段が、上記第１のノードＮ1における上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）に対応するイベント遅延の情報を上記第１のノードＮ1から上記第２のノードＮ2に転送する工程（１１２；３１２）と、
上記転送手段が、上記第１のノードＮ1における移動されたイベント検出器を取得するために上記イベント検出器の中身を上記第１のノードＮ1から上記第２のノードＮ2に転送する工程（１１４；３１４）と、
上記転送手段が、上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を上記第１のノードＮ1から上記第２のノードＮ2に転送する工程（１１６；３１６）と、
上記受信手段が、上記第２のノードＮ2において、上記第１のノードＮ1を経由した上記第２のノードＮ2への迂回通路（４０４）を通じて上記第１のノードＮ1から転送された上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）と、上記第２のノードＮ2への直接通路（４０２）を通じて上記複数の入力イベントに関連するソースイベント検出器から転送された上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）とを、並行して受信する工程（１２２）と、
上記処理手段が、転送された上記イベント遅延の情報と、関連する上記ソースイベント検出器から受信した上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）のイベント遅延とに基づき、受信した上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を上記第２のノードＮ2において処理する工程（１２４；３２０）とを含んでいる方法（１００；３００）。
【請求項２】
上記入力イベントの上記イベント遅延の情報を上記第１のノードＮ1から上記第２のノードＮ2に転送する上記工程（１１２；３１２）は、上記転送手段が、上記情報が上記第１のノードから上記第１のノードに送信された時間を示す転送タイムスタンプ（ｔｓ）を転送する工程を含んでいる請求項１に記載の方法（１００；３００）。
【請求項３】
上記イベント遅延の情報を転送する工程（１１２；３１２）は、上記転送手段が、上記第１のノードＮ1から上記第２のノードＮ2への共通転送遅延（ｄf）を上記第２のノードＮ2において決定する工程を含んでおり、
上記共通転送遅延（ｄf）は、上記転送タイムスタンプと、上記第２のノードＮ2における上記イベント遅延の情報の受信時間との時間差を示す請求項２に記載の方法（１００；３００）。
【請求項４】
受信した上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を、移動された上記イベント検出器において処理する工程（１２４；３２０）は、上記処理手段が、最初は、上記第１のノードＮ1におけるイベント遅延の情報と上記共通転送遅延（ｄf）とに基づいて上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を処理する請求項３に記載の方法（１００；３００）。
【請求項５】
上記イベント検出器の上記中身を上記第１のノードＮ1から上記第２のノードＮ2に転送する工程（１１４；３１４）は、上記転送手段が、上記第１のノードＮ1の上記イベント検出器の現在の状態を凍結し、かつ凍結した上記状態を上記第２のノードＮ2のイベント検出器インスタンスにコピーする工程を含んでいる請求項１〜４のいずれか１項に記載の方法（１００；３００）。
【請求項６】
上記処理手段は、上記迂回通路（４０４）を通じて第１のノードＮ1から転送されかつ上記第２のノードＮ2において受信された上記入力イベント（ｅ；Ａ，Ｂ，Ｃ）に対応するイベント遅延の上記情報を、上記入力イベント（ｅ；Ａ，Ｂ，Ｃ）に関連する上記ソースイベント検出器（Ｎ3）から上記直接通路（４０２）を通じて上記入力イベントが第２のノードＮ2において受信されるとすぐに更新し、これにより、上記第１のノードＮ1を経由した上記第２のノードＮ2への上記入力イベント（ｅ；Ａ，Ｂ，Ｃ）の上記迂回通路（４０４）に関連する対応の上記イベント遅延は、上記第２のノードＮ2への上記入力イベント（ｅ；Ａ，Ｂ，Ｃ）の上記直接通路（４０２）に関連するイベント遅延によって置換される請求項１〜５のいずれか１項に記載の方法（１００；３００）。
【請求項７】
受信された上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を上記第２のノードＮ2において処理する工程（１２４；３２０）は、上記処理手段が、転送された個々のイベント遅延の上記情報を更新し、上記更新によって上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）の最大イベント遅延値（Ｋ）に更新された場合、更新された上記最大イベント遅延値（Ｋ）は、上記第２のノードＮ2の移動されたイベント検出器の出力部を入力部として有するイベント検出器に与えられる請求項６に記載の方法（１００；３００）。
【請求項８】
上記第２のノードＮ2は、上記分散演算システム（２００）のソースイベント検出器から上記直接通路（４０２）を通じて個々の入力イベントを受信するとすぐに、入力イベントの転送を停止するように上記第１のノードＮ1に通知する請求項１〜７のいずれか１項に記載の方法（１００；３００）。
【請求項９】
受信された上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を上記第２のノードＮ2において処理する工程（１２４；３２０）は、上記処理手段が、イベント発生時間および上記複数の入力イベントの最大イベント遅延（Ｋ）に基づき、受信された入力イベントを、移動された上記イベント検出器に中継するための時間を決定する工程を含んでいる請求項１〜８のいずれか１項に記載の方法（１００；３００）。
【請求項１０】
上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）および／または上記出力イベント（Ｄ）は、センサデータに基づく基本イベントであるか、または、基本イベント（ｅ；Ａ，Ｂ，Ｃ）に基づく合成イベントである請求項１〜９のいずれか１項に記載の方法（１００；３００）。
【請求項１１】
上記入力イベント（ｅ；Ａ，Ｂ，Ｃ）は、上記分散演算システム（２００）の分散ノードにおいて元々検出され、上記入力イベントは、幾何学的位置決めシステムの並行センサデータストリームに基づいている請求項１〜１０のいずれか１項に記載の方法（１００；３００）。
【請求項１２】
転送手段を少なくとも備えている分散演算システム（２００）の第１のノードＮ1のイベント検出器を上記分散演算システム（２００）の第２のノードＮ2に移動するための方法（１１０）であって、
上記イベント検出器は、少なくとも１つの出力イベント（Ｄ）を生成するために複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を処理し、
上記入力イベントのそれぞれは、上記第１のノードＮ1の上記入力イベントの伝播時間に対応する個々のイベント遅延に関連しており、
上記転送手段が、上記第１のノードＮ1における複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）に対応するイベント遅延情報を上記第１のノードＮ1から上記第２のノードＮ2に転送する工程（１１２；３１２）と、
上記転送手段が、上記第２のノードにおける移動されたイベント検出器を取得するために上記イベント検出器の中身を上記第１のノードＮ1から上記第２のノードＮ2に転送する工程（１１４；３１４）と、
上記転送手段が、上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を上記第１のノードＮ1から上記第２のノードＮ2に転送する工程（１１６；３１６）とを含んでいる方法（１１０）。
【請求項１３】
受信手段および処理手段を少なくとも備えている分散演算システム（２００）の第１のノードＮ1のイベント検出器を上記分散演算システムの第２のノードＮ2に移動するための方法（１２０）であって、
上記イベント検出器は、入力イベントに基づき少なくとも１つの出力イベント（Ｄ）を生成するために複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を処理し、
上記入力イベントのそれぞれは、上記第１のノードＮ1への上記入力イベントの伝播時間に対応する個々のイベント遅延に関連しており、
上記受信手段が、上記第２のノードＮ2において、上記第１のノードＮ1を経由した上記第２のノードＮ2への迂回通路（４０４）を通じて上記第１のノードＮ1から転送された上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）と、上記第２のノードＮ2への直接通路（４０２）を通じて上記複数の入力イベントに関連するソースイベント検出器から受信した上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）とを、並行して受信する工程（１２２）と、
上記処理手段が、転送された上記イベント遅延の情報と、関連するソースイベント検出器から受信した上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）のイベント遅延とに基づき、受信した上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を上記第２のノードＮ2において処理する工程（１２４；３２０）とを含んでいる方法（１００；３００）。
【請求項１４】
請求項１〜１３のいずれか１項に記載の方法をコンピュータまたはプロセッサに実行させるためのプログラムコードを有するコンピュータプログラム。
【請求項１５】
分散演算システム（２００）の第１のノードＮ1のイベント検出器を上記分散演算システムの第２のノードＮ2に移動するための装置であって、
上記イベント検出器は、入力イベントに基づき少なくとも１つの出力イベント（Ｄ）を生成するために、複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を処理し、
上記入力イベントのそれぞれは、上記第１のノードＮ1への上記入力イベントの伝播時間に対応する個々のイベント遅延に関連しており、
上記第１のノードＮ1における複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）に対応するイベント遅延情報を上記第１のノードＮ1から上記第２のノードＮ2に転送するための手段と、
上記第２のノードにおける移動されたイベント検出器を取得するために上記イベント検出器の中身を上記第１のノードＮ1から上記第２のノードＮ2に転送するための手段と、
上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を上記第１のノードＮ1から上記第２のノードＮ2に転送するための手段とを備えている装置。
【請求項１６】
分散演算システム（２００）の第１のノードＮ1のイベント検出器を、上記分散演算システムの第２のノードＮ2に移動するための装置であって、
上記イベント検出器は、入力イベントに基づき少なくとも１つの出力イベント（Ｄ）を生成するために複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を処理し、
上記入力イベントのそれぞれは、上記第１のノードＮ1への上記入力イベントの伝播時間に対応する個々のイベント遅延に関連しており、
上記第２のノードＮ2において、上記第１のノードＮ1を経由した上記第２のノードＮ2への迂回通路（４０４）を通じて上記第１のノードＮ1から転送された上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）と、上記第２のノードＮ2への直接通路（４０２）を通じて上記複数の入力イベントに関連するソースイベント検出器から転送された上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）とを、並行して受信する手段と、
転送された上記イベント遅延の情報と、関連するソースイベント検出器から受信した上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）のイベント遅延とに基づき、受信した上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を上記第２のノードＮ2において処理するための手段とを備えている装置。
【請求項１７】
分散演算システム（２００）の第１のノードＮ1のイベント検出器を上記分散演算システム（２００）の第２のノードＮ2に移動するための分散演算システム（２００）であって、
上記イベント検出器は、入力イベントに基づき少なくとも１つの出力イベント（Ｄ）を生成するために複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を処理し、
上記入力イベントのそれぞれは、上記第１のノードＮ1の上記入力イベントの伝播時間に対応する個々のイベント遅延に関連しており、
上記第１のノードＮ1における複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）に対応するイベント遅延情報を上記第１のノードＮ1から上記第２のノードＮ2に転送するための手段と、
上記第１のノードＮ1における移動されたイベント検出器を取得するために、上記イベント検出器の中身を上記第１のノードＮ1から上記第２のノードＮ2に転送するための手段と、
上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を上記第１のノードＮ1から上記第２のノードＮ2に転送するための手段と、
上記第２のノードＮ2において、上記第１のノードＮ1を経由した上記第２のノードＮ2への迂回通路（４０４）を通じて上記第１のノードＮ1から転送された上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）と、上記第２のノードＮ2への直接通路（４０２）を通じて上記複数の入力イベントに関連するソースイベント検出器から転送された上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）とを、並行して受信する手段と、
転送された上記イベント遅延の情報と、関連するソースイベント検出器から受信した上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）のイベント遅延とに基づき、受信した上記複数の入力イベント（ｅ；Ａ，Ｂ，Ｃ）を上記第２のノードＮ2において処理するための手段とを備えている分散演算システム（２００）。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
本発明の実施形態は、一般に、データネットワークに関し、特には、分散演算システムの異なるノード間においてイベント検出器を転送または移動するための装置および方法に関する。
【０００２】
（背景）
たとえば無線センサネットワークなどのセンサネットワークには、幅広い用途がある。たとえば様々な技術の無線センサネットワークは、人および／または他のオブジェクトの位置決めなどの位置決めの目的に用いられうる。ここで「位置決め」とは、幾何学的位置または場所の検出または決定を意味する。いくつかの専門化された位置決めシステムまたは場所追跡システムは、たとえば、サッカー、アメリカンフットボール、ラグビー、テニスなどのスポーツイベントにおいて、選手または他のオブジェクト（たとえばボール）の位置決めに用いられうる。
【０００３】
選手および／またはボールの集められた幾何学的位置または場所データを用いることによって、スポーツイベント全体、たとえばサッカーの試合、または、関連する個々のチームまたは選手の統計的情報を得ることができる。そのような得られた統計的情報は、様々な理由のため興味深い。一方では、特定の統計としての様々な商業上の関心があり、その解析は、スタジアムおよび／または家のテレビセットの前にいる観戦者に特に関連しうる。それゆえ、特定の解析を提供すれば、スポーツイベントにおいてより一層の関心を引き起こしうる。他方では、生の場所データから得られる統計的データは、同様に、訓練の目的のためにも用いられうる。それゆえ、相手、および／または、自チームの挙動は、個々の選手のパフォーマンスおよび／または健康状態と同様に解析されうる。
【０００４】
上述した位置決めシステムまたは場所追跡システムは、様々な技術に基づきうる。たとえば位置決め情報は、無線ラジオ信号および／または磁場に基づき決定されうる。この目的のため、一般にはセンサとも表記される送信機および／または受信機は、システムによって位置決めされる個々のオブジェクト（たとえば選手、ボールなど）に配置されうる。対応する受信／送信装置もまた、関心のある幾何学的領域、たとえばサッカー場、の周囲の規定の位置に取り付けられうる。技術的な選択肢候補の例を挙げれば、信号強度、信号伝播時間、および／または信号位相の測定によって、それから、異なる時点における選手またはオブジェクトの幾何学的位置を示すセンサデータストリームが生ずる。典型的には、幾何学的位置データサンプルは、どの幾何学的場所にどの時間にオブジェクトが配置されたかを示すタイムスタンプに関連している。この組み合わせ情報と共に、速度、加速度などのような運動学的データが、たとえばｘ軸、ｙ軸、およびｚ軸を有する位置決めデータに加えて、同様に提供されうる。この明細書の続きでは、位置決めセンサシステムによって与えられる位置決めデータおよび運動学的データは、（生の）センサデータとしても表記される。
【０００５】
特に、無線追跡システムの例では、人またはオブジェクトには、履物、ユニフォーム、およびボールに埋め込まれ、かつその信号が、観察下の領域周辺に配置される多数のアンテナによって検出されうる小型の送信機が取り付けられうる。受信ユニットは、集められた信号を処理し、その到達時間（ＴｏＡ）値を決定する。伝播遅延の相違の算出に基づき、各送信機の場所が次に継続的に決定される。加えて、無線追跡システムが組み込まれたコンピュータネットワークが、特定のイベントを検出するように、場所またはセンサデータを解析しうる。２．４または５ＧＨｚ帯で動作する場合、追跡システムは広くライセンスフリーである。
【０００６】
位置決めまたは場所追跡システムから出力された生のセンサデータストリームに基づき、いわゆる「イベント」が検出されうる。これによりイベントまたはイベント型は、ある時点での瞬間的な対象の発生として定義され、かつ、一意のイベントＩＤによって定義されうる。一般に、イベントは、検出されることができる関連する量の分散の変化に関連している。イベントインスタンスは、個々の時点におけるイベント型の一時的な発生である。イベントは、追跡システムのセンサデータ（運動学的データ）に直接基づく基本イベント、または、その代わりに、以前に検出された他のイベントに基づく合成イベントでありうる。すなわち合成イベントは、生のセンサデータに直接基づかず、他のイベントに直接基づいている。球技の例では、イベントは、たとえば、「選手Ｘがボールを蹴る」、または「選手Ｘがボールを持つ」でありうる。より複雑なイベントは、たとえば、「オフサイド」または「ファウル」でありうる。各イベントインスタンスは、３つのタイムスタンプを有しうる：発生タイムスタンプ、検出タイムスタンプ、および到着タイムスタンプである。すべてのタイムスタンプは、同一の個別の時間領域にある。発生タイムスタンプｔｃは、イベントが実際に起こった時間であり、検出タイムスタンプｄｔｓは、イベントがイベント検出器によって検出された時間であり、到着タイムスタンプａｔｓは、イベントが特定のイベント処理システム（ＥＰＳ）ノードによって受信された時間である。発生タイムスタンプおよび検出タイムスタンプは如何なる受信ノードにおけるイベントインスタンスに対しても固定されているが、到着タイムスタンプはネットワークにおける異なるノードにおいて変動しうる。
【０００７】
基礎となるセンサデータストリームに基づくイベントの検出（複合イベント処理、ＣＥＰ）は、過去の数年において、データベースおよび分散システムコミュニティに、多大な関心を引き起こしている。ネットワーク監視、ｅ−ビジネス、ヘルスケア、金融解析、およびセキュリティまたは上述したスポーツイベントの監督としての用途を含んでいる、今日における幅広くかつ増大する数の用途は、理想的にはイベントの時系列の形態をとるデータストリームに渡ってクエリを処理する能力に依存している。多くの用途では、数多くの供給されたセンサデータおよび／またはイベント検出器が、人間によってはそれ以上取得したり処理したりすることができないので、イベント検出は、人間の介入を受けることなく、生のセンサデータおよび／またはイベントを完全に自動的に処理することを意味する。たとえば、選手またはスポーツオブジェクトたとえばボールが高速で変化することが期待される場合、生のセンサ（位置決めまたは場所追跡）データは、基本の（無線）センサネットワークによって充分に高いデータ率で決定しなければならない。加えて、追跡すべき多くの数の選手および／またはオブジェクト（たとえばサッカーでは２２人の選手とボールがある）、１秒ごとの幾何学的位置決めおよび運動学的データ全体の数は、特にリアルタイムのイベント検出器処理が必要となる場合には、法外に大きくなりうる。
【０００８】
それゆえ、生のセンサおよび／またはイベントデータストリームが解析されかつ完全に自動的に信号化されたとしても、依然として、おそらくは全体として何の関心にもなりさえしない、多すぎるほど多い情報が存在しうる。より多くの装置にセンサが取り付けられ、かつ、決定されたセンサデータがインターネットなどの公衆ネットワークに提供される可能性（たとえば、スマートフォンなどの無線装置によって決定される気象または温度データ）があるので、将来、この問題は一層悪化する。この理由のため、関心のある特定のイベントに対して処理されるセンサデータの量は、急速に拡大する。自動化検出は、生のセンサデータを個々に集め、かつ、生のセンサデータ自体よりもさらに多くの情報を転送しうるより抽象的かつ相互に依存するイベントを検出する試みによって、これに対する解決策を提供しうる。たとえば、上述したサッカー関連の例に加えて、そのような決定されるイベントには、「車Ｘが横断歩道Ｙに位置する」または「通路Ｘにおける交通渋滞」が含まれうる。
【０００９】
自動的イベント検出において生じる問題は、おそらくは大量に並行のセンサおよび／またはイベントデータストリームに対するイベント検出を行うための計算能力が必要であり、かつ、少なくともリアルタイムに近い処理が必要な状況下で行われることにある。この問題は、たとえばイーサネットを通じて通信しうるコンピュータネットワークの異なる（すなわち分散された）ネットワークノードにおいてたとえば実行されうるイベント検出の並行化によって、解決されうる。これにより、イベント検出器は、ユーザが指定したイベント検出器に対応するイベントまたはセンサデータストリームから、関心のある特定のイベントを自動的に抽出する。個々のイベント検出器は、データネットワークの異なるネットワークノードに分散されうる。異なるイベント検出器は、端末装置のネットワーク通路および分岐を用いてネットワークを通過するイベントおよび／またはセンサデータを用いて通信する。これにより、生のセンサデータおよび／またはイベントは、たとえばＵＤＰ（ユーザデータグラムプロトコル）、ＴＣＰ（トランスミッションコントロールプロトコル）／ＩＰ（インターネットプロトコル）などのような何らかの配送プロトコルに基づき、データパケット内において配送されうる。しかし、この構成によって、異なるネットワークノード間におけるアンバランスな計算負荷、および、ネットワーク内のイベントデータストリームの同期に関連する新たな問題が生じる。適切な対抗策がなければ、異なるネットワークノード間の計算負荷はアンバランスになり、ネットワーク内の個々のセンサおよび／またはイベントデータストリーム互いに時間同期されず、このことは、個々のイベントがイベント検出器に管理する時間順から外れて到達し、これにより誤った検出結果を引き起こしたことを意味する。
【００１０】
並行して自動的に動作する複数のイベント検出器が選手Ａから選手Ｂへのパスを検出することが想定されるサッカーの例を見てみよう。「パス」イベントを検出するために、以下の前述したイベント順番が必要になる。
【００１１】
１．選手Ａはボールを所持している。
【００１２】
２．選手Ａはボールを蹴る。
【００１３】
３．ボールは選手Ａから離れる。
【００１４】
４．ボールは選手Ｂの近くに来る。
【００１５】
５．選手Ｂがボールに当たる。
【００１６】
「選手Ｘがボールを蹴る」というイベントのイベント検出は、「ボールの近くの選手Ｘ」というイベント順番および検出されたボールの加速度ピークに基づきうる。「選手Ｘがボールを蹴る」という上記イベントのための自動化されたイベント検出器をセットアップするためには、以下の代替物がある。
【００１７】
我々は、個々の必要なイベントを１つずつ待ちうる。我々がすべての必要なイベントを正しい（時間）順で見たとき（ここで、簡潔さのために如何なる中止基準をも無視する）、パスを見たまたは経験したということができる。しかし、イベント検出器の並行化のために、複雑な用途では、必要なすべてのイベントの検出が単一のネットワークノードまたはＣＰＵ（中央演算装置）において必ずしも生じるとは限らない。この理由のため、必要な個々のイベントが必要な正しい順番でイベント検出器に到達することは、必ずしも保証されない。この原因は、たとえば、ネットワークジッタ、変動するおよび／またはアンバランスのＣＰＵ負荷、または増加するネットワーク負荷が原因でありうる。たとえば、イベントインスタンスｅ１、ｅ２、・・・ｅｎによって構成され、かつｅｋａｔｓ＜ｅｋ＋１ａｔｓ（１≦ｋ＜ｎ）であるイベントストリームを考慮すれば、すなわち、イベントストリームにおけるイベントは、その到着時間の昇順で保存される。１≦ｉ＜ｊ≦ｎであり、かつｅｉｔｓ＞ｅｊｔｓであるような任意のイベントｅｉおよびｅｊが存在する場合、イベントｅｊは、順番通りではないイベントであると表記される。
【００１８】
それゆえ、イベントをバッファし、それからイベントを正しいパターンにするためにバッファを探索することを試みることができる。しかし、幾らのバッファサイズが必要になるだろうか？パスが最大で５秒以内に発生しなければならない場合、パスを検出するかまたは中止するまで、第１の関連イベントの後の５秒の期間以内にイベントを考慮しなければならない。しかし、最後の関連イベントが計算上極めて複雑であり、小さな追加のバッファを必要とすることもありうる。しかし、この追加のバッファするサイズは幾らだろうか？また、「パス」イベントを入力イベントとして必要とする合成イベント検出器に関連するバッファサイズは幾らだろうか？
S. Babu, U. Srivastava, and J. Widom, "Exploiting k-constraints to reduce memory overhead in continuous queries over data streams", ACM Trans. Database Systems, vol. 29, pp. 545-580, 2004のＫスラックアルゴリズムは、イベント検出における、順番通りではないイベントを扱う周知の解決策である。Ｋスラックは、イベントｅｉが最大でＫ時間単位（Ｋは事前に既知である必要がある）だけ遅延されることができるように、長さＫのバッファを用いる。しかし、分散システムでは、イベント信号伝達遅延は、システム／ネットワークの全体構成、すなわち、イベント検出器の分布、ならびにネットワーク負荷およびＣＰＵ負荷に依存する。構築時には、最終的なシステム構成または負荷状況は予知しえない。
【００１９】
Proc. 27th Intl. Conf. Distributed Computing Systems Workshops, (Washington, DC), pp. 67-74, 2007におけるM. Li, M. Liu, L. Ding, E. A. Rundensteiner, and M. Mani, "Event stream processing with out-of-order data arrival"によるアプローチは、少なくともｅｉｔｓ＋Ｋ≦ｃｌｋである限りイベントｅｉをバッファする。分散システムには広域クロックが存在しないので、それぞれノードは、そのローカルクロックを、それまでに観察された最も大きい発生タイムスタンプにセットすることによって、ローカルクロックを同期する。
【００２０】
Ｋスラックアプローチを実装する順番付ユニットは、任意のＫを有するスライディングウインドウを入力ストリームに対してを適用し、イベントをそのタイムスタンプに応じて遅延させ、配列されたイベントの出力ストリームを生成する。しかし、単一の固定された前提のＫは、分散された階層的なイベント検出器では機能しない。Ｋスラックは、合成イベントを生成するためにＫ時間ユニットをとるので、同様にＫユニットをバッファしかつ合成イベントを待つ上位層のイベント検出器は、上記イベントを見逃す。待機時間は、イベント検出器の階層が高くなるほど増える。
【００２１】
Proc. 25th Intl. Conf. Data Engineering, (Shanghai, China), pp. 784-795, 2009におけるM. Liu, M. Li, D. Golovnya, E. Rundensteiner, and K. Claypool, "Sequence pattern query processing over out-of-order event streams"は、各イベント検出器に対する個々のＫを特定することによってこの問題を回避する。各Ｋｎ（ｎは階層レベルを示す）はｍａｘ（Ｋｎ−１）よりも大きい値すなわち利用されるすべてのイベントの最大遅延よりも大きい値に設定されなければならない。これにより、利用されるイベントは個々のイベント検出器に対する関心のあるイベントである。階層レベルｎのイベント検出器は、より低い階層レベルのイベントを、より高い階層イベントの検出するための入力部として用いるために利用する。一見するとこれは良さそうに思えるとはいえ、適切な値をすべてのＫｊに対して決定することは難しく、アプリケーション特異的かつ形態特異的、かつ注意深い測定の後になされることができる。大きすぎるＫｊは回避しなければならない。理論では、待ち時間がイベント検出器の分散および具体的な基礎ネットワーク形態に基づくので、一般的な目的のシステムでは、最も小さい／最善のＫｊは実行時測定によって発見されることができるのみである。さらには、検出器が移動するとき、最善のＫｊ値は実行時に変化する。
【００２２】
入力されるイベントｅｉの所望のストリームに対し、上述した問題を克服するための主要な着想は、イベントの発生タイムスタンプｔｓをその到着タイムスタンプａｔｓと比較することによってこれらの実行時測定を行うことである。すなわち、本発明の実施形態は、異なるネットワーク通路を通じてイベント検出器に到達する。それゆえ異なる処理および／または伝播遅延δ（．）が起こるイベントの元の時間順の回復が、後続のイベント検出器にイベントを転送または中継する前にイベントを適切に遅延させることによって達成しうるという仮定に基づきうる。後続（下流）のイベント検出器にイベントが中継される時間は、個々のイベントの元のタイムスタンプと、出力イベントを決定するために後続のイベント検出器によって必要とされるすべての入力イベントの処理および／または伝播遅延とに基づきうる。
【００２３】
必要な共通遅延値を最小にすることを保証するために、すなわち（少なくとも）２つのイベントの中継を可能なかぎり速くできるようにするため、遅延補償器は、第１および第２のイベントタイミング値および第１および第２のイベントの最大遅延に基づき、関連するイベント検出器に第１および第２のイベントを中継するための出力時間を決定するように動作可能でありうる。これにより、イベントの遅延δ（．）はいくつかの理由が原因となりうる。たとえば、分散演算システム内のイベントの遅延は、異なるネットワーク通路における異なるジッタ状態、または、異なる処理期間および／または異なるネットワーク待ち時間が原因となって、発生しうる。言い換えれば、遅延補償器の入力部における第１および第２のイベントの受信順は、ジッタ状態、または、異なる処理期間および／または異なるネットワーク待ち時間が原因となって、第１および第２のイベントの元の発生順とは異なりうる。
【００２４】
第１および第２のイベントのそれぞれのイベント遅延は、順番付ユニットにおける第１および第２のイベントの受信／到着時間、および、イベント発生を反映するそれらのそれぞれの関連するイベントタイミング値に基づき測定または決定されうる。イベントｅｉ（ｉ＝１、２、・・・）の発生または検出時間ｔイベント，ｅｉ（ｉ＝１、２、・・・）から遅延補償器の入力部への伝播または信号伝達遅延をδ（．）として表記すると、順番付ユニットは、第１および第２のイベントを後続のイベント検出器に中継するための出力時点ｔ出力，ｅｉ（ｉ＝１、２、・・・）を、次の式に基づき決定するように動作可能でありうる。
【００２５】
【数１】
0005847956.tif 000002
ここで、ｍａｘ（．）は最大値演算子である。すなわち順番付ユニットは、第１および第２のイベントに関連する一組のイベント遅延から得られる最大の遅延を決定するように動作可能でありうる。順番付ユニットによって中継されるイベントが２つよりも多い場合、それから、もちろん、順番付ユニットは、２つよりも多いイベントに関連する一組のイベント遅延から最大の遅延値を得ることによって共通遅延値を決定する。
【００２６】
分散システム内の様々な影響のため、Ｋのための値＝ｍａｘ（δ（ｅ１），ｅ２）は変化しうる。また、ｃｌｋがイベント検出器において予期せずに変化するとき、このことによって、Ｋへの誤った推測がなされ、それゆえ、検出器の誤った出力に繋がりうる。
【００２７】
イベント検出器はしばしば安定に維持されるので、上述した第１の問題すなわちＫｊの急激な上昇は稀である。これが起こるとき、正しい順番を通所は保証できない。しかしこの問題を和らげるために確率的な安全な余裕を遅延に持たせうる。これと対照的に、第２の問題すなわち予期しないｃｌｋの変化は、常に回避することができる。本発明の実施形態が拠り所にしうる着想は、如何なる入力イベントにおいて観察される最も大きいタイムスタンプにももはやクロックを設定せず、しかし、指定の型のイベントをｃｌｋの設定のために用いるのみであることである。
【００２８】
予期しないｃｌｋの変化は、特定の型のイベントのみにネットワークノードのクロックを設定すれば回避できる。上述した順番通りではないイベントの定義が、遅いイベントを特定するがあまりに早く到着したイベントを遅らせるためにｃｌｋ値を新たに用いる。如何なる２つのｃｌｋ更新の間にも、延期されていないイベントがそのタイムスタンプに応じて順番付けされる。より形式的には前のようにイベントストリームｅ１、ｅ２、・・・ｅｎを考慮せよ。ｃｌｋは、ＩＤ型のイベントによって設定されるのみであると仮定せよ。ｅｉ，ｉｄ＝ｅｋ，ｉｄ＝ＩＤであるｅｉ、ｅｋが存在しないのでｅｉｔｓ≦ｅｊｔｓ≦ｅｋｔｓである場合、イベントｅｊは順番通りではないイベントである。ｅｉのイベント遅延は、
δ（ｅｊ）＝ｅｋｔｓ−ｅｊｔｓによって得られうる。
【００２９】
残された疑問は、ｃｌｋを設定するためにどのイベント型を選択するかである。選択されたイベント型の発生頻度が高いほど、延期される必要があるイベントはより少なく、結果として得られるＫ値はより小さく、かつ測定される遅延はより良くなる。イベント型の選択がある場合、より安定しかつ固定された遅延を有するイベントが、実時間をよりよく反映するので好ましい。そうでなければもし特定の型のイベントの到着時間が変動する場合、ｃｌｋは滑らかに挙動しない。クロック更新周波数を増やすために、１つのイベント型だけを使用する代わりに、たとえばそれらが同じ供給源からのセンサイベントである場合に、それらのイベント型が同じ完璧な遅延を有すると仮定すると、クロックを設定するために一組のイベントを用いることが可能である。正確なタイムスタンプを有する高いデータ率センサイベントは優れた候補である。
【００３０】
センサイベント、すなわち生のセンサデータを、安定したクロック更新イベントとして捉え、Ｋのための適切な値を決定しよう。しかし、Ｋが急速に増加する第１の問題は依然として未解決である。Ｋが小さすぎる場合、イベントを見逃すか、または、イベントを順番通りに処理せず、それから、将来のイベント遅延のためにＫを増加させる。追加の安全性マージンすなわちわずかに大きいＫがあれば、そのような検出エラーを回避できる。エラー発生後にＫを固定する代わりに、Ｋを遅延の期待される変動に過剰フィットすることができる。Ｋが、イベント検出器に利用されるすべてのイベントの最大の遅延として定義されることを思い出してほしい。特定のイベントの遅延をより正確に見積もると、Ｋ値がより安全になる。イベントｅｉに対して期待される遅延をより良く推定するために、ｅｉの最近のすべての測定を用い、その標準偏差を決定することができる。それから、推定された遅延は、ｅｉの最大遅延に、標準偏差の産物およびスケーリング係数λを加えたものである。λはシステム設計者によって定義されうる。また、λはＫが十分に長い確率に影響する。そのようなＫ値があれば、イベント遅延が不安定であっても入力イベントストリームを順番付けすることができる。
【００３１】
しかし特定のイベント検出器に対してＫ値が大きくなると、この事実は、検出器階層がさらに高い利用しているイベント検出器には不明なままである。利用されたイベントが実際に生成されるとき、上位レベルの検出器は、変化しかつ潜在的に大きすぎる遅延を通知するのみである。それゆえ、上位レベルのＫは、Ｋの誤検出および追加を回避するために、小さすぎになりうる。しかし上位レベルの検出器は、より早く通知されていればそのＫを十分に早く改変しうる。それゆえＫがいつ変化しようとも、必要ならそのＫ値を改変できるように利用者に通知することができる。そのために、適切なタイムスタンプを有する疑似イベントを直ちに送信することができる。受信者は設定の目的のためにそのような疑似イベントを利用するのみでありうる。
【００３２】
今や、十分に良いＫおよび安定したクロックｃｌｋの双方を有する。しかしこれによって、並び替えられたまたは順番付けられたイベントストリームは依然として生成されない。後続の検出器に対して、並び替えられた入力を提供するために、順番通りではないストリームを処理するイベント順番付けユニットを必要とする。そのような順番付けユニットは、ブラックボックスとして実装されうる。また、順番付けユニットは、イベント検出器自体を改変する必要がないように、元のイベントストリームとイベント検出器の入力部との間にただマウントされうる。順番付けユニットからの出力ストリームは、遅延が最小である並び替えられた一連のイベントである。入力イベントが受信される（疑似イベントは無視する）ときはいつでも、入力イベントは、そのタイムスタンプに応じて順番付けユニットのバッファにおいて並び替えられる。もし順番通りではなくイベントが稀であれば、新しいイベントの挿入並び替えは、通常、単に、バッファの先頭への単純かつ高速な追加である。ｃｌｋが更新され、かつ、ｅｉｔｓ＋Ｋ≦ｃｌｋが、バッファにおけるいくつかの末端イベントに対して維持されるときはいつでも、それらのｅｉが順番付けユニットの出力ストリームに与えられえ、かつ、次の入力イベントが処理されうる。
【００３３】
なお、通常、主なイベントストリームからその利用されるイベントを取得するのみである適切かつ検出器特有のＫを有する専属の順番付けユニットをそれぞれが有しうるイベント検出器が、機械またはネットワークノードごとに１つよりも多くある。
【００３４】
分散イベント処理において、実行中に、１つの機械からもう１つの機械にイベント検出器を移動する必要がありうる。これは、多くの理由、たとえば、機械がメンテナンスまたはシステム障害のためにシャットダウンされる必要がありうること、または、機械が過負荷になるかまたは消耗さえしえかつイベント処理ジョブを十分に早く行うことができないことによって、起こりうる。これらの変化は、解析される環境たとえば急な株式取引の動力学の結果でありうる。
【００３５】
プロセスまたはオブジェクトの実行時移動における関連研究は、主に、仮想化機械（ＶＭ）の領域においてなされる。たとえば、Proc. 3rd Intl. Conf. Virtual Execution Environments, (San Diego, CA), pp. 169-179, 2007におけるR. Bradford, E. Kotsovinos, A. Feldmann, and H. Schioberg, "Live wide-area migration of virtual machines including local persistent state"は、ローカルの永続ＶＭ状態を転送することを扱っている。移動後、ネットワーク接続は新しいホストにリダイレクトされ、古い接続からのコマンドが転送される。古い接続が無くなるとすぐに古いＶＭは終了する。しかし、コマンドが転送される間に双方の機械が並行して動作しなければならないのみならず、コマンドがネットワーク越しに受信されるときの順番は無視される。
【００３６】
Proc. 18th ACM Intl. Symp. High Performance Distributed Computing, (Garching, Germany), pp. 101-110, 2009におけるH. Liu, H. Jin, X. Liao, L. Hu, and C. Yu, "Live migration of virtual machine based on full system trace and replay"のＣＲ／ＴＲモーションは、ＶＭの高速移動するのために、チェックポイント／回復および追跡／返信技術を用いる。ソースＶＭからのチェックポイントは目的地において回復され、双方の機械が一致するようにソースからの呼び出し追跡は再生される。前述したアプローチに比べてダウンタイムは顕著に低い。しかし著者らは入力コマンドの順番が新しいホストにおいて異なりうることを考慮していない。
【００３７】
Proc. 10th WSEAS Intl. Conf. Software Engineering, Parallel and Distributed Systems, (Stevens Point, WI), pp. 15-23, 2011におけるV. Medina and J. M. Garcia, "Live replication of virtual machines"は、ＣＲ／ＴＲモーションに類似するが、ちょうど開始からの複製物を仮定する。ユーザは１つのＶＭと対話するが、コマンドは双方のＶＭが常に同期するように複製物にも送信される。古い機械が動作を停止するとき、クライアント側のプロトコルは複製されたＶＭにコマンドを送信しかつ複製物の変身を提示する。しかしコマンドはクライアント側からリダイレクトされ、これは複製物に切り替わった後に順番が異なりうることを意味する。
【００３８】
上記アプローチのどれも、入力コマンドおよび／またはデータの順番を正しく考慮していない。これは、コマンドの供給源すなわちユーザのワークステーションが静的であり、かつコマンドが正しい順番で依然として受信されるからである。しかし、マルチユーザのＶＭを扱う場合、二人のユーザが同一のファイルを改変する場合に問題が生じうる。元のＶＭでは、ユーザＡのコマンドが先に受信されえ、一方、移動されたＶＭでは、ユーザＢのコマンドが先に受信される。それからＶＭ間の同期が解除される。ＣＲ／ＴＲモーションのようなアプローチは、そのようなありそうもない状況において、回復を繰り返しかつ処理を再生する。しかし、イベント検出ではそのような状況は非常にあり得ることであり、そして移動は決して終了しない。
【００３９】
それゆえ、順番通りでない入力イベントに対して動作するイベント検出器を効率的かつ安全に１つのネットワークノードからもう１つのネットワークノードに移動する最先端技術を改善することが望ましい。
【００４０】
（まとめ）
基本イベントおよび／または合成イベントなどのイベントを検出するために、様々なイベント検出器が、分散演算システムの異なるノードにおいて動作しうる。そのようなイベント検出器は、システムの状態および／またはイベント検出器のアルゴリズムおよび／または解析されるセンサデータを算出する際の複雑さに基づき、異なる負荷を、対応する関連ノードおよび／または分散演算システム全体に引き起こしうる。それゆえ、元のシステム構成の前提または状態を変更するケースでは、様々なネットワークノードにおけるイベント検出器の元の分散は、算出負荷バランスに対して下限の最適状態になりうるか、または、分散演算システムをクラッシュさせることさえありうる。
【００４１】
そのような望ましくない負荷アンバランスは、本発明の実施形態によって打ち消される。もし、たとえば、少なくとも１つのイベント遅延が法外に高い値に到達した場合、これは、対応するイベントが目的のイベント検出器に到達するソースイベント検出器が過負荷になったか、またはそれに何らかの他の問題が生じたかという事実を示すものでありうる。そのようなケースでは、悪質なソースイベント検出器プロセスまたはオブジェクトを、分散演算システムの何らかのハードウェア資源に転送または再配置することが望ましいかもしれない。たとえば、悪質なソースイベント検出器プロセスまたはオブジェクトは、現在のノードから、もう１つの、利用可能なより一層のハードウェア資源を有する、分散演算システムの物理的に分離されかつ異なるノードに転送または移動されうる。
【００４２】
イベント検出器を１つの機械からもう１つの機械に移動することによって、影響を受けたイベント検出器によって扱われるイベントの異なるイベント遅延が得られることは本発明の１つの発見である。イベント検出器が第１のネットワークノードから第２のネットワークノードに移動されるとき、利用されるイベントのソースノードは同一のままであるが、関連するイベント遅延はほぼ確実に変わる。第１の（古い）ノードでは良く機能するＫ値が、第２の（新しい）ノードおよび結果的な新しいイベント遅延にとっては小さすぎるので、移動したイベント検出器（または上位層にある任意のイベント検出器）は、利用されるイベントを正しい順でまったく見ることがないので、関与するすべてのイベントに対して遅延が減少しないかぎり、単純なイベント検出器移動は失敗に終わる。
【００４３】
それゆえ、移動したイベント検出器に対して、順番だった入力イベントを保証することが、本発明の１つの目的である。
【００４４】
本発明の１つの発見は、協働的なイベント検出器移管のために、分散コンピュータシステムの新しいノードが、必要な入力イベントを元のノードまたはソースノードから利用するのみならず、古いノードもまたそれらのイベントを新しいノードに同様に転送することである。新しいノードは、２つの通路すなわち転送通路（ソースノードから古いノードを経由）および直接通路（ソースノードから直接）を通じて新しいノードに到着するイベントからの遅延情報を組み合わせることによって、正しいイベント順を決定しうる。
【００４５】
本発明の第１の局面によれば、分散演算システムの第１の（古い）ノードのイベント検出器を、分散演算システムの第２の（新しい）ノードに移動するための方法が提供される。イベント検出器は少なくとも１つの出力イベントを生成するために複数の入力イベントを処理する。
【００４６】
入力イベントのそれぞれは、第１のノードの個々の入力イベントの伝播時間または遅延に対応するイベント遅延に関連している。伝播時間は、イベント発生時間と、第１のノードにおける個々のイベントの後続のイベント受信または到着時間との間の差異であると見做されうる。この方法は、第１のノードにおける複数の入力イベントに対応するイベント遅延情報を第１のノードから第２のノードに転送する工程と、第２のノードにおける移動されたイベント検出器を取得するためにイベント検出器の（処理またはオブジェクト）中身を第１のノードから第２のノードに転送する工程と、複数の入力イベントを第１のノードから第２のノードに転送する工程と、第１のノードから転送され、かつ、複数の入力イベントに関連する移動するイベント検出器から並行して転送された複数の入力イベントを第２のノードにおいて受信する工程と、転送されたイベント遅延の情報と、関連する元のイベント検出器から受信した複数の入力イベントのイベント遅延とに基づき、受信した複数の入力イベントを第２のノードにおいて（順に）処理する工程とを含んでいる。
【００４７】
本発明のさらなる局面によれば、分散演算システムの第１のノードのイベント検出器を分散演算システムの第２のノードに移動するための分散演算システムもまた提供される。この分散コンピュータシステムは、第１のノードにおける複数の入力イベントに対応するイベント遅延情報を第１のノードから第２のノードに転送するための手段と、第１のノードにおける移動されたイベント検出器を取得するために、イベント検出器の中身を第１のノードから第２のノードに転送するための手段と、複数の入力イベントを第１のノードから第２のノードに転送するための手段とを有する第１のノードを備えている。この分散コンピュータシステムは、第１のノードから転送され、かつ、複数の入力イベントに関連する移動するイベント検出器から並行して転送された複数の入力イベントを第２のノードにおいて受信する手段と、転送されたイベント遅延の情報と、関連する元のイベント検出器から受信した複数の入力イベントのイベント遅延とに基づき、受信した複数の入力イベントを第２のノードにおいて処理するための手段とを有する第２のノードをさらに備えている。
【００４８】
それゆえ実施形態は、分散コンピュータシステムの第１のノードおよび／または第２のノードもまた提供する。
【００４９】
したがって、分散演算システムの第１のノードのイベント検出器を分散演算システムの第２のノードに移動するための（第１のノードのための）第１の方法もまた提供される。この方法は、第１のノードにおける複数の入力イベントに対応するイベント遅延する情報を、第１のノードから第２のノードに転送する工程と、第２のノードにおける移動されたイベント検出器を取得するためにイベント検出器の中身を第１のノードから第２のノードに転送する工程と、複数の入力イベントを第１のノードから第２のノードに転送する工程とを含んでいる。
【００５０】
イベント検出器を分散演算システムの第１のノードから第２のノードに移動するための第２の方法であって、第１のノードから転送され、かつ、複数の入力イベントに関連する移動するイベント検出器から並行して転送された複数の入力イベントを第２のノードにおいて受信する工程と、転送されたイベント遅延の情報と、関連する元のイベント検出器から受信した複数の入力イベントのイベント遅延とに基づき、受信した複数の入力イベントを第２のノードにおいて処理する工程とを含んでいる第２の方法もまた提供される。
【００５１】
いくつか実施形態は、ノードまたは装置にインストールされるデジタル制御回路を備えている。そのようなデジタル制御回路、たとえば、デジタルシグナルプロセッサ（ＤＳＰ）またはアプリケーション特異的集積回路（ＡＳＩＣ）は、適切にプログラムされている必要がある。それゆえ、よりさらなる実施形態は、コンピュータプログラムがコンピュータまたはデジタルプロセッサにおいて実行されるときに、上記方法の実施形態を実行するためのプログラムコードを有するコンピュータプログラムもまた提供する。
【００５２】
いくつかの実施形態によれば、イベント検出器プロセスは、分散演算システムのネットワークノードにおいて実行されるコンピュータプログラムのインスタンスとして理解されるべきである。イベント検出器プロセスは、コンピュータプログラムのプログラムコードおよびその現在の活動を備えている。分散システムは、たとえば、分散演算ネットワークまたはマルチコアプロセッサでありうる。コンピュータネットワークの場合、ノードすなわち演算ノードは、たとえばイーサネット、または何らかの他の形態のネットワーク技術を通じて通信するコンピュータ装置または演算ユニット（たとえばＣＰＵ）を備えうる。すなわち、本発明のさらなる局面によれば、少なくとも１つの（生の）センサデータストリームに基づきイベントを決定するための分散コンピュータシステムもまた提供される。コンピュータネットワークでありうる提供される分散コンピュータシステムは、関連するイベント検出器をそれぞれが備えている分散ノードと、分散コンピュータシステムの分散ノード間においてイベント検出器を移動させるための装置の少なくとも１つの実施形態とを備えている。
【００５３】
イベント検出器プロセス転送または移動手続きは、たとえば、分散演算システムを制御するオペレーティングシステム（ＯＳ）の助けによって実行されうる。そのため、ＯＳは、分散システムのコンピュータハードウェア資源を管理し、たとえばイベント検出器プロセスのようなアプリケーションソフトウェアのための共通サービスを提供する一組のプログラムとして理解されるものである。そのようなＯＳサービスは、インスタンス化機能、すなわち、プロセス内容をコピーするための手段がアクセスする、プロセスインスタンスを生成する機能を備えうる。すなわち、生成手段は、分散システムを制御するオペレーティングシステムのプロセスインスタンス化機能にアクセスするための手段を備えうる。
【００５４】
いくつかの実施形態では、分散演算システムは、規定の幾何学的領域内にあるオブジェクトおよびすべての人を位置決めおよび／または追跡するためのそのような無線追跡システムまたは位置決めシステムに結合されうる。本明細書の導入部分ですでに説明したように、位置決めシステムは、無線センサネットワークに基づきうる。
【００５５】
イベント検出器プロセスは、コンピュータプログラムを設計するために用いられる挙動モデルとして理解されうる状態機械を備えうる。状態機械は、１つの状態から開始しもう１つ（または同じ）状態に終了する一組の活動である遷移に関連する（有限の）多くの状態によって構成される。遷移は、たとえばプロセスに対する初期または合成イベントの入力でありうるトリガによって開始する。それゆえ、本発明の局面によれば、イベント検出器プロセスは、状態機械を備えていればよく、イベント検出器プロセスの内容またはメモリは、上記状態機械の現在の状態を、たとえば、個々の変数または変数の組として反映しうる。イベント検出器プロセスにとって、状態機械は、ソフトウェアベースの状態機械、たとえば統合モデリング言語（ＵＭＬ）状態機械でありうる。
【００５６】
実施形態の１つの利点は、本発明の実施形態に係る分散演算システムの自己組織化において見られ得る。そのような分散演算システムは、分散システムまたはネットワークが、頑強かつ効率的なイベント信号処理を常に行えるように、イベント検出器プロセスをネットワークノード間に転送することによってシステム状態を変更しうる。
【００５７】
ＣＰＵ過負荷またはバッファオーバーフローが移動を引き起こした場合、通常、古いイベント検出器および新しいイベント検出器の双方を並行して動作させることはできない。さらに、古いノードから新しいノードに完全なデータストリームを転送することは、特定のイベントが稀に起こる場合には高いネットワーク負荷および長時間の処理オーバーヘッドを引き起こしうるので、禁止されている。実施形態は、実行時にイベント検出器を移動させ、かつ、新しいノードにおいてタイミング遅延に基づきＫ値を初期化することを可能とする概念を提案する。導入される待ち時間は無視できるレベルであり、古いイベント検出器インスタンスおよび新しいイベント検出器インスタンスの双方、ならびに上位レベルの検出器は、任意に時間において正しい順のイベントを見る。古いイベント検出器は、その状態がコピーされるとすぐに停止することができ、ネットワークオーバーヘッドは最小に維持される。
【００５８】
〔図面の簡単な説明〕
装置および／または方法のいくつかの実施形態を、添付図面を参照して例示のみを通じて以下に説明する。
【００５９】
図１は、実施形態に従う、第１のノードにおいて動作するイベント検出器を、分散演算システムの第２のノードに移動させる方法のフローチャートを示す概略図である。
【００６０】
図２ａ、２ｂは、イベント検出器の移動の前および後におけるセットアップの例を示す。
【００６１】
図３は、実施形態に従う、イベント検出器の移動のメッセージシーケンスチャートを示す。
【００６２】
図４は、イベント検出器の移動の前、間、および後におけるイベント遅延を示す。
【００６３】
図５は、実施形態に従う、遅延適合およびエコーキャンセルのためのコンピュータプログラムの擬似コードの一例を示す。
【００６４】
〔実施形態の記述〕
いくつかの実施形態を図示した添付図面を参照することによって、様々な実施形態例をより十分に説明する。図では、明瞭化のために、層および／または領域の厚さを誇張している。
【００６５】
したがって、実施形態例には様々な改変および代替形態が可能であるが、実施形態を図の例を通じて示し、ここに詳細に記述する。しかし、実施形態例を特定の開示された型に限定する意図はないが、しかしその逆に、実施形態例が、本発明の範囲内にあるすべての改変物、同等物、および代替物に及ぶことが理解されるべきである。図面の記述全体を通じて、同一の数字は、同一または類似の要素を示す。
【００６６】
ある要素がもう１つの要素に対して「接続される」または「結合される」と記述されるとき、それが他の要素に直接的に接続または結合されることが可能であるか、または、間に入る要素が存在しうる。対照的に、ある要素がもう１つの要素に「直接接続される」または「直接結合される」と記述されるとき、間に入る要素は存在しない。要素間の関係を記述する他の用語が用いられるときも、同様に解釈されるべきである（たとえば、「間に」に対する「直接的な間に」、「隣接する」に対する「直接的に隣接する」など）。
【００６７】
ここに用いられる用語は、特定の実施形態のみを記述する目的のためのものであり、実施形態例を限定することを意図しない。ここで用いられるように、文脈によってその他の場合が示される場合を除き、単数形は複数も同様に含んでいる。「備える」、「備えている」、「含んでいる」、および／または「含んでいる」という用語は、ここに用いられるとき、言及された特性、整数、工程、動作、要素、および／または部品を特定するが、１つまたはそれ以上の他の特性、整数、工程、動作、要素、部品、および／またはグループの存在を除外しないことがさらに理解される。
【００６８】
他に規定されないかぎり、ここに用いられるすべての用語（技術用語および科学用語を含んでいる）は、実施形態例が属する業界における当業者の一人によって共通に理解される意味と同じ意味を有する。さらに、たとえば、共通して用いられる辞書に定義された用語は、関連する技術の文脈におけるその意味に一致する意味を有し、かつ、理想的または極端に形式的な意味に定義されるように表現されないかぎり、そのように解釈されはしないことが理解される。
【００６９】
図１は、実施形態に従う方法１００のフローチャートを概略的に示す。方法１００では、最初は第１のノード（古いノード）または機械において動作していたイベント検出器を、シームレスで、分散演算システムの第２のノード（新しいノード）または機械へ、イベント検出器を移動または転送させる。 
【００７０】
移動方法１００は、２つの副次方法１１０および１２０を含んでいる。いくつかの実施形態において、副次方法１１０のステップは、第１のネットワークノードと関連付けられている一方、第２の副次方法１２０のステップは、第２のネットワークノードと関連付けられうる。しかしながらこのことは、副次方法１１０および１２０がそれぞれ第１のネットワークノードおよび第２のネットワークノードによってのみ実行されることを意味しない。そうではなく、たとえば方法１１０の一部は、第２のネットワークノードにおいて実行されうる。前述したように、分散演算システムの第１のノードおよび第２のノードは、たとえば分離したＣＰＵでありうる。そのような分離したＣＰＵは、たとえば、物理的に異なる演算装置内に配置されうるし、マルチコアＣＰＵの異なる独立した演算コアに対応しうる。
【００７１】
第１のノードから第２のノードに移動されるイベント検出器インスタンスは、利用される入力イベントに基づいて、利用される複数の入力イベントを処理することによって、少なくとも１つの合成出力イベントを生成する。すなわち入力イベントは、生成される合成出力イベントよりも、階層的に低いレベルのイベントによって構成されている。利用される入力イベントの各々は、さらに個々のイベント遅延δ（．）と関連している。イベント遅延δ（．）は、第１のノードにおけるイベントの発生時点または検出時点（ｔｓまたはｄｔｓ）と、その後に続く、各イベントの受信時点または到着時点（ａｔｓ）との間の時間差に対応する。
【００７２】
方法１００または１１０は、第１のネットワークノードにおいて利用される複数の入力イベントに対応する各イベント遅延（またはその最大値）の情報を第１のノードから第２のノードに転送するステップ１１２を含んでいる。方法１００および１１０は、さらに、移動したイベント検出器を第２のノードに到達させるために、イベント検出器の内容および／または状態を第１のノードから第２のノードに転送するステップ１１４を含んでいる。前述したように、イベント検出器は、有限の数の状態、および、前記状態間での特定の遷移を含んだ有限の状態の機械を備えうる。すなわち、移動するイベント検出器の内容は、演算状態装置の現在の状態（たとえば、各変数または変数の集合）を反映しうる。
【００７３】
さらに、方法１００または１１０は、複数の入力イベントを第１のノードから第２のノードに転送するステップ１１６を含んでいる。ステップ１１２、１１４、および１１６が第１のノード自体によって実施または実行されうることは、当業者ならば明白であろう。そのためステップ１１２から１１６は合わせて方法１１０を形成する。方法１１０は、第１のネットワークノード、または、様々なネットワークノードの間においてコンピュータを使用して行われる相互作用および／または通信を制御する中央制御装置によって実行されうる。
【００７４】
移動方法１００または副次方法１２０は、さらに、第２のネットワークノードが、第１のノードから転送され、かつ、複数の入力イベントに関連付けられた最初のイベント検出器から並行して転送された複数の入力イベントを受信するステップ１２２を含んでいる。すなわちステップ１２２において、複数の入力イベントは、それぞれ、２つの通路を介し、第２のノードに受信される。第１の通路は、各入力イベントのソースイベント検出器から、第１のネットワークノードを介して、第２のネットワークノードに導く迂回通路である。第２の通路は、入力イベントの最初のイベント検出器から「直接的に」第２のノードにと導く直接通路である。ここで、「直接的に」とは、第１のノードを介する迂回をすることなしに、分散演算ネットワークを通過することを意味する。ステップ１２２の後にはステップ１２４が続く。ステップ１２４では、第２のノードにおいて、第１のノードからやってくる個々のイベント遅延（またはその最大値）を示す転送された情報と、関連付けられた最初の（源）イベント検出器から直接的に受信した複数の入力イベントの個々の新しいイベント遅延とに基づいて、受信した複数の入力イベントを順番通りに処理する。すなわちステップ１２４は、迂回通路または別ルートの通路を辿って到着したイベントからの遅延情報を、直接通路を辿って第２のノードに到着するイベントからの遅延情報と合成することによって、入力イベントの正確な順番を導出することを含んでいる。
【００７５】
当業者にとって明白であるように、ステップ１２２および１２４は、分散演算システムの第２のネットワークノードにおいて実行される方法１２０を構成する。分散演算システムおよび／または第１のネットワークノードおよび／または第２のネットワークノードは、方法１００、１１０、および１２０の各ステップを実行することができるように、それぞれ、個々のステップを実行する手段をそれぞれ備えうる。そのために、そのような手段、たとえば、伝送のための手段、転送のための手段、受信のための手段、または処理のための手段は、適切にプログラムされた、電気的なアナログ回路またはデジタル回路を備えうる。たとえば、分散演算システムは、個々のネットワークノードとして機能する複数のＣＰＵを備えうる。それに対応して、第１のネットワークノードおよび／または第２のネットワークノードは、分散演算システムが備える、個々の分離したＣＰＵでありうる。いくつかの実施形態では、分散演算システムは、（無線）センサネットワーク、特に、導入で説明した地点特定ネットワークまたは位置決めネットワークと結合しうる。位置決めセンサネットワークの場合、後者は、運動学的データおよび位置データを含んでいる未加工のセンサデータまたは未加工のイベントを、分散演算システムに伝達しうる。分散演算システムにおいて、未加工のセンサデータは、イベントデータの最低レベルと見做されうるし、それに加えて、クロック信号ｃｌｋを伝達するために働きうる。最低レベルの未加工のセンサデータに基づき、第１のレベルのイベントとして、いわゆる初期イベントが検出されうる。すなわち、初期イベントは、未加工の（位置）センサデータのみに基づいている。次に、すべての高位レベルのイベントが、初期イベントから導出される。このことは、分散演算システム内において、未加工のセンサデータが非常に高レートで発生することが回避される可能性があるという利点を有する。これは、有名なスポーツイベント（たとえば、サッカー）のイベント検出で要求されるような、リアルタイムでのイベントの検出および処理を可能にする。すなわち、特定の実施形態では、分散演算システムは、たとえば、サッカー、ラグビー、またはアメリカンフットボールなどのスポーツゲームに含まれるイベントを検出するために使用されうる。
【００７６】
本発明の実施形態について、さらに、図２から５を参照して詳細に説明する。
【００７７】
図２ａに示す分散演算システム２００のネットワーク形態を考える。例としての分散演算システム２００は、ルータ２１０および２２０を備えている。各ルータ２１０、２２０は、分散演算システム２００が備える複数のネットワークノードに関連付けられている。たとえば、ルータ２１０は、第１のネットワークノードＮ１および第２のネットワークノードＮ２に関連付けられている。第２のルータ２２０は、分散演算システム２００が備える第３のネットワークノードＮ３およびネットワークノードＮ４に関連付けられている。すべてのネットワークノードＮ１からＮ４がそれぞれ互いに連結するように、ルータ２１０および２２０は、リンク２３０（たとえば、イーサネットリンク）を介して相互に連結している。
【００７８】
図２ａは、ノードＮ１からノードＮ２にイベント検出器が移動する前におけるネットワーク状況を例示する。移動の前、例としてのイベント検出器は、ノードＮ１において動作し、３つの入力イベントＡ（ノードＮ３によって発行または出射）、イベントＢ（ノードＮ２によって発行）、イベントＣ（ノードＮ４によって発行）を利用する。ノードＮ１からノードＮ２へ移動するイベント検出器は、利用される入力イベントＡ、Ｂ、およびＣに基づいて、合成イベントＤを生成する。合成イベントＤは、ネットワークノードＮ３によって再び利用される。換言すれば、入力イベントＡは、ノードＮ３において動作する最初のイベント検出器またはソースイベント検出器から、第１のネットワークＮ１において動作するイベント検出器へ提供される（参照番号２４２）。第２の入力イベントＢは、第２のネットワークノードＮ２からノードＮ１のイベントに提供される（参照番号２４４）。第３の入力イベントＣは、ネットワークノードＮ４から、ネットワークノードＮ１において動作するイベント検出器に提供される（参照番号２４６）。第１のネットワークノードＮ１において動作するイベント検出器は、合成イベントＤの最初のイベント検出器またはソースイベント検出器である。合成イベントＤは、最初、ネットワークノードＮ１から、ネットワークノードＮ３において動作する、より高位レベルのイベント検出器に提供される（参照番号２４８）。
【００７９】
図２ｂには、合成イベントＤのイベント検出器が、方法１００を用いることによって、第１のネットワークノードＮ１から第２のネットワークノードＮ２に移動または転送した後のシナリオが示されている。このイベント検出器がＮ１からＮ２に移動したとき、利用される入力イベントＡ、Ｂ、およびＣのソースノードは同じまま（すなわち、Ｎ３、Ｎ２、Ｎ４）である。しかしながら、それらに関連付けられたイベント遅延は明確に変化する。たとえば、移動の後、入力イベントＢは、第２のネットワークノードＮ２におけるローカルなイベントになるので、新しいノードＮ２における入力イベントＢの遅延δ（Ｂ）は、移動によって縮小する。利用される他の入力イベントＡおよびＣは、縮小しうるか、または縮小しえない。なお、ノードＮ３における利用は移動に関係しないが、それにもかかわらず、ネットワークノードＮ３における合成イベントＤの遅延も変化する可能性がある。
【００８０】
イベント遅延δ（．）が、関連するすべてのイベントにおいて縮小しないかぎり、単純な移動は失敗し易い。なぜならば、古いノード（Ｎ１）では機能したＫ値が、移動後の新しいノード（Ｎ２）および新しいイベント遅延δ’（．）にとっては小さすぎる可能性があるので、ノードＮ２における移動後のイベント検出器またはより高層のイベント検出器は、正しい（その時点での）順番をもう知らないからである。
【００８１】
本発明の実施形態は、イベント遅延を測定し、イベント遅延に適合することによって、移動後のイベント検出器への入力イベントを順番付けることを保証することを目的とする。通常、ＣＰＵの過負荷またはバッファのオーバフローが移動のトリガとなった場合には、旧いイベント検出器と新しいイベント検出器とを並列して動作させることは不可能である場合がある。さらに、特定のイベントがまばらに発生した場合、長期間にわたり、高いネットワーク負荷および処理のオーバーヘッドが引き起こされる可能性がある。そのため、完全なデータストリームを古いノードから新しいノードに転送することは禁止される。
【００８２】
本発明の実施形態は、実行時にイベント検出器を移動または転送しうる。また、新しいノードにおいて、旧いイベント遅延に基づくＫ値を初期化しうる。誘導される待ち時間は無視することができる。また、上位レベルのイベント検出器だけでなく、旧いイベント検出器および新しいイベント検出器の両者のインスタンスが、いつでも、順番付けられたイベントを取得することができる可能性がある。旧いイベント検出器は、内容または状態の情報が新しいネットワークノードにコピー／転送され次第、すぐに停止することができる。また、ネットワークのオーバーヘッドは最小限に維持されうる。
【００８３】
本発明の実施形態の背後にある着想は、１つのノードから他のネットワークノードにイベント検出器を協同的に移動または移管するために、新しいネットワークノードが、最初のイベント検出器またはソースイベント検出器から、必要な入力イベントを利用するだけでなく、旧いノードも、それらの入力イベントを、新しいノードに転送することである。このようにして、新しい演算ノードは、２つの異なるパス（旧いノードを介する迂回通路、および入力イベントの発生源からの直接通路）を辿って到着した入力イベントからのイベント遅延情報を合成することによって、その時点における正しい順番（またはＫ値）を導きうる。
【００８４】
図３は、実施例に従うイベント検出器の移動処理例のメッセージシーケンスチャート（ＭＳＣ）３００を示す。 
【００８５】
メッセージシーケンスチャート３００から分かるように、ネットワークノードＮ２は、はじめに、第１の（古い）ノード（Ｎ１）においてこれから実行されるイベント検出器の処理または対象である入力イベントＡ、Ｂ、およびＣを利用しうる（参照番号３０２）。ここで、入力イベントＡ、Ｂ、およびＣの利用３０２は時点ｔ０に起こる。利用３０２は、たとえば、ネットワークノードＮ２において中央ネットワーク制御器から受信した移動指示に応答して起こりうる。上記中央制御器の実体は、分散システム内の異なるルートを移動するイベント信号のより多くの遅延またはすべての遅延の情報を有しうる。そのため、イベントの遅延は、たとえば、異なるジッタ、異なる処理能力、および／または、異なるネットワーク通路または経路の異なる信号伝搬時間によるものでありうる。その代りに、あるいはそれに加えて、中央制御器は、個々のノードのより多くの負荷状況またはすべての負荷状況（たとえば、ＣＰＵ負荷）の情報、および／またはシステム全体の負荷情報を有しうる。そのため、いくつかの実施形態では、移動するための装置は、システム全体のパラメータ情報を有しうる。他の実施形態では、移動するための装置は、非集中、すなわち、複数のネットワークノードに分散されうる。この場合、ネットワークノードは、自身の負荷または自身のイベント遅延状況に限定された情報を有しうる。そのため、いくつかの実施形態では、システム全体のパラメータ情報が利用可能でなくても良い。
【００８６】
ＭＳＣ３００は、また、イベント検出器インスタンスが新しいネットワークノードＮ２においてすでにインスタンス化されていることを保証する。すなわち、移動するための装置は、第２のイベント検出器を取得するために、第１のイベント検出器に対応するプロセスまたはオブジェクトインスタンスを第２のノード上に生成するための手段をさらに備えうる。インスタンスは、実行中であるか否かに関わらず、該オブジェクトの発生またはコピーとして理解される。クラスまたはオブジェクトのインスタンスは、同じ組の特性を共有する。しかしながら、典型的には、それらの特性が何を含んでいるかは異なる。
【００８７】
また、時点ｔ０または上記時点ｔ０の少し後、第２のネットワークノードＮ２は、第１のネットワークノードＮ１に対し、移管要求メッセージを送信しうる（参照番号３０４）。後の移管要求メッセージへの応答として、古いネットワークノードＮ１は、第１のノードＮ１から第２のノードＮ２に複数の入力イベントＡ、Ｂ、およびＣを転送し始めうる（参照番号３１６）。さらに第１のノードＮ１は、２つのメッセージと共にステップ３０４の移管要求メッセージに応答しうる。古いノードＮ１から新しいノードＮ２に転送された第１のメッセージは、利用される各入力イベントＡ、Ｂ、およびＣの遅延情報を保持しうる（ステップ３１２参照）。すなわち複数の入力イベントＡ、Ｂ、およびＣに対応する個々のイベント遅延の情報は、ステップ３１２において、第１のノードＮ１から第２のノードＮ２に転送されうる。たとえばノードＮ１は、イベント遅延δ（Ａ）＝３０ｍｓ、δ（Ｂ）＝１０ｍｓ、δ（Ｃ）＝２０ｍｓである入力イベントを受信する可能性がある。ここで、Ｋ＝ｍａｘ（δ（Ａ）、δ（Ｂ）、δ（Ｃ）＝３０ｍｓである。そのため、遅延δ（．）は、それぞれ安全性マージンをすでに含みうる。それゆえ、いくつかの実施形態では、個々の遅延値δ（Ａ）、δ（Ｂ）、δ（Ｃ）、および／または、その結果としてのＫ値（Ｋ＝ｍａｘ（δ（Ａ）、δ（Ｂ）、δ（Ｃ））は、メッセージ３１２を介して、ノードＮ１からノードＮ２へ転送されうる。遅延情報パケットまたはメッセージ３１２は、第２のノードＮ２がｄｆ＝ｃｌｋ−ｔｓすなわちノードＮ１からノードＮ２にイベントを転送する際の副次遅延ｄｆを決定しうるように、現在のタイムスタンプｔｓを保持しうる。本例では、ｄｆは５ｍｓであるとする。換言すれば、第１のノードＮ１から第２のノードＮ２に入力イベントＡ、Ｂ、およびＣのイベント遅延情報を転送することは、上記の情報が、第１のノードＮ１から第２のノードＮ２へ送られた時点を示す転送タイムスタンプｔｓを転送することを含みうる。また、イベント遅延情報を転送することは、第２のノードＮ２において、第１のノードＮ１から第２のノードＮ２への一般的な転送遅延ｄｆを決定することを含みうる。ここで、一般的な転送遅延ｄｆは、転送タイムスタンプと、第２のノードＮ２におけるイベント遅延情報の受信時点または到着時点との間の時間差を示す。第２のノードＮ２は、メッセージ３１２の遅延情報を取得したとき、転送されたイベント遅延情報（δ（Ａ）、δ（Ｂ）、δ（Ｃ）および／またはＫ）および一般的な転送遅延に最初に基づいて、受信した複数の入力イベントＡ、Ｂ、およびＣを処理しうる。
【００８８】
ステップ３１４において古いノードＮ１から新しいノードＮ２へ転送される上記第２のメッセージまたはパケットは、イベント検出器のスナップショット（すなわち、現在の状態のコピー）を含んでいる。換言すれば、ステップ３１４では、移動したイベント検出器を第２のノードＮ２において取得するために、イベント検出器の内容が、第１のノードＮ１から第２のノードＮ２のイベント検出器のインスタンスへ転送されうる。
【００８９】
たとえば、オペレーティングシステムサービスは、内容を転送するための転送手段がアクセスすることが可能なコピー機能または転送機能を含みうる。すなわち、転送手段は、演算ノード、または、分散システムの他の制御部において動作するオペレーティングシステムの機能をコピーする処理または対象にアクセスするための手段を備えうる。転送手段は、第１のイベント検出器の所定の条件を凍結時点に取得するために、第１のイベント検出器の内容を所定の時点に「凍結」させるように動作可能でありうる。換言すれば、第１のノードＮ１から第２のノードＮ２にイベント検出器の内容を転送することは、第１のノードＮ１のイベント検出器の現在の状態を凍結させること、および、凍結した状態を、第２のノードＮ２のイベント検出器のインスタンスにコピーすることを含みうる。ここで、「凍結」とは、イベント検出器が、決定された状態になり、かつ、凍結時点における入力に応答することをやめることを意味する。換言すれば、第１のイベント検出器は、インスタンス化された第２のイベント検出器に、第１のイベント検出器の内容または状態条件をコピーするために、凍結時点において停止しうる。
【００９０】
したがって、内容３１４の転送は、ノードＮ２の第２のイベント検出器において、決定された同じ状態または規定された条件を取得するために、凍結した内容／状態を、第１のイベント検出器から第２のイベント検出器へコピーすることを含みうる。
【００９１】
新しくインスタンス化されたイベント検出器すなわち第２のイベント検出器が、第２のノードＮ２において開始されるかまたは切り換えられる前に、双方のイベント検出器の（同一の）入力イベントはバッファされうる。これにより、コピーによって、理想的には同じように規定された状態をすでに有している双方のイベント検出器が、予め定められた時点、すなわち「凍結」時点から開始した同一の入力データを取得する。クロックは、ノード間において異なりうるので、ノードＮ１は、転送されたスナップショットから生起する正しい状態を復帰させることができるように、ノードＮ２がすべてのイベントにバッファ処理を施すことができることを保証することが望ましい。たとえば、ノードＮ１が、時点ｔ０から入力イベントを処理していない場合、ノードＮ１の現在の状態が、スナップショットおよびｔｓｎａｐ＝ｔ０に使用されうる。あるいは、ｔｓｎａｐは、最後に処理されたノードＮ１の入力イベントにおいて出現するタイムスタンプにセットされうる。ステップ３１４においてスナップショットを送信した後、新しいノードＮ２は、最初のイベント検出器をコピーする管理権を取得し、コピーの実行を開始しているので、第１のネットワークノードＮ１は、イベント検出器を終了させうる。このことは参照番号３１５で示されている。古いノードＮ１においてイベント検出器が終了し、新しいノードＮ２でイベント検出器のインスタンスが開始した後、後者がイベント遅延適合処理３２０（後述）を終了させるまで、古いノードＮ１は、新しいノードＮ２に、入力イベントＡ、Ｂ、およびＣを転送し続けうる（参照番号３１６）。このことは、以下で続けて説明する。
【００９２】
たとえば、時点ｔ０＝ｃｌｋ＝１００において、第２の（すなわち新しい）ネットワークノードＮ２は、古いネットワークノードＮ１に、移管要求メッセージ３０４を送信する。古いネットワークノードＮ１は、利用される入力イベントＡ、Ｂ、およびＣを連続的に処理するので、タイムスタンプ１８０を有する入力イベントを処理するために、すでに忙しい可能性がある。古いネットワークノードＮ１は、ノードＮ２から移管要求メッセージが到着したとき、最初のイベント検出器のスナップショットを取得し、ｔｓｎａｐを１８０（最後に処理された入力イベントのタイムスタンプに対応）にセットし、スナップショットメッセージ３１４を送信し、ネットワークノードＮ１における最初のイベント検出器を終了させうる。新しいネットワークノードＮ２は、新しいイベント検出器インスタンスの状態をセットし、また、上述したタイムスタンプｔｓｎａｐ（すなわち、１８０）を有する任意のバッファされた各入力イベントＡ、Ｂ、およびＣのみを処理しうる。すなわち、古いネットワークノードＮ１から新しいネットワークノードＮ２への入力イベントＡ、Ｂ、およびＣの転送は、新しいノードＮ２において、転送および／または受信されたすべての入力イベントＡ、Ｂ、およびＣ（移管要求メッセージ３０４の時点ｔ０に開始した入力イベント）にバッファすることをスナップショット時点ｔｓｎａｐまで継続することを含んでいる。新しいノードＮ２に移動したイベント検出器は、動作を開始したとき、バッファされたイベント（スナップショット時点ｔｓｎａｐよりも後のタイムスタンプすなわち発生時点を有するイベント）を処理しうる。換言すれば、第１のノードＮ１から転送された複数の入力イベントＡ、Ｂ、Ｃを受信することは、イベント検出器の凍結した内容／状態が、第１のノードＮ１から第２のノードＮ２へ転送されたときに、スナップショット時点ｔｓｎａｐまで、新しいノードＮ２において、転送されたすべての入力イベントＡ、Ｂ、Ｃにバッファ処理を施すことを含みうる。ここで、第２のノードＮ２において、受信した複数の入力イベントＡ、Ｂ、Ｃを処理することは、バッファ処理を施され、上述したスナップショット時点ｔｓｎａｐよりも後のイベントのタイムスタンプまたは発生時点を有するイベントを処理することを含んでいる。
【００９３】
以下では、ステップ３２０のイベント遅延（δ（Ａ）、δ（Ｂ）、δ（Ｃ））の適合について、より詳細に説明する。ステップ３２０の間、古いノードＮ１から転送されたイベント遅延δ（Ａ）、δ（Ｂ）、δ（Ｃ）、および／または、その結果としてのＫ値は、連続的に適合または更新されうる。さらに、古いノードＮ１から迂回通路を介して第２のノードＮ２において受信された、利用される入力イベントのエコーがキャンセルされうる。実施形態によれば、第１のネットワークノードＮ１から第２のネットワークノードＮ２に、動作中のイベント検出器を正しく移動させることができる。しかしながら、利用されるイベントの遅延は、移動、および、その結果としての直接受信によって変化する可能性があるので、新しいネットワークノードＮ２において、利用される入力イベントＡ、Ｂ、およびＣのイベント遅延、また、適切なＫ値は異なっている可能性がある。第２のノードＮ２において、合成イベントＤのバッファサイズＫ’Ｄをゼロから演算する代わりに、遅延情報メッセージ３１２によって古いノードＮ１から受信したイベント遅延情報に従って、バッファサイズＫ’Ｄが初期化されうる。すなわち、新しいノードにおけるバッファサイズＫ’Ｄの遅延の最大値は、以下に従って決定されうる。
【００９４】
【数２】
0005847956.tif 000003
ここで、ＫＤは、古いノードＮ１における合成イベントＤのバッファサイズを表す。
【００９５】
すなわち、受信した複数の入力イベントＡ，Ｂ、およびＣを第２のノードＮ２において処理するステップ１２４は、受信した入力イベントを、移動したイベント検出器に中継するために、複数の入力イベントＡ、Ｂ、およびＣのイベント遅延Ｋ’Ｄの最大値と、各イベントの発生時点または検出時点とに基づいて、出力時点ｔｏｕｔを決定することを含みうる。
【００９６】
図４に示すように、新しいネットワークノードＮ２は、すべての入力イベント（Ａ、Ｂ、およびＣ）を２回受信する。一般的に、入力イベントｅは、直接通路４０２を通り遅延δ’（ｅ）を伴って新しいノードＮ２に到達する。また、入力イベントｅは、古いネットワークノードＮ１を介して迂回通路４０４を通り新しいノードＮ２に到達する。そのため、直接通路４０２は最初のノードＮ３またはソースノードＮ３から分散ネットワーク４０６を通って目的のノードＮ２へ直接的に到達する。ここで迂回通路は、ソースノードＮ３からネットワーク４０６を通って古いノードＮ１へ到達し、そこから新しいノードＮ２に到達する。新しいノードＮ２は、直接通路４０２を通る入力イベントｅを受信したとき、すぐに、δ（ｅ）＋ｄｆの代わりにδ’（ｅ）を用いてＫのバッファサイズを更新しうる。すなわち処理１２４のステップは、関連するイベント検出器から、直接通路４０２を介して受信した複数の入力イベントの個々の遅延に基づいて、個々のイベント遅延情報を更新することを含みうる。すなわち第１のノードにおける入力イベントに対応する個々のイベント遅延情報は、入力イベントｅに関連付けられたソースイベントＮ３から直接通路４０２を介して第２のノードにおいて入力イベントが受信されるとすぐに更新されうる。これにより、対応する旧いイベント遅延δ（ｅ）＋ｄｆは、ソースイベント検出器Ｎ３におけるイベントの発生時点または検出時点と、第２のノードＮ２における各イベントｅのイベントの受信時点または到着時点との間での差を用いて置換される。
【００９７】
たとえば、直接的に受信した第１のイベントについての新しい（直接の）遅延δ’（Ａ）＝２５ｍｓは、必要なバッファサイズＫＤを、３５ｍｓからｍａｘ（２５，１５，２５）＝２５ｍｓに減少させる。更新後のＫ値は、第２のノードＮ２から、イベント階層における高位または上位のレベルに位置する、利用するイベント検出器へ通知される。すなわち、転送されたイベント遅延情報を更新することが、複数の入力イベント（たとえば、Ａ，Ｂ、Ｃ）の更新後のイベント遅延またはバッファ値（Ｋ値）の最大値を導く場合、更新後のイベント遅延またはバッファ値の最大値は、第２のノードＮ２の移動後のイベント検出器の出力イベントＤを入力イベントとして使用する、下流または高位層のイベント検出器に通知されうる。換言すれば、更新後のＫ値が、移動後のイベント検出器の合成イベントＤに利用をした高位層のイベント検出器に通知されうることを意味する。
【００９８】
新しいノードにおいて入力イベントを２回受信することは、新しいバッファサイズＫを初期化するためには有利である一方、エコーした入力イベントは、移動後のイベント検出器に問題を提起する。各イベントのタイプＡ、Ｂ、Ｃについて、新しいノードＮ２が、直接通路４０２を介してイベントを初めて取得するとともに、迂回通路４０４を介してイベントのエコーも取得するとき、移動後のイベント検出器に関連付けられたイベントの順番付けユニットが、入力イベントを１回のみ取得することを確実にするために、エコーしたイベントの１つが省略される必要がある。その瞬間の前、低い遅延を有する入力イベントは順番付けユニットを通る一方、後で受信したバージョンの入力イベントは省略される。直接に受信したイベントのバージョン（直接通路４０２を介して受信したイベントｅのバージョン）が受信され次第、古いノードＮ１は、この特定のイベントのタイプは古いノードＮ１から新しいノードＮ２へ転送されない、という通知を受信することができる。すなわち、第２のノードＮ２は、第２のノードＮ２が、分散演算システム４０６の最初のイベント検出器（たとえば、Ｎ３）から直接通路４０２を介して各入力イベントｅを受信したならばすぐに、第１のノードＮ１に対して、入力イベントｅを転送することを停止する旨を通知するように動作可能でありうる。イベントの送り主は、たとえば、受信されたパケットで構成された送り主情報を介して決定されうる。
【００９９】
図５は、実施形態における上記遅延適合およびエコーキャンセルの（短縮された）擬似コード５００を示す。
【０１００】
図示された擬似コード５００は、タイプ「ＥｖｅｎｔＬｉｓｔ」のオブジェクト「ｅｃｈｏ」の初期化を開始する（参照番号５０２）。次に、ｆｏｒループ５０４において、第１のノードから転送されたイベント遅延、および、共通転送遅延値ｄｆを用いて、移動したイベント検出器のイベント遅延ｄが初期化される。ステップ５０６において、ｍａｘ（ｄｅｌａｙｓ）に従い、新しいイベント検出器または移動したイベント検出器ＥＤｎｅｗのＫ値が決定される。ｗｈｉｌｅループ５０８に含まれる第１のｉｆ文５１０は、受信されたイベントのＩＤが、利用されるイベントに属するか否かを判定する。判定結果が否である場合、利用される入力イベントｅが受信されるまで、イベントの受信が継続する。利用される入力イベントｅが、直接通路４０２によって受信された場合（ｉｆループ５１２参照）、「ｉｄ」を有するイベントｅのイベント遅延は、値ｃｌｋ−ｅ．ｔｓに更新される（参照番号５１４）。続いて、行５１６において、Ｋ値が更新される。更新されたＫ値Ｋｎが、先に決定されたＫ値Ｋに等しくない場合、新しいイベント検出器または移動後のイベント検出器ＥＤｎｅｗのＫ値は、新しいＫ値Ｋｎに更新される。したがって、変更後のＫ値は、高位層のイベント検出器に通知される（ｉｆ文５１８参照）。また、古いノードＮ１には、識別名が「ｉｄ」であるイベントｅを転送し続けることが不要である旨が通知される（行５２０参照）。次のｉｆ文５２２において、イベントｅのエコーは、削除または消去される（イベントｅのエコーが存在する場合）。一方、エコーが追加され（参照番号５２４）、また、新しいイベント検出器または移動したイベント検出器のインスタンスＥＤｎｅｗに関連付けられた順番付けユニットに向けて、受信したイベントｅが送信される。
【０１０１】
本発明の実施形態に従う、協同的な移管または移動の概念は、第１のノードから分散演算システムの第２のノードにイベント検出器を安全に移動させることを可能にする。また、それと共に、新しいイベント検出器におけるイベントの順番を総体的に保証する。移動したイベント検出器は、相互にＫ値を補正するので、イベント検出器は、コピーされうるし、即時にシャットダウンされうる。本発明の実施形態は、順番通りではないイベントが支配的である場合であっても、高データ速度センサストリームの信頼性のある分散したイベント処理を達成することができる。イベント遅延は、ランタイムにおいて、測定または適合されうる。また、入力されるイベントストリームの順番を総体的に保証するために必要である間、イベントは延期されうる。イベント遅延の予備知識は必要でない。負荷を平衡化し、利用可能な演算能力をよりよく利用するために、イベント検出器は、実行時に移動することができる一方、タイミングの制約は有効であり続ける。
【０１０２】
本発明の実施形態は、サッカーに適用されるリアルタイム位置決めシステム（ＲＴＬＳ）において良く機能する。このようなＲＴＬＳは、たとえば、ボールについては毎秒２０００個のサンプリング点で、また選手および審判については毎秒２００個のサンプリング点で、１４４個の送信機を同時に追跡しうる。各選手は、４つの送信機（手足の各々に１つずつ）を備えうる。送信機からの未加工のセンサデータは、ミリメータ単位の絶対位置、速度、加速度、および、あらゆる方向についてのクオリティーオブロケーション（ＱｏＬ）を含んでいる。サッカーは、これらのサンプリングレートを必要とする。ボールについての毎秒２０００個のサンプリング点、および、１５０ｋｍ／ｈに達する速度に加えて、２つの連続する位置の間隔は２ｃｍになる可能性がある。パス、ダブルパス、ゴールへのシュートのようなサッカーのイベントは、１秒以内で生じる。そのため、イベント検出器の階層が、システムのライブ出力を利用する観察者（たとえば、リポータ）を助けることができるように、イベントの処理および移動は、イベントが即時に検出されることを保証することが望ましい。
【０１０３】
上記の記述および図面は、本発明の原理を単に説明するに過ぎない。それゆえ、ここには明確には記述されていないが本発明の原理を体現しかつその精神および範囲内に含まれる様々な構成を当業者が考案することができることが、評価される。さらに、ここに列挙されたすべての例は、本発明の原理および技術を推進するために発明者が貢献した概念に対する読者の理解を助けるためのはっきりとした教育的目的のみであることと、特別に列挙された例および条件に対する限定なしに解釈されるべきであることを、主に意図している。さらに、本発明の原理、局面、および実施形態、ならびに特定の例示を列挙するすべての言明は、それと同等なものを含んでいることが意図される。
【０１０４】
「〜ための手段」（特定の機能を実行する）として示される機能的ブロックは、特定の機能を実行するためにそれぞれ適合され、構成され、または動作可能である回路を備えている機能ブロックとして理解されるべきである。それゆえ、「何かのための手段」は、同様に、「何かを行うために適合され、構成され、または動作可能である手段」としても理解されうる。特定の機能を実行するために適合された手段は、それゆえ、そのような手段が上記機能を（所望の時点において）必ず実行していることを意図はしない。
【０１０５】
任意の機能的ブロックを含んでいる図面に示す様々な要素の機能は、専用のハードウェア、たとえばプロセッサを通じて、さらに、適切なソフトウェアに関連するソフトウェアを実行することができるハードウェアを通じて、提供されうる。プロセッサによって提供されるとき、機能は、単一の専用プロセッサ、単一の共用プロセッサ、または、いくつかの個別プロセッサが共用されうる複数の個別プロセッサによって提供されうる。さらに、「プロセッサ」または「コントローラ」という用語の明示的な利用は、ソフトウェアを実行することができるハードウェアを排他的に意味すると解釈されるべきではなく、暗黙的に、制限することなく、デジタルシグナルプロセッサ（ＤＳＰ）ハードウェア、ネットワークプロセッサ、アプリケーション特異的集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ソフトウェアを格納するためのリードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、および非揮発性記憶媒体を含めうる。他のハードウェア、従来品および／または改良品もまた、含まれうる。
【０１０６】
如何なるブロック図も、本発明の原理を具現化する説明的な回路の概念的な図を表すことが、当業者によって評価されるべきである。同様に、如何なるフローチャート、フロー図、状態遷移図、疑似コード、およびその他が、コンピュータまたはプロセッサが明示的に示されているか否かに関わらず、コンピュータ読み取り可能な媒体において実質的に表され、それゆえコンピュータまたはプロセッサによって実行されうる様々なプロセスを表すことが評価される。
【０１０７】
さらに、以下の請求項が、個々の請求項のそれ自身が別々の実施形態として含まれうる詳細な説明に組み込まれる。個々の請求項のそれ自身が別々の実施形態として含まれうるとはいえ、従属請求項が、請求項において、１つまたはそれ以上の他の請求項との特定の組み合わせとして言及されるとはいえ、他の実施形態もまた、従属請求項と、個々の他の従属請求項の発明特定事項との組み合わせを含みうることが注意される。そのような組み合わせは、特定の組み合わせが意図されないことが述べられないかぎり、ここに提案される。さらに、請求項が独立請求項に直接には従属していないとしても、この請求項の特徴を如何なる他の請求項に含めることもまた意図される。
【０１０８】
明細書または請求項に開示された方法が、これらの方法の個々の工程を実行するための手段を有する装置によって実装されうることがさらに意図される。
【０１０９】
さらに、明細書または請求項に開示された複数の工程または機能の開示が、特定の順の範囲内にあると解釈されえないことが理解される。したがって、複数の工程または機能の開示は、複数の工程または機能が技術的理由によって入れ替え可能ではないかぎり、これらを特定の順には限定しない。
【０１１０】
さらに、いくつかの実施形態では、単一の工程は、複数の副次工程を含みうるか、複数の副次工程に分解されうる。そのような副次工程は、明示的に除外されないかぎり、この単一の工程に含まれるか、その一部でありうる。
【図面の簡単な説明】
【０１１１】
【図１】実施形態に従う、第１のノードにおいて動作するイベント検出器を、分散演算システムの第２のノードに移動させる方法のフローチャートを示す概略図である。
【図２ａ】は、イベント検出器の移動の前および後におけるセットアップの例を示す。
【図２ｂ】は、イベント検出器の移動の前および後におけるセットアップの例を示す。
【図３】は、実施形態に従う、イベント検出器の移動のメッセージシーケンスチャートを示す。
【図４】は、イベント検出器の移動の前、間、および後におけるイベント遅延を示す。
【図５】は、実施形態に従う、遅延適合およびエコーキャンセルのためのコンピュータプログラムの擬似コードの一例を示す。
【図１】
0005847956.tif 000004
【図２ａ】
0005847956.tif 000005
【図２ｂ】
0005847956.tif 000006
【図３】
0005847956.tif 000007
【図４】
0005847956.tif 000008
【図５】
0005847956.tif 000009