JP2020512643A - 可変レベル並列性を用いたデータ処理動作を行うためのシステム及び方法 - Google Patents

可変レベル並列性を用いたデータ処理動作を行うためのシステム及び方法 Download PDF

Info

Publication number
JP2020512643A
JP2020512643A JP2019553233A JP2019553233A JP2020512643A JP 2020512643 A JP2020512643 A JP 2020512643A JP 2019553233 A JP2019553233 A JP 2019553233A JP 2019553233 A JP2019553233 A JP 2019553233A JP 2020512643 A JP2020512643 A JP 2020512643A
Authority
JP
Japan
Prior art keywords
node
processing
nodes
layout
data
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.)
Granted
Application number
JP2019553233A
Other languages
English (en)
Other versions
JP7216654B2 (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 JP2020512643A publication Critical patent/JP2020512643A/ja
Application granted granted Critical
Publication of JP7216654B2 publication Critical patent/JP7216654B2/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

データフローグラフのノードに対する処理レイアウトの決定を行う技術。これらの技術は、データフローグラフを指定する情報を取得することであって、データフローグラフが、複数のノード、及び複数ノードを接続する複数のエッジを含み、複数のエッジが、複数のノードにおけるノード間のデータのフローを表し、複数のノードが、1つ又は複数のノードの第1のセットと、ノードの第1のセットから独立した、1つ又は複数のノードの第2のセットと、を含むことと、ノードの第1のセットに関する1つ又は複数の処理レイアウトの第1のセットを取得することと、処理レイアウトの第1のセット、及び1つ又は複数のレイアウト決定ルールに基づいて、ノードの第2のセットにおける各ノードの処理レイアウトを決定することであって、1つ又は複数のレイアウト決定ルールが、異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含することと、を包含する。

Description

関連出願の相互参照
本出願は、米国特許法第119条(e)に基づいて、本明細書に全体として援用される、2017年3月29日に出願された、「可変レベル並列性を用いたデータ処理動作を行うためのシステム及び方法」というタイトルの米国仮特許出願第62/478,390号明細書の便益を主張するものである。
データ処理システムは、1つ又は複数のコンピュータプログラムを使用して、データを処理し得る。データ処理システムによって利用されるコンピュータプログラムの1つ又は複数は、データフローグラフとして展開され得る。データフローグラフは、入力データに対して行われるデータ処理動作、及びデータのフローを表すコンポーネント間のリンクを表す、「ノード」又は「節点」と呼ばれるコンポーネントを包含し得る。データフローグラフのノードは、各入力データセットを表す1つ又は複数の入力ノード、各出力データセットを表す1つ又は複数の出力ノード、及びデータに対して行われるデータ処理動作を表す1つ又は複数のノードを包含し得る。データフローグラフによってエンコードされる計算を実行するための技術が、それぞれ本明細書に全体として援用される、「グラフとして表現される計算の実行(Executing Computations Expressed as Graphs)」というタイトルの米国特許第5,966,072号明細書、及び「グラフベース計算のパラメータ管理(Managing Parameters for Graph−Based Computations)」というタイトルの米国特許第7,716,630号明細書に記載されている。
幾つかの実施形態が、データ処理システムに向けられる。データ処理システムは、少なくとも1つのコンピュータハードウェアプロセッサと、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、(A)データフローグラフを指定する情報を取得することであって、データフローグラフが、複数のノード、及び複数ノードを接続する複数のエッジを含み、複数のエッジが、複数のノードにおけるノード間のデータのフローを表し、複数のノードが、1つ又は複数のノードの第1のセットであって、ノードの第1のセットにおける各ノードが、1つ又は複数の入力データセットのセットにおけるそれぞれの入力データセットを表す、1つ又は複数のノードの第1のセットと、1つ又は複数のノードの第2のセットであって、ノードの第2のセットにおける各ノードが、1つ又は複数の出力データセットのセットにおけるそれぞれの出力データセットを表す、1つ又は複数のノードの第2のセットと、1つ又は複数のノードの第3のセットであって、ノードの第3のセットにおける各ノードが、少なくとも1つの、それぞれのデータ処理動作を表す、1つ又は複数のノードの第3のセットと、を含むことと、(B)入力データセットのセットに関する1つ又は複数の処理レイアウトの第1のセットを取得することと、(C)出力データセットのセットに関する1つ又は複数の処理レイアウトの第2のセットを取得することと、(D)処理レイアウトの第1のセット、処理レイアウトの第2のセット、及び1つ又は複数のレイアウト決定ルールに基づいて、ノードの第3のセットにおける各ノードの処理レイアウトを決定することであって、1つ又は複数のレイアウト決定ルールが、異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含することと、を少なくとも1つのコンピュータハードウェアプロセッサに行わせるプロセッサ実行可能命令を保存する、少なくとも1つの非一時的コンピュータ可読ストレージ媒体と、を含む。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、(A)データフローグラフを指定する情報を取得することであって、データフローグラフが、複数のノード、及び複数ノードを接続する複数のエッジを含み、複数のエッジが、複数のノードにおけるノード間のデータのフローを表し、複数のノードが、1つ又は複数のノードの第1のセットであって、ノードの第1のセットにおける各ノードが、1つ又は複数の入力データセットのセットにおけるそれぞれの入力データセットを表す、1つ又は複数のノードの第1のセットと、1つ又は複数のノードの第2のセットであって、ノードの第2のセットにおける各ノードが、1つ又は複数の出力データセットのセットにおけるそれぞれの出力データセットを表す、1つ又は複数のノードの第2のセットと、1つ又は複数のノードの第3のセットであって、ノードの第3のセットにおける各ノードが、少なくとも1つの、それぞれのデータ処理動作を表す、1つ又は複数のノードの第3のセットと、を含むことと、(B)入力データセットのセットに関する1つ又は複数の処理レイアウトの第1のセットを取得することと、(C)出力データセットのセットに関する1つ又は複数の処理レイアウトの第2のセットを取得することと、(D)処理レイアウトの第1のセット、処理レイアウトの第2のセット、及び1つ又は複数のレイアウト決定ルールに基づいて、ノードの第3のセットにおける各ノードの処理レイアウトを決定することであって、1つ又は複数のレイアウト決定ルールが、異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含することと、を少なくとも1つのコンピュータハードウェアプロセッサに行わせるプロセッサ実行可能命令を保存する、少なくとも1つの非一時的コンピュータ可読ストレージ媒体に向けられる。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、プロセッサ実行可能命令を保存する、少なくとも1つの非一時的コンピュータ可読ストレージ媒体であって、プロセッサ実行可能命令が、(A)データフローグラフを指定する情報を取得するための手段であって、データフローグラフが、複数のノード、及び複数ノードを接続する複数のエッジを含み、複数のエッジが、複数のノードにおけるノード間のデータのフローを表し、複数のノードが、1つ又は複数のノードの第1のセットであって、ノードの第1のセットにおける各ノードが、1つ又は複数の入力データセットのセットにおけるそれぞれの入力データセットを表す、1つ又は複数のノードの第1のセットと、1つ又は複数のノードの第2のセットであって、ノードの第2のセットにおける各ノードが、1つ又は複数の出力データセットのセットにおけるそれぞれの出力データセットを表す、1つ又は複数のノードの第2のセットと、1つ又は複数のノードの第3のセットであって、ノードの第3のセットにおける各ノードが、少なくとも1つの、それぞれのデータ処理動作を表す、1つ又は複数のノードの第3のセットと、を含む、手段と、(B)入力データセットのセットに関する1つ又は複数の処理レイアウトの第1のセットを取得するための手段と、(C)出力データセットのセットに関する1つ又は複数の処理レイアウトの第2のセットを取得するための手段と、(D)処理レイアウトの第1のセット、処理レイアウトの第2のセット、及び1つ又は複数のレイアウト決定ルールに基づいて、ノードの第3のセットにおける各ノードの処理レイアウトを決定するための手段であって、1つ又は複数のレイアウト決定ルールが、異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含する、手段と、を含む、少なくとも1つの非一時的コンピュータ可読ストレージ媒体に向けられる。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサを使用して、(A)データフローグラフを指定する情報を取得することであって、データフローグラフが、複数のノード、及び複数ノードを接続する複数のエッジを含み、複数のエッジが、複数のノードにおけるノード間のデータのフローを表し、複数のノードが、1つ又は複数のノードの第1のセットであって、ノードの第1のセットにおける各ノードが、1つ又は複数の入力データセットのセットにおけるそれぞれの入力データセットを表す、1つ又は複数のノードの第1のセットと、1つ又は複数のノードの第2のセットであって、ノードの第2のセットにおける各ノードが、1つ又は複数の出力データセットのセットにおけるそれぞれの出力データセットを表す、1つ又は複数のノードの第2のセットと、1つ又は複数のノードの第3のセットであって、ノードの第3のセットにおける各ノードが、少なくとも1つの、それぞれのデータ処理動作を表す、1つ又は複数のノードの第3のセットと、を含むことと、(B)入力データセットのセットに関する1つ又は複数の処理レイアウトの第1のセットを取得することと、(C)出力データセットのセットに関する1つ又は複数の処理レイアウトの第2のセットを取得することと、(D)処理レイアウトの第1のセット、処理レイアウトの第2のセット、及び1つ又は複数のレイアウト決定ルールに基づいて、ノードの第3のセットにおける各ノードの処理レイアウトを決定することであって、1つ又は複数のレイアウト決定ルールが、異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含することと、を行うことを含む方法に向けられる。
幾つかの実施形態は、データ処理システムに向けられる。データ処理システムは、少なくとも1つのコンピュータハードウェアプロセッサと、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、(A)データフローグラフを指定する情報を取得することであって、データフローグラフが、複数のノード、及び複数ノードを接続する複数のエッジを含み、複数のエッジが、複数のノードにおけるノード間のデータのフローを表し、複数のノードが、1つ又は複数のノードの第1のセットと、ノードの第1のセットから独立した、1つ又は複数のノードの第2のセットと、を含むことと、(B)ノードの第1のセットに関する1つ又は複数の処理レイアウトの第1のセットを取得することと、(C)処理レイアウトの第1のセット、及び1つ又は複数のレイアウト決定ルールに基づいて、ノードの第2のセットにおける各ノードの処理レイアウトを決定することであって、1つ又は複数のレイアウト決定ルールが、異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含することと、を少なくとも1つのコンピュータハードウェアプロセッサに行わせるプロセッサ実行可能命令を保存する、少なくとも1つの非一時的コンピュータ可読ストレージ媒体と、を含む。
幾つかの実施形態は、データ処理システムに向けられる。データ処理システムは、少なくとも1つのコンピュータハードウェアプロセッサと、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、(A)少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサにデータベースクエリーを実行させるコンピュータコードを取得することであって、コンピュータコードが、それぞれの入力データセットを読み込むデータ処理動作をそれぞれが表す1つ又は複数のコンピュータコード部分の第1のセットと、それぞれの出力データセットを書き出すデータ処理動作をそれぞれが表す1つ又は複数のコンピュータコード部分の第2のセットと、それぞれのデータ処理動作をそれぞれが表す1つ又は複数のコンピュータコード部分の第3のセットと、を含むことと、(B)コード部分の第1のセットにおける1つ又は複数のコード部分に関する1つ又は複数の処理レイアウトの第1のセットを取得することと、(C)コード部分の第2のセットにおける1つ又は複数のコード部分に関する1つ又は複数の処理レイアウトの第2のセットを取得することと、(D)処理レイアウトの第1のセット、処理レイアウトの第2のセット、及び異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含する1つ又は複数のレイアウト決定ルールに基づいて、コード部分の第3のセットにおける各コード部分の処理レイアウトを決定することと、を少なくとも1つのコンピュータハードウェアプロセッサに行わせるプロセッサ実行可能命令を保存する、少なくとも1つの非一時的コンピュータ可読ストレージ媒体と、を含む。
上記は、添付の特許請求の範囲によって定義される本発明の非限定的概要である。
以下の図面を参照して、様々な態様及び実施形態を説明する。これらの図面は、必ずしも一定の縮尺で描かれていないことが理解されるものとする。複数の図面に現れるアイテムは、それらが現れる全ての図面において、同じ又は類似の参照番号で示される。
各ノードが同じ処理レイアウトと関連付けられた、説明のためのデータフローグラフの図である。 本明細書に記載の技術の幾つかの実施形態による、ノードの第1のセットにおけるノードに関して異なる処理レイアウトを有し、及びノードの第2のセットにおけるノードに関して決定された処理レイアウトを持たない、説明のためのデータフローグラフの図である。 本明細書に記載の技術の幾つかの実施形態による、ノードの第2のセットにおけるノードに関して決定された処理レイアウト、及びそれぞれの再パーティショニング動作と関連付けられた挿入ノードを示す、図1Bの説明のためのデータフローグラフの図である。 本明細書に記載の技術の幾つかの実施形態による、少なくとも部分的に、データフローグラフのノードの処理レイアウトを決定することによって、データフローグラフの処理構成を決定するための、説明のためのプロセスのフローチャートである。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数の処理レイアウト決定ルールを使用した、説明のためのデータフローグラフのノードの処理レイアウトの決定を示す。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のレイアウト決定ルールを使用した、別の説明のためのデータフローグラフのノードの処理レイアウトの決定を示す。 本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のレイアウト決定ルールを使用した、さらに別の説明のためのデータフローグラフのノードの処理レイアウトの決定を示す。 本明細書に記載の技術の幾つかの実施形態が動作し得る、説明のためのコンピューティング環境のブロック図である。 本明細書に記載する技術の幾つかの実施形態の実施に使用することができる、説明のためのコンピューティングシステム環境のブロック図である。
本明細書に記載する技術の局面は、データフローグラフを用いてデータ処理動作を行うための従来の技術を改良することによって、データ処理システムの速度及びスループットを向上させることに関係する。
上述の通り、データフローグラフのノードは、1つ又は複数の入力データセットからアクセスされたデータに適用され得る各データ処理動作を表し得る。データ処理動作をデータに適用する前に、データ処理動作を行うための処理レイアウトが決定される必要がある。処理レイアウトは、データ処理動作を行うために何個のコンピューティングデバイスが使用されるかを指定し、及び使用される特定のコンピューティングデバイスを識別し得る。従って、データ処理システムが、データフローグラフを用いてデータを処理し得る前に、データフローグラフにおけるノードの処理レイアウトが決定される必要がある。
データフローグラフにおけるノードの処理レイアウトを自動的に決定するための幾つかの従来の技術は、全ての処理レイアウトが同じ度合いの並列性を有するように、処理レイアウトをグラフの各ノードに割り当てることを伴う。例えば、グラフの各ノードは、データフローグラフのノードによって表されるデータ処理動作のそれぞれが、N個のコンピューティングデバイスを用いて行われることを指定するN元処理レイアウトが割り当てられ得る(Nは、1以上の整数である)。異なるコンピューティングデバイスグループによって、異なるデータ処理動作が行われ得るが、そのような各グループは、同数のコンピューティングデバイス(すなわち、N個のデバイス)を有していなければならない。結果として、従来の技術では、データフローグラフの1つのノードが、N元(N>1)処理レイアウトを有し、且つ別のノードが、M元(N≠M>1)処理レイアウトを有することは可能ではない。
本発明者らは、異なる度合いの並列性を有する処理レイアウトをデータフローグラフの異なるノードに割り当てることができれば、データ処理システムは、データをより速く、且つより効率的に処理し得ることを認識した。データフローグラフによって表される異なるデータ処理動作に対して異なる度合いの並列性を与えることは、データフローグラフを用いたデータ処理システムの速度及びスループットを大幅に向上させ得る。一例として、データフローグラフによってアクセスされた異なるデータセットが、異なる度合いの並列性を用いて保存される状況を考える。例えば、ある入力データセット(「A」)は、1つの場所に保存されたファイルでもよく、別の入力データセット(「B」)は、分散ファイルシステム(例えば、Hadoop分散ファイルシステム)を用いて、4つの異なる場所に保存されてもよく、及び出力データセット(「C」)は、分散データベースシステムを用いて、3つの異なる場所に保存されてもよい。順次処理レイアウトを用いて入力データセットAからデータを読み取り、4元並列処理レイアウトを用いて入力データセットBからデータを読み取り、及び3元並列処理レイアウトを用いて出力データセットCにデータを書き込むことは、入力及び出力データセットの並列性の度合いにマッチした並列性の度合いを有する処理レイアウトの使用が、その中に含有されるデータにアクセスし、及び続いて処理する速度を向上させるので、同じ度合いの並列性を有する処理レイアウトを用いて、これらのデータ処理動作の全てを行うよりも、より効率的となり得る。加えて、幾つかのデータセットは、指定された度合いの並列性のみを用いてアクセスされ(例えば、読み取られ、及び/又は書き込まれ)得る。異なるデータセットは、異なる度合いの並列性を必要とし得る。このようなデータセットは、本明細書に記載の技術を用いなければ、同じデータフローグラフを用いてアクセスされ得ない。
例えば、入力ノード102a、102b、102cと、各フィルタリング動作を表すノード104、110、及び111と、ソート動作を表すノード106と、各結合動作を表すノード108及び112と、出力ノード114a及び114bを包含する、図1Aに示す、説明のためのデータフローグラフ100を考える。図1Aに示すように、ノード102aによって表される入力データセットからのデータは、フィルタリングされ、ソートされ、及び出力ノード114aによって表される出力データセットに書き込まれる前に、ノード102bによって表される入力データセットからのデータのフィルタリングされたバージョンと結合される。ノード102bによって表される入力データセットからのデータも、フィルタリングされ、及びノード114bによって表される出力データセットに書き込まれる前に、ノード102cによって表される入力データセットからのデータと結合される。図1Aに示すように、処理レイアウトを自動的に決定するための従来の技術の適用は、同じ並列処理レイアウトPL1が、データフローグラフ100の各ノードに割り当てられることをもたらす。一方、図1Bに示すように、入力データセット及び出力データセットが、異なる度合いの並列性を用いて保存される場合には、異なる処理レイアウトをグラフ100の異なるノードに割り当てることが必要とされ得る。
本明細書に記載の実施形態の幾つかは、データフローグラフを用いてデータ処理動作を行うための従来の技術に関して本発明者らが認識した上記の課題の全てに対処する。しかし、以下に記載の全ての実施形態が、これらの課題の1つ1つに対処するわけではなく、幾つかの実施形態は、これらの何れにも対処しない場合がある。そのため、本明細書に記載の技術の実施形態は、データフローグラフを用いてデータ処理動作を行うための従来の技術の上述の課題の全て又は何れかに対処することに限定されないことが理解されるものとする。
本明細書に記載の技術の幾つかの実施形態は、データフローグラフの1つ又は複数のノードによって表されるデータ処理動作を行うための処理レイアウトを自動的に決定する技術に向けられる。データフローグラフを用いて計算を行う従来の技術とは異なり、異なるノードに対して決定される処理レイアウトは、同じである必要はなく、グラフの異なるノードによって表されるデータ処理動作は、異なる処理レイアウトを用いて、特に、異なる度合いの並列性を有する処理レイアウトを用いて、行われ得る。
本明細書では、データフローグラフのノードの処理レイアウトは、そのノードによって表されるデータ処理動作を行うために使用される処理レイアウトを指す。例えば、データフローグラフの入力ノードの処理レイアウトは、その入力ノードによって表される入力データセットからのデータを読み取るために使用される処理レイアウトを指す。別の例として、データフローグラフの出力ノードの処理レイアウトは、その出力ノードによって表される出力データセットにデータを書き込むために使用される処理レイアウトを指す。さらに別の例として、データ処理動作(例えば、フィルタリング動作、結合動作、ロールアップ動作など)を表すノードの処理レイアウトは、そのデータ処理動作を行うための処理レイアウトを指す。
幾つかの実施形態では、データ処理動作を表すノードの処理レイアウトは、その動作を行うために使用される並列性の度合いを示し、及びその並列性の度合いに従って動作を行うために使用されるコンピューティングデバイスを指定し得る。例えば、ノードの処理レイアウトは、単一の度合いの並列性を持つ順次処理レイアウトでもよく(すなわち、並列ではなく順次処理)、及びそのノードによって表されるデータ処理動作を行うために使用するコンピューティングデバイス(例えば、プロセッサ、サーバ、ラップトップなど)を指定し得る。別の例として、ノードの処理レイアウトは、N個の並列性の度合いを有するN元(N≧1)1より大きい)並列処理レイアウトでもよく、及びそのノードによって表されるデータ処理動作を行うために使用するN個のコンピューティングデバイスを指定し得る。幾つかの実施形態では、ノードの処理レイアウトは、1つ又は複数のコンピューティングデバイス、及び/又はそのノードによって表されるデータ処理動作を行うために使用する1つ又は複数のコンピューティングデバイスに対して実行する1つ又は複数のプロセスを指定し得る。
幾つかの実施形態では、データフローグラフにおけるノードの処理レイアウトの決定は、(A)データフローグラフを指定する情報を取得することと、(B)データフローグラフにおける入力ノードの処理レイアウトを取得することと、(C)データフローグラフにおける出力ノードの処理レイアウトを取得することと、(D)入力ノードの処理レイアウト、出力ノードの処理レイアウト、及び1つ又は複数のレイアウト決定ルールに基づいて、1つ又は複数の他のノード(すなわち、入力ノード又は出力ノードではないノード)の処理レイアウトを決定することとを包含し得る。入力ノード及び出力ノード以外のデータフローグラフノードは、本明細書では、「中間」ノードと呼ばれる場合がある。レイアウト決定ルールの例は、図2などを参照して、本明細書に記載される。
幾つかの実施形態では、データフローグラフの入力ノード及び出力ノードに関して取得された処理レイアウトの少なくとも2つは、異なる度合いの並列性を有し得る。例えば、2つの異なる入力ノードに関して取得された処理レイアウトは、異なる度合いの並列性を有し得る。別の例として、2つの異なる出力ノードに関して取得された処理レイアウトは、異なる度合いの並列性を有し得る。さらに別の例として、入力ノードに関して取得された処理レイアウトは、出力ノードに関して取得された処理レイアウトとは異なる度合いの並列性を有し得る。それでも、入力ノード及び出力ノードに関して取得された処理レイアウトの少なくとも2つが、異なる度合いの並列性を有するグラフのノードの処理レイアウトを自動的に決定するために、本明細書に記載の技術を使用することができる。ある説明のための例として、本明細書に記載の技術は、図1Bに示すデータフローグラフ100の処理レイアウトの決定に適用され得る。データフローグラフ100の入力ノード及び出力ノードは、3つの異なる処理レイアウト(すなわち、順次レイアウトSL1、並列レイアウトPL1、及び並列レイアウトPL2)に関連付けられ、これらの処理レイアウトは、図1Cに示すように、ノード104、106、108、110、111、及び112の処理レイアウトを自動的に決定するために、本明細書に記載のレイアウト決定ルールと共に使用され得る。
幾つかの実施形態では、データフローグラフの1つ又は複数の中間ノードの処理レイアウトは、(1)順方向パス(入力ノードから出力ノードに向けて)を行うことにより、中間ノードの少なくとも幾つか(例えば、全て)の初期処理レイアウトを決定することと、後に、(2)逆方向パス(出力ノードから入力ノードに向けて)を行うことにより、中間ノードの最終処理レイアウトを決定することとによって決定され得る。順方向パス中に、入力ノードに割り当てられた処理レイアウト、及び本明細書に記載の1つ又は複数のレイアウト決定ルールに基づいて、初期処理レイアウトが決定され得る。例えば、ノード104、106、108、110、111、及び112の初期処理レイアウトは、ノード102a、102b、及び102cに割り当てられた処理レイアウトに基づいて決定され得る。逆方向パス中は、出力ノードに割り当てられた処理レイアウト、中間ノードの少なくとも幾つかに割り当てられた初期処理レイアウト、及び1つ又は複数のレイアウト決定ルールに基づいて、中間ノードの最終処理レイアウトが決定され得る。例えば、ノード104、106、108、110、111、及び112の最終処理レイアウトは、順方向パス中にこれらのノードに関して決定された初期処理レイアウト、出力ノード114a及び114bに割り当てられた処理レイアウト、及び1つ又は複数のレイアウト決定ルールに基づいて決定され得る。
幾つかの実施形態では、データフローグラフにおけるノードの処理レイアウトが決定された後に(例えば、順方向パス及び逆方向パスを行った後に)、データフローグラフは、ある特定の度合いの並列性を有する処理レイアウトを使用して処理された後に、異なる度合いの並列性を有する処理レイアウトを使用して処理されるデータに対して再パーティショニング動作を行うように構成され得る。幾つかの実施形態では、データフローグラフは、異なる度合いの並列性を持つ処理レイアウトを有するグラフにおける隣接ノード間を流れるデータに対して再パーティショニング動作を行うように構成され得る。このようにして、1つの処理レイアウトを使用して(N個のコンピューティングデバイスを使用して、N≧1で)処理されたデータは、別の処理レイアウトを使用した(M≠N個のコンピューティングデバイスを使用して、M≧1で)後続の処理に適応され得る。
例えば、図1Cに図示されるように、隣接するノード102a及び104は、レイアウトの一方が、順次(1つのコンピューティングデバイスを用いて処理が行われる)であり、他方が並列(複数のコンピューティングデバイスを用いて処理が行われる)であるので、異なる度合いの並列性を持つ処理レイアウトを有する。この例では、データフローグラフは、ノード102aからノード104へと流れるデータが、ノード102aに関して決定された処理レイアウト(SL1)に従って、単一のコンピューティングデバイスを使用して処理された後に、ノード104に関して決定された処理レイアウト(PL1)に従って、複数のコンピューティングデバイスを使用して処理され得るように、データをパーティショニングするように構成され得る。このために、データフローグラフは、並列性の度合いを増加させる再パーティショニング動作(例えば、パーティション・バイ・キー(partition−by−key)動作)を行うように構成され得る。又、同じ例において、隣接するノード102b及び111は、異なる処理レイアウトを有し、及び隣接するノード112及び114は、異なる処理レイアウトを有し、及びデータフローグラフ100は、ノード102からノード111へと流れるデータに対する再パーティショニング動作、及びノード112からノード114へと流れるデータに対する再パーティショニング動作(例えば、集約動作)を行うように構成され得る。
幾つかの実施形態では、データフローグラフは、再パーティショニング動作を表すノードでグラフを拡張することによって、再パーティショニング動作を行う(グラフの実行時に)ように構成され得る。グラフが実行されると、再パーティショニング動作を行うように構成されたソフトウェアが、実行され得る。例えば、図1Cに示すように、データフローグラフは、ノード130、132、及び134で拡張することができ、各ノードは、それぞれの再パーティショニング動作と関連付けられる。他の実施形態では、データフローグラフの1つ又は複数の既存のノードが、再パーティショニング動作を行うように構成されてもよく、及び新しいノードは、追加されない。
幾つかの実施形態では、データフローグラフのノード(ノード「A」)が、グラフにおける後続の隣接ノード(ノード「B」)の並列性の度合いよりも高い並列性の度合いを有する処理レイアウトと関連付けられる場合、データフローグラフは、データが、ノード「A」によって表されるデータ処理動作に従って処理された後であって、且つデータが、ノード「B」によって表されるデータ処理動作に従って処理される前に、データに対して再パーティショニング動作を行うように構成され得る。この場合、再パーティショニング動作は、並列性の度合いを低下させることができ、及び例えば、集約動作データレコードの複数のセットに対して行われる集約動作は、データレコードの複数のセットをデータレコードの単一のセットに統合し得るが、必ずしも、単一のセットにおけるデータレコードのソート性を維持しない)又はマージ動作データレコードの複数のセットに対して行われるマージ動作は、単一のセットにおけるデータレコードのソート性を維持しながら、データレコードの複数のセットをデータレコードの単一のセットに統合し得る)でもよい。例えば、図1Cに示すように、ノード112の並列処理レイアウト(PL2)は、後続の隣接ノード114bの順次処理レイアウト(SL1)よりも高い並列性の度合いを有する。この例では、集約動作に関連付けられたノード134は、ノード112と114bとの間に追加されている。
幾つかの実施形態では、データフローグラフのノード(ノード「A」)が、グラフにおける後続の隣接ノード(ノード「B」)の並列性の度合いよりも低い並列性の度合いを有する処理レイアウトと関連付けられる場合、データフローグラフは、データが、ノード「A」によって表されるデータ処理動作に従って処理された後であって、且つデータが、ノード「B」によって表されるデータ処理動作に従って処理される前に、データに対して再パーティショニング動作を行うように構成され得る。この場合、再パーティショニング動作は、並列性の度合いを増加させることができ、及び例えば、パーティション・バイ・キー動作パーティション・バイ・キー動作では、1つ又は複数の同じフィールド(例えば、1つ又は複数の同じコラムにおける)に対して1つ又は複数の同じ値を有するデータレコードが、同じパーティションに割り当てられる)、ラウンドロビンパーティション動作、パーティション・バイ・レンジ(partition−by−range)動作パーティション・バイ・レンジ動作では、異なるパーティションが、値の異なる非重複範囲と関連付けられ、及びある範囲内にフィールド値を有するデータレコードが、その範囲と関連付けられたパーティションに割り当てられる)、又はその他の適宜のタイプのパーティショニング動作でもよい。例えば、図1Cに示すように、ノード102aの順次処理レイアウト(SL1)は、後続の隣接ノード114bの並列処理レイアウト(PL1)よりも低い並列性の度合いを有する。同様に、この例では、ノード102bの並列処理レイアウト(PL1)は、ノード111の並列処理レイアウト(PL2)よりも低い並列性の度合いを有する。この例では、パーティション・バイ・キー動作を表すノード130が、ノード102aとノード104との間に追加されており、及びラウンドロビンパーティション動作を表すノード132は、並列性の度合いの所望の低下を達成する集約動作が、その後に続く。
幾つかの実施形態では、データフローグラフのノード(ノード「A」)が、グラフにおける後続の隣接ノード(ノード「B」)の並列性の度合いと同じ並列性の度合いを有する処理レイアウトと関連付けられる場合、再パーティショニング動作は、必要とされない。
幾つかの実施形態では、データフローグラフの中間ノードの処理レイアウトは、グラフの入力ノード及び出力ノードに割り当てられた処理レイアウトに基づいて決定され得るが、本明細書に記載の技術は、入力ノード及び出力ノードのレイアウトから中間ノードのレイアウトを決定することに限定されない。幾つかの実施形態では、例えば、処理レイアウトは、データフローグラフの1つ又は複数のノードの任意のサブセットに対して取得されてもよく、及びデータフローグラフの任意のその他のノードの処理レイアウトは、これらの取得された処理レイアウト、データフローグラフの構造、及び1つ又は複数のレイアウト決定ルールに基づいて決定され得る。
本明細書に記載の技術の幾つかの実施形態は、データ処理システムによる、構造化照会言語(SQL)クエリーなどのデータベースクエリーの管理に適用され得る。幾つかの実施形態では、データ処理システムは、(1)データベースクエリー(例えば、SQLクエリー)を受信し、(2)SQLクエリーを実行するためのクエリープラン(例えば、データベースクエリーが実行されると行われ得るデータベース動作を示すプラン)を生成し、(3)クエリープランからデータフローグラフを生成し、及び(4)少なくとも部分的にデータフローグラフを実行することによって、受信したデータベースクエリーを実行し得る。このような実施形態は、本明細書に全体として援用される、2015年8月25日に発行された、「データクエリー管理(MANAGING DATA QUERIES)」というタイトルの米国特許第9,116,955号明細書にさらに詳細に記載されている。米国特許第9,116,955号明細書は、「データクエリー管理(MANAGING DATA QUERIES)」というタイトルの、2011年5月2日に出願された、出願内容が本明細書に全体として援用される、米国特許出願第13/098,823号明細書から完成したものである。
幾つかの実施形態では、本明細書に記載の技術は、データベースクエリー(例えば、SQLクエリー)から自動的に生成されたデータフローグラフの1つ又は複数のノードの処理レイアウトを自動的に決定するために使用され得る。
幾つかの実施形態では、データ処理システムは、(1)データベースクエリー(例えば、SQL)クエリーを受信し、(2)受信したデータベースクエリーを、実行されるとデータベースクエリーを実行するコンピュータコード部分を含むコンピュータコードに変換し、及び(3)各コンピュータコード部分を実行するための処理レイアウトを自動的に決定し得る。幾つかの実施形態では、コンピュータコード部分を実行するための処理レイアウトは、コンピュータコード部分の実行順序を示す情報を用いて決定され得る。例えば、幾つかの実施形態では、各コンピュータコード部分は、データフローグラフにおけるそれぞれのノードと関連付けられてもよく、及びグラフの構造(例えば、ノード間の接続で具現化されるような)を用いて、処理レイアウトをノードに、及び関連して、ノードに関連付けられたコンピュータコード部分に割り当て得る。ただし、幾つかの実施形態では、コンピュータコード部分の実行順序を示す情報が、データフローグラフでエンコードされることに限定されないので、コンピュータコード部分を実行するための処理レイアウトは、データフローグラフを用いることなく決定され得ることを認識されたい。
本明細書に記載の実施形態は、多数のやり方の何れで実施されてもよいことが理解されるものとする。単なる説明目的で、具体的な実施の例を以下に提供する。これらの実施形態及び提供される特徴/機能は、個々に、全て一緒に、又は2つ以上の任意の組み合わせで使用されてもよいことが理解されるものとする(本明細書に記載される技術の態様は、この点において限定されない)。
図2は、少なくとも部分的に、本明細書に記載の技術の幾つかの実施形態に従ってデータフローグラフのノードに処理レイアウトを割り当てることによって、データフローグラフの処理構成を決定するための、説明のためのプロセス200のフローチャートである。プロセス200は、任意の適宜のシステム及び/又はコンピューティングデバイスによって行われてもよく、及び例えば、図6などを参照して本明細書に記載するデータ処理システム602によって行われ得る。プロセス200を説明した後に、プロセス200の幾つかの局面を、図3A〜3D、4A〜4C、及び5A〜5Dに示す例を参照して例示する。図3A〜3Dの例は、プロセス200の説明後に、詳細に記載するが、この例は、説明を明確にするために、プロセス200の説明全体を通しても言及される。
プロセス200は、データフローグラフを指定する情報がアクセスされ得るアクト202から始まる。本明細書に記載する通り、データフローグラフは、(a)1つ又は複数のそれぞれの入力データセットを表す1つ又は複数の入力ノード、(b)1つ又は複数のそれぞれの出力データセットを表す1つ又は複数の出力ノード、及び/又は(c)データに対して行われ得るデータ処理動作を表す1つ又は複数のノードを包含する複数のノードを包含し得る。データフローグラフのノード間の有向リンク又はエッジは、ノード間のデータフローを表す。従って、アクト202では、データフローグラフのノード(上記のタイプのノードの何れも包含する)及びリンクを指定する情報が、アクセスされ得る。この情報は、任意の適宜のソース、任意の適宜のデータ構造からアクセスされてもよく、及び任意の適宜のフォーマットのものでもよい(本明細書に記載の技術の局面は、この点において限定されない)。例えば、図3A〜Dに示される例を参照して、アクト202では、データフローグラフ300を指定する情報が、アクセスされ得る。以下にさらに詳細に記載する幾つかの実施形態では、アクト202で情報がアクセスされるデータフローグラフは、自動的に生成されたものである場合があり、及び例えば、構造化照会言語(SQL)クエリーから自動的に生成されたものである場合がある。
次いで、アクト204では、アクト202でアクセスされたデータフローグラフの各入力ノード(すなわち、入力データセットを表す各ノード)に関して、処理レイアウトが取得され得る。例えば、図3A〜3Dの例を参照して、アクト204では、入力ノード302及び304の処理レイアウトが取得され得る。幾つかの実施形態では、入力ノードの処理レイアウトは、入力ノードによって表される入力データセットからデータを読み取るための並列性の度合い(例えば、順次、2元並列、3元並列、…、任意の適宜の整数NのN元並列)を指定する。幾つかの実施形態では、入力ノードの処理レイアウトは、入力データセットからデータを読み取るために使用する1つ又は複数のコンピューティングデバイスのセット(例えば、1つ又は複数のプロセッサ、サーバ、及び/又はその他の適宜のデバイスのセット)を識別する。
入力ノードの処理レイアウトは、任意の適宜のやり方で取得され得る。幾つかの実施形態では、入力ノードの処理レイアウトは、プロセス200の実行の開始前に決定することができ、及びアクト204中に、以前に決定された処理レイアウトが、アクセスされ得る。他の実施形態では、入力ノードの処理レイアウトは、プロセス200の実行中に動的に決定され得る。幾つかの実施形態では、入力の処理レイアウトは、プロセス200の実行の開始前に部分的に決定されてもよく、未知の情報は、プロセス200の実行中に動的に決定される。例えば、プロセス200の実行の前に、入力ノードの処理レイアウトが、順次又は並列であることが分かっているかもしれないが、入力動作(例えば、1つ又は複数のソースからデータを読み取ること)を行うために使用される特定のコンピューティングデバイスは、プロセス200の実行中に決定され得る。別の例として、プロセス200の実行に先立って、並列処理レイアウトが、ある入力ノードに割り当てられることが分かっているかもしれないが、並列性の度合いは、ランタイム中に決定され得る。
入力ノードの処理レイアウトが、プロセス200の実行前に、あるいは実行中に決定されるかにかかわらず、その決定は、任意の適宜のやり方で行われ得る。例えば、幾つかの実施形態では、入力ノードの処理レイアウトは、ユーザインタフェース(例えば、グラフィカルユーザインタフェース、構成ファイルなど)を用いて、ユーザによって手作業で指定され得る。別の例として、幾つかの実施形態では、入力ノードの処理レイアウトは、データ処理システムによって自動的に決定され得る。例えば、データ処理システムは、入力ノードによって表される入力データセットがどのように保存されるかに基づいて、入力ノードの処理レイアウトを自動的に決定し得る。例えば、入力データセットが複数のデバイス(例えば、4つのサーバ、Hadoopクラスタを使用してなど)に保存される場合、プロセス200を実行するデータ処理システムは、並列処理レイアウト(例えば、4元並列処理レイアウト、Hadoopクラスタにおけるノードの数)が、入力データセットからデータレコードを読み取るために使用されることを決定し得る。
次いで、アクト206において、アクト202でアクセスされたデータフローグラフの各出力ノード(すなわち、出力データセットを表す各ノード)に関して、処理レイアウトが取得され得る。例えば、図3A〜3Dの例を参照して、アクト206では、出力ノード314の処理レイアウトが取得され得る。幾つかの実施形態では、出力ノードの処理レイアウトは、出力ノードによって表される出力データセットにデータを書き込むための並列性の度合い(例えば、順次、2元並列、3元並列、…、任意の適宜の整数NのN元並列)を指定する。幾つかの実施形態では、出力ノードの処理レイアウトは、データを出力データセットに書き込むために使用する1つ又は複数のコンピューティングデバイスのセット(例えば、1つ又は複数のプロセッサ、サーバ、及び/又はその他の適宜のデバイスのセット)を識別する。
出力ノードの処理レイアウトは、任意の適宜のやり方で取得され得る。幾つかの実施形態では、出力ノードの処理レイアウトは、プロセス200の実行の開始前に決定することができ、及びアクト206中に、以前に決定された処理レイアウトが、アクセスされ得る。他の実施形態では、出力ノードの処理レイアウトは、プロセス200の実行中に動的に決定され得る。幾つかの実施形態では、出力ノードの処理レイアウトは、プロセス200の実行の開始前に部分的に決定されてもよく、未知の情報は、プロセス200の実行中に動的に決定される。例えば、プロセス200の実行の前に、出力ノードの処理レイアウトが、順次又は並列であることが分かっているかもしれないが、出力動作(例えば、データを1つ又は複数の出力データセットに書き込むこと)を行うために使用される特定のコンピューティングデバイスは、プロセス200の実行中に決定され得る。別の例として、プロセス200の実行に先立って、並列処理レイアウトが、ある出力ノードに割り当てられることが分かっているかもしれないが、並列性の度合いは、ランタイム中に決定され得る。
出力ノードの処理レイアウトが、プロセス200の実行前に、あるいは実行中に決定されるかにかかわらず、その決定は、入力ノードの処理レイアウトを決定するための上記のやり方の何れをも含む任意の適宜のやり方で行われ得る。例えば、出力ノードの処理レイアウトは、ユーザインタフェースを用いて、ユーザによって手作業で指定されてもよく、又はデータ処理システムによって(例えば、出力ノードによって表される出力データセットがどのように保存されるかに基づいて)自動的に決定されてもよい。
次いで、プロセス200は、アクト204及び206で処理レイアウトが取得された入力及び出力ノード以外のデータフローグラフにおけるノードに関して、処理レイアウトが決定されるアクト208に進む。幾つかの実施形態では、中間ノードの処理レイアウトは、中間ノードによって表されるデータ処理動作を行うための並列性の度合い(例えば、順次、2元並列、3元並列、…、任意の適宜の整数NのN元並列)を指定する。幾つかの実施形態では、中間ノードの処理レイアウトは、データ処理動作を行うために使用する1つ又は複数のコンピューティングデバイスのセット(例えば、1つ又は複数のプロセッサ、サーバ、及び/又はその他の適宜のデバイスのセット)を識別する。
幾つかの実施形態では、中間ノードの処理レイアウトは、少なくとも部分的に、入力ノード及び出力ノードの処理レイアウト(アクト204及び206で取得された)を使用することによって決定され得る。例えば、図3A〜3Dの例を参照して、アクト208において、中間ノード306、308、310、及び312の処理レイアウトは、入力ノード302及び304、及び出力ノード314の処理レイアウトを使用して決定され得る。幾つかの実施形態では、中間ノードの処理レイアウトは、データフローグラフの構造、及び1つ又は複数のレイアウト決定ルールにさらに基づいて、決定され得る。
幾つかの実施形態では、レイアウト決定ルールは、データフローグラフのあるノードの処理レイアウトが、データフローグラフの1つ又は複数の他のノードの処理レイアウトに基づいて、どのように決定され得るかを指定し得る。例えば、幾つかの実施形態では、レイアウト決定ルールは、何れの処理レイアウトにも関連付けられていない、ある特定のノードの処理レイアウトが、グラフにおける、その特定のノードに隣接する他のノードの1つ又は複数の処理レイアウトに基づいて、どのように決定され得るかを指定し得る。ある説明のための例として、図3Aの例を参照して、レイアウト処理ルールは、入力ノード302の処理レイアウトに基づいた、中間ノード306の処理レイアウトの決定方法を指定し得る。別の説明のための例として、ノード308及び310の処理レイアウトが決定されると、レイアウト処理ルールは、ノード308及び310に関して決定された処理レイアウトに基づいて、ノード312の処理レイアウトを決定する方法を指定し得る。
別の例として、幾つかの実施形態では、レイアウト決定ルールは、ある特定の処理レイアウトと既に関連付けられた特定のノードの処理レイアウトを、上記特定の処理レイアウト、及びグラフにおいて、上記特定のノードに隣接する1つ又は複数の他のノードの処理レイアウトに基づいて決定する方法を指定し得る。ある説明のための例として、図3Cの例を参照して、ノード312の処理レイアウトは、ノード312に関して決定された初期処理レイアウト(レイアウトPL1)及び出力ノード314に関して決定された処理レイアウト(レイアウトSL2)に基づいて決定され得る。
具体的なレイアウト決定ルールの非限定的な、説明のための例を以下に記載する。幾つかの実施形態では、本明細書に記載のレイアウト決定ルール例に加えて、又はそれらの代わりに、1つ又は複数の他のレイアウト決定ルールが使用され得ることを認識されたい。本明細書に記載のレイアウトルール例の1つ又は複数の任意の適宜の組み合わせが、幾つかの実施形態において使用され得ることも認識されたい。本明細書に記載のレイアウト決定ルールは、任意の適宜のやり方で(例えば、ソフトウェアコード、1つ又は複数の構成パラメータなどを使用して)実施され得る(本明細書に記載の技術の局面は、この点において限定されない)。
幾つかの実施形態では、あるレイアウト決定ルール例によれば、処理レイアウトとまだ関連付けられていない、ある特定のノードの処理レイアウトを決定する際に、この特定のノードが、関連付けられた処理レイアウトを有する近隣ノード(例えば、データフローグラフにおける、上記特定のノードの直前のノード、又はデータフローグラフにおける、上記特定のノードの直後のノード)を有する場合には、近隣ノードのレイアウトは、上記特定のノードの処理レイアウトとして決定され得る。このようにして、近隣ノードの処理レイアウトが、上記特定のノードに「コピー」され得る。ある説明のための例として、図3Aの例では、ノード306の処理レイアウトは、それに先行する近隣ノード302の処理レイアウトであると決定され得る。次に、ノード308の処理レイアウトは、それに先行するノード306の処理レイアウトであると決定され得る。この例から認識され得るように、このレイアウト決定ルールは、ある入力ノード(例えば、ノード302)のレイアウトを1つ又は複数の他のノード(例えば、ノード306、308、及び312)へと伝播するように繰り返し適用され得る。
幾つかの実施形態では、別のレイアウト決定ルール例によれば、ある特定の処理レイアウトとまだ関連付けられていない、ある特定のノードの処理レイアウトを決定する際に、この特定のノードが、関連付けられた処理レイアウトを有する複数の近隣ノード(例えば、複数の先行する近隣ノード、又は複数の後続の近隣ノード)を有する場合には、上記特定のノードの処理レイアウトは、それの近隣ノードのレイアウトの中から選択され得る。例えば、図3Aのデータフローグラフの場合、ノード308及び310のレイアウトは決定済みであるが、ノード312のレイアウトがまだ決定されていないと仮定すると、ノード312のレイアウトは、ノード308及び310に関して決定されたレイアウトの一方であると選択され得る。
幾つかの実施形態では、別のレイアウト決定ルール例によれば、ある特定の処理レイアウトと既に関連付けられた、ある特定のノードの処理レイアウトを決定する際に、この特定のノードが、それぞれの処理レイアウトと関連付けられた1つ又は複数の近隣ノードを有する場合には、上記特定のノードのレイアウトは、このノードと既に関連付けられた上記特定の処理レイアウト、及びそれの近隣ノードの処理レイアウトの中から選択することによって決定され得る。例えば、図3Cに示されるように、ノード312は、初期処理レイアウト(PL1)と関連付けられ、及び別の処理レイアウト(SL2)と関連付けられた近隣ノード314を有する。この例では、これら2つのレイアウト(すなわち、PL1及びSL2)の一方が、ノード312の更新(例えば、最終)処理レイアウトとして選択され得る。
上記から認識され得るように、幾つかの実施形態では、あるレイアウト決定ルールを適用することは、2つ以上の処理レイアウトの中から処理レイアウトを選択することを伴う。これは、多数のやり方の何れで行われてもよい。例えば、幾つかの実施形態では、2つ以上の処理レイアウトから成るグループから、ノードの処理レイアウトを選択する場合、最大の並列性の度合いを有する処理レイアウトが選択され得る。例えば、ノードの処理レイアウトが、N元並列処理レイアウト(例えば、10元並列レイアウト)、あるいはM元(M<N)並列処理レイアウト(例えば、5元並列レイアウト)であるかを選択する場合、N元並列処理レイアウトが選択され得る。別の例として、ノードの処理レイアウトを並列処理レイアウト及び順次処理レイアウトから選択する場合、並列処理レイアウトが選択され得る。ある説明のための例として、図3Bを参照して、ノード312は、初期順次処理レイアウト(SL1)を割り当てられ(例えば、入力ノード302からそのレイアウトを伝播した結果として)、及びノード310は、並列レイアウトPL1を割り当てられ得る(例えば、入力ノード304からそのレイアウトを伝播した結果として)。次いで、PL1とSL1との間で、レイアウトPL1が明らかにより大きな並列性の度合いを有するため、ノード312の処理レイアウトは、並列レイアウトPL1であると更新され得る。
別の例として、幾つかの実施形態では、同じ並列性の度合いを有する処理レイアウトの中から、ノードの処理レイアウトを選択する際には、より多数のレコードを処理するために使用される処理レイアウトが選択され得る。例えば、データフローグラフにおけるノードの処理レイアウトを、上記ノードの第1の先行する近隣ノードに割り当てられ、且つ1000万のデータレコードを処理するために使用される4元レイアウトPL1、及び上記ノードの第2の先行する近隣ノードに割り当てられ、且つ1万のデータレコードを処理するために使用される4元レイアウトPL2から選択する場合、上記ノードに関して、レイアウトPL1が選択され得る。このようにして、上記ノードに関連付けられたデータ処理動作(例えば、結合動作)が、1000万のデータレコードを処理するために使用される処理レイアウトと同じもの(例えば、同じコンピューティングデバイス)を使用して行われ得る。結果として、レイアウトPL1及びPL2が、コンピューティングデバイスの非重複セットを使用して実施される場合、最大で1万のデータレコードが、1000万のデータレコードを処理するために使用されるコンピューティングデバイスへと移動される必要がある。一方、レイアウトPL2が選択された場合、場合によっては1000万のデータレコード全てが、たった1万のデータレコードを処理するために使用されるコンピューティングデバイスへと移動される必要があり、これは明らかに非効率的である。従って、より多数のレコードを処理するために使用されるレイアウトを選択することが、データ処理システムの性能を向上させることに役立ち得る。図4A〜4Cを参照して、これの一例を以下でさらに説明する。
幾つかの実施形態では、別のレイアウト決定ルール例によれば、データフローグラフの入力ノード及び出力ノードに関して、処理レイアウトが決定された後に、これらの処理レイアウトは、後で変更されない。このルールが利用される実施形態においては、入力ノード及び出力ノードの処理レイアウトが、アクト204及び206で取得された後に、これらの処理レイアウトは、後で変更されない。
幾つかの実施形態では、別のレイアウト決定ルール例によれば、順次処理レイアウトが、データレコードのグループに適用されると、一定の数のデータレコードを出力する(例えば、データレコードが、それぞれのスコアに基づいてソートされた後に、トップテンのスコアを有するデータレコードを出力する)動作である制限動作を表すノードに割り当てられ得る。
幾つかの実施形態では、データフローグラフの1つ又は複数の内部ノードが、所定の処理レイアウトと関連付けられ得る。幾つかの実施形態では、ある特定のタイプのノードが、所定の処理レイアウトと関連付けられ得る。
幾つかの実施形態では、別のレイアウト決定ルール例によれば、処理レイアウトが、データフローグラフにおける、ある特定のノードに割り当てられると、その特定のノードに割り当てられた処理レイアウトをその他のノードに伝播させないための指示が、提供され得る(例えば、グラフィカルユーザインタフェース又は構成ファイルなどのユーザインタフェースを用いて、ユーザによって)。例えば、幾つかの実施形態では、1つ又は複数の入力ノード、及び/又は1つ又は複数の出力ノードに割り当てられた処理レイアウトを伝播させないための指示は、アクト204及び/又は206における入力及び/又は出力処理レイアウトの取得の一部として提供され得る。
図5A〜5Dを参照して、これの一例を以下でさらに説明する。
プロセス200のアクト208における中間ノードの処理レイアウトを決定するために、上記のレイアウト決定ルールの何れも使用することができる。上記のレイアウト決定ルールの幾つかは、ある特定のノードの処理レイアウトを、それの近隣ノードに既に割り当てられたレイアウトに基づいて決定する方法を指定するので、「ローカル」であるが、幾つかの実施形態では、これらのレイアウト決定ルールの1つ又は複数は、入力及び出力処理ノードに関して取得された処理レイアウトを中間ノードに伝播させるように繰り返し適用され得る。この伝播は、任意の適宜のやり方で行われ得る。
幾つかの実施形態では、中間ノードの処理レイアウトは、アクト208において、(1)アクト208aにおいて、順方向パスを行うことにより、中間ノードの少なくとも幾つか(例えば、全て)の初期処理レイアウトを決定することと、(2)アクト208bにおいて、逆方向パスを行うことにより、中間ノードの少なくとも幾つか(例えば、全て)の最終処理レイアウトを決定することとによって決定され得る。
順方向パス中に、1つ又は複数の入力ノードに関して取得された処理レイアウトが、本明細書に記載のレイアウト決定ルールの1つ又は複数を用いて、データフローグラフにおける中間ノードへと伝播され得る。データフローグラフの構造は、順方向パス中にノードに関して処理レイアウトが決定される順序をガイドし得る。例えば、最初に、入力ノードの近隣ノードに関する処理レイアウトが決定され、次に、入力ノードの近隣ノードの近隣ノードに関する処理レイアウトが決定され、入力ノードからの全てのフローが、出力ノードにおけるそれらの終端にたどり着くまで続き得る。ある説明のための例として、図3Bを参照して、入力ノード302及び304の処理レイアウトが、ノード306、308、310、及び312の初期処理レイアウトを取得するために、1つ又は複数のレイアウト決定ルールを用いて、順方向パス中に伝播され得る。
逆方向パス中は、1つ又は複数の出力ノードに関して取得された処理レイアウトが、本明細書に記載のレイアウト決定ルールの1つ又は複数を用いて、データフローグラフにおける中間ノードへと伝播され得る。順方向パスの場合と同様に、データフローグラフの構造は、逆方向パス中にノードに関して処理レイアウトが決定される順序をガイドし得る。例えば、最初に、出力ノードの近隣ノードに関する処理レイアウトが決定され、次に、出力ノードの近隣ノードの近隣ノードに関する処理レイアウトが決定され、出力ノードからの全てのエッジが、出力ノードにおけるそれらの終端にたどり着くまで続き得る。たどられる経路は、逆方向パス中は逆であり、順方向パスでたどられる経路の逆となり得る。ある説明のための例として、図3Cを参照して、出力ノード314の処理レイアウト、及びノード306、308、310、及び312の初期処理レイアウトが、ノード306、308、310、及び312の最終処理レイアウトを取得するために、逆方向パス中に、1つ又は複数のレイアウト決定ルールと共に使用され得る。図3A〜3Dを参照して、これを以下により詳細に述べる。
アクト208において、中間ノードに関する処理レイアウトが決定された後に、プロセス200は、データフローグラフの隣接ノードがミスマッチレイアウトを有するか否かが決定される決定ブロック210に進む。隣接するノード「A」及び「B」は、ノードAに関して決定された処理レイアウトが、ノードBに関して決定された処理レイアウトとは異なる度合いの並列性を有する場合に、ミスマッチレイアウトを有する。例えば、ノードAに関して、N元(N>1)並列処理レイアウトが決定され、且つ後続のノードBに関して、順次処理レイアウトが決定される場合、これらのノードは、ミスマッチレイアウトを有する(Nから1への遷移が存在する)。別の例として、ノードAに関して、順次処理レイアウトが決定され、且つ後続のノードBに関して、M元(M>1)並列処理レイアウトが決定される場合、これらのノードは、ミスマッチレイアウトを有する(1からMへの遷移が存在する)。別の例として、ノードAに関して、N元並列処理レイアウトが決定され、且つ隣接するノードBに関して、M元並列処理レイアウトが決定される場合(M≠N)、これらのノードは、ミスマッチレイアウトを有する(NからMへの遷移が存在する)。
決定ブロック210において、異なる度合いの並列性を備えた処理レイアウトを有する隣接ノードペアが存在すると決定されると、プロセス200は、データフローグラフが、1つ又は複数の再パーティショニング動作を行うように構成され得るアクト212に進む。再パーティショニング動作は、ある処理レイアウトを用いて、ある数のプロセッサを使用して処理されるデータレコードが、別の処理レイアウトを用いた、異なる数のプロセッサを使用した処理のために遷移されることを可能にする。再パーティショニング動作の例は、本明細書に記載され、及び例えば、データの処理において並列性の度合いを増加させるための再パーティショニング動作(例えば、パーティション・バイ・キー動作、ラウンドロビンパーティション動作、パーティション・バイ・レンジ動作、及び/又はその他の適宜のタイプのパーティション動作)、及びデータの処理において並列性の度合いを低下させるための再パーティショニング動作(例えば、マージ動作及び集約動作)を包含する。例えば、隣接するノードAとノードBとの間に、Nから1への遷移が存在する場合、データフローグラフは、ノードAによって表される動作に従って処理されるデータの並列性の度合いを低下させる(Nから1へ)ための再パーティショニング動作を、そのデータがノードBによって表される動作に従って処理される前に行うように構成され得る。別の例として、隣接するノードAとノードBとの間に、1からMへの遷移が存在する場合、データフローグラフは、ノードAによって表される動作に従って処理されるデータの並列性の度合いを増加させる(1からMへ)ための再パーティショニング動作を、そのデータがノードBによって表される動作に従って処理される前に行うように構成され得る。さらに別の例として、隣接するノードAとノードBとの間に、NからMへの遷移が存在する場合、データフローグラフは、ノードAによって表される動作に従って処理されるデータに対して並列性の度合いを変化させる(NからMへ)ために、複数の再パーティショニング動作を、そのデータがノードBによって表される動作によって処理される前に行うように構成され得る。複数の再パーティショニング動作は、並列性の度合いを低下させる(例えば、NからKへ)第1の再パーティショニング動作、及び並列性の度合いを増加させる(例えば、KからMへ、Kは、N及びMの公約数である)第2の再パーティショニング動作を包含し得る。
幾つかの実施形態では、データフローグラフは、再パーティショニング動作を表す新しいノードを追加することによって、再パーティショニング動作を行うように構成され得る。以下に説明する図3D、4C、及び5Dにおいて、これの例を示す。このような実施形態では、再パーティショニング動作を表すノードに関して、処理レイアウトが決定され得る。再パーティショニング動作が、並列性の度合いを増加させる(例えば、パーティション・バイ・キー動作)場合には、再パーティショニング動作を表すノードに割り当てられた処理レイアウトは、先行するノードに割り当てられた処理レイアウトでもよい。再パーティショニング動作が、並列性の度合いを低下させる(例えば、マージ動作又は集約動作)場合には、再パーティショニング動作を表すノードに割り当てられた処理レイアウトは、グラフにおける後続のノードに割り当てられた処理レイアウトでもよい。他の実施形態では、データフローグラフの既存のノードが、再パーティショニング動作を行うように構成され得る。
幾つかの実施形態では、プロセス200を行うデータ処理システムは、特定の状況において、特定のタイプの再パーティショニング動作を行うようにデータフローグラフを構成するようにプログラミングされ得る。例えば、幾つかの実施形態では、データフローグラフが、並列性の度合いを低下させるための再パーティショニング動作を行うように構成され、且つデータがソートされるとき、データのソート性が、再パーティショニングを通して維持される場合には、データフローグラフは、並列性の度合いを低下させるためにマージ動作を行うように構成され得る。そうでなければ、集約動作を使用して、並列性の度合いを低下させ得る。別の例として、幾つかの実施形態では、データフローグラフが、並列性の度合いを増加させるための再パーティショニング動作を行うように構成されるとき、データの特定のパーティショニングが望まれる場合には、データフローグラフは、ある特定の1つ又は複数のキーに関して、パーティション・バイ・キー動作を行うように構成され得る。そうでなければ、ラウンドロビンパーティション動作、又は別のタイプのパーティション動作が、使用され得る。別の例として、幾つかの実施形態では、ロールアップ動作を並列データに適用することは、ロールアップキーのサブセットに関して、このデータがまだパーティショニングされていない場合には、再パーティショニングを必要とし得る。この場合、ロールアップが、データ量を大幅に(例えば、少なくとも10分の1)減少させると推定される場合には、ダブルバブルロールアップが行われ得る(すなわち、まず、ソースレイアウト及びパーティショニングスキームにおけるロールアップ、次いで、デスティネーションレイアウト及びパーティショニングスキームにおいて第2のロールアップ)。
一方、決定ブロック210において、異なる度合いの並列性を備えた処理レイアウトを有する隣接ノードが存在しない、又は異なる度合いの並列性を備えたレイアウトを有する隣接ノードに関して、適切な再パーティショニング論理が、データフローグラフに追加されていると決定されると、プロセス200は、完了する。
幾つかの実施形態では、プロセス200を用いて処理レイアウトが割り当てられた後に、データフローグラフは、割り当てられたレイアウトに従って実行され得る。このようにして、データフローグラフにおける1つ又は複数のデータ処理動作のそれぞれが、そのデータ処理動作に割り当てられた処理レイアウトに従って実行される。
幾つかの実施形態では、プロセス200は、自動生成されたデータフローグラフに適用され得る。例えば、幾つかの実施形態では、プロセス200は、SQLクエリーから、別のデータベースシステムによって提供されたクエリーを指定する情報から、及び/又は別のデータフローグラフから自動生成されたデータフローグラフに適用され得る。
幾つかの実施形態では、データフローグラフは、(1)SQLクエリーを受信し、(2)受信したSQLクエリーからクエリープランを生成し、及び(3)クエリープランからデータフローグラフを生成することによって、SQLクエリーから生成され得る。次に、プロセス200は、そのように生成されたデータフローグラフに適用され得る。(プロセス200が適用され得るデータフローグラフを自動的に生成する)これら3つのアクトのそれぞれを、以下でより詳細に説明する。
幾つかの実施形態では、SQLクエリーは、ユーザが、入力としてデータ処理システムにSQLクエリーを提供した結果、データ処理システム(例えば、例えばデータ処理システム602などのプロセス200を実行するデータ処理システム)によって受信され得る。ユーザは、グラフィカルユーザインタフェース、又はその他の適宜のタイプのインタフェースを用いて、SQLクエリーを入力し得る。他の実施形態では、SQLクエリーは、別のコンピュータプログラムによって、データ処理システムに提供され得る。例えば、SQLクエリーは、データ処理システムに1つ又は複数のSQLクエリー(各SQLクエリーは、ユーザによって指定されている場合、又は自動生成されている場合がある)を実行させるように構成されたコンピュータプログラムによって提供され得る。SQLクエリーは、任意の適宜のタイプのものでよく、及び任意の適宜のフォーマットで提供され得る(本明細書に記載の技術の局面は、この点において限定されない)。
幾つかの実施形態では、受信したSQLクエリーを使用して、クエリープランを生成し得る。生成されたクエリープランは、SQLクエリーが実行された場合に行われる1つ又は複数のデータ処理動作を識別し得る。生成されたクエリープランはさらに、識別されたデータ処理動作が実行される順序を指定し得る。そのため、生成されたクエリープランは、受信したSQLクエリーを実行するために行うデータ処理動作のシーケンスを表し得る。生成されたクエリープランは、任意の適宜のタイプのクエリープランジェネレータを用いて生成され得る。クエリープランを生成するための幾つかの例示的技術が、本明細書に全体として援用される、「データクエリー管理」というタイトルの米国特許第9,116,955号明細書に記載されている。
次に、幾つかの実施形態では、データフローグラフが、クエリープラン(これ自体は、受信したSQLクエリーを用いて生成されたものである)から生成され得る。幾つかの実施形態では、データフローグラフは、少なくとも部分的に、クエリープランにおいて識別されたデータ処理動作の少なくともサブセット(例えば、一部又は全て)のそれぞれのノードを包含するようにデータフローグラフを生成することによって、クエリープランから生成され得る。幾つかの実施形態では、クエリープランにおける単一のノードは、データフローグラフにおける複数のノードの包含をもたらし得る。続いて、クエリープランで指定されたデータ処理動作の順序を使用して、データフローグラフにおけるノードを結び付けるリンクを生成し得る。例えば、生成されたクエリープランが、第2のデータ処理動作の前に、第1のデータ処理動作が行われることを示す場合、生成されたデータフローグラフは、第1のノード(第1のデータ処理動作を表す)及び第2のノード(第2のデータ処理動作を表す)と、第1のノードから第2のノードへの経路を指定する1つ又は複数のリンクとを有し得る。
幾つかの実施形態では、クエリープランからデータフローグラフを生成することは、入力及び/又は出力データソースを表すグラフに対して、1つ又は複数のノードを追加することを含む。例えば、データフローグラフの生成は、SQLクエリーの実行中にデータレコードが読み取られるデータソースのそれぞれに対して入力ノードを追加することを含み得る。各入力ノードは、それぞれのデータソースと関連付けられたパラメータ値を用いて構成され得る。これらの値は、データソース中のデータレコードにアクセスする方法を示し得る。別の例として、データフローグラフの生成は、SQLクエリーの実行中にデータレコードが書き込まれるデータシンクのそれぞれに対して出力ノードを追加することを含み得る。各出力ノードは、それぞれのデータシンクと関連付けられたパラメータ値を用いて構成され得る。これらの値は、データレコードをデータソースに書き込む方法を示し得る。
クエリープランから生成されたデータフローグラフは、クエリープラン自体とは異なることを認識されたい。データフローグラフが、グラフ実行環境(例えば、共働システム610、又はその他の適宜の、データフローグラフを実行するための実行環境)を用いることによって実行され得る一方で、クエリープランは、グラフ実行エンジンによって実行することができない(それは、データフローグラフの生成に使用される中間表現であり、このデータフローグラフは、SQLクエリーを実行するために、グラフ実行エンジンによって実行される)。クエリープランは、実行可能ではなく、リレーショナルデータベース管理システムの状況下でさえ、実行戦略を生成するために、さらに処理される必要がある。これに対して、データフローグラフは、SQLクエリーを実行するために、グラフ実行エンジンによって実行可能である。加えて、リレーショナルデータベースシステムによるさらなる処理後でさえ、結果として生じる実行戦略は、他のタイプのデータソース及び/又はデータシンクに対する、データの読み取り及び/又は書き込みを可能にしないが、データフローグラフは、この点において限定されない。
幾つかの実施形態では、クエリープランから生成されたデータフローグラフは、クエリープランに存在しないデータ処理動作を表すノードを含有し得る。逆に、幾つかの実施形態では、クエリープランから生成されたデータフローグラフは、クエリープランに存在するデータ処理動作を表すノードを含有しない場合がある。このような状況は、クエリープランからデータフローグラフを生成するプロセス中に行われ得る様々な最適化により生じ得る。幾つかの実施形態では、データフローグラフは、データベースコンピュータシステム(例えば、リレーショナルデータベース管理システム)に対して行われるデータベース動作以外のデータ処理動作を表すノードを含有し得る。
幾つかの実施形態では、クエリープラン及びデータフローグラフは、異なるタイプのデータ構造で具現化され得る。例えば、幾つかの実施形態では、クエリープランは、各ノードが単一の親ノードを有する有向グラフ(例えば、例えば二分木などの木)で具現化されてもよく、一方、データフローグラフは、複数の親ノードを有する少なくとも1つのノードを有し得る有向非巡回グラフで具現化され得る。
プロセス200は、説明のためのものであり、バリエーションが存在することを認識されたい。例えば、図2の図示した実施形態では、中間ノードの処理レイアウトは、順方向パスの後に、逆方向パスを使用して決定されるが、他の実施形態では、その代わりに、処理レイアウトは、逆方向パスの後に順方向パスを使用して決定され得る。別の例として、図示した実施形態では、中間ノードの処理レイアウトは、入力ノード及び出力ノードに割り当てられたレイアウトに基づいて決定されていたが、本明細書に記載の処理レイアウト決定技術は、より一般的に適用され得る。例えば、処理レイアウトは、データフローグラフにおける1つ又は複数のノードのセットに関して取得されてもよく、及び処理レイアウトは、(1)ノードのセットに関して取得された処理レイアウト、(2)データフローグラフのリンク構造、及び(3)1つ又は複数のレイアウト決定ルールに基づいて、データフローグラフにおける他のノードに関して取得され得る。ノードのセットは、入力ノード及び出力ノードを包含し得るが、そうである必要はない。従って、ノードのセットは、任意の適宜の数(例えば、ゼロ、少なくとも1つ、全て)の入力ノード、任意の適宜の数(例えば、ゼロ、少なくとも1つ、全て)の出力ノード、及び任意の適宜の数(例えば、ゼロ、少なくとも1つ、全て)の他のノードを包含し得る。唯一の要件は、ノードのセットが空ではないことである。
幾つかの実施形態では、データ処理システムは、(1)データベースクエリー(例えば、SQL)クエリーを受信し、(2)受信したデータベースクエリーを、データ処理システムによって実行されると、受信したデータベースクエリーを実行するコンピュータコード部分を含むコンピュータコードに変換し、及び(3)各コンピュータコード部分を実行するための処理レイアウトを自動的に決定し得る。幾つかの実施形態では、コンピュータコード部分を実行するための処理レイアウトは、コンピュータコード部分の実行順序を示す情報を用いて決定され得る。例えば、幾つかの実施形態では、各コンピュータコード部分は、データフローグラフにおけるそれぞれのノードと関連付けられてもよく、及び本明細書に記載のレイアウト決定ルールと共に、グラフの構造(例えば、ノード間の接続で具現化されるような)を用いて、処理レイアウトをノードに、及び関連して、ノードに関連付けられたコンピュータコード部分に割り当て得る。ただし、幾つかの実施形態では、コンピュータコード部分の実行順序を示す情報が、データフローグラフでエンコードされることに限定されず、その他の適宜のやり方(例えば、別のタイプの1つ又は複数のデータ構造)でエンコードされ得るので(本明細書に記載の技術の局面は、この点において限定されない)、コンピュータコード部分を実行するための処理レイアウトは、データフローグラフを用いることなく決定され得ることを認識されたい。
従って、幾つかの実施形態では、データ処理システムは、データ処理システムによって実行されると、データ処理にデータベースクエリーを実行させるコンピュータコードを取得(例えば、リモートソースから、及び/又はネットワーク接続上で受信、ローカルストレージからアクセスなど)することができ、コンピュータコードは、(A)それぞれの入力データセットを読み込むデータ処理動作をそれぞれが表す1つ又は複数のコンピュータコード部分の第1のセット、(B)それぞれの出力データセットを書き出すデータ処理動作をそれぞれが表す1つ又は複数のコンピュータコード部分の第2のセット、及び(C)それぞれのデータ処理動作をそれぞれが表す1つ又は複数のコンピュータコード部分の第3のセットを含む。次に、データ処理システムは、コンピュータコードの一部であるコンピュータコード部分のそれぞれを実行するための処理レイアウトを決定し得る。例えば、幾つかの実施形態では、データ処理システムは、(A)コード部分の第1のセットにおける1つ又は複数のコード部分に関する1つ又は複数の処理レイアウトの第1のセットを取得(例えば、受信、アクセスなど)し、(B)コード部分の第2のセットにおける1つ又は複数のコード部分に関する1つ又は複数の処理レイアウトの第2のセットを取得し、及び(C)処理レイアウトの第1のセット、処理レイアウトの第2のセット、及び異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含する、本明細書に記載の1つ又は複数のレイアウト決定ルールに基づいて、コード部分の第3のセットにおける各コード部分に関する処理レイアウトを決定し得る。
幾つかの実施形態では、コンピュータコードは、データベースクエリーから生成され得る。例えば、幾つかの実施形態では、受信したデータベースクエリー(例えば、SQLクエリー)は、クエリープランに変換され、及びクエリープランは、コンピュータコードを生成するために処理され得る。例えば、クエリープランは、複数のノード及びエッジ(上記のような)を含むデータフローグラフに変換されてもよく、及びコンピュータコードは、コンピュータコード部分を包含してもよく、各コード部分は、データフローグラフにおけるノードによって表されるデータ処理動作を行うためのコードを含む。このようにして、幾つかの実施形態では、コンピュータコード部分は、データフローグラフにおけるそれぞれのノードと関連付けられ得る。
コンピュータコードがデータフローグラフと関連付けられる幾つかの実施形態では、データフローグラフのノードは、(A)1つ又は複数のノードの第1のセットであって、ノードの第1のセットにおける各ノードが、それぞれの入力データセットを表し、(上記の)コンピュータコード部分の第1のセットにおける各コンピュータコード部分が、ノードの第1のセットにおけるそれぞれのノードと関連付けられる、1つ又は複数のノードの第1のセットと、(B)1つ又は複数のノードの第2のセットであって、ノードの第2のセットにおける各ノードが、それぞれの出力データセットを表し、(上記の)コンピュータコード部分の第2のセットにおける各コンピュータコード部分が、ノードの第2のセットにおけるそれぞれのノードと関連付けられる、1つ又は複数のノードの第2のセットと、1つ又は複数のノードの第3のセットであって、ノードの第3のセットにおける各ノードが、それぞれのデータ処理動作を表す、1つ又は複数のノードの第3のセットとを包含し得る。データ処理システムは、(1)第1及び第2のセットのノードを用いた処理レイアウトと、(2)本明細書に記載のレイアウト決定ルールの1つ又は複数と、(3)1つ又は複数の処理レイアウトをノードの第3のセット中のノードに割り当てるためのグラフの構造(データ処理動作間の順序付けを示す)とを使用し得る。これらの処理レイアウトは、次に、ノードの第3のセット中のノードと関連付けられたコンピュータコード部分を実行するために、データ処理システムによって使用され得る。
図3A〜3Dは、図2を参照して記載された実施形態を包含する、本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のレイアウト決定ルールを使用した、説明のためのデータフローグラフ300におけるノードの処理レイアウトの決定を示す。特に、図3A〜3Dの例は、幾つかの実施形態において、異なる度合いの並列性を有する2つの異なる処理レイアウトからレイアウトを選択することによって、ノードの処理レイアウトを決定する際に、より大きな度合いの並列性を有する処理レイアウトが、ノードの処理レイアウトとして選択され得ることを示す。
図3Aは、それぞれの入力データセットを表すノード302及び304と、それぞれのデータ処理動作を表すノード306、308、310、及び312と、出力データセットを表すノード314とを有するデータフローグラフ300を示す。データフローグラフ300の構造から認識され得るように、ノード302によって表される入力データセットは、フィルタリングされ、ソートされ、及びその後、ノード314によって表される出力データセットに書き込まれる前に、ノード304によって表される入力データセットのフィルタリングされたバージョンと結合される。この例では、入力データセット及び出力データセットの処理レイアウトが取得された後に、図3Aに示すように、順次処理レイアウトSL1が、ノード302によって表されるデータセットからデータを読み取るために使用され、並列レイアウトPL1が、ノード304によって表されるデータセットからデータを読み取るために使用され、及び順次処理レイアウトSL2が、ノード314によって表されるデータセットに書き込むために使用されることが決定され得る。なお、順次処理レイアウトSL1及びSL2のそれぞれは、データが順次処理される(すなわち、1つの並列性の度合いを備える)ことを示すが、順次処理は、異なるプロセッサによって(例えば、ノード302によって表される入力データセットを保存するデータベースのプロセッサによって、及びノード314によって表される出力データセットを保存する別のデータベースのプロセッサによって)行われ得るので、これらの順次レイアウトは、同じである必要はない。この段階で、ノード306、308、310、及び312によって表されるデータ処理動作の処理レイアウトは、まだ決定されていない。
図3B及び3Cは、ノード302、304、及び314に関して取得された処理レイアウトに基づいた、ノード306、308、310、及び312によって表されるデータ処理動作の処理レイアウトの決定を示す。まず、図3Bに示すように、データフローグラフ300の構造及び本明細書に記載のレイアウト決定ルールに従って、ノード302及び304から始まる順方向パスで、ノード306、308、310、及び312に関して、初期処理レイアウトが決定される。例えば、ノード306の処理レイアウトは、データフローグラフにおける先行ノード(ノード302)のレイアウトに基づいて決定される。次いで、ノード308の処理レイアウトが、データフローグラフにおける、それに先行するノード(ノード306)のレイアウトに基づいて決定される。ノード310の処理レイアウトが、それの先行ノード(すなわち、ノード304)のレイアウトに基づいて決定され、且つノード308の処理レイアウトが決定された後に、ノード312の処理レイアウトが、ノード308及び310(それぞれが、データフローグラフ300においてノード312に先行し、及びノード312に接続される)のレイアウトに基づいて決定される。
この例では、順方向パス中に、ノード306の直前に、ノード302以外のノードが存在せず、且つ既にノード306に関連付けられたレイアウトが存在しないため、ノード302の順次レイアウトSL1が、ノード306によって表されるデータ処理動作を行うために使用されることが決定される。次いで、ノード308に先行する、ノード306以外のノードが存在せず、且つ既にノード308に関連付けられたレイアウトが存在しないため、ノード306のレイアウトSL1が、ノード308によって表されるデータ処理動作を行うために使用されることが決定される。同様に、ノード310に先行する、ノード304以外のノードが存在せず、且つ既にノード310に関連付けられたレイアウトが存在しないため、ノード304の並列レイアウトPL1が、ノード310によって表されるデータ処理動作を行うために使用されることが決定される。このようにして、レイアウトSL1及びPL1が、入力ノード302及び304から、レイアウトがまだ決定されておらず、且つ単一の先行するノード(すなわち、この説明のための例では、ノード306、308、及び310)に接続されたノードへと、グラフ300を通して伝播される。
順方向パス中に、結合動作を表すノード312の処理レイアウトが、先行ノード308の順次レイアウトSL1及び先行ノード310の並列レイアウトPL1から選択される。図3Bに示すように、順方向パス中に、異なる度合いの並列性を有する2つの異なる潜在的処理レイアウトから選択する際に、より大きな度合いの並列性を有する処理レイアウトが選択されることを示すレイアウト決定ルールを使用して、ノード312に関して、並列レイアウトPL1が選択される。並列処理レイアウトPL1が、処理レイアウトSL1よりも大きな度合いの並列性を有するので、順方向パス中に、並列処理レイアウトPL1が、ノード312に関して選択される。
次いで、図3Cに示すように、データフローグラフ300の構造、図3Bに示した初期処理レイアウト、及び本明細書に記載のレイアウト決定ルールに従って、ノード314から始まる逆方向パスで、ノード306、308、310、及び312に関して、最終処理レイアウトが決定される。例えば、ノード312の最終処理レイアウトは、ノード312に関して決定された初期処理レイアウト、及びノード314のレイアウトに基づいて決定される。ノード308の最終処理レイアウトは、ノード308に関して決定された初期処理レイアウト、及びノード312に関して決定された最終処理レイアウトに基づいて決定される。ノード306の最終処理レイアウトは、ノード306に関して決定された初期処理レイアウト、及びノード308に関して決定された最終処理レイアウトに基づいて決定される。ノード310の最終処理レイアウトは、ノード310に関して決定された初期処理レイアウト、及びノード312に関して決定された最終処理レイアウトに基づいて決定される。
この例では、逆方向パス中に、ノード312の最終処理レイアウトが、順方向パス中にノード312に関して決定された初期処理レイアウトPL1、及びノード314に関連付けられた順次処理レイアウトSL2から選択される。図3Cに示すように、レイアウトPL1が、レイアウトSL2よりも大きな度合いの並列性を有するので、レイアウトPL1が、ノード312の最終処理レイアウトであると決定される。ノード308の最終処理レイアウトが、順方向パス中にノード308に関して決定された初期レイアウトSL1、及び逆方向パス中にノード312に関して決定された最終処理レイアウトPL1から選択される。図3Cに示すように、レイアウトPL1が、レイアウトSL1よりも大きな度合いの並列性を有するので、レイアウトPL1が、ノード308の最終処理レイアウトであると決定される。ノード306の最終処理レイアウトが、順方向パス中にノード306に関して決定された初期レイアウトSL1、及び逆方向パス中にノード308に関して決定された最終処理レイアウトPL1から選択される。図3Cに示すように、レイアウトPL1が、レイアウトSL1よりも大きな度合いの並列性を有するので、レイアウトPL1が、ノード304の最終処理レイアウトであると決定される。順方向パス中にノード310に関して決定された初期レイアウトがPL1であり、且つ逆方向パス中にノード312に関して決定された最終レイアウトもPL1であるので、ノード310の最終処理レイアウトは、PL1であると決定される。
図3Cに示すように、データフローグラフ300の各ノードに関して処理レイアウトが決定された後に、データフローグラフ300は、1つ又は複数の再パーティショニング動作を行うように構成され得る。本明細書に記載するように、データフローグラフにおける隣接するノードが、異なる度合いの並列性を有する処理レイアウトを用いて、データレコードに対してデータ処理動作を行うように構成される場合に、データフローグラフは、データレコードに対して再パーティショニング動作を行うように構成され得る。例えば、図3Cに示すように、隣接するノード302(SL1)及びノード306(PL1)の処理レイアウトが、異なる度合いの並列性を有する。隣接するノード312(PL1)及びノード314(SL2)の処理レイアウトも、異なる度合いの並列性を有する。
幾つかの実施形態では、データフローグラフは、再パーティショニング動作を表す新しいノードをグラフに追加することによって、再パーティショニング動作を行うように構成され得る。例えば、図3Dに示すように、パーティション動作(例えば、パーティション・バイ・キー動作)を表す新しいノード342が、ノード302とノード306との間で、データフローグラフに追加され得る。データレコードが、ノード342を有するデータフローグラフに従って処理される場合、データレコードは、ノード302の処理レイアウトSL1を用いて読み取られた後であるが、ノード306の処理レイアウトPL1を用いてフィルタリングされる前に、ノード342によって表されるパーティショニング動作に従って、パーティションが行われる。パーティショニング動作は、ノード308のレイアウトSL1に従って行われ得る。加えて、図3Dに示すように、マージ動作を表す新しいノード344が、ノード312とノード314との間で、データフローグラフに追加され得る。データレコードが、ノード344を有するデータフローグラフに従って処理される場合、データレコードは、ノード312の処理レイアウトPL1を用いて処理された後であるが、ノード314の処理レイアウトSL2を用いて出力される前に、マージされる。マージング動作は、ノード314のレイアウトSL2に従って行われ得る。
図3Dの説明のための例では、データフローグラフ340を取得するために、2つの新しいノードが、データフローグラフ300に追加される。ただし、幾つかの実施形態では、データフローグラフは、グラフに新しいノードを追加することなく、1つ又は複数の再パーティショニング動作を行うように構成され得ることを認識されたい。幾つかの実施形態では、1つ又は複数の既存のノードのそれぞれが、それぞれの再パーティショニング動作を行うように構成され得る。例えば、図3Dの説明のための実施形態に示すように新しいノード342を追加するのではなく、ノード302又はノード306のどちらかが、パーティショニング動作を行うように構成され得る。別の例として、図3Dの説明のための実施形態に示すように新しいノード344を追加するのではなく、ノード312又はノード314のどちらかが、マージング動作を行うように構成され得る。
図4A〜4Cは、図2を参照して記載された実施形態を包含する、本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のレイアウト決定ルールを使用した、説明のためのデータフローグラフ400におけるノードの処理レイアウトの決定を示す。特に、図4A〜4Cの例は、幾つかの実施形態において、同じ度合いの並列性を有する2つの処理レイアウトからレイアウトを選択することによって、ノードの処理レイアウトを決定する際に、より多数のレコードに適用される処理レイアウトが、ノードの処理レイアウトとして選択され得ることを示す。
図4Aは、それぞれの入力データセットを表すノード402及び404と、データ処理動作を表すノード406と、出力データセットを表すノード408とを有するデータフローグラフ400を示す。データフローグラフ400の構造から認識され得るように、N個のデータレコードを有し、及びノード402によって表される入力データセットが、M個のレコード(Mは、Nより小さい)を有し、及びノード404によって表される入力データセットと結合される。データセットが結合された後に、それらは、ノード408によって表される出力データセットに書き込まれる。この例では、入力データセット及び出力データセットの処理レイアウトが取得された後に、並列処理レイアウトPL1が、ノード402によって表されるデータセットからデータを読み取るために使用され、並列処理レイアウトPL2が、ノード404によって表されるデータセットからデータを読み取るために使用され、及び順次レイアウトSL1が、ノード408によって表される出力データセットにデータレコードを書き込むために使用されることが決定され得る。処理レイアウトPL1及びPL2のそれぞれは、同じ度合いの並列性を有する。この段階で、ノード406によって表される結合動作の処理レイアウトは、まだ決定されていない。
順方向パス中に、データフローグラフ400におけるノード406に先行するノード402及び404の処理レイアウトに基づいて、ノード406の初期処理レイアウトが決定される。図示した例では、ノード406の初期処理レイアウトは、ノード402に関連付けられた処理レイアウトPL1、及びノード404に関連付けられた処理レイアウトPL2の中から選択される。レイアウトPL1及びPL2のそれぞれが、同じ度合いの並列性を有する場合でも、レイアウトPL1が、M<N個のデータレコードの処理(例えば、ノード404によって表される入力データセットからのM個のデータレコードの読み取り)に適用されるレイアウトPL2よりも多数のレコードNを処理する(例えば、ノード402によって表される入力データセットからN個のデータレコードを読み取る)ために適用されるので、レイアウトPL1が、ノード406の初期処理レイアウトとして選択される。レイアウトPL2に従って、結合動作が処理される場合に移動されなければならないレコード数(例えば、N個のレコード)よりも、レイアウトPL1に従って、ノード406によって表される結合動作を処理する際に、少ない数のデータレコード(例えば、M<N個のレコード)が移動される必要があり得るので、この選択は、効率を目的として行われ得る。
次いで、逆方向パス中に、ノード406の最終処理レイアウトが、ノード406に関して決定された初期処理レイアウト(PL1)、及びノード408に関連付けられた処理レイアウト(SL1)に基づいて決定される。レイアウトPL1が、レイアウトSL1よりも大きな度合いの並列性を有するので、PL1が、ノード406の最終処理レイアウトであると決定される。従って、順方向パス及び逆方向パスが完了した後に、図4Bに示すように、PL1が、ノード406の最終処理レイアウトであると決定される。
図4Bに示すように、データフローグラフ400の各ノードに関して処理レイアウトが決定された後に、データフローグラフ400は、1つ又は複数の再パーティショニング動作を行うように構成され得る。本明細書に記載するように、データフローグラフにおける隣接するノードが、異なる度合いの並列性を有する処理レイアウトを用いて、データレコードに対してデータ処理動作を行うように構成される場合に、データフローグラフは、データレコードに対して再パーティショニング動作を行うように構成され得る。例えば、図4Bに示すように、隣接するノード406(PL1)及びノード408(SL1)の処理レイアウトが、異なる度合いの並列性を有する。
本明細書に述べた通り、幾つかの実施形態では、データフローグラフは、再パーティショニング動作を表す新しいノードをグラフに追加することによって、再パーティショニング動作を行うように構成され得る。例えば、図4Cに示すように、データフローグラフ430を取得するために、マージ動作を表す新しいノード407が、データフローグラフ400に追加され得る。データレコードが、ノード407を有するデータフローグラフに従って処理される場合、データレコードは、ノード406の処理レイアウトPL1を用いて処理された後であるが、ノード408の処理レイアウトSL1を用いて出力される前に、マージされる。マージング動作は、ノード408のレイアウトSL1に従って行われ得る。他の実施形態では、マージ動作を行うために新しいノードをデータフローグラフ400に追加する代わりに、既存のノードの一方(例えば、406又は408)が、マージ動作を行うように構成され得る。
図5A〜5Dは、図2を参照して記載された実施形態を包含する、本明細書に記載の技術の幾つかの実施形態による、1つ又は複数のレイアウト決定ルールを使用した、説明のためのデータフローグラフ500におけるノードの処理レイアウトの決定を示す。特に、図5A〜5Dの例は、幾つかの実施形態において、ある処理レイアウトが、特定のノードを越えて伝播されない特定の1つ又は複数のノードのレイアウトとして、他のノードの処理レイアウトを決定する際に、選定され得ることを示す。
図5Aは、それぞれの入力データセットを表すノード502及び504と、それぞれのデータ処理動作を表すノード506、508、510、及び512と、出力データセットを表すノード514とを有するデータフローグラフ500を示す。データフローグラフ500の構造から認識され得るように、ノード502によって表される入力データセットは、まずフィルタリングされ、次に、フィルタリングされたデータに対して、ロールアップ動作が行われ、及びロールアップ動作の結果として取得されたデータレコードが、ノード514によって表される出力データセットに書き込まれる前に、ノード504によって表される入力データセットのフィルタリングされたバージョンと結合される。この例では、入力データセット及び出力データセットの処理レイアウトが取得された後に、図5Aに示すように、並列処理レイアウトPL1が、ノード502によって表される入力データセットからデータを読み取るために使用され、順次レイアウトSL1が、ノード504によって表される入力データセットからデータを読み取るために使用され、及び順次処理レイアウトSL2が、ノード514によって表される出力データセットに書き込むために使用されることが決定され得る。加えて、この例では、処理レイアウトPL1が、他のノードに伝播されないという指示が、取得され得る。この指示は、任意の適宜のやり方で取得することができ、例えば、グラフィカルユーザインタフェースを介してユーザから取得され得る。この段階で、ノード506、508、510、及び512によって表されるデータ処理動作の処理レイアウトは、まだ決定されていない。
図5B及び5Cは、ノード502、504、及び514に関して取得された処理レイアウトに基づいた、ノード506、508、510、及び512によって表されるデータ処理動作の処理レイアウトの決定を示す。まず、図5Bに示すように、データフローグラフ500の構造及び本明細書に記載のレイアウト決定ルールに従って、ノード502及び504から始まる順方向パスで、ノード506、508、510、及び512に関して、初期処理レイアウトが決定される。この例では、ノード502の処理レイアウトPL1が伝播されないという指示が取得されているので、レイアウトPL1は、フィルタリング動作を表すノード506に対してのみコピーされ(フィルタリング動作は、ノード502によって表される入力データセットからデータレコードを読み取るために使用されるレイアウトと同じ処理レイアウト(実際には、同じコンピューティングデバイス)を使用して行われ得るタイプの動作であるので)、例えば、ロールアップ動作を表すノード508などの他のノードへはコピーされない。
従って、順方向パス中に、ノード506の初期処理レイアウトが、PL1であると決定され、及びPL1がノード506を越えて伝播されないので、ノード508の初期処理レイアウトは決定されない。以下に述べるように、ノード508の処理レイアウトは、逆方向パスにおいて決定される。
加えて、順方向パス中に、ノード510の直前に、ノード504以外のノードが存在せず、且つ既にノード510に関連付けられたレイアウトが存在しないため、ノード510の初期処理レイアウトが、ノード504の順次レイアウトSL1であると決定される。次いで、ノード510が、ある特定のレイアウトと関連付けられた、ノード512に先行する唯一のノードであるので(上述の通り、ノード508は、ノード512に先行するが、それは、どの初期処理レイアウトとも関連付けられていない)、ノード510の初期処理レイアウトSL1も、ノード512の初期処理レイアウトであると決定される。順方向パスの結果として決定された初期処理レイアウトを図5Bに示す。ノード508を除く全てのノードが、初期処理レイアウトを割り当てられている。
次に、図5Cに示すように、データフローグラフ500の構造、図5Bに示した初期処理レイアウト、及び本明細書に記載のレイアウト決定ルールに従って、ノード514から始まる逆方向パスで、ノード506、508、510、及び512に関して、最終処理レイアウトが決定される。例えば、ノード512の最終処理レイアウトは、ノード512に関して決定された初期処理レイアウト、及びノード514に関連付けられた処理レイアウトに基づいて決定される。ノード508の最終処理レイアウトは、ノード512に関して決定された最終処理レイアウトに基づいて決定される(この例では、ノード508に関して、初期レイアウトは決定されていない)。ノード506の最終処理レイアウトは、ノード506に関して決定された初期処理レイアウト、及びノード508に関して決定された最終処理レイアウトに基づいて決定される。ノード510の最終処理レイアウトは、ノード510に関して決定された初期処理レイアウト、及びノード512に関して決定された最終処理レイアウトに基づいて決定される。
この例では、逆方向パス中に、ノード512の最終処理レイアウトが、順方向パス中にノード512に関して決定された初期処理レイアウトSL1、及びノード514に関連付けられた順次処理レイアウトSL2から選択される。図5Cに示すように、レイアウトSL1が、ノード512の最終処理レイアウトであると決定される。ノード508の最終処理レイアウトは、レイアウトSL1が、ノード512の最終決定レイアウトであり、及びノード508が、順方向パス後に、どの初期処理レイアウトとも関連付けられていないので、レイアウトSL1であると決定される。ノード506の最終処理レイアウトは、PL1が、ノード508の最終処理レイアウトであると決定されたレイアウトSL1よりも大きな度合いの並列性を有するので、PL1(ノード506に関して決定された初期レイアウト)であると決定される。ノード510の最終処理レイアウトは、順方向パス中にノード510に関して決定された初期レイアウトがSL1であり、且つ逆方向パス中にノード512に関して決定された最終レイアウトもSL1であるので、SL1であると決定される。
図5Cに示すように、データフローグラフ500の各ノードに関して処理レイアウトが決定された後に、データフローグラフ500は、1つ又は複数の再パーティショニング動作を行うように構成され得る。本明細書に記載するように、データフローグラフにおける隣接するノードが、異なる度合いの並列性を有する処理レイアウトを用いて、データレコードに対してデータ処理動作を行うように構成される場合に、データフローグラフは、データレコードに対して再パーティショニング動作を行うように構成され得る。例えば、図5Cに示すように、隣接するノード506(PL1)及びノード508(SL1)の処理レイアウトが、異なる度合いの並列性を有する。
本明細書に述べた通り、幾つかの実施形態では、データフローグラフは、再パーティショニング動作を表す新しいノードをグラフに追加することによって、再パーティショニング動作を行うように構成され得る。例えば、図5Dに示すように、データフローグラフ530を取得するために、マージ動作を表す新しいノード532が、データフローグラフ500に追加され得る。データレコードが、ノード532を有するデータフローグラフに従って処理される場合、データレコードは、ノード506の処理レイアウトPL1を用いて処理された後であるが、ノード508の処理レイアウトSL1を用いて出力される前に、集約される。集約動作は、ノード508のレイアウトSL1に従って行われ得る。他の実施形態では、集約動作を行うために新しいノードをデータフローグラフ500に追加する代わりに、既存のノードの一方(例えば、506又は508)が、集約動作を行うように構成され得る。
図6は、本明細書に記載する技術の幾つかの実施形態が動作し得る、説明のためのコンピューティング環境600のブロック図である。環境600は、データ記憶装置610、612、614、及び616にアクセスする(例えば、データを読み取る、及び/データを書き込む)ように構成されたデータ処理システム602を包含する。データ記憶装置610、612、614、及び616のそれぞれは、1つ又は複数のデータセットを保存し得る。データ記憶装置は、任意の適宜のタイプのデータを、任意の適宜のやり方で保存し得る。データ記憶装置は、フラットテキストファイルとして、スプレッドシートとして、データベースシステム(例えば、リレーショナルデータベースシステム)を使用して、又はその他の適宜のやり方で、データを保存し得る。場合によっては、データ記憶装置は、トランザクションデータを保存し得る。例えば、データ記憶装置は、クレジットカード決済、通話記録データ、又は銀行取引データを保存し得る。データ処理システム602は、任意の適宜のタイプの、任意の適宜の数のデータ記憶装置にアクセスするように構成され得ることを認識されたい(本明細書に記載する技術の局面は、この点において限定されない)。
データ処理システムは、一人又は複数のユーザにデータフローグラフを作成するためのインタフェースを提供するグラフィカル開発環境(GDE)606を包含する。GDE606を使用して作成されたデータフローグラフは、共働システム610、又はその他の適宜の、データフローグラフを実行するための実行環境を用いて実行され得る。グラフィカル開発環境及びデータフローグラフを実行するための環境の局面は、それぞれ本明細書に全体として援用される、「グラフとして表現される計算の実行」というタイトルの米国特許第5,966,072号明細書、及び「グラフベース計算のパラメータ管理」というタイトルの米国特許第7,716,630号明細書に記載されている。GDE606を使用して作成された、又はその他の適宜のやり方で取得されたデータフローグラフは、データ処理システム602の一部であるデータフローグラフ記憶装置608に保存され得る。
データ処理システム602は、データフローグラフのノードの処理レイアウトを、共働システム610による、そのデータフローグラフの実行前に決定するように構成された並列処理モジュール604も包含する。並列処理モジュール604は、例えば図2のプロセス200を参照して記載した技術を包含する、本明細書に記載の技術の何れかを使用して、データフローグラフのノードの処理レイアウトを決定し得る。
図7は、本明細書に記載する技術を実施することができる適宜のコンピューティングシステム環境700の一例を図示する。コンピューティングシステム環境700は、適宜のコンピューティング環境の一例にすぎず、本明細書に記載する技術の使用又は機能性の範囲に関して何ら制限を示唆することを意図したものではない。コンピューティング環境700は、例示的動作環境700に図示されるコンポーネントの何れか1つ又は組み合わせに関する依存性又は要件を有すると解釈されるべきものでもない。
本明細書に記載する技術は、多数の他の汎用又は専用コンピューティングシステムの環境又は構成と共に使用可能である。本明細書に記載する技術と共に使用するのに適し得る周知のコンピューティングシステム、環境、及び/又は構成の例には、限定されることはないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル大衆消費電子製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又はデバイスの何れかを包含する分散コンピューティング環境などが包含される。
コンピューティング環境は、プログラムモジュールなどのコンピュータ実行可能命令を実行することができる。一般に、プログラムモジュールには、特定のタスクを行う、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが包含される。本明細書に記載する技術は、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが行われる分散コンピューティング環境において実行されてもよい。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを包含するローカル及びリモートコンピュータストレージ媒体の両方に位置していてもよい。
図7を参照して、本明細書に記載する技術を実施する例示的システムは、コンピュータ710の形態の汎用コンピューティングデバイスを包含する。コンピュータ710のコンポーネントは、限定されないが、処理装置720、システムメモリ730、及びシステムメモリを包含する様々なシステムコンポーネントを処理装置720に結合するシステムバス721を包含してもよい。システムバス721は、様々なバスアーキテクチャの何れかを使用した、メモリバス又はメモリコントローラ、周辺バス、及びローカルバスを包含する幾つかのタイプのバス構造の何れかであってもよい。例として、及び限定ではなく、このようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子装置規格化協会(Video Electronics Standards Association)(VESA)ローカルバス、及びメザニンバスとしても知られるペリフェラルコンポーネントインターコネクト(PCI)バスが包含される。
コンピュータ710は、一般的に、様々なコンピュータ可読媒体を包含する。コンピュータ可読媒体は、コンピュータ710によってアクセスすることができる任意の入手可能な媒体でよく、及び揮発性及び不揮発性両方の媒体、リムーバブル及び非リムーバブル媒体を包含する。例として、及び限定ではなく、コンピュータ可読媒体は、コンピュータストレージ媒体及び通信媒体を含んでもよい。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報のストレージのための任意の方法又は技術で実施される、揮発性及び不揮発性、リムーバブル及び非リムーバブル媒体を包含する。コンピュータストレージ媒体には、限定されないが、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)又は他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又は他の磁気ストレージデバイス、又は所望の情報を保存するために使用することができ、且つコンピュータ710によってアクセスすることができるその他の媒体が包含される。通信媒体は、一般的に、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを搬送波又は他のトランスポート機構などの変調データ信号で具現化し、及びあらゆる情報配信媒体を包含する。「変調データ信号」という用語は、それの特性集合の1つ又は複数を有する、又は信号の情報をエンコードするように変更された信号を意味する。例として、及び限定ではなく、通信媒体には、有線ネットワーク又は直接有線接続などの有線媒体、及び音響、RF、赤外線、及び他の無線媒体などの無線媒体が包含される。上記の何れかの組み合わせも、コンピュータ可読媒体の範囲内に包含されるものとする。
システムメモリ730は、読み出し専用メモリ(ROM)731及びランダムアクセスメモリ(RAM)732などの揮発性及び/又は不揮発性メモリの形態のコンピュータストレージ媒体を包含する。起動時などに、コンピュータ710内の素子間で情報を転送することを助ける基本ルーチンを含有した、基本入出力システム733(BIOS)は、一般的に、ROM731内に保存される。RAM732は、一般的に、即座に利用できる、及び/又は処理装置720によって現在操作されているデータ及び/又はプログラムモジュールを含有する。例として、及び限定ではなく、図7は、オペレーティングシステム734、アプリケーションプログラム735、他のプログラムモジュール736、及びプログラムデータ737を図示する。
コンピュータ710は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータストレージ媒体も包含することができる。単なる例として、図7は、非リムーバブル、不揮発性磁気媒体に対する読み取り又は書き込みを行うハードディスクドライブ741、フラッシュメモリなどのリムーバブル、不揮発性メモリ752に対する読み取り又は書き込みを行うフラッシュドライブ751、及びCD−ROM又は他の光学媒体などのリムーバブル、不揮発性光ディスク756に対する読み取り又は書き込みを行う光ディスクドライブ755を図示する。例示的動作環境において使用することができる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータストレージ媒体には、限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体RAM、固体ROMなどが包含される。ハードディスクドライブ741は、一般的に、インタフェース740などの非リムーバブルメモリインタフェースを通してシステムバス721に接続され、及び磁気ディスクドライブ751及び光ディスクドライブ755は、一般的に、インタフェース750などのリムーバブルメモリインタフェースによってシステムバス721に接続される。
上述した、及び図7に図示したドライブ及びそれらに関連付けられたコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータ710の他のデータのストレージを提供する。図7においては、例えば、ハードディスクドライブ741は、オペレーティングシステム744、アプリケーションプログラム745、他のプログラムモジュール746、及びプログラムデータ747を保存するものとして図示される。これらのコンポーネントは、オペレーティングシステム734、アプリケーションプログラム735、他のプログラムモジュール736、及びプログラムデータ737と同じであってもよいし、あるいは異なっていてもよいことに留意されたい。オペレーティングシステム744、アプリケーションプログラム745、他のプログラムモジュール746、及びプログラムデータ747は、少なくとも、それらが異なるコピーであることを図示するために、ここでは、異なる番号が付与されている。ユーザは、キーボード762及び一般にマウス、トラックボール、又はタッチパッドと呼ばれるポインティングデバイス761などの入力デバイスによって、コンピュータ710にコマンド及び情報を入力することができる。他の入力デバイス(不図示)には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが包含され得る。これら及び他の入力デバイスは、システムバスに結合されたユーザ入力インタフェース760によって、処理装置720に接続されることが多いが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス(USB)などの他のインタフェース及びバス構造によって接続されてもよい。モニタ791又は他のタイプのディスプレイデバイスも、ビデオインタフェース790などのインタフェースを介して、システムバス721に接続される。モニタに加えて、コンピュータは、出力周辺インタフェース795を通して接続することができる、スピーカ797及びプリンタ796などの他の周辺出力デバイスも包含することができる。
コンピュータ710は、リモートコンピュータ780などの1つ又は複数のリモートコンピュータへの論理接続を用いたネットワーク化環境で動作することができる。リモートコンピュータ780は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、又は他の共通ネットワークノードでもよく、及び一般的に、図7ではメモリストレージデバイス781のみが図示されているが、コンピュータ710に関連して上記した素子の多く又は全てを包含する。図7に描かれる論理接続は、ローカルエリアネットワーク(LAN)771及び広域ネットワーク(WAN)773を包含するが、他のネットワークも包含してもよい。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、及びインターネットにおいて、ありふれたものである。
LANネットワーキング環境で使用される場合、コンピュータ710は、ネットワークインタフェース又はアダプタ770を通してLAN771に接続される。WANネットワーキング環境で使用される場合、コンピュータ710は、一般的に、モデム772、又はインターネットなどのWAN773上で通信を確立するための他の手段を包含する。内部又は外部のものでもよいモデム772は、ユーザ入力インタフェース760又は他の適宜の機構を介して、システムバス721に接続されてもよい。ネットワーク化環境において、コンピュータ710に関連して描かれたプログラムモジュール、又はそれらの一部は、リモートメモリストレージデバイスに保存されてもよい。例として、及び限定ではなく、図7は、メモリデバイス781に常駐しているとして、リモートアプリケーションプログラム785を図示する。示されるネットワーク接続は、例示的なものであり、及びコンピュータ間で通信リンクを確立する他の手段が使用されてもよいことが理解されるだろう。
本発明の少なくとも1つの実施形態の幾つかの態様を上記のように記載したが、様々な変更、修正、及び改良が、当業者には容易に思い付くことが理解されるものとする。
このような変更、修正、及び改良は、本開示の一部であることが意図され、及び本発明の精神及び範囲内であることが意図される。さらに、本発明の利点が示されるが、本明細書に記載の技術の全ての実施形態が、全ての記載した利点を包含するわけではないことが理解されるものとする。幾つかの実施形態は、本明細書において有利であると記載された何れの特徴も実施しない場合があり、場合によっては、記載された特徴の1つ又は複数が、さらなる実施形態を得るために実施されてもよい。従って、上記の記載及び図面は、単なる例である。
本明細書に記載の技術の上記実施形態は、多数のやり方の何れで実施されてもよい。例えば、これらの実施形態は、ハードウェア、ソフトウェア、又はそれらの組み合わせを用いて実施されてもよい。ソフトウェアで実施される場合には、ソフトウェアコードは、単一のコンピュータにおいて提供されていようと、複数のコンピュータ間で分散されていようと、任意の適宜のプロセッサ又は一群のプロセッサ上で実行することができる。このようなプロセッサは、集積回路として実施されてもよく、業界において、CPUチップ、GPUチップ、マイクロプロセッサ、マイクロコントローラ、又はコプロセッサなどの名称で知られている市販の集積回路コンポーネントを包含する集積回路コンポーネントにおいて、1つ又は複数のプロセッサを有する。代替的に、プロセッサは、ASICなどのカスタム回路、又はプログラマブル論理デバイスの構成に起因するセミカスタム回路において実施されてもよい。又さらなる代替手段として、プロセッサは、市販、セミカスタム、あるいはカスタムであろうと、より大きな回路又は半導体デバイスの一部であってもよい。ある具体例として、幾つかの市販のマイクロプロセッサは、複数のコアの1つ又はサブセットがプロセッサを構成することができるように、複数のコアを有する。しかし、プロセッサは、任意の適宜のフォーマットの回路を使用して実施することができる。
さらに、コンピュータは、ラックマウント式コンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、又はタブレットコンピュータなどの多数の形態の何れかで具現化されてもよいことが理解されるものとする。追加的に、コンピュータは、携帯情報端末(PDA)、スマートフォン、又は任意のその他の適宜のポータブル又は固定電子デバイスを包含する、一般にコンピュータとは見なされないが、適宜の処理能力を備えたデバイスに組み込まれてもよい。
又、コンピュータは、1つ又は複数の入力デバイス及び出力デバイスを有していてもよい。これらのデバイスは、特に、ユーザインタフェースを提示するために使用することができる。ユーザインタフェースを提供するために使用することができる出力デバイスの例には、出力の視覚的表現のためのプリンタ又はディスプレイスクリーン、及び出力の可聴表現のためのスピーカ又は他の音生成デバイスが包含される。ユーザインタフェースに使用することができる入力デバイスの例には、キーボード、並びにマウス、タッチパッド、及びデジタイザタブレットなどのポインティングデバイスが包含される。別の例として、コンピュータは、音声認識により、又は他の可聴フォーマットで入力情報を受信してもよい。
このようなコンピュータは、企業ネットワーク又はインターネットなどのローカルエリアネットワーク又は広域ネットワークとして包含する、任意の適宜の形態の1つ又は複数のネットワークによって相互接続することができる。このようなネットワークは、任意の適宜の技術に基づいてもよく、及び任意の適宜のプロトコルに従って動作してもよく、及び無線ネットワーク、有線ネットワーク、又は光ファイバネットワークを包含してもよい。
又、本明細書に概要が述べられる様々な方法又はプロセスは、様々なオペレーティングシステム又はプラットフォームの何れか1つを用いる1つ又は複数のプロセッサに対して実行可能なソフトウェアとして符号化されてもよい。追加的に、このようなソフトウェアは、多数の適宜のプログラミング言語及び/又はプログラミング又はスクリプト作成ツールの何れかを使用して書かれてもよく、及びフレームワーク又は仮想マシンに対して実行される実行可能マシン語コード又は中間コードとしてコンパイルされてもよい。
この点において、本発明は、1つ又は複数のコンピュータ又は他のプロセッサに対して実行されると、上述の本発明の様々な実施形態を実施する方法を行う1つ又は複数のプログラムでエンコードされたコンピュータ可読ストレージ媒体(又は複数のコンピュータ可読媒体)(例えば、コンピュータメモリ、1つ又は複数のフロッピーディスク、コンパクトディスク(CD)、光ディスク、デジタルビデオディスク(DVD)、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイ又は他の半導体デバイスにおける回路構成、又は他の有形コンピュータストレージ媒体)として具現化されてもよい。上記の例から明らかなように、コンピュータ可読ストレージ媒体は、非一時的な形態でコンピュータ実行可能命令を提供するのに十分な時間の間、情報を保持することができる。このような1つ又は複数のコンピュータ可読ストレージ媒体は、それ(ら)に保存された1つ又は複数のプログラムを、上述のような本発明の様々な態様を実施するために、1つ又は複数の異なるコンピュータ又は他のプロセッサにロードすることができるように、可搬であってもよい。本明細書においては、「コンピュータ可読ストレージ媒体」という用語は、製品(すなわち、製造物)又はマシンであると見なすことができる非一時的コンピュータ可読媒体のみを網羅する。代替的又は追加的に、本発明は、伝搬信号などの、コンピュータ可読ストレージ媒体以外のコンピュータ可読媒体として具現化されてもよい。
「プログラム」又は「ソフトウェア」という用語は、本明細書では、上述のような本発明の様々な態様を実施するようにコンピュータ又は他のプロセッサをプログラムするために使用することができる、あらゆるタイプのコンピュータコード又はコンピュータ実行可能命令のセットを指すために総称的に使用される。追加的に、本実施形態のある態様によれば、実行されると、本発明の方法を行う1つ又は複数のコンピュータプログラムは、単一のコンピュータ又はプロセッサに常駐する必要はなく、本発明の様々な態様を実施するために、多数の異なるコンピュータ又はプロセッサ間で、モジュラー方式で分散されてもよいことが理解されるものとする。
コンピュータ実行可能命令は、1つ又は複数のコンピュータ又は他のデバイスによって実行される、プログラムモジュールなどの多くの形態のものでもよい。一般に、プログラムモジュールには、特定のタスクを行う、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが包含される。一般的に、プログラムモジュールの機能性は、様々な実施形態において、要望通りに組み合わせられてもよいし、あるいは分散されてもよい。
又、データ構造は、任意の適宜の形態でコンピュータ可読媒体に保存されてもよい。図示を簡単にするために、データ構造は、データ構造内の場所によって関連したフィールドを有して示される場合がある。このような関係は、同様に、フィールドのストレージにフィールド間の関係を伝達するコンピュータ可読媒体内の場所を割り当てることによって、達成することができる。但し、ポインタ、タグ、又はデータ要素間の関係を確立する他の機構の使用によることを包含する、任意の適宜の機構を使用して、データ構造のフィールドにおける情報間の関係を確立してもよい。
本発明の様々な態様は、単独で、組み合わせて、又は上記に記載した実施形態において具体的に述べられていない様々な配置で使用されてもよく、従って、その適用において、上記の説明に記載された、又は図面に図示されたコンポーネントの詳細及び配置に限定されない。例えば、ある実施形態に記載した態様は、任意の様式で、他の実施形態に記載した態様と組み合わせることができる。
又、本発明は、一例を提供した方法として具現化されてもよい。この方法の一部として行われるアクトは、任意の適宜のやり方で、順序付けが行われてもよい。従って、アクトが、図示されたものとは異なる順序で(これは、説明のための実施形態では、逐次的なアクトとして示されたとしても、幾つかのアクトを同時に行うことを包含してもよい)行われる実施形態が構築されてもよい。
さらに、幾つかの行為は、「ユーザ」によって行われると記載される。「ユーザ」は、一人の個人である必要はなく、及び幾つかの実施形態では、「ユーザ」に帰する行為は、複数の個人から成るチーム及び/又はコンピュータ支援ツール又は他の機構と組み合わせた個人によって行われてもよいことが理解されるものとする。
クレーム要素を修飾する、クレームにおける「第1の」、「第2の」、「第3の」などの序数用語の使用は、それ自体は、1つのクレーム要素の別のクレーム要素に対する優先、先行、又は順序、又は方法のアクトが行われる時間的順序を暗示せず、ある名称を有する1つのクレーム要素を、同じ名称(序数用語の使用を除き)を有する別の要素と区別するための単なるラベルとして使用することにより、これらのクレーム要素が区別される。
又、本明細書において使用される表現及び用語は、説明目的のものであり、及び限定として見なされるものではない。本明細書における、「包含する(including)」、「含む(comprising)」、又は「有する(having)」、「含有する(containing)」、「関与する(involving)」、及びそれらのバリエーションの使用は、その後にリストされるアイテム及びそれらの均等物、並びに追加のアイテムを網羅することを意味する。

