JP2011526014A - 順序メッセージ処理 - Google Patents

順序メッセージ処理 Download PDF

Info

Publication number
JP2011526014A
JP2011526014A JP2011514608A JP2011514608A JP2011526014A JP 2011526014 A JP2011526014 A JP 2011526014A JP 2011514608 A JP2011514608 A JP 2011514608A JP 2011514608 A JP2011514608 A JP 2011514608A JP 2011526014 A JP2011526014 A JP 2011526014A
Authority
JP
Japan
Prior art keywords
message
node
processing
messages
order
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.)
Granted
Application number
JP2011514608A
Other languages
English (en)
Other versions
JP5654983B2 (ja
JP2011526014A5 (ja
Inventor
ジョンソン,ウィリアム,ケイ,サード
セラノ,マーティン,エー
Original Assignee
アティヴィオ,インコーポレイテッド
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 アティヴィオ,インコーポレイテッド filed Critical アティヴィオ,インコーポレイテッド
Publication of JP2011526014A publication Critical patent/JP2011526014A/ja
Publication of JP2011526014A5 publication Critical patent/JP2011526014A5/ja
Application granted granted Critical
Publication of JP5654983B2 publication Critical patent/JP5654983B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/41Indexing; Data structures therefor; Storage structures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Abstract

メッセージを適切な作業スケジューリングを保証し、反復的及び条件的処理をするように処理する。メッセージの順序処理を必要とする処理ノードが、メッセージの順序処理を必要としない複数の連続した処理ノードにおいて動作するように構成される。順序ノードの上流のノードは、(i)処理中のメッセージと、順序が前記処理中のメッセージの後であり前記ノードの下流に転送されたメッセージとの間のスキューをモニターし、(ii)スキュー閾値に達したら処理を中断する。順序ノードの上流ノードは、メッセージIDで決まる他のメッセージのデルタ以内に、メッセージの出力を制限する。また、フロー経路から削除されたメッセージは、順序処理のためにヌルメッセージにより置き換えられる。子メッセージは順序体系を保存するため親IDを組み込む。

Description

本発明は、複数の方法、システム、及び対応するコンピュータ読み取り可能プログラムを有する製品がメッセージ処理に関する。
ハイスループットデータフロー処理の一般的なモデリング方法では、データフローを有向グラフとして表す。有向グラフでは、ノードが計算リソースを表し、エッジがノード間のデータ伝送経路を表している。このような場合、非同期データ伝送を用いて、ノードを互いにデカップリングできる。このデカップリングにより、各計算ノードの実行効率をできるだけ高くできる。何故なら、ノードは、下流のノードが処理を完了するのを待たずに、次のメッセージの処理を開始できるからである。場合によっては、複数の計算ノードが、「単一の」計算ノードとして、並行かつ共同して実行でき、多数の作業ユニット(units of work)を同時に処理できる。
段階的イベント駆動アーキテクチャ(SEDA)は、計算ノード間に制限キュー(bounded queues)を挿入することにより、この方法(approach)を改善するものである。ノードAが他のノードBに処理データ(work)を転送するとき、ノードAとノードB間のキューがいっぱいであれば、ノードBがキューの処理データの一部を使うまで、Aはブロックする。このようにAをブロックすることにより、Aが新しい処理データ(work)を使わないようにし、その入力キューをいっぱいにして、その前にある計算ノードをブロックする。かかる技術を利用するプロセスの例として、サーチエンジンによる文書取り込みがある。この文書取り込みでは、サーチエンジンは、後で検索するために、複数の形式の文書(電子メール、PDF、マルチメディア、ブログポスティングなど)をすべて処理して、インデックス付けする必要がある。
[関連出願]
本出願は、2008年6月17日出願の米国仮出願第61/073,164号(発明の名称「順序メッセージ処理」)の利益を主張するものである。上記の出願の教示はその全体をここに参照援用する。
この方法は、データフロー処理システムにおける作業を絞る(throttle)効率的な方法である。しかし、特定の計算ノードに対して、それがメッセージを処理する順序を保証することが望ましい場合が多い。例えば、トランザクションのコミットメッセージは、作業がコミットされるまで処理できない。SEDAによる並列非同期データフロー処理には、高スループット、低レイテンシで作業を絞る効率が極めて高いが、メッセージの順序を乱す性質がある。
複数の方法、システム、及び対応するコンピュータ読み取り可能プログラムを有する製品がメッセージ処理に関係する。複数の連続した処理ノードは、順序データを必要とするノードを含んでもよい。
文書の情報源(sources)がシステムに入力を供給する。情報源にはファイルシステムリポジトリ、電子メールサーバ、物理的媒体(例えば、CD−ROM、DVD)、音声認識システムで認識されたテキスト、データベースなどが含まれる。文書は連続したメッセージに挿入され、システムにより処理される。
メッセージIDを連続したメッセージに適用する。メッセージの処理により子メッセージが生成されることもある。子メッセージにはメッセージIDが割り当てられ、子メッセージIDは関連する親IDを組み込むようにエンコードされる。親メッセージIDに、関連する子メッセージの数を示す情報を付加してもよい。
場合によっては、一連のメッセージが、関連する複数の文書を含む。関連する複数のメッセージを含むメッセージは、すべて同時にかつ送られた順序で永続的な記憶にコミットされる必要がある。そのため、関連する文書を含むメッセージのグループは、メッセージIDにより識別される。
有利にも、システムが生成するメッセージIDナンバーを用いて、IDナンバー、各ノードの特徴、及びそのノードで実行した処理結果によりメッセージを処理してもよい。順序処理を必要とするノードは、メッセージIDに基づきそのノードにメッセージを送る(deliver)入力キューを有する。かかるノードは、完全順序モードで、または境界メッセージで分けられたメッセージの「グループ」で、動作可能である。場合によっては、システム生成されたメッセージIDナンバーは、そのシステムにおいて一意的である。
順序ノードの上流のノードは、(i)処理中のメッセージと、順序が前記処理中のメッセージの後であり前記ノードの下流に転送されたメッセージとの間のスキューをモニターし、(ii)スキュー閾値に達したら処理を中断できる。
有利にも、アプリケーションによっては、非同期かつ並行度が高い任意の有向グラフ処理モデルを用いる能力を維持しつつ、任意のノードがメッセージを順序通りに処理する能力を保存する。個々のノードや処理するメッセージの特徴を用いて、システムの全体的な性能を損なうことなく、順序的な制約を満足し、再帰的処理を許容するように、メッセージフローの送り先を決める(direct)ことができる。例えば、計算ノードによっては、順序メッセージ処理を必要としない。同様に、メッセージタイプによっては、(順序メッセージ処理を必要とするノードにより処理されたものであっても)特定の順序で処理する必要がないものもある。2つの異なるXML文書からフィールドを抽出するようなメッセージタイプは、どういう順序でも、並列でも実行でき、メッセージのグループの間の境界を表す(例えば、「シャットダウン」、「チェックポイント」、「コミット」など)。さらに、ノードによっては、次の境界メッセージまでに1グループのメッセージをすべて処理する限り、順序メッセージ処理を必要としないものもある。
順序ノードの上流のノードは、メッセージのスキューを、そのメッセージに関連するメッセージIDの関数としてモニターする。
各処理ノードは、非同期データ伝送を用いてメッセージを処理できてもよい。さらに、処理ノードは、互いに非結合状態であっても、メッセージを処理できてもよい。また、各処理ノードは、複数のスレッド(threads)を用いて複数のメッセージを同時に処理できてもよい。処理ノードは、ヌルメッセージを認識して処理できる。入力キューが各処理ノードの前段に設けられてもよい。
メッセージを、コンテンツに応じた異なるレートで処理でき、順序通りでないメッセージの出力が可能となる。メッセージの出力を、メッセージIDにより決まる他のメッセージのデルタ(スキュー)内に限定してもよい。順序通りでないメッセージの出力からの下流における順序メッセージ処理が可能となる。
メッセージの出力の限定は、メッセージIDにより決まる、他のメッセージのデルタ外におけるメッセージの処理の中断を含んでもよい。
第1ノードは、フロー経路において一連の順序メッセージのうち一メッセージを削除し、削除したメッセージの替わりにヌルメッセージを挿入することができる。順序処理ノードは、フロー経路中でメッセージを順序通り処理して、削除したメッセージの替わりにフロー経路におけるヌルメッセージを認識できる。
有利にも、アプリケーションによっては、メッセージIDが一致するヌルメッセージを用いてメッセージの順序を維持する。例えば、あるノードにおける文書の処理の結果が条件付きであれば(すなわち、メッセージを2つ以上のノードに転送する、またはメッセージを複数のサブメッセージに分離して複数のノードに送る場合)、分岐ノードを用いる。分岐ノードがその下流ノードの1つだけ(または全部未満)にメッセージを転送する場合、メッセージIDが一致するヌルメッセージを、メッセージを受け取らないノードに送る。各メッセージには「n個のうちの1つ」であることを示す情報を添付する。ここでnは下流ノードの数を表す。同様に、メッセージを削除したとき、ヌルメッセージをシステムに挿入し、処理される他のメッセージの順序を維持する。分岐した処理経路が合流(rejoin)する場合、サブメッセージを再合成してヌルメッセージを破棄する合流計算ノードを挿入する。
メッセージにリカバリ不能な処理エラーが発生したとき、メッセージを破棄する。メッセージは、フロー経路の分岐に応じて削除される。さらに、第1ノードはフロー経路からメッセージを削除してもよい。破棄したメッセージの替わりにヌルメッセージを用いて、順序処理を容易にする。
複数のフロー経路に分岐したメッセージは、再結合されて、元のフロー経路を再構成する。元のフロー経路の再構成とネストしたノード分岐を容易にするため、ヌルメッセージにおいて送り先ノードを示し、合流ノードがメッセージを再結合してフロー経路を再構成し、合流ノードが送り先ノードであるヌルメッセージを削除する。
文書タイプノードは、(i)メッセージに含まれる文書タイプに基づき前記メッセージを構成メッセージノードに分岐し、(ii)前記メッセージノードを下流処理ノードに転送し、(iii)下流処理ノードに転送する、メッセージノードが特定されていないヌルメッセージを生成できる。
複数の文書処理ノードは、文書タイプを有するメッセージを処理するようにそれぞれ構成されていてもよい。
合流ノードは、文書処理ノードで処理された構成メッセージノードを受け取り、ヌルメッセージを削除してもよい。
本方法、システム、及び対応する製品のその他の態様と効果は、図面、詳細な説明、及び請求の範囲から明らかになるであろう。これらはすべて、本方法、システム、及び対応する製品の原理を例として示すものである。
上記のものは、添付した図面に示した本発明の実施形態の、以下に記載した具体的な説明により明らかになるであろう。異なる図面においても同じ参照文字は同一のものを示している。図面は必ずしも寸法通りではなく、本発明の実施形態の図示に当たり強調した部分もある。
非同期かつ並列度の高い任意有向グラフ処理モデルのシステムを示す図である。 再帰的メッセージ処理及び非同期かつ並列度の高い任意有向グラフ処理モデルの他のシステムを示す図である。 非同期かつ並列度の高い任意有向グラフ処理モデルの、分岐を含む他のシステムを示す図である。 非同期かつ並列度の高い任意的有向グラフ処理モデルの、スキュー検出を利用する方法を示すフロー図である。 非同期かつ並列度の高い任意的有向グラフ処理モデルの、ヌルメッセージを使用する方法を示すフロー図である。 順序処理を含む、非同期かつ並列度の高い任意的有向グラフ処理モデルの、ヌルメッセージを使用する方法を示すフロー図である。 フロー経路を再形成する、非同期かつ並列度の高い任意的有向グラフ処理モデルの、ヌルメッセージを使用する方法を示すフロー図である。 非同期かつ並列度の高い任意的有向グラフ処理モデルの、マルチパートメッセージIDを使用する方法を示すフロー図である。 有向グラフを用いて文書取り込みシステムにおける複数の処理ステップ(ノード)を表す別の実施例を示す図である。 有向グラフを用いて文書取り込みシステムにおける複数の処理ステップ(ノード)を表す別の実施例を示す図である。 有向グラフを用いて文書取り込みシステムにおける複数の処理ステップ(ノード)を表す別の実施例を示す図である。 有向グラフを用いて文書取り込みシステムにおける複数の処理ステップ(ノード)を表す別の実施例を示す図である。
発明の詳細な説明
本発明の実施形態を以下に説明する。
ここに引用する特許、公開公報、参照文献の教示は、そのすべてをここに参照援用する。
文書と構造化データの処理と、インデックス付けした検索可能データ記憶装置への取り込みは、多くのステップを要し、そのうちの一部は特定の順序で実行しなければならず、その他は並列に処理できる。文書の処理と取り込みを容易にするため、文書を、一意的なメッセージIDを有するメッセージ中に保持する。ここで、文書とは、pdfファイル、ビデオ、オーディオ、電子メールなどの非構造化データ、またはXMLファイル、csvファイル、データベースソースから受け取ったデータなどの構造化データをいう。さらに、一部の文書(例えば、複数の添付ファイルを有する電子メール)の処理には、複数の処理スレッド、異なる処理時間、及び再帰的処理が生じる可能性がある。こうした複雑性のため、メッセージとメッセージコンポーネントの順序処理が不連続となる。真に非同期の処理は、メッセージの異なる要素を異なる時間に処理し、図1Aないし図1Cに示したように、順序が狂った(out of order)処理となってしまう。
図1Aは、非同期かつ並列度の高い任意有向グラフ処理モデルのシステムを示す。1つ以上の文書110が、レコードベース・データベース管理システム(RDBMS)などの文書記憶装置100からシステムに入力される。文書100はメッセージ111に挿入される。各メッセージは一意的なメッセージIDを有する。処理ノード120a−cは、メッセージ111を受け取り、その中の文書を処理する。各処理ノード120a−cは、複数のスレッド(threads)を有し、多くのメッセージ111を同時に処理できる。各処理ノードの前には入力キュー125a−dが設けられている。各ノードは、入力キュー125a−dにより、キューがいっぱいになるとその前のノードをブロックするので、リソースを能力以上に割り当てずにメッセージを処理できる。このように、入力キュー125a−dによりシステム全体の負荷を制限する。各メッセージは、処理されると、例えば、インデックス付けされた検索可能データ記憶装置140に取り込まれる。各処理ノード120a−cは、メッセージ111の順序処理(ordered processing)を要しない。しかし、順序処理ノード130は、順序付けてメッセージ111を処理する必要がある。結果として、順序処理ノード130は、処理を中断して、一連のメッセージ(sequential set of messages)がそろうのを待たねばならない。一連のメッセージは、関連した文書を含む一組のメッセージであってもよい。順序処理ノード130に一連のメッセージがそろわないようなシナリオでは、システムが停止する。代替策としては、キュー125bを制限せずに、順序処理ノード130がすべてのメッセージ111にアクセスできるようにする。しかし、この代替策では、キューが有する負荷制限という特性が損なわれる。
図1Bは、非同期かつ並列度の高い任意有向グラフ処理モデルを用いる、再帰的メッセージ処理を有する他のシステムを示す。図示したように、文書110が添付ファイル137(docファイル、pdfファイル、画像、ビデオ、zipファイルなど)を含む電子メールである場合、メッセージの一部は他の部分とは関わりなく処理・記憶され、データベースが不完全で不正確なものとなってしまう可能性がある。これが起こるのは、添付ファイルに追加的処理(unzip、スキャン、インデックス付けなど)が必要だが、かかる処理をするリソースがビジー状態である場合である。例えば、処理ノード120bは、電子メール処理ノード135に、文書110、すなわち添付ファイル137を有する電子メールメッセージを送る。電子メール処理ノード135は、電子メールから添付ファイル137を取り出し、それを処理ノード120aに送る。同時に、電子メール処理ノード135は、文書110のテキストを入力キュー125cに送る。それゆえ、電子メールメッセージは、それの添付ファイルの十分前に処理される。あるいは、場合によっては、文書110のテキストがノード120cに届く前に、添付ファイル137を処理して、添付ファイル137が文書110のテキストの前にインデックスに届くようにしてもよい。
図1Cは、非同期かつ並列度の高い任意的有向グラフ処理モデルにおいて分岐を含むシステムを示している。例えば、分岐ノード115が一連の文書110a−cを受け取ったものと仮定する。分岐ノード115は、文書を受け取ると、処理条件に基づいて、第1の文書110aと第3の文書110cとを経路Aに送る。同様に、分岐ノード115は、第2の文書110bを経路Bに送る。各フロー経路の処理ノードが順序処理を要しない場合、システムはスムースに動作し続け、合流ノード(joining node)145は全ての文書を受け取り、それを再結合してインデックス140に送る。
この例では、フロー経路Aの順序ノード130が順序処理(ordered processing)を要する。順序ノード130は、第1の文書110aと第3の文書110cとを受け取り、第2の文書110bを受け取るまで処理を停止する。しかし、第2の文書110bはフロー経路Bに送られてしまったので、順序ノード130が第2の文書110bを受け取ることはない。そのため、システムにはエラーが発生する。
一般的に、非同期かつ並列度の高い任意的有向グラフ処理モデルを用いる機能を維持しつつ、必要なメッセージの順序を保存する方法やシステムがある。個々のノードや処理するメッセージの特徴を用いて、システムの全体的な性能を損なうことなく、順序的な制約を満足し、再帰的処理を許容するように、メッセージフローの送り先を決める(direct)ことができる。例えば、計算ノードによっては順序付けたメッセージ処理を必要としないものがあり、メッセージのタイプによっては特定の順序で処理する必要がないものもある。
メッセージをシステムに取り込むとき、数字が大きくなっていく(increasing)メッセージIDでメッセージをマークし、処理ノードの順序的特徴に基づくメッセージを処理すべき順序を示す。このメッセージIDは、取り込んだときの順序を再構成できるものであれば、どんなデータであってもよい。順序付けたメッセージ処理を必要とする計算ノードは、そのように注釈され、その前にはメッセージID番号に基づく順序でメッセージを送る、修正入力キューを設ける。
順序処理ノードの上流のノードは、各メッセージIDのスキュー閾値(skew thresholds)をモニターするように構成できる。上流ノードは、スキュー閾値に到達すると、下流の順序処理ノードが、その入力キューが文書により過負荷にならずに一連の文書に対応するメッセージIDを受け取るように、メッセージの処理を調整する。順序メッセージ処理を必要としないノードは、メッセージID番号を考慮せずに、他のノードと並列に実行できる。メッセージのタイプによっては、サブメッセージ(例えば、複数のメッセージ添付ファイル)の集まりを意味するメッセージの「グループ」間の境界を意味するものもある。処理ノードに境界メッセージ(グループになったメッセージの開始または終了を示すメッセージ)が到着すると、その境界メッセージを完全に処理するまで、新しいメッセージ(単一メッセージまたは次のグループに属する複数のメッセージ)の送りは中断される。ノードによっては、次の境界メッセージまでに1グループのメッセージをすべて処理する限り、順序メッセージ処理を必要としないものもある。
図1Aに示したように、順序処理ノード130は、順序付けたメッセージの処理を必要とする。順序処理を必要としない処理ノード120a−bは、一般的には、メッセージをどんな順序でも処理する。結果として、順序処理ノード130は、一連のメッセージを受け取るまで、処理を中止しなければならない。しかし、順序処理ノード130は、一連のメッセージの最後のメッセージ(a message that completes a sequential set of messages)を受け取ると、メッセージで過負荷になってしまう場合がある。そのため、処理ノード120a−bは、スキュー検出を利用して、順序処理を必要とする下流ノードがメッセージで過負荷になるのを防止する。
図2は、非同期かつ並列度の高い任意的有向グラフ処理モデルの、スキュー検出を利用する方法200を示すフロー図である。この方法は、用いるメッセージID案にかかわらず、スキューの精密な尺度を提供する。特に、この方法は、メッセージIDデータが数字であることには依存しない。他の方法を用いて、メッセージID案の場合のスキューを計算または評価してもよい。ステップ205において、図1に示した処理ノード120aは、数字が増えるメッセージIDを有するメッセージを受け取る。メッセージIDは、処理ノードの順序的特徴に基づく、メッセージを処理すべき順序を示す。処理ノード120aは、順序処理は必要としないが、図1の順序処理ノード130における順序処理をやりやすくするために、スキュー検出を行わねばならない。次に、ステップ210にいて、受け取ったメッセージをメッセージIDに従って順序リスト(ordered list)に入れる。
ステップ220では、順序リスト上の各メッセージについてスキューカウントをインクリメントする。スキューカウントを、メッセージIDから最大メッセージIDまでの処理ノード120aで処理されるメッセージ数として計算する。処理ノード120aより下流での順序メッセージ処理を容易にするため、処理ノード120aは、現在処理している他のメッセージよりもメッセージIDが大きい、所定のスキュー閾値までのメッセージの並列処理のみを行う。
例えば、スキュー閾値が20メッセージと予め決まっており、処理ノードが、メッセージIDが「1」のメッセージを現在処理している場合、処理ノードは、メッセージIDが21のメッセージの並列処理は行わない。そのため、ステップ230において、順序リストの最初のスキューカウントを取って、現在のスキューカウントを計算する。リストの最初のメッセージは、現在処理されているメッセージIDが最低のメッセージである。ステップ240において、ノードは、スキュー閾値に達したか判断する。達していなければ、ステップ245aにおいて、ノードはメッセージを処理し、ステップ250において、処理したメッセージを順序リストから削除する。スキュー閾値に達したら、ステップ245bにおいて、ノードは、メッセージが完全に処理され、ステップ230を用いて現在の閾値を計算するまで、メッセージの処理を中断する。方法200を具体的なシーケンスを有するものとして示したが、別の実施形態ではシーケンスは異なってもよい。
有向グラフで分岐が生じた場合(例えば、複数のメッセージコンポーネントが異なる処理ノードに送られた場合)、メッセージが送られていない分岐のすべてに、同じメッセージIDを有する特殊なヌルメッセージを送る。同様に、システム中のノードがメッセージを削除する場合、メッセージIDが最初のメッセージと一致するヌルメッセージ(Null message)で、削除するメッセージを置き換える。また、ヌルメッセージは、ノードにリカバリ不能の処理エラーが発生してメッセージが失われたときに、失われたメッセージを置き換えるために用いる。分岐した処理経路が再び合流するとき、特殊な合流計算ノード(join computation node)が、メッセージIDが同じすべてのメッセージを合成し、そのメッセージに関連するヌルメッセージをドロップする。ヌルメッセージにより、順序処理ノードは、順序処理を中断することなく、削除したメッセージのプレースホルダー(place holder)としてヌルメッセージを使える。
図3Aは、非同期かつ並列度の高い任意的有向グラフ処理モデルの、ヌルメッセージの使用方法300を示すフロー図である。ステップ310において、処理ノードは、メッセージIDが大きくなるメッセージを受け取る。ステップ320において、ノードは、状態に応じて、メッセージをフロー経路から削除しなければならないか、判断する。状態には、例えば、(i)他のフロー経路へのメッセージの分岐、(ii)削除、または(iii)リカバリ不能な処理エラーが含まれる。メッセージを削除する必要がなければ、ステップ320aに進む。ノードはメッセージを処理して、次のノードに送る。
しかし、ノードは、メッセージを削除しなければならないと判断すると、メッセージIDが削除するメッセージと一致するヌルメッセージを生成する。ステップ330において、ヌルメッセージには、送り先ノードの情報を付加する(annotate)。次に、ステップ340において、ノードは、削除したメッセージの替わりに、フロー経路にヌルメッセージを挿入する。方法300を具体的なシーケンスを有するものとして示したが、別の実施形態ではシーケンスは異なってもよい。
図3Bは、順序処理を含む、非同期かつ並列度の高い任意的有向グラフ処理モデルの、ヌルメッセージを使用する方法301を示すフロー図である。ステップ311において、順序処理ノード(ordered processing node)は、メッセージIDが大きくなるメッセージ(messages with increasing message ID)を受け取る。ステップ350において、ノードが、一連のメッセージ中にヌルメッセージを受け取ったか、判断する。受け取っていれば、ノードは、ステップ370において、ヌルメッセージをプレースホルダーとして用い、ステップ375において、メッセージを順序通りに処理する。受け取っていなければ、ステップ360において、順序処理ノードは、一連のメッセージを順序通りに処理する。方法301を具体的なシーケンスを有するものとして示したが、別の実施形態ではシーケンスは異なってもよい。
図3Cは、フロー経路を再形成する、非同期かつ並列度の高い任意的有向グラフ処理モデルの、ヌルメッセージを使用する方法302を示すフロー図である。ステップ312において、合流ノードは、異なるフロー経路から、メッセージIDが増加するメッセージを受け取る。ステップ380において、合流ノードがヌルメッセージを受け取ったか判断する。受け取っていなければ、合流ノードは、メッセージを処理し、次の処理ノードに送る。受け取っていれば、ステップ390において、さらに、合流ノードは、自ノードがヌルメッセージの送り先ノードであるか判断し、送り先ノードであれば、ヌルメッセージを削除する。送り先ノードでなければ、ステップ385に進む。方法302を具体的なシーケンスを有するものとして示したが、別の実施形態ではシーケンスは異なってもよい。実施形態によっては、送り先ノードの情報(destination node annotation)を利用しなくてもよい(合流ノードは自ノードが送り先であると仮定する)。しかし、こうした実施形態では、計算分岐のネスト(nested branching of computations)はサポートされない。
図1Cを参照して、ステップ310において、メッセージを受け取るノードが分岐ノード115であると仮定する。分岐ノード115は、メッセージIDが「1」、「2」、「3」と大きくなる3つのメッセージ110a−bを受け取っている。この例では、分岐ノードは、ステップ320において、処理条件に応じて、メッセージIDが「1」(110a)と「3」(110c)のものをフロー経路Aに送り、メッセージIDが「2」(110b)のものをフロー経路Bに送っている。フロー経路Aは順序処理ノード130を含むので、分岐ノードはメッセージIDが「2」のヌルメッセージを生成する。ステップ330において、分岐ノード115は、送り先が合流ノード145であることを示す情報をヌルメッセージに付加する。次に、ステップ340において、分岐ノードは、メッセージ110bの替わりに、フロー経路Aに、メッセージIDが「2」のヌルメッセージを挿入する。
この場合、メッセージID「1」、「3」と、ヌルメッセージID「2」とが処理ノード120aに送られ、下のメッセージID「2」は処理ノード120cに送られる。ステップ310において、順序処理ノードがメッセージを受け取る。次に、順序処理ノードは、ステップ350において、ヌルメッセージを受け取ったことを判断する。次に、順序処理ノードは、ステップ370において、メッセージを順序通りに処理するため、ヌルメッセージをプレースホルダーとして用いる。ステップ375において、受け取ったメッセージを順序通りに処理する。
次に、ステップ312において、合流ノードは、フロー経路Aとフロー経路Bからメッセージを受け取る。合流ノードは、ステップ380において、ヌルメッセージを受け取ったと判断する。元のメッセージID「2」より前にヌルメッセージを受け取っているかも知れない。それゆえ、合流ノードは、ステップ390において、ヌルメッセージの送り先がその合流ノードであるか判断する。この場合、ヌルメッセージの送り先は合流ノードである。元のメッセージID「2」の送り先は同じだからである。ステップ395において、ヌルメッセージID「2」には送り先が合流ノードであるとの情報が付加されているので、合流ノードにはヌルメッセージを削除してもよいことが分かる。この情報(annotation)により、行流ノードは、各フロー経路からすべてのメッセージを受け取らなくても、ヌルメッセージを処理できる。
親メッセージに対する子メッセージのような新しく生成したメッセージには、親メッセージのメッセージIDを組み込んだメッセージIDを割り当ててもよい。さらに、親メッセージIDには、関連する子メッセージの数を示す情報を付加する。このように、順序処理を必要とするノードが親メッセージを受け取ると、そのノードとその前のノードとは、処理を調整するので、親メッセージと子メッセージの順序処理ができる。同様に、合流ノードは、フロー経路を再構成するために、関連する文書を含むすべてのメッセージを受け取った時を判断できる。
図4は、非同期かつ並列度の高い任意的有向グラフ処理モデルの、マルチパートメッセージIDを使用する方法400を示すフロー図である。ステップ410において、メッセージIDを受け取り、連続したメッセージIDを割り当てる。次に、ステップ420において、メッセージを処理して、必要に応じて子メッセージを生成する。例えば、電子メール等のメッセージは複数の添付ファイルを含み、各添付ファイルに対して子メッセージを生成する。ステップ430において、子メッセージには、親メッセージIDを組み込んでエンコードしたメッセージIDが付与される。ステップ440において、親メッセージIDには、子メッセージの数を示す情報を付加する。この情報(annotation)により、下流ノードは、関連するすべてのメッセージを受け取ったか分かる。方法400を具体的なシーケンスを有するものとして示したが、別の実施形態ではシーケンスは異なってもよい。
図1Bを参照して、ステップ410において、メッセージIDが「1」のメッセージ110は複数の添付ファイル137を含む電子メールメッセージであり、メッセージIDが大きくなる連続したメッセージとともに受け取ったものと仮定する。メッセージをシステムで処理する。ステップ420において、電子メール処理ノード135は、電子メールメッセージを処理して、各添付ファイル137に対して子メッセージを生成する。メッセージ110、例えばメッセージIDが「2」のメッセージには連続したメッセージが続くので、電子メール処理ノードは、添付ファイル137には、増加するメッセージID「2」を割り振れない。結果として、各添付ファイル137は、親のメッセージIDを組み込んだメッセージに挿入される。この場合、親IDは「1」であり、2つの添付ファイルがあれば、第1の添付ファイルをマルチパートメッセージIDが「1.1」のメッセージに挿入し、第2の添付ファイルをマルチパートメッセージIDが「1.2」のメッセージに挿入する。ステップ440において、親IDには2つの子文書があるとの情報を付加(annotate)する。このエンコード方法により、システムが受け取った連続する各文書に再付番(renumber)せずに、新しいメッセージを挿入できる。
さらに、子文書「1.1」は2つの子を有すると仮定する。ステップ420において、子メッセージを生成する。ステップ430において、子メッセージにID「1.1.1」と「1.1.2」を割り当てる。そして、ステップ440において、子文書「1.1」に2つの子文書があるとの情報を付加する。
図5A−Dは、有向グラフを用いて文書取り込みシステムにおける複数の処理ステップ(ノード)を表す別の実施例を示す図である。文書の情報源は処理ノード502を介してシステムに入力を供給する。情報源にはファイルシステムリポジトリ、電子メールサーバ、物理的媒体(例えば、CD−ROM、DVD)、音声認識システムで認識されたテキスト、データベースなどが含まれる。処理ノード502は、外部情報源からの文書の取り込みを処理ステップに分けて管理する。または、添付文書(additional documents)を処理中に「発見」し、システムに戻す場合もある。文書は最初に文書タイプスプリッタ504に送られる。スプリッタ504は、そのメッセージを、その後段のどの処理ノードに送るか判断する。例えば、システムは、テキスト(電子メールテキストとともにヘッダ情報及び/またはルーティング情報を含む場合もある)を処理する電子メールノード506、pkZIPまたはその他のファイルアーカイブプログラムやファイル圧縮プログラムを用いて作成した文書を処理する.zip処理ノード508、マイクロソフトワード(またはGOOGLE DOCS、OpenOfficeなどの文書処理プログラム)を用いて作成した文書を処理する.zip処理ノード508、ポータブルドキュメントフォーマットの文書を処理する.pdf処理ノード512などを含む。図示はしていないが処理ノードの他の例として、画像を処理する.jpg処理ノード、映画を処理する.mpegノード、オーディオを処理する.aviノード、その他いろいろな構成のデータフォーマットを処理するノードなどがある。ここに示した例には異なる4つの処理ノードがある。しかし、ノードの数はいくつでもよく、システムで利用する文書の数やタイプに応じて決まる。場合によっては、あるタイプの文書を頻繁に受け取り、及び/またはその処理が多くのリソースを要する場合、複数の処理ノードを同じ機能に割り当てる(例えば、3つのノードが.jpgファイルの処理に使われる)。
場合によっては、さらに分析をして、メッセージの最も基本的な要素の標準的な表示を求める必要がある。例えば、電子メールは添付ファイルを有し、各添付ファイルを異なる処理ノードで異なる処理をする必要があるかも知れない。さらに、文書インデックスのインテグリティを維持するため、2つ以上のコンポーネントを有する文書は、コンポーネントをすべて処理するまでは、インデックスに書き込むべきではない場合もある。言い換えると、電子メールの添付ファイルの処理が失敗した場合、その電子メールのテキスト(及び処理できたその他のコンポーネントや添付ファイル)をインデックスに書き込むべきではない。実装の仕方によっては、部分的文書インデックス化が可能であり、その他の実装では、この制約が例外なく強制される。場合によっては、どの「失敗」は許容でき、どれは致命的である判断するルールを用いてもよい。マルチパートメッセージIDを用いて、親メッセージ(例えば、電子メールを含むメッセージ)を子メッセージ(例えば、電子メールの添付ファイル)に関連付ける。親メッセージに、生成した子メッセージの数を示す情報を添付する(annotate)。
(処理ノード506、508、510、512のように)複数の処理分岐を用いる実施形態では、各分岐が処理したメッセージを送る共通ノードとして分岐合流ノード514を設ける。分岐合流514は、インデックスに取り込む文書及び/またはテキストを含むメッセージを識別し、ヌルメッセージ(null messages)を削除する。さらに、分岐合流514は、マルチパートメッセージIDと親メッセージに付加された情報(parent annotation)とを用いて、インデックスに同時に取り込む必要がある文書を識別する。
順序メッセージ処理を容易にするため、各処理ノードはメッセージキューを含む。メッセージキューを用いて、ノードでの処理を待つ複数のメッセージを記憶し、及び/またはメッセージが順序通りに処理キューに到着しないときに、メッセージIDに基づきメッセージを並べ替える。
図5Aは、本発明の一実施形態により、単純な電子メールメッセージ(例えば、メッセージテキストは有するが添付ファイルを有さない電子メール)を処理するか示す。電子メールは、システムに入ると、メッセージID0が割り当てられたメッセージに挿入され、文書タイプスプリッタキュー504aに転送される。文書は、リソースがあればスプリッタ504に送られる。スプリッタ504は、そのメッセージを電子メールであると認識し、電子メール処理ノード506による処理に備えて電子メールキュー506aに転送する。同時に、スプリッタ504は、3つのヌルメッセージ(または、各ダウンストリームキューを満たすのに必要な数だけ)を生成し、.zipキュー508a、.docキュー510a、及び.pdfキューに転送する。ヌルメッセージにはすべて同じメッセージIDである0を与え、分岐合流514の送り先の情報を添付する。ヌルメッセージにより、使用されない分岐にもメッセージを送ることにより(filling the game that would result otherwise)、順序メッセージ処理を必要とするコンポーネントを含む分岐が可能となる。
電子メールが添付ファイルを含む場合、その電子メールを含むメッセージに、その電子メールと関連する子メッセージがあることを示す情報を添付して、関連するすべてのメッセージを受け取ったことを合流ノード514が分かるようにする。ダウンストリームでの処理のために新しい「子」メッセージを生成するので、現在のメッセージには「子あり」とのマークを付し、新しい子メッセージには親IDを組み込んでエンコードしたメッセージIDを割り当てる。このようにメッセージを相互参照することにより、すべての子(またはその親メッセージと兄弟メッセージ)が同じノードに到着するまで、メッセージを後の処理ノードに留める。
ヌルメッセージは、処理されることなく合流キュー514に転送され、すべての上流ノードからのメッセージが届くのを待つ。処理が必要なメッセージ(例えば、電子メールノード506で処理されるメッセージID0)は処理され、合流キュー514aに転送され、合流ノード514が空いた時にリリースされる。合流ノード514では3つのヌルメッセージが削除されるので、集計(aggregator)ノード516はメッセージを処理しなくてもよく、メッセージは取り込みのためインデックスキュー518に転送される。
図5B−5Dは、もう少し複雑な場合を示しており、電子メールメッセージが2つの添付ファイル、すなわち.pdfファイルと、複数の圧縮された.docファイルを含む.zipファイルとを有する。図5Bを参照して、電子メールノード506で処理後、各添付ファイルは、次のマルチパートメッセージIDが割り当てられ、処理ノード502に戻され、文書キュー504aに入れられる。文書スプリッタ504は、.pdfファイルを含む子メッセージを.pdfキュー512aに転送し、.zipファイルを含む子メッセージを.zipキュー508aに転送する。この2つの子メッセージは、親メッセージIDの0でエンコードされており、それぞれの処理ノード508と512で処理される。.zipノード508は、.zipファイルを処理するとき、.zipファイルには複数のファイルが含まれており、メッセージにはそれに関連するn個の子メッセージがあるとの情報を添付する。ここで、nは.zipファイルに含まれたファイル数である。子メッセージを合流キュー514aに転送する。合流ノードは、(2つのメッセージと2つのヌルメッセージがあることに基づいて)メッセージIDが同じすべてのメッセージを受け取ったと判断し、ヌルメッセージを削除する。しかし、合流ノードは、.zip子メッセージにはさらに2つのメッセージ(.docファイル)が含まれているとの情報が付加されているので、2つのメッセージを処理せずに、.zip子メッセージに含まれる2つのメッセージの処理の完了を待つ。
図5Cを参照して、.zipファイルのコンテンツは、マルチパートメッセージIDを割り当てられ、処理ノード502に戻され、文書キュー504aに転送される。スプリッタ504は、新しいマルチパートメッセージIDを有する2つの.docファイルを.docキュー510aに転送し、新しいマルチパートメッセージIDを有するヌルメッセージを他の各処理ノードキュー506a、508a、及び512aに転送する。新しいマルチパートメッセージIDを有するすべてのメッセージは、合流キュー514aに送られ、ヌルメッセージは分岐合流514で削除される。合流ノードは、最初のマルチパートメッセージID(2つの子)と新しいマルチパートメッセージID(1つの子)を有する元のメッセージに示された子メッセージの受け取りを待ってから、メッセージをインデックスキュー518に転送する。図5Dは、インデックスキュー518にある、メッセージIDが0のメッセージと、その子メッセージ(.zipファイルと.pdfファイル)と、孫メッセージ(.docファイル)とを階層的に示している。
本明細書により説明したモジュールは、好適なプログラミング言語(C++、C#、Java、Visual Basic、LISP、BASIC、PERLなど)を用いた、プロセッサ上で動作するソフトウェアプログラムとして、及び/またはハードウェアデバイス(例えば、ASIC、FPGA、プロセッサ、メモリ、記憶装置など)として、その全部または一部を実施することができる。
本発明は、ハードウェア、ソフトウェア、またはこれらの組み合わせで実現することができる。本発明による方法とシステムの実施は、1つのコンピュータシステムにおいて集中的に、または異なる要素を相互接続された複数のコンピュータシステムに分散して分散的に実現することができる。いかなる種類のコンピュータシステムでも、またはここに説明した方法を実行するように構成されたその他の装置でも、ここに説明した機能の実行に適している。
ハードウェアとソフトウェアの典型的な組み合わせとしては、汎用コンピュータシステムと、それにロードされ実行されるとそのコンピュータシステムをここで説明した方法を実行するように制御するコンピュータプログラムとの組み合わせがある。本発明をコンピュータプログラム製品として実施することもできる。このコンピュータプログラム製品は、ここで説明した方法の実施を可能とするすべての特徴を有し、コンピュータシステムにロードされた時、これらの方法を実行することができる。
本発明の場合にコンピュータプログラムまたはアプリケーションとは、情報処理能力を有するシステムに直接、またはa)他の言語、コード、または記法への変換、またはb)異なる素材形式での再生のいずれか、または両方の後に、特定の機能を実行させることを目的とする一組の命令のいかなる言語、コード、または記法のいかなる表現も含む。本発明は、その精神と本質的な属性から逸脱することなく、他の形式で化体することもできることは重要である。上記の実施形態は、すべての点で例示でありここに説明した発明を限定するものではないと考えなければならない。
実施形態を参照して本発明を図示し、説明したが、当業者には言うまでもなく、請求の範囲が含む本発明の範囲から逸脱することなく、形式的及び詳細上の変更が可能である。

Claims (61)

  1. メッセージ処理システムであって、
    フロー経路から複数の順序メッセージのうち一メッセージを削除し、前記削除したメッセージの替わりにヌルメッセージを挿入する第1ノードと、
    前記フロー経路中でメッセージを順序通り処理して、前記削除したメッセージの替わりに前記ヌルメッセージを認識する順序処理ノードとを有するシステム。
  2. 前記メッセージにメッセージIDを割り当てるように構成された割り当てノードをさらに有する、請求項1に記載のシステム。
  3. 前記ヌルメッセージに、前記削除したメッセージと同じメッセージIDを割り当てる、請求項1に記載のシステム。
  4. 前記ヌルメッセージは行き先ノードを示すように構成された、請求項1に記載のシステム。
  5. 前記第1ノードは、前記メッセージのリカバリ不能処理エラーに応じて、前記メッセージを削除する、請求項1に記載のシステム。
  6. 前記第1ノードは、前記フロー経路の分岐に応じて、前記メッセージを削除する、請求項1に記載のシステム。
  7. 前記フロー経路の分岐による複数のメッセージを再合成し、前記示された送り先ノードに基づきヌルメッセージを削除する合流ノードをさらに有する、請求項6に記載のシステム。
  8. メッセージを処理し、親メッセージから子メッセージを生成し、親IDに子メッセージの数を示す情報を添付するように構成された処理ノードと、
    メッセージIDを前記子メッセージに割り当てるように構成された割り当てノードとをさらに有し、関連する親IDを組み込むように前記子メッセージIDをエンコードする、請求項1に記載のシステム。
  9. 関連する文書を含むメッセージのグループを識別するように構成された識別ノードをさらに有する、請求項1に記載のシステム。
  10. 前記メッセージを処理するように構成された、前記第1ノードと前記順序処理ノードとを含む複数の連続的処理ノードをさらに有し、
    前記第1ノードは、順序通りでないメッセージの出力を許すが、かかるメッセージの出力を他のメッセージのデルタ内に限定するようにさらに構成されている、請求項1に記載のシステム。
  11. メッセージの出力の限定は、メッセージIDにより決まる、前記他のメッセージのデルタ外におけるメッセージの処理の中断を含む、請求項10に記載のシステム。
  12. 各処理ノードは、非同期データ伝送を用いてメッセージを処理するように構成され、前記ヌルメッセージを認識して処理するようにさらに構成されている、請求項10に記載のシステム。
  13. 電子処理システムにおけるメッセージ処理方法であって、
    第1ノードにおいて、フロー経路から複数の順序メッセージのうち一メッセージを削除し、前記削除したメッセージの替わりにヌルメッセージを挿入する段階と、
    順序処理ノードにおいて、前記フロー経路中でメッセージを順序通り処理して、前記削除したメッセージの替わりに前記ヌルメッセージを認識する段階とを有する方法。
  14. メッセージIDを前記メッセージに割り当てる段階をさらに有する、請求項13に記載の方法。
  15. 前記ヌルメッセージに、前記削除したメッセージと同じメッセージIDを割り当てる、請求項14に記載の方法。
  16. 前記ヌルメッセージは行き先ノードを示すように構成された、請求項13に記載の方法。
  17. 前記メッセージを削除する段階は、前記メッセージのリカバリ不能処理エラーに応じて、前記メッセージを削除する段階を含む、請求項13に記載の方法。
  18. 前記メッセージを削除する段階は、前記フロー経路の分岐に応じて、前記メッセージを削除する段階を含む、請求項13に記載の方法。
  19. 前記フロー経路の分岐による複数のメッセージを再合成し、前記示された送り先ノードに基づきヌルメッセージを削除する段階をさらに有する、請求項18に記載の方法。
  20. メッセージを処理し、親メッセージから子メッセージを生成し、親IDに子メッセージの数を示す情報を添付する段階と、
    メッセージIDを前記子メッセージに割り当てる段階をさらに有し、関連する親IDを組み込むように前記子メッセージIDをエンコードする、請求項14に記載の方法。
  21. 関連した文書を含むメッセージのグループを識別する段階をさらに有する、請求項13に記載の方法。
  22. 前記メッセージを処理し、順序通りでないメッセージの出力を許し、かかるメッセージの出力を他のメッセージのデルタ内に限定する段階をさらに有する、請求項13に記載の方法。
  23. メッセージの出力の限定は、メッセージIDにより決まる、前記他のメッセージのデルタ外におけるメッセージの処理の中断を含む、請求項22に記載の方法。
  24. 非同期データ伝送を用いてメッセージを処理し、前記ヌルメッセージを認識して処理する段階をさらに有する、請求項22に記載の方法。
  25. メッセージを処理するコンピュータ読み取り可能プログラムを化体した製品であって、前記プログラムは、
    第1ノードにおいて、フロー経路から複数の順序メッセージのうち一メッセージを削除し、前記削除したメッセージの替わりにヌルメッセージを挿入する命令と、
    順序処理ノードにおいて、前記フロー経路中でメッセージを順序通り処理して、前記削除したメッセージの替わりに前記ヌルメッセージを認識する命令とを有する製品。
  26. メッセージIDを前記メッセージに割り当てる段階をさらに有する、請求項25に記載の製品。
  27. 前記ヌルメッセージに、前記削除したメッセージと同じメッセージIDを割り当てる、請求項26に記載の製品。
  28. 前記ヌルメッセージは行き先ノードを示すように構成された、請求項25に記載の製品。
  29. 前記メッセージを削除する段階は、前記メッセージのリカバリ不能処理エラーに応じて、前記メッセージを削除する段階を含む、請求項25に記載の製品。
  30. 前記メッセージを削除する段階は、前記フロー経路の分岐に応じて、前記メッセージを削除する命令を含む、請求項25に記載の製品。
  31. 前記フロー経路の分岐による複数のメッセージを再合成し、前記示された送り先ノードに基づきヌルメッセージを削除する段階をさらに有する、請求項30に記載の製品。
  32. メッセージを処理し、親メッセージから子メッセージを生成し、親IDに子メッセージの数を示す情報を添付する段階と、
    メッセージIDを前記子メッセージに割り当てる段階をさらに有し、関連する親IDを組み込むように前記子メッセージIDをエンコードする、請求項26に記載の製品。
  33. 関連した文書を含むメッセージのグループを識別する段階をさらに有する、請求項25に記載の製品。
  34. 前記メッセージを処理し、順序通りでないメッセージの出力を許し、かかるメッセージの出力を他のメッセージのデルタ内に限定する段階をさらに有する、請求項25に記載の製品。
  35. メッセージの出力の限定は、メッセージIDにより決まる、前記他のメッセージのデルタ外におけるメッセージの処理の中断を含む、請求項34に記載の製品。
  36. 非同期データ伝送を用いてメッセージを処理し、前記ヌルメッセージを認識して処理する段階をさらに有する、請求項34に記載の製品。
  37. メッセージ処理システムであって、
    連続したメッセージにメッセージIDを割り当てるように構成された割り当てノードと、
    メッセージを処理し、親メッセージから子メッセージを生成し、親IDに子メッセージの数を示す情報を添付するように構成された処理ノードと、
    前記割り当てノードは、メッセージIDを前記子メッセージに割り当てるように構成され、関連する親IDを組み込むように前記子メッセージIDをエンコードする、システム。
  38. 関連する文書を含むメッセージのグループを識別するように構成された識別ノードをさらに有する、請求項37に記載のシステム。
  39. 電子処理システムにおけるメッセージ処理方法であって、
    連続したメッセージにメッセージIDを適用する段階と、
    前記メッセージを処理して子メッセージを生成する段階と、
    メッセージIDを前記子メッセージに割り当てる段階であって、関連する親IDを組み込むように前記子メッセージIDをエンコードする段階と、
    前記親メッセージIDに子メッセージの数を示す情報を付加する段階とを有する、方法。
  40. 関連した文書を含むメッセージのグループを識別する段階をさらに有する、請求項39に記載の方法。
  41. メッセージを処理するコンピュータ読み取り可能プログラムを化体した製品であって、前記プログラムは、
    連続したメッセージにメッセージIDを適用する段階と、
    前記メッセージを処理して子メッセージを生成する段階と、
    メッセージIDを前記子メッセージに割り当てる段階であって、関連する親IDを組み込むように前記子メッセージIDをエンコードする段階を有し、
    前記親メッセージIDに子メッセージの数を示す情報を付加する段階とを有する、製品。
  42. 関連した文書を含むメッセージのグループを識別する段階をさらに有する、請求項41に記載の製品。
  43. メッセージ処理システムであって、
    前記メッセージを処理するように構成された、順序処理ノードを含む複数の連続的処理ノードと、
    順序通りでないメッセージの出力を許し、順序通りでないメッセージの出力を処理される他のメッセージのデルタ内に限定する上流ノードとを有する、システム。
  44. 前記上流ノードは、メッセージの出力制限を、(i)処理中のメッセージと、順序が前記処理中のメッセージの後であり前記ノードの下流に転送されたメッセージとの間のスキューをモニターし、(ii)スキュー閾値に達したら処理を中断することにより行うようにさらに構成されている、請求項43に記載のシステム。
  45. 前記順序ノードの上流のノードは、メッセージのスキューを、前記メッセージに関連するメッセージIDの関数としてモニターする、請求項43に記載のシステム。
  46. 各処理ノードは、非同期データ伝送を用いてメッセージを処理するように構成された、請求項43に記載のシステム。
  47. 前記処理ノードは、複数のスレッドを用いて同時に複数のメッセージを処理するように構成された、請求項43に記載のシステム。
  48. 各処理ノードの前段に入力キューをさらに有する、請求項43に記載のシステム。
  49. 電子処理システムにおけるメッセージ処理方法であって、
    前記順序ノードに、すべてがメッセージの順序処理を必要とするものではない複数の連続した処理ノードにおいて、メッセージをある順序で処理させる段階と、
    前記順序ノードの上流のノードに、処理中の順序通りでないメッセージの出力を、処理中の他のメッセージのデルタ以内に制限させる段階とを有する、方法。
  50. 前記順序ノードの上流のノードは、メッセージの出力制限を、(i)処理中のメッセージと、順序が前記処理中のメッセージの後であり前記ノードの下流に転送されたメッセージとの間のスキューをモニターし、(ii)スキュー閾値に達したら処理を中断することにより行う、請求項49に記載の方法。
  51. 前記順序ノードの上流のノードは、メッセージのスキューを、各メッセージに関連するメッセージIDの関数としてモニターする、請求項50に記載の方法。
  52. 各処理ノードの複数のスレッドを用いて、各処理ノードにおいて同時に複数のメッセージを処理するように構成された、請求項49に記載の方法。
  53. メッセージを処理するコンピュータ読み取り可能プログラムを化体した製品であって、前記プログラムは、
    前記順序ノードに、すべてがメッセージの順序処理を必要とするものではない複数の連続した処理ノードにおいて、メッセージをある順序で処理させる段階と、
    前記順序ノードの上流のノードに、順序通りでないメッセージの出力を、処理中の他のメッセージのデルタ以内に制限させる段階とを有する、製品。
  54. 前記順序ノードの上流のノードは、メッセージの出力制限を、(i)処理中のメッセージと、順序が前記処理中のメッセージの後であり前記ノードの下流に転送されたメッセージとの間のスキューをモニターし、(ii)スキュー閾値に達したら処理を中断することにより行う、請求項53に記載の製品。
  55. 前記順序ノードの上流のノードは、メッセージのスキューを、各メッセージに関連するメッセージIDの関数としてモニターする、請求項54に記載の製品。
  56. メッセージ処理システムであって、
    フロー経路にあり、順序メッセージを必要とする順序処理ノードを含む複数の連続した処理ノードと、
    連続したメッセージにメッセージIDを割り当てるように構成された割り当てノードと、
    前記処理ノードは、メッセージを処理し、親メッセージから子メッセージを生成し、親IDに子メッセージの数を示す情報を添付するように構成され、
    前記割り当てノードは、メッセージIDを前記子メッセージに割り当てるようにさらに構成され、関連する親IDを組み込むように前記子メッセージIDをエンコードする、
    フロー経路から複数の順序メッセージから一メッセージを削除し、前記削除したメッセージの替わりにヌルメッセージを挿入する、前記複数の連続した処理ノード中の第1ノードと、
    前記順序処理ノードは、前記フロー経路中でメッセージを順序通り処理して、前記削除したメッセージの替わりに前記ヌルメッセージを認識し、
    (i)処理中のメッセージと、順序が前記処理中のメッセージの後であり前記ノードの下流に転送されたメッセージとの間のスキューをモニターし、(ii)スキュー閾値に達したら処理を中断する、前記順序ノードの上流のノードとを有する、システム。
  57. 電子処理システムにおけるメッセージ処理方法であって、
    順序処理ノードに、すべてがメッセージの順序処理を必要とするものではない複数の連続した処理ノードにおいて、メッセージをある順序で処理させる段階と、
    連続したメッセージにメッセージIDを割り当てる段階と、
    前記メッセージを処理して子メッセージを生成する段階と、
    メッセージIDを前記子メッセージに割り当てる段階であって、関連する親IDを組み込むように前記子メッセージIDをエンコードする段階と、
    前記親メッセージIDに子メッセージの数を示す情報を付加する段階と、
    前記複数の連続した処理ノード中の第1ノードにおいて、フロー経路から複数の順序メッセージのうち一メッセージを削除し、前記削除したメッセージの替わりにヌルメッセージを挿入する段階と、
    順序処理ノードにおいて、前記フロー経路中でメッセージを順序通り処理して、前記削除したメッセージの替わりに前記ヌルメッセージを認識する段階と、
    前記順序ノードの上流のノードに、(i)処理中のメッセージと、順序が前記処理中のメッセージの後であり前記ノードの下流に転送されたメッセージとの間のスキューをモニターし、(ii)スキュー閾値に達したら処理を中断させる段階とを有する、方法。
  58. メッセージを処理するコンピュータ読み取り可能プログラムを化体した製品であって、前記プログラムは、
    順序処理ノードに、すべてがメッセージの順序処理を必要とするものではない複数の連続した処理ノードにおいて、メッセージをある順序で処理させる段階と、
    連続したメッセージにメッセージIDを割り当てる段階と、
    前記メッセージを処理して子メッセージを生成する段階と、
    メッセージIDを前記子メッセージに割り当てる段階であって、関連する親IDを組み込むように前記子メッセージIDをエンコードする段階と、
    前記親メッセージIDに子メッセージの数を示す情報を付加する段階と、
    前記複数の連続した処理ノード中の第1ノードにおいて、フロー経路から複数の順序メッセージのうち一メッセージを削除し、前記削除したメッセージの替わりにヌルメッセージを挿入する段階と、
    順序処理ノードにおいて、前記フロー経路中でメッセージを順序通り処理して、前記削除したメッセージの替わりに前記ヌルメッセージを認識する段階と、
    前記順序ノードの上流のノードに、(i)処理中のメッセージと、順序が前記処理中のメッセージの後であり前記ノードの下流に転送されたメッセージとの間のスキューをモニターし、(ii)スキュー閾値に達したら処理を中断させる段階とを有する、製品。
  59. 複数の処理ノードを有する、メッセージ処理システムであって、前記ノードは、
    (i)メッセージに含まれる文書タイプに基づき前記メッセージを構成メッセージノードに分岐し、(ii)前記メッセージノードを下流処理ノードに転送し、(iii)下流処理ノードに転送する、メッセージノードが特定されていないヌルメッセージを生成するように構成された文書タイプノードと、
    文書タイプを有するメッセージを処理するようにそれぞれ構成された複数の文書処理ノードと、
    前記文書処理ノードで処理された前記構成メッセージノードを受け取り、ヌルメッセージを削除するように構成された合流ノードとを有する、システム。
  60. 前記文書処理ノードは、前記メッセージノードの1つが添付ファイルを有する場合、前記メッセージを後で処理するように前記文書タイプノードに戻し、前記メッセージに関連する子メッセージがあることを示す情報を添付するようにさらに構成された、請求項59に記載のシステム。
  61. 前記下流処理キューは文書記憶装置取り込みキューを有する、請求項59に記載のシステム。
JP2011514608A 2008-06-17 2009-06-17 順序メッセージ処理 Expired - Fee Related JP5654983B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US7316408P 2008-06-17 2008-06-17
US61/073,164 2008-06-17
PCT/US2009/003626 WO2009154752A1 (en) 2008-06-17 2009-06-17 Ordered message processing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014207067A Division JP2015057710A (ja) 2008-06-17 2014-10-08 順序メッセージ処理

Publications (3)

Publication Number Publication Date
JP2011526014A true JP2011526014A (ja) 2011-09-29
JP2011526014A5 JP2011526014A5 (ja) 2013-05-23
JP5654983B2 JP5654983B2 (ja) 2015-01-14

Family

ID=41211947

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011514608A Expired - Fee Related JP5654983B2 (ja) 2008-06-17 2009-06-17 順序メッセージ処理
JP2014207067A Pending JP2015057710A (ja) 2008-06-17 2014-10-08 順序メッセージ処理

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014207067A Pending JP2015057710A (ja) 2008-06-17 2014-10-08 順序メッセージ処理

Country Status (5)

Country Link
US (1) US9009235B2 (ja)
EP (1) EP2304922A1 (ja)
JP (2) JP5654983B2 (ja)
CA (1) CA2727871C (ja)
WO (1) WO2009154752A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5654983B2 (ja) 2008-06-17 2015-01-14 アティヴィオ,インコーポレイテッド 順序メッセージ処理
US8375095B2 (en) * 2009-12-22 2013-02-12 Microsoft Corporation Out of order durable message processing
US8838707B2 (en) 2010-06-25 2014-09-16 Twilio, Inc. System and method for enabling real-time eventing
US8495656B2 (en) 2010-10-15 2013-07-23 Attivio, Inc. Ordered processing of groups of messages
US8806656B2 (en) * 2011-02-18 2014-08-12 Xerox Corporation Method and system for secure and selective access for editing and aggregation of electronic documents in a distributed environment
US9665840B2 (en) 2014-03-21 2017-05-30 Oracle International Corporation High performance ERP system ensuring desired delivery sequencing of output messages
WO2016068135A1 (ja) 2014-10-28 2016-05-06 株式会社Ihi 送電装置、送電方法及び非接触給電システム
CN104954280B (zh) * 2015-04-23 2018-10-09 华为技术有限公司 一种数据报文处理方法和装置
US10635562B2 (en) * 2015-09-04 2020-04-28 Futurewei Technologies, Inc. Fault tolerance in distributed graph processing networks
US10244070B2 (en) 2016-01-26 2019-03-26 Oracle International Corporation In-memory message sequencing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319787A (ja) * 1994-05-23 1995-12-08 Hewlett Packard Co <Hp> メッセージ処理方法及び処理ノード
JPH0983541A (ja) * 1995-09-19 1997-03-28 Fujitsu Ltd エラー処理方法および装置
JP2000163372A (ja) * 1998-11-27 2000-06-16 Hitachi Ltd トランザクション処理方法及びその実施装置並びにその処理プログラムを記録した媒体
JP2002314606A (ja) * 2001-04-10 2002-10-25 Mitsubishi Electric Corp Atm通信システム及びatm通信方法
JP2003283539A (ja) * 2002-03-20 2003-10-03 Canon Inc 通信ネットワーク、端末インタフェース装置、ノード装置、伝送制御方法、記憶媒体、及びプログラム

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630173A (en) 1992-12-21 1997-05-13 Apple Computer, Inc. Methods and apparatus for bus access arbitration of nodes organized into acyclic directed graph by cyclic token passing and alternatively propagating request to root node and grant signal to the child node
JPH06318158A (ja) 1993-05-07 1994-11-15 Nippon Telegr & Teleph Corp <Ntt> チャネルのキュー発散検証方法
US6341302B1 (en) 1998-09-24 2002-01-22 Compaq Information Technologies Group, Lp Efficient inter-task queue protocol
US7600131B1 (en) * 1999-07-08 2009-10-06 Broadcom Corporation Distributed processing in a cryptography acceleration chip
US20020111986A1 (en) 2000-12-05 2002-08-15 Wolfson Charles D. Integration of messaging functions and database operations
US20020128919A1 (en) * 2001-03-06 2002-09-12 Cedric-Gaya Rime Order processing system
US20020194327A1 (en) 2001-06-14 2002-12-19 International Business Machines Corporation Method for sensing the status of a client from a server
CA2411991A1 (en) * 2001-11-19 2003-05-19 Linear Systems Ltd. Transmitting digital video signals over an ip network
GB0129672D0 (en) * 2001-12-12 2002-01-30 Ibm Method and system for preserving message order when parallel processing messages
US7349398B1 (en) * 2001-12-31 2008-03-25 Redback Networks, Inc. Method and apparatus for out-of-order processing of packets
US20030158883A1 (en) * 2002-02-04 2003-08-21 Drudis Antoni N. Message processing
US7061942B2 (en) * 2002-05-31 2006-06-13 Skystream Networks Inc. Apparatus for redundant multiplexing and remultiplexing of program streams and best effort data
US7613160B2 (en) * 2002-12-24 2009-11-03 Intel Corporation Method and apparatus to establish communication with wireless communication networks
US20050038824A1 (en) * 2003-08-15 2005-02-17 Joachim Kenntner Quality of service in asynchronous message transfer
US7761514B2 (en) 2003-11-26 2010-07-20 International Business Machines Corporation Method and apparatus for providing dynamic group management for distributed interactive applications
US7434225B2 (en) 2003-12-18 2008-10-07 International Business Machines Corporation Context information associated with message flows in a messaging system
JP2006031292A (ja) * 2004-07-14 2006-02-02 Fuji Xerox Co Ltd 文書処理装置、文書処理方法及び文書処理プログラム
US8189786B2 (en) * 2005-05-25 2012-05-29 Zenith Electronics Llc Encryption system
US8015256B2 (en) * 2005-11-23 2011-09-06 Medicalis Corp. Method and apparatus for parallel sequencing of messages between disparate information systems
GB0524021D0 (en) * 2005-11-25 2006-01-04 Ibm A system for preserving message order
US20070143442A1 (en) 2005-12-20 2007-06-21 Nec Laboratories America, Inc. Scalable Publish/Subscribe Broker Network Using Active Load Balancing
US8194690B1 (en) 2006-05-24 2012-06-05 Tilera Corporation Packet processing in a parallel processing environment
US7856415B2 (en) 2006-09-01 2010-12-21 Dell Products L.P. System and method for mapping events into a data structure
EP2515581B1 (en) 2007-04-04 2014-09-03 Thomson Licensing Multicast distribution tree establishment and maintenance in a wireless multi-hop relay communication system
US7836143B2 (en) 2007-04-25 2010-11-16 International Business Machines Corporation Message communications of particular message types between compute nodes using DMA shadow buffers
DE602007000919D1 (de) 2007-05-18 2009-05-28 Sap Ag Verfahren und System zum Schutz einer Nachricht vor einem XML-Angriff beim Austausch in einem verteilten und dezentralisierten Netzwerksystem
US8295203B2 (en) 2007-08-24 2012-10-23 At&T Intellectual Property I, L.P. Methods and systems to store state used to forward multicast traffic
US7783714B2 (en) * 2007-12-20 2010-08-24 Sap Ag Message transport manager and methods for using the same
JP5654983B2 (ja) 2008-06-17 2015-01-14 アティヴィオ,インコーポレイテッド 順序メッセージ処理
US8271996B1 (en) 2008-09-29 2012-09-18 Emc Corporation Event queues
US20110314384A1 (en) 2009-02-13 2011-12-22 Visiarc Ab method for handling email messages and attachments in a mobile communication system
JP5708976B2 (ja) 2010-06-16 2015-04-30 株式会社ジェイテクト 車両用操舵装置
US8495656B2 (en) 2010-10-15 2013-07-23 Attivio, Inc. Ordered processing of groups of messages

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319787A (ja) * 1994-05-23 1995-12-08 Hewlett Packard Co <Hp> メッセージ処理方法及び処理ノード
JPH0983541A (ja) * 1995-09-19 1997-03-28 Fujitsu Ltd エラー処理方法および装置
JP2000163372A (ja) * 1998-11-27 2000-06-16 Hitachi Ltd トランザクション処理方法及びその実施装置並びにその処理プログラムを記録した媒体
JP2002314606A (ja) * 2001-04-10 2002-10-25 Mitsubishi Electric Corp Atm通信システム及びatm通信方法
JP2003283539A (ja) * 2002-03-20 2003-10-03 Canon Inc 通信ネットワーク、端末インタフェース装置、ノード装置、伝送制御方法、記憶媒体、及びプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG200600215029; 園田 隆史: '重複転送アグリゲーション方式のTCPトラヒックに対する性能評価' 電子情報通信学会技術研究報告 第103巻,第692号, 20040227, p.171-174, 社団法人電子情報通信学会 The Institute of Electro *
JPN6014028015; 園田 隆史: '重複転送アグリゲーション方式のTCPトラヒックに対する性能評価' 電子情報通信学会技術研究報告 第103巻,第692号, 20040227, p.171-174, 社団法人電子情報通信学会 The Institute of Electro *

Also Published As

Publication number Publication date
WO2009154752A1 (en) 2009-12-23
US9009235B2 (en) 2015-04-14
CA2727871C (en) 2016-10-18
US20100005147A1 (en) 2010-01-07
EP2304922A1 (en) 2011-04-06
JP2015057710A (ja) 2015-03-26
CA2727871A1 (en) 2009-12-23
JP5654983B2 (ja) 2015-01-14

Similar Documents

Publication Publication Date Title
JP5654983B2 (ja) 順序メッセージ処理
JP5449627B2 (ja) メッセージのグループの順序化された処理
US11182098B2 (en) Optimization for real-time, parallel execution of models for extracting high-value information from data streams
Dobbelaere et al. Kafka versus RabbitMQ: A comparative study of two industry reference publish/subscribe implementations: Industry Paper
Grover et al. Hadoop Application Architectures: Designing Real-World Big Data Applications
Grover et al. Data Ingestion in AsterixDB.
KR101171501B1 (ko) 트랜잭션 프로세싱 쓰루풋을 증가시키기 위한 트랜잭션 취합
US20210279265A1 (en) Optimization for Real-Time, Parallel Execution of Models for Extracting High-Value Information from Data Streams
US11301425B2 (en) Systems and computer implemented methods for semantic data compression
US20110167148A1 (en) System and method for merging monitoring data streams from a server and a client of the server
JP6225184B2 (ja) メディエーションシステムにおけるデータの集約
US8661083B2 (en) Method and system for implementing sequence start and increment values for a resequencer
CN113067883A (zh) 数据传输方法、装置、计算机设备及存储介质
Karve et al. Optimizing cloud mapreduce for processing stream data using pipelining
CN107169098B (zh) 数据搬运方法、数据搬运装置及电子设备
VijayaRenu et al. Twitter Sparrow: Reduce Event Pipeline latency from hours to seconds
KR20200012901A (ko) 다중-표준 메시지 프로세싱
Kirschnick et al. SIA: scalable interoperable annotation server
JP2016126646A (ja) データ処理装置、データ処理方法及び大規模データ処理プログラム
Li et al. Semantic query optimization for processing xml streams with minimized memory footprint
JP2022522464A (ja) 分散データソースに存在するデータストリームの連続処理のためのコンピュータ実装方法
CN116962503A (zh) 外网物流轨迹推送方法、装置、设备及存储介质
Stoellberger S4Latin: Language-Based Big Data Streaming
Bernaschi et al. Forensic disk image indexing and search in an HPC environment
Bozorgi Data Analysis With Map Reduce Programming Paradigm

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130329

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141008

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141121

R150 Certificate of patent or registration of utility model

Ref document number: 5654983

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees