JP7629464B2 - 計算グラフを生成するためのエディタ - Google Patents

計算グラフを生成するためのエディタ Download PDF

Info

Publication number
JP7629464B2
JP7629464B2 JP2022545888A JP2022545888A JP7629464B2 JP 7629464 B2 JP7629464 B2 JP 7629464B2 JP 2022545888 A JP2022545888 A JP 2022545888A JP 2022545888 A JP2022545888 A JP 2022545888A JP 7629464 B2 JP7629464 B2 JP 7629464B2
Authority
JP
Japan
Prior art keywords
dataflow graph
computer
operations
data
nodes
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
JP2022545888A
Other languages
English (en)
Other versions
JP2023511631A (ja
JP2023511631A5 (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 JP2023511631A publication Critical patent/JP2023511631A/ja
Publication of JP2023511631A5 publication Critical patent/JP2023511631A5/ja
Application granted granted Critical
Publication of JP7629464B2 publication Critical patent/JP7629464B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/244Grouping and aggregation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24573Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/311Functional or applicative languages; Rewrite languages
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4435Detection or removal of dead or redundant code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Library & Information Science (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Stored Programmes (AREA)
  • Manufacture, Treatment Of Glass Fibers (AREA)
  • Paper (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)

Description

(優先権の主張)
本出願は、2020年1月28日に出願された米国特許仮出願第62/966,768号の優先権を主張し、その全内容は、参照により本明細書に組み込まれる。
本開示は、計算グラフを生成することに関する。
複雑な計算は、多くの場合、有向グラフフを使用したデータフローとして表すことができ、計算のコンポーネントは、グラフの頂点及びグラフのリンク(弧、辺)に対応するコンポーネント間のデータフローと関連付けられている。かかるグラフベースの計算を実施するシステムは、米国特許第5,966,072号、名称「Executing Computations Expressed as Graphs」に記載されており、その全内容は、参照により本明細書に組み込まれる。場合によっては、頂点と関連付けられた計算は人間可読形式で記述され、「ビジネスルール」と呼ばれる。
データフローグラフを生成するための1つの技術は、ビジネスルールエディタを使用する。ビジネスルールエディタの例は、米国特許第8,069,129号、名称「Editing and Compiling Business Rules」に開示されており、その全内容は、参照により本明細書に組み込まれる。
一般的態様1において、第1のデータフローグラフを第2のデータフローグラフに変換するための方法であって、第1のデータフローグラフは、複数の第1のコンピュータ動作を表す複数の第1のノードを含み、第2のデータフローグラフは、複数の第2のコンピュータ動作を表す複数の第2のノードを含み、第2のコンピュータ動作のうちの少なくともいくつかは、第1のデータフローグラフ内の第1のノードによって表されず、この方法は、データ処理における第1のコンピュータ動作を表す複数の第1のノードを含む第1のデータフローグラフを生成することであって、第1のコンピュータ動作のうちの少なくとも1つは、データ処理の1つ以上の結果の1つ以上の特性を指定する宣言動作である、ことと、第1のコンピュータ動作に従ってデータを処理するために第1のデータフローグラフを第2のデータフローグラフに変換することであって、第2のデータフローグラフは、第2のコンピュータ動作を表す複数の第2のノードを含み、第2のノードのうちの少なくとも1つは、宣言動作によって指定されるロジックを実施する1つ以上の命令動作を表し、1つ以上の命令動作は、第1のデータフローグラフ内の第1のノードによって表されない、ことと、第2のデータフローグラフをデータストアに記憶することと、を含む。
態様1に記載の態様2において、第2のデータフローグラフへの第1のデータフローグラフは、命令動作を作成することと、命令動作を表す所与の第2のノードを作成することであって、所与の第2のノードは、第1のデータグラフに表されない、ことと、を含む。
態様1又は2のいずれかに記載の態様3において、第2のデータフローグラフに表され、第1のデータフローグラフには表されない第2の動作のうちの1つは、並べ替え動作、データ型動作、指定キーとの結合動作、及び分割動作からなる群から選択される。
態様1~3のいずれかに記載の態様4において、第2の動作のうちの1つ以上は少なくとも、(i)第1のデータフローグラフで指定された第1の動作のうちの1つ以上に従ってデータを処理するために必要であるか、又は(ii)1つ以上の追加動作を伴わないデータ処理と比較して、第1のデータフローグフラで指定された第1の動作のうちの1つ以上に従ったデータ処理を改善する。
態様1~4のいずれかに記載の態様5において、方法は、1つ以上のデータフローグラフ最適化ルールを第2のデータフローグラフに適用することによって第2のデータフローグラフを最適化されたデータフローグラフに変換して、適用前の第2のデータフローグラフの計算効率と比較して、第2のデータフローグラフの計算効率を改善することを更に含む。
態様1~5のいずれかに記載の態様6において、1つ以上のデータフローグラフ最適化ルールは、第2のデータフローグラフから冗長ノードを削除すること、第2のデータフローグラフからデッドノードを削除すること、第2のデータフローグラフでノードの順序を変更すること、第2のデータフローグラフでノードの強度を低減すること、第2のデータフローグラフで2つ以上のノードを統合すること、第2のデータフローグラフ内のノードを直列動作から並列動作に変換すること、又は第2のデータフローグラフで分割動作を挿入することのうちの少なくとも1つを含む。
態様1~6のいずれかに記載の態様7において、第2の動作のうちの少なくとも1つは、自動並列動作又は自動分割動作を含む。
態様1~7のいずれかに記載の態様8において、第2の動作のうちの少なくとも1つは、並べ替え動作を含む。
態様1~8のいずれかに記載の態様9において、第2の動作のうちの少なくとも1つは、第2のノードのうちの1つ以上の間でメタデータを指定する動作を含む。
態様1~9のいずれかに記載の態様10において、方法は、データを提供して、キャンバス部分及びカタログ部分を含むグラフィカルエディタインターフェースを生成することであって、カタログ部分は、キャンバス部分において、計算のロジックを視覚的に描写するために1つ以上の選択可能なアイコンを含む、ことと、キャンバス部分において描写された計算のロジックを表す、アイコン選択データを受信することであって、アイコン選択データは、カタログ部分から選択され、キャンバス部分に含まれる、1つ以上の選択可能なアイコンのうちの少なくとも1つを指定する、ことと、受信したアイコン選択データから、キャンバス部分で指定されたロジックを表す複数の第1のノードを含む第1のデータフローグラフを生成することであって、第1のノードのうちの少なくとも1つは、カタログ部分から選択された1つ以上の選択可能なアイコンのうちの少なくとも1つを表す、ことと、を更に含む。
態様1~10のいずれかに記載の態様11において、選択された各アイコンは、データをプリフォーマットするデータカタログからデータにアクセスする命令を示すか、又はデータカタログを介してアクセスされるデータの形式を指定する。
態様1~11のいずれかに記載の態様12において、第1のデータフローグラフは、ユーザ定義のデータフローグラフである。
態様1~12のいずれかに記載の態様13において、方法は、データを提供して、キャンバス部分及びカタログ部分を含むグラフィカルエディタインターフェースを生成することであって、カタログ部分は、複数のデータセット選択アイコンと、複数の変換選択アイコンと、を含む、ことと、選択されたデータセット選択アイコン及び選択された変換選択アイコンによって表される記憶ユニットに記憶された要素に従って、第1のデータフローグラフで初期ノードを生成することと、初期ノードにラベルを付けて、ラベル付きノードを提供することと、キャンバス部分にラベル付きノードの視覚的表現をレンダリングすることと、を更に含む。
態様1~13のいずれかに記載の態様14において、初期ノードは、動作を保持する動作プレースホルダフィールドと、データのソース又はシンクを保持するデータプレースホルダフィールドと、を有する。
態様1~14のいずれかに記載の態様15において、修正することは、動作プレースホルダフィールドに保持された動作の要素を記憶システムから取得することと、データプレースホルダフィールドに保持されたデータソース又はデータシンクの要素を記憶システムから取得して、データのソース又はシンクを指すリンクをデータプレースホルダフィールドに追加することと、を更に含む。
態様1~15のいずれかに記載の態様16において、方法は、データを提供して、グラフィカルエディタインターフェースのキャンバス部分に第1のデータフローグラフをレンダリングすることを更に含む。
態様1~16のいずれかに記載の態様17において、生成された初期ノードの全てにラベルを付けると、方法は、第1のデータフローグラフの全てのラベル付きノードを、計算データフローグラフである第2のデータフローグラフにコンパイルすることを更に含む。
態様1~17のいずれかに記載の態様18において、修正した初期ノードの全てにラベルを付けると、方法は、第1のデータフローグラフの全てのラベル付きノードを最適化することを更に含み、第1のデータフローグラフのラベル付きノードを最適化することは、ラベル付きノードのうちの少なくとも1つに記憶された要素を最適化することを更に含む。
態様1~18のいずれかに記載の態様19において、方法は、プロトタイプノードにアクセスすることと、アクセスされたプロトタイプノードからパラメータをコピーして初期ノードのうちの少なくとも1つを修正するアルゴリズムを適用することと、を更に含む。
態様1~19のいずれかに記載の態様20において、初期ノードの少なくとも1つのパラメータは、プロトタイプノードによって上書きされない設定パラメータである。
態様1~20のいずれかに記載の態様21において、プロトタイプノードは、初期ノード、初期ノード上のポート、又はエディタインターフェースのキャンバスに提示されたコンポーネントのパラメータのうちの少なくとも1つを宣言する。
態様1~21のいずれかに記載の態様22において、プロトタイプを適用することは、プロトタイプからの記述子で既存のパラメータの記述子を置き換えるが、パラメータの既存の値は置き換えない。
態様1~22のいずれかに記載の態様23において、方法は、メタデータ及び第1のデータフローグラフに記述された値を計算する変換を適用することを更に含む。
態様1~23のいずれかに記載の態様24において、ラベルは、キー、値、名前、及びソースのうちの1つ以上を参照する。
態様1~24のいずれかに記載の態様25において、選択されたデータセット選択アイコンによって表される記憶ユニット及び選択された変換選択アイコンによって表される記憶ユニットに記憶された1つ以上の要素を記憶する複数の初期ノードのうちの少なくともいくつかは、少なくとも部分的に、複数の初期ノードのうちの少なくともいくつかに対して対応する記憶ユニット機能を指定する。
一般的態様26において、第1のデータフローグラフを第2のデータフローグラフに変換するためのシステムであって、第1のデータフローグラフは、複数の第1のコンピュータ動作を表す複数の第1のノードを含み、第2のデータフローグラフは、複数の第2のコンピュータ動作を表す複数の第2のノードを含み、第2のコンピュータ動作のうちの少なくともいくつかは、第1のデータフローグラフ内の第1のノードによって表されず、このシステムは、1つ以上のプロセッサと、命令を記憶する1つ以上の記憶デバイスであって、命令は、1つ以上のプロセッサによって実行されると、データ処理における第1のコンピュータ動作を表す複数の第1のノードを含む第1のデータフローグラフを生成することであって、第1のコンピュータ動作のうちの少なくとも1つは、データ処理の1つ以上の結果の1つ以上の特性を指定する宣言動作である、ことと、第1のコンピュータ動作に従ってデータを処理するために第1のデータフローグラフを第2のデータフローグラフに変換することであって、第2のデータフローグラフは、第2のコンピュータ動作を表す複数の第2のノードを含み、第2のノードのうちの少なくとも1つは、宣言動作によって指定されるロジックを実施する1つ以上の命令動作を表し、1つ以上の命令動作は、第1のデータフローグラフ内の第1のノードによって表されない、ことと、第2のデータフローグラフをデータストアに記憶することと、を含む動作を1つ以上のプロセッサに実行させる、1つ以上の記憶デバイスと、を含む。
一般的態様27において、非一時的コンピュータ可読媒体であって、この非一時的コンピュータ可読媒体は、データ処理における第1のコンピュータ動作を表す複数の第1のノードを含む第1のデータフローグラフを生成することであって、第1のコンピュータ動作のうちの少なくとも1つは、データ処理の1つ以上の結果の1つ以上の特性を指定する宣言動作である、ことと、第1のコンピュータ動作に従ってデータを処理するために第1のデータフローグラフを第2のデータフローグラフに変換することであって、第2のデータフローグラフは、第2のコンピュータ動作を表す複数の第2のノードを含み、第2のノードのうちの少なくとも1つは、宣言動作によって指定されるロジックを実施する1つ以上の命令動作を表し、1つ以上の命令動作は、第1のデータフローグラフ内の第1のノードによって表されない、ことと、第2のデータフローグラフをデータストアに記憶することと、をコンピューティングシステムに実行させるための命令を記憶する。
一般的態様28において、第1のデータフローグラフを第2のデータフローグラフに変換するための方法であって、第1のデータフローグラフは、複数の第1のコンピュータ動作を表す複数の第1のノードを含み、第2のデータフローグラフは、複数の第2のコンピュータ動作を表す複数の第2のノードを含み、第2のコンピュータ動作のうちの少なくともいくつかは、第1のデータフローグラフ内の第1のノードによって表されず、この方法は、データ処理における第1のコンピュータ動作を表す複数の第1のノードを含む第1のデータフローグラフを生成することと、第1のコンピュータ動作に従ってデータを処理するために第1のデータフローグラフを第2のデータフローグラフに変換することであって、第2のデータフローグラフは、第2のコンピュータ動作を表す複数の第2のノードを含み、第2のコンピュータ動作のうちの少なくとも所与の1つは、並べ替え動作、データ型動作、指定キーとの結合動作、及び分割動作からなる群から選択され、第2のコンピュータ動作のうちの少なくとも所与の1つは、第1のデータフローグラフ内の第1のノードによって表されない、ことと、第2のデータフローグラフをデータストアに記憶することと、を含む。
一般的態様29において、第1のデータフローグラフを第2のデータフローグラフに変換するためのシステムであって、第1のデータフローグラフは、複数の第1のコンピュータ動作を表す複数の第1のノードを含み、第2のデータフローグラフは、複数の第2のコンピュータ動作を表す複数の第2のノードを含み、第2のコンピュータ動作のうちの少なくともいくつかは、第1のデータフローグラフ内の第1のノードによって表されず、このシステムは、1つ以上のプロセッサと、命令を記憶する1つ以上の記憶デバイスであって、1つ以上のプロセッサによって実行されると、データ処理における第1のコンピュータ動作を表す複数の第1のノードを含む第1のデータフローグラフを生成することと、第1のコンピュータ動作に従ってデータを処理するために第1のデータフローグラフを第2のデータフローグラフに変換することであって、第2のデータフローグラフは、第2のコンピュータ動作を表す複数の第2のノードを含み、第2のコンピュータ動作のうちの少なくとも所与の1つは、並べ替え動作、データ型動作、指定キーとの結合動作、及び分割動作からなる群から選択され、第2のコンピュータ動作のうちの少なくとも所与の1つは、第1のデータフローグラフ内の第1のノードによって表されない、ことと、第2のデータフローグラフをデータストアに記憶することとを含む動作を1つ以上のプロセッサに実行させる、1つ以上の記憶デバイスと、を含む。
一般的態様30において、非一時的コンピュータ可読媒体であって、この非一時的コンピュータ可読媒体は、データ処理における第1のコンピュータ動作を表す複数の第1のノードを含む第1のデータフローグラフを生成することと、第1のコンピュータ動作に従ってデータを処理するために第1のデータフローグラフを第2のデータフローグラフに変換することであって、第2のデータフローグラフは、第2のコンピュータ動作を表す複数の第2のノードを含み、第2のコンピュータ動作のうちの少なくとも所与の1つは、並べ替え動作、データ型動作、指定キーとの結合動作、及び分割動作からなる群から選択され、第2のコンピュータ動作のうちの少なくとも所与の1つは、第1のデータフローグラフ内の第1のノードによって表されない、ことと、第2のデータフローグラフをデータストアに記憶することと、をコンピューティングシステムに実行させるための命令を記憶する。
前述の全て又は一部(態様1~30及びそれらの任意の組み合わせなど)は、1つ以上の非一時的機械可読記憶媒体に記憶され、1つ以上の処理デバイスで実行可能である命令を含むコンピュータプログラム製品として実施され得る。前述の全て又は一部は、実行可能命令を記憶する1つ以上の処理デバイス及びメモリを含み、記述された機能を実施し得る装置、方法、又は電子システムとし実施され得る。
本明細書で使用される「表されない」という用語は、第2のコンピュータ動作のうちの少なくともいくつかが、第1のデータフローグラフにおいて直接的又は間接的に生じないか、又は複数の第1のノードのいずれも、第2のコンピュータ動作のうちの少なくともいくつかを表さないことを意味し得る。
上記の実施例のうちの1つ以上は、以下の利点のうちの1つ以上を提供し得る。本明細書に記載の技術は、最低限の技術的背景を有するユーザが、使いやすいグラフィックユーザインターフェースを用いてデータ処理機能を指定することを可能にする。データフローグラフシステムは、キャンバスと、複数の変換アイコン及びデータセットアイコンを有するデータセットカタログと、を含むグラフィカルユーザインターフェースを提供する。所望のアイコンを選択し、それらをキャンバス上に配置することにより、ユーザは、データセットアクセスの詳細又は並べ替え及び分割動作など他の低レベルの実施詳細を指定する必要なく、データフローグラフ、したがってその関連する計算を容易に作成し、修正することができる。このようにして、データフローグラフシステムは、ユーザによって開発され、スキーマ駆動型開発を可能にするため、データフローグラフの視覚的表現を提供する。更に、システムは、ユーザによって配置されたアイコンを自動的に接続することによって開発を促進する自動レイアウト機能を含み得る。
データフローグラフが完成すると、システムは、ユーザによって作成されたデータフローグラフを、コンパイルされ、実行され得る、変換されたデータフローグラフに変換する。このプロセスの一環として、システムは、データフローグラフで指定された宣言動作を実行するために必要な命令動作を追加することによって、例えば、並列動作及び分割動作を自動的に追加すること、結合及びロールアップのために並べ替え動作を追加すること、並びに中間メタデータを指定することによって、データフローグラフを自動的に最適化する。システムはまた、冗長コンポーネントの削除又はレコードの縮小などによって、データフローグラフ自体のデータ処理を改善する。
1つ以上の実施例の詳細を、添付の図面及び以下の説明に記載する。本明細書に記載の技術の他の特徴、目的、及び利点は、説明及び図面、並びに特許請求の範囲から明らかとなるであろう。
計算グラフを指定するためのシステムのブロック図である。 データフローグラフのブロック図である。 データフローグラフのブロック図である。 異なる構築段階におけるデータフローグラフの視覚的表現の図である。 異なる構築段階におけるデータフローグラフの視覚的表現の図である。 異なる構築段階におけるデータフローグラフの視覚的表現の図である。 異なる動作段階における図1のシステムのブロック図である。 異なる動作段階における図1のシステムのブロック図である。 異なる動作段階における図1のシステムのブロック図である。 異なる動作段階における図1のシステムのブロック図である。 計算データフローグラフを生成するための例示的なプロセスのフローチャートである。
本明細書に記載の技術は、コンパイルのために最適化され、変換され得る、容易に修正可能な計算グラフを生成するための技術に関する。いくつかの実施例では、データフローグラフシステムは、キャンバスと、複数の変換選択アイコン及びデータセット選択アイコンを有するデータセットカタログと、を含むグラフィカルユーザインターフェースを提供する。所望のアイコンを選択し、それらをキャンバス上に配置することにより、ユーザは、データセットアクセスの詳細又は並べ替え及び分割動作など他の低レベルの実施詳細を指定(又は再指定)する必要なく、データフローグフを容易に作成し、視覚化し、修正することができる。一般に、本明細書で使用される場合、動作は、コンピュータ動作、例えば、機械、コンピュータシステムなどによって実行又は実施される1つ以上の動作又は命令を指す。
システムは、ユーザによって選択されたアイコンを示すデータを受信し、宣言動作及び選択されたアイコンによって参照されるデータセットを含むようにデータフローグラフのノードを修正することによって、第1のデータフローグラフ(本明細書では「中間データフローグラフ」と呼ばれることもある)を生成する。第1のデータフローグラフが完成すると、システムは、このデータフローグラフを、コンパイルされ、実行され得る、第2のデータフローグラフ(本明細書では「変換されたデータフローグラフ」と呼ばれることもある)に変換する。このプロセスの一環として、システムは、第1のデータフローグラフで指定された宣言動作を実行するために必要な命令動作を第2のデータフローグラフに追加することによって、例えば、並列動作及び分割動作を自動的に追加すること、結合及びロールアップのために並べ替え動作を追加すること、並びに中間メタデータを指定することによって、第1のデータフローグラフを自動的に最適化して第2のデータフローグラフを生成する。システムはまた、図4に関連して以下に記載するように、冗長コンポーネントの削除又はレコードの縮小などによって、第2のデータフローグラフ自体によるデータ処理を改善する。
図1は、計算グラフを指定するためのシステム10の概略図を示す。システム10(本明細書では「実行環境」とも呼ばれる)は、エディタユーザインターフェースジェネレータ14と、データフローグラフ(dataflow graph、DFG)エンジン16と、変換エンジン18と、を有するデータフローグラフ生成システム12を含む。グラフ生成システム12はクライアントデバイス20に動作可能に連結されて、グラフ生成システム12へのアクセスを提供し、それによって、実行環境へのアクセスも提供し、また、コンパイラシステム22へのアクセスを提供して、グラフ生成システム12によって生成されたデータフローグラフをコンパイルする。コンパイルされたデータフローグラフは、実行及び記憶のためにデータ処理システム24及び記憶システム26に提供される。記憶システム26は、記憶デバイスなど1つ以上のデータソース又はオンラインデータソースへの接続を含み、これらのそれぞれは、様々な形式(例えば、とりわけデータベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームコンピュータによって使用されるネイティブ形式)のいずれかでデータを記憶し得るか、又は提供し得る。特に、記憶システム26は、データ処理システム24によって取得されて、コンパイルされたデータフローグラフ、並びにコンパイルされたデータフローグラフの実行を通じて生成された出力データを実行することができる、メタデータ及びレコード形式など入力データを記憶し得る。
一般に、実行環境は、好適なシステム、例えば、とりわけUNIX(登録商標)ベースのオペレーティングシステム、Windowsベースのオペレーティングシステムなどの制御下にある1つ以上の汎用コンピュータ上でホストされ得る。例えば、実行環境は、ローカル(例えば、対称マルチ処理(symmetric multi-processing、SMP)コンピュータなどマルチプロセッサシステム)、又はローカル分散(例えば、クラスタ若しくは超並列処理(massively parallel processing、MPP)システムとして連結された複数のプロセッサ、又はリモート、又はリモート分散(例えば、ローカルエリアネットワーク(local area network、LAN)若しくはワイドエリアネットワーク(wide-area network、WAN)を介して連結された複数のプロセッサ)、あるいはそれらの任意の組み合わせのいずれかの、複数の処理ユニット(CPUなど)又はプロセッサコアを使用したコンピュータシステムの構成を含む、マルチノード並列コンピューティング環境を含むことができる。
データフローグラフの生成された表現にアクセスし、グラフを定義するコンピュータ命令を生成する他のシステムとは異なり、システム10は中間グラフ(例えば、データフローグラフ17)にアクセスし、最適化及び他の動作によって中間グラフを変換して、コンパイルのために変換されたグラフ(例えば、変換されたデータフローグラフ19)を生成する。例えば、データフローグラフエンジン16は、所望の計算グラフのデータソース、データシンク、及びデータ処理機能を示すクライアントデバイス20から選択データを受信する。これらの詳細はデータフローグラフ生成システム12によって得られ得るため、クライアントデバイス20のユーザは、データアクセスの詳細又は他の低レベルの実施詳細を指定する必要はない。選択データに基づいて、データフローグラフエンジン16は、データフローグラフ17を生成するか、又は以前に作成されたデータフローグラフ17を修正する。変換エンジン18は、完成したデータフローグラフ17を受信し、例えば、最適化及び変換の中でもとりわけ、図4Dに関連して以下に記載するように、データフローグラフ17における冗長性を除去すること、データフローグラフ17に並べ替え又はパーティションを追加すること、及び中間メタデータ(例えば、データフローグラフ17を変換されたデータフローグラフ19に変換する、あるいは別の方法で変換するためのメタデータ)を指定することよって、データフローグラフを変換されたデータフローグラフ19に変換する。その後、変換されたデータフローグラフ19はコンパイラシステム22に提供されて、変換されたデータフローグラフ19をコンパイルされた計算グラフ(例えば、実行可能プログラム23)にコンパイルする。
一般に、データフローグラフ17(「修正されたデータフローグラフ」と呼ばれることもある)は、ノード(又はコンポーネント)を有する、変換されたデータフローグラフ19などコンパイルされたグラフのコア構造を表す。データフローグラフ17は、任意選択的に、パラメータ(例えば、名前、値、場所、解釈)を含む。いくつかの実施例では、データフローグラフ17は、サブグラフとして使用されることを意図したグラフでのように、グラフ自体に入力ポート及び出力ポートを含む。
いくつかの実施例では、ノード(又はコンポーネント)は、ノードの挙動又は機能を示すノードの「種類」を有するか、又はかかるノードの「種類」である。ノードの種類は、ノードのプロトタイプを選択するため、パターンマッチングを容易にするため(例えば、並べ替えノードに続く並べ替えノードを見出すため)、変換されたデータフローグラフ19内でインスタンス化されるコンポーネントを判定するために使用される。例えば、データフローグラフ17におけるゴミノードは、変換されたデータフローグラフ19においてゴミノードとしてインスタンス化され得る。ノード(又はコンポーネント)は、以下に記載するように、入力ポート、出力ポート、及びパラメータを含み得る。
ノードは、任意選択的に、ノードを識別するラベルを有する。いくつかの実施例では、ノードがラベルを有しない場合、システムが、ノードにラベルを割り当てる。ノードラベルは、英数字、空白文字、及び句読点の任意の集合体を含み得、一意である必要はない(ただし、グラフへの変換中に一意になり得る)。システムは、ノードラベルを使用してノード(又はノードの入力ポート、出力ポート、又はパラメータ)を参照して、例えば、ノードの入出力又はノード間のデータフローを定義することができる。
図2Aを参照すると、データフローグラフ17の一実施例が、ノード34a~34nを含むものとして示されている。ノード34のそれぞれは、少なくとも1つの動作プレースホルダフィールドと、少なくとも1つのデータプレースホルダフィールドと、を含む。例えば、「初期」ノード34aは、1つ以上の動作要素35a’を保持する動作プレースホルダフィールド35aと、1つ以上のデータソース又はデータシンク要素35b’を保持するデータプレースホルダフィールド35bと、を有する。動作要素35a’は、初期ノード34aに対するデータの入出力で機能を実行するコード又はコードの位置を指定し得る。データソース又はデータシンク要素35b’は、初期ノード34aの(初期ノード34aの機能の)データソース若しくはデータシンク、又はデータソース若しくはデータシンクの位置を指定し得る。いくつかの実施例では、要素35a’若しくは要素35b’、又はその両方は、データベースへのリンク又は記憶システム26に含まれるコードへのポインタなど記憶システム26へのリンク又はアドレスを含む。いくつかの実施例では、要素35a’若しくは要素35b’、又はその両方は、スクリプトを含む。
データフローグラフ17の構築中、ノード34のそれぞれは、動作プレースホルダフィールドに配置される動作要素及びデータプレースホルダフィールドに配置されるデータソース又はデータシンク要素を取得してそれぞれのフィールドに追加することによって修正され得る。例えば、初期ノード34aは、動作要素35a’を(例えば、記憶システム26から)取得して、指定された機能又は機能を指すリンクを動作プレースホルダフィールド35aに追加することによって、またデータソース又はデータシンク要素35b’を取得して、データのソース又はシンクを指すリンクをデータプレースホルダフィールド35bに追加することによって、構築中に修正される。特定のノード34の修正が完了すると、ノードにはラベルが付けられて、ラベル付きノードを提供し得る。ノード34のそれぞれが修正(及びラベル付け)された後、完成したデータフローグラフ17が(例えば、記憶システム26に)記憶され、以下に記載するように、他のデータフローグラフを生成するために使用される。
いくつかの実施例では、データフローグラフ17のノード34のそれぞれは、最初は未修正である。例えば、ノード34のそれぞれは、上述のように、指定された動作要素35a’及びデータソース又はデータシンク要素35b’を含むように後に修正される、空の動作プレースホルダフィールド35a及びデータプレースホルダフィールド35bを有し得る。いくつかの実施例では、データフローグラフ17は、以前に完成したデータフローグラフであり、ノード34の一部又は全ては、動作要素35a’を保持する、対応する動作プレースホルダフィールド35aと、データソース又はデータシンク要素35b’を保持するデータプレースホルダフィールド35bと、を有する。完成した、かかるデータフローグラフ17は、(例えば、それぞれのフィールド35a、35bに配置される追加の又は代替の要素35a’、35b’を取得することによって)更に修正され、新しい又は修正されたデータフローグラフとして記憶され得る。
いくつかの実施例では、初期ノード34aなど特定のノードは「再利用」されて、以前のノード34aに関連付けられた、任意選択的にラベル付けされた新しいノードを生成する。初期ノード34aから新しいノードを生成するこの反復プロセスは、ユーザが所望の計算グラフのために指定機能を有するまで継続する。反復プロセスが完了すると、完成したデータフローグラフ17が提供される。完成したデータフローグラフ17は、例えば、初期ノード34aからインスタンス化された複数のノード34a~34nを含む。完成したデータフローグラフ17は、以下に記載するように、(例えば、記憶システム26に)記憶され、他のデータフローグラフを生成するために使用され得る。
図2Bは、完成した(例えば、修正された)データフローグラフ17のある実施例を示す。修正されたデータフローグラフ17は、動作要素を保持する、対応する動作プレースホルダフィールド35aと、データソース又はデータシンク要素を保持するデータプレースホルダフィールド35bとを有する、OP-0~OP-6とラベル付けされた7つのノードを含むものとして示されている。例えば、OP-0とラベル付けされたノード34aは、「データセットI」のデータソース要素37b’が読み取られることを示す、読み取り動作要素37a’を含む。データフローグラフ17は、図1に示され、図2~図4を参照して以下に詳述するデータフローグラフに対応する。修正されたデータフローグラフ17は、例えば、データ構造として記憶システム26に記憶される。
ここで図3A~図3Cを参照すると、データフローグラフ17及び変換されたデータフローグラフ19の視覚化が、構築の様々な段階で示されている。例えば、図3Aは、完成した(例えば、修正された)データフローグラフ17の視覚化70を描写する。図3Bは、変換エンジン18による最適化後の完成したデータフローグラフ17の視覚化72を示す。視覚化72に示されるように、完成したデータフローグラフ17の最適化により、図4Dに関連して以下に記載するように、変換エンジン18が冗長である、ないしはグラフの機能に不要であると判定した再フォーマット及びフィルタ動作が削除された。図3Cは、最適化され、完成したデータフローグラフ17(図3B)と同じ機能を実行するために、変換エンジン18によって生成された、変換されたグラフ19の視覚化74を示す。視覚化74に示されるように、完成したデータフローグラフ17に不要であった追加の並べ替え及び分割コンポーネントが変換されたデータフローグラフ19に追加されており、コンパイル及び実行を容易にする。
一般に、変換エンジン18は、データフローグラフ17で指定された動作のうちの1つ以上に従ってデータを処理するために、又は最適化若しくは変換を行わないデータ処理と比較して、データフローグラフ17で指定された動作のうちの1つ以上に従ったデータ処理を改善するために必要とされ得る、最適化若しくは他の変換、又はその両方を実行する。例えば、変換エンジン18は、とりわけ、1つ以上の並べ替え動作、データ型動作、データフローグラフ17で指定されたキーに基づいた結合動作など結合動作、分割動作、自動並列動作、又はメタデータを指定する動作を追加して、データフローグラフ17の所望の機能を有する、変換されたデータフローグラフ19を生成する。いくつかの実施例では、変換されたデータフローグラフ19は、1つ以上のデータフローグラフ最適化ルールを変換されたデータフローグラフに適用して、最適化適用前の変換されたデータフローグラフの計算効率と比較して、変換されたデータフローグラフの計算効率を改善することによって最適化されたデータフローグラフである(又は、最適化されたデータフローグラフに変換される)。データフローグラフ最適化ルールとしては、例えば、図4Dに関連して以下に記載するように、例えば、とりわけ、デッド若しくは冗長コンポーネントの削除、早期フィルタリング、又はレコードの縮小が挙げられ得る。
ここで図4Aを参照すると、計算グラフ(例えば、データフローグラフ17)を編集するための例示的なグラフィックエディタインターフェース50が示されている。エディタUIジェネレータ14は、クライアントデバイス20にUIデータ30を提供して、クライアントデバイスにグラフィカルエディタインターフェース50を生成させる。一般に、グラフィックエディタインターフェースは、キャンバス部分52と、カタログ部分54と、を含む。カタログ部分54は、データセット選択アイコン55a~55nを含むデータセット選択部分55と、変換選択アイコン57a~57nを含む変換選択部分57と、を含む。データセット選択アイコン55a~55nは、記憶システム26に記憶され、データセット選択アイコンによって表される、対応する要素(例えば、データソース又はデータシンク要素35b’)を参照する。いくつかの実施例では、これらの要素は、動作が実行され得るか、又はデータが記憶され得るデータセット(又はデータセットへのポインタ)を含み得る。変換選択アイコン57a~57nは、記憶システム26に記憶され、変換選択アイコンによって表される、対応する要素(例えば、動作要素35a’)を参照する。いくつかの実施例では、これらの要素は、実行される動作のタイプ(例えば、書き込み動作、結合動作など)を指定するデータ(又はデータへのポインタ)を含む。
動作中、クライアントデバイス20のユーザは、変換選択部分57からアイコン(例えば、変換選択アイコン57a~57nのうちの1つ)を選択し、例えば、アイコンをキャンバス52にドラッグする。ユーザはまた、カタログ選択部分55からアイコン(例えば、データセット選択アイコン55a~55nのうちの1つ)を選択し、例えば、アイコンをキャンバス52にドラッグする(キャンバス52上の所望の変換選択アイコン上にデータセット選択アイコンをドラッグすることを含み得る)。この例では、記憶されたデータ構造又は他の記憶データは、図4Cに関連して以下に記載するように、データフローグラフ17の修正に使用される要素(例えば、動作要素35a’及びデータソース又はデータソース要素35b’)にアイコンを関連付ける。ユーザの選択により、データフローグラフエンジン16は、選択されたデータセット選択アイコン及び選択された変換選択アイコンを示すデータなどアイコン選択データ32を、生成されたエディタインターフェースから受信する。キャンバス52内のアイコンは、例えば、グラフ生成システム12によって自動的に接続され得る。いくつかの実施例では、キャンバス52内で、あるアイコンを別のアイコンの下に配置すると、グラフ生成システム12にこれらのアイコン間を自動的に接続させるように、アイコンが自動的に接続される。いくつかの実施例では、ユーザは、アイコンを接続する選択権を有する。
図4Bは、キャンバス部分52に完成したデータフローグラフの視覚表現60を有するエディタインターフェース50を示す。完成したデータフローグラフの視覚表現60(便宜上本明細書では、完成したデータフローグラフ60とも呼ばれる)は、ユーザがカタログ部分54からアイコンを選択し(例えば、データセット選択部分55及び変換選択部分57から選択し)、所望の配置でキャンバス52上にアイコンを配置することによって生成された。図4Aから図4Bへと進むために、ユーザは、アイコン(例えば、アイコン55a~n、57a~n)をキャンバス52にドラッグして、所望の視覚データフローグラフ60を生成することができる。完成したデータフローグラフ60は、データセットIに適用される読み取り動作を表す第1のコンポーネントアイコン60aと、データセットIIに適用される読み取り動作を表す第2のコンポーネントアイコン60bと、キー値に基づいて、データセットI及びデータセットIIに適用される結合動作を表す第3のコンポーネントアイコン60cと、結合動作60cの出力に適用される再フォーマット動作を表す第4のコンポーネントアイコン60dと、再フォーマット動作60dの結果に適用されるフィルタ動作を表す第5のコンポーネントアイコン60eと、フィルタ動作60eの結果に適用されるロールアップ動作を表す第6のコンポーネントアイコン60fと、データシンクIに適用される書き込み動作を表す第7のコンポーネントアイコン60gと、を含む。
完成したデータフローグラフ60を構成する選択されたデータセットアイコン及び選択された変換アイコン(及びいくつかの実施例では、それらの配置)を示すアイコン選択データ32は、データフローグラフエンジン16によって受信される。図4Cに示されるように、データフローグラフエンジン16は、選択データ(例えば、アイコン選択データ32)に基づいてデータフローグラフ17を修正して選択された要素を含め、指定されたデータフローグラフ(例えば、視覚化60で視覚化された、指定されたデータフローグラフ)の機能を有する完成されたデータフローグラフ17を生成する。そのようにするために、データフローグラフエンジン16は、アイコン選択データ32を処理して、アイコン選択データに対応する動作要素35a’又はデータ要素35b’、又はその両方を識別する。次いで、データフローグラフエンジン16は、識別した要素35a’、35b’を使用して、データフローグラフ17の各ノード34a~34nのフィールド35a、35bを追加(又は修正)することによってデータフローグラフ17を生成する。例えば、データフローグラフエンジン16によって受信されたアイコン選択データ32は、データフローグラフ60が、データセットIを表すデータ選択アイコン55aに適用される読み取り動作を表す変換選択アイコン57aを含むように指定し得る。データフローグラフエンジン16は、選択されたアイコン57aを、読み取り動作を表す動作要素35a’に関連付ける、1つ以上の記憶データ構造又は他の記憶データを用いてこのアイコン選択データ32を処理し得る。次いで、データフローグラフエンジン16は、データフローグラフ17のノード(例えば、ノード34a)の動作フィールド35aに読み取り動作に対応する動作要素35a’(又は動作要素35a’を指すリンク)を追加(又は修正)し得る。同様に、この例では、データフローグラフエンジン16は、データセット選択アイコン55aを、データセットIを表すデータソース要素35b’に関連付ける、1つ以上の記憶データ構造又は他の記憶データを用いて、受信したアイコン選択データ32を処理し得る。次いで、データフローグラフエンジン16は、データフローグラフ16のノード34aのデータフィールド35bに、データセットIに対応するデータソース要素35b’(又はデータソース要素35b’を指すリンク)を追加(又は修正)し得る。
ここで図4Dを参照すると、完成した(例えば、修正した)データフローグラフ17が変換エンジン18に提供される。一般に、完成したデータフローグラフ17は、(1)冗長データ処理動作を表すノードを含み得る;(2)結果がその後に使用されないデータ処理動作を実行する必要があり得る;(3)並列処理が可能である場合、順次処理を不必要に実行する必要があり得る;(4)所望の結果を得るために必要とされるよりも多くのデータにデータ処理動作が適用され得る;(5)複数ノードにわたる計算が生じ、各データフローグラフノードのデータ処理が、コンピュータプログラムの専用スレッド、専用コンピュータプログラム(例えば、オペレーティングシステム内のプロセス)、又は専用計算デバイスによって実行される場合には、計算を実行する計算コストが著しく増加し得る;(6)より少量の計算を必要とするより弱いタイプのデータ処理動作(例えば、グループ内並べ替え動作、グループ内ロールアップ動作など)で十分である場合に、より大量の計算を必要とするより強いタイプのデータ処理動作(例えば、並べ替え動作、ロールアップ動作など)を実行する必要があり得る;(7)処理作業の重複を必要とし得る;又は(8)とりわけ、データ処理に有用な、若しくは必要な動作又は他の変換、又はそれらの組み合わせを含まないことがあり得る。
したがって、変換エンジン18は、データフローグラフ17で指定された動作に従ってデータを処理するために、又は最適化若しくは変換を行わないデータの処理と比較して、データフローグラフ17で指定された動作に従ってデータの処理を改善するために有用である、又は必要とされ得る、以下の最適化若しくは他の変換のうちの1つ以上、又はその両方をデータフローグラフ17に適用する。例えば、上述のように、ユーザは、所望のアイコンを選択し、並べ替え及び分割動作など低レベルの実施詳細を指定する必要なく、それらのアイコンをキャンバスに配置することによって、データフローグラフ17を作成し得る。しかしながら、これらの動作は、データフローグラフをコンパイルし、実行して、データフローグラフ17で指定された動作に従ってデータを処理するために、変換されたデータフローグラフ19において有用であり得る、若しくは必要とされ得るか、又はデータフローグラフ17で指定された動作に従ったデータの処理を改善し得るか(例えば、処理速度を上げること、計算リソースの消費を低減することなどによって)、又はその両方であり得る。したがって、変換エンジン18は、変換されたデータフローグラフ19に、とりわけ並べ替え動作、データ型動作、指定キーとの結合動作、分割動作、自動並列動作、又はメタデータを指定する動作など1つ以上の動作を追加して、データフローグラフ17で指定された動作を最適化し得るか、又は実施し得る。変換されたデータフローグラフ19に追加された動作のうちの少なくともいくつかは、データフローグラフ17に存在しないか、ないしは別の方法で表されていないことがある。
いくつかの例では、これらの動作を追加するために、変換エンジン18は、追加される動作を表す1つ以上のノード34を、変換されたデータフローグラフ19を生成するために使用されるデータフローグラフ17に挿入し得る。いくつかの例では、変換エンジン18は、データフローグラフ17のノードを修正することなく、変換されたデータフローグラフ19内で追加される動作を直接挿入することができる。変換エンジン18は、これらの動作を、それらの対応する変換されたデータフローグラフ19の生成時に全てのデータフローグラフ17に追加し得る、これらの動作を、データフローグラフ17に含まれる動作(以下に記載するようにパターンマッチング技術を使用して識別され得る)に基づいて追加し得る、又はいくつかの他の最適化ルールに基づいてこれらの動作を追加し得る。
変換エンジン18はまた、1つ以上のデータフローグラフ最適化ルールをデータフローグラフに適用して、変換されたデータフローグラフの計算効率を改善することによって、とりわけ、デッドコンポーネント若しくは冗長コンポーネントを削除することによって(例えば、デッドコンポーネント若しくは冗長コンポーネントに対応する1つ以上のノード34を削除することによって)、データフロー内の以前のフィルタリング工程を移動することによって(例えば、フィルタリングコンポーネントに対応する1つ以上のノード34を移動することによって)、又はレコードを縮小することによって、データフローグラフ17(又は変換されたデータフローグラフ19自体)を最適化し得る。このようにして、変換エンジン18は、容易に修正可能なデータフローグラフ17を最適化し、コンパイルに好適である、最適化された、変換されたデータフローグラフ19に変換する。
本明細書に記載のデータフローグラフの最適化は、以下の最適化手段のうちの1つ以上を含み得る。データフローグラフの追加の最適化は、米国特許出願第15/993,284号、名称「Systems and Methods for Dataflow Graph Optimization」に記載されている最適化のうちの1つ以上を含み得、その全内容は、参照により本明細書に組み込まれる。
いくつかの例では、変換エンジン18は、それぞれの動作を表す、データフローグラフ17内の2つの隣接するノード(例えば、ノード34)を識別し得、第2の動作は、動作のうちの1つが冗長であるように、第1の動作の効果を複製するか、又は無効化する。したがって、変換エンジン18は、変換されたデータフローグラフ19の生成時に、冗長動作を表すノード34(例えば、複製された動作又は無効化された動作を表すノード)を削除することによってデータフローグラフ17を最適化し得る。例えば、変換エンジン18は、同一動作を有する2つの隣接するノード34を識別し得る。同一動作を実行する2つの隣接するノードは、典型的には冗長であるため、両方の動作を実行する必要はなく、2つの隣接するノードのうちの1つを削除して、データフローグラフを最適化することができる。別の例として、変換エンジン18は、再分割動作(異なる計算デバイスでの並列処理のためにデータを分割する)を表す第1のノード、続いて、シリアル化動作(単一の計算デバイスによる順次処理のために全データを統合するように動作する)を表すノードを有する2つの隣接するノード34を識別し得る。再分割の効果は、後続のシリアル化動作によって無効化されるため、再分割動作を実行する必要はなく(例えば、再分割動作は冗長である)、再分割動作は、最適化プロセス中に変換エンジン18によって削除され得る。
いくつかの例では、変換エンジン18は、他の動作を表す1つ以上の他のノードと交換可能である、第1の動作を表す第1のノードを識別し得る。第1のノードが1つ以上の他のノードに交換可能である場合、変換エンジン18は、1つ以上の他のノードのうちの少なくとも1つを用いて第1のノードの順序を変更することによって(例えば、ノード34の順序を組み替えることによって)、データフローグラフを最適化することができる。このようにして、変換エンジン18は、結果を変更せずに、データフローグラフによる処理効率、速度を改善するか、ないしは別の方法で最適化する方法で、ノード及び対応する動作を順序付けることによって、データフローグラフを最適化することができる。更に、このようにノードを交換することにより、変換エンジン18は、他の最適化を適用することが可能であり得る。前の例を再び参照すると、変換エンジン18は、第1の並べ替え動作を表す第1のノードが第2の並べ替え動作を表す第2のノードに隣接して配置されるように、1つ以上の他のノードのうちの少なくとも1つを用いて第1のノードの順序を変更し得る。結果として、第1の並べ替え動作及び第2の並べ替え動作は冗長になり、変換エンジン18は、第1の並べ替え動作又は第2の並べ替え動作のうちの1つを削除することによって(例えば、変換されたデータフローグラフ19の生成時に、データフローグラフ17から対応するノード34を削除することによって)、データフローグラフを最適化することができる。
いくつかの例では、変換エンジン18は、未使用である、ないしは別の方法で不要である動作を表す「デッド」ノードを識別し、削除し得る。例えば、変換エンジン18は、結果が参照されないか、又は使用されない動作(例えば、並べ替え動作から生じた順序が不要であるか、又はその後の処理で依拠されていないために参照されない、並べ替え動作)を表す1つ以上のノードを識別し得る。したがって、変換エンジン18は、デッド動作又は未使用動作を削除することによって(例えば、変換されたデータフローグラフ19の生成時に、対応するノード34を削除することによって)データフローグラフを最適化し得る。
いくつかの例では、変換エンジン18は、1つ以上のノードで強度低減最適化を実行することができる。例えば、変換エンジン18は、第1の種類の第1の動作(例えば、主要キーでの第1の並べ替え動作、主要キーでの第1のロールアップ動作など)を表す第1のノードを識別し、続いて、第2のより弱い種類の第2の動作(例えば、非主要キーでの第2の動作、グループ内並べ替え動作、非主要キーでの第2のロールアップ動作、グループ別ロールアップ動作など)を表す第2のノードを識別し得る。第1の動作によるデータ処理には、第2のより弱い動作によるデータ処理データよりも多くの計算リソースを必要とし得るため、変換エンジン18は、第1の動作を第2の動作と置き換える強度低減最適化を実行し得る(例えば、第1のノードの動作要素35a’若しくはデータ要素35b’、又はその両方を第2のノードのそれらと置き換えることによって)。
更に別の例として、変換エンジン18は、2つ以上のノードを統合することによって、データフローグラフを最適化し得る。例えば、変換エンジン18は、1つ又は複数の計算デバイスで実行される異なるプロセスによって実行され得る動作を表す別個のノードを識別し得、別個のノード及びそれぞれの動作を単一ノードに統合することによって、データフローグラフを最適化し得、その結果、全ての動作が単一の計算デバイスで実行される単一プロセスによって実行されるようになり、プロセス間(及び潜在的にデバイス間)通信のオーバーヘッドを低減することができる。変換エンジン18はまた、多くの他の組み合わせの中でも、組み合わされ得る2つ以上の別個の結合動作又はロールアップ動作と組み合わされ得るフィルタリング動作など、組み合わされ得る他のノードを識別することができる。
いくつかの例では、変換エンジン18は、別々に実行されたときにより効率的であり得るいくつかの動作を実行するように構成されたノードを識別し得、並列処理用にいくつかの動作(例えば、自動並列動作)のうちの1つ以上を別個のノードに分割する、データフローグラフの直列-並列最適化を実行し得る。次いで、動作は、1つ又は複数の計算デバイスで実行される異なるプロセスを使用して並列に実行され得る。次いで、変換エンジン18は、マージ動作を追加して、並列動作の結果をマージすることができる。同様に、いくつかの例では、変換エンジン18は、大量のデータチャンク(例えば、大型のテーブル及びインデックスに対応するデータ)を含むデータフローグラフ内でポイントを識別し得、データフローグラフの分割最適化を実行して(例えば、自動分割動作)、データをより小さなパーティションに分割し得る。次いで、パーティションは、直列又は並列に(例えば、自動分割動作を自動並列動作と統合することによって)処理され得る。処理されるデータのサイズを低減することにより、若しくは並列処理用の動作を分けることにより、又はその両方により、変換エンジン18は、得られたデータフローグラフ19の効率を大幅に改善することができる。
いくつかの例では、変換エンジン18は、変換されたデータフローグラフ19の生成時に、幅低減最適化を実行することができる。例えば、変換エンジン18は、データ(例えば、削除されるデータ)が後続の動作において使用されず、処理の一環として伝搬される必要はないために後続の動作の実行前にデータフローグラフの特定の時点で削除されるデータ(例えば、1つ以上のデータ列)を識別し得る。別の例として、データフローグラフ内のノードは、いくつかの動作を実行するように構成され得、これらの動作の一部の結果は、未使用であり得る。したがって、変換エンジン18は、(例えば、ノードを挿入して識別された時点でデータを削除することによって、複数の動作を実行するように構成されたノードを結果が使用される動作のみを実行するように構成された別のノードに置き換えることによって)、未使用データ、ないしは不要データを削除する幅低減最適化を実行し得る。このようにして、変換エンジン18は、後続の動作を通じてデータを持ち運ぶためにデータフローグラフによって必要とされる計算リソースの量を低減することによって(例えば、利用されるネットワーク、メモリ、及び処理リソースを削減することによって)データフローグラフを最適化する。
1つ以上の最適化を適用するデータフローグラフ(例えば、データフローグラフ17)の部分を識別するために、変換エンジン18(又はグラフ生成システム12の別のコンポーネント)は、データフローグラフパターンマッチング言語を用いることができる。データフローサブグラフパターンマッチング言語は、以下で詳述するように、最適化のためにデータフローグラフ内の特定のノード又は動作を識別するために1つ以上の表現を含み得る。例えば、パターンマッチング言語は、統合動作最適化ルールを使用して、データフローグラフ内の単一ノードによって統合され、表され得る、それぞれの一連の計算を表す、少なくとも閾値長さ(例えば、少なくとも2、3、4、5など)の一連のノードを識別するための表現を含み得る。かかるパターンを識別することは、上記の統合動作最適化ルールの適用を容易にし得る。1つのかかる表現の好ましいが非限定的な例は、「A→B→C→D」であり、統合され得る一連の4つの連続するデータ処理動作を識別するのに役立ち得る。
別の例として、パターンマッチング言語は、特定の種類のノードが他のノードと交換可能であってデータフローグラフを最適化する、データフローグラフの部分を識別するための表現を含み得る。これは、複数の異なる種類の最適化ルールをデータフローグラフに適用することを促進し得る。データ処理システムが、処理結果を変更することなくデータフローグラフ内の1つ以上のノードの順序を変更できると判定すると、データ処理システムは、最適化ルールを適用可能な部分を識別するために、(交換動作を通じて利用可能な自由度によって許可されるように)データフローグラフの構造に対する変更を検討することが可能になる。交換ベースの変更を検討した結果として、1つ以上の最適化ルールが、そうでなければルールが適用可能ではないグラフの一部に適用可能になり得る。
例えば、上述のように、最適化ルールは、それぞれの並べ替え動作を表す初期データフローグラフ内の2つの隣接するノードを識別することを含み得、第2の並べ替え動作は、第1の動作が冗長であるように第1の動作の効果を無効化する。定義により、かかる最適化ルールは、並べ替え動作を表す隣接するノードを有しないデータフローグラフには適用されない。しかしながら、第1の並べ替え動作を表す第1のノードが1つ以上の他のノードと交換可能である場合、第1の並べ替え動作を表す第1のノードが第2の並べ替え動作を表す第2のノードに隣接して配置されるように、1つ以上の他のノードのうちの少なくとも1つを用いて第1のノードの順序を変更することが可能であり得る。このようにノードを交換する結果として、冗長な第1の並べ替え動作を削除する最適化ルールがデータフローグラフに適用され得る。
したがって、いくつかの例では、パターンマッチング言語は、データフローグラフ内でのノードの順序が変更され得る状況において、データフローグラフのサブグラフを識別するために1つ以上の表現を含み得る。一例として、表現「A→(...)→B」(A及びBのそれぞれは、並べ替え、マージなど任意の好適なデータ処理動作であり得る)は、ノード「A」(例えば、動作「A」を表すノード)及びノードB(動作Bを表す)、並びにノードAと交換可能である、ノードAとノードBとの間にある1つ以上のノード(例えば、ノードの順序が変更される場合、これらのノードによって実行される処理の結果は変化しない)を有するデータフローグラフの部分を見出すために使用され得る。かかる部分が識別されると、データフローグラフは、ノードAをノードBに隣接するように移動させて、部分「AB」を得ることによって変更され得るか、又は最適化され得る。特定の例として、データフローグラフがノードACDBを有し、動作Aが動作C及びDと交換可能である場合、データフローグラフは、「CDAB」になるように変更され得る。次に、変換エンジン18は、最適化ルールが部分「AB」に適用されるかどうかを検討し得る。例えば、動作Aが並べ替えであり、動作Bが並べ替えであった場合、変換エンジン18は、これら2つの並べ替えが単一の並べ替えで置き換えられて、データフローグラフを最適化し得るかどうかを判定しようと試み得る。
別の例として、表現「A→(...)→B」は、ノードA、第2のノードB、及びノードBと交換可能である、これらのノード間にある1つ以上のノードを有するデータフローグラフの部分を見出すために使用され得る。特定の例として、データフローグラフがノードACDBを有し、動作Bが動作C及びDと交換可能である場合、データフローグラフは、「ABCD」となるように変更され得るか、又は最適化され得る。次に、変換エンジン18は、最適化ルールが部分「AB」に適用されるかどうかを考慮し得る。
別の例として、表現「A→(...)→B**」は、ノードA、ノードB、及びノードBと交換不能である、ノードAとノードBとの間にある1つ以上のノード(例えば、C及びD)を有するデータフローグラフの部分を見出すために使用され得る。その場合、システムは「プッシュ」交換を試み得る(可能であれば、ノードC及びDがノードAの左側へとプッシュされる)。特定の例として、データフローグラフがノードACEDBを有し、動作Bが動作Eと交換可能であるが、動作C及びDとは交換不能であるとすると、データフローグラフは、「CDABE」となるように変更され得る。つまり、BはEと交換されるが、C及びDはAの左側へとプッシュされる。
更に別の例として、表現「A**→(...)→B」は、ノードA、ノードB、及びノードAと交換不能である、ノードAとノードBとの間にある1つ以上のノード(例えば、C及びD)を有するデータフローグラフの部分を見出すために使用され得る。その場合、システムは「プッシュ」交換を試み得る(可能であれば、ノードC及びDがノードBの右側へとプッシュされる)。特定の例として、データフローグラフがノードACEDBを有し、動作Aが動作Eと交換可能であるが、動作C及びDとは交換不能であるとすると、データフローグラフは、「EABCD」となるように変更され得る。つまり、ノードAはEと交換されるが、C及びDはBの右側へとプッシュされる。
一般に、最適化及び変換プロセスは反復であり、最適化又は変換(18a)の各反復により、試験(18b)が、更なる最適化又は変換は不可能である、不要である、又は所望されないことを示すまで、データフローグラフ17は変換される。例えば、変換エンジン18は、(1)第1の最適化ルールを選択すること、(2)第1の最適化ルールを適用するデータフローグラフ17の第1の部分を識別すること、及び(3)第1の最適化ルールをデータフローグラフ17の第1の部分に適用すること、によって、データフローグラフ17を変換し得る。その後、データ処理システムは、本明細書に記載の別の1つ以上の追加の最適化がデータフローグラフ17に適用可能であるかどうか、又はコンパイルされ、実行され得る変換されたデータフローグラフ19を生成するために必要であるかどうかを判定し得る。追加の最適化が適用可能である場合、変換エンジン18は、(1)第1の最適化ルールとは異なる第2の最適化ルールを選択すること、(2)第2の最適化ルールを適用するデータフローグラフ17の第2の部分を識別すること、及び(3)第2の最適化ルールをデータフローグラフ17の第2の部分に適用すること、によって、データフローグラフ17の更新を続行し得る。
更なる最適化又は変換が存在しない時点で、変換エンジン18は、変換されたデータフローグラフ19をコンパイラシステム22に出力し、コンパイラシステム22は、変換されたデータフローグラフ19を実行可能な計算グラフ(例えば、実行可能なプログラム23)にコンパイルし、この実行可能な計算グラフは、実行及び記憶のためにデータ処理システム24及び記憶システム26に提供される。
図5は、計算データフローグラフを生成するための例示的なプロセス500のフローチャートを示す。プロセス500は、例えば、システム10の1つ以上のコンポーネントによって実行され得る。
プロセス500の動作は、データを提供して、キャンバス部分と、カタログ部分と、を含むグラフィカルエディタインターフェースを生成することを含み、カタログ部分は、キャンバス部分において、計算(502)のロジックを視覚的に描写するための1つ以上の選択可能なアイコンを含む。例えば、カタログ部分は、データセット選択アイコン及び変換選択アイコンを含み得、選択された各アイコンは、動作又はデータソース若しくはシンクを指定するデータカタログからデータにアクセスする命令を表し得る。
キャンバス部分に描写された計算のロジックを表すアイコン選択データを受信する(504)。アイコン選択データは、カタログ部分から選択され、キャンバス部分に含まれる1つ以上の選択可能なアイコンのうちの少なくとも1つを指定することができる。
受信したアイコン選択データに基づいて、第1のデータフローグラフを生成する(506)。第1のデータフローグラフは、データ処理における第1のコンピュータ動作を表す複数の第1のノードを含み、第1のコンピュータ動作のうちの少なくとも1つは、宣言動作である。一般に、宣言動作は、結果の達成方法を必ずしも指定せずに、データの処理の1つ以上の結果の1つ以上の特性を指定するものである。第1のノードは、キャンバス部分で指定されたロジックを表し得、第1のノードのうちの少なくとも1つは、カタログ部分から選択された選択可能なアイコンを表す。いくつかの実施例では、第1のノードの一部又は全ては、動作を保持するための動作プレースホルダフィールドと、データのソース又はシンクを保持するためのデータプレースホルダフィールドと、を含む。第1のデータフローグラフを生成することは、動作プレースホルダフィールドに保持された動作の要素を記憶システムから取得して、動作プレースホルダフィールドに動作(又は動作へのリンク)を追加(又は修正)することと、データプレースホルダフィールドに保持されたデータソース又はデータシンクの要素を記憶システムから取得して、データプレースホルダフィールドにデータのソース又はシンクを指すリンクを追加(又は修正)することと、を含み得る。
いくつかの実施例では、第1のデータフローグラフの視覚化は、例えば、グラフィカルエディタインターフェースのキャンバス部分にレンダリングされる。いくつかの実施例では、第1のノードのうちの1つ以上がラベルを付けられて、ラベル付きノードを提供する。ラベルは、キー、値、名前、及びソースのうちの1つ以上を参照し得る。いくつかの実施例では、ラベル付きノードの視覚化は、キャンバス部分にレンダリングされる。
第1のデータフローグラフは、第1のコンピュータ動作に従ってデータを処理するために第2のデータフローグラフに変換される(508)。第2のデータフローグラフは、第2のコンピュータ動作を表す複数の第2のノードを含み、第2のノードのうちの1つ以上は、1つ以上の命令動作を表す。一般に、命令動作は、宣言動作によって指定されたロジックを実施する方法を(例えば、プログラミング言語又は他の機械可読コードで)指定するものである。1つ以上の命令動作は、第1のデータフローグラフ内の第1のノードによって表されない。いくつかの実施例では、第2のデータフローグラフに表され、第1のデータフローグラフには表されない第2の動作のうちの少なくとも1つは、並べ替え動作、データ型動作、指定キーとの結合動作、又は分割動作を含む。いくつかの実施例では、第2の動作のうちの少なくとも1つは、自動並列動作又は自動分割動作を含み、自動並列ノード又は自動分割ノードを第2のデータフローグラフに挿入することを含み得る。いくつかの実施例では、第2の動作のうちの少なくとも1つは、第2のノードのうちの1つ以上の間でメタデータを指定する動作を含む。いくつかの実施例では、ラベル付きノードであり得る第1のデータフローグラフの第1のノードは、計算データフローグラフである第2のデータフローグラフにコンパイルされ得る。ノード又はノードに記憶された要素は、最適化され得る。
いくつかの実施例では、第2の動作のうちの1つ以上は、(i)第1のデータフローグラフで指定された第1の動作のうちの1つ以上に従ってデータを処理するために必要であるか、又は(ii)1つ以上の追加動作を伴わないデータ処理と比較して、第1のデータフローグラフで指定された第1の動作のうちの1つ以上に従ったデータ処理を改善する。
いくつかの実施例では、第2のデータフローグラフは、1つ以上のデータフローグラフ最適化ルールを第2のデータフローグラフに適用して、適用前の第2のデータフローグラフの計算効率と比較して、第2のデータフローグラフの計算効率を改善することによって、最適化されたデータフローグラフに変換される。データフローグラフ最適化ルールとしては、例えば、図4A~図4Dに関連して以下に記載するように、例えば、とりわけ、デッドコンポーネントの削除、早期フィルタリング、又はレコードの縮小が挙げられ得る。
第2のデータフローグラフは、データストア(510)に記憶される。いくつかの実施例では、第2のデータフローグラフは、コンパイラシステムによってコンパイルされて、コンパイルされたデータフローグラフ(例えば、実行可能プログラム)を生成する。コンパイルされたデータフローグラフは、実行及び記憶のためにデータ処理システム及び記憶システムに提供され得る。
いくつかの実施例では、プロトタイプノードがアクセスされ、アクセスされたプロトタイプノードからパラメータをコピーして第1のノードのうちの少なくとも1つを修正するアルゴリズムが適用される。少なくとも1つのノードの少なくとも1つのパラメータは、プロトタイプノードによって上書きされない設定パラメータであり得る。プロトタイプノードは、少なくとも1つのノード上のポート又はノード自体を宣言することができる。いくつかの実施例では、プロトタイプノードは、エディタインターフェースのキャンバスに示されるコンポーネントのパラメータを宣言する。プロトタイプを適用することは、プロトタイプからの記述子で既存のパラメータの記述子を置き換え得るが、パラメータの既存の値は置き換え得ない。
字句構造:
データフローグラフ17などデータフローグラフは、字句構造を有する。いくつかの実施例では、字句構造は、記号、キーワード、数字、文字列、コード様文字列、及び他の字句要素を含む。
記号は、文字、数字、及び句読点(例えば、アンダースコア又はピリオド)を含み得、少なくとも1つの文字は、句読点文字ではない。いくつかの実施例では、記号の最初の文字は数字であることができないというルールなど、他のルールが採用され得る。
キーワードは、小文字のみを含む短い記号を含み得る。列挙される全キーワードに対して構造(例えば、データ構造)が開発され得る。
数字は、任意の長さを有する符号付き整数であり得る。パラメータ値である数字については、大きすぎて表せない数字(例えば、int8として)は、数値の代わりに文字列値を用いてパラメータに変換され得る。
文字列は、一重引用符又は二重引用符を用いて引用され得る。文字列内では、閉じ引用文字は、バックスラッシュでエスケープされ得る。
コード様文字列は括弧で引用され得る。括弧内では、一重及び二重引用文字列のように、均衡した入れ子状の括弧が許可される。この表現は、キー指定子、変換、メタデータ、及び複数行のテキストパラメータ値に使用され得る。また、括弧内では、解析中に一定のインデントが削除され、シリアル化中に再挿入される。したがって、グラフ構造と一致するインデント埋め込みデータ操作言語(data manipulation language、DML)である。
ポート、フロー、及び分岐:
ポートは、入力ポート及び出力ポートであり得る。各ポートは、ポートがそれらのコンポーネントのデフォルトの入力又は出力ポートではない限り、名前(例えば、「in」、「out」、「reject0」)を有する(デフォルトのポートである場合、名前は省略され得る)。ポートはフローを有する。フローは、1つの出力ポートを1つの入力ポートに接続することができる。ポートはパラメータを有する。ポートは、グラフポートに結合され得る。例えば、入力ポートはグラフ入力ポートに結合され得、出力ポートはグラフ出力ポートに結合され得る。
フローは、ノードとは別に、グラフの要素として指定され得る。フローは、ノードの上位レベルで指定され、デフォルト入力ポートへのフローを示し得るか、又は入力ポート内で指定され得る。
フローは、一連のノードを分岐に入れることによって暗黙的に指定され得る。分岐内では、新しいノードを導入するためにノードキーワードは不要である。分岐はIDを有し、フローがIDによってノードを指定することができる場合、分岐を指定することができる。分岐からのフローは、分岐の最後のノードからのフローであり得る。分岐へのフローは、分岐の最初のノードへのフローであり得る。
ノード又は分岐から1つのフローのみが存在する場合、当該ノード又は分岐は、その出力を消費するノードの内側で入れ子状になった、フローの一部として指定され得る。
グラフ要素は、グラフの他の要素を参照し得る。例えば、フローはノードを参照し得、パラメータは他のパラメータを参照し得、キーパラメータは、とりわけ、値を参照し得る。これらの参照を可能にするために、要素が導入されると、任意選択的に、IDが与えられ得る。異なる要素の種類は、別個のID空間を有し得る。いくつかの実施例では、IDは任意選択的であるが、IDがなければ、要素を参照することができない。
パラメータ:
パラメータは、名前、ロケータであり得る値、及び解釈を有し得る。パラメータは、記号であり得る。句読文字(例えば、ピリオド)が先行するパラメータ名は、データフローグラフに対してプライベートであるとみなされ、他のグラフモデル(変換されたデータフローグラフなど)でのパラメータの生成には使用されない。他の文字パターン(例えば、先行する2つのピリオド)で開始するパラメータ名は遷移状態とみなされ、デフォルトでは、グラフと共に保存されない。これは、コマンドで上書きされ得る。
パラメータは、それらに値を与えることによって定義される。パラメータ値は、文字列としてグラフパラメータに翻訳され得るが、他の形態は許可され得る。これらの他の形態は、内部モデルに、またシリアル化時に保存される。重複排除などグラフアルゴリズムでは、2つのパラメータの構造型が同一であり、それらの値が同一である場合、2つのパラメータは同一とみなされ得る。パターンマッチングでは、パターンパラメータの型が制御する(例えば、実際のパラメータは、当該型に変換されるパターンと比較される)。これにより、パターンは、例えば、パラメータ「sorted」が整数値1又は文字列値「true」(又は典型的には「true」として解釈されることになる他のパラメータ値のうちのいずれか)を有するノードに一致する「param sorted=true」を使用して、trueの値のパラメータをアサートすることができる。
パラメータは、指定の位置に位置し得る。他のグラフモデルの生成時には、ロケータを保存することができる。パラメータの値を利用するアルゴリズムは、ロケータパスを解決し、ファイルの内容を読み取ることができる。
グラフレベルのパラメータはデータフローグラフ17を変換されたデータフローグラフ19など他のグラフモデルに翻訳するときに、宣言を使用することができる。宣言は、多数の部分(例えば、入力又は出力パラメータ、パラメータの型、必須パラメータ、エクスポートされたパラメータ、パラメータコマンドラインインターフェース、環境から読み取られたパラメータ)を有し、それぞれデフォルト状態を有し得る。宣言のデフォルトは、特別なパラメータに値を提供することによって上書きすることができる。
ノードプロトタイプ又は置換ノード内では、パラメータは、記述子を有し得る。記述子を使用して、パラメータの編集に使用されるユーザインターフェース及びパラメータ値に適用される検証を決定することができる。一例では、記述子は、パラメータキーワードの直後のプロパティのセットである。
パラメータ記述子は、言語においてオープンエンドであり得る。例えば、新しいフィールドはプロトタイプファイルで使用され、実行時にコードを全く変更することなく、ユーザインターフェースで認識され得る。パラメータ値は、以下に記載する内蔵「apply-prototypes」パス内の記述子に対して、置換が生じるたびに検証される。
読み書き可変グラフ:
データフローグラフは、コマンドラインユーティリティを使用することなどによって、ファイル又はコマンドライン引数から読み取られ得る。
以下は、本明細書に記載の字句構造を使用した、完全なデータフローグラフの例である。
Figure 0007629464000001
データフローグラフのプロトタイプ:
パラメータ値は、パラメータとしてではなく引数としてスクリプトに現れることがあり、他のグラフモデルではパラメータを生成しない。代わりに、このパラメータは、データフローグラフ変換コードに対する命令であり、生成され、翻訳されたコンポーネントのコンポーネントパスを設定する。プロトタイプは、かかる種類の各ノードが、かかる同一のパラメータ値を有することを可能にする。
いくつかの実施例では、プロトタイプはデータフローグラフの一部として指定される。プロトタイプは直ちに適用されないことがあるため、グラフの解析及びシリアル化による変更は生じない。内蔵アルゴリズムは、プロトタイプからのパラメータをコピーするために提供され得る。設定済みのパラメータは、プロトタイプによって上書きされない。トランスレータによって使用される共通コンポーネントの種類は、列挙されており、名前を有する。可変ユーティリティは、コンポーネントのプロトタイプのデフォルトセットを生成する。これにより、明示的な指定の必要なパラメータが少なくなるため、グラフの生成が容易になる。
プロトタイプは、プロトタイプアルゴリズムを適用すること、新しいノードを導入するアルゴリズム内のコードでプロトタイプルーチンを明示的に呼び出すことなどによって、いくつかの状況で、又はマッピングルールの適用によるノードの生成時に常に適用される。
プロトタイプはまた、編集インターフェースを提示する際に使用するために、ノード、ポート、及びコンポーネントのパラメータを宣言するために使用され得る。この使用法は、以下の「PROTOファイル」に記載する。
プロトタイプの適用により、パラメータの既存の値が置き換えられることはない。しかしながら、プロトタイプの適用により、既存パラメータの記述子がプロトタイプからの記述子で置き換えられる。これにより、パラメータの型に関する情報を記述子に配置することが可能になり、パラメータ値に適用される。
データフローグラフのラベル:
ノードは、ゼロ以上のラベルを有し得る。コンポーネントがノードから生成されるとき、ノードのラベルは先頭文字が大文字になり、組み合わせてコンポーネントラベルを形成する。ノードが統合されると、それらのラベルセットも統合され得る。いくつかの実施例では、ラベルに優先権が割り当られて、ラベルの増殖を低減し、有意な最終ラベルを生成することができる。ラベルは、名付きラベルであり得、とりわけ、ソース、キー、又は値を指し得る。
データフローグラフのアルゴリズム:
いくつかの実施例では、1つ以上のアルゴリズムを適用してデータフローグラフを変換又は最適化することができ、アルゴリズムとしては、とりわけ、パターンマッチングパス、(上記の)プロトタイプを適用する内蔵パス、重複排除を行う内蔵パス、明示的複製を行う内蔵パス、及びフローをアンクロスする内蔵パスが挙げられる。
いくつかの実施例では、データフローグラフのアルゴリズムは、パターンマッチングパスを含む。パターンマッチングパスは、ルールを含み、各ルールは、パターンと、置換と、を有する。パターンは、パターンが一致するために必要なパラメータ値を指定し得る。パターンは、2つ以上のノードを含み得る。ノードの種類はワイルドカード化され得るが、そうすることにより、計算コストが高くなり得る。置換は、ゼロノード(グラフの一致セクションを完全に除去するため)、単一ノード、又はフローによって接続された複数のノードからなり得る。ワイルドカードのノード種類がパターンで使用された場合、当該ワイルドカードが一致したノード種に結合され、置換で使用され得る。
いくつかの実施例では、データフローグラフのアルゴリズムは、重複排除パスを含む。重複排除パスは、機能的に同一であるサブグラフを見出し、それらを統合する。2つのノードは、入力フローを有しない場合、又はそれらの入力フローが同一ノードからのフローであり、それらのパラメータが一致する場合、同一であるとみなされる。いくつかの実施例では、ノードが同等であるかをチェックするときに、出力フローは重視されない。ラベルはまた、ノードの同等性を試験するために重視されないことがある。
重複排除で組み合わされる2つのノードは、入力ノードから全てのラベルを収集することができる。重複排除は、単一ポートからの複数の出力フローを有するノードをもたらし得る。重複排除はまた、フローが単一ポートから分岐し、次いで再収束するバブルをグラフ内にもたらし得る。他のアルゴリズムは、以下に記載するように、明示的複製内蔵パス及びアンクロスフロー内蔵パスを含む。
いくつかの実施例では、データフローグラフのアルゴリズムは、明示的複製パスを含む。データフローグラフでは、ごく少ないコンポーネントの種類が、出力ポートからの複数のフローをサポートする。しかし、データフローグラフモデルは、任意のポートに対する複数のフローの出入りを可能にし得る。明示的複製パスは、「複製」種類を有し、複数の出力フローを有する任意のポートの下流の他のプロパティを有しないノードを生成し、フローを当該ノードに移動させる。その後のパターンマッチングパスは、これらの一部をマルチ出力に再フォーマットし得る。
いくつかの実施例では、データフローグラフのアルゴリズムは、アンクロスフローパスを含む。アンクロスフローパスは、ギャザーポートへとフローを並べ替え、結合時に入力ポートの番号を付け直すことによってグラフを平坦化しようと試みる。多くのグラフが平面ではないため、これは、ヒューリスティックアルゴリズムである。
データセットカタログとのデータフローグラフの統合:
データソースカタログは、データソースに関するメタデータ、とりわけデータへのアクセスに使用されるURL、データのレコード形式、存在する場合は並べ替えキー及び分割キータなどを記憶する。データフローグラフ17は、クエリインスタンスのカタログ若しくはCatalog Interchange Format(CIF)ファイルにエクスポートされたカタログを使用すること、又はデータソース情報をグラフに直接埋め込むことができる。
例えば、システムが可変ユーティリティをカタログファイルに割り当てる場合、グラフは、当該カタログにおいて名前でデータソースを参照することができる。データソースを導入したため、そのプロパティは、データフローグラフの他の場所で参照することができる。ソースパラメータは、データフローグラフ17を処理する後の段階において解決することができ、それにより、特定のパラメータ値のソースが明確なままになる。これは、パラメータが大きい場合に特に有用である。
データフローグラフの拡張:
データフローグラフは、値指向処理及びグラフセマンティクスのために拡張することができる。いくつかの実施例では、データフローグラフは、とりわけ、アスペクト、式値、内蔵パス、ビア、ギャザー、マージ、フローの統合、及びアスペクトの伝播を使用することによって拡張することができる。
アスペクトは、グラフのフローに沿って伝播するいくつかの情報又はメタ情報である。主な例は、値である。値は、グラフ内の1つのノードで計算され、更に下流の任意のノードで使用することができる。他のアスペクトとしては、とりわけ、フローに沿って存在する行のセット(行セット)、それらの行の順序(順序)、及び並列データのための分割キー(パーティション)が挙げられる。ノードのレイアウトも同じ機構によって伝搬されるため、レイアウトは別のアスペクトとして処理され得る。
新しいアスペクトは、(任意選択の)「新しい」キーワードを用いて導入される。値は、通常、後に参照され得るように、IDを与えられる。他のアスペクトは、シングルトンであり、最新のアスペクトのみが参照可能であるため、IDなしで参照され得る。アスペクトは、明示的に削除されるまで、又は(非値の場合に)置換されるまで導入されるノード又はポートの下流のノードにおける参照に利用可能である。
アスペクトは、ノードの効果をモデル化するために使用され、その結果、システムは、効果を有するノード、及び並べ替え可能であり得るノードを示すことができる。値は、このように使用され、また、ポート上のメタデータを、変換機能の生成時に決定する。
新しい式値は、DML式から構築され得る。式は一定であり得るか、又はIDによって他の値を参照することができる。式値はまた、正に出力に適した型のみで値を構築するために使用される。
いくつかの実施例では、内蔵パスを使用して、共通アスペクトを組み合わせ、組み合わせを折り畳むことができる。例えば、値が1回計算され、依然として有効である場合、同じ式を用いた新しい値は冗長であり、代わりに既存の値が使用され得る。
いくつかの実施例では、空のノードを削除するために、内蔵パスが使用され得る。例えば、ノードがデータソースに書き込むか、新しい値若しくは他のアスペクトを導入するか、又は「del」で値又は他のアスペクトの寿命を終了させる場合、ノードは「副作用」を有する。副作用を有しないノードは、空とみなされ、パス「remove-empty-nodes」は、空のノードを削除する。一部のノードは除外され得る。例えば、「keep-alive」フラグセットを有する任意のノード、又はグラフレベルのポートに結合されたポートを有する任意のノード、又は単一の統一ポートに対する複数の入力フローを有する任意のノードである。
(自己結合でのように)分岐し、次いで再収束するパスを含むグラフでは、同一の値が複数のパスに沿ってノードを到達することが可能である。結合において、異なる経路に沿った値は、異なる値になる。これは、値が到着したポートを示す「ビア」値を導入することによって行われる。ビア値は、参照する値の寿命を終了させ、いずれの下流参照も、ビア値を使用する。
いくつかの実施例では、曖昧さがある場合にのみビア値が必要であり、ツリー形状を有するグラフにはビア値は不要であるべきである。重複排除パスは、再収束フローを導入するため、ビア値を導入する。
複数のフローが単一の入力ポートに到着すると、複数の行セットが単一の行セットに統合され得る。入力フローの値は、互いに一致して、出力用に統一形式を生成する。値が全フローに沿って入力ポートに到着する場合、明示的な統一は不要であり、値は、入力ポートの下流に単一の値として見える。値がフローの一部のみに沿って入力ポートに到着する場合、入力ポートの下流に見ることはできない。
新しいアスペクト(特定の値)は、ノード又はポートにおいて導入され得る。次いで、このアスペクトは、伝播ルールに従って、当該ポートの下流に見ることができる。一般に、アスペクトはフローに沿って、結合を超えてグラフレベルのポートに伝播する。出力ポートにおいて導入されたアスペクトは、当該出力ポートからフローの外に伝搬する。ノードにおいて導入されたアスペクトは、当該ノードの出力ポートの全てに、またそこから伝播する。入力ポートにおいて導入されたアスペクトは、全体としてノードに伝搬し、そこからその出力ポートに、またそれらのフローを下って伝搬する。
「統一」について上述したように、複数の入力フローを有する入力ポートは、全ての入力フローに値が現れる場合、値の伝播を可能にする。更に、エラー及びログポートは、上流からデータを伝搬しないように構成可能であり得、これらは「passthrough none」とタグ付けされる。他のポートは、単一の入力ポートからのみ伝播し、これらは、当該ポートの名前でタグ付けされる。
名前、メタデータ、及び変換:
データフローグラフが最適化されて最適化されたデータフローグラフが提供されると、当該グラフは変換されたデータフローグラフ(例えば、変換されたデータフローグラフ19)に変換される。そうするために、メタデータ及びデータフローグラフに記載されている値を計算する変換を識別することができる。
値は、導入時に名前を与えられ得る。かかる名前は、最終値名を割り当てるために使用するヒントではあるが、必須ではない。同一の所与の名前を有する2つの値がフローを超えて有効である場合、システムは、値のうちの1つに対して異なる名前を選択することができる。値名はロックされ得、その値がレコード形式で現れるときに、値が当該名を有することを示す。
値は、構造化コメントを有し得る。構造化コメントを有する値がレコード形式でフィールドとして含まれる場合、値の構造化コメントが当該フィールドに適用される。値に直接構造化されたコメントがない場合、値は構造化コメントが存在するレコードからフィールドを抽出することによって計算され、当該構造化コメントは順方向に伝播される。
内蔵パス「assign-names」は、フロー全体において有効である全ての値が名前を有し、これらの名前が、フロー全体において有効である値のセットは、当該フローにとってレコード形式で必要とされるフィールドを決定する、値の名前は、当該レコード形式のフィールド名を決定するために使用される、同一フローにわたって機能する2つの値は、異なる名前を有する、単一ポート(ギャザー)に入る複数のフローでのレコード形式は同一である、ポートにおいて単一値に統一される特定の値について、それらの値は同一名を有する、ロックされた名前を有する値は、それらの名前を保持する、など特定のルールに従うことを確実にする。
いくつかの実施例では、内蔵の「assign-names」パスは、ロックされた名前があらゆる解決を阻止する場合、エラーを生成し得る。そうでない場合、名前は、潜在的に、所望の名前を有する新しい値を導入する新しいノードを追加することによって割り当てられる。このパスは、順序が比較的後ろの方であるため、それらのフローにわたって有効であるフローは少なく、幅は狭い。
内蔵パス「set-metadata」は、全ての値が名前を有すると仮定し、グラフ内の全ポートに「メタデータ」パラメータを割り当てる。メタデータの類似性を強化する試みが行われる。ポート上のメタデータが入力メタデータと同じ構造及びフィールド名を有する場合、入力メタデータはそのまま再利用される。唯一の相違点が、末端の改行フィールドのドロップである場合、当該フィールドは、出力に保存される。メタデータが同一ではないが、入力からの一部のフィールド名が出力に現れる場合、それらのフィールドは最初に、かつ元の順序で現れる。メタデータがデータフローグラフに存在する任意のデータソースのレコード形式について厳密に構造的に一致する場合、メタデータのレコード形式は、当該ソースに厳密に一致するメタデータ文字列又はロケータに設定される。内蔵パスの「set-metadata」パスは、統一して、ギャザーボートの上流のレコード形式を同一にする他のノードを導入し得る。
別の内蔵パスは、全てのポートがメタデータを有し、各ノードの値から変換、パッケージ、及び式値パラメータを構築すると仮定する。
PROTOファイル:
データフローグラフエンジの言語は、2つの部分を有する。すなわち、許可されるノード種類及びノードの編集方法を記述するプレゼンテーション層、並びに低レベルノードに関して各ノードの実施を記述するコンパイル層である。プロトタイプファイルは、言語のプレゼンテーション層を記述する。単一のプロトタイプファイルは、複数のプロトタイプ区分を含むことができる。
プロトタイプは、統計関数を呼び出すことによって統計動作を実行するノードなどノードの種類の命名のように単純であり得る。
ノード記述子は、例えば、表示名、ノードの説明(例えば、「データセットからの読み取り」)、ノードが属するカテゴリ(例えば、「データセット」)及びノードの形状を指定することによって、ノードの表示方法及びオーガナイザでの表示位置をエディタに指示する。
ノードは、入力ポート及び出力ポートを有し得る。プロトタイプでポートに言及することにより、ポートをエディタに表示させることができる。入力及び出力ポートのそれぞれが命名され得る。ノードと同様に、ポートは、結合などポートの様々な機能を記述する記述子を有し得る。
本明細書に記載の主題及び動作の実施は、デジタル電子回路、本明細書に開示された構造及びそれらの構造的均等物を含むコンピュータソフトウェア、ファームウェア、若しくはハードウェア、又はそれらの1つ以上の組み合わせで実施されることができる。本明細書に記載の主題の実施例は、1つ以上のコンピュータプログラム(データ処理プログラムとも呼ばれる)、すなわち、データ処理装置によって実行するために、又はデータ処理装置の動作を制御するためにコンピュータ記憶媒体で符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実施されることができる。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムアクセス若しくはシリアルアクセスメモリアレイ若しくはデバイス、又はそれらの1つ以上の組み合わせであり得るか、又はそれらに含まれ得る。コンピュータ記憶媒体はまた、1つ以上の別個の物理的コンポーネント又は媒体(例えば、複数のCD、ディスク、又は他の記憶デバイス)であってもよく、又はそれらに含まれてもよい。主題は、非一時的コンピュータ記憶媒体に記憶されたコンピュータプログラム命令で実施され得る。
本明細書に記載の動作は、1つ以上のコンピュータ可読記憶デバイスに記憶されたデータ、又は他のソースから受信したデータに対してデータ処理装置によって実行される動作として実施されることができる。
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、又は上記の複数のもの、又は組み合わせを含む、データを処理するためのあらゆる種類の装置、デバイス、及び機械を包含する。装置は、専用ロジック回路(例えばFPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)など)を含むことができる。装置はまた、ハードウェアに加えて、問題のコンピュータプログラムに実行環境を提供するコード(例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、又はそれらの1つ以上の組み合わせを構成するコード)を含むことができる。装置及び実行環境は、ウェブサービス、分散コンピューティング、及びグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られる)は、コンパイルされた又は解釈された言語、宣言型言語、手続型言語など任意の形態のプログラミング言語で書き込まれ得、スタンドアロンプログラムとして、又はモジュール、コンポーネント、サブルーチン、若しくはコンピューティング環境での使用に好適な他のユニットとしてなど任意の形態で展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応してもよいが、対応しなくてもよい。プログラムは、他のプログラム又はデータ(例えば、マークアップ言語文書に記憶された1つ以上のスクリプト)を保持するファイルの一部、問題のプログラム専用の単一のファイル、又は複数の協調ファイル(例えば、1つ以上のモジュール、サブプログラム、又はコードの一部を記憶するファイル)に記憶することができる。コンピュータプログラムは、1つのコンピュータ上で、又は1つのサイトに配置された、若しくは複数のサイトに分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行するように展開され得る。
本明細書に記載のプロセス及びロジックフローは、1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサによって実行され、入力データに基づいて動作して出力を生成することによって動作を実行することができる。プロセス及びロジックフローはまた、専用ロジック回路(例えばFPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路))によって実行することができ、装置はまた、専用ロジック回路として実施されることができる。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサ及び専用マイクロプロセッサの両方、並びに任意の種類のデジタルコンピュータの任意の1つ以上のプロセッサが挙げられる。概して、プロセッサは、リードオンリーメモリ若しくはランダムアクセスメモリ又はその両方から命令及びデータを受信するであろう。コンピュータの必須要素は、命令に従って動作を実行するためのプロセッサ、並びに命令及びデータを記憶するための1つ以上のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つ以上の大容量記憶デバイス(例えば、磁気、光磁気ディスク、又は光ディスク)を含むか、それらからデータを受信するか、それらにデータを転送するか、それらの両方を行うように動作可能に連結されるが、コンピュータがかかるデバイスを有する必要はない。更に、コンピュータは、別のデバイス(例えば、携帯電話、携帯情報端末(personal digital assistant、PDA)、モバイルオーディオ若しくはビデオプレーヤ、ゲーム機、全地球測位システム(Global Positioning System、GPS)受信機、又は携帯型記憶デバイス(例えば、ユニバーサルシリアルバス(universal serial bus、USB)フラッシュドライブ))に埋め込まれ得る。コンピュータプログラム命令及びデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス(例えば、EPROM、EEPROM、フラッシュメモリデバイス)、磁気ディスク(例えば、内蔵ハードディスク、又はリムーバブルディスク)、光磁気ディスク、並びにCD ROM及びDVD ROMディスクなど、あらゆる形態の不揮発性メモリ、媒体及びメモリデバイスを含む。プロセッサ及びメモリは、専用ロジック回路によって補完され得るか、又は専用ロジック回路に組み込まれ得る。
本明細書に記載の主題の実施例は、(例えば、データサーバとして)バックエンドコンポーネントを含むか、又はミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むか、又はフロントエンドコンポーネント(例えば、ユーザが本明細書に記載の主題の実施例と対話することができる、グラフィカルユーザインターフェース又はWebブラウザを有するユーザコンピュータ)を含むか、又は1つ以上のかかるバックエンド、ミドルウェア、若しくはフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムで実施することができる。システムのコンポーネントは、デジタルデータ通信(例えば、通信ネットワーク)の任意の形態又は媒体によって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(LAN)及びワイドエリアネットワーク(WAN)、インターネットワーク(例えば、インターネット)、並びにピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)が挙げられる。
コンピューティングシステムは、ユーザ及びサーバを含み得る。ユーザ及びサーバは、一般に、互いに遠隔であり、通常、通信ネットワークを介して対話する。ユーザとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにユーザ-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施例では、サーバは、データ(例えば、HTMLページ)をユーザデバイスに送信する(例えば、データを表示し、ユーザデバイスと対話するユーザからユーザ入力を受信する目的で)。ユーザデバイスにおいて生成されたデータ(例えば、ユーザ対話の結果)は、サーバにおいてユーザデバイスから受信することができる。
本明細書は多くの特定の実施例の詳細を含むが、これらはいずれかの実施例又は特許請求され得るものの範囲に対する限定として解釈されるべきではなく、特定の実施例に特有の特徴の説明として解釈されるべきである。別個の実施例の文脈で本明細書に記載されている特定の特徴は、単一の実施例において組み合わせて実施することもできる。逆に、単一の実施態様の文脈で記載されている様々な特徴は、複数の実施例において別々に、又は任意の適切な副組み合わせで実施することもできる。更に、特徴は、特定の組み合わせで作用するように記載され、かつ更に当初はそのように特許請求され得るが、特許請求された組み合わせからの1つ以上の特徴は、場合によってはその組み合わせから削除され得、特許請求された組み合わせは、部分組み合わせ又は部分組み合わせの変形例を対象とし得る。
同様に、動作は特定の順序で図面に示されているが、望ましい結果を達成するためには、かかる動作が、示される特定の順序で、若しくは順番に実行されること、又は全ての図示された動作が実行されることを必要とすると理解されるべきではない。特定の状況では、マルチタスキング及び並列処理が有利であり得る。更に、上記の実施例における様々なシステムコンポーネントを分離させることは、全ての実施例でかかる分離を必要とするものとして理解されるべきではなく、記載のプログラコンポーネント及びシステムは、一般に単一のソフトウェア製品で一体化され得るか、又は複数のソフトウェア製品にパッケージされ得ることを理解されたい。
他の実施例は、以下の「特許請求の範囲」の範囲内である。

