(57)【特許請求の範囲】
【請求項１】
データ処理アプリケーションを使用してデータレコードの組を処理すること要求を受信することと、
前記データレコードの組に関連付けられた特徴に基づいて、（ｉ）前記データ処理アプリケーションの１つまたは複数の実行プロセスを使用して前記データレコードの組を処理する第１のモードと、（ｉｉ）前記データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間から選択することと、
前記選択されたモードに従って実行される前記データ処理アプリケーションに、前記データレコードの組を処理させることと、
を含む、方法。
【請求項２】
前記データレコードの組を処理する前記要求を受信する前に、前記１つまたは複数の実行プロセスがコンパイルされ、メモリにロードされる、請求項１に記載の方法。
【請求項３】
前記１つまたは複数の実行プロセスは、前記データレコードの組を処理する前記要求を受信する前にスタンバイモードにある、請求項１または２に記載の方法。
【請求項４】
前記第２のモードが選択されるとき、前記データ処理アプリケーションをコンパイルし、前記コンパイルされたデータ処理アプリケーションをメモリにロードすることを含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記１つまたは複数の新たなプロセスは、前記データレコードの組を処理する前記要求を受信する前にコンパイルもメモリにロードもされないプロセスを含む、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記データレコードの組に関連付けられた前記特徴は、前記データレコードの組のサイズ、前記データレコードの組のフォーマット、または前記データレコードの組の複雑度のうちの１つまたは複数を含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記第１のモードと前記第２のモードとの間から選択することは、
前記データレコードの組の前記サイズが閾値サイズ以下であるとき、前記第１のモードを選択することと、
前記データレコードの組の前記サイズが前記閾値サイズを超えているとき、前記第２のモードを選択することと、
を含む、請求項６に記載の方法。
【請求項８】
前記閾値サイズは、前記データレコードの組のフォーマットに基づき、少なくとも２つの異なるフォーマットがそれぞれ異なる閾値サイズに関連付けられる、請求項７に記載の方法。
【請求項９】
前記閾値サイズは、前記データレコードの組に関連付けられた処理要件に基づき、少なくとも２つの異なる処理要件がそれぞれ異なる閾値サイズに関連付けられる、請求項７または８に記載の方法。
【請求項１０】
前記閾値サイズは、前記データ処理アプリケーションの動作を示す履歴データに基づく、請求項７から９のいずれか一項に記載の方法。
【請求項１１】
前記データ処理アプリケーションの実行中に前記閾値サイズを求めることを含む、請求項７から１０のいずれか一項に記載の方法。
【請求項１２】
前記データ処理アプリケーションの実行中に前記閾値サイズを求めることは、
前記第１のモードに従って実行される前記データ処理アプリケーションが、基準レートよりも低速に実行される場合、前記閾値サイズを減少させることと、
前記第２のモードに従って実行される前記データ処理アプリケーションが、基準レートよりも低速に実行される場合、前記閾値サイズを増大させることと、
を含む、請求項１１に記載の方法。
【請求項１３】
前記データレコードの組のサイズを求めることを含む、請求項１から１２のいずれか一項に記載の方法。
【請求項１４】
前記データレコードの組はファイルを含み、前記データレコードの組の前記サイズを求めることは、前記ファイルのサイズを求めることを含む、請求項１３に記載の方法。
【請求項１５】
前記データレコードの組は、データベースに記憶されたデータを含み、前記データレコードの組の前記サイズを求めることは、前記データベースにクエリすることを含む、請求項１３または１４に記載の方法。
【請求項１６】
前記データレコードの組に関連付けられた前記特徴は、前記データレコードの組に関連付けられた処理要件を含む、請求項１から１５のいずれか一項に記載の方法。
【請求項１７】
前記処理要件は、前記データレコードの組を処理するための許容時間を含む、請求項１６に記載の方法。
【請求項１８】
前記第１のモードでは、前記データ処理アプリケーションのコンポーネントが、前記要求の受信の前にマシンコードにコンパイルされ、前記第２のモードでは、前記コンポーネントは、前記要求の受信の後にマシンコードにコンパイルされる、請求項１から１７のいずれか一項に記載の方法。
【請求項１９】
前記第１のモードでは、前記１つまたは複数の実行プロセスが連続して実行され、前記第２のモードでは、前記１つまたは複数の新たなプロセスのうちの少なくともいくつかが同時に実行される、請求項１から１８のいずれか一項に記載の方法。
【請求項２０】
コンピュータ可読媒体上に記憶されるソフトウェアであって、前記ソフトウェアは、コンピューティングシステムに、
データ処理アプリケーションを使用してデータレコードの組を処理することの要求を受信することと、
前記データレコードの組に関連付けられた特徴に基づいて、（ｉ）前記データ処理アプリケーションの１つまたは複数の実行プロセスを使用して前記データレコードの組を処理する第１のモードと、（ｉｉ）前記データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間から選択することと、
前記選択されたモードに従って実行される前記データ処理アプリケーションに、前記データレコードの組を処理させることと、
を行わせるための命令を含む、ソフトウェア。
【請求項２１】
コンピューティングシステムであって、
データ処理アプリケーションを使用してデータレコードの組を処理することの要求を受信し、
前記データレコードの組に関連付けられた特徴に基づいて、（ｉ）前記データ処理アプリケーションの１つまたは複数の実行プロセスを使用して前記データレコードの組を処理する第１のモードと、（ｉｉ）前記データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間から選択し、
前記選択されたモードに従って実行される前記データ処理アプリケーションに、前記データレコードの組を処理させる、
ように構成された少なくとも１つのプロセッサを備える、コンピューティングシステム。
【請求項２２】
コンピューティングシステムであって、
データ処理アプリケーションを使用してデータレコードの組を処理することの要求を受信するための手段と、
前記データレコードの組に関連付けられた特徴に基づいて、（ｉ）前記データ処理アプリケーションの１つまたは複数の実行プロセスを使用して前記データレコードの組を処理する第１のモードと、（ｉｉ）前記データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間から選択するための手段と、
前記選択されたモードに従って実行される前記データ処理アプリケーションに、前記データレコードの組を処理させるための手段と、
を備える、コンピューティングシステム。
【請求項２３】
前記データレコードの組を処理する前記要求を受信する前に、前記１つまたは複数の実行プロセスがコンパイルされ、メモリにロードされる、請求項２１に記載のコンピューティングシステム。
【請求項２４】
前記１つまたは複数の実行プロセスは、前記データレコードの組を処理する前記要求を受信する前にスタンバイモードにある、請求項２１又は２３に記載のコンピューティングシステム。
【請求項２５】
前記プロセッサは、前記第２のモードが選択されるとき、前記データ処理アプリケーションをコンパイルし、前記コンパイルされたデータ処理アプリケーションをメモリにロードするように構成される、請求項２１、請求項２３又は２４に記載のコンピューティングシステム。
【請求項２６】
前記１つまたは複数の新たなプロセスは、前記データレコードの組を処理する前記要求を受信する前にコンパイルもメモリにロードもされないプロセスを含む、請求項２１、請求項２３から２５のいずれか一項に記載のコンピューティングシステム。
【請求項２７】
前記データレコードの組に関連付けられた前記特徴は、前記データレコードの組のサイズ、前記データレコードの組のフォーマット、または前記データレコードの組の複雑度のうちの１つまたは複数を含む、請求項２１、請求項２３から２６のいずれか一項に記載のコンピューティングシステム。
【請求項２８】
前記第１のモードと前記第２のモードとの間から選択することは、
前記データレコードの組の前記サイズが閾値サイズ以下であるとき、前記第１のモードを選択することと、
前記データレコードの組の前記サイズが前記閾値サイズを超えているとき、前記第２のモードを選択することと、
を含む、請求項２７に記載のコンピューティングシステム。
【請求項２９】
前記閾値サイズは、前記データレコードの組のフォーマットに基づき、少なくとも２つの異なるフォーマットがそれぞれ異なる閾値サイズに関連付けられる、請求項２８に記載のコンピューティングシステム。
【請求項３０】
前記閾値サイズは、前記データレコードの組に関連付けられた処理要件に基づき、少なくとも２つの異なる処理要件がそれぞれ異なる閾値サイズに関連付けられる、請求項２８又は２９に記載のコンピューティングシステム。
【請求項３１】
前記閾値サイズは、前記データ処理アプリケーションの動作を示す履歴データに基づく、請求項２８から３０のいずれか一項に記載のコンピューティングシステム。
【請求項３２】
前記プロセッサは、前記データ処理アプリケーションの実行中に前記閾値サイズを求めるように構成される、請求項２８から３１のいずれか一項に記載のコンピューティングシステム。
【請求項３３】
前記データ処理アプリケーションの実行中に前記閾値サイズを求めることは、
前記第１のモードに従って実行される前記データ処理アプリケーションが、基準レートよりも低速に実行される場合、前記閾値サイズを減少させることと、
前記第２のモードに従って実行される前記データ処理アプリケーションが、基準レートよりも低速に実行される場合、前記閾値サイズを増大させることと、
を含む、請求項３２に記載のコンピューティングシステム。
【請求項３４】
前記プロセッサは、前記データレコードの組のサイズを求めるように構成される、請求項２１、請求項２３から３３のいずれか一項に記載のコンピューティングシステム。
【請求項３５】
前記データレコードの組はファイルを含み、前記データレコードの組の前記サイズを求めることは、前記ファイルのサイズを求めることを含む、請求項３４に記載のコンピューティングシステム。
【請求項３６】
前記データレコードの組は、データベースに記憶されたデータを含み、前記データレコードの組の前記サイズを求めることは、前記データベースにクエリすることを含む、請求項３４または３５に記載のコンピューティングシステム。
【請求項３７】
前記データレコードの組に関連付けられた前記特徴は、前記データレコードの組に関連付けられた処理要件を含む、請求項２１、請求項２３から３６のいずれか一項に記載のコンピューティングシステム。
【請求項３８】
前記処理要件は、前記データレコードの組を処理するための許容時間を含む、請求項３７に記載のコンピューティングシステム。
【請求項３９】
前記第１のモードでは、前記データ処理アプリケーションのコンポーネントが、前記要求の受信の前にマシンコードにコンパイルされ、前記第２のモードでは、前記コンポーネントは、前記要求の受信の後にマシンコードにコンパイルされる、請求項２１、請求項２３から３８のいずれか一項に記載のコンピューティングシステム。
【請求項４０】
前記第１のモードでは、前記１つまたは複数の実行プロセスが連続して実行され、前記第２のモードでは、前記１つまたは複数の新たなプロセスのうちの少なくともいくつかが同時に実行される、請求項２１、請求項２３から３９のいずれか一項に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本出願は、２０１３年１２月１３日に出願された米国仮特許出願第６１／９１５，８０５号の優先権を主張する。この米国仮特許出願の内容全体が、参照により全体として本明細書に援用される。
【０００２】
本記載は、データ処理アプリケーションの動作モードを動的に決定することに関する。
【背景技術】
【０００３】
複雑な計算は、多くの場合、有向グラフ（「データフローグラフ」と呼ばれる）を通じてデータフローとして表すことができ、計算のコンポーネントは、グラフの頂点に関連付けられ、データは、グラフのリンク（アーク、エッジ）に対応するコンポーネント間で流れる。コンポーネントは、１つまたは複数の入力ポートにおいてデータを受信し、データを処理し、１つまたは複数の出力ポートからデータを提供するデータ処理コンポーネントと、データフローのソースまたはシンクとしての役割を果たすデータセットコンポーネントとを含むことができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
一般的な態様において、方法が、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することを含む。本方法は、データの組に関連付けられた特徴に基づいて、（ｉ）データ処理アプリケーションの１つまたは複数の実行プロセスを用いてデータの組を処理する第１のモードと、（２）データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間で選択することを含む。本方法は、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させることを含む。
【０００５】
実施態様は、以下の特徴のうちの１つまたは複数を含むことができる。
【０００６】
データの組を処理することの要求を受信する前に、１つまたは複数の実行プロセスがコンパイルされ、メモリにロードされる。
【０００７】
１つまたは複数の実行プロセスは、データの組を処理することの要求を受信する前にスタンバイモードにある。
【０００８】
本方法は、第２のモードが選択されるとき、データ処理アプリケーションをコンパイルし、コンパイルされたデータ処理アプリケーションをメモリにロードすることを含む。
【０００９】
１つまたは複数の新たなプロセスは、データの組を処理することの要求を受信する前にコンパイルもメモリにロードもされないプロセスを含む。
【００１０】
データの組に関連付けられた特徴は、データの組のサイズ、データの組のフォーマット、またはデータの組の複雑度のうちの１つまたは複数を含む。
【００１１】
第１のモードと第２のモードとの間で選択することは、データの組のサイズが閾値サイズ以下であるとき、第１のモードを選択することと、データの組のサイズが閾値サイズを超えているとき、第２のモードを選択することとを含む。
【００１２】
いくつかの場合、閾値サイズは、データの組のフォーマットに基づき、少なくとも２つの異なるフォーマットがそれぞれ異なる閾値サイズに関連付けられる。いくつかの場合、閾値サイズは、データの組に関連付けられた処理要件に基づき、少なくとも２つの異なる処理要件がそれぞれ異なる閾値サイズに関連付けられる。いくつかの場合、閾値サイズは、データ処理アプリケーションの動作を示す履歴データに基づく。いくつかの場合、本方法は、例えば、第１のモードに従って実行されるデータ処理アプリケーションが、基準レートよりも低速に実行される場合、閾値サイズを減少させることと、第２のモードに従って実行されるデータ処理アプリケーションが、基準レートよりも低速に実行される場合、閾値サイズを増大させることによって、データ処理アプリケーションの実行中に閾値サイズを求めることを含む。
【００１３】
本方法は、データの組のサイズを求めることを含む。いくつかの場合、データの組はファイルを含み、データの組のサイズを求めることは、ファイルのサイズを求めることを含む。いくつかの場合、データの組は、データベースに記憶されたデータを含み、データの組のサイズを求めることは、データベースにクエリすることを含む。
【００１４】
データの組に関連付けられた特徴は、データの組を処理するための許容時間等の、データの組に関連付けられた処理要件を含む。
【００１５】
第１のモードでは、データ処理アプリケーションのコンポーネントが、要求の受信の前にマシンコードにコンパイルされ、第２のモードでは、コンポーネントは、要求の受信の後にマシンコードにコンパイルされる。
【００１６】
第１のモードでは、１つまたは複数の実行プロセスが連続して実行され、第２のモードでは、１つまたは複数の新たなプロセスのうちの少なくともいくつかが同時に実行される。
【００１７】
通常の態様において、コンピューティング可読媒体上にソフトウェアが記憶され、このソフトウェアは、コンピューティングシステムに、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することと、データの組に関連付けられた特徴に基づいて、（ｉ）データ処理アプリケーションの１つまたは複数の実行プロセスを用いてデータの組を処理する第１のモードと、（２）データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間で選択することと、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させることと、を行わせるための命令を含む。
【００１８】
通常の態様では、コンピュータシステムが少なくとも１つのプロセッサを備え、このプロセッサは、データ処理アプリケーションを用いてデータの組を処理することの要求を受信し、データの組に関連付けられた特徴に基づいて、（ｉ）データ処理アプリケーションの１つまたは複数の実行プロセスを用いてデータの組を処理する第１のモードと、（２）データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間で選択し、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させるように構成される。一態様では、本明細書に記載される方法によって実行される動作は、コンピューティングシステム、および／またはコンピュータ可読媒体に記憶されたソフトウェアによって実行することができる。
【００１９】
通常の態様では、コンピューティングシステムが、データ処理アプリケーションを用いてデータの組を処理することの要求を受信するための手段と、データの組に関連付けられた特徴に基づいて、（ｉ）データ処理アプリケーションの１つまたは複数の実行プロセスを用いてデータの組を処理する第１のモードと、（２）データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間で選択するための手段と、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させるための手段と、を備える。
【００２０】
通常の態様では、方法が、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することと、データの組のサイズに基づいて、データ処理アプリケーションの複数の動作モードから、特定の動作モードを特定することと、特定の動作モードに従ってデータ処理アプリケーションを実行してデータの組を処理することと、を含む。
【００２１】
実施形態は、以下の特徴のうちの１つまたは複数を含むことができる。
【００２２】
特定の動作モードを特定することは、バッチ処理モードまたは連続処理モードを選択することを含む。特定の動作モードを特定することは、データの組のサイズが閾値サイズを超えているときに、バッチ処理モードを選択することと、データの組のサイズが閾値サイズ未満であるときに、連続処理モードを選択することとを含む。
【００２３】
この方法は、データの組のサイズを求めることを含む。データの組はファイルを含み、データの組のサイズを求めることは、ファイルのサイズを求めることを含む。データの組は、データベースに記憶されたデータを含み、データの組のサイズを求めることは、データベースにクエリすることを含む。
【００２４】
特定の動作モードを特定することは、データの組のサイズが閾値サイズを超えているか否かを判断することを含む。閾値サイズは、データの組のフォーマットまたはデータの組に関連付けられた処理要件に基づく。処理要件は、データの組を処理するための許容時間を含む。本方法は、閾値サイズを求めることを含む。本方法は、データ処理アプリケーションの動作を示す履歴データに基づいて閾値サイズを求めることを含む。本方法は、閾値サイズを動的に求めることを含む。
【００２５】
データ処理アプリケーションは、少なくとも１つの計算グラフを含む。計算グラフは、バッチ処理モードまたは連続処理モードにおいて実行することができる。
【００２６】
態様は、以下の利点のうちの１つまたは複数を含むことができる。
【００２７】
データ処理アプリケーションの動作モードを動的に決定する手法によって、単一のアプリケーションが、データの大きな組およびデータの小さな組の双方を柔軟な方式で効率的に処理することが可能になる。例えば、ほとんどの要求がデータの小さな組を含み、不定期に生じる要求のみがデータの大きな組を含む状況において、同じ処理フレームワークによって双方のタイプの要求を効率的に処理することができる。更に、データ処理アプリケーションは、その動作モードに関わらず、同じアルゴリズムおよび同じコードを用いるので、データ処理アプリケーションの設計および編集を簡略化することができ、これによってコスト、開発努力、および研究、開発またはロジスティクス等の環境におけるダウンタイムが低減する。
【００２８】
本発明の他の特徴および利点は、以下の説明および以下の特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【００２９】
【図１】データ処理システムのブロック図である。
【図２】データ処理アプリケーションのための処理フレームワークのブロック図である。
【図３】ルックアップテーブルの例である。
【図４】フローチャートである。
【図５】処理フレームワークのブロック図である。
【図６Ａ】データ処理アプリケーションのブロック図である。
【図６Ｂ】図６Ａのデータ処理アプリケーションの一部分のスクリーンショットである。
【図６Ｃ】図６Ａのデータ処理アプリケーションの一部分のスクリーンショットである。
【発明を実施するための形態】
【００３０】
ここで、データ処理アプリケーションの動作モードを動的に決定する手法を記載する。データの特性、データの処理に関連付けられた要件等の、処理されるデータの特徴に依拠して、データの組を処理するように実行可能なデータ処理アプリケーションを、複数のモードにおいて実行することができる。実行モードは、データ処理アプリケーションを実行するコンピューティングシステムに関連付けられた動作特性にも依拠することができる。例えば、データの大きな組を処理するためにバッチ処理モードを用いることができ、データのより小さな組を処理するために、最小起動時間を有する連続処理モードを用いることができる。データ処理アプリケーションの動作モードは、例えば、データ処理アプリケーションによってデータの組を処理することの要求が受信されるときに、動的に選択することができる。
【００３１】
図１は、データ処理アプリケーションの動作モードを動的に決定するための技法を用いることができるデータ処理システム１００の例を示す。システム１００は、ストレージデバイス等の１つもしくは複数のデータソース、またはオンラインデータストリームへの接続を含むことができるデータソース１０２を含む。これらは各々、様々なフォーマット（例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、またはメインフレームコンピュータによって用いられるネイティブフォーマット）のうちの任意のフォーマットでデータを記憶または提供することができる。データは、ロジスティックデータ、解析データまたは機械データとすることができる。実行環境１０４は、前処理モジュール１０６および実行モジュール１１２を含む。実行環境１０４は、例えば、ＵＮＩＸオペレーティングシステムのバージョン等の適切なオペレーティングシステムの制御下で、１つまたは複数の汎用コンピュータにおいてホスティングすることができる。例えば、実行環境１０４は、ローカル（例えば、対称型マルチプロセッシング（SMP：symmetric multi-processing）コンピュータ等のマルチプロセッサシステム）もしくはローカル分散型（例えば、クラスタまたは超並列処理（MPP：massively parallel processing）システムとして結合された複数のプロセッサ）、またはリモートもしくはリモート分散型（例えば、ローカルエリアネットワーク（LAN）および／またはワイドエリアネットワーク（WAN）を介して結合された複数のプロセッサ）、またはそれらの組合せである、複数の中央処理ユニット（CPU）またはプロセッサコアを用いたコンピュータシステムの構成を含む、複数ノード並列演算環境を含むことができる。
【００３２】
データソース１０２を提供するストレージデバイスは、実行環境１０４にローカルとし、例えば、実行環境１０４をホスティングするコンピュータに接続されたストレージ媒体（例えば、ハードドライブ１０８）に記憶することもできるし、実行環境１０４に対しリモートとし、例えば、リモート接続（例えば、クラウドコンピューティングインフラストラクチャによって提供される）を介して、実行環境１０４をホスティングするコンピュータと通信するリモートシステム（例えば、メインフレームコンピュータ１１０）においてホスティングすることもできる。
【００３３】
前処理モジュール１０６は、データソース１０２からデータを読み出し、データ処理アプリケーションを実行のために準備する。例えば、前処理モジュール１０６は、データ処理アプリケーションをコンパイルし、コンパイルされたデータ処理アプリケーションを、実行環境１０４がアクセス可能なデータストレージシステム１１６に記憶し、および／またはコンパイルされたデータ処理アプリケーションをそのデータストレージシステム１１６からロードし、データ処理アプリケーションを実行のために準備するための他のタスクを実行する。
【００３４】
実行モジュール１１２は、前処理モジュール１０６によって準備されたデータ処理アプリケーションを実行し、データの組を処理し、処理の結果得られる出力データ１１４を生成する。出力データ１１４は、実行環境１０４がアクセス可能なデータソース１０２またはデータストレージシステム１１６に戻して記憶されてもよく、さもなければ用いられてもよい。開発環境１１８もデータストレージシステム１１６にアクセス可能である。開発環境１１８では、開発者１２０が、実行モジュール１１２によって実行されるデータ処理アプリケーションを設計および編集することができる。いくつかの実施態様では、開発環境１１８は、頂点間の有向リンク（作業要素、すなわちデータのフローを表す）によって接続された頂点（データ処理コンポーネントまたはデータセットを表す）を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。例えば、そのような環境は、参照により本明細書に援用される「Ｍａｎａｇｉｎｇ  Ｐｒａｍｅｔｅｒｓ  ｆｏｒ  Ｇｒａｐｈ−Ｂａｓｅｄ  Ａｐｐｌｉｃａｔｉｏｎｓ」と題する米国特許出願公開第２００７／００１１６６８号により詳細に記載されている。そのようなグラフベースの計算を実行するためのシステムは、その内容が参照により全体として本明細書に援用される「ＥＸＥＣＵＴＩＮＧ  ＣＯＭＰＵＴＡＴＩＯＮＳ  ＥＸＰＲＥＳＳＥＤ  ＡＳ  ＧＲＡＰＨＳ」と題する米国特許第５，９６６，０７２号に記載されている。このシステムに従って作成されるデータフローグラフは、プロセス間で情報を動かすために、また、プロセスの実行順序を定義するために、グラフコンポーネントによって表される個々のプロセスに対し情報を出し入れするための方法を提供する。このシステムは、利用可能な任意の方法（例えば、グラフのリンクに従う通信経路は、プロセス間でデータを渡すために、TCP／IPもしくはUNIXドメインソケットを用いるか、または共有メモリを用いることができる）からプロセス間通信方法を選択するアルゴリズムを含む。
【００３５】
前処理モジュール１０６は、様々な形態のデータベースシステムを含むデータソース１０２を実現することができる様々なタイプのシステムからデータを受信することができる。データは、場合によってはヌルの値を含む、それぞれのフィールド（「属性」または「列」とも呼ばれる）のための値を有するレコードとして編成することができる。データソースから最初にデータを読み出すとき、前処理モジュール１０６は、通常、データソース内のレコードに関する何らかの初期フォーマット情報から開始する。いくつかの状況では、データソースのレコード構造は、最初に知られていない場合があり、代わりに、データソースまたはデータの解析後に決定されてもよい。レコードに関する初期情報は、例えば、別個の値を表すビット数、レコード内のフィールドの順序、ビットによって表される値のタイプ（例えば、文字列、符号付き／符号なし整数）を含むことができる。
【００３６】
図２を参照すると、いくつかの例では、実行モジュール１１２は、データ処理アプリケーション２００へのインタフェースとしての役割を果たす処理フレームワーク１０を実行する。データ処理アプリケーション２００は、ファイル２０２、データベース２０４、または別のタイプのデータソース等のデータソースからのデータを処理する任意の実行可能なアプリケーションとすることができる。例えば、データ処理アプリケーション２００は、電話取引データを記録するアプリケーション、要求されたクレジットカード取引データを取得するアプリケーション、または別のタイプのアプリケーションとすることができる。いくつかの例では、データ処理アプリケーション２００は、データフローグラフとして実施することができる。処理フレームワーク１０は、データ処理アプリケーション２００にインタフェースすることができるが、特定のデータ処理アプリケーション２００の特質に依存しない１つまたは複数の計算コンポーネントの組である。処理フレームワーク１０は再利用可能であり得る。すなわち、例えば、処理フレームワーク１０の同じコンポーネントを、異なるデータ処理アプリケーション２００とインタフェースするのに用いることができる。
【００３７】
いくつかの実施態様では、処理フレームワーク１０は、特定のデータベース２０４から特定のファイル２０２またはあるレコード等のデータの特定の組を処理することの要求２０８を受信するインタフェースブロック２０６を含む。要求２０８は、人物または自動コンピューティングシステム等の要求者２１０によって送信することができる。いくつかの例では、要求２０８は、処理待ちの１つまたは複数の要求を記憶するキュー２０９から受信することができる。要求２０８は、データの組について実行されることになるジョブのタイプに関する情報（例えば、データ処理アプリケーション２００の識別子）およびデータの組のソースに関する情報（例えば、ファイル２０２またはデータベース２０４の識別子）を含むことができる。
【００３８】
いくつかの例では、処理されるデータの組はインバウンドフィードであり、要求２０８がデータの組を含むかまたは直接特定することを意味する（例えば、要求２０８は、ファイル２０２のパスまたはファイル名を含むことができる）。インバウンドフィードの例は、要求２０８により提供される支払いファイルである。支払いファイルは、複数の顧客のクレジットカードアクティブティを示すデータを含み、データ処理アプリケーション２００に提供され、検証され、マッピングされ、データベーステーブルにロードされる。いくつかの例では、処理されることになるデータの組は、アウトバウンドフィードであり、要求２０８が、データベース２０４からデータ処理アプリケーション２００によって取り出されるデータを特定することを意味する。例えば、要求２０８は、データ処理アプリケーション２００によって、データベース２０４に適用されるクエリを生成するのに用いることができる情報を含むことができる。アウトバウンドフィードの１つの例は、個々のクレジットカード顧客の、１０月の月間の自身のクレジットカード取引を閲覧することの要求を満たすデータの組である。アウトバウンドフィードの別の例は、自動会計システムからの、２０１３年の第２四半期の間のＳｈｏｐｐｉｎｇ  Ｗｏｒｌｄデパートメントストアにおける全ての販売取引の要求を満たすデータの組である。
【００３９】
要求２０８に応答してデータの組を処理するために、データ処理アプリケーション２００は、任意の複数の動作モード（例えば、バッチモード２１４または連続モード２１６）において実行することができる。処理フレームワーク１０の判定ブロック２１２は、データの特定の組（例えば、特定のファイル２０２またはデータベース２０４からのデータ）を処理するためにデータ処理アプリケーション２００によって用いられる動作モードを選択することができる。例えば、判定ブロック２１２は、データの組の１つまたは複数の特徴に基づいて、データ処理アプリケーション２００の動作モードを選択することができる。データの組の特徴は、例えば、データの組の特性、またはデータの組の処理に関連付けられた要件を含むことができる。データの組の例示的な特性は、例えば、データの組のサイズ（例えば、データの組の量、データの組内のレコード数、データの組の複雑度等）、データの組のフォーマット（例えば、ファイル２０２のファイルフォーマットまたはデータベース２０４におけるレコードのレコードフォーマット）、データの組の複雑度（例えば、データの組に関連付けられたベクトルまたはサブベクトル）、および／またはデータの組の他の特性を含む。例えば、１つの例では、データ処理アプリケーション２００は、バッチモード２１４において、大きなデータ量を処理するように動作することができ、連続モード２１６において、小さなデータ量を処理するように動作することができる。データの組の処理に関連付けられた例示的な要件は、データの組の処理に割り当てられた時間量を含む。いくつかの例では、判定ブロック２１２は、時刻、曜日、システムの容量（例えば、リアルタイムの容量、予測される容量または平均容量）または別の動作特性等の、データ処理アプリケーション２００を実行するコンピューティングシステムに関連付けられる１つまたは複数の動作特性に基づいてデータ処理アプリケーション２００の動作モードを選択することができる。
【００４０】
データ処理アプリケーションをバッチモード２１４で動作させることによって、データ処理アプリケーション２００は、起動時間が比較的長いというコストを伴うが迅速に大量のデータを処理することが可能になる。連続モード２１６において動作するとき、データ処理アプリケーション２００は起動時間をほとんど有しないが、処理データをそれほど迅速に処理しない。すなわち、以下でより詳細に説明するように、連続モード２１６において動作するとき、データ処理アプリケーションが実行中であり、コンパイルおよびロード等の起動プロセスは、データを処理するために実行される必要がない。データ処理アプリケーション２００によって実施される同じデータ処理アルゴリズムは、バッチモードまたは連続モードのいずれでも実行することができる。
【００４１】
いくつかの例では、判定ブロック２１２は、処理されるデータの組のサイズ（例えば、ファイル２０２のサイズ、またはクエリに応答してデータベース２０４から取得されることになるレコードのサイズ）を評価して、このサイズを、データ処理アプリケーション２００の閾値サイズと比較することができる。データの組のサイズが閾値サイズよりも大きい場合、判定ブロック２１２は、バッチモード２１４においてデータ処理アプリケーション２００を実行するためのコマンド２１３を送信することができる。データの組のサイズが閾値サイズ未満である場合、コマンド２１３によって、データ処理アプリケーション２００は連続モード２１６で実行されることになる。データ（例えば、ファイル２０２またはデータベース２０４からのレコード）は、データ処理アプリケーション２００において受信され、コマンド２１３によって指定されるモードに従って処理される。
【００４２】
閾値サイズは、データの組の１つまたは複数の特徴に依拠することができる。例えば、いくつかの例では、閾値サイズは、ファイル２０２のファイルフォーマットまたはデータベース２０４内のレコードのレコードフォーマット等のデータの組のフォーマットに依拠することができる。すなわち、例えば、各ファイルフォーマットまたはレコードフォーマットは、関連付けられた閾値サイズを有することができる。例えば、第１のデータベースは、多数のフィールド（例えば、sale_priceフィールドを含む５０個のフィールド）を有する販売取引レコードを含むことができるのに対し、第２のデータベースは、小さな数のフィールド（例えば、sale_priceフィールドを含む５つのフィールド）を有する販売取引レコードを含む。任意のレコードのｓａｌｅ＿ｐｒｉｃｅフィールドに対してのみ動作するデータ処理アプリケーション２００の場合、レコードの絶対サイズは処理されることになるレコード数よりも重要性が低い。すなわち、第１のデータベースのレコードは、第２のデータベースのレコードよりも１０倍大きいので、第１のデータベースのレコードのための閾値サイズは、第２のデータベースのレコードのための閾値サイズの約１０倍とすることができる。
【００４３】
いくつかの例では、閾値サイズは、データの組の処理に関連付けられた要件に依拠することができる。例えば、データがデータ処理アプリケーション２００を用いて処理されるクライアント（例えば、クレジットカード会社）は、そのクライアントのデータのための契約処理時間を指定するデータ処理アプリケーション２００のプロバイダーと、サービスレベル合意（SLA）等の合意を有することができる。いくつかの例では、クライアントは、処理されるデータの複数のサイズの各々について、契約処理時間を指定するティアードＳＬＡを有することができる。例えば、ティアードＳＬＡは、１００，０００個未満の取引を表すデータの組が１０秒以内に処理され、１００，０００個〜１百万個の取引を表すデータの組が３分以内に処理され、１百万個〜１千万個の取引を表すデータの組が３０分以内に処理されることを指定することができる。特定のクライアントのＳＬＡによって指定される処理時間を用いて、そのクライアントのための閾値サイズを決定することができる。例えば、閾値サイズは、クライアントのＳＬＡが満たされることを可能にするように（例えば、SLAを満たすために、データ処理アプリケーションの連続モード実行によって、データの組のどれだけ多くを処理することができるかに基づいて）設定することができる。
【００４４】
いくつかの例では、閾値サイズは、データ処理アプリケーション２００を実行するコンピューティングシステムに関連付けられた動作特性に依拠することができる。例えば、閾値サイズは、バッチモード２１４および連続モード２１６におけるデータ処理アプリケーション２００の性能を示す履歴データに基づくことができる。閾値サイズは、データ処理アプリケーション２００の進行中の性能を示すリアルタイムデータに基づくことができる。例えば、１つの例では、リアルタイムデータが、連続モード２１６のデータ処理アプリケーション２００が基準レート（例えば、履歴平均レート）よりも低速に実行されていることを示す場合、閾値サイズは、データのより多くの組をバッチモード処理２１４にシフトするように動的に減少させることができる。リアルタイムデータが、バッチモード２１４のデータ処理アプリケーション２００が基準レート（例えば、履歴平均レート）よりも低速で実行されていることを示す場合、閾値サイズは動的に増大させることができる。１つの例において、リアルタイムデータが、データ処理アプリケーション２００を実行しているコンピューティングシステムが通常よりも少ない容量を有することを示す場合、閾値サイズを、コンピューティングシステムの低減された容量に対し調整するように動的に変更することができる。
【００４５】
いくつかの例では、閾値ブロック２１８は、閾値データベース２２０において、例えば閾値データベースのルックアップテーブルにおいて、特定のクライアントのための特定のデータ処理アプリケーションによって処理されるデータの特定の組のための閾値サイズをルックアップすることができる。例えば、閾値データベース２２０は、特定のデータ処理アプリケーションのためのルックアップテーブルを含むことができ、ここで、ルックアップテーブルは、様々なデータフォーマットおよび様々なクライアントについて閾値サイズを示すレコードを含む。
【００４６】
図３は、閾値データベース２２０内のルックアップテーブル３０の例の一部を示す。ルックアップテーブル３０内の各エントリ３２は、特定のデータフォーマット３４および特定のクライアント３６のための閾値サイズを表す。クライアント３６が、特定のサイズのデータを処理するための１つまたは複数の契約処理時間を指定するＳＬＡ等の合意を有する場合、閾値時間は、クライアントの合意を反映することができる。クライアン３６が合意を有しない場合、デフォルト閾値サイズを用いることができる。図３の例において、クライアントＡＢＣ  Ｃｏｒｐ．およびＴｈｅ  Ｃｒｅｄｉｔ  Ｃｏ．が共通のデフォルト閾値サイズを共有している。クライアントＳｍｉｔｈ’ｓは、より高速な契約処理時間を提供するＳＬＡ等の合意を有し、このため、Ｓｍｉｔｈ’ｓのデータの処理が、より少ない時間で完了することを要求する。Ｓｍｉｔｈ’ｓのＳＬＡを満たすために、Ｓｍｉｔｈ’ｓのデータの閾値サイズがより大きく、これによって、データのより大きな組が連続モードで処理されることを可能にする。
【００４７】
いくつかの例では、所与のデータ処理アプリケーション、データフォーマットおよび／またはクライアントのための閾値サイズがユーザ、例えばシステムオペレータによって指定される。いくつかの例では、閾値サイズは、閾値ブロック２１８によって決定される。例えば、閾値ブロック２１８は、バッチモード２１４における処理時間が、連続モード２１６における処理時間と等しいかまたはそれよりも高速であるデータの組のサイズを特定することによって、特定のデータ処理アプリケーション２００および特定のデータフォーマットのためのデフォルト閾値サイズを決定することができる。処理時間に関してクライアント固有の合意を組み込むために、閾値ブロック２１８は、バッチモード２１４および／または連続モード２１６によって契約時間量で処理することができるデータセットのサイズを決定することができる。いくつかの例では、閾値ブロック２１８は、バッチモード２１４および連続モード２１６におけるデータ処理アプリケーション２００の性能を示す履歴データに基づいて、デフォルト閾値サイズまたはクライアント固有の閾値サイズ等の閾値サイズを決定することができる。
【００４８】
いくつかの例では、閾値ブロック２１８は、例えば、データ処理アプリケーション２００の進行中の性能を示すリアルタイムデータに基づいて、閾値サイズを動的に決定することができる。例えば、１つの例では、リアルタイムデータが、連続モード２１６のデータ処理アプリケーション２００がその履歴平均よりも低速に実行されていることを示す場合、閾値ブロック２１８は、データのより多くの組をバッチモード処理２１４にシフトするように、閾値サイズを動的に減少させることができる。１つの例では、リアルタイムデータが、データ処理アプリケーション２００を実行するコンピューティングシステムが通常よりも低い容量を有することを示す場合、閾値ブロック２１８は、コンピューティングシステムの低減された容量に対し調整するように閾値サイズを動的に変更することができる。
【００４９】
上記で言及したように、データ処理アプリケーション２００のバッチモード動作２１４は、より大きなデータの組を処理するために選択することができる。バッチモードとは、データ処理アプリケーション２００が、データの組を処理することの要求を受信した後に起動される（例えば、コンパイルされ、新たなプロセスとして立ち上げられる）ことを意味する。新たなプロセスは、データを処理することの要求が受信された後にコンパイルされ、メモリにロードされるプロセスである。いくつかの例では、バッチモードのデータ処理アプリケーションは、データの組全体を処理した後に終了することができる。いくつかの例では、バッチモード処理において、データ処理アプリケーションがコンパイルされ、立ち上げられると、データ処理アプリケーションの複数のプロセスを同時に実行することができる。通常、バッチモード動作２１４は、連続モード動作よりも長い起動時間を伴い（以下で論考する）、これによって、小さなデータ量のみを処理するとき、バッチモード動作は連続モードよりも効率的でないものとなり得る。一方、データ処理アプリケーション２００がバッチモード２１４で立ち上げられると、データ処理アプリケーション２００はデータを迅速かつ効率的に処理することができる。
【００５０】
例えば、バッチモード２１４において実行されるとき、データ処理アプリケーション２００は、データの組の第１の項目が、データ処理アプリケーションによる処理の準備ができたときに、新たなプロセスとして起動する。起動タスクは、データ処理アプリケーションのコンポーネントをコンパイルおよびロードし、コンパイルおよびロードされたデータ処理アプリケーションを処理フレームワーク１０に統合することを含む。起動タスクが完了すると、データ処理アプリケーションに関連付けられた複数の処理を、１つまたは複数のコンピューティングデバイスにおいて同時に実行することができ、これにより、バッチモードデータ処理アプリケーションが、大きなデータ量を効率的に処理することが可能になる。処理が完了すると、データ処理アプリケーション２００の動作が終了する。すなわち、データ処理アプリケーションをバッチモード２１４で動作させるために、データ処理アプリケーションは、データの別個の組を処理する新たなプロセスとして起動され、プロセスが完了すると終了する。
【００５１】
コンパイルは、データ処理アプリケーション２００等のコンピュータプログラムがコンピュータによって実行されるように準備されるプロセスである。コンパイルの結果として、マシンコード、コンピュータにおける実行の準備ができた命令、および／またはコンピュータ上で実行される仮想マシンによって実行される中間コード（例えば、Javaバイトコード）が生成される。データ処理アプリケーション２００をコンパイルし、データ処理アプリケーション２００を実行のために準備するプロセスは、様々な段階を含む。データ処理アプリケーション２００のコンパイルされていない表現は、コンパイルプロセスにおいて用いられる値を提供する任意の関連付けられたパラメータと共にデータストレージから（例えば、データストレージシステム１１６から）から取得される。例示的なパラメータは、例えば、データ処理アプリケーション２００を実行するコンピューティングデバイス名、データ処理アプリケーション２００の結果が出力されるディレクトリ、結果を書き込むファイルのファイル名、および他のパラメータ等の情報を含む。スタティックパラメータ解決フェーズ中、スタティックパラメータ（その値は実行時間前に解決のために指定されている）が解決され、解決された値がスタティックパラメータに結合される。いくつかのパラメータは、コンパイル中に未解決のままであり、後に、例えば実行時間直前に解決される、ダイナミックパラメータとして指定することができる。いくつかの例では、未解決パラメータは、実行時に、バッチモードのデータ処理アプリケーション２００によってファイルから読み出される。コンパイルフェーズ中、データ処理アプリケーション２００を表すデータ構造が、データ処理アプリケーション２００の実行中に使用するために生成される。コンパイルは、記述言語での埋め込まれたスクリプトをバイトコードまたはマシンコードにコンパイルすることも含むことができる。実行時に、データ処理アプリケーション２００に関連付けられた任意のダイナミックパラメータが、解決された値に結合される。コンパイルされたデータ処理アプリケーション２００のデータ構造は、１つまたは複数のプロセスを始動し、任意の必要なファイルを開き、および／またはダイナミックライブラリをリンク付けすることによって立ち上げられる。例えば、共有メモリを配分するか、またはＴＣＰ／ＩＰストリームを開くことによって、データ処理アプリケーション２００を通じたデータフローもセットアップすることができる。
【００５２】
バッチモードデータ処理アプリケーション２００がコンパイルおよびロードされると、データの組を比較的迅速に処理することができる。一方、データの組が小さい場合、データ処理アプリケーション２００のコンパイル、データ処理アプリケーション２００のロード、およびデータ処理アプリケーション２００の実行の準備（まとめて起動時間と呼ばれる）に伴う時間が、データ処理アプリケーション２００の実行時間を占める可能性がある。すなわち、バッチモードのデータ処理アプリケーション２００によって少ないデータ量しか処理されない場合、起動時間は、処理時間と同等であるか更には処理時間を超える可能性がある。例えば、バッチモードのデータ処理アプリケーション２００の起動時間が約５秒であり、データの小さな組のための処理時間が約５秒の場合、総経過時間の半分のみが、データの組を実際に処理するために用いられる。このため、比較的長い起動時間によって、バッチモード２１４におけるデータ処理アプリケーション２００の実行が、データの小さな組を処理するために比較的非効率的となる。
【００５３】
長い起動時間の非効率性を回避するために、データの小さな組を、データ処理アプリケーション２００によって連続モード２１６で処理することができる。連続モードとは、データ処理アプリケーション２００が、処理のためのデータを受信する前にコンパイル、ロードおよび初期化されることを意味する。場合によっては、処理のためのデータを受信する前にコンパイル、ロードおよび初期化されるデータ処理アプリケーションを、実行プロセスと呼ぶ。プロセスは、データをアクティブに処理していない場合、例えば、プロセスによって処理するための入力データが存在しないことに起因して、プロセスがスタンバイ状態にある場合であっても、実行プロセスとみなされ得る。いくつかの例では、連続モードプロセスは、データを処理するときに連続して実行することができる。連続モード２１６において、バッチモードのデータ処理アプリケーション２００の起動中に実行されるタスクのうちのいくつかは、代わりに、データの全ての組について行われるわけではない、より早期のコンパイルフェーズにおいて実行される。そうではなく、連続モード２１６において実行されるとき、データ処理アプリケーション２００は、処理のためのデータを受信する前にコンパイル、ロードおよび初期化される。すなわち、例えば、連続モード２１６において、データ処理アプリケーション２００は、コンピューティングデバイスにおいて連続してアクティブであり、処理のための要求が受信されるとすぐにデータの処理を開始することができる。このため、データ処理アプリケーションのコンパイル、ロードおよび準備に関連付けられた起動時間は、データの各個々の組に適用されず、データの小さな組がより効率的に処理されることが可能になる。連続モードのデータ処理アプリケーション２００が、そのデータの組に適したパラメータに従ってデータの特定の組を処理することを確実にするために、パラメータは、データの組を処理することの要求と共に、連続モードのデータ処理アプリケーション２００に渡される。
【００５４】
いくつかの例では、連続モード２１６で実行するために、データ処理アプリケーション２００は、処理フレーム１０にダイナミックにロードする（そして処理フレーム１０からダイナミックにアンロードする）ことができる１つまたは複数の「マイクログラフ」として実装することができる。マイクログラフは、データストレージシステム（例えば、データストレージシステム１１６）において、コンパイルされた形式で記憶された、事前にコンパイルされたデータフローグラフである。コンパイルされたマイクログラフは、マイクログラフのコンポーネントを表すデータ構造と、マイクログラフが処理フレームワーク１０に統合されることを可能にするリンクとを含む。例えば、コマンド２０８がデータ処理アプリケーション２００に連続モード２１６で実行するように命令するときに、コンパイルされたマイクログラフを動的に取得し、処理フレームワーク１０にリアルタイムで直接埋め込むことができる。マイクログラフは、その内容が参照により全体として本明細書に援用される、２０１１年６月１５日に出願された米国特許出願第１３／１６１，０１０号により詳細に記載されている。
【００５５】
例えば、マイクログラフの迅速なロードを達成するために、マイクログラフは、データストレージシステム１１６に記憶する前にシリアル化することができる。シリアル化は、コンパイルされたデータ処理アプリケーション２００が０および１のバイナリストリームに変換されるプロセスであり、それによって、データ処理アプリケーション２００は、永続メモリまたはメモリバッファに容易に記憶することができる形態になる。シリアル化されたマイクログラフを容易に取得することができ、そのデータ構造を実行時にシリアル化解除し、動的にロードすることができ、これによって、マイクログラフの迅速なロードが可能になる。
【００５６】
いくつかの例では、データの組を処理するためにデータ処理アプリケーション２００を連続モード２１６で実行するコマンド２０８が受信されるとき、事前コンパイルされたマイクログラフがロードされ、処理フレームワーク１０に統合される。いくつかの例では、データの組の処理が完了すると、マイクログラフを処理フレームワーク１０から切り離し、アンロードすることができる。いくつかの例では、マイクログラフを処理フレームワーク１０から切り離すことができるが、メモリ内にロードされたままにすることができ（例えば、キャッシングメカニズムを用いる）、それによって、切り離されたマイクログラフを、後の時点で（例えば、データの後続の組を処理するコマンドが受信されるときに）、マイクログラフをリロードすることなく、処理フレームワーク１０に迅速に再統合することができる。
【００５７】
データ処理アプリケーション２００のための適切な動作モードを選択する際の遅延を回避するために、判定ブロック２１２自体を連続モードで、例えばマイクログラフとして実施することができる。
【００５８】
いくつかの例では、データ処理アプリケーションは、例えば、データ処理アプリケーションを通じたデータフローに対する制御の手段を可能にするために、単一のマイクログラフの複数のコピーを実施することができる。例えば、データ処理アプリケーション２００によって処理されるデータの組を、ラウンドロビン手法、利用が最も少ないマイクログラフの選択、または別のアルゴリズム等の負荷分散アルゴリズムに従って、２つ以上のマイクログラフの組間で分割することができる。
【００５９】
いくつかの例では、データ処理アプリケーション２００をシリアルバッチモードで実行することができる。シリアルバッチモードでは、データの大きな組が、データ処理アプリケーション２００によって連続して処理される複数のグループに分割される。例えば、シリアルバッチモードで実行されるとき、データ処理アプリケーション２００は、一度にコンパイルされ、連続して実行されて、データの複数のグループを処理することができる。いくつかの例では、データ処理アプリケーション２００をパラレルバッチモードで実行することができる。パラレルバッチモードでは、データの大きな組が、並列に実行される複数の同一のデータ処理アプリケーションによって同時に処理される複数のグループに分割される。
【００６０】
図４を参照すると、一般的な手法において、データ処理アプリケーションを用いてデータの組を処理することの要求が受信される（４００）。いくつかの例では、要求は、データ処理アプリケーションによって処理されるファイル等のデータの組を含むことができる（インバウンドフィード）。例えば、要求２０８はファイル２０２を含むことができる。いくつかの例では、要求は、データベースからデータ処理アプリケーションによって取得されるデータを特定することができる（アウトバウンドフィード）。
【００６１】
データの組のサイズが決定または推定される（４０２）。インバウンドフィード（例えば、ファイル）の場合、データの組のサイズは、ファイルのサイズであり、例えば、ファイルに関係付けられたプロパティにアクセスすることによって求めることができる。例えば、インバウンドフィードが、データベースに追加されるクレジットカード取引レコードを含む支払いファイルである場合、データの組のサイズは支払いファイルのサイズである。アウトバウンドフィード（例えば、データベースから取得されるデータ）の場合、データの組のサイズは、クエリに応答してデータベースから取得されるレコードのサイズである。いくつかの例では、アウトバウンドフィードのサイズは、例えば、クエリを満たす最初の１００個のレコードを要求することによって、データベースを事前にクエリすることによって求めることができる。データベースが最初の１００個のレコードを迅速に返す場合、アウトバウンドフィードのために小さなサイズを推定することができる。データベースが最初の１００個のレコードを低速に返すかまたは全く返さない場合、アウトバウンドフィードのために大きなサイズを推定することができる。いくつかの例では、アウトバウンドフィードのサイズは、クエリを満たすレコード数についてデータベースにクエリすることによって求めることができる。
【００６２】
例えば、様々なデータフォーマットおよび／またはデータ処理アプリケーションの様々なクライアントについて閾値サイズを一覧にするルックアップテーブルにアクセスすることによって、データの組のための閾値サイズが特定される（４０４）。閾値サイズは、データの組のサイズ（例えば、データの組の量、データの組のレコード数、データの組の複雑度等）、データの組のフォーマット（例えば、ファイル２０２のファイルフォーマットまたはデータベース２０４内のレコードのレコードフォーマット）、データの組の複雑度（例えば、データの組に関連付けられたベクトルまたはサブベクトル）、および／またはデータの組の他の特性等のデータの組の特性に基づくことができる。閾値サイズは、データの組を処理するために許可された時間を指定するクライアント固有の合意（例えば、SLA）等のデータの組の処理に関連付けられた要件に基づくこともできる。閾値サイズは、日付または曜日、システムの容量、または別の動作特性等の、データ処理アプリケーションを実行するコンピューティングシステムに関連付けられた動作特性に基づくことができる。
【００６３】
処理されるデータの組のサイズは、閾値サイズと比較され（４０６）、比較に基づいてデータ処理アプリケーションの動作モードが選択される。例えば、データの組のサイズが閾値サイズよりも大きい場合、バッチモード処理が選択される（４０８）。データの組のサイズが閾値サイズと等しいかまたはそれよりも小さい場合、連続モード処理が選択される（４１０）。
【００６４】
データの組を処理するための選択された動作モードに従って、データ処理アプリケーションが実行される（４１２）。例えば、バッチモード処理の場合、データの組を処理する前に、データ処理アプリケーションのバッチモード実施がコンパイルされ、ロードされ、その処理フレームワークに統合される。連続モード処理の場合、事前にコンパイルされたデータ処理アプリケーション（例えば、事前にコンパイルされたマイクログラフ）が動的にロードされ、データの組を処理するために用いられる。キュー、ファイル、データベースおよび／またはダウンストリームユーザへの表示等の処理結果がデータ処理アプリケーションからダウンストリームロケーションに出力される（４１４）。
【００６５】
図５を参照すると、処理フレームワーク１０の例示的なグラフィック表現のスクリーンショットにおいて、データの組を処理するための要求が受信され、インタフェースコンポーネント５００において読み出される。要求は、データの組について実行されることになるジョブのタイプに関する情報（例えば、データの組を処理するのに用いられるデータ処理アプリケーションの識別子）、およびデータの組のソースに関する情報（例えば、ファイルまたはデータベースの識別子）を含むことができる。いくつかの例では、要求は、インタフェースコンポーネント５００によって受信される前にキュー５０２内にキューイングされる。いくつかの例では、インタフェースコンポーネント５００は、インタフェースブロック２０６について上記で説明した機能を実行する。
【００６６】
要求は起動コンポーネント５０４によって処理され、判定コンポーネント５０６に到達する。判定コンポーネント５０６は要求を評価し、処理されるデータの組が、大きいとみなされるかまたは小さいとみなされるかを判断する。評価に基づいて、判定コンポーネント５０６は、連続コンポーネント５０９、例えばマイクログラフコンポーネント、またはバッチコンポーネント５０８にコマンドを送信する。いくつかの例では、判定コンポーネント５０６は、判定ブロック２１２について上記で説明した機能を実行する。
【００６７】
図６Ａ〜図６Ｃは、バッチモードまたは連続モードのいずれかで実行するように構成されたデータフローグラフ６００の例を示す。「ジョブファイル読み出し」コンポーネント６０２は、データフローグラフ６００を処理フレームワーク１０（図５）に統合する。例えば、「ジョブファイル読み出し」コンポーネント６０２は、データフローグラフ６００がバッチモードで実行されるかまたは連続モードで実行されるかに依拠して異なる形で実行されるサブグラフ６１０によって実施することができる。データフローグラフ６００がバッチモードで実行される場合、バッチモードデータフローグラフ６００に実行時間パラメータを渡すジョブファイル６１２を読み出すことによってグラフが開始する。連続モードにおいて、実行時間パラメータ等のジョブ情報が、「ｊｏｂ＿ｉｎｆｏ」コンポーネント６１４を介して、コンパイル、ロードおよび初期化された連続モードデータフローグラフ６００に到達する。
【００６８】
データフローグラフ６００は、１つまたは複数の処理コンポーネント６０４においてバッチモードまたは連続モードでデータを処理する。例えば、バッチモードでは、処理コンポーネント６０４は、迅速で効率的なデータ処理を提供するために同時に実行することができる複数のプロセスを含むことができる。連続モードでは、処理コンポーネント６０４は、連続して実行される複数のプロセスを含むことができる。処理が完了すると、「応答送信」コンポーネント６０６が、例えば、データフローグラフ６００の出力を適宜フォーマットし、出力を処理フレームワーク１０に送信することによって、データフローグラフ６００の出力を処理フレームワーク１０に戻して統合する。例えば、「応答送信」コンポーネント６０６は、データフローグラフ６００がバッチモードで実行されるかまたは連続モードで実行されるかに依拠して異なる形で実行されるサブグラフ６２０によって実施することができる。出力データは、データフローグラフ６００の動作モードに依拠して、キュー６２２または応答コンポーネント６２４のためのデータを準備する複製コンポーネント６２１によって処理される。データフローグラフがバッチモードにおいて実行される場合、応答（例えば、出力データ）が、キュー６２２を介して処理フレームワーク１０に返される。連続モードでは、応答が応答コンポーネント６２４を介して返される。
【００６９】
データ処理アプリケーションの動作モードを動的に決定する手法は、適切なソフトウェアを実行するコンピューティングシステムを用いて実施することができる。例えば、ソフトウェアは、各々が少なくとも１つのプロセッサ、少なくとも１つのデータストレージシステム（揮発性および／または不揮発性メモリおよび／または記憶素子を含む）、（少なくとも１つの入力デバイスまたはポートを用いて入力を受信し、少なくとも１つの出力デバイスまたはポートを用いて出力を提供するための）少なくとも１つのユーザインタフェースを含む、１つまたは複数のプログラムされたまたはプログラム可能なコンピューティングシステム（分散、クライアント／サーバまたはグリッド等の様々なアーキテクチャとすることができる）において実行される１つまたは複数のコンピュータプログラムにおける手順を含むことができる。ソフトウェアは、例えば、データフローグラフの設計、構成および実行に関係するサービスを提供する、より大きなプログラムの１つまたは複数のモジュールを含むことができる。プログラムのモジュール（例えば、データフローグラフの要素）を、データリポジトリに記憶されたデータモデルに一致するデータ構造または他の編成されたデータとして実施することができる。
【００７０】
ソフトウェアは、ＣＤ−ＲＯＭまたは他のコンピュータ可読媒体（例えば、汎用または専用コンピューティングシステムまたはデバイスによって可読）等の有形の非一時的媒体において提供されてもよく、ソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体に、ネットワークの通信媒体を介して配信（例えば、伝搬信号に符号化）されてもよい。処理のうちのいくつかまたは全てが、専用コンピュータにおいて実行されてもよく、コプロセッサもしくはフィールドプログラマブルゲートアレイ（FPGA）等の専用ハードウェアまたは専用の特定用途向け集積回路（ASIC）を用いて実行されてもよい。処理は、分散方式で実施されてもよく、分散形式では、ソフトウェアによって指定される計算の異なる部分が異なる計算要素によって実行される。各そのようなコンピュータプログラムは、好ましくは、ストレージデバイス媒体が、本明細書に記載した処理を実行するためにコンピュータによって読み出されるときに、コンピュータを構成および操作するために、汎用または専用プログラマブルコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体（例えば、ソリッドステートメモリもしくは媒体、または磁気もしくは光媒体）に記憶またはダウンロードされる。本発明のシステムは、コンピュータプログラムを用いて構成された有形の非一時的媒体として実施されるものとみなすこともでき、この場合、そのように構成された媒体は、コンピュータに、特定かつ所定の方式で、本明細書に記載した処理工程のうちの１つまたは複数を実行するように動作させる。
【００７１】
複数の実施形態を説明してきたが、上記の説明は、例示を意図しており、本発明の範囲を限定することを意図するものではないことを理解されたい。本発明の範囲は、添付の特許請求の範囲の範囲によって画定される。したがって、他の実施形態も添付の特許請求の範囲の範囲内にある。例えば、本発明の範囲から逸脱することなく様々な変更を行うことができる。更に、上記で説明した工程のうちのいくつかは、順序にとらわれず、このため記載したものと異なる順序で実行することができる。
【００７２】
例えば、上記で説明した特徴に加えて、またはそれに代えて、以下の実施形態が説明される。
【００７３】
実施形態１は、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することと、データの組に関連付けられた特徴に基づいて、（ｉ）データ処理アプリケーションの１つまたは複数の実行プロセスを用いてデータの組を処理する第１のモードと、（２）データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間で選択することと、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させることと、を含む方法を対象とする。
【００７４】
実施形態２は実施形態１を対象とし、データの組を処理することの要求を受信する前に、１つまたは複数の実行プロセスがコンパイルされ、メモリにロードされる。
【００７５】
実施形態３は、実施形態１または２を対象とし、１つまたは複数の実行プロセスは、データの組を処理することの要求を受信する前にスタンバイモードにある。
【００７６】
実施形態４は、実施形態１〜３のいずれかを対象とし、第２のモードが選択されるとき、データ処理アプリケーションをコンパイルし、コンパイルされたデータ処理アプリケーションをメモリにロードすることを含む。
【００７７】
実施形態５は、実施形態１〜４のいずれかを対象とし、１つまたは複数の新たなプロセスは、データの組を処理することの要求を受信する前にコンパイルもメモリにロードもされないプロセスを含む。
【００７８】
実施形態６は、実施形態１〜５のいずれかを対象とし、データの組に関連付けられた特徴は、データの組のサイズ、データの組のフォーマット、またはデータの組の複雑度のうちの１つまたは複数を含む。
【００７９】
実施形態７は、実施形態１〜６のいずれかを対象とし、第１のモードと第２のモードとの間で選択することは、データの組のサイズが閾値サイズ以下であるとき、第１のモードを選択することと、データの組のサイズが閾値サイズを超えているとき、第２のモードを選択することとを含む。
【００８０】
実施形態８は実施形態７を対象とし、閾値サイズは、データの組のフォーマットに基づき、少なくとも２つの異なるフォーマットがそれぞれ異なる閾値サイズに関連付けられる。
【００８１】
実施形態９は、実施形態７または８を対象とし、閾値サイズは、データの組に関連付けられた処理要件に基づき、少なくとも２つの異なる処理要件がそれぞれ異なる閾値サイズに関連付けられる。
【００８２】
実施形態１０は、実施形態７〜９のいずれかを対象とし、閾値サイズは、データ処理アプリケーションの動作を示す履歴データに基づく。
【００８３】
実施形態１１は、実施形態７〜１０のいずれかを対象とし、データ処理アプリケーションの実行中に閾値サイズを求めることを含む。
【００８４】
実施形態１２は、実施形態１１を対象とし、データ処理アプリケーションの実行中に閾値サイズを求めることは、第１のモードに従って実行されるデータ処理アプリケーションが、基準レートよりも低速に実行される場合、閾値サイズを減少させることと、第２のモードに従って実行されるデータ処理アプリケーションが、基準レートよりも低速に実行される場合、閾値サイズを増大させることと、を含む。
【００８５】
実施形態１３は、実施形態１〜１２のいずれかを対象とし、データの組のサイズを求めることを含む。
【００８６】
実施形態１４は、実施形態１３を対象とし、データの組はファイルを含み、データの組のサイズを求めることは、ファイルのサイズを求めることを含む。
【００８７】
実施形態１５は、実施形態１３または１４を対象とし、データの組は、データベースに記憶されたデータを含み、データの組のサイズを求めることは、データベースにクエリすることを含む。
【００８８】
実施形態１６は、実施形態１〜１５のいずれかを対象とし、データの組に関連付けられた特徴は、データの組に関連付けられた処理要件を含む。
【００８９】
実施形態１７は、実施形態１６を対象とし、処理要件は、データの組を処理するための許容時間を含む。
【００９０】
実施形態１８は、実施形態１〜１７のいずれかを対象とし、第１のモードでは、データ処理アプリケーションのコンポーネントが、要求の受信の前にマシンコードにコンパイルされ、第２のモードでは、コンポーネントは、要求の受信の後にマシンコードにコンパイルされる。
【００９１】
実施形態１９は、実施形態１〜１８のいずれかを対象とし、第１のモードでは、１つまたは複数の実行プロセスが連続して実行され、第２のモードでは、１つまたは複数の新たなプロセスのうちの少なくともいくつかが同時に実行される。
【００９２】
実施形態２０は、コンピュータ可読媒体上に記憶されるソフトウェアであって、このソフトウェアは、コンピューティングシステムに、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することと、データの組に関連付けられた特徴に基づいて、（ｉ）データ処理アプリケーションの１つまたは複数の実行プロセスを用いてデータの組を処理する第１のモードと、（２）データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間で選択することと、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させることと、を行わせるための命令を含む、ソフトウェアを対象とする。
【００９３】
実施形態２１は、コンピューティングシステムであって、データ処理アプリケーションを用いてデータの組を処理することの要求を受信し、データの組に関連付けられた特徴に基づいて、（ｉ）データ処理アプリケーションの１つまたは複数の実行プロセスを用いてデータの組を処理する第１のモードと、（２）データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間で選択し、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させるように構成された少なくとも１つのプロセッサを備える、コンピューティングシステムを対象とする。
【００９４】
実施形態２２は、コンピューティングシステムであって、データ処理アプリケーションを用いてデータの組を処理することの要求を受信するための手段と、データの組に関連付けられた特徴に基づいて、（ｉ）データ処理アプリケーションの１つまたは複数の実行プロセスを用いてデータの組を処理する第１のモードと、（２）データ処理アプリケーションの１つまたは複数の新たなプロセスが起動される第２のモードと、の間で選択するための手段と、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させるための手段と、を備える、コンピューティングシステムを対象とする。
【００９５】
実施形態２３は、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することと、データの組のサイズに基づいて、データ処理アプリケーションの複数の動作モードから、特定の動作モードを特定することと、特定の動作モードに従ってデータ処理アプリケーションを実行してデータの組を処理することと、を含む方法を対象とする。
【００９６】
実施形態２４は、実施形態２３を対象とし、特定の動作モードを特定することは、バッチ処理モードまたは連続処理モードを選択することを含む。
【００９７】
実施形態２５は、実施形態２３または２４を対象とし、特定の動作モードを特定することは、データの組のサイズが閾値サイズを超えているときに、バッチ処理モードを選択することと、データの組のサイズが閾値サイズ未満であるときに、連続処理モードを選択することとを含む。
【００９８】
実施形態２６は、実施形態２３〜２５のいずれかを対象とし、データの組のサイズを求めることを含む。
【００９９】
実施形態２７は、実施形態２６を対象とし、データの組はファイルを含み、データの組のサイズを求めることは、ファイルのサイズを求めることを含む。
【０１００】
実施形態２８は、実施形態２６または２７を対象とし、データの組は、データベースに記憶されたデータを含み、データの組のサイズを求めることは、データベースにクエリすることを含む。
【０１０１】
実施形態２９は、実施形態２３〜２８のいずれかを対象とし、特定の動作モードを特定することは、データの組のサイズが閾値サイズを超えているか否かを判断することを含む。
【０１０２】
実施形態３０は、実施形態２９を対象とし、閾値サイズは、データの組のフォーマットまたはデータの組に関連付けられた処理要件に基づく。
【０１０３】
実施形態３１は、実施形態３０を対象とし、処理要件は、データの組を処理するための許容時間を含む。
【０１０４】
実施形態３２は、実施形態２９〜３１のいずれかを対象とし、閾値サイズを求めることを含む。
【０１０５】
実施形態３３は、実施形態２９〜３２のいずれかを対象とし、データ処理アプリケーションの動作を示す履歴データに基づいて閾値サイズを求めることを含む。
【０１０６】
実施形態３４は、実施形態２９〜３３のいずれかを対象とし、閾値サイズを動的に求めることを含む。
【０１０７】
実施形態３５は、実施形態２３〜３４のいずれかを対象とし、データ処理アプリケーションは少なくとも１つの計算グラフを含む。
【０１０８】
実施形態３６は、実施形態３５を対象とし、計算グラフは、バッチ処理モードまたは連続処理モードにおいて実行することができる。
【図１】
0006573612.tif 000002
【図２】
0006573612.tif 000003
【図３】
0006573612.tif 000004
【図４】
0006573612.tif 000005
【図５】
0006573612.tif 000006
【図６Ａ】
0006573612.tif 000007
【図６Ｂ】
0006573612.tif 000008
【図６Ｃ】
0006573612.tif 000009