JP7090778B2 - 影響分析 - Google Patents

影響分析 Download PDF

Info

Publication number
JP7090778B2
JP7090778B2 JP2021082301A JP2021082301A JP7090778B2 JP 7090778 B2 JP7090778 B2 JP 7090778B2 JP 2021082301 A JP2021082301 A JP 2021082301A JP 2021082301 A JP2021082301 A JP 2021082301A JP 7090778 B2 JP7090778 B2 JP 7090778B2
Authority
JP
Japan
Prior art keywords
data
components
graph
information
impact
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
JP2021082301A
Other languages
English (en)
Other versions
JP2021144719A (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 JP2021144719A publication Critical patent/JP2021144719A/ja
Application granted granted Critical
Publication of JP7090778B2 publication Critical patent/JP7090778B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • 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/2452Query translation
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Description

背景
この説明はシステム分析に関する。
大量のデータを処理するためにコンピュータが使用される。一般に、データは、少なくとも部分的にコンピュータプログラマにより記述されるコンピュータプログラムを使用して処理される。これらのデータ処理システムは複雑であり得る。
ビジネス及び技術での要件により、プログラムの変更が必要になり得る。変更を実施するには、変更を行う人員を割り振る必要がある。
概要
一般的な態様1において、方法は、少なくとも2つの論理データセットについての情報を受信する動作を含み、論理データセット情報は、各論理データセットについて、その論理データセット内の少なくとも1つのフィールドの識別子と、そのフィールドについてのフォーマット情報とを識別する。本方法は、変換についての情報を受信する動作を含み、その情報は、変換がデータを受信する第1の論理データセットと、変換データが提供される第2の論理データセットとを識別する。本方法は、論理データセットのフィールドの少なくとも1つへの1つ又は複数の提案される変更を受信する動作を含む。本方法は、変換についての情報と、第1の論理データセット及び第2の論理データセットについての情報とに基づいて、1つ又は複数の提案される変更を分析する動作を含む。本方法は、分析に基づいて、提案される変更の1つ又は複数のメトリックを計算する動作を含む。本方法は、1つ又は複数のメトリックについての情報を記憶する動作を含む。
この態様の他の実施形態は、本方法の動作を実行するようにそれぞれ構成される対応するコンピュータシステム、装置、及び1つ又は複数のコンピュータ記憶デバイスに記録されるコンピュータプログラムを含む。1つ又は複数のコンピュータのシステムは、動作に当たり、システムに動作を実行させる、システムにインストールされたソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せにより特定の動作を実行するように構成することができる。1つ又は複数のコンピュータプログラムは、データ処理装置により実行されると、装置に動作を実行させる命令を含むことにより特定の動作を実行するように構成することができる。
本方法は、態様1による態様2を含み、態様2では、計算されるメトリックは、直接影響の尺度を提供する。本方法は、態様1又は2による態様3を含み、態様3では、計算されるメトリックは、間接影響の尺度を提供する。本方法は、態様1、2、又は3による態様4を含み、態様4では、提案される変更は、データセット内のフィールドのフォーマットの変更又は変換の変更からなる群の1つである。本方法は、態様1、2、3、又は4による態様5を含み、態様5では、変換は、第1の論理データセットからのデータに適用される1つ又は複数のルールを含み、1つ又は複数の提案される変更を分析することは、1つ又は複数のルールに更に基づく。本方法は、態様1、2、3、4、又は5による態様6を含み、態様6では、本方法は、この態様の他の実施形態の動作を更に含み、メトリックに基づいてコストを提案される変更に関連付けることを含む。
態様は、以下の利点の1つ又は複数を含むことができる。変更を行うスコア及びコストが推定され得る。変更がプログラムに影響するロケーションが識別され得る。リソースが適宜割り振られ得る。
本発明の他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかになる。
複数の実行可能プログラムのデータ系譜の例を示す。 ルールセット例及びルールセットへの入力を示す。 例としての人間可読ルールセット300を示す。 ルールを人間可読形態から機械可読コードを含む変換に変換できるようにするプロセスを示す。 注釈付きコードに基づいてリポートを生成するリポート生成器を示す。 影響分析技法を使用することができるデータ処理システムの例を示す。 例示的な影響分析手順のフローチャートである。 主要素の相互関係を示す本発明の一実施形態のブロック図である。 データフローグラフのブロック図である。 ロールアップコンポーネントと、指定されたランタイムパラメータを有するソートコンポーネント904とを有する典型的なグラフのブロック図である。 グラフに関連付けられるランタイムパラメータグリッドを表すグラフィカルダイアログの一実施形態の図である。 ランタイムパラメータを使用するプロセスを要約したフローチャートである。 キープロンプトにより生成されるグラフィカルダイアログの一実施形態の図である。 フィルタプロンプトにより生成されるグラフィカルダイアログの一実施形態の図である。 ロールアッププロンプトにより生成されるグラフィカルダイアログの一実施形態の図である。 リフォーマットプロンプトにより生成されるグラフィカルダイアログの一実施形態の図である。 統合結合(MergeJoin)コンポーネントが、ファイルA及びBからのデータを結合し、結果を出力ファイルに出力する第1のグラフのブロック図である。 ロールアップコンポーネントが、ファイルAからのデータを集計し、結果を出力ファイルに出力する第2のグラフのブロック図である。 統合結合コンポーネントが、ファイルA及びBからのデータを結合し、ロールアップコンポーネントが、結果データを集計し、最終結果を出力ファイルに出力するグラフのブロック図である。 条件-解釈制御を有する条件を提示するグラフィカルダイアログの一実施形態の図である。 汚染が生じる状況を示すグラフの図である。 完全に削除条件コンポーネントを含むグラフのランタイム準備プロセスを要約したフローチャートである。 本発明の特定の実施形態でのフローにおいて置換条件コンポーネントを含むグラフのランタイム準備プロセスを要約したフローチャートである。 ランタイムパラメータなしのロールアップアプリケーションを表すグラフの図である。 図21のロールアップアプリケーションのランタイムパラメータ化バージョンを表すグラフの図である。 図22のアプリケーション例のランタイムパラメータグリッドを表すグラフィカルダイアログの一実施形態の図である。 図23のパラメータグリッド内の情報からウェブインタフェースにより生成される形態を表すグラフィカルダイアログの一実施形態の図である。 ユーザによりパラメータ値で埋められた図24Aの形態の図である。 ランタイムパラメータ化ロールアップ及び結合アプリケーションを表すグラフの図である。 図25のアプリケーション例でのランタイムパラメータグリッドを表すグラフィカルダイアログの一実施形態の図である。 図26のパラメータグリッド内の情報からウェブインタフェースにより生成される形態を表すグラフィカルダイアログの一実施形態の図である。 ランタイムパラメータ化ロールアップ-結合-ソートアプリケーションを表すグラフの図である。 図28に示されるアプリケーション例でのランタイムパラメータグリッドを表すグラフィカルダイアログの一実施形態の図である。 メタデータが伝搬するグラフの図である。 図30Aのグラフでのコンポーネントのサブグラフの図である。 メタデータ伝搬プロセスのフローチャートである。 コンポーネント内依存性及びコンポーネント間依存性を有するパラメータを有するグラフである。 図32Aのグラフのパラメータ間の依存性を表す依存性グラフである。 図32Aのグラフのパラメータ間の依存性を表す依存性グラフである。 変更トポロジソートプロセスの図である。 従来技術による給与システムの簡略サンプル例を通したデータフローを示すグラフである。 本発明による図34Aのグラフに対応するグラフである。 本発明によるドライバプログラムのブロック図である。 本発明によるグラフを実行する方法の流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 図36に示される方法のステップの流れ図である。 本発明によるソースアダプタを挿入するステップを示す流れ図である。 説明のためのグラフのブロック図である。 本発明によるソースアダプタの挿入を示す。 本発明が適用されるグラフ例の第1のフェーズである。 本発明が適用されるグラフ例の第2のフェーズである。 本発明が適用されるグラフ例の第2のフェーズである。 本発明が適用されるグラフ例の第3のフェーズである。 本発明が適用されるグラフ例の第4のフェーズである。 本発明が適用されるグラフ例の第5のフェーズである。 本発明が適用されるグラフ例の第6のフェーズである。
説明
一般に、データ処理システムは、データをソースから読み出し、データに対して演算を実行して、新しいデータを生成し、新しいデータをデータストアに記憶することができる。データ処理システムの複雑性は、わずか複雑なものから極めて複雑なものにまで及ぶ。より複雑なシステムでは、データ処理システムに対して行われる変更は、特定が難しいことがある広範囲に及ぶ影響を有し得る。システムに変更を行うことの影響を特定するために、変更により直接影響を受けるシステムの部分と、変更により間接的に影響を受けるシステムの部分とを特定することが有用である。一般に、変更により直接影響を受けるシステムの部分は、個人がシステムを手動で調整する必要があり得る。例えば、プログラマは、アプリケーションの内容及び挙動を変更する必要があり得る。一般に、変更により間接的に影響を受けるシステムの部分では、プログラマが行った変更がアプリケーションの挙動に悪影響を及ぼさないことを保証するために、それらの部分をテストする必要があり得る。
変更の範囲を特定するために、システムを分析して、データがシステムを通ってどのように流れるかを特定する。システムは、システムが使用するデータへの変更又はそのデータの処理への変更が、システムの他の部分にどのように影響し得るかを特定するためにも分析される。
図1は、複数のコンポーネントのデータ系譜100の例を示す。コンポーネントは、論理データセット及び変換を含むことができる。変換は、例えば、データフローグラフ、javaプログラム、コンパイルされた実行可能プログラム、又はそれらの任意の組合せとすることができる。一般に、変換は、入力データを受け入れることができ、出力データを生成することができる。例えば、グラフ1 104は、論理データセット1 102及び論理データセット2 103から入力データを受け入れ、論理データセット2に提供される出力データを生成する。
一般に、論理データセットは、データを記憶する1つ又は複数の物理データセットを表す。物理データセットは、日毎に変化し得る一意のデータを含み得る。幾つかの実装形態では、異なるデータを有する物理データセットは、別個のファイルに記憶され得る。例えば、11月8日の外国為替レートデータのデータセットは、ファイル「ExchangeRate_11_08」に記憶し得、11月9日の外国為替レートデータのデータセットは、ファイル「ExchangeRate_11_09」に記憶し得るが、11月8日の為替レートデータのデータセット及び11月9日の為替レートデータのデータセットは両方とも、共通する要素を有する。例えば、両データセットとも、共通のデータフォーマットを共有する。論理データセットは、それらのデータセットの具体的な内容から独立して、物理データセットに対して演算を実行するプログラム又は一連のプログラムを構築できるようにする。
一般に、論理データセットについての情報は、データセットに記憶されているデータに伴って変わらないデータセットに起因する情報を含む。例えば、論理データセットについての情報は、フィールド名、データ型、レコードフォーマット、制約、及び他の特徴を含み得る。論理データセットは、データソース及びデータシンクとして分類することができる。単一の論理データセットは、ある変換のデータシンク及び別の変換のデータソースであることができる。論理データセットの対応する物理データセットは、例えば、(場所のなかでも特に)関係データベース内のテーブル又はファイルシステム上のファイルであることができる。データソースは、論理データセットに記憶されているデータレコードを読み出すことができ、インメモリデータレコードを作成することができる。コンポーネントは、データソースにより作成されたインメモリデータレコードを受け入れ、データを変更又は変換する。データ値は変更又は変換することができる。新しいデータレコードを作成することができる。データシンクは、データフローグラフからの出口点を提供することができ、出力レコードを記憶することができる。データソースのように、データシンクは、例えば、関係データベーステーブル又はファイルシステムに記憶されたファイルにアクセスすることができる。コンポーネントは、コンピュータ又は他のタイプのコンピュータデバイスで実行することができる。他の実装形態では、データフローグラフの実行は、複数の計算デバイスに分散することができる。
幾つかの実装形態では、コンポーネントは、例えば、入力ポートで入力データを受け入れ、例えば、出力ポートで出力データを生成することができる。リンクは、第1のコンポーネントの出力ポートを第2のコンポーネントの入力ポートに接続する。幾つかのコンポーネントは、複数の入力ポート及び出力ポートを有することができる。データレコードを入口点から出口点にナビゲートすることができるコンポーネント及びリンクの順番は、パスと呼ばれる。データ系譜を使用して、異なるパスを識別し、1つ又は複数のコンポーネントを通るデータフローをトレースすることができる。
この例では、データ要素「x」102は、論理データセット1のメンバであり、データ要素「y」103は、論理データセット2のメンバである。一般に、データ要素は、論理データセット内に記憶されている個々のレコードを指す。データ要素は、例えば、論理データセットが関係データベース内のテーブルであることができ、データ要素がそのテーブルからの行であることができる。データ要素「x」及びデータ要素「y」は、グラフ1 140に入力される。グラフ1は論理データセット2 106を生成する。論理データセット2は、データ要素「A」108及びデータ要素「B」110を含む。これらのデータ要素はグラフ2 112に入力される。データ要素「A」は、データ要素「C」114に使用される。データ要素「C」は、入力としてルールセット1 116に提供される。一般に、ルールセットは、出力を生成するためにデータに適用されるルールの集合である。ルールセットは、例えば、データ要素内の値に適用される一連のテスト及び結果であることができる。ルールセットは、1つ又は複数の入力を受け入れ、それらの入力の値に基づいて、1つ又は複数の出力を生成することができる。一般に、ルールセットは、コンパイルされるか、又はコンピュータ実行可能変換にすることができる。図1に示されるデータ系譜グラフ100は、説明を目的として及びスペースを考慮して簡略化されている。一般に、線に沿った省略記号の存在は、1つ又は複数のコンポーネント及びデータソースが省略されたことを示す。示されていないデータ変換を行うこともできる。例えば、データ要素「A」108を変換して、データ要素「C」114を生成してもよい。データ要素「E」118を変換して、データ要素「G」122を生成してもよい等である。
ルールセット1は、2つの出力データ要素「E」118及びデータ要素「F」120を生成する。データ要素「E」118を使用して、データ要素「G」122を生成する。データ要素「G」は、入力としてルールセット2 130に提供される。ルールセット2は、データ要素「I」132の出力を生成する。データ要素「I」を使用して、論理データセット3 138のデータ要素「J」140を生成する。データ要素「F」120を使用して、データ要素「H」124及びデータ要素「D」126を生成する。データ要素「B」110を使用して、データ要素「M」128を生成する。データ要素「M」128及びデータ要素「D」126は、入力としてルールセット3 134に提供される。ルールセット3は、データ要素「K」136を生成する。データ要素「K」を使用して、論理データセット3 138のデータ要素「L」142を生成する。データ要素「Y」は、入力としてルールセット4 144に提供される。ルールセット4 144は、論理データセット3 138のデータ要素「N」146を生成する。
論理データセット又はデータ要素に対して行われる変更は、異なるルールセット及びデータ要素に影響し得る。これらの変更は、変更のなかでも特に、スキーマ又はレコードフォーマットへの変更及び異なるデータ要素の有効値への変更を含むことができる。例えば、データ要素のレコードスキーマが変更される(例えば、レコードスキーマは、数値フィールドから文字列フィールドに変更し得る)場合、変更は、そのデータ要素を利用する各ルールセットと、変更されたデータ要素に依存するデータ要素を利用する各ルールセットとに影響し得る。例えば、データ要素Cのレコードフォーマットに対して行われる変更は、ルールセット1、データ要素E、データ要素F、データ要素G、データ要素H、データ要素D、ルールセット2、データ要素I、データ要素J、ルールセット3、データ要素K、及びデータ要素Lに影響し得る。データ要素Xのレコードフォーマットに対して行われる変更は、データ系譜内の他の全ての要素(データ要素Y、ルールセット4、又はデータ要素Nを除く)に影響し得る。
システムは、データ要素又はルールセットへの変更の影響についての情報を提供するリポートを生成することができる。例えば、リポート150は、グラフ2上のデータ要素Aに対する変更の影響についての情報を提供する。
リポート150は方向列を含む。方向列は、リポートが生成されたデータ系譜の方向を示す。方向は、データ系譜内でそのデータ要素に先行するルールセット、論理データセット、及びデータ要素を指す上流又はデータ系譜内でそのデータ要素に後続するルールセット、論理データセット、及びデータ要素を指す下流のいずれかであることができる。例えば、データ要素Cは、ルールセット1の上流であり、データ要素Aの下流である。
リポート150はグラフ列154も含む。グラフ列は、リポートのセクションの対象であるグラフを識別する。この例では、グラフ2 112がリポートの対象である。リポートは、グラフフィールド列156も含む。グラフフィールド列は、リポートの対象であるフィールドを識別する。一般に、フィールドは、方向が下流の場合、グラフへの入力であり、方向が上流の場合、グラフの出力である。この例では、データ要素A108及びB110がリポートの対象である。
リポート150はルールセットフィールド列158も含む。ルールセットフィールド列は、入力(下流リポートの場合)又は出力(上流リポートの場合)であるデータ要素を識別する。ルールセット列160は、リポートの行の対象であるルールセットを識別する。この例では、リポートは、ルールセット1への入力としてデータ要素Cについての情報を提供し(第1の牽引166において)、ルールセット2への入力としてデータ要素Gについて情報を提供し(2行目168において)、ルールセット2への入力としてデータ要素Hについての情報を提供し(3行目170において)、ルールセット3への入力としてデータ要素Dについての情報を提供し(4行目172において)、ルールセット4への入力としてデータ要素Mについての情報を提供する(5行目において)174。
リポート150は、直列列162及び間接列164も含む。直接列及び間接列は、以下に更に説明するように、コードの分析により特定される。しかし、ここでは、完全性のために提示される。直接列は、ルールセットフィールドにより識別されるデータ要素が、ルールセット内で直接参照される回数を報告する。例えば、直接列は、値を出力に直接割り当てる表現のカウントを含むことができる。間接列164は、ルールセットフィールドにより識別されるデータ要素が、ルールセットフィールドにより識別されるルールセット内の1つ又は複数の他のデータ要素の値に影響する回数を識別する。例えば、間接列は、データ要素の出力値に寄与するルール事例及び他の表現の総数のカウントを表示することができる。ビジネスルールにより計算される出力の場合、表現カウントは、デフォルト値がある場合、デフォルト値を含むルール事例の数である。この例では、データ要素「C」は、ルールセット1において直接13回参照され、1つ又は複数の他のデータ要素の値に70回影響する。
リポート150を生成するために、システムはルールセットを処理して、いずれのデータ要素がルールセットに関連するかを特定する。ルールセットは、例えば、データをあるフォーマットから別のフォーマットに変換するため、データについて判断するため、又は入力データの組に基づいて新しいデータを生成するために使用することができる基準の組として表すことができる。
図2は、ルールセット例及びルールセットへの入力を示す。上述したように、ルールセット3 134は2つの入力:データ要素「D」126及びデータ要素「M」128を有する。ルールセット3 134は、「年数」パラメータ202及び「収入」パラメータ204として入力を参照し得る。この例では「年数」パラメータ202及び「収入」パラメータ204は、以下により詳細に説明される変換206により処理される。変換206は「リスク」出力208を生成し、この出力はデータ要素「D」136として提供される。
図3は、人間可読ルールセット300の例を示す。人間可読ルールセット300は、グラフィカルユーザインタフェース(GUI)を使用して定義することができるか、又はフラットファイル若しくは他の構造で定義することができる。人間可読ルールセット300は、後述するように、後に変換、例えば、図2の変換206にコンパイルすることができる。例えば、人間可読ルールセット300は、図1のルールセット3 134にコンパイルすることができる。例えば、データ要素Dが収入を表し、データ要素Mが顧客としての年数を表す場合である。再び図3を参照すると、人間可読ルールセット300は表形式で示される。図3に提示される人間可読ルールセット300は、2つの入力302:年数306及び収入308に基づいて、リスクカテゴリ310を出力304として特定するのに使用することができる。この例では、7つの潜在的な条件がある。第1のルール312は、顧客としての年数が15年を超える場合、収入に関係なく、リスクが低いことを述べている。第2のルール314は、顧客が150,000ドルを超える年収を有する場合、顧客である年数に関係なく、最初が低いことを述べている。第3のルール316は、顧客である年数が10年を超え(しかし、15年未満)、60,000ドルを超える収入を有する場合、リスクが低いことを述べている。第4のルール318は、顧客である年数が5年を超える場合、収入に関係なく、リスクが中であることを述べている。第5のルール320は、50,000ドルを超える収入を有する場合、顧客である時間量に関係なく、リスクが中であることを述べている。第6のルール322は、顧客である年数が3年を超え、40,000ドルを超える収入を有する場合、リスクが低いことを述べている。第7のルール324は、その他の場合、リスクが高いことを述べる包括的なルールである。
なお、この例では、ルールは順次評価される。人物がリスクカテゴリで適格であると、ルール処理は完了する。例えば、人物が顧客である年数が15年を超え、「低」リスクが割り当てられる(行312から)場合、残りの行は決して実行されない。
入力フィールド又は出力フィールドのうちの一方への変更の影響を特定するために、システムは、後述するルールセットの分析を実行することができる。
グラフベースの計算環境でルールセットを実施するために、1つ又は複数のデータソースから入力レコード、例えばデータ要素「C」106を受信し、データ要素、例えば、データ要素「E」118及びデータ要素「F」120を出力データセットに挿入する変換が生成される。入力データセット及び出力データセットは、データストリームと呼ぶこともできる。図1に示されるように、変換は次に、データフローを表す要素をリンクすることにより接続されるデータ処理コンポーネントを有するグラフベースの計算で実施することができる。
図4は、機械可読コードを含む変換に人間可読ルールセットを変換できるようにするプロセスを示す。ルールセット402、例えば、図3の人間可読ルールセット300は、ルール生成器408に提供される。ルール生成器は、ルールセット402を中間形態にコンパイルする。例えば、ルール生成器406は注釈付きコード408を生成することができる。注釈付きコード408は、ルールへの変更の直接影響及び間接影響を定義する、報告されたメトリック410を含むことができる。例えば、人間可読ルールセット300は、結果として、
Figure 0007090778000001

等の注釈付きコードを生成することができる。
上述したように、直接影響は、ルールセットフィールドにより識別されるデータ要素が、ルールセット内で直接参照されるか、又は設定される回数を記述する。間接影響は、ルールセットフィールドにより識別されるデータ要素が、ルールセット内の1つ又は複数の他のデータ要素の値に影響する回数を識別する。
ルール生成器406は、直接メトリック及び間接メトリックを生成することができ、様々な方法で生じうる。例えば、幾つかの実装形態では、ルール生成器406は、ルールセットを分析して、データ要素がアクセスされる各回及び別の値がそのデータ要素に依存する各回を識別することができる。より複雑なシナリオを追跡することもできる。ルール生成器406は、どの程度間接的であるかに関係なく、入力値又は出力値の値に依存するあらゆる変数を追跡することができる。例えば、変数が中間値に影響し、その中間値が最終値に影響する場合、システムは、中間値及び最終値の両方を間接影響として報告することができる。例えば、人間可読ルールセット300は、年数306入力の値にアクセスする4つのルールと、収入308入力の値にアクセスする4つのルールと、リスク310出力の値を設定する7つのルールとを有する。幾つかの実装形態では、ルールセットは、各パラメータの値を少なくとも1回設定すると推測し得る。例えば、年数入力は、入力値がルールセットに提供されるときに設定される。
幾つかの実装形態では、ルール生成器406は、少なくとも部分的にパラメータに依存する、ルールセット内のルール数をカウントすることができる。例えば、人間可読ルールセット300は、年数306入力に依存する7つのルールと、収入308入力に依存する7つのルールと、リスク310出力を設定する7つのルールとを含む。上述したように、ルール324は包括的ルールである。幾つかの実装形態では、包括的ルールは、ルール生成器406により無視し得る。
注釈付きコード408は、ルールコンパイラ412に提供することができる。ルールコンパイラ412は、注釈付きコード408を変換206にコンパイルすることができる。一般に、変換は、機械(又は仮想機械)実行可能プログラム、例えば、実行可能プログラム416である。
図4を参照すると、リポート生成器は、データ系譜4の注釈付きコード402に基づいて、リポート408を生成することができる。例えば、再び図1を参照すると、システムは、データ系譜を使用して、例えば、データ要素Xがデータ要素A、B、C、D、E、F、G、H、I、J、K、L、及びMの値に影響することを特定することができる。したがって、グラフ2の処理時、システムは、データ要素Xへの変更がルールセット1、ルールセット2、及びルールセット3に関与することを特定する。しかし、データ要素Xはルールセット4に関与しない。したがって、リポート生成器は、データ要素Xへの変更の影響分析の一環として、ルールセット4を分析する必要がないと判断することができる。
図5は、リポート生成器が注釈付きコードに基づいてリポートを生成することを示す。リポート生成器506は、いずれの入力が変更により影響されるかを識別し、影響の計算されたメトリックからの結果を記録する。例えば、データ要素「X」は、ルールセット3への両入力に影響する。したがって、リポート生成器は、メトリック(図4の410)をリポート(図1の行172、174等)に記録する。
幾つかの実装形態では、コストを直接計算及び間接計算のそれぞれに関連付けることができる。例えば、直接影響が、プログラマの所定の時間量と、品質保証人員の所定の時間量とを必要とすることを特定することができる。同様に、間接影響が、品質保証人員の所定の時間量を必要とすることを特定することができる。所定の時間、直接影響及び間接影響の計算並びにコンピュータプログラマの時間及び品質保証人員の時間に関連付けられたコストに基づいて、システムは、分析されるシステムに変更を行うことのコスト推定値を提供することができる。
幾つかの実装形態では、ルール生成器を使用して、システム、例えば、図1のデータ系譜100により表されるシステムの異なる部分を識別するに当たり、開発者を支援することができる。
図6は、影響分析技法を使用することができるデータ処理システム600を示す。システム600はデータソース602を含み、データソース602は、それぞれが任意の様々なフォーマット(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームにより使用されるネイティブフォーマット)でデータを記憶又は提供することができる、記憶デバイス又はオンラインデータストリームへの接続等のデータの1つ又は複数のソースを含むことができる。実行環境604は、ルール生成器606及びリポート生成器612を含む。実行環境604は、例えば、あるバージョンのUNIXオペレーティングシステム等の適するオペレーティングシステムの制御下で1つ又は複数の汎用コンピュータでホストすることができる。例えば、実行環境604は、ローカルである(例えば、対称マルチ処理(SMP)コンピュータ等のマルチプロセッサシステム)か、ローカルに分散する(例えば、クラスタとして結合される複数のプロセッサ若しくは大規模並列処理(MPP)システムか、リモートであるか、リモートに分散する(例えば、ローカルエリアネットワーク(LAN)及び/又は広域ネットワーク(WAN)を介して結合される複数のプロセッサ)か、又はそれらの任意の組合せの複数の中央演算処理装置(CPU)又はプロセッサコアを使用する構成のコンピュータシステムを含む複数ノード並列計算環境を含むことができる。
ルール生成器モジュール606は、ルール仕様をデータソース602から読み出し、ルールの注釈付きコードを記憶する。データソース602を提供する記憶デバイスは、実行環境604にローカルである、例えば、実行環境604をホストするコンピュータに接続される記憶媒体(例えば、ハードドライブ608)に記憶することもでき、又は実行環境604にリモートである、例えば、リモート接続(例えば、クラウド計算基盤により提供される)を介して、実行環境604をホストするコンピュータと通信するリモートシステム(例えば、メインフレーム610)でホストすることもできる。
リポート生成器612は、データソース602に記憶することができる、ルール生成器606により生成される注釈付きコード及びデータ系譜を使用して、変更を行うことの影響のリポートを生成する。出力データは、元のデータソース602若しくは実行環境604がアクセス可能なデータ記憶システム616に記憶することができ614、又は別の方法で使用することができる。データ記憶システム616は、開発環境618にもアクセス可能であり、開発環境618において、開発者620は、データ要素、他のプログラミング構造物のルールに変更を行うことの影響を特定することが可能である。開発環境618は、幾つかの実装形態では、頂点間の有向リンク(作業要素、すなわち、データの流れを表す)により接続される頂点(データ処理コンポーネント又はデータセットを表す)を含むデータフローグラフとして、アプリケーションを開発するシステムである。例えば、そのような環境は、Managing Parameters for Graph-Based Applicationsに関してより詳細に記載されている。そのようなグラフベースの計算を実行するシステムについて以下に説明する。このシステムに従って作られるデータフローグラフは、プロセス間で情報を動かし、プロセスの実行順を定義するために、グラフコンポーネントにより表される個々のプロセスに情報を出し入れする方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信方法(例えば、TCP/IP若しくはUNIXドメインソケットを使用することができるリンクに従った通信パス又は共有メモリを使用して、プロセス間でデータを渡す)を選ぶアルゴリズムを含む。
図7は、例示的な影響分析手順700のフローチャートである。プロセスは、図6のデータ処理システム600等のデータ処理システムにより実行することができる。
2つのデータセットについての情報が受信される(702)。論理データセット情報は、各論理データセットで、その論理データセット内の少なくとも1つのフィールドの識別子と、そのフィールドについてのフォーマット情報とを識別することができる。
変換についての情報が受信される(704)。情報は、2つの論理データセットから、変換がデータを受信する第1の論理データセットと、変換されたデータを提供する第2の論理データセットとを識別することができる。変換は、第1の論理データセットからのデータに適用される1つ又は複数のルールについての情報を含み得、1つ又は複数の提案される変更の潜在的な影響を分析することは、1つ又は複数のルールに更に基づく。
1つ又は複数の提案される変更が受信される(706)。提案される変更は、データセット内のフィールドのフォーマットへの変更、変換への変更、又はルールセットへの変更であることができる。幾つかの実装形態では、提案される変更は、変更の性質を指定せずに、変更される論理データセット内のフィールド又は変換を識別する。例えば、提案される変更は、変更が十進法レコードフォーマットから文字列レコードフォーマットへのものであることを示すことなく、フィールド「X」が変更されることを指定することができる。
提案される変更が分析される(708)。
提案される変更のメトリックが計算される(710)。メトリックは、変更の影響を測定することができる。メトリックは、直接影響の尺度及び/又は間接影響の尺度を含むことができる。直接影響の尺度の例としては、限定ではなく、変更される入力パラメータがアクセスされるルールセット内のロケーションが挙げられる。間接影響の尺度の例としては、限定ではなく、値が、変更された入力パラメータの値に基づいて設定されるルールセット内のロケーションが挙げられる。
メトリックがソートされる(712)。メトリックは、フラットファイル、関係データベース、又は任意の他の永続的データストアに記憶することができる。メトリックは、リポートの形態で記憶し得る。影響のメトリックを識別するリポートを生成することができる。リポートは、直接影響の尺度及び間接影響の尺度をデータ系譜の特定の部分に関連付けることができる。例えば、リポートは、特定のデータフローグラフ、データフローグラフフィールド、ルールセットフィールド、又はルールセットに直接間接の尺度及び間接影響の尺度が関連付けられることを示すことができる。
幾つかの実装形態では、リポートは、例えば、ハイパーテキスト転送プロトコル(HTTP)リンクを通してデータ系譜に結びつけることができる。リンクを選択又はクリックすることで、ユーザがデータ系譜の特定の部分を見られるようにするアプリケーション又はウェブサイトにクライアントデバイス上のブラウザをナビゲートすることができる。例えば、図1を参照すると、3行目170を選択又はクリックすることで、クライアントデバイス上のブラウザ又は他のアプリケーションにデータフローグラフ「グラフ2」112を表示させることができる。幾つかの実装形態では、その特定のグラフ、グラフフィールド、ルールセットフィールド、及びルールセットは、例えば、強調表示により視覚的に区別することができる。
幾つかの実装形態では、リポートは、提案される変更に関連付けることができる平均開発及びテストコストを含むことができる。例えば、リポートは、ドルコストを直接変更に関連付け、ドルコストを間接変更に関連付けることができる。幾つかの実装形態では、ドルコストは、プロセスに提供されるパラメータであることができる。他の実装形態では、デフォルト値を各変更に関連付けることができる。例えば、直接変更は、コストを100ドルに決定することができ、間接変更はコストを25ドルに決定することができる。
グラフベースアプリケーションのパラメータ管理
図8Aは、主要素の相互関係を示す本発明の一実施形態のブロック図である。グラフィック開発環境(GDE)802は、実行可能グラフを作成し、グラフコンポーネントのパラメータを定義するユーザインタフェースを提供する。GDEは、例えば、本発明の譲受人から入手可能なCO>OPERATING SYSTEM(登録商標)GDEであり得る。GDE802は、リポジトリ804及び並列オペレーティングシステム806と通信する。リポジトリ804及び並列オペレーティングシステム806には、ウェブインタフェース808及びエグゼクティブ810も結合される。
リポジトリ804は、好ましくは、グラフベースアプリケーションの開発及び実行並びにグラフベースアプリケーションと他のシステム(例えば、他のオペレーティングシステム)との間でのメタデータ相互交換をサポートするように設計されたスケーラブルなオブジェクト指向データベースシステムである。リポジトリ804は、ドキュメンテーション、レコードフォーマット、変換関数、グラフ、ジョブ、及び監視情報を含め(しかし、これに限定されない)、全ての種類のメタデータの記憶システムである。リポジトリは当技術分野で既知であり、例えば、米国特許第5,930,794号、同第6,032,158号、同第6,038,558号、及び同第6,044,374号を参照のこと。
並列オペレーティングシステム806は、GDE802において生成されるデータフローグラフの表現を受け入れ、グラフにより定義される処理論理及びリソースに対応するコンピュータ命令を生成する。次に、並列オペレーティングシステム806は通常、それらの命令を複数のプロセッサ(同質である必要はない)で実行する。適する並列オペレーティングシステムは、本発明の譲受人から入手可能なCO>OPERATING SYSTEM(登録商標)である。
ウェブインタフェース808は、リポジトリ104の内容のウェブブラウザベースのビューを提供する。ウェブインタフェース808を使用して、ユーザは、オブジェクトを閲覧し、新しいオブジェクトを作成し、既存のオブジェクトを変更し、アプリケーションパラメータを指定し、ジョブをスケジュールするなどを行い得る。ウェブインタフェース808は、グラフのランタイムパラメータについてリポジトリ804に記憶されている情報に基づいて、パラメータ化グラフのフォームベースユーザインタフェースを自動的に作成する。
エグゼクティブ810は、ウェブインタフェース808を通してアクセスされる任意選択的なリポジトリベースのジョブスケジューリングシステムである。エグゼクティブ810は、ジョブ及びジョブキューをリポジトリ804内のオブジェクトとして維持し、ウェブインタフェース808は、ジョブ及びジョブキューのビューを提供し、それらの操作に役立つ。
図8Bは、入力データセット822がフロー824によりフィルタコンポーネント826に接続された簡略データブローグラフ820を示す。フィルタコンポーネント826は、フロー828により出力データセット830に接続される。データセットは、例えば、グラフフローグラフにより実行される計算のためにデータ(例えば、入力データセット)を提供するか、又はデータ(例えば、出力データセット)を受信するファイル又はデータベーステーブルを含むことができる。
データフローグラフ中、「フロー」により表されるデータの流れは、離散データ要素に編成することができる。例えば、要素は、レコード(又は行)及びフィールド(又は列)に編成されたデータセットからのレコードを含むことができる。フィールドシーケンス及びレコード内の値に対応するデータ型を記述するメタデータは、「レコードフォーマット」と呼ばれる。
グラフ中のコンポーネント及びデータセットは、フローに接続する入力ポート及び/又は出力ポートを有する。フロー824及び828の「ソースエンド」は、入力データセット822の出力ポート及びフィルタコンポーネント826の出力ポートとそれぞれインタフェースする。フロー824及び828の「シンクエンド」は、フィルタコンポーネント826の入力ポート及び出力データセット830の入力ポートとそれぞれインタフェースする。データセット又はコンポーネントの入力ポート又は出力ポートには、ポートに流れ込むか、又はポートから流れ出るデータのレコードフォーマット等のメタデータが関連付けられる。
ポートのレコードフォーマット又はコンポーネントに関連付けられた他のメタデータを含めパラメータは、パラメータスコーピングのルールに従って値にバインドされる。パラメータは、設計時又は実行時(すなわち、後述する「ランタイムパラメータ」)に値にバインドすることができる。パラメータの値は、例えば、ユーザインタフェースを介してユーザにより定義することもでき(例えば、プロンプトに応答して)、ファイルから定義することもでき、又は同じコンテキスト若しくは異なるコンテキスト内の別のパラメータに関して定義することもできる。例えば、パラメータは、別のパラメータに対して「同じ」関係を有するようにパラメータを指定することにより、異なるコンテキストからエクスポートすることができる(例えば、異なるコンポーネントのコンテキストで評価されたパラメータ)。
グラフで使用されるコンポーネントは、「サブグラフ」を形成するフローと相互接続された他のコンポーネントを使用して実施することができる。サブグラフが、別のグラフでコンポーネントとして使用される前に、コンポーネントの入力ポート及び/又は出力ポート等のそのコンポーネントの様々な特徴が定義される。幾つかの場合、サブグラフコンポーネント間の関係と関係があるコンポーネントの特徴は、そのコンポーネントがグラフで使用される前に指定されるべきである。例えば、サブグラフコンポーネントのランタイムパラメータのプロンプト順を選択する必要があり得る。グラフ中のコンポーネントのランタイムパラメータのプロンプト順を選択する手法について、以下により詳細に説明する。
メタデータ伝搬
レコードフォーマットパラメータ等のポートに関連付けられたメタデータの値は、「伝搬」により得ることができる。メタデータ伝搬は、「外部」又は「内部」で行うことができる。外部メタデータ伝搬の場合、第1のコンポーネントのポートのレコードフォーマットパラメータの値は、フローにより第1のコンポーネントに接続された第2のコンポーネントのポートのレコードフォーマット値を伝搬させることにより、値を得ることができる。値は、フローのソースエンドからシンクエンドに下流に、又はフローのシンクエンドからソースエンドに上流に伝搬することが可能である。メタデータは、定義されたメタデータを有するポートから、定義されたメタデータを有さないポートに伝搬する。
内部メタデータ伝搬の場合、コンポーネントのあるポートに定義されたメタデータは、そのコンポーネントを実施するサブグラフに基づいて、そのコンポーネントの別のポートに伝搬する。幾つかの場合、内部メタデータ伝搬は、「非変換」内部データパスを介して行われる。例えば、ユーザは、ソートコンポーネントに流れ込むレコードのデータ型を指定するメタデータをソートコンポーネントの入力ポートに提供し得る。ソートコンポーネントは、レコードを並べ替えるが、変換しないため、データ型はソートコンポーネントにより変更されず、ソートコンポーネントから流れ出るレコードのデータ型を正確に記述するデータ型は、変更されずにソートコンポーネントの出力ポートに伝搬する。
幾つかのコンポーネントは、コンポーネントを通って流れるデータを変換(又は任意選択的に変換)する。例えば、ユーザは、フィルタコンポーネントに流れ込むレコードのフィールドを指定するメタデータをフィルタコンポーネントの入力ポートに提供し得る。フィルタコンポーネントは、各レコードからの所与のフィールドの値を削除し得る。メタデータ定義を使用して、フィルタコンポーネントの出力ポートのメタデータが、コンポーネントのフィルタリング動作に従って入力ポートのメタデータに関連することを指定することができる。例えば、フィルタリングされたフィールドは、レコードフィールドを指定するメタデータから削除され得る。そのようなメタデータ定義は、入力ポートメタデータが分かる前であっても供給することができる。したがって、メタデータは、以下により詳細に説明するように、別のポートのメタデータを含め、ポートに関連付けられたメタデータを1つ又は複数のパラメータの関数として指定できるようにすることにより、変換内部データパスを介してであっても伝搬することができる。
この内部及び外部メタデータ伝搬は、任意選択的に、グラフが構築中である間、設計時に行うように構成することができ、ユーザは、グラフ中の幾つかのコンポーネントの幾つかのポートにメタデータを供給する。代替的には、メタデータ伝搬は、実行時又は実行時直前を含め、グラフが構築された後に行うことができる。
ランタイムパラメータ
ラインタイムパラメータにより、アプリケーション構築者は、パラメータ値の設定(例えば、ソート関数の主要パラメータ、ファイル名、レコードフォーマット、変換関数等)を実行時(例えば、プログラムが実行されるとき又はコンピュータシステムで間もなく実行されるとき)に延ばすことができる。ランタイムパラメータの値は、エンドユーザにより供給してもよく、又は他のランタイムパラメータの組合せ若しくはオブジェクトリポジトリに記憶されているオブジェクトから導出してもよい。
ランタイムパラメータは、特定量の柔軟性をアプリケーションに追加する。追加の柔軟性は、それらのパラメータをオンデマンドでメタデータ(データフォーマット又はデータ型及びプログラム論理又は変換)の計算に使用することにより達成される。型及び変換は、他の型及び変換、ユーザ供給のパラメータ値、及び記憶されているオブジェクト(例えば、リポジトリから)から合成し得る。これにより、任意のタイプの入力データに対して機能するか、又はランタイムパラメータ値を通して構築が直接又は間接的に制御される一連の変換を通してデータを生成する「汎用」アプリケーションを構築することが可能になる。
幾つかの実装形態では、ランタイムパラメータの作成時又は編集時、開発者は、各パラメータのプロンプト及びプロンプトを表示する条件を指定し得る。システムは、プロンプト指示を解釈して、条件が満たされる場合、パラメータ値を受信するためのグラフィカルユーザインタフェース(GUI)制御機構を提示する。
ランタイムパラメータの指定
ランタイムパラメータは、開発者が、グラフ実行時(すなわち、実行時)に外部入力に基づいてグラフの挙動を変更するメカニズムを提供する。好ましい実施形態では、これらの外部値は、直接ユーザ入力により提供される。しかし、これらの外部値は、環境変数及びコマンドラインパラメータを含め、幾つかの異なるソースからのものであってもよい。GDE802は、これらの全ての状況を扱う補正コードを生成すると共に、グラフがGDEから直接実行されるとき、値をテストするように開発者に促す。ランタイムパラメータを使用して、開発者は、例えば、入力ファイルのパスが、特定の名称を有する環境変数により提供されること、次に、環境変数がグラフのインタフェースの既知の部分になることを明示的に宣言することができる。したがって、そのようなパラメータに明確に定義されたインタフェースがある。例えば、生成されたシェルスクリプトを読み出し、環境変数及びコマンドライン引数への参照について検索して、特定のグラフの実行を制御するパラメータセットを見つける必要がない。
図9は、指定されたランタイムパラメータを有するロールアップコンポーネント902及びソートコンポーネント904を有する典型的なグラフ900のブロック図である。ランタイムパラメータ(ソートコンポーネント904のキー及びロールアップコンポーネント902のルール)は、入力のためにインタフェース906においてユーザに提示される。以下のセクションにおいて、ランタイムパラメータをどのように指定し、ユーザ入力を促すランタイムパラメータを提示する統合ユーザインタフェースをどのように作成するかについて説明する。
ランタイムパラメータは、幾つかの方法で指定又は定義し得る。一方法は、GDE802に表示されるランタイムパラメータグリッドを使用することによるものである。図10は、グラフに関連付けられるランタイムパラメータグリッド1000を表すグラフィカルダイアログの一実施形態の図である。新しいランタイムパラメータは、単に適切なフィールドに入力することにより作成される。各ランタイムパラメータに関連付けられたオブジェクトが、リポジトリ804において作成され、そのパラメータを利用する全てのグラフコンポーネントにリンクされる。例えば、グラフのソートコンポーネントのソートキーがランタイムパラメータとして定義される場合、ソートキーパラメータを表すオブジェクトが、リポジトリ804に記憶され、関連付けられたソートコンポーネントにリンクされる。ランタイムパラメータを定義する代替の方法は、グラフコンポーネントの既存のパラメータを特にフラグ付け、他のコンポーネントから「見える」(他のコンポーネントにエクスポートする)ようにするものである。これらの方法の組合せを使用してもよい。例えば、コンポーネント作成時、開発者は、そのコンポーネントの特定のパラメータをランタイムパラメータとして指定し得る。次に、開発者は、パラメータグリッドを使用して、グラフの全てのランタイムパラメータのデフォルト値及び他の特徴を設定し、新しいランタイムパラメータを定義し得る。
グラフ実行時、パラメータは処理されて、ユーザ入力又は外部プログラムソース(例えば、コマンドラインパラメータ若しくは環境変数)から各パラメータの値を得る。図示の実施形態では、ランタイムパラメータグリッド1000は以下のフィールドを含む。
名称1002 - このフィールドはランタイムパラメータの名称を含む。「Score_threshold」は、名称に示される例である。
型1004 - このフィールドは、ランタイムパラメータで許される値の型を含む。「整数」は型に示される例である。図示の実施形態においてサポートされる型は以下の通りである。
・ブール - 値は真又は偽のいいずれかであることができる、
・選択 - 値は値リストのうちの1つである、
・コレータ - 主要パラメータ値、
・データセット - 外部データファイル及びロケーション、
・日付 - 日付値、
・式 - 算術式、論理式、及び/又は条件式(例えば、select式)、
・フロート - 浮動小数点、
・整数 - 整数、
・レイアウト - 並列又は直列レイアウト定義、
・レコードフォーマット - レコード記述又はレコード記述を含むファイル、
・文字列 - 任意の文字列、
・変換 - 変換記述又は変換記述を含むファイル。
ロケーション(ロケ)1006 - このフィールドは、レコードフォーマット及び変換型と共に使用される。このフィールドは、型フィールド1004がファイルロケーションを記述するか否か又は型フィールド1004が埋め込み記述を含むか否かを指定する。サポートされるロケーションは以下の通りである
・埋め込み - パラメータはレコード記述又は変換記述を含む、
・ホスト - パラメータは、ホスト機上のファイルへの参照を含む、
・ローカル - パラメータはローカル機上のファイルへの参照を含む、
・リポジトリ - パラメータは、リポジトリ変換又はレコードフォーマットへの参照を含む。
デフォルト値1008 - このフィールドは、(1)他の値が外部プログラムソースから提供されない場合に使用される、ランタイムパラメータのデフォルト値又は(2)ユーザ入力からランタイム値をどのように導出するかを記述するルール若しくは式若しくはグラフを実行中のユーザからインタラクティブにその情報を取得する方法を含む。後者の場合、第2のデフォルト値フィールド(図示せず)を使用して、ユーザが入力値を提供しない場合、ランタイムパラメータの値を提供し得る。「ブール」及び「選択」の型では、このフィールドは、ユーザを有効な選択に制限する。「レイアウト」型では、このフィールドは読み取り専用であり、現在定義されているレイアウト定義を表示する。他の全ての型では、このフィールドは、好ましくは、ユーザが有効文字列をタイプし得る単純なテキストエディタである。
編集1010 - パラメータ行中の編集スペース1010(又はアイコン、例えば、鉛筆のアイコン)をクリックすると、より高度な編集ウィンドウが開き、このウィンドウは、デフォルト値フィールド1008を編集する様々なオプションをユーザに提示する。図示の実施形態では、以下のエディタが関連付けられた型に利用可能である。
・シングルライン編集 - 整数、フロート、日付、及び文字列型に関するものである、
・選択ダイアログ - ブール及び選択型に関するものである、
・キーエディタ - コレータ型に関するものである、
・ファイルブラウザ - データセット型及びロケーションが埋め込まれていないレコードフォーマット及び変換型に関するものである、
・変換エディタ - 埋め込みロケーションを有する変換型に関するものである、
・レコードフォーマットエディタ - 埋め込みロケーションを有するレコードフォーマット型に関するものである、
・式エディタ - 式型に関するものである、
・レイアウトエディタ - レイアウト型に関するものである。
上記エディタは、種類フィールド値(以下参照)が「PL」(パラメータ言語)である場合を除いて起動する。この場合、ユーザには、グラフ実行時にパラメータ値を導出又はプロンプトするルールを定義するエディタが提示される。
記述1012 - これは、開発者がランタイムパラメータの予期値を記述する自由形式フィールドである。このフィールドは、デフォルト値が、入力値をユーザに尋ねるルールを含む場合、実行時にプロンプトとして使用される。
種類1014 - このフィールドは、グラフが、グラフ実行時に、関連付けられたパラメータの値を得る場所を定義する。サポートされる種類フィールド1014値は以下の通りである。
・環境 - ランタイムパラメータの値は、同じ名称の環境変数で見つけられることが予期され、環境変数が定義されない場合、デフォルト値フィールド1008内の値が使用される。パラメータが必要とされ(すなわち、エクスポートパラメータ)、デフォルト値フィールド1008が空である場合、ランタイムエラーが生成され、グラフ実行は停止する、
・位置的 - ランタイムパラメータの値は、アプリケーションを呼び出しているコマンドライン上の相対位置にあることが予期され、例えば、ランタイムパラメータが定義される3番目の位置のランタイムパラメータである場合、そのパラメータ値は、実行スクリプト中の3番目の位置のコマンドライン引数として予期され、指定されるあらゆる位置的パラメータが提供されなければならず、欠けている場合、ランタイムエラーが生成される、
・キーワード - ランタイムパラメータの値はキーワードコマンドラインパラメータとして予期され、図示の実施形態では、キーワードパラメータは、
- <パラメータ名><パラメータ値>
の形態であり、キーワードパラメータは、任意選択的であり、キーワードパラメータが提供されず、デフォルト値フィールド1008が空白であり、対応するエクスポートパラメータが必要とされる場合のみ、ランタイムエラーが生成される、
・固定 - パラメータのランタイム値は常にデフォルト値であり、これは、2つ以上のランタイムパラメータ間で一定の値を共有するのに有用である、
・PL - ランタイムパラメータのデフォルト値は、グラフ実行時、他のパラメータからのランタイムパラメータの値を導出するか、又は追加の入力をユーザに促すものとして解釈されるPL式を含み、本発明の任意の特定の実施形態との併用に選択されるコンポーネント記述言語は、公開されているオブジェクト指向スクリプト言語「Python」等の任意の適するスクリプト言語であり得、そのようなスクリプトは、プログラム制御下でメタデータ(型及び変換)を構築し、条件付きテスト、比較、データ変換、算術演算及び論理演算、文字列及びリスト操作、並びに他の機能をユーザ入力、外部からプログラム的に供給される入力、及び他のランタイムパラメータに対して実行して、任意のランタイムパラメータの最終値を生成する。
図示の実施形態では、ランタイムパラメータグリッド1000で直接作成されたランタイムパラメータを参照する有用な規定は、単にドル符号「$」が先行するパラメータ名を入力することである。例えば、$keyは、keyという名称のランタイム変数を参照する。図示の実施形態では、新しいランタイムパラメータのデフォルトは、「文字列」型及びデフォルトランタイム種類の高度オプションダイアログ中の値に基づくデフォルト種類(デフォルトランタイム種類は「環境」)に設定される。
ランタイムパラメータ値は、実行時に決定することができ、PLスクリプトは条件付きテストを提供することができるため、「条件付き」ラインタイムパラメータを作成することができる。条件付きランタイムパラメータは、パラメータの全ての条件 - 実行時に決定される - がイネーブルされている場合のみ、ユーザ入力のプロンプトを生成させる。したがって、例えば、データセットをソートするか否かを求める第1のプロントにユーザが「ノー」で応答する場合、ソートキーを求める第2の条件付きプロンプトは表示する必要がない。
したがって、設計フェーズ(「設計時間」)中、開発者は、グラフコンポーネントの特定のパラメータを「ランタイム」パラメータとして指定する。次に、そのグラフコンポーネントに関連付けられたオブジェクトは、関連するパラメータデータ(例えば、図9のパラメータグリッド1000からの情報の型)と共に記憶される。
図11は、ランタイムパラメータを使用するプロセスを要約したフローチャートである。実行時中、実行されるアプリケーションに対応するパラメータオブジェクトが検索される(例えば、リポジトリから)(ステップ1100)。そのような各オブジェクトで、ユーザ入力が示されるか否かを判断する(ステップ1102)。示されている場合、プロンプトを表示する任意の条件が満たされているか否かを判断し(ステップ1103)、これは、前のプロンプトへのユーザ入力の評価を含み得る。示されていない場合、デフォルト値が使用される(ステップ1108)。代替的には、パラメータ値は必要ないことができ(例えば、ユーザがソート機能のアクティブ化を選ばなかった場合、ソートキーは必要ない)、したがって無視し得る。その他の場合、ユーザ入力用のプロンプトが生成される(ステップ1104)。
ユーザが特定のパラメータの値を入力しない場合(ステップ1106)、パラメータのデフォルト値を選択し得る(ステップ1108)。代替的には、エラー状況が生じて、ユーザ入力がないことを示し得る。いずれのイベント(ユーザ入力がないことによるエラー状況がないと仮定して)でも、入力の変換、依存性、及び他のパラメータに基づく条件を考慮して、パラメータの最終値が決定される(ステップ1110)。
特定のパラメータへのユーザ入力が示されていないと判断される場合(ステップ1102)、環境変数又はコマンドラインパラメータ等により、パラメータ値を外部からプログラム的に供給するか否かが判断される(ステップ1112)。供給しない場合、パラメータのデフォルト値が選択される(ステップ1114)。代替的には、エラー状況が生じて、指定された型の利用可能な入力がないことを示し得る。いずれの場合(外部入力がないことによるエラー状況がないと仮定して)でも、入力の変換、依存性、及び他のパラメータに基づく条件を考慮して、パラメータの最終値が決定される(ステップ1110)。
最終パラメータ値が決定されると、任意選択的なステップとして、全ての条件付きコンポーネント(後述)は、上述した、指定された条件及びルールに従って、完全に削除するか、又はフロー(すなわち、グラフリンク又はエッジ)で置換することができる(ステップ1116)。使用可能なグラフ構造が最終化され、最終パラメータ値が決定されると、グラフは従来通りに実行される(ステップ1118)。
テスト値
ランタイムパラメータを有するグラフの作成及びテスト中、開発者をサポートするために、GDE802の好ましい実施形態は、ランタイムパラメータのテスト値もサポートする。開発者が、ランタイムパラメータを有するグラフを実行するか、又はグラフコンポーネントに影響している、土台をなすコードを見ることを望む場合、GDE802は、関連付けられたテストパラメータグリッドを表示し、そこで、ユーザは、1つ又は複数のランタイムパラメータの新しいテスト値を入力することができる。好ましくは、最後に使用されたテスト値セットは記憶され、グラフと共に保存される。
ランタイムパラメータ毎に、開発者は、所望のテスト値をテスト値列に入力する。編集フィールドを各テスト値列に関連付け得る。テスト値フィールド及び編集フィールドは、パラメータ種類がPLである場合を除き、ランタイムパラメータグリッド900でのデフォルト値フィールド及び編集フィールドと同じように挙動する。
PL式により、特定のランタイムパラメータの値をユーザに促すことが示される場合、テスト値フィールド及び編集の挙動は、関連付けられたPL式の解釈に基づく。PL式が単に、他の入力に基づいて値を導出する場合、通常モードで、ランタイムパラメータはテスト値グリッドで見えない。
ランタイムパラメータが値を得る方法を指定
パラメータがランタイムパラメータとして指定された後、対応するオブジェクトがリポジトリ804に作成される。ランタイムパラメータが、値「PL」の種類フィールド914を有する場合、パラメータのデフォルト値フィールド1008は、以下の好ましい形態を有するprompt_for疑似関数を含む。
Figure 0007090778000002
上述したように、prompt_for疑似関数は、前の入力に基づいてプロンプトを表示するか否かを判断する条件式の一部であり得る。
そのようなオブジェクトでは、ユーザインタフェースを使用して、直接入力ランタイムパラメータをユーザに提示する。好ましい実施形態では、ウェブインタフェース808がこの機能を提供する。特に、実行時中、各ランタイムパラメータオブジェクトの各prompt_for疑似関数は、ウェブインタフェース808によりパーズされて、対応するユーザプロンプトを有するウェブページ(例えば、HTMLでの)を生成する。(代替的には、そのようなウェブページは、実行時前に生成し、実行時に単に提示することができる。しかし、そのようなウェブページの実行時生成は、より大きい柔軟性を提供する。特に、ページの内容が前のユーザ入力に依存することができる)。ウェブインタフェース808は、そのようなウェブページを表示し、ユーザ入力を受信することができる従来のウェブブラウザと併せて使用される。
prompt_for疑似関数は、パラメータ値を促す方法をウェブインタフェース808に示す。特に、文字列定数であるprompt-kindパラメータは、いずれの種類のユーザインタフェース(UI)要素を提示するかを示す(テキストボックス、ドロップダウンリスト等)。キーワードのカンマ区切りリストである文字列の変更子部分は、様々な種類のプロンプトに共通する幾つかのオプションを提供する。図示の実施形態では、スペースは、変更子文字列内で有意ではない。変更子キーワードは、以下として解釈される。
・in placeというキーワードは、要素がアプリケーションのサマリレベルユーザインタフェースに直接提示されるべきであることを宣言し、より低いレベルまで「掘る」ことなく値を供給できるようにする。in placeが指定されない場合、単純な「編集」ボタンがサマリレベルインタフェースに提示され、そのボタンが、パラメータ値を供給する別のページをユーザに表示する。
・blank okというキーワードは、ユーザが値を供給する必要がないことを宣言し、アプリケーションは、妥当な方法でデフォルト値に対処する。blank okが指定されない場合、ユーザは、何らかの値を供給せずにはアプリケーションを実行することができない。
以下は、様々な種類の変更子を有するprompt_for呼び出しの幾つかの例である。
Figure 0007090778000003
このセクションの残りの部分では、様々なプロンプト種類及びそれに対応するオプションを列挙し、それぞれが、ウェブインタフェース808により生成されるウェブページでどのように見えるかを説明する。
text [size] - 従来のシングルラインテキストボックスsize文字幅を提示する(sizeが供給されない場合、テキストボックスのデフォルトをブラウザのデフォルトサイズに設定する)。
radio choice-list[description-list] - ラジオボタンの組の形態で従来の「1つを選択」プロンプトを提示し、cohice-listの各要素に1つのボタンがある。description-listが供給される場合、各選択は対応する説明でラベルされ、その他の場合、選択は、choice-listからの対応する項目の文字列形態でラベルされる。
radioplus choice-list[description-list] - ラジオのようであるが、テキストボックスの隣に追加のボタンを提示して、ユーザが、choice-listにない「書き込み」値を選べるようにする。
checkbox choice-list[description-list] - チェックボックスの組の形態で従来の「ゼロ以上を選択」プロンプトを提示し、choice-listの各要素に1つのボタンがある。description-listが供給される場合、各選択は対応する説明でラベルされ、その他の場合、選択は、choice-listからの文字列形態の対応する項目でラベルされる。
dropdown choice-list[descritpion-list, size] - choice-listの要素のドロップダウンリストの形態で従来の「1つを選択」プロンプトを提示する。descritpion-listが供給される場合、各選択は対応する説明でラベルされ、その他の場合、選択は、choice-listからの文字列形態の対応する項目でラベルされる。sizeが供給される場合、その多くの選択は一度に可視であり、その他の場合、1つのみが可視である。
multidropdown choice-list[descritpion-list, size] - choice-listの要素のドロップダウンリストの形態で従来の「ゼロ以上を選択」プロンプトを提示する。descritpion-listが供給される場合、各選択は対応する説明でラベルされ、その他の場合、選択は、choice-listからの文字列形態の対応する項目でラベルされる。sizeが供給される場合、その多くの選択は一度に可視であり、その他の場合、ブラウザのデフォルト数の項目が表示される。
key type-obj[size] - 所与のtype-objからのフィールドで構成されるキー(コレータとしても知られる)のプロンプトを提示する。キーは、size部分と同数を有することができ、このデフォルトはtype-obj内のフィールド数に設定される。図12は、キープロンプトにより生成されるグラフィカルダイアログ1200の一実施形態の図である。以下は、3入力キープロンプトのスクリプトテキストの例であり、ここで、ファイル/datasets/fixedは、ドロップダウンボックス1202に示される利用可能なキーの内容を定義する。
${prompt_for“key”, ${dataset_type“/datasets/fixed”},3}
図示の実施形態では、通常のコレータ順は昇順であるが、ユーザは、関連付けられたチェックボックス1204にチェックを入れることにより、キーの降順コレータ順を選択することができる。
filter tpye-obj - 所与のtype-objの各フィールドへの条件で構成されるフィルタ式のプロンプトを提示する。blank ok変更子はフィルタに影響を有さず、空白フィルタは「真」表現をもたらす。図13は、フィルタプロンプトにより生成されるグラフィカルダイアログ1300の一実施形態の図である。各式のテキスト編集ボックス1304に関連付けられた利用可能なフィールド名1302は、type-objにより定義される。比較値がテキスト編集ボックス1304に入力され、比較演算子(例えば、等しい、より大きい、以下)が、対応するドロップダウンリストコントロール1306から選択される。
flexifilter type-obj - フィルタプロンプトと同様であるが、各ライン上のフィールド名がドロップダウンリストから選択可能な、所与のtype-objの各フィールドへの条件で構成されるフィルタ式のプロンプトを提示する。これにより、複数の条件に対して同じフィールドを使用することが可能である(例えば、フィールドSTATE=MA又はフィールドSTATE=CA)。
rollup type-obj key[size] - 所与のキーによりロールアップ中の所与のtype-objのフィールドに基づいて、ロールアップ計算のプロンプトを提示する。ロールアップは、sizeルールと同数を有することができ、デフォルトはtype-obj内のフィールド数に設定される。変更子はロールアップに影響を有さず、空白ロールアップは、各グループの主要値のみを提供するパッケージをもたらす。図14は、ロールアッププロンプトにより生成されるグラフィカルダイアログ1400の一実施形態の図である。図示の実施形態では、ドロップダウンボックス1402の列は、利用可能なロールアップ計算関数(例えば、合算、最小、最大)を定義する。各計算に関連付けられる利用可能なフィールド名1404は、type-objにより定義される。各ロールアップルールには、ユーザが所望の式を定義するためのテキスト編集ボックス1406、ソース値が計算に酸化する基準を定義する(ブール式を通して)ための「但し」テキスト編集ボックス1408、及び計算結果を受信するフィールドを指定するための出力フィールドテキスト編集ボックス1410が関連付けられる。明確に導出することができる場合、出力フィールドの名称を指定する必要はない。
reformat type-obj[size] - 所与のtype-objのフィールドに基づいてリフォーマット計算のプロンプトを提示する。リフォーマットはsizeルールと同数を有することができ、デフォルトはtype-obj内のフィールド数に設定される。図15は、リフォーマットプロンプトにより生成されるグラフィカルダイアログ1500の一実施形態の図である。図示の実施形態では、リフォーマットプロンプトは、単に入力フィールドを同様の名称の出力フィールドにコピーするためのセクション1502を含む(チェックボックスコントロールを使用して個々に選択/選択解除されるか、又は全ての選択ボタン又は全て選択せずボタンを使用することによりまとめて)。このプロンプトの第2のセクションは、リフォーマット式を定義する(例えば、total=revenue_1-revenue_2)ことができるテキスト編集ボックス1504の列を含む。各ルールには、リフォーマットの結果を受信するフィールドを指定する出力フィールドテキスト編集ボックス1506が関連付けられる。
outputspec - 出力データセット仕様のプロンプトを提示する。表示されるコントロールは、利用可能なフォーマットオプションを提示するドロップダウンコントロールと、出力データセットの特定のインスタンスの名称を入力するテキスト編集ボックスとを含む。blank ok変更子は、出力データセット仕様に影響を有さない。
fpath starting-point - ファイルパスについてのプロンプトを提示する。プロンプトは基本的にテキストボックスであるが、ファイルパスを閲覧するためのポップアップウィンドウを表示させる「閲覧」ボタンを隣に有する。テキストボックスが非空白である場合、閲覧動作の開始点として使用され、空白の場合、starting-point引数が使用される。
rpath starting-point - リポジトリパスについてのプロンプトを提示する。プロンプトは基本的にテキストボックスであるが、閲覧用のポップアップウィンドウを表示させる「閲覧」ボタンを隣に有する。テキストボックスが非空白である場合、閲覧動作の開始点として使用され、空白の場合、starting-point引数が使用される。
radiofpath choice-list[description-list] - radioplusのようであるが、fpathスタイルボックスプラス閲覧ボタンを「書き込み」スロットに提示する。
radiorpath choice-list[description-list] - radioplusのようであるが、rpathスタイルボックスプラス閲覧ボタンを「書き込み」スロットに提示する。
条件付きコンポーネント
幾つかの実装形態は、パラメータ値及び計算されるメタデータに基づいて、コンポーネントの構造及びグラフの流れに変更を行える条件付きコンポーネントメカニズムを含む。グラフの各コンポーネントは、そのコンポーネントが実行時にグラフに表示されるか否かをコントロールする条件を有する。条件は、直接又はランタイムパラメータを通して間接的に計算することができる。条件付きコンポーネントは、グラフの最適化又は専門化等の様々な目的で使用することができる。最適化の場合、アプリケーションは、特定のデータセットからの値が使用されない場合、それらの特定のデータセットの処理を省くことができ、それにより、グラフをより効率的に実行することができる。専門化の場合、アプリケーションは、所望の詳細レベルに基づいて幾つかの異なる出力データセットの生成を条件付け得るか、又はグラフの幾つかの任意選択的な部分の1つの実行を許可し得る。
図16Aは、統合結合(MergeJoin)コンポーネント1600がファイルA及びBからのデータを結合し、結果を出力ファイル1602に出力する第1のグラフのブロック図である。図16Bは、ロールアップコンポーネント1604がファイルAからのデータを集計し、結果を出力ファイル1602に出力する第2のグラフのブロック図である。図16Cは、統合結合コンポーネント1606がファイルA及びBからのデータを結合し、ロールアップコンポーネント1608が、生成されたデータを集計し、最終結果を出力ファイル1602に出力するグラフのブロック図である。条件付きコンポーネントを使用して、これらの3つのグラフを結合して、図16Cのグラフのように最初は見えるが、厳密な構造はランタイムまで決定されない単一のグラフにすることができる。適切な条件を設定することにより、ロールアップコンポーネント1608はコネクション(フロー)で置換することができ、図16Aのグラフと同様のランタイムグラフを生成する。同様に、適切な条件を設定することにより、統合結合コンポーネント1606はファイルAへのコネクション(フロー)で置換することができ、図16Bのグラフと同様のランタイムグラフを生成する。
示される実施形態では、条件付きコンポーネントは、頂点を定義する任意のグラフコンポーネント(すなわち、入力/出力ファイル等のデータセットコンポーネント、リフォーマット若しくはソートコンポーネント等の処理コンポーネント、又はサブグラフとして知られる他のグラフ)であることができる。好ましい実施形態では、条件付きコンポーネントは、2つの特別なパラメータ:条件及び条件解釈により制御される。条件は、評価がランタイムまで延期されるブール式又は値である。示される実施形態では、値「偽」及び「0」は偽条件を指定し、他の全ての値(空を含む)は真条件を示す。条件解釈パラメータは2つの許される相互に排他的な値を有する:完全に削除及びフローで置換。
図17は、条件解釈コントロール1704を有する条件1702を提示するグラフィカルダイアログ1700の一実施形態の図である。条件解釈コントロール1704により、完全に削除解釈1706又はフローで置換解釈1708のいずれかを選択することができる。
完全に削除:この解釈を用いる場合、条件が満たされる場合、コンポーネント及びそれに接続されたフロー(すなわち、グラフリンク又はエッジ)は全てグラフから削除される。アクティブな完全に削除条件は機能的に、コンポーネント及びそれに直接接続された全てのフローをグラフから削除する。完全に削除条件は任意のコンポーネントで使用することができる。
グラフから削除される条件付きコンポーネントは、その条件付きコンポーネントの存在に依存する他の接続されたコンポーネントを「汚染」し、削除させることがある。図18は、そのような汚染が生じる状況を示すグラフ1800の図である。入力ファイルコンポーネント1802への条件が削除を示し、それに対応する条件解釈が完全に削除である場合、入力ファイルコンポーネント1802及びそれに接続されたフローは両方とも、グラフ1800から削除される。次にこれは、ソートコンポーネント1804を汚染し、ソートコンポーネント1804を削除させ、その理由は、ソートコンポーネント1804の入力は必須の入力ポートであるが、ソートコンポーネント1804の入力に接続されているデータフローはもはやないためである。次にこれは、ロールアップコンポーネント1806を汚染し、ロールアップコンポーネント1806を削除させ、その理由は、ロールアップコンポーネント1806の入力は必須の入力ポートであるが、ロールアップコンポーネント1806の入力に接続されているデータフローはもはやないためである。この「消失汚染」を止める唯一のものは、下流コンポーネントの任意選択的又は重要なポートへの接続である。したがって、入力ファイルコンポーネント1802への条件が削除を示す場合、ソート-ロールアップグラフ分岐1808は全体的に、グラフ1800から事実上、削除される。図18における結果は、元のグラフ構造の公称的に3つの入力の結合コンポーネント1810が、実行時に2つの入力の結合コンポーネントになることである。
一実装形態では、汚染(「黙示条件」としても知られる)の詳細なセマンティクスは以下である。
・コンポーネントが、必須のポートを有し、それに接続されたライブフローがない場合、そのコンポーネント及びそれに接続された全てのフローがグラフから削除される。
・コンポーネントがグラフから完全に削除される場合、そのポートに接続された全てのフローがグラフから削除される。
・コンポーネントがフローで置換される場合、コンポーネントの指定された入力ポート及び指定された出力ポート以外の全てのポートに接続された全てのフローがグラフから削除される。
・必須のインデックス付きポートが、それに接続されたライブフローを有さない場合、同じインデックスを有する対応する任意選択的なインデックス付きポートのそれぞれにつき、その対応するポートに接続されたあらゆるフローがグラフから削除される。
これらのルールの驚くべき幾つかの結果がある。例えば、任意選択的なポートのみを有するコンポーネントは、汚染により決して削除することができない。したがって、任意選択的なポートのみを有するコンポーネントは、必要に応じて明示的に削除しなければならない。
図19は、完全に削除条件付きコンポーネントを含むグラフのランタイム準備プロセスを要約したフローチャートである。条件解釈が完全に削除であり、条件が満たされない場合(ステップ1900)、条件付きコンポーネントはグラフから削除されない(ステップ1902)。条件が満たされる場合(ステップ1900)、条件付きコンポーネントは、そのコンポーネントに接続された全てのフローと共にグラフから削除される(ステップ1904)。次に、全ての「汚染された」コンポーネント及びフローは、上述したルールに従ってグラフから削除される(ステップ1906)。
フローで置換:この解釈を用いる場合、条件が満たされるとき、コンポーネントはフロー(すなわち、グラフエッジ)で置換されるべきである。フローで置換条件解釈は、追加の情報を必要とする。図17を参照すると、ユーザは、コンポーネントがグラフから削除される場合、接続する入力ポート1710(又は必須ポートのファミリ)及び出力ポート1712(又は必須ポートのファミリ)を指定する。デフォルトにより、厳密に1つの所要入力ポート又は必須ポートがあり、厳密に1つの所要出力ポート又は必須ポートがある場合、それらは指定されたフロースルー接続ポート(指定入力ポート及び指定出力ポートとそれぞれ呼ばれる)である。所要ポートは、少なくとも1つのフローを接続する必要があるポートである。
図20は、本発明の特定の実施形態でのフローで置換条件付きコンポーネントを含むグラフのランタイム準備プロセスを要約したフローチャートである。示される実施形態での特定の利用可能な入力及び出力への幾つかの依存により(CO>OPERATING SYSTEM(登録商標)で利用可能なコンポーネントに基づく)、幾つかのルールがこの実装形態及びフローで置換条件の使用に適用される。
・条件解釈がフローで置換であり、条件が満たされない場合(ステップ2000)、条件付きコンポーネントはグラフから削除されない(ステップ2002)。
・指定入力ポート及び指定出力ポートを有するコンポーネントは、その指定入力ポートに接続された厳密に1つのライブストレートフローがあり、その指定出力ポートに接続された厳密に1つのライブストレートフローがある場合のみ、フローで置換することができる(「ライブ」フローは、実行時に削除されなかったフローである)(ステップ2004)。そのような場合、コンポーネント自体はグラフから削除され、その指定入力ポートに接続されたストレートライブフロー及びその指定出力ポートに接続されたストレートライブフローは、一緒にリンクされる(ステップ2006)。削除されたコンポーネントの他のポート(すなわち、特定に指定された入力ポート及び出力ポート以外のあらゆるポート)に直接リンクされたあらゆる他のフローは、グラフから削除される。「汚染」された及び削除されたコンポーネントに接続されていたフローはいずれも、上述したように、削除される(ステップ2008)。
・フローで置換条件を有するコンポーネントが、必須入力のファミリ内の2つ以上の指定入力ポートに取り付けられる場合(ステップ2010)、そのコンポーネントは、グラフを有効にするために必要であるため、グラフから削除されない(ステップ2012)。
・所要入力へのライブファンインフローを有するコンポーネントは、特別な取り扱いを必要とする。「ライブファンインフロー」とは、コンポーネントが所要入力ポートに接続されたライブファンイン又はオールツーオールフローを有するか、又はコンポーネントが1つの所要入力ポートに接続された2つ以上のライブストレートフローを有することを意味する。そのようなコンポーネントの場合、フローで置換条件の解釈は、全てのライブ入力フローを収集する収集コンポーネントで条件付きコンポーネントを置換すべきである(ステップ2014)。次に、置換されたコンポーネントに接続されていたあらゆる「汚染」フロー及びコンポーネントは、上述したように削除される(ステップ2016)。
メタデータ伝搬の態様
グラフのメタデータは、例えば、グラフ開発者、グラフユーザ、又はグラフの別の部分からの伝搬により供給することができる。ポートのレコードフォーマット(例えば、ポートに流入又は流出するレコードのフィールド及びデータ型のシーケンス)、ソート性(sortedness)、圧縮方法、文字セット、バイナリ表現(ビッグエンディアン、スモールエンディアン)、パーテーション、コンポーネントが使用し得る計算リソース(例えば、プロセッサ、一時的なディスク空間)、データ変換、及びコンポーネントが使用し得るメモリ量等のデータ又はデータでの計算に関連付けられたメタデータを含め、様々な種類のメタデータが伝搬可能である。グラフ構築の様々な態様がメタデータの伝搬に影響を及ぼし得る。これらの態様のうちの2つについて以下説明する。
コンポーネント削除後の伝搬
幾つかの実装形態では、グラフコンポーネントの削除後にフローが生成される場合、そのようなフロー内のデータを定義するメタデータが、改訂されたグラフ内でどのように伝搬すべきかについて選択しなければならない。メタデータは、フローの一端部から利用可能であり得る。幾つかの実装形態では、フローの上流端部からのメタデータが好ましい。
フローの上流端部が削除されたコンポーネント(又は収集コンポーネントで置換されたコンポーネント)である場合、GDE802は、削除されていないコンポーネントを見つけるまで、グラフを上流に「歩く」ことによりフローのメタデータを見つける。その上流コンポーネントにより明るみに出たメタデータを使用して、生成されたフローのデータの特徴を定義する。
変換されたメタデータの伝搬
上述したように、メタデータは、ポートに関連付けられたメタデータを、別のポートのメタデータを含め、1つ又は複数のパラメータの関数として指定できるようにすることにより、変換中の内部データパスを介してであっても伝搬することができる。例えば、図30Aは、データセット3002及びデータセット3004からのデータに対して結合演算を計算するグラフ3000を示す。この例では、グラフ開発者は、メタデータをデータセットの出力ポートに供給する。次に、メタデータは、入力データセットのレコードに対して結合演算を計算する「スマート結合」コンポーネント3006に伝搬する。例えば、メタデータは、出力ポート3008から入力ポート3010に伝搬する。次に、メタデータは、「スマート結合」コンポーネント3006により変換され、「スマート結合」コンポーネント3006の出力ポート3016からフィルタコンポーネント3018の入力ポート3017に伝搬する。
図30Bは、「スマート結合」コンポーネント3006を実施するサブグラフを示す。コンポーネント3006は、結合コンポーネント3050により実行される結合演算のキーフィールドを表す値を有するkey_fieldパラメータを使用する。コンポーネント3006はまた、条件付きソートコンポーネント3054及び3056を含むための条件として、key_fieldパラメータを使用する。入力ポート3010に流入するレコードが、key_fieldで既にソートされている場合、ソートコンポーネント3054は条件により除外される。同様に、入力ポート3014に流入するレコードが、key_fieldで既にソートされている場合、ソートコンポーネント3056は条件により除外される。入力レコードのいずれかの流れがkey_fieldで依然としてソートされていない場合、ソートコンポーネント3054及び3056は、結合コンポーネント3050に流入する前にレコードをソートする。
この「スマート結合」コンポーネントを通した、変換されたメタデータの伝搬を可能にするために、グラフ開発者は、第1の入力ポート3010のメタデータinput0.metadata、第2の入力ポート3014のメタデータinput1.metadata、及びキーフィールドパラメータkey_fieldの関数として、「スマート結合」コンポーネント3006の出力ポート3016のメタデータ(例えば、フィールドを記述するメタデータ)を定義する。
output.metadata=metadata_join(key_field,input0.metadata,input1.metadata)
出力ポートメタデータは、関数引数を値にバインド(適切なコンテキストに関して)し、結果に対して関数metadata_joinを実行することにより特定される。この例では、ポート3010及び3014のメタデータは未定義であるため、伝搬したメタデータをメタデータパラメータinput0.metadata及びinput1.metadataにバインドされる。ユーザは、ポート3008から流れるレコードのフィールド「A」及び「B」を指定する出力ポート3008のメタデータを「スマート結合」コンポーネント3006の入力ポート3010に供給する。ユーザはまた、ポート3012から流れるレコードのフィールド「A」及び「C」を指定する出力ポート3012のメタデータを「スマート結合」コンポーネント3306の入力ポート3014に供給する。このユーザ供給のメタデータはポート3010及び3014に伝搬する。結合演算のキーフィールドはフィールドAであり、したがって、「正式パラメータ」key_fieldは値「A」にバインドされる。
関数metadata_joinは、まず、key_fieldパラメータの値が、input0.metadata及びinput1.metadataにより指定されるフィールドの両集合のメンバであるか否かを判断することにより、出力メタデータを特定する。メンバである場合、出力メタデータは2つのフィールドの集合の和集合である。メンバではない場合、出力メタデータは空のフィールド集合を示す。
メタデータが「スマート結合」コンポーネント3006の入力ポートに伝搬した(又は別の方法、例えば、ユーザにより供給された)後、「スマート結合」コンポーネント3006の出力ポートの変換されたメタデータは、フィールドA、B、及びCを含む。次に、この変換メタデータは、他のコンポーネントに伝搬することができる。この例では、変換されたメタデータはフィルタコンポーネント3018に伝搬する。
メタデータは、ユーザにより供給されるか、それともポート間を伝搬するかに関係なく、ユーザに表示することができる。例えば、ユーザは、入力デバイス(例えば、マウス)を使用して、メタデータ値を見るコンポーネントの部分を選択することができる。メタデータ伝搬は、そのようなユーザ選択に応答してトリガーすることもできる。
例示的なメタデータ伝搬プロセス
図31は、例示的なメタデータ伝搬プロセス3100のフローチャートを示す。プロセス3100は、例えば、グラフが変更される都度、ユーザ活動に応答して、及び/又はグラフが実行される直前に実行することができる。プロセス3100は、フローにより決定される部分順序に従って並べられるグラフ内の各コンポーネントを有する作業リスト(例えば、コンポーネントAからコンポーネントBへのフローがある場合、コンポーネントAはコンポーネントBの前に来る)を生成する(3102)。フローが2つのコンポーネント間に一意の順序を決定しない場合、コンポーネントラベルのアルファベット順を同点決着として使用し得る。これは、作業リスト内のコンポーネントに安定した順序を提供する(コンポーネントラベルが一意であると仮定して)。伝搬プロセス3100が、グラフに対して繰り返される(例えば、新しいコンポーネントの追加後)場合、新しい作業リストは、作業リストでの前のコンポーネント間の順序と同じ順序を保持する。
プロセス3100は、作業リストの冒頭から開始され、作業リスト内の各リストについて、プロセス3100は、コンポーネントを実施するサブグラフの仕様(例えば、サブグラフでのデータフロー)に基づいて、コンポーネント内のメタデータを内部伝搬する(例えば、入力ポートから出力ポートに又は出力ポートから入力ポートに)(3104)。この内部メタデータ伝搬は、非変換中のデータパスのいずれかの端部でのポート間で変換されないメタデータの変換を含む。内部メタデータ伝搬は、上述したように、グラフのパラメータ及び/又は他のポートのメタデータを参照するメタデータ定義を有するポートのメタデータを導出することも含む。プロセス3100は、そのようなメタデータ定義に直面する場合、メタデータの導出に値が必要とされるあらゆるパラメータを評価する。
作業リスト上のコンポーネントに対して内部メタデータ伝搬を実行した後、プロセス3100は、メタデータを有するコンポーネントの各ポートからメタデータを有さない関連コンポーネントのポートにメタデータを外部伝搬する(3106)。この外部伝搬によりメタデータを取得するあらゆるコンポーネントは、作業リストの末尾に移動する(3108)。プロセス3100は、作業リストの最後のコンポーネントが処理された後、終了する(3110)。
このタイプの外部メタデータ伝搬をサポートするコンポーネント間の一種の関係は、2つのコンポーネントのポート間のデータフローリンク(例えば、入力ポートから出力ポートに又は出力ポートから入力ポートに)である。
このタイプの外部メタデータ伝搬をサポートするコンポーネント間の別の種類の関係は、あるポートのメタデータが別のポートにも使用し得ることを示すリンクである。このタイプの「メタデータリンク」は必ずしもデータフローリンクに対応するわけではない。例えば、ポートは、特にいかなるポートにも関連付けられていないグラフ中のメタデータへのメタデータリンクを有することができる。
コンポーネント化サブグラフでのランタイムパラメータ
サブグラフが、別のグラフでのコンポーネントとして使用されるように「コンポーネント化」される前に、コンポーネントの入力ポート及び/又は出力ポート等のコンポーネントの様々な特徴が定義される。ランタイムパラメータを有するコンポーネントを含むサブブラフでは、ランタイムパラメータのプロンプト順を選択すべきである。グラフ中のコンポーネントは必ずしも、順次である必要はないため、ユーザを促すランタイムパラメータの複数の可能な大域的順序が存在することができる。大域的順序の幾つかは、各コンポーネントに関連付けられた元の順序ほど一貫しない。依存性を考慮に入れることが適切な場合には並べ替えながら、各コンポーネント内のパラメータの順序を可能な限り保存した、プロンプトの全域的順序を生成することが有用である。例えば、コンポーネントは、「処理されたデータをどこに記憶したいか?」と尋ねるプロンプトの前に、「いずれのデータを処理したいか?」と尋ねるプロンプトを並べ得る。いずれの順序でもプロンプトを提供することが可能であり得る場合であっても、プロンプトをこの順序で提供することが望ましいことがある。
プロンプトされるランタイムパラメータを評価するプロセスにおいて、プロンプトされないランタイムパラメータを評価することが必要になることがあるため、プロンプト順は、全てのランタイムパラメータの評価順から得られる。グラフのランタイムパラメータ(いかなるコンポーネントにも関連付けられていないグラフのパラメータを含む)の評価順を決定する一手法は、パラメータ間の依存性を表す1つ又は複数の有向非巡回グラフに基づいて、トポロジソートを実行することを含む。しかし、幾つかのトポロジソートアルゴリズムは、不必要にパラメータを並べ替え得、ランタイムパラメータに望ましくないプロンプト順を生成し得る。
ソート例1
第1の例では、パラメータソートプロセスは、2つのグラフコンポーネント:コンポーネントI及びコンポーネントIに接続されたコンポーネントIIのパラメータの初期パラメータリストを提供する。この例では、パラメータは、「コンポーネント内」依存性のみを有する。すなわち、コンポーネントのパラメータは、同じコンポーネント内の他のパラメータのみに依存する。パラメータは、以下のように定義される。
コンポーネントIは以下のパラメータを含む。
Figure 0007090778000004
コンポーネントIIは以下のパラメータを含む。
Figure 0007090778000005
パラメータが列挙される順序は、値についてユーザを促す所望の順序を定義する。初期パラメータリストは、各コンポーネントにこの「初期順序」を維持する。「序数」が各パラメータに割り当てられて、初期順序でのそのパラメータの場所を示す。以下の表は、この初期順序においてパラメータを列挙する。
Figure 0007090778000006
「依存性」列は、列挙されたパラメータが依存する他のパラメータを示す。依存性は、パラメータの評価に対して順序制約を課す。パラメータは、別のパラメータにより使用される(例えば、参照される)前に定義される必要がある。
「共通トポロジソート」アルゴリズムが、リストを通り、各パスで、ゼロ依存性を有するパラメータを順序付き出力リストに転送する。各パス後、転送されたあらゆるパラメータは、依存性列から削除される。このプロセスは、全てのパラメータが転送されるまで繰り返される。出力リスト内のパラメータの順序は、他のパラメータに依存するパラメータが、それらの他のパラメータが評価された後に評価されるような「最終順序」を表す。
この例では、最初のパスにおいて、パラメータx、q、a、及びcが出力リストに転送される。2番目のパスにおいて、パラメータy及びbが出力リストに転送される。3番目の最終パスにおいて、パラメータzが出力リストに転送される。したがって、パラメータの最終順序はx、q、a、c、y、b、zである。この順序はパラメータ依存性により課される順序制約を満たすが、パラメータを不必要に並べ替えない。この例では、初期順序も、パラメータ依存性により課される順序制約を満たす。
順序制約を満たすグラフのパラメータの評価順を決定する他の手法は、初期順序を尊重する。例えば、幾つかの手法は、順序制約を満たすようにパラメータを順序づけ、初期順序に基づく基準に従って順序を選ぶ。基準は、順序を初期順序に近いまま保つ(例えば、初期順序への変更に基づくメトリックを最小化する)ことを優先する様々な基準のいずれかを含むことができる。幾つかの場合、複数の順序が基準に従って所与の基準を等しく良好に満たすため、一意の「最良」順序がないことがある。
初期順序を尊重する手法の一例は、「トポロジ変更ソート」手法である。この手法では、初期順序に基づく基準は、いかなる未転送パラメータにも依存しない先行パラメータが転送される前に、初期リストから転送されたパラメータ数を最小化するというものである。換言すれば、「トポロジ変更ソート」は、転送されたパラメータを、ゼロ依存性を有する次のパラメータを転送する前に、依存性列から削除する。上記例では、「トポロジ変更ソート」手法は、初期順序と同じ最終順序x、y、z、q、a、b、cを生成する。
初期順序を尊重したトポロジ変更ソートプロセス
両方とも各パラメータに割り当てられた序数により決定される初期順序を尊重する、2つの例示的な「トポロジ変更ソート」プロセスの擬似コードを以下に与える。2番目のプロセスは、幾つかの場合、時間効率を改善するような最適化を含む。プロセスは、パラメータについて入力データから生成されるデータ構造を操作する。
順序付けるN個のパラメータがあると仮定すると、入力データは、一意のパラメータ名、名称付けられたパラメータが依存するパラメータセット(「依存性セット」と呼ばれる)、及び名称付けられたパラメータに関連する情報を記憶する任意選択的な属性データオブジェクトからなるN個の三つ組のリストを含む。
この入力データには、「依存性グラフ」と呼ばれるパラメータ間の依存性を表す1つ又は複数の有向非巡回グラフが関連付けられる。一意の各パラメータ名は、依存性グラフ内のノードに対応し、関連付けられた依存性セットは、他のノードからそのノードへのリンクのセットに対応する。したがって、リンクは、第1のパラメータの第1のノードから、第1のパラメータに依存する第2のパラメータの第2のノードを指す。代替的には、リンク方向とパラメータ依存性との対応を逆にすることができる。
出力データ構造result_listは、パラメータが、初期順序に近い状態を保つことを優先しながら、別のパラメータの評価に使用される前に評価されるように(必要に応じて)並べ替えられた入力データからのN個のパラメータのリストを含む。出力データ構造result_listを生成するために、プロセスは、パラメータを1度に1つずつ作業データ構造param_listから出力データ構造result_listに転送することにより、パラメータを「なくす」。出力データ構造は、全てのパラメータがなくなった後に完成する。
第1の「トポロジ変更ソート」プロセスは2つのフェーズを含む。第1のフェーズでは、プロセスは、ソートされた出力データ構造に使用するために、入力データに基づいて作業データ構造を構築する。第2のフェーズでは、プロセスは、これらの作業データ構造により表される依存性制約に従って、パラメータを繰り返しソートしてなくす。
プロセスが第1のフェーズにおいて構築する作業データ構造の幾つかは、ディクショナリであり、これは、ハッシュ法に基づくデータ構造である。ディクショナリ内の項目には、O(logN)時間で効率的にアクセスすることができる。以下の例示的なデータ構造が、第1のフェーズにおいて構築される。
parm_list[index]:番号インデックスが付与された非消失パラメータ名の順序付きリスト(ここで、インデックス=0はリスト中の最初の項目に対応する)。このデータ構造は「動的」である(すなわち、プロセスの実行中に変化する)。リストは、項目がリストの中央から削除される場合、削除された項目後の項目のインデックスはそれに従ってシフトするように、位置によりインデックス付与される。
n_dependencies_dict[name]:パラメータ名(name)をキーとしたディクショナリであり、エントリは、キーとなるパラメータが依存するパラメータ数を含む。このディクショナリは動的である。
dependers_dict[name]:パラメータ名(name)をキーとしたディクショナリであり、エントリは、キーとなるパラメータに依存するパラメータセットを表すディクショナリ(これもパラメータ名をキーとする)である。このディクショナリは「静的]である(すなわち、プロセスの実行中に変化しない)。
order_doct[name]:パラメータ名(name)をキーとしたディクショナリであり、初期順序でのパラメータの順序位置である0~N-1の範囲の整数を記憶する。このディクショナリは静的である。
attribute_dict[name]:パラメータ名(name)をキーとしたディクショナリであり、キーとなるパラメータの任意選択的な属性データオブジェクトを記憶する。このディクショナリは静的である。
result_list[index]:番号インデックスが付与されたプロセスの出力を表すパラメータ名及び属性の順序付きリストである(ここで、インデックス=0はリスト中の最初の項目に対応する)。このデータ構造は最初空である。このデータ構造は動的である。
プロセスの時間効率を分析するために、依存性グラフの平均「度」(又はノードからのリンク数)がzであると仮定する。これらのデータ構造の構築には、O(Nz)時間がかかるn_dependencies_dict及びdependers_dictを除き、O(N)時間がかかる。
第2のフェーズにおいて、プロセスは、まず、依存する非消失パラメータの数により(すなわち、パラメータのn_dependencies_dictの値により)最低から最高にパラメータを順序付け、次に、パラメータの順序により(すなわち、order_dictの値により)最低から最高に順序付けるソート基準by_n_deps_and_orderに従って、param_listデータ構造内のパラメータをソートする。次に、プロセスは、ソートされたparam_listにおいて最初のパラメータを消す。このパラメータのn_dependencies_dictの値はゼロであるべきである。(ソートされたparam_list中の最初のパラメータのn_dependencies_dictの値がゼロではない場合、エラーがフラグ付けられる)。
パラメータを消すために、プロセスは、パラメータをresult_list(対応するあらゆる属性と共に)に添付し、そのパラメータに依存する全てのパラメータ(すなわち、dependers_dict中のパラメータ)の依存性カウント(すなわち、n_dependencies_dictの値)を1だけデクリメントする。最後に、パラメータはparm_listから削除される。結果として最初になるパラメータのこのソート及び消失は、全てのパラメータがなくなるまで繰り返される。
以下は、消失手順の疑似コード定義である。
Figure 0007090778000007
消失手順の引数はリスト(値は、例えば、param_listである)及びインデックスである。関数result_list.appendは、位置インデックスにおいて示されたリスト項目をそれに関連付けられた属性と共にresult_listに添付する。次に、手順は、消失したパラメータをキーとしたdependers_dictデータ構造のメンバである、消失したパラメータに依存する各パラメータのn_dependencies_dictの値をデクリメントする。次に、手順は、listからそのパラメータを削除する。消失手順の実行時間はO(zlogN)である。
以下は、第1の「トポロジ変更ソート」プロセスのソート/消失ループの疑似コードである。
Figure 0007090778000008
プロセスはまず、上述したソート基準by_n_deps_and_orderに従ってparam_listのパラメータを順序付ける関数parm_list.sort(by_n_deps_and_order)を使用して、param_listの初期ソートを実行する。次に、プロセスは消失手順を実行し、その後、param_listが空になるまで、param_listの別のソートを実行する。プロセスは、param_list内の最初のパラメータ(インデックス=0を有する)への依存数がゼロになることを確実にするためにチェックする。ゼロではない場合、プロセスはそのパラメータを削除し、循環エラーを記録し、継続する。ソートはO(N\logN)かかり、ループ範囲はNであり、したがって、ループの全体実行時間の推定はO(N2logN)である。
第2の「トポロジ変更ソート」プロセスは、z<<Nであるように依存性グラフが疎である場合を利用する。1回の初期ソート後、プロセスは、いかなる他のパラメータにも依存しないパラメータのリスト候補のソート性を維持することができる。これは、この予期される実行時間を後述するように短縮する。
以下は、第2の「トポロジ変更ソート」プロセスの疑似コードである。
Figure 0007090778000009
プロセスはまず、上述したソート基準by_n_deps_and_orderに従って、param_listのパラメータを順序付ける関数parm_list.sort(by_n_deps_and_order)を使用して、param_listの初期ソートを実行する。次に、プロセスは、3つのセクション(「#section 1」、「#section 2」、及び「#section 3」と記される)を有するループを実行する。
セクション1において、プロセスは、ゼロ依存性を有するパラメータのみを含む候補リストを構築する。プロセスは、parm_list中の全てのパラメータをスキャンし、それらを候補に添付し、相対順序を保存する。
セクション2において、プロセスは、候補からのパラメータがなくなり、新しいパラメータが候補に統合されるループを実行する。this_parmとして保存される候補中の第1のパラメータは、候補からなくなり、param_listから削除される。関数get_new(this_parm)は、新たに消えたthis_parmでのdependers_dictのメンバであり、ゼロ依存性のままであるパラメータの名称のリストを返す。次に、最後の依存性がなくなったパラメータを表すこれらのパラメータは、by_n_deps_and_orderに従ってソートされ(それぞれの序数に従って並べられることを保証するために)、候補に統合される。したがって、候補リストは、序数によりソートされたゼロ依存性パラメータのリストのままである。
例えば、2つのパラメータが互いに関して定義される場合に生じる「循環エラー」がある場合のみ、セクション3に入る。この場合、プロセスは、parm_listを再びソートし、parm_list中の最初のパラメータは、非ゼロ依存性を有する場合、削除され、ループはセクション1から繰り返される。
循環エラーがないと仮定すると、Nパラメータリストであるparm_listは、最初のみソートされ、その結果、ソート時間はO(NlogN)である。その後、ソートは、候補リストの最上部にあるパラメータをなくした結果生成される、新たに生成されるゼロ依存性パラメータのはるかに小さいリストに対してのみ行われる。このリストのサイズはz未満であり(平均で)、その結果、ソート時間はO(zlogz)であり、統合時間はO(z)である。したがって、ループの一反復はO(zlogz)であり、総時間はO(Nzlogz+NlogN)である。zがNの増大に伴って増大しない場合、この時間は事実上、O(NlogN)である。
ソート例2
別の例では、パラメータソートプロセス(例えば、第1又は第2の「トポロジ変更ソート」プロセス)は、図32Aに示されるように、グラフコンポーネント3202、3204、及び3206を有するグラフ3200のランタイムパラメータの初期リストを決定する。グラフ3200は、入力データセット3210の出力ポート3208及び出力データセット3214の入力ポート3212に関連付けられたランタイムパラメータも有する。この例では、パラメータは、「コンポーネント内」依存性及び「コンポーネント間」依存性の両方を有する。すなわち、コンポーネントのパラメータは、同じコンポーネント内のパラメータに依存すると共に、他のコンポーネント内のパラメータに依存する。この例では、コンポーネント間依存性は、幾つかのパラメータが依存するメタデータの伝搬を可能にするコンポーネント間のフローに起因して生じる。
依存性は、図32Aにおいて、第1のパラメータ又はポートから第2のパラメータ又はポートへの点線矢印で示される。ポートへの矢印は、リンクされたパラメータの値がそのポートから下流ポートに伝搬することを示す。ポートからの矢印は、値が上流ポートからリンクされたパラメータに伝搬することを示す。第1のパラメータから第2のパラメータへの矢印は、第2のパラメータの値が第1のパラメータの値に依存(例えば、参照)することを示す。
図32Bは、グラフ3200に基づくパラメータp0、p1、p2、p4、p5、及びp6間の順序制約を表す依存性グラフ3250を示す。図32Cは、グラフ3200に基づくパラメータp3、p7、p8、及びp9間の順序制約を表す依存性グラフ3252を示す。
パラメータソートプロセスは、グラフ3200での要素の配置の順序に従って、様々なグラフ要素の10個のパラメータp0、p2、...、p9のそれぞれに序数を割り当てる。図32Aでは、グラフ3200に追加される(例えば、GDE802を使用してユーザにより)最初のグラフ要素は、パラメータp0、p1、及びp2を有するコンポーネント3202である。追加される2番目の要素は、パラメータp3、p4、及びp5を有するコンポーネント3206である。追加される3番目の要素は、パラメータp6を有するデータセット3210である。追加される4番目の要素は、パラメータp7を有するデータセット3214である。追加される最後の要素は、ランタイムパラメータを有さないデータセット3216である。以下の表は、割り当てられた序数により定義される初期順序でパラメータを列挙する。
Figure 0007090778000010
様々な処理段階でのparam_list及びresult_list中のパラメータの以下のリストは、上述した第1の「トポロジ変更ソート」プロセスに対応する。param_listは、各段階においてソート基準by_n_deps_and_orderに従ってソートされて示される。
Figure 0007090778000011
様々な処理段階での候補及びresult_list中のパラメータの以下のリストは、上述した第2の「トポロジ変更ソート」プロセスに対応する。パラメータは各段階で同じ順序のままであるため、段階間で候補をソートする必要はない。
Figure 0007090778000012
したがって、図33を参照すると、「トポロジ変更ソート」プロセス3300は、入力として、ランタイムパラメータの値をユーザに促すための所望の第1の順序3302及びパラメータの順序制約3304(例えば、依存性グラフ3350及び3352)をとる。プロセス3300は、所望の第1の順序3302に従って順序制約を満たすパラメータセットの新しい順序3306を提供する。
典型的な使用
通常、ユーザは、ウェブインタフェース808の前に座り、リポジトリ104において、実行しようとするアプリケーションのグラフを見つける。アプリケーショングラフに関連付けられた全てのオブジェクトをスキャンすることにより、ウェブインタフェース808は、ユーザがアプリケーションのランタイムパラメータの値を指定することができるウェブページフォームを生成する。全てのランタイムパラメータが指定されると、アプリケーションとパラメータ設定との組合せはジョブとして一緒にされ、エグゼクティブ810による実行にスケジュールされる。ジョブを実行するとき、エグゼクティブ810は、既知の方式での並列オペレーティングシステム806の下における実行のためにアプリケーションをキューに入れる。並列オペレーティングシステム806は、追跡情報及びジョブステータスを収集し、この情報をリポジトリ804に記憶し、それにより、ユーザ及び管理者は、ジョブの進行及び実行を追跡することができる。

図21は、ランタイムパラメータがないロールアップアプリケーションを表すグラフ2100の図である。このグラフは、各種のアカウント数を計算し、結果を出力ファイルに書き込む。このアプリケーションのあらゆる態様は、グラフを作成した開発者によって決定されている:入力ファイルコンポーネント2102の名称、入力データのフォーマット、ハッシュロールアップコンポーネント2104でのデータのロールアップに使用されるキー及び変換ルール、出力フォーマット、並びに出力ファイルコンポーネント2106の名称。ユーザは、厳密に定義されたようにこのグラフを実行することのみ可能である。
図22は、図21のロールアップアプリケーションのランタイムパラメータ化バージョンを表すグラフ2200の図である。このアプリケーションのデータフローグラフ構造は、非ランタイムパラメータ化バージョンにかなり類似するが、アプリケーションははるかに柔軟である。ランタイムパラメータを通して、エンドユーザは、抽象入力データセット2202(入力ファイル名及びフォーマットが導出される保存オブジェクト)の名称、ハッシュロールアップコンポーネント2204のロールアップキー及びロールアップルール、並びに出力ファイルコンポーネント2206の名称を指定し得る。
図23は、図22のアプリケーション例のランタイムパラメータグリッド2300を表すグラフィカルダイアログの一実施形態の図である。これは、図9に示されるパラメータグリッドの入力済みバージョンである。なお、デフォルトパラメータの数は、上述したように、prompt_for疑似関数を使用して定義され、したがって、ウェブインタフェース808を通したユーザ入力を必要とする。このグラフの外観は、非ランタイムパラメータ化アプリケーショングラフと殆ど変わらないが、1つ又は複数のパラメータグリッド(又は他の適するコントロール)により、開発者は、グラフの実行を制御する全てのパラメータを完全に追跡することができる。
図24Aは、図23のパラメータグリッド2300内の情報からウェブインタフェース808により生成されるフォーム2400を表すグラフィカルダイアログの一実施形態の図である。この例では、フォーム2400は、ユーザ入力の4つのランタイムパラメータを提示する:入力データセットリポジトリパス2402、ロールアップキー2404、ロールアップルール2406、及び出力パス2408。図17Bは、ユーザがパラメータ値を入力した図24Aのフォーム2400の図である。直接入力及び/又はランタイムパラメータ2402~2408に関連付けられた編集又はブラウザ制御ボタンを使用して、ユーザは、関連付けられたグラフを実行するための対応するパラメータ値2410~2416を提供する。
図25は、ランタイムパラメータ化ロールアップ及び結合アプリケーションを表すグラフ2500の図である。図26は、図25のアプリケーション例のランタイムパラメータグリッド2600を表すグラフィカルダイアログの一実施形態の図である。ここで、アプリケーションの幾つかの態様はパラメータ化されているが、結合キー及び入力データセットを含め、大半は固定されたままである。図27は、図26のパラメータグリッド2600内の情報からウェブインタフェース808により生成されるフォーム2700を表すグラフィカルダイアログの一実施形態の図である。なお、ロールアップへの入力タイプは、トップレベルフォームが表示されるときには分かっているため、ロールアップルール2702は現場でプロンプトすることができる。
図28は、ランタイムパラメータ化ロールアップ-結合-ソートアプリケーションを表すグラフ2800の図である。図25の例と同様であるが、条件付きソートコンポーネント2802がグラフ2800に追加されている。図29は、図28に示されるアプリケーション例のランタイムパラメータ化グリッド2900を表すグラフィカルダイアログの一実施形態の図である。sort_keyランタイムパラメータ2902は、ソートが望ましいことをユーザが示す場合のみ、プロンプトされる。この効果を得るために、開発は、sort_keyランタイムパラメータ2902のデフォルト値2904のif条件付きテスト内にprompt_for疑似関数を配置する。if条件付きテストは、第2のランタイムパラメータdo_sort2906を参照する。do_sortパラメータ2906のデフォルト値フィールド2908及び説明フィールド2910は、テキストプロンプト「データをソートすべきか?」に対する真/偽又はイエス/ノーの答えについてユーザに尋ねるラジオプロンプトを生成するために定義される。do_sortパラメータ2906に提供された値が「真」である場合、ソートコンポーネント2802は、実行時にグラフの一部として含まれることになる。その他の場合、ソートコンポーネント2802は、指定された条件解釈に応じて、グラフから完全に削除されるか、又はフローで置換されることになる。
スクリプト実施
GDE802は、パラメータ化グラフの構築に役立つが、フォームベースのインタフェースを提供しようとする非グラフプログラムがあることがある。アプリケーションレベルPL及びリポジトリ804を使用して、任意のシェルスクリプトをパラメータ化することができる。例えば、アプリケーションの説明は、以下と同様の構造を有するファイルに書き込むことができる。
Figure 0007090778000013
一般コンピュータ実施
本発明は、ハードウェア、ソフトウェア、又はそれら両方の組合せ(例えば、プログラマブル論理アレイ)で実施し得る。別段のことが指定される場合を除き、本発明の一環として含まれるアルゴリズムは本質的に、いかなる特定のコンピュータ又は他の装置にも関連しない。特に、様々な汎用マシンが、本明細書の教示に従って記述されたプログラムと併用してもよく、又は必要とされる方法ステップを実行するようにより専用化された装置を構築することがより好都合であることもある。しかし、好ましくは、本発明は、少なくとも1つのプロセッサ、少なくとも1つのデータ記憶システム(揮発性及び不揮発性メモリ及び/又は記憶要素を含む)、少なくとも1つの入力デバイス又はポート、及び少なくとも1つの出力デバイス又はポートをそれぞれ含む1つ又は複数のプログラマブルコンピュータシステムで実行される1つ又は複数のコンピュータプログラムで実施される。プログラムコードは、プロセッサで実行されて、本明細書に記載の機能を実行する。
そのような各プログラムは、任意の所望のコンピュータ言語(機械、アセンブリ、又は高水準手続き型、論理型、又はオブジェクト指向型プログラミング言語を含む)で実施されて、コンピュータシステムと通信し得る。いずれの場合でも、言語はコンパイル型又はインタープリタ型言語であり得る。
そのような各コンピュータプログラムは、好ましくは、汎用又は専用プログラマブルコンピュータにより可読な記憶媒体又はデバイス(例えば、固体状態、磁気、又は光学媒体)に記憶され、記憶媒体又はデバイスがコンピュータシステムにより読み取られた場合、本明細書に記載の手順を実行するように、コンピュータを構成し動作させる。本発明のシステムは、コンピュータプログラムが構成されたコンピュータ可読記憶媒体として実施されるものとして見なすこともでき、記憶媒体は、コンピュータシステムを特定の予め定義された方式で動作させて、本明細書に記載の機能を実行させるように構成される。
本発明の幾つかの実施形態について説明した。それにもかかわらず、本発明の趣旨及び範囲から逸脱せずに、様々な変更形態をなし得ることが理解される。例えば、上述した幾つかの機能ステップは、全体プロセスに実質的に影響せずに、異なる順序で実行し得る。例えば、図11のステップ1102及び1112は、逆の順序で実行し得る。したがって、他の実施形態も以下の特許請求の範囲内にある。
グラフとして表現される計算の実行
計算基板の概説
本発明により、グラフとして表現される計算を実行するグラフ実行システム及びグラフ実行方法は、多くの場合、以下の一般に利用可能な設備を有する計算環境又は計算基板で使用される:通信チャネル、データストア、プロセス制御及びデータアクセス方法。そのために、グラフ実行システム及びグラフ実行方法について、そのような基準基板を参照して説明するが、システム及び方法はそのような基板に限定されない。
通信チャネルについて、基準基板は、通信チャネルを作成及び破壊し、システム又は方法が分散環境で使用される場合、リモートプロセッサでそれを行う設備を提供する。そのような通信チャネルは、同じプロセッサ上の2つのプロセス間又は異なるプロセッサ上の2つのプロセス間でデータを伝送するように機能し得る。幾つかの種類の通信チャネルを提供し得る。データストアに関して、基準基板は、データストアを作成し、システム又は方法が分散環境で使用される場合、リモートプロセッサでそれを行う設備を提供する。データストアは、ジョブ間又は処理段階間でデータを保存するメモリである。基板は、プロセスがデータストアの内容を読み/書きできるようにするメカニズムも提供する。幾つかの場合、基板は、プロセスがリモートノードに配置されたデータストアの内容を読み/書きできるようにするメカニズムを提供し得るが、そのような設備は本発明により必要とされない。プロセス制御に関して、基板は、プロセスを開始し、実行を終了したときを特定し、プロセスが通常通り終了したか否かを判断する設備を提供する。基板は、システム又は方法が分散環境で使用される場合、リモートプロセッサでプロセスを開始する設備を提供する。プロセスを開始する動作は、実行するプログラムの名称及びアクセスされるあらゆるファイル又は通信チャネルの識別子を含め、パラメータを渡すことを可能にしなければならない。データアクセス方法に関して、基板は、基板で実行中のプロセスが使用し得るデータアクセス方法の設備を提供する。
有用な基板は、様々なバージョンのいずれかのUNIXオペレーティングシステムにより提供される基板の拡張として開発し得る。UNIXオペレーティングシステムは、2つのタイプの通信チャネルを提供する:名前付きパイプ及びTCP/IPストリーム。名前付きパイプとは、同じノード上のプロセス間でデータを伝送するのに使用し得るポイントツーポイント通信チャネルである。(「ノード」という用語は、場合により複数のプロセッサ及び記憶デバイス又はデータストアを有するが、1つのプールの共有メモリを有するコンピュータを指す)。名前付きパイプは、ファイルシステム内のパスにより識別される。TCP/IPストリームとは、TCP/IPネットワーク(例えば、インターネット)の任意の場所にある2つのプロセス間でデータを伝送するのに使用し得るポイントツーポイント通信チャネルである。TCP/IPストリームを確立するには、2つのプロセスが接続を確立するプロトコルを使用する必要がある。多くのそのようなプロトコルは、使用されているが、大半は、システムにより必要とされるピアツーピア接続ではなく、クライアント-サーバ接続の確立に向けられている。
拡張基板は、共有メモリと呼ばれる1つの追加のタイプのチャネルを提供する。共有メモリは、既知のように、複数のプロセスによりアクセス可能であり、データの伝送に使用し得るメモリのプールである。共有メモリチャネルは、アクセスを同期するメカニズムを含む。共有メモリは、同じノード上のプロセス間のデータ伝送に適用可能であり、名前付きパイプに効率的な代替物である。
本発明と併用するために、拡張基板のTCP/IP接続プロトコルは、ピアツーピアリンクに適するべきである。そのようなプロトコルでは、エンティティは「ストリーム識別子」を作成し、ストリーム識別子を受信するように所望のストリームの両エンドポイントを準備する。2つのエンドポイントは、ストリーム識別子を基板に与え、それに応答して、TCP/IPストリームへの接続を受信する。同様のメカニズムを使用して、共有メモリ通信チャネルを確立する。そのようなプロトコルの作成は、当技術分野で周知である。
UNIXオペレーティングシステムは、3つのデータアクセス方法を提供する:ファイルインタフェース、ストリームインタフェース、及びファイル記述子インタフェース。ファイルインタフェースを用いて、プログラムにファイルの名称を提供し得、次に、プログラムは、ファイルを開き、それから読み出し、それに書き込み、その中で検索し得る。ストリームインタフェースを用いて、プログラムには、ファイルの名称又は名前付きパイプを提供し得、次に、プログラムは、それを開き、それから読み出し、又はそれに書き込み得る。ストリームインタフェースは、シーク動作又はファイルのみに適用可能な他の動作の使用を許さない。ファイル記述子インタフェースを用いる場合、ファイル記述子(例えば、番号により識別される)は、プログラムが呼び出される前に、ファイル、名前付きパイプ、又はTCP/IPストリームにバインドし得る。次に、プログラムは、ファイル記述子から読み出すか、又はファイル記述子に書き込み得る。これはストリームインタフェースと同様であるが、ストリームインタフェースを用いる場合、ストリームはプログラム外で開かれる。すなわち、プログラムが呼び出される前に開かれる。
本発明と併用するために、拡張基板は、1つの追加のアクセス方法:ストリームオブジェクト接続(SOC)を提供する。「ストリームオブジェクト」が、ファイルの名称若しくは名前付きパイプ又はTCP/IPストリーム若しくは共有メモリチャネルの作成に使用される識別子であり得る「ストリームオブジェクト識別子」(一意の文字列)、「通信方法名」、及び「チャネル/ファイル識別子」を拡張基板に提示することにより作成される。呼び出し側は、ソース及び宛先が配置されるノードの識別子も提供しなければならない。
UNIXオペレーティングシステムは、1種のデータストア:ファイルを提供する。ファイルとは、通常、ディスクに記憶されるバイトシーケンスである。ファイルは、ファイルシステム中のパス及びホストを識別する識別子、すなわち、ファイルが存在するノードにより識別される。
UNIXオペレーティングシステムは、プロセス制御を提供する。プロセスを開始するために、以下の情報が提供される:実行するプログラムの名称、任意のコマンドライン引数、及びファイル記述子の任意のバインド。コマンドライン引数は、プログラムによりアクセスされるファイルの名称及び名前付きパイプを含み得る。ファイル記述子の各バインドは、ファイル記述子番号と、ファイル若しくは名前付きパイプを識別するパス又はTCP/IPストリームを識別する補助チャネルのいずれかとからなる。更に、コマンドライン引数は、環境変数の値を含み得、環境変数は一般に、特定のリソースを配置し得る場所を記述するため、又は実行オプションを構成するためにUNIXプログラムにより要求される。
グラフの概説
本発明のシステムは、これよりそれぞれ説明するプロセス頂点の組、ファイル頂点の組、及びデータリンクの組の状態変数における計算の状態を追跡する。これらの構造を使用したシステムの動作について後に説明する。
本発明の概念の幾つかを示すために、従来技術による例を使用する。図34Aは、従来技術の給与システムの簡略例を通るデータフローを示す。この例への入力は、全従業員の永久レコードを含む旧マスタファイル3410及び1週間分のタイムシートを含む更新ファイル3412である。旧マスタファイル3410は従業員IDによりソートされる。グラフは以下のデータフローを示す。
(1)更新ファイル3412がソートされる(ステップ3414)。
(2)更新がチェックされ(ステップ3416)、不良レコードは不良レコードファイル3418に入れられる。
(3)ステップ3416からの更新及び旧マスタファイル3410が処理され(ステップ3420)、新しいマスタファイル3422及び給与3424の組を生成する。
プロセス頂点
プロセス頂点は以下の情報を含む:
・プロセス頂点識別子、
・プログラムテンプレート、
・作業ディレクトリ(すなわち、スクラッチファイルを作成し得るディレクトリ)を識別する作業ディレクトリ識別子、及び
・作業ノード(すなわち、処理が行われるノード)を識別する作業ノード識別子、
・以下の値の1つを有する状態変数:ディセーブル、イネーブル、実行可能、非実行可能、又は完了(最初はディセーブル)。
・頂点がアダプタ頂点(後述)である場合を示すフラグ。
以下の表は、図34Aに示されるソートプロセス、チェックプロセス、及び処理プロセス(プログラム)の3つのプロセス頂点の内容を示す。
Figure 0007090778000014
ファイル頂点
ファイル頂点は、ファイルに関連し、以下の情報を含む:
・ファイル頂点識別子、
・データノード識別子、
・データファイル識別子、
・ファイルにアクセスしようとするプログラムが使用し得る作業ノード(これは通常、データノードと同一である)を識別する作業ノード識別子、
・ファイルにアクセスしようとするプログラムがどこでスクラッチファイル(これは通常、データファイルと同じファイルシステム内にある)を作成し得るかを識別する作業ディレクトリ識別子、及び
・以下の値の1つを有する状態変数:完成、未完成(最初は未完成)。
計算基板がファイル以外のデータストアを提供する場合、ファイル頂点内の情報は、データストアのタイプを示すインジケータ並びにその識別及び使用に必要な情報を含むように拡張し得る。
以下の表は、図34Aのグラフに示されるファイルの5つのファイル頂点の内容を示す。
Figure 0007090778000015
データリンク
データリンク(又は単に略して「リンク」)は以下の情報を含む:
・ソース頂点 - ファイル頂点又はプロセス頂点のいずれか、
・ソースポート識別子 - ソースがファイル頂点の場合、出力のみが許される、
・宛先頂点 - ファイル頂点又はプロセス頂点のいずれか、
・宛先ポート識別子 - 宛先がファイル頂点である場合、入力のみが許される、
・非バインドであり得るか、又はファイル、名前付きパイプ、TCP/IP、又は共有メモリ等の通信チャネルタイプの名前であり得る通信方法識別子(最初は非バインド)、及び
・非起動又は起動のいずれかであり得る状態変数(最初は非起動)。
2つ以上のデータリンクを所与のファイル頂点又はプロセス頂点の所与のポートに取り付け得る。
図34Aでは、接続矢印は、プロセスとファイル頂点との間のリンクを図で示す。リンクの概念には、本発明ではより具体的な形態が与えられる。図34Bを参照すると、グラフ3430は、図34Aに示されるグラフ3400から本発明により導出されるプロセス頂点、ファイル頂点、及びデータリンクを示す。
以下の表は、グラフ3430に示される7つのデータリンク3432、3434、3436、3438、3440、3442、及び3444を表にしたものである。
Figure 0007090778000016
プログラムテンプレート
プロセス頂点はプログラムテンプレートを含む。プログラムテンプレートは、プログラムについての2つの基本的な種類の情報を含む:(1)プログラムの名称、コマンドライン引数、及び環境変数等のプログラムを呼び出すために必要な情報、並びに(2)プログラムがデータにアクセスする手段を記述するポート記述子のアレイ。呼び出し情報の厳密な形態は計算基板に依存する。説明したUNIXベースの基板の場合、プログラム名は、実行可能ファイルの名称に、スペースで区切られた一連の文字列からなるコマンドライン引数を加えたものである。これらの文字列の幾つかは、「$portname」の形態であり得、ここで、「portname」は、テンプレート内のポートの1つの名称であり、そのポートは、ファイルインタフェース又はストリームインタフェースデータアクセス方法を使用しなければならない。この場合、文字列「$portname」は、呼び出し時、そのポートに接続されたファイルの名称又は名前付きパイプで置換される。
以下の表は、図34Bのグラフ3430に示される3つのプログラム(プロセス)の例示的なプログラムテンプレートの内容を示す。
Figure 0007090778000017
プログラムを呼び出すために必要な情報は、2つの形態で提供し得る。第1に、この情報は上記表に示されるように、プログラムテンプレート内に明示的に記憶し得る。第2に、この情報は動的に生成し得、その場合、情報を生成するルーチンのアドレスは、プログラムテンプレートに記憶される。
プログラムテンプレート内のポート記述子は、上記表中の一番右側の3つの要素として示される以下の情報を含む:
・ポートのポート識別子、
・ポートが入力に使用されるか、それとも出力に使用されるかについての指示、及び
・いずれの通信方法がポートで許容可能であるかを示す、ReqsFile、ReqsNmaedPipe、ReqsFD、又はReqsSOC(「Reqs」は「要求(Requires)」を表す)等の許容可能な方法のコード。
これらの許容可能な方法コードは、計算基板によりサポートされるデータアクセス方法を指す。
ドライバプログラム
図35を参照すると、ドライバプログラム3500(又は単に略して「ドライバ」)は、ユーザインタフェース3504を通してユーザ3502から受信される入力に基づいて、グラフを示す手段を提供する。特定のグラフを表す1つ又は複数のグラフデータ構造3506(例えば、図34Bに示される等)は、ドライバ3500により生成される。次に、ドライバ3500のグラフ実行制御機能3508は、ドライバ3500に以下の外部制御3510機能を任意の順序で、外部プロセス3512と対話するために必要な頻度実行できるようにする:
・プロセス頂点の作成、
・ファイル頂点の作成、
・任意の対の頂点(又はいずれかの種類)間のデータリンクの作成、
・ディセーブルからイネーブルへのプロセスの現在状態の変更、及び
・グラフを実行させること。
ドライバ3500は最終的に、ユーザ3502により行われる要求に応答して、ユーザインタフェース3504を通してユーザ3502により提供される情報を使用して、これらの動作を実行する。ユーザ3502は、グラフィカルユーザインタフェースを通して直接、ドライバ3500に入力を提供している人物であり得る。代替的には、ユーザ3502は、例えば、オブジェクト指向又は手続き型インタフェースを通してドライバ3500を制御する別個のプログラムであり得る。このようにして、ユーザ3502は、ドライバ3500を使用して、グラフを構築しグラフの実行を制御し得る。
ドライバ3500は、ユーザ3502が識別子、プログラムテンプレート、作業ノード、及び作業ディレクトリを提供した場合、グラフのプロセス頂点を作成し得る。作業ディレクトリには、作業ノードに基づいてデフォルト値を与え得る。
ドライバ3500は、ユーザ3502が識別子、データノード、データファイル名、作業ノード、及び作業ファイル名を提供した場合、グラフのファイル頂点を作成し得る。作業ノードのデフォルトは、好ましい実施形態では、データノードに設定される。作業ファイル名には、作業ノード及び/又はデータファイル名に基づいてデフォルト値を与え得る。
ドライバ3500は、ユーザ3502がソース頂点、宛先頂点、ソースポート識別子、及び宛先ポート識別子を提供した場合、グラフの任意の頂点対間にデータリンクを作成し得る。好ましい実施形態では、ソースポート識別子のデフォルトは出力に設定され、宛先ポート識別子のデフォルトは入力に設定される。
ユーザ3502がプロセス頂点のイネーブル/ディセーブル状態を制御できるようにすることにより、ドライバ3500は、ユーザ3502が、プロセス頂点のサブセットを選択的にイネーブルすることにより、後述する処理の実行順序を制御できるようにする。
グラフの実行
図36を参照すると、初期グラフが生成された後、ドライバ3500は、グラフの実行と、したがってグラフにより示されるプロセスの実行とを制御する。ドライバ3500は、グラフを実行する場合、以下の一般フェーズA~Iを実行することによりそれを行う。
A.プロセス頂点のいずれか1つがイネーブル状態である限り、ドライバ3500は以下のステップB~Iを繰り返す。ドライバ3500はフェーズC、D、及びIを省略することがあり、ステップB、C、E、及びHで実行される動作を混ぜ得る。
B.ドライバ3500は、実行に向けてグラフを準備する。このフェーズでは、ドライバ3500は、説明するように、実行可能なプロセス頂点を識別し、リンクの通信方法を選び、アダプタノードを生成し得る。
C.ドライバ3500は、より詳細に後述するように、データリンクを起動する。このフェーズでは、ドライバ3500は、説明するように、通信方法の実施に必要な特定の計算構造を作成する。
D.ドライバ3500は、計算基板により必要とされる任意の他のデータ構造又はファイルを作成する。上述した拡張基板の場合、ドライバ3500は、説明するように、リンクファイルを作成する。これにより、プログラムは、実行時にグラフ接続情報にアクセスすることができる。
E.ドライバ3500は、説明するように、プロセスを起動する。
F.ドライバ3500は、プロセスの終了を待つ。このフェーズは、全てのプロセスが正常終了するときに、又は任意のプロセスが異常終了するときに完了する。
G.任意のプロセスが異常終了する場合、グラフの実行は中止される。
H.その他の場合、実行可能状態にある全てのプロセス頂点は完了状態に遷移する。いずれのプロセス頂点も実行可能状態になかった場合、クリーンアップフェーズIが実行され、制御は、実行が停止された指示と共に呼び出し側(例えば、ドライバ3500のユーザ3502)に戻る。
I.ドライバ3500は、説明するように、データリンク及びリンクファイルをクリーンアップする。このクリーンアップは、フェーズC及びDにおいて作成されたデータ構造の幾つかをクリーンアップする。
特定のフェーズの更なる詳細について以下に説明する。
フェーズB:実行に向けてグラフを準備する
図37Aを参照すると、ドライバ3500は、ユーザ202により最初に示されたグラフにアクセスし、グラフ変換を適用することにより実行に向けてグラフを準備する(ステップ3700)。これらの変換を実行するに当たり、初期グラフを定義するグラフデータ構造は、既知のようにトラバースされて、各頂点及び関連付けられたあらゆるリンクをフェッチする。好ましい実施形態では、実行に向けてグラフを準備するために、5つのグラフ変換が、フェッチされたデータ構造に対して使用される。
グラフは、依然として実行形態にない間(ステップ3702)、後述する5つのグラフ変換を選択し、任意の順序で、実行可能グラフが得られるまで(ステップ3716)、必要とされる頻度で(一切なしを含め)適用し得る(ステップ3704)。5つのグラフ変換は、(1)ファイルアダプタの挿入(ステップ3706)、(2)通信アダプタの挿入(ステップ3708)、(3)ファイル頂点の状態の完了への設定(ステップ3710)、(4)プロセス頂点の状態の実行可能又は非実行可能への設定(ステップ3712)、及び(5)データリンクの通信方法の設定(ステップ3714)である。これらの各変換及び各変換を実行し得る条件について、これより説明する。
ファイルアダプタの挿入:この変換では、ドライバ3500は、リンクをファイルアダプタ(すなわち、リンク、ファイル頂点、及び別のリンク)で置換する。すなわち、リンクを表す各グラフデータ構造が、グラフデータ構造3506(図35)のトラバース中、フェッチ又はアクセスされる際、元のデータ構造を変更、拡張、又は置換する新しいデータ構造を作成し得る。
ソース(宛先)ファイルアダプタの場合、ファイル頂点のホストはソース(宛先)頂点のホストと同じであり、ファイル頂点のファイルは、ソース(宛先)頂点の作業ディレクトリに配置される新しいファイルである。この変換は、
(1)ソースが、ファイル頂点又は完了状態ではないプロセス頂点のいずれかである場合、及び
(2)宛先が、不完全状態のファイル頂点又は完了状態ではないプロセス頂点のいずれかである場合
のみ実行し得る。
通信アダプタの挿入:この変換では、ドライバ3500は、リンクを通信アダプタ(すなわち、リンク、プロセス頂点、及び別のリンク)で置換する。プロセス頂点はコピープログラムを実行し、コピープログラムは、データを入力から出力にコピーし、土台となる基板によりサポートされる通信チャネル又はデータストアのいずれかの読み出し/書き込みを行うことができる。ソース(宛先)通信アダプタの場合、プロセス頂点のホストは、ソース(宛先)頂点のホストと同じであり、作業ディレクトリはソース(宛先)頂点の作業ディレクトリと同じである。プロセス頂点は、イネーブル状態で作成される。この変換は、
(1)ソースが、完了以外の状態のプロセス頂点又はファイル頂点のいずれかである場合、及び
(2)宛先が、完了以外の状態のプロセス頂点又は不完全状態のファイル頂点のいずれかである場合
のみ実行し得る。
ファイル頂点の状態の完全への設定:この変換では、ファイル頂点の状態は完全に設定される。この変換は、ファイル頂点の状態が不完全であり、ファイル頂点への全ての入力が、完了状態のプロセス頂点である場合のみ、実行し得る。
プロセス頂点の状態の実行可能又は非実行可能への設定:この変換では、プロセス頂点の状態は実行可能又は非実行可能のいずれかに設定される。この変換は、プロセス頂点の状態がイネーブルである場合のみ、実行し得る。
データリンクの通信方法の設定:この変換では、データリンクの通信方法が設定される。この変換は、データリンクの通信方法が非バインドである場合のみ、実行し得る。
以下の3つの属性を有するグラフは実行可能である。
(1)全てのプロセス頂点は、以下の状態の1つである:完了、実行可能、非実行可能、又はディセーブル。
(2)全てのデータリンクは以下の基準の全てを満たす。
1)データリンクのソース又は宛先のいずれかが実行可能プロセス頂点である場合、データリンクの通信方法は、特定の通信方法にバインドされなければならない。
2)データリンクの通信方法が、ファイル以外の何かである場合、そのソース及び宛先は両方とも、プロセス頂点でなければならず、1つのプロセス頂点が実行可能である場合、両プロセス頂点は実行可能でなければならない。
3)データリンクの通信方法がファイルである場合、そのソース及び宛先はファイル頂点でなければならない。宛先が実行可能プロセス頂点である場合、ソースは完全ファイル頂点でなければならない。ソースが実行可能ファイル頂点である場合、宛先は不完全ファイル頂点でなければならない。
(3)通信方法にバインドされた全てのリンクは、通信方法に固有の制約を満たす。
1)通信方法は、そのソースポート及び宛先ポートのアクセス方法と互換性を有さなければならない(これは、プログラムテンプレートを調べることにより判断し得る)。説明した拡張基板の場合、全ての通信方法はSOCアクセスと互換性を有し、共有メモリ以外の全てはファイル記述子アクセスと互換性を有し、名前付きパイプ及びファイルは、名前付きパイプアクセスと互換性を有し、ファイルのみがファイルアクセスと互換性を有する。
2)幾つかの通信方法では、ソース頂点及び宛先頂点のノードが同一である必要がある。説明した拡張基板の場合、これは、TCP/IP以外の全ての通信方法で該当する。
グラフ変換は、実行可能なグラフが得られるまで、任意の順序で適用し得る(例えば、グラフデータ構造は、全ての変換が完成するまで、繰り返しトラバースし得る)。図37Bを参照すると、グラフ変換は、一実施形態では、以下の順序でとられる以下のステップで適用される:(1)ファイルアダプタを挿入し(ステップ3750)、(2)ファイルーファイルリンクを置換し(ステップ3752)、(3)完全なファイル頂点を識別し(ステップ3754)、(4)非実行可能プロセス頂点を識別し(ステップ3756)、(5)実行可能プロセス頂点を識別し(ステップ3758)、(6)残りのイネーブル頂点を非実行可能に設定し(ステップ3760)、(7)条件が満たされるより多くのファイルアダプタを挿入し(ステップ3762)、(8)通信方法を選び(ステップ3764)、(9)通信アダプタを挿入する(ステップ3766)。この実施形態のステップについて、より詳細にこれより説明する。
(1)ファイルアダプタを挿入する。図38Aを参照すると、ファイルアダプタを挿入するために、以下のステップがグラフ内の全てのリンクに対して実行される(ステップ3800)。リンクのソースポートが、ファイルの使用を必要とするデータアクセス方法を有し(ステップ3802)、宛先が同じノード上のファイルではない(ステップ3804)場合、ソースファイルアダプタを挿入する(ステップ3806)。リンクの宛先ポートが、ファイルの使用を必要とするデータアクセス方法を有し(ステップ3808)、ソースが同じノード上のファイルではない(ステップ3810)場合、宛先ファイルアダプタを挿入する(ステップ3812)。リンクの宛先が、ディセーブル状態のプロセス頂点であり(ステップ3814)、ソースがイネーブル状態のプロセス頂点である(ステップ3816)場合、宛先ファイルアダプタを挿入する(ステップ3812)。
(2)ファイル-ファイルリンクを置換する。図38Bを参照すると、ファイル-ファイルリンクを置換するために、以下のステップが、グラフ中の全てのリンクに対して実行される(ステップ3820)。ソース及び宛先が両方ともファイル頂点である場合(ステップ3822)、ソース通信アダプタを挿入する(ステップ3824)。(更に、ソース及び宛先が異なるノードにある場合にも、宛先通信アダプタを挿入する:図示せず)。
(3)完全なファイル頂点を識別する。図38Cを参照すると、完全なファイル頂点を識別するために、以下のステップが、グラフ中の全てのファイル頂点に対して実行される(ステップ3830)。全ての上流頂点が完了状態のプロセス頂点である場合(ステップ3832)、その状態を完全に設定する(ステップ3834)。
(4)非実行可能なプロセス頂点を識別する。図5Dを参照すると、非実行可能なプロセス頂点を識別するために、以下のステップが、グラフ中の全てのリンクに対して実行される(ステップ3840)。「非実行可能性」テストが以下のように実行される(ステップ3842)。リンクのソースが不完全ファイル頂点であり、宛先がイネーブル状態のプロセス頂点である場合、プロセス頂点の状態を非実行可能に設定し(ステップ3844)、ソースが、イネーブル以外の任意の状態であり、宛先がイネーブル状態のプロセス頂点である場合、宛先プロセス頂点は非実行可能と記される(ステップ3844)。非実行可能と記され得る頂点がなくなるまで、このテストを繰り返す。
(5)実行可能なプロセス頂点を識別する。図5Eを参照すると、実行可能なプロセス頂点を識別するために、以下のステップが、グラフ中の全てのプロセス頂点に対して実行される(ステップ3850)。「実行可能性」テストが以下のように実行される(ステップ3852)。頂点がイネーブル状態であり、全ての上流頂点が完全ファイル頂点又は実行可能プロセス頂点である場合、頂点の状態を実行可能に設定する(ステップ3854)。実行可能と記され得る頂点がなくなるまで、このテストを繰り返す。
(6)残りのイネーブル頂点を非実行可能に設定する。図5Fを参照すると、残りのイネーブル頂点を非実行可能に設定するために、以下のステップがグラフ中の全てのプロセス頂点に対して実行される(ステップ3860)。頂点がイネーブル状態である場合(ステップ3862)、その状態を非実行可能に設定する(ステップ3864)。
(7)より多くのファイルアダプタを挿入する。図5Gを参照すると、より多くのファイルアダプタを挿入するために、以下のステップがグラフ中の全てのリンクに対して実行される(ステップ3870)。リンクのソースが実行可能なプロセス頂点であり(ステップ3872)、宛先が非実行可能なプロセス頂点である(ステップ3874)場合、ソースファイルアダプタを挿入する(ステップ3876)。
(8)通信方法を選ぶ。図5Hを参照すると、通信方法を選ぶために、以下のステップがグラフ中の全てのリンクに対して実行される(ステップ3880)。このステップは、実行可能プロセスにいずれかの端部において取り付けられ、通信方法にバインドされていないリンクに対してのみ適用される。リンクのソース(宛先)がファイル頂点であり(ステップ3881)、その宛先(ソース)が同じノード上のプロセス頂点である場合、リンクの通信方法をファイルに設定する(ステップ3882)。その他の場合、通信方法の全ての制約が満たされるように、利用可能な通信方法の1つを選ぶ(ステップ3883~3885)。スピードのために、通信方法は共有メモリ、名前付きパイプ、及びTCP/IPの順序で検討し得る。上述した制約を満たす最初の方法が選択される(ステップ3886)。基準基板では、以下のルールを使用し得る。第1に、リンクが、SOC接続を許容するポートに取り付けられる場合、ソース及び宛先が同じノードにあるとき、共有メモリを使用し、又は異なるノードにあるとき、TCP/IPを使用する。その他の場合、ソース及び宛先が同じノードにあるとき、名前付きパイプ方法が使用される。他の全ての場合、単一の通信方法では不十分であり、システムは通信アダプタ(以下)に戻る。
(9)通信アダプタを挿入する。単一の通信方法が、通信方法を選ぶ先行ステップにおいて選択されず、全てが試みられた場合(ステップ3883)、ソース通信アダプタを挿入し、アダプタの2つのリンクに通信方法を選ぶことを試みる(ステップ3887)ことに続く。これが失敗する場合(ステップ3888)、新しく挿入されたソース通信アダプタを宛先通信アダプタで置換することを試みる(ステップ3889)。これが失敗する場合(ステップ3890)、ソース及び宛先通信アダプタの両方を挿入し、その結果生成される2つのアダプタ内の3つのリンクに通信方法を選ぶ(ステップ3891)。基準基板では、通信アダプタは、ソース及び宛先が異なるノードにあり、リンクが、ファイル頂点又はSOC接続方法を許容しないプロセス頂点のいずれかに接続される場合のみ、必要とされる。この場合、アダプタは以下のように選び得る。
・ソースがファイル頂点である場合、ソース通信アダプタを挿入する。次に、ソース通信アダプタ内の2つのリンクは、ファイル及びTCP/IP通信方法を使用する。
・ソースが、SOC通信方法を許容していないポートである場合、ソース通信アダプタを挿入する。次に、ソース通信アダプタ内の2つのリンクはTCP/IP及びファイル通信方法を使用する。
・宛先がファイル頂点である場合、宛先通信アダプタを挿入する。次に、アダプタ内の2つのリンクはTCP/IP及びファイル通信方法を使用する。
・宛先が、SOC通信方法を許容しないポートである場合、宛先通信アダプタを挿入する。次に、アダプタ内の2つのリンクは、TCP/IP及び名前付きパイプ通信方法を使用する。
フェーズC:データリンクの起動
図39を参照すると、データリンクは、非起動状態で作成され、起動されなければならない。リンクを起動するために、リンクをスキャンして(ステップ3900)、非起動であり(ステップ3902)、通信方法にバインドされ(ステップ3904)、実行可能なソース又は宛先を有する(ステップ3906)リンクを見つける。そのような全てのリンクで、様々な通信方法により使用し得る識別子が生成される(ステップ3908)。上述した拡張基板では、識別子は以下のように作成される。全てのリンクは2つの識別子を有する:ストリームオブジェクト識別子及び通信チャネル/ファイル識別子。ストリームオブジェクト識別子は、SOCメカニズムにより使用され、リンクの名称と同一である。チャネル/ファイル識別子は、リンクにより利用されるファイル、名前付きパイプ、共有メモリ領域、又はTCP/IP接続の識別に使用される。更に、プロセス頂点が名前付きパイプ又はファイル通信方法を必要とする場合、チャネル/ファイル識別子は利用可能になり、それにより、プロセス頂点は、起動されると(以下参照)、UNIXファイルシステムを使用してチャネル/ファイルに取り付けることが可能になる。
識別子が生成された後、基板が呼び出されて、チャネル又はストリームオブジェクトを作成する(ステップ3910)。通信方法が名前付きパイプである場合も、基板が呼び出されて、名前付きパイプを作成する。
フェーズD:リンクファイルの作成
拡張基板は、各ノードで、そのノードのソース又は宛先のいずれかを有するリンクを列挙する「リンクファイル」を保持する。プログラムは、実行時にこのリンクファイルを調べて、いずれのリンクにアクセスしなければならないかを特定し得る。これは一般に、SOCインタフェースを使用するプログラムに対して行われる。したがって、拡張基板の場合、システムはリンクファイルを作成しなければならない。これは以下のように行われる:計算に関わるあらゆるノードについて、ドライバ3500は、そのノードに割り当てられた実行可能なプロセス頂点を識別し、そのような頂点に取り付けられたあらゆるリンクについて、リンクファイルに以下の情報を記憶する:
・頂点の識別子、
・リンクが取り付けられるポートの名称、
・通信チャネルの識別子、及び
・該当する場合、データの転送に使用されるファイル又は名前付きパイプの識別子。
フェーズE:プロセスの起動
図40を参照すると、プロセスは、以下のステップを実行可能状態の全てのプロセス頂点に対して実行することにより起動される(ステップ4000)。まず、頂点のプログラムテンプレートを使用して、呼び出し情報を生成する(ステップ4002)。この情報は、
・呼び出すプログラムの名称、
・コマンドライン引数(コマンドライン引数は、通信チャネルの識別子及び頂点に取り付けられたリンクに関連付けられたファイルを含み得る)、
・任意選択的に、様々な環境変数の値、及び
・任意選択的に、プログラムの予期される「終了コード」
を含む。
呼び出し情報は、少なくとも2つの方法の1つで生成し得る:ドライバ3500がそのような情報をプログラムテンプレートに予め記憶し得るか、又はドライバ3500が、そのような情報を動的に計算するルーチンを含み得、それらのルーチンのアドレスをプログラムテンプレートに記憶し得る。
次に、頂点の識別子及び頂点のノードのリンクファイルの識別子は、環境変数セットに追加される(ステップ4004)。次に、示されたノードで実行中のエージェントが、「プログラム呼び出しプロセス」を作成する(ステップ4006)。プログラムのテンプレートが、入力ポート又は出力ポートをUNIXファイル記述子にバインドされることを必要とする場合、プログラム呼び出しプロセスに、入力ポート又は出力ポートに関連付けられたファイルの名称、名前付きパイプ、又はTCP/IPストリーム識別子が提供され、プログラム呼び出しプロセスは、示されたファイル記述子を使用してファイル又は名前付きパイプを開く。プログラム呼び出しプロセスは、必要とされる環境変数をセットアップし、示されたコマンドライン引数を使用して、示されたプログラムを実行する(ステップ4008)。
フェーズF:待機
全てのプロセスが起動すると、システムは、好ましくはプログラムの起動に使用されたエージェントと同じエージェントを使用して、プロセスの実行を監視する。周期的に、システム(エージェント)は、プロセスが終了したことに気付く。これが生じると、システム(エージェント)は、プロセスが「正常」に終了したか、それとも「異常」終了したかを判断する。UNIXの場合、これは終了コードを介して行われる。終了コードは、プログラムが、プログラムエラー、算術例外、無効メモリアクセス等に起因して中止したことを示し得る。そのような事例は常に「異常終了」として解釈される。代替的には、プログラムは、被制御方式で終了し、「イグジットコード」を返し得る(イグジットコードは、終了コードのサブセットを含む)。規約により、イグジットコード0はプログラムが正常終了したことを示し、他の全てのコードは異常終了を示す。上述したように、プログラムテンプレートは、この解釈を変更し得、例えば、全てのイグジットコードが「正常」終了として解釈されるべきであることを宣言し得る。
システムは、プロセスが正常終了したと判断すると直ちに、任意選択的に、「デバッグ」ルーチンに入り、ユーザが異常終了の理由を診断できるようにし得る。デバッグが完了する(又はスキップされる)と、システムは、例えば、なお実行中の全てのプロセスのキル、部分的に書き込まれたファイルの削除等の中止手順を開始する。次に、ドライバプログラムは終了する。
システムは、プロセスが正常終了したと判断する場合、このことに留意し、より多くのプロセスが終了するのを待つ。全てのプロセスが正常終了した場合、システムはクリーンアップフェーズIに進む。
フェーズI:クリーンアップ
全ての実行可能プロセスの実行が終わった後、ドライバ3500は以下のステップを実行する。第1に、各ノードのリンクファイルは削除される。第2に、起動状態の全てのリンクはスキャンされる。リンクに取り付けられた全てのプロセス頂点が完了状態である場合、基板を使用して、リンクに関連付けられたあらゆる通信チャネルを破壊する。拡張基板の場合、これは、リンクのストリームオブジェクト識別子を取得し、示されたストリームオブジェクトを破壊するように基板に命令することにより行われる。通信方法が名前付きパイプである場合、これはまた、名前付きパイプも削除させる。更に、ファイルアダプタ頂点が完全であり、下流の全てのプロセスが完了である場合、そのファイルは削除される。
アダプタの挿入
アダプタがリンクの場所に挿入される幾つかの状況について言及した。アダプタは、データリンク、又はファイル、又はプロセス頂点(アダプタ頂点)、及び一連の通信方法を使用して通信リンクを統合するために挿入される別のデータリンクである。アダプタ頂点がプロセスであるアダプタは、「通信アダプタ」と呼ばれる。アダプタ頂点がファイルであるアダプタは、「ファイルアダプタ」と呼ばれる。一般に、通信アダプタは、通信方法の組合せ(例えば、名前付きパイプ及びTCP/IP接続)が、リンクのソース及び宛先により課される制約を満たすために必要な場合、追加される。ファイルアダプタは、リンクのソース及び宛先が同時に実行されない(例えば、ソースは実行可能であるが、宛先は非実行可能又はディセーブルである)場合、又はリンクのソース又は宛先がファイルにのみ取り付け可能である場合、追加される。通信アダプタの場合、アダプタ頂点は、その入力をその出力にコピーし、任意の種類の通信チャネルに取り付け得るプログラムを指定する。アダプタリンクは続けて、ステップ3883~3885「通信方法を選ぶ」において記載される制約を受けて、任意の通信方法にバインドし得る。アダプタ頂点は単に、データをその入力からその出力にコピーする。アダプタリンクは、ソース及び宛先制約を受けて、任意の好都合な通信方法を有し得る。
図41を参照すると、ソースアダプタを挿入するために(ステップ4100)、新しいアダプタ頂点(ステップ4102)及び新しいアダプタリンクが作成される(ステップ4104)。ソース通信アダプタの場合、アダプタ頂点は、以下の特徴を有するプロセス頂点である。
・プログラムテンプレートは、コピープログラム、すなわち、全ての入力データをその出力にコピーするプログラムを指定する。
・プログラムテンプレートは、任意の通信方法に取り付け可能な入力ポート記述子及び出力ポート記述子を指定する。
・新しい頂点がアダプタ頂点としてフラグ付けられる。
・元のソース頂点の作業ディレクトリ及び作業ノードは、アダプタ頂点の作業ディレクトリ及びノードとして使用される。
ソースファイルアダプタの場合、アダプタ頂点は、以下の特徴を有するファイル頂点である。
・ファイルは、ソースプログラムにより使用されるノードに配置される。
・ファイルは、ソースプログラムの作業ディレクトリに配置される。ファイルは「アダプタ」としてマークされ、それにより、宛先プロセスにより消費された場合、削除し得る。
新しいアダプタリンク(ステップ4104)は以下の特徴を有する。
・アダプタリンクのソース頂点は、元のリンクのソース頂点と同じであり、アダプタリンクのソースポート名は、元のリンクのソースポート名と同じである。
・アダプタリンクの宛先頂点はアダプタ頂点であり、アダプタリンクの宛先ポート名は入力である。
・アダプタリンクの通信方法は、ソースアダプタを挿入する手順により指定される値に設定される(これは多くの場合、非バインドである)。
最後に、元のデータリンクのソースは、新しいアダプタ頂点に設定され(ステップ4106)、ソースポート名は出力に設定される。
宛先アダプタ頂点を挿入する手順は対称であり、「ソース」及び「宛先」並びに「入力」及び「出力」はそれぞれ相互交換される。
図49A及び図49Bは、頂点V1のポートP1と頂点V2のポートP2との間のリンクLの場所への通信アダプタ4200の挿入を示す。図42Bでは、リンクLは、第1のリンク4202、頂点904、及び第2のリンク4206を含むソースアダプタ4200で置換されている。アダプタ4200がファイルアダプタである場合、頂点4204は、ホストH1上のディレクトリD1内のファイルのファイル頂点であり、これらは頂点V1のディレクトリ及びホストである。アダプタ4200が通信アダプタである場合、頂点4204はコピープログラムを実行中のプロセス頂点である。第2のリンク4202は、ソース頂点がアダプタ頂点4204に設定され、ソースポート名が出力に設定された元のリンクLである。第1のリンク4202のソースポート名は、元のリンクLの元のソースポート名P1に設定され、その宛先頂点は、新たに追加された頂点4204の入力ポートである。
新しいアダプタ4200が宛先アダプタであった場合、頂点4204は、ホストH1及びソース頂点V1のディレクトリD1ではなく、ホストH2及び宛先頂点V2のディレクトリD2を使用する。
グラフの入力及び実行の例
これより、図34に記載される給与プログラムに適用される本発明を考慮する。まず、アプリケーションの作成前に、ユーザは、必要とされる全てのプログラムのテンプレート、特にソートプログラム、データチェッカープログラム、及び給与プログラムのテンプレートをシステムに提供している。次に、ユーザは、上述したように、アプリケーションをグラフとして表現する。その結果生成されるグラフを図43に示し、示されるように、ノード0、1、及び2で実行中の頂点4300~4370を有する(様々なリンクが取り付けられるポートの名称は省略されるが、図34Bとの比較から明らかであるはずである)。
このグラフを処理するに当たり最初のステップは、実行に向けてグラフを準備することである。まず、ステップ3750を実行中、ソートプログラム4310のテンプレートを調べ、ソートプログラムのテンプレートが入力としてファイルを必要とすることを観察する。したがって、ステップ3750は、宛先ファイルアダプタ4302(図44)を挿入する。
次に、ステップ3752を実行し、ノード2上の更新ファイル4300からノード1上の一時ファイル4302へのリンクを有することに留意する。したがって、ソース通信アダプタ及び宛先通信アダプタ(コピー4304、コピー4306)の両方が、このリンク(図45)に挿入される。
次に、ステップ3754において、完全なファイル頂点(更新4300及び旧マスタ4350)を識別する。これが行われると、ステップ3756において、不完全なファイル上流を有するため、非実行可能なプロセス頂点を探す。ソートプログラム4310が、この基準を満たすことが見出される。ステップ3758において、実行可能なプロセス頂点のみ及び/又は完全なファイル上流のみを有するため、実行可能なプロセス頂点を識別する。2つのコピープログラム4304、4306(すなわち、ステップ3752において挿入される通信アダプタ)はこの基準を満たし、実行可能と記される。残りの全てのノードは非実行可能と記される。最後に、実行可能なプロセス頂点に取り付けられるリンクの通信方法が選ばれる。ファイルに取り付けられたリンクにはファイル方法が選ばれ、2つのコピープログラム4304、4306(異なるノード上にある)間のリンクにはTCP/IPが選ばれる。これは、図46に示される状況を残す(実行可能/完全として記されない頂点は非実行可能/不完全であり、通信方法が記されていないリンクは非バインドである)。
この時点で、グラフは実行可能である。リンクファイルが作成され(図示せず)、示されたリンクは起動し、実行可能なプロセス頂点は起動する。全てのプロセスが終了すると、システムは、示されたリンクを非起動し、プロセス頂点の状態を「実行可能」から「完了」に変更することにより「クリーンアップ」する。この結果、図47に示される状況が生成される。
この時点で、システムは、全てのプロセスが完了したわけではないと判断し、したがって、新たな実行ラウンドを開始する。まず、システムは、前と同じようにグラフを準備する。システムは、一時ファイル4302が完全であることに留意することにより開始する。次に、システムは、非実行可能なプロセス頂点がないと判断する。最後に、システムは、実際、全てのプロセス頂点が実行可能であると判断する。この結果、図48に示される状況が生成される。
この時点で、通信方法を選択する準備ができる(ステップ3764)。第1に、一時ファイル4302、不良4330、及び給与4360に取り付けられたリンクは、ファイル及び実行可能プロセス頂点に接続し、ノード境界を越えないため、ファイルに設定される。第2に、チェック4320に取り付けられた残りのリンクは、チェック4320が名前付きパイプを必要とし、これらのリンクがノード境界を越えないため、名前付きパイプに設定される。
これは、異なるノードで実行中のプロセスにファイルを接続する、旧マスタ4350、新マスタ4370、及びプロセス4340間の接続を残す。両事例で通信アダプタが必要であり、通信アダプタは、ステップ3766においてコピー4342及びコピー4344として挿入される。両アダプタはノード1で実行される。通信方法が選ばれると(ファイルに接続するリンクにはファイル、ノード境界を越えるリンクにはTCP/IP)、図49に示されるグラフになる。
再び、グラフは実行可能な状態になる。システムは、リンクファイルを作成し、リンク及びプロセスを起動し、待機し、クリーンアップする。この時点で、全てのプロセス頂点は「完了」され、したがって、グラフの実行は終了する。
プログラム実施
本発明は、ハードウェア、ソフトウェア、又は両方の組合せで実施し得る。しかし、好ましくは、本発明は、プロセッサ、データ記憶システム(揮発性及び不揮発性メモリ及び/又は記憶要素を含む)、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスをそれぞれ含むプログラマブルコンピュータで実行されるコンピュータプログラムで実施される。プログラムコードは、入力データに適用されて、本明細書に記載の機能を実行し、出力情報を生成する。出力情報は、既知の方式で1つ又は複数の出力デバイスに適用される。
各プログラムは、好ましくは、高水準手続き型又はオブジェクト指向型プログラミング言語で実施されて、コンピュータシステムと通信する。しかし、プログラムは、必要に応じて、アセンブリ又は機械語で実施することができる。いずれの場合でも、言語はコンパイル型又はインタープリタ型言語であり得る。
そのような各コンピュータプログラムは、好ましくは、汎用又は専用プログラマブルコンピュータにより読み取り可能な記憶媒体又はデバイス(例えば、ROM又は磁気ディスク)に記憶されて、記憶媒体又はデバイスがコンピュータにより読み取られると、本明細書に記載の手順を実行するようにコンピュータを構成し動作させる。本発明のシステムは、コンピュータプログラムが構成されたコンピュータ可読記憶媒体として実施されるものとして見なすこともでき、ここで、記憶媒体は、本明細書に記載の機能を実行するように特定の予め定義される方式でコンピュータを動作させるように構成される。
本発明の幾つかの実施形態について説明した。それにもかかわらず、本発明の趣旨及び範囲から逸脱せずに、様々な変更形態をなし得ることが理解される。したがって、本発明が特定の示される実施形態により限定されず、添付の特許請求の範囲によってのみ限定されることを理解されたい。
上述した影響分析手法は、適するソフトウェアを実行する計算システムを使用して実施することができる。例えば、ソフトウェアは、少なくとも1つのプロセッサ、少なくとも1つのデータ記憶システム(揮発性及び/又は不揮発性メモリ及び/又は記憶要素を含む)、少なくとも1つのユーザインタフェース(少なくとも1つの入力デバイス又はポートを使用して入力を受信し、少なくとも1つの出力デバイス又はポートを使用して出力を提供するため)をそれぞれ含む1つ又は複数のプログラムされているか、又はプログラム可能な計算システム(分散、クライアント/サーバ、又はグリッド等の様々なアーキテクチャのものであることができる)で実行される1つ又は複数のコンピュータプログラム内の手順を含むことができる。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きいプログラムの1つ又は複数のモジュールを含むことができる。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されるデータモデルに準拠するデータ構造又は他の編成データとして実施することができる。
ソフトウェアは、CD-ROM又は他のコンピュータ可読媒体(例えば、汎用又は専用計算システム又はデバイスにより可読)等の有形の非一時的媒体で提供することができ、又はネットワークの通信媒体を介して、実行される計算システムの有形の非一時的媒体に送る(例えば、伝搬信号に符号化する)ことができる。処理の幾つか又は全ては、専用コンピュータで、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA)若しくは専用の特定用途向け集積回路(ASIC)等の専用ハードウェアを使用して実行することができる。処理は、ソフトウェアにより指定される計算の異なる部分が異なる計算要素により実行される分散方式で実施することができる。そのような各コンピュータプログラムは、好ましくは、汎用又は専用プログラマブルコンピュータによりアクセス可能な記憶デバイスのコンピュータ可読記憶媒体(例えば、固体状態メモリ若しくは媒体又は磁気若しくは光学媒体)に記憶されるか、又はダウンロードされて、記憶デバイス媒体がコンピュータにより読み取られると、本明細書に記載の処理を実行するようにコンピュータを構成し動作させる。本発明のシステムは、コンピュータプログラムが構成される有形の非一時的媒体として実施されるものとして見なされることもでき、ここで、媒体は、特定の予め定義される方式でコンピュータを動作させて、本明細書に記載の処理ステップの1つ又は複数を実行させるように構成される。
本発明の幾つかの実施形態について説明した。それにもかかわらず、上記説明が、例示を意図し、本発明の範囲の限定を意図せず、本発明の範囲が以下の特許請求の範囲により規定されることを理解されたい。したがって、他の実施形態も以下の特許請求の範囲内にある。例えば、本発明の範囲から逸脱せずに、様々な変更形態がなされ得る。更に、上述したステップの幾つかは、独立して順序付けることができ、したがって、記載される順序と異なる順序で実行され得る。

