(58)【調査した分野】(Int.Cl.,DB名)
前記アトリビューションサーバにより、前記第2のイベントが前記第1のイベントに起因するかどうかを決定するステップをさらに含み、前記第2のイベントが前記第1のイベントに起因するかどうかを決定するステップは、前記アトリビューションサーバにより、前記複数の確認メッセージにアクセスすることなく実行される、請求項1に記載の方法。
前記第1の協調サーバにより、前記第2のイベントが前記第1のイベントに前記起因するものとすることについての合意の指示または不同意の指示を前記アトリビューションサーバから受信するステップをさらに含む請求項1に記載の方法。
前記アトリビューションサーバにより、前記第2のイベントが前記第1のイベントに起因するかどうかを決定するステップは、前記第1のイベントの第1のタイムスタンプと前記第2のイベントの第2のタイムスタンプの間の時間期間が所定の量よりも小さいかどうかを決定するステップを含み、前記第1のイベントを記述する前記データは前記第1のイベントの前記第1のタイムスタンプを含む請求項4に記載の方法。
前記第1の協調サーバにより、前記第2のイベントが前記第1のイベントに起因するかどうかを決定するステップは、前記第2のイベントに関連付けられている識別子と前記第1のイベントに関連付けられている識別子との一致を決定するために、前記第2のイベントに関連付けられている前記識別子で前記複数の確認メッセージを検索するステップを含む請求項1に記載の方法。
前記第2のイベントに関連付けられている前記識別子と前記第1のイベントに関連付けられている前記識別子との一致を決定するために、前記第2のイベントに関連付けられている前記識別子で前記複数の確認メッセージを検索するステップは、前記第2のイベントの前記識別子を前記第1のイベントに関連付けられている前記識別子にマップする識別子マップに基づいて、前記第1のイベントの前記識別子が前記第2のイベントの前記識別子にマップするかどうかを決定するステップを含む請求項9に記載の方法。
前記処理回路は、前記第2のイベントに関連付けられている識別子と前記第1のイベントに関連付けられている識別子との一致を決定するために、前記第2のイベントに関連付けられている前記識別子で前記複数の確認メッセージを検索することによって、前記第2のイベントが前記第1のイベントに起因するかどうかを決定するように構成される請求項11に記載のシステム。
前記処理回路は、前記第2のイベントの前記識別子を前記第1のイベントに関連付けられている前記識別子にマップする識別子マップに基づいて、前記第1のイベントの前記識別子が前記第2のイベントの前記識別子にマップするかどうかを決定することによって、前記第2のイベントに関連付けられている前記識別子と前記第1のイベントに関連付けられている前記識別子との一致を決定するために、前記第2のイベントに関連付けられている前記識別子で前記複数の確認メッセージを検索するように構成される請求項12に記載のシステム。
前記処理回路は、前記アトリビューションサーバにより、前記第1の協調サーバによって格納されている複数の確認メッセージにアクセスすることなく、前記第2のイベントが前記第1のイベントに起因するかどうかを決定することによって、前記第2のイベントが前記第1のイベントに起因するかどうかを決定するように構成される、請求項15に記載のシステム。
前記処理回路は、前記第1のイベントの第1のタイムスタンプと前記第2のイベントの第2のタイムスタンプの間の時間期間が所定の量よりも小さいかどうかを決定することによって、前記第2のイベントが前記第1のイベントに起因するかどうかを決定するように構成され、前記第1のイベントを記述する前記データは前記第1のイベントの前記第1のタイムスタンプを含む請求項15に記載のシステム。
前記処理回路は、前記第1のイベントに関連付けられている第1のタイムスタンプまたは前記第2の協調サーバに関連付けられている前記イベントに関連付けられている第3のタイムスタンプのうちのいずれが、前記第2のイベントに関連付けられている第2のタイムスタンプに時間的により近いのかを決定することによって、前記第2のイベントが前記第2の協調サーバに関連付けられている前記イベントに起因するかどうかを決定するように構成され、前記第2の協調サーバに関連付けられている前記イベントを記述する前記データは、前記第3のタイムスタンプを含む請求項18に記載のシステム。
【発明を実施するための形態】
【0026】
明確にするため、すべてのコンポーネントがすべての図においてラベル表示されているわけではない。図面は、縮尺どおりに描かれるよう意図されてはいない。さまざまな図面において類似する番号および記号表示は類似する要素を示す。
【0027】
概して図面を参照すると、さまざまな実施態様による、さまざまなコンテンツネットワークにわたり生じるイベント間のアトリビューションを決定するためのさまざまな例示のシステムおよび方法が示されている。本明細書において説明されるように、アトリビューションサーバ、および1つまたは複数の協調サーバは、さまざまなイベントのアトリビューションを実行するように構成される。イベントは、ユーザがさまざまなユーザデバイスを介してオンラインリソースで実行することができるオンライン対話であってもよい。本明細書において説明されているシステムおよび方法は、改善されたデータセキュリティを伴うイベントの、リアルタイムの効率的なアトリビューションを達成することができる。
【0028】
本明細書において説明されているアトリビューションサーバは、ユーザが実行することができるさまざまなオンラインアクティビティ間のアトリビューションを実行するように構成されたサーバであってもよい。協調サーバは、ユーザのオンラインアクティビティの指示を受信し、ユーザのオンラインアクティビティを格納し、アクティビティ間のアトリビューションを決定するためにアトリビューションサーバと通信するように構成されたサーバであってもよい。コンテンツプロバイダが複数の協調サーバを使用する(たとえば、コンテンツプロバイダが複数のオンラインコンテンツ配信ネットワーク上でコンテンツを提供する)場合、ユーザは、変換を実行するために協調サーバのコンテンツ項目と対話することができる。各協調サーバは、変換を、それぞれの協調サーバに関連付けられているイベントに起因するとみなすことができる。しかし、1つの会話だけが生じたので両方ではなく、協調サーバのうちの1つのイベントだけが変換のアトリビューションを受信する必要があるため、これはエラーとなることがある。この点について、アトリビューションサーバは、さらに本明細書において説明されるシステムおよび方法を介して変換アトリビューションの重複を訂正するように構成されてもよい。
【0029】
本明細書において説明されている実施態様の一部において、第1のイベントおよび第2のイベントに参照が行われる。第1のイベントは、たとえばセル電話またはパーソナルコンピュータのようなユーザデバイスを介してユーザによって実行され得る、オンラインコンテンツ配信ネットワークを介して提供されるコンテンツ項目との対話(たとえば、コンテンツ項目インプレッションを通じて表示および/またはクリック)のような、オンラインアクティビティであってもよい。協調サーバは、第1のイベントまたは第1のイベントと類似する任意の数のイベントのデータを受信および格納することができる。一部の実施態様により本明細書において第2のイベントと称される、後続のイベントは、第1のイベント後に生じるユーザデバイスとのユーザによって実行されるもう1つのユーザアクティビティであってもよい。一部の実施態様において、第2のイベントは変換である。変換は、ユーザアプリケーションをダウンロードおよび/またはインストールすること、商品および/またはサービスの購入を実行すること、ビデオを視聴すること、サーバにサブスクライブすることなどを含むことができる。本明細書において説明される方法を通じて、アトリビューションは、第1および第2のイベントの間で決定されてもよい。
【0030】
データセキュリティは、協調サーバとアトリビューションサーバの間で交換されるデータに課された制限を通じて本明細書において説明されているシステムおよび方法によって改善されてもよい。たとえば、イベントアトリビューションを決定するために、ユーザのすべてのアクティビティは、アトリビューションサーバによってコンパイルされてもよく、イベント間のアトリビューションは、集合体データセットに基づいてアトリビューションサーバによって決定されてもよい。しかし、イベントデータを集約することは、データのプライバシーにとって望ましくない場合もある。代わりに、本明細書において説明される協調サーバは、第1のイベントに関する十分な情報のみをアトリビューションサーバに提供して、アトリビューションサーバが、協調サーバからユーザのすべてのイベントに関連するデータを取得することなく、または協調サーバから第1のイベントに関する情報のすべてを取得することなく、アトリビューションを確認または否認することができるようにしてもよい。さらに、ユーザイベントデータの膨大なセットを通信するのではなく、アトリビューションサーバと協調サーバとの間の制約された通信を通じて、交換を起因するイベントに制約することによって、ネットワーク帯域幅が節約される。
【0031】
概して、本明細書において説明される方法は、協調サーバにより、第1のイベントのデータ、および第1のイベントに続いて生じる第2のイベントのアトリビューションの要求をアトリビューションサーバから受信するステップを含むことができる。第2のイベントのアトリビューションの要求を受信したことに応じて、協調サーバは、格納されているイベントデータに検索を実行することによって第1のイベントを識別することができる。格納されているイベントデータは、任意の数のユーザイベントを含むことができ、第1のイベントに関連するデータを含んでもよい。
【0032】
協調サーバは、格納されているイベントから起因するイベント(第1のイベント)を識別することができる。協調サーバは、第1のイベントの記述をアトリビューションサーバに返すことができる。一部の実施態様において、複数の協調サーバは、起因するイベントを識別して、アトリビューションサーバに起因するイベントを提供する。アトリビューションサーバは、イベントの記述に基づいて、協調サーバによって提案されたアトリビューションを確認または拒否することができる。アトリビューションサーバは、合意または不同意の指示を協調サーバの各々に送信することができる。
【0033】
本明細書において説明される一部の実施態様において、複数の協調サーバは、さまざまなコンテンツネットワークにわたるオンラインユーザアクティビティの指示を受信することができる。2つの異なるコンテンツネットワークを介してコンテンツ項目をユーザに提供するコンテンツプロバイダは、ユーザが両方のコンテンツネットワークにわたりそれらのコンテンツ項目とどのように対話するのかを理解しようとする場合もある。第1の協調サーバは、第1のコンテンツネットワークに関連付けられているコンテンツ項目を伴うユーザアクティビティの指示を受信することができ、一方第2の協調サーバは、第2のコンテンツネットワークに関連付けられているコンテンツ項目を伴うユーザアクティビティの指示を受信することができる。
【0034】
アトリビューションサーバは、ユーザによって実行された第2のイベントを認識するようになる。このイベントは、ユーザが、第1のコンテンツネットワークのコンテンツおよび第2のコンテンツネットワークのコンテンツを表示またはこれと対話した後に実行する変換であってもよい。両方の協調サーバは、これらが変換を生じさせたと決定することができ、それぞれのユーザインターフェースにおいて変換を考慮に入れる変換メトリクスを表示することができる。しかし、1つの変換だけが生じたので、協調サーバによってレポートされた変換は重複であり、実際には協調サーバのうちの1つに関連付けられているイベントのみに起因しているはずである。
【0035】
この重複を訂正するため、アトリビューションサーバは、アトリビューションの要求を2つの協調サーバに送信し、引き換えに潜在的に起因するイベントを協調サーバから受信することができる。これらの潜在的に起因するイベントに基づいて、アトリビューションサーバは、変換イベントが、第1の協調サーバに関連付けられているオンラインユーザアクティビティ、または第2の協調サーバに関連付けられているオンラインユーザアクティビティに起因するかどうかを決定することができる。一部の実施態様において、第1および第2の協調サーバは、それぞれのオンラインユーザアクティビティに関する情報をアトリビューションサーバに送信する。この情報は、対話が発生したタイムスタンプを含むことができる。アトリビューションサーバは、タイムスタンプに基づいて、オンラインユーザ対話の1つだけを変換に起因するものとして選択することができる。アトリビューションサーバは、変換のタイムスタンプに時間的に最も近く発生するイベントのみを起因するとみなすことができる。
【0036】
アトリビューションサーバは、アトリビューションの確認または拒否を第1および第2の協調サーバに送信することができる。たとえば、アトリビューションサーバが、第1の協調サーバによって実行されるオンラインイベントアクティビティがアトリビューションを受信すべきであると決定する場合、アトリビューションサーバは、アトリビューションの通知を協調サーバに、および非アトリビューションの通知を第2の協調サーバに送信することができる。この点において、両方の協調サーバは、これらが格納および/またはユーザに提示するデータメトリクスをより正確に更新することができる。第1の協調サーバは、アトリビューションの通知をアトリビューションサーバから受信したことに応じて、協調サーバに関連付けられているユーザ対話が変換に起因すると決定(または保持)することができる。しかし、第2の協調サーバは、非アトリビューションの通知に基づいて、第2の協調サーバに関連付けられているユーザ対話が、変換を生じるものとみなされるべきではないと決定することができる。
【0037】
一部の実施態様において、各協調サーバは、コンテンツプロバイダがユーザアクティビティに関連付けられているメトリクスを表示できるようにするダッシュボードを含むことができる。各ダッシュボードは、コンテンツプロバイダが、本明細書において説明されるクロスネットワークイベントアトリビューションのシステムおよび方法を介してイベントの非重複化を使用可能または使用不可にできるようにしてもよい。同様に、アトリビューションサーバは、コンテンツプロバイダがユーザアクティビティに関連付けられているメトリクスを表示できるようにするダッシュボードを含むことができ、ユーザアクティビティは1つまたは複数の協調サーバに関連付けられている。この点において、協調サーバは、各々それぞれの協調サーバによって受信されるユーザアクティビティをレポートするダッシュボードを含むことができる。非重複化を使用可能にすることは、協調サーバを、アトリビューションサーバによって容易にされるアトリビューションの方法に参加させることができる。非重複化を使用不可にすることは、協調サーバに、アトリビューションサーバから受信された任意の要求または通知を無視させることができる。
【0038】
本明細書において説明されるシステムがユーザに関する情報を収集するか、またはユーザに関する情報を使用することができる状況の場合、ユーザには、プログラムまたは特徴がユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションまたはアクティビティ、専門的職業、ユーザの好み、またはユーザの現在位置に関する情報など)を収集するかどうかを制御する、またはユーザにより関連があるかもしれないコンテンツをコンテンツサーバから受信するかどうか、および/またはその方法を制御する機会を提供されてもよい。加えて、特定のデータは、それが格納または使用される前に1つまたは複数の方法で処理されて、ユーザに関する特定のデータが除去されるようになっていてもよい。たとえば、ユーザの識別は、ユーザについて識別情報が決定され得ないように処理されてもよいか、またはユーザの特定の位置が決定され得ないように、位置情報が取得される場合に(都市、郵便番号、または州レベルまでのように)ユーザの地理的位置が一般化されてもよい。したがって、ユーザは、ユーザに関する情報がコンテンツサーバによってどのように収集され、使用されるかを制御してもよい。
【0039】
これ以降、
図1Aを参照すると、例示的な実施態様による、イベントアトリビューションを実行するための例示のコンピューティング環境100を説明するブロック図が示されている。コンピューティング環境100は、ネットワーク110(たとえば、インターネット)を含むように示されており、クライアントデバイス120はネットワーク110を通じて、リソースをクライアントデバイス120に提供するサーバのような、その他のネットワーク接続されたコンピュータシステムと通信するように構成されてもよい。リソースは、電子メール、Webページ、メディアストリーミング、およびアプリケーションサポートであってもよい。
【0040】
図1Aは、アプリケーションバックエンドサーバ130、イベントサーバ140、アトリビューションサーバ150、および協調サーバ160を含むように示されている。サーバは、ネットワーク110を介して、別個のプライベートネットワークもしくはバックプレーン(図示せず)を介して、または直接リンクを介して通信することができる。サーバは、独立したパーティによって操作されてもよいか、同一のパーティによって操作されてもよいか、および/または統合されてもよい。一部のサーバは、サーバの機能で使用するためのデータを保持してもよく、たとえば協調サーバ160は、データストレージ190と通信するよう示されている。
【0041】
クライアントデバイス120、アプリケーションバックエンドサーバ130、イベントサーバ140、アトリビューションサーバ150、および/または協調サーバ160は、1つまたは複数の処理回路を介してさまざまな方法(たとえば、
図2〜
図3を参照して説明される方法)を実行するように構成されてもよい。本明細書においてさらに参照して説明される、
図1Bは、クライアントデバイス120としての使用に適した、および/または
図1Aおよび本明細書の他の箇所を参照してさらに詳細に説明される、アプリケーションバックエンドサーバ130、イベントサーバ140、アトリビューションサーバ150、および/または協調サーバ160としての構成に適した処理回路(たとえば、プロセッサおよびメモリ)を伴う例示のコンピューティングデバイス101を示すブロック図を提供する。
図1Bはまた、さまざまなノード間の通信、たとえばクライアントデバイス120とアプリケーションバックエンドサーバ130および/またはイベントサーバ140のようなサーバとの間の通信を使用可能にする、ネットワーク110をさらに示す。
【0042】
さらに
図1Aを参照すると、クライアントデバイス120は、コンピューティングシステムを含むことができる、つまりアプリケーションを実行し、出力をユーザに提示し、ユーザからの入力を受信するプロセッサベースのデバイスが示される。クライアントデバイス120は、たとえば、デスクトップコンピュータ、ラップトップもしくはノートパッドコンピュータ、タブレットもしくは電子パッドのようなモバイルデバイス、携帯情報端末、スマートフォン、ビデオゲームデバイス、テレビジョンまたはテレビジョン補助ボックス(セットトップボックスとも称される)、キオスク、ホステッド仮想デスクトップ、またはネットワーク110を介して情報を交換することができる任意のその他のそのようなデバイスを含む、任意の種類のコンピューティングデバイスであってもよい。クライアントデバイス120は、ネットワーク110を介して
図1Aのその他のコンピューティングデバイスと情報を交換するように構成されてもよい。
【0043】
たとえば、クライアントデバイス120は、開放型システム間相互接続(OSI)レイヤに準拠するプロトコルを使用して、たとえばインターネットプロトコル(IP)、たとえばIPv4もしくはIPv6のようなOSIレイヤ3ネットワークプロトコル上にレイヤされた、ユーザデータグラムプロトコル(UDP)、伝送制御プロトコル(TCP)、またはストリーム伝送プロトコル(SCTP)のようなOSIレイヤ4トランスポートプロトコルを使用して、ネットワーク110上で情報を交換するように構成されてもよい。一部の実施態様において、クライアントデバイス120は、データ入力およびデータ提示を容易にするための1つまたは複数のハードウェア要素、たとえばキーボード、ディスプレイ、タッチスクリーン、マイクロフォン、スピーカー、および/または触覚型フィードバックデバイスを含む。一部の実施態様において、クライアントデバイス120は、ボタン、たとえば機能固有のボタン(たとえばボリュームを上げる、ボリュームを下げる、ミュートするなどのようなオーディオデバイスボリューム制御)、および/または機能非依存のボタン(たとえばソフトウェアレベルで固有の機能が割り当てられ得るソフトボタン)を含む。一部の実施態様において、クライアントデバイス120は、クライアントデバイス120自体の移動を検出することができる1つまたは複数のセンサー、たとえば加速度計、ジャイロスコープ、および/または傾斜センサーを含む。
【0044】
加速度計は、単軸または多軸の加速度計であってもよい。一部の実施態様において、クライアントデバイス120は、慣性計測装置(IMU)を含む。一部の実施態様において、クライアントデバイス120は、たとえば特定用途向け集積回路(ASIC)のような、特殊用途論理回路を使用して実施される。一部の実施態様において、クライアントデバイス120は、少なくとも1つのプロセッサ(またはマイクロプロセッサ)コアを含むシステムオンチップ(SoC)半導体デバイスを使用して実施される。一部の実施態様において、クライアントデバイス120は、汎用コンピューティングプロセッサを使用して実施される。
図1Bは、一部の構成において、クライアントデバイス120としての使用に適しているコンピューティングデバイス101を示す。
【0045】
一部の実施態様において、クライアントデバイス120は、クライアントデバイス120上のソフトウェアアプリケーションの実行を管理するオペレーティングシステムを実行する。一部の実施態様において、オペレーティングシステムは、クライアントデバイス120と共に提供される。一部の実施態様において、クライアントデバイス120は、ハイパーテキスト転送プロトコル(HTTP)および/またはトランスポートレイヤセキュリティ(HTTPS)により暗号化されたHTTPのような、ハイパーテキストアプリケーションプロトコルのスイートに従ってフォーマットされたデータを受信することができるブラウザアプリケーション(たとえば、Webブラウザ)を実行する。
【0046】
一部のそのような実施態様において、ブラウザは、1つまたは複数のWebページの形態でクライアントデバイス120において提示されるインターフェースを介して1つまたは複数のサーバとの対話を容易にする。一部の実施態様において、ブラウザアプリケーションは、クライアントデバイス120と共に提供される。一部の実施態様において、クライアントデバイス120は、たとえばアプリケーションバックエンドサーバ130のような、たとえばサーバと対話するゲームまたはその他のアプリケーションなどのカスタムアプリケーションを実行する。カスタムアプリケーションとアプリケーションバックエンドサーバの間の対話は、HTTPおよびHTTPSのような標準のプロトコルを使用してもよいか、またはアプリケーション固有のプロトコル、たとえばUDP、TCP、またはSCTPのようなトランスポートレイヤプロトコル上で実施されるカスタムアプリケーションレイヤプロトコルを使用してもよい。一部の実施態様において、クライアントデバイス120は、クライアントデバイス120上で(カスタムアプリケーションのような)追加のアプリケーションを取得および/またはインストールするためのツールを含む。一部の実施態様において、クライアントデバイス120が通信するサーバの1つまたは複数は、たとえばアプリケーションプログラミングインターフェース(API)のようなカスタム命令セットをサポートし、クライアントデバイス120で実行されるカスタムアプリケーションはAPIを実施する。アプリケーションは、たとえばアプリケーションの開発者に提供されるライブラリまたはソフトウェア開発キット(SDK)を使用してAPIを実施することができる。
【0047】
クライアントデバイス120は、アプリケーションバックエンドサーバ130および/またはイベントサーバ140のようなさまざまなサーバと通信する(またはデータを交換する)ように構成されてもよい。一部の実施態様において、サーバ130、140、150、および160の1つまたは複数は、たとえば特定用途向け集積回路(ASIC)のような、特殊用途論理回路を使用して実施される。一部の実施態様において、サーバ130、140、150、および160の1つまたは複数は、少なくとも1つのプロセッサ(またはマイクロプロセッサ)コアを含むシステムオンチップ(SoC)半導体デバイスを使用して実施される。一部の実施態様において、サーバ130、140、150、および160の1つまたは複数は、汎用コンピューティングプロセッサを使用して実施される。
図1Bは、一部の構成において、アプリケーションバックエンドサーバ130、イベントサーバ140、アトリビューションサーバ150、および/または協調サーバ160としての使用に適しているコンピューティングデバイスを示す。
【0048】
図1Aにおいて、アプリケーションバックエンドサーバ130は、クライアントデバイス120で実行しているアプリケーションにバックエンドサポートを提供することができる。一部の実施態様において、アプリケーションバックエンドサーバ130は、クライアントデバイス120からデータを受信して、クライアントデバイス120にデータを送信するサービスを実行する。たとえば、クライアントデバイス120上で実行しているアプリケーションは、ブラウザ、たとえばアプリケーションバックエンドサーバ130によって提供されるコンテンツを提示するWebブラウザであってもよい。クライアントデバイス120上で実行しているアプリケーションは、ブラウザ、たとえばさまざまなプレイヤーのゲームデータがアプリケーションバックエンドサーバ130によって格納されるマルチプレイヤーゲームであってもよい。
【0049】
クライアントデバイス120上で実行されているアプリケーションは、トランザクションファシリエータ、たとえばアクセスチケットもしくはトランジットチケット管理アプリケーション、クーポンハンドラ、または支払いプロセッサであってもよく、ここでトランザクションの一部のデータはアプリケーションバックエンドサーバ130によって格納または認証されてもよく、クライアントデバイス120上で実行されているアプリケーションは、アプリケーションの一部の機能がアプリケーションバックエンドサーバ130によって提供されるユーティリティであってもよいか、またはサポートのためにバックエンドサーバ130を使用する任意の他の種類のクライアントアプリケーションであってもよい。一部の実施態様において、クライアントデバイス120からリモートにデータを格納することで、複数のユーザまたはクライアントデバイス間の非同期の対話を可能にし、クライアントデバイス120の故障が生じた際の復旧を容易にし、ネットワークを超えて世界にインターフェースを提供する。
【0050】
イベントサーバ140は、アプリケーションバックエンドサーバ130と同様に、サーバサイド機能を、クライアントデバイス120で実行しているアプリケーションに提供することができる。クライアントデバイス120上で実行しているアプリケーションは、要求またはイベント通知を生成して、アプリケーションバックエンドサーバ130および/またはイベントサーバ140に送信するように構成されてもよい。たとえば、アプリケーションは、イベントサーバ140は、アプリケーションバックエンドサーバ130に固有のデータを要求してもよいか、またはクライアントデバイス120における状態の変化についてイベントサーバ140に通知してもよい。一部の実施態様において、アプリケーションバックエンドサーバ130およびイベントサーバ140は、同じサーバであるか、または、たとえば同じ自律システム(AS)ネットワークにおいて、同じパーティによって操作もしくは管理される。
【0051】
一部の実施態様において、アプリケーションバックエンドサーバ130およびイベントサーバ140は、別個のサーバであるか、または、一部の実施態様において、異なるパーティによって操作もしくは管理される。つまり、一部の実施態様において、イベントサーバ140は、サードパーティによって制御されてもよい。一部の実施態様において、クライアントデバイス120上で実行しているアプリケーションは、クライアントデバイス120へのアプリケーションの初期インストール、クライアントデバイス120におけるアプリケーションのスタートアップイベント、クライアントデバイス120における選択イベントのようなユーザ対話イベント、アプリケーションが制限されたリソースを消費した場合の償還イベント(たとえば、チケットアプリケーションは、イベントまたはトランジットにアクセスするためにチケットが使用されたことをイベントサーバに通知することもある)、クライアントデバイス120におけるアプリケーション障害のようなエラーイベントなどのような、イベントに対してイベント通知を生成してイベントサーバ140に送信するように構成されてもよい。一部の実施態様において、アプリケーションバックエンドサーバ130は、イベントが発生したと決定し、通知をイベントサーバ140に提供するように構成されてもよい。たとえば、クライアントデバイス120は、バックエンドサーバ130に通知してもよく、バックエンドサーバ130は次に、イベントサーバ140に通知する。
【0052】
アトリビューションサーバ150は、イベントを相関させて、アトリビューションを識別するためにデータを管理するコンピューティングシステムであってもよい。アトリビューションサーバ150は、イベントサーバ140によって処理されるイベントに起因する協調イベントを識別するために、協調サーバ160と対話するように構成されてもよい。一部の実施態様において、イベントサーバ140は、アトリビューションに対応するイベントシーケンスを決定するために、アトリビューションサーバ150と対話するように構成されてもよい。一部の実施態様において、イベントサーバ140およびアトリビューションサーバ150は、同じサーバであるか、または、たとえば同じ自律システム(AS)ネットワークにおいて、同じパーティによって操作もしくは管理される。一部の実施態様において、アプリケーションサーバ140およびアトリビューションサーバ150は、別個のサーバであるか、または、一部の実施態様において、異なるパーティによって操作もしくは管理される。つまり、一部の実施態様において、アトリビューションサーバ150は、サードパーティによって制御されてもよい。
【0053】
協調サーバ160は、イベントを協調させるように構成されたコンピューティングシステムであってもよい。一部の実施態様において、協調サーバ160は、協調メッセージをクライアントデバイス120に送信し、協調メッセージへの応答の指示を受信する。協調メッセージは、たとえば、アクションを行うこと(たとえば、アプリケーションをインストールする、Webページにアクセスする、または購入を行うこと)への勧誘であってもよく、応答は結果(たとえば、インストールされたアプリケーションの実行、Webページにアクセスするよう求める要求、または購入トランザクション)を示すことができる。イベントは、成果イベント(たとえば、アプリケーションのインストール)に終わるシーケンスを形成することができ、アトリビューションサーバ150は、イベント間の関連付けを識別して、成果イベントに終わるシーケンス内のアトリビューションの1つまたは複数のイベントを識別する。一部の実施態様において、アトリビューションサーバ150は、成果イベントに直接至るものとしてアトリビューションの最後から2番目のイベントを識別する。場合によっては、協調メッセージは結果として、協調サーバ160が関与していない一連のイベントをもたらすこともある。
【0054】
たとえば、協調メッセージは、クライアントデバイス120をアプリケーションインストールインターフェースに接続することができ、協調サーバ160は、クライアントデバイス120がアプリケーションインストールインターフェースにアクセスしたが、アプリケーションがクライアントデバイス120にインストールされたかどうかのようなさらなる情報をアプリケーションインストールインターフェースから受信しない場合があることを示す応答を受信することがある。アプリケーションが後にクライアントデバイス120にインストールされる場合、インストールイベントが勧誘に起因するかもしれないか、または介在するイベント(たとえば、別の協調サーバにおいて発信する勧誘)が起因しているはずであるかもしれない。
【0055】
協調サーバ160は、データをデータストレージ190で格納および/または取り出すように構成されてもよい。データストレージ190に格納されたデータは、たとえば、構成データ、協調メッセージデータ、および協調メッセージの統計を含むことができる。データストレージ190は、1つまたは複数のデータストレージデバイスを使用して実施されてもよい。データストレージデバイスは、コンピュータ可読データを格納するために適した任意のメモリデバイスであってもよい。データストレージデバイスは、固定のストレージを備えるデバイス、または取外し可能ストレージ媒体を読み取るためのデバイスを含むことができる。例は、あらゆる形態の不揮発性のメモリ、媒体およびメモリデバイス、半導体メモリデバイス、(たとえばEPROM、EEPROM、SDRAM、およびフラッシュメモリデバイス)、磁気ディスク、磁気光学ディスク、ならびに光学ディスク(たとえば、CD-ROM、DVD-ROM、またはブルーレイディスク)を含む。適切なデータストレージデバイスの例示の実施態様は、ストレージエリアネットワーク(SAN)、ネットワーク接続ストレージ(NAS)、および冗長ストレージアレイ(たとえば、RAIDアレイ)を含む。一部の実施態様において、データストレージ190は、たとえばリレーショナルデータベース管理システム(RDBMS)を使用して、リレーショナルデータベースをホスティングする。一部の実施態様において、データストレージ190は、たとえばXMLファイルのようなファイルとして格納されたデータを管理する。
【0056】
図1Aには示されていないが、アプリケーションバックエンドサーバ130、イベントサーバ140、アトリビューションサーバ150、および/または協調サーバ160を含む、複数のサーバは、示されているデータストレージ190のような、独立型または共有のデータストレージシステムを使用してもよい。
【0057】
これ以降、
図1Bを参照すると、例示的な実施態様による、例示のコンピューティングシステム101を説明するブロック図が示されている。コンピューティングシステム101は、例示的な実施態様による、本明細書において説明されるコンピュータ化されたコンポーネントを実施する際の使用に適している。概観において、コンピューティングシステム101は、命令、たとえばキャッシュメモリ103に保持された命令に従ってアクションを実行するためのプロセッサ102を含む。示されている例示のコンピューティングシステム101は、バス105を介して、メインメモリ106、ネットワークインターフェースコントローラ107、入出力(I/O)インターフェース108、およびデータストレージ109と通信する1つまたは複数のプロセッサ102およびコプロセッサ104を含む。一部の実施態様において、コンピューティングシステム101は、追加のインターフェースまたはその他のコンポーネント116を含むことができる。
【0058】
一部の実施態様において、プロセッサ102は、メインメモリ106から(またはデータストレージ109から)キャッシュメモリ103に命令をロードするように構成されてもよい。さらに、プロセッサ102は、キャッシュメモリ103からオンボードレジスタに命令をロードして、オンボードレジスタから命令を実行するように構成されてもよい。一部の実施態様において、命令は、エンコードされて読取り専用メモリ(ROM)から読み取られるか、または図示されていないファームウェアメモリチップ(たとえば、Basic I/O System(BIOS)の命令を格納する)から読み取られる。
【0059】
示されているように、プロセッサ102は、キャッシュメモリ103に直接接続される。しかし、一部の実施態様において、キャッシュメモリ103は、プロセッサ102に組み入れられる、および/またはプロセッサ102として同じ回路またはチップ上で実施される。一部の実施態様は、各々さらにプロセッサ102から取り外される、キャッシュメモリ103の複数レイヤまたはレベルを含む。一部の実施態様は、複数のプロセッサ102、および/または追加の特殊化された命令のサポートによりプロセッサ102を拡張するコプロセッサ104(たとえば、数値計算コプロセッサ、浮動小数点コプロセッサ、および/またはグラフィックスコプロセッサ)を含む。示されているように、コプロセッサ104は、プロセッサ102に緊密に接続される。しかし、一部の実施態様において、コプロセッサ104は、プロセッサ102に組み入れられるか、またはプロセッサ102として同じ回路もしくはチップ上で実施される。一部の実施態様において、コプロセッサ104は、プロセッサ102からさらに取り外される、たとえばバス105に接続される。
【0060】
ネットワークインターフェースデバイス107は、ネットワークデバイス114への接続のために(たとえば、ネットワーク110へのアクセスのために)1つまたは複数のネットワークインターフェース117を制御するように構成されてもよい。入出力インターフェース108は、キーボード、タッチスクリーン、マイクロフォン、モーションセンサー、ビデオディスプレイ、スピーカー、触覚型フィードバックデバイス、プリンタなどのような、さまざまな入出力デバイスとの間のデータの送信および受信を容易にするように構成されてもよい。一部の実施態様において、入出力デバイス118の1つまたは複数は、コンピューティングシステム101に組み入れられる。一部の実施態様において、入出力デバイス118の1つまたは複数は、コンピューティングシステム101の外部であって、分離可能である。一部の実施態様において、コンピューティングシステム101は、特殊用途論理回路、たとえば特定用途向け集積回路(ASIC)またはプロセッサ102および1つまたは複数の追加のコンポーネント、たとえばキャッシュメモリ103、ネットワークインターフェースコントローラ107およびネットワークインターフェース117、ならびに1つまたは複数の入出力インターフェース108を含むシステムオンチップ(SoC)半導体デバイスを使用して実施される。
【0061】
プロセッサ102は、命令、たとえばキャッシュメモリ103、メインメモリ106、データストレージ109、または図示されていないその他のメモリから取り出された命令を処理する任意の論理回路であってもよい。プロセッサ102は、多数のデータおよび命令レジスタを含む。一部の実施態様において、スタートアップ(ブート)時に、プロセッサ102は、さらに多くの命令をロードするための命令を含む初期命令をBIOSからレジスタにロードして、レジスタから命令を実行するように構成されてもよい。一部の実施態様において、BIOS命令は、プロセッサ102に、オペレーティングシステム(OS)をロードさせ、それにより、次にプロセッサ102に1つまたは複数のプログラムをロードして実行させる。
【0062】
プロセッサ102は、1つまたは複数の付属のコプロセッサ104によって拡張されてもよく、これは特定用途のための専用命令セットを伴う付属の処理ユニットである。一部の実施態様において、認識されていない命令に直面したプロセッサ102は、たとえば専用バスを介して、命令をコプロセッサ104に渡して、コプロセッサ104もまた命令を認識しない場合、未認識命令障害を生成することだけを行う。プロセッサ102およびコプロセッサ104は各々、単一コアまたは複数コアのプロセッサであってもよい。
【0063】
コンピューティングシステム101は、複数の別個のプロセッサ102および/または複数の別個のコプロセッサ104を含むことができる。たとえば、一部の実施態様において、マルチコア中央演算処理装置(CPU)のような汎用プロセッサ102は、数値計算コプロセッサ、浮動小数点コプロセッサ、またはグラフィックス処理ユニット(GPU)のような、1つまたは複数の特殊用途コプロセッサ104により拡張されてもよい。たとえば、数値計算コプロセッサ104は、高精度または複雑な計算によりプロセッサ102を支援することができる。一部の実施態様において、プロセッサ102およびコプロセッサ104は、1つまたは複数のチップ上の回路として実施される。コンピューティングシステム101は、本明細書において説明される動作を行うことができる、任意のプロセッサ102、またはプロセッサ102および/またはコプロセッサ104のセットに基づいてもよい。
【0064】
キャッシュメモリ103は、一般に、高速なアクセス時間のためにプロセッサ102に極めて接近して配置されたコンピュータメモリの形態をとる。一部の実施態様において、キャッシュメモリ103は、プロセッサ102の一部であるか、またはプロセッサ102と同じチップ上のメモリ回路である。一部の実施態様において、キャッシュメモリ103の複数レベル、たとえばL2およびL3キャッシュレイヤがある。一部の実施態様において、複数のプロセッサ102、および/またはプロセッサ102の複数のコアは、同じキャッシュメモリ103へのアクセスを共有する。
【0065】
メインメモリ106は、コンピュータ可読データを格納するために適した任意のデバイスであってもよい。メインメモリ106は、特定のアドレスへの直接アクセスをサポートするデバイスである、つまりメインメモリ106はランダムアクセスメモリ(RAM)である。一部の実施態様において、メインメモリ106は、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ダブルデータ速度SDRAM(DDR SDRAM)、スタティックランダムアクセスメモリ(SRAM)、T-RAM、Z-RAMなどのような、揮発性半導体メモリデバイスである。コンピューティングデバイス101は、メインメモリ106としての機能を果たす任意の数のデバイスを有することができる。
【0066】
データストレージ109は、電源入れ直し中にコンピュータ可読データを格納するために適した任意のデバイスであってもよい。一部の実施態様において、データストレージ109は、磁気ディスク、たとえばハードディスクドライブ(HDD)のような、固定のストレージ媒体を備えるデバイスである。一部の実施態様において、データストレージ109は、磁気ディスク(たとえば、フロッピーディスクドライブまたは取外し可能HDD)、磁気テープ、磁気光学ディスク、または光学ディスク(たとえば、CD-ROM、DVD-ROM、またはブルーレイディスク)のような取外し可能ストレージ媒体を備えるデバイスである。一部の実施態様において、データストレージ109は、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EPROM)、またはフラッシュメモリのような不揮発性の半導体メモリデバイスである。一部の実施態様において、メインメモリ106は、たとえばマルチレベルセル(MLC)NANDベースのフラッシュメモリを使用する、ソリッドステートドライブ(SSD)である。コンピューティングデバイス101は、データストレージ109としての機能を果たす任意の数のデバイスを有することができる。
【0067】
引き続き
図1Bを参照すると、バス105は、たとえばプロセッサ102をメインメモリ106、ネットワークインターフェースコントローラ107、入出力インターフェース108、およびデータストレージ109に接続するなど、コンピューティングシステム101のさまざまな内部コンポーネントの間のデータ交換を提供するインターフェースである。一部の実施態様において、バス105は、コンピューティングシステム101の外部の1つまたは複数のコンポーネント、たとえばその他のコンポーネント116とのデータ交換をさらに提供する。一部の実施態様において、バス105は、直列および/または並列の通信リンクを含む。一部の実施態様において、バス105は、Integrated Drive Electronics(IDE)、Peripheral Component Interconnect Express(PCI)、Small Computer System Interface(SCSI)、またはユニバーサルシリアルバス(USB)のような、データバス標準を実施する。一部の実施態様において、コンピューティングシステム101は、複数のバス105を有する。
【0068】
コンピューティングシステム101は、1つまたは複数の入力または出力(I/O)デバイス118を含むことができるか、またはそのインターフェース108を提供することができる。入出力デバイス118は、キーボード、タッチスクリーン、タッチパッド(たとえば電磁誘導パッド、静電パッド、静電容量式パッドなど)、マイクロフォン、ジョイスティック、フットペダル、慣性計測装置(IMU)、加速度計、ジャイロスコープ、傾斜センサー、移動センサー、環境センサー、MIDI楽器(たとえばMIDIキーボード)のようなMusical Instrument Digital Interface(MIDI)入力デバイス、スタイラス、およびマウスまたはトラックボールのようなポインティングデバイス、のような入力デバイスを非制限的に含む。出力デバイスは、ビデオディスプレイ、スピーカー、触覚型フィードバックデバイス、リフレッシュ可能展示端末、照明、サーボ、MIDIシンセサイザのようなMIDI出力デバイス、および2次元または3次元プリンタ(インクジェットプリンタ、レーザープリンタ、感熱式プリンタ、光造形プリンタ、押出し堆積プリンタ、および金属焼結プリンタを含むがこれらに限定されない)を含む。
【0069】
ネットワーク110は、コンピューティングシステム101およびネットワークデバイス114のようなさまざまなノードの間の通信を可能にする。一部の実施態様において、データは、ネットワーク110を通じてソースノードから宛先ノードへとデータパケットのフローとして、たとえば開放型システム間相互接続(OSI)レイヤに従ってデータパケットの形態で流れる。パケットのフローは、たとえば、IPv4またはIPv6などのインターネットプロトコル(IP)のようなOSIレイヤ3ネットワークプロトコル上にレイヤされたネットワーク110を介して送信される、ユーザデータグラムプロトコル(UDP)、伝送制御プロトコル(TCP)、またはストリーム伝送プロトコル(SCTP)のような、OSIレイヤ4トランスポートプロトコルを使用してもよい。ネットワーク110は、参加しているデバイス間の1つまたは複数のデータ通信を形成するために相互にリンクされたさまざまなネットワークデバイス(ノード)で構成される。それぞれのネットワークされたデバイスは、通常は1つまたは複数のデータパケットとして、データを受信および/または送信するための少なくとも1つのネットワークインターフェースを含む。例示のネットワーク110はインターネットであるが、その他のネットワークが使用されてもよい。ネットワーク110は、自律システム(AS)、すなわち一貫性のある統一されたルーティングポリシーの下に操作され(またはASネットワークの外側から少なくともそのように見え)、概して単一の管理エンティティ(たとえばシステムオペレータ、管理者、または管理グループ)によって管理されるネットワークであってもよい。
【0070】
ネットワーク110は、複数の接続されたサブネットワークまたはASネットワークで構成されてもよく、これは、介在ネットワーク(通過ネットワーク)、デュアルホームゲートウェイノード、ポイントオブプレゼンス(PoP)、インターネットエクスチェンジポイント(IXP)、および/または追加のその他のネットワーク境界で構成されてもよい。ネットワーク110は、企業イントラネットのようなローカルエリアネットワーク(LAN)、大都市圏ネットワーク(MAN)、ワイドエリアネットワーク(WAN)、インターネットのような相互のネットワーク、またはピアツーピアネットワーク、たとえばアドホックWi-Fiピアツーピアネットワークであってもよい。ネットワーク110内のノード間のデータリンクは、物理リンク(たとえば、光ファイバ、メッシュ、同軸、Cat-5またはCat-6などのようなツイストペア)および/または無線リンク(たとえば、無線、衛星、マイクロ波など)の任意の組合せであってもよい。
【0071】
ネットワーク110は、モバイル通信デバイス向けのキャリアネットワーク、たとえばGlobal System for Mobile Communications(GSM(登録商標))、符号分割多元接続(CDMA)、時分割同期符号分割多元接続(TD-SCDMA)、Long-Term Evolution(LTE)、またはいわゆる世代3G、4G、および5Gプロトコルを含む任意の他のそのようなプロトコル、のような無線通信プロトコルを実施するネットワークを含むことができる。ネットワーク110は、場合によってはパーソナルエリアネットワークまたはメッシュネットワークと称される、たとえばWi-Fi、BLUETOOTH(登録商標)、BLE、またはZIGBEE(登録商標)を介する、短距離の無線リンクを含むことができる。ネットワークは、パブリック、プライベート、またはパブリックとプライベートのネットワークの組合せであってもよい。ネットワーク110は、データネットワークおよび/または通信ネットワークの任意のタイプおよび/または形態であってもよい。
【0072】
ネットワークインターフェースコントローラ107は、ネットワークインターフェース117(場合によってはネットワークインターフェースポートと称される)を介してネットワーク110内のデバイス(たとえばネットワークデバイス114)とのデータ交換を管理する。ネットワークインターフェースコントローラ107は、ネットワーク通信のために開放型システム間相互接続(OSI)モデルの物理およびデータリンクレイヤを処理する。一部の実施態様において、ネットワークインターフェースコントローラのタスクの一部は、プロセッサ102および/またはコプロセッサ104によって処理される。一部の実施態様において、ネットワークインターフェースコントローラ107は、たとえば同じチップ上の回路としてプロセッサ102に組み入れられる。一部の実施態様において、コンピューティングシステム101は、単一のコントローラ107によって制御される複数のネットワークインターフェース117を有する。一部の実施態様において、コンピューティングシステム101は、複数のネットワークインターフェースコントローラ107を有する。一部の実施態様において、各ネットワークインターフェース117は、物理ネットワークリンクの接続ポイントである(たとえばCat-5イーサネットリンク(イーサネットは登録商標))。
【0073】
一部の実施態様において、ネットワークインターフェースコントローラ107は、無線ネットワーク接続をサポートし、インターフェース117は、無線(たとえば、ラジオ)受信機/送信機(たとえば、IEEE 802.11 Wi-Fiプロトコル、近距離無線通信(NFC)、BLUETOOTH(登録商標)、BLUETOOTH(登録商標) LOW ENERGY(BLE)、ZIGBEE(登録商標)、ANT、または任意の他の無線プロトコルのいずれか向け)である。一部の実施態様において、ネットワークインターフェースコントローラ107は、イーサネット(登録商標)のような1つまたは複数のネットワークプロトコルを実施する。一般に、コンピューティングシステム101は、ネットワークインターフェース117を通じて物理または無線リンクを介してその他のコンピューティングデバイスとデータを交換するように構成されてもよい。ネットワークインターフェース117は、別のデバイスに直接リンクするか、または中継デバイス、たとえばコンピューティングシステム101をネットワーク110に接続する、ハブ、ブリッジ、スイッチ、またはルータのようなネットワークデバイス114を介して別のデバイスにリンクすることができる。
【0074】
ネットワークデバイス114は、ハブ、スイッチ、ルータ、モデム、ネットワークブリッジ、別のコンピューティングシステム101、または任意の他のネットワークノードであってもよい。一部の実施態様において、ネットワークデバイス114は、ネットワークゲートウェイである。一部の実施態様において、ネットワークデバイス114は、たとえば特殊用途プロセッサおよび/または3値連想メモリ(TCAM)のような、カスタマイズされたハードウェアを使用して実施されたルーティングデバイスである。
【0075】
その他のコンポーネント116は、代替の入出力インターフェース、外部シリアルデバイスポート、およびバス105を介して接続される任意の追加のコプロセッサ104を含むことができる。たとえば、コンピューティングシステム101は、外部入力デバイス、出力デバイス、または追加のメモリデバイス(たとえば、ポータブルフラッシュドライブまたは外部メディアドライブ)を接続するためのインターフェース(たとえば、ユニバーサルシリアルバス(USB)インターフェース)を含むことができる。
【0076】
示されているコンピューティングシステム101は、データを管理または編成するシステムの実施に適している。たとえば、一部の実施態様において、コンピューティングシステム101は、データベースをホスティングする。データベース、またはさらに詳細にはデータベース管理システム(DBMS)は、データベース定義、たとえばデータベーススキーマに従ってデータを編成する。たとえば、リレーショナルデータベースにおいて、DBMSは、テーブル様のデータ構造でデータを保持する。各テーブルは、エントリタイプ、分類、または目的に各々対応する列を有する。たとえば、テーブルは、数値データの列、テキストデータ(たとえば、数値データの説明)の列、日付データの列などを有することもある。一部の実施態様において、列は、複数のデータ要素を単一の列にグループ化する構造化データを表す。リレーショナルデータベースにおいて、テーブルの列内の各エントリはまた、エントリをテーブル内の他の列からのエントリに関連付けている行内にある。
【0077】
場合によっては、エントリ(またはエントリの組合せ)は、1つのテーブルからの行を、別のテーブルの1つまたは複数の行に関連付ける。一部のDBMS実施態様において、「ビュー」と呼ばれる仮想テーブルは、1つまたは複数のテーブルから引き出されたデータを、これもまたテーブルであるかのように提示する(つまり、ビューはデータベースクライアントまたはユーザにとって、あたかもテーブルであるかのように見えるが、必ずしもそのように格納されてはいない)。さまざまなタイプのリレーショナルデータベース、オブジェクト指向データベース、ドキュメント指向データベース、拡張可能マークアップ言語(XML)データベース、NoSQLデータベースなどを含む、その他のタイプのデータベース管理システムもまた使用されてもよい。これらのデータベースタイプの多くは、リレーショナルデータベースに関連して上記で説明されるものと同様の方法で、テーブル、またはテーブル様構造を使用する。一部の実施態様において、データは、テーブル以外の方法で、たとえばデータタプルのコレクションとして、格納されるか、または表される。
【0078】
データベースのクライアントまたはユーザは、データベース命令、たとえば構造化照会言語(SQL)のようなデータベースクエリ言語のクエリを使用してデータベースにデータを追加するか、データベース内のデータを変更するか、またはデータベースからデータを取り出すことができる。1つまたは複数のデータベース命令は、データベーストランザクションにグループ化されてもよい。従来より、データベースは、トランザクションの原子性、一貫性、独立性、および耐久性を提供する。これらの特性は、ACIDという頭字語により知られている。一部の実施態様において、DBMSは、すべてのACID特性を提供する。しかし、一部の実施態様において、DBMSは、ACID特性のすべてを提供するわけではない。
【0079】
一部の実施態様において、1つまたは複数のクライアントデバイス120、たとえばコンピューティングシステム101のインスタンスは、たとえば直接リンクを介して、またはネットワーク110を介して、DBMSと通信している。一部の実施態様において、クライアントの1つまたは複数は、構造化照会言語(SQL)、ハイパーテキスト構造化照会言語(HTSQL)、コンテキスト照会言語(CQL)、データマイニング拡張機能(DMX)、またはXMLクエリ(XQuery)のような形式クエリ言語のクエリを使用してデータベースからデータを取得する。一部の実施態様において、クライアントの1つまたは複数は、共通オブジェクトリクエストブローカーアーキテクチャ(CORBA)、リモートプロシージャコール(RPC)、オブジェクトのリンクと埋め込み(OLE)、コンポーネントオブジェクトモデル(COM)、または分散コンポーネントオブジェクトモデル(DCOM)のようなプロセス間通信アーキテクチャを使用して、DBMSからデータを取得する。一部の実施態様において、クライアントの1つまたは複数は、自然言語またはセマンティッククエリを使用して、DBMSからデータを取得する。一部の実施態様において、クライアントの1つまたは複数は、Visualization APIクエリ言語のようなカスタムのクエリ言語のクエリを使用して、DBMSからデータを取得する。
【0080】
これ以降、
図2を参照すると、例示的な実施態様による、イベントを相関させるための方法200を説明する流れ図が示されている。アプリケーションバックエンドサーバ130、イベントサーバ140、アトリビューションサーバ150、および/または協調サーバ160は、方法200を実行するように構成されてもよい。さらに、本明細書において説明される任意のコンピューティングデバイスは、方法200を実行するように構成されてもよい。
【0081】
方法200の概観において、協調サーバ160は、ステージ210において、第1のイベントの確認メッセージを受信する。協調サーバ160は、それぞれのイベントに各々対応している、膨大数の確認メッセージを受信することができる。メッセージは、クライアントデバイス120から、サードパーティサーバから、またはその他のコンピューティングデバイスから受信されてもよい。方法220において、協調サーバ160は、アトリビューションサーバ150から、第2のイベントのアトリビューションの要求を受信する。
【0082】
ステージ230において、協調サーバ160は、格納されている確認メッセージデータ、たとえば、ステージ210で受信された確認メッセージのデータを含む膨大数の確認メッセージに対応するデータを検索する。ステージ240において、協調サーバ160は、検索から第1のイベントを識別する。一部の実施態様において、第1のイベントは、ステージ240において、アトリビューションの複数の候補イベントの1つとして識別される。
【0083】
ステージ250において、協調サーバ160は、アトリビューションサーバ150に、ステージ220で受信された要求に応じて第1のイベントを記述するデータを返す。次いで、アトリビューションサーバ150は、第1のイベントを記述するデータから、第2のイベントが第1のイベントに起因し得るかどうかを決定することができる。以下に説明される
図3は、アトリビューションサーバ150によって実行されるような、先行のイベントへのアトリビューションを確認する例示の方法300を示す。次いで、協調サーバ160は、ステージ260において、第2のイベントが記述された第1のイベントに起因するとみなす合意をアトリビューションサーバ150から受信する。一部の実施態様において、アトリビューションサーバ150が、アトリビューションは許可されるべきではないと決定する場合、協調サーバ160は、代替として、アトリビューションを拒絶するメッセージを受信する。一部の実施態様において、アトリビューションサーバ150が、アトリビューションは許可されるべきではないと決定する場合、協調サーバ160は、アトリビューション要求および第1のイベント記述に関連するさらなるメッセージを受信しない。
【0084】
さらに詳細に方法200を参照すると、協調サーバ160は、ステージ210において、第1のイベントの確認メッセージを受信する。一部の実施態様において、協調サーバ160は、協調メッセージを1つまたは複数のクライアントデバイス120に送信する。協調メッセージは、たとえば、アクションを行うこと(たとえば、アプリケーションをインストールする、Webページにアクセスする、または購入を行うこと)への勧誘であってもよい。第1のイベントは、勧誘への応答、たとえば勧誘を受信しているクライアントデバイス120が対話したインジケータであってもよい。
【0085】
たとえば、勧誘は、追加の情報を提供するか、またはさらなるアクションが行われ得るサードパーティへの接続を容易にする選択可能な要素を含むことができる。勧誘は、追加情報にアクセスすること、メーリングリストに参加する、購入を行うこと、メディア(eブック、ビジュアルイメージメディア、オーディオデータ、インタラクティブメディア、ビデオメディアなど)をストリーミングまたはダウンロードすること、ソフトウェアをダウンロードすること、データベースに接続すること、および任意のその他のアクションのような、さらなるアクションが行われ得るWebページ(ランディングページ)のユニフォームリソースロケータ(URL)へのハイパーリンクを含むことができる。一部の実施態様において、第1のイベントは、クライアントデバイス120におけるURLの選択(クリック)である。一部の実施態様において、第1のイベントは、クライアントデバイス120からのページ要求(またはページ取出し)である。
【0086】
一部の実施態様において、第1のイベントは、到達イベント、たとえばクライアントデバイス120が地理的位置に到達することである。到達イベントは、たとえば、クライアントデバイス120のジオロケーションハードウェアを使用して検出されてもよい。到達イベントは、たとえば、クライアントデバイス120の外部の物理マーカーまでの近接性またはその逆の近接性を検出するクライアントデバイス120の近接性検出器(たとえば、近距離無線デバイス)を使用して検出されてもよい。一部の実施態様において、第1のイベントは、後の後続のイベントのアトリビューションを受信することができる任意のイベントであってもよい。たとえば、第1のイベントが、結果としてクライアントデバイスがアプリケーションインストールツールを実行することをたらす対話である場合、これは後続のアプリケーションインソールのアトリビューションを受信することができる。方法200のステージ210において、協調サーバ160は、特定の第1のイベントの確認メッセージを受信する。
【0087】
ステージ210において第1のイベントの確認メッセージを受信したことに応じて、協調サーバ160は、第1のイベントに関するデータを、たとえばデータストレージ190に記録する。たとえば、第1のイベントに関する記録されたデータは、日付およびタイムスタンプ、イベントタイプ、およびデバイス識別子、アカウント識別子、一意のCT番号(たとえばランダムに生成された一意の識別子)などのような1つまたは複数のソース識別子を含むことができる。第1のイベントに関する記録されたデータは、第1のイベントに関連付けられている勧誘に関する情報、たとえば勧誘識別子(または識別子、たとえばソース識別子、キャンペーン識別子、宛先識別子、CT番号など)および勧誘日付およびタイムスタンプをさらに含むことができる。一部の実施態様において、協調サーバ160はこのデータをデータベースのような検索可能データストレージシステムに記録する。
【0088】
ステージ220において、協調サーバ160は、アトリビューションサーバ150から、第2のイベントのアトリビューションの要求を受信する。一部の実施態様において、クライアントデバイス120、アプリケーションバックエンドサーバ130、またはイベントサーバ140の1つまたは複数は、クライアントデバイス120において発生するかまたはクライアントデバイス120に関連付けられているイベントを処理し、イベントの処理中に、イベントのアトリビューションをシークする。たとえば、イベントサーバ140は、第2のイベントを検出し、1つまたは複数の識別子(たとえば、デバイス識別子およびアプリケーション識別子)およびイベントタイプのような情報と共にメッセージをアトリビューションサーバ150に送信する。
図3を参照して、以下に説明されるように、アトリビューションサーバ150は次いで、第2のイベントのアトリビューションの要求を協調サーバ160に送信する。要求は、複数の協調サーバに、たとえば起因するイベントに各々関連付けられ得るさまざまなパーティによって各々操作されるさまざまなサーバに、送信されてもよい。
【0089】
ステージ230において、協調サーバ160は、格納されている確認メッセージデータ、たとえば、ステージ210で受信された確認メッセージのデータを含むことができる膨大数の確認メッセージの各々に対応するデータを検索する。一部の実施態様において、この検索は、1つまたは複数の固有のイベントタイプ、たとえば第2のイベントに寄与され得るイベントタイプに向けられる。
【0090】
ステージ240において、協調サーバ160は、検索から第1のイベントを識別する。一部の実施態様において、第1のイベントは、ステージ240において、アトリビューションの複数の候補イベントの1つとして識別される。協調サーバ160は、たとえば同じデバイス識別子、アカウント識別子、またはCT番号を有することのような、一致基準に基づいて第1のイベントを識別することができる。
【0091】
ステージ250において、協調サーバ160は、アトリビューションサーバ150に、ステージ220で受信された要求に応じて第1のイベントを記述するデータを返す。記述するデータは、たとえば、第1のイベントの記録されたデータのサブセットであってもよい。たとえば、一部の実施態様において、協調サーバ160は、第1のイベントの日付およびタイムスタンプを返すか、または第1のイベントの内部識別子と共に日付およびタイムスタンプを返す。次いで、アトリビューションサーバ150は、第1のイベントを記述するデータから、第2のイベントが第1のイベントに起因し得るかどうかを決定することができる。たとえば、一部の実施態様において、複数の協調サーバ160がアトリビューションクレームを返す(つまり、各々アトリビューションの識別された候補イベントを返す)場合、アトリビューションサーバは、確認のためにアトリビューションクレームの1つを選択する。
【0092】
以下に説明される
図3は、アトリビューションサーバ150によって実行されるような、先行のイベントへのアトリビューションを確認する例示の方法300を示す。一部の実施態様において、たとえば、アトリビューションサーバ150は、最後の候補イベント(つまり、第2のイベントに時間的に最も近い日付およびタイムスタンプを伴う候補イベント)を選択する。
【0093】
ステージ260において、協調サーバ160は、第2のイベントが記述された第1のイベントに起因するとみなす合意をアトリビューションサーバ150から受信する。一部の実施態様において、アトリビューションサーバ150が、アトリビューションは許可されるべきではないと決定する場合、協調サーバ160は、代替として、アトリビューションを拒絶するメッセージを受信する。一部の実施態様において、アトリビューションサーバ150が、アトリビューションは許可されるべきではないと決定する場合、協調サーバ160は、アトリビューション要求および第1のイベント記述に関連するさらなるメッセージを受信しない。協調サーバ160は、たとえば、レポーティングまたは決定を行う目的で、アトリビューションに関するデータを保持することができる。一部の実施態様において、キャンペーン管理者は、たとえば、後続のイベントで起因した勧誘のレポートを、要求することができる。このレポートは、たとえばアトリビューションを受信しなかったイベントを除外するように、または特にアトリビューションを受信したイベントを協調する(または示す)ように構成されてもよい。
【0094】
これ以降、
図3を参照すると、例示的な実施態様による、先行のイベントへのアトリビューションを確認するための方法300を説明する流れ図が示されている。特に、方法300は、協調サーバと通信することにより第2のイベントのアトリビューションを決定するために、アトリビューションサーバ150によって実行されてもよい。アプリケーションバックエンドサーバ130、イベントサーバ140、アトリビューションサーバ150、および/または協調サーバ160は、方法300を実行するように構成されてもよい。さらに、本明細書において説明される任意のコンピューティングデバイスは、方法300を実行するように構成されてもよい。
【0095】
方法300の概観において、アトリビューションサーバ150は、ステージ320において、起因するイベントの通知を受信する。ステージ330において、アトリビューションサーバ150は、アトリビューションの第1の要求を協調サーバ160に送信する。次いで、協調サーバ160は、起因し得る第1のイベントを識別し、第1のイベントの記述をアトリビューションサーバ150に提供する。ステージ340において、アトリビューションサーバ150は、第1のイベントの記述を受信し、ステージ350において、第1のイベントがアトリビューションの基準を満たすかどうかを決定する。第1のイベントがアトリビューションの基準を満たさない場合、ステージ360において、アトリビューションサーバ150はアトリビューションを拒絶する。しかし、ステージ350において第1のイベントがアトリビューションの基準を満たす場合、ステージ370において、アトリビューションサーバ150はアトリビューションを確認する。たとえば、一部の実施態様において、アトリビューションサーバ150は、起因するイベントを第1のイベントに起因するとみなす第2のメッセージを協調サーバ160に送信する。
【0096】
さらに詳細に方法300を参照すると、ステージ320において、アトリビューションサーバ150は、起因するイベントの通知を受信する。たとえば、イベントサーバ140は、イベントについてアトリビューションサーバ150に通知することができる。一部の実施態様において、クライアントデバイス120、アプリケーションバックエンドサーバ130、またはイベントサーバ140の1つまたは複数は、クライアントデバイス120において発生するかまたはクライアントデバイス120に関連付けられているイベントを処理し、イベントの処理中に、イベントのアトリビューションをシークする。たとえば、イベントサーバ140は、イベントを検出し、1つまたは複数の識別子(たとえば、デバイス識別子およびアプリケーション識別子)およびイベントタイプのような情報と共にメッセージをアトリビューションサーバ150に送信する。一部の実施態様において、アトリビューションサーバ150は、起因するイベントを検出して、イベントのアトリビューションを解決する。
【0097】
ステージ330において、アトリビューションサーバ150は、第1の要求を協調サーバ160に送信する。第1の要求は、アトリビューションの先行するイベントを識別するよう求める要求である。第1の要求は、協調サーバ160が、起因するイベントに至るイベント、または起因するイベントに至ることで起因し得るイベントを以前調整したかどうかを調べるための、アトリビューションサーバ150から協調サーバ160への問い合わせであってもよい。一部の実施態様において、要求は、起因するイベントに各々関連付けられ得るさまざまなパーティによって各々操作される複数のさまざまな協調サーバに送信される。協調サーバ160が、起因し得る第1のイベントを識別することができる場合、協調サーバ160は、第1のイベントの記述をアトリビューションサーバ150に提供する。一部の実施態様において、協調サーバ160(または複数の協調サーバ)は、可能なアトリビューションについて複数の候補イベントの記述を返してもよい。
【0098】
ステージ340において、アトリビューションサーバ150は、第1のイベントの記述を受信し、ステージ350において、第1のイベントがアトリビューションの基準を満たすかどうかを決定する。一部の実施態様において、アトリビューションサーバ150は、記述される第1のイベントが起因するイベントに至り得たかどうかを確認する。一部の実施態様において、アトリビューションサーバ150は、アトリビューションを受信すべき介在イベントがあったかどうかを決定する。たとえば、アトリビューションサーバ150が、ステージ330において複数の異なる協調サーバに要求を送信する場合、それに応じて複数の候補者を受信することがある。アトリビューションサーバ150は、複数の候補者の中から選択する、たとえばアトリビューションについて1つの候補者を識別し、残りの候補者を拒絶する。
【0099】
競合する協調サーバから受信された候補者は、介在イベントであってもよく、アトリビューションサーバ150に第1のイベントへのアトリビューションを拒絶させる。一部の実施態様において、アトリビューションサーバ150は、起因するイベントまで至るイベントのタイムラインまたはシーケンスを構築し、アトリビューションのタイムラインから1つまたは複数のイベントを選択する。一部のそのような実施態様において、アトリビューションサーバ150は、起因するイベントに先行するタイムラインから最後のイベントを選択する。記述される第1のイベント(ステージ340で受信された)が選択されない場合、アトリビューションサーバ150は、ステージ360においてアトリビューションを拒絶する。記述される第1のイベント(ステージ340で受信された)が選択される場合、アトリビューションサーバ150は、ステージ370においてアトリビューションを提供または確認する。
【0100】
ステージ360において、アトリビューションサーバ150は、アトリビューションを拒絶する。一部の実施態様において、アトリビューションサーバ150は、アトリビューションを拒絶するアクションを行わない。つまり、確認の欠如は、拒絶するに十分であってもよい。一部の実施態様において、アトリビューションサーバ150は、拒絶通知を協調サーバ160に提供する。
【0101】
ステージ370において、アトリビューションサーバ150は、アトリビューションを確認する。たとえば、一部の実施態様において、アトリビューションサーバ150は、起因するイベントが第1のイベントに起因するとみなす第2のメッセージを協調サーバ160に送信する。一部の実施態様において、アトリビューションサーバ150は、確認の追加の情報を協調サーバ160に提供する。追加の情報は、たとえば、協調サーバ160が格納し、アトリビューションの証拠として後に使用することができる一意のイベント識別子を含むことができる。一部の実施態様において、追加の情報は、トークン、データの暗号化要素、または識別子を含む。一部の実施態様において、追加の情報はCT番号を含む。
【0102】
一部の実施態様において、イベントサーバ140は、アプリケーションがクライアントデバイス120において実行されるごとに、通知をアトリビューションサーバ150に提供する。たとえば、一部の実施態様において、アプリケーションは、起動時に、バックエンドサーバ130にメッセージ(たとえば、任意の最新のアップデートの要求)を送信し、次いでバックエンドサーバ130は、起動イベントを文書化するメッセージをイベントサーバ140に送信する。一部の実施態様において、アプリケーションは、起動イベントを文書化するメッセージをイベントサーバ140に送信する。メッセージは、たとえば、HTTP要求として送信されてもよい。一部の実施態様において、イベントサーバ140は次いで、イベントを表すデータを記録する。一部の実施態様において、イベントサーバ140は、起動イベントについてアトリビューションサーバ150に通知するメッセージをアトリビューションサーバ150に送信する。一部の実施態様において、イベントサーバ140は、最初の起動イベントについてこのメッセージをアトリビューションサーバ150に送信するが、これは新しいインストールに対応するものであり、同じアプリケーションインスタンスの後続の起動イベントについてメッセージをアトリビューションサーバ150に送信することはない。次いで、アトリビューションサーバ150は、たとえば上記で説明されている方法300を使用して、アトリビューションについて以前の協調イベントを識別する。
【0103】
一部の実施態様において、協調サーバ160は、各イベントごとに、および各アトリビューション要求ごとにデータを保持する。協調サーバ160は、管理者がイベントおよびアトリビューションについて統計のレポートを取得することができる管理インターフェースを提供することができる。一部のイベントがアトリビューションを受信していない場合もあるので、たとえばサードパーティによって制御される介在イベントがアトリビューションを受信したため、統計は、管理者がサードパーティから受信する同じ統計に対応することになる。アトリビューションの適正な表現は、混乱を解消して、構成サイクルを低減することができる。さらに、協調サーバ160が起因するイベントのデータのみを受信する場合、不必要なサードパーティデータを受信しない。
【0104】
これ以降、
図4を参照すると、例示的な実施態様による、イベントのアトリビューションを非重複化するためにクロスネットワークイベントアトリビューションを実行するための方法400が示されている。アプリケーションバックエンドサーバ130、イベントサーバ140、アトリビューションサーバ150、協調サーバ160、および/または本明細書において説明されるその他のコンピューティングデバイスは、方法400を実行するように構成されてもよい。特に、方法400は、第1の協調サーバおよび第2の協調サーバを参照する。これらのサーバは、協調サーバ160と同一である、および/または類似していてもよい。
【0105】
第1の協調サーバおよび第2の協調サーバは、コンテンツ項目をユーザに提供し(または提供するサーバに関連付けられてもよいか)、コンテンツ項目と共にオンラインユーザアクティビティを受信するように構成されてもよい。しかし、2つの協調サーバは、別個であってもよく、異なるエンティティによって操作されてもよい。コンテンツプロバイダが、第1および第2の協調サーバを使用してコンテンツをユーザに提供し、ユーザアクティビティを受信する場合、変換が生じると、両方の協調サーバは、それらのコンテンツネットワークに関連付けられているユーザイベントアクティビティを変換に起因するとみなすことができる。以下に説明される方法400および本明細書において説明されるその他の方法は、どのアクティビティが変換に起因すべきであるか、およびどのアクティビティが変換に起因すべきでないかを決定することによって、アトリビューションを非重複化することができる。
【0106】
方法400は、ユーザデータのプライバシーが保持され、ネットワーク帯域幅が節約されるような方法で実行される。特に、方法400において、ユーザイベントアクティビティの全セットがサーバ間で共有されるわけではない、つまり第1の協調サーバ、第2の協調サーバ、およびアトリビューションサーバは、イベントアトリビューションを決定するためにすべてのユーザイベントデータを集約するのではなく、起因し得るデータだけを共有する。さらに、必要なデータのみを送信することで、中央サーバ、たとえばアトリビューションサーバにユーザイベントデータの大きいセットを送信する場合に比べて、帯域幅使用量を低減させる。さらに、ユーザオンラインアクティビティが改善され得る。第1の協調サーバが1つのコンテンツネットワークにわたりユーザのアクティビティを受信し、第2の協調サーバが第2のコンテンツネットワークからユーザのアクティビティを受信するので、ユーザイベントは、両方の協調サーバではなく、1つの協調サーバのみによって受信されてもよい。
【0107】
ステップ410およびステップ420において、第1の協調サーバおよび第2の協調サーバは、各々イベントを受信する。イベントは、それぞれ第1の協調サーバおよび第2の協調サーバに関連付けられているユーザ関連のアクティビティであってもよい。たとえば、第1の協調サーバは、第1のコンテンツネットワークについて、イベントデータを直接受信するか、または別のデバイスから受信してもよい。第2の協調サーバは、第2のコンテンツネットワークについて、イベントデータを受信するか、または別のデバイスから受信してもよい。
【0108】
第2のイベントは、第1および第2の協調サーバに関連付けられているイベントの後に生じてもよい。一部の実施態様において、第2のイベントは変換である。変換は、モバイルアプリケーションをダウンロードおよび/またはインストールすること、オンラインショッピングWebサイトを介して商品を購入すること、またはサービスをサブスクライブすることを含むことができる。両方の協調サーバは、第2のイベントを認識して、第1および第2の協調サーバに関連付けられているイベントがイベントのアトリビューションを受信すべきであると決定することができる。しかし、これは重複したアトリビューションであってもよい、つまり2つの協調サーバのうちの1つだけが、第2のイベントに起因するイベントを有するべきである。
【0109】
ステップ430において、第1および第2の協調サーバは、アトリビューションサーバ150から、第2のイベントのアトリビューションの要求を受信する。第2のイベントのアトリビューションの要求を受信したことに応じて、各協調サーバは、検索され得るユーザイベントに関連付けられているすべての確認データの検索を実行することができる。
【0110】
ステップ440において、第1の協調サーバは、第2のイベントに潜在的に起因する可能性があるか、または現在起因しているイベントを識別するために確認データを検索することができる。一部の実施態様において、第1の協調サーバは、第2のイベントに関連付けられているユーザ識別子および確認データのイベントに関連付けられているユーザ識別子に基づいて、確認メッセージを検索する。一部の実施態様において、第1の協調サーバは、さまざまなアカウント、さまざまなデバイスなどで実行されるイベントを適正に起因するとみなすために、複数の識別子を一緒にマップする識別子マップを使用することができる。確認データを検索した結果は、第1の協調サーバに関連付けられているイベントを識別することができる。
【0111】
ステップ450において、第1の協調サーバは、第1のイベントを示すデータをアトリビューションサーバ150に送信することができる。ステップ460およびステップ470は、ステップ440およびステップ450と同一である、および/または類似していてもよい。しかし、ステップ460および470は、第2のアトリビューションサーバによって実行されてもよい。
【0112】
ステップ480において、アトリビューションサーバ150は、第2のイベントが、第1の協調サーバに関連付けられているイベント、および第2の協調サーバに関連付けられているイベントに起因するかどうかを決定することができる。一部の実施態様において、アトリビューションサーバ150は、第2のイベントに関連付けられているタイムスタンプ、第1の協調サーバに関連付けられているイベント、および第2の協調サーバに関連付けられているイベントに基づいてアトリビューションを決定することができる。アトリビューションサーバ150は、第2のイベントに時間的に最も近く発生するイベントが、第2のイベントに起因するはずであると決定することができる。さらに、アトリビューションサーバ150は、イベントが、第2のイベントの前の所定の時間内に生じる場合、起因すると決定することができる。
【0113】
たとえば、1)第2の協調サーバに関連付けられているイベント、2)第1の協調サーバに関連付けられているイベント、および3)第2のイベント、という順序でイベントが生じる場合、アトリビューションサーバ150は、第1の協調サーバに関連付けられているイベントが第2のイベントに起因するはずであるが、第2の協調サーバに関連付けられているイベントは第2のイベントに起因しないと決定することができる。
【0114】
ステップ490において、アトリビューションサーバ150は、アトリビューションまたはアトリビューションなしの指示を、第1および第2の協調サーバに送信することができる。第2の協調サーバは、第2の協調サーバに関連付けられているイベントが第2のイベントに起因しないはずであるという指示を受信することができるが、第1の協調サーバは、第1の協調サーバに関連付けられているイベントが第2のイベントに起因するはずであるという指示を受信することができる。
【0115】
ステップ500において、アトリビューションまたはアトリビューションなしの指示に基づいて、第1および第2の協調サーバは、ステップ490で受信された指示に基づきそれぞれのアトリビューションメトリクスを更新することができる。アトリビューションメトリクスは、完全な変換、特定のコンテンツ項目の完全な変換などであってもよい。
【0116】
たとえば、第2の協調サーバが、第2の協調サーバに関連付けられているイベントを第2のイベントに起因するとみなすが、第2の協調サーバに関連付けられているイベントが第2のイベントに起因しないという指示をアトリビューションサーバ150から受信する場合、第2の協調サーバは、第2の協調サーバによって格納されているデータおよび/またはメトリクスを更新して、第2の協調サーバが、第2の協調サーバに関連付けられているイベントを第2のイベントに起因するとみなさないようにすることができる。イベントアトリビューションのこの非重複化は、インターフェースに表示されるメトリクスの精度を高めることによりデータをレポートするコンテンツプロバイダインターフェースを改善することができる。
【0117】
本明細書において説明される主題および動作の実施形態は、デジタル電子回路において、または、本明細書で開示される構造およびそれらの構造的等価物を含む、有形の媒体、ファームウェア、またはハードウェア上で具現されたコンピュータソフトウェアにおいて、またはそれらの1つまたは複数の組合せにおいて、実施されてもよい。本明細書において説明される主題の実施態様は、有形の媒体上で具現された1つまたは複数のコンピュータプログラム、つまりデータ処理装置(たとえば、プロセッサ102を含む)による実行のため、またはその動作を制御するために、1つまたは複数のコンピュータストレージ媒体でエンコードされたコンピュータプログラム命令の1つまたは複数のモジュールとして実施されてもよい。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらの1つまたは複数の組合せであるか、またはこれに含まれてもよい。コンピュータストレージ媒体はまた、1つまたは複数の別個のコンポーネントもしくは媒体(たとえば、複数のCD、ディスク、またはその他のストレージ媒体)であってもよいか、またはこれに含まれてもよい。コンピュータストレージ媒体は、有形である。コンピュータストレージ媒体は、データ、たとえばコンピュータ実行可能命令を、非一時的形態で格納する。
【0118】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも称される)は、コンパイラ型言語、インタープリタ型言語、宣言型言語、およびプロシージャ型言語を含むプログラミング言語の任意の形態で記述されてもよく、コンピュータプログラムは、スタンドアロンプログラム、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境での使用に適したその他のユニットを含む任意の形態で配備されてもよい。コンピュータプログラムは、ファイルシステムのファイルに対応することがあるが、それは必須ではない。プログラムは、その他のプログラムまたはデータを保持するファイルの一部に(たとえばマークアップ言語文書に格納された1つまたは複数のスクリプト)、当該のプログラムに専用の単一ファイルに、または(たとえば1つまたは複数のモジュール、ライブラリ、サブプログラム、またはコードの部分を格納するファイルのような)複数の協調ファイルに格納されてもよい。コンピュータプログラムは、1つのサイトに位置する1つのコンピュータ上、または複数のサイトにわたり分散されて通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように配備されてもよい。
【0119】
本明細書において説明されるプロセスおよび論理フローは、入力データを操作して出力を生成することによってアクションを実行するように1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行されてもよい。プロセッサおよび論理フローはまた、たとえばフィールドプログラマブルゲートアレイ(「FPGA」)または特定用途向け集積回路(「ASIC」)のような、特殊用途論理回路により実行されてもよく、装置はまた、特殊用途論理回路として実施されてもよい。そのような特殊用途回路は、たとえそれが汎用プロセッサではない場合であっても、コンピュータプロセッサと称されてもよい。
【0120】
本明細書は多くの固有の実施態様の詳細を含むが、これらは任意の発明または主張され得るものの範囲を限定するものとして解釈されるべきではなく、特定の発明の特定の実施態様に固有である特徴の説明として解釈されるべきである。別個の実施態様のコンテキストで本明細書において説明される特定の特徴はまた、単一の実施態様において組み合わせて実施されてもよい。逆に、単一の実施態様のコンテキストで説明されるさまざまな特徴はまた、別個に、または任意の適切な部分的組合せで複数の実施態様において実施されてもよい。さらに、特徴が特定の組合せにおいて動作するものと上記で説明され、そのようなものとして最初に主張されているとしても、主張される組合せからの1つまたは複数の特徴は、場合によっては組合せから削除されてもよく、主張される組合せは、部分的組合せまたは部分的組合せの変形に向けられてもよい。
【0121】
同様に、動作は特定の順序で図面に示されているが、これは、望ましい結果を達成するために、そのような動作が示されている特定の順序または順次に実行されること、またはすべての説明されている動作が実行されることを要求するものと理解されるべきではない。ある特定の状況において、マルチタスキングおよび並列処理が有益となり得る。さらに、上記で説明される実施態様におけるさまざまなシステムコンポーネントの分離は、すべての実施態様においてそのような分離を要求するものと理解されるべきではなく、説明されるプログラムコンポーネントおよびシステムが一般に単一のソフトウェア製品に一体化されるか、または複数のソフトウェア製品にパッケージングされてもよいことを理解されたい。
【0122】
「または」の参照は、「または」を使用して説明される任意の項目が、単一、複数、および説明される項目の全部のいずれかを指すように、包括的なものと解釈されてもよい。「第1の」、「第2の」、「第3の」などは、必ずしも順序付けを示すものではなく、通常、単に同様または類似する項目または要素を区別するために使用されている。
【0123】
このようにして、主題の特定の実施態様が説明された。その他の実施態様は、添付の特許請求の範囲に含まれる。場合によっては、特許請求の範囲において列挙されるアクションは、異なる順序で実行され得るが、引き続き望ましい結果を達成する。加えて、添付の図面に示されるプロセスは、望ましい結果を達成するために、示されている特定の順序、または一連の順序を必ずしも要求するものではない。ある特定の実施態様において、マルチタスキングおよび並列処理が使用されてもよい。