Claims (40)

  1. 第1のデータフローグラフを第2のデータフローグラフに変換するためのコンピュータ実施方法であって、前記第1のデータフローグラフは、複数の第1のコンピュータ動作を表す複数の第1のノードを含み、前記第2のデータフローグラフは、複数の第2のコンピュータ動作を表す複数の第2のノードを含み、前記方法は、
    データ処理における前記複数の第1のコンピュータ動作を表す前記複数の第1のノードを含む前記第1のデータフローグラフを生成することであって、前記複数の第1のコンピュータ動作のうちの少なくとも1つは、データ処理の1つ以上の結果の1つ以上の特性を指定する宣言動作である、ことと、
    前記第1のデータフローグラフにおいて表される少なくともいくつかの宣言動作の中からパターンを識別することと、
    前記少なくともいくつかの宣言動作の中から識別された前記パターンに基づいて、前記複数の第1のコンピュータ動作に従ってデータを処理するために前記第1のデータフローグラフを前記第2のデータフローグラフに変換することであって、前記第2のデータフローグラフは、前記複数の第2のコンピュータ動作を表す前記複数の第2のノードを含み、前記第2のノードのうちの少なくとも1つは、前記宣言動作によって指定されるロジックを実施する1つ以上の命令動作を表す、ことと、
    前記第2のデータフローグラフをデータストアに記憶することと、を含む、コンピュータ実施方法。
  2. 前記第1のデータフローグラフを前記第2のデータフローグラフに変換することは、
    前記命令動作を作成することと、
    前記命令動作を表す所与の第2のノードを作成することであって、所与の前記第2のノードは、前記第1のデータフローグラフに表されない、ことと、を含む、請求項1に記載のコンピュータ実施方法。
  3. 前記第2のデータフローグラフに表され、前記第1のデータフローグラフに表されない前記複数の第2のコンピュータ動作のうちの1つは、並べ替え動作、データ型動作、指定キーとの結合動作、及び分割動作からなる群から選択される、請求項1に記載のコンピュータ実施方法。
  4. 前記複数の第2のコンピュータ動作のうちの1つ以上は、少なくとも、
    (i)前記第1のデータフローグラフで指定された前記複数の第1のコンピュータ動作のうちの1つ以上に従ってデータを処理するために必要であるか、又は
    (ii)前記1つ以上の追加動作を伴わないデータ処理と比較して、前記第1のデータフローグラフで指定された前記複数の第1のコンピュータ動作のうちの1つ以上に従ったデータ処理を改善する、請求項1に記載のコンピュータ実施方法。
  5. 1つ以上のデータフローグラフ最適化ルールを前記第2のデータフローグラフに適用して、前記適用前の前記第2のデータフローグラフの計算効率と比較して、前記第2のデータフローグラフの計算効率を改善することによって、前記第2のデータフローグラフを最適化されたデータフローグラフに変換することを更に含む、請求項1に記載のコンピュータ実施方法。
  6. 前記1つ以上のデータフローグラフ最適化ルールは、前記第2のデータフローグラフから冗長ノードを削除すること、前記第2のデータフローグラフからデッドノードを削除すること、前記第2のデータフローグラフ内でノードの順序を変更すること、前記第2のデータフローグラフ内でノードの強度を低減すること、前記第2のデータフローグラフ内で2つ以上のノードを統合すること、前記第2のデータフローグラフ内のノードを直列動作から並列動作に変換すること、又は前記第2のデータフローグラフ内で分割動作を挿入することのうちの少なくとも1つを含む、請求項5に記載のコンピュータ実施方法。
  7. 前記複数の第2のコンピュータ動作のうちの少なくとも1つは、自動並列動作又は自動分割動作を含む、請求項1に記載のコンピュータ実施方法。
  8. 前記複数の第2のコンピュータ動作のうちの少なくとも1つは、並べ替え動作を含む、請求項1に記載のコンピュータ実施方法。
  9. 前記複数の第2のコンピュータ動作のうちの少なくとも1つは、前記第2のノードのうちの1つ以上の間でメタデータを指定する動作を含む、請求項1に記載のコンピュータ実施方法。
  10. データを提供して、キャンバス部分と、カタログ部分と、を含むグラフィカルエディタインターフェースを生成することであって、前記カタログ部分は、前記キャンバス部分において、計算のロジックを視覚的に描写するための1つ以上の選択可能なアイコンを含む、ことと、
    前記キャンバス部分において描写された計算のロジックを示す、アイコン選択データを受信することであって、前記アイコン選択データは、前記カタログ部分から選択され、前記キャンバス部分に含まれる、前記1つ以上の選択可能なアイコンのうちの少なくとも1つを指定する、ことと、
    受信した前記アイコン選択データから、前記キャンバス部分で指定された前記ロジックを表す前記複数の第1のノードを含む前記第1のデータフローグラフを生成することであって、前記第1のノードのうちの少なくとも1つは、前記カタログ部分から選択された前記1つ以上の選択可能なアイコンのうちの前記少なくとも1つを表す、ことと、を更に含む、請求項1に記載のコンピュータ実施方法。
  11. 選択された各アイコンは、データをプリフォーマットするデータカタログからデータにアクセスする命令を表すか、又は前記データカタログを介してアクセスされるデータの形式を指定する、請求項10に記載のコンピュータ実施方法。
  12. 前記第1のデータフローグラフは、ユーザ定義のデータフローグラフである、請求項1に記載のコンピュータ実施方法。
  13. データを提供して、キャンバス部分と、カタログ部分と、を含むグラフィカルエディタインターフェースを生成することであって、前記カタログ部分は、複数のデータセット選択アイコンと、複数の変換選択アイコンと、を含む、ことと、
    選択されたデータセット選択アイコン及び選択された変換選択アイコンによって表される記憶ユニットに記憶された要素に従って、前記第1のデータフローグラフ内に初期ノードを生成することと、
    前記初期ノードにラベルを付けて、ラベル付きノードを提供することと、
    前記キャンバス部分で、前記ラベル付きノードの視覚的表現をレンダリングすることと、を更に含む、請求項1に記載のコンピュータ実施方法。
  14. 前記初期ノードは、動作を保持するための動作プレースホルダフィールドと、データのソース又はシンクを保持するためのデータプレースホルダフィールドと、を有する、請求項13に記載のコンピュータ実施方法。
  15. 修正することは、
    記憶システムから前記動作プレースホルダフィールドに保持された前記動作の要素を取得することと、
    前記記憶システムから前記データプレースホルダフィールドに保持されたデータソース又はデータシンクの要素を取得して、前記データの前記ソース又は前記シンクを指すリンクを前記データプレースホルダフィールドに追加することと、を更に含む、請求項14に記載のコンピュータ実施方法。
  16. データを提供して、前記グラフィカルエディタインターフェースの前記キャンバス部分に前記第1のデータフローグラフをレンダリングすることを更に含む、請求項13に記載のコンピュータ実施方法。
  17. 生成した前記初期ノードの全てにラベルを付けると、前記方法は、
    前記第1のデータフローグラフの全てのラベル付きノードを、計算データフローグラフである前記第2のデータフローグラフにコンパイルすることを更に含む、請求項13に記載のコンピュータ実施方法。
  18. 修正した前記初期ノードの全てのラベルを付けると、前記方法は、
    前記第1のデータフローグラフの全てのラベル付きノードを最適化することを更に含み、前記第1のデータフローグラフの前記ラベル付きノードを最適化することは、前記ラベル付きノードのうちの少なくとも1つに記憶された前記要素を最適化することを更に含む、請求項13に記載のコンピュータ実施方法。
  19. プロトタイプノードにアクセスすることと、
    アクセスした前記プロトタイプノードからパラメータをコピーして、前記初期ノードのうちの少なくとも1つを修正するアルゴリズムを適用することと、を更に含む、請求項13に記載のコンピュータ実施方法。
  20. 前記初期ノードの少なくとも1つのパラメータは、前記プロトタイプノードによって上書きされない設定パラメータである、請求項19に記載のコンピュータ実施方法。
  21. 前記プロトタイプノードは、前記初期ノード、前記初期ノード上のポート、又は前記グラフィカルエディタインターフェースの前記キャンバス部分に提示されたコンポーネントのパラメータのうちの少なくとも1つを宣言する、請求項19に記載のコンピュータ実施方法。
  22. プロトタイプを適用することは、前記プロトタイプからの記述子で既存のパラメータの記述子を置き換えるが、パラメータの既存の値は置き換えない、請求項19に記載のコンピュータ実施方法。
  23. メタデータ及び前記第1のデータフローグラフに記述された値を計算する変換を適用することを更に含む、請求項1に記載のコンピュータ実施方法。
  24. 前記ラベルは、キー、値、名前、及びソースのうちの1つ以上を参照する、請求項13に記載のコンピュータ実施方法。
  25. 選択されたデータセット選択アイコンによって表される記憶ユニット及び選択された変換選択アイコンによって表される記憶ユニットに記憶された1つ以上の要素を記憶する前記複数の初期ノードのうちの少なくともいくつかは、少なくとも部分的に、前記複数の初期ノードのうちの前記少なくともいくつかに対して対応する記憶ユニット機能を指定する、請求項13に記載のコンピュータ実施方法。
  26. 第1のデータフローグラフを第2のデータフローグラフに変換するためのシステムであって、前記第1のデータフローグラフは、複数の第1のコンピュータ動作を表す複数の第1のノードを含み、前記第2のデータフローグラフは、複数の第2のコンピュータ動作を表す複数の第2のノードを含み、前記システムは、
    1つ以上のプロセッサと、命令を記憶する1つ以上の記憶デバイスであって、前記命令は、前記1つ以上のプロセッサによって実行されると、
    データ処理における前記複数の第1のコンピュータ動作を表す前記複数の第1のノードを含む前記第1のデータフローグラフを生成することであって、前記複数の第1のコンピュータ動作のうちの少なくとも1つは、データ処理の1つ以上の結果の1つ以上の特性を指定する宣言動作である、ことと、
    前記第1のデータフローグラフにおいて表される少なくともいくつかの宣言動作の中からパターンを識別することと、
    前記少なくともいくつかの宣言動作の中から識別された前記パターンに基づいて、前記複数の第1のコンピュータ動作に従ってデータを処理するために前記第1のデータフローグラフを前記第2のデータフローグラフに変換することであって、前記第2のデータフローグラフは、前記複数の第2のコンピュータ動作を表す前記複数の第2のノードを含み、前記第2のノードのうちの少なくとも1つは、前記宣言動作によって指定されるロジックを実施する1つ以上の命令動作を表す、ことと、
    前記第2のデータフローグラフをデータストアに記憶することと、を含む動作を前記1つ以上のプロセッサに実行させる、1つ以上の記憶デバイスと、を含む、システム。
  27. 命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は、
    データ処理における第1のコンピュータ動作を表す複数の第1のノードを含む第1のデータフローグラフを生成することであって、前記第1のコンピュータ動作のうちの少なくとも1つは、データ処理の1つ以上の結果の1つ以上の特性を指定する宣言動作である、ことと、
    前記第1のデータフローグラフにおいて表される少なくともいくつかの宣言動作の中からパターンを識別することと、
    前記少なくともいくつかの宣言動作の中から識別された前記パターンに基づいて、前記第1のコンピュータ動作に従ってデータを処理するために前記第1のデータフローグラフを第2のデータフローグラフに変換することであって、前記第2のデータフローグラフは、第2のコンピュータ動作を表す複数の第2のノードを含み、前記第2のノードのうちの少なくとも1つは、前記宣言動作によって指定されるロジックを実施する1つ以上の命令動作を表す、ことと、
    前記第2のデータフローグラフをデータストアに記憶することと、を計算システムに実行させる、非一時的コンピュータ可読媒体。
  28. 第1のデータフローグラフを第2のデータフローグラフに変換するためのコンピュータ実施方法であって、前記第1のデータフローグラフは、複数の第1のコンピュータ動作を表す複数の第1のノードを含み、前記第2のデータフローグラフは、複数の第2のコンピュータ動作を表す複数の第2のノードを含み、前記方法は、
    データ処理における前記複数の第1のコンピュータ動作を表す前記複数の第1のノードを含む前記第1のデータフローグラフを生成することと、
    前記第1のデータフローグラフにおいて表される少なくともいくつかの宣言動作の中からパターンを識別することと、
    前記少なくともいくつかの宣言動作の中から識別された前記パターンに基づいて、前記複数の第1のコンピュータ動作に従ってデータを処理するために前記第1のデータフローグラフを前記第2のデータフローグラフに変換することであって、前記第2のデータフローグラフは、前記複数の第2のコンピュータ動作を表す前記複数の第2のノードを含み、前記複数の第2のコンピュータ動作のうちの少なくとも所与の1つは、並べ替え動作、データ型動作、指定キーとの結合動作、及び分割動作からなる群から選択される、ことと、
    前記第2のデータフローグラフをデータストアに記憶することと、を含む、コンピュータ実施方法。
  29. 第1のデータフローグラフを第2のデータフローグラフに変換するためのシステムであって、前記第1のデータフローグラフは、複数の第1のコンピュータ動作を表す複数の第1のノードを含み、前記第2のデータフローグラフは、複数の第2のコンピュータ動作を表す複数の第2のノードを含み、前記システムは、
    1つ以上のプロセッサと、命令を記憶する1つ以上の記憶デバイスであって、前記命令は、前記1つ以上のプロセッサによって実行されると、
    データ処理における前記複数の第1のコンピュータ動作を表す前記複数の第1のノードを含む前記第1のデータフローグラフを生成することと、
    前記第1のデータフローグラフにおいて表される少なくともいくつかの宣言動作の中からパターンを識別することと、
    前記少なくともいくつかの宣言動作の中から識別された前記パターンに基づいて、前記複数の第1のコンピュータ動作に従ってデータを処理するために前記第1のデータフローグラフを前記第2のデータフローグラフに変換することであって、前記第2のデータフローグラフは、前記複数の第2のコンピュータ動作を表す前記複数の第2のノードを含み、前記複数の第2のコンピュータ動作のうちの少なくとも所与の1つは、並べ替え動作、データ型動作、指定キーとの結合動作、及び分割動作からなる群から選択される、ことと、
    前記第2のデータフローグラフをデータストアに記憶することと、を含む動作を前記1つ以上のプロセッサに実行させる、1つ以上の記憶デバイスと、を含む、システム。
  30. 命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は、
    データ処理における第1のコンピュータ動作を表す複数の第1のノードを含む第1のデータフローグラフを生成することと、
    前記第1のデータフローグラフにおいて表される少なくともいくつかの宣言動作の中からパターンを識別することと、
    前記少なくともいくつかの宣言動作の中から識別された前記パターンに基づいて、前記第1のコンピュータ動作に従ってデータを処理するために前記第1のデータフローグラフを第2のデータフローグラフに変換することであって、前記第2のデータフローグラフは、第2のコンピュータ動作を表す複数の第2のノードを含み、前記第2のコンピュータ動作のうちの少なくとも所与の1つは、並べ替え動作、データ型動作、指定キーとの結合動作、及び分割動作からなる群から選択される、ことと、
    前記第2のデータフローグラフをデータストアに記憶することと、を計算システムに実行させる、非一時的コンピュータ可読媒体。
  31. 前記複数の第2のコンピュータ動作のうちの少なくともいくつかは、前記第1のデータフローグラフ内の前記第1のノードによって表されない、請求項1に記載のコンピュータ実施方法。
  32. 前記1つ以上の命令動作は、前記第1のデータフローグラフ内の前記第1のノードによって表されない、請求項1に記載のコンピュータ実施方法。
  33. 前記複数の第2のコンピュータ動作のうちの少なくともいくつかは、前記第1のデータフローグラフ内の前記第1のノードによって表されない、請求項26に記載のシステム。
  34. 前記1つ以上の命令動作は、前記第1のデータフローグラフ内の前記第1のノードによって表されない、請求項26に記載のシステム。
  35. 前記1つ以上の命令動作は、前記第1のデータフローグラフ内の前記第1のノードによって表されない、請求項27に記載の非一時的コンピュータ可読媒体。
  36. 前記複数の第2のコンピュータ動作のうちの少なくともいくつかは、前記第1のデータフローグラフ内の前記第1のノードによって表されない、請求項28に記載のコンピュータ実施方法。
  37. 前記複数の第2のコンピュータ動作のうちの前記少なくとも所与の1つは、前記第1のデータフローグラフ内の第1のノードによって表されない、請求項28に記載のコンピュータ実施方法。
  38. 前記複数の第2のコンピュータ動作のうちの少なくともいくつかは、前記第1のデータフローグラフ内の前記第1のノードによって表されない、請求項29に記載のシステム。
  39. 前記複数の第2のコンピュータ動作のうちの前記少なくとも所与の1つは、前記第1のデータフローグラフ内の第1のノードによって表されない、請求項29に記載のシステム。
  40. 前記第2のコンピュータ動作のうちの前記少なくとも所与の1つは、前記第1のデータフローグラフ内の前記第1のノードによって表されない、請求項30に記載の非一時的コンピュータ可読媒体。