Claims (27)

  1. システムへの影響を特定するためのコンピュータ実施方法であって、
    前記システムに記憶される、複数のコンポーネントのためのデータ系譜の情報を受信することであって、前記複数のコンポーネントは少なくとも2つの論理データセット及び変換を表すものであり、前記データ系譜の情報によって前記変換がデータを受信する第1の論理データセット及び変換されたデータを提供する第2の論理データセットを識別し、前記データ系譜の情報のコンポーネントにより表される前記変換は、前記第1の論理データセットからのデータに適用される1つ又は複数のルールについての情報を含み、かつ、前記データ系譜の情報によって前記複数のコンポーネントを通るデータのパスとフロートレースを識別する、受信することと、
    前記第1の論理データセットのフィールド、前記第2の論理データセットのフィールド又は前記変換への1つ又は複数の提案される変更を指定する情報を受信することと、
    前記データ系譜の情報に従って前記複数のコンポーネントを分析することと、
    前記分析に基づいて、前記1つ又は複数の提案される変更によって影響を受ける各コンポーネントを識別することと、
    前記複数のコンポーネントの一つ又は複数への前記1つ又は複数の提案される変更を実装することにより、前記システムの前記複数のコンポーネントへの少なくとも直接影響又は間接影響を表す影響メトリックを生成することと、かつ、
    前記影響メトリックを記憶すること、
    を含む、コンピュータ実施方法。
  2. 前記影響メトリックは、前記複数のコンポーネントの1つ又は複数への前記1つ又は複数の提案される変更を実装することによる直接影響の尺度を提供する、請求項1の方法。
  3. 前記影響メトリックは、前記複数のコンポーネントの1つ又は複数への前記1つ又は複数の提案される変更を実装することによる間接影響の尺度を提供する、請求項1の方法。
  4. 前記データ系譜の情報のコンポーネントにより表される前記変換は、前記第1の論理データセットからのデータに適用される1つ又は複数のルールを含む、請求項1の方法。
  5. 1つ又は複数の影響メトリックに基づいてコストを提案される変更に関連付けることを更に含む、請求項1の方法。
  6. 前記影響メトリックについての情報を提供するリポートを生成することを更に含む、請求項1の方法。
  7. 前記影響メトリックを含む注釈付きコードを生成することと、
    前記注釈付きコードを実行可能プログラムにコンパイルすることと、
    前記複数のコンポーネントの1つ又は複数への前記1つ又は複数の提案される変更の前記影響を、前記実行可能プログラムの実行に少なくとも部分的に基づいて決定することとを更に含む、請求項1の方法。
  8. データストレージから、前記1つ又は複数の提案される変更によって影響を受ける、前記データ系譜の情報の前記複数のコンポーネントの1つ又は複数の注釈付きコードの記憶された項目を選択することと、
    前記記憶された項目の1つ又は複数の前記注釈付きコードを変換にコンパイルすることと、
    対応する影響メトリックのリスク出力を決定するために前記変換を処理することとを更に含む、請求項1の方法。
  9. 1つ又は複数のコンピュータ及び命令を記憶する1つ又は複数の記憶デバイスを含むシステムであって、前記命令は、前記1つ又は複数のコンピュータにより実行されると、前記1つ又は複数のコンピュータに、
    前記システムに記憶される、複数のコンポーネントのためのデータ系譜の情報を受信することであって、前記複数のコンポーネントは少なくとも2つの論理データセット及び変換を表すものであり、前記データ系譜の情報によって前記変換がデータを受信する第1の論理データセット及び変換されたデータを提供する第2の論理データセットを識別し、前記データ系譜の情報のコンポーネントにより表される前記変換は、前記第1の論理データセットからのデータに適用される1つ又は複数のルールについての情報を含み、かつ、前記データ系譜の情報によって前記複数のコンポーネントを通るデータのパスとフロートレースを識別する、受信することと、
    前記第1の論理データセットのフィールド、前記第2の論理データセットのフィールド又は前記変換への1つ又は複数の提案される変更を指定する情報を受信することと、
    前記データ系譜の情報に従って前記複数のコンポーネントを分析することと、
    前記分析に基づいて、前記1つ又は複数の提案される変更によって影響を受ける各コンポーネントを識別することと、
    前記複数のコンポーネントの一つ又は複数への前記1つ又は複数の提案される変更を実装することにより、前記システムの前記複数のコンポーネントへの少なくとも直接影響又は間接影響を表す影響メトリックを生成することと、かつ、
    前記影響メトリックを記憶すること、
    を含む動作を実行させるように動作可能である、システム。
  10. 前記影響メトリックは、前記複数のコンポーネントの1つ又は複数への前記1つ又は複数の提案される変更を実装することによる直接影響の尺度を提供する、請求項9のシステム。
  11. 前記影響メトリックは、前記複数のコンポーネントの1つ又は複数への前記1つ又は複数の提案される変更を実装することによる間接影響の尺度を提供する、請求項9のシステム。
  12. 前記提案される変更は、データセット内のフィールドのフォーマットの変更又は変換の変更からなる群の1つである、請求項9のシステム。
  13. 前記動作は、1つ又は複数の影響メトリックに基づいてコストを提案される変更に関連付けることを更に含む、請求項9のシステム。
  14. 前記データ系譜の情報のコンポーネントにより表される前記変換は、前記第1の論理データセットからのデータに適用される1つ又は複数のルールを含む、請求項9のシステム。
  15. 前記動作は、前記影響メトリックについての情報を提供するリポートを生成することを更に含む、請求項9のシステム。
  16. 前記動作は、
    前記影響メトリックを含む注釈付きコードを生成することと、
    前記注釈付きコードを実行可能プログラムにコンパイルすることと、
    前記複数のコンポーネントの1つ又は複数への前記1つ又は複数の提案される変更の前記影響を、前記実行可能プログラムの実行に少なくとも部分的に基づいて決定することとを更に含む、請求項9のシステム。
  17. 前記動作は、
    データストレージから、前記1つ又は複数の提案される変更によって影響を受ける、前記データ系譜の情報の前記複数のコンポーネントの1つ又は複数の注釈付きコードの記憶された項目を選択することと、
    前記記憶された項目の1つ又は複数の前記注釈付きコードを変換にコンパイルすることと、
    対応する影響メトリックのリスク出力を決定するために前記変換を処理することとを更に含む、請求項9のシステム。
  18. システムへの影響を決定するためのコンピュータ記憶媒体であって、前記システムにより実行されると、前記システムに、
    前記システムに記憶される、複数のコンポーネントのためのデータ系譜の情報を受信することであって、前記複数のコンポーネントは少なくとも2つの論理データセット及び変換を表すものであり、前記データ系譜の情報によって前記変換がデータを受信する第1の論理データセット及び変換されたデータを提供する第2の論理データセットを識別し、前記データ系譜の情報のコンポーネントにより表される前記変換は、前記第1の論理データセットからのデータに適用される1つ又は複数のルールについての情報を含み、かつ、前記データ系譜の情報によって前記複数のコンポーネントを通るデータのパスとフロートレースを識別する、受信することと、
    前記第1の論理データセットのフィールド、前記第2の論理データセットのフィールド又は前記変換への1つ又は複数の提案される変更を指定する情報を受信することと、
    前記データ系譜の情報に従って前記複数のコンポーネントを分析することと、
    前記分析に基づいて、前記1つ又は複数の提案される変更によって影響を受ける各コンポーネントを識別することと、
    前記複数のコンポーネントの一つ又は複数への前記1つ又は複数の提案される変更を実装することにより、前記システムの前記複数のコンポーネントへの少なくとも直接影響又は間接影響を表す影響メトリックを生成することと、かつ、
    前記影響メトリックを記憶すること、
    を含む動作を実行させるコンピュータプログラム命令が符号化されたコンピュータ記憶媒体。
  19. 前記影響メトリックは、前記複数のコンポーネントの1つ又は複数への前記1つ又は複数の提案される変更を実装することによる直接影響の尺度を提供する、請求項18の媒体。
  20. 前記影響メトリックは、前記複数のコンポーネントの1つ又は複数への前記1つ又は複数の提案される変更を実装することによる間接影響の尺度を提供する、請求項18の媒体。
  21. 前記提案される変更は、データセット内のフィールドのフォーマットの変更又は変換の変更からなる群の1つである、請求項18の媒体。
  22. 前記動作は、1つ又は複数の影響メトリックに基づいてコストを提案される変更に関連付けることを更に含む、請求項18の媒体。
  23. 前記データ系譜の情報のコンポーネントにより表される前記変換は、前記第1の論理データセットからのデータに適用される1つ又は複数のルールを含む、請求項18の媒体。
  24. 前記動作は、前記影響メトリックについての情報を提供するリポートを生成することを更に含む、請求項18の媒体。
  25. 前記動作は、
    前記影響メトリックを含む注釈付きコードを生成することと、
    前記注釈付きコードを実行可能プログラムにコンパイルすることと、
    前記複数のコンポーネントの1つ又は複数への前記1つ又は複数の提案される変更の前記影響を、前記実行可能プログラムの実行に少なくとも部分的に基づいて決定することとを更に含む、請求項18の媒体。
  26. 前記動作は、
    データストレージから、前記1つ又は複数の提案される変更によって影響を受ける、前記データ系譜の情報の前記複数のコンポーネントの1つ又は複数の注釈付きコードの記憶された項目を選択することと、
    前記記憶された項目の1つ又は複数の前記注釈付きコードを変換にコンパイルすることと、
    対応する影響メトリックのリスク出力を決定するために前記変換を処理することとを更に含む、請求項18の媒体。
  27. システムへの影響を決定するためのコンピュータ実施方法であって、
    前記システムに記憶される、複数のコンポーネントのためのデータ系譜の情報を受信することであって、前記複数のコンポーネントは少なくとも論理データセット又は変換を表すものであり、前記データ系譜の情報によって前記変換がデータを受信する又は変換されたデータを提供する前記論理データセットを識別し、かつ、前記データ系譜の情報によって前記複数のコンポーネントを通るデータのパスとフロートレースを識別する、受信することと、
    前記論理データセット又は前記変換への1つ又は複数の提案される変更を指定する情報を受信することと、
    前記データ系譜の情報に従って前記複数のコンポーネントを分析することと、
    前記分析に基づいて、前記1つ又は複数の提案される変更によって影響を受ける各コンポーネントを識別することと、
    前記複数のコンポーネントの一つ又は複数への前記1つ又は複数の提案される変更を実装することにより、前記システムの前記複数のコンポーネントへの少なくとも直接影響又は間接影響を表す影響メトリックを生成することと、かつ、
    前記影響メトリックを記憶すること、
    を含む、コンピュータ実施方法。
