(57)【特許請求の範囲】
【請求項１】
送信者アプリケーションからメッセージを受信し、受信されたメッセージを処理し、処理されたメッセージの転送先の受信者アプリケーションを決定するメッセージ・ブローカ・データ処理装置であって、
前記送信者アプリケーションから、複数のフィールドを有するタプルとして編成されるメッセージの入来ストリームを受信する手段と、
データベースに複数のフィールドを有するタプルとして編成され、記憶されたデータと、前記入来ストリームとを照合する手段と、
受信した前記メッセージの入来ストリームに対して前記受信者アプリケーションそれぞれに応じた処理を実行し、当該処理が前記照合する手段による照合結果と結合処理を行う場合に、前記照合する手段による照合結果との結合処理を実行する処理手段と、
前記処理手段による処理結果のメッセージのストリームを、前記受信者アプリケーションが情報を取出す準備が整っているときに少なくとも１つの前記受信者アプリケーションに転送する手段とを含み、
前記処理手段が、相互接続されてネットワークを形成する複数の処理ノードを利用して処理を実行し、前記処理ノードの各々の処理機能が、標準の関係言語による関係式により定義される、装置。
【請求項２】
メッセージ・タプルのストリームが前記複数の処理ノード間で転送される、請求項１記載の装置。
【請求項３】
さらにキュー・マネージャを含み、前記転送する手段が前記処理手段からの処理結果を、前記受信者アプリケーションが取出すため、前記キュー・マネージャの出力キューに配置する、請求項１記載の装置。
【請求項４】
前記標準の関係言語が構造化照会言語である、請求項１記載の装置。
【請求項５】
ビジュアル・データベース・ツールが、前記処理ノードの機能を定義する前記関係式を生成するために使用される、請求項１記載の装置。
【請求項６】
前記装置が１つのデータ処理ユニット上に含まれる、請求項１記載の装置。
【請求項７】
前記装置が複数の相互接続されるデータ処理ユニット上に含まれる、請求項１記載の装置。
【請求項８】
前記メッセージ・ブローカ・データ処理装置がインターネット・サーバ上に配置され、前記送信者アプリケーション及び前記受信者アプリケーションの少なくとも１つが、ワールド・ワイド・ウェブ・ブラウザ・アプリケーションを使用する、請求項１に記載の装置。
【請求項９】
送信者アプリケーションからメッセージを受信し、受信されたメッセージを処理し、処理されたメッセージの転送先の受信者アプリケーションを決定するメッセージ・ブローカ・データ処理方法であって、
前記送信者アプリケーションから、複数のフィールドを有するタプルとして編成されるメッセージの入来ストリームを受信するステップと、
データベースに複数のフィールドを有するタプルとして編成され、記憶されたデータと、前記入来ストリームとを照合するステップと、
受信した前記メッセージの入来ストリームに対して前記受信者アプリケーションそれぞれに応じた処理を実行し、当該処理が前記照合するステップでの照合結果と結合処理を行う場合に前記照合結果と結合処理する処理ステップと、
前記処理ステップでの処理結果のメッセージのストリームを、前記受信者アプリケーションが情報を取出す準備が整っているときに少なくとも１つの前記受信者アプリケーションに転送するステップとを含み、
相互接続されてネットワークを形成する複数の処理ノードを利用して、前記処理ステップの処理が実行され、前記処理ノードの各々の処理機能が、標準の関係言語による関係式により定義される、方法
【請求項１０】
メッセージ・タプルのストリームが前記複数の処理ノード間で転送される、請求項９記載の方法。
【請求項１１】
前記受信するステップが、キュー・マネージャが前記送信者アプリケーションからの前記メッセージを受信して前記メッセージを前記処理ステップに渡すステップを含み、
前記転送するステップが前記処理ステップからの処理結果を、前記受信者アプリケーションが取出すため、前記キュー・マネージャの出力キューに配置するステップを含む、請求項９記載の方法。
【請求項１２】
前記標準の関係言語が構造化照会言語である、請求項９記載の方法。
【請求項１３】
ビジュアル・データベース・ツールが、前記処理ノードの機能を定義する前記関係式を生成するために使用される、請求項９記載の方法。
【請求項１４】
前記方法がインターネット・サーバ上に実現され、前記送信者アプリケーション及び前記受信者アプリケーションの少なくとも１つが、ワールド・ワイド・ウェブ・ブラウザ・アプリケーションを使用する、請求項９に記載の方法。
【請求項１５】
請求項９〜１４のいずれか１項に記載の方法を、コンピュータに実行させるプログラムを記録した、コンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はクライアント／サーバ（"分散"としても知られる）・コンピュータの分野に関して、そこでは例えばあるコンピュータ装置（"クライアント"）が別のコンピュータ装置（"サーバ"）に、クライアントの作業の一部を実行するように要求する。
【０００２】
【従来の技術】
クライアント／サーバ・コンピュータは、過去数年の間に、情報技術の世界において、益々重要となった。このタイプの分散コンピュータは、あるマシン上で実行される１つのプロセス（"クライアント"）が、その作業の一部を、例えばその作業を実行する上でより適した、別のマシン上で実行される別のプロセス（"サーバ"）に委任することを可能にする。クライアント及びサーバはまた、同一の物理マシン上で実行される２つのプロセスであってもよい。
【０００３】
メッセージを待ち行列化するデータ処理技術は、今日のクライアント／サーバ・コンピュータ・ネットワークにおいて、益々普及するようになった。この技術は、クライアント・コンピュータ・システムがサーバ・コンピュータ・システムと通信することを可能にする。このことは、たとえこれら２つのシステムが、オペレーティング・システム、データ形式及び通信プロトコルに関して、互いに極めて異なる場合にも当てはまる。更に、この技術の非同期の性質により、クライアントはサーバにメッセージを送信でき、サーバはメッセージをキューに記憶し、後にメッセージを処理することにより、それに応答することができる。これはクライアントとサーバとがリアルタイムに対話する必要がある（例えばクライアントが他のタスクを続ける前に、サーバからの応答を待機する）、同期クライアント／サーバ・モデルとは、極めて異なる。
【０００４】
メッセージ待ち行列及び市販のメッセージ待ち行列製品が、"Messaging and Queuing Using the MQI"、B．Blakely、H．Harris&R．Lewis、McGraw-Hill、1994、及びＩＢＭから提供される次の刊行物、すなわち"An Introduction to Messaging and Queuing"（IBM Document number GC33-0805-00）及び"MQSeries - Message Queue Interface Technical Reference"（IBM Document number SC33-0850-01）で述べられている。ここでＩＢＭ及びＭＱＳeriesは、ＩＢＭの商標である。ＩＢＭのＭＱＳeriesメッセージング・ソフトウェア製品は、トランザクション上のメッセージ支援を提供し、たとえシステムまたは通信障害の場合であっても、１度限りのメッセージ転送を保証するメッセージング・プロトコルに従い、論理作業単位内のメッセージを同期する。ＭＱＳeries製品は、メッセージが受信者システムにより安全に記憶されたことが確認されるまで、送信者システム上の記憶装置から最終的にメッセージを消去しないことにより、及び高性能な回復機構の使用により保証された転送を提供する。成功記憶の確認時のメッセージの転送の約束に先立ち、送信者システムの記憶装置からのメッセージの消去と、受信者システムの記憶装置への挿入の両方が、"不確かに（in doubt）"保守され、障害の場合には、アトミックに破られる。このメッセージ伝送プロトコル及び関連トランザクションの概念及び回復機構が、国際特許出願第ＷＯ９５／１０８０５号及び米国特許第５４６５３２８号で述べられている。
【０００５】
こうしたメッセージング及び待ち行列システムを、ＩＢＭのＤＢ２製品（ＤＢ２はＩＢＭの商標）またはマイクロソフト社のＡｃｃｅｓｓ製品（Ａｃｃｅｓｓはマイクロソフト社の商標）などの、関係データベース・システムと結合することが、より一般的になりつつある。なぜなら、関係データベースは、大量の関連データを記憶及び検索するための構造化機構として、一般に使用されているからである。
【０００６】
例えば、サン・マイクロシステムズ社は、発行／加入機能を実行するために使用されるメッセージング及び待ち行列システムについて述べている（１９９６年１１月１７日公開の欧州特許出願第８０６７３１号を参照）。サーバが発行者として作用し、各メッセージのトピックを指定する間にメッセージを発行する。クライアントは加入者として作用し、加入者がメッセージを受信したいトピックを指定する。メッセージング及び待ち行列ブローカが、クライアントとサーバとの間に配置され、発行されたメッセージを適切なクライアントに配布するように作用する。システムはデータベースが発行サーバとして提供されることを可能にするので、大量の構造化データがネットワークに発行され得る。データベースは加入クライアントとしても提供され、大量のメッセージの容易な構造化検索のために、受信された発行済みメッセージを記憶する。しかしながら、このシステムは、メッセージング及び待ち行列システムと、関係データベース・システムとの統合については述べていない。
【０００７】
オラクル社は、彼らのOracle8 Advanced Queuing（ＡＱ）システム（"Oracle8"及び"Advanced Queuing"は、オラクル社の商標）により、この統合を更に１歩進め、そこではクライアント・アプリケーション（加入者）が、メッセージング及び待ち行列ブローカに構造化照会を提出することにより、加入者が受信したい発行済みメッセージを指定できる。加入者がＳＱＬ（構造化照会言語）などの標準のデータベース言語を使用し、関心のあるトピックを指定する能力は、加入者が受信したい発行済みメッセージのタイプを正確に表現する上で、高レベルの特異性を可能にする。例えば、加入者は標準のＳＱＬ照会ステートメントを用い、株価が１株につき１００米ドルより高い場合に限り、全ての発行済みＩＢＭ株式相場を受信したいことを示すことができる。ＳＱＬステートメントに加え、加入者は様々なビジュアル関係データベース・プログラミング技術を利用でき、それらには例えば、マイクロソフト・アクセス製品により提供されるような、加入者が見たい発行済みメッセージのタイプを、プログラマが正確に指定することを容易にする技術などが含まれる。
【０００８】
オープン・ホライズン社は、彼らのAmbrosia 2．1製品（"Ambrosia"はオープン・ホライズン社の商標）により、更にこの統合を１歩進め、そこではメッセージング及び待ち行列ブローカが、メッセージを要求元の加入者に転送する以前に、主題を発行済みメッセージの内容に加える。メッセージング及び待ち行列ブローカは、発行済みメッセージを入力キューに受信する。オラクル製品同様、標準のＳＱＬ技術が、加入者が見たい発行済みメッセージのタイプを正確に指定するために使用される。しかしながら、Ambrosia製品は更に、発行済みメッセージ内の情報を、関係データベースに記憶されたレコードと照合することができる。特に、一旦発行済みメッセージが受信されると、データベース・レコードからのデータの一部が、発行済みメッセージの内容に加えられ、メッセージング及び待ち行列ブローカにより最初に受信されたものと比べ、より詳細な内容を有する発行済みメッセージが作成される。例えば、ＩＢＭ株式が現在１株当たり１２５ドルでリストされていることを示す発行済みメッセージが、ブローカの入力キューに受信される場合に、ブローカは関係データベースから情報を検索するようにプログラムされ得る。こうした情報には、顧客の識別（例えばＣ２３）や、この顧客が現在所有するＩＢＭ株式の数量（例えば２２５株）などが含まれる。データベースから検索された情報が次に、発行済み情報と結合され、より詳細なメッセージ、すなわち、顧客Ｃ２３が現在１株当たり１２５ドルで取り引きされているＩＢＭ株式を、２２５株所有するとのメッセージが作成され、これが既に加入者として登録済みの顧客Ｃ２３に転送される。
【０００９】
Ambrosia製品は上述の他の製品に勝る相当な価値を提供するが、発行済みメッセージとデータベース・レコードとの照合方法を正確に指定する専用のソフトウェア・コードを作成しなければならない欠点がある。
【００１０】
アクティブ・ソフトウェア社のActiveWebメッセージ・ブローカ製品（"ActiveWeb"はアクティブ・ソフトウェア社の商標）は、データベース内容が発行済みメッセージに追加され、発行済みメッセージの価値を増加する点で、オープン・ホライズン社のAmbrosia製品と類似する。ActiveWebは、データベース・アダプタと呼ばれる特定のソフトウェア・コード部分を使用し、照合（例えば結合）操作を実行する。このアダプタは、データを発行済みメッセージから抽出し、データをデータベースにより期待される正確な形式のデータベース照会に変換し、データベースからデータを検索し、発行済みメッセージ及びデータベース・データに対して、特定の照合操作を実行するために要求される。
【００１１】
従って、ActiveWebもまた、例えば発行済みメッセージをデータベース・レコードと結合する照合操作の実行のために、専用のソフトウェア部分を提供する必要性があるといった、Ambrosia製品の欠点を共有する。こうしたソフトウェアを変更するには、ユーザは専用のソフトウェア部分のプログラミング構造及び言語に精通していることが必要である。従って、プログラマはメッセージ・ブローカの残りの部分を容易に変更できる一方、照合操作を実行する専用のソフトウェア部分を変更するために、新たなプログラミング環境に切り替わることが必要である。
【００１２】
【発明が解決しようとする課題】
本発明の目的は、改善されたクライアント／サーバ・コンピュータ・システムを提供することである。
【００１３】
【課題を解決するための手段】
１態様によれば、本発明は、送信者アプリケーションからメッセージを受信し、受信されたメッセージを処理し、処理されたメッセージの転送先の受信者アプリケーションを決定するために使用される、メッセージ・ブローカ・データ処理装置を提供する。この装置は、送信者アプリケーションから、少なくとも１つのフィールドを有するタプル（tuple）として編成されるメッセージの入来ストリームを受信する手段と、メッセージの入来ストリームを、少なくとも１つのフィールドを有するタプルとして編成し、データベースに記憶されるデータベース・データと照合する手段と、メッセージのストリームを処理し、結果のメッセージのストリームを少なくとも１つの受信者アプリケーションに転送する手段とを含む。
【００１４】
好適には、上述の受信する手段、照合する手段、及び処理する手段が、相互接続されてネットワークを形成する複数の処理ノードを利用し、各ノードの処理機能が、標準の関係言語による関係式により定義され、メッセージ・タプルのストリームが複数のノード間で転送される。更に、ネットワーク内の２つの隣接ノードであるノード１及びノード２に対して、ノード１の機能を定義する関係式の出力が、ノード２の機能を定義する関係式の入力により、メッセージ・タプルのストリームとして解釈される。
【００１５】
好適には、受信手段がキュー・マネージャと通信する。
【００１６】
好適な実施例では、送信者アプリケーションが発行者であり、受信者アプリケーションが加入者である。
【００１７】
好適には、標準の関係言語が構造化照会言語であり、ビジュアル・データベース・ツールが、ノードの機能を定義する関係式を生成するために使用される。
【００１８】
１実施例では、２つのノード間に存在するメッセージ・タプルのストリーム内の各メセージ・タプルが、同一のフィールドのセットを有する。別の実施例では、２つのノード間に存在するメッセージ・タプルのストリーム内において、ストリーム内の各メッセージ・タプルが、必ずしも同一のフィールドのセットを有さない。好適には、後者の実施例では、ノードの機能を定義する関係式内で使用され、ノードに入力されるストリームの特定のメッセージ・タプル内で定義されないフィールドが、ヌル（null）値を割り当てられる。
【００１９】
１実施例では、本装置が１つのデータ処理ユニット上に含まれ、別の実施例では、装置が複数の相互接続されるデータ処理ユニット上に含まれる。
【００２０】
第２の態様によれば、本発明は、第１の態様で述べられた機能を実行する方法を提供する。
【００２１】
第３の態様では、本発明は、コンピュータ上で実行されて、第１の態様で述べられた機能を実行するコンピュータ・プログラム製品を提供する。
【００２２】
第４の態様によれば、本発明は、第１の態様のメッセージ・ブローカ・データ処理装置を用い、顧客に情報サービスを提供する方法を提供する。この方法は、ａ）顧客から、顧客が受信したいメッセージに関する基準を受信するステップと、ｂ）発行者から発行済みメッセージを受信するステップと、ｃ）発行済みメッセージを顧客から受信された基準と比較するステップと、ｄ）顧客から受信された基準に合う発行済みメッセージを顧客に転送するステップとを含む。
【００２３】
本発明は入来データをメッセージ・タプルのストリームとしてブローカに提供するので、入来データをデータベース・データと照合することが容易となり、後者もまたタプルに編成される。従って、データ・ストリーム内のメッセージをデータベースからのデータと照合するデータ処理要素が、シームレスに、全体メッセージ・ブローカ・システムに統合され得る。
【００２４】
このデータ処理要素を、全体メッセージ・ブローカ・システムと一緒にシームレスに統合することにより、データのストリームがデータベースからのデータと照合（例えば併合または結合）される方法に関する詳細をプログラムする一方、ビジュアル・ツール、インタフェース及びモデルなどの、ブローカの他の部分をプログラムするために使用されるのと同一の標準の関係メソッドも、使用され得る。これにより、同一のツールが全体を通じて使用可能になり、全体ブローカ・システムのプログラミングが相当に容易になる。
【００２５】
完全なメッセージング・ブローカにおける、こうした関係技術（特にビジュアル・ツール）を使用するこの能力はまた、非効率的にプログラムされたブローカのあらゆる部分を最適化することを非常に容易にする。
【００２６】
更に、入来データ・ストリームを記憶済みのデータベース・データと照合するユニットを、全体ブローカ・システムにシームレスに統合することにより、ブローカを介するメッセージの流れが（従来のAmbrosia及びActiveWebと比較して、）より効率的に発生する。
【００２７】
最後に、本発明に関わるシームレス・インテグレーション（統合）は、全体トランザクションの一部として、照合ユニット内で発生する処理の扱いを非常に容易にする。ここで全体トランザクションは、メッセージ・ブローカの他の部分で発生する処理も考慮するものである。すなわち、ブローカの全ての要素が同様に処理され得る場合、トランザクションなどの、システム全体の処理面を追跡することが非常に容易になる。
【００２８】
【発明の実施の形態】
図１では、加入者が受信したい生の最新のデータを供給する、発行者データ処理ユニット１１が示される（好適な実施例の説明では、株式データが使用される。なぜなら、株式データは絶え間無く変化し、多くの加入者により即時ベースで要求されるデータの良い例であり、このタイプのブローカの主要な用途であるからである）。発行者データ処理ユニット１１は、多数の使用可能なコンピュータ処理プラットフォームの１つの上で実行され得る。
【００２９】
ＩＢＭのＭＱＳeries製品（キュー・マネージャ１２として示される）などのメッセージング及び待ち行列ユニットが、発行者データ処理ユニット１１と、加入者データ処理ユニット１５との間に配置される。加入者データ処理ユニット１５は、多数の使用可能なコンピュータ処理プラットフォームの１つの上で実行され、選択プラットフォームは、発行者１１により使用されるプラットフォームとは異なり得る。既知のキュー・マネージャ１２（ＭＱＳeries）は、全ての必要なデータ形式トランザクション（例えばプロトコルなど）を処理し、発行者１１及び加入者１５が互いに非同期に通信することを可能にする（例えば、発行者１１によりメッセージが発行されているとき、加入者１５は動作状態である必要はなく、メッセージがキューに記憶され、加入者１５が再度動作状態になるとき、加入者１５がメッセージを検索する）。別々のキュー・マネージャ１２が通常、各発行者及び加入者に割り当てられ、キュー・マネージャが対話し、ユニット間のメッセージの流れを制御する。しかしながら、説明を容易にするため、ここではキュー・マネージャ１２が１つのエンティティとして述べられる。
【００３０】
発行者１１及び加入者１５は、同一のマシン上で動作できる。この後者の場合、データ形式変換が低減され、キュー・マネージャ１２は単に発行済みメッセージを発行者アプリケーションから加入者アプリケーションに経路指定するだけである。
【００３１】
キュー・マネージャ１２は、受信する発行済みメッセージを関係メッセージ・ブローカ１３（中間データ処理ユニット上または複数の相互接続されたデータ処理ユニット上で実行され得る）に送信する。メッセージ・ブローカはメッセージを後述のように処理後、キュー・マネージャ１２に返送し、次にメッセージが適切な加入者の出力キューに配置され、加入者により検索される。図１では単純化のために、こうした１加入者（及び発行者）だけが示されるが、通常の場合、複数の加入者及び発行者が含まれる。
【００３２】
関係メッセージ・ブローカ１３はまた、図１に点線により示されるように、キュー・マネージャ１２をバイパスして、同期操作モードでも使用され得る。実際、ブローカ１３は、キュー・マネージャ１２の備わっていない全くの同期環境においても使用され得る。これは例えば、発行者及び加入者が常時動作状態であるシステムを含み、従ってキュー・マネージャ１２の機能の必要性を排除する。
【００３３】
その処理を実行する際、ブローカ１３はしばしばデータベース１４をアクセスする。例えば、発行済みメッセージ内の情報がデータベースに記憶された情報と結合され、より意味深いメッセージが作成され、加入者に送信される。例えば、発行済みメッセージは、ＩＢＭ株価が１株当たり１５０米ドルに値上がりしたことを示し、データベース１４に記憶されたデータベース・レコードが、識別子Ｃ３を有する特定の顧客が、ＩＢＭ株式を７７株を所有することを示す。ブローカ１３により実行される結合操作は、全てのこの情報を一緒にまとめ、発行済みメッセージよりも長いメッセージ、すなわち顧客Ｃ３が、現在１株当たり１５０米ドルの値打ちがあるＩＢＭ株式を７７株所有することを示すメッセージを生成する。
【００３４】
周知のように、データベース内に記憶されたデータは、"タプル"と呼ばれる行に編成される。例えば、表１は３つのタプルを示す。
【表１】
データベースに記憶されたデータの例：
（会社）（顧客）（数量）
ＩＢＭ    Ｃ３    ７７
ＩＢＭ    Ｃ２    ４４
フォード  Ｃ３  １２０
【００３５】
第１のタプルは、顧客Ｃ３がＩＢＭ株式を７７株所有することを示す。第２のタプルは、顧客Ｃ２がＩＢＭ株式を４４株所有することを示す。第３のタプルは、顧客Ｃ３がフォード株式を１２０株所有することを示す。
【００３６】
本発明の好適な実施例によれば、発行者１１から送信される発行済みメッセージもまた、タプルに編成される。従って、発行済みメッセージのストリームが、一時的に順序付けされたタプルのリストである。例えば、表２は各々がタプルに編成された２つのメッセージのシーケンスを示す。
【表２】
メッセージ・ストリーム内のタプルの例：
（会社）  （株価）
ＩＢＭ    １６０
フォード    ４４
【００３７】
第１のタプルは、ＩＢＭ株式が現在１株当たり１６０米ドルの値打ちがあることを示す。第２のタプルは、フォード株式が現在１株当たり４４米ドルの値打ちがあることを示す。
【００３８】
ストリーム内の各メッセージ・タプルは、同一のフィールドのセット（例えば会社及び株価フィールド）を有し得る。或いは、ストリーム内の一部のメッセージ・タプルが異なるフィールドのセットを有し、フィールドがヌル値を割り当てられ、特定のメッセージ・タプルに対して定義されない。表２に示されるタプルは、単純なデータ（例えば数値または文字ストリング）を有するが、フィールドがアレイまたはネスト化タプルなどの、特定の構造を含み得る。
【００３９】
発行済みメッセージ及びデータベース・データの両方がタプルとして編成されるので、発行済みメッセージ及びデータベース・データの所望の照合が、標準の関係式を用いて指定され得る。これに関しては、図２に示される関係メッセージ・ブローカ１３の詳細ブロック図に関する後述の説明、及び後述の複数の例から明らかとなろう。
【００４０】
図２では、発行者アプリケーションＰ１（１１）が、タプルとして編成される発行済みメッセージのストリームをキュー・マネージャ１２に送信し、キュー・マネージャがストリームを関係メッセージ・ブローカ１３に転送し、そこでメッセージが処理され、特定の加入者に割り当てられ、その後、メッセージのストリームがキュー・マネージャ１２に返送され、次に３つの加入者アプリケーションＳ１（１５ａ）、Ｓ２（１５ｂ）及びＳ３（１５ｃ）に伝送される。関係メッセージ・ブローカ１３は、ネットワークを形成するように相互接続される処理ノード２１、２２及び２３のセットとして編成される。これらの処理ノードは全て同一のデータ処理マシン上に配置されるか、或いは複数の相互接続されるデータ処理マシンに渡って分散される。各ノードの処理機能は、以下で詳述される標準の関係言語による関係式により定義される。ここで、標準の関係言語とは、ＳＱＬなどの広く知られた関係言語を意味する。
【００４１】
一旦ブローカ１３に入力すると、発行済みメッセージのストリームがフィルタ・ノード２１により処理され、発行済みメッセージの一部が取り除かれ（廃棄される）、特定のメッセージだけがフィルタを通過する。例えば、Ｐ１からの発行済み株式相場のストリームは一般に、非常に多くの会社からの株式相場を含む。多分、加入者Ｓ１、Ｓ２及びＳ３はＩＢＭ及びフォードからの株式にだけ関心がある。従って、フィルタ・ノード２１はメッセージがＩＢＭまたはフォードのいずれかの株価に関わる場合だけ、メッセージがフィルタを通過することを許可する。フィルタ・ノード２１の機能は、非常に一般的な関係データベース操作（通常"セレクト（select）"と呼ばれる）であるので、関係データベース技術では公知である。フィルタ・ノード２１の処理機能は、例えばフィルタを通過することを許可されるメッセージを正確に表すＳＱＬセレクト・ステートメントを用いる関係式により定義される。
【００４２】
フィルタ２１の出力は結合演算子２２の入力に接続され、これはフィルタリングされたメッセージ・ストリーム（ＩＢＭ及びフォードの株式相場だけを含む）を、第１の入力として受け取る。結合ノード２２はデータベース１４から第２の入力を受信する。結合ノード２２がフィルタ・ノード２１の出力から発行済みメッセージを受信するとき、適切なデータベース・タプルがアクセスされ、データベース１４から読出され、発行済みメッセージと結合される。結合ノード２２の機能は、非常に一般的な関係データベース操作であるので、関係データベース技術では公知である。結合ノード２２の処理機能は、例えばメッセージ・ストリームとデータベース・データとの結合方法を正確に表すＳＱＬ  ＩＮＮＥＲ  ＪＯＩＮステートメントを用いる関係式により定義される。
【００４３】
例えば、表１のデータベース・データを用い、ＩＢＭ株価が現在１株当たり１６０米ドルであることを示す第１の発行済みメッセージ・タプル（表２の第１行目に示される）が、ブローカ１３により受信されるとき、これはフィルタ・ノード２１を通過する。なぜなら、このノードを定義する関係式は、メッセージ・タプルがＩＢＭまたはフォードの株価を含む場合、それが通過することを許可するからである。このメッセージ・タプルが結合ノード２２に達すると、結合ノードはこのメッセージ・タプルを、表１の第１行目に示されるタプルと照合し、表３の第１行目に示されるより長いタプルを提供する（これは顧客Ｃ３が、現在１株当たり１６０米ドルの値打ちがあるＩＢＭ株式を７７株所有することを示す）。
【表３】
結合ノードの出力におけるメッセージ・ストリーム内のタプルの例：
（会社）（株価）（顧客）（数量）
ＩＢＭ  １６０    Ｃ３    ７７
ＩＢＭ  １６０    Ｃ２    ４４
フォード  ４４    Ｃ３  １２０
【００４４】
この結合ノード２２の出力は、次にキュー・マネージャ１２に送信され、続いてＳ３のキューに含まれる。加入者Ｓ３（１５ｃ）は、情報を取り出す準備が整っているとき、いつでもメッセージをキューから取り出すことができる。図２のノード構造に従えば、Ｓ３はＩＢＭまたはフォード株式を所有する全ての顧客に関するメッセージを受信する。Ｓ３は例えば、全ての顧客に関する株式所有データを獲得したい会計監査人である。
【００４５】
この同一のメッセージ・タプル（表２の第１行目に示される）はまた、結合ノード２２において、表１の第２行目に示されるデータベース・タプルと結合され、その結果、表３の第２行目に示されるより長いタプルが生成される（これは顧客Ｃ２が、現在１株当たり１６０米ドルの値打ちがあるＩＢＭ株式を４４株所有することを示す）。この結合ノード２２の出力が次にキュー・マネージャ１２に送信され、続いてＳ３のキューに含まれる。加入者Ｓ３（１５ｃ）は、情報を取り出す準備が整っているとき、いつでもメッセージをキューから取り出すことができる。
【００４６】
結合ノード２２の出力はまた、キュー・マネージャ１２に送信され、続いてＳ２のキューにも含まれる。特に、結合ノード２２の出力は、顧客Ｃ２に関するメッセージ・タプルだけを通過するようにプログラムされたフィルタ・ノード２３に送信される。フィルタ・ノード２３の処理機能は、例えばフィルタを通過することを許可されるメッセージを正確に表すＳＱＬセレクト・ステートメントを用いる関係式により定義される。表３の第２行目に示されるメッセージ・タプルは、Ｃ２に関連し、従ってフィルタ・ノード２３を通過し、キュー・マネージャ１２に送信され、続いてＳ２のキューに含まれる。加入者Ｓ２（１５ｂ）は情報を取り出す準備が整っているとき、いつでもメッセージをキューから取り出すことができる。
【００４７】
第２の発行済みメッセージ・タプル（表２の第２行目に示される）がフィルタ・ノード２１に達するとき、これはフィルタ・ノード２１を通過することを許可される。なぜなら、メッセージ・タプルがフォード株価に関係するからである（特に、このメッセージ・タプルは、現フォード株価が１株当たり４４米ドルであることを示す）。フィルタ・ノード２１を一旦通過すると、このメッセージ・タプルは結合ノード２２に進み、そこで表１の第３行目に示されるデータベース・タプルと結合され（なぜなら、これはフォードに関わる唯一のデータベース・タプルであるからである）、表３の第３行目に示されるより長いタプルが提供される（これは顧客Ｃ３が、現在１株当たり４４米ドルの値打ちがあるフォード株式を１２０株所有することを示す）。結合ノード２２から出力されるこのメッセージ・タプルが、次にキュー・マネージャ１２に送信され、続いてＳ３のキューに含まれる。加入者Ｓ３（１５ｃ）は、情報を取り出す準備が整っているとき、いつでもメッセージをキューから取り出すことができる。結合ノード２２から出力されるこのメッセージ・タプル（顧客Ｃ３に関係する）は、フィルタ・ノード２３を通過することを許可されない。なぜなら、フィルタ・ノード２３はメッセージ・タプルが顧客Ｃ２に関係する場合のみ、それが通過することを許可するからである。
【００４８】
加入者Ｓ１はＩＢＭ及びフォード株式に非常に関心があるが、いずれの会社の株式も購入しておらず、いずれの購入も計画していないと仮定する。例えば、Ｓ１は、ＩＢＭ及びフォード株式の現株価にもとづき、企業意思を下す金融仲介者である。この場合、結合ノード２２に関わる必要はない。なぜなら、データベース１４はＳ１にとって望ましい情報を含まないからである。従って、第２の出力がフィルタ・ノード２１に提供され、フィルタ・ノード２１が通過を許可する全ての発行済みメッセージ・タプル（ＩＢＭ及びフォード株の相場に関する株価）が、この第２の出力から出力される。メッセージは次にキュー・マネージャ１２に転送され、続いてＳ１のキューに含まれる。加入者Ｓ１（１５ａ）は、情報を取り出す準備が整っているとき、いつでもメッセージをキューから取り出すことができる。
【００４９】
ブローカ１３の各ノードの機能は、もっぱらデータベース特有の用語により定義される。各ノードは、ＳＱＬなどの標準の関係言語により表される関係式を有する。１つのノードの関係式の出力は、隣接ノードの関係式への入力として提供されるメッセージ・タプルのストリームである。フィルタ・ノード２１及び２３は、データベース関係代数の共通のセレクト機能を使用する。結合ノード２２は、データベース関係代数の共通のＩＮＮＥＲ  ＪＯＩＮ関数を使用する。データベース１４と発行済みメッセージとの間で発生する照合は、"結合"演算子として詳述されたが、データベース・データを発行済みメッセージと照合するために、"共通部分"、"計算"または"合併"演算などの、他の多くの関係代数演算も実現され得る。
【００５０】
ノードの機能を定義するために使用され得る関係式の幾つかの例は、次のように与えられる。
【００５１】
例１：フィルタリング
第１のフィルタ・ノード（２１）の例は、ＳＱＬにより次のように定義される。
SELECT *
FROM Stock
WHERE Company="IBM" OR Company="Ford"
【００５２】
例２：結合
ノード２１からの出力ストリームが"Ｑ２１"と命名され、顧客保有情報のデータベース関係が、"Holding"と命名されると仮定する。結合ノード（２２）は、次のように定義される。
SELECT Q21．*, Customer, Quantity
FROM Q21 INNER JOIN Holding
ON Q21．Company = Holding．Company
【００５３】
例３：結合依存フィルタリング
結合ノードの出力ストリームがＱ２２の場合、結合から出力される顧客フィールドに依存するノード２３のフィルタが、次のように表される。
SELECT *
FROM Q22
WHERE Customer="C2"
【００５４】
例４：計算
各トランザクションにおける合計値が、次のように計算され得る。
SELECT *, Price*Quantity AS TotalValue
FROM Q22
【００５５】
例５：否定フィルタリング（差）
加入者は、ローカル・ポリシが株式の取引を禁止する会社に関する株式情報を見たいと思わない。こうした会社のリストが、データベースの禁止関係（Proscribed relation）内に保持される。加入はＳＱＬ定義により、次のように生成される。
SELECT *
FROM Stock
WHERE Company NOT IN
(SELECT Company FROM Proscribed)
【００５６】
例６：アーカイブ
管理者は、入力ストリーム"Stock"のメッセージ・タプルを関係に挿入することにより、日付スタンプ付きアーカイブをセットアップする。
INSERT INTO StockArchive
SELECT *, Time() as TimeAudit
FROM Stock
【００５７】
例７：更新
管理者は、データベース・テーブル"StockLatest"内の各会社の最新の株価を追跡したいと思う。
UPDATE StockLatest INNER JOIN Stock
ON StockLatest．Company=Stock．Company
SET StockLatest．Price=Stock．Price, StockLatest．LogTime=Now();
【００５８】
例８：複合式
ＳＱＬは幾つかの計算を１つの式に結合することを可能にする。次の式は、結合、フィルタ及び計算を結合する。
SELECT Q21．*, Customer, Quantity, Price*Quantity as TotalValue
FROM Q21 INNER JOIN Holding
ON Q21．Company=Holding．Company
WHERE Customer='C2'
【００５９】
一旦ブローカ・システムが設計されると、追加の機能を加える変更が非常に容易になる。例えば、計算ノード２４（図３に示される）が結合ノード２２の出力に追加され、結果のメッセージが、各顧客の関連会社の株式所有の合計現在値に相当する別のフィールドを含む。すなわち、計算ノード２４が株価を顧客が所有する株数と乗算し、積を別のフィールド（"合計値"と呼ばれる）に提供する。従って、表４は次のようになる。
【表４】
（会社）（株価）（顧客）（数量）（合計値）
ＩＢＭ  １６０    Ｃ３    ７７  １２３２０
ＩＢＭ  １６０    Ｃ２    ４４    ７０４０
フォード  ４４    Ｃ３  １２０    ５２８０
【００６０】
また、ノードの機能を定義する関係式を変更することにより、既存のノード（例えばノード２２）が容易に変更され得る。結合ノード２２及びフィルタ・ノード２１及び２３が全て、相互接続されるノードのネットワークにシームレスに統合され、メッセージ・タプルのストリームがノード間で転送されるので、任意のノードの関係式が容易に一様の様式で変更され得る。（上述の従来技術の場合のように、）任意のノードのために、異なるタイプのプログラミングに切り替える必要はない。
【００６１】
ブローカの機能はデータベース特有の用語で実現されるので、関係データベース管理システムをプログラムするために使用可能な標準のビジュアル・ツールを用いて、ブローカ１３の機能ユニットを変更することが非常に容易になる。例えば、マイクロソフト社のＡｃｃｅｓｓ製品が、こうしたビジュアル・ツールを提供する。関係データベース・プログラマは、既にこれらのツールに精通している。従って、データベース・プログラマは、ブローカ１３のノード（例えばノード２１、２２、２３）の構造を、容易にセットアップすることができる。例えば、顧客要求により結合ノードが変更されなければならない場合、データベース・プログラマは新たなプログラミング技術を習得する必要無しに、これを容易に実行でき、従ってシステム開発費用を多大に低減することができる。
【００６２】
好適な実施例では、ノードの各々が関係式により定義されるが、ノードのあるものは他の方法でも実現され得る。しかしながら、勿論、こうした場合には本発明の利点は低減する。
【００６３】
本発明の好適な実施例としての、関係メッセージ・ブローカの付加価値発行／加入アプリケーションについて述べてきた。これは本発明の非常に有用な環境である。しかしながら、本発明が有効となる他の多くの環境が存在する。それらには作業フロー・ストリームが含まれ、この場合、その時どの受信者が多忙でないかに従い、伝送メッセージが複数の受信者の任意の人に転送され得る。作業フロー環境では、ブローカがデータベース１４をアクセスして、各受信者に関するデータを判断し、作業要求メッセージを割り当てられるべき受信者に関する決定を下す。
【００６４】
本発明の１実施例は、インターネットに接続されるサーバ・コンピュータに、関係メッセージ・ブローカ機能を提供し、それにより発行者及び加入者アプリケーションがクライアントとして、ワールド・ワイド・ウェブ・ブラウザ・アプリケーションを介して、インターネット・サーバをアクセスする。このようにして、ブローカ１３は、発行済みメッセージが加入者が（ブラウザ・アプリケーションを用い、インターネット・サーバと連絡することにより）以前に定めた基準に合致するとき、それらをインターネットを介して、加入者１５のウェブ・ブラウザ・アプリケーションに転送する。
【００６５】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００６６】
（１）送信者アプリケーションからメッセージを受信し、受信されたメッセージを処理し、処理されたメッセージの転送先の受信者アプリケーションを決定するメッセージ・ブローカ・データ処理装置であって、
前記送信者アプリケーションから、少なくとも１つのフィールドを有するタプルとして編成されるメッセージの入来ストリームを受信する手段と、
前記メッセージの入来ストリームを、少なくとも１つのフィールドを有するタプルとして編成し、データベースに記憶されるデータベース・データと照合する手段と、
前記メッセージのストリームを処理し、結果のメッセージのストリームを少なくとも１つの前記受信者アプリケーションに転送する手段と
を含む、装置。
（２）前記受信する手段、前記照合する手段、及び前記処理する手段が、相互接続されてネットワークを形成する複数の処理ノードを利用し、前記ノードの各々の処理機能が、標準の関係言語による関係式により定義される、前記（１）記載の装置。
（３）メッセージ・タプルのストリームが前記複数のノード間で転送される、前記（２）記載の装置。
（４）前記ネットワーク内の２つの隣接ノードであるノード１及びノード２に対して、前記ノード１の機能を定義する関係式の出力が、前記ノード２の機能を定義する関係式の入力により、メッセージ・タプルのストリームとして解釈される、前記（３）記載の装置。
（５）前記受信する手段がキュー・マネージャと通信する、前記（１）記載の装置。
（６）前記送信者アプリケーションが発行者であり、前記受信者アプリケーションが加入者である、前記（１）記載の装置。
（７）前記標準の関係言語が構造化照会言語である、前記（２）記載の装置。（８）ビジュアル・データベース・ツールが、前記ノードの機能を定義する前記関係式を生成するために使用される、前記（２）記載の装置。
（９）２つの前記ノード間に存在する前記メッセージ・タプルのストリーム内の各メッセージ・タプルが、同一のフィールドのセットを有する、前記（３）記載の装置。
（１０）２つの前記ノード間に存在する前記メッセージ・タプルのストリーム内において、前記ストリーム内の各メッセージ・タプルが必ずしも同一のフィールドのセットを有さない、前記（３）記載の装置。
（１１）前記ノードの機能を定義する前記関係式内で使用され、前記ノードに入力される前記ストリームの特定のメッセージ・タプル内で定義されないフィールドが、ヌル値を割り当てられる、前記（１０）記載の装置。
（１２）前記装置が１つのデータ処理ユニット上に含まれる、前記（１）記載の装置。
（１３）前記装置が複数の相互接続されるデータ処理ユニット上に含まれる、前記（１）記載の装置。
（１４）送信者アプリケーションからメッセージを受信し、受信されたメッセージを処理し、処理されたメッセージの転送先の受信者アプリケーションを決定するメッセージ・ブローカ・データ処理方法であって、
前記送信者アプリケーションから、少なくとも１つのフィールドを有するタプルとして編成されるメッセージの入来ストリームを受信するステップと、
前記メッセージの入来ストリームを、少なくとも１つのフィールドを有するタプルとして編成し、データベースに記憶されるデータベース・データと照合するステップと、
前記メッセージのストリームを処理し、結果のメッセージのストリームを少なくとも１つの前記受信者アプリケーションに転送するステップと
を含む、方法。
（１５）前記受信するステップ、前記照合するステップ、及び前記処理するステップが、相互接続されてネットワークを形成する複数の処理ノードを利用し、前記ノードの各々の処理機能が、標準の関係言語による関係式により定義される、前記（１４）記載の方法。
（１６）メッセージ・タプルのストリームが前記複数のノード間で転送される、前記（１５）記載の方法。
（１７）前記ネットワーク内の２つの隣接ノードであるノード１及びノード２に対して、前記ノード１の機能を定義する関係式の出力が、前記ノード２の機能を定義する関係式の入力により、メッセージ・タプルのストリームとして解釈される、前記（１６）記載の方法。
（１８）前記受信するステップがキュー・マネージャと通信する、前記（１４）記載の方法。
（１９）前記送信者アプリケーションが発行者であり、前記受信者アプリケーションが加入者である、前記（１４）記載の方法。
（２０）前記標準の関係言語が構造化照会言語である、前記（１５）記載の方法。
（２１）ビジュアル・データベース・ツールが、前記ノードの機能を定義する前記関係式を生成するために使用される、前記（１５）記載の方法。
（２２）２つの前記ノード間に存在する前記メッセージ・タプルのストリーム内の各メッセージ・タプルが、同一のフィールドのセットを有する、前記（１６）記載の方法。
（２３）２つの前記ノード間に存在する前記メッセージ・タプルのストリーム内において、前記ストリーム内の各メッセージ・タプルが必ずしも同一のフィールドのセットを有さない、前記（１６）記載の方法。
（２４）前記ノードの機能を定義する前記関係式内で使用され、前記ノードに入力される前記ストリームの特定のメッセージ・タプル内で定義されないフィールドが、ヌル値を割り当てられる、前記（２３）記載の方法。
（２５）コンピュータ読出し可能記憶媒体上に記憶され、データ処理装置上で実行されると、送信者アプリケーションからメッセージを受信し、受信されたメッセージを処理し、処理されたメッセージの転送先の受信者アプリケーションを決定するメッセージ・ブローカ・データ処理方法を実行するコンピュータ・プログラム製品であって、
前記送信者アプリケーションから、少なくとも１つのフィールドを有するタプルとして編成されるメッセージの入来ストリームを受信するステップと、
前記メッセージの入来ストリームを、少なくとも１つのフィールドを有するタプルとして編成し、データベースに記憶されるデータベース・データと照合するステップと、
前記メッセージのストリームを処理し、結果のメッセージのストリームを少なくとも１つの前記受信者アプリケーションに転送するステップと
を含む、製品。
（２６）前記受信するステップ、前記照合するステップ、及び前記処理するステップが、相互接続されてネットワークを形成する複数の処理ノードを利用し、前記ノードの各々の処理機能が、標準の関係言語による関係式により定義される、前記（２５）記載の製品。
（２７）メッセージ・タプルのストリームが前記複数のノード間で転送される、前記（２６）記載の製品。
（２８）前記ネットワーク内の２つの隣接ノードであるノード１及びノード２に対して、前記ノード１の機能を定義する関係式の出力が、前記ノード２の機能を定義する関係式の入力により、メッセージ・タプルのストリームとして解釈される、前記（２７）記載の製品。
（２９）前記受信するステップがキュー・マネージャと通信する、前記（２５）記載の製品。
（３０）前記送信者アプリケーションが発行者であり、前記受信者アプリケーションが加入者である、前記（２５）記載の製品。
（３１）前記標準の関係言語が構造化照会言語である、前記（２６）記載の製品。
（３２）ビジュアル・データベース・ツールが、前記ノードの機能を定義する前記関係式を生成するために使用される、前記（２６）記載の製品。
（３３）２つの前記ノード間に存在する前記メッセージ・タプルのストリーム内の各メッセージ・タプルが、同一のフィールドのセットを有する、前記（２７）記載の製品。
（３４）２つの前記ノード間に存在する前記メッセージ・タプルのストリーム内において、前記ストリーム内の各メッセージ・タプルが必ずしも同一のフィールドのセットを有さない、前記（２７）記載の製品。
（３５）前記ノードの機能を定義する前記関係式内で使用され、前記ノードに入力される前記ストリームの特定のメッセージ・タプル内で定義されないフィールドが、ヌル値を割り当てられる、前記（３４）記載の製品。
（３６）前記メッセージ・ブローカ・データ処理装置がインターネット・サーバ上に配置され、前記送信者アプリケーション及び前記受信者アプリケーションの少なくとも１つが、ワールド・ワイド・ウェブ・ブラウザ・アプリケーションを使用する、前記（１）記載の装置。
（３７）前記メッセージ・ブローカ・データ処理装置がインターネット・サーバ上に配置され、前記送信者アプリケーション及び前記受信者アプリケーションの少なくとも１つが、ワールド・ワイド・ウェブ・ブラウザ・アプリケーションを使用する、前記（１４）記載の方法。
（３８）前記メッセージ・ブローカ・データ処理装置がインターネット・サーバ上に配置され、前記送信者アプリケーション及び前記受信者アプリケーションの少なくとも１つが、ワールド・ワイド・ウェブ・ブラウザ・アプリケーションを使用する、前記（２５）記載の製品。
（３９）前記（１）記載の装置を用い、情報サービスを顧客に提供する方法であって、
ａ）前記顧客が受信したいメッセージに関する基準を、前記顧客から受信するステップと、
ｂ）発行者から発行済みメッセージを受信するステップと、
ｃ）前記発行済みメッセージを、前記顧客から受信された前記基準と比較するステップと、
ｄ）前記顧客から受信された前記基準に合う前記発行済みメッセージを、前記顧客に転送するステップと
を含む、方法。
【図面の簡単な説明】
【図１】本発明の好適な実施例に従う関係メッセージ・ブローカの基本セットアップを示すブロック図である。
【図２】本発明の好適な実施例に従う関係メッセージ・ブローカに関する詳細を示すブロック図である。
【図３】図２の関係メッセージ・ブローカの変更バージョンを示すブロック図である。
【符号の説明】
１１  発行者データ処理ユニット
１２  キュー・マネージャ
１３  関係メッセージ・ブローカ
１４  データベース
１５  加入者データ処理ユニット
２１、２３  フィルタ・ノード
２２  結合ノード
【図１】
0003892987.tif 000002
【図２】
0003892987.tif 000003
【図３】
0003892987.tif 000004