Claims (45)

  1. 少なくとも1つのコンピュータハードウェアプロセッサと、
    前記少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、
    データフローグラフを指定する情報を取得することであって、前記データフローグラフが、複数のノード、及び前記複数ノードを接続する複数のエッジを含み、前記複数のエッジが、前記複数のノードにおけるノード間のデータのフローを表し、前記複数のノードが、
    1つ又は複数のノードの第1のセットであって、前記ノードの第1のセットにおける各ノードが、1つ又は複数の入力データセットのセットにおけるそれぞれの入力データセットを表す、1つ又は複数のノードの第1のセットと、
    1つ又は複数のノードの第2のセットであって、前記ノードの第2のセットにおける各ノードが、1つ又は複数の出力データセットのセットにおけるそれぞれの出力データセットを表す、1つ又は複数のノードの第2のセットと、
    1つ又は複数のノードの第3のセットであって、前記ノードの第3のセットにおける各ノードが、少なくとも1つの、それぞれのデータ処理動作を表す、1つ又は複数のノードの第3のセットと、
    を含むことと、
    前記入力データセットのセットに関する1つ又は複数の処理レイアウトの第1のセットを取得することと、
    前記出力データセットのセットに関する1つ又は複数の処理レイアウトの第2のセットを取得することと、
    前記処理レイアウトの第1のセット、前記処理レイアウトの第2のセット、及び異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含する1つ又は複数のレイアウト決定ルールに基づいて、前記ノードの第3のセットにおける各ノードの処理レイアウトを決定することと、
    を前記少なくとも1つのコンピュータハードウェアプロセッサに行わせるプロセッサ実行可能命令を保存する、少なくとも1つの非一時的コンピュータ可読ストレージ媒体と、
    を含む、データ処理システム。
  2. 前記入力データセットのセットが、第1の入力データセットと、第2の入力データセットとを包含し、前記ノードの第1のセットが、前記第1の入力データセットと関連付けられた第1のノードと、前記第2の入力データセットと関連付けられた第2のノードとを包含し、及び前記1つ又は複数の処理レイアウトの第1のセットを取得することが、
    前記第1の入力データセットからデータを読み取るための第1の処理レイアウトを取得することであって、前記第1のレイアウトが、少なくとも部分的に、第1の度合いの並列性を指定することと、
    前記第2の入力データセットからデータを読み取るための第2の処理レイアウトを取得することであって、前記第2の処理レイアウトが、前記少なくとも部分的に指定された第1の度合いの並列性とは異なる第2の度合いの並列性を少なくとも部分的に指定することと、
    を含む、請求項1に記載のデータ処理システム。
  3. 前記ノードの第1のセットが、前記入力データセットのセットにおける第1の入力データセットと関連付けられた第1のノードを包含し、
    前記ノードの第2のセットが、前記出力データセットのセットにおける第1の出力データセットと関連付けられた第2のノードを包含し、
    前記1つ又は複数の処理レイアウトの第1のセットを取得することが、前記第1の入力データセットからデータを読み取るための第1の処理レイアウトを取得することを含み、前記第1の処理レイアウトが、少なくとも部分的に、第1の度合いの並列性を指定し、及び
    前記1つ又は複数の処理レイアウトの第2のセットを取得することが、前記第1の出力データセットにデータを書き込むための第2の処理レイアウトを取得することを含み、前記第2の処理レイアウトが、前記少なくとも部分的に指定された第1の度合いの並列性とは異なる第2の度合いの並列性を少なくとも部分的に指定する、請求項1又は2に記載のデータ処理システム。
  4. 前記出力データセットのセットが、第1の出力データセットと、第2の出力データセットとを包含し、前記ノードの第2のセットが、前記第1の出力データセットと関連付けられた第1のノードと、前記第2の出力データセットと関連付けられた第2のノードとを包含し、及び前記1つ又は複数の処理レイアウトの第1のセットを取得することが、
    前記第1の出力データセットにデータを書き込むための第1の処理レイアウトを取得することであって、前記第1のレイアウトが、少なくとも部分的に、第1の度合いの並列性を指定することと、
    前記第2の出力データセットにデータを書き込むための第2の処理レイアウトを取得することであって、前記第2の処理レイアウトが、前記少なくとも部分的に指定された第1の度合いの並列性とは異なる第2の度合いの並列性を少なくとも部分的に指定することと、
    を含む、請求項1又は2〜3のいずれか一項に記載のデータ処理システム。
  5. 前記ノードの第3のセットにおける各ノードの処理レイアウトを決定することが、
    前記データフローグラフの構造に従って、及び前記処理レイアウトの第1のセット及び前記1つ又は複数のレイアウト決定ルールを使用して、前記ノードの第1のセットにおけるノードから開始して行われる順方向パスで、前記第3のセットノードにおける1つ又は複数のノードの初期処理レイアウトを決定することと、
    前記データフローグラフの構造に従って、及び前記処理レイアウトの第2のセット及び前記1つ又は複数のレイアウト決定ルールを使用して、前記ノードの第2のセットにおけるノードから開始して行われる逆方向パスで、前記ノードの第3のセットにおける各ノードの最終処理レイアウトを決定することと、
    を含む、請求項1又は2〜4のいずれか一項に記載のデータ処理システム。
  6. 前記ノードの第3のセットが、第1のノードを含み、前記複数のエッジが、前記第1のノードと、前記データフローグラフにおける前記第1のノードに先行する第2のノードとの間に第1のエッジを含み、及び前記ノードの第3のセットにおける各ノードの前記初期処理レイアウトを決定することが、
    前記第2のノードに関して決定された処理レイアウトに基づいて、前記第1のノードの第1の初期処理レイアウトを決定することを含む、請求項1又は2〜5のいずれか一項に記載のデータ処理システム。
  7. 前記複数のエッジが、前記第1のノードと、前記データフローグラフにおいて前記第1のノードに先行する第3のノードとの間に第2のエッジを含み、第3の初期処理レイアウトが、前記第3のノードに関連付けられ、及び前記第1のノードの前記第1の初期処理レイアウトを決定することが、
    前記第2及び第3の処理レイアウトの一方を前記第1の処理レイアウトとして選択することを含む、請求項6又は1〜5のいずれか一項に記載のデータ処理システム。
  8. 前記第2の初期処理レイアウトが、第1の度合いの並列性を指定し、前記第3の初期処理レイアウトが、前記第1の度合いの並列性とは異なる第2の度合いの並列性を指定し、及び前記選択が、
    前記第1の度合いの並列性が、前記第2の度合いの並列性よりも大きい場合に、前記第2の処理レイアウトを選択することと、
    前記第1の度合いの並列性が、前記第2の度合いの並列性よりも小さい場合に、前記第3の処理レイアウトを選択することと、
    を含む、請求項7又は1〜6のいずれか一項に記載の処理システム。
  9. 前記第2の初期処理レイアウト及び前記第3の初期処理レイアウトのそれぞれが、同じ度合いの並列性を指定し、前記第1のエッジが、第1の数のデータレコードのデータフローを表し、前記第2のエッジが、第2の数のデータレコードのデータフローを表し、及び前記選択が、
    前記第1の数のデータレコードが、前記第2の数のデータレコードよりも多い場合に、前記第2の処理レイアウトを選択することと、
    前記第1の数のデータレコードが、前記第2の数のデータレコードよりも少ない場合に、前記第3の処理レイアウトを選択することと、
    を含む、請求項7又は1〜6又は8のいずれか一項に記載のデータ処理システム。
  10. 前記決定中に、第1の処理レイアウトが、ノードの第3のセットにおける第1のノードに関して決定され、前記第1の処理レイアウトが、第1の度合いの並列性を指定し、
    前記グラフにおける前記第1のノードの直前の第2のノードに関する第2の処理レイアウトが、前記第1の度合いの並列性とは異なる第2の度合いの並列性を指定し、及び
    前記プロセッサ実行可能命令がさらに、少なくとも1つの再パーティショニング動作を行うように前記データフローグラフの少なくとも1つのノードを構成することを前記少なくとも1つのコンピュータハードウェアプロセッサに行わせる、請求項1又は2〜9のいずれか一項に記載のデータ処理システム。
  11. 前記決定中に、第1の処理レイアウトが、ノードの第3のセットにおける第1のノードに関して決定され、前記第1の処理レイアウトが、第1の度合いの並列性を指定し、
    前記グラフにおける前記第1のノードの直前の第2のノードに関する第2の処理レイアウトが、前記第1の度合いの並列性とは異なる第2の度合いの並列性を指定し、及び
    前記プロセッサ実行可能命令がさらに、前記データフローグラフに対して、前記第1のノードと前記第2のノードとの間に新しいノードを追加することを前記少なくとも1つのコンピュータハードウェアプロセッサに行わせ、前記新しいノードが、少なくとも1つの再パーティショニング動作を表す、請求項1又は2〜10のいずれか一項に記載のデータ処理システム。
  12. 前記少なくとも1つの再パーティショニング動作に関連付けられた前記新しいノードを追加することが、集約動作、マージ動作、又はパーティション動作に関連付けられたノードを追加することを含む、請求項10又は1〜9、11のいずれか一項に記載のデータ処理システム。
  13. 前記決定が、前記ノードの第3のセットにおける第1のノードに関する第1の処理レイアウトを決定することを含み、前記第1のノードが、第1のデータ処理動作を表し、及び前記第1の処理レイアウトを決定することが、
    前記第1のデータ処理動作を行うための並列性の度合いを決定することと、
    前記決定された並列性の度合いに従って、前記第1のデータ処理動作を行うための1つ又は複数のコンピューティングデバイスのセットを識別することと、
    を含む、請求項1又は2〜12のいずれか一項に記載のデータ処理システム。
  14. 前記第1の処理レイアウトを決定することが、
    単一のプロセッサが前記第1のデータ処理動作を行うために使用されることを決定することと、
    前記第1のデータ処理動作を行うためのコンピューティングデバイスを識別することと、
    を含む、請求項13又は1〜12のいずれか一項に記載のデータ処理システム。
  15. 前記処理レイアウトの決定が、異なる度合いの並列性を有する処理レイアウトの中から選択するための前記少なくとも1つのルールを使用して行われる、請求項1又は2〜14のいずれか一項に記載のデータ処理システム。
  16. 前記プロセッサ実行可能命令が、
    前記データフローグラフにおける各ノードの前記処理レイアウトを決定した後に、前記データフローグラフにおける各ノードに関して決定された処理レイアウトに従って、前記データフローグラフを実行することを前記少なくとも1つのコンピュータハードウェアプロセッサに行わせる、請求項1又は2〜15のいずれか一項に記載のデータ処理システム。
  17. 前記プロセッサ実行可能命令が、
    構造化照会言語(SQL)クエリーを受信することと、
    前記SQLクエリーからクエリープランを生成することと、
    前記生成されたクエリープランから前記データフローグラフを生成することと、
    を前記少なくとも1つのコンピュータハードウェアプロセッサに行わせる、請求項1又は2〜16のいずれか一項に記載のデータ処理システム。
  18. 前記少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、
    データフローグラフを指定する情報を取得することであって、前記データフローグラフが、複数のノード、及び前記複数ノードを接続する複数のエッジを含み、前記複数のエッジが、前記複数のノードにおけるノード間のデータのフローを表し、前記複数のノードが、
    1つ又は複数のノードの第1のセットであって、前記ノードの第1のセットにおける各ノードが、1つ又は複数の入力データセットのセットにおけるそれぞれの入力データセットを表す、1つ又は複数のノードの第1のセットと、
    1つ又は複数のノードの第2のセットであって、前記ノードの第2のセットにおける各ノードが、1つ又は複数の出力データセットのセットにおけるそれぞれの出力データセットを表す、1つ又は複数のノードの第2のセットと、
    1つ又は複数のノードの第3のセットであって、前記ノードの第3のセットにおける各ノードが、少なくとも1つの、それぞれのデータ処理動作を表す、1つ又は複数のノードの第3のセットと、
    を含むことと、
    前記入力データセットのセットに関する1つ又は複数の処理レイアウトの第1のセットを取得することと、
    前記出力データセットのセットに関する1つ又は複数の処理レイアウトの第2のセットを取得することと、
    前記処理レイアウトの第1のセット、前記処理レイアウトの第2のセット、及び異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含する1つ又は複数のレイアウト決定ルールに基づいて、前記ノードの第3のセットにおける各ノードの処理レイアウトを決定することと、
    を前記少なくとも1つのコンピュータハードウェアプロセッサに行わせるプロセッサ実行可能命令を保存する、少なくとも1つの非一時的コンピュータ可読ストレージ媒体。
  19. 前記少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、プロセッサ実行可能命令を保存する、少なくとも1つの非一時的コンピュータ可読ストレージ媒体であって、前記プロセッサ実行可能命令が、
    データフローグラフを指定する情報を取得するための手段であって、前記データフローグラフが、複数のノード、及び前記複数ノードを接続する複数のエッジを含み、前記複数のエッジが、前記複数のノードにおけるノード間のデータのフローを表し、前記複数のノードが、
    1つ又は複数のノードの第1のセットであって、前記ノードの第1のセットにおける各ノードが、1つ又は複数の入力データセットのセットにおけるそれぞれの入力データセットを表す、1つ又は複数のノードの第1のセットと、
    1つ又は複数のノードの第2のセットであって、前記ノードの第2のセットにおける各ノードが、1つ又は複数の出力データセットのセットにおけるそれぞれの出力データセットを表す、1つ又は複数のノードの第2のセットと、
    1つ又は複数のノードの第3のセットであって、前記ノードの第3のセットにおける各ノードが、少なくとも1つの、それぞれのデータ処理動作を表す、1つ又は複数のノードの第3のセットと、
    を含む、手段と、
    前記入力データセットのセットに関する1つ又は複数の処理レイアウトの第1のセットを取得するための手段と、
    前記出力データセットのセットに関する1つ又は複数の処理レイアウトの第2のセットを取得するための手段と、
    前記処理レイアウトの第1のセット、前記処理レイアウトの第2のセット、及び異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含する1つ又は複数のレイアウト決定ルールに基づいて、前記ノードの第3のセットにおける各ノードの処理レイアウトを決定するための手段と、
    を含む、少なくとも1つの非一時的コンピュータ可読ストレージ媒体。
  20. 少なくとも1つのコンピュータハードウェアプロセッサを使用して、
    データフローグラフを指定する情報を取得することであって、前記データフローグラフが、複数のノード、及び前記複数ノードを接続する複数のエッジを含み、前記複数のエッジが、前記複数のノードにおけるノード間のデータのフローを表し、前記複数のノードが、
    1つ又は複数のノードの第1のセットであって、前記ノードの第1のセットにおける各ノードが、1つ又は複数の入力データセットのセットにおけるそれぞれの入力データセットを表す、1つ又は複数のノードの第1のセットと、
    1つ又は複数のノードの第2のセットであって、前記ノードの第2のセットにおける各ノードが、1つ又は複数の出力データセットのセットにおけるそれぞれの出力データセットを表す、1つ又は複数のノードの第2のセットと、
    1つ又は複数のノードの第3のセットであって、前記ノードの第3のセットにおける各ノードが、少なくとも1つの、それぞれのデータ処理動作を表す、1つ又は複数のノードの第3のセットと、
    を含むことと、
    前記入力データセットのセットに関する1つ又は複数の処理レイアウトの第1のセットを取得することと、
    前記出力データセットのセットに関する1つ又は複数の処理レイアウトの第2のセットを取得することと、
    前記処理レイアウトの第1のセット、前記処理レイアウトの第2のセット、及び異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含する1つ又は複数のレイアウト決定ルールに基づいて、前記ノードの第3のセットにおける各ノードの処理レイアウトを決定することと、
    を行うことを含む、方法。
  21. 前記入力データセットのセットが、第1の入力データセットと、第2の入力データセットとを包含し、前記ノードの第1のセットが、前記第1の入力データセットと関連付けられた第1のノードと、前記第2の入力データセットと関連付けられた第2のノードとを包含し、及び前記1つ又は複数の処理レイアウトの第1のセットを取得することが、
    前記第1の入力データセットからデータを読み取るための第1の処理レイアウトを取得することであって、前記第1のレイアウトが、少なくとも部分的に、第1の度合いの並列性を指定することと、
    前記第2の入力データセットからデータを読み取るための第2の処理レイアウトを取得することであって、前記第2の処理レイアウトが、前記少なくとも部分的に指定された第1の度合いの並列性とは異なる第2の度合いの並列性を少なくとも部分的に指定することと、
    を含む、請求項20に記載の方法。
  22. 前記ノードの第1のセットが、前記入力データセットのセットにおける第1の入力データセットと関連付けられた第1のノードを包含し、
    前記ノードの第2のセットが、前記出力データセットのセットにおける第1の出力データセットと関連付けられた第2のノードを包含し、
    前記1つ又は複数の処理レイアウトの第1のセットを取得することが、前記第1の入力データセットからデータを読み取るための第1の処理レイアウトを取得することを含み、前記第1の処理レイアウトが、少なくとも部分的に、第1の度合いの並列性を指定し、及び
    前記1つ又は複数の処理レイアウトの第2のセットを取得することが、前記第1の出力データセットにデータを書き込むための第2の処理レイアウトを取得することを含み、前記第2の処理レイアウトが、前記少なくとも部分的に指定された第1の度合いの並列性とは異なる第2の度合いの並列性を少なくとも部分的に指定する、請求項20又は21に記載の方法。
  23. 前記出力データセットのセットが、第1の出力データセットと、第2の出力データセットとを包含し、前記ノードの第2のセットが、前記第1の出力データセットと関連付けられた第1のノードと、前記第2の出力データセットと関連付けられた第2のノードとを包含し、及び前記1つ又は複数の処理レイアウトの第1のセットを取得することが、
    前記第1の出力データセットにデータを書き込むための第1の処理レイアウトを取得することであって、前記第1のレイアウトが、少なくとも部分的に、第1の度合いの並列性を指定することと、
    前記第2の出力データセットにデータを書き込むための第2の処理レイアウトを取得することであって、前記第2の処理レイアウトが、前記少なくとも部分的に指定された第1の度合いの並列性とは異なる第2の度合いの並列性を少なくとも部分的に指定することと、
    を含む、請求項20又は21〜22のいずれか一項に記載の方法。
  24. 前記ノードの第3のセットにおける各ノードの処理レイアウトを決定することが、
    前記データフローグラフの構造に従って、及び前記処理レイアウトの第1のセット及び前記1つ又は複数のレイアウト決定ルールを使用して、前記ノードの第1のセットにおけるノードから開始して行われる順方向パスで、前記第3のセットノードにおける1つ又は複数のノードの初期処理レイアウトを決定することと、
    前記データフローグラフの構造に従って、及び前記処理レイアウトの第2のセット及び前記1つ又は複数のレイアウト決定ルールを使用して、前記ノードの第2のセットにおけるノードから開始して行われる逆方向パスで、前記ノードの第3のセットにおける各ノードの最終処理レイアウトを決定することと、
    を含む、請求項20又は21〜23のいずれか一項に記載の方法。
  25. 前記ノードの第3のセットが、第1のノードを含み、前記複数のエッジが、前記第1のノードと、前記データフローグラフにおける前記第1のノードに先行する第2のノードとの間に第1のエッジを含み、及び前記第3のセットノードにおける各ノードの前記初期処理レイアウトを決定することが、
    前記第2のノードに関して決定された処理レイアウトに基づいて、前記第1のノードの第1の初期処理レイアウトを決定することを含む、請求項20又は21〜24のいずれか一項に記載の方法。
  26. 前記複数のエッジが、前記第1のノードと、前記データフローグラフにおいて前記第1のノードに先行する第3のノードとの間に第2のエッジを含み、第3の初期処理レイアウトが、前記第3のノードに関連付けられ、及び前記第1のノードの前記第1の初期処理レイアウトを決定することが、
    前記第2及び第3の処理レイアウトの一方を前記第1の処理レイアウトとして選択することを含む、請求項25又は20〜24のいずれか一項に記載の方法。
  27. 前記第2の初期処理レイアウトが、第1の度合いの並列性を指定し、前記第3の初期処理レイアウトが、前記第1の度合いの並列性とは異なる第2の度合いの並列性を指定し、及び前記選択が、
    前記第1の度合いの並列性が、前記第2の度合いの並列性よりも大きい場合に、前記第2の処理レイアウトを選択することと、
    前記第1の度合いの並列性が、前記第2の度合いの並列性よりも小さい場合に、前記第3の処理レイアウトを選択することと、
    を含む、請求項26又は20〜25のいずれか一項に記載の方法。
  28. 前記第2の初期処理レイアウト及び前記第3の初期処理レイアウトのそれぞれが、同じ度合いの並列性を指定し、前記第1のエッジが、第1の数のデータレコードのデータフローを表し、前記第2のエッジが、第2の数のデータレコードのデータフローを表し、及び前記選択が、
    前記第1の数のデータレコードが、前記第2の数のデータレコードよりも多い場合に、前記第2の処理レイアウトを選択することと、
    前記第1の数のデータレコードが、前記第2の数のデータレコードよりも少ない場合に、前記第3の処理レイアウトを選択することと、
    を含む、請求項26又は20〜25、27のいずれか一項に記載の方法。
  29. 前記決定中に、第1の処理レイアウトが、ノードの第3のセットにおける第1のノードに関して決定され、前記第1の処理レイアウトが、第1の度合いの並列性を指定し、
    前記グラフにおける前記第1のノードの直前の第2のノードに関する第2の処理レイアウトが、前記第1の度合いの並列性とは異なる第2の度合いの並列性を指定し、及び
    前記少なくとも1つのコンピュータハードウェアプロセッサがさらに、少なくとも1つの再パーティショニング動作を行うように前記データフローグラフの少なくとも1つのノードを構成する、請求項20又は21〜28のいずれか一項に記載の方法。
  30. 前記決定中に、第1の処理レイアウトが、ノードの第3のセットにおける第1のノードに関して決定され、前記第1の処理レイアウトが、第1の度合いの並列性を指定し、
    前記グラフにおける前記第1のノードの直前の第2のノードに関する第2の処理レイアウトが、前記第1の度合いの並列性とは異なる第2の度合いの並列性を指定し、及び
    前記少なくとも1つのコンピュータハードウェアプロセッサが、前記データフローグラフに対して、前記第1のノードと前記第2のノードとの間に新しいノードを追加するように構成され、前記新しいノードが、少なくとも1つの再パーティショニング動作を表す、請求項20又は21〜29のいずれか一項に記載の方法。
  31. 前記少なくとも1つの再パーティショニング動作に関連付けられた前記新しいノードを追加することが、集約動作、マージ動作、又はパーティション動作に関連付けられたノードを追加することを含む、請求項30又は20〜29のいずれか一項に記載の方法。
  32. 前記決定が、前記ノードの第3のセットにおける第1のノードに関する第1の処理レイアウトを決定することを含み、前記第1のノードが、第1のデータ処理動作を表し、及び前記第1の処理レイアウトを決定することが、
    前記第1のデータ処理動作を行うための並列性の度合いを決定することと、
    前記決定された並列性の度合いに従って、前記第1のデータ処理動作を行うための1つ又は複数のコンピューティングデバイスのセットを識別することと、
    を含む、請求項20又は21〜31のいずれか一項に記載の方法。
  33. 前記第1の処理レイアウトを決定することが、
    単一のプロセッサが前記第1のデータ処理動作を行うために使用されることを決定することと、
    前記第1のデータ処理動作を行うためのコンピューティングデバイスを識別することと、
    を含む、請求項32又は20〜31のいずれか一項に記載の方法。
  34. 前記処理レイアウトの決定が、異なる度合いの並列性を有する処理レイアウトの中から選択するための前記少なくとも1つのルールを使用して行われる、請求項20又は21〜33のいずれか一項に記載の方法。
  35. 前記データフローグラフにおける各ノードの前記処理レイアウトを決定した後に、前記データフローグラフにおける各ノードに関して決定された処理レイアウトに従って、前記データフローグラフを実行することをさらに含む、請求項20又は21〜34のいずれか一項に記載の方法。
  36. 構造化照会言語(SQL)クエリーを受信することと、
    前記SQLクエリーからクエリープランを生成することと、
    前記生成されたクエリープランから前記データフローグラフを生成することと、
    をさらに含む、請求項20又は21〜35のいずれか一項に記載の方法。
  37. 少なくとも1つのコンピュータハードウェアプロセッサと、
    前記少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、
    データフローグラフを指定する情報を取得することであって、前記データフローグラフが、複数のノード、及び前記複数ノードを接続する複数のエッジを含み、前記複数のエッジが、前記複数のノードにおけるノード間のデータのフローを表し、前記複数のノードが、
    1つ又は複数のノードの第1のセットと、
    前記ノードの第1のセットから独立した、1つ又は複数のノードの第2のセットと、
    を含むことと、
    前記ノードの第1のセットに関する1つ又は複数の処理レイアウトの第1のセットを取得することと、
    前記処理レイアウトの第1のセット、及び異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含する1つ又は複数のレイアウト決定ルールに基づいて、前記ノードの第2のセットにおける各ノードの処理レイアウトを決定することと、
    を前記少なくとも1つのコンピュータハードウェアプロセッサに行わせるプロセッサ実行可能命令を保存する、少なくとも1つの非一時的コンピュータ可読ストレージ媒体と、
    を含む、データ処理システム。
  38. 前記1つ又は複数のノードの第1のセットが、
    1つ又は複数の入力ノードのセットであって、前記入力ノードのセットにおける各ノードが、1つ又は複数の入力データセットのセットにおけるそれぞれの入力データセットを表す、1つ又は複数の入力ノードのセットと、
    1つ又は複数の出力ノードのセットであって、前記出力ノードのセットにおける各ノードが、1つ又は複数の出力データセットのセットにおけるそれぞれの出力データセットを表す、1つ又は複数の出力ノードのセットと、
    を包含し、及び
    前記第1のセット処理レイアウトを取得することが、
    前記入力データセットのセットに関する1つ又は複数の処理レイアウトのセットを取得することと、
    前記出力データセットのセットに関する1つ又は複数の処理レイアウトのセットを取得することと、
    を含む、請求項37に記載のデータ処理システム。
  39. 少なくとも1つのコンピュータハードウェアプロセッサと、
    前記少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、
    前記少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、前記少なくとも1つのコンピュータハードウェアプロセッサにデータベースクエリーを実行させるコンピュータコードを取得することであって、前記コンピュータコードが、
    それぞれの入力データセットを読み込むデータ処理動作をそれぞれが表す1つ又は複数のコンピュータコード部分の第1のセットと、
    それぞれの出力データセットを書き出すデータ処理動作をそれぞれが表す1つ又は複数のコンピュータコード部分の第2のセットと、
    それぞれのデータ処理動作をそれぞれが表す1つ又は複数のコンピュータコード部分の第3のセットと、
    を含むことと、
    前記コード部分の第1のセットにおける1つ又は複数のコード部分に関する1つ又は複数の処理レイアウトの第1のセットを取得することと、
    前記コード部分の第2のセットにおける1つ又は複数のコード部分に関する1つ又は複数の処理レイアウトの第2のセットを取得することと、
    前記処理レイアウトの第1のセット、前記処理レイアウトの第2のセット、及び異なる度合いの並列性を有する処理レイアウトの中から選択するための少なくとも1つのルールを包含する1つ又は複数のレイアウト決定ルールに基づいて、前記コード部分の第3のセットにおける各コード部分の処理レイアウトを決定することと、
    を前記少なくとも1つのコンピュータハードウェアプロセッサに行わせるプロセッサ実行可能命令を保存する、少なくとも1つの非一時的コンピュータ可読ストレージ媒体と、
    を含む、データ処理システム。
  40. 前記決定が、前記コンピュータコードの少なくとも幾つかのコンピュータコード部分の実行順序を少なくとも部分的に示す情報にさらに基づいて行われる、請求項39又は37〜38のいずれか一項に記載のデータ処理システム。
  41. 前記コンピュータコードが、データフローグラフに関連付けられ、
    前記データフローグラフが、複数のノード、及び前記複数ノードを接続する複数のエッジを含み、前記複数のエッジが、前記複数のノードにおけるノード間のデータのフローを表し、及び
    前記コンピュータコードのコンピュータコード部分が、前記データフローグラフにおけるそれぞれのノードと関連付けられる、請求項39に記載のデータ処理システム。
  42. 前記複数のノードが、
    1つ又は複数のノードの第1のセットであって、前記ノードの第1のセットにおける各ノードが、それぞれの入力データセットを表し、前記コンピュータコード部分の第1のセットの各コンピュータコード部分が、前記ノードの第1のセットにおけるそれぞれのノードと関連付けられる、1つ又は複数のノードの第1のセットと、
    1つ又は複数のノードの第2のセットであって、前記ノードの第2のセットにおける各ノードが、それぞれの出力データセットを表し、前記コンピュータコード部分の第2のセットの各コンピュータコード部分が、前記ノードの第2のセットにおけるそれぞれのノードと関連付けられる、1つ又は複数のノードの第2のセットと、
    1つ又は複数のノードの第3のセットであって、前記ノードの第3のセットにおける各ノードが、それぞれのデータ処理動作を表す、1つ又は複数のノードの第3のセットと、
    を含む、請求項41又は37〜40のいずれか一項に記載のデータ処理システム。
  43. 前記処理レイアウトの決定が、異なる度合いの並列性を有する処理レイアウトの中から選択するための前記少なくとも1つのルールを使用して行われる、請求項41又は37〜40、42のいずれか一項に記載のデータ処理システム。
  44. 前記プロセッサ実行可能命令が、
    前記データフローグラフにおける各ノードの前記処理レイアウトを決定した後に、前記データフローグラフにおける各ノードに関して決定された処理レイアウトに従って、前記データフローグラフを実行することを前記少なくとも1つのコンピュータハードウェアプロセッサに行わせる、請求項41又は37〜40、42〜43のいずれか一項に記載のデータ処理システム。
  45. 前記プロセッサ実行可能命令が、
    構造化照会言語(SQL)クエリーを受信することと、
    前記SQLクエリーからクエリープランを生成することと、
    前記クエリープランから前記コンピュータコードを生成することと、
    を前記少なくとも1つのコンピュータハードウェアプロセッサに行わせる、請求項41又は37〜40、42〜44のいずれか一項に記載のデータ処理システム。