JP2021082301A 2014-11-05 2021-05-14 影響分析 Active JP7090778B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462075558P 2014-11-05 2014-11-05
US62/075,558 2014-11-05
US14/738,232 2015-06-12
US14/738,232 US10176234B2 (en) 2014-11-05 2015-06-12 Impact analysis
JP2017520918A JP6928552B2 (ja) 2014-11-05 2015-11-05 影響分析

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017520918A Division JP6928552B2 (ja) 2014-11-05 2015-11-05 影響分析

Publications (2)

Publication Number Publication Date
JP2021144719A JP2021144719A (ja) 2021-09-24
JP7090778B2 true JP7090778B2 (ja) 2022-06-24

Family

ID=54602034

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017520918A Active JP6928552B2 (ja) 2014-11-05 2015-11-05 影響分析
JP2021082301A Active JP7090778B2 (ja) 2014-11-05 2021-05-14 影響分析

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017520918A Active JP6928552B2 (ja) 2014-11-05 2015-11-05 影響分析

Country Status (9)

Country Link
US (2) US10176234B2 (ja)
EP (1) EP3215935A1 (ja)
JP (2) JP6928552B2 (ja)
KR (1) KR102539041B1 (ja)
CN (1) CN107135663B (ja)
AU (2) AU2015342993B2 (ja)
CA (1) CA2966541C (ja)
SG (2) SG11201703068SA (ja)
WO (1) WO2016073735A1 (ja)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9396283B2 (en) 2010-10-22 2016-07-19 Daniel Paul Miranker System for accessing a relational database using semantic queries
US10176234B2 (en) 2014-11-05 2019-01-08 Ab Initio Technology Llc Impact analysis
US10353911B2 (en) 2016-06-19 2019-07-16 Data.World, Inc. Computerized tools to discover, form, and analyze dataset interrelations among a system of networked collaborative datasets
US11941140B2 (en) 2016-06-19 2024-03-26 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US11947554B2 (en) 2016-06-19 2024-04-02 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
US10691710B2 (en) 2016-06-19 2020-06-23 Data.World, Inc. Interactive interfaces as computerized tools to present summarization data of dataset attributes for collaborative datasets
US10515085B2 (en) 2016-06-19 2019-12-24 Data.World, Inc. Consolidator platform to implement collaborative datasets via distributed computer networks
US11042548B2 (en) * 2016-06-19 2021-06-22 Data World, Inc. Aggregation of ancillary data associated with source data in a system of networked collaborative datasets
US10747774B2 (en) 2016-06-19 2020-08-18 Data.World, Inc. Interactive interfaces to present data arrangement overviews and summarized dataset attributes for collaborative datasets
US10853376B2 (en) 2016-06-19 2020-12-01 Data.World, Inc. Collaborative dataset consolidation via distributed computer networks
US11042560B2 (en) 2016-06-19 2021-06-22 data. world, Inc. Extended computerized query language syntax for analyzing multiple tabular data arrangements in data-driven collaborative projects
US11016931B2 (en) 2016-06-19 2021-05-25 Data.World, Inc. Data ingestion to generate layered dataset interrelations to form a system of networked collaborative datasets
US10824637B2 (en) 2017-03-09 2020-11-03 Data.World, Inc. Matching subsets of tabular data arrangements to subsets of graphical data arrangements at ingestion into data driven collaborative datasets
US11755602B2 (en) 2016-06-19 2023-09-12 Data.World, Inc. Correlating parallelized data from disparate data sources to aggregate graph data portions to predictively identify entity data
US11042556B2 (en) * 2016-06-19 2021-06-22 Data.World, Inc. Localized link formation to perform implicitly federated queries using extended computerized query language syntax
US10452677B2 (en) 2016-06-19 2019-10-22 Data.World, Inc. Dataset analysis and dataset attribute inferencing to form collaborative datasets
US10984008B2 (en) 2016-06-19 2021-04-20 Data.World, Inc. Collaborative dataset consolidation via distributed computer networks
US10438013B2 (en) 2016-06-19 2019-10-08 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US11334625B2 (en) 2016-06-19 2022-05-17 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
US11036697B2 (en) * 2016-06-19 2021-06-15 Data.World, Inc. Transmuting data associations among data arrangements to facilitate data operations in a system of networked collaborative datasets
US11068847B2 (en) 2016-06-19 2021-07-20 Data.World, Inc. Computerized tools to facilitate data project development via data access layering logic in a networked computing platform including collaborative datasets
US10452975B2 (en) 2016-06-19 2019-10-22 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US11042537B2 (en) * 2016-06-19 2021-06-22 Data.World, Inc. Link-formative auxiliary queries applied at data ingestion to facilitate data operations in a system of networked collaborative datasets
US11023104B2 (en) 2016-06-19 2021-06-01 data.world,Inc. Interactive interfaces as computerized tools to present summarization data of dataset attributes for collaborative datasets
US11068475B2 (en) 2016-06-19 2021-07-20 Data.World, Inc. Computerized tools to develop and manage data-driven projects collaboratively via a networked computing platform and collaborative datasets
US11036716B2 (en) * 2016-06-19 2021-06-15 Data World, Inc. Layered data generation and data remediation to facilitate formation of interrelated data in a system of networked collaborative datasets
US10645548B2 (en) 2016-06-19 2020-05-05 Data.World, Inc. Computerized tool implementation of layered data files to discover, form, or analyze dataset interrelations of networked collaborative datasets
US10699027B2 (en) 2016-06-19 2020-06-30 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
US10346429B2 (en) 2016-06-19 2019-07-09 Data.World, Inc. Management of collaborative datasets via distributed computer networks
US11675808B2 (en) 2016-06-19 2023-06-13 Data.World, Inc. Dataset analysis and dataset attribute inferencing to form collaborative datasets
US11468049B2 (en) 2016-06-19 2022-10-11 Data.World, Inc. Data ingestion to generate layered dataset interrelations to form a system of networked collaborative datasets
US10324925B2 (en) 2016-06-19 2019-06-18 Data.World, Inc. Query generation for collaborative datasets
US11086896B2 (en) * 2016-06-19 2021-08-10 Data.World, Inc. Dynamic composite data dictionary to facilitate data operations via computerized tools configured to access collaborative datasets in a networked computing platform
JP6878804B2 (ja) * 2016-09-15 2021-06-02 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラム
US11238109B2 (en) * 2017-03-09 2022-02-01 Data.World, Inc. Computerized tools configured to determine subsets of graph data arrangements for linking relevant data to enrich datasets associated with a data-driven collaborative dataset platform
US12008050B2 (en) * 2017-03-09 2024-06-11 Data.World, Inc. Computerized tools configured to determine subsets of graph data arrangements for linking relevant data to enrich datasets associated with a data-driven collaborative dataset platform
US11068453B2 (en) * 2017-03-09 2021-07-20 data.world, Inc Determining a degree of similarity of a subset of tabular data arrangements to subsets of graph data arrangements at ingestion into a data-driven collaborative dataset platform
US10176217B1 (en) * 2017-07-06 2019-01-08 Palantir Technologies, Inc. Dynamically performing data processing in a data pipeline system
US10922308B2 (en) 2018-03-20 2021-02-16 Data.World, Inc. Predictive determination of constraint data for application with linked data in graph-based datasets associated with a data-driven collaborative dataset platform
US11243960B2 (en) 2018-03-20 2022-02-08 Data.World, Inc. Content addressable caching and federation in linked data projects in a data-driven collaborative dataset platform using disparate database architectures
USD920353S1 (en) 2018-05-22 2021-05-25 Data.World, Inc. Display screen or portion thereof with graphical user interface
US11537990B2 (en) 2018-05-22 2022-12-27 Data.World, Inc. Computerized tools to collaboratively generate queries to access in-situ predictive data models in a networked computing platform
US11947529B2 (en) 2018-05-22 2024-04-02 Data.World, Inc. Generating and analyzing a data model to identify relevant data catalog data derived from graph-based data arrangements to perform an action
USD940169S1 (en) 2018-05-22 2022-01-04 Data.World, Inc. Display screen or portion thereof with a graphical user interface
US11327991B2 (en) * 2018-05-22 2022-05-10 Data.World, Inc. Auxiliary query commands to deploy predictive data models for queries in a networked computing platform
USD940732S1 (en) 2018-05-22 2022-01-11 Data.World, Inc. Display screen or portion thereof with a graphical user interface
US11442988B2 (en) 2018-06-07 2022-09-13 Data.World, Inc. Method and system for editing and maintaining a graph schema
CN108933968B (zh) * 2018-07-03 2022-02-08 武汉斗鱼网络科技有限公司 一种消息格式的转换方法、装置、存储介质及安卓终端
US11893036B2 (en) 2018-07-19 2024-02-06 Ab Initio Technology Llc Publishing to a data warehouse
US10445170B1 (en) 2018-11-21 2019-10-15 Fmr Llc Data lineage identification and change impact prediction in a distributed computing environment
MY195007A (en) * 2018-12-31 2022-12-30 Mimos Berhad A system and method for impact analysis of change request that affects database structure through classificiation and keyword similarity analysis
US10936478B2 (en) * 2019-01-10 2021-03-02 Oracle International Corporation Fast change impact analysis tool for large-scale software systems
US10768907B2 (en) * 2019-01-30 2020-09-08 Bank Of America Corporation System for transformation prediction with code change analyzer and implementer
US10824635B2 (en) 2019-01-30 2020-11-03 Bank Of America Corporation System for dynamic intelligent code change implementation
US10853198B2 (en) * 2019-01-30 2020-12-01 Bank Of America Corporation System to restore a transformation state using blockchain technology
CN110781086B (zh) * 2019-10-23 2022-02-08 南京大学 一种跨项目缺陷影响分析方法
US11210285B2 (en) * 2020-03-06 2021-12-28 Ab Initio Technology Llc Generation of optimized logic from a schema
WO2021252805A1 (en) * 2020-06-11 2021-12-16 Data.World, Inc. Auxiliary query commands to deploy predictive data models for queries in a networked computing platform
US20230068947A1 (en) * 2021-08-27 2023-03-02 Bank Of Montreal Systems and methods for processing inter-dependent data for risk modelling and analysis
US11947600B2 (en) 2021-11-30 2024-04-02 Data.World, Inc. Content addressable caching and federation in linked data projects in a data-driven collaborative dataset platform using disparate database architectures
US11841889B1 (en) * 2022-01-13 2023-12-12 Tableau Software, LLC Generating visually simplified calculation expressions corresponding to user manipulation of textual data elements
CN115686799B (zh) * 2022-12-29 2023-04-07 中国华能集团清洁能源技术研究院有限公司 一种大数据平台中的任务调度方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101089A1 (en) 2001-11-29 2003-05-29 Perot Systems Corporation Method and system for quantitatively assessing project risk and effectiveness
JP2008544423A (ja) 2005-06-27 2008-12-04 エービー イニティオ ソフトウェア コーポレーション グラフ型計算のためのメタデータ管理
JP2010524134A (ja) 2007-04-10 2010-07-15 アビニシオ テクノロジー エルエルシー ビジネスルールの編集およびコンパイルの、方法、コンピュータプログラム、およびシステム

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06175858A (ja) 1992-12-02 1994-06-24 Hitachi Ltd プログラム翻訳装置
JPH06290039A (ja) 1993-04-06 1994-10-18 Hitachi Ltd プログラム変更方法
JPH09101880A (ja) 1995-10-04 1997-04-15 Fujitsu Ltd プログラム分析装置
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US5930794A (en) 1996-10-18 1999-07-27 Sagent Technologies, Inc. Database repository with deferred transactions
US6038558A (en) 1996-10-18 2000-03-14 Sagent Technology, Inc. Extensible database retrieval and viewing architecture
TW440782B (en) * 1996-12-11 2001-06-16 Matsushita Electric Ind Co Ltd Method for estimating hot carrier deterioration
US6032158A (en) 1997-05-02 2000-02-29 Informatica Corporation Apparatus and method for capturing and propagating changes from an operational database to data marts
US6044374A (en) 1997-11-14 2000-03-28 Informatica Corporation Method and apparatus for sharing metadata between multiple data marts through object references
JP2000339145A (ja) * 1999-05-28 2000-12-08 Kawasaki Steel Systems R & D Corp プログラム保守支援方法、装置及び記録媒体
US7373615B2 (en) * 2004-02-17 2008-05-13 International Business Machines Corporation Method for optimization of logic circuits for routability
KR101000821B1 (ko) 2004-05-13 2010-12-14 고쿠리츠다이가쿠호우진 도쿄다이가쿠 아파타이트와 그 제조 방법, 및 아파타이트 기재
US7536406B2 (en) * 2004-06-23 2009-05-19 Microsoft Corporation Impact analysis in an object model
JP2007128123A (ja) * 2005-11-01 2007-05-24 Hitachi Ltd 影響範囲抽出システム
WO2009011057A1 (ja) * 2007-07-19 2009-01-22 Fujitsu Limited アプリケーション解析プログラム、アプリケーション解析方法およびアプリケーション解析装置
JP2009157505A (ja) * 2007-12-25 2009-07-16 Mitsubishi Electric Corp ソフトウェア変更影響分析装置
KR101499599B1 (ko) * 2008-06-30 2015-03-18 아브 이니티오 테크놀로지 엘엘시 그래프 기반 계산에서의 데이터 로깅
JP2010015458A (ja) * 2008-07-04 2010-01-21 Hitachi Ltd プログラム修正支援システム、プログラム修正支援方法、およびプログラム修正支援プログラム
US8458654B2 (en) 2008-10-22 2013-06-04 International Business Machines Corporation Identifying impact of database changes on an application
WO2010065623A1 (en) 2008-12-02 2010-06-10 Ab Initio Software Llc Visualizing relationships between data elements and graphical representations of data element attributes
EP2391938A4 (en) * 2009-01-30 2016-06-08 Ab Initio Technology Llc DATA PROCESSING WITH VECTOR FIELDS
EP2478433A4 (en) * 2009-09-16 2016-09-21 Ab Initio Technology Llc MAPPING DATA SET ELEMENTS
KR20150042872A (ko) * 2010-06-22 2015-04-21 아브 이니티오 테크놀로지 엘엘시 관련 데이터세트의 처리
US10503817B2 (en) * 2011-01-12 2019-12-10 Crucs Holdings, Llc System and method for multi-party document revision
KR101872748B1 (ko) 2011-01-14 2018-06-29 아브 이니티오 테크놀로지 엘엘시 데이터 콜렉션에 대한 변경 관리 방법
CN103348598B (zh) * 2011-01-28 2017-07-14 起元科技有限公司 生成数据模式信息
JP5918476B2 (ja) 2011-03-31 2016-05-18 株式会社日立メタルプレシジョン 回転伝達装置およびこれを用いたシート材穿孔装置
US9552202B2 (en) * 2011-12-08 2017-01-24 International Business Machines Corporation Automated and heuristically managed solution to quantify CPU and path length cost of instructions added, changed or removed by a service team
CN103178982A (zh) * 2011-12-23 2013-06-26 阿里巴巴集团控股有限公司 日志分析方法和装置
CN102637208B (zh) * 2012-03-28 2013-10-30 南京财经大学 一种基于模式挖掘的噪音数据过滤方法
US20130346157A1 (en) * 2012-06-20 2013-12-26 Dionysios AVRILIONIS Revenue optimization platform apparatuses, methods, systems and services
WO2015050072A1 (ja) * 2013-10-03 2015-04-09 富士フイルム株式会社 クリニカルパス管理装置
CN104123352A (zh) * 2014-07-10 2014-10-29 西安理工大学 面向微博的话题层次用户影响力度量方法
US10176234B2 (en) 2014-11-05 2019-01-08 Ab Initio Technology Llc Impact analysis

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101089A1 (en) 2001-11-29 2003-05-29 Perot Systems Corporation Method and system for quantitatively assessing project risk and effectiveness
JP2008544423A (ja) 2005-06-27 2008-12-04 エービー イニティオ ソフトウェア コーポレーション グラフ型計算のためのメタデータ管理
JP2010524134A (ja) 2007-04-10 2010-07-15 アビニシオ テクノロジー エルエルシー ビジネスルールの編集およびコンパイルの、方法、コンピュータプログラム、およびシステム