JP2022545888A 2020-01-28 2020-04-30 計算グラフを生成するためのエディタ Active JP7629464B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202062966768P 2020-01-28 2020-01-28
US62/966,768 2020-01-28
PCT/US2020/030612 WO2021154319A1 (en) 2020-01-28 2020-04-30 Editor for generating computational graphs

Publications (3)

Publication Number Publication Date
JP2023511631A JP2023511631A (ja) 2023-03-20
JP2023511631A5 JP2023511631A5 (ja) 2023-05-11
JP7629464B2 true JP7629464B2 (ja) 2025-02-13

Family

ID=70918967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022545888A Active JP7629464B2 (ja) 2020-01-28 2020-04-30 計算グラフを生成するためのエディタ

Country Status (8)

Country Link
US (2) US11593380B2 (ja)
EP (1) EP4097583B1 (ja)
JP (1) JP7629464B2 (ja)
CN (1) CN115136113A (ja)
AU (1) AU2020425749B2 (ja)
CA (1) CA3165743A1 (ja)
MX (1) MX2022009221A (ja)
WO (1) WO2021154319A1 (ja)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860618B2 (en) 2017-09-25 2020-12-08 Splunk Inc. Low-latency streaming analytics
US10997180B2 (en) 2018-01-31 2021-05-04 Splunk Inc. Dynamic query processor for streaming and batch queries
US10534759B1 (en) 2018-08-23 2020-01-14 Cohesity, Inc. Incremental virtual machine metadata extraction
US10936585B1 (en) 2018-10-31 2021-03-02 Splunk Inc. Unified data processing across streaming and indexed data sets
US10810035B2 (en) 2019-02-27 2020-10-20 Cohesity, Inc. Deploying a cloud instance of a user virtual machine
US11573861B2 (en) 2019-05-10 2023-02-07 Cohesity, Inc. Continuous data protection using a write filter
US11238048B1 (en) 2019-07-16 2022-02-01 Splunk Inc. Guided creation interface for streaming data processing pipelines
US11250136B2 (en) 2019-10-22 2022-02-15 Cohesity, Inc. Scanning a backup for vulnerabilities
US11397649B2 (en) 2019-10-22 2022-07-26 Cohesity, Inc. Generating standby cloud versions of a virtual machine
US11487549B2 (en) 2019-12-11 2022-11-01 Cohesity, Inc. Virtual machine boot data prediction
JP7629464B2 (ja) 2020-01-28 2025-02-13 アビニシオ テクノロジー エルエルシー 計算グラフを生成するためのエディタ
US11710027B2 (en) * 2020-03-03 2023-07-25 International Business Machines Corporation Artificial intelligence workflow builder
US11614923B2 (en) * 2020-04-30 2023-03-28 Splunk Inc. Dual textual/graphical programming interfaces for streaming data processing pipelines
US11614954B2 (en) * 2020-12-08 2023-03-28 Cohesity, Inc. Graphical user interface to specify an intent-based data management plan
US11914480B2 (en) 2020-12-08 2024-02-27 Cohesity, Inc. Standbys for continuous data protection-enabled objects
US11768745B2 (en) 2020-12-08 2023-09-26 Cohesity, Inc. Automatically implementing a specification of a data protection intent
US11650995B2 (en) 2021-01-29 2023-05-16 Splunk Inc. User defined data stream for routing data to a data destination based on a data route
US12164524B2 (en) 2021-01-29 2024-12-10 Splunk Inc. User interface for customizing data streams and processing pipelines
JP7832951B2 (ja) 2021-01-31 2026-03-18 アビニシオ テクノロジー エルエルシー データ処理システム用のデータセットマルチプレクサ
MX2023008982A (es) 2021-01-31 2023-12-04 Ab Initio Technology Llc Sistema de procesamiento de datos con manipulacion de grupos de conjuntos de datos logicos.
US11481287B2 (en) 2021-02-22 2022-10-25 Cohesity, Inc. Using a stream of source system storage changes to update a continuous data protection-enabled hot standby
US11687487B1 (en) 2021-03-11 2023-06-27 Splunk Inc. Text files updates to an active processing pipeline
US11663219B1 (en) 2021-04-23 2023-05-30 Splunk Inc. Determining a set of parameter values for a processing pipeline
US11604789B1 (en) 2021-04-30 2023-03-14 Splunk Inc. Bi-directional query updates in a user interface
US12242892B1 (en) 2021-04-30 2025-03-04 Splunk Inc. Implementation of a data processing pipeline using assignable resources and pre-configured resources
US11989592B1 (en) 2021-07-30 2024-05-21 Splunk Inc. Workload coordinator for providing state credentials to processing tasks of a data processing pipeline
US12164522B1 (en) 2021-09-15 2024-12-10 Splunk Inc. Metric processing for streaming machine learning applications
US12182202B2 (en) * 2021-09-24 2024-12-31 Insitro, Inc. System, devices and/or processes for updating call graphs
US11656744B1 (en) * 2022-03-14 2023-05-23 Wolters Kluwer Technology BV Interactive tool for efficiently developing task flows
EP4519760A1 (en) 2022-05-05 2025-03-12 Ab Initio Technology LLC Dataflow graph datasets
US12223278B2 (en) 2022-07-08 2025-02-11 Sap Se Automatic data card generation
US12380243B2 (en) 2022-07-11 2025-08-05 Sap Se Image segmentation for anonymization for image processing
US12541555B2 (en) * 2022-08-22 2026-02-03 Oracle Financial Services Software Limited Declarative modeling paradigm for graph-database
CN116009830A (zh) * 2022-12-16 2023-04-25 国科础石(重庆)软件有限公司 一种目标软件模块的组件的生成方法、装置、电子设备
US12579011B1 (en) 2023-02-27 2026-03-17 Nvidia Corporation Application programming interface to indicate semaphore wait dependencies
US12443462B1 (en) 2023-02-27 2025-10-14 Nvidia Corporation Application programming interface using node dependencies
US12602230B1 (en) * 2023-02-27 2026-04-14 Nvidia Corporation Application programming interface to indicate null-operation dependencies
US12511106B1 (en) 2023-02-27 2025-12-30 Nvidia Corporation Application programming interface to indicate host dependencies
JP2026511562A (ja) 2023-03-23 2026-04-14 アビニシオ テクノロジー エルエルシー 拡張ビューのデータセットをプレビューするための論理アクセス
KR20260021724A (ko) 2023-06-12 2026-02-13 아브 이니티오 테크놀로지 엘엘시 재사용 가능 데이터 처리 프로그램 생성
US20250181319A1 (en) 2023-12-01 2025-06-05 Ab Initio Technology Llc Techniques for resolving data fields available at points in a software application
US12222858B1 (en) * 2024-03-08 2025-02-11 Milaboratories Inc. System and method for optimized computation and data management with garbage collection and redundant processing mitigation in graph state configuration

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013541784A (ja) 2010-10-25 2013-11-14 アビニシオ テクノロジー エルエルシー コンピュータプログラムを表すデータフローグラフ内のデータセットオブジェクトの管理
US20150106818A1 (en) 2010-06-15 2015-04-16 Ab Initio Technology Llc Dynamically loading graph-based computations
US20190370407A1 (en) 2018-05-30 2019-12-05 Ab Initio Technology Llc Systems and methods for dataflow graph optimization

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US20080052687A1 (en) * 2003-11-03 2008-02-28 Agustin Gonzales-Tuchmann Development environment for data transformation applications
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US8537160B2 (en) * 2008-03-05 2013-09-17 Microsoft Corporation Generating distributed dataflow graphs
US8239847B2 (en) * 2009-03-18 2012-08-07 Microsoft Corporation General distributed reduction for data parallel computing
CA2823691C (en) * 2011-01-07 2020-03-24 Ab Initio Technology Llc Flow analysis instrumentation
US9116955B2 (en) * 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US9886477B2 (en) * 2014-10-24 2018-02-06 Sap Se Generating imperative-language query code from declarative-language query code
CN110149801A (zh) * 2015-05-05 2019-08-20 华为技术有限公司 用于在处理系统中进行数据流图转换的系统和方法
KR102092721B1 (ko) * 2016-03-23 2020-04-23 포그혼 시스템스 인코포레이티드 실시간 데이터플로우 프로그래밍에서 패턴 구동형 반응의 구성
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
JP7629464B2 (ja) 2020-01-28 2025-02-13 アビニシオ テクノロジー エルエルシー 計算グラフを生成するためのエディタ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150106818A1 (en) 2010-06-15 2015-04-16 Ab Initio Technology Llc Dynamically loading graph-based computations
JP2013541784A (ja) 2010-10-25 2013-11-14 アビニシオ テクノロジー エルエルシー コンピュータプログラムを表すデータフローグラフ内のデータセットオブジェクトの管理
US20190370407A1 (en) 2018-05-30 2019-12-05 Ab Initio Technology Llc Systems and methods for dataflow graph optimization