JP2019553233A 2017-03-29 2018-03-29 可変レベル並列性を用いたデータ処理動作を行うためのシステム及び方法 Active JP7216654B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762478390P 2017-03-29 2017-03-29
US62/478,390 2017-03-29
PCT/US2018/025144 WO2018183676A1 (en) 2017-03-29 2018-03-29 Systems and methods for performing data processing operations using variable level parallelism

Publications (2)

Publication Number Publication Date
JP2020512643A true JP2020512643A (ja) 2020-04-23
JP7216654B2 JP7216654B2 (ja) 2023-02-01

Family

ID=62063179

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019553233A Active JP7216654B2 (ja) 2017-03-29 2018-03-29 可変レベル並列性を用いたデータ処理動作を行うためのシステム及び方法

Country Status (11)

Country Link
US (2) US10817495B2 (ja)
EP (2) EP3602297B1 (ja)
JP (1) JP7216654B2 (ja)
KR (1) KR102549994B1 (ja)
CN (1) CN110612513B (ja)
AU (1) AU2018243278B2 (ja)
CA (1) CA3058223A1 (ja)
DE (1) DE112018001789T5 (ja)
SG (1) SG11201908969WA (ja)
WO (1) WO2018183676A1 (ja)
ZA (1) ZA201906585B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110612513B (zh) * 2017-03-29 2024-01-30 起元技术有限责任公司 用于使用可变级并行执行数据处理操作的系统和方法
US11188434B2 (en) 2017-12-08 2021-11-30 Ab Initio Technology Llc Systems and methods for monitoring execution of structured query language (SQL) queries
US10990595B2 (en) * 2018-05-18 2021-04-27 Oracle International Corporation Fast distributed graph query engine
CN111209309B (zh) * 2020-01-13 2023-03-10 腾讯科技(深圳)有限公司 数据流图处理结果确定方法、装置、设备及存储介质
US11675785B2 (en) 2020-01-31 2023-06-13 Oracle International Corporation Dynamic asynchronous traversals for distributed graph queries
CN111737371B (zh) * 2020-08-24 2020-11-13 上海飞旗网络技术股份有限公司 可动态预测的数据流量检测分类方法及装置
DE112022000886T5 (de) 2021-01-31 2023-12-21 Ab Initio Technology Llc Datenverarbeitungssystem mit manipulation logischer datensatzgruppen
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
US20230093911A1 (en) * 2021-09-30 2023-03-30 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003529808A (ja) * 1999-01-13 2003-10-07 エービー イニティオ ソフトウェア コーポレーション スクリプト駆動ツールの並列処理アプリケーション
JP2014519080A (ja) * 2011-05-02 2014-08-07 アビニシオ テクノロジー エルエルシー データクエリの管理

