(58)【調査した分野】(Int.Cl.,DB名)
コンピュータにより実行される、データを配信する方法であって、ターゲットへの当該データの配信が、意図されるターゲットと、当該データの価値の双方に依存し、当該方法の各ステップが、少なくとも、部分的に、コンピューティングシステム内の1つ又は複数のプロセッサの上で、コンピュータにより実行可能な命令を実行することによって実行される方法であって、
前記コンピューティングシステムの取得パーティション内で実現される取得エンジンにおいて1つ又は複数のターゲットへの分配のためのデータを受信するステップと、
前記データに対する前記1つ又は複数のターゲットを決定するステップであって、前記ターゲットの各々が、前記コンピューティングシステムによって記憶された、対応するデータ値を有するものと、
前記データを、前記コンピューティングシステムの分配パーティションに配信するステップであって、当該分配パーティションが、前記データと前記1つ又は複数のターゲットに基づいて、前記データの、前記1つ又は複数のターゲットへの配信に対するルーティング情報を決定できるようにされるものと、
特定の時点で、時間に関する前記データの価値を計算するステップであって、当該時間に関する前記データの値が、少なくとも、部分的に、前記データの実際のコンテンツに基づいて計算され、前記データの前記価値が、少なくとも部分的に、時間に基づく関数に基づいて変化するものと、
前記特定の時点での、前記計算された価値に基づいて、
前記データの、1つ又は複数の前記ターゲットへの配送に対するルーティング情報を選択するステップであって、当該選択されたルーティング情報が用いられて、前記計算された値に対応するデータ配送サービスを提供するものと、
前記特定の時点での、前記計算された値に基づいて、前記選択されたルーティング情報を用いて、1つ又は複数のターゲットの集合に、前記データを配送するステップであって、当該1つ又は複数のターゲットの集合に対して、前記特定の時点での、前記計算された前記データの値が、前記ターゲットの、対応するデータの価値に一致するものと、
を含む、方法。
【発明を実施するための形態】
【0016】
[0024]いくつかのデータは、その「新しさ」に基づく価値、および結果を導き出す。例えば、株式相場などの金融データは、時間の経過とともに極めて迅速に下落する値を有することがある。同時に、データを数ミリ秒以内のように極めて迅速に提供することができる場合、データは極めて高い値を有することができる。したがって、新しいデータは需要が高く、クエリーを行なうことが可能なデータリポジトリおよび/またはデータマーケットプレイスから利用可能なデータがどのようにデータを提供するのかと同様な方法で提供することができる。
【0017】
[0025]本明細書に記載された、いくつかの実施形態は、イベントデータ用マーケットプレイスを実施することができる。いくつかの実施形態は、リアルタイムデータ用のプラットフォームおよびデータ分配マーケットプレイスシステムを提供することができる。いくつかの実施形態は、配信時間を短くするように、また、より新しい状態で提供することによって、データをより価値あるものにし続けるように、効率的なマルチキャストイベント配信システムを含むことができる。いくつかの実施形態は、プッシュ通知システム内への配信を可能にすることができる。いくつかの実施形態は、請求および/または代りに請求するシナリオ用の統計および分配追跡データ収集機構を含むことができる。さらに、いくつかの実施形態は、配信サービスレベル契約(SLA)階層化を含むことができる。
【0018】
[0026]
図1は、経時的なデータの値を示すグラフ100を示す。図示するように、現在の事実を記載するリアルタイムデータが最初に作り出されたときに、データはかなりの価値を有する可能性がある。価値は、データがゼロにまたはゼロに近くなるポイントまで時間の経過とともに迅速に低下する。データはその後、アーカイブ保管され、後に検索することができる履歴事実としての価値を有するので、時間の経過とともにある価値を取り戻す。したがって、現在のデータをできるだけ迅速にエンドユーザに提供することが可能である価値がある。
【0019】
[0027]データを迅速に提供する1つの方法は、イベント通知システムを通してであり、特に、以下により詳細に記載するように、効率的なイベント通知システムを使用している。このように、イベント通知システムがエンドユーザへのデータを得ることができるのと同じだけ迅速に、データをユーザに提供することができる。したがって、ユーザに現在の事実データが直ぐに通知および提供することができる場合、データの価値を維持することができる。これにより、データを提供するために、(データプロバイダから、またはデータ消費者のいずれかから)より高い補償を回復することが可能になる。
【0020】
[0028]
図2は、データを提供するためにイベント分配システムを使用することができるデータマーケット202の例を示す。
図2は、イベントデータマーケット202にデータを提供することができるデータプロバイダ204を示す。データプロバイダ204は、これに限らないが、金融データプロバイダ、スポーツ情報データプロバイダ、ニュース情報プロバイダなどの多くの異なるソースのいずれかである可能性がある。イベントデータマーケット202は、多くの異なるソースからデータを受信し、末端消費者にデータを分配するデータブローカ(受信者206として示す)である可能性がある。
【0021】
[0029]
図2は、データの個人加入者、データのグループ加入者、およびエンドユーザデバイスに展開された特定のアプリケーションまたは解決法を有する結果として情報を受信する加入者を含む、3つのグループの受信者を示す。特に図示しないが、他の加入者グループを、加えてまたは代替形態で、実施することができる。
【0022】
[0030]データ配信に対する補償は、多くの異なる方法で構築することができる。
図3および4は、金融データ配信をどれだけ達成することができるかの2つの例を示す。
[0031]
図3に示す第1の例では、データ配信はデータプロバイダ204に請求される。イベントデータマーケット202は、データプロバイダ204へのデータ配信に関する統計208を提供することができ、データプロバイダ204は、独立してデータの受信者206に請求することができる。
【0023】
[0032]
図4に示す第2の例では、データマーケット202は、受信者206に直接請求することができる。データマーケット202はその後、そのシェアを占め、データプロバイダにあらゆる追加の資金を送ることができる。
【0024】
[0033]次に
図5を参照すると、前に記したように、データに価値があればあるほど、より迅速に配信することができる。したがって、いくつかの実施形態は、加入者(受信者など)またはデータプロバイダ204によって支払われる金額に基づいてデータを提供することができる。例えば、データにより多くのお金を支払っている加入者は、そのデータにより少ないお金を支払っている加入者にデータを配信するために使用されるいくつかの他のインフラよりも、速い速度でデータを配信するように設計または最適化されたインフラを使用してデータを配信させることができる。これは、加入者により近い(サーバなどの)インフラ構成要素を使用するステップを含み、データをより速く配信することを可能にする。
【0025】
[0034]別の方法では、または加えて、データをデータプロバイダ204でゲーティングすることができ、ゲーティングにより、データを可変遅延で配信することを可能にする。例えば、プレミアム加入者は、データが作成されてからデータが配信されるまでに、ほとんどまたは全く遅延なくリアルタイムデータを受信することが可能であるが、データは他の加入者に対しては意図的に遅らせることがあり、遅延は加入者が加入しているサービスのレベルに左右される。例えば、いくつかの実施形態では、データプロバイダは、極めて短い期間で時間でのリアルタイムデータの配信を保証する限られた数のプレミアムサービス契約を提供することができる。このような契約の排他性および希少性の性質により、データプロバイダは潜在的に、このような契約に大きな割増金を課すことができる。第2のレベルの限られた契約は、より低い割増金で提供することができる。リアルタイムデータは、プレミアムサービス加入者が提供されるのより遅らされる。十分に長い間導入した遅延の後に、無料でデータを提供するレベルを含む、様々なレベルを提供することができる。
【0026】
[0035]次に、以下にリアルタイムイベントデータを提供する特定の効率的なイベントシステムの例を示す。
[0036]このような例が、
図6に示される。
図6は、多くの異なるソースからの情報が多くの異なるターゲットに配信される例を示す。いくつかの例では、単一のソースからの情報、または多数のソースから集約された情報を使用して、多数のターゲットに配信される単一のイベントを作り出すことができる。これは、いくつかの実施形態では、
図6に示すように、ファンアウトトポロジーを使用して達成することができる。
【0027】
[0037]
図6は、ソース116を示す。本明細書に以下に論じるように、実施形態は取得パーティション140を利用することができる。各取得パーティション140は、多くのソース116を含むことができる。潜在的に、多数および多様なソース116がある可能性がある。ソース116は情報を提供する。このような情報としては、例えば、これに限らないが、Eメール、テキストメッセージ、リアルタイム株価、リアルタイムスポーツスコア、ニュース更新などを挙げることができる。
【0028】
[0038]
図6は、各パーティションが例示的な取得エンジン118などの、取得エンジンを含んでいることを示す。取得エンジン118は、ソース116から情報を収集し、情報に基づき、イベントを生成する。
図6に示す例では、多くのイベントが、様々なソースを使用して、取得エンジンによって生成されると示される。イベント104−1は、例示として使用される。いくつかの実施形態では、イベント104−1は、本明細書にさらに説明するように正規化させることができる。取得エンジン118は、ネットワーク上でソース116から情報を収集する、インターネットなどのネットワーク上のサービスであってもよい。
【0029】
[0039]
図6は、イベント104−1が分配トピック144に送信されることを示す。分配トピック144は、イベントを多くの分配パーティションにファンアウトさせる。分配パーティション120−1は、分配パーティションの全てに対してアナログとして使用される。分配パーティションはそれぞれ、加入によって示される多くのエンドユーザまたはデバイスにサービスを提供する。分配パーティションによってサービス提供される加入数は、他の分配パーティションの数とは異なる可能性がある。いくつかの実施形態では、パーティションによってサービス提供される加入数は、分配パーティションの容量に左右される可能性がある。別の方法では、または加えて、分配パーティションを選択して、エンドユーザへの論理的または地理的近接に基づき、ユーザにサービスを提供することができる。これにより、警告をよりタイムリーな方法でエンドユーザに運ぶことが可能になる。
【0030】
[0040]示した例では、分配パーティション120−1は、分配エンジン122−1を含む。分配エンジン122−1は、データベース124−1を参照する。データベース124−1は、関連する配信ターゲット102に関する詳細を有する加入に関する情報を含む。特に、データベースは、ターゲット102用プラットフォーム、ターゲット102によって使用されるアプリケーション、ターゲット102用ネットワークアドレス、ターゲット102を使用するエンドユーザのユーザ好みなどを記載する情報などの情報を含むことができる。データベース124−1内の情報を使用して、分配エンジン122−1はバンドル126−1を構築し、ここでバンドル126−1は、イベント104(または、少なくともイベント104からの情報)、およびイベント104−1からの情報が通知として送信されるターゲット102の中から複数のターゲット102を識別するルーティングスリップ128−1を含む。バンドル126−1はその後、キュー130−1内に配置される。
【0031】
[0041]分配パーティション120−1は、多くの配信エンジンを含むことができる。配信エンジンは、バンドルをキュー103−1から取り除き、通知をターゲット102に運ぶ。例えば、配信エンジン108−1は、バンドル126−1をキュー13−1から取り出し、イベント104情報をルーティングスリップ128−1内で識別されたターゲット102に送信することができる。したがって、イベント104−1情報を含む通知134は、異なるターゲット102に適当な、また個別のターゲット102に特有のいくつかの異なるフォーマットで、ターゲット102に様々な分配パーティションから送信させることができる。これにより、多数の個別化通知を配信システムを通して運ぶのではなく、個別のターゲット102に個別化された個別化通知134を、配信システムのエッジで共通イベント104−1から作り出すことが可能になる。
【0032】
[0042]以下に、いくつかの実施形態で使用することができる情報収集およびイベント分配システムの代替的記載を例示する。
[0043]基礎として、一実施形態のシステムは、ワシントン州レッドモンドのマイクロソフトコーポレーションから市販されるウィンドウズ(登録商標)アジュールサービスバスによって提供されるような公共/加入インフラを使用しており、また様々な他のメッセージングシステムで同様の形で存在する。インフラは、示した方法の記載した実施を容易にする2つの能力、トピックおよびキューを提供する。
【0033】
[0044]キューは、メッセージを逐次的な順序で追加する(キューに加える)ことを可能にする、また追加されたのと同じ順序で取り除く(キューから取り除く)ことを可能にするメッセージ用の記憶構造である。メッセージを、あらゆる数の並列クライアントによって追加し、取り除くことができ、キューに加える側の負荷のレベリング、およびキューから取り除く側の受信機にわたる処理負荷の並列化を可能にする。キューはまた、エンティティが、キューから取り除かれたときにメッセージ上のロックを得るのを可能にして、いつメッセージが実際にキューから削除されるか、または取り出されたメッセージの処理が失敗した場合にキュー内で回復させることができるかどうかに関する消費クライアントの明示的制御を可能にする。
【0034】
[0045]トピックは、キューの全ての特徴を有するが、それぞれキューに加えられたメッセージのシーケンス上の隔離およびフィルタリングされたビューを可能にする、複数の同時に存在する「加入」を可能にする記憶構造である。トピック上の各加入は、(1つまたは複数の)加入の関連フィルタ状態がメッセージに確実に一致するという条件で、キューに加えられた各メッセージのコピーを作り出す。その結果、それぞれが全てのメッセージに一致する単純な「パススルー」状態を有する10の加入を有するトピック内でキューに加えられたメッセージは、それぞれ各加入用の合計10のメッセージを作り出す。加入は、キューと同様に、受信機にわたる処理負荷の並列化を行なう複数の並列消費者を有することができる。
【0035】
[0046]別の基礎的概念は、「イベント」のものであり、これは根本的な公共/加入インフラの意味において、単にメッセージである。一実施形態の内容で、イベントは、メッセージ本体およびメッセージ特性の使用を管理する1式の単純な制約の影響を受ける。イベントのメッセージ本体は一般的に、不透明なデータブロックとして流れ、一実施形態によって検討されるあらゆるイベントデータは一般的に、イベントを示すメッセージの一部である1式のキー/値対であるメッセージ特性内に流れる。
【0036】
[0047]次に
図7を参照すると、一実施形態のアーキテクチャの目標は、大きな規模で幅広い異なるソース116からイベントデータを取得し、次の処理のために公共/加入インフラ内にこれらのイベントを転送することである。処理は、引くまたは押す通知機構を通して興味のある加入者へのイベントの分析、リアルタイム調査、または再分配のいくつかの形を含むことができる。
【0037】
[0048]一実施形態のアーキテクチャは、取得エンジン118、取得アダプタおよびイベント正規化用モデル、取得ソース116に関するメタデータを保持する分割されたストア138、共通の分割およびスケジューリングモデル、およびさらなるデータベース検索を必要とすることなく、取得ソース116の状態のユーザ起動の変化をシステム内にランタイムでどのように流すかについてのモデルを定義する。
【0038】
[0049]具体的な実施では、取得は、RSS、Atom、およびODataフィードを含む幅広いパブリックおよびプライベートネットワークサービス、これに限らないが、IMAPおよびPOP3プロトコルをこのようにサポートすることを含むEメールメールボックス、ツイッタータイムラインまたはフェイスブックウォールなどのソーシャルネットワーク情報ソース116、およびウィンドウズアジュール(商標)サービスバスまたはアマゾンのシンプルキューサービスなどの外部公共/加入インフラに関する加入からのソースイベントへの具体的な取得アダプタをサポートすることができる。
【0039】
[0050]
イベント正規化
イベントデータは正規化されて、イベントを手渡されている公共/加入インフラ上の加入者によって実際に消費可能にする。正規化は、この内容では、イベントを様々な内容で広範の加入者に興味のある可能性がある情報アイテムの一貫性のある表示を備えた共通のイベントモデルの上にマッピングされることを意味する。選択されたモデルはここでは、システムによってさらに解釈されない、単一の不透明なバイナリ量のデータに伴うことができるキー/値対の均一のリストの形のイベントの単純な表示である。イベントのこのような表示は、多くの公共/加入インフラ上で容易に表示可能であり、また、HTTPなどの共通のインターネットプロトコルに対して極めてみごとにマッピングする。
【0040】
[0051]イベント正規化を示すために、イベント104内へのRSSまたはAtomフィードエントリのマッピングを検討する(
図1および2を参照)。RSSおよびAtomは、しばしば時系列で、ニュースおよび他の現在の情報を発表するために極めて幅広く使用され、その情報を構造的な方法でコンピュータプログラム内の処理に利用可能にするのを助ける、2つのインターネット標準である。RSSおよびAtomは、極めて同様な構造、および異なる名前であるが、意味的に同一なデータ要素の集合を共有する。したがって、第1の正規化ステップは、名称または概要などの、両方の標準で定義されたこのような意味的に同一な要素に対するキーとして共通な名前を定義する。第2に、1つの、しかし他の標準で起こるだけであるデータは普通、それぞれの「ネイティブ」名でマッピングされる。その上、これらの種類のフィードはしばしば、コア標準で定義されないが、追加のデータを加えるために、それぞれの標準で拡張性を使用しているデータアイテムである、「拡張子」を運ぶ。
【0041】
[0052]これに限らないが、地理位置情報用のGeoRSS、または構造化データをAtomフィード内に埋め込むためのODataを含む、これらの拡張子のいくつかは、異なるイベントソース116にわたって共有される共通の方法でマッピングされ、それによって、イベントが発せられる公共/加入インフラ上の加入者は、データがRSSまたはAtom、またはツイッタータイムラインから取得されたかどうかに関わらず、均一の方法で地理的位置情報を解釈することができる。GeoRSSの例に続けて、地理「ポイント」を示す単純なGeoRSS式はしたがって、WGS84座標を示す1対の数値の「緯度」/「経度」性にマッピングさせることができる。
【0042】
[0053]ODataなどの複雑構造化データを運ぶ拡張子は、基礎的イベントモデルを複雑化することなく、複合タイプ構造およびデータを保存するマッピングモデルを実施することができる。いくつかの実施形態は、JSONなどの正準およびコンパクト複合データ表示に正規化し、例えば、複合データタイプ「人」のODataプロパティ「テナント」をキー/値対にマッピングし、キーはプロパティ名「テナント」であり、値はJSON直列化された形で示された名前、経歴情報、および住所情報を有する人を説明する複合データである。データソースがXMLドキュメントである場合、RSSまたはAtomの場合と同様に、値は、XMLデータをXMLによって提供された構造を保存するJSONに転写するが、属性および要素などのXML特殊性を平坦化することによって作り出すことができ、同じXML要素ノードのXML属性および要素の下位概念であるXML属性および要素は両方とも、別の区別がない「きょうだい(siblings)」としてJSONプロパティにマッピングされる。
【0043】
[0054]
ソースおよび分割化
一実施形態のアーキテクチャは、ソースデータベース138内に記憶させることができる、「ソース記述」記録内のデータソース116に関するメタデータを保存する。「ソース記述」は、共通要素の集合、およびデータソースに特有な要素の集合を有することができる。共通の要素は、ソースの名前、ソース116が有効であると考えられる期間インターバル、人間が読み取れる記述、および差別化用タイプのソース116を含むことができる。ソース特有要素は、ソース116のタイプに左右され、ネットワークアドレスと、認証情報と、またはアドレスによって示されたリソース、およびRSSフィードをチェックするための時間インターバルを提供するなどの、特定の方法でデータ取得を行なう、または構築されるエンド間経験である場合に、通知受信者が制約されたスクリーン表面上の各ニュース速報アイテムを見る機会を得るように、少なくとも60秒離して現在のイベントニュースフィードから取得されたイベントに間隔をあけることなどの、特定の方法のイベントの転送を行なういずれかを、ソース取得アダプタに命令するメタデータへのアクセスを得るための他のセキュリティキー材料とを含むことができる。
【0044】
[0055]ソース記述は、ソースデータベース138などの1つまたは複数のストア内に保持される。ソース記述は、2つの異なる軸に沿って、これらのストアにわたって、これらの中で分割化させることができる。
【0045】
[0056]第1の軸は、システムテナントによる区別である。システムテナント、または「ネームスペース」は、システム内にエンティティ用の隔離された範囲を作り出すための機構である。「フレッド」が一実施形態を実施しているシステムのユーザである具体的な場合を示し、フレッドは、システム内の他のソース116とは完全に独立したソース記述および構成および状態を保持することができる、隔離された仮想環境をフレッドに提供するテナント範囲を作り出すことが可能である。この軸は、また特に、テナントが(パスワードなどのセキュリティ感度が高いデータを含むことができる)記憶されたメタデータの隔離を必要とする場合、または技術的、規制的または事業的理由で、ストアにわたってソース記述を広げるための差別化要因として働くことができる。システムテナントはまた、ソース記述データが中に保持され、そこからデータ取得が行なわれる特定のデータセンタへのアフィニティを示すことができる。
【0046】
[0057]第2の軸は、規定の識別子範囲から選択された数値パーティション識別子による区別であることができる。パーティション識別子は、例えば、ソース名およびテナント識別子などの、ソース記述内に含まれる不変条件から導き出すことができる。パーティション識別子は、ハッシュ機能(多くの候補のうちの1つは、ジェンキンスハッシュである。http://www.burtleburtle.net/bob/hash/doobs.htmlを参照のこと。)を使用してこれらの不変条件から導き出すことができ、得られるハッシュ値は、おそらくハッシュ値上のモジュロ機能を使用して、パーティション識別子範囲に算出される。識別子範囲は、システム内にいつも保持される全てのソース記述を記憶するのに必要であると予測される最も多くの記憶パーティションより大きいように選択される(実質的に大きい可能性がある)。
【0047】
[0058]記憶パーティションを導入することは、根本的なデータストアに関する記憶容量割当に直ぐに関連する、または所与のデータセンタまたはデータセンタ部に対する帯域幅制約などの取得エンジン118に影響を与える容量制限に関連するいずれかの、容量制限によって普通は動機付けされ、その結果、侵入帯域幅要求を満たすために、異なるデータセンタまたはデータセンタセグメントにわたって容量を利用している取得パーティション140を作り出す実施形態につながる可能性がある。記憶パーティションは、全体的識別子範囲のサブセットを所有し、記憶パーティション(および、これにアクセスするのに必要なリソース)を備えたソース記述記録の関連性はしたがって、そのパーティション識別子から直接推論することができる。
【0048】
[0059]記憶パーティション軸を提供することを越えて、パーティション識別子はまた、スケジューリングまたは取得ジョブに使用され、(記憶パーティションへの関係とは潜在的に異なる)所与のソース記述への取得パーティション140の所有関係を明らかに規定している。
【0049】
[0060]
所有および取得パーティション
システム内の各ソース技術は、特定の取得パーティション140によって所有させることができる。重複したイベントを発する可能性がある場合に、システムは複数の場所で並列して全く同じソース116からイベントを取得しないので、明確および独自の所有権が使用される。これをより具体的にするために、テナントの範囲内で規定された1つのRSSフィードは、システム内で正確に1つの取得パーティション140によって所有され、パーティション内には、時間内にあらゆる所与のポイントで特定のフィード上の1つのスケジューリングされた取得実行がある。
【0050】
[0061]取得パーティション140は、パーティション識別子範囲の所有権を得る方法で、ソース記述の所有権を得る。識別子範囲は、フェイルオーバー能力を有することができ、マスタ/バックアップオーナーを割り当てることができる外部の専用分割システムを使用して、またはパーティション識別子範囲が、取得エンジン役割を仮定する多くの個別算出例にわたって均一に広がるより単純な機構を使用して、取得パーティション140に割り当てることができる。外部の分割システムでのより洗練された実施では、パーティションの選ばれたマスタオーナーは、システムが「冷却」状態から開始した場合に、ジョブのスケジューリングをシーディングする責任があり、これは、パーティションは前のオーナーを有していなかったということを意味する。より単純なシナリオでは、パーティションを所有する算出例は、スケジューリングをシーディングすることを所有している。
【0051】
[0062]
スケジューリング
取得ジョブに対するスケジューリング需要は、具体的なソースの性質に左右されるが、一般的に、いくつかの記載された実施形態で実現される2種類の取得モデルがある。
【0052】
[0063]第1のモデルでは、オーナーは、ソースのネットワークサービス上で接続または長期間のネットワーク要求のいくつかの形を開始し、データグラムまたはストリームの形で接続上でデータが返されるのを待つ。一般的には長期ポーリングとも呼ばれる長期間要求の場合、ソースネットワークサービスは、タイムアウトが起こるまで、またはデータが利用可能になるまで、要求を保ち、その後、取得アダプタは、ペイロード結果があってもなくても要求が完了するのを待ち、その後、要求を再発行する。その結果、この取得スケジューリングモデルは、ソース116のオーナーがソースに関して学習するときに、また新しい要求または接続が現在の接続または要求が完了するまたは一時的に中断されると直ぐに開始される場合に、開始される「タイト」ループの形をしている。オーナーがタイトループの即時制御にあるときに、ループはオーナーが実行している間に確実にアライブに保持させることができる。オーナーが停止および再開すると、ループも再開する。所有権が変わると、ループは停止し、新しいオーナーがループを開始させる。
【0053】
[0064]第2のモデルでは、ソースのネットワークサービスは、利用可能になったときに、長期間要求または接続生成データをサポートしていないが、問い合わせされると直ぐに返る通常の要求/応答サービスである。このようなサービスでは、これは多くのウェブリソースに当てはまり、連続タイトループ内でデータを要求することにより、膨大な量のロードをソース116上に生じさせ、また、ソース116が変化しなかったことを単に示す、または最悪の場合、何度も繰り返し同じデータを運んでいるいずれかの重大なネットワークトラフィックを生じさせる。タイムリーなイベント取得の需要を並列化し、無益なクエリートラフィックでソース116をオーバーロードさせないために、取得エンジン118はしたがって、「タイミング」ループ内で要求を実行し、ソース116上の要求は、これらの検討事項を並列化し、またソース116からのヒントを考慮するインターバルに基づいて周期的に実行される。「タイミング」ループは、ソース116のオーナーがソースに関して学習するときに開始される。
【0054】
[0065]タイミングループに対する2つの注目に値する実施バリアント型がある。第1のバリアント型は、低い規模の最良の努力のシナリオであり、スケジューリングにローカルのインメモリタイマオブジェクトを使用し、これにより、規模、制御および再開特徴が、タイトループのものと同様にされる。ループが開始され、直ぐにタイマコールバックがスケジューリングされて、取得ジョブの第1の反復が実行される。そのジョブが(エラーがあったとしても)完了し、ループが実行し続けるものであると判断されると、別のタイマコールバックが、ジョブが次に実行される瞬間にスケジューリングされる。
【0055】
[0066]第2のバリアント型は、ウィンドウズアジュール(商標)サービスバスを含む、いくつかの公共/加入システムの特性である、「スケジューリングメッセージ」を使用する。バリアント型は、いくらかより高い複雑性の犠牲に、かなりより高い取得スケールを提供する。スケジューリングループは、オーナーによって開始され、メッセージは取得パーティションのスケジューリングキュー内に置かれる。メッセージは、ソース記述を含む。取得ジョブを行ない、その後、得られたイベントをターゲット公共/加入システム内でクエリーに加える労働者によってのちに取り上げられる。最後にまた、新しい「スケジューリング」メッセージをスケジューリングキューに加える。そのメッセージは、「スケジューリングされた」と呼ばれる。というのは、スケジューリングキュー上であらゆる消費者によって検索に利用可能になる瞬間でマーキングされているからである。
【0056】
[0067]このモデルでは、取得パーティション140は、スケジューリングを一次的にシーディングする、また実際の取得ジョブを行なうあらゆる数の「労働者」の役割と対にすることができる、1つの「オーナー」の役割を有することによってスケールアウトすることができる。
【0057】
[0068]
ソース更新
システムが運転しているときに、取得パーティション140は、観察すべき新しいソース116に関して、およびどのソース116をもはや観察すべきではないかに関して学習することができる必要がある。これに関する決定は典型的には、検出された回復不能のまたは一時的なエラーによりソース116を(以下に説明するように)ブラックリスト化する場合を除いて、ユーザにかかっており、管理サービス142との相互作用の結果である。このような変化を通信するため、取得システムは、根本的な公共/加入インフラ内に「ソース更新」トピックを維持する。各取得パーティション140は、加入が取得パーティションの所有された範囲内でパーティション識別子を運ぶものに適格なメッセージを制約するフィルタ条件を有した状態で、トピックに関する専用加入を有する。これにより、管理サービス142が、新しいまたは退いたリソース116に関する更新を設定し、パーティション保有権分配の知識を必要とすることなくこれらを正しいパーティション140に送信することが可能になる。
【0058】
[0069]管理サービス142は、ソース記述、(上記フィルタリング目的の)パーティション識別子、およびソース116を加えるべきか、またはソース116をシステムから取り除くべきかを示す動作識別子を含むトピック内に更新コマンドを提示する。
【0059】
[0070]取得パーティション140のオーナーがコマンドメッセージを検索すると、新しいソース116に対して新しい取得ループをスケジューリングする、または既存の取得ループを中断、またはさらには退かせる。
【0060】
[0071]
ブラックリスト化
データ取得が失敗したソース116は、一時的にまたは永久的にブラックリスト化させることができる。一時的ブラックリスト化は、ソース116ネットワークリソースが利用可能ではない、または再発行された取得要求に直ぐには関連しないエラーを返す場合に行なわれる。一時的ブラックリスト化の期間は、エラーの性質に左右される。一時的ブラックリスト化は、通常のスケジューリングループ(タイトまたはタイミング)を中断し、エラー状態が他者によって解決されることが予測される瞬間に対して、(コールバックまたはスケジューリングメッセージにより)ループの次の反復をスケジューリングすることによって行なわれる。
【0061】
[0072]永久的ブラックリスト化は、エラーが取得要求の直ぐの結果であると判断された場合に行なわれ、要求は認証または許可エラーを起こしている、または遠隔ソース116がいくつかの他の要求エラーを示しているということを意味する。リソースが永久的にブラックリスト化されると、ソース116はパーティションストア内でブラックリスト化されたとマーキングされ、取得ループは直ぐに中止される。永久的にブラックリスト化されたソース116を元に戻すには、推定上、要求に対する挙動変化を起こす構成変化と共に、ストア内のブラックリストマーカを取り除き、ソース更新トピックを介して取得ループを再開させる必要がある。
【0062】
[0073]
通知分配
特定の範囲に関連する多数の「ターゲット102」それぞれに所与の入力イベントからの情報のコピーを分配し、各ターゲット102に対して最小の時間でそのようにするように、実施形態を構成することができる。ターゲット102は、いくつかの第三者通知システム、またはいくつかのネットワークアクセス可能外部インフラへのアダプタの識別子に結合されたデバイスまたはアプリケーションのアドレスと、その通知システムまたはインフラにアクセスするための補助データとを含むことができる。
【0063】
[0074]いくつかの実施形態は、以下に詳細に記載され、
図8を参照して理解することができる、3つの個別の処理役割に分割されるアーキテクチャを含むことができる。
図8に「1」で記されているように、それぞれ処理役割の楕円、および「n」は、処理役割の1つまたは複数の例を有することができる。各場合において「n」の使用は、処理役割に適用されるような各他の場合とは区別して考えられるべきであり、各処理役割は同じ数の例を有する必要はないということを意味することに留意されたい。「分配エンジン」112の役割は、イベントを許可し、これらをターゲット102のグループを含むルーティングスリップ(例えば、
図6のルーティングスリップ128−1を参照のこと)を束ねる。「配信エンジン」108は、これらのバンドルを許可し、ターゲット102によって示されたネットワーク位置への配信のためにルーティングスリップを処理する。管理サービス142によって示された「管理役割」は、ターゲット102を管理するために外部APIを提供し、また、配信エンジン108からの統計およびエラーデータを受け入れ、そのデータを処理/記憶する責任がある。
【0064】
[0075]データフローは、イベントが分配のためにその中に提示される「分配トピック114」上にアンカリングされる。提示されたイベントは、メッセージプロパティを使用して、イベントおよび生メッセージを区別する上記制約の1つである可能性がある、関連する範囲でラベル付される。
【0065】
[0076]分配トピック144は、示した例では、「分配パーティション120」毎の1つのパススルー(フィルタリングされていない)加入を有する。「分配パーティション」は、所与の範囲でターゲット102のサブセットに通知を分配および配信する責任がある隔離されたセットのリソースである。分配トピック内に送信された各イベントのコピーは、これらの関連する加入を通して効果的に同時に、全て同時に構成された分配パーティションに利用可能であり、分配作業の並列化が可能になる。
【0066】
[0077]分割による並列化は、タイムリーな分配を達成するのを助ける。これを理解するため、1000万個のターゲット102での範囲を検討する。ターゲットのデータが分割されていないストア内に保持された場合、システムは、単一の大きなデータベース結果セットを順に詳しく検討しなければならない、または結果セットが同じストア上のパーティショニングクエリーを使用して取得された場合、ターゲットデータを取得するためのスループットは少なくとも、所与のストアの前置ネットワークゲートウェイインフラのスループットシーリングによって調整されなければならず、その結果、その記述記録が所与の結果セット内で極めて遅く生じるターゲット102への通知の配信の配信待ち時間は満足いかない可能性がある。
【0067】
[0078]その代り、1000万個のターゲット102がそれぞれ10,000個のターゲット記録を保持する1,000のストアにわたって分配され、これらのストアがクエリーを実行し、ここに記載するようにパーティションの形で結果を処理する専用計算インフラ(本明細書に記載された「分配エンジン122」および「配信エンジン108」)と対にされた場合、ターゲット記述の取得は、幅広いセットの計算およびネットワークリソースにわたって並列化させることができ、分配された最初のイベントから最後のイベントまで測定された全てのイベントの分配に対する時間差をかなり小さくすることができる。
【0068】
[0079]分配パーティションの実際の数は、技術的には制限されない。単一のパーティションから、1より大きいあらゆる数のパーティションの範囲にわたる可能性がある。
[0080]示した例では、分配パーティション120用の「分配エンジン122」がイベント104を取得すると、最初にイベントデータのサイズを計算し、その後、ルーティングスリップ128のサイズを計算し、これは、イベントサイズと、根本的なメッセージングシステムの許容最大メッセージサイズおよび絶対サイズシーリングのうちのより小さい方の間の差分に基づいて計算することができる。イベントは、「ルーティングスリップ」データ用のいくつかの最小のヘッドルームがあるような寸法で限定される。
【0069】
[0081]ルーティングスリップ128は、ターゲット102の記述を含むリストである。ルーティングスリップは、イベントの範囲をパーティションのストア124内に保持されたターゲット102に対して一致させる検索クエリーを行ない、イベントの範囲、およびイベントデータに関するフィルタリング条件に基づく選択を狭める別の条件の集合に一致する全てのターゲット102を返すことによって、分配エンジン122により作り出される。実施形態は、これらのフィルタ条件の中で、現在の瞬間に有効であると考えられるこれらのターゲット102に結果を制限する時間ウィンドウ条件を含むことができる、これは、現在のUTC時間はターゲット記述記録に含まれた開始/終了有効性時間ウィンドウ内にあるということを意味する。この能力は、本文書でのちに記載するブラックリスト化に使用される。検索結果が詳しく検討されると、エンジンはイベント104のコピーを作り出し、ルーティングスリップ128を最大のサイズまで、ストア124から取り出したターゲット記述で満たし、その後、イベントおよびルーティングスリップの得られたバンドルをパーティションの「配信キュー130」に加える。
【0070】
[0082]ルーティングスリップ技術は、分配エンジン122から(1つまたは複数の)配信エンジン108までのイベントのイベント流速が、根本的なインフラ上の実際のメッセージ流量より高いことを保証し、これは例えば、30個のターゲット記述をイベントデータのそばでルーティングスリップ128内に詰めることができる場合に、イベント/ターゲット対の流速は、イベント/ターゲット対が直ぐにメッセージにグループ化された場合よりも30倍高いということを意味する。
【0071】
[0083]配信エンジン108は、配信キュー130からのイベント/ルーティングスリップバンドル126の消費者である。配信エンジン108の役割は、これらのバンドルをキューから取り除き、イベント104をルーティングスリップ128内に挙げられた全ての宛先に配信することである。配信は普通、イベントメッセージをそれぞれのターゲットインフラによって理解される通知メッセージに形式化するアダプタを通して起こる。例えば、通知メッセージは、ウィンドウズ(登録商標)7フォン用のMPNSフォーマット、iOSデバイス用のAPN(アップルプッシュ通知)フォーマット、アンドロイドデバイス用のC2DM(クラウドツーデバイスメッセージング)フォーマット、デバイス上のブラウザ用のJSON(ジャバスクリプトオブジェクトノーテーション)フォーマット、HTTP(ハイパーテキスト転送プロトコル)などで配信することができる。
【0072】
[0084]配信エンジン108は普通、独立したターゲット102にわたる配信を並列化し、ターゲットインフラによって実施される範囲を共有するターゲット102への配信を直列化する。後者の例は、配信エンジン内の特定のアダプタが、単一のネットワーク接続を通して特定の通知プラットフォーム上の特定のターゲットアプリケーションでターゲット化された全てのイベントを送信することを選択することができるということである。
【0073】
[0085]分配および配信エンジン122および108は、配信キュー130を使用して切り離されて、配信エンジン108の独自のスケーリングが可能になり、配信が減速されるのを防ぎ、分配クエリー/パッキングステージをブロックする。
【0074】
[0086]各分配パーティション120は、配信キュー130を同時に観察するあらゆる数の配信エンジン例を有することができる。配信キュー130の長さを使用して、いくつの配信エンジンが同時にアクティブであるかを判断することができる。キューの長さが特定の閾値と交差する場合、新しい配信エンジン例がパーティション120に加えられて、送信スループットを大きくすることができる。
【0075】
[0087]分配パーティション120、および関連する分配および配信エンジン例を、高いスケールでの最適な並列化を達成するために、実質的に無制限の方法でスケールアップさせることができる。ターゲットインフラが、並列の方法でデバイスに100万のイベント要求を受信および転送することが可能である場合、記載されたシステムは、その配信インフラにわたってイベントを分配することが可能である、潜在的には、ターゲットインフラに負荷がかけられ、あらゆる許可された配信割当が与えられるのを可能にするのと同じだけタイムリーに、全ての所望のターゲット102への配信のためのイベント提示でターゲットインフラを飽和させることができる方法で、データセンタにわたってネットワークインフラおよび帯域幅を利用することが可能である。
【0076】
[0088]メッセージがそれぞれのインフラアダプタを介してターゲット102に配信されると、いくつかの実施形態では、システムは統計情報アイテムの範囲に注意する。これらの中で、配信バンドルの受け取りと、あらゆる個別のメッセージの配信の間の継続時間、および実際の送信動作の継続時間に対する期間が測定される。また、統計情報の一部は、配信が成功したか失敗したかに関する指標である。この情報は、配信エンジン108内で収集され、範囲毎およびターゲットアプリケーション毎に、平均値に丸められる。「ターゲットアプリケーション」は、統計ロールアップの特定の目的で導入されたグループ化識別子である。計算された平均値は、規定のインターバルで配信統計キュー146に送信される。このキューは、ある範囲の目的でデータ倉庫にイベントデータを提示する、管理サービス142内の労働者(の集合)によって流出される。これらの目的は、操作監視に加えて、イベントが配信されるテナントの請求、および/または第三者の独自の請求に対するテナントへの統計の開示を含むことができる。
【0077】
[0089]配信エラーが検出されると、これらのエラーは一時的および永久的エラー状態に分類される。一時的エラー状態としては、例えば、システムがターゲットインフラの配信ポイントに到達することができないネットワーク故障、または配信割当に一時的に到達したことを報告するターゲットインフラを挙げることができる。永久的エラー状態としては、例えば、ターゲットインフラ上の認証/許可エラー、またはターゲットがもはや利用可能ではないまたは永久的にメッセージを受けたくないということをターゲットインフラが報告する人的介入およびエラー状態なしで直すことができない他のエラーを挙げることができる。いったん分類されると、エラーレポートが配信失敗キュー148に提示される。一時的エラー状態では、エラーはまた、エラー状態が解決されることが予測されるまで、絶対UTCタイムスタンプを含むことができる。同時に、ターゲットは、この配信エンジン例によってあらゆるさらなるローカル配信に対するターゲットアダプタにより局所的にブラックリスト化される。ブラックリストはまた、タイムスタンプを含むことができる。
【0078】
[0090]配信失敗キュー148は、管理役割で労働者(の集合)によって流出される。永久的エラーは、それぞれのターゲットを、管理役割がアクセスを有するそれぞれの分配パーティションストア124から直ぐに削除させる可能性がある。「削除」とは、記録が実際に取り除かれる、または別の方法では、規則がその有効期間の「終了」タイムスタンプをエラーのタイムスタンプに設定することによって、検索クエリーから見えないように単に移動されることを意味することがある。一時的エラー状態は、エラーによって示された期間だけターゲットを停止させる可能性がある。停止は、エラー状態が直ると予測される、エラーに示されたタイムスタンプまでターゲットの有効性期間を移動させることによって行なうことができる。
【0079】
[0091]
図9は、取得パーティション140が分配トピック144を通して分配パーティション120に結合されるシステムの概略図を示す。
[0092]以下の議論は次に、行なうことができる多くの方法および方法動作に言及する。方法動作は、特定の順序で議論される、または特定の順序で起こるようにフローチャートで示されることがあるが、動作は行なわれている動作の前に完了している別の動作に左右されるので、特に記されているまたは必要でない限り、特定の順序は必要ではない。
【0080】
[0093]
図10は、方法1000を示す。方法1000は、計算システムで実施することができる。方法1000は、データを配信する動作を含む。この方法は、特定の時点で、時間に関して、データの相対的金融価値を判断するステップを含む(動作1002)。データは、時間の関数として判断することができる。例えば、
図1を参照すると、データは、時間t=0でその最も高い値を、t=15分で最も低い値を有する。したがって、特定の時間で、データは特定の値を有する。特定の時点で、この値を判断することができる。
【0081】
[0094]方法1000はさらに、判断された金融価値に基づいて、金融価値に相関する消費者用の1つまたは複数のエンドユーザ消費者デバイスの集合にデータを提供するステップを含む(動作1004)。例えば、一部の消費者はデータに対して割増金を支払う可能性があり、したがって、データの配信はできるだけ時間t=0に近くなるように試みられる。その他の消費者はデータに対してより少なく支払う可能性があり、それによって、データは、少なく支払いをしているこれらの消費者のレベルに対応する、t=0の後のある時に配信されるように試みられる。
【0082】
[0095]方法1000は、金融価値に相関する消費者用の1つまたは複数のエンドユーザ消費者デバイスの集合にデータを提供するステップが、エンドユーザとのサービスレベル契約にしたがって、データをエンドユーザ消費者デバイスに提供するステップを含む場合に、実施することができる。
【0083】
[0096]方法1000は、金融価値に相関する消費者用の1つまたは複数のエンドユーザ消費者デバイスの集合にデータを提供するステップが、異なる階層化レベルにしたがって、データを異なるエンドユーザ消費者デバイスに提供するステップを含む場合に、実施することができる。例えば、
図5は、どのように異なる層のデータの新しさを使用して、消費者デバイスを通して消費者にデータを提供することができるかを示す。
【0084】
[0097]方法1000は、金融価値に相関する消費者用の1つまたは複数のエンドユーザ消費者デバイスの集合にデータを提供するステップが、データの意図的な遅延配信にデータをゲーティングするステップを含む場合に、実施することができる。例えば、サービスのレベルまたは消費者の優先度のレベルに基づいて、その価値を下げるように、データを意図的に遅らせることができる。
【0085】
[0098]方法1000は、金融価値に相関する消費者用の1つまたは複数のエンドユーザ消費者デバイスの集合にデータを提供するステップは、加入者によって支払われた金額に基づいてエンドユーザ消費者デバイスにデータを提供するステップを含む場合に、実施することができる。例えば、一部の消費者は、ある金額を支払ったことに基づいて、より新しいデータを受信することができる。同様に、より高い支払いの結果、より新しいデータが消費者デバイスに配信されることにつながる可能性がある。
【0086】
[0099]方法1000は、金融価値に相関する消費者用の1つまたは複数のエンドユーザ消費者デバイスの集合にデータを提供するステップは、1つまたは複数のエンドユーザ消費者デバイスにデータを配信するために複数のインフラからインフラを選択することによってデータを提供するステップを含み、インフラの選択は、優先度が高い加入者に優先度が高いインフラを選択するために行なわれる場合に、実施することができる。例えば、優先度が高いインフラが、データを他のインフラより迅速にこれらを通して配信することを可能にする特性を有するという点において、いくつかのインフラは他のインフラより優先度が高い可能性がある。したがって、より高い階層化またはより高い優先度の加入者は、より低い階層化またはより低い優先度の加入者と比べて、他のインフラ上でデータを受信するのと反対に、優先度が高いインフラを通してデータを受信することができる。
【0087】
[00100]方法1000はさらに、どのようにデータがエンドユーザ消費者デバイスに提供されたかに関する統計を、データプロバイダに提供するステップを含むことができる。例えば、
図3に示すように、統計208を、データプロバイダ204に提供することができる。これにより、データプロバイダが、どのようにデータが提供されたかにしたがって、加入者にデータについて請求することが可能になる。
【0088】
[00101]次に
図11を参照すると、別の方法1100が示される。方法1100は、計算システムで実施することができる。方法1100は、データを配信する動作を含む。方法1100は、データの消費者に対する消費者層を判断するステップを含む(動作1102)。例えば、
図5は、異なる消費者に対する異なる階層化を示す。方法1100はさらに、消費者層に一致するように消費者層に相関するエンドユーザデバイスにデータを提供する前に、データをエージングするステップを含む(動作1104)。例えば、消費者層に一致するように十分遅らされるまで、データを消費者に意図的に送信しないことがある。これは、時間の経過とともに価値が下がるデータを示す
図1を参照して、理解することができる。したがって、より低い層の消費者は、その配信を遅らせることによってより価値が低くされた、より低い価値のデータを受信する可能性がある。同様に、方法は、より低い層の消費者への配信のために、古いものとして価値が下がったデータの外部に、データ自体の品質を意図的に下げるステップを含むことができる。
【0089】
[00102]方法1100は、データをエージングするステップが、エンドユーザとのサービスレベル契約にしたがって、エンドユーザ消費者デバイスに対するデータをエージングするステップを含む場合に、実施することができる。
【0090】
[00103]方法1100は、データをエージングするステップが、異なる階層化レベルにしたがって、異なるエンドユーザ消費者デバイスに対するデータをエージングするステップを含む場合に、実施することができる。例えば、
図5は、どのように異なる層のデータの新しさを使用して、消費者デバイスを通して消費者にデータを提供することができるかを示す。
【0091】
[00104]方法1100は、データをエージングするステップが、データの意図的な遅延配信にデータをゲーティングするステップを含む場合に、実施することができる。例えば、サービスのレベルまたは消費者の優先度のレベルに基づいて、その価値を下げるように、データを意図的に遅らせることができる。
【0092】
[00105]方法1100は、データをエージングするステップが、加入者によって支払われた金額に基づいてエンドユーザ消費者デバイスに対するデータをエージングするステップを含む場合に、実施することができる。例えば、一部の消費者は、ある金額を支払ったことに基づいて、より新しいデータを受信することができる。同様に、より高い支払いの結果、より新しいデータが消費者デバイスに配信されることにつながる可能性がある。
【0093】
[00106]方法1100は、データをエージングするステップが、1つまたは複数のエンドユーザ消費者デバイスにデータを配信するために複数のインフラからインフラを選択することによってデータを提供するステップを含み、インフラの選択は、優先度が高い加入者に優先度が高いインフラを、および優先度が低い加入者に優先度が低いインフラを選択するために行なわれる場合に、実施することができる。例えば、優先度が高いインフラが、データを他のインフラより迅速にこれらを通して配信することを可能にする特性を有するという点において、いくつかのインフラは他のインフラより優先度が高い可能性がある。したがって、より高い階層化またはより高い優先度の加入者は、より低い階層化またはより低い優先度の加入者と比べて、他のインフラ上でデータを受信するのと反対に、優先度が高いインフラを通してデータを受信することができる。
【0094】
[00107]方法100はさらに、どのようにデータがエンドユーザ消費者デバイスに提供されたかに関する統計を、データプロバイダに提供するステップを含むことができる。例えば、
図3に示すように、統計208を、データプロバイダ204に提供することができる。これにより、データプロバイダが、どのようにデータが提供されたかにしたがって、加入者にデータについて請求することが可能になる。
【0095】
[00108]さらに、方法は、1つまたは複数のプロセッサ、およびコンピュータメモリなどのコンピュータ読取可能媒体を含むコンピュータシステムによって実施させることができる。特に、コンピュータメモリは、実施形態で言及した活動などの、1つまたは複数のプロセッサによって実行される場合に様々な機能を行なわせるコンピュータ実行可能指示を記憶することができる。
【0096】
[00109]本発明の実施形態は、以下により詳細に論じるように、コンピュータハードウェアを含む専用または汎用コンピュータを備える、または利用することができる。本発明の範囲内の実施形態はまた、コンピュータ実行可能指示および/またはデータ構造を担持または記憶するための物理的または他のコンピュータ読取可能媒体を含む。このようなコンピュータ読取可能媒体は、汎用または専用コンピュータシステムによってアクセスすることができるあらゆる市販の媒体であってもよい。コンピュータ実行可能指示を記憶するコンピュータ読取可能媒体は、物理的記憶媒体である。コンピュータ実行可能指示を担持するコンピュータ読取可能媒体は、伝達媒体である。したがって、限定ではなく例として、本発明の実施形態は、少なくとも2つの個別の異なる種類のコンピュータ読取可能媒体、物理的コンピュータ読取可能記憶媒体および伝達コンピュータ読取可能媒体を備えることができる。
【0097】
[00110]物理的コンピュータ読取可能記憶媒体としては、RAM、ROM、EEPROM、CD−ROMまたは他の光学ディスク記憶装置(CD、DVDなど)、磁気ディスク記憶装置または他の磁気記憶デバイス、またはコンピュータ実行可能指示またはデータ構造の形の所望のプログラムコード手段を記憶するのに使用することができ、汎用または専用コンピュータによってアクセスすることが可能なあらゆる他の媒体が挙げられる。
【0098】
[00111]「ネットワーク」は、コンピュータシステム、および/またはモジュール、および/または他の電子デバイス間の電子データの移送を可能にする1つまたは複数のデータリンクとして定義される。情報がコンピュータにネットワークまたは別の通信接続(有線、無線、または有線または無線の組合せのいずれか)上で伝達または提供される場合、コンピュータは接続を伝達媒体として適切に見る。伝達媒体は、コンピュータ実行可能指示またはデータ構造の形で所望のプログラムコード手段を担持するために使用することができ、汎用または専用コンピュータによってアクセスすることができる、ネットワークおよび/またはデータリンクを含むことができる。上記の組合せはまた、コンピュータ読取可能媒体の範囲内に含まれる。
【0099】
[00112]さらに、様々なコンピュータシステム構成部品に到達する際に、コンピュータ実行可能指示またはデータ構造の形のプログラムコード手段は、伝達コンピュータ読取可能媒体から物理的コンピュータ読取可能記憶媒体に伝達させることができる(または、逆も同様である)。例えば、ネットワークまたはデータリンク上で受信されたコンピュータ実行可能指示またはデータ構造は、ネットワークインターフェイスモジュール(例えば、「NIC」)内でRAMにバッファリングさせ、その後、コンピュータシステムでコンピュータシステムRAMおよび/または揮発性が低いコンピュータ読取可能物理的記憶媒体に次第に伝達させることができる。したがって、コンピュータ読取可能物理的記憶媒体は、また(または、一次的にでさえも)伝達媒体を利用するコンピュータシステム構成部品内に含めることができる。
【0100】
[00113]コンピュータ実行可能指示は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに特定の機能または機能のグループを行なわせる指示およびデータを含む。コンピュータ実行可能指示は例えば、アセンブリ言語、またはさらにはソースコードなどのバイナリ、中間フォーマット指示であってもよい。主体を構造的特性および/または方法的活動に特有の言語で記載したが、添付の特許請求の範囲で定義された主題は、上に記載した特性または活動に必ずしも限定されるものではないことを理解されたい。むしろ、記載した特性および活動は、特許請求の範囲を実施する例示的形として開示されている。
【0101】
[00114]当業者は、本発明を、パソコン、デスクトップコンピュータ、ノートパソコン、メッセージプロセッサ、手持ち式デバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、ページャ、ルータ、スイッチなどを含む、多くのタイプのコンピュータシステム構成でのネットワーク演算環境で実施することができることが分かるだろう。本発明はまた、ネットワークを通して(有線データリンク、無線データリンク、または有線および無線データリンクの組合せのいずれかによって)リンクされた、ローカルおよび遠隔コンピュータシステムが両方ともタスクを行なう分配されたシステム環境で実施することができる。分配されたシステム環境では、プログラムモジュールは、ローカルおよび遠隔メモリ記憶デバイスの両方に配置させることができる。
【0102】
[00115]本発明は、その精神および特徴から逸脱することなく、他の特定の形で具体化させることができる。記載した実施形態は、全ての態様において、単に例示的なものであり、限定するものではないと考えられるものとする。本発明の範囲はしたがって、前述の説明よりむしろ、添付の特許請求の範囲によって示される。特許請求の範囲の均等の意味および範囲内にある全ての変更は、その範囲内に含まれるものである。