JP2004506272A - 未加工金融データを処理して、妥当性検査した商品案内情報を加入者に対して生成するシステム - Google Patents
未加工金融データを処理して、妥当性検査した商品案内情報を加入者に対して生成するシステム Download PDFInfo
- Publication number
- JP2004506272A JP2004506272A JP2002518374A JP2002518374A JP2004506272A JP 2004506272 A JP2004506272 A JP 2004506272A JP 2002518374 A JP2002518374 A JP 2002518374A JP 2002518374 A JP2002518374 A JP 2002518374A JP 2004506272 A JP2004506272 A JP 2004506272A
- Authority
- JP
- Japan
- Prior art keywords
- client
- data
- manager
- data stream
- data object
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/06—Asset management; Financial planning or analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Operations Research (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- Game Theory and Decision Science (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
周期的更新を受ける状態を有するオブジェクトの形態で様々なコンテンツプロバイダから提供される情報を処理する方法およびシステムが開示される。オブジェクトの現在の状態を示すフォーマット済み情報は、ほぼリアルタイムに加入クライアントに送達される。情報マネージャモジュールは、コンテンツプロバイダから未加工データオブジェクトを受け取り、情報をフォーマットし、様々な同報通信データストリーム上で現在の状態の情報を同報通信するように構成される。クライアントマネージャモジュールは、複数のクライアント通信セッションをサポートし、少なくとも1つの同報通信データストリームに接続する。同報通信データストリーム上で受信された現在の状態情報は、クライアントプロファイルで指定される処理規則に従って処理され、特定のクライアントに送られる。
Description
【0001】
(関連出願の相互参照)
本願は、35 U.S.C.§119の下で、2000年8月4日出願の「Real Time Host Infrastructure」という名称の米国仮出願第60/223,397号、および2000年8月22日出願の「Enhanced Information Delivery」という名称の米国仮出願第60/227,162号の優先権を主張するものである。これらの出願の内容全体はどちらも、参照により本明細書に組み込まれる。
【0002】
(発明の分野)
本発明は、着信コンテンツストリームをレンダリングし、成形する方法およびシステムに関する。より詳細には、本発明は、金融プロバイダからの案内に関するデータなどの未加工入力データストリームを処理し、クライアントに配布するのに適した、構造化され妥当性検査された出力データを生成する方法およびシステムに関する。
【0003】
(背景)
金融商品発信元からクライアントへの金融商品情報の電子的配布は、金融サービスプロバイダによって供給される一般的なサービスである。通常、サービスプロバイダは、金融コンテンツプロバイダとクライアントとの間で様々な商品に関する情報を受け渡すコンジットとして振る舞う。そのような情報には、新しい商品の案内、現在価格などの商品属性の更新、および恐らくは、商品を分類する方式の変更が含まれる。
【0004】
多数の商品に関する情報をそれぞれ搬送することができる多数のデータストリームをサービスプロバイダが処理する必要があることはまれではない。例えば、米国債についての情報を含む単一データストリームは通常、数百の異なる商品に関するデータイベントを含む。
【0005】
未加工の金融サービスデータをクライアントに配布するには、様々な技法がある。しかし、現在の技法は、プロバイダを場当たり的に処理することで、労力が必要となり、計算の負荷が高い。具体的には、情報コンテンツを下流側クライアントに配布することができるように情報コンテンツを受け取り、処理するために、ホストは、着信データストリームの特定の構造およびフォーマットに直結する必要がある。その結果、異なる情報源(ソース)からのデータを処理するために別々のシステムが開発された。例えば、あるシステムは未加工の国債データの処理専用であり、別の独立したシステムは、企業の案内に関する未加工データの処理専用の構造を有する可能性がある。このような場当たり的な技法は、ある操作に関しては受け入れられるが、十分にはスケール変更せず、単一の総合的環境に統合することが難しい。
【0006】
加えて、現在のシステムは、そのソースから、関心を持つ様々なクライアントにデータを経路指定するのに適しているものの、従来のクライアントは、高速データ接続でホストシステムに直結されている。より小型のクライアント(業務用および個人向けの両方)が多く存在するようになってきていることと共に、帯域幅が狭く、接続性が間欠的なポータブルコンピュータやワイヤレスコンピュータの普及により、インターネットなどの大規模通信ネットワークを介する通信に固有の不整合の影響を受けにくい、堅固で適応性のあるデータストリームを提供する必要が高まっている。
【0007】
したがって、本発明の目的は、許可された加入者にホストシステムからのリアルタイムコンテンツストリームを配布することができるように、そのリアルタイムコンテンツストリームを処理するように設計された統合インフラストラクチャ製品を提供することである。
【0008】
さらなる目的は、未加工データの複数のストリームをリアルタイムで処理するように構成され、ダウンストリーム処理やクライアントへの配布に適した、フォーマットされ妥当性検査された出力を提供するシステムを提供することである。
【0009】
本発明のさらに別の目的は、様々なソースからの複数のデータのストリームを管理することを可能にし、新しいストリームおよび商品タイプを容易に追加または変更することを可能にするように柔軟かつ容易に適合されるシステムを提供することである。
【0010】
本発明のさらに別の目的は、オファーを下流側サービスに送るのに必要なデータ量を最小にするフォーマットで、妥当性検査されフォーマットされたオファーデータを提供することである。
【0011】
本発明のさらに別の目的は、クライアントが受け取る更新データを確実に最新にすると共に、クライアントがデータを受け取り、処理することができる速度に伝送速度を動的に調節するデータ送達機構を提供することである。
【0012】
(発明の概要)
上記の目的や他の目的は、未加工の金融データストリームを処理し、構造化され妥当性検査された商品案内オブジェクトを生成および配布する本発明の方法およびシステムに従って達成される。このシステムは、リアルタイム情報マネージャおよびクライアントマネージャの2つの主要な構造要素からなる。情報マネージャは、コンテンツプロバイダからの未加工データストリームを処理し、オブジェクトの現在の状態をほぼリアルタイムに表す未加工ストリームから導出された、妥当性検査され構造化されたオブジェクトの同報通信を提供するように構成される。
【0013】
動作の際には、情報マネージャは、少なくとも1つの未加工データストリーム入力上で未加工データオブジェクトを受け取る。未加工データオブジェクトはタイプされ、妥当性検査され、対応するフォーマット済みデータオブジェクトが生成される。オブジェクトの現在の状態は、オブジェクト格納プール中に格納され、さらに、好ましくはオブジェクトタイプに従っていくつかの利用可能なストリームから選択された、特定の同報通信データストリーム上で同報通信される。好ましい実装では、現在の状態は、問題の固有オブジェクトが識別され、前の状態に対するオブジェクト状態の変化が提供される差分形式で同報通信される。オブジェクトタイピング規則およびフォーマット規則を格納するのに好ましいフォーマットも開示される。
【0014】
クライアントマネージャは、同報通信データストリームにそれぞれ接続され、様々な同報通信ストリーム上で示されるオブジェクトの現在の状態をオブジェクトキャッシュ中に維持するように構成された1つまたは複数のオブジェクト状態マネージャからなる。クライアントセッションが、各クライアントとの通信を維持するために提供される。特定の同報通信データストリーム上で搬送されるオブジェクトの状態が変化したことをオブジェクト状態マネージャが検出したとき、オブジェクト状態マネージャは、そのストリームに加入しているクライアントに関するクライアントセッションに向けてイベントを送る。次いでクライアントイベントは、フィルタと、クライアントのプロファイルで指定された他の規則とを評価して、状態の変化をクライアントに送るべきかを決定し、送るべきである場合、状態変化情報を転送し、クライアントに送る。
【0015】
各クライアントは、特定のクライアントに送るべきデータのキューを維持する、関連する送達マネージャを有することが好ましい。ネットワーク伝送時間やクライアントのシステムの性能などの通信メトリックを監視し、それに応じてクライアントにデータを送る速度を調節する。加えて、共通データオブジェクトに関する2つまたはそれ以上の状態変化イベント、例えば証券の価格の変化をクライアントに送るためにキューに入れるときに、オブジェクト状態に対して示される様々な変化を集約して、送るべき状態変化のすべてを含む単一イベントを生成するような集約機能を実装することが好ましい。
【0016】
このシステムのアーキテクチャおよび動作は堅固であり、多種多様なシステムや動作のスケールに容易に適合させることができるので有利である。システムがモジュール式であることにより、様々な入力データストリームを処理する必要に応じて複数の情報マネージャを提供することが可能となる。情報マネージャで使用されるタイピング規則およびフォーマット規則は、新しいデータプロバイダおよびデータタイプを収容するように容易に更新することができる。複数のクライアントセッションマネージャを提供して、多数のクライアントをサポートするのに十分な容量を保証することができ、複数のクライアントセッションマネージャは、様々な情報マネージャからの同報通信データストリームにオンデマンドに接続することができる。さらに、このシステムは、様々なプラットフォーム上で実装することができ、情報マネージャおよびクライアントマネージャは、互いに対して、かつ加入クライアントに対してローカルまたはリモートに位置することができる。加えて、情報マネージャによって出力されるデータは、他のアプリケーションによる使用に適しており、クライアントマネージャは、情報マネージャ以外の情報源によって提供される同報通信データストリームと共に使用するように容易に適合させることができる。
【0017】
本発明の上記の特徴や他の特徴は、本発明の例示的実施形態の以下の詳細な説明と図面を見れば容易に明らかになるであろう。
【0018】
(好ましい実施形態の詳細な説明)
図1を参照すると、許可された加入者にリアルタイムコンテンツストリームを送達し、かつ様々なネットワークを介してホストと加入者との間、および企業と顧客との間のリアルタイムな対話を可能にする統合システム10の高レベルブロック図が示されている。具体的には、システム10は、1つまたは複数のコンテンツプロバイダ12から未加工データストリーム14を受け取り、そのデータストリームをリアルタイムで処理し、次いでネットワーク16を介して関連するオファーおよび他のデータを加入クライアント18に転送するように構成されたリアルタイム情報チャネル11を有する。
【0019】
リアルタイム情報チャネル11は、リアルタイム情報マネージャ30およびクライアントマネージャ32からなる。リアルタイム情報マネージャ30は、未加工データ14の着信ストリームを受け取り、そのデータを処理し、次いで、構造化され、妥当性検査されたコンテンツオブジェクトをパブリッシュするように構成される。次いで、構造化され、妥当性検査されたコンテンツオブジェクトは、下流側プロセスで使用することができる。クライアントマネージャ32は、クライアントカスタムプロファイルを管理し、クライアントが使用できるデータタイプおよびサービスに関する権利付与の方針を実装する役割を果たす。クライアントマネージャ32はまた、クライアントにデータを転送する役割も果たし、好ましくは、コンテンツの送達をリアルタイムに最適化し、かつクライアントのホストシステムへの接続を維持するために、帯域幅および待ち時間の変化、ならびにクライアント装置上の資源利用に動的に適応するように構成される。リアルタイム情報マネージャ30およびクライアントマネージャ32については、以下でより詳細に論じる。
【0020】
システム10はまた、ホストビジネスサービス22と加入クライアント18との間の通信24、24’の両方向フローを容易にする対話サービスチャネル20も含むことができる。対話サービスチャネル20は、サービスマネージャ34およびサービスルータ36からなる。サービスマネージャ34は、取引、販売、オークションなどの様々なビジネスサービス22間の通信を維持する役割を果たし、様々なサービスについて別々のサービスマネージャを使用することができる。サービスルータ36は、メッセージをキャッシュし、加入クライアントと、企業と、ホストシステムとの間の通信を追跡するように構成される。サービスルータ36はまた、クライアントと個々のビジネスサービスとの間のポイントツーポイント接続を確立するための機能を含むサービスマネージャ34とも対話する。システム10とクライアント18との間のネットワーク通信は、HTTPプロトコルおよびHTTPSプロトコルの一時的性質によって引き起こされる制限を克服し、かつホストシステム10と加入者クライアント18との間の仮想永続接続(virtual persistent connection)を実現するように構成されたHTTPトンネリングトランスポートシステム38を使用して行うことが好ましい。トンネリングトランスポートシステム38についてもまた、以下でより詳細に論じる。
【0021】
システム10は、仮想マシン層40を形成する1つまたは複数のJava(登録商標)仮想マシン(「VM」)のコンテキスト内で実装することが好ましい。VM層40の上には、トンネリングトランスポートシステム38およびプロセス管理層42がある。リアルタイム情報チャネル11および対話サービスチャネル20を形成するプロセスなどの個々のシステムプロセスは、プロセス管理層42で動作する。プロセス層42は、VM層(それ自体は複数のマシン間に分散することができる)上で複数のプロセスを配布し、管理し、制御する能力を提供する。他の構成および実装も可能である。
【0022】
リアルタイム情報マネージャ
図2を参照すると、リアルタイム情報マネージャ30の動作の高レベルブロック図が示されている。情報マネージャ30は、様々なコンテンツプロバイダ12から、1つまたは複数の未加工オブジェクトデータストリーム14を受け取る。様々なコンテンツプロバイダをサポートすることができ、各サポータへのデータ接続は、当業者に周知の様々な方式で実施することができる。
【0023】
好ましくは、コンテンツプロバイダは、金融商品案内に関する未加工データを提供し、このような典型的なプロバイダには、財務省(treasuries)、官庁、および企業体が含まれる。未加工オブジェクトデータストリーム14は、様々な商品または案内についての情報を含むデータオブジェクトを搬送する。各データオブジェクトは一般に、オブジェクトを一意に識別することを可能にするキーも含む。未加工データストリーム中に含まれるデータは、機器のタイプごとに異なるものにすることができる。例えば、財務省のストリームは、記述的詳細、価格決定、売買高、あるいは国債、ワラント、証券、または取引、販売、スワップ、もしくは交換することができる他の証書に関する任意の他のデータを含むことができる。国債は、内国債、または日本国債などの外国債を含むことができる。
【0024】
代替データストリームもサポートすることができる。そのようなストリームは、連続的に監視することができ、周期的に更新され、更新の一部または全部が1つまたは複数の監視者に通信されるべきである情報に関するデータオブジェクトを含むことが好ましい。一実施形態では、データストリームには、航空券、ホテルの部屋などの価格および量などの様々な非金融商品または非金融案内の可用性が含まれ、処理後のデータは、とりわけ消費者や産業界の代表に配布することができる。他の代替ストリームには、電子オークションまたはオンラインオークション、様々な商品およびサービスに関するスポットマーケット価格、様々なシステムの測定された状況または性能が含まれる。このシステムによる処理および配布に適した様々な別のデータストリームを当業者は理解されよう。
【0025】
情報マネージャ30は、未加工オブジェクトデータストリームを処理し、各オブジェクトについての特定の商品タイプを識別するように構成される。一般に、所与のオブジェクトに関連する固有の属性を定義するオブジェクトタイピングデータ52を含む規則データベース50が提供される。情報マネージャ30がオブジェクトを受け取るとき、例えば確実にオブジェクトのコンテンツに所定の基準または制限を遵守させることによって、様々な規則を適用し、オブジェクトタイプを決定し、オブジェクトを検証する。当業者には周知であろうが、データストリーム中のオブジェクトタイプを識別し、検証するのに使用することができる様々な技法が存在する。恐らくは数百の異なるオブジェクトを含む複数のデータストリームを処理し、オブジェクトタイプシグネーチャを容易に作成および変更することを可能にするのに非常に適した好ましい技法を以下で議論する。
【0026】
オブジェクトのタイプを識別し、オブジェクトを検証した後、オブジェクトは様々なシステム要件に従ってフォーマットされる。フォーマットされるオブジェクトの構造および様々なフォーマット規則54は、規則データベース50に格納することができる。未加工データオブジェクトのフォーマットは、下流側アプリケーションにとって重要ではないフィールドの除去、識別したオブジェクトタイプなどの付加的データフィールドの追加、データフィールドを表す方式を調節することなど、多くのアクションを含むことができる。
【0027】
本発明の特定の態様によれば、オブジェクトを受け取り、タイプし、適切にフォーマットした後、フォーマット後のオブジェクトが構造化オブジェクトプール56に格納され、好ましくはオブジェクトタイプに従ってセットとして格納される。オブジェクトプール56は、入力データストリームによって搬送される各タイプのすべてのオブジェクトの現在の状態の「マスタリスト」と見なすことができる。オブジェクトは、未加工データストリーム中に含まれるキーによって一意に識別することができ、好ましくは、このキーは、プール56にオブジェクトを格納し、かつプール56中のオブジェクトにアクセスするのに使用する。受け取ったオブジェクトがプール中にない場合、新しいエントリが作成され、オブジェクトが格納される。加えて、フォーマット済みオブジェクトデータがデータストリーム58上で同報通信される。オブジェクトの固有の各タイプに対して別々のデータストリームを提供することが好ましい。データストリーム58は下流側アプリケーション、具体的にはクライアントマネージャ32が受け取り、クライアントマネージャ32は、オブジェクトを格納し、処理し、適宜クライアントに転送する。
【0028】
処理する多数のデータオブジェクトおよびタイプが存在するとき、情報マネージャ30からクライアントマネージャ32に流れるリアルタイムデータの量は非常に多くなる可能性があることが理解されるであろう。データフローの量を低減するために、本発明の別の態様によれば、フォーマット済みデータオブジェクトストリーム58は、一般に差分オファーデータを含む。具体的には、情報マネージャ30がオブジェクトを受け取ったとき、オブジェクトプール56を照会し、同じキーを有するオブジェクトがプール56中に既に存在する場合、受け取ったオブジェクトと、格納されるオブジェクトとの差分を決定する。完全なフォーマット済みオブジェクトをクライアントマネージャ32に同報通信する代わりに、差分だけが送られる。この差分データを下流側プロセスで使用することができ、このプロセスによって格納したオブジェクトの前のバージョンが変更され、更新後の情報が反映される。次いでプール56中に格納されたオブジェクトが更新され、新しく受け取ったオブジェクトが反映される。通常は、価格など、オブジェクトデータの小部分だけが、所与の時間で変化する。その結果、データを損失することなく、同報通信される差分データの量が、全オブジェクトデータよりもかなり小さくなる。
【0029】
現在のデータオブジェクトと前のデータオブジェクトとの差を決定するために、当業者に周知の様々な技法を使用することができる。使用する具体的な方法は、設計や実装の問題に依存する。このような問題には、データベースまたは記憶システムサポーティングプール56のフォーマット、プール中に格納されたオファーの構造、およびプログラミング環境などの要因が含まれる可能性がある。
【0030】
受け取ったオブジェクトがプール56中に存在せず、新しいオファー内に存在する場合、オブジェクト全体が同報通信される。同様に、オブジェクトが分類され、データタイプに関係するデータストリーム上で同報通信されるとき、受け取ったオブジェクトがプール56中のオブジェクトと同じキーを有するが異なるタイプである場合、情報マネージャ30は、プール56中の古いオブジェクトを削除し、新しいオブジェクトの異なるタイプに従って新しいオブジェクトを格納することが好ましい。次いで全オブジェクトデータが、新しいタイプに対して適切なデータストリーム58上で同報通信される。さらに、特に現ストリームがそのオブジェクトについての情報を前に搬送したストリームと異なるとき、オブジェクトタイプの変化を示す通知を同報通信することができる。
【0031】
クライアントマネージャ32などの、差分同報通信チャネル58を受信している可能性のある下流側プロセスは一般に、様々なオブジェクトの現在の状態のコピーを維持し、差分データに従ってそのコピーを更新するであろうことが理解されるであろう。一実施形態では、情報マネージャ30が所与のオブジェクトタイプについてのデータストリームに加入する要求をそのようなプロセスから受け取ったとき、情報マネージャ30は、(現在の状態の)プール56中のそのタイプのすべてのオブジェクトの全コピーを加入者に送ることができる。次いで加入者は、このタイプのオブジェクトのこの「スナップショット」を格納することができ、その後で、受け取った差分データに従ってオブジェクトを修正することができる。
【0032】
より好ましい実施形態では、情報マネージャ30は、特定のどのシステムが同報通信を受け取っているかについての具体的な知識を必要とせずに、様々なサポートされるデータストリームを同報通信することができる。このような場合、情報マネージャ30は、特定のオブジェクトまたは1組のオブジェクトの現在の状態のスナップショットを求める要求に応答し、要求されたデータを適切なデータチャネル上で返す機能を含むことができる。このチャネルは、同報通信データチャネルとは分離していることが好ましい。あるいは、クライアントマネージャ32(または他の加入者)と構造化オブジェクトプール56との間にデータリンクを提供し、クライアントマネージャ32が恐らくは中間データベースアクセスオブジェクト(図示せず)を介して自動的にスナップショットデータを「オンデマンド」に取り出すことを可能とし、それによってリアルタイム情報マネージャ30が加入要求に応えなくてもよいようにすることもできる。クライアントマネージャ32にオブジェクトプール56のコンテンツへの直接アクセスを与えるか、それともクライアントマネージャ32が情報マネージャ30または別のモジュールによって処理される要求を介してオブジェクトプール56にアクセスするかについての設計の選択は、システム要素間で確立することができるデータリンクのタイプ、様々な要素がどのように密接に結合しているか、サポートすることができる同時データベース接続の数および頻度、ならびに当業者に周知の他の要因など、システム実装の詳細に依存する。
【0033】
スナップショットデータはオブジェクトデータストリーム上で加入者に同報通信することができるが、これにより同報通信チャネル全体が減速する可能性がある。したがって、オブジェクトタイプセットスナップショットは、別々のチャネル上で送ることが好ましい。移行時間の間、セットが加入者によって完全に処理される前に、セット内のオブジェクトに対する更新を受け取ることができる。この状況では、後続の伝送を加入者に送ることができる。あるいは、加入者は、加入プロセスの間に受け取った差分更新をキューアップ(queue up)し、受け取ったスナップショットデータが利用可能となった後、受け取ったスナップショットデータにその差分更新を適用することができる。
【0034】
図3を参照すると、リアルタイム情報マネージャ30についての好ましいアーキテクチャのブロック図が示されている。図示されているように、情報マネージャは、3つの主要なモジュール−トランスレータ60、オファープロセッサ62、およびオファープールマネージャ64を備える。トランスレータ60は未加工データストリーム14を受け取り、名前−値対のセットを含む未加工イベント70を生成する。トランスレータ60はJava(登録商標)クラスとして実装することが好ましい。この実装は、未加工データストリームからのデータ属性の抽出をほぼ自動化し、新しいデータオブジェクトタイプの識別を単純化するので有利である。次いでこの情報を使用して、新しいタイプを識別するのに使用する規則を定義することができる。
【0035】
次いで未加工イベント70はオファープロセッサ62に渡される。オファープロセッサは、データベース50内の規則を使用して、未加工イベントを識別し、または類別する。イベントタイプを決定した後、そのイベントのタイプに対して適切な妥当性検査規則、フィルタリング規則、および強化規則を取り出す。この規則を使用して、未加工イベントから関連するデータ属性を選択し、正しい商品タイプを妥当性検査し、商品ラベルを構築し、転送すべきでないイベントをフィルタする。次いでオファープロセッサ62は、未加工データ中の場合によっては一意でないキーから導出される商品タイプ識別子および固有キーと共に、規則によって指定される属性を含む、外部イベントまたは処理後イベント72を生成する。
【0036】
外部イベント72はオファープールマネージャ64に渡される。オファープールマネージャ64は、未加工データストリームで遭遇する特定のタイプの別々のインスタンスごとに、プール56中にその商品タイプの別々のインスタンスを自動的に作成するように構成される。未加工データから導出される固有キーは、外部イベントをオファープール56中のオファーインスタンスにリンクするために使用される。オファープールは、クライアントに同報通信したすべての商品案内の現在の状態を含む。新しいイベントが更新後の情報を含む場合、オファープールマネージャ64は変更を識別し、その変更が下流側プロセスで使用されるフィールド中にある場合、その変更を同報通信する。(外部イベントによって表される)商品案内がオファープール56中に存在しない場合、オファープールマネージャ64は完全な商品案内をプール56に追加し、差分ストリーム58上で、またはより大きなデータ転送用に構成された2次データ経路(図示せず)を介して、完全な商品案内をクライアントマネージャ32にも完全に渡す。
【0037】
下流側サービスが差分更新メッセージを逃したときを検出する際に下流側サービスの助けとするために、シーケンス番号が各オファーと関連付けられ、後続の更新とシーケンス番号がその更新と共に同報通信される。商品インスタンスが初めてオファープール56に追加されるとき、商品インスタンスは、シーケンス番号0に割り当てられる。プール56中のオファーのインスタンスが外部イベントに基づいてオファープールマネージャ64によって更新されるごとに、シーケンス番号は1だけ増分される。シーケンス番号は差分更新メッセージと共に同報通信され、クライアントマネージャ32はシーケンス番号を使用して、オブジェクトのクライアントマネージャ32のローカルコピーが最新であることを検証することができる。更新メッセージに関するシーケンス番号が、関連するオブジェクトのローカルに格納されたバージョンに関するシーケンス中の次の番号ではないことをクライアントマネージャ32が検出した場合、1つまたは複数の更新メッセージを逃してしまっており、クライアントマネージャは、商品タイプ属性の全セットを要求して商品案内イメージをリフレッシュすることができる。
【0038】
上記で論じたように、未加工イベントのタイプを識別し、それを処理して外部イベントを生成するための規則を実装することができる様々な方式が存在する。好ましい実装では、オブジェクトタイピングシステムデータ66はツリーフォーマットで編成される。その単純化した例示を図4に示す。
【0039】
図4を参照すると、少なくとも1つのトランスタイプツリー103が接続されたルートノード102を有するタイプツリー100が与えられている。タイプツリー100は、下にあるトランスタイプツリー103で定義されるすべてのタイプノードおよび分岐構造の集合である。タイプツリー中の各リーフノードは別々のタイプを定義し、各タイプは、タイプ属性を定義するツリー状構造を有する。タイプノードへの分岐構造は、情報ストリーム加入の基礎を定義し、ノードのコンテンツは、情報ストリームの構造を定義する。
【0040】
より具体的には、各トランスタイプツリー103は、特定の未加工データ入力ストリームと関連し、識別ストリームノード104によってルートノード102に接続される。各ストリームノード104には、それぞれのデータストリーム上で搬送することができる特定のタイプのオブジェクトを定義する少なくとも1つのリーフノード106が接続される。タイプリーフノード106は、未加工イベントのタイピングおよび妥当性検査のどちらにも使用される規則を定義する組込み属性を有する。(この属性は、タイプリーフノードから派生するサブノードとして添付することもできる。)タイプノード106はまた、対応する外部イベントを生成するのに使用するフィルタリング規則および強化規則など、タイプリスペクティブオブジェクトタイプのコンテンツ構造も定義する。ストリーム中の様々なタイプを編成する助けとするために、ストリームノード104とそのタイピングリーフノード106との間に、1つまたは複数のレベルの中間経路ノード(図示せず)を含めることもできる。必須ではないが、中間ノードは、ストリーム中の派生リーフノードの各タイプを他のタイプと区別するのに使用する、関連するタイピング規則も有することができる。
【0041】
特定のタイピング規則は、未加工イベント内に存在する名前−値対に適用することができる論理式の形であることが好ましい。これらの規則は、適切なトランスタイプツリー103中のノードを横断し、適切な規則解析エンジンを適用することによって評価することができる。トランスタイプツリー103中で定義されるタイプのいずれにも一致しないオブジェクトに対して、「デフォルト」タイプを適用することができる。このような未知のタイプの存在は、新しいタイピング規則を定義する必要がある可能性があることを示す警報メッセージをトリガするのに使用することができる。
【0042】
例えば、図4のタイプツリー100は、(ストリームノードX 104で示されるように)一方が未加工データストリームXに関連し、他方が未加工データストリームYと関連する2つのトランスタイプツリーを含む。ストリームXは、オブジェクトタイプAおよびBを識別するための規則、ならびに未加工イベントを処理するための様々な属性を含む、これらのタイプに関するタイピングノードを有する。ストリームYは、タイプQおよびRの未加工イベントを識別および処理するための規則を含むタイピングノードを有する。商品タイプは、ストリームの名前およびタイプノードを参照することによって一意に識別することができ、例えばタイプAの商品は、商品「X.A」として識別することができる。
【0043】
図3を参照すると、図示される未加工イベント70は、「Descr=A」を含むいくつかの名前−値対を含む。このイベントが未加工データストリームX上に存在し、ノードAが規則「Descr==A」に従ってタイプを定義する場合、この未加工イベントは、商品または案内タイプ「X.A」として分類される。妥当性検査規則も適用することができる。例えば、ある規則では、タイプX.Aのオブジェクトが規則「Amt>0」を満たさなければならないと指定することができる。タイプX.Aのオブジェクトを例えばAmt=0と共に受け取った場合、そのタイプX.Aのオブジェクトは有効とはみなされず、イベントの後続の同報通信のブロッキング、およびデータプロバイダへの通知などの適切なアクションが行われる。ノードAに関連する属性およびフォーマット規則は、得られる外部イベント72のコンテンツ、およびデータのフォーマット方式を指定する。この例では、イベント72は、Descr、Amt、およびKeyの名前−値対だけを含む。「office」および「color」に関する値は省略される。フォーマット規則はまた、下流側プロセスがイベントタイプを再決定する必要がないように、イベントが「Type=X.A」名前−値対の追加によって強化されることも示す。
【0044】
データストリームをシステムで処理できるようになる前に、データストリームをタイピングシステムに対して宣言しなければならないことが理解されるであろう。好ましい実施形態では、新しいストリームを導入するプロセスは、ストリームを定義し、形成し、各タイプに構造化することを可能にし、かつタイピング規則および妥当性検査規則を組み込み、コンテンツおよび規則構文をチェックし、タイプツリーを構築することを可能にする特別なタイプ定義ツールまたはアプリケーション76(図3参照)によって行われる。好ましいタイプ定義ツールは、着信データがソフトウェア操作を介してどのように解釈されるかをユーザが示すことを可能にするグラフィカルユーザインターフェースを使用する。このようにして、それぞれが別個の未加工データのストリームと関係する複数のデータフォーマットを受け取り、処理することができる。
【0045】
好ましくは、トランスレータ60は、入力データストリーム中に含まれる様々なデータオブジェクト中に存在するデータ−値対の組を示す出力を供給し、この出力はタイプ定義ツール76に供給される。次いで、トランスレータ60によって供給される情報は、タイプ定義ツール76で使用することができ、適切なタイピングノードをその関連するタイピング規則および妥当性検査規則で定義する目的で、オペレータが未定義オブジェクトからの様々な名前対を容易に識別し、その様々な名前対から選択することが可能となる。
【0046】
リアルタイム情報マネージャのためのこの方法およびシステムは、容易に拡張でき、カスタマイズできる、堅固なデータシステムを提供するので有利である。このような実施形態を示し、このシステムの柔軟性およびスケーラビリティを示す図を図5に示す。図5では、3つのクライアントマネージャ32.1〜32.3が、2つのリアルタイム情報マネージャ30.1、30.2からの様々なデータストリーム同報通信に加入している。加入したデータ接続は直接データ接続とすることができ、あるいはイントラネットまたはインターネットなどの介入ネットワークを介して、あるいは当業者に周知の他の手段によって接続することができる。同じプラットフォームまたは異なるプラットフォーム上で動作するリアルタイム情報マネージャ30の複数のインスタンスは、多数の高帯域幅データストリームを処理するように要求されるものとして実装することができる。出力データストリームの編成された性質により、接続されるクライアントマネージャ32が所与のタイプのデータオブジェクトを選択的に受け取ることが可能となり、データ同報通信の非限定的な性質により、複数のクライアントマネージャ32をシステムに接続し、新しいクライアントマネージャ32を追加して、多数のクライアントをサポートするために容量を追加することが簡単になる。
【0047】
クライアントマネージャ:
クライアントマネージャ32(図1参照)は、クライアントおよび装置の広範なアレイのために、リアルタイム情報マネージャ30によって供給されるリアルタイム情報ストリームなどのデータストリームを、そのデータのカスタマイズされ、管理されたビューにマッピングする機構を提供する。クライアントマネージャ32は、外部セッションに対してローカルプロキシとして動作して、リモート接続およびリモート装置が首尾よくサポートすることができる速度で、クライアントが加入する一貫したビューのために必要なコンテンツだけを転送することによってデータの送達を最適化するように構成される。具体的には、クライアントマネージャ32は、以下の3つの主要機能をサポートするように構成される。その3つの主要機能とは、(1)クライアントセッションと、参照、許可、ビュー、加入、およびフィルタを含むその関連するプロファイルの作成および管理、(2)1つまたは複数のリアルタイム情報管理プロセッサ30によってパブリッシュされるコンテンツストリームにオンデマンドに加入または接続し、加入した各ストリーム上の様々なオファーに関する現在の状態オファープールキャッシュを維持し、次いで加入したクライアントセッションの組にデータを送達するときにそのプールを使用すること、および(3)様々なクライアントへの、加入したコンテンツと、関連するリアルタイム更新の送達を適宜調整することである。
【0048】
クライアントマネージャ32のアーキテクチャは、複数のデータソースと共に使用することができる。しかし、クライアントマネージャは、リアルタイム情報マネージャ30によって生成される差分データストリームを受け取り、かつ情報マネージャ30で格納されたデータへの少なくとも限定されたアクセスを有することが好ましい。
【0049】
クライアント18は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ソケットなどの適切なネットワークプロトコルを使用して、クライアントマネージャ32に接続することができる。HTTPを介してインターネットを通じて接続されるクライアントは、HTTPと、クライアントマネージャ内に実装されるプロキシソケットプロトコルとの間の透過的プロトコルブリッジを提供する拡張情報送達(Enhanced Information Delivery)HTTPトンネリングトランスポート層38を通過することが好ましい。クライアントマネージャ32自体は一般に、直接ソケットを介するローカルイントラネット上でセッション通信を維持し、またはHTTPを介してインターネットを介してセッション通信を維持するなど、セッション通信を維持する方法には無関係である。
【0050】
図6を参照すると、クライアントマネージャ32の好ましいアーキテクチャが示されている。クライアントマネージャ32は、クライアントセッションマネージャ150、少なくとも1つのオブジェクト状態マネージャ152、および少なくとも1つのクライアントセッション154からなる。クライアントセッションマネージャ150は、クライアントセッションと、関連するクライアントプロファイル158とを作成および管理するように構成される。クライアントマネージャ32に最初に接続する際、クライアントは一般に、固有のプロファイルキー(例えばユーザ名)を使用してクライアント自体を明らかにする。クライアントセッションマネージャ150は、このキーに一致する以前に保存したプロファイルをクライアントプロファイルリポジトリ158からロードするか、または新しいクライアントが使用を開始するための新しい空のプロファイルを作成する。クライアントプロファイルは、一般に同義でオブジェクトフィルタリング規則、オブジェクト評価規則、または単にオブジェクト規則と呼ばれる、ストリーム中のオブジェクトに作用する特定の規則およびフィルタとして、特定のクライアントが加入したオブジェクトタイプまたはデータストリームに関する様々なデータを格納するのに使用することができる。このプロファイルは、クライアント18とクライアントマネージャ32との間の通信リンクを維持する役割を果たし、かつ加入選択および他のプロファイルデータに従ってデータオブジェクトおよびオブジェクト更新をクライアントに送る役割も果たすクライアントセッション154の動作を構成するのに使用される。
【0051】
1つまたは複数のオブジェクト状態マネージャ152は、クライアントが加入しているストリーム中のオブジェクトの現在の状態を維持し、オブジェクトが状態を変更したときを示すように構成される。状態変化を検出する方式は、少なくとも部分的に、入力データストリームのフォーマットと、入力データストリームが差分データイベント(好ましい)を含むか、完全なデータセットを含むか、それとも中間フォーマットを含むかどうかに依存する。
【0052】
クライアントが加入したストリームからのオブジェクトの状態変化に応答して、クライアントセッション154はその変化を評価して、その変化がクライアントに転送すべきタイプであるかどうかを判定する。ソフトコード化フィルタやカスタムプログラム式ビジネス論理などの評価規則は、クライアントのプロファイル内に維持することが好ましい。オブジェクトをクライアントに渡すべきであることをフィルタリング規則および評価規則が示す場合、適切な更新アクションが送達マネージャ156に渡され、その更新アクションが送達マネージャ156でキューに入れられ、必要なら、その後でクライアントにプッシュされる。
【0053】
様々な送達技法が利用可能である。各クライアントはそれ自体の専用送達マネージャ156を有することが好ましい。専用送達マネージャ156は、それぞれのクライアントイベントキュー165を維持し、例えば利用可能な帯域幅、ネットワーク遅延、およびクライアント応答時間を補償する必要に応じて速度を調節して、適切な速度で更新イベントをクライアントにプッシュする。その結果、リアルタイムデータの送達は、クライアントが加入したオブジェクトプールの一貫したビューのために必要なコンテンツだけを、リモート接続および装置が首尾よくサポートすることができる速度で転送することによって最適化される。
【0054】
上記で論じたように、オブジェクト状態マネージャ152は、上流側ソース、好ましくはリアルタイム情報マネージャ30からオブジェクトコンテンツデータを受け取り、ストリームによって搬送されるすべてのオブジェクトの現在の状態のコピーを例えばオファープールキャッシュ160中に維持するように構成される。加えて、オブジェクト状態マネージャ152は、オファープールキャッシュ160内のオブジェクトに関する変化を検出し、このオブジェクト(またはオブジェクトタイプ)を監視するクライアントが更新を要求できることを示すイベントまたは通知をパブリッシュし、その結果適切なクライアントセッション154がアクションを開始できるようにさらに構成される。
【0055】
クライアントセッション154がクライアントに対して確立されるとき、クライアントセッションマネージャ150は、例えばクライアントプロファイル内に反映されるように、クライアントが加入したデータストリームにオブジェクト状態マネージャ152が確実に接続されるようにする。クライアントマネージャ32は、各アクティブクライアントセッション中のクライアントプロファイル内の加入の集合に従ってオンデマンドにストリームに加入する。現在監視されていないコンテンツストリームへのアクセスをクライアントセッションが要求するとき、クライアントセッションマネージャ150は、適切なオブジェクト状態マネージャ152によってそのストリームへの加入を開始する。
【0056】
新しいコンテンツストリーム加入が開始されるとき、オブジェクト状態マネージャ152は、ストリームの源でリポジトリ/データベースから初期ストリーム状態を取り出すための要求を発行し、この情報を使用してそれぞれのオファープールキャッシュ160を初期化する。オブジェクト状態マネージャ152はまた、適切な通信リンクを確立してコンテンツストリーム58上のデータを受け取り、着信ストリーム上のオブジェクトの状態の監視を開始する。クライアントマネージャが加入するコンテンツストリームは、一続きのイベントからなることが好ましい。
【0057】
オブジェクト状態のスナップショットが最初に送達され、または得られ、追加、削除、および更新などの状態に対する変更がその後で受信される。ストリーム中のオブジェクトに対する変更は、関心(interest)を登録したクライアントセッションにパブリッシュされる。2から3日など所定の期間、関心が登録されていないストリームはパージすることが好ましい。
【0058】
単一のオブジェクト状態マネージャ152、および関連するオファープールキャッシュ160を確立して、すべての加入したストリーム上のオブジェクトの状況を監視および維持することができるが、複数のオブジェクト状態マネージャ152をサポートして、それぞれが単一の入力ストリームを監視することが好ましい。同様に、各クライアントは、それ自体の専用クライアントセッションと、関連する送達マネージャを有することが好ましい。その結果、クライアントマネージャ32は、複数のクライアントセッションを有することができ、複数のオブジェクト状態マネージャがすべて同時に動作する。このような多重スレッド環境を図7に示す。並行するオブジェクト状態マネージャ152およびクライアントセッション154の数は、ホスティングマシンの速度および資源だけによって制限されることが理解されるであろう。複数のクライアントマネージャプロセスが、マシンのファーム全体にわたって動作し、潜在的には任意の数のクライアントをサポートする非常にスケーラブルな環境をサポートすることができる。
【0059】
図8を参照すると、オブジェクト状態マネージャ152の好ましい実装が示されている。各オブジェクト状態マネージャ152は、関連するオブジェクトイベントキャッシュ160と、監視されるストリームによって搬送されるオブジェクトに関する変化の通知を受け取るべきプロセスを示すテーブル164を有する。一般に、このようなプロセスは様々なクライアントセッションである。しかし、イベントは他のプロセスに対しても発行することができる。
【0060】
データストリームに加入するために最初の要求を行うとき、クライアントセッションマネージャ150は、そのストリームを監視するためにオブジェクト状態マネージャ152のインスタンスを開始する。クライアントには、クライアントが加入することができるすべてのストリームを示す情報(例えばクライアントプロファイルまたは他の場所の情報に従って使用制約を受ける対象)を与えることが好ましい。この情報は、クライアントセッションマネージャ150により、接続されるリアルタイムマネージャ30上に存在するタイピングツリーデータからタイプリーフノードを抽出することによって容易に決定することができる(図3〜4参照)。タイピングツリー66のコピー66’は、このデータへのアクセスを単純にするためにクライアントマネージャ32で維持することができる。
【0061】
オブジェクト状態マネージャ152が最初に開始するとき、監視すべきデータストリーム上で搬送されるオブジェクトの現在の状態のスナップショットが得られ、それぞれのオブジェクトキャッシュ160を初期化するのに使用される。このプロセスの助けとするために、状態ディスパッチモジュール170を提供して、様々なオブジェクト状態マネージャ152.1〜152.Nによる、リアルタイム情報マネージャ30によって維持されるオファープール56などのオブジェクトデータソースデータベースへのアクセスを調整する。
【0062】
オブジェクト状態マネージャ152からの要求を受け取ったとき、状態ディスパッチモジュール170は、それぞれのリアルタイム情報マネージャ30中のオファープール56から適切なオブジェクトデータを得る。次いでこのデータを使用して、要求側オブジェクト状態マネージャ152についてのオブジェクトキャッシュ160を初期化し、オブジェクト状態マネージャはその結果の通知を受ける。状態ディスパッチモジュール170に複数の要求を発行することが可能となるように、状態要求キュー172を設け、資源が利用可能となったとき、各要求を処理することができる。
【0063】
オファープール56からオブジェクトデータを得るために様々な技法を利用することができる。好ましい実装では、オファープール56は、状態ディスパッチモジュールによる、格納されたオブジェクトデータへの直接アクセスが可能となるように実装される。オブジェクトデータを取り出すための他の技法も使用することができる。他の技法の適合性は、システムを実装する際に使用する利用可能な通信チャネルおよびデータベース技術に依存する。
【0064】
妥当なスループットを実現し、同時に状態ディスパッチモジュール170による同時アクセスの数も制限するために、データアクセススレッドプールを設け(図示せず)、オブジェクト状態マネージャから要求されるデータを処理するようにプール中の各スレッドを構成することが好ましい。スレッドが利用可能となったとき、スレッドは、要求キュー172上の次の要求を処理する。
【0065】
オブジェクトキャッシュ160を初期化した後、オブジェクト状態マネージャ152は、それぞれのデータストリームの監視を開始する。着信データは差分形式であることが好ましく、ストリーム上のデータオブジェクトを受け取る際、固有オブジェクトキーを使用して、オブジェクトキャッシュ160中の対応するオブジェクトを指示通りに更新する(非差分データの場合、オブジェクト状態マネージャは、受け取ったオブジェクトがキャッシュしたバージョンと異なっているかどうかを判定し、次いで、場合によっては、変更のタイプが後続のアクションを必要とするものかどうかを判定する機能をさらに含むことができる)。ストリーム上で差分オブジェクトを受け取ったときなど、オブジェクト更新を検出したとき、オブジェクトイベントを発行し、加入者リスト164に示される通りに、すべての加入クライアントに向けて送る。オブジェクトイベントの目的は、特定のデータオブジェクトに関してある種の変更が行われたことを様々なクライアントセッションに通知し、それによってこの変更をクライアントに転送するかどうかについての決定を行うことができるようにすることである。オブジェクトイベントは、オブジェクト自体の全体、(例えばオファープールキャッシュ中の)オブジェクトへのポインタ、オブジェクトのどの側面が変化したかについての表現、またはこの情報へのポインタを含むことができる。
【0066】
オブジェクト状態マネージャ152ごとに更新キュー162をさらに設け、ストリーム上で受け取ったオブジェクトに作用を与えることができるまで、オブジェクトを一時的に格納することができる。オファープールのスナップショットの要求と、後続のキャッシュ初期化との間の期間に、データストリーム上で受け取ったオブジェクトを格納するためにも更新キュー162を使用することが好ましい。キャッシュを初期化した後、キューの内容がキャッシュに加えられる。
【0067】
一般に、ストリームは、そのストリームに加入したクライアントセッションがアクティブであるとき(またはクライアントが加入していない状態に入った後の限定された期間)にだけ監視される。しかし、オブジェクト状態情報をクライアントにより迅速に提供することができるように、加入クライアントが存在しなくても、1つまたは複数の選択したストリームを連続的に監視することが有利な環境が存在してもよい。
【0068】
図9を参照すると、クライアントセッション154と、図6の送達マネージャ156の好ましい実装とを示し、クライアント18上に常駐するシステムの高レベルビューをさらに示すブロック図が示されている。クライアントセッション154および送達マネージャ156の動作をさらに議論する前に、クライアントシステム18の好ましい実施形態のアーキテクチャおよび動作を簡単に議論することが有益である。
【0069】
好ましい実施形態では、クライアント18上で動作するソフトウェア190は、クライアントが加入しているデータストリーム中の、クライアントにとって関心のある様々なオブジェクトの現在の状態のコピーを維持する。オブジェクト状態は、クライアントシステム上に存在する、加入したストリームオブジェクトプール194中に含まれることが好ましい。オブジェクト状態マネージャ152の動作と同様に、クライアントが最初にデータストリームに加入するとき、そのデータストリーム中のオブジェクトのスナップショットが取り出され、任意のフィルタ、規則、または定位置にある可能性のある他の論理によって制約され、クライアント18に送達され、クライアントのオブジェクトプール194に格納される。好ましい実装では、状態ディスパッチモジュール170(図8参照)は、クライアントセッションマネージャ150または様々なクライアントセッション154からのそのようなデータ要求を処理するように構成される。少なくとも1つの加入クライアントを有するすべてのデータストリームは、ストリーム中のオブジェクトの現在の状態を維持する、関連するオブジェクト状態マネージャ152を有するべきであるので、状態ディスパッチモジュール170は、要求された情報を様々なオブジェクトキャッシュ160から直接取り出すことができ、クライアントセッションマネージャ150および/または専用クライアントセッション154を介してデータをクライアントに返すことができる。初期オブジェクトスナップショットを取り出した後、クライアントソフトウェア190は、クライアントでクライアントマネージャ32から取り出したイベントに従ってオブジェクトおよび関連するデータを変更する。
【0070】
クライアントシステム上でオブジェクトを編成し、かつ、どのオブジェクトを所与のクライアントに送達すべきか、そのオブジェクトをクライアントどのように編成し、閲覧すべきか、ならびに他の機能を(ユーザのプロファイルで)指定するのに、様々な技法を使用することができる。クライアントのユーザプロファイルは一般に、データストリーム加入を指定し、かつそのストリーム中のオブジェクトをどのようにフィルタリングし、操作し、クライアントシステム18上に表示するかに関するプリファレンスを定義する。この情報は、フォルダのデータコンテンツを記述する1組の属性と、それを操作する方法と、それを視覚的に表す方法とをそれぞれ含む1つまたは複数のフォルダをクライアントプロファイルが含むフォルダパラダイムに従って編成することが好ましい。
【0071】
最も好ましい実施形態では、フォルダは以下の属性を含む。
(a)クライアント側とサーバ側の両方のフォルダを表すJava(登録商標)クラスを定義し、属性の継承に関する任意選択の親関係をさらに定義することができる構成データおよび初期化データ。
【0072】
(b)フォルダがリアルタイムデータを受け取る1つまたは複数のコンテンツストリームへの加入。
【0073】
(c)例えば適切な規則ベースの言語で指定された論理規則のタイプ、名前、アプリケーションに従って、データストリームからのオブジェクトを制約し、フィルタリングするコンテンツ制約および/またはフィルタ。
【0074】
(d)フォルダまたは特定のフォルダ関係の機能(例えばオンライン取引)へのユーザアクセスを制限する許可。
【0075】
(e)データをどのように表示すべきかを指定するフォーマット規則、表示の順序を示すソート規則、ならびにフォント、サイズ、および色を含む様々な視覚特性などの表示属性。
【0076】
様々なクライアントフォルダの定義属性は、所与のクライアントについての、並行する、または経時的な複数のセッションにわたって持続できるように、クライアントプロファイル158の一部としてクライアントマネージャ32で保存することが好ましい。したがって、図9に示すように、クライアントマネージャ32は、クライアントによって定義される様々なフォルダ192に一般に対応するフォルダイメージ180を有することになる。イメージ180はクライアントフォルダ192の厳密な複製である必要はなく、どちらのセットも実装条件に関して適宜追加のデータを含むことができることに留意されたい。大まかには、クライアント側機能は、様々なオブジェクトおよびデータの提示および表示を対象とし、クライアントマネージャ機能は、どのデータをクライアントに提供すべきかを決定するのに使用するデータおよび規則を評価することを対象とする。その結果、クライアント側フォルダ192は、実質上クライアントで、現在のフィルタおよび制約のコピーを含むことができ、その結果クライアントは、通常はクライアントによって実行されない新しい規則を閲覧、編集、および作成することができる。したがって、そのような規則をクライアントで格納および提示する形式は、クライアントマネージャバージョン180に存在する実行可能バージョンとは異なる可能性がある。
【0077】
クライアントがフォルダ192を「オープン」するとき、クライアントソフトウェア190は、フォルダおよびそのコンテンツを定義する加入およびフィルタに作用し、個別のコンテンツ項目の表示を作成し、オブジェクトプール194から特定のオブジェクトデータを抽出する。オブジェクトデータはユーザのフォルダ中に含まれていると見なすことができるが、恐らくは異なる方式で、または異なる条件の下で表示される同じオブジェクトが、複数のフォルダ中に出現する可能性がある。好ましくは、所与のフォルダ中に含まれるオブジェクトは、オブジェクトキーに従って識別され、次いでオブジェクトキーは、オブジェクトが表示されるときに、必要に応じてオブジェクトプール194から実際のオブジェクトデータを取り出すのに使用することができる。
【0078】
様々な編成上の仕様および表示の仕様に加えて、ユーザプロファイルまたはフォルダは、加入したデータストリーム中のどのオブジェクトがクライアントに渡されるか、ならびに、どんな条件の下で、オブジェクトをどのようにどこに表示すべきかを定義する制約およびフィルタを配置する定義済み規則を含むことができる。例えば、アメリカ証券取引所(「AMEX」)上にリストされるすべての株式を含むストリームに加入するクライアントは、「技術系の会社」など特定のカテゴリ内の株式に関するオブジェクトだけの送達を指定するようにフィルタを定義することができる。クライアントは、例えばオブジェクトの出来高が特定の量を超えるときにオブジェクトを第1フォルダ中に表示し、オブジェクトの価格が所与の期間に指定の量を超えて変化したときだけに第2フォルダに表示するように指定する1組の制約をさらに定義することができる。規則は、事前定義された組を選択することによって、または当業者に周知の他の手段によって、規則ベースの言語を使用して記述することができる。
【0079】
好ましい実装では、クライアントマネージャフォルダプラグインを開発し、かつクライアントマネージャ内に配置することを可能にすることによって、オジェクトイベントのより精巧な処理が得られる。クライアントプロファイル中のプラグインクラスオブジェクトは、加入したコンテンツストリームおよび関連するイベントを下流側のクライアントにプッシュする前に、単純な規則言語では容易に表現されない条件または状態に従って、それらに対して特別な論理およびフィルタリングを実施することができる。クライアント側アプリケーション上では、加入したストリームのデータ操作および視覚表現に関する任意の特殊化を実施するために、対応するサブクラスを提供することができる。
【0080】
有利なことに、広範なビジネス特有の提示および機能をユーザに提供するために、サーバ側フォルダプラグインとクライアント側プラグインはタンデムに動作することができる。例えば、「金融市場取引における認定発行者リスト」に関してプラグインを定義することができる。そのリストは、発行者のユーザ定義リストに関連しない任意の情報を除去するための特別なビジネス論理を含むことができる。同様に、プラグインを使用して、関心のある特定の国債でユーザがフォルダを構築できるようにすることができる。
【0081】
クライアントセッション154がオブジェクトイベントを受け取ったとき、クライアントセッションは、例えば関連するデータストリームへの加入を含むクライアントフォルダを識別し、次いでそのフォルダに含まれる関連する規則を実行することによって、オブジェクトに関連するデータストリームに適用される様々な規則およびプラグインを実行する。実行される規則は一般に、クライアントの加入したオブジェクトプール194にオブジェクトを加えるべきか、オブジェクトプール194からオブジェクトを削除すべきか、またはオブジェクトプール194内のオブジェクトを更新すべきかを指定する状態イベントと、例えば特定のフォルダにオブジェクトを加えるべきか、または特定のフォルダからオブジェクトを除去すべかを指定するフォルダイベントとを含む1組の潜在的応答を生成する(実行規則はアクションを起こす必要がないことも示すことができる)。
【0082】
次いでクライアントセッションは、規則の実行によって生成された様々なイベントを集約し、組み合わせ、オブジェクトに関する状態変化イベントを生成し、必要なら、個々のフォルダに結合され、状態イベントに関連する一連の関係するフォルダアクションと共に生成する。例えば、特定のオブジェクトの価格が上昇したことを示すオブジェクトイベントは、オブジェクトに関する更新イベント、第1フォルダに関する追加イベント、および第2フォルダに関する削除イベントとなる可能性がある。次いで集約したイベントは、送達マネージャ156に送られ、好ましくは、関係するデータオブジェクトを示す関連するIDを有する単一のカプセル化イベントオブジェクトに組み合わされる。
【0083】
最も単純な形では、送達マネージャ156は、受け取ったオブジェクトが配置されるクライアントイベントキュー165と、イベントキュー165からオブジェクトを抽出し、関係するデータをクライアント18に送達するように構成されたプッシュスレッド184とを備える。しかし、好ましくは、送達マネージャ156は、同じオブジェクトに関係するキュー中のイベントを集約するように構成されたキューマネージャ182を含み、プッシュモジュール184は、ラウンドトリップネットワーク移動時間と、クライアントが応答するのにかかる時間の測定に応答して、データをクライアントに送達する速度を変化させるように構成される。
【0084】
好ましい実装では、キューマネージャ182がイベントを受け取ったとき、キューマネージャ182は、新しく受け取ったイベントに関連するオブジェクトに関係するキュー中に既に存在するイベントがあるかどうかを判定する。イベントがある場合、処理を開始し、それによって(集約イベントオブジェクト中の)キューに入れられた、新しく受け取ったイベントを解析し、イベントを組み合わせ、または省略(eliminate)し、それによってクライアントに最終的に送達されるデータ量を低減する。この機能は、キューマネージャ182中に完全に実装することができる。しかし、受け取ったイベントオブジェトは、フォルダおよび状態イベントに関する基本的な1組の集約規則および組合せ規則を包含する組込み機能を含むことが好ましい。これらの機能は、同じデータオブジェクトに関係するキュー中の他のイベントと統合する方法をイベントオブジェクトに知らせる。
【0085】
状態イベントと、恐らくは1つまたは複数のフォルダイベントとを含む集約イベントなどのイベントを受け取ったとき、キューマネージャ182はまず、例えば受け取った状態イベント中の状態集約機能が存在するならばそれを実行することによって、状態イベント集約を実施する。次いでフォルダイベント集約機能を適宜実行することができる。
【0086】
状態イベントを受け取るとき(対応するオブジェクトに関する、以前にキューに入れたイベントが存在しないとき以外)に生じる可能性のある3つの主要な状態がある。1つの状態は、オブジェクト更新イベントを受け取り、更新イベントまたは追加イベントが同じオブジェクトに関して既にキューに入れられている場合である。この状態が生じたとき、受け取った更新イベントに反映されるデータ変更が、既にキューに入れられたオブジェクト更新イベントまたはオブジェクト追加イベント中のデータに適用される。新しい更新イベントに関連するフォルダイベントは、キューに入れられたイベントに関連するものと組み合わされ、フォルダイベントは適宜更新、追加、または除去される。次いで受け取った更新イベントは、保留イベントと統合した後、廃棄することができる。
【0087】
2番目の状態は、オブジェクト削除イベントを受け取り、更新イベントまたは追加イベントが同じオブジェクトに関して既にキューに入れられているときである。この状況では、新しい削除イベントが、以前にキューに入れた更新イベントまたは追加イベントを効果的に取り消す。キューに入れられた状態イベントと、関係する任意のフォルダ追加イベントはキューから除去され、削除イベントがキュー中に配置される。
【0088】
3番目の状態は、オブジェクト追加イベントを受け取り、そのオブジェクトに関する削除イベントが既にキューに入れられているときである。削除イベントはまだクライアントに送られていないので、オブジェクトはまだクライアントのオブジェクトプール中に存在し、オブジェクトをクライアント上に追加することは、既に存在しているデータと競合する可能性がある。したがって、追加イベントは、追加イベントで指定されるデータオブジェクトに関するデータ属性を含む「更新」イベントに変換される。
【0089】
有利なことに、保留イベントキューに対してこのタイプの集約手順を連続的に実行することにより、複製データと不要なデータ伝送がキューから選ばれる。これにより、クライアントに送らなければならない全データ量が低減し、それと共に、データをクライアントで受け取ったとき、クライアントが現在のオブジェクト状態を反映することが依然として保証される。さらに、最悪のシナリオでは、現オブジェクトタイプごとに、キューに入れられた状態イベントは多くても1つしか存在しないので、この集約方式はまた、キューの全長を制限する。
【0090】
クライアントに送られるイベントは一般に、クライアントセッションによって生成され、送達マネージャによってキューに入れられたイベントと同じオブジェクトデータを表す(所与のオブジェクトに対する追加指示、変更指示、または削除指示など)。したがって便宜上、本明細書ではこのイベントを同様の名称で呼ぶ。クライアントに同報通信されるイベントがクライアントセッションおよび/または送達マネージャで受信されるイベントから導出される間、クライアントに同報通信されるイベントのフォーマットおよび構成は、内部イベントとは異なる可能性がある。例えば、集約機能などの送達マネージャが受け取るイベントの副次的側面は、クライアントに転送する必要はない。同様にクライアントは、イベントに関する実際のデータ変化を受け取らなければならず、一方内部イベントは、別の所に格納されたデータへのポインタを含むことができる。状態イベントからのクライアントイベントの導出は、イベントがクライアントイベントキュー内に配置されたとき、または伝送するためにイベントがキューから除去され、準備されるときなど、どんな適切な時点でも行うことができる。加えて、「導出された」クライアントイベントは、特定の実装に関して適切である場合はソース状態イベントと同じにすることができる。
【0091】
クライアントイベントを集約することに加えて、ネットワークの遅延および応答の遅延を反映するように、送達マネージャ156からクライアントにイベントを送達する速度を最適化することが好ましい。クライアントマネージャ32に接続されるクライアントは、リモートマシン資源(例えばCPUおよびメモリ)、ネットワーク帯域幅、および待ち時間に関して非常に様々な能力を有する可能性がある。クライアントは、潜在的に、非常に大きいネットワークパイプを有する、高い能力のワークステーション上で動作する可能性があり、または低速なワイヤレス接続を有するハンドヘルド装置上で動作する可能性がある。クライアントセッションが利用可能な装置やネットワークの特性についての知識を必要とせずに、データメトリックがクライアントセッション154によって連続的に収集および監視され、それを使用して、適切な送達制約が決定される。
【0092】
クライアントセッションの期間ごとに、利用可能なクライアント資源に特有のメトリックが動的に収集される。最適化はクライアントごとに行われるので、システムは、多くの異なる装置や接続性の選択肢に関して、多種多様な送達要件をサポートすることができ、クライアントは、クライアントの接続帯域幅またはハードウェア能力を指定する必要がない。
【0093】
特定の実装では、ネットワーク移動時間およびクライアントイベント処理速度が測定される。送達マネージャ156は、データがクライアントにプッシュされるときと、データが到着したことを示すHTTP応答が受信されるときの間の遅延を測定するなどの様々な技法を用いて、ネットワーク移動時間を測定することができる。あるいは、クライアントセッション154は、クライアントにテストメッセージを周期的に発行し、クライアントからの応答を受け取る前に期間を測定することもできる。クライアントがイベント(例えば、ユーザの画面上に表示される更新イベント)を完全に認識するのにかかる時間を決定するために、クライアント性能を監視し、周期的に、または要求時に性能データをクライアントセッション154に転送する性能モニタ196を、クライアント18に実装することができる。
【0094】
性能データは解析され、ネットワーク移動時間と、(イベント処理速度に基づいて)サイクル期間中にクライアントが首尾よく処理することができるイベントの理論的最大数とに基づいて、サイクル期間が決定される。次いでこの制約がプッシュスレッドに適用され、プッシュスレッドは、伝送速度と、未処理のデータメッセージの数をそれに応じて調節する。経時的に、メトリックは変化する可能性があり、それに応じて制約が調節される。
【0095】
各クライアントは、これらのメトリックを検査し、イベントのフローを下流側で動的に調節する、クライアントマネージャ32中で実行される専用送達マネージャスレッド156を有するので、クライアントにとって利用可能な資源が与えられる効率的な送達を一貫して達成することができる。有利なことに、この適応データストリーミングは、イベント集約プロセスと共に動作し、クライアントが処理するのにそのイベントを過度に迅速に下流側に送達しないことが保証され、それと共に、送達されるイベントがオブジェクトの現在の状態を反映することも保証される。その結果、クライアントでの各データ更新間の期間は変動することができるが、更新を受け取ったとき、(更新時の)データの効果的なリアルタイムステータスが維持される。
【0096】
クライアントシステム:
クライアントシステム18は、様々な方式で構造化することができる。好ましい実施形態では、図10に示すように、クライアントシステムは、3つの層の機能、すなわち通信200、コンテキスト202、およびフォルダ204からなることが好ましい。通信層200は、クライアント18とクライアントマネージャ32との間の接続を管理するように構成される。具体的な実装では、通信は、HTTPトンネリングトランスポート(インターネット接続の場合)、またはソケット(イントラネット接続の場合)のどちらかを用いて達成される。
【0097】
コンテキスト層202は、イベントおよびメッセージをクライアントマネージャ32に送り、かつクライアントマネージャ32から受け取るように構成される。コンテキストは、フォルダ層204に対してイベントおよびメッセージの中心配布地点として機能する。フォルダ層204は、情報の論理グループと、情報ストリーム内の個別の数組の関係するコンテンツとを含む。図9に示すクライアントフォルダ192に関連して上記で論じたように、フォルダは、1つまたは複数の情報ストリームへの加入を表し、各加入は、リアルタイム情報マネージャ30によって分類およびパブリッシュされ、クライアントマネージャ32を介して利用可能とされるストリームのうちの1つにマッピングされる。加入およびフィルタは、フォルダの特定のコンテンツを定義する。
【0098】
好ましくは、クライアント出力は、グラフィカルな列−行(スプレッドシート)フォーマットの状態にされる。しかし、代替フォーマットも適宜利用することができる。例えば、プロセスは、クライアントAPIを使用して、ネットワーク内のサーバプロセスを確立し、コンテンツに加入して、サーバ側の要求を受け取り、コンテンツをHTMLページとして表現することができる。ポイントは、クライアントがホストサービスおよび情報ストリームをサポートするのに適した形式にすべきであるということである。有利なことに、クライアントマネージャ32は、受け取ったオブジェクトデータをクライアントが処置する方式とは無関係であり、その結果、この方法により、多種多様なクライアントフォーマットを実装し、サポートすることができる。
【0099】
HTTPトンネリングトランスポート:
様々な通信技法、インターフェース、およびプロトコルを使用して、クライアントマネージャ32をクライアントと接続することができる。好ましい実装では、例えば図1に示すように、HTTPトンネリングトランスポートを使用する仮想永続接続をサポートするために、HTTPトンネリングトランスポート層38が提供される。クライアントがシステムにアクセスすることを求める有効な要求を発行するとき、固有のセキュアセッション鍵を割り当て、クライアントのセッションの期間、クライアントを特定のサービスに結合するために使用される。
【0100】
初期HTTP要求チャネルは、開いた状態に保つことができ、「プッシュ」チャネルまたは「パブリッシュ」チャネルとなることができる(したがって、潜在的に非常に長いHTTP応答として接続の経路中のすべてのホップに現れる)。この接続は開いたままとなるので、この接続は、リアルタイムにコンテンツをクライアントにパブリッシュする経路として使用することができる。これを所与のストリームに対して効率的にかつ確実に行うために、サービスからの各イベントを順序付け、キューに入れ、符号化し、送信し、格納することが好ましい(接続性の問題のために再送信が必要な場合)。
【0101】
所与のチャネルが有効なままとなることを保証するために、ハートビートメッセージを周期的な間隔でクライアントに送ることもできる。問題を検出した場合、イベントの伝送をサスペンドすることができ、クライアントには、セッションへの接続性を再確立し、通常動作を回復および再開する期間が与えられる。切断のパターンが明らかとなった場合(例えば、クライアントのファイアウォールプロキシが接続を3分未満に制限するときに見つけることができるように)、クライアントのセッションに関するタイミングパラメータは、例えば現チャネルを閉じ、ファイアウォールによって干渉される前に新しいチャネルを開くことによって、将来の問題を回避するよう試みることで調節される。具体的には、動的なタイミングパラメータが与えられる場合、システムは、どんな問題もそれが生じる前に回避するために、クライアントが新しいHTTP接続への既存の「プッシュ」チャネルを周期的にサイクルするように先を見越して要求することができる。クライアントおよびトランスポートシステム38は、エンドユーザへのリアルタイムデータの一貫したフローを乱さないように、このプロセスを非同期かつ透過的に実施することが好ましい。
【0102】
結論
本発明を、その好ましい実施形態を参照しながら具体的に図示し、説明したが、本発明の精神および範囲から逸脱することなく、形態および詳細に様々な変更を行うことができる。具体的には、本発明の好ましい実施形態は、金融案内に関するデータの処理および配布を対象とするが、分散在庫システム、ネットワークベースのオークションシステム、リモートデータ監視など、異なる題材を対象とするデータオブジェクトのリアルタイム分散を可能にする目的でこの方法およびシステムを使用することもできる。
【図面の簡単な説明】
【図1】
許可された加入者にリアルタイムコンテンツストリームを送達し、かつ様々なネットワークを介してホストと加入者との間、および企業と顧客との間のリアルタイムな対話を可能にする統合システムのブロック図である。
【図2】
図1のリアルタイム情報マネージャの動作環境を示す高レベル図である。
【図3】
リアルタイム情報マネージャの好ましいアーキテクチャを示す図である。
【図4】
データ入力を処理するためにリアルタイム情報マネージャが使用するタイピングツリーを示す図である。
【図5】
本発明のリアルタイム情報アーキテクチャのスケーラビリティを示すブロック図である。
【図6】
クライアントマネージャの好ましいアーキテクチャを示す図である。
【図7】
複数のクライアントセッションをサポートする図6のクライアントマネージャを示すブロック図である。
【図8】
図6のオブジェクト状態マネージャの好ましい構造を示すブロック図である。
【図9】
図6のクライアントセッションおよび送達マネージャを示し、クライアント側システム要素の高レベルビューをさらに示すブロック図である。
【図10】
クライアントシステムアーキテクチャの高レベル図である。
(関連出願の相互参照)
本願は、35 U.S.C.§119の下で、2000年8月4日出願の「Real Time Host Infrastructure」という名称の米国仮出願第60/223,397号、および2000年8月22日出願の「Enhanced Information Delivery」という名称の米国仮出願第60/227,162号の優先権を主張するものである。これらの出願の内容全体はどちらも、参照により本明細書に組み込まれる。
【0002】
(発明の分野)
本発明は、着信コンテンツストリームをレンダリングし、成形する方法およびシステムに関する。より詳細には、本発明は、金融プロバイダからの案内に関するデータなどの未加工入力データストリームを処理し、クライアントに配布するのに適した、構造化され妥当性検査された出力データを生成する方法およびシステムに関する。
【0003】
(背景)
金融商品発信元からクライアントへの金融商品情報の電子的配布は、金融サービスプロバイダによって供給される一般的なサービスである。通常、サービスプロバイダは、金融コンテンツプロバイダとクライアントとの間で様々な商品に関する情報を受け渡すコンジットとして振る舞う。そのような情報には、新しい商品の案内、現在価格などの商品属性の更新、および恐らくは、商品を分類する方式の変更が含まれる。
【0004】
多数の商品に関する情報をそれぞれ搬送することができる多数のデータストリームをサービスプロバイダが処理する必要があることはまれではない。例えば、米国債についての情報を含む単一データストリームは通常、数百の異なる商品に関するデータイベントを含む。
【0005】
未加工の金融サービスデータをクライアントに配布するには、様々な技法がある。しかし、現在の技法は、プロバイダを場当たり的に処理することで、労力が必要となり、計算の負荷が高い。具体的には、情報コンテンツを下流側クライアントに配布することができるように情報コンテンツを受け取り、処理するために、ホストは、着信データストリームの特定の構造およびフォーマットに直結する必要がある。その結果、異なる情報源(ソース)からのデータを処理するために別々のシステムが開発された。例えば、あるシステムは未加工の国債データの処理専用であり、別の独立したシステムは、企業の案内に関する未加工データの処理専用の構造を有する可能性がある。このような場当たり的な技法は、ある操作に関しては受け入れられるが、十分にはスケール変更せず、単一の総合的環境に統合することが難しい。
【0006】
加えて、現在のシステムは、そのソースから、関心を持つ様々なクライアントにデータを経路指定するのに適しているものの、従来のクライアントは、高速データ接続でホストシステムに直結されている。より小型のクライアント(業務用および個人向けの両方)が多く存在するようになってきていることと共に、帯域幅が狭く、接続性が間欠的なポータブルコンピュータやワイヤレスコンピュータの普及により、インターネットなどの大規模通信ネットワークを介する通信に固有の不整合の影響を受けにくい、堅固で適応性のあるデータストリームを提供する必要が高まっている。
【0007】
したがって、本発明の目的は、許可された加入者にホストシステムからのリアルタイムコンテンツストリームを配布することができるように、そのリアルタイムコンテンツストリームを処理するように設計された統合インフラストラクチャ製品を提供することである。
【0008】
さらなる目的は、未加工データの複数のストリームをリアルタイムで処理するように構成され、ダウンストリーム処理やクライアントへの配布に適した、フォーマットされ妥当性検査された出力を提供するシステムを提供することである。
【0009】
本発明のさらに別の目的は、様々なソースからの複数のデータのストリームを管理することを可能にし、新しいストリームおよび商品タイプを容易に追加または変更することを可能にするように柔軟かつ容易に適合されるシステムを提供することである。
【0010】
本発明のさらに別の目的は、オファーを下流側サービスに送るのに必要なデータ量を最小にするフォーマットで、妥当性検査されフォーマットされたオファーデータを提供することである。
【0011】
本発明のさらに別の目的は、クライアントが受け取る更新データを確実に最新にすると共に、クライアントがデータを受け取り、処理することができる速度に伝送速度を動的に調節するデータ送達機構を提供することである。
【0012】
(発明の概要)
上記の目的や他の目的は、未加工の金融データストリームを処理し、構造化され妥当性検査された商品案内オブジェクトを生成および配布する本発明の方法およびシステムに従って達成される。このシステムは、リアルタイム情報マネージャおよびクライアントマネージャの2つの主要な構造要素からなる。情報マネージャは、コンテンツプロバイダからの未加工データストリームを処理し、オブジェクトの現在の状態をほぼリアルタイムに表す未加工ストリームから導出された、妥当性検査され構造化されたオブジェクトの同報通信を提供するように構成される。
【0013】
動作の際には、情報マネージャは、少なくとも1つの未加工データストリーム入力上で未加工データオブジェクトを受け取る。未加工データオブジェクトはタイプされ、妥当性検査され、対応するフォーマット済みデータオブジェクトが生成される。オブジェクトの現在の状態は、オブジェクト格納プール中に格納され、さらに、好ましくはオブジェクトタイプに従っていくつかの利用可能なストリームから選択された、特定の同報通信データストリーム上で同報通信される。好ましい実装では、現在の状態は、問題の固有オブジェクトが識別され、前の状態に対するオブジェクト状態の変化が提供される差分形式で同報通信される。オブジェクトタイピング規則およびフォーマット規則を格納するのに好ましいフォーマットも開示される。
【0014】
クライアントマネージャは、同報通信データストリームにそれぞれ接続され、様々な同報通信ストリーム上で示されるオブジェクトの現在の状態をオブジェクトキャッシュ中に維持するように構成された1つまたは複数のオブジェクト状態マネージャからなる。クライアントセッションが、各クライアントとの通信を維持するために提供される。特定の同報通信データストリーム上で搬送されるオブジェクトの状態が変化したことをオブジェクト状態マネージャが検出したとき、オブジェクト状態マネージャは、そのストリームに加入しているクライアントに関するクライアントセッションに向けてイベントを送る。次いでクライアントイベントは、フィルタと、クライアントのプロファイルで指定された他の規則とを評価して、状態の変化をクライアントに送るべきかを決定し、送るべきである場合、状態変化情報を転送し、クライアントに送る。
【0015】
各クライアントは、特定のクライアントに送るべきデータのキューを維持する、関連する送達マネージャを有することが好ましい。ネットワーク伝送時間やクライアントのシステムの性能などの通信メトリックを監視し、それに応じてクライアントにデータを送る速度を調節する。加えて、共通データオブジェクトに関する2つまたはそれ以上の状態変化イベント、例えば証券の価格の変化をクライアントに送るためにキューに入れるときに、オブジェクト状態に対して示される様々な変化を集約して、送るべき状態変化のすべてを含む単一イベントを生成するような集約機能を実装することが好ましい。
【0016】
このシステムのアーキテクチャおよび動作は堅固であり、多種多様なシステムや動作のスケールに容易に適合させることができるので有利である。システムがモジュール式であることにより、様々な入力データストリームを処理する必要に応じて複数の情報マネージャを提供することが可能となる。情報マネージャで使用されるタイピング規則およびフォーマット規則は、新しいデータプロバイダおよびデータタイプを収容するように容易に更新することができる。複数のクライアントセッションマネージャを提供して、多数のクライアントをサポートするのに十分な容量を保証することができ、複数のクライアントセッションマネージャは、様々な情報マネージャからの同報通信データストリームにオンデマンドに接続することができる。さらに、このシステムは、様々なプラットフォーム上で実装することができ、情報マネージャおよびクライアントマネージャは、互いに対して、かつ加入クライアントに対してローカルまたはリモートに位置することができる。加えて、情報マネージャによって出力されるデータは、他のアプリケーションによる使用に適しており、クライアントマネージャは、情報マネージャ以外の情報源によって提供される同報通信データストリームと共に使用するように容易に適合させることができる。
【0017】
本発明の上記の特徴や他の特徴は、本発明の例示的実施形態の以下の詳細な説明と図面を見れば容易に明らかになるであろう。
【0018】
(好ましい実施形態の詳細な説明)
図1を参照すると、許可された加入者にリアルタイムコンテンツストリームを送達し、かつ様々なネットワークを介してホストと加入者との間、および企業と顧客との間のリアルタイムな対話を可能にする統合システム10の高レベルブロック図が示されている。具体的には、システム10は、1つまたは複数のコンテンツプロバイダ12から未加工データストリーム14を受け取り、そのデータストリームをリアルタイムで処理し、次いでネットワーク16を介して関連するオファーおよび他のデータを加入クライアント18に転送するように構成されたリアルタイム情報チャネル11を有する。
【0019】
リアルタイム情報チャネル11は、リアルタイム情報マネージャ30およびクライアントマネージャ32からなる。リアルタイム情報マネージャ30は、未加工データ14の着信ストリームを受け取り、そのデータを処理し、次いで、構造化され、妥当性検査されたコンテンツオブジェクトをパブリッシュするように構成される。次いで、構造化され、妥当性検査されたコンテンツオブジェクトは、下流側プロセスで使用することができる。クライアントマネージャ32は、クライアントカスタムプロファイルを管理し、クライアントが使用できるデータタイプおよびサービスに関する権利付与の方針を実装する役割を果たす。クライアントマネージャ32はまた、クライアントにデータを転送する役割も果たし、好ましくは、コンテンツの送達をリアルタイムに最適化し、かつクライアントのホストシステムへの接続を維持するために、帯域幅および待ち時間の変化、ならびにクライアント装置上の資源利用に動的に適応するように構成される。リアルタイム情報マネージャ30およびクライアントマネージャ32については、以下でより詳細に論じる。
【0020】
システム10はまた、ホストビジネスサービス22と加入クライアント18との間の通信24、24’の両方向フローを容易にする対話サービスチャネル20も含むことができる。対話サービスチャネル20は、サービスマネージャ34およびサービスルータ36からなる。サービスマネージャ34は、取引、販売、オークションなどの様々なビジネスサービス22間の通信を維持する役割を果たし、様々なサービスについて別々のサービスマネージャを使用することができる。サービスルータ36は、メッセージをキャッシュし、加入クライアントと、企業と、ホストシステムとの間の通信を追跡するように構成される。サービスルータ36はまた、クライアントと個々のビジネスサービスとの間のポイントツーポイント接続を確立するための機能を含むサービスマネージャ34とも対話する。システム10とクライアント18との間のネットワーク通信は、HTTPプロトコルおよびHTTPSプロトコルの一時的性質によって引き起こされる制限を克服し、かつホストシステム10と加入者クライアント18との間の仮想永続接続(virtual persistent connection)を実現するように構成されたHTTPトンネリングトランスポートシステム38を使用して行うことが好ましい。トンネリングトランスポートシステム38についてもまた、以下でより詳細に論じる。
【0021】
システム10は、仮想マシン層40を形成する1つまたは複数のJava(登録商標)仮想マシン(「VM」)のコンテキスト内で実装することが好ましい。VM層40の上には、トンネリングトランスポートシステム38およびプロセス管理層42がある。リアルタイム情報チャネル11および対話サービスチャネル20を形成するプロセスなどの個々のシステムプロセスは、プロセス管理層42で動作する。プロセス層42は、VM層(それ自体は複数のマシン間に分散することができる)上で複数のプロセスを配布し、管理し、制御する能力を提供する。他の構成および実装も可能である。
【0022】
リアルタイム情報マネージャ
図2を参照すると、リアルタイム情報マネージャ30の動作の高レベルブロック図が示されている。情報マネージャ30は、様々なコンテンツプロバイダ12から、1つまたは複数の未加工オブジェクトデータストリーム14を受け取る。様々なコンテンツプロバイダをサポートすることができ、各サポータへのデータ接続は、当業者に周知の様々な方式で実施することができる。
【0023】
好ましくは、コンテンツプロバイダは、金融商品案内に関する未加工データを提供し、このような典型的なプロバイダには、財務省(treasuries)、官庁、および企業体が含まれる。未加工オブジェクトデータストリーム14は、様々な商品または案内についての情報を含むデータオブジェクトを搬送する。各データオブジェクトは一般に、オブジェクトを一意に識別することを可能にするキーも含む。未加工データストリーム中に含まれるデータは、機器のタイプごとに異なるものにすることができる。例えば、財務省のストリームは、記述的詳細、価格決定、売買高、あるいは国債、ワラント、証券、または取引、販売、スワップ、もしくは交換することができる他の証書に関する任意の他のデータを含むことができる。国債は、内国債、または日本国債などの外国債を含むことができる。
【0024】
代替データストリームもサポートすることができる。そのようなストリームは、連続的に監視することができ、周期的に更新され、更新の一部または全部が1つまたは複数の監視者に通信されるべきである情報に関するデータオブジェクトを含むことが好ましい。一実施形態では、データストリームには、航空券、ホテルの部屋などの価格および量などの様々な非金融商品または非金融案内の可用性が含まれ、処理後のデータは、とりわけ消費者や産業界の代表に配布することができる。他の代替ストリームには、電子オークションまたはオンラインオークション、様々な商品およびサービスに関するスポットマーケット価格、様々なシステムの測定された状況または性能が含まれる。このシステムによる処理および配布に適した様々な別のデータストリームを当業者は理解されよう。
【0025】
情報マネージャ30は、未加工オブジェクトデータストリームを処理し、各オブジェクトについての特定の商品タイプを識別するように構成される。一般に、所与のオブジェクトに関連する固有の属性を定義するオブジェクトタイピングデータ52を含む規則データベース50が提供される。情報マネージャ30がオブジェクトを受け取るとき、例えば確実にオブジェクトのコンテンツに所定の基準または制限を遵守させることによって、様々な規則を適用し、オブジェクトタイプを決定し、オブジェクトを検証する。当業者には周知であろうが、データストリーム中のオブジェクトタイプを識別し、検証するのに使用することができる様々な技法が存在する。恐らくは数百の異なるオブジェクトを含む複数のデータストリームを処理し、オブジェクトタイプシグネーチャを容易に作成および変更することを可能にするのに非常に適した好ましい技法を以下で議論する。
【0026】
オブジェクトのタイプを識別し、オブジェクトを検証した後、オブジェクトは様々なシステム要件に従ってフォーマットされる。フォーマットされるオブジェクトの構造および様々なフォーマット規則54は、規則データベース50に格納することができる。未加工データオブジェクトのフォーマットは、下流側アプリケーションにとって重要ではないフィールドの除去、識別したオブジェクトタイプなどの付加的データフィールドの追加、データフィールドを表す方式を調節することなど、多くのアクションを含むことができる。
【0027】
本発明の特定の態様によれば、オブジェクトを受け取り、タイプし、適切にフォーマットした後、フォーマット後のオブジェクトが構造化オブジェクトプール56に格納され、好ましくはオブジェクトタイプに従ってセットとして格納される。オブジェクトプール56は、入力データストリームによって搬送される各タイプのすべてのオブジェクトの現在の状態の「マスタリスト」と見なすことができる。オブジェクトは、未加工データストリーム中に含まれるキーによって一意に識別することができ、好ましくは、このキーは、プール56にオブジェクトを格納し、かつプール56中のオブジェクトにアクセスするのに使用する。受け取ったオブジェクトがプール中にない場合、新しいエントリが作成され、オブジェクトが格納される。加えて、フォーマット済みオブジェクトデータがデータストリーム58上で同報通信される。オブジェクトの固有の各タイプに対して別々のデータストリームを提供することが好ましい。データストリーム58は下流側アプリケーション、具体的にはクライアントマネージャ32が受け取り、クライアントマネージャ32は、オブジェクトを格納し、処理し、適宜クライアントに転送する。
【0028】
処理する多数のデータオブジェクトおよびタイプが存在するとき、情報マネージャ30からクライアントマネージャ32に流れるリアルタイムデータの量は非常に多くなる可能性があることが理解されるであろう。データフローの量を低減するために、本発明の別の態様によれば、フォーマット済みデータオブジェクトストリーム58は、一般に差分オファーデータを含む。具体的には、情報マネージャ30がオブジェクトを受け取ったとき、オブジェクトプール56を照会し、同じキーを有するオブジェクトがプール56中に既に存在する場合、受け取ったオブジェクトと、格納されるオブジェクトとの差分を決定する。完全なフォーマット済みオブジェクトをクライアントマネージャ32に同報通信する代わりに、差分だけが送られる。この差分データを下流側プロセスで使用することができ、このプロセスによって格納したオブジェクトの前のバージョンが変更され、更新後の情報が反映される。次いでプール56中に格納されたオブジェクトが更新され、新しく受け取ったオブジェクトが反映される。通常は、価格など、オブジェクトデータの小部分だけが、所与の時間で変化する。その結果、データを損失することなく、同報通信される差分データの量が、全オブジェクトデータよりもかなり小さくなる。
【0029】
現在のデータオブジェクトと前のデータオブジェクトとの差を決定するために、当業者に周知の様々な技法を使用することができる。使用する具体的な方法は、設計や実装の問題に依存する。このような問題には、データベースまたは記憶システムサポーティングプール56のフォーマット、プール中に格納されたオファーの構造、およびプログラミング環境などの要因が含まれる可能性がある。
【0030】
受け取ったオブジェクトがプール56中に存在せず、新しいオファー内に存在する場合、オブジェクト全体が同報通信される。同様に、オブジェクトが分類され、データタイプに関係するデータストリーム上で同報通信されるとき、受け取ったオブジェクトがプール56中のオブジェクトと同じキーを有するが異なるタイプである場合、情報マネージャ30は、プール56中の古いオブジェクトを削除し、新しいオブジェクトの異なるタイプに従って新しいオブジェクトを格納することが好ましい。次いで全オブジェクトデータが、新しいタイプに対して適切なデータストリーム58上で同報通信される。さらに、特に現ストリームがそのオブジェクトについての情報を前に搬送したストリームと異なるとき、オブジェクトタイプの変化を示す通知を同報通信することができる。
【0031】
クライアントマネージャ32などの、差分同報通信チャネル58を受信している可能性のある下流側プロセスは一般に、様々なオブジェクトの現在の状態のコピーを維持し、差分データに従ってそのコピーを更新するであろうことが理解されるであろう。一実施形態では、情報マネージャ30が所与のオブジェクトタイプについてのデータストリームに加入する要求をそのようなプロセスから受け取ったとき、情報マネージャ30は、(現在の状態の)プール56中のそのタイプのすべてのオブジェクトの全コピーを加入者に送ることができる。次いで加入者は、このタイプのオブジェクトのこの「スナップショット」を格納することができ、その後で、受け取った差分データに従ってオブジェクトを修正することができる。
【0032】
より好ましい実施形態では、情報マネージャ30は、特定のどのシステムが同報通信を受け取っているかについての具体的な知識を必要とせずに、様々なサポートされるデータストリームを同報通信することができる。このような場合、情報マネージャ30は、特定のオブジェクトまたは1組のオブジェクトの現在の状態のスナップショットを求める要求に応答し、要求されたデータを適切なデータチャネル上で返す機能を含むことができる。このチャネルは、同報通信データチャネルとは分離していることが好ましい。あるいは、クライアントマネージャ32(または他の加入者)と構造化オブジェクトプール56との間にデータリンクを提供し、クライアントマネージャ32が恐らくは中間データベースアクセスオブジェクト(図示せず)を介して自動的にスナップショットデータを「オンデマンド」に取り出すことを可能とし、それによってリアルタイム情報マネージャ30が加入要求に応えなくてもよいようにすることもできる。クライアントマネージャ32にオブジェクトプール56のコンテンツへの直接アクセスを与えるか、それともクライアントマネージャ32が情報マネージャ30または別のモジュールによって処理される要求を介してオブジェクトプール56にアクセスするかについての設計の選択は、システム要素間で確立することができるデータリンクのタイプ、様々な要素がどのように密接に結合しているか、サポートすることができる同時データベース接続の数および頻度、ならびに当業者に周知の他の要因など、システム実装の詳細に依存する。
【0033】
スナップショットデータはオブジェクトデータストリーム上で加入者に同報通信することができるが、これにより同報通信チャネル全体が減速する可能性がある。したがって、オブジェクトタイプセットスナップショットは、別々のチャネル上で送ることが好ましい。移行時間の間、セットが加入者によって完全に処理される前に、セット内のオブジェクトに対する更新を受け取ることができる。この状況では、後続の伝送を加入者に送ることができる。あるいは、加入者は、加入プロセスの間に受け取った差分更新をキューアップ(queue up)し、受け取ったスナップショットデータが利用可能となった後、受け取ったスナップショットデータにその差分更新を適用することができる。
【0034】
図3を参照すると、リアルタイム情報マネージャ30についての好ましいアーキテクチャのブロック図が示されている。図示されているように、情報マネージャは、3つの主要なモジュール−トランスレータ60、オファープロセッサ62、およびオファープールマネージャ64を備える。トランスレータ60は未加工データストリーム14を受け取り、名前−値対のセットを含む未加工イベント70を生成する。トランスレータ60はJava(登録商標)クラスとして実装することが好ましい。この実装は、未加工データストリームからのデータ属性の抽出をほぼ自動化し、新しいデータオブジェクトタイプの識別を単純化するので有利である。次いでこの情報を使用して、新しいタイプを識別するのに使用する規則を定義することができる。
【0035】
次いで未加工イベント70はオファープロセッサ62に渡される。オファープロセッサは、データベース50内の規則を使用して、未加工イベントを識別し、または類別する。イベントタイプを決定した後、そのイベントのタイプに対して適切な妥当性検査規則、フィルタリング規則、および強化規則を取り出す。この規則を使用して、未加工イベントから関連するデータ属性を選択し、正しい商品タイプを妥当性検査し、商品ラベルを構築し、転送すべきでないイベントをフィルタする。次いでオファープロセッサ62は、未加工データ中の場合によっては一意でないキーから導出される商品タイプ識別子および固有キーと共に、規則によって指定される属性を含む、外部イベントまたは処理後イベント72を生成する。
【0036】
外部イベント72はオファープールマネージャ64に渡される。オファープールマネージャ64は、未加工データストリームで遭遇する特定のタイプの別々のインスタンスごとに、プール56中にその商品タイプの別々のインスタンスを自動的に作成するように構成される。未加工データから導出される固有キーは、外部イベントをオファープール56中のオファーインスタンスにリンクするために使用される。オファープールは、クライアントに同報通信したすべての商品案内の現在の状態を含む。新しいイベントが更新後の情報を含む場合、オファープールマネージャ64は変更を識別し、その変更が下流側プロセスで使用されるフィールド中にある場合、その変更を同報通信する。(外部イベントによって表される)商品案内がオファープール56中に存在しない場合、オファープールマネージャ64は完全な商品案内をプール56に追加し、差分ストリーム58上で、またはより大きなデータ転送用に構成された2次データ経路(図示せず)を介して、完全な商品案内をクライアントマネージャ32にも完全に渡す。
【0037】
下流側サービスが差分更新メッセージを逃したときを検出する際に下流側サービスの助けとするために、シーケンス番号が各オファーと関連付けられ、後続の更新とシーケンス番号がその更新と共に同報通信される。商品インスタンスが初めてオファープール56に追加されるとき、商品インスタンスは、シーケンス番号0に割り当てられる。プール56中のオファーのインスタンスが外部イベントに基づいてオファープールマネージャ64によって更新されるごとに、シーケンス番号は1だけ増分される。シーケンス番号は差分更新メッセージと共に同報通信され、クライアントマネージャ32はシーケンス番号を使用して、オブジェクトのクライアントマネージャ32のローカルコピーが最新であることを検証することができる。更新メッセージに関するシーケンス番号が、関連するオブジェクトのローカルに格納されたバージョンに関するシーケンス中の次の番号ではないことをクライアントマネージャ32が検出した場合、1つまたは複数の更新メッセージを逃してしまっており、クライアントマネージャは、商品タイプ属性の全セットを要求して商品案内イメージをリフレッシュすることができる。
【0038】
上記で論じたように、未加工イベントのタイプを識別し、それを処理して外部イベントを生成するための規則を実装することができる様々な方式が存在する。好ましい実装では、オブジェクトタイピングシステムデータ66はツリーフォーマットで編成される。その単純化した例示を図4に示す。
【0039】
図4を参照すると、少なくとも1つのトランスタイプツリー103が接続されたルートノード102を有するタイプツリー100が与えられている。タイプツリー100は、下にあるトランスタイプツリー103で定義されるすべてのタイプノードおよび分岐構造の集合である。タイプツリー中の各リーフノードは別々のタイプを定義し、各タイプは、タイプ属性を定義するツリー状構造を有する。タイプノードへの分岐構造は、情報ストリーム加入の基礎を定義し、ノードのコンテンツは、情報ストリームの構造を定義する。
【0040】
より具体的には、各トランスタイプツリー103は、特定の未加工データ入力ストリームと関連し、識別ストリームノード104によってルートノード102に接続される。各ストリームノード104には、それぞれのデータストリーム上で搬送することができる特定のタイプのオブジェクトを定義する少なくとも1つのリーフノード106が接続される。タイプリーフノード106は、未加工イベントのタイピングおよび妥当性検査のどちらにも使用される規則を定義する組込み属性を有する。(この属性は、タイプリーフノードから派生するサブノードとして添付することもできる。)タイプノード106はまた、対応する外部イベントを生成するのに使用するフィルタリング規則および強化規則など、タイプリスペクティブオブジェクトタイプのコンテンツ構造も定義する。ストリーム中の様々なタイプを編成する助けとするために、ストリームノード104とそのタイピングリーフノード106との間に、1つまたは複数のレベルの中間経路ノード(図示せず)を含めることもできる。必須ではないが、中間ノードは、ストリーム中の派生リーフノードの各タイプを他のタイプと区別するのに使用する、関連するタイピング規則も有することができる。
【0041】
特定のタイピング規則は、未加工イベント内に存在する名前−値対に適用することができる論理式の形であることが好ましい。これらの規則は、適切なトランスタイプツリー103中のノードを横断し、適切な規則解析エンジンを適用することによって評価することができる。トランスタイプツリー103中で定義されるタイプのいずれにも一致しないオブジェクトに対して、「デフォルト」タイプを適用することができる。このような未知のタイプの存在は、新しいタイピング規則を定義する必要がある可能性があることを示す警報メッセージをトリガするのに使用することができる。
【0042】
例えば、図4のタイプツリー100は、(ストリームノードX 104で示されるように)一方が未加工データストリームXに関連し、他方が未加工データストリームYと関連する2つのトランスタイプツリーを含む。ストリームXは、オブジェクトタイプAおよびBを識別するための規則、ならびに未加工イベントを処理するための様々な属性を含む、これらのタイプに関するタイピングノードを有する。ストリームYは、タイプQおよびRの未加工イベントを識別および処理するための規則を含むタイピングノードを有する。商品タイプは、ストリームの名前およびタイプノードを参照することによって一意に識別することができ、例えばタイプAの商品は、商品「X.A」として識別することができる。
【0043】
図3を参照すると、図示される未加工イベント70は、「Descr=A」を含むいくつかの名前−値対を含む。このイベントが未加工データストリームX上に存在し、ノードAが規則「Descr==A」に従ってタイプを定義する場合、この未加工イベントは、商品または案内タイプ「X.A」として分類される。妥当性検査規則も適用することができる。例えば、ある規則では、タイプX.Aのオブジェクトが規則「Amt>0」を満たさなければならないと指定することができる。タイプX.Aのオブジェクトを例えばAmt=0と共に受け取った場合、そのタイプX.Aのオブジェクトは有効とはみなされず、イベントの後続の同報通信のブロッキング、およびデータプロバイダへの通知などの適切なアクションが行われる。ノードAに関連する属性およびフォーマット規則は、得られる外部イベント72のコンテンツ、およびデータのフォーマット方式を指定する。この例では、イベント72は、Descr、Amt、およびKeyの名前−値対だけを含む。「office」および「color」に関する値は省略される。フォーマット規則はまた、下流側プロセスがイベントタイプを再決定する必要がないように、イベントが「Type=X.A」名前−値対の追加によって強化されることも示す。
【0044】
データストリームをシステムで処理できるようになる前に、データストリームをタイピングシステムに対して宣言しなければならないことが理解されるであろう。好ましい実施形態では、新しいストリームを導入するプロセスは、ストリームを定義し、形成し、各タイプに構造化することを可能にし、かつタイピング規則および妥当性検査規則を組み込み、コンテンツおよび規則構文をチェックし、タイプツリーを構築することを可能にする特別なタイプ定義ツールまたはアプリケーション76(図3参照)によって行われる。好ましいタイプ定義ツールは、着信データがソフトウェア操作を介してどのように解釈されるかをユーザが示すことを可能にするグラフィカルユーザインターフェースを使用する。このようにして、それぞれが別個の未加工データのストリームと関係する複数のデータフォーマットを受け取り、処理することができる。
【0045】
好ましくは、トランスレータ60は、入力データストリーム中に含まれる様々なデータオブジェクト中に存在するデータ−値対の組を示す出力を供給し、この出力はタイプ定義ツール76に供給される。次いで、トランスレータ60によって供給される情報は、タイプ定義ツール76で使用することができ、適切なタイピングノードをその関連するタイピング規則および妥当性検査規則で定義する目的で、オペレータが未定義オブジェクトからの様々な名前対を容易に識別し、その様々な名前対から選択することが可能となる。
【0046】
リアルタイム情報マネージャのためのこの方法およびシステムは、容易に拡張でき、カスタマイズできる、堅固なデータシステムを提供するので有利である。このような実施形態を示し、このシステムの柔軟性およびスケーラビリティを示す図を図5に示す。図5では、3つのクライアントマネージャ32.1〜32.3が、2つのリアルタイム情報マネージャ30.1、30.2からの様々なデータストリーム同報通信に加入している。加入したデータ接続は直接データ接続とすることができ、あるいはイントラネットまたはインターネットなどの介入ネットワークを介して、あるいは当業者に周知の他の手段によって接続することができる。同じプラットフォームまたは異なるプラットフォーム上で動作するリアルタイム情報マネージャ30の複数のインスタンスは、多数の高帯域幅データストリームを処理するように要求されるものとして実装することができる。出力データストリームの編成された性質により、接続されるクライアントマネージャ32が所与のタイプのデータオブジェクトを選択的に受け取ることが可能となり、データ同報通信の非限定的な性質により、複数のクライアントマネージャ32をシステムに接続し、新しいクライアントマネージャ32を追加して、多数のクライアントをサポートするために容量を追加することが簡単になる。
【0047】
クライアントマネージャ:
クライアントマネージャ32(図1参照)は、クライアントおよび装置の広範なアレイのために、リアルタイム情報マネージャ30によって供給されるリアルタイム情報ストリームなどのデータストリームを、そのデータのカスタマイズされ、管理されたビューにマッピングする機構を提供する。クライアントマネージャ32は、外部セッションに対してローカルプロキシとして動作して、リモート接続およびリモート装置が首尾よくサポートすることができる速度で、クライアントが加入する一貫したビューのために必要なコンテンツだけを転送することによってデータの送達を最適化するように構成される。具体的には、クライアントマネージャ32は、以下の3つの主要機能をサポートするように構成される。その3つの主要機能とは、(1)クライアントセッションと、参照、許可、ビュー、加入、およびフィルタを含むその関連するプロファイルの作成および管理、(2)1つまたは複数のリアルタイム情報管理プロセッサ30によってパブリッシュされるコンテンツストリームにオンデマンドに加入または接続し、加入した各ストリーム上の様々なオファーに関する現在の状態オファープールキャッシュを維持し、次いで加入したクライアントセッションの組にデータを送達するときにそのプールを使用すること、および(3)様々なクライアントへの、加入したコンテンツと、関連するリアルタイム更新の送達を適宜調整することである。
【0048】
クライアントマネージャ32のアーキテクチャは、複数のデータソースと共に使用することができる。しかし、クライアントマネージャは、リアルタイム情報マネージャ30によって生成される差分データストリームを受け取り、かつ情報マネージャ30で格納されたデータへの少なくとも限定されたアクセスを有することが好ましい。
【0049】
クライアント18は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ソケットなどの適切なネットワークプロトコルを使用して、クライアントマネージャ32に接続することができる。HTTPを介してインターネットを通じて接続されるクライアントは、HTTPと、クライアントマネージャ内に実装されるプロキシソケットプロトコルとの間の透過的プロトコルブリッジを提供する拡張情報送達(Enhanced Information Delivery)HTTPトンネリングトランスポート層38を通過することが好ましい。クライアントマネージャ32自体は一般に、直接ソケットを介するローカルイントラネット上でセッション通信を維持し、またはHTTPを介してインターネットを介してセッション通信を維持するなど、セッション通信を維持する方法には無関係である。
【0050】
図6を参照すると、クライアントマネージャ32の好ましいアーキテクチャが示されている。クライアントマネージャ32は、クライアントセッションマネージャ150、少なくとも1つのオブジェクト状態マネージャ152、および少なくとも1つのクライアントセッション154からなる。クライアントセッションマネージャ150は、クライアントセッションと、関連するクライアントプロファイル158とを作成および管理するように構成される。クライアントマネージャ32に最初に接続する際、クライアントは一般に、固有のプロファイルキー(例えばユーザ名)を使用してクライアント自体を明らかにする。クライアントセッションマネージャ150は、このキーに一致する以前に保存したプロファイルをクライアントプロファイルリポジトリ158からロードするか、または新しいクライアントが使用を開始するための新しい空のプロファイルを作成する。クライアントプロファイルは、一般に同義でオブジェクトフィルタリング規則、オブジェクト評価規則、または単にオブジェクト規則と呼ばれる、ストリーム中のオブジェクトに作用する特定の規則およびフィルタとして、特定のクライアントが加入したオブジェクトタイプまたはデータストリームに関する様々なデータを格納するのに使用することができる。このプロファイルは、クライアント18とクライアントマネージャ32との間の通信リンクを維持する役割を果たし、かつ加入選択および他のプロファイルデータに従ってデータオブジェクトおよびオブジェクト更新をクライアントに送る役割も果たすクライアントセッション154の動作を構成するのに使用される。
【0051】
1つまたは複数のオブジェクト状態マネージャ152は、クライアントが加入しているストリーム中のオブジェクトの現在の状態を維持し、オブジェクトが状態を変更したときを示すように構成される。状態変化を検出する方式は、少なくとも部分的に、入力データストリームのフォーマットと、入力データストリームが差分データイベント(好ましい)を含むか、完全なデータセットを含むか、それとも中間フォーマットを含むかどうかに依存する。
【0052】
クライアントが加入したストリームからのオブジェクトの状態変化に応答して、クライアントセッション154はその変化を評価して、その変化がクライアントに転送すべきタイプであるかどうかを判定する。ソフトコード化フィルタやカスタムプログラム式ビジネス論理などの評価規則は、クライアントのプロファイル内に維持することが好ましい。オブジェクトをクライアントに渡すべきであることをフィルタリング規則および評価規則が示す場合、適切な更新アクションが送達マネージャ156に渡され、その更新アクションが送達マネージャ156でキューに入れられ、必要なら、その後でクライアントにプッシュされる。
【0053】
様々な送達技法が利用可能である。各クライアントはそれ自体の専用送達マネージャ156を有することが好ましい。専用送達マネージャ156は、それぞれのクライアントイベントキュー165を維持し、例えば利用可能な帯域幅、ネットワーク遅延、およびクライアント応答時間を補償する必要に応じて速度を調節して、適切な速度で更新イベントをクライアントにプッシュする。その結果、リアルタイムデータの送達は、クライアントが加入したオブジェクトプールの一貫したビューのために必要なコンテンツだけを、リモート接続および装置が首尾よくサポートすることができる速度で転送することによって最適化される。
【0054】
上記で論じたように、オブジェクト状態マネージャ152は、上流側ソース、好ましくはリアルタイム情報マネージャ30からオブジェクトコンテンツデータを受け取り、ストリームによって搬送されるすべてのオブジェクトの現在の状態のコピーを例えばオファープールキャッシュ160中に維持するように構成される。加えて、オブジェクト状態マネージャ152は、オファープールキャッシュ160内のオブジェクトに関する変化を検出し、このオブジェクト(またはオブジェクトタイプ)を監視するクライアントが更新を要求できることを示すイベントまたは通知をパブリッシュし、その結果適切なクライアントセッション154がアクションを開始できるようにさらに構成される。
【0055】
クライアントセッション154がクライアントに対して確立されるとき、クライアントセッションマネージャ150は、例えばクライアントプロファイル内に反映されるように、クライアントが加入したデータストリームにオブジェクト状態マネージャ152が確実に接続されるようにする。クライアントマネージャ32は、各アクティブクライアントセッション中のクライアントプロファイル内の加入の集合に従ってオンデマンドにストリームに加入する。現在監視されていないコンテンツストリームへのアクセスをクライアントセッションが要求するとき、クライアントセッションマネージャ150は、適切なオブジェクト状態マネージャ152によってそのストリームへの加入を開始する。
【0056】
新しいコンテンツストリーム加入が開始されるとき、オブジェクト状態マネージャ152は、ストリームの源でリポジトリ/データベースから初期ストリーム状態を取り出すための要求を発行し、この情報を使用してそれぞれのオファープールキャッシュ160を初期化する。オブジェクト状態マネージャ152はまた、適切な通信リンクを確立してコンテンツストリーム58上のデータを受け取り、着信ストリーム上のオブジェクトの状態の監視を開始する。クライアントマネージャが加入するコンテンツストリームは、一続きのイベントからなることが好ましい。
【0057】
オブジェクト状態のスナップショットが最初に送達され、または得られ、追加、削除、および更新などの状態に対する変更がその後で受信される。ストリーム中のオブジェクトに対する変更は、関心(interest)を登録したクライアントセッションにパブリッシュされる。2から3日など所定の期間、関心が登録されていないストリームはパージすることが好ましい。
【0058】
単一のオブジェクト状態マネージャ152、および関連するオファープールキャッシュ160を確立して、すべての加入したストリーム上のオブジェクトの状況を監視および維持することができるが、複数のオブジェクト状態マネージャ152をサポートして、それぞれが単一の入力ストリームを監視することが好ましい。同様に、各クライアントは、それ自体の専用クライアントセッションと、関連する送達マネージャを有することが好ましい。その結果、クライアントマネージャ32は、複数のクライアントセッションを有することができ、複数のオブジェクト状態マネージャがすべて同時に動作する。このような多重スレッド環境を図7に示す。並行するオブジェクト状態マネージャ152およびクライアントセッション154の数は、ホスティングマシンの速度および資源だけによって制限されることが理解されるであろう。複数のクライアントマネージャプロセスが、マシンのファーム全体にわたって動作し、潜在的には任意の数のクライアントをサポートする非常にスケーラブルな環境をサポートすることができる。
【0059】
図8を参照すると、オブジェクト状態マネージャ152の好ましい実装が示されている。各オブジェクト状態マネージャ152は、関連するオブジェクトイベントキャッシュ160と、監視されるストリームによって搬送されるオブジェクトに関する変化の通知を受け取るべきプロセスを示すテーブル164を有する。一般に、このようなプロセスは様々なクライアントセッションである。しかし、イベントは他のプロセスに対しても発行することができる。
【0060】
データストリームに加入するために最初の要求を行うとき、クライアントセッションマネージャ150は、そのストリームを監視するためにオブジェクト状態マネージャ152のインスタンスを開始する。クライアントには、クライアントが加入することができるすべてのストリームを示す情報(例えばクライアントプロファイルまたは他の場所の情報に従って使用制約を受ける対象)を与えることが好ましい。この情報は、クライアントセッションマネージャ150により、接続されるリアルタイムマネージャ30上に存在するタイピングツリーデータからタイプリーフノードを抽出することによって容易に決定することができる(図3〜4参照)。タイピングツリー66のコピー66’は、このデータへのアクセスを単純にするためにクライアントマネージャ32で維持することができる。
【0061】
オブジェクト状態マネージャ152が最初に開始するとき、監視すべきデータストリーム上で搬送されるオブジェクトの現在の状態のスナップショットが得られ、それぞれのオブジェクトキャッシュ160を初期化するのに使用される。このプロセスの助けとするために、状態ディスパッチモジュール170を提供して、様々なオブジェクト状態マネージャ152.1〜152.Nによる、リアルタイム情報マネージャ30によって維持されるオファープール56などのオブジェクトデータソースデータベースへのアクセスを調整する。
【0062】
オブジェクト状態マネージャ152からの要求を受け取ったとき、状態ディスパッチモジュール170は、それぞれのリアルタイム情報マネージャ30中のオファープール56から適切なオブジェクトデータを得る。次いでこのデータを使用して、要求側オブジェクト状態マネージャ152についてのオブジェクトキャッシュ160を初期化し、オブジェクト状態マネージャはその結果の通知を受ける。状態ディスパッチモジュール170に複数の要求を発行することが可能となるように、状態要求キュー172を設け、資源が利用可能となったとき、各要求を処理することができる。
【0063】
オファープール56からオブジェクトデータを得るために様々な技法を利用することができる。好ましい実装では、オファープール56は、状態ディスパッチモジュールによる、格納されたオブジェクトデータへの直接アクセスが可能となるように実装される。オブジェクトデータを取り出すための他の技法も使用することができる。他の技法の適合性は、システムを実装する際に使用する利用可能な通信チャネルおよびデータベース技術に依存する。
【0064】
妥当なスループットを実現し、同時に状態ディスパッチモジュール170による同時アクセスの数も制限するために、データアクセススレッドプールを設け(図示せず)、オブジェクト状態マネージャから要求されるデータを処理するようにプール中の各スレッドを構成することが好ましい。スレッドが利用可能となったとき、スレッドは、要求キュー172上の次の要求を処理する。
【0065】
オブジェクトキャッシュ160を初期化した後、オブジェクト状態マネージャ152は、それぞれのデータストリームの監視を開始する。着信データは差分形式であることが好ましく、ストリーム上のデータオブジェクトを受け取る際、固有オブジェクトキーを使用して、オブジェクトキャッシュ160中の対応するオブジェクトを指示通りに更新する(非差分データの場合、オブジェクト状態マネージャは、受け取ったオブジェクトがキャッシュしたバージョンと異なっているかどうかを判定し、次いで、場合によっては、変更のタイプが後続のアクションを必要とするものかどうかを判定する機能をさらに含むことができる)。ストリーム上で差分オブジェクトを受け取ったときなど、オブジェクト更新を検出したとき、オブジェクトイベントを発行し、加入者リスト164に示される通りに、すべての加入クライアントに向けて送る。オブジェクトイベントの目的は、特定のデータオブジェクトに関してある種の変更が行われたことを様々なクライアントセッションに通知し、それによってこの変更をクライアントに転送するかどうかについての決定を行うことができるようにすることである。オブジェクトイベントは、オブジェクト自体の全体、(例えばオファープールキャッシュ中の)オブジェクトへのポインタ、オブジェクトのどの側面が変化したかについての表現、またはこの情報へのポインタを含むことができる。
【0066】
オブジェクト状態マネージャ152ごとに更新キュー162をさらに設け、ストリーム上で受け取ったオブジェクトに作用を与えることができるまで、オブジェクトを一時的に格納することができる。オファープールのスナップショットの要求と、後続のキャッシュ初期化との間の期間に、データストリーム上で受け取ったオブジェクトを格納するためにも更新キュー162を使用することが好ましい。キャッシュを初期化した後、キューの内容がキャッシュに加えられる。
【0067】
一般に、ストリームは、そのストリームに加入したクライアントセッションがアクティブであるとき(またはクライアントが加入していない状態に入った後の限定された期間)にだけ監視される。しかし、オブジェクト状態情報をクライアントにより迅速に提供することができるように、加入クライアントが存在しなくても、1つまたは複数の選択したストリームを連続的に監視することが有利な環境が存在してもよい。
【0068】
図9を参照すると、クライアントセッション154と、図6の送達マネージャ156の好ましい実装とを示し、クライアント18上に常駐するシステムの高レベルビューをさらに示すブロック図が示されている。クライアントセッション154および送達マネージャ156の動作をさらに議論する前に、クライアントシステム18の好ましい実施形態のアーキテクチャおよび動作を簡単に議論することが有益である。
【0069】
好ましい実施形態では、クライアント18上で動作するソフトウェア190は、クライアントが加入しているデータストリーム中の、クライアントにとって関心のある様々なオブジェクトの現在の状態のコピーを維持する。オブジェクト状態は、クライアントシステム上に存在する、加入したストリームオブジェクトプール194中に含まれることが好ましい。オブジェクト状態マネージャ152の動作と同様に、クライアントが最初にデータストリームに加入するとき、そのデータストリーム中のオブジェクトのスナップショットが取り出され、任意のフィルタ、規則、または定位置にある可能性のある他の論理によって制約され、クライアント18に送達され、クライアントのオブジェクトプール194に格納される。好ましい実装では、状態ディスパッチモジュール170(図8参照)は、クライアントセッションマネージャ150または様々なクライアントセッション154からのそのようなデータ要求を処理するように構成される。少なくとも1つの加入クライアントを有するすべてのデータストリームは、ストリーム中のオブジェクトの現在の状態を維持する、関連するオブジェクト状態マネージャ152を有するべきであるので、状態ディスパッチモジュール170は、要求された情報を様々なオブジェクトキャッシュ160から直接取り出すことができ、クライアントセッションマネージャ150および/または専用クライアントセッション154を介してデータをクライアントに返すことができる。初期オブジェクトスナップショットを取り出した後、クライアントソフトウェア190は、クライアントでクライアントマネージャ32から取り出したイベントに従ってオブジェクトおよび関連するデータを変更する。
【0070】
クライアントシステム上でオブジェクトを編成し、かつ、どのオブジェクトを所与のクライアントに送達すべきか、そのオブジェクトをクライアントどのように編成し、閲覧すべきか、ならびに他の機能を(ユーザのプロファイルで)指定するのに、様々な技法を使用することができる。クライアントのユーザプロファイルは一般に、データストリーム加入を指定し、かつそのストリーム中のオブジェクトをどのようにフィルタリングし、操作し、クライアントシステム18上に表示するかに関するプリファレンスを定義する。この情報は、フォルダのデータコンテンツを記述する1組の属性と、それを操作する方法と、それを視覚的に表す方法とをそれぞれ含む1つまたは複数のフォルダをクライアントプロファイルが含むフォルダパラダイムに従って編成することが好ましい。
【0071】
最も好ましい実施形態では、フォルダは以下の属性を含む。
(a)クライアント側とサーバ側の両方のフォルダを表すJava(登録商標)クラスを定義し、属性の継承に関する任意選択の親関係をさらに定義することができる構成データおよび初期化データ。
【0072】
(b)フォルダがリアルタイムデータを受け取る1つまたは複数のコンテンツストリームへの加入。
【0073】
(c)例えば適切な規則ベースの言語で指定された論理規則のタイプ、名前、アプリケーションに従って、データストリームからのオブジェクトを制約し、フィルタリングするコンテンツ制約および/またはフィルタ。
【0074】
(d)フォルダまたは特定のフォルダ関係の機能(例えばオンライン取引)へのユーザアクセスを制限する許可。
【0075】
(e)データをどのように表示すべきかを指定するフォーマット規則、表示の順序を示すソート規則、ならびにフォント、サイズ、および色を含む様々な視覚特性などの表示属性。
【0076】
様々なクライアントフォルダの定義属性は、所与のクライアントについての、並行する、または経時的な複数のセッションにわたって持続できるように、クライアントプロファイル158の一部としてクライアントマネージャ32で保存することが好ましい。したがって、図9に示すように、クライアントマネージャ32は、クライアントによって定義される様々なフォルダ192に一般に対応するフォルダイメージ180を有することになる。イメージ180はクライアントフォルダ192の厳密な複製である必要はなく、どちらのセットも実装条件に関して適宜追加のデータを含むことができることに留意されたい。大まかには、クライアント側機能は、様々なオブジェクトおよびデータの提示および表示を対象とし、クライアントマネージャ機能は、どのデータをクライアントに提供すべきかを決定するのに使用するデータおよび規則を評価することを対象とする。その結果、クライアント側フォルダ192は、実質上クライアントで、現在のフィルタおよび制約のコピーを含むことができ、その結果クライアントは、通常はクライアントによって実行されない新しい規則を閲覧、編集、および作成することができる。したがって、そのような規則をクライアントで格納および提示する形式は、クライアントマネージャバージョン180に存在する実行可能バージョンとは異なる可能性がある。
【0077】
クライアントがフォルダ192を「オープン」するとき、クライアントソフトウェア190は、フォルダおよびそのコンテンツを定義する加入およびフィルタに作用し、個別のコンテンツ項目の表示を作成し、オブジェクトプール194から特定のオブジェクトデータを抽出する。オブジェクトデータはユーザのフォルダ中に含まれていると見なすことができるが、恐らくは異なる方式で、または異なる条件の下で表示される同じオブジェクトが、複数のフォルダ中に出現する可能性がある。好ましくは、所与のフォルダ中に含まれるオブジェクトは、オブジェクトキーに従って識別され、次いでオブジェクトキーは、オブジェクトが表示されるときに、必要に応じてオブジェクトプール194から実際のオブジェクトデータを取り出すのに使用することができる。
【0078】
様々な編成上の仕様および表示の仕様に加えて、ユーザプロファイルまたはフォルダは、加入したデータストリーム中のどのオブジェクトがクライアントに渡されるか、ならびに、どんな条件の下で、オブジェクトをどのようにどこに表示すべきかを定義する制約およびフィルタを配置する定義済み規則を含むことができる。例えば、アメリカ証券取引所(「AMEX」)上にリストされるすべての株式を含むストリームに加入するクライアントは、「技術系の会社」など特定のカテゴリ内の株式に関するオブジェクトだけの送達を指定するようにフィルタを定義することができる。クライアントは、例えばオブジェクトの出来高が特定の量を超えるときにオブジェクトを第1フォルダ中に表示し、オブジェクトの価格が所与の期間に指定の量を超えて変化したときだけに第2フォルダに表示するように指定する1組の制約をさらに定義することができる。規則は、事前定義された組を選択することによって、または当業者に周知の他の手段によって、規則ベースの言語を使用して記述することができる。
【0079】
好ましい実装では、クライアントマネージャフォルダプラグインを開発し、かつクライアントマネージャ内に配置することを可能にすることによって、オジェクトイベントのより精巧な処理が得られる。クライアントプロファイル中のプラグインクラスオブジェクトは、加入したコンテンツストリームおよび関連するイベントを下流側のクライアントにプッシュする前に、単純な規則言語では容易に表現されない条件または状態に従って、それらに対して特別な論理およびフィルタリングを実施することができる。クライアント側アプリケーション上では、加入したストリームのデータ操作および視覚表現に関する任意の特殊化を実施するために、対応するサブクラスを提供することができる。
【0080】
有利なことに、広範なビジネス特有の提示および機能をユーザに提供するために、サーバ側フォルダプラグインとクライアント側プラグインはタンデムに動作することができる。例えば、「金融市場取引における認定発行者リスト」に関してプラグインを定義することができる。そのリストは、発行者のユーザ定義リストに関連しない任意の情報を除去するための特別なビジネス論理を含むことができる。同様に、プラグインを使用して、関心のある特定の国債でユーザがフォルダを構築できるようにすることができる。
【0081】
クライアントセッション154がオブジェクトイベントを受け取ったとき、クライアントセッションは、例えば関連するデータストリームへの加入を含むクライアントフォルダを識別し、次いでそのフォルダに含まれる関連する規則を実行することによって、オブジェクトに関連するデータストリームに適用される様々な規則およびプラグインを実行する。実行される規則は一般に、クライアントの加入したオブジェクトプール194にオブジェクトを加えるべきか、オブジェクトプール194からオブジェクトを削除すべきか、またはオブジェクトプール194内のオブジェクトを更新すべきかを指定する状態イベントと、例えば特定のフォルダにオブジェクトを加えるべきか、または特定のフォルダからオブジェクトを除去すべかを指定するフォルダイベントとを含む1組の潜在的応答を生成する(実行規則はアクションを起こす必要がないことも示すことができる)。
【0082】
次いでクライアントセッションは、規則の実行によって生成された様々なイベントを集約し、組み合わせ、オブジェクトに関する状態変化イベントを生成し、必要なら、個々のフォルダに結合され、状態イベントに関連する一連の関係するフォルダアクションと共に生成する。例えば、特定のオブジェクトの価格が上昇したことを示すオブジェクトイベントは、オブジェクトに関する更新イベント、第1フォルダに関する追加イベント、および第2フォルダに関する削除イベントとなる可能性がある。次いで集約したイベントは、送達マネージャ156に送られ、好ましくは、関係するデータオブジェクトを示す関連するIDを有する単一のカプセル化イベントオブジェクトに組み合わされる。
【0083】
最も単純な形では、送達マネージャ156は、受け取ったオブジェクトが配置されるクライアントイベントキュー165と、イベントキュー165からオブジェクトを抽出し、関係するデータをクライアント18に送達するように構成されたプッシュスレッド184とを備える。しかし、好ましくは、送達マネージャ156は、同じオブジェクトに関係するキュー中のイベントを集約するように構成されたキューマネージャ182を含み、プッシュモジュール184は、ラウンドトリップネットワーク移動時間と、クライアントが応答するのにかかる時間の測定に応答して、データをクライアントに送達する速度を変化させるように構成される。
【0084】
好ましい実装では、キューマネージャ182がイベントを受け取ったとき、キューマネージャ182は、新しく受け取ったイベントに関連するオブジェクトに関係するキュー中に既に存在するイベントがあるかどうかを判定する。イベントがある場合、処理を開始し、それによって(集約イベントオブジェクト中の)キューに入れられた、新しく受け取ったイベントを解析し、イベントを組み合わせ、または省略(eliminate)し、それによってクライアントに最終的に送達されるデータ量を低減する。この機能は、キューマネージャ182中に完全に実装することができる。しかし、受け取ったイベントオブジェトは、フォルダおよび状態イベントに関する基本的な1組の集約規則および組合せ規則を包含する組込み機能を含むことが好ましい。これらの機能は、同じデータオブジェクトに関係するキュー中の他のイベントと統合する方法をイベントオブジェクトに知らせる。
【0085】
状態イベントと、恐らくは1つまたは複数のフォルダイベントとを含む集約イベントなどのイベントを受け取ったとき、キューマネージャ182はまず、例えば受け取った状態イベント中の状態集約機能が存在するならばそれを実行することによって、状態イベント集約を実施する。次いでフォルダイベント集約機能を適宜実行することができる。
【0086】
状態イベントを受け取るとき(対応するオブジェクトに関する、以前にキューに入れたイベントが存在しないとき以外)に生じる可能性のある3つの主要な状態がある。1つの状態は、オブジェクト更新イベントを受け取り、更新イベントまたは追加イベントが同じオブジェクトに関して既にキューに入れられている場合である。この状態が生じたとき、受け取った更新イベントに反映されるデータ変更が、既にキューに入れられたオブジェクト更新イベントまたはオブジェクト追加イベント中のデータに適用される。新しい更新イベントに関連するフォルダイベントは、キューに入れられたイベントに関連するものと組み合わされ、フォルダイベントは適宜更新、追加、または除去される。次いで受け取った更新イベントは、保留イベントと統合した後、廃棄することができる。
【0087】
2番目の状態は、オブジェクト削除イベントを受け取り、更新イベントまたは追加イベントが同じオブジェクトに関して既にキューに入れられているときである。この状況では、新しい削除イベントが、以前にキューに入れた更新イベントまたは追加イベントを効果的に取り消す。キューに入れられた状態イベントと、関係する任意のフォルダ追加イベントはキューから除去され、削除イベントがキュー中に配置される。
【0088】
3番目の状態は、オブジェクト追加イベントを受け取り、そのオブジェクトに関する削除イベントが既にキューに入れられているときである。削除イベントはまだクライアントに送られていないので、オブジェクトはまだクライアントのオブジェクトプール中に存在し、オブジェクトをクライアント上に追加することは、既に存在しているデータと競合する可能性がある。したがって、追加イベントは、追加イベントで指定されるデータオブジェクトに関するデータ属性を含む「更新」イベントに変換される。
【0089】
有利なことに、保留イベントキューに対してこのタイプの集約手順を連続的に実行することにより、複製データと不要なデータ伝送がキューから選ばれる。これにより、クライアントに送らなければならない全データ量が低減し、それと共に、データをクライアントで受け取ったとき、クライアントが現在のオブジェクト状態を反映することが依然として保証される。さらに、最悪のシナリオでは、現オブジェクトタイプごとに、キューに入れられた状態イベントは多くても1つしか存在しないので、この集約方式はまた、キューの全長を制限する。
【0090】
クライアントに送られるイベントは一般に、クライアントセッションによって生成され、送達マネージャによってキューに入れられたイベントと同じオブジェクトデータを表す(所与のオブジェクトに対する追加指示、変更指示、または削除指示など)。したがって便宜上、本明細書ではこのイベントを同様の名称で呼ぶ。クライアントに同報通信されるイベントがクライアントセッションおよび/または送達マネージャで受信されるイベントから導出される間、クライアントに同報通信されるイベントのフォーマットおよび構成は、内部イベントとは異なる可能性がある。例えば、集約機能などの送達マネージャが受け取るイベントの副次的側面は、クライアントに転送する必要はない。同様にクライアントは、イベントに関する実際のデータ変化を受け取らなければならず、一方内部イベントは、別の所に格納されたデータへのポインタを含むことができる。状態イベントからのクライアントイベントの導出は、イベントがクライアントイベントキュー内に配置されたとき、または伝送するためにイベントがキューから除去され、準備されるときなど、どんな適切な時点でも行うことができる。加えて、「導出された」クライアントイベントは、特定の実装に関して適切である場合はソース状態イベントと同じにすることができる。
【0091】
クライアントイベントを集約することに加えて、ネットワークの遅延および応答の遅延を反映するように、送達マネージャ156からクライアントにイベントを送達する速度を最適化することが好ましい。クライアントマネージャ32に接続されるクライアントは、リモートマシン資源(例えばCPUおよびメモリ)、ネットワーク帯域幅、および待ち時間に関して非常に様々な能力を有する可能性がある。クライアントは、潜在的に、非常に大きいネットワークパイプを有する、高い能力のワークステーション上で動作する可能性があり、または低速なワイヤレス接続を有するハンドヘルド装置上で動作する可能性がある。クライアントセッションが利用可能な装置やネットワークの特性についての知識を必要とせずに、データメトリックがクライアントセッション154によって連続的に収集および監視され、それを使用して、適切な送達制約が決定される。
【0092】
クライアントセッションの期間ごとに、利用可能なクライアント資源に特有のメトリックが動的に収集される。最適化はクライアントごとに行われるので、システムは、多くの異なる装置や接続性の選択肢に関して、多種多様な送達要件をサポートすることができ、クライアントは、クライアントの接続帯域幅またはハードウェア能力を指定する必要がない。
【0093】
特定の実装では、ネットワーク移動時間およびクライアントイベント処理速度が測定される。送達マネージャ156は、データがクライアントにプッシュされるときと、データが到着したことを示すHTTP応答が受信されるときの間の遅延を測定するなどの様々な技法を用いて、ネットワーク移動時間を測定することができる。あるいは、クライアントセッション154は、クライアントにテストメッセージを周期的に発行し、クライアントからの応答を受け取る前に期間を測定することもできる。クライアントがイベント(例えば、ユーザの画面上に表示される更新イベント)を完全に認識するのにかかる時間を決定するために、クライアント性能を監視し、周期的に、または要求時に性能データをクライアントセッション154に転送する性能モニタ196を、クライアント18に実装することができる。
【0094】
性能データは解析され、ネットワーク移動時間と、(イベント処理速度に基づいて)サイクル期間中にクライアントが首尾よく処理することができるイベントの理論的最大数とに基づいて、サイクル期間が決定される。次いでこの制約がプッシュスレッドに適用され、プッシュスレッドは、伝送速度と、未処理のデータメッセージの数をそれに応じて調節する。経時的に、メトリックは変化する可能性があり、それに応じて制約が調節される。
【0095】
各クライアントは、これらのメトリックを検査し、イベントのフローを下流側で動的に調節する、クライアントマネージャ32中で実行される専用送達マネージャスレッド156を有するので、クライアントにとって利用可能な資源が与えられる効率的な送達を一貫して達成することができる。有利なことに、この適応データストリーミングは、イベント集約プロセスと共に動作し、クライアントが処理するのにそのイベントを過度に迅速に下流側に送達しないことが保証され、それと共に、送達されるイベントがオブジェクトの現在の状態を反映することも保証される。その結果、クライアントでの各データ更新間の期間は変動することができるが、更新を受け取ったとき、(更新時の)データの効果的なリアルタイムステータスが維持される。
【0096】
クライアントシステム:
クライアントシステム18は、様々な方式で構造化することができる。好ましい実施形態では、図10に示すように、クライアントシステムは、3つの層の機能、すなわち通信200、コンテキスト202、およびフォルダ204からなることが好ましい。通信層200は、クライアント18とクライアントマネージャ32との間の接続を管理するように構成される。具体的な実装では、通信は、HTTPトンネリングトランスポート(インターネット接続の場合)、またはソケット(イントラネット接続の場合)のどちらかを用いて達成される。
【0097】
コンテキスト層202は、イベントおよびメッセージをクライアントマネージャ32に送り、かつクライアントマネージャ32から受け取るように構成される。コンテキストは、フォルダ層204に対してイベントおよびメッセージの中心配布地点として機能する。フォルダ層204は、情報の論理グループと、情報ストリーム内の個別の数組の関係するコンテンツとを含む。図9に示すクライアントフォルダ192に関連して上記で論じたように、フォルダは、1つまたは複数の情報ストリームへの加入を表し、各加入は、リアルタイム情報マネージャ30によって分類およびパブリッシュされ、クライアントマネージャ32を介して利用可能とされるストリームのうちの1つにマッピングされる。加入およびフィルタは、フォルダの特定のコンテンツを定義する。
【0098】
好ましくは、クライアント出力は、グラフィカルな列−行(スプレッドシート)フォーマットの状態にされる。しかし、代替フォーマットも適宜利用することができる。例えば、プロセスは、クライアントAPIを使用して、ネットワーク内のサーバプロセスを確立し、コンテンツに加入して、サーバ側の要求を受け取り、コンテンツをHTMLページとして表現することができる。ポイントは、クライアントがホストサービスおよび情報ストリームをサポートするのに適した形式にすべきであるということである。有利なことに、クライアントマネージャ32は、受け取ったオブジェクトデータをクライアントが処置する方式とは無関係であり、その結果、この方法により、多種多様なクライアントフォーマットを実装し、サポートすることができる。
【0099】
HTTPトンネリングトランスポート:
様々な通信技法、インターフェース、およびプロトコルを使用して、クライアントマネージャ32をクライアントと接続することができる。好ましい実装では、例えば図1に示すように、HTTPトンネリングトランスポートを使用する仮想永続接続をサポートするために、HTTPトンネリングトランスポート層38が提供される。クライアントがシステムにアクセスすることを求める有効な要求を発行するとき、固有のセキュアセッション鍵を割り当て、クライアントのセッションの期間、クライアントを特定のサービスに結合するために使用される。
【0100】
初期HTTP要求チャネルは、開いた状態に保つことができ、「プッシュ」チャネルまたは「パブリッシュ」チャネルとなることができる(したがって、潜在的に非常に長いHTTP応答として接続の経路中のすべてのホップに現れる)。この接続は開いたままとなるので、この接続は、リアルタイムにコンテンツをクライアントにパブリッシュする経路として使用することができる。これを所与のストリームに対して効率的にかつ確実に行うために、サービスからの各イベントを順序付け、キューに入れ、符号化し、送信し、格納することが好ましい(接続性の問題のために再送信が必要な場合)。
【0101】
所与のチャネルが有効なままとなることを保証するために、ハートビートメッセージを周期的な間隔でクライアントに送ることもできる。問題を検出した場合、イベントの伝送をサスペンドすることができ、クライアントには、セッションへの接続性を再確立し、通常動作を回復および再開する期間が与えられる。切断のパターンが明らかとなった場合(例えば、クライアントのファイアウォールプロキシが接続を3分未満に制限するときに見つけることができるように)、クライアントのセッションに関するタイミングパラメータは、例えば現チャネルを閉じ、ファイアウォールによって干渉される前に新しいチャネルを開くことによって、将来の問題を回避するよう試みることで調節される。具体的には、動的なタイミングパラメータが与えられる場合、システムは、どんな問題もそれが生じる前に回避するために、クライアントが新しいHTTP接続への既存の「プッシュ」チャネルを周期的にサイクルするように先を見越して要求することができる。クライアントおよびトランスポートシステム38は、エンドユーザへのリアルタイムデータの一貫したフローを乱さないように、このプロセスを非同期かつ透過的に実施することが好ましい。
【0102】
結論
本発明を、その好ましい実施形態を参照しながら具体的に図示し、説明したが、本発明の精神および範囲から逸脱することなく、形態および詳細に様々な変更を行うことができる。具体的には、本発明の好ましい実施形態は、金融案内に関するデータの処理および配布を対象とするが、分散在庫システム、ネットワークベースのオークションシステム、リモートデータ監視など、異なる題材を対象とするデータオブジェクトのリアルタイム分散を可能にする目的でこの方法およびシステムを使用することもできる。
【図面の簡単な説明】
【図1】
許可された加入者にリアルタイムコンテンツストリームを送達し、かつ様々なネットワークを介してホストと加入者との間、および企業と顧客との間のリアルタイムな対話を可能にする統合システムのブロック図である。
【図2】
図1のリアルタイム情報マネージャの動作環境を示す高レベル図である。
【図3】
リアルタイム情報マネージャの好ましいアーキテクチャを示す図である。
【図4】
データ入力を処理するためにリアルタイム情報マネージャが使用するタイピングツリーを示す図である。
【図5】
本発明のリアルタイム情報アーキテクチャのスケーラビリティを示すブロック図である。
【図6】
クライアントマネージャの好ましいアーキテクチャを示す図である。
【図7】
複数のクライアントセッションをサポートする図6のクライアントマネージャを示すブロック図である。
【図8】
図6のオブジェクト状態マネージャの好ましい構造を示すブロック図である。
【図9】
図6のクライアントセッションおよび送達マネージャを示し、クライアント側システム要素の高レベルビューをさらに示すブロック図である。
【図10】
クライアントシステムアーキテクチャの高レベル図である。
Claims (59)
- 周期的更新を受ける情報を含む複数の未加工イベントを搬送する未加工データストリームを処理するシステムであって、
前記未加工データストリームを入力として受信する情報マネージャと、
前記情報マネージャに接続され、オブジェクトタイピング規則およびフォーマット規則が格納された処理データベースと、
前記情報マネージャに接続されたオブジェクト格納プールとを備え、
前記情報マネージャは、
特定の未加工データストリーム入力上で搬送される未加工データオブジェクトを受信し、
前記オブジェクトタイピング規則に従って前記未加工データオブジェクトのオブジェクトタイプを識別し、
識別した前記オブジェクトタイプに関する前記フォーマット規則に従って、前記未加工データオブジェクトのコンテンツに基づいてフォーマット済みデータオブジェクトを生成し、
前記フォーマット済みデータオブジェクトの前のバージョンが前記オブジェクト格納プール内に存在するかどうか判定し、否定的判定に応答して、
(a)前記フォーマット済みデータオブジェクトを加入者プロセスに提供し、
(b)前記オブジェクト格納プール内に前記フォーマット済みデータオブジェクトを格納し、
否定的判定に応答して、
(a)生成した前記フォーマット済みデータオブジェクトと対応するように前記フォーマット済みデータオブジェクトの前記前のバージョンを更新し、
(b)前記フォーマット済みデータオブジェクトと前記前のバージョンとの間のデータ差を識別し、
(c)出力同報通信データチャネル上で前記データ差を同報通信するように構成されることを特徴とするシステム。 - 前記情報マネージャは、
それぞれのシーケンス番号を、前記オブジェクト格納プール内に格納されたフォーマット済みデータオブジェクトと関連付け、
前記格納プール内の前記フォーマット済みデータオブジェクトに対する更新の間に、前記それぞれのシーケンス番号を増分し、
前記データ差と共に前記それぞれのシーケンス番号を同報通信するようにさらに構成されることを特徴とする請求項1に記載のシステム。 - 前記情報マネージャは、識別した前記オブジェクトタイプに従って複数の同報通信チャネルから同報通信チャネルを選択するようにさらに構成されることを特徴とする請求項1に記載のシステム。
- 前記同報通信チャネルに接続された少なくとも1つのクライアントマネージャをさらに備え、前記クライアントマネージャは、
特定のフォーマット済みデータオブジェクトを受信し、
受信した前記フォーマット済みデータオブジェクトを、前記クライアントマネージャに関連するデータベース内に格納し、
前記同報通信データチャネルを介して、前記特定のフォーマット済みオブジェクトに関するデータ差を受信し、
受信した前記データ差に従って、格納した前記フォーマット済みデータオブジェクトを更新するように構成されることを特徴とする請求項1に記載のシステム。 - 前記クライアントマネージャは、複数の加入クライアントに、前記関連するデータベース内に格納されたデータオブジェクトに関する情報を提供するようにさらに構成されることを特徴とする請求項4に記載のシステム。
- 複数のクライアントマネージャが、前記同報通信データチャネルに接続されることを特徴とする請求項4に記載のシステム。
- 前記未加工データオブジェクトは、金融商品案内に関する情報を含むことを特徴とする請求項1に記載のシステム。
- 金融商品プロバイダによって生成された未加工データストリームを処理し、金融商品案内に関係し、周期的更新を受ける情報を含む複数の未加工データオブジェクトを搬送する方法であって、
未加工データストリーム上で搬送される未加工データオブジェクトを受信するステップと、
前記未加工データオブジェクトのオブジェクトタイプを決定するステップと、
決定した前記オブジェクトタイプに従って選択された1組のフォーマット規則を適用することによって、前記未加工データオブジェクトのコンテンツに基づくフォーマット済みデータオブジェクトを生成するステップと、
前記フォーマット済みデータオブジェクトの前のバージョンがオブジェクト格納プール内に存在するかどうか判定するステップであって、前のバージョンが前記オブジェクト格納プール内に存在する場合、
前記フォーマット済みデータオブジェクトと前記前のバージョンとのデータ差を決定し、
生成した前記フォーマット済みデータオブジェクトと対応するように前記フォーマット済みデータオブジェクトの前記前のバージョンを更新し、
前記フォーマット済みデータオブジェクトに関連するシーケンス番号を増分し、
前記オブジェクトタイプに従って複数の同報通信チャネルから選択された出力同報通信データチャネル上で、前記データ差および前記シーケンス番号を同報通信し、
前のバージョンが前記オブジェクト格納プール内に存在しない場合、
前記フォーマット済みデータオブジェクトを加入者プロセスに提供し、
前記オブジェクト格納プール内に前記フォーマット済みデータオブジェクトおよび関連する初期シーケンス番号を格納するステップとを備えることを特徴とする方法。 - 前記フォーマット済みデータオブジェクトを提供する前記ステップは、前記出力同報通信チャネル上で前記フォーマット済みデータオブジェクトを同報通信することを含むことを特徴とする請求項8に記載の方法。
- 周期的更新を受けるデータを含むデータオブジェクトを、データ通信ネットワークを介して複数のクライアントに送達するシステムであって、
クライアントセッションマネージャと、
関連するオブジェクトプールキャッシュを有する少なくとも1つのオブジェクト状態マネージャと、
少なくとも1つのクライアントセッションとを備え、
前記クライアントセッションマネージャは、
クライアントから初期アクセス通信を受け取り、
前記クライアントに関連し、データストリーム加入と、前記加入データストリームに関連する少なくとも1つのオブジェクト規則とを示すデータを含むクライアントプロファイルをロードするように構成され、
各オブジェクト状態マネージャは、
それぞれのタイプのデータオブジェクトに関する情報を搬送する少なくとも1つの入力データストリームに接続し、
データオブジェクトの状態に対する変化を前記入力データストリーム上で受け取り、
特定のデータストリーム上の特定のデータオブジェクトに関する状態変化を受け取ったとき、関連する前記オブジェクトプールキャッシュを更新して、前記特定のデータオブジェクトの前記変化した現在の状態を反映し、状態変化が前記特定のデータオブジェクトに関して行われたことを示す前記特定のデータストリームに加入したクライアントに関するクライアントセッションに向けて送信されるオブジェクトイベントを生成するように構成され、
各クライアントセッションは、
オブジェクトイベントを受信したことに応答して、前記オブジェクトイベントによって通知される前記特定のデータオブジェクト変化に対して、前記それぞれのクライアントプロファイルからの前記特定の入力データストリームに関連する前記オブジェクト規則を評価し、
肯定の評価に応答して、前記特定のデータオブジェクトの前記現在の状態を前記それぞれのクライアントに送信するように構成されることを特徴とするシステム。 - 各クライアントセッションに関連する送達マネージャをさらに備え、
前記クライアントセッションは、状態イベントを前記関連する送達マネージャに転送することによって前記現在の状態を送信するように構成され、
前記送達マネージャは、
受信したクライアントイベントをクライアントイベントキュー上に配置するように構成されたクライアントキューマネージャと、
前記クライアントイベントキューから状態イベントを取り出し、前記状態イベントから導出されたクライアントイベントを前記それぞれのクライアントに送信するように構成されたプッシュモジュールとを有することを特徴とする請求項10に記載のシステム。 - 前記クライアントセッションおよび前記プッシュモジュールの少なくとも一方は、前記それぞれのクライアントとの通信の性能特性を監視し、前記監視した特性に応答して、クライアントイベントを送信すべき速度を動的に決定するように構成され、
前記プッシュモジュールは、前記動的に決定した速度でクライアントイベントを前記それぞれのクライアントに送信するように構成されることを特徴とする請求項11に記載のシステム。 - 前記キューマネージャは、
共通データオブジェクトに関係する前記それぞれのクライアントに送信すべきイベントを識別し、
前記識別したイベントの集約を開始し、それによって前記キュー内のクライアントイベントの数を低減するようにさらに構成されることを特徴とする請求項11に記載のシステム。 - 前記キューマネージャが受信する各状態イベントは、関連する集約機能を有し、
受信した状態イベントに共通のデータオブジェクトに関係する待ち行列化イベントを前記クライアントイベントキューが含むとき、前記キューマネージャは、前記受信した状態イベントに関連する前記集約機能を実行することによって集約を開始するように構成されることを特徴とする請求項13に記載のシステム。 - 各クライアントプロファイルは少なくとも1つのクライアントフォルダを含み、各クライアントフォルダは、少なくとも1つの加入データストリームを示し、前記加入データストリームに関連するオブジェクト規則を含むデータを含み、
前記クライアントセッションは、前記ストリームへの加入を示す前記クライアントプロファイル内のフォルダごとに、前記特定の入力データストリームに関連する前記オブジェクト規則を評価するように構成されることを特徴とする請求項10に記載のシステム。 - 1組のデータオブジェクトの前記現在の状態を求める要求をリクエスタから受信し、
前記組内の前記データオブジェクトに関する現在の状態情報を得て、
前記現在の状態情報を前記リクエスタに返すように構成された状態ディスパッチモジュールをさらに備えることを特徴とする請求項10に記載のシステム。 - 前記オブジェクト状態マネージャは、前記状態ディスパッチモジュールに、接続された入力データストリーム上で搬送される1組のデータオブジェクトの現在の状態を、前記入力データストリームに最初に接続する際に要求するように構成され、
返された前記現在の状態情報は、前記オブジェクト状態マネージャに関する前記それぞれのオブジェクトキャッシュを初期化するために使用されることを特徴とする請求項16に記載のシステム。 - 前記オブジェクト状態マネージャは更新キューをさらに含み、前記オブジェクト状態マネージャは、前記要求が未決定の間、前記入力データストリームから受け取った現在の状態を前記更新キュー上に配置し、キャッシュ初期化が完了した後、キューに入れた前記現在の状態を前記オブジェクトキャッシュ内のデータに適用するようにさらに構成されることを特徴とする請求項17に記載のシステム。
- 前記状態ディスパッチモジュールは、オブジェクト状態マネージャが受信する前記データストリームの送信側によって維持される少なくとも1つのオファープールに接続され、適切なオファープールから現在の状態情報を得るように構成されることを特徴とする請求項17に記載のシステム。
- 前記データオブジェクトは、金融商品案内に関係する情報を含むことを特徴とする請求項10に記載のシステム。
- 通信セッションが特定のクライアントと確立された後、前記クライアントセッションマネージャは、前記特定のクライアントに関連する前記プロファイルへの前記データストリーム加入に関連する前記オブジェクトプールキャッシュ内の前記データオブジェクトのスナップショットを前記特定のクライアントに送達するようにさらに構成されることを特徴とする請求項10に記載のシステム。
- 前記クライアントセッションマネージャは、通信セッション中の特定のクライアントが前記少なくとも1つのオブジェクト状態マネージャのうちの1つに現在接続されていない新しい入力データストリームに加入したことを検出したことに応答して、新しいオブジェクト状態マネージャを活動状態にし、前記新しい入力データストリームをサポートするようにさらに構成されることを特徴とする請求項10に記載のシステム。
- 少なくとも1つのコンテンツプロバイダから未加工オブジェクトデータストリームを受信し、前記入力データストリームを生成する少なくとも1つの情報マネージャをさらに備え、特定の入力データストリーム上で搬送される前記データオブジェクトは共通タイプであることを特徴とする請求項10に記載のシステム。
- 各情報マネージャは、前記入力データストリーム上で搬送される前記データオブジェクトの現在の状態を含む構造化オブジェクトプールをさらに含み、前記入力データストリーム上の前記オブジェクトイベントは、特定のデータオブジェクトの前記状態に対する差分的変化を表すことを特徴とする請求項23に記載のシステム。
- 周期的更新を受けるデータを含むデータオブジェクトを、データ通信ネットワークを介して複数のクライアントに送達する方法であって、
それぞれのタイプのデータオブジェクトをそれぞれ搬送する少なくとも1つの入力データストリームに接続するステップと、
少なくとも1つのクライアントとの通信セッションを確立するステップであって、各クライアントは、データストリーム加入を示すデータと、前記加入データストリームに関連する少なくとも1つのオブジェクト規則とを含む関連するプロファイルを有するステップと、
特定の入力データストリーム上で特定のデータオブジェクトに関する現在の状態を受け取るステップと、
オブジェクトプールキャッシュを更新して、前記特定のデータオブジェクトの前記現在の状態を反映するステップと、
前記特定の入力データストリームに加入するそれぞれのクライアントごとに、前記それぞれのクライアントに関連する前記クライアントプロファイルから、前記特定のデータオブジェクトに対して、前記特定の入力データストリームに関連する前記オブジェクト規則を評価し、肯定的な評価に応答して、前記特定のデータオブジェクトの前記現在の状態を前記それぞれのクライアントに送信するステップとを備えることを特徴とする方法。 - 前記少なくとも1つのデータストリームに接続した後、前記接続した少なくとも1つのデータストリーム上で搬送されるデータオブジェクトの初期状態で前記オブジェクトプールキャッシュを初期化するステップをさらに備えることを特徴とする請求項25に記載の方法。
- 通信セッションを特定のクライアントで確立した後、前記特定のクライアントに関連する前記プロファイルへの前記データストリーム加入に関連する前記オブジェクトプールキャッシュ内の前記データオブジェクトの前記特定のクライアントに、スナップショットを送達するステップをさらに備えることを特徴とする請求項26に記載の方法。
- 通信セッション中の特定のクライアントが1組の接続した入力データストリーム内にない新しい入力データストリームに加入したことを検出したことに応答して、
前記新しい入力データストリームに接続するステップと、
前記新しい入力データストリーム上で搬送されるデータオブジェクトの初期状態で前記オブジェクトプールキャッシュを初期化するステップと、
前記新しいデータストリームに関連する前記オブジェクトプールキャッシュ内の前記データオブジェクトのスナップショットを前記特定のクライアントに送達するステップとをさらに備えることを特徴とする請求項25に記載の方法。 - 前記特定のデータオブジェクトの前記現在の状態を前記それぞれのクライアントに送信する前記ステップは、前記特定のデータオブジェクトの前記現在の状態に関するクライアントイベントを送信するステップを含むことを特徴とする請求項25に記載の方法。
- クライアントイベントキュー内に状態イベントを配置するステップであって、前記クライアントイベントキューから抽出された状態イベントから導出されたクライアントイベントは、前記それぞれのクライアントに送信されるステップと、
共通データオブジェクトに関する前記それぞれのクライアントに送信すべき状態イベントを識別するステップと、
前記識別した状態イベントを集約し、それによって前記キュー内の状態イベントの数を低減するステップとをさらに備えることを特徴とする請求項29に記載の方法。 - 接続された各クライアントとの通信の性能を監視するステップと、
前記監視した性能に応答して、クライアントイベントが前記それぞれのクライアントに送信される速度を動的に調節するステップとをさらに備えることを特徴とする請求項25に記載の方法。 - 前記データオブジェクトは、金融商品案内に関する情報を含むことを特徴とする請求項25に記載の方法。
- 前記入力データストリームは、少なくとも1つの情報マネージャで同報通信され、各情報マネージャは、それぞれのオブジェクト格納プールを維持し、前記方法は、
前記データストリームを同報通信する前記情報マネージャに関連する前記オブジェクト格納プールから、前記接続された少なくとも1つのデータストリーム上で搬送されるデータオブジェクトの初期状態を取り出すステップと、
前記取り出した初期状態で前記オブジェクトプールキャッシュを初期化するステップとをさらに備えることを特徴とする請求項25に記載の方法。 - 少なくとも1つのコンテンツプロバイダから提供される、複数のオブジェクトの状態についての情報を処理し、前記状態は周期的更新を受け、データ通信ネットワークを介してほぼリアルタイムに、前記複数のオブジェクトの少なくとも一部の現在の状態を示すフォーマット済み情報を複数のクライアントに送達するシステムであって、
入力としての少なくとも1つの未加工データストリームと、フォーマット済みデータオブジェクトを格納するように構成されたオブジェクトプールと、出力としての少なくとも1つの同報通信データストリームとを含む情報マネージャであって、各未加工データストリームは複数の未加工データオブジェクトを搬送し、
受信した未加工データオブジェクトからフォーマット済みデータオブジェクトを生成し、
前記フォーマット済みデータオブジェクトの現在の状態を前記オブジェクト格納プール内に格納し、
特定の同報通信データストリーム上で前記フォーマット済みデータオブジェクトの前記現在の状態を同報通信するように構成された情報マネージャと、
オブジェクトプールキャッシュを含み、複数のクライアントに接続可能な、少なくとも1つの同報通信データストリームを入力として受信するクライアントマネージャであって、
複数のクライアントとの通信セッションを確立し、
少なくとも1つの同報通信データストリームと接続し、
接続した同報通信データストリーム上で、特定のデータオブジェクトに関する現在の状態を受け取り、
オブジェクトプールキャッシュを更新して、前記特定のデータオブジェクトの前記現在の状態を反映し、
前記特定のデータオブジェクトの前記現在の状態を、前記複数のクライアントから選択された1組のクライアントに送信するように構成されるクライアントマネージャとを備えることを特徴とするシステム。 - 前記情報マネージャは、
前記フォーマット済みデータオブジェクトの前のバージョンが前記オブジェクト格納プール内に存在したかどうかを判定し、
前記フォーマット済みデータオブジェクトの前のバージョンが存在したという判定に応答して、前記フォーマット済みデータオブジェクトの前記前のバージョンと前記現在の状態とのデータ差を決定し、前記特定の同報通信データストリーム上で前記データ差を同報通信し、
前記フォーマット済みデータオブジェクトの前のバージョンが存在しなかった場合、前記特定の同報通信データストリーム上で前記フォーマット済みデータオブジェクトの前記現在の状態を同報通信するように構成されることを特徴とする請求項34に記載のシステム。 - 前記クライアントマネージャは、複数のクライアントプロファイルを格納したクライアントプロファイルデータベースをさらに含み、各クライアントプロファイルは、データストリーム加入を示すデータと、前記加入データストリームに関連する少なくとも1つのオブジェクト規則とを含み、
前記クライアントマネージャは、前記特定の入力データストリームに加入したそれぞれのクライアントごとに、前記それぞれのクライアントに関連する前記クライアントプロファイルから、前記特定のデータオブジェクトに対する前記特定の入力データストリームに関連するクライアント前記オブジェクト規則を評価し、前記1組のクライアントを識別することを特徴とする請求項34に記載のシステム。 - 前記クライアントマネージャは、第1情報マネージャから第1同報通信データストリームを受信し、第2情報マネージャから第2同報通信データストリームを受信することを特徴とする請求項34に記載のシステム。
- 前記情報マネージャは、前記未加工データオブジェクトのオブジェクトタイプを決定し、前記オブジェクトタイプに従って、受信した前記未加工データオブジェクトに1組のフォーマット規則を適用し、前記フォーマット済みデータオブジェクトを生成するように構成されたオファープロセッサをさらに備えることを特徴とする請求項34に記載のシステム。
- 前記情報マネージャは、オブジェクトタイピング規則およびフォーマット規則が格納された処理データベースをさらに含むことを特徴とする請求項38に記載のシステム。
- 前記オブジェクトタイピング規則およびフォーマット規則は、ツリーフォーマットの形式で格納され、
前記ツリーは、ルートノードおよび少なくとも1つの派生ストリームノードを有し、各ストリームノードは、特定の未加工データストリームに関連し、
各ストリームノードは、そこから派生する少なくとも1つのタイプリーフノードをさらに有し、各タイプリーフノードは、前記それぞれのストリームノードに関連する前記未加工データストリームによって搬送される特定のオブジェクトタイプに関連し、
各タイプリーフノードは、前記それぞれのタイプリーフノードに関連するタイプのオブジェクトを識別するための、少なくとも1つの関連するオブジェクトタイピング規則を有することを特徴とする請求項39に記載のシステム。 - 各タイプリーフノードは、少なくとも1つの関連するフォーマット規則をさらに有することを特徴とする請求項40に記載のシステム。
- 前記情報マネージャは、前記未加工データストリームを入力として受信し、少なくとも1つの名前−値対を含む未加工イベントに前記未加工データオブジェクトを変換し、前記未加工イベントを出力として提供するように構成されたトランスレータをさらに含み、
前記オファープロセッサは、前記未加工イベントを入力として受信することを特徴とする請求項38に記載のシステム。 - 前記クライアントマネージャは、前記決定したオブジェクトタイプに従って複数の同報通信データストリームから前記特定の同報通信データストリームを選択するように構成されることを特徴とする請求項25に記載のシステム。
- 前記クライアントマネージャは、
前記未加工データオブジェクトのコンテンツの妥当性を検査し、
妥当性の検査に不合格であったとき、前記未加工データオブジェクトから導出される前記フォーマット済みデータオブジェクトデータの前記現在の状態の後続の同報通信を防止するようにさらに構成されることを特徴とする請求項34に記載のシステム。 - 前記未加工データオブジェクトは、金融商品案内に関する情報を含むことを特徴とする請求項34に記載のシステム。
- 前記クライアントマネージャは、
1組の接続された同報通信データストリーム内にない新しい同報通信データストリームに特定のクライアントが加入したことを検出したことに応答して、前記新しい同報通信データストリームに接続するようにさらに構成されることを特徴とする請求項34に記載のシステム。 - 前記クライアントマネージャは、各クライアントに関連するクライアントイベントキューを備える送達マネージャをさらに含み、
前記送達マネージャは、
特定のクライアントを対象とする状態イベントであって、特定のデータオブジェクトの前記現在の状態を示す状態イベントを前記特定のクライアントに関連する前記クライアントイベントキューに入れ、
共通データオブジェクトに関するそれぞれのクライアントに関連する保留状態イベントを識別し、
前記識別した状態イベントを集約し、それによって保留状態イベントの数を低減し、
キューに入れた状態イベントから導出されるクライアントイベントを前記それぞれのクライアントに送信するように構成されることを特徴とする請求項34に記載のシステム。 - 前記クライアントマネージャは、
接続された各クライアントと通信する前記性能を監視し、
前記監視した性能に応答して、前記特定のデータの前記現在の状態を各クライアントに送信する速度を動的に決定するようにさらに構成されることを特徴とする請求項34に記載のシステム。 - 少なくとも1つのコンテンツプロバイダから提供される、複数のオブジェクトの状態についての情報を処理し、前記状態は周期的更新を受け、データ通信ネットワークを介してほぼリアルタイムに、前記複数のオブジェクトの少なくとも一部の現在の状態を示すフォーマット済み情報を複数のクライアントに送達する方法であって、
情報マネージャにおいて、
少なくとも1つの未加工データストリーム入力上で未加工データオブジェクトを受信するステップであって、各未加工データオブジェクトは特定のオブジェクトタイプであるステップと、
前記それぞれのオブジェクトタイプに関するフォーマット規則を使用して、受信した未加工データオブジェクトからフォーマット済みデータオブジェクトを生成するステップと、
前記フォーマット済みデータオブジェクトの現在の状態をオブジェクト格納プール内に格納するステップと、
前記オブジェクトタイプに従って、複数の同報通信データストリームから選択された特定の同報通信データストリーム上で前記フォーマット済みデータオブジェクトの前記現在の状態を同報通信するステップと、
クライアントマネージャにおいて、
複数のクライアントとの通信セッションを確立するステップと、
少なくとも1つの同報通信データストリームに接続するステップと、
接続した同報通信データストリーム上で、特定のデータオブジェクトに関する現在の状態を受け取るステップと、
オブジェクトプールキャッシュを更新し、前記特定のデータオブジェクトの前記現在の状態を反映するステップと、
前記特定のデータオブジェクトの前記現在の状態を、前記複数のクライアントから選択された1組のクライアントに送信するステップとを備えることを特徴とする方法。 - 前記フォーマット済みデータオブジェクトの前記現在の状態を同報通信する前記ステップは、
前記フォーマット済みデータオブジェクトの前のバージョンが前記オブジェクト格納プール内に存在したかどうかを判定し、
前記フォーマット済みデータオブジェクトの前のバージョンが存在した場合、前記フォーマット済みデータオブジェクトの前記前のバージョンと前記現在の状態とのデータ差を決定し、前記特定の同報通信データストリーム上で前記データ差を同報通信し、
前記フォーマット済みデータオブジェクトの前のバージョンが存在しなかった場合、前記特定の同報通信データストリーム上で前記フォーマット済みデータオブジェクトの前記現在の状態を同報通信することを含むことを特徴とする請求項49に記載の方法。 - 各クライアントは、データストリーム加入を示すデータと、前記加入データストリームに関連する少なくとも1つのオブジェクト規則とを含む関連するプロファイルを有し、
前記特定のデータオブジェクトの前記現在の状態を1組のクライアントに送信する前記ステップは、
前記特定の入力データストリームに加入するそれぞれのクライアントごとに、前記それぞれのクライアントに関連する前記クライアントプロファイルから、前記特定のデータオブジェクトに対して前記特定の入力データストリームに関連する前記オブジェクト規則を評価するステップと、
肯定的な評価に応答して、前記特定のデータオブジェクトの前記現在の状態を前記それぞれのクライアントに送信するステップとを含むことを特徴とする請求項49に記載の方法。 - 少なくとも1つの同報通信データストリームに接続する前記ステップは、
第1情報マネージャからの第1同報通信データストリームに接続するステップと、
第2情報マネージャからの第2データ同報通信ストリームに接続するステップとを含むことを特徴とする請求項49に記載の方法。 - 前記未加工データオブジェクトの前記コンテンツの妥当性を検査するステップと、
妥当性の検査に不合格であったとき、前記未加工データオブジェクトから導出される前記フォーマット済みデータオブジェクトデータの前記現在の状態の後続の同報通信を防止するステップとをさらに備えることを特徴とする請求項49に記載の方法。 - 前記未加工データオブジェクトは、金融商品案内に関する情報を含むことを特徴とする請求項49に記載の方法。
- 前記クライアントマネージャにおいて、特定の同報通信データストリームに接続した後、
前記特定の同報通信データストリームを生成する前記情報マネージャからデータオブジェクトの前記初期状態を得るステップと、
前記オブジェクトプールキャッシュを、前記特定の同報通信データストリーム上で搬送されるデータオブジェクトの前記初期状態で初期化するステップとをさらに備えることを特徴とする請求項49に記載の方法。 - 特定のクライアントとの通信セッションを確立した後、前記特定のクライアントが加入する同報通信データストリーム上で搬送される前記オブジェクトプールキャッシュ内の1組のデータオブジェクトのスナップショットを前記特定のクライアントに送達するステップをさらに備えることを特徴とする請求項55に記載の方法。
- 接続した各クライアントがそれぞれのクライアントイベントキューを有し、前記特定のデータオブジェクトの前記現在の状態を前記1組のクライアントに送信する前記ステップは、それぞれのクライアントごとに、前記1組のクライアントにおいて、
前記それぞれのクライアントに関連する前記クライアントイベントキュー内に状態イベントを配置するステップであって、前記状態イベントは、前記特定のデータオブジェクトの前記現在の状態を示すステップと、
その後で、前記キューに入れたイベントから導出されるクライアントイベントを前記それぞれのクライアントに送信するステップとを含むことを特徴とする請求項49に記載の方法。 - 共通データオブジェクトに関するそれぞれのクライアントに関連する保留状態イベントを識別するステップと、
前記識別した状態イベントを集約し、それによって保留状態イベントの数を低減するステップとをさらに備えることを特徴とする請求項57に記載の方法。 - 接続した各クライアントとの通信の前記性能を監視するステップと、
前記監視した特性に応答して、各クライアントイベントに送信する前記特定のデータの前記現在の状態の速度を動的に決定するステップとをさらに含むことを特徴とする請求項49に記載の方法。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US22339700P | 2000-08-04 | 2000-08-04 | |
US22716200P | 2000-08-22 | 2000-08-22 | |
US09/871,176 US7958251B2 (en) | 2000-08-04 | 2001-05-31 | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering data to subscribing clients |
US09/871,427 US7958025B2 (en) | 2000-08-04 | 2001-05-31 | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects |
US09/870,811 US7139844B2 (en) | 2000-08-04 | 2001-05-31 | Method and system for processing financial data objects carried on broadcast data streams and delivering information to subscribing clients |
PCT/US2001/023335 WO2002013091A1 (en) | 2000-08-04 | 2001-07-25 | System for processing raw financial data to produce validated product offering information to subscribers |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004506272A true JP2004506272A (ja) | 2004-02-26 |
Family
ID=27539858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002518374A Pending JP2004506272A (ja) | 2000-08-04 | 2001-07-25 | 未加工金融データを処理して、妥当性検査した商品案内情報を加入者に対して生成するシステム |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1323087A4 (ja) |
JP (1) | JP2004506272A (ja) |
AU (1) | AU2001276034A1 (ja) |
WO (1) | WO2002013091A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101400174B1 (ko) * | 2009-07-01 | 2014-06-19 | 레벨 3 커뮤니케이션즈 엘엘씨 | 콘텐츠 전달에 사용하기 위한 플렉서블 토큰 |
JP2015519639A (ja) * | 2012-04-13 | 2015-07-09 | ゴールドマン,サックス アンド カンパニー | スケーラブルな構造化データ配布のためのシステム及び方法 |
KR20160031974A (ko) * | 2014-09-15 | 2016-03-23 | 주식회사 지에이서포트 | RAW DATA의 DataBase화를 위한 지능형 업로드 시스템 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958025B2 (en) | 2000-08-04 | 2011-06-07 | Goldman Sachs & Co. | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects |
WO2003083603A2 (en) * | 2002-03-29 | 2003-10-09 | Oracle International Corporation | Methods and systems for non-interrupting notifications |
US8156022B2 (en) | 2007-02-12 | 2012-04-10 | Pricelock, Inc. | Method and system for providing price protection for commodity purchasing through price protection contracts |
US8019694B2 (en) | 2007-02-12 | 2011-09-13 | Pricelock, Inc. | System and method for estimating forward retail commodity price within a geographic boundary |
US7945500B2 (en) | 2007-04-09 | 2011-05-17 | Pricelock, Inc. | System and method for providing an insurance premium for price protection |
US7945501B2 (en) | 2007-04-09 | 2011-05-17 | Pricelock, Inc. | System and method for constraining depletion amount in a defined time frame |
US8160952B1 (en) | 2008-02-12 | 2012-04-17 | Pricelock, Inc. | Method and system for providing price protection related to the purchase of a commodity |
US10706038B2 (en) * | 2017-07-27 | 2020-07-07 | Cisco Technology, Inc. | System and method for state object data store |
US11729588B1 (en) | 2021-09-30 | 2023-08-15 | T-Mobile Usa, Inc. | Stateless charging and message handling |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4742457A (en) * | 1985-08-27 | 1988-05-03 | Trans Texas Holdings Corporation | System and method of investment management including means to adjust deposit and loan accounts for inflation |
WO1995006290A2 (en) * | 1993-08-18 | 1995-03-02 | Wells Fargo Nikko Investment Advisors | Investment fund management method and system |
TW313643B (ja) * | 1994-12-14 | 1997-08-21 | At & T Corp | |
US5931904A (en) * | 1996-10-11 | 1999-08-03 | At&T Corp. | Method for reducing the delay between the time a data page is requested and the time the data page is displayed |
US6125355A (en) * | 1997-12-02 | 2000-09-26 | Financial Engines, Inc. | Pricing module for financial advisory system |
SE512880C2 (sv) * | 1998-07-03 | 2000-05-29 | Ericsson Telefon Ab L M | Ett cacheservernät |
KR100729287B1 (ko) * | 1999-01-28 | 2007-06-18 | 웹스펙티브 소프트웨어, 인크. | 웹 서버 컨텐츠 복제 |
-
2001
- 2001-07-25 JP JP2002518374A patent/JP2004506272A/ja active Pending
- 2001-07-25 EP EP01953601A patent/EP1323087A4/en not_active Withdrawn
- 2001-07-25 AU AU2001276034A patent/AU2001276034A1/en not_active Abandoned
- 2001-07-25 WO PCT/US2001/023335 patent/WO2002013091A1/en active Application Filing
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101400174B1 (ko) * | 2009-07-01 | 2014-06-19 | 레벨 3 커뮤니케이션즈 엘엘씨 | 콘텐츠 전달에 사용하기 위한 플렉서블 토큰 |
US8886761B2 (en) | 2009-07-01 | 2014-11-11 | Level 3 Communications, Llc | Flexible token for use in content delivery |
JP2015519639A (ja) * | 2012-04-13 | 2015-07-09 | ゴールドマン,サックス アンド カンパニー | スケーラブルな構造化データ配布のためのシステム及び方法 |
KR20160031974A (ko) * | 2014-09-15 | 2016-03-23 | 주식회사 지에이서포트 | RAW DATA의 DataBase화를 위한 지능형 업로드 시스템 |
KR101707845B1 (ko) * | 2014-09-15 | 2017-02-17 | 주식회사 지에이서포트 | RAW DATA의 DataBase화를 위한 지능형 업로드 시스템 |
Also Published As
Publication number | Publication date |
---|---|
EP1323087A1 (en) | 2003-07-02 |
WO2002013091A1 (en) | 2002-02-14 |
AU2001276034A1 (en) | 2002-02-18 |
EP1323087A4 (en) | 2008-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8386633B2 (en) | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering data to subscribing clients | |
US7139844B2 (en) | Method and system for processing financial data objects carried on broadcast data streams and delivering information to subscribing clients | |
US10007727B2 (en) | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects | |
US10747592B2 (en) | Router management by an event stream processing cluster manager | |
US10521853B2 (en) | Electronic sales system | |
US8370848B2 (en) | Method and system for providing a client access to an external service via an application services platform | |
US8370849B2 (en) | API method and system for providing access to an external service via an application services platform | |
US8700506B2 (en) | Distributed commerce system | |
EP3796167B1 (en) | Router management by an event stream processing cluster manager | |
JP2004513431A (ja) | 分散型ネットワークキャッシュの協同管理 | |
Jayaram et al. | Parametric content-based publish/subscribe | |
JP2004506272A (ja) | 未加工金融データを処理して、妥当性検査した商品案内情報を加入者に対して生成するシステム | |
EP2056248A1 (en) | Electronic commerce system | |
JP2005500741A (ja) | ペイロード検査を介したパケット・ルート付け、及び発行−申し込みネットワークにおける申し込み処理 | |
US20210303554A1 (en) | Viewing structured data published to a topic tree as restructured data tree according to a topic view mapping | |
US10733663B2 (en) | Systems and methods for strategic customer order capture | |
TW571531B (en) | Packet routing via payload inspection and subscription processing in a publish-subscribe network | |
KR20000058869A (ko) | 인터넷을 이용한 정보의 수요공급 매개시스템 | |
KR20040039288A (ko) | 게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를통한 패킷 라우팅 | |
CN101447977A (zh) | 用于生成消息的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080725 |
|
A072 | Dismissal of procedure |
Free format text: JAPANESE INTERMEDIATE CODE: A073 Effective date: 20081111 |