Family Cites Families (24)

* 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
JP2003256221A (ja) * 2002-02-28 2003-09-10 Fujitsu Ltd 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
US7249141B2 (en) * 2003-04-30 2007-07-24 Microsoft Corporation Automated layout of relational databases
US7155612B2 (en) 2003-04-30 2006-12-26 International Business Machines Corporation Desktop database data administration tool with row level security
JP5271494B2 (ja) * 2003-06-25 2013-08-21 アビニシオ テクノロジー エルエルシー コンピュータ支援による計算グラフの並列化
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7870556B2 (en) * 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
US20080140622A1 (en) 2006-12-12 2008-06-12 Bestgen Robert J Displaying Explain Data for a SQL Query of a Database
US7979578B2 (en) * 2009-09-02 2011-07-12 International Business Machines Corporation Dynamic and evolutionary placement in an event-driven component-oriented network data processing system
US9665620B2 (en) * 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US9208141B2 (en) 2010-02-05 2015-12-08 Oracle International Corporation Generating and displaying active reports
US8356027B2 (en) * 2010-10-07 2013-01-15 Sap Ag Hybrid query execution plan generation and cost model evaluation
WO2012061109A1 (en) * 2010-10-25 2012-05-10 Ab Initio Technology Llc Managing data set objects in a dataflow graph that represents a computer program
US8195643B2 (en) 2010-10-28 2012-06-05 Sap Ag Database calculation engine
US8838579B2 (en) 2012-04-26 2014-09-16 Sap Ag Data flow graph optimization using adaptive rule chaining
US8856766B2 (en) * 2012-05-11 2014-10-07 International Business Machines Corporation Generating layouts for graphs of data flow applications
US10515118B2 (en) 2013-06-24 2019-12-24 Micro Focus Llc Processing a data flow graph of a hybrid flow
CN103699515B (zh) * 2013-12-27 2017-01-18 中国科学院计算技术研究所 一种fft并行处理装置和方法
CN107111505B (zh) * 2015-01-19 2020-07-14 华为技术有限公司 用于在并行异构系统上执行算法的系统和方法
EP3106982B1 (en) * 2015-06-18 2021-03-10 ARM Limited Determination of branch convergence in a sequence of program instructions
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US9798527B1 (en) 2017-01-06 2017-10-24 Google Inc. Loop and library fusion
CN110612513B (zh) * 2017-03-29 2024-01-30 起元技术有限责任公司 用于使用可变级并行执行数据处理操作的系统和方法
US11188434B2 (en) 2017-12-08 2021-11-30 Ab Initio Technology Llc Systems and methods for monitoring execution of structured query language (SQL) queries

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003529808A (ja) * 1999-01-13 2003-10-07 エービー イニティオ ソフトウェア コーポレーション スクリプト駆動ツールの並列処理アプリケーション
JP2014519080A (ja) * 2011-05-02 2014-08-07 アビニシオ テクノロジー エルエルシー データクエリの管理

