JP6116721B2 - グラフに基づく計算の動的ロード - Google Patents

グラフに基づく計算の動的ロード Download PDF

Info

Publication number
JP6116721B2
JP6116721B2 JP2016040815A JP2016040815A JP6116721B2 JP 6116721 B2 JP6116721 B2 JP 6116721B2 JP 2016040815 A JP2016040815 A JP 2016040815A JP 2016040815 A JP2016040815 A JP 2016040815A JP 6116721 B2 JP6116721 B2 JP 6116721B2
Authority
JP
Japan
Prior art keywords
data flow
work
compiled
flow graph
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016040815A
Other languages
English (en)
Other versions
JP2016129059A (ja
Inventor
ダーシー アターバリー,マシュー
ダーシー アターバリー,マシュー
ブロムレー,エイチ.マーク
メサード,ウェイン
ポポフ,アルカディ
シュミット,ステフェン
ダブリュー. スタンフィル,クレイグ
ダブリュー. スタンフィル,クレイグ
スケフィントン,ザ サード ホーリー,ジョセフ
スケフィントン,ザ サード ホーリー,ジョセフ
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2016129059A publication Critical patent/JP2016129059A/ja
Application granted granted Critical
Publication of JP6116721B2 publication Critical patent/JP6116721B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Description

関連出願の相互参照
本願は、2010年6月15日に出願された米国特許出願第61/355,129号の優先権を主張し、同特許は参照により本明細書に組み込まれる。
背景
この説明は、グラフに基づく計算の動的ロードに関する。
複雑な計算は、有向グラフ(「データフローグラフ」と呼ばれる)を通じてデータフローとして表すことができる場合が多く、計算のコンポーネントはグラフの頂点に関連し、コンポーネント間のデータフローはグラフのリンク(弧、辺)に相当する。コンポーネントは、1つまたは複数の入力ポートでデータを受信し、データを処理し、1つまたは複数の出力ポートからデータを提供するデータ処理コンポーネントと、データフローのソースまたはシンクとして機能するデータセットコンポーネントとを含み得る。そのようなグラフに基づく計算を実施するシステムについては、米国特許第5,966,072号「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」に記載されている。
要約
一般的な態様では、データ格納システムに格納されたコンパイル済みのデータフローグラフを使用してデータ処理システム内のデータを処理するための方法は、それぞれが1つまたは複数の作業要素を含む複数の作業単位を受信する工程と、第1の作業単位を受信する工程に応じて、データ処理システムにロードされた第1のコンパイル済みのデータフローグラフを使用して第1の作業単位を処理する工程とを含む。第1のコンパイル済みのデータフローグラフは、データ処理コンポーネントの間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表すノードを含む第1のデータフローグラフを表すデータ構造にコンパイルされている。処理する工程は、第1の作業単位を分析して第1の作業単位の特性を決定する工程と、決定された第1の作業単位の特性を有する作業単位を処理するために、第1の作業単位を受信する前に、コンパイルされた少なくともいくつかのコンパイル済みのデータフローグラフを含むデータ格納システムに格納された複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、第1のコンパイル済みのデータフローグラフとしてデータ処理システムにロードする工程と、第1のデータフローグラフを使用して第1の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む。
態様は、以下の特徴の1つまたは複数を含み得る。
複数の作業単位は、受信された作業要素のフロー内の1つまたは複数の作業要素の異なる連続セットに相当する。
複数の作業単位は、それぞれの受信された異なるファイル内の1つまたは複数の作業要素の異なるバッチに相当する。
ロードする工程は、第1のコンパイル済みのデータフローグラフから第1のデータフローグラフを表すデータ構造を取得し、取得したデータ構造を第2のデータフローグラフにロードする工程をさらに含む。
第2のデータフローグラフは、第1の作業単位が受信される前に実行していた。
取得したデータ構造を第2のデータフローグラフにロードする工程は、第1のデータフローグラフ内のデータ処理コンポーネントを実行するための第1のプロセスを提供するよう構成された第2のデータフローグラフの包含コンポーネント内に第1のデータフローグラフを埋め込む工程を含む。
第2のデータフローグラフの包含コンポーネントは、さらに、第1のデータフローグラフ内のデータ処理コンポーネントの実行をモニタするための第2のプロセスを提供するように構成される。
第1のデータフローグラフ内の少なくとも1つのデータ処理コンポーネントの障害を検出して所定の作業要素を適正に処理する工程に応じて、第2のプロセスは、第2のデータフローグラフの実行を中断することなく、第1のデータフローグラフの実行を中断する。
第1の作業単位を処理する際に第1のデータフローグラフ内の少なくとも1つのデータ処理コンポーネントの遅延を検出する工程に応じて、第2のプロセスは、第2のデータフローグラフの実行を中断することなく、第1のデータフローグラフの実行を一時停止し、第3のデータフローグラフを第2のデータフローグラフの包含コンポーネント内に埋め込み、第1の作業単位の後に受信した第2の作業単位を処理する。
第2のデータフローグラフの包含コンポーネントは、さらに、第1のリモートデータベース用のライブラリにアクセスする第2のプロセスと通信するために第1のプロセスが使用する第1のアプリケーションプログラミングインターフェースを提供するように構成される。
第2のデータフローグラフの包含コンポーネントは、さらに、第1のリモートデータベース用のライブラリとは異なる第2のリモートデータベース用のライブラリにアクセスする第3のプロセスと通信するために第1のプロセスが使用する第2のアプリケーションプログラミングインターフェースを提供するように構成される。
第2のデータフローグラフの包含コンポーネントは、さらに、第2のデータフローグラフの複数のコンポーネントとの互換性を有する第3のアプリケーションプログラミングインターフェースを提供するように構成される。
第2のデータフローグラフの包含コンポーネントは、さらに、第1または第2のリモートデータベースのどちらにアクセスしているかに基づいて、第3のアプリケーションプログラミングインターフェースを使用するアプリケーション呼出しを、第1または第2のアプリケーションプログラミングインターフェースのいずれか選択したものを使用するアプリケーション呼出しに変換するように構成される。
取得したデータ構造を第2のデータフローグラフにロードする工程は、第1のデータフローグラフを第2のデータフローグラフの包含コンポーネント内に埋め込む工程を含み、埋め込む工程は、包含コンポーネントの入力と接続されたリンクから受信した入力作業要素のフローを第1のデータフローグラフの入力と接続する工程と、生成された1つまたは複数の出力作業要素を包含コンポーネントの出力と接続されたリンクと接続する工程とを含む。
第1のデータフローグラフは、第1のコンポーネントを含み、第1のコンポーネントは、第2のコンポーネントの入力と接続された少なくとも1つの出力リンクと、第1のデータフローグラフが包含コンポーネント内に埋め込まれている場合は、第2のコンポーネントに入力作業要素を提供するための命令と、第1のデータフローグラフが包含コンポーネント内に埋め込まれていない場合は、格納場所から第2のコンポーネントに作業要素を提供するための命令とを含む。
第1のデータフローグラフは、第3のコンポーネントを含み、第3のコンポーネントは、第4のコンポーネントの出力と接続された少なくとも1つの入力リンクと、第1のデータフローグラフが包含コンポーネント内に埋め込まれている場合は、生成された1つまたは複数の出力作業要素を第4のコンポーネントの出力から包含コンポーネントの出力に提供するための命令と、第1のデータフローグラフが包含コンポーネント内に埋め込まれていない場合は、生成された1つまたは複数の出力作業要素を第4のコンポーネントの出力から格納場所に提供するための命令とを含む。
第1のデータフローグラフは、複数のインターフェースコンポーネントを含み、複数のインターフェースコンポーネントはそれぞれ、第1のデータフローグラフが包含コンポーネント内に埋め込まれている場合は、第1のデータフローグラフと包含コンポーネントとの間で作業要素を送信するための命令と、第1のデータフローグラフが包含コンポーネント内に埋め込まれていない場合は、第1のデータフローグラフと格納場所との間で作業要素を送信するための命令とを含む。
インターフェースコンポーネントのそれぞれは、第1のデータフローグラフが包含コンポーネント内に埋め込まれている場合は、第1のデータフローグラフが接続される包含コンポーネントの対応する異なる入力または出力ポートを特定する。
本方法は、1つまたは複数の出力作業要素を生成した後に、第2のデータフローグラフから、取得した第1のデータフローグラフを表すデータ構造をアンロードする工程をさらに含む。
本方法は、第1の作業単位が到着した後かつ取得した第1のデータフローグラフを表すデータ構造をアンロードする前に到着する作業単位内に存在する作業要素をバッファリングする工程をさらに含む。
本方法は、データ処理システムにロードされた第2のコンパイル済みのデータフローグラフをロードする工程をさらに含み、第2のコンパイル済みのデータフローグラフは、第2のデータフローグラフを表すデータ構造にコンパイルされている。
特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、第1のコンパイル済みのデータフローグラフとしてデータ処理システムにロードする工程は、第1のデータフローグラフを第3のデータフローグラフの第1の包含コンポーネント内に埋め込む工程を含み、第2のコンパイル済みのデータフローグラフをデータ処理システムにロードする工程は、第2のデータフローグラフを第3のデータフローグラフの第2の包含コンポーネント内に埋め込む工程を含む。
第2のコンパイル済みのデータフローグラフは、第1の作業単位を受信する工程に応じて、データ処理システムにロードされる。
第2のコンパイル済みのデータフローグラフは、第1の作業単位の後に第2の作業単位を受信する工程に応じて、データ処理システムにロードされる。
本方法は、第2の作業単位を受信する工程に応じてデータ処理システムにロードされた第2のコンパイル済みのデータフローグラフを使用して、第1の作業単位を処理した後に第2の作業単位を処理する工程をさらに含み、第2のコンパイル済みのデータフローグラフは、第2のデータフローグラフを表すデータ構造にコンパイルされており、処理する工程は、第2の作業単位を分析して第2の作業単位の特性を決定する工程と、決定された第2の作業単位の特性を有する作業単位を処理するために、第2の作業単位を受信する前に、コンパイルされたデータ格納システムに格納された複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、第2のコンパイル済みのデータフローグラフとしてデータ処理システムにロードする工程と、第2のデータフローグラフを使用して第2の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む。
特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、第1のコンパイル済みのデータフローグラフとしてデータ処理システムにロードする工程は、第1のデータフローグラフを第3のデータフローグラフの包含コンポーネント内に埋め込む工程を含み、特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、第2のコンパイル済みのデータフローグラフとしてデータ処理システムにロードする工程は、第2のデータフローグラフを第3のデータフローグラフの包含コンポーネント内に埋め込む工程を含む。
第1の作業単位を分析する工程は、第1の作業単位の作業要素内に含まれるコンパイル済みのデータフローグラフ用の識別子を読み取る工程を含む。
1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、識別子を、1つまたは複数のコンパイル済みのデータフローグラフに関連する識別子と一致させる工程を含む。
第1の作業単位を分析する工程は、第1の作業単位の作業要素を特徴付ける複数の既定のタイプの1つを特定する工程を含む。
1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、1つまたは複数のコンパイル済みのデータフローグラフに対応するデータフローグラフが、特定されたタイプによって特徴付けられた作業要素を処理するよう構成されているかを判断する工程を含む。
第1の作業単位を分析する工程は、第1の作業単位の作業要素内に含まれるコンテンツの特性を特定する工程を含む。
1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、1つまたは複数のコンパイル済みのデータフローグラフに対応するデータフローグラフが、特定された特性を有するコンテンツを含む作業要素を処理するよう構成されているかを判断する工程を含む。
第1の作業単位を分析する工程は、第1のデータフローグラフの1つまたは複数のパラメータの第1のセット用の値として指定された第1の作業単位に関連する1つまたは複数の値を決定する工程を含む。
1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、特定された1つまたは複数のコンパイル済みのデータフローグラフが、決定された第1の作業単位に関連する1つまたは複数の値と一致するそれぞれの値にバインドされた1つまたは複数のパラメータの第1のセットを用いて第1のデータフローグラフを表すデータ構造にコンパイルされたかを判断する工程を含む。
特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、第1のコンパイル済みのデータフローグラフとしてデータ処理システムにロードする工程は、1つまたは複数のパラメータの第2のセットを、第1の作業単位に少なくとも部分的に基づいて決定されたそれぞれの値にバインドする工程を含む。
1つまたは複数のパラメータの第2のセットは、少なくとも1つのパラメータを含み、その値は、入力作業要素を提供するための入力ソースまたは出力作業要素を受信するための出力ソースの名前を含む。
1つまたは複数のパラメータの第1のセットは、少なくとも1つのパラメータを含み、その値は、データ構造が第1のコンパイル済みのデータフローグラフにコンパイルされている場合に、第1のデータフローグラフを表すデータ構造に1つまたは複数のコンポーネントを含めるべきかどうかを判断する。
1つまたは複数のパラメータの第1のセットは、少なくとも1つのパラメータを含み、その値は、データ構造が第1のコンパイル済みのデータフローグラフにコンパイルされている場合に、第1のデータフローグラフを表すデータ構造内に含まれるコンポーネントによって処理される作業要素に変換を適用すべきかを判断する。
本方法は、第1の作業単位を受信する前に、それぞれの値にバインドされた1つまたは複数のパラメータの第1のセットを用いて第1のデータフローグラフを表すデータ構造から第1のコンパイル済みのデータフローグラフをコンパイルする工程をさらに含む。
本方法は、第1のコンパイル済みのデータフローグラフをデータ格納システムに格納し、格納した第1のコンパイル済みのデータフローグラフを1つまたは複数のパラメータの第1のセットにバインドされたそれぞれの値を示す情報と関連付ける工程をさらに含む。
別の態様では、一般に、データ格納システムに格納されたコンパイル済みのデータフローグラフを使用してデータを処理するためのデータ処理システムは、それぞれが1つまたは複数の作業要素を含む複数の作業単位を受信するよう構成された入力デバイスまたはポートと、第1の作業単位を受信する工程に応じて、データ処理システムにロードされた第1のコンパイル済みのデータフローグラフを使用して第1の作業単位を処理するよう構成された少なくとも1つのプロセッサとを含む。第1のコンパイル済みのデータフローグラフは、データ処理コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表すノードを含む第1のデータフローグラフを表すデータ構造にコンパイルされている。処理する工程は、第1の作業単位を分析して第1の作業単位の特性を決定する工程と、決定された第1の作業単位の特性を有する作業単位を処理するために、第1の作業単位を受信する前に、コンパイルされた少なくともいくつかのコンパイル済みのデータフローグラフを含むデータ格納システムに格納された複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、第1のコンパイル済みのデータフローグラフとしてデータ処理システムにロードする工程と、第1のデータフローグラフを使用して第1の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む。
別の態様では、一般に、データ格納システムに格納されたコンパイル済みのデータフローグラフを使用してデータを処理するためのデータ処理システムは、それぞれが1つまたは複数の作業要素を含む複数の作業単位を受信するための手段と、第1の作業単位を受信する工程に応じて、データ処理システムにロードされた第1のコンパイル済みのデータフローグラフを使用して、第1の作業単位を処理するための手段とを含む。第1のコンパイル済みのデータフローグラフは、データ処理コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表すノードを含む第1のデータフローグラフを表すデータ構造にコンパイルされている。処理する工程は、第1の作業単位を分析して第1の作業単位の特性を決定する工程と、決定された第1の作業単位の特性を有する作業単位を処理するために、第1の作業単位を受信する前に、コンパイルされた少なくともいくつかのコンパイル済みのデータフローグラフを含むデータ格納システムに格納された複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、第1のコンパイル済みのデータフローグラフとしてデータ処理システムにロードする工程と、第1のデータフローグラフを使用して第1の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む。
別の態様では、一般に、コンピュータ可読媒体は、データ格納システムに格納されたコンパイル済みのデータフローグラフを使用してデータ処理システム内のデータを処理するためのコンピュータプログラムを格納する。コンピュータプログラムは、コンピュータに、それぞれが1つまたは複数の作業要素を含む複数の作業単位を受信させ、第1の作業単位を受信する工程に応じて、データ処理システムにロードされた第1のコンパイル済みのデータフローグラフを使用して、第1の作業単位を処理させるための命令を含む。第1のコンパイル済みのデータフローグラフは、データ処理コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表すノードを含む第1のデータフローグラフを表すデータ構造にコンパイルされている。処理する工程は、第1の作業単位を分析して第1の作業単位の特性を決定する工程と、決定された第1の作業単位の特性を有する作業単位を処理するために、第1の作業単位を受信する前に、コンパイルされた少なくともいくつかのコンパイル済みのデータフローグラフを含むデータ格納システムに格納された複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、第1のコンパイル済みのデータフローグラフとしてデータ処理システムにロードする工程と、第1のデータフローグラフを使用して第1の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む。
本発明の態様は、以下の利点の1つまたは複数を含み得る。
データフローグラフを使用するデータ処理システムは、個別の作業要素で構成されるデータの入力フローを処理する異なる方法で構成することができる。それぞれの作業要素が別々の作業単位を表すことも、一連の複数の作業要素が1つの作業単位を表すことも可能である。本明細書に記載される技法は、そのようなシステムのさまざまな構成に使用することができる。一部の構成は、ある特定の特性を有するデータフロー内の作業単位に対してより適切である場合がある。いくつかの事例では、作業単位内の1つまたは複数の作業要素は、バッチ(例えば、同じ入力ファイル内の記録からなる作業要素のバッチ)として処理するためのデータフローグラフに提供され、そこでは、データフローグラフは、一度に単一バッチで、1つまたは複数の入力ポートから1つまたは複数の出力ポートに作業要素のデータフローを渡す。下流コンポーネントの出力ポートから提供された一連の「出力作業要素」(および、場合により、データセットコンポーネントに格納された)は、入力ポートに提供された一連の「入力作業要素」を処理した結果を表す。バッチ処理の一形態では、データフローグラフは、バッチの第1の入力作業要素が準備されると開始し、最後の出力作業要素を提供した後に終了する。バッチ処理の別の形態では、データフローグラフは、前のバッチからの最後の出力作業要素が次のバッチからの最初の入力作業要素を処理する前に出力されていることを確認する間、次から次へとバッチを実行し続ける。この後者のバッチ処理の形態では、それぞれがバッチを表す1つまたは複数の作業要素からなる作業単位に分割された作業要素の連続ストリームが存在し得る。本明細書に記載される技法の一部は、受信した作業単位に関連する既定の特性を検出する工程に応じて、所定のデータフローグラフを動的にロードする方法を示す。以下でさらに詳細に説明されるように、いくつかの事例では、特性は、作業単位のコンテンツ(例えば、ファイルの形式)に基づき、いくつかの事例では、特性は、作業単位に関連するパラメータ値(例えば、特定の条件付きコンポーネントを含めるべきかどうかを判断するパラメータ)に基づく。
いくつかの構成では、データ処理システムは、データフローグラフを比較的短い期間(例えば、数秒程度)の間実行して所定のデータのバッチを処理するように、データフローグラフを実行してデータのバッチを処理することができる。選択したデータフローグラフ(例えば、データフローグラフの収集体から選択した)で小容量のバッチを多く処理する場合、選択したデータフローグラフの実行時間が「開始時間」(グラフの開始から、グラフをロードしてデータのバッチの処理を開始する準備ができるまでに要する時間)で占められていなければ、大幅に性能を向上させることができる。例えば、データフローグラフの開始時間が約5秒で、データのバッチの処理に約5秒要する場合は、有用なデータ処理には実行時間の半分のみが使用される。いくつかの事例では、処理時間と実行時間のこの低比率は、それほど頻繁にバッチが到着しない場合(例えば、この例では数分ごとに)は、全体の効率に影響を与えることはない。しかし、比較的頻繁にバッチが到着する場合(例えば、この例では数秒ごとに)は、開始時間は全体の効率に多大な影響を与えることがある。本明細書に記載されるように、性能は、開始時間の間に実行されるであろうタスクの一部を早期のコンパイル段階に移動することによって向上させることができる。
いくつかの構成では、データ処理システムは、データフローグラフを実行してデータのフロー内の一連の作業要素を連続して処理するように、データフローグラフを実行してデータの連続フローを処理することができる。作業要素は、作業要素の1つまたは複数からなる作業単位に分割することができ、各作業単位は、バッチとして異なるデータフローグラフで処理する必要がある場合がある。性能は、異なるデータフローグラフを、要求に応じて実行中のコンテナグラフに動的にロードする場合(例えば、異なるデータフローグラフのすべてを独立して実行している状態に保つこと、または、それらを単一の大容量のデータフローグラフに組み合わせることとは対照的に)、大幅に向上させることができる。例えば、作業単位は、所定のタイプの単一のメッセージからなるものであってもよい。一部のタイプのメッセージは、他のものより頻繁であり得る。したがって、適切なデータフローグラフをロードして所定のタイプのメッセージを取り扱うことによって(すべての異なるタイプのメッセージに対するすべてのデータフローグラフを同時に実行する代わりに)、よりまれに使用されるデータフローグラフの実行の維持に使用されたであろうリソースを他の目的のために解放することができる。それに加えて、データフローグラフを大容量のデータフローグラフに組み合わせる代わりにデータフローグラフを別々に維持することにより、異なるタイプのメッセージに対するカスタムデータフローグラフの容易な設計を可能にするモジュール方式が提供され、コンテナグラフの検査時に全システムに対する開発者の理解を助長させる。開発者は、対応するデータフローグラフを変更することによって一部のタイプのメッセージを取り扱う方法を容易に変更することができ、メッセージタイプを追加または取り除く際にデータフローグラフを容易に追加または取り除くことができる。
本明細書に記載される技法を使用して、受信したデータのバッチを処理するため適切なパラメータ値でランタイム時に動的にロードできるカスタマイズされた異なるバージョンのデータフローグラフをコンパイルすることができる。いくつかの実装形態では、コンパイル済みのデータフローグラフは、包含データフローグラフを実行している間、包含データフローグラフに(および包含データフローグラフから)動的にロードできる(およびアンロードできる)「マイクログラフ」として使用することができる。マイクログラフは、データフローグラフでデータの連続フローを処理する間、バッチとしてデータの連続フロー内の異なる作業単位を処理する効果的な方法を提供する。いくつかの事例では、マイクログラフは、以下でさらに詳細に説明されるように、マイクログラフをロードするための特殊コンポーネントを使用して、サブグラフとして包含データフローグラフ内にロードされる。データフローグラフ(マイクログラフを含む)をコンパイルするための技法は、受信したデータのバッチ(データフロー内の作業単位を含む)に応じて、データフローグラフのコンパイル済みの異なるバージョンの間で選択することによってランタイム時の柔軟性を依然として可能にする一方で、一部の開始手順の事前実行を可能にする。
本発明の他の特徴および利点は、以下の説明および特許請求の範囲から明らかになるであろう。
データフローグラフを実行するシステムの例示的な構成のブロック図である。 マイクログラフを含む例示的なデータフローグラフの図である。 例示的な特殊コンポーネントの図である。 例示的なマイクログラフの図である。 メモリ内に複数のマイクログラフを備えた例示的な特殊コンポーネントの図である。 複数のマイクログラフ処理データフローを備えた例示的な特殊コンポーネントの図である。 複数の特殊コンポーネントを備えた例示的なデータフローグラフの図である。 前処理および後処理コンポーネントを含む例示的な特殊コンポーネントのブロック図である。 複数のデータフローコンポーネントの一例を示す図であり、それぞれは単一のデータベースと相互作用する。 複数のデータベースと相互作用する例示的なデータフローコンポーネントの図である。 複数のデータベースと相互作用する例示的なデータフローコンポーネントの図である。 共通のプロトコル層を使用して複数のデータベースと相互作用する例示的なデータフローコンポーネントの図である。 ランタイム前にデータフローグラフをコンパイルするシステムの例示的な構成のブロック図である。
説明
1.概要
図1は、動的ロード技法を使用できる例示的なデータ処理システム100を示す。システム100は、記憶装置またはオンラインデータストリームとの接続部などの1つまたは複数のデータソースを含み得るデータソース101を含み、データソースのそれぞれは、さまざまな格納形式のいずれかの形式(例えば、メインフレームによって使用されるデータベース表、スプレッドシートファイル、フラットテキストファイルまたはネイティブ形式)でデータを格納することができる。実行環境104は、事前実行モジュール105と、実行モジュール106とを含む。実行環境104は、UNIX(登録商標)オペレーティングシステムなどの適切なオペレーティングシステムの制御下で、1つまたは複数の汎用コンピュータをホストとすることができる。例えば、実行環境104は、ローカルで接続された(例えば、SMPコンピュータなどのマルチプロセッサシステム)もしくはローカルで分散された(例えば、クラスタもしくはMPPとして結合された複数のプロセッサ)、または、リモートで接続されたもしくはリモートで分散された(例えば、ローカルエリアネットワーク(LAN)および/もしくは広域ネットワーク(WAN)を介して結合された複数のプロセッサ)、あるいは、それらの任意の組合せの、複数の中央演算処理装置(CPU)を使用したコンピュータシステムの構成を含む複数ノード並列演算環境を含み得る。
事前実行モジュール105は、データフローグラフをコンパイルする、実行環境104にアクセス可能なデータ格納システム107へ/からコンパイル済みのデータフローグラフを格納/ロードする、または、パラメータ値を分解して、分解した値をパラメータにバインドするなど、データフローグラフおよび他の実行可能プログラムの実行に備えてさまざまなタスクを実行するよう構成される。いくつかの事例では、事前実行モジュール105は、データソース101からのデータに応じてタスク(例えば、コンパイル済みのデータフローグラフをロードする)を実行する。データソース101を提供する記憶装置は、実行環境104とローカルで接続する、例えば、実行環境104を実行しているコンピュータに接続された記憶媒体(例えば、ハードドライブ102)に格納することも、実行環境104とリモートで接続する、例えば、リモート接続上で、実行環境104を実行しているコンピュータと連通するリモートシステム(例えば、メインフレーム103)をホストとすることもできる。
実行モジュール106は、事前実行モジュール105によって生成されたコンパイル済みのデータフローグラフを使用して出力データを生成し、出力データは、データソース101に戻すおよび/またはデータ格納システム107に格納することができる。また、データ格納システム107は、開発環境108にアクセスすることができ、開発環境108では、開発者109は、データフローグラフを設計することができる。データフローグラフを表すデータ構造は、シリアライズしてデータ格納システム107に格納することができる。
実行モジュール106は、異なる形式のデータベースシステムを含むデータソース101のさまざまなタイプのシステムからデータを受信することができる。データは、恐らくヌル値を含む、それぞれのフィールド(「属性」または「列」とも呼ばれる)に対する値を有する記録として組織化することができる。データソースからデータを読み取る際、実行中のデータフローグラフは、そのデータソース内の記録についての初期形式情報を取り扱うコンポーネントを含み得る。状況次第では、データソースの記録構造は、初めは知られていない場合があり、代わりに、データソースの分析後に決定される場合がある。記録についての初期情報は、異なる値を表すビット数と、記録内のフィールドの順番と、ビットによって表される値のタイプ(例えば、ストリング、符号付き/符号なし整数)とを含み得る。
図2を参照すると、実行モジュール106によって実行されたデータフローグラフ155の一例により、入力データソース110からのデータを読み取り、離散的な作業要素のフローとして処理することが可能になる。作業要素の処理に伴う計算の異なる部分は、グラフの頂点(または、ノード)として表されるコンポーネント120、130で、ならびに、コンポーネント120および130を接続するリンク125などのグラフのリンク(または、弧、辺)によって表されるコンポーネント間のデータフローで実行される。そのようなグラフに基づく計算を実施するシステムについては、参照により本明細書に組み込まれる米国特許第5,566,072号「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」に記載されている。このシステムに従って作成されたデータフローグラフは、グラフコンポーネントによって表される個別のプロセスに情報を持ち込むおよび個別のプロセスから情報を引き出すための方法、プロセス間で情報を移動するための方法、ならびに、プロセスに対する実行順番を定義するための方法を提供する。このシステムは、プロセス間通信方法(例えば、グラフのリンクに従った通信経路は、TCP/IPもしくはUNIXドメインソケットを使用するか、または、共有メモリを使用して、プロセス間でデータを渡すことができる)を選択するアルゴリズムを含む。
実行用に未コンパイルのデータフローグラフを準備するプロセスは、さまざまな段階を伴う。データフローグラフの未コンパイルの表現は、コンパイルプロセスで使用される値を提供するデータフローグラフに関連する任意のパラメータとともに取得される。静的パラメータ分解段階の間、静的パラメータ(それらの値はランタイム前に分解用に指定される)を分解して、分解した値を静的パラメータにバインドする。いくつかの事例では、静的パラメータの値を分解するため、計算を実行してある特定の値(例えば、参照により本明細書に組み込まれる「MANAGING METADATA FOR GRAPH-BASED COMPUTATIONS」と称する米国特許出願公開第2006/0294150号に記載されるようなメタデータ値)を導出する。一部のパラメータは、未分解のまま残して後のランタイム時またはランタイム直前に分解する動的パラメータとして指定することができる。条件付きコンポーネントとして指定されたコンポーネントは、既定の条件が満たされない場合(または満たされる場合)は、例えば、静的パラメータ値に基づいて、グラフから取り除く(例えば、データフローリンクと交換することによって)。コンパイル段階の間、実行中に使用される、そのコンポーネントおよびリンクを含むデータフローグラフを表すデータ構造を生成する。また、コンパイルする工程は、スクリプト言語で埋め込まれたスクリプトをバイトコードまたはマシンコードにコンパイルする工程も含み得る。ランタイム時、データフローグラフと関連するいかなる動的パラメータも分解した値とバインドさせ、コンパイル済みのデータフローグラフのデータ構造を1つまたは複数のプロセスを開始することによって着手し、必要なあらゆるファイル(例えば、動的パラメータによって特定されたファイル)を開き、および/または、あらゆる動的ライブラリをリンクする。また、プロセスは、リンクによって表されるデータフローを設定するタスク(例えば、共有メモリを割り当てる、または、TCP/IPストリームを開く)も実行する。いくつかの事例では、データ構造は、参照により本明細書に組み込まれる「MANAGING COMPUTING RESOURCES IN GRAPH-BASED COMPUTATIONS」と称する米国特許出願公開第2007/0271381号に記載されているように、単一のプロセス内で複数のコンポーネントを実行するよう構成される。
データフローグラフは、さまざまなレベルの抽象化によって指定することができる。それ自体がコンポーネントおよびリンクを含むデータフローグラフである「サブグラフ」は、単一のコンポーネントとして別の包含データフローグラフ内で表すことができ、サブグラフを包含データフローグラフに接続するそれらのリンクのみを示す。いくつかの事例では、サブグラフを使用して、開発環境108内の包含データフローグラフのコンポーネントおよびリンクを隠すが、コンポーネントおよびリンクを表すデータは、包含データフローグラフ内で既に統合されている。いくつかの実施形態では、以下でさらに詳細に説明されるように、サブグラフは、初めは包含データフローグラフ内に含まれていないが、後に、包含データフローグラフにロードされるコンポーネントおよびリンクを表すデータ構造を含む、コンパイル済みのデータフローグラフとして開始する「マイクログラフ」から導出される。
再度図2を参照すると、データフローグラフ155は、データソースから入力データの連続フローを受入することができ、この例では、データソースは、データセットコンポーネント110で表される。データのフローは、データフローグラフ155のオペレーション中に増減したとしても、データのフローは、例えば、エントリシステム内で受信されたクレジットカードトランザクションまたは注文のフローなど、必ずしも区別可能な始まりまたは終わりを有するとは限らないという意味では連続的なものである。それに加えて、データフローグラフ155は、出力データの連続フローを出力データリポジトリに提供することができ、この例では、出力データリポジトリは、データセットコンポーネント140で表される。一部のデータフローグラフは、無期限にデータの連続フローを処理する連続データフローグラフとして実行するよう設計され、一部のデータフローグラフは、データの離散的なバッチを処理するための実行を開始し、次いで、バッチを処理してから実行を終了するバッチデータフローグラフとして実行するよう設計される。データフローグラフのデータ処理コンポーネント120および130は、一連の命令、サブグラフまたはそれらのいくつかの組合せを含み得る。
いくつかの構成では、特殊コンポーネント130は、マイクログラフ160をロードすることができ、マイクログラフは、動的に取得し、包含データフローグラフ内に埋め込むよう構成された特殊な種類のサブグラフである。マイクログラフは、特殊コンポーネント130などの包含データフローグラフの包含コンポーネントに動的に埋め込むことができる。いくつかの構成では、マイクログラフ160は、以前にコンパイルされ、データ格納システム107に格納されたデータフローグラフから導出される。いくつかの構成では、マイクログラフ160は、データ格納システム107からロードする際、未コンパイルの形式のまま残る。例えば、コンパイル済みのデータフローグラフをロードする代わりに、特殊コンポーネント130は、グラフコンパイル手順を開始し、特殊コンポーネント130を含むデータフローグラフが、使用直前にコンパイルされたマイクログラフを実行できるようにすることができる。グラフコンパイル手順は、特殊コンポーネント130の外部で実行しても、特殊コンポーネント130の内部で実行してもよい。いくつかの構成では、マイクログラフ160は、データ格納システム107に格納する前にシリアライズする。一般に、シリアライゼーションは、コンパイル済みまたは未コンパイルの表現のデータフローグラフを0と1のバイナリストリームに変換し、その結果、データフローグラフを永続的なメモリまたはメモリバッファに容易に格納できる形式にするためのプロセスである。マイクログラフの迅速なロードが望ましい実装形態では、通常、データフローグラフは、データ構造とともにコンパイル済みの表現でシリアライズし、データ格納システム107に格納し、その結果、シリアライズしたコンパイル済みのデータフローグラフを容易に取得することができ、データ構造は、ランタイム時に非シリアライズし、動的にロードする。コンパイルは、データフローグラフとして表されるプログラムを含むコンピュータプログラムをコンピュータで実行するよう準備するためのプロセスである。コンパイルは、コンピュータ上で実行する準備ができているマシンコードもしくは命令、または、コンピュータ上で実行している仮想マシンによって実行される中間コード、例えば、Java(登録商標)バイトコードの生成をもたらす場合がある。データフローグラフの事例では、コンパイルは、コンピュータ上で実行する準備ができている形式でデータフローグラフのコンポーネントおよびリンクを表すデータ構造の生成を含む。
特殊コンポーネント130の受信リンク125に沿ってデータフローグラフ155中を流れるデータは、特殊コンポーネント130がマイクログラフ160をロードしてマイクログラフ160をデータフローグラフ155と統合する間、バッファに一時的に格納される。同様に、データフローは、マイクログラフを切り離してデータフローグラフ155からアンロードする間、バッファに蓄積することができる。いくつかの構成では、切り離したマイクログラフをメモリ内にロードしたまま残し、後にアクセスすることができる(例えば、キャッシュメカニズムを使用する)。
バッファリングは、コンポーネントに作業要素の入力フローを提供するリンクに対する入力キューを使用して実装されるフロー制御メカニズムを使用するよう構成することができる。このフロー制御メカニズムにより、データは、通常大容量だが低速のディスクドライブなどの不揮発性ローカル記憶装置に必ずしも書き込まれることなく、データフローグラフのコンポーネント間を流れることができる。入力キューは、作業要素を揮発性メモリに保持できるほど十分に小容量に保つことができ、通常、不揮発性メモリより小容量で高速である。格納スペースおよび時間の節約の可能性は、非常に大容量のデータセットにも存在する。コンポーネントは、入力キューの代わりにまたは入力キューに加えて、出力バッファを使用することができる。2つのコンポーネントがフローによって接続されると、上流コンポーネントは、下流コンポーネントが作業要素を消費し続ける限り、下流コンポーネントに作業要素を送信する。下流コンポーネントに遅れが出る場合は、上流コンポーネントは、下流コンポーネントの入力キューを埋めて、再度入力キューがクリアされるまで作業を停止する。
いくつかの構成では、マイクログラフ160は、バッチデータフローグラフの一部として、または、コマンドラインから、スケジューリングプロセスによって予定に基づいて実行され、必ずしも包含データフローグラフの特殊コンポーネントにロードする必要はない。あるいは、スケジューラは、特殊コンポーネントを使用して、キューからのメッセージに応じて適切なマイクログラフをロードする特殊コンポーネントを含む実行中のデータフローグラフへメッセージの連続フローを提供するキューへメッセージを送信することによって、バッチ処理用のマイクログラフに着手することができる。
2.特殊コンポーネント
図3Aを参照すると、一実施形態では、特殊コンポーネント200は、複数の入力205、210、215を受入し、複数の出力220、225、230および235に送達するよう構成される。入力は、データ入力205、210と、制御入力215とを含む。出力は、データ出力220、225、230と、状態出力235とを含む。制御入力215は、マイクログラフ240を実行するための識別子(例えば、受信された制御要素内の)および場合によりマイクログラフ240の実行に使用されるパラメータセットを受入する。一般に、特殊コンポーネント200は、データ入力205、210などのそれぞれのデータ入力ポート上で入力作業要素のゼロ以上のフローを受入することができる。状態出力235は、マイクログラフ240の実行からの出口状態および追跡情報を含む状態記録を生成する。それに加えて、特殊コンポーネントは、データ出力220、225および230などのそれぞれのデータ出力ポート上で出力作業要素のゼロ以上のフローを生成する。一実施形態では、特殊コンポーネント200は、正常な実行の間、1つの状態記録を生成し、1つの制御記録を受入する。
制御入力215は、それぞれがロードすべき対応するマイクログラフを特定する一連の複数の制御要素を受信することができる。それぞれの制御入力要素は、特定したマイクログラフによって処理すべき作業単位を表すデータ入力上で受信する作業要素のフロー内の作業要素の異なるサブセットに関連する。いくつかの事例では、マイクログラフを特定する制御要素は、作業単位内の1つまたは複数の作業要素を分析して適切なマイクログラフを選択し、その作業単位を処理する工程に基づいて生成される。いくつかの事例では、マイクログラフを特定する制御要素および特定したマイクログラフによって処理すべき作業単位を表す作業要素は、独立して受信され、さまざまな技法のいずれかを使用して互いに一致させる。例えば、マイクログラフを特定する制御要素を最初に受信し、作業単位の少なくとも1つの作業要素内に現れるキー値を対応する制御要素(例えば、単に作業単位内の第1の作業要素または作業単位内のあらゆる作業要素)と一致させることによって、特定したマイクログラフによって処理すべき作業単位を表す作業要素を決定する。あるいは、「デリミタ作業要素」と呼ばれる作業要素は、同じ作業単位に属する作業要素の異なるシーケンスを分離するデリミタとして機能し得る。あるいは、特殊コンポーネント200は、既定数の作業要素を受信して、それぞれの制御要素と関連付ける連続的な作業単位に属するよう構成される。
マイクログラフ240は、特殊コンポーネント200との互換性を有するよう設計されてきたマイクログラフの収集体から選択することができる。例えば、マイクログラフ240の入力ポートおよび出力ポートの数は、特殊コンポーネント200の入力ポートおよび出力ポートの数と一致し得る。この例では、マイクログラフ240は、2つの入力ポートおよび3つの出力ポートを有し、これらのポートは、入力フローを受信するよう構成されたマイクログラフ240の2つの異なるコンポーネント上および出力フローを提供するよう構成されたマイクログラフ240の3つの異なるコンポーネント上に位置する場合がある。あるいは、マイクログラフ240の複数の入力または出力ポートは、同じコンポーネント上に位置する場合がある。
いくつかの実施形態では、特殊コンポーネント200は、事前に定義された条件に対してマイクログラフ240をモニタし、これらの条件に応じることができる。例えば、特殊コンポーネント200は、マイクログラフ240のコンポーネントを実行するプロセスをモニタする別々のプロセスを使用して、マイクログラフ240の実行中の待ち時間がタイムアウト条件に対する最大閾値を超えるかどうかを判断することができる。それに応じて、特殊コンポーネント200は、例えば、マイクログラフ240の第2のインスタンスをロードすることによって条件に応じることができる。同様に、エラー条件をモニタする。エラー条件を検出する工程に応じて、特殊コンポーネント200は、エラーを記録し、エラー条件に基づいて作業単位をリダイレクトし、必要ならば、マイクログラフ240を再開し、状態出力235を介してエラーを報告することができる。マイクログラフ240の再開では、特殊コンポーネント200が含まれている包含データフローグラフの他のいかなるコンポーネントも中断する必要はない。
いくつかの実施形態では、特殊コンポーネント200は、入力ポート上のデータフローを分析して、どのマイクログラフ240を実行するかを判断する。他の実施形態では、マイクログラフ240を実行するための名前または他の識別情報は、データフローの一部として特殊コンポーネント200に供給される。さらなる他の実施形態では、マイクログラフ240を特定する情報は、特殊コンポーネント200の制御入力215を通じて供給される。
特殊コンポーネント200は、以下でさらに詳細に説明されるように、データ格納システム107からマイクログラフ240をロードし、特殊コンポーネント200を含むデータフローグラフにマイクログラフ240を埋め込み、マイクログラフ240がデータフローを処理できるようにする。
オペレーションが完了すると、特殊コンポーネント200は、マイクログラフ240を取り除く。いくつかの実施形態では、特殊コンポーネント200は、後にアクセスするため、データ格納システム107からよりも比較的容易にアクセスできる格納場所に格納されたマイクログラフキャッシュにマイクログラフ240を格納することができる。いくつかの実施形態では、特殊コンポーネント200は、マイクログラフ240をロードし、統合し、取り除く間、受信データをバッファリングすることができる。
3.マイクログラフ構造
図3Bを参照すると、マイクログラフ240の一例は、データ処理コンポーネント305、310、315および320を含み、データ処理コンポーネントは、上流コンポーネントにリンクされた1つまたは複数の入力ポートに到着するデータフロー内の入力作業要素に対するオペレーションを実行し、下流コンポーネントにリンクされた1つまたは複数の出力ポートを出るデータフロー内の出力作業要素を生成する。また、マイクログラフ240は、マイクログラフ240を特殊コンポーネント200に埋め込むプロセスを容易にするよう構成されたコンポーネント300A、300Bおよび302A、302B、302Cも含み、これらは、「インターフェースコンポーネント」と呼ばれる。インターフェースコンポーネントは、マイクログラフを、実行すべき特殊コンポーネントに埋め込む必要のない独立したデータフローグラフとして実行することも可能にする。
インターフェースコンポーネントを使用して、マイクログラフを包含特殊コンポーネントのポートに接続する。マイクログラフを特殊コンポーネントに埋め込む工程は、各インターフェースコンポーネントと特殊コンポーネントの適正なポートとの対を形成する方法を決定する工程を伴う。入力インターフェースコンポーネント(300A、300B)は出力ポートを有し、出力インターフェースコンポーネント(302A、302B、302C)は入力ポートを有する。入力インターフェースコンポーネントと特殊コンポーネントの入力ポートとの対を形成すると、その入力ポートと入力インターフェースコンポーネントの出力ポートがリンクされているポートとの間でデータフローリンクが生成される。同様に、出力インターフェースコンポーネントと特殊コンポーネントの出力ポートとの対を形成すると、出力インターフェースコンポーネントの入力ポートがリンクされているポートとその出力ポートとの間でデータフローリンクが生成される。
インターフェースコンポーネントとそれらのそれぞれの特殊コンポーネントの入出力ポートとの適正な対形成は、以下のように決定することができる。インターフェースコンポーネントおよび特殊コンポーネントのポートは、場合により、識別子でラベル付けすることができる。特殊コンポーネントの入力/出力ポートに割り当てられた識別子と入力/出力インターフェースコンポーネントに割り当てられた識別子が一致すれば、そのポートとそのインターフェースコンポーネントは対形成される。識別子間での一致は、正確なものでも、不正確なものでもよい(例えば、識別子の一部の接頭語または接尾語間の一致を見出す)。ある対形成手順では、正確な一致と判断されると、数値接尾語を有するインターフェースコンポーネントは、一致する数値接尾語を有するポートと一致する(例えば、特殊コンポーネントの「出力1」ポートは「マイクログラフ出力−1」インターフェースコンポーネントと対形成される)。
マイクログラフを特殊コンポーネントの外部で実行すると(例えば、テスト目的のための開発環境108からのコマンドに応じて)、インターフェースコンポーネントは、データセットコンポーネントの機能性を提供し、インターフェースコンポーネントの出力または入力ポートに接続されたリンク上のデータフロー内の作業要素のソースまたはシンクを提供する。適切な機能性は、マイクログラフが特殊コンポーネント内に埋め込まれているかどうかに基づいて決定される。インターフェースコンポーネントはそれぞれ、マイクログラフが特殊コンポーネント内に埋め込まれている場合は、マイクログラフと特殊コンポーネントとの間で作業要素を送信するための命令を含み、マイクログラフが特殊コンポーネント内に埋め込まれていない場合は、マイクログラフと格納場所との間で作業要素を送信するための命令とを含む。格納場所は、入力作業要素を提供するために読み取られるか、または、出力作業要素を受信するために書き込まれるファイルであり得る。
いくつかの実施形態では、マイクログラフ240は、マイクログラフに含めることができるデータ処理コンポーネント(この例では、コンポーネント305、310、315および320)の機能性に対してある特定の制約を設定することによって構成される。例えば、いくつかの実施形態では、マイクログラフ240のデータ処理コンポーネント305、310、315および320は、単一のプロセス内で実行できる必要がある場合がある(例えば、参照により本明細書に組み込まれる米国特許出願公開第2007/0271381号にさらに詳細に説明されているように単一プロセスに組み込むことによって)。いくつかの実施形態では、マイクログラフは、加入ソース(キューなど)からデータを受信する加入者コンポーネントをサポートしない。いくつかの実施形態では、マイクログラフは、バッチデータフローグラフとして構成する必要がある場合がある。いくつかの実施形態では、マイクログラフ240によって実行されたいかなるトランザクションオペレーションも、単一のトランザクションに収まらなければならない。他の実施形態では、マイクログラフ240のトランザクション態様、例えば、チェックポイント、トランザクションのコンテキストおよびマルチフェーズコミットは、制御入力215を通じて制御される。
データフローグラフ処理では、データの連続フローは、従来のトランザクションの動作に影響を及ぼし得る。チェックポイントオペレーションは、データフロー内のポイントで十分な状態情報を格納し、データフロー内のそのポイントからデータフローグラフを再開できるようにする工程を伴う。かなり頻繁にチェックポイントを取れば、性能は低下する。かなりまれにチェックポイントを取れば、トランザクションの障害の事例におけるリカバリ手順は、より複雑なリソース集約型となる。トランザクションのコンテキストを使用して、そのオペレーションがより大容量のトランザクションの一部であることをマイクログラフに通知することができる。このトランザクションは、単一のデータソースに対して動作する複数のコンポーネントを包含する、より大容量のトランザクションであっても、複数のデータソースにわたって、例えば、2フェーズコミットオペレーションでトランザクションを調整するのに必要な情報を含んでもよい。
4.マイクログラフ管理
図4を参照すると、一実施形態では、特殊コンポーネント405は、特殊コンポーネントがアクセス可能なキャッシュ(例えば、ローカルメモリに格納)に一度に2つ以上のマイクログラフをロードしている場合がある。この例では、1つのマイクログラフ430は、特殊コンポーネント405を含むデータフローグラフに接続される。特殊コンポーネント405の入力440は、マイクログラフ430の入力445へのリンクによって接続され、マイクログラフ430の出力450は、特殊コンポーネント405の出力455へのリンクによって接続される。マイクログラフ430の入力440および出力450は、例えば、入力および出力インターフェースコンポーネント、または、マイクログラフを特殊コンポーネントに埋め込むための他の任意のメカニズムを表す。
他のマイクログラフ410、415、420および425を格納するキャッシュは、マイクログラフ430を格納する同じメモリ内に位置し得る。いくつかの実施形態では、マイクログラフ410、415、420、425および430は、特殊コンポーネント405を実行する同じプロセス内のスレッドとして、または、そのプロセスの子プロセスとして実行することができる。あるいは、マイクログラフ410、415、420、425および430は、そのプロセスの同じメインスレッド内で実行することができる。いくつかの実施形態では、特殊コンポーネント405は、マイクログラフ410、415、420、425および430の複数のコピーを実行する。いくつかの実施形態では、特殊コンポーネント405は、そのコピーが「不正(dirty)」(オリジナルのマイクログラフに変更があったことを示す)としてマーキングされない限り、データ格納システム107に格納されたオリジナルのマイクログラフにアクセスする前に、キャッシュに格納された選択されたマイクログラフのコピーを使用する。選択されたマイクログラフのコピーがキャッシュにない場合、特殊コンポーネント405は、データ格納システム107からマイクログラフをロードする。いくつかの実施形態では、選択されたマイクログラフは、「オフライン」の状態にあるものとして示され(例えば、キャッシュへ登録することによって)、これは、選択されたマイクログラフが現時点で利用不可能である(例えば、開発者がマイクログラフを変更している最中であり得る)ことを示す。それに応じて、特殊コンポーネントは、選択されたマイクログラフをロードする際にエラーを示すことも、代わりのマイクログラフ(例えば、同様の能力を有する異なるマイクログラフ)をロードすることもできる。
図5Aを参照すると、一シナリオでは、単一の特殊コンポーネント505は、同時にデータフローと統合された複数のマイクログラフ510、515および520を有する。特殊コンポーネント505の入力ポート525は、入力データフローからの作業要素を複数のデータフローにパーティションで区切るパーティションコンポーネント557を使用して、マイクログラフ520、515および510の入力530、545、555のそれぞれに接続される。マイクログラフの出力535、550および560は、複数のデータフローから作業要素を集め、それらを単一の出力データフローにマージするコンポーネント562(「収集コンポーネント」と呼ばれる)を使用して、特殊コンポーネント505の出力540ポートに接続される。この構成では、特殊コンポーネント505は、受信データをマイクログラフ510、515および520にルーティングすることができる。例えば、コンポーネントが同一のマイクログラフの別々のコピーである場合、特殊コンポーネント505は、パーティションで区切る際に、ロードバランスアルゴリズム(例えば、ラウンドロビン、最小利用など)を利用することができる。
図5Bを参照すると、別のシナリオでは、データフローグラフ565は複数の特殊コンポーネントを含み、それにより、高度にカスタマイズ可能なコンテナデータフローグラフにおける柔軟な組合せのマイクログラフの構成が可能になる。この例では、データセットコンポーネント570からの作業要素(入力データのバッチまたは入力データの連続ストリームを表し得る)は、最初にデータ処理コンポーネント572によって処理され(例えば、作業要素を再フォーマットする)、次いで、リンク574上で第1の特殊コンポーネント576に送信される。特定のタイプの作業要素を検出する工程に応じて、コンポーネント576は、検出されたタイプの作業要素を処理するよう構成されたマイクログラフ578をロードする。次いで、第1の特殊コンポーネント576からの処理された出力作業要素は、第2の特殊コンポーネント580に送信され、第2の特殊コンポーネント580は、マイクログラフ582をロードする。この構成では、第2の特殊コンポーネント580にロードするために選択されたマイクログラフ582は、第1の選択されたマイクログラフ578の結果に依存する。結果として得られた出力作業要素は、データセットコンポーネント584に送信される。異なるマイクログラフの多数の組合せは、データフローグラフ内の戦略上の場所で特殊コンポーネントを使用して動的にロードすることができる。この簡単な例では、第1の特殊コンポーネント576にロードできる10個の異なる潜在的マイクログラフ、および、第2の特殊コンポーネント580にロードできる10個の異なる潜在的マイクログラフが存在すれば、データフローを処理している間に、要求に応じて動的に構築できる100個もの異なるデータフローグラフが存在し、データフローを100個の異なる実行中のデータフローグラフにパーティションで区切ることと比べると、潜在的にはるかに少ないリソースが必要とされ、各作業単位に対して100個の異なるデータフローグラフの1つを開始することと比べると、待ち時間は潜在的にはるかに短い。
5.前処理および後処理
特殊コンポーネントは、ロードされたマイクログラフ内のコンポーネントに加えて他のコンポーネントも含むことができる。図6を参照すると、一実施形態では、特殊コンポーネント605は、マイクログラフを実行する前に前処理を含み、マイクログラフを実行した後に後処理を含む(図では、前処理コンポーネント610および後処理コンポーネント620をマイクログラフ615の周囲に表す)。前処理および後処理機能は、例えば、トランザクション管理に関連し得る。いくつかの実施形態では、各マイクログラフ615は別々のトランザクションを表し、その事例では、前処理はトランザクションを開始し、後処理はトランザクションを終了することができる。他の実施形態では、マイクログラフ615は、より長いトランザクションにおけるチェックポイントを表し得る。例えば、マイクログラフ615は、2フェーズコミットプロトコルを使用するより長いトランザクションの一部であり得る。そのようなトランザクションは、複数の異なるマイクログラフまたは同じマイクログラフの複数の実行を使用して処理することができる。
前処理コンポーネント610は、データストア(図示せず)からマイクログラフ615をロードして、後にアクセスするため、マイクログラフキャッシュにロードしたマイクログラフを潜在的に格納する、または、メモリキャッシュ(図示せず)からロードしたマイクログラフバージョンにアクセスして、特殊コンポーネント605に統合することができる。後処理コンポーネント620は、特殊コンポーネント605のデータフローとのその統合からロードしたマイクログラフ615を取り除くことができる。さまざまな他の前処理および後処理機能を実行することができ、それには、例えば、マイクログラフ615での処理用にデータフロー内の記録を準備することによる前処理(例えば、記録の再フォーマット)、および、特殊コンポーネント605の出力に接続されたコンポーネントでの処理用にマイクログラフ615から受信した記録を準備することによる後処理(例えば、記録の再フォーマットによる)が含まれる。
6.データベース接続管理
図7を参照すると、いくつかのシナリオでは、コンポーネントが異なれば、異なるタイプのデータベースにアクセスできる必要がある。例えば、コンポーネント702は、あるベンダーによって提供されるデータベース706にアクセスする必要がある一方で、別のコンポーネント704は、別のベンダーによって提供されるデータベース704にアクセスする必要がある。一般に、コンポーネント702は、コンポーネントに統合されたライブラリ710、例えば、データベース706のベンダーによって供給されるライブラリにアクセスすることによってデータベース706にアクセスする。同様に、コンポーネント704は、コンポーネントに統合された別のライブラリ712、例えば、データベース708のベンダーによって供給されるライブラリにアクセスすることによってデータベース708にアクセスする。ライブラリは、特定のコンポーネントにコンパイルすることも、特定のコンポーネントに動的にリンクすることもできる。
図8を参照すると、特殊コンポーネント802は、複数の異なるマイクログラフ804、806および808を含み得る。この例では、マイクログラフ808は、特殊コンポーネント802内に埋め込まれており、マイクログラフ804および806は、必要に応じて動的に埋め込まれるアクセス可能なキャッシュにロードされる。いくつかのマイクログラフは、あるデータベース706にアクセスすることができ、他のマイクログラフは、別のデータベース708にアクセスすることができる。伝統的には、2つのデータベースへのアクセスには、ライブラリ710が第1のデータベース706をサポートし、別のライブラリ712が他のデータベース708をサポートして、特殊コンポーネント802と統合する必要がある場合がある。複数の異なるデータベースライブラリの統合は、特殊コンポーネント802に関連するバイナリサイズの増加をもたらし、ベンダーによって供給されるあるライブラリ710が異なるベンダーによって供給される別のライブラリ712との互換性を有さない場合は、予測不能の挙動をもたらす。例えば、非互換性は、識別名の不一致または異なるコンパイルモデルを含み得る。
非互換性を回避するおよび/またはバイナリサイズを削減する一方法は、特殊コンポーネントからライブラリを取り除き、代わりに、特殊コンポーネントを実行するプロセスからライブラリへ別々のコンピュータプロセスにアクセスさせることである。図9Aを参照すると、データベースライブラリ710および712は、特殊コンポーネント902から取り除かれている(例えば、コンポーネント902に、コンパイルも、動的リンクもされていない)。マイクログラフコンポーネント904、906および908は、クライアント/サーバインターフェース上でライブラリ710、712にアクセスすることによって、データベース706、708にアクセスする。ライブラリ710、712にアクセスするため、特殊コンポーネント902は、プロセス間通信を使用して外部プロセスで実行している対形成されたサーバスタブ912と通信する統合クライアントスタブ910を使用する。例えば、外部プロセスおよび特殊コンポーネント902は、共有メモリセグメントにアクセスすることによってデータを交換することができる。同様に、サーバスタブ920を実行している外部プロセスにアクセスするため、特殊コンポーネント902は、プロセス間通信を使用して外部プロセスで実行しているサーバスタブ920と通信する別の統合クライアントスタブ918を使用する。
サーバスタブ912は、データベース706へのアクセスを提供するためにデータベースライブラリ710と統合する。同様に、サーバスタブ920は、データベース708へのアクセスを提供するためにデータベースライブラリ712と統合する。一般に、クライアントスタブ910、918は、データベースライブラリ710、712より小容量のメモリフットプリントを有し、したがって、特殊コンポーネントは、より少ないメモリリソースを使用することができる。それに加えて、データベースライブラリが特殊コンポーネント902から移し出されているため、データベースライブラリ710、712間での非互換性のリスクがない。
図9Bを参照すると、いくつかの実施形態では、クライアントスタブ910、918およびサーバスタブ912、920は、データベースライブラリ710、712のそれぞれのアプリケーションプログラミングインターフェース(API)を密接に反映するよう構成される。ライブラリAPIの違いからマイクログラフ904、906および908を隔離するため、抽象化層930を特殊コンポーネント902に統合する。抽象化層930は、それらのデータベースに対するデータベースライブラリ間の違いに関わらず標準データベース動作を実行するための単一のAPIを備えた異なるデータベースにアクセスする必要があり得る複数の異なるコンポーネントをマイクログラフ内に提供する。いくつかの実施形態では、抽象化層930は、マイクログラフのコンポーネントからの要求をクライアントスタブ910、918のライブラリ特有のAPIへの特定の呼出しに変換する。いくつかの実施形態では、抽象化層930は、マイクログラフコンポーネントからの要求を一般的な呼出しとして渡し、それぞれのクライアントスタブは、一般的な呼出しからそのそれぞれのサーバスタブのAPIへのライブラリ特有の呼出しへの変換を実行するよう構成される。
7.コンパイルおよびパラメータ
図10を参照すると、一実施形態では、データフローグラフコンパイルおよび実行システム1000は、データフローグラフコンパイラ1015と、パラメータ分析器1030と、データフローグラフローダ1035と、データフローグラフ実行エンジン1040とを含む。コンパイラ1015は、パラメータセットデータストア1005からのパラメータセット内のパラメータに基づいて、未コンパイルのデータフローグラフデータストア1010からの、マイクログラフを含む未コンパイルのデータフローグラフを処理する。所定のパラメータに関連する値は、データフローグラフのさまざまな特性のいずれも決定することができる。コンパイラ1015は、パラメータセットからの値を使用してデータフローグラフをコンパイルし、コンパイル済みのデータフローグラフを生成する。コンパイル済みのデータフローグラフは、コンパイル済みのデータフローグラフデータストア1020に格納される。データストア1010および1020は、例えば、データ格納システム107内でホストされ得る。コンパイラ1015、パラメータ分析器1030およびローダ1035は、例えば、事前実行モジュール105の一部として実装することができる。実行エンジン1040は、実行モジュール106の一部として実装することができる。
パラメータセットデータストア1005は、パラメータのセットを含み、それぞれのパラメータセットは、データフローグラフに関連し得る。パラメータセットは、パラメータ要素群を含む。これらの要素はパラメータ名および式を含み、評価の際(例えば、計算を実行することによって、および、いくつかの事例では、他の参照されたパラメータの値を見出すことによって)、パラメータにバインドされる値に分解される。それぞれの未コンパイルのデータフローグラフは、1つまたは複数のパラメータセットに関連し得る。いくつかのパラメータは、コンパイルプロセスに影響を及ぼし得る。例えば、いくつかのパラメータは、ある特定の条件付きコンポーネントがデータフローグラフのコンパイル済みのバージョンに含まれているかどうかという点に影響を及ぼし得る。いくつかのパラメータは、コンパイル済みのデータフローグラフのロードおよび着手に影響を及ぼし得る。例えば、パラメータの値は、コンピュータ上に格納されたファイルへの経路、または、入力データを含むかもしくは出力データのターゲットであるデータセットコンポーネントに関連する格納場所(例えば、データベース内の表を表す格納場所)の名前であり得る。パラメータの値は、所定のコンポーネントが実行する必要がある並行方法の数を決定することができる。パラメータの値は、コンポーネントの間のリンクのデータフローが、リンクされたコンポーネントを実行する異なるプロセッサ間および/またはコンピュータ間の境界を超えるかどうかを決定することができ、超える場合は、共有メモリフローよりむしろTCP/IPフローを割り当てるようにすることができる。いくつかのシナリオでは、パラメータの値は、他のパラメータに依存し得る。例えば、通貨換算ルックアップファイルの名前は、日付を指定するパラメータに依存し得る。
一般に、パラメータは、コンテキストに基づくパラメータスコーピングの規則に従って値にバインドする。所定のパラメータは、第1のコンテキスト内に1つの値を有し、別のコンテキスト内に異なる値を有し得る。パラメータは、コンパイル中(例えば、パラメータがコンパイルプロセスに影響を及ぼす恐れがある場合は、コンパイラ1015により)、ランタイム時(例えば、ローダ1035がコンパイル済みのデータフローグラフデータ構造を実行エンジン1040用のメモリにロードする際)、データフローグラフを実行する間(例えば、ファイルの読み取りまたは書き込み直前まで、ファイル名を提供するパラメータの分解を遅延する)、または、いくつかの事例では、異なる時間の組合せで、値にバインドすることができる。パラメータの値は、例えば、ユーザがユーザインターフェース上で定義しても(例えば、プロンプトに応じて)、データソースに含まれるファイルから定義しても、同じコンテキストまたは異なるコンテキスト内の別のパラメータの面から定義してもよい。例えば、パラメータは、パラメータに別のパラメータに対して「同じ」関係を有するように指定することによって、異なるコンテキストからインポートすることができる(例えば、異なるコンポーネントのコンテキストにおいて評価されたパラメータ)。
データフローグラフ用のパラメータは、コンパイル中(例えば、コンパイラ1015により)など、いかなる入力データも受信する前にバインドすることができる。データフローグラフのコンパイル前またはコンパイル中にバインドされるそのようなパラメータは、「静的パラメータ」と呼ばれる。データフローグラフ用のパラメータは、ランタイム直前(例えば、ローダ1035により、データフロー内の新しいデータバッチまたは初期の作業単位を受信する工程に応じて)またはランタイム中(例えば、実行エンジン1040により、新しいマイクログラフをロードして、データフロー内の新しい作業単位を取り扱う工程に応じて)など、新しい入力データを受信する工程に応じてバインドすることもできる。データフローグラフのコンパイル後およびランタイム前後にバインドされるそのようなパラメータは、「動的パラメータ」と呼ばれる。いくつかの事例では、動的パラメータは、データフロー内のそれぞれの新しいデータバッチまたは作業単位を再評価する必要はない。静的パラメータは、通常、グラフをコンパイルする間に評価され、コンパイル済みのデータフローグラフに影響を及ぼす恐れがある。しかし、静的パラメータは、例えば、ランタイムまでコンパイルが起こらなければ、ランタイム時に評価することも可能である。動的パラメータはランタイム時に評価され、データフローグラフの開始の全体的な待ち時間に貢献することができるため、動的パラメータ評価は、いくつかの実施形態では、動的パラメータの能力を制限することによって最適化することができる。例えば、動的パラメータは、特定のデータタイプ(例えば、ストリング)に制限することができ、ある特定の式では動的パラメータを参照しない場合があり、より制限された結合を有し得る(例えば、「同じ」結合によって直接的または間接的に参照されない)。しかし、他の実施形態では、動的パラメータは、それらの機能性において制限されない場合があり、他のパラメータと同じように利用される。
コンパイラ1015がコンパイルプロセス中に静的パラメータと動的パラメータを区別することを可能にするさまざまな方法がある。一技法は、パラメータセット内の動的パラメータに対するフラグまたは特別な構文を使用し、動的パラメータをバインドしないままにすべきであることをコンパイラに信号伝達する。別の技法は、パラメータセットの静的パラメータと動的パラメータを異なるサブセットに分離し、静的パラメータのサブセットのみをコンパイラ1015に提供する。次いで、動的パラメータのサブセットをランタイム時にローダ1035に提供する。コンパイラ1015は、動的パラメータを分解した値にバインドすることはしないが、コンパイラ1015は、依然として、コンパイル中に動的パラメータをチェックする(例えば、不法な構文または他のエラーに対して)よう構成することができる。所定の式は、静的パラメータと動的パラメータの両方のリファレンスを含み得る。例えば、静的ディレクトリ名パラメータは、コンパイラ1015によって分解できるが、動的ファイル名パラメータは、未分解のまま残すことができ、コンパイラ1015は、コンパイルプロセスの間、未分解動的パラメータリファレンスを保存することができるが、その理由は、動的パラメータとして認識されるためである。
いくつかのシナリオでは、パラメータの存在または値は、データフローグラフ内のコンポーネントのトポロジおよび/または接続性に影響を及ぼす恐れがある。パラメータは、1つまたは複数のコンポーネントによって実行されるオペレーションが、グラフの特定の実行の間は実行すべきではないことを示す場合がある。これは、同じデータフローグラフが2つの異なるデータソース上で使用される場合に特に関連し得る。例えば、一方のデータソースは、第1の形式(例えば、UTF−8)であり得、他方のソースは、少なくとも一部の文字に対して異なるエンコードを使用する第2の形式のテキストを含み得る。両方のデータソースを処理するデータフローグラフは、第2の形式のテキストをUTF−8形式に変換する必要がある場合がある。しかし、UTF−8データソースにアクセスする際、いかなる変換も必要とされないであろう。パラメータを使用して、データは既にUTF−8形式であること、および、変換コンポーネントを擦り抜けられることをデータフローグラフに通知することも可能である。いくつかの構成では、パラメータ値に基づく条件付きコンポーネントの除外により、条件付きコンポーネントを取り外し、コンパイル済みのデータフローグラフ内のデータフローと置き換えることができる。条件付きコンポーネントの追加の説明については、参照により本明細書に組み込まれる米国特許第7,164,422号に記載されている。
図10を再度参照すると、コンパイラ1015は、未コンパイルのデータフローグラフデータストア1010から未コンパイルのデータフローグラフを入手する。コンパイラ1015は、パラメータセットデータストア1005からデータフローグラフをコンパイルするために使用されるパラメータセットを入手する。いくつかの事例では、複数の異なるパラメータセットを所定のデータフローグラフに使用することができ、それぞれのパラメータセットに対して、グラフコンパイラ1015は、未コンパイルのデータフローグラフの対応するバージョンをコンパイルすることができる。データフローグラフのそれぞれのコンパイル済みのバージョンは、パラメータセット内のパラメータの値に基づいて、いくつかのコンポーネントまたは他の実行可能なステートメントを含んでも除外してもよい。コンパイル済みのデータフローグラフは、例えば、コンパイル済みのデータフローグラフがシリアライズされる場合、コンパイル済みのデータフローグラフの生成に使用されたパラメータセットからのバインドされたパラメータ値と関連付けられる。コンパイル済みのデータフローグラフは、多くの異なるメカニズム(例えば、ルックアップ表、データベースにおける外部キーと主キーとの関係など)を使用して、関連するパラメータセットからのパラメータ値と関連付けられる。コンパイル済みのデータフローグラフデータストア1020は、例えば、読み取りおよび書き込み操作が可能な任意のファイルシステムまたはデータベースを使用して実装することができる。
データフローグラフ実行中(「ランタイム」時)、データは、入力データソース1025からシステムに入る。入力データソース1025は、さまざまな個別のデータソースを含み得、それぞれが独自の格納形式およびインターフェース(例えば、メインフレームによって使用されるデータベース表、スプレッドシートファイル、フラットテキストファイルまたはネイティブ形式)を有し得る。個別のデータソースは、システム1000とローカルで接続する、例えば、同じコンピュータシステム(例えば、ファイル)をホストとすることも、システム1000とリモートで接続する、例えば、ローカルまたは広域データネットワーク上でアクセスされるリモートコンピュータをホストとすることもできる。
パラメータ分析器1030およびローダ1035は、格納されたコンパイル済みのデータフローグラフからデータフローグラフを迅速にロードし、潜在的に長時間のコンパイルプロセスを回避することを可能にする一方で、受信した入力データに応じて、データフローグラフのコンパイル済みの異なるバージョンの間で選択することによってランタイム時の柔軟性を依然として可能にする。パラメータ分析器1030は、入力データソース1025から入力データを受信する工程に応じて、入力データおよび潜在的にランタイム時まで知られていな可能性がある他の値を分析し、ターゲットデータフローグラフで使用される1つまたは複数のパラメータ(潜在的に静的パラメータと動的パラメータの両方を含む)に対する値を決定する。ターゲットデータフローグラフは、異なるそれぞれのパラメータセットを使用して、コンパイル済みのデータフローグラフデータストア1020に格納された異なるバージョンにコンパイルされている未コンパイルのデータフローグラフである。ローダ1035は、パラメータ分析器1030によって提供される静的パラメータの任意の値をターゲットデータフローグラフのコンパイル済みのバージョンのいずれかを生成するのに使用された可能性のあるそれらの同じパラメータの任意の値と比較して一致するものを見出す。ローダ1035が静的パラメータ内で一致するものを見出せば、ローダ1035は、動的パラメータを分解しバインドすることができ、実行エンジン1040によって着手される結果として得られるデータフローグラフをロードする。ローダ1035が静的パラメータ内で一致するものを見出さなければ、ローダ1035は、入力データをエラープロセッサ(図示せず)にルーティングすることができるか、または、ローダ1035は、非最適化されたデフォルトとして異なる潜在的なパラメータ値を取り扱うことができる利用可能なターゲットデータフローグラフのバージョンを有し得る。あるいは、ローダは、適切な静的パラメータ値を備えたターゲットデータフローグラフの新しいバージョンをコンパイルするよう、コンパイラ1015を開始することができる。これらの事例では、必要に応じて、オンザフライでコンパイルすることができる。最初にターゲットデータフローグラフを実行する際は、ランタイム時にコンパイルし、バインドされた静的パラメータを備えた結果として得られたコンパイル済みのデータフローグラフを保存する。次いで、次にターゲットデータフローグラフを実行する際は、所望の静的パラメータ値を備えたコンパイル済みのバージョンが見出せなければ、再コンパイルするのみである。
例えば、パラメータA、B、C(AおよびBは静的、Cは動的)を含むパラメータセットに対し、A=真およびB=偽を使用してコンパイルされているターゲットデータフローグラフの第1のコンパイル済みのバージョン、ならびに、A=真およびB=真を使用してコンパイルされている同じターゲットデータフローグラフの第2のコンパイル済みのバージョンについて考慮する。パラメータ分析器1030が、受信した作業単位をA=真、B=真およびC=真のターゲットデータフローグラフを使用して処理すると判断すれば、第2のコンパイル済みのバージョンをロードすることができ、動的パラメータCは、ローダ1035によってバインドされる。パラメータ分析器1030が、受信した作業単位をA=偽、B=真およびC=真のターゲットデータフローグラフを使用して処理すると判断すれば、ターゲットデータフローグラフの新しいバージョンを、A=偽、B=真を用い、動的パラメータCがローダ1035によってバインドされた状態で、コンパイラ1015でコンパイルする。新たなコンパイル済みのバージョンもまた、後に使用するため、コンパイル済みのデータフローグラフデータストア1020に格納することができる。
ローダ1035は、選択されたコンパイル済みのデータフローグラフを、実行されるグラフ実行エンジン1040にアクセス可能なメモリにロードし、入力データソース1025からの入力データのフローを処理する。いくつかの実施形態では、ローダ1035の機能は、実行中のデータフローグラフ内の特殊コンポーネントによって実行され、ロードされたデータフローグラフは、特殊コンポーネントに埋め込まれたマイクログラフである。ローダ1035は、必ずしもコンパイル済みのデータフローグラフデータストア1020へのアクセスを必要としなくとも、メモリのキャッシュに格納されたまま(適切な静的パラメータ値が使用されたと判断した後)の選択されたコンパイル済みのデータフローグラフの以前にロードされたバージョンにアクセスすることができる。次いで、ロードされたデータフローグラフは、実行エンジン1040によって実行される。一旦ターゲットデータフローグラフによって入力データが処理されれば、データフローグラフをシステムからアンロードすることも、後にアクセスするためにキャッシュに格納することもできる。
一般に、データフローグラフのコンパイルは、グラフを実行可能な形式に変換するプロセスである。実行可能な形式は、プラットホーム特有の形式(例えば、マシンコード)でも、中間形式(例えば、バイトコード)でもあり得る。いくつかの実施形態では、コンパイラ1015は、静的パラメータを分解し、データフローグラフを横断し、実行するよう準備した一連のデータ構造に低減する。頂点およびリンクとして表されるデータフローグラフからマシンコードへの変換は、いくつかの工程を含み得る。これらの工程の1つは、データフローグラフを第三世代のプログラミング言語(例えば、C、C#、C++、Javaなど)に変換する動的コードの生成を含み得る。第三世代の言語から、標準コンパイラを使用して、機械可読コードまたはバイトコードを生成することができる。
いくつかの実施形態では、パラメータを静的パラメータとして取り扱うかまたは動的パラメータとして取り扱うかどうかは、コンパイル時まで決定されない。静的パラメータとして取り扱われる、評価されたパラメータおよびコンパイル済みのデータフローグラフエリアにハードコードされたそれらの値。一方、動的パラメータは、一般に、コンパイル時には評価されないが、代わりに、グラフのロードまたは実行の間に評価される。上記で説明されるように、パラメータセットによって決定された値は、ランタイム時の高速ロードおよび実行のためのデータフローグラフの異なるコンパイル済みのバージョンを準備する目的で使用される。パラメータセットからのパラメータの値がコンパイル済みのグラフに有効な唯一の可能な値を確実に定義する事例では、値はコンパイル済みのデータフローグラフにコード化され、パラメータは静的パラメータとして取り扱われる。パラメータセットからのパラメータの値が可能な値の範囲を提供する他の事例では、パラメータは、コンパイル時には静的パラメータとして評価されない場合があるが、代わりに、ロード時またはランタイム時に動的パラメータとして評価される場合がある。
また、コンパイルプロセスの間、コンパイラは、例えば、不要な実行可能ステートメントを排除することによって、データフローグラフを最適化することができる。例えば、データフローグラフは、条件付きコンポーネントを含み得る。条件付きコンポーネントは、1つまたは複数のパラメータの値に基づいて、コンパイル済みのデータフローグラフに含まれるかまたは同データフローグラフから除外される一連の実行可能ステートメントを含み得る。条件付きコンポーネントは、グラフの最適化または特殊化など、さまざまな目的のために使用することができる。グラフの最適化に対し、データセットからの値を使用しない場合は、アプリケーションはデータセットの処理または作成を省略することができ、したがって、グラフをより効果的に実行することができる。グラフの特殊化に対し、アプリケーションは、所望の詳細レベルに基づいて、いくつかの異なる出力データセットの生成を条件付ける場合も、グラフのいくつかの任意選択の部分の1つの実行を可能にする場合もある。
上記で説明される手法は、コンピュータ上で実行するためのソフトウェアを使用して実施することができる。例えば、ソフトウェアは、1つまたは複数のプログラムされたまたはプログラム可能なコンピュータシステム(それは、分散型、クライアント/サーバまたは格子などのさまざまなアーキテクチャのものである)上で実行する1つまたは複数のコンピュータプログラムの手順を形成する。コンピュータシステムはそれぞれ、少なくとも1つのプロセッサと、少なくとも1つのデータ格納システム(揮発性および不揮発性、持続性メモリ、ならびに/または、格納要素を含む)と、少なくとも1つの入力デバイスまたはポートと、少なくとも1つの出力デバイスまたはポートとを含む。ソフトウェアは、例えば、計算グラフの設計および構成に関連する他のサービスを提供する大規模なプログラムの1つまたは複数のモジュールを形成することができる。グラフのノードおよび要素は、コンピュータ可読媒体に格納されたデータ構造、または、データリポジトリに格納されたデータモデルに適合する他の組織化されたデータとして実装することができる。
ソフトウェアは、汎用もしくは特殊用途のプログラム可能なコンピュータによる読み取りが可能なCD−ROMなどの記憶媒体上で提供されるか、または、ネットワークの通信媒体上で、ソフトウェアが実行されるコンピュータに送達される(伝播信号で符号化される)。機能のすべては、特殊用途のコンピュータ上か、または、コプロセッサなどの特殊用途のハードウェアを使用して実行される。ソフトウェアは、ソフトウェアによって指定される計算の異なる部分は異なるコンピュータによって実行される分散様式で実施される。それぞれのそのようなコンピュータプログラムは、好ましくは、汎用もしくは特殊用途のプログラム可能なコンピュータによる読み取りが可能な記憶媒体もしくはデバイス(例えば、ソリッドステートメモリもしくは媒体、または、磁気もしくは光媒体)上に格納されるか、または、同記憶媒体もしくはデバイスにダウンロードされるが、それは、コンピュータシステムで記憶媒体もしくはデバイスを読み取り、本明細書に記載される手順を実行する際にコンピュータを構成および動作するためである。また、本発明のシステムは、コンピュータ可読記憶媒体として実装され、コンピュータプログラムを用いて構成されるものと考慮され得、そのように構成された記憶媒体は、特定の事前に定義された様式でコンピュータシステムを動作させ、本明細書に記載される機能を実行する。
本発明の多くの実施形態について説明してきた。それにもかかわらず、本発明の精神および範囲から逸脱することなく、さまざまな変更が行われることが理解されよう。例えば、上記で説明された工程のいくつかは、順番に依存しないものであり得、したがって、説明されている順番とは異なる順番で実行することができる。
前述の説明は、例示を意図するものであり、本発明の範囲を限定するものではなく、本発明の範囲は、添付の特許請求の範囲によって定義されることを理解されたい。他の実施形態は、以下の特許請求の範囲内にある。

Claims (48)

  1. データ格納システムに格納されたコンパイル済みのデータフローグラフを使用してデータ処理システム内のデータを処理するための方法であって、
    それぞれが1つまたは複数の作業要素を含む複数の作業単位を受信する工程と、
    前記作業単位の第1のものを受信する工程に応じて、前記データ処理システムにロードされた第1のコンパイル済みのデータフローグラフを使用して前記第1の作業単位を処理する工程とを含み、前記第1のコンパイル済みのデータフローグラフは、データ処理コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表すノードを含む第1のデータフローグラフを表す1つまたは複数のデータ構造にコンパイルされており、前記処理する工程は、
    (a)前記第1の作業単位を分析して前記第1の作業単位の特性を決定する工程と、
    (b)前記決定された前記第1の作業単位の特性を有する作業単位を処理するために、前記第1の作業単位を受信する前にコンパイルされた少なくともいくつかのコンパイル済みのデータフローグラフを含む前記データ格納システムに格納された複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、
    (c)前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1の作業単位の受信前に前記データ処理システムで実行しているデータ処理プログラムにロードする工程と、
    (d)前記第1のデータフローグラフを使用して前記第1の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む、方法。
  2. 前記ロードする工程は、前記第1のコンパイル済みのデータフローグラフから前記第1のデータフローグラフを表すデータ構造を取得し、前記取得したデータ構造を前記データ処理プログラムにロードする工程をさらに含む、請求項1に記載の方法。
  3. 前記データ処理プログラムは第2のデータフローグラフを含み、前記取得したデータ構造をロードする工程は、前記第1のデータフローグラフ内の前記データ処理コンポーネントを実行するための第1のプロセスを提供するよう構成された前記第2のデータフローグラフの包含コンポーネント内に前記第1のデータフローグラフを埋め込む工程を含む、請求項2に記載の方法。
  4. 前記データ処理プログラムは第2のデータフローグラフを含み、前記取得したデータ構造をロードする工程は、前記第1のデータフローグラフを前記第2のデータフローグラフの包含コンポーネント内に埋め込む工程を含み、前記埋め込む工程は、
    前記包含コンポーネントの入力と接続されたリンクから受信した入力作業要素のフローを前記第1のデータフローグラフの入力と接続する工程と、
    前記生成された1つまたは複数の出力作業要素を前記包含コンポーネントの出力と接続されたリンクと接続する工程とを含む、請求項2に記載の方法。
  5. 前記1つまたは複数の出力作業要素を生成した後に、前記取得した前記第1のデータフローグラフを表すデータ構造をアンロードする工程と、前記第1の作業単位が到着した後かつ前記取得した前記第1のデータフローグラフを表すデータ構造を前記アンロードする工程の前に到着する作業単位内に存在する作業要素をバッファリングする工程とをさらに含む、請求項2に記載の方法。
  6. 第2のコンパイル済みのデータフローグラフを前記データ処理システムにロードする工程をさらに含み、前記第2のコンパイル済みのデータフローグラフは、第2のデータフローグラフを表すデータ構造にコンパイルされており、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第1のデータフローグラフを第3のデータフローグラフの第1の包含コンポーネント内に埋め込む工程を含み、前記第2のコンパイル済みのデータフローグラフを前記データ処理システムにロードする工程は、前記第2のデータフローグラフを前記第3のデータフローグラフの第2の包含コンポーネント内に埋め込む工程を含む、請求項1に記載の方法。
  7. 第2の作業単位を受信する工程に応じて前記データ処理システムにロードされた第2のコンパイル済みのデータフローグラフを使用して、前記第1の作業単位を処理した後に前記第2の作業単位を処理する工程をさらに含み、前記第2のコンパイル済みのデータフローグラフは、第2のデータフローグラフを表すデータ構造にコンパイルされており、前記処理する工程は、
    前記第2の作業単位を分析して前記第2の作業単位の特性を決定する工程と、
    前記決定された前記第2の作業単位の特性を有する作業単位を処理するために、前記第2の作業単位を受信する前に、コンパイルされた前記データ格納システムに格納された前記複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第2のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程と、
    前記第2のデータフローグラフを使用して前記第2の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む、請求項1に記載の方法。
  8. 前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第1のデータフローグラフを第3のデータフローグラフの包含コンポーネント内に埋め込む工程を含み、前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第2のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第2のデータフローグラフを前記第3のデータフローグラフの前記包含コンポーネント内に埋め込む工程を含む、請求項7に記載の方法。
  9. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素内に含まれるコンパイル済みのデータフローグラフ用の識別子を読み取る工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記識別子を、前記1つまたは複数のコンパイル済みのデータフローグラフに関連する1つまたは複数の識別子と一致させる工程を含む、請求項1に記載の方法。
  10. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素を特徴付ける複数の既定のタイプの1つを特定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記1つまたは複数のコンパイル済みのデータフローグラフに対応する1つまたは複数のデータフローグラフが、前記特定されたタイプによって特徴付けられた作業要素を処理するよう構成されているかを判断する工程を含む、請求項1に記載の方法。
  11. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素内に含まれるコンテンツの特性を特定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記1つまたは複数のコンパイル済みのデータフローグラフに対応する1つまたは複数のデータフローグラフが、前記特定された特性を有するコンテンツを含む作業要素を処理するよう構成されているかを判断する工程を含む、請求項1に記載の方法。
  12. 前記第1の作業単位を分析する工程は、前記第1のデータフローグラフの1つまたは複数のパラメータの第1のセット用の値として指定された前記第1の作業単位に関連する1つまたは複数の値を決定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記特定された1つまたは複数のコンパイル済みのデータフローグラフが、前記決定された前記第1の作業単位に関連する1つまたは複数の値と一致するそれぞれの値にバインドされた1つまたは複数のパラメータの第1のセットを用いて前記第1のデータフローグラフを表すデータ構造にコンパイルされたかを判断する工程を含む、請求項1に記載の方法。
  13. データ格納システムに格納されたコンパイル済みのデータフローグラフを使用してデータを処理するためのデータ処理システムであって、
    それぞれが1つまたは複数の作業要素を含む複数の作業単位を受信するよう構成された入力デバイスまたはポートと、
    第1の作業単位を受信する工程に応じて、前記データ処理システムにロードされた第1のコンパイル済みのデータフローグラフを使用して前記第1の作業単位を処理するよう構成された少なくとも1つのプロセッサとを含み、前記第1のコンパイル済みのデータフローグラフは、データ処理コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表すノードを含む第1のデータフローグラフを表す1つまたは複数のデータ構造にコンパイルされており、前記処理する工程は、
    前記第1の作業単位を分析して前記第1の作業単位の特性を決定する工程と、
    前記決定された前記第1の作業単位の特性を有する作業単位を処理するために、前記第1の作業単位を受信する前に、コンパイルされた少なくともいくつかのコンパイル済みのデータフローグラフを含む前記データ格納システムに格納された複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1の作業単位の受信前に前記データ処理システムで実行しているデータ処理プログラムにロードする工程と、
    前記第1のデータフローグラフを使用して前記第1の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む、データ処理システム。
  14. データ格納システムに格納されたコンパイル済みのデータフローグラフを使用してデータを処理するためのデータ処理システムであって、
    それぞれが1つまたは複数の作業要素を含む複数の作業単位を受信するための手段と、
    前記作業単位の第1のものを受信する工程に応じて、前記データ処理システムにロードされた第1のコンパイル済みのデータフローグラフを使用して、前記第1の作業単位を処理するための手段とを含み、前記第1のコンパイル済みのデータフローグラフは、データ処理コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表すノードを含む第1のデータフローグラフを表す1つまたは複数のデータ構造にコンパイルされており、前記処理する工程は、
    前記第1の作業単位を分析して前記第1の作業単位の特性を決定する工程と、
    前記決定された前記第1の作業単位の特性を有する作業単位を処理するために、前記第1の作業単位を受信する前に、コンパイルされた少なくともいくつかのコンパイル済みのデータフローグラフを含む前記データ格納システムに格納された複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1の作業単位の受信前に前記データ処理システムで実行しているデータ処理プログラムにロードする工程と、
    前記第1のデータフローグラフを使用して前記第1の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む、データ処理システム。
  15. データ格納システムに格納されたコンパイル済みのデータフローグラフを使用してデータ処理システム内のデータを処理するためのコンピュータプログラムを格納するコンピュータ可読媒体であって、前記コンピュータプログラムは、コンピュータに、
    それぞれが1つまたは複数の作業要素を含む複数の作業単位を受信させ、
    前記作業単位の第1のものを受信する工程に応じて、前記データ処理システムにロードされた第1のコンパイル済みのデータフローグラフを使用して、前記第1の作業単位を処理させるための命令を含み、前記第1のコンパイル済みのデータフローグラフは、データ処理コンポーネント間の作業要素のフローを表すリンクによって接続されたデータ処理コンポーネントを表すノードを含む第1のデータフローグラフを表す1つまたは複数のデータ構造にコンパイルされており、前記処理する工程は、
    前記第1の作業単位を分析して前記第1の作業単位の特性を決定する工程と、
    前記決定された前記第1の作業単位の特性を有する作業単位を処理するために、前記第1の作業単位を受信する前に、コンパイルされた少なくともいくつかのコンパイル済みのデータフローグラフを含む前記データ格納システムに格納された複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1の作業単位の受信前に前記データ処理システムで実行しているデータ処理プログラムにロードする工程と、
    前記第1のデータフローグラフを使用して前記第1の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む、コンピュータ可読媒体。
  16. 前記ロードする工程は、前記第1のコンパイル済みのデータフローグラフから前記第1のデータフローグラフを表すデータ構造を取得し、前記取得したデータ構造を前記データ処理プログラムにロードする工程をさらに含む、請求項13に記載のシステム。
  17. 前記データ処理プログラムは第2のデータフローグラフを含み、前記取得したデータ構造をロードする工程は、前記第1のデータフローグラフ内の前記データ処理コンポーネントを実行するための第1のプロセスを提供するよう構成された前記第2のデータフローグラフの包含コンポーネント内に前記第1のデータフローグラフを埋め込む工程を含む、請求項16に記載のシステム。
  18. 前記データ処理プログラムは第2のデータフローグラフを含み、前記取得したデータ構造をロードする工程は、前記第1のデータフローグラフを前記第2のデータフローグラフの包含コンポーネント内に埋め込む工程を含み、前記埋め込む工程は、
    前記包含コンポーネントの入力と接続されたリンクから受信した入力作業要素のフローを前記第1のデータフローグラフの入力と接続する工程と、
    前記生成された1つまたは複数の出力作業要素を前記包含コンポーネントの出力と接続されたリンクと接続する工程とを含む、請求項16に記載のシステム。
  19. 前記処理する工程は、前記1つまたは複数の出力作業要素を生成した後に、前記取得した前記第1のデータフローグラフを表すデータ構造をアンロードする工程をさらに含み、
    前記処理する工程は、前記第1の作業単位が到着した後かつ前記取得した前記第1のデータフローグラフを表すデータ構造を前記アンロードする工程の前に到着する作業単位内に存在する作業要素をバッファリングする工程をさらに含む、請求項16に記載のシステム。
  20. 前記処理する工程は、第2のコンパイル済みのデータフローグラフを前記データ処理システムにロードする工程をさらに含み、前記第2のコンパイル済みのデータフローグラフは、第2のデータフローグラフを表すデータ構造にコンパイルされており、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第1のデータフローグラフを第3のデータフローグラフの第1の包含コンポーネント内に埋め込む工程を含み、前記第2のコンパイル済みのデータフローグラフを前記データ処理システムにロードする工程は、前記第2のデータフローグラフを前記第3のデータフローグラフの第2の包含コンポーネント内に埋め込む工程を含む、請求項13に記載のシステム。
  21. 前記処理する工程は、第2の作業単位を受信する工程に応じて、前記データ処理システムにロードされた第2のコンパイル済みのデータフローグラフを使用して、前記第1の作業単位を処理した後に前記第2の作業単位を処理する工程をさらに含み、前記第2のコンパイル済みのデータフローグラフは、第2のデータフローグラフを表すデータ構造にコンパイルされており、前記処理する工程は、
    前記第2の作業単位を分析して前記第2の作業単位の特性を決定する工程と、
    前記決定された前記第2の作業単位の特性を有する作業単位を処理するために、前記第2の作業単位を受信する前に、コンパイルされた前記データ格納システムに格納された前記複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第2のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程と、
    前記第2のデータフローグラフを使用して前記第2の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む、請求項13に記載のシステム。
  22. 前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第1のデータフローグラフを第3のデータフローグラフの包含コンポーネント内に埋め込む工程を含み、前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第2のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第2のデータフローグラフを前記第3のデータフローグラフの前記包含コンポーネント内に埋め込む工程を含む、請求項21に記載のシステム。
  23. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素内に含まれるコンパイル済みのデータフローグラフ用の識別子を読み取る工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記識別子を、前記1つまたは複数のコンパイル済みのデータフローグラフに関連する識別子と一致させる工程を含む、請求項13に記載のシステム。
  24. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素を特徴付ける複数の既定のタイプの1つを特定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記1つまたは複数のコンパイル済みのデータフローグラフに対応するデータフローグラフが、前記特定されたタイプによって特徴付けられた作業要素を処理するよう構成されているかを判断する工程を含む、請求項13に記載のシステム。
  25. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素内に含まれるコンテンツの特性を特定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記1つまたは複数のコンパイル済みのデータフローグラフに対応するデータフローグラフが、前記特定された特性を有するコンテンツを含む作業要素を処理するよう構成されているかを判断する工程を含む、請求項13に記載のシステム。
  26. 前記第1の作業単位を分析する工程は、前記第1のデータフローグラフの1つまたは複数のパラメータの第1のセット用の値として指定された前記第1の作業単位に関連する1つまたは複数の値を決定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記特定された1つまたは複数のコンパイル済みのデータフローグラフが、前記決定された前記第1の作業単位に関連する1つまたは複数の値と一致するそれぞれの値にバインドされた前記1つまたは複数のパラメータの第1のセットを用いて前記第1のデータフローグラフを表すデータ構造にコンパイルされたかを判断する工程を含む、請求項13に記載のシステム。
  27. 前記ロードする工程は、前記第1のコンパイル済みのデータフローグラフから前記第1のデータフローグラフを表すデータ構造を取得し、前記取得したデータ構造を前記データ処理プログラムにロードする工程をさらに含む、請求項14に記載のシステム。
  28. 前記データ処理プログラムは第2のデータフローグラフを含み、前記取得したデータ構造をロードする工程は、前記第1のデータフローグラフ内の前記データ処理コンポーネントを実行するための第1のプロセスを提供するよう構成された前記第2のデータフローグラフの包含コンポーネント内に前記第1のデータフローグラフを埋め込む工程を含む、請求項27に記載のシステム。
  29. 前記データ処理プログラムは第2のデータフローグラフを含み、前記取得したデータ構造をロードする工程は、前記第1のデータフローグラフを前記第2のデータフローグラフの包含コンポーネント内に埋め込む工程を含み、前記埋め込む工程は、
    前記包含コンポーネントの入力と接続されたリンクから受信した入力作業要素のフローを前記第1のデータフローグラフの入力と接続する工程と、
    前記生成された1つまたは複数の出力作業要素を前記包含コンポーネントの出力と接続されたリンクと接続する工程とを含む、請求項27に記載のシステム。
  30. 前記1つまたは複数の出力作業要素を生成した後に、前記取得した前記第1のデータフローグラフを表すデータ構造をアンロードする手段と、
    前記第1の作業単位が到着した後かつ前記取得した前記第1のデータフローグラフを表すデータ構造を前記アンロードする工程の前に到着する作業単位内に存在する作業要素をバッファリングする手段とをさらに含む、請求項27に記載のシステム。
  31. 第2のコンパイル済みのデータフローグラフを前記データ処理システムにロードする手段をさらに含み、前記第2のコンパイル済みのデータフローグラフは、第2のデータフローグラフを表すデータ構造にコンパイルされており、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第1のデータフローグラフを第3のデータフローグラフの第1の包含コンポーネント内に埋め込む工程を含み、前記第2のコンパイル済みのデータフローグラフを前記データ処理システムにロードする工程は、前記第2のデータフローグラフを前記第3のデータフローグラフの第2の包含コンポーネント内に埋め込む工程を含む、請求項14に記載のシステム。
  32. 第2の作業単位を受信する工程に応じて、前記データ処理システムにロードされた第2のコンパイル済みのデータフローグラフを使用して、前記第1の作業単位を処理した後に前記第2の作業単位を処理する手段をさらに含み、前記第2のコンパイル済みのデータフローグラフは、第2のデータフローグラフを表すデータ構造にコンパイルされており、前記処理する工程は、
    前記第2の作業単位を分析して前記第2の作業単位の特性を決定する工程と、
    前記決定された前記第2の作業単位の特性を有する作業単位を処理するために、前記第2の作業単位を受信する前に、コンパイルされた前記データ格納システムに格納された前記複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第2のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程と、
    前記第2のデータフローグラフを使用して前記第2の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む、請求項14に記載のシステム。
  33. 前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第1のデータフローグラフを第3のデータフローグラフの包含コンポーネント内に埋め込む工程を含み、前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第2のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第2のデータフローグラフを前記第3のデータフローグラフの前記包含コンポーネント内に埋め込む工程を含む、請求項32に記載のシステム。
  34. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素内に含まれるコンパイル済みのデータフローグラフ用の識別子を読み取る工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記識別子を、前記1つまたは複数のコンパイル済みのデータフローグラフに関連する識別子と一致させる工程を含む、請求項14に記載のシステム。
  35. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素を特徴付ける複数の既定のタイプの1つを特定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記1つまたは複数のコンパイル済みのデータフローグラフに対応するデータフローグラフが、前記特定されたタイプによって特徴付けられた作業要素を処理するよう構成されているかを判断する工程を含む、請求項14に記載のシステム。
  36. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素内に含まれるコンテンツの特性を特定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記1つまたは複数のコンパイル済みのデータフローグラフに対応するデータフローグラフが、前記特定された特性を有するコンテンツを含む作業要素を処理するよう構成されているかを判断する工程を含む、請求項14に記載のシステム。
  37. 前記第1の作業単位を分析する工程は、前記第1のデータフローグラフの1つまたは複数のパラメータの第1のセット用の値として指定された前記第1の作業単位に関連する1つまたは複数の値を決定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記特定された1つまたは複数のコンパイル済みのデータフローグラフが、前記決定された前記第1の作業単位に関連する1つまたは複数の値と一致するそれぞれの値にバインドされた前記1つまたは複数のパラメータの第1のセットを用いて前記第1のデータフローグラフを表すデータ構造にコンパイルされたかを判断する工程を含む、請求項14に記載のシステム。
  38. 前記ロードする工程は、前記第1のコンパイル済みのデータフローグラフから前記第1のデータフローグラフを表すデータ構造を取得し、前記取得したデータ構造を前記データ処理プログラムにロードする工程をさらに含む、請求項15に記載の媒体。
  39. 前記データ処理プログラムは第2のデータフローグラフを含み、前記取得したデータ構造をロードする工程は、前記第1のデータフローグラフ内の前記データ処理コンポーネントを実行するための第1のプロセスを提供するよう構成された前記第2のデータフローグラフの包含コンポーネント内に前記第1のデータフローグラフを埋め込む工程を含む、請求項38に記載の媒体。
  40. 前記データ処理プログラムは第2のデータフローグラフを含み、前記取得したデータ構造をロードする工程は、前記第1のデータフローグラフを前記第2のデータフローグラフの包含コンポーネント内に埋め込む工程を含み、前記埋め込む工程は、
    前記包含コンポーネントの入力と接続されたリンクから受信した入力作業要素のフローを前記第1のデータフローグラフの入力と接続する工程と、
    前記生成された1つまたは複数の出力作業要素を前記包含コンポーネントの出力と接続されたリンクと接続する工程とを含む、請求項38に記載の媒体。
  41. 前記命令は、前記コンピュータにさらに、前記1つまたは複数の出力作業要素を生成した後に、前記取得した前記第1のデータフローグラフを表すデータ構造をアンロードさせ、
    前記命令は、前記コンピュータにさらに、前記第1の作業単位が到着した後かつ前記取得した前記第1のデータフローグラフを表すデータ構造を前記アンロードする工程の前に到着する作業単位内に存在する作業要素をバッファリングさせる、請求項38に記載の媒体。
  42. 前記命令は、前記コンピュータにさらに、第2のコンパイル済みのデータフローグラフを前記データ処理システムにロードさせ、前記第2のコンパイル済みのデータフローグラフは、第2のデータフローグラフを表すデータ構造にコンパイルされており、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第1のデータフローグラフを第3のデータフローグラフの第1の包含コンポーネント内に埋め込む工程を含み、前記第2のコンパイル済みのデータフローグラフを前記データ処理システムにロードする工程は、前記第2のデータフローグラフを前記第3のデータフローグラフの第2の包含コンポーネント内に埋め込む工程を含む、請求項15に記載の媒体。
  43. 前記命令は、前記コンピュータにさらに、第2の作業単位を受信する工程に応じて、前記データ処理システムにロードされた第2のコンパイル済みのデータフローグラフを使用して、前記第1の作業単位を処理した後に前記第2の作業単位を処理させ、前記第2のコンパイル済みのデータフローグラフは、第2のデータフローグラフを表すデータ構造にコンパイルされており、前記処理する工程は、
    前記第2の作業単位を分析して前記第2の作業単位の特性を決定する工程と、
    前記決定された前記第2の作業単位の特性を有する作業単位を処理するために、前記第2の作業単位を受信する前に、コンパイルされた前記データ格納システムに格納された前記複数のコンパイル済みのデータフローグラフから1つまたは複数のコンパイル済みのデータフローグラフを特定する工程と、
    前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第2のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程と、
    前記第2のデータフローグラフを使用して前記第2の作業単位内の少なくとも1つの作業要素から1つまたは複数の出力作業要素を生成する工程とを含む、請求項15に記載の媒体。
  44. 前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第1のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第1のデータフローグラフを第3のデータフローグラフの包含コンポーネント内に埋め込む工程を含み、前記特定された1つまたは複数のコンパイル済みのデータフローグラフの1つを、前記第2のコンパイル済みのデータフローグラフとして前記データ処理システムにロードする工程は、前記第2のデータフローグラフを前記第3のデータフローグラフの前記包含コンポーネント内に埋め込む工程を含む、請求項43に記載の媒体。
  45. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素内に含まれるコンパイル済みのデータフローグラフ用の識別子を読み取る工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記識別子を、前記1つまたは複数のコンパイル済みのデータフローグラフに関連する識別子と一致させる工程を含む、請求項15に記載の媒体。
  46. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素を特徴付ける複数の既定のタイプの1つを特定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記1つまたは複数のコンパイル済みのデータフローグラフに対応するデータフローグラフが、前記特定されたタイプによって特徴付けられた作業要素を処理するよう構成されているかを判断する工程を含む、請求項15に記載の媒体。
  47. 前記第1の作業単位を分析する工程は、前記第1の作業単位の作業要素内に含まれるコンテンツの特性を特定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記1つまたは複数のコンパイル済みのデータフローグラフに対応するデータフローグラフが、前記特定された特性を有するコンテンツを含む作業要素を処理するよう構成されているかを判断する工程を含む、請求項15に記載の媒体。
  48. 前記第1の作業単位を分析する工程は、前記第1のデータフローグラフの1つまたは複数のパラメータの第1のセット用の値として指定された前記第1の作業単位に関連する1つまたは複数の値を決定する工程を含み、
    前記1つまたは複数のコンパイル済みのデータフローグラフを特定する工程は、前記特定された1つまたは複数のコンパイル済みのデータフローグラフが、前記決定された前記第1の作業単位に関連する1つまたは複数の値と一致するそれぞれの値にバインドされた前記1つまたは複数のパラメータの第1のセットを用いて前記第1のデータフローグラフを表すデータ構造にコンパイルされたかを判断する工程を含む、請求項15に記載の媒体。
JP2016040815A 2010-06-15 2016-03-03 グラフに基づく計算の動的ロード Active JP6116721B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US35512910P 2010-06-15 2010-06-15
US61/355,129 2010-06-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013515468A Division JP5898188B2 (ja) 2010-06-15 2011-06-15 グラフに基づく計算の動的ロード

Publications (2)

Publication Number Publication Date
JP2016129059A JP2016129059A (ja) 2016-07-14
JP6116721B2 true JP6116721B2 (ja) 2017-04-19

Family

ID=44627481

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013515468A Active JP5898188B2 (ja) 2010-06-15 2011-06-15 グラフに基づく計算の動的ロード
JP2016040815A Active JP6116721B2 (ja) 2010-06-15 2016-03-03 グラフに基づく計算の動的ロード

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2013515468A Active JP5898188B2 (ja) 2010-06-15 2011-06-15 グラフに基づく計算の動的ロード

Country Status (9)

Country Link
US (2) US8875145B2 (ja)
EP (2) EP2583168B1 (ja)
JP (2) JP5898188B2 (ja)
KR (2) KR20150042297A (ja)
CN (2) CN107066241B (ja)
AU (1) AU2011268459B2 (ja)
CA (1) CA2801573C (ja)
HK (1) HK1249218A1 (ja)
WO (1) WO2011159759A1 (ja)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
WO2010093879A1 (en) 2009-02-13 2010-08-19 Ab Initio Technology Llc Managing task execution
JP6084037B2 (ja) 2009-12-14 2017-02-22 アビニシオ テクノロジー エルエルシー ユーザ・インターフェース要素の指定
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
EP2583168B1 (en) 2010-06-15 2017-11-08 Ab Initio Technology LLC Dynamically loading graph-based computations
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9424010B2 (en) 2010-08-30 2016-08-23 International Business Machines Corporation Extraction of functional semantics and isolated dataflow from imperative object oriented languages
US8464153B2 (en) * 2011-03-01 2013-06-11 Lucasfilm Entertainment Company Ltd. Copying an object in an animation creation application
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
TW201322022A (zh) * 2011-11-24 2013-06-01 Alibaba Group Holding Ltd 分散式資料流處理方法及其系統
US9489184B2 (en) * 2011-12-30 2016-11-08 Oracle International Corporation Adaptive selection of programming language versions for compilation of software programs
US20150082314A1 (en) * 2012-04-18 2015-03-19 Nec Corporation Task placement device, task placement method and computer program
US9032362B2 (en) * 2012-09-10 2015-05-12 Sap Se System and method for generating high performance calculators for calculation graphs
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9507682B2 (en) * 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US10108521B2 (en) * 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
US9189622B2 (en) * 2013-04-30 2015-11-17 Vmware, Inc. Static redirection for objective C
US9104432B2 (en) * 2013-06-24 2015-08-11 International Business Machines Corporation Extracting stream graph structure in a computer language by pre-executing a deterministic subset
EP3092557B1 (en) * 2013-12-05 2024-03-27 AB Initio Technology LLC Managing interfaces for dataflow graphs composed of sub-graphs
CN105793818B (zh) 2013-12-06 2019-09-17 起元科技有限公司 源代码翻译
CA2931335C (en) * 2013-12-13 2022-08-23 Ab Initio Technology Llc Dynamically determing a mode of a data processing application
US10262078B2 (en) * 2014-02-10 2019-04-16 Apple Inc. Systems and methods for optimizing performance of graph operations
US9098377B1 (en) 2014-05-30 2015-08-04 Semmle Limited Aggregating source code metric values
US10928970B2 (en) 2014-07-18 2021-02-23 Apple Inc. User-interface for developing applications that apply machine learning
US9330199B2 (en) 2014-07-21 2016-05-03 Facebook, Inc. Striping of directed graphs and nodes with improved functionality
CN104216766B (zh) * 2014-08-26 2017-08-29 华为技术有限公司 对流数据进行处理的方法及装置
JP6626497B2 (ja) 2014-09-02 2019-12-25 アビニシオ テクノロジー エルエルシー タスクの呼び出しの管理
US9933918B2 (en) 2014-09-02 2018-04-03 Ab Initio Technology Llc Specifying control and data connections in graph-based programs
EP3189421B1 (en) * 2014-09-02 2023-05-03 AB Initio Technology LLC Compiling graph-based program specifications
WO2016036822A1 (en) 2014-09-02 2016-03-10 Ab Initio Technology Llc Managing execution state of components in a graph-based program specification for controlling their associated tasks
CA2959627C (en) * 2014-09-02 2020-06-16 Ab Initio Technology Llc Executing graph-based program specifications
CA2959525C (en) * 2014-09-02 2021-08-03 Ab Initio Technology Llc Controlling data processing tasks
US9760406B2 (en) * 2014-09-02 2017-09-12 Ab Initio Technology Llc Controlling data processing tasks
US9916187B2 (en) * 2014-10-27 2018-03-13 Oracle International Corporation Graph database system that dynamically compiles and executes custom graph analytic programs written in high-level, imperative programming language
US9880818B2 (en) 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
US10055333B2 (en) * 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US9921859B2 (en) * 2014-12-12 2018-03-20 The Regents Of The University Of Michigan Runtime compiler environment with dynamic co-located code execution
US9817930B1 (en) * 2014-12-31 2017-11-14 Cadence Design Systems Inc. Method, system, and computer program product for verifying an electronic circuit design with a graph-based proof flow
GB2535230B (en) * 2015-02-13 2019-05-08 Raptor Oil Ltd Dynamically adjustable data flow graph for digital signal processing
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US20160364794A1 (en) * 2015-06-09 2016-12-15 International Business Machines Corporation Scoring transactional fraud using features of transaction payment relationship graphs
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US9910685B2 (en) 2015-08-13 2018-03-06 Samsung Electronics Co., Ltd. System and method for identifying, indexing, and navigating to deep states of mobile applications
US9983892B2 (en) * 2015-11-06 2018-05-29 Samsung Electronics Co., Ltd. Deep linking to mobile application states through programmatic replay of user interface events
US9858094B2 (en) 2015-11-10 2018-01-02 Samsung Electronics Co., Ltd. Monitoring and actuation of view controller parameters to reach deep states without manual developer intervention
CN108475189B (zh) 2015-12-21 2021-07-09 起元技术有限责任公司 子图接口生成的方法、系统及计算机可读介质
US10506016B2 (en) 2016-05-19 2019-12-10 Oracle International Corporation Graph analytic engine that implements efficient transparent remote access over representational state transfer
US10936289B2 (en) 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US10318355B2 (en) * 2017-01-24 2019-06-11 Oracle International Corporation Distributed graph processing system featuring interactive remote control mechanism including task cancellation
US11194551B2 (en) 2017-06-07 2021-12-07 Ab Initio Technology Llc Dataflow graph configuration
CN107632890B (zh) * 2017-08-10 2021-03-02 北京中科睿芯科技集团有限公司 一种数据流体系结构中动态节点分配方法和系统
CN109426574B (zh) * 2017-08-31 2022-04-05 华为技术有限公司 分布式计算系统,分布式计算系统中数据传输方法和装置
US10817310B2 (en) * 2017-09-01 2020-10-27 Ab Initio Technology Llc Executing graph-based program specifications
US10685034B2 (en) * 2017-10-17 2020-06-16 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing concurrent dataflow execution with write conflict protection within a cloud based computing environment
US11055074B2 (en) * 2017-11-13 2021-07-06 Ab Initio Technology Llc Key-based logging for processing of structured data items with executable logic
US10726072B2 (en) * 2017-11-15 2020-07-28 Sap Se Internet of things search and discovery graph engine construction
US10713310B2 (en) 2017-11-15 2020-07-14 SAP SE Walldorf Internet of things search and discovery using graph engine
US10853131B2 (en) * 2017-11-20 2020-12-01 Salesforce.Com, Inc. Dataflow life cycles
US10790662B2 (en) 2018-04-03 2020-09-29 Katerra, Inc. DC bus-based electrical power router utilizing multiple configurable bidirectional AC/DC converters
US10897138B2 (en) 2018-04-12 2021-01-19 Katerra, Inc. Method and apparatus for dynamic electrical load sensing and line to load switching
US10666744B2 (en) 2018-06-01 2020-05-26 The Mathworks, Inc. Managing discovery and selection of service interface specifications
CN109343833B (zh) * 2018-09-20 2022-12-16 鼎富智能科技有限公司 数据处理平台以及数据处理方法
US10733191B2 (en) * 2018-09-28 2020-08-04 Microsoft Technology Licensing, Llc Static streaming job startup sequence
US11580444B2 (en) 2019-04-16 2023-02-14 Apple Inc. Data visualization machine learning model performance
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US20210149734A1 (en) * 2019-11-15 2021-05-20 Nvidia Corporation Techniques for modifying an executable graph to perform a workload associated with a new task graph
US20210248115A1 (en) * 2020-02-10 2021-08-12 Nvidia Corporation Compute graph optimization
JP7391739B2 (ja) 2020-03-19 2023-12-05 Ckd株式会社 把持装置
US11461130B2 (en) 2020-05-26 2022-10-04 Oracle International Corporation Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data
US11815943B1 (en) 2020-06-05 2023-11-14 State Farm Mutual Automobile Insurance Company Systems and methods for processing using directed acyclic graphs
US11720424B2 (en) * 2021-03-12 2023-08-08 Salesforce, Inc. Single flow execution
US11461297B1 (en) 2021-06-09 2022-10-04 T-Mobile Usa, Inc. Ensuring database integrity using a data flow in a graph, such as for use by a wireless telecommunications service provider
WO2023056003A1 (en) 2021-09-30 2023-04-06 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism
US11907194B2 (en) 2021-11-03 2024-02-20 Capital One Services, Llc Systems and methods for executing and hashing modeling flows
CN114911630B (zh) * 2022-07-14 2022-11-04 小米汽车科技有限公司 数据处理方法、装置、车辆、存储介质及芯片

Family Cites Families (230)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3662343A (en) 1970-07-29 1972-05-09 Docutel Corp Credit card automatic currency dispenser
US3662401A (en) 1970-09-23 1972-05-09 Collins Radio Co Method of program execution
US4228496A (en) 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4814979A (en) 1981-04-01 1989-03-21 Teradata Corporation Network to transmit prioritized subtask pockets to dedicated processors
US4972314A (en) 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US4720780A (en) 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4914568A (en) 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US5127104A (en) 1986-12-29 1992-06-30 Dataflow Computer Corporation Method and product involving translation and execution of programs by automatic partitioning and data structure allocation
JPS63231613A (ja) 1987-03-20 1988-09-27 Matsushita Giken Kk コマンド設定方法
JPS6413189A (en) 1987-07-06 1989-01-18 Nec Corp Character signal generation circuit
JPH0526792Y2 (ja) 1987-07-14 1993-07-07
JPH0194431A (ja) 1987-10-06 1989-04-13 Matsushita Electric Ind Co Ltd ソフトウェア部品合成装置
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5357632A (en) 1990-01-09 1994-10-18 Hughes Aircraft Company Dynamic task allocation in a multi-processor system employing distributed control processors and distributed arithmetic processors
US5280619A (en) 1990-05-17 1994-01-18 Texas Instruments Incorporated System for accessing shared data using a serialization graph constructed from a history file showing completed locking dependencies between transactions
US5323452A (en) 1990-12-18 1994-06-21 Bell Communications Research, Inc. Visual programming of telephone network call processing logic
DE4216871C2 (de) 1991-05-21 2001-09-06 Digital Equipment Corp Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
EP0529303A3 (en) 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US6400996B1 (en) 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
US5333319A (en) 1992-03-02 1994-07-26 International Business Machines Corporation Virtual storage data processor with enhanced dispatching priority allocation of CPU resources
JP3223933B2 (ja) 1993-02-10 2001-10-29 日本電信電話株式会社 知識ベース推論方法およびその装置
JP3079881B2 (ja) 1993-08-10 2000-08-21 三菱自動車工業株式会社 道路交通状況推定方法および車両運転特性制御方法
US5745778A (en) 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US6044211A (en) 1994-03-14 2000-03-28 C.A.E. Plus, Inc. Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
JPH08106540A (ja) 1994-10-06 1996-04-23 Toshiba Corp 編集装置
US5692168A (en) 1994-10-18 1997-11-25 Cyrix Corporation Prefetch buffer using flow control bit to identify changes of flow within the code stream
JPH08305576A (ja) 1995-01-12 1996-11-22 Internatl Business Mach Corp <Ibm> コンピュータ・ユーザとの対話を行うためのエキスパート・システム及びその方法
US5673369A (en) 1995-03-02 1997-09-30 International Business Machines Corporation Authoring knowledge-based systems using interactive directed graphs
US5701400A (en) 1995-03-08 1997-12-23 Amado; Carlos Armando Method and apparatus for applying if-then-else rules to data sets in a relational data base and generating from the results of application of said rules a database of diagnostics linked to said data sets to aid executive analysis of financial data
US5805462A (en) 1995-08-18 1998-09-08 Vlsi Technology, Inc. Automatic synthesis of integrated circuits employing boolean decomposition
JP3154942B2 (ja) 1995-09-11 2001-04-09 株式会社東芝 分散チェックポイント生成方法および同方法が適用される計算機システム
US5630047A (en) 1995-09-12 1997-05-13 Lucent Technologies Inc. Method for software error recovery using consistent global checkpoints
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
JP3258228B2 (ja) 1996-03-15 2002-02-18 株式会社東芝 チェックポイント生成方法
US7415466B2 (en) 1996-03-19 2008-08-19 Oracle International Corporation Parallel transaction recovery
US6006242A (en) 1996-04-05 1999-12-21 Bankers Systems, Inc. Apparatus and method for dynamically creating a document
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JP3672208B2 (ja) 1996-07-02 2005-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 階層化トランザクション処理方法
US5857204A (en) 1996-07-02 1999-01-05 Ab Initio Software Corporation Restoring the state of a set of files
US6016516A (en) 1996-08-07 2000-01-18 Fuji Xerox Co. Ltd. Remote procedure processing device used by at least two linked computer systems
US6760903B1 (en) 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US5799266A (en) 1996-09-19 1998-08-25 Sun Microsystems, Inc. Automatic generation of test drivers
US5930794A (en) 1996-10-18 1999-07-27 Sagent Technologies, Inc. Database repository with deferred transactions
US6038558A (en) 1996-10-18 2000-03-14 Sagent Technology, Inc. Extensible database retrieval and viewing architecture
US6151531A (en) 1996-12-12 2000-11-21 Charles Frankel Et Al System and method for managing the alteration of garments
US5924095A (en) 1997-02-05 1999-07-13 Oracle Corporation Processing distributed transactions in heterogeneous computing environments using two-phase commit
US6330008B1 (en) 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US5933640A (en) 1997-02-26 1999-08-03 Digital Equipment Corporation Method for analyzing and presenting test execution flows of programs
US5999729A (en) 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
US5950212A (en) 1997-04-11 1999-09-07 Oracle Corporation Method and system for workload based group committing for improved performance
US6088716A (en) 1997-04-28 2000-07-11 Ab Initio Software Corporation Method for preventing buffer deadlock in dataflow computations
US6032158A (en) 1997-05-02 2000-02-29 Informatica Corporation Apparatus and method for capturing and propagating changes from an operational database to data marts
US6044394A (en) 1997-07-21 2000-03-28 International Business Machines Corporation Managing independently executing computer tasks that are interrelated by dataflow
US6145017A (en) 1997-08-05 2000-11-07 Adaptec, Inc. Data alignment system for a hardware accelerated command interpreter engine
US6173276B1 (en) 1997-08-21 2001-01-09 Scicomp, Inc. System and method for financial instrument modeling and valuation
US6470386B1 (en) 1997-09-26 2002-10-22 Worldcom, Inc. Integrated proxy interface for web based telecommunications management tools
US6332212B1 (en) 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US5958004A (en) 1997-10-28 1999-09-28 Microsoft Corporation Disabling and enabling transaction committal in transactional application components
US6339775B1 (en) 1997-11-07 2002-01-15 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6014670A (en) 1997-11-07 2000-01-11 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6044374A (en) 1997-11-14 2000-03-28 Informatica Corporation Method and apparatus for sharing metadata between multiple data marts through object references
JPH11184766A (ja) 1997-12-18 1999-07-09 Nippon Telegr & Teleph Corp <Ntt> ビジネスイベントサーバ
US6272650B1 (en) 1998-02-03 2001-08-07 Amazing Media, Inc. System and method for disambiguating scene graph loads
US6437796B2 (en) 1998-02-17 2002-08-20 Sun Microsystems, Inc. Multiple processor visibility search system and method
US6208345B1 (en) 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6256637B1 (en) 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
US6480876B2 (en) 1998-05-28 2002-11-12 Compaq Information Technologies Group, L.P. System for integrating task and data parallelism in dynamic applications
US6675189B2 (en) 1998-05-28 2004-01-06 Hewlett-Packard Development Company, L.P. System for learning and applying integrated task and data parallel strategies in dynamic applications
US6314114B1 (en) 1998-06-23 2001-11-06 Oracle Corporation Distributed resource management
JP2000010788A (ja) 1998-06-25 2000-01-14 Sharp Corp 緊急動作処理機能を有するコンピュータ装置
US6259988B1 (en) 1998-07-20 2001-07-10 Lockheed Martin Corporation Real-time mission adaptable route planner
JP2000099317A (ja) 1998-09-18 2000-04-07 Toshiba Corp ユーザインタフェース設計装置及び方法
US6401216B1 (en) 1998-10-29 2002-06-04 International Business Machines Corporation System of performing checkpoint/restart of a parallel program
US6608628B1 (en) 1998-11-06 2003-08-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration (Nasa) Method and apparatus for virtual interactive medical imaging by multiple remotely-located users
US6927783B1 (en) 1998-11-09 2005-08-09 Broadcom Corporation Graphics display system with anti-aliased text and graphics feature
US6449711B1 (en) 1999-02-04 2002-09-10 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs
US6538651B1 (en) 1999-03-19 2003-03-25 John Hayman Parametric geometric element definition and generation system and method
US6728879B1 (en) 1999-06-02 2004-04-27 Microsoft Corporation Transactional log with multi-sector log block validation
US6816825B1 (en) 1999-06-18 2004-11-09 Nec Corporation Simulation vector generation from HDL descriptions for observability-enhanced statement coverage
JP2001022571A (ja) 1999-07-09 2001-01-26 Riso Kagaku Corp 電子機器及び該電子機器の制御プログラム書き換え方法
US6647408B1 (en) 1999-07-16 2003-11-11 Novell, Inc. Task distribution
US6715145B1 (en) 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US20020129340A1 (en) 1999-10-28 2002-09-12 Tuttle Douglas D. Reconfigurable isomorphic software representations
US7137116B2 (en) 1999-11-09 2006-11-14 Microsoft Corporation Method and system for performing a task on a computer
US6879946B2 (en) 1999-11-30 2005-04-12 Pattern Discovery Software Systems Ltd. Intelligent modeling, transformation and manipulation system
US6584581B1 (en) 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
IES20010131A2 (en) 1999-12-20 2001-05-30 Headway Res Ltd System and method for computer-aided graph-based dependency analysis
US6848100B1 (en) 2000-03-31 2005-01-25 Intel Corporation Hierarchical software path profiling
EP1181294B1 (de) 2000-03-31 2004-03-31 Sanochemia Pharmazeutika Aktiengesellschaft Neue derivate und analoga von galanthamin
US7062483B2 (en) 2000-05-18 2006-06-13 Endeca Technologies, Inc. Hierarchical data-driven search and navigation system and method for information retrieval
US6922685B2 (en) 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
US6813761B1 (en) 2000-06-30 2004-11-02 Microsoft Corporation Methods for enhancing flow analysis
US7164422B1 (en) * 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US6832369B1 (en) * 2000-08-01 2004-12-14 International Business Machines Corporation Object oriented method and apparatus for class variable initialization
US6496961B2 (en) 2000-10-27 2002-12-17 Nec Usa, Inc. Dynamic detection and removal of inactive clauses in SAT with application in image computation
US20020152244A1 (en) 2000-12-22 2002-10-17 International Business Machines Corporation Method and apparatus to dynamically create a customized user interface based on a document type definition
US6975628B2 (en) * 2000-12-22 2005-12-13 Intel Corporation Method for representing and controlling packet data flow through packet forwarding hardware
US6804800B2 (en) 2000-12-29 2004-10-12 Intel Corporation Method and apparatus for detecting and recovering from errors in a source synchronous bus
JP4294879B2 (ja) 2001-02-05 2009-07-15 株式会社日立製作所 サービスレベル制御機構を有するトランザクション処理システム及びそのためのプログラム
US20020111876A1 (en) 2001-02-09 2002-08-15 Rudraraju Panduranga R. Transaction aggregation system and method
US7082386B2 (en) 2001-02-21 2006-07-25 International Business Machines Corporation Generalized software modeling tool
US7188091B2 (en) 2001-03-21 2007-03-06 Resolutionebs, Inc. Rule processing system
US6651234B2 (en) 2001-04-06 2003-11-18 Nec Corporation Partition-based decision heuristics for SAT and image computation using SAT and BDDs
US20020147745A1 (en) 2001-04-09 2002-10-10 Robert Houben Method and apparatus for document markup language driven server
US7082604B2 (en) 2001-04-20 2006-07-25 Mobile Agent Technologies, Incorporated Method and apparatus for breaking down computing tasks across a network of heterogeneous computer for parallel execution by utilizing autonomous mobile agents
US20040093559A1 (en) 2001-05-25 2004-05-13 Ruth Amaru Web client for viewing and interrogating enterprise data semantically
GB2376094A (en) 2001-05-30 2002-12-04 Ibm Flexible navigation of a workflow graph in a data processing system
US7069536B2 (en) * 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
US20030033432A1 (en) * 2001-08-08 2003-02-13 Simpson Shell S. Web based imaging service that converts web pages into content on behalf of another web site
US7594220B2 (en) 2001-08-14 2009-09-22 National Instruments Corporation Configuration diagram with context sensitive connectivity
US20040006745A1 (en) 2001-08-31 2004-01-08 Van Helden Wico Methods, apparatuses, system, and articles for associating metadata with datastream
US7165030B2 (en) 2001-09-17 2007-01-16 Massachusetts Institute Of Technology Concatenative speech synthesis using a finite-state transducer
US7085426B2 (en) 2001-10-15 2006-08-01 Jonas August Volterra filters for enhancement of contours in images
US7130484B2 (en) 2001-10-15 2006-10-31 Jonas August Biased curve indicator random field filters for enhancement of contours in images
DE10152213B4 (de) 2001-10-23 2006-04-27 Onespin Solutions Gmbh Verfahren zur Verifikation digitaler arithmetischer Schaltungen mittels eines Äquivalenzvergleiches
US7092401B2 (en) 2001-11-15 2006-08-15 International Business Machines Corporation Apparatus and method for managing work and completion queues using head and tail pointers with end-to-end context error cache for reliable datagram
EP1320217B1 (en) 2001-12-14 2004-10-13 Hewlett-Packard Company, A Delaware Corporation Method of installing monitoring agents, system and computer program for monitoring objects in an IT network
US7240247B2 (en) 2002-04-29 2007-07-03 Intel Corporation Providing a chain of tokenized error and state information for a call stack
US20040041838A1 (en) 2002-09-04 2004-03-04 Adusumilli Venkata J.R.B. Method and system for graphing data
US7103597B2 (en) 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7167850B2 (en) * 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US7694272B2 (en) 2002-10-21 2010-04-06 Sungard (Israel) Ltd Method, a language and a system for the definition and implementation of software solutions by using a visualizable computer executable modeling language
US7412658B2 (en) 2002-11-14 2008-08-12 Sap Ag Modeling system for graphic user interface
US7711772B2 (en) 2002-11-15 2010-05-04 Schlumberger Technology Corporation Web-based system and method for electronic data delivery
US7430747B2 (en) 2002-12-04 2008-09-30 Microsoft Corporation Peer-to peer graphing interfaces and methods
US7441008B2 (en) 2002-12-18 2008-10-21 International Business Machines Corporation Method for correlating transactions and messages
US20050193056A1 (en) 2002-12-26 2005-09-01 Schaefer Diane E. Message transfer using multiplexed connections in an open system interconnection transaction processing environment
US20040148373A1 (en) 2003-01-23 2004-07-29 International Business Machines Corporation Service level agreement compliance measurement
WO2004072796A2 (en) 2003-02-05 2004-08-26 Arizona Board Of Regents Reconfigurable processing
US7707564B2 (en) 2003-02-26 2010-04-27 Bea Systems, Inc. Systems and methods for creating network-based software services using source code annotations
US7088374B2 (en) 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7417645B2 (en) 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
US7669129B2 (en) 2003-04-04 2010-02-23 Avid Technology, Inc. Graphical user interface for providing editing of transform hierarchies within an effects tree
US7665025B2 (en) 2003-04-16 2010-02-16 The Mathworks, Inc. Signal navigation and label propagation in block diagrams
US20040225657A1 (en) 2003-05-07 2004-11-11 Panacea Corporation Web services method and system
US8265979B2 (en) * 2003-06-17 2012-09-11 International Business Machines Corporation Automatic generation of process models
WO2004113557A2 (en) 2003-06-18 2004-12-29 Applera Corporation Methods and systems for the analysis of biological sequence data
EP1639510A1 (en) 2003-06-24 2006-03-29 BAE Systems PLC A method, tool and system for increasing the efficiency of a design process
CA2891145C (en) 2003-06-25 2019-02-19 Craig W. Stanfill Computer-aided parallelizing of computation graphs
WO2005008414A2 (en) 2003-07-11 2005-01-27 Computer Associates Think, Inc. Method and apparatus for parallel action processing
GB0318196D0 (en) 2003-08-02 2003-09-03 Ibm A method apparatus and computer program for processing a queue of messages
US7243088B2 (en) 2003-08-06 2007-07-10 Oracle International Corporation Database management system with efficient version control
US7444595B2 (en) 2003-08-13 2008-10-28 National Instruments Corporation Graphical programming system and method for creating and managing a scene graph
US8307109B2 (en) 2003-08-27 2012-11-06 International Business Machines Corporation Methods and systems for real time integration services
US7174479B2 (en) 2003-09-10 2007-02-06 Microsoft Corporation Method and system for rollback-free failure recovery of multi-step procedures
CA2655731C (en) 2003-09-15 2012-04-10 Ab Initio Software Corporation Functional dependency data profiling
US20050102670A1 (en) 2003-10-21 2005-05-12 Bretl Robert F. Shared object memory with object management for multiple virtual machines
US20050097515A1 (en) 2003-10-31 2005-05-05 Honeywell International, Inc. Data empowered laborsaving test architecture
US7840949B2 (en) 2003-11-03 2010-11-23 Ramal Acquisition Corp. System and method for data transformation using dataflow graphs
US7480863B2 (en) 2003-11-26 2009-01-20 International Business Machines Corporation Dynamic and intelligent hover assistance
US7296072B2 (en) 2003-12-12 2007-11-13 International Business Machines Corporation Enhanced port type agnostic proxy support for web services intermediaries
US7404189B2 (en) 2003-12-30 2008-07-22 International Business Machines Corporation Scheduler supporting web service invocation
US7543275B2 (en) 2004-01-29 2009-06-02 Sun Microsystems, Inc. Mechanism for executing test suites written for different harnesses under one test execution harness
US7594227B2 (en) * 2004-03-08 2009-09-22 Ab Initio Technology Llc Dependency graph parameter scoping
US7467383B2 (en) 2004-03-08 2008-12-16 Ab Initio Software Llc System for controlling task execution using a graphical representation of task dependency
EP1757087A4 (en) 2004-04-16 2009-08-19 James A Aman AUTOMATIC VIDEO RECORDING OF EVENTS, PURSUIT AND CONTENT PRODUCTION SYSTEM
US20050256818A1 (en) 2004-04-30 2005-11-17 Xerox Corporation Workflow auto generation from user constraints and hierarchical dependence graphs for workflows
JP2007536634A (ja) 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド プロセス制御システムのためのサービス指向型アーキテクチャ
US7614037B2 (en) 2004-05-21 2009-11-03 Microsoft Corporation Method and system for graph analysis and synchronization
US7316001B2 (en) 2004-06-05 2008-01-01 Graphlogic Inc. Object process graph system
US7613881B2 (en) 2004-06-08 2009-11-03 Dartdevices Interop Corporation Method and system for configuring and using virtual pointers to access one or more independent address spaces
US7398514B2 (en) 2004-09-29 2008-07-08 Microsoft Corporation Test automation stack layering
US7343482B2 (en) 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
JP4759983B2 (ja) 2004-11-04 2011-08-31 船井電機株式会社 ディスク装置のファームウェア書き換え方法、及びファームウェア書き換えプログラム
US7598953B2 (en) 2004-11-05 2009-10-06 Microsoft Corporation Interpreter for simplified programming of graphics processor units in general purpose programming languages
US8082541B2 (en) 2004-12-09 2011-12-20 Advantest Corporation Method and system for performing installation and configuration management of tester instrument modules
US20060282474A1 (en) 2005-01-18 2006-12-14 Mackinnon Allan S Jr Systems and methods for processing changing data
US8396886B1 (en) 2005-02-03 2013-03-12 Sybase Inc. Continuous processing language for real-time data streams
US7620947B2 (en) 2005-03-11 2009-11-17 Autodesk, Inc. Enhanced directed graph representation for dependency systems
US7505975B2 (en) 2005-04-14 2009-03-17 Bea Systems, Inc. Use of transaction context to select single database instance for global transaction
JP4246176B2 (ja) 2005-04-25 2009-04-02 株式会社日立製作所 トランザクション処理方法及びその実施装置並びにその処理プログラムを記録した媒体
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US20070118839A1 (en) 2005-10-24 2007-05-24 Viktors Berstis Method and apparatus for grid project modeling language
JP2007128343A (ja) * 2005-11-04 2007-05-24 Sharp Corp 情報処理装置、情報処理方法、プログラムおよびコンピュータ読取り可能な記録媒体
US7747565B2 (en) 2005-12-07 2010-06-29 Microsoft Corporation Garbage collector support for transactional memory
US8073671B2 (en) 2006-03-31 2011-12-06 Microsoft Corporation Dynamic software performance models
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
KR101495575B1 (ko) 2006-08-10 2015-02-25 아브 이니티오 테크놀로지 엘엘시 그래프 기반 연산에서의 분배 서비스
US7844946B2 (en) 2006-09-26 2010-11-30 Intel Corporation Methods and apparatus to form a transactional objective instruction construct from lock-based critical sections
EP2092424B1 (en) 2006-10-19 2015-12-30 Checkmarx Ltd. Locating security vulnerabilities in source code
US8191052B2 (en) 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
US20080244524A1 (en) 2007-03-27 2008-10-02 Tim Kelso Program Test System
US7805635B2 (en) 2007-04-09 2010-09-28 International Business Machines Corporation Constraint programming for reduction of system test-configuration-matrix complexity
US8069129B2 (en) * 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
WO2008131106A1 (en) 2007-04-17 2008-10-30 Earl Industries Llc Digital system for organizing diverse information
JP4073033B1 (ja) 2007-04-27 2008-04-09 透 降矢 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
KR101635945B1 (ko) 2007-07-26 2016-07-04 아브 이니티오 테크놀로지 엘엘시 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
US8347292B2 (en) 2007-08-30 2013-01-01 International Business Machines Corporation Transaction aggregation to increase transaction processing throughout
WO2009039352A1 (en) 2007-09-20 2009-03-26 Ab Initio Technology Llc Managing data flows in graph-based computations
US7886141B2 (en) 2007-10-27 2011-02-08 Asix Electronics Corporation Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems
US8775441B2 (en) 2008-01-16 2014-07-08 Ab Initio Technology Llc Managing an archive for approximate string matching
US20090193416A1 (en) 2008-01-24 2009-07-30 Nec Laboratories America, Inc. Decidability of reachability for threads communicating via locks
US8225288B2 (en) 2008-01-29 2012-07-17 Intuit Inc. Model-based testing using branches, decisions, and options
US8797178B2 (en) 2008-03-10 2014-08-05 Microsoft Corporation Efficient stream sharing for multi-user sensor data collection
US20090235267A1 (en) 2008-03-13 2009-09-17 International Business Machines Corporation Consolidated display of resource performance trends
US9184874B2 (en) 2008-03-31 2015-11-10 Qualcomm Incorporated Storing log likelihood ratios in interleaved form to reduce hardware memory
US8336052B2 (en) 2008-06-16 2012-12-18 International Business Machines Corporation Management, control, and monitoring of workload including unrelated processes of different containers
CA2729304C (en) 2008-06-30 2016-12-13 Ab Initio Technology Llc Data logging in graph-based computations
US20100070955A1 (en) 2008-07-08 2010-03-18 Nec Laboratories America Alias analysis for concurrent software programs
US8782613B2 (en) 2008-08-12 2014-07-15 Hewlett-Packard Development Company, L.P. Optimizing applications using source code patterns and performance analysis
US8286176B1 (en) 2008-09-29 2012-10-09 Amazon Technologies, Inc. Optimizing resource configurations
US20100169137A1 (en) 2008-12-31 2010-07-01 Ebay Inc. Methods and systems to analyze data using a graph
US7979479B2 (en) 2009-01-08 2011-07-12 International Business Machines Corporation Transaction-controlled graph processing and management
US8635694B2 (en) * 2009-01-10 2014-01-21 Kaspersky Lab Zao Systems and methods for malware classification
WO2010093879A1 (en) 2009-02-13 2010-08-19 Ab Initio Technology Llc Managing task execution
US7992040B2 (en) 2009-02-20 2011-08-02 International Business Machines Corporation Root cause analysis by correlating symptoms with asynchronous changes
US8327377B2 (en) 2009-04-30 2012-12-04 Ca, Inc. Detecting, logging and tracking component dependencies in web service transactions
US8332811B2 (en) 2009-04-30 2012-12-11 United Parcel Service Of America, Inc. Systems and methods for generating source code for workflow platform
US8473901B1 (en) 2009-06-12 2013-06-25 The Mathworks, Inc. Non-literal representation of programming language code
US8205113B2 (en) 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
US8667329B2 (en) 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
AU2014262225A1 (en) 2010-06-15 2014-12-04 Ab Initio Technology Llc Dynamically loading graph-based computations
EP2583168B1 (en) 2010-06-15 2017-11-08 Ab Initio Technology LLC Dynamically loading graph-based computations
US8458729B2 (en) 2010-07-20 2013-06-04 International Business Machines Corporation Managing and optimizing workflows among computer applications
US9158650B2 (en) 2010-08-04 2015-10-13 BoxTone, Inc. Mobile application performance management
EP2609507B1 (en) 2010-08-25 2019-05-15 Ab Initio Technology LLC Evaluating dataflow graph characteristics
JP5902185B2 (ja) 2010-10-25 2016-04-13 アビニシオ テクノロジー エルエルシー コンピュータプログラムを表すデータフローグラフ内のデータセットオブジェクトの管理
CN102012862A (zh) * 2010-11-09 2011-04-13 北京神舟航天软件技术有限公司 基于控制流图逻辑结构对比的编译器验证方法
US8997024B2 (en) 2010-12-09 2015-03-31 Microsoft Technology Licensing, Llc Navigating between views of a graph using placemarkers
AU2012100128A4 (en) 2011-02-22 2012-03-08 Zensar Technologies Ltd A computer implemented system and method for indexing and optionally annotating use cases and generating test scenarios therefrom
US8863089B2 (en) 2011-02-25 2014-10-14 Nintendo Co., Ltd. Method and apparatus for visualizing computer program execution
US8732669B2 (en) 2011-03-11 2014-05-20 Oracle International Corporation Efficient model checking technique for finding software defects
US9165029B2 (en) 2011-04-12 2015-10-20 Microsoft Technology Licensing, Llc Navigating performance data from different subsystems
CN103827908A (zh) 2011-07-12 2014-05-28 益百利信息解决方案公司 用于大规模信贷数据处理架构的系统和方法
US9607045B2 (en) 2012-07-12 2017-03-28 Microsoft Technology Licensing, Llc Progressive query computation using streaming architectures
US9875094B2 (en) 2012-08-29 2018-01-23 International Business Machines Corporation Microcode upgrade in a storage system
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
EP3092557B1 (en) 2013-12-05 2024-03-27 AB Initio Technology LLC Managing interfaces for dataflow graphs composed of sub-graphs

Also Published As

Publication number Publication date
JP2016129059A (ja) 2016-07-14
CA2801573A1 (en) 2011-12-22
CN107066241B (zh) 2021-03-09
HK1249218A1 (zh) 2018-10-26
CA2801573C (en) 2018-08-14
JP2013528884A (ja) 2013-07-11
KR20130100261A (ko) 2013-09-10
CN103069385A (zh) 2013-04-24
KR20150042297A (ko) 2015-04-20
WO2011159759A4 (en) 2012-03-01
EP2583168B1 (en) 2017-11-08
AU2011268459A1 (en) 2012-12-13
US8875145B2 (en) 2014-10-28
US20110307897A1 (en) 2011-12-15
EP3287896A1 (en) 2018-02-28
CN107066241A (zh) 2017-08-18
AU2011268459B2 (en) 2014-09-18
EP2583168A1 (en) 2013-04-24
JP5898188B2 (ja) 2016-04-06
US9753751B2 (en) 2017-09-05
US20150106818A1 (en) 2015-04-16
CN103069385B (zh) 2016-12-28
EP3287896B1 (en) 2023-04-26
WO2011159759A1 (en) 2011-12-22
KR101687213B1 (ko) 2016-12-16

Similar Documents

Publication Publication Date Title
JP6116721B2 (ja) グラフに基づく計算の動的ロード
JP7023718B2 (ja) リアルタイムデータストリームに対して実行するためのクエリの選択
US8990786B2 (en) Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture
AU2021203955B2 (en) Dynamic component performance monitoring
AU2014262225A1 (en) Dynamically loading graph-based computations
KR20160119070A (ko) 데이터 처리 애플리케이션의 모드를 동적으로 결정하는 방법
AU2016200107B2 (en) Dynamically loading graph-based computations
US20160110170A1 (en) Message inlining
US20130173682A1 (en) Floating-point error propagation in dataflow
US20090019159A1 (en) Transparently externalizing plug-in computation to cluster
CN116010100A (zh) 区块链系统中的合约调用方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170228

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170321

R150 Certificate of patent or registration of utility model

Ref document number: 6116721

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250