(57)【要約】  データ処理システムによって実行される、データを処理するための方法であって、１つ以上のデータストリームからデータを間欠的に受信することであって、受信されたデータは、データレコードを含む、受信することと、受信されたデータレコード中の２つ以上の特定のデータレコードを検出することであって、検出された２つ以上の特定のデータレコードの各々は、特定の識別子を含む、検出することと、その特定の識別子について、データレコードの集合を作成することと、データレコードの集合に含まれる少なくとも１つの特定のデータレコードについて、データの履歴集計のためにデータレコードを検索することと、結合データを計算することと、データレコードを、結合データをデータレコードのフィールドに挿入することにより、及びその集合内のデータレコードの少なくとも１つからのデータをデータレコードの別のフィールドに挿入することにより変更することと、ルールを適用することに基づいて、１つ以上のアクションを開始するための１つ以上の命令をメモリに書き込むこととを含む方法。
2019507403.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムによって実行される、データを処理するための方法であって、
１つ以上のデータストリームからデータを間欠的に受信することであって、前記受信されたデータは、データレコードを含む、受信することと、
前記１つ以上のデータストリームからのデータが継続的に受信されるときに、
前記受信されたデータレコード中の２つ以上の特定のデータレコードを検出することであって、前記検出された２つ以上の特定のデータレコードの各々は、特定の識別子を含む、検出することと、
前記特定の識別子について、
前記検出された２つ以上の特定のデータレコードを含む、データレコードの集合を作成することと、
前記データレコードの集合に含まれる少なくとも１つの特定のデータレコードについて、
前記特定の識別子に関連付けられるデータの履歴集計のためにデータレコードを検索することであって、前記履歴集計は、以前の期間からの事前に計算されたデータ集計である、検索することと、
前記少なくとも１つの特定のデータレコードに基づいて、及び前記履歴集計に基づいて結合データを計算することと、
データレコードを、前記結合データを前記データレコードのフィールドに挿入することにより、及び前記集合内の前記データレコードの少なくとも１つからのデータを前記データレコードの別のフィールドに挿入することにより変更することと、
前記変更されたデータレコードに１つ以上のルールを適用することにより、前記変更されたデータレコードを処理することと、
前記ルールを適用することに基づいて、１つ以上のアクションを開始するための１つ以上の命令をメモリに書き込むことと、
前記１つ以上のアクションを開始するためのキューに前記１つ以上の命令をパブリッシュすることと
を含む方法。
【請求項２】
前記集合内の前記データレコードの前記少なくとも１つからの前記データを前記データレコードの前記他のフィールドに挿入することは、前記集合に含まれる前記少なくとも１つの特定のデータレコードからのデータを、挿入することによって変更される前記データレコードの前記他のフィールドに挿入することを含む、請求項１に記載の方法。
【請求項３】
前記データレコードの集合は、前記データレコードからのデータを含む第一のデータレコードであり、前記方法は、
複数のデータレコードを収集することと、
前記データレコードを単一のキューにパブリッシュすることと、
前記キューから前記２つ以上の特定のデータレコードを検出することと、
前記２つ以上の特定のデータレコードを前記第一のデータレコード中に結合することであって、前記２つ以上の特定のデータレコードは、異なるタイプのイベントであることを表すデータを含む、結合することと、
前記第一のデータレコードを、前記少なくとも１つの特定のデータレコードのための前記結合データで拡張することと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記以前の期間は、前記検出の実行前の時間である、請求項１に記載の方法。
【請求項５】
前記第一のデータレコードに、前記第一のデータレコードに含まれる特定のイベントに関連付けられる顧客に関する顧客プロフィールデータをアタッチすることと、
前記第一のデータレコードに、前記特定のイベントに関する履歴集計を有するアペンダブルルックアップファイル（ＡＬＦ）をアタッチすることと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記結合データを計算することは、
前記履歴集計に増分データを付加することであって、前記増分データは、前記履歴集計が計算された時間から、現在時間の１分以内である準現在時間までのデータを含む、付加することと、
前記増分データの前記付加に基づいて、前記データの準リアルタイム集計を生成することと
を含む、請求項１に記載の方法。
【請求項７】
ユーザのクライアントデバイスから、アプリケーションを定義する１つ以上のルールを表すデータを受信することと、
前記受信されたデータに基づいて、前記アプリケーションを定義する前記１つ以上のルールを生成することと、
前記１つ以上のルールで実行することに基づいて、間欠的に受信された前記１つ以上のデータストリームに対して前記アプリケーションを実装することと
をさらに含む、請求項１に記載の方法。
【請求項８】
前記１つ以上のデータストリームを受信することは、第一のタイプのイベントを表すデータを有する第一のデータストリームを受信することと、第二のタイプのイベントを表すデータを有する第二のデータストリームを受信することとを含む、請求項１に記載の方法。
【請求項９】
１つ以上のアプリケーションを、前記１つ以上の命令に含まれるパブリッシュされたアクショントリガに対して実行することをさらに含む、請求項１に記載の方法。
【請求項１０】
データレコードは、イベントを含む、請求項１に記載の方法。
【請求項１１】
検索することは、データレポジトリ内を検索すること、又はメモリ内で検索することを含む、請求項１に記載の方法。
【請求項１２】
データを処理するためのデータ処理システムであって、
１つ以上のプロセッサと、
１つ以上の機械可読ハードウェア記憶デバイスであって、前記１つ以上のプロセッサに、
１つ以上のデータストリームからデータを間欠的に受信することであって、前記受信されたデータは、データレコードを含む、受信することと、
前記１つ以上のデータストリームからのデータが継続的に受信されるときに、
前記受信されたデータレコード中の２つ以上の特定のデータレコードを検出することであって、前記検出された２つ以上の特定のデータレコードの各々は、特定の識別子を含む、検出することと、
前記特定の識別子について、
前記検出された２つ以上の特定のデータレコードを含む、データレコードの集合を作成することと、
前記データレコードの集合に含まれる少なくとも１つの特定のデータレコードについて、
前記特定の識別子に関連付けられるデータの履歴集計のためにデータレコードを検索することであって、前記履歴集計は、以前の期間からの事前に計算されたデータ集計である、検索することと、
前記少なくとも１つの特定のデータレコードに基づいて、及び前記履歴集計に基づいて結合データを計算することと、
データレコードを、前記結合データを前記データレコードのフィールドに挿入することにより、及び前記集合内の前記データレコードの少なくとも１つからのデータを前記データレコードの別のフィールドに挿入することにより変更することと、
前記変更されたデータレコードに１つ以上のルールを適用することにより、前記変更されたデータレコードを処理することと、
前記ルールを適用することに基づいて、１つ以上のアクションを開始するための１つ以上の命令をメモリに書き込むことと、
前記１つ以上のアクションを開始するためのキューに前記１つ以上の命令をパブリッシュすることと
を含む動作を実行させるように実行可能である命令を記憶する１つ以上の機械可読ハードウェア記憶デバイスと
を含むデータ処理システム。
【請求項１３】
前記集合内の前記データレコードの前記少なくとも１つからの前記データを前記データレコードの前記他のフィールドに挿入することは、前記集合に含まれる前記少なくとも１つの特定のデータレコードからのデータを、挿入することによって変更される前記データレコードの前記他のフィールドに挿入することを含む、請求項１２に記載のシステム。
【請求項１４】
前記データレコードの集合は、前記データレコードからのデータを含む第一のデータレコードであり、前記動作は、
複数のデータレコードを収集することと、
前記データレコードを単一のキューにパブリッシュすることと、
前記キューから前記２つ以上の特定のデータレコードを検出することと、
前記２つ以上の特定のデータレコードを前記第一のデータレコード中に結合することであって、前記２つ以上の特定のデータレコードは、異なるタイプのイベントであることを表すデータを含む、結合することと、
前記第一のデータレコードを、前記少なくとも１つの特定のデータレコードのための前記結合データで拡張することと
をさらに含む、請求項１２に記載のシステム。
【請求項１５】
前記以前の期間は、前記検出の実行前の時間である、請求項１２に記載のシステム。
【請求項１６】
前記動作は、
前記第一のデータレコードに、前記第一のデータレコードに含まれる特定のイベントに関連付けられる顧客に関する顧客プロフィールデータをアタッチすることと、
前記第一のデータレコードに、前記特定のイベントに関する履歴集計を有するアペンダブルルックアップファイル（ＡＬＦ）をアタッチすることと
をさらに含む、請求項１２に記載のシステム。
【請求項１７】
前記結合データを計算することは、
前記履歴集計に増分データを付加することであって、前記増分データは、前記履歴集計が計算された時間から、現在時間の１分以内である準現在時間までのデータを含む、付加することと、
前記増分データの前記付加に基づいて、前記データの準リアルタイム集計を生成することと
を含む、請求項１２に記載のシステム。
【請求項１８】
１つ以上の機械可読ハードウェア記憶デバイスであって、１つ以上のプロセッサに、
１つ以上のデータストリームからデータを間欠的に受信することであって、前記受信されたデータは、データレコードを含む、受信することと、
前記１つ以上のデータストリームからのデータが継続的に受信されるときに、
前記受信されたデータレコード中の２つ以上の特定のデータレコードを検出することであって、前記検出された２つ以上の特定のデータレコードの各々は、特定の識別子を含む、検出することと、
前記特定の識別子について、
前記検出された２つ以上の特定のデータレコードを含む、データレコードの集合を作成することと、
前記データレコードの集合に含まれる少なくとも１つの特定のデータレコードについて、
前記特定の識別子に関連付けられるデータの履歴集計のためにデータレコードを検索することであって、前記履歴集計は、以前の期間からの事前に計算されたデータ集計である、検索することと、
前記少なくとも１つの特定のデータレコードに基づいて、及び前記履歴集計に基づいて結合データを計算することと、
データレコードを、前記結合データを前記データレコードのフィールドに挿入することにより、及び前記集合内の前記データレコードの少なくとも１つからのデータを前記データレコードの別のフィールドに挿入することにより変更することと、
前記変更されたデータレコードに１つ以上のルールを適用することにより、前記変更されたデータレコードを処理することと、
前記ルールを適用することに基づいて、１つ以上のアクションを開始するための１つ以上の命令をメモリに書き込むことと、
前記１つ以上のアクションを開始するためのキューに前記１つ以上の命令をパブリッシュすることと
を含む動作を実行させるように実行可能である命令を記憶する１つ以上の機械可読ハードウェア記憶デバイス。
【請求項１９】
前記集合内の前記データレコードの前記少なくとも１つからの前記データを前記データレコードの前記他のフィールドに挿入することは、前記集合に含まれる前記少なくとも１つの特定のデータレコードからのデータを、挿入することによって変更される前記データレコードの前記他のフィールドに挿入することを含む、請求項１８に記載の１つ以上の機械可読ハードウェア記憶デバイス。
【請求項２０】
前記データレコードの集合は、前記データレコードからのデータを含む第一のデータレコードであり、前記動作は、
複数のデータレコードを収集することと、
前記データレコードを単一のキューにパブリッシュすることと、
前記キューから、前記２つ以上の特定のデータレコードを検出することと、
前記２つ以上の特定のデータレコードを前記第一のデータレコード中に結合することであって、前記２つ以上の特定のデータレコードは、異なるタイプのイベントであることを表すデータを含む、結合することと、
前記第一のデータレコードを、前記少なくとも１つの特定のデータレコードのための前記結合データで拡張することと
をさらに含む、請求項１８に記載の１つ以上の機械可読ハードウェア記憶デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本明細書は、特にネットワーク内に分散されたデータソースからのデータ取得を提供するように適合された方法及びデータ構造に関する。
【背景技術】
【０００２】
背景
ある例では、アプリケーションを実行するシステムは、データウェアハウス（例えば、ロジスティクスハブ、分散された機械、移動通信、又は小売店に関するデータウェアハウス）に蓄積されたデータを取得し、そのデータをバッチで集計することによってデータを集計する。これらのアプリケーションは、多くの場合、バッチアプリケーションと呼ばれ、それは、これらが受信したデータをデータウェアハウスに（バッチで）蓄積し、その後、データウェアハウスからデータを再び取得して集計を計算するからであり、データ集計時にレイテンシが生じる。加えて、これらのアプリケーションは、大量のデータが関わるため、リアルタイムのデータ（及び／又はウェアハウスデータ）の集計に問題を伴う。
【０００３】
図１Ａを参照すると、環境２は、バッチデータに対して異なるタイプのアプリケーションを実行するための異なるアプリケーション（エンジン）を含む。この例では、データソース３からのデータは、エンタプライズデータウェアハウス（ＥＤＷ）４に蓄積される。ロジスティクスアプリケーション５ａ、５ｂ、５ｃ、５ｄ（それぞれ異なる動作、ルール、又はアプリケーションを実装する）の各々は、そのアプリケーションにとって適当なデータをＥＤＷ  ４から個々に取得する。これらの異なるアプリケーション５ａ、５ｂ、５ｃ、５ｄの各々は、異なるデータタイプ及びストリームに作用し、そのようにしてＥＤＷ  ４から適当なデータを取得する。これらの異なるアプリケーション５ａ、５ｂ、５ｃ、５ｄの各々は、多くの動作、ルール、及びアプリケーションを実行してもよい。各アプリケーションは同じ一般的ワークフローを使用する。
【０００４】
他の例では、例えば、米国特許第９，００２，７７０号に記載されているようなルール用のユーザインタフェースにより、ユーザ（例えば、１人のユーザ）は、あるアプリケーションで使用するためのルール（例えば、ＳＭＳの利用＞４０）を定義でき、そのルールに合った関連データを取得するためにデータベース内の適当なデータレコードにアクセスするためのコンピュータコードを記述しなくてよい。一般に、ユーザがアプリケーションを定義するとき、ユーザは、ルールを（例えば、スプレッドシートに）書き込み、その後、このスプレッドシートをコンピュータプログラマに送り、ルールを実装するためのコードが記述されるようにする。ルール用のユーザインタフェースにより、ユーザは、単純にユーザインタフェース内でルール（例えば、ルールを表すアイコン）を選択して、そのルールのための数値又は条件を指定できる。システムは、イベントにより明示される適当なデータを取得するために必要な命令を生成するように構成される。ルール用のユーザインタフェースを通じて、ユーザは、ルールを編集でき、ルールの編集のためにプログラマを雇う必要がない。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
いくつかの例において、データ処理システムによって実行される、データを処理するための方法は、１つ以上のデータストリームからデータを間欠的に受信することであって、受信されたデータは、データレコードを含む、受信することと、１つ以上のデータストリームからのデータが継続的に受信されるときに、受信されたデータレコード中の２つ以上の特定のデータレコードを検出することであって、検出された２つ以上の特定のデータレコードの各々は、特定の識別子を含む、検出することと、その特定の識別子について、検出された２つ以上の特定のデータレコードを含む、データレコードの集合を作成することと、データレコードの集合に含まれる少なくとも１つの特定のデータレコードについて、特定の識別子に関連付けられるデータの履歴集計のためにデータレコードを検索することであって、履歴集計は、以前の期間からの事前に計算されたデータ集計である、検索することと、少なくとも１つの特定のデータレコードに基づいて、及び履歴集計に基づいて結合データを計算することと、データレコードを、結合データをデータレコードのフィールドに挿入することにより、及び集合内のデータレコードの少なくとも１つからのデータをデータレコードの別のフィールドに挿入することにより変更することと、変更されたデータレコードに１つ以上のルールを適用することにより、変更されたデータレコードを処理することと、ルールを適用することに基づいて、１つ以上のアクションを開始するための１つ以上の命令をメモリに書き込むことと、１つ以上のアクションを開始するためのキューに１つ以上の命令をパブリッシュすることとを含む。１つ以上のコンピュータのシステムは、システム上にインストールされるか、動作時にアクションを実行するか、又はシステムにアクションを実行させるソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せを有することによって特定の動作又はアクションを実行するように構成され得る。１つ以上のコンピュータプログラムは、データ処理装置によって実行されると、装置にアクションを実行させる命令を含むことにより、特定の動作又はアクションを実行するように構成され得る。
【０００６】
この態様において、集合内のデータレコードの少なくとも１つからのデータをデータレコードの他のフィールドに挿入することは、集合に含まれる少なくとも１つの特定のデータレコードからのデータを、挿入することによって変更されるデータレコードの他のフィールドに挿入することを含む。データレコードの集合は、データレコードからのデータを含む第一のデータレコードであり、方法は、複数のデータレコードを収集することと、データレコードを単一のキューにパブリッシュすることと、キューから２つ以上の特定のデータレコードを検出することと、２つ以上の特定のデータレコードを第一のデータレコード中に結合することであって、２つ以上の特定のデータレコードは、異なるタイプのイベントであることを表すデータを含む、結合することと、第一のデータレコードを、少なくとも１つの特定のデータレコードのための結合データで拡張することとをさらに含む。以前の期間は、検出の実行前の時間である。アクションは、第一のデータレコードに、第一のデータレコードに含まれる特定のイベントに関連付けられる顧客に関する顧客プロフィールデータをアタッチすることと、第一のデータレコードに、特定のイベントに関する履歴集計を有するアペンダブルルックアップファイル（ＡＬＦ）をアタッチすることとを含む。
【０００７】
この態様において、結合データを計算することは、履歴集計に増分データを付加することであって、増分データは、履歴集計が計算された時間から、現在時間の１分以内である準現在時間までのデータを含む、付加することと、増分データの付加に基づいて、データの準リアルタイム集計を生成することとを含む。ユーザのクライアントデバイスから、アプリケーションを定義する１つ以上のルールを表すデータを受信することと、受信されたデータに基づいて、アプリケーションを定義する１つ以上のルールを生成することと、１つ以上のルールで実行することに基づいて、間欠的に受信された１つ以上のデータストリームに対してアプリケーションを実装することとをさらに含む、請求項１の方法である。１つ以上のデータストリームを受信することは、第一のタイプのイベントを表すデータを有する第一のデータストリームを受信することと、第二のタイプのイベントを表すデータを有する第二のデータストリームを受信することとを含む。
【０００８】
この態様において、１つ以上のアプリケーションを、１つ以上の命令に含まれるパブリッシュされたアクショントリガに対して実行することである。データレコードは、イベントを含む。検索することは、データレポジト中を検索すること、又はメモリ内で検索することを含む。
【０００９】
上記の全部又は一部は、コンピュータプログラム製品として実装され得、これは、ハードドライブ、ダイナミックランダムアクセスメモリ等のランダムアクセスメモリ記憶デバイス、機械可読ハードウェア記憶デバイス、及び他のタイプの非一時的機械可読記憶デバイス等の１つ以上の非一時的機械可読記憶デバイス及び／又は１つ以上のコンピュータ可読ハードウェア記憶デバイスに記憶され、１つ以上の処理デバイス上で実行可能な命令を含む。上記の全部又は一部は、装置、方法、又は電子システムとして実装され得、これは、上記の機能を実装するための実行可能な命令を記憶する１つ以上の処理デバイス及びメモリを含み得る。
【００１０】
１つ以上の実施形態の詳細は、添付の図面及び以下の説明に示されている。本明細書に記載の技術の他の特徴、目的、及び利点は、説明及び図面から且つ請求項から明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１Ａ】異なるデータストリーム内のバッチデータに作用する各種のエンジンの概略図である。
【図１Ｂ】様々なアプリケーションを実装し、バッチ及びリアルタイムデータに作用する１つのエンジンの概略図である。
【図１Ｃ】ワイドレコードを用いるリアルタイム実行の概略図である。
【図２】準リアルタイムイベント集計を計算するためのシステムの概略図である。
【図３】例示的なイベントレコードである。
【図４】データフローグラフの概略図である。
【図５】イベントパレットからのグラフィカルユーザインタフェースの一例である。
【図６】イベントパレットからのグラフィカルユーザインタフェースの一例である。
【図７】イベントパレットからのグラフィカルユーザインタフェースの一例である。
【図８】イベントパレットからのグラフィカルユーザインタフェースの一例である。
【図９】イベントパレットからのグラフィカルユーザインタフェースの一例である。
【図１０】イベントパレットからのグラフィカルユーザインタフェースの一例である。
【図１１】イベントパレットからのグラフィカルユーザインタフェースの一例である。
【図１２】イベントパレットからのグラフィカルユーザインタフェースの一例である。
【図１３】イベントパレットからのグラフィカルユーザインタフェースの一例である。
【図１４】イベントパレットからのグラフィカルユーザインタフェースの一例である。
【図１５】フローチャートである。
【図１６】準リアルタイムイベント集計を計算することの概略図である。
【図１７】フローチャートである。
【発明を実施するための形態】
【００１２】
説明
本開示によるシステムは、間欠的に（例えば、周期的又は継続的に）様々なデータソースからのデータを受信する。データが間欠的に受信されるときに、システムは、データを１つのデータストリーム中に（例えば、受信されたデータをキューにマルチパブリッシュすることにより）収集し、準現在時間で（例えば、１ミリ秒、２ミリ秒等で）これらのデータを１つのワイドレコードに、例えばキューにマルチパブリッシュされたデータを含むワイドレコードを生成することによって結合する。データは、データウェアハウスから（バッチで）取得されるのではなく、データソースから準リアルタイムで収集される。この収集データはイベントを含み、これには、例えば、アクションの発生（例えば、音声通話を行うこと又は音声通話の長さ）を示すデータを含むレコード又はアクションの発生を示すデータが含まれる。これらの各種のデータソースからのデータを結合することにより、ワイドレコードは、異なるタイプのイベント（例えば、ショートメッセージサービス（ＳＭＳ）イベント、音声イベント、データイベント等）を含む。システムは、このワイドレコードをイベント集計、無イベントデータ、状況データ、及び各種のディメンション、例えば顧客データ（例えば、顧客のプロフィール）、アカウントデータ等でエンリッチ化する。一般に、ディメンションは、イベントに関連付けられるエンティティ（例えば、顧客、ディーラ等）に関するデータを含む。一般に、イベント集計は、明示された期間にわたる集計において発生したイベントの量を示すデータを含む。一般に、無イベントデータは、イベントが発生しなかったことを示すデータを含む。例えば、無イベントデータは、ユーザが最後にメール又はＳＭＳメッセージを送信してから経過した時間の量を指定してもよい。一般に、状態データは、特定のアプリケーション（例えば、キャンペーン）、実装、又は実行の状態（例えば、進捗状況）を示すデータを含む。
【００１３】
システムは、各アプリケーションではなく、１つのワイドレコードに対して複数のレベル（例えば、加入者（顧客）レベル、ディーラ（小売店）レベル等）で動作する複数の異なるアプリケーションの実行を可能にし、レベルのタイプは、データレポジトリからバッチで取得されるデータに対して実行される。この例では、これらのレベルの各々は特定のタイプのエンティティ、例えば、モバイルデバイス加入者、モバイルデバイスディーラ等を表す。これらの「任意イベント」アプリケーションを構築するために、システムはイベントパレットを含み、これは、ユーザ（例えば、ユーザ）が一連のルール（例えば、ルール）を定義する中で（例えば、ルール用のユーザインタフェースを含むルール環境によって）使用されてもよい事前に定義されたイベントの集合、イベント集計、無イベント、及びアプリケーション状態にアクセスし、これを見るためのインタフェースを含む。すなわち、イベントパレットは、特定の配置のイベント及びデータを明示し、それによりルール用のユーザインタフェースを用いて、これらのイベントを含むか又はそれに基づく適当なルールを作成できる。例えば、イベントパレットは、（例えば、ルールを定義するためのルール環境により）ある顧客が２０件のＳＭＳメッセージを送信すると、その顧客に５ドルのクレジットを提供することを明示するプログラムのためのルールを定義するために使用されてもよい。この例では、ユーザは、ルールを定義する中で、ＳＭＳメッセージに関するイベント集計を使用してもよい。イベントパレットは、各種のレベルで動作する各種のタイプのアプリケーション及び異なるタイプのイベントについて利用可能なイベント及びイベント集計の群を含むため、ユーザはイベントパレットを用いて、各々が複数のタイプのイベントにまたがる複数の異なるタイプのアプリケーションを構築できる。この例では、システムは、イベントパレット内で定義されるイベントの全部（又はイベントの少なくとも一部）に関する数値を含むイベントレコードを生成する。ある例では、イベントパレット内で定義されたイベントの数値は、イベントレコードのサブレコード（例えば、あるレコード中に含まれるレコード）に含まれる。例えば、イベントパレットは加入者プロフィールイベントを定義し、これらは、イベントレコード中のプロフィールサブレコード中に蓄積される。ある例において、イベントレコードは、イベントパレットに含まれるすべてのイベントのワイドレコードである。この例では、イベントレコードは、データアイテムを有するデータレコードを含む。
【００１４】
事前投入された（又は事前生成された）イベントレコードに対してアプリケーションを実行することにより、システムは、システムがデータウェアハウス又はデータベースから、アプリケーションがそれに対して実行されるデータを取得しなければならない場合の処理時間と比較して、リアルタイムでの且つリアルタイムのデータを用いたより高速のアプリケーション処理を提供する。このようなイベントレコードの生成プロセスにより、データの非正規化が行われ、その中で同じデータが意図的に複数のレコード（例えば、イベントレコード、データを蓄積するデータベース等）へ広げられる。データの非正規化により、アプリケーション実行のための処理速度が高まるが、これは、システムがデータを取得するためにデータベースクエリを実行する必要がなくなるからである。
【００１５】
イベントパレット内のイベントを含むアプリケーションをリアルタイムデータストリームに対してリアルタイムで実行できるようにするために、システムは、イベントパレット内のすべてのイベントのワイドレコードを生成して、アプリケーションが実行されるときに、関連データのためにデータベースクエリを実行しなければならないことに関連付けられるレイテンシを短縮し、アプリケーション実行中にエンリッチメントを実行すること（例えば、アプリケーション実行中に集計を計算すること）に関連付けられるレイテンシを短縮する。むしろ、リアルタイムデータストリーム中で受信される各イベントについて、イベントパレット全体及びエンリッチメント（例えば、リアルタイム集計）を含むイベントレコードが事前に構築され、このイベントレコードが、アプリケーション実行のためのキューにパブリッシュされ、それによって低レイテンシのマルチイベント型の任意イベントアプリケーションが生成され、アプリケーションをデータベースクエリ及びルックアップに関係なく実行することが可能となる。加えて、（特定のキー又は識別子に関連付けられる）すべてのイベントを含むこの１つのレコード（例えば、ワイドレコード）の生成を通じて、システムは柔軟性も高め、それは、アプリケーションごとにデータベースクエリ及び取得を実行しなければならないのではなく、レコードをすべてのエンジン及びアプリケーションに適用できるからでる。ある例において、このキー又は識別子は、ユーザ識別子（ＩＤ）キーを含む。この例において、システムは、特定のユーザに関するすべてのイベントをユーザＩＤキーに基づいて収集し、同じグループに含める。加えて、このシステムでは柔軟性が高まり、それは、エンジンが特定のタイプのデータをＥＤＷから取得するように、及び／又はＥＤＷ中のレコードの特定のフィールドをクエリするように事前に構成する必要がないからである。むしろ、システムは、ワイドレコード（これは、例えば、上述のユーザＩＤキー等の特定のキーに関連付けられるすべてのイベントを含む）を生成し、したがってワイドレコード中のデータに対してアプリケーション又はエンジンを実行でき、それにより、アプリケーションは、ワイドレコードに含まれるそのデータに基づいて「オンザフライ」で実行することが可能となる。
【００１６】
図１Ｂを参照すると、システム６は、データをデータソース７（例えば、ネットワーク内に分散されたデータソース）から受信し、収集プロセス９を実装して、例えばデータをキューにマルチパブリッシュすることにより、データを１つのデータストリームに収集する。キューにマルチパブリッシュされたデータから、システム６は、後にさらに詳しく説明するように、データに含まれるイベントのワイドレコードを生成する。この例では、システム６は、データがデータソース７（例えば、ロジスティクスハブ、分散された機械、移動通信、又は小売店に関するデータソース）から受信されるときに準リアルタイムでデータを収集する。収集の一環として、システム６は、ＥＤＷ  ８中にデータ（又はデータの一部）を蓄積する。データの収集自体は、データが例えば後にデータウェアハウスから取得されるのではなく、データソース７から受信されるため、準リアルタイムデータで行われる。ワイドレコードは、（データウェアハウスから取得されたデータから生成されるのではなく）この収集データから生成されるため、ワイドレコードは、データが収集されるときに準リアルタイムで生成され、更新される。システム６は、検出及び動作エンジン１０も含み、これは、収集データ（例えば、ワイドレコード内のデータ）にルールを適用し、収集されたデータ中の１つ以上の部分がルールの１つ以上の条件を満たすことを検出し、適当なアクションを実行する。この図の例において、検出及び動作エンジン１０は、異なるタイプのアプリケーションであるアプリケーション１１ａ、１１ｂ、１１ｃ、１１ｄのためのルールを実行する。アプリケーション１１ａ、１１ｂ、１１ｃ、１１ｄの各々は、ルールを定義するための環境を用いて構成されるデータフローグラフとして実装されてもよい。検出及び実行エンジン１０は、１つのワイドレコードに対して実行するため、検出及び動作エンジン１０は、異なるエンジンに異なるアプリケーションごとに適当な異なるデータストリームに対して実行させるのではなく、各種の異なるアプリケーション１１ａ、１１ｂ、１１ｃ、１１ｄを１つのデータストリーム（例えば、ワイドレコード）に対して実装できる。
【００１７】
図１Ｃを参照すると、イベントベースのアプリケーション１２は、その実行中、上述の方法を用いて生成されたワイドレコードを使用する。この例では、アプリケーション１２は、１つ以上の特定の加入者に関するイベントレコードに含まれるイベントに基づき、各種のイベントトリガ及びアクションを明示する。アプリケーション１２は、各種の決定点（例えば、「加入者は５０件のＳＭＳメッセージを消費したか？」）を含む。アプリケーションがそれについて予期される特定の加入者について、検出及び動作エンジン１０は、アプリケーション１２のいずれのブランチを横切るかを、その加入者に関するイベントレコードに含まれるイベント（又はその欠如）に基づいて、及びアプリケーション内の加入者の状態（例えば、「アプリケーション状態」）に基づいて決定する。一般に、アプリケーション状態は、アプリケーションの実行中に加入者が移行した先の特定のコンポーネント（例えば、特定のイベントトリガ又は特定のアクション）を指す。例えば、アプリケーション状態は、アプリケーション内のいずれのイベントトリガ又はアクションが現在特定の加入者のために実行されているかを明示する。いくつかの例において、検出及び動作エンジン１０は、指定された期間だけ待機してから、アプリケーション１２のブランチを選択する。これらの指定された期間だけ待機することにより、検出及び動作エンジン１０は、イベントレコードに挿入される新しいイベントを分析する。
【００１８】
この例では、アプリケーション１２はイベントトリガ１９を含み、これは、特定の加入者のためのサービスが作動されると、検出及び動作エンジン１０が、２日間で特定の加入者により消費されたＳＭＳメッセージの量をモニタする開始アクション２０を実行することを明示する。この例では、イベントトリガ１９は、ルールがアプリケーション１２により実行されるための前提条件である。イベントトリガ１９が満たされると、検出及び動作エンジン１０は開始アクション２０を実行する。検出及び動作エンジン１０は、ワイドレコード内の作動イベントを検出することにより、特定の加入者がイベントトリガ１９を満たしたことを特定し、その作動イベントに関連付けられる加入者を（加入者ＩＤを介して）特定する。
【００１９】
この例では、加入者が（例えば、イベントレコード内のＳＭＳ利用イベント集計により指定されるように）過去２日間に少なくとも５０件のＳＭＳメッセージを消費すると、イベントトリガ１３が実行される。イベントトリガ１３は、提案されたリロードアクション１４を実行し、これにより、検出及び動作エンジン１０は、この特定の加入者に対してリロードするように促す。加入者がリロードを実行すると、その特定の加入者に関するイベントレコードのエントリが、リロードを表すイベントで更新される。このイベントレコードの更新により、アプリケーション１２はイベントトリガ１５を実行し、これは、リロードが成功すると、アクション１６を実行してパケットプロポーザルＳＭＳをその加入者に送信することを明示する。一般に、パケット提案は、パッケージ又はバンドルサービを購入する提案である。
【００２０】
ユーザがパケットプロポーザルＳＭＳに対して応答を送信すると、イベントレコードは、その応答を表し、また応答が３時間未満で受信されたことを表すイベントで更新される。検出及び動作エンジン１０は、イベントレコード内の更新を検出し、イベントトリガ１７が実行されるようにする。イベントトリガ１７は、応答が１０時間未満で受信された場合、加入者がパッケージ購入を履行したとして、（その特定の加入者に関して）アプリケーションを終了するアクション１８を実行することを明示する。イベントレコード内の特定の加入者に関するエントリが、その特定の加入者がアクション１６に対する応答を送信しなかったことを明示すると、アプリケーション１２は、その特定の加入者に関してアプリケーションを終了するアクション２５も明示する。
【００２１】
ある例において、イベントレコード内の特定の加入者に関するエントリは、その加入者がリロードを実行しなかったことを、例えばリロードイベントの不存在を通じて、又はリロードの不存在を明示する派生イベントを通じて明示する。この例では、アプリケーション１２は、例えば、ユーザが次の３時間以内にリロードを実行するか否かをモニタするために、３時間待機するイベントトリガ２３を明示する。この３時間が経過すると、イベントトリガ２３は、加入者に対してリロードのリマインダＳＭＳを送信するというリマインダアクション２４が実行されるようにする。加入者がリマインダＳＭＳに応答しない場合、アプリケーション１２は、その特定の加入者に関してアプリケーションを終了するアクション２６を明示する。
【００２２】
アクション２０に応答して、特定の加入者に関するエントリは、加入者が過去２日間に少なくとも５０件のＳＭＳを消費しなかったことを明示してもよい。エントリは、５０件のＳＭＳの消費の不存在を明示する派生イベントを通じて、又は消費が５０件のＳＭＳより少なかったことを明示するＳＭＳ利用集計イベントを通じてこれを明示してもよい。この例では、アプリケーション１２は、５日間待機し、その後、リマインダＳＭＳを送信するアクション２２を実装するイベントトリガ２１を含む。リマインダを送信した後、加入者が依然として（例えば、イベントレコード中でその加入者に関するイベントにより明示されるように）さらに５日間で５０件のＳＭＳを消費しなかった場合、アプリケーション１２は、顧客回収チームにアラートを送信して（例えば、チームに対し、その消費者がサービスを使用していないことを伝え）、その特定の加入者に関してアプリケーションを終了するアクション２８を実行するイベントトリガ２７を明示する。
【００２３】
図２を参照すると、環境３０は、イベントが受信されときに準リアルタイムで異なるタイプのイベントのワイドレコードを生成する。この例では、環境３０は、イベントを収集し、イベント内の１つ以上の所定の条件（ルール内で明示される）が満たされたことを検出し、検出されたイベントにとって適当なアクションを実行する収集（Collect）検出（Detect）動作（Act）（ＣＤＡ）システム３２を含む。この例では、ＣＤＡシステム３２は、データウェアハウス３８（及び／又はＣＤＡシステム３２のメモリ）内でデータレコードを検索し、バッチデータ４０を取得し、また例えば受信されたリアルタイムデータを拡張するために使用されるプロフィールデータを取得するための検索及び取得システムでもある。ある例において、ＣＤＡシステム３２は、５０００万人の加入者について１日あたり２０億以上のイベントを処理し、イベントタイプごとに集計を計算する。この例では、ＣＤＡシステム３２は、データソース３６からリアルタイムデータストリーム３４を受信する。本明細書で使用される限り、リアルタイムは、その各々についてデータが受信又はアクセスされてから、そのデータの処理が実際に行われたときまでのタイムラグがあってもよいが、データが依然としてデータ受信時にライブタイムで処理される準リアルタイム及び実質的なリアルタイムを含むが、これらに限定されない。リアルタイムデータストリーム３４から、ＣＤＡシステム３２は、イベントを含むデータを間欠的に受信する。受信されたデータは、異なるタイプのイベントも含む。ある例において、リアルタイムデータストリームの第一のストリームは、第一のタイプのイベントを表すデータを含み、リアルタイムデータストリームの第二のストリームは、第二のタイプのイベントを表すデータを含む。ＣＤＡシステム３２は、リアルタイムデータストリーム３４中で受信された異なるタイプのイベントを収集するための収集エンジン４２を含む。収集エンジン４２は、ＥＤＷから抽出されたデータではなく、リアルタイムイベントに作用するため、ＣＤＡシステム３２は、イベントに対して（それが受信されたときに）、及びイベントの準リアルタイム集計に対して即時の応答を提供することができ、これはまた、アプリケーションの結果を即時に可視化する。収集エンジン４２は、イベントを１つのデータストリーム中に収集し、このイベントをキューへマルチパブリッシュする。ある例では、収集エンジン４２は、連続的フローを用いてイベントを収集して、受信したイベントを継続的に処理し、これは、米国特許第６，６５４，９０７号に記載されているとおりであり、その全内容が参照により本願に援用される。
【００２４】
リアルタイムデータストリーム３４からのイベントが収集エンジン４２によって間欠的に受信され続けるとき、収集エンジン４２は、例えばイベントパレット内に含まれるか、又は特定のユーザ属性（例えば、ユーザ識別子（ＩＤ）、ユーザキー等）に関連付けられる等、共通の品質を共有する２つ以上の特定のイベントを（例えば、キュー内で）検出する。ある例において、共通の品質は、その２つ以上の特定のイベントの特定のフィールド（例えば、ユーザＩＤフィールド）のための対応する数値であり、２つ以上の特定のイベントは、明示されたイベントタイプであり、及び／又はその２つ以上の特定のイベントはイベントパレットにより定義される。
【００２５】
収集エンジン４２は、検出された２つ以上の特定のイベントを含むイベントの集合を作成する。この例では、収集エンジン４２は、検出されたイベントの集合を含むイベントレコード４６を生成する。収集エンジン４２はまた、エンリッチメント及び集計４４をイベントレコード４６、例えばワイドレコードに挿入する。一般に、エンリッチメントは、（過去において受信されるか又は事前に計算されて）データウェアハウス内に蓄積された、あるイベントに関係するデータである。例えば、イベントは、ユーザが送信したＳＭＳメッセージの数を明示してもよく、またそのユーザのユーザＩＤを含んでいてもよい。この例では、データウェアハウス３８は、同じユーザＩＤを含む（又はそれに関連付けられる）データを蓄積する。この蓄積データはユーザプロフィールデータを含み、これは、例えば、ユーザの最新のハンドセットのタイプを含む。収集エンジン４２は、イベントレコード４６に、イベントレコード４６に含まれる特定のイベントに関連付けられる顧客に関する顧客プロフィールデータをアタッチ又は挿入する。
【００２６】
収集エンジン４２は、イベントレコード４６に含まれるイベントの１つ以上について、１つ以上の集計（すなわち、イベント集計）も計算する。特定のユーザ（イベントに含まれるユーザＩＤにより明示される）に関する特定のイベントについて、収集エンジン４２は、データウェアハウス３８から、その特定のユーザに関するその特定のイベントのバッチデータ４０を取得する。バッチデータ４０は、特定のイベントに関する履歴集計を含み、履歴集計は、以前の期間、例えば開始時間から、検出イベントの実行前の特定の時間までの期間からのイベントデータの事前計算された集計である。一般に、イベントデータは、あるイベントの特定の品質、属性、又は特徴（例えば、データ利用イベントのためのデータ利用量）を示すデータを含む。例えば、イベントの品質は、特定のフィールド（イベントに含まれる）、イベントに含まれるフィールドの特定の数値、イベントに含まれるか若しくはそれに関連付けられる特定のユーザＩＤキー、そのイベントに関する特定のフィールド若しくは特定のフィールドの数値の不存在等を含む。特定のユーザに関する特定のイベントのリアルタイムデータストリーム３４内に含まれるデータに基づき、及び履歴集計に基づき、収集エンジン４２は、結合されたイベントデータ、例えばイベントに関する準リアルタイム集計を計算する。収集エンジン４２は、イベントレコード４６を少なくとも１つの特定のイベントに関する結合イベントデータでエンリッチ化する。
【００２７】
ある例において、イベントレコード４６のイベントの１つは、ユーザＩＤ  ５４５４ｈｄｒｍに関連付けられるジョン・ドウのデータ利用である。この例では、収集エンジン４２は、データウェアハウス３８から、ユーザＩＤ  ５４５４ｈｄｒｍに関連付けられる「データ利用」のイベントに関するバッチデータ４０を取得する。この特定のユーザに関するこのイベントに関する準リアルタイム集計を計算するために、収集エンジン４２は、バッチデータ４０を増分データ４１と集計して、このイベントに関する準リアルタイム集計４３を計算する。
【００２８】
この例では、増分データ４１は、リアルタイムデータストリーム３４から受信したデータのうち、その特定のユーザについて集計されるイベントタイプに関する部分を含む。増分データ４１は、履歴集計が最後に計算された時間から準現在時間、例えば準リアルタイムデータストリームが受信される時間までに発生する。例えば、バッチデータ４０は、ユーザであるジョン・ドウが先月に６５メガバイトのデータを使用したと明示し、増分データ４１は、ユーザであるジョン・ドウが過去５分間で１メガバイトのデータを使用したことを明示する。バッチデータ４０を増分データ４１と集計することにより、収集エンジン４２は、顧客であるジョン・ドウに関するこの特定のデータ利用イベントの準リアルタイム集計４３を計算する。収集エンジン４２は、例えば、この特定のユーザのこの特定のイベントに関するレコードの一部として、イベントレコード４６に準リアルタイム集計４３を挿入する。収集エンジン４２はまた、イベントレコード４６に、例えばバッチデータ４０により明示される特定のイベントに関する履歴集計を有するアペンダブルルックアップファイル（ＡＬＦ）にアタッチする。収集エンジン４２は、履歴集計を有するＡＬＦをアタッチして、例えば新しいイベントが受信されたときに、新しい準リアルタイム集計を計算する際に履歴集計の使用を促進する。
【００２９】
この例では、収集エンジン４２は、イベントレコード４６を検出エンジン４８に送信する。検出エンジン４８はルール５０を含み、これは、例えば、異なるタイプのエンティティのための各種の異なるアプリケーションを実行するためのルールを含む。検出エンジン４８は、各種のアプリケーションを実行するための１つのエンジン及びアプリケーションを含む。この例では、ＣＤＡシステム３２は、ユーザのクライアントデバイスから、アプリケーションを定義する１つ以上のルールを表すデータを受信する。例えば、ユーザは、イベントパレットを用いてルールを定義してもよい。ＣＤＡシステム３２は、受信したデータに基づいて、アプリケーションを定義する１つ以上のルールを生成する。ＣＤＡシステム３２は、これらの１つ以上のルールを、１つ以上のルールを実施するように構成されたプロセス、例えば検出エンジン４８に渡す。検出エンジン４８は、イベントレコード４６に対するルール５０の実行に基づいてアプリケーションを実行する。検出エンジン４８は、状態遷移５３も含み、これは、例えば、ユーザが遷移した又は進んだ先のアプリケーション内の状態を明示するデータを含む。状態遷移５３に基づいて、検出エンジン４８は、アプリケーション内のいずれのアクションが実行されるか、及び／又はアプリケーション内のいずれの決定ブランチを実行するかを識別する。例えば、その加入者に関する状態遷移５３により明示されるようなアプリケーション内の特定の加入者の状態に基づいて、検出エンジン４８は、アプリケーションのいずれのコンポーネントがすでに実行されたか、アプリケーションのいずれのコンポーネントを次に実行させるかを、加入者のアプリケーション状態に従って識別する。
【００３０】
イベントレコード４６は、異なるタイプのイベント、例えばＳＭＳイベント、音声イベント、データイベント等を含む。したがって、ルール５０は、各種の異なるタイプのイベントに関する条件を有するルールを含む。一般に、ルールは条件を含み、それを満たすことによってアクションが実行される。この例では、１つのルール（「ルール１」）は、ユーザが過去６カ月間に３０件のＳＭＳメッセージを送信したという条件を有していてもよい。この条件を満たすと、ルール１は、そのユーザに＄５のクレジットを発行するというアクションを明示する。他のルール（「ルール２」）は、ユーザが前月中に使用したデータが５０メガバイト未満であったという条件を有していてもよい。この条件が満たされると、ルール２は、そのユーザに対し、例えば、データ利用増大の動機付けのために利用割引をオファーするというアクションを明示する。この例では、ルール１及びルール２は、いずれも異なるタイプのイベント（すなわち、それぞれＳＭＳイベント及びデータイベント）を使用する。検出エンジン４８は、異なるタイプのイベントに依存するルールを含むブログラムを実行でき、それは、イベントレコード４６が異なるイベントタイプを含む１つのワイドレコードであるからである。加えて、検出エンジン４８は、多数の異なるアプリケーションのためのアプリケーションを実行する１つのエンジンであり、これは、検出エンジン４８が、すべての異なる動作レベルのすべてのイベントタイプを含むイベントレコード４６を受信するからである。すなわち、検出エンジン４８は、異なるイベントレコード（各々が、それぞれのアプリケーションにとって適当なデータのタイプを含む）に対して異なるアプリケーションを実行する異なるエンジンを有するのではなく、１つのワイドレコード、すなわちイベントレコード４６に対して複数の異なるアプリケーションを実行するように構成される。
【００３１】
イベントレコード４６における、ルール５０の条件の少なくとも１つを満たすイベント（又はイベントの集計）を検出すると、検出エンジン４８は、１つ以上のアクション（例えば、条件が満たされた場合にルールにより明示されるもの）を開始するために、アクショントリガ５１をキュー５２にパブリッシュする。ある例では、アクショントリガは、いずれのアクションを実行するか、それらがいずれのアプリケーションのために実行されているか、及びユーザ（例えば、そのためにアクションが実行される加入者又はディーラ）を明示するデータを含む。検出エンジン４８は、アクショントリガ５１中で明示されたアクションを実行するためのキュー５２をアクションエンジン５４に送信する。この例では、アクションエンジン５４は、各種のアクション、例えばクレジットをユーザアカウントに発行すること、メッセージを送信すること、割引きメッセージを送信すること等を実行するように構成される。
【００３２】
典型的に、データストリームから収集されたデータは、ＣＤＡシステムが処理を行うのに必要なすべての情報、例えばユーザ名及びプロフィール情報を含んでいるとは限らない。このような場合、データ（すなわち、データストリームから収集されたデータ）は、プロフィールデータをリアルタイムデータストリーム内で受信されたデータと結合することにより、及び準リアルタイム集計を計算することにより拡張される。プロフィールデータをリアルタイムデータストリームからのデータと結合することにより、及び準リアルタイム集計を計算することにより、検索及び取得システムは、検索及び取得システムの処理要件に合わせた有意義なデータレコード（例えば、キーに関連付けられる受信された準リアルタイムデータ、そのキーに関するプロフィールデータ、そのキーに関する準リアルタイム集計を含むもの）を生成する。一般に、処理要件は、システムによって実行される各種の動作（及び／又は実行されるルール）及びこれらの動作の実行に必要な各種のデータを含む。加えて、イベントレコード内のイベントの各々に対応するデータが事前投入された「全イベント」又はフィールド（及び／又は所定のフィールド群）を含むデータレコードのこのような事前計算又生成は、ネットワークのボトルネック箇所、例えば、リアルタイムデータストリームの処理時の輻輳を回避し、緩和するのに役立つ。これは、処理に必要なデータのすべてが１つのレコード（例えば、複数のレコード中の１つのレコード）に含まれているからであり、例えば、そのようにして、データレコード又はレコードの集合の処理における各ステージ又はステップでのデータ取得、計算、及びデータベースクエリを排除又は減少させる。加えて、ＣＤＡシステム内のメモリ又はキャッシュされたインデックス内にエンハンスメントデータ（例えば、プロフィールデータ）の多くを保存することにより、システムは、それが事前計算された（複数のレコードの）レコードを生成する際、そのデータにより迅速にアクセスできる。
【００３３】
例えば、本明細書に記載のシステムは、システムが例えば他の時点での負荷と比較して軽い負荷を受けているときに、エンリッチメント及びエンハンスメントデータをメモリ内に（又はインデックス付きキャッシュ内に）ロードするように構成される。システムは、システムが他に軽減された負荷を受けているときに、エンハンスメントデータをプリロードする柔軟性を有するため、システムは、例えば、データレコードの処理が行われるとき（及び負荷が増大している期間である）にリアルタイムでそれを行わなければならないのではなく、負荷が軽いときにエンハンスメントデータをメモリにロードすることにより、負荷を分散させることができる。
【００３４】
図３を参照すると、イベントレコード６０は、フィールド６２ａ、６２ｂ、及びサブレコード６２ｃ〜６２ｉを含む。変形形態では、各サブレコード６２ｃ〜６２ｉは、レコード（又はその一部）を挿入するためのフィールドである。この例では、イベントレコード６０は、例えば、あるキーに関連付けられる受信された準リアルタイムデータ、そのキーに関するプロフィールデータ、及びそのキーに関する準リアルタイム集計を含むエンハンストデータレコードを含む。一般に、サブレコードは、あるレコード内のレコードである。そのため、サブレコード自体が複数のフィールドを含む。この例では、イベントレコード６０は、例えばイベント検出を実行する中でシステムにより処理及び分析されるすべてのフィールド及び／又はサブレコードを含む。
【００３５】
この例では、イベントレコード６０は、このイベントレコードにより表されるイベントに関連付けられる加入者を一意的に識別する加入者ＩＤのためのＩＤフィールド６２ａを含む。イベントレコード６０は、このイベントレコードがそのために生成される準リアルタイムデータストリーム中で検出されたイベントのタイプを明示するためのイベントタイプフィールド６２ｂも含む。イベントには様々な異なるタイプがあり、例えば、データイベント、音声イベント、ＳＭＳイベント等である。この例では、イベントタイプは、例えば、最後に受信したデータ中で明示されているような加入者の音声イベントである。この例では、ＣＤＡシステム３２は、リアルタイムデータストリーム３４を受信し、リアルタイムデータストリーム３４において、特定の加入者ＩＤに関連付けられる加入者に関する音声イベントを検出する。それに応答して、ＣＤＡシステム３２は、イベントレコード６０を生成し、検出された加入者ＩＤを挿入し（例えば、加入者ＩＤの「１Ｑ７ＱＦ」がＩＤフィールド６２ａに挿入される）、検出されたイベントタイプ（例えば、音声イベント）をイベントタイプフィールド６２ｂに挿入する。この例では、音声イベントは、加入者による現在の音声利用を示すデータを含む。この例では、加入者の音声利用を示すデータは増分データであり、それは、これがこの特定のイベントのための利用の増加量（例えば、この特定のエンティティに関する特定のイベントのための、現在時間からこのイベントに関するデータが前回データウェアハウス３８にバッチで記憶されたときまでの間の音声利用の量）を表すからである。
【００３６】
イベントレコード６０は音声イベントサブレコード６２ｃを含み、これは、音声イベント自体の品質又は特徴を明示するデータ、例えば、その音声イベントが発生した地理位置（例えば、地理位置：イスタンブール）、その音声イベントが受信された時間（例えば、受信時間：１２：００：０１）、及び音声イベントの持続時間（例えば、持続時間：４２分０７秒）等を記憶するためのフィールドを有する。
【００３７】
イベントレコード６０は、他のタイプのイベント（例えば、ＳＭＳ及びデータイベント）のためのイベントサブレコードも、これらの他のタイプのイベントが検出されない場合でも含む。この例では、イベントレコード６０はＳＭＳイベントサブレコード６２ｄ及びデータイベントサブレコード６２ｅを含み、その各々は「なし」の数値を有し、これは、これらのタイプのイベントが、イベントレコード６０がそのために生成された検出イベント内に含まれていないことを明示する。しかしながら、イベントレコード６０は、イベントレコード６０が生成される特定の時点におけるすべてのイベントタイプの状態の完全なレコードを構築するために、ＳＭＳイベントサブレコード６２ｄとデータイベントサブレコード６２ｅとを含む。
【００３８】
イベントレコード６０は、加入者プロフィールを挿入するための加入者プロフィールサブレコード６２ｆも含む。この例では、ＣＤＡシステム３２は、データウェアハウス３８から、ＩＤフィールド６２ａに含まれる加入者ＩＤにより表される加入者に関する加入者プロフィールを取得する。ＣＤＡシステム３２は、取得された加入者プロフィール（例えば、イベントのディメンション）を加入者プロフィールサブレコード６２ｆのフィールドに挿入する。この例では、加入者プロフィールサブレコード６２ｆは、図３の例示的な例に示されているように、プランフィールド、アドレスフィールド、及び発信日フィールドを含む。
【００３９】
イベントレコード６０は、各種のエンリッチメント及びイベント集計を挿入するためのエンリッチメントサブレコード６２ｇも含む。この例では、エンリッチメントサブレコード６２ｇは、準リアルタイム音声、データ、及びＳＭＳ集計を含む。この例では、音声集計は、例えば音声イベントサブレコード６２ｃの持続時間フィールドに明示されているような、この特定のユーザに関する音声利用の履歴（例えば、バッチ）集計と増分音声利用とに基づく。データ集計は、ＥＤＷにコミットされるのではなく、ＣＤＡシステム３２のメモリに蓄積されている履歴データ利用及びその日の増分データ利用を明示するバッチデータに基づいている。ＳＭＳ集計は、ＣＤＡシステム３２のメモリに蓄積されている履歴ＳＭＳ利用及びその日の増分ＳＭＳ利用を明示するバッチデータに基づいている。ある例では、リアルタイムデータストリーム内で受信されたテータは（例えば、ＣＤＡシステム３２の）メモリに記憶され、その後、例えば１日の終わり等、明示された時間間隔でＥＤＷストレージにコミットされる。イベントレコード６０のエンリッチメントサブレコード６２ｇのためのデータ集計を特定することにおいて、ＣＤＡシステム３２は、バッチデータをメモリ内にある増分データ（特定の加入者に関するデータ利用を明示する）と集計する。イベントレコード６０が音声イベントについて生成されても、エンリッチメントサブレコード６２ｇには依然としてデータ及びＳＭＳ集計が投入され、これは、これらの集計がアプリケーションの実行に必要であり得るからである（例えば、アプリケーションの特定のコンポーネントが、データ及び／又はＳＭＳ集計に基づく実行のための条件を有する場合）。
【００４０】
イベントレコード６０は、加入者が遷移した先のアプリケーション内の状態を明示するアプリケーション状態サブレコード６２ｉも含む。この例では、アプリケーション状態サブレコード６２ｉは、複数の異なるアプリケーションのいずれのアプリケーションが実行されているか（すなわち、アプリケーション２９ａ）、及びそのアプリケーションのいずれのコンポーネントが実行されているか（すなわち、コンポーネント２３ｂ）を明示する状態フィールドを含む。ある例では、アプリケーション状態は、サブレコード６２ｉを介して追跡される。アプリケーション状態は、ロジックにとって有意義であり、状態は、特定の種類のアプリケーションの実装に必要である。
【００４１】
図４を参照すると、データフローグラフ７０は、リアルタイムデータストリームに含まれるデータ項目に対してプロセスを実行する。この例では、ＣＤＡシステム３２は、イベントレコード６０等のイベントレコードの生成において、及びイベントレコードをプロフィールデータ及び集計でエンリッチ化することにおいて、データフローグラフ７０を実行する。データフローグラフ７０は、複数のデータ処理エンティティ（例えば、１つまた複数のＣＰＵ）を表す複数のグラフ構成要素を有し、これらは、データ処理エンティティ間のデータの流れを表す１つ以上のリンクにより接続される。データフローグラフ７０は、あるソースデータリーダ又は複数のソースデータリーダに加入する（例えば、それからデータを受信する）加入コンポーネント７２を含む。加入コンポーネント７２を通じて、データフローグラフ７０は、リアルタイムデータストリームに含まれるデータ項目にリアルタイムでアクセスする。この例では、加入コンポーネント７２は、データキュー（例えば、その読み取りやすさを確保するために、データストリームに対してある初期処理を実行してもよい）からリアルタイムデータストリーム（例えば、数千のレコードを含む）を受信する。データは、加入コンポーネント７２からパーティションコンポーネント７４へ流れ、これは、データフロー中で受信したデータ項目（イベントを含む）をイベントタイプにより区切るか又は分割する。この例では、パーティションコンポーネント７４は、イベントパレット内で定義されている異なるタイプのイベントを検出するように構成され、様々なタイプのイベントを特定のタイプのイベントを処理するように構成された他のコンポーネントへと区切る。
【００４２】
この例において、データフローグラフ７０は、利用イベントコンポーネント７６、イベントコンポーネント７８、システムイベントコンポーネント８０、及びイベントコンポーネント８２を含む。データは、パーティションコンポーネント７４から、イベントコンポーネント７６、イベントコンポーネント７８、システムイベントコンポーネント８０、及びイベントコンポーネント８２の１つ以上へ流れる。
【００４３】
利用イベントコンポーネント７６は、利用イベントを処理するための動作を含み、これには、例えば、ＳＭＳ利用、音声利用、データ利用の量を明示するイベントが含まれる。これらの動作は、イベントを含むレコードのいずれの部分が利用量を明示するデータを含んでいるか、及びレコードのいずれの部分が、ユーザＩＤ又はユーザを一意的に識別する他のタイプのデータを明示するデータ等、他のタイプデータを含むかを識別する。
【００４４】
この例において、加入者イベントコンポーネント７８は、例えば、顧客又は加入者に関するイベントを含む加入者イベントを処理するための動作を含む。各種のタイプの加入者イベントがあり、これには、例えば、アクティベーションイベント（すなわち、ユーザがいつモバイルデバイスを作動させたか）、位置イベント（すなわち、ユーザがモバイルデバイスをいずれの地理的位置から使用するか）等が含まれる。加入者イベントコンポーネント７８に含まれるこれらの動作は、加入者イベントを含むレコードを分析して、レコードのいずれの部分が加入者イベントを含んでいるか、及びレコードのいずれの部分が識別ユーザデータを含むかを識別する。
【００４５】
システムイベントコンポーネント８０は、例えば、ユーザのシステムとの対話に関するイベントを含むシステムイベントを処理するための動作を含む。システムイベントには各種のタイプがあり、これには、例えば、加入者沈黙日数、加入者履行応答等を明示するイベントが含まれる。システムイベントコンポーネント８０に含まれるこれらの動作は、システムイベントを含むレコードを分析して、レコードのいずれの部分がそのシステムイベントを含むか、及びレコードのいずれの部分が識別ユーザデータを含むかを、このデータをワイドレコードに挿入する準備のために識別する。
【００４６】
イベントコンポーネント８２は、例えば、ディーラ又は小売店に関するイベントを含む特定のタイプのイベントを処理するための動作を含む。ディーライベントには様々なタイプがあり、これには、例えば、ディーラの売上、販売された製品等を明示するイベントが含まれる。イベントコンポーネント８２に含まれるこれらの動作は、イベントに含まれるレコードを分析して、レコードのいずれの部分がそのイベントを含むか、及びレコードのいずれの部分が識別データを含むかを、このデータをワイドレコードに挿入する準備のために識別する。
【００４７】
データフローグラフ７０は、派生イベントを識別するための動作を含む派生イベントコンポーネント８４も含む。一般に、派生イベントは、他のデータから派生し、及び／又はある事象から若しくは事象の不存在から派生するイベントを含む。派生イベントには様々なタイプがあり、これには、例えば、加入者音声沈黙日数、加入者ＳＭＳ沈黙日数、加入者データ沈黙日数等を明示するイベントが含まれる。この例では、派生イベントコンポーネント８４は、これらの派生イベントを特定するための動作を含む。ある例では、ＣＤＡシステム３２は、リアルタイムデータストリーム中で受信したイベント内において、特定のユーザに関する特定のタイプのイベント（例えば、ＳＭＳ利用）の不存在を検出することにより、これらの派生イベントを特定する。検出すると、ＣＤＡシステム３２は、閾値期間にわたりその特定のイベントの不存在があったか否かを特定して、派生イベントの存在を検出する。閾値期間中に不存在があったか否かを特定するために、ＣＤＡシステム３２は、データレポジトリからその特定のユーザに関するデータ、例えば前回発生したイベントを明示するデータを取得する。閾値期間中にその特定のイベントの不存在があった場合、ＣＤＡシステム３２は派生イベントを検出する。この例では、ＣＤＡシステム３２は、受信するリアルタイムデータストリーム中のデータ（又はその欠如）に基づいて、及びデータレポジトリ中に蓄積された他のデータ（イベント）に基づいて、ユーザ（例えば、加入者、ディーラ等）の１つ以上に関する派生イベントを検出する。
【００４８】
この例において、データフローグラフ７０は、結合動作を実行する結合コンポーネント８６を含む。「結合」動作は、様々なタイプのデータ、例えばイベントコンポーネント７６、７８、８０、８２、８４からのイベントを結合する。この例では、データは、イベントコンポーネント７６、７８、８０、８２、８４から結合コンポーネント８６へ流れ、これがイベントをワイドレコード中で結合する。この例では、イベントコンポーネント７６、７８、８０、８２、８４の各々は、そのイベントに関連付けられるエンティティを一意的に識別するデータ、例えばそのエンティティのためのユーザＩＤ等に関連付けられるイベントを結合コンポーネント８６に送信する。
【００４９】
この例において、データは、結合コンポーネント８６から加入者エンリッチメントコンポーネント８７へ流れ、これは、ワイドレコードを特定のタイプのエンティティ、すなわち加入者に関するプロフィールデータでエンリッチ化するための動作を含む。この例では、結合コンポーネント８６から加入者エンリッチメントコンポーネント８７へ流れるデータは、ワイドレコード中のいずれのイベントが加入者イベントであるか、及び例えばこれらの加入者に関する加入者プロフィールのルックアップを可能にするためのその加入者イベントに関連付けられるユーザＩＤを明示するデータである。ワイドレコード中に含まれる特定のイベントについて、加入者エンリッチメントコンポーネント８７に含まれる動作は、そのイベントに関するユーザＩＤを用いて、ユーザＩＤにより明示されるユーザに関するプロフィールデータを（データレポジトリから）取得する。加入者エンリッチメントコンポーネント８７は、取得したプロフィールデータを例えばイベントと共にワイドレコードに挿入する。
【００５０】
データは、エンリッチコンポーネント８７からエンリッチコンポーネント８８へ流れ、これは、ワイドレコードを他の特定のタイプのエンティティ、すなわちディーラに関するプロフィールデータでエンリッチ化するための動作を含む。この例では、エンリッチメントコンポーネント８７からエンリッチメントコンポーネント８８へ流れるデータは、ワイドレコード中のいずれのイベントが特定のタイプのイベントであるか、及び例えばそのエンティティに関連付けられるプロフィールのルックアップを可能にするための、（これらの特定のタイプのイベントに関連付けられる）特定のエンティティに関連付けられるユーザＩＤ（すなわち、ディーラＩＤ）を明示するデータである。プロフィールには様々なタイプのデータが含まれ、これには、例えば、エンティティが好ましいベンダであるか否か、エンティティがチェーンの一部であるか否か、及びそうである場合にいずれの一部であるか等を明示するデータが含まれる。ワイドレコードに含まれる特定のイベントについて、エンリッチメントコンポーネント８８に含まれる動作は、そのイベントに関するユーザＩＤを用いて、そのユーザＩＤにより明示されるディーラに関するプロフィールデータを（データレポジトリから）取得する。エンリッチメントコンポーネント８８は、取得されたプロフィールデータを、例えばそのエンティティに関するイベントと共にワイドレコードに挿入する。
【００５１】
データは、エンリッチメントコンポーネント８８から利用集計コンポーネント９０へ流れ、これは、例えば、利用イベントを含む様々なタイプのイベントに関する準リアルタイム集計を計算するための動作を含む。特定のユーザ（例えば、加入者又はディーラ）に関する特定のイベントについて、利用集計コンポーネント９０は、そのユーザのバッチデータ（例えば、バッチで蓄積された事前計算された集計を明示するデータ）を取得し、増分データ（例えば、リアルタイムデータストリーム内で受信した１つ以上のイベント）をバッチデータに付加して、準リアルタイム集計を計算する。利用集計コンポーネント９０は、ワイドレコード中に、例えば特定のユーザの特定のイベントに関する計算された準リアルタイムイベント集計を挿入する。ある例において、利用集計コンポーネント９０はまた、各種の時間間隔（例えば、毎日、毎週、毎月等）でワイドレコードに、集計（例えば、音声集計、データ集計、リロード集計等）を有するＡＬＦファイルをアタッチする。一般に、リロードは、プリペイド式の通話又はモバイルサービスプランに追加の金銭、分、及び／又はデータを追加することである。
【００５２】
この例において、ミニバッチ方式で（例えば、Ｎ分ごとに）計算され、ワイドレコードに追加される、例えばカレンダ集計（例えば、１日、１週間、１カ月等のイベント集計）を含む各種の異なるタイプの集計がある。一般に、ミニバッチは、明示された時間間隔（例えば、Ｎ分ごと）に発生し、データウェアハウス内に（バッチで）蓄積されるイベントデータの事前計算集計を含む。データウェアハウス内のカレンダ集計は、その特定のカレンダ集計のための最新のミニバッチ集計が含まれるように継続的及び／又は定期的に更新される。一般に、ミニバッチ集計は、バッチ集計より頻繁に行われ、バッチ集計は、例えば、ミニバッチ集計のように３分ごとではなく、３日ごとに行われる可能性がある。ミニバッチ集計はより頻繁に行われるため、これらのタイプの集計は、より小さいバッチのデータを集計する。また、範囲限定集計（例えば、過去１分間、過去Ｎ時間、過去Ｎ日間等）もあり、これらは、イベントが入力されるときにエンリッチメント中に計算され、またワイドレコードにも追加される。範囲限定集計は、ＥＤＷにコミットされるのではなく、ＣＤＡシステム３２のメモリに蓄積され、したがってイベントが到着するときにリアルタイムで計算される。
【００５３】
データは、集計コンポーネント９０からパブリッシュコンポーネント９２へ流れ、これはワイドレコードを、例えば複数の異なるアプリケーションがワイドレコードに対して実行されるようにするためのキューにパブリッシュする。ワイドレコードをキューにパブリッシュすることにより、（ワイドレコード内の）サブレコードの各々は、キューにエントリとして含められ、これは、各種のアプリケーションがキューのエントリに対して実行されるからである。
【００５４】
変形形態では、データフローグラフは、例えば、収集動作からの各種のフォーマットが共通のペイロードに変換される場合、結合コンポーネントを含んでいなくてもよい。この例では、具体的なイベントフォーマットを認識する必要がないため、結合コンポーネントがない。ある例では、データフローグラフ７０は、範囲限定集計計算も実行し、カレンダ（例えば、バッチ）集計は、エンリッチメント（例えば、コンポーネント８７、８８）の外で別々に実行される。
【００５５】
この例において、データフローグラフ７０は頂点（データ処理コンポーネント又はデータセットを表す）を含み、これらは、頂点間で方向を有するリンク（ワークエレメント、すなわちデータの流れを表す）により接続される。このようなデータフローグラフを作成するためのシステムは、「Executing Computations Expressed as Graphs」という名称の米国特許第５，９６６，０７２号に記載されており、その内容全体が参照により本願に援用される。このシステムに従って作成されるデータフローグラフは、グラフのコンポーネントによって表される個々のプロセスへの且つそれからのデータを取得するため、データをプロセス間で移動させるため、及びプロセスの実行順序を定義するための方法を提供する。このシステムは、利用可能なあらゆる方法からプロセス間通信方法を選択するアルゴリズムを含む（例えば、グラフのリンクに従う通信経路は、ＴＣＰ／ＩＰ又はＵＮＩＸドメインソケットを使用して、又は共通メモリを使用して、プロセス間のデータの受け渡しを行うことができる）。
【００５６】
本明細書に記載されているプロセス又は方法は、コンピューティングシステムにより実行でき、このコンピューティングシステムは、データストレージに連結された開発環境であって、データフローグラフに関連付けられる、１つ以上の入力データセットからグラフコンポーネントのグラフを通って１つ以上の出力データセットへ流れるデータに対して実行されるグラフベースの計算を実装するデータ処理アプリケーションを構築するように構成され、データフローグラフがデータストレージ内のデータ構造により明示され、データフローグラフが、１つ以上のリンクにより接続されたグラフコンポーネントを表す複数のノードを有し、リンクがデータ構造により明示されて、グラフコンポーネント間のデータの流れを表す、開発環境、及び／又は１つ以上のコンピュータ上にホストされるランタイム環境であって、データフローグラフを明示する蓄積されたデータ構造を読み、グラフコンポーネントの計算を実行するためのコンピューティングリソースを割り当て、構成するように構成された前置実行モジュールを含み、データフローグラフに割り当てられた計算の実行をスケジュールし、制御するための実行モジュールを含むランタイム環境を含む。
【００５７】
次に、図５〜１４を参照すると、イベントパレット内に各種のイベントを表示する各種のグラフィカルユーザインタフェースが示されている。（イベントパレットを通じて示される）これらのイベントの各々は、イベントレコード中（適当なフィールド又はサブレコード中）に含まれていてもよい。このようにすべてのイベントをイベントレコードに含めることにより、ユーザは、アプリケーションを各種のイベントに基づいて定義して、その定義されたアプリケーションをイベントレコードに対して実行することが可能であり（適当なデータをデータベースに問い合わせなければならないのではない）、これは、イベントレコードが、イベントパレット内にアプリケーションの定義に使用可能なイベントのすべて（又はその一部）を含んでいるからである。
【００５８】
図５を参照すると、グラフィカルユーザインタフェース１００がイベントパレット内に含まれている。この例では、イベントパレットは、１つ以上のルールを定義する中で使用されてもよい利用可能な所定のイベントを表示する一連のグラフィカルユーザインタフェースを含むアプリケーションである。この例では、ルールは、前提条件を定義する表現を含み、それが満たされるとアクションが実行される。イベントパレットを通じて、ユーザは、あるイベントに基づく表現を定義してもよい。例えば、表現は、特定のイベントが閾値又は所定の数値に到達することであってもよい。この表現に関して、ユーザは、表現が満たされたときに実行されることになる１つ以上のアクションも定義してよい。
【００５９】
この例では、グラフィカルユーザインタフェース１００は、ルールのための表現を定義するために使用されてもよい各種の入力、並びに検出されたイベントの属性を示すデータを表示する。現在時間属性１０２ａは、現時点又は現在の時間を示すデータを表示する。イベント時間属性１０２ｂは、あるイベントが最後に検出された時間を示すデータを表示する。イベント時間属性１０２ｂが選択されると、ユーザは、最後に検出されたイベントを見ることができる。イベントタイプデータ１０２ｃは、ルールの定義で使用するために利用可能な各種のタイプのイベントを示すデータを表示する。これらのイベントは、例えば、加入者レベル及びディーラレベルを含む各種のレベルで検出される。イベントタイプデータ１０２ｃを選択すると、様々な異なるタイプのイベントのリスト１０７が表示される。この例では、デバイスがいつ作動されたかを明示する作動イベント、エンティティがモバイルデバイスプランを変更したことを明示するプラン変更イベント、ユーザがモバイルデバイスを使用しなかった日数を明示する沈黙日数イベント、ユーザがモバイルデバイスを変更したことを明示するハンドセット変更イベント等がある。
【００６０】
グラフィカルユーザインタフェース１００は、ディーラＩＤ又は加入者ＩＤ等、エンティティに関するキーを表示するキーデータ１０２ｄも含む。すなわち、キーデータ１０２ｄは、グラフィカルユーザインタフェース１００が実際のイベントを閲覧するために使用されるとき、それについてのあるイベントがグラフィカルユーザインタフェース１００内で閲覧されている特定のエンティティに関するキー又はユーザＩＤを示すデータを表示する。この例では、ユーザは、様々な異なるキーをスクロールして（又は選択して）、これらのそれぞれのキーに関連付けられる各種の異なるイベントを閲覧してもよい。特定のキーを選択すると、各データ又はデータフィールド１０２ａ〜１０２ｍがその特定のキーに関する数値を表示するように更新される。
【００６１】
この例において、グラフィカルユーザインタフェース１００により、ユーザは、例えば図示されていないコントローラを用いて、検出されたイベントを閲覧できる。ユーザが特定の検出イベントを閲覧するとき、キーデータ１０２ｄ（例えば、更新された識別子）が、閲覧されているイベントに関するＩＤを表示するように更新される。ユーザが他の異なるイベントを選択すると、キーデータ１０２は、他の異なるイベントに関するＩＤを表示するように更新される。グラフィカルユーザインタフェース１００はアプリケーション状態データ１０２ｅを含み、これには、例えば、あるアプリケーションの開始及び終了時間を明示するデータ、特定のアプリケーションのために実行されたアクションの数等が含まれる。
【００６２】
グラフィカルユーザインタフェース１００は、加入者プロフィールデータ１０２ｆも含み、これを選択すると、ワイドレコードに入力され、ルールの定義に使用できる様々な種類の加入者プロフィールデータが表示される。グラフィカルユーザインタフェース１００は、加入者イベント１０２ｇも含み、それを選択すると、ワイドレコードに挿入され、ルールの定義に使用できる様々な種類の加入者イベントが表示される。グラフィカルユーザインタフェース１００は、加入者シンセティックイベント１０２ｈも含み、それを選択すると、ワイドレコードに挿入され、ルールの定義において利用できる様々な種類の加入者シンセティックイベントが表示される。一般に、シンセティックイベントは派生イベントである。グラフィカルユーザインタフェース１００は、加入者集計１０２ｉも含み、それを選択すると、各種の加入者イベントに関する準リアルタイム集計が表示される。
【００６３】
グラフィカルユーザインタフェース１００は、プロフィールデータ１０２ｊも含み、これを選択すると、ワイドレコードに挿入され、ルールの定義に使用できる様々な種類のプロフィールデータが表示される。グラフィカルユーザインタフェース１００は、イベント１０２ｋも含み、これを選択すると、ワイドレコードに挿入され、ルールの定義に使用できる様々な種類のイベントが表示される。グラフィカルユーザインタフェース１００は、シンセティックイベント１０２ｍも含み、これを選択すると、ワイドレコードに挿入され、ルールの定義に使用できる様々な種類のシンセティックイベントが表示される。グラフィカルユーザインタフェース１００は、集計１０２ｌも含み、これを選択すると、各種のイベントの準リアルタイム集計が表示される。この例では、ワイドレコードはイベント１０２ｇを含む。特定の加入者イベントについて、ワイドレコードは、その加入者のプロフィール、並びにシンセティックイベント及び集計も含む。ワイドレコードはイベント１０２ｋを含む。あるエンティティに関連付けられる特定のイベントについて、ワイドレコードは、そのエンティティのプロフィール、並びにそのエンティティのシンセティックイベント及び集計も含む。
【００６４】
図６を参照すると、グラフィカルユーザインタフェース１１０は、イベントパレット内に含まれるイベント１１２を表示する。この例では、加入者プロフィールデータ１１４は、プロフィールデータ１１４ａ、ハンドセットデータ１１４ｂ、付加価値サービス（ＶＡＳ）データ１１４ｃ（例えば、リングトルネ）、残高データ１１４ｄ、保険データ１１４ｅ、及び追加オファーデータ１１４ｆを含む。これらのタイプのデータの各々は、様々なタイプのサブデータ、例えば、データ１１４ａ〜１１４ｆにより表されるカテゴリの１つに分類される、より詳細な、すなわち詳しいデータを含む。
【００６５】
この例において、ハンドセットデータ１１４ｂは、詳細データ１１６、すなわち加入者番号、移動局国際加入者ディレクトリ番号（ＭＳＩＳＤＮ）、ブランド、機種、国際移動体装置識別番号（ＩＭＥＩ）、国際移動体加入者識別番号（ＩＭＳＩ）、ターゲットセグメント、及び汎用パケット無線サービス（ＧＰＲＳ）を含む。この例では、様々なタイプの詳細データ１１６は、様々なタイプのユーザデータに関する特定のユーザレコードの実値を表示する。この例では、加入者番号データは数値１１６ａを表示しており、これは、グラフィカルユーザインタフェース１１０を介してそれに関するイベント及びデータが閲覧されている特定の加入者の加入者番号の数値である。グラフィカルユーザインタフェース１１０は、プロフィールデータ１１４ａに関する詳細データ１１８も表示して、発信エンティティ及び作動日等、詳細なプロフィール特定データを提供する。この詳細データ１１６、１１８は、加入者イベントに関連付けられるワイドレコード中に加入者イベントへのエンリッチメントとして含められる。
【００６６】
図７を参照すると、グラフィカルユーザインタフェース１２０は、イベントパレット内に含められ、イベント１２２を含む。この例では、プロフィールデータ１２４は、詳細データ１２６、例えば名前、ＭＳＩＳＤＮ、アドレス等を含む。この詳細データ１２６は、あるイベントに関連付けられるワイドレコードに含められる。
【００６７】
図８を参照すると、グラフィカルユーザインタフェース１３０は、イベントパレットに含められ、ルールの定義に使用でき、ワイドレコードに含められる異なるタイプの加入者イベント１３２を表示する。加入者イベント１３２は、作動イベント１３２ａ（ユーザが電話を作動したかを明示する）、追加オファーイベント（ユーザが追加オファーに応答したか否かを明示する）、データ利用イベント１３２ｃ（ユーザのデータ利用量を明示する）、ハンドセット変更イベント１３２ｄ（ユーザがハンドセットをアップグレード又は変更したか否かを明示する）、購入イベント１３２ｅ（ユーザが購入したか否かを明示する）、プラン変更イベント１３２ｆ（ユーザがデバイスプランを変更したか否かを明示する）、ラッフル登録イベント１３２ｇ（ユーザがラッフル登録を行ったか否かを明示する）、リロードイベント１３２ｈ（ユーザがモバイルカード又はモバイルデバイスをリロードしたか否かを明示する）、残高イベント１３２ｉ（アカウント残高の残りの金額を明示する）、ＳＭＳ返信イベント１３２ｊ（ユーザがＳＭＳメッセージに返信したか否かを明示する）、ＳＭＳ利用イベント１３２ｋ（ＳＭＳ利用量を明示する）、音声利用イベント１３２ｌ（音声利用量を明示する）、ＶＡＳイベント１３２ｎ及びクーポンイベント１３２ｏを含む。これらの加入者イベントの各々は、それに関いてこれらのイベントが検出された加入者の加入者プロフィール及び加入者ＩＤと共に、及びこれらのイベントのイベント集計と共にイベントレコードに含められる。
【００６８】
図９を参照すると、グラフィカルユーザインタフェース１３６は、作動イベント１３２ａの様々なタイプ１３８を表示する。例えば、１つのタイプの作動イベントは、作動処理日であり、これは、加入者の作動が処理された日を明示する。この例では、特定の加入者レコードからのライブの数値（すなわち、２０１４−０６−２６  １０：５５：２８）が作動処理日イベントの横に示され、これは、ユーザが、そのユーザがルールを定義しているときにレコード（例えば、ワイドレコード）の実際のイベントの数値を見ているからである。前述のように、ユーザは、様々なレコードの実際のイベント数値をスクロールしてもよい。
【００６９】
図１０を参照すると、グラフィカルユーザインタフェース１４０は、残高イベント１３２ｉのタイプ１４２を表示する。この例では、これらの残高イベント１３２ｉは、例えば、各種の加入者について検出されたときにワイドレコード中に含められる。図１１を参照すると、グラフィカルユーザインタフェース１５０は、ワイドレコードに含めるための追加オファーイベント１３２ｂの様々なタイプ１５２を表示する。図１２を参照すると、グラフィカルユーザインタフェース１６０は、ワイドレコードに含められるハンドセット変更イベント１３２ｄのタイプ１６２を表示する。
【００７０】
図１３を参照すると、グラフィカルユーザインタフェース１７０はイベント１７１を含む。この例では、様々なタイプのシンセティックイベント１７２が示されており、これには、沈黙日数イベント１７４（これは、ユーザがモバイルデバイスを使用しなかった日数を明示する）、履行応答イベント１７６（これは、ユーザがオファーを履行又は受け入れたか否かを明示する）、猶予日イベント１７８（これは、ユーザが支払又は他の要求されているアクションの実行を、リマインダ又は他のアクションがとられるまでに猶予される日数を明示する）、無イベント１８０（これは、指定の期間内にいかなるイベントも不存在であることを明示する  −  例えば、加入者が３０日間にわたってイベント又はアクションを実行しなかった場合、メッセージを送信する）、及びタイマイベント１８２（これは、特定の時間が到来したことを明示する）が含まれる。この例では、グラフィカルユーザインタフェース１７０は、沈黙日数イベント、すなわち活動又はデバイスの利用が全くなかった期間の各種のタイプ１７９も表示する。沈黙日数イベントには様々なタイプがあり、例えば、リロード沈黙日数、ＳＭＳ沈黙日数、音声沈黙日数、データ沈黙日数、及び総沈黙日数である。この例では、グラフィカルユーザインタフェース１７０は、タイマイベント１８２のためのタイムスタンプ１８２ａも表示する。この例では、シンセティックイベント１７２は、例えばエンリッチメントサブレコード、加入者シンセティックイベント専用サブレコード（例えば、加入者シンセティックイベントサブレコード）、又はエンリッチメントサブレコード中に含められることにより、加入者に関するイベントレコードに含められる。
【００７１】
図１４を参照すると、グラフィカルユーザインタフェース１９０がイベントパレットに含められ、これにより、ユーザは、ルールの定義において各種のイベント集計を選択できる。この例では、グラフィカルユーザインタフェース１９０はイベント１９２を含み、これには、加入者集計１９４が含まれる。前述のように、加入者集計は、特定の加入者イベントに関する準リアルタイム集計であり、準リアルタイム集計は、その特定の加入者イベントに関するバッチデータと、リアルタイムデータストリーム中で受信されたその特定の加入者イベントに関する増分データとの集計である。この例では、加入者集計１９４は、データサマリ集計１９４ａ（例えば、様々な期間にわたるデータ利用の集計）、リロードサマリ集計１９４ｂ（例えば、様々な期間にわたるモバイルデバイスリロードの集計）、ＳＭＳサマリ集計１９４ｃ（例えば、様々な期間にわたるＳＭＳ利用の集計）、音声サマリ集計１９４ｄ（例えば、様々な期間にわたる音声利用の集計）、及び月間活動集計１９４ｅ（例えば、月の期間にわたり行われる集計）を含む。
【００７２】
グラフィカルユーザインタフェース１９０は、音声サマリ集計１９４ｄに含まれる様々なタイプのイベントを表示する。これらのタイプのイベントは、１日の音声イベント集計１９６（例えば、特定の加入者に関する日ベースでの各種のタイプの音声利用の集計）、１週間の音声イベント集計１９８（例えば、特定の加入者に関する週ベースでの音声利用の集計）及び１カ月の音声イベント集計２００（例えば、特定の加入者に関する月ベースでの音声利用の集計）を含む。１日の音声イベント集計１９６中には各種の異なる集計があり、これには、例えば、１日の総音声集計１９６ａ、１日のオンネット通話（例えば、ネットワーク内又はネットワーク上の）音声集計１９６ｂ、１日のオフネット通話（例えば、ローミング）音声集計１９６ｃ、及び１日の国際ダイヤル通話（ＩＤＤ）音声集計１９６ｄ（例えば、国際電話）が含まれる。１日の総音声集計１９６ａに関して、ＣＤＡシステム３２はまた、異なるタイプの１日の総音声集計、例えば１日の音声通話２０４（例えば、日ベースでの特定の加入者に関する音声通話の量を明示するデータ）、１日の音声消費２０６（例えば、日ベースでの音声通話に特定加入者が費やした金額を明示するデータ）、及び１日の音声持続時間２０８（例えば、特定の加入者に関する１日の通話の長さを明示するデータ）を特定する。これらの各種のタイプの音声サマリ集計１９４ｄは、各種のイベントをイベントパレットに含めるために生成中のレコードに追加される。
【００７３】
グラフィカルユーザインタフェース１９０はまた、様々なタイプのリロードサマリ集計１９４ｂ、例えば、１日のリロードサマリ集計２１０（例えば、１日に集計された特定の加入者に関するリロードの金額）、１週間のリロードサマリ集計２１２、及び１カ月のリロードサマリ集計２１４を表示する。この例では、様々なタイプの１日のリロードサマリ集計２１０があり、これには、１日のリロード２１６（例えば、特定の加入者が特定の日にリロードを行った回数）、及び１日のリロード金額２１８（例えば、１日に特定の加入者が実行したリロードの金額）が含まれる。この例では、これらの各種のタイプのリロードサマリ集計１９４ｂは、ＣＤＡシステム３２により生成中のワイドレコードに追加される。
【００７４】
図１５を参照すると、ＣＤＡシステム３２は、イベントベースのマーケティングを実行する際のプロセス２２０を実行し、その中で、複数の異なるアプリケーション（例えば、アプリケーション又はプログラム）がデータ受信中にリアルタイムデータストリームに対して実行される。動作中、ＣＤＡシステム３２は、１つ以上のデータストリームからデータを間欠的に受信し（２２０）、このようなデータはイベントを含む。１つ以上のデータストリームからのイベントが引き続き間欠的に受信されるときに、ＣＤＡシステム３２は、受信されたイベント内の２つ以上の特定のイベントを検出し（２２２）、この検出された２つ以上の特定イベントは、共通の品質を共有し、例えばイベントパレット内で定義される。他の例では、共通の品質は、ＣＤＡシステム３２が特定のエンティティに関するイベントを検出するため、共通のユーザＩＤ又はユーザキーとすることができる。ＣＤＡシステム３２は、検出された２つ以上の特定のイベントを含むイベントの集合を作成（又は更新）する（２２４）。集合が（例えば、過去に行われたプロセス２２０内で）すでに作成されている例では、ＣＤＡシステム３２は、例えば、新たに検出されたイベントで集合を更新する。例えば、ＣＤＡシステム３２は、検出されたイベントのレコード（例えば、ワイドレコード）を作成する。このレコードにおいて、各イベントは、エンティティＩＤ、例えば加入者ＩＤ又はエンティティＩＤに関連付けられる。この例では、エンティティＩＤは、リアルタイムデータストリーム内でイベントにすでに関連付けられ、ＣＤＡシステム３２は、エンティティＩＤ及びイベントをワイドレコードに挿入する。
【００７５】
ＣＤＡシステム３２は、ワイドレコード内のイベントを、それぞれのイベントに関連付けられるそのエンティティに関するプロティールデータをレコードに追加すること（又はアタッチすること）により、及びイベント集計を追加することによりエンリッチ化する。ある例では、イベントの集合に含まれる少なくとも１つの特定のイベントについて、ＣＤＡシステム３２は、データレポジトリから、少なくとも１つの特定のイベントに関する履歴集計を取得し（２２６）、この履歴集計は、過去の期間からのイベントデータの事前計算された集計である。この例において、履歴集計は、開示時間から終了時間までの事前計算された集計である。この事前計算された集計は、（開始時間から終了時間までに発生した個々のイベントから）バッチで計算され、バッチデータと呼ばれる。ＣＤＡシステム３２は、少なくとも１つの特定のイベントに基づいて、及び履歴集計に基づいて結合イベントデータも計算する（２２８）。この例では、結合イベントデーは、特定の加入者に関する特定のイベントについての準リアルタイム集計である。
【００７６】
準リアルタイム集計は、イベント集計の前回のバッチ計算以降の（この特定の加入者のこの特定のタイプのイベントに関する）履歴集計と、リアルタイムデータストリーム中で受信される（この特定の加入者のこの特定のイベントタイプに関する）増分イベントとに基づく。結合イベントデータの計算時、増分イベントは、準リアルタイムデータストリーム中でそのときに受信されてもよく、又は結合イベントデータの計算が、増分イベントが準リアルタイムデータストリーム内で受信された後、増分イベントがＥＤＷに記憶される前に行われる場合、ＣＤＡシステム３２のメモリに記憶されてもよい。この準リアルタイム集計は、適当なイベントに関するワイドレコードに他の前述のエンリッチメントと共に挿入される。ルール（複数のアプリケーション及び／又はアプリケーションを定義する）は、このワイドレコード（イベント及びエンリッチメントを含む）に対し、例えばワイドレコードに含まれるサブレコードを、そのルールを実装するルールエンジンを通じて受け渡すことによって実行される。ＣＤＡシステム３２は、実行されたルールの１つ以上がワイドレコードの内容によって（例えば、ワイドレコード中のサブレコードの１つの内容によって）満たされるか否かを特定する（２２９）。ルールの前提条件を満たす（特定のエンティティの特定のイベント並びに関係するエンリッチメント及び集計を含む）サブレコードを検出すると、ＣＤＡシステム３２は、このルールのためのアクションを識別し、いずれのアクションをいずれのエンティティのために実行するかを明示するデータを含むアクショントリガを生成する。結合イベントデータに基づいて、ＣＤＡシステム３２は、１つ以上のアクションを開始するためのキューにアクショントリガをパブリッシュする（２３０）。この例において、アクショントリガは、キュー内のエントリである。ＣＤＡシステム３２は、キュー内のエントリを分析し（例えば、先入れ先出しの順序）、アクショントリガにより明示されたアクション、例えば、エンティティに対して、オファーを認識させるＳＭＳメッセージを送信すること等を実行するか、又はその実行を開始する。
【００７７】
アクショントリガをパブリッシュした後、又はＣＤＡシステム３２が、実行されたルールのいずれもワイドレコードの内容によって（例えば、ワイドレコード内のサブレコードの１つの内容によって）満たされないと判断すると、ＣＤＡシステム３２は、アプリケーションの１つ以上が依然として実行中であるか否かを特定する（２３２）。アプリケーションの１つ以上が依然として実行中であれば、ＣＤＡシステム３２は、例えば、アプリケーションが実行を停止するまでアクション２２２、２２４、２２６、２２８、２３０、２３２を繰り返す。アプリケーションが実行を停止すると、ＣＤＡシステム３２は、プロセス２２０を停止する（２３４）。
【００７８】
図１６を参照すると、環境２４０はイベントベースのマーケティングの例示的な実装を示す。この例では、ＣＤＡシステム３２は、リスニングプロセス２４１を（例えば、収集エンジン４２に対して）実行し、１つ以上のリアルタイムデータストリームを間欠的に（例えば、継続的に）聞き、受信し、処理する。リスニングプロセス２４１は、特定の加入者の特定のイベントタイプに関する増分データ２４２（例えば、１件のメッセージという現在のＳＭＳ利用）を受信して処理する。準リアルタイム集計を計算するために、ＣＤＡシステム３２は、（例えば、データレポジトリから）増分データ２４２中で表されるイベントのタイプ（例えば、ＳＭＳイベント）に関するバッチデータ２４８を取得する。この例では、バッチデータ２４８は、増分データ２４２に関連付けられるエンティティのＳＭＳ利用の履歴集計を含む。この例では、ＣＤＡシステム３２は、（データ２４２、２４８に関連付けられる特定のエンティティに関する）集計ＳＭＳ利用２５４を、増分データ２４２をバッチデータ２４８と集計することによって計算する。変形形態では、ＣＤＡシステム３２は、例えば新しい増分データが過去に受信されているが、ＣＤＡシステム３２がこの新たに受信したデータをＥＤＷに記憶させるそのバッチ処理を依然として実行していない場合、ＣＤＡシステム３２のメモリからＳＭＳ利用に関する追加の増分データにもアクセスしてよい。この変形形態では、ＣＤＡシステム３２は、増分データ２４２、バッチデータ２４８、及びメモリ内に蓄積されている追記の増分データを集計することにより、準リアルタイムの集計ＳＭＳ利用データ２５４を生成する。
【００７９】
ＣＤＡシステム３２は、（データ２４２に関連付けられる特定のエンティティに関する）集計音声利用２５８も、増分音声利用データ（ＣＤＡシステム３２のメモリに蓄積されている）をバッチ音声利用データ（ＥＤＷから取得される）と集計することによって計算する。ＣＤＡシステム３２は、（データ２４２に関連付けられる特定のエンティティに関する）集計データ利用データ２５９も、増分データ利用（ＣＤＡシステム３２のメモリに蓄積されている）をバッチデータ利用（ＥＤＷから取得）と集計することによって計算する。ＣＤＡシステムは、集計音声利用２５８及び集計データ利用データ２５９を、イベントレコード２６０に含めて、イベントレコード２６０が、特定のアクションが集計データ及び／又は音声利用の閾値に依存するようなアプリケーションによって使用可能となるようにするために計算する。
【００８０】
ＣＤＡシステム３２は、イベントレコード２６０中に加入者ＩＤフィールド２４２、イベントタイプフィールド２４４、音声イベントサブレコード２４６、ＳＭＳイベントサブレコード２５０（現在のＳＭＳ利用イベント２４２を含む）、データイベントサブレコード２５１、加入者プロフィールサブレコード２５２、エンリッチメントサブレコード２５３、及びアプリケーション状態サブレコード２６１を挿入することによってイベントレコード２６０を生成し、これらの各タイプのサブレコードは、図３に関して前述した。この例では、エンリッチメントサブレコード２５３は、集計ＳＭＳ利用データ２５４、集計音声利用データ２５８、及び集計データ利用データ２５９を含む。この例では、現在のＳＭＳ利用イベント２４２は、ＳＭＳイベントサブレコード２５０に記憶される。
【００８１】
この例において、ＣＤＡシステム３２は、１つ以上のアプリケーションをイベントレコード２６０に対して実行し、その１つ以上のアプリケーション内のルールのいずれの前提条件がイベントレコード２６０によって満たされたかを特定するための検出エンジンを実行する２６９。この例では、ＣＤＡシステム３２は、ＳＭＳイベントサブレコード２５０中の現在のＳＭＳ利用イベント２４２が、アプリケーション内のルールの前提条件のうち、顧客をアップグレードするための１つを満たしたことを検出する。この検出に基づいて、ＣＤＡシステム３２は、明示されたアクションを実行するためのアクショントリガ２６８を生成する。この例では、アクショントリガ２６８は、顧客に電子メールを送信し、サービスをアップグレードするためのプロモーションを顧客に知らせるアクションを明示する。ＣＤＡシステム３２は、電子メール２７０がユーザに送信されるようにするアクショントリガを実行する。
【００８２】
図１７を参照すると、プロセス３００は、データを処理するための検索及び取得データ処理システムによって実行される。動作中、システムは、１つ以上のデータストリームからデータを間欠的に受信し（３０２）、受信されたデータは、データレコードを含む。１つ以上のデータストリームからのデータが継続的に受信されているときに、システムは、受信されたデータレコード中の２つ以上の特定のデータレコードを検出し（３０４）、検出された２つ以上の特定のデータレコードの各々は、特定の識別子を含む。この例では、システムは、キーを伴うレコード、例えば、特定の識別子又はキーに関連付けられるデータレコードを検出する。その特定の識別子について、システムは、検出された２つ以上の特定のデータレコードを含むデータレコードの集合を作成する（３０６）。データレコードの集合に含まれる少なくとも１つの特定のデータレコードについて、システムは、データレポジトリ（及び／又はメモリ内にキャッシュ又は記憶されたデータ）中のデータレコードから特定の識別子に関連付けられるデータの履歴集計を検索し（３０８）、履歴集計は、前の期間からの事前計算されたデータ集計である。システムは、少なくとも１つの特定のデータレコードに基づいて、及び履歴集計に基づいて結合データを計算する（３１０）。この例では、結合データは、エンハンスメントを含み、これは、リアルタイムデータストリームから受信したデータにこの結合データが含まれないからである。
【００８３】
システムはまた、データレコードを、結合データをデータレコードのフィールドに挿入することにより、及び集合内のデータレコードの少なくとも１つからのデータをデータレコードの別のフィールドに挿入することにより変更する（３１２）。例えば、変更されたデータレコードは、すべてのイベントのレコード、例えばイベントレコード６０を含んでいてもよい（図３）。この例では、結合データは、音声集計データであってもよく、エンリッチメントサブレコード６２ｇに挿入されてもよい。この例では、エンリッチメントサブレコードは、イベントレコード６０中のフィールドである。他の例では、変更されたデータレコードは、他のレコード又は受信若しくは計算された他のデータを投入すべきフィールドを有するデータレコードを含んでいてもよい。システムはまた、集合内のデータレコードの少なくとも１つからのデータをデータレコードの別のフィールドに挿入する。例えば、集合に含まれるデータレコードの１つが、音声通話の場所、持続時間、及び受信時間を示す音声レコードである場合、システムは、音声レコードからのこのデータをレコード６０のフィールド６２ｃに挿入する。この例では、システムは、例えば、レコード６０のフィールド６２ｆに挿入されるプロフィールデータとして、レコードに他のエンリッチメント又はエンハンスメントを追加してもよい。
【００８４】
また、変更されたデータレコードを、変更されたデータレコードに１つ以上のルールを適用することによって処理するシステムである。ルールを適用することに基づいて、システムは、システムのメモリに１つ以上のアクションを開始するための１つ以上の命令を書き込む（３１４）。いくつかの例では、命令はアクショントリガを含む。システムは、１つ以上の命令を、１つ以上のアクションを開始するためのキューにパブリッシュする（３１６）。
【００８５】
本明細書に記載の技術を用いて、イベントパレットは、異なるレベル（例えば、ディーラレベル、加入者レベル等）で行われる異なるタイプのイベント（例えば、ＳＭＳ、音声、データ等）を定義する。これらの事前定義されたイベントを用いて、ユーザ（例えば、分析者）は、イベントパレット内で定義されたイベントの１つ以上が満たされたときに実行されるべき各種のアクションを明示するルールを定義できる。１つのシステムが、これらの各種のタイプの、異なるレベルで行われるイベントに関するルールを含む複数のアプリケーションを実行できるようにするために、システムは、イベントパレットに含まれるイベントのワイドレコードを生成し、これらのイベントをプロフィールデータ及び集計でエンリッチ化して、準リアルタイム集計を実装できる準リアルタイムアプリケーションを提供する。バッチアプリケーションを実装するのではなく、本明細書に記載の技術を用いて実行されリアプリケーションは、大量のデータの集計履歴をリアルタイムで、且つ低レイテンシで生成するマルチイベント型のアプリケーションであり得る。連続フローを介したデータの準リアルタイム処理、ワイドレコードの生成、及びバッチ及び増分によるものの両方の集計の構築を通じて、本明細書に記載のシステムは、より効率的に且つ迅速にデータを集計し、アプリケーションを実行することができ、準リアルタイム集計を用いてマルチイベント型のアプリケーションを実行する際のレイテンシの量が削減される。ある例では、システムは、例えば、レコードをアプリケーションにパブリッシュする前に、特定のキーに関するイベント、エンリッチメント（例えば、プロフィール情報）、及び集計のレコード（例えば、ワイドレコード）を集計し、計算する。そのようにすることにより、システムは、アプリケーションが実行されて、生成されたレコードに適用されているときに、実行時に計算がより高効率となり、例えば、これは、システムがすでに集計を事前計算し、プロフィール情報のクエリを行い、またこの事前計算された情報を処理のためのレコードに含めており、それによってアプリケーションが実行されているときにそのようにすることによって処理にレイテンシを取り入れる必要がないからである。特に、集計の事前計算と、サブレコードの事前生成及び編集と、システムがイベント検出のために解析するように構成されたデータ及びイベントのためのすべてのフィールド（集計のフィールドを含む）及びサブレコードを含む１つのレコードの生成と、さらにこれらのフィールドの少なくともいくつかへの事前計算された集計又はリアルタイム集計（事前計算された集計と増分データを集計することに基づく）の事前投入とにより、システムがレコードの処理の実行中及びレコードの受信にデータにアクセスし、取得し、集計を計算しなければならないのではなく、システムは、データ処理のための１つの包括的なレコードを生成できる。このようなすべてのフィールド及びサブレコードを有する１つのレコードの生成により、実行時にデータウェアハウスからのデータにアクセスし、実行時に集計を計算する効率と比較して、システムによるより効率的なデータアクセス及び処理が可能となる。本明細書に記載の技術を使用して、システムは、生成されたレコード（すなわち、１つのレコード）をシステムによる処理のためのキューにパブリッシュし、そうする中でレコードの処理における実行時のレイテンシを短縮する。
【００８６】
上述の技術は、コンピュータ上で実行されるソフトウェアを用いて実装できる。例えば、ソフトウェアは、各々が少なくとも１つのプロセッサ、少なくとも１つのデータ記憶システム（揮発性及び不揮発性メモリ及び／又は記憶要素を含む）、少なくとも１つの入力デバイス又はポート、及び少なくとも１つの出力デバイス又はポートを含む１つ以上のプログラムされた又はプログラム可能なコンピュータシステム（これは、分散型、クライアント／サーバ、又はグリッド等、各種のアーキテクチャであり得る）で実行される１つ以上のコンピュータプログラム内で手順を形成する。ソフトウェアは、例えば、データフローグラフの設計及び構成に関する他のサービスを提供するより大型のプログラムの１つ以上のモジュールを形成できる。グラフのノード及び要素は、コンピュータ可読媒体に記憶されたデータ構造又はデータレポジトリ内に記憶されたデータモデルに適合する他の組織的データとして実装できる。
【００８７】
ソフトウェアは、汎用又は専用プログラム可能コンピュータによって読取可能なＣＤ−ＲＯＭ等の記憶媒体及び／又はハードウェア記憶デバイスで提供するか、又はネットワークの通信媒体を通じてそれが実行されるコンピュータの記憶媒体へ配信する（伝播信号内で暗号化される）ことができる。機能は、すべて専用コンピュータ上で又はコプロセッサ等の専用ハードウェアを用いて実行できる。ソフトウェアは、ソフトウェアにより明示される計算の異なる部分が異なるコンピュータにより実行される分散方式で実装できる。このようなコンピュータプログラムの各々は、好ましくは、汎用又は専用プログラム可能コンピュータにより読取可能であり、記憶媒体又はデバイスがコンピュータシステムにより読み取られたときに、本明細書に記載の手順を実行するようにコンピュータを構成し、動作させるために、記憶媒体又はデバイス（例えば、ソリッドステートメモリ若しくは媒体、又は磁気若しくは光媒体）上に記憶され、又はそれにダウンロードされる。本発明のシステムは、コンピュータプログラムを用いて構成されるコンピュータ可読記憶媒体として実装されると考えることもでき、この場合、そのように構成された記憶媒体は、本明細書に記載の機能を実行するために指定され、あらかじめ定義された方法でコンピュータシステムを動作させる。
【００８８】
本発明の多数の実施形態が説明された。それでもなお、本発明の趣旨及び範囲から逸脱することなく、各種の変更形態がなされ得ることが理解される。例えば、上述のステップのいくつかは順序に依存しないことができ、したがって記載されたものと異なる順番で実行できる。加えて、前述の例及び技術は、様々な用途に広く適用可能である。
【００８９】
上述の説明は例示のためであり、付属の特許請求の範囲により定義される本発明の範囲を限定しないと理解されたい。例えば、上述の機能ステップの多くは、全体的な処理に実質的な影響を与えることなく、異なる順番で実行できる。他の実施形態は、以下の特許請求の範囲に含まれる。
【図１Ａ】
2019507403.tif 000003
【図１Ｂ】
2019507403.tif 000004
【図１Ｃ】
2019507403.tif 000005
【図２】
2019507403.tif 000006
【図３】
2019507403.tif 000007
【図４】
2019507403.tif 000008
【図５】
2019507403.tif 000009
【図６】
2019507403.tif 000010
【図７】
2019507403.tif 000011
【図８】
2019507403.tif 000012
【図９】
2019507403.tif 000013
【図１０】
2019507403.tif 000014
【図１１】
2019507403.tif 000015
【図１２】
2019507403.tif 000016
【図１３】
2019507403.tif 000017
【図１４】
2019507403.tif 000018
【図１５】
2019507403.tif 000019
【図１６】
2019507403.tif 000020
【図１７】
2019507403.tif 000021
【国際調査報告】
2019507403.tif 000022
2019507403.tif 000023
2019507403.tif 000024