Also Published As

Publication number Publication date
AU2023201414A1 (en) 2023-04-06
AU2018243278B2 (en) 2022-12-15
CA3058223A1 (en) 2018-10-04
WO2018183676A1 (en) 2018-10-04
EP3602297B1 (en) 2023-03-22
KR20190131557A (ko) 2019-11-26
SG11201908969WA (en) 2019-10-30
DE112018001789T5 (de) 2019-12-19
CN110612513A (zh) 2019-12-24
JP7216654B2 (ja) 2023-02-01
KR102549994B1 (ko) 2023-06-29
AU2018243278A1 (en) 2019-10-17
ZA201906585B (en) 2024-02-28
EP3602297A1 (en) 2020-02-05
US20180285401A1 (en) 2018-10-04
CN110612513B (zh) 2024-01-30
US20210182263A1 (en) 2021-06-17
EP4198731A1 (en) 2023-06-21
US10817495B2 (en) 2020-10-27

Similar Documents

Publication Publication Date Title
JP7216654B2 (ja) 可変レベル並列性を用いたデータ処理動作を行うためのシステム及び方法
US10379825B2 (en) Automated dependency analyzer for heterogeneously programmed data processing system
US20150006316A1 (en) System and method for parallel search on explicitly represented graphs
CN112805696A (zh) Sql服务器中的多步骤查询执行
JP2021506043A (ja) 構造化照会言語(sql)クエリーの実行をモニタするためのシステム及び方法
AU2023270295A1 (en) Systems and methods for dataflow graph optimization
US20170300461A1 (en) Representation of an Interactive Document as a Graph of Entities
US7222149B2 (en) Ordering decision nodes in distributed decision making
US20230093911A1 (en) Systems and methods for performing data processing operations using variable level parallelism
US12032631B2 (en) Systems and methods for dataflow graph optimization
US20130179896A1 (en) Multi-thread processing of an XML document

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201211

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211109

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220405

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221207

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20221207

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20221216

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20221219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230120

R150 Certificate of patent or registration of utility model

Ref document number: 7216654

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150