Also Published As

Publication number Publication date
KR102539041B1 (ko) 2023-05-31
US11475023B2 (en) 2022-10-18
US20160125057A1 (en) 2016-05-05
JP2021144719A (ja) 2021-09-24
CN107135663A (zh) 2017-09-05
SG10202000449XA (en) 2020-03-30
AU2015342993A1 (en) 2017-05-04
US20190095390A1 (en) 2019-03-28
CA2966541A1 (en) 2016-05-12
JP6928552B2 (ja) 2021-09-01
WO2016073735A1 (en) 2016-05-12
CA2966541C (en) 2023-09-26
AU2015342993B2 (en) 2020-05-21
CN107135663B (zh) 2021-06-22
EP3215935A1 (en) 2017-09-13
SG11201703068SA (en) 2017-05-30
AU2020210281A1 (en) 2020-08-20
AU2020210281B2 (en) 2022-06-02
US10176234B2 (en) 2019-01-08
JP2018501538A (ja) 2018-01-18
KR20170081239A (ko) 2017-07-11

Similar Documents

Publication Publication Date Title
JP7090778B2 (ja) 影響分析
CA2611774C (en) Managing parameters for graph-based computations
CA2610989C (en) Managing metadata for graph-based computations
EP4002150A1 (en) User interface to prepare and curate data for subsequent analysis
CA2980333A1 (en) Field specialization systems and methods for improving program performance
Drago et al. QVTR2: A Rational and Performance-Aware Extension to the Relations Language.
Paligiannis Handling of schema evolution in machine learning pipelines
ÖRGÅRD Recommendations for Mutation Testing as Part of a Continuous Integration Pipeline: With a focus on C++
Beyer et al. Automated Data-Flow Analysis and Validation in Process Automation Projects
Wöhrer et al. Logical optimization of dataflows for data mining and integration processes
AU2013228010A1 (en) Managing metadata for graph-based computations

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210609

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210609

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220614

R150 Certificate of patent or registration of utility model

Ref document number: 7090778

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150