Also Published As

Publication number Publication date
EP4097583A1 (en) 2022-12-07
US12050606B2 (en) 2024-07-30
US11593380B2 (en) 2023-02-28
EP4097583B1 (en) 2026-03-04
CN115136113A (zh) 2022-09-30
JP2023511631A (ja) 2023-03-20
US20240028595A1 (en) 2024-01-25
US20210232579A1 (en) 2021-07-29
MX2022009221A (es) 2022-10-07
AU2020425749B2 (en) 2026-01-15
CA3165743A1 (en) 2021-08-05
WO2021154319A1 (en) 2021-08-05
BR112022014874A2 (pt) 2022-09-20
AU2020425749A1 (en) 2022-08-18

Similar Documents

Publication Publication Date Title
JP7629464B2 (ja) 計算グラフを生成するためのエディタ
KR102186050B1 (ko) 소스 코드 번역
US8209664B2 (en) High level programming extensions for distributed data parallel processing
US8239847B2 (en) General distributed reduction for data parallel computing
US20070233645A1 (en) System and Method for Building an XQuery Using a Model-Based XQuery Building Tool
Cartright et al. Galago: A Modular Distributed Processing and Retrieval System.
Harrop F# for Scientists
Ferrera et al. Tuple MapReduce and Pangool: an associated implementation
BR112022014874B1 (pt) Método implementado por computador e sistema para transformar um primeiro gráfico de fluxo de dados em um segundo gráfico de fluxo de dados e meio não transitório legível por computador
US12038921B2 (en) Transforming operations of a computer program for execution at a database
Windh Hashing, Caching, and Synchronization: Memory Techniques for Latency Masking Multithreaded Applications
HK40088651A (en) Transforming operations of a computer program for execution at a database
HK40088651B (en) Transforming operations of a computer program for execution at a database
HK40036906B (en) Source code translation
HK40036906A (en) Source code translation
George FPGAs for the Masses: Affordable Hardware Synthesis from Domain-Specific Languages
HK1259983B (en) Source code translation
HK1259983A1 (en) Source code translation
BOEGEHOLZ A Relational Model for Parallel Computation
HK1227131A1 (en) Source code translation
HK1227131B (zh) 源代码翻译

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230427

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230427

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240513

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240806

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: 20250107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250131

R150 Certificate of patent or registration of utility model

Ref document number: 7629464

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150