(58)【調査した分野】(Int.Cl.,DB名)
ログエントリを処理するステップが、パラメータがジェネリックコンピュータプログラムに関連するデータ系統に影響を与えるか否かに基づいて前記パラメータを分類することを含む、請求項1に記載の方法。
パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することが、第2の識別子のうちのいずれも前記第1の識別子と一致しない場合にパラメータ値の前記特定の集合をパラメータ値の前記複数の集合に追加すると決定することを含む、請求項3に記載の方法。
第1の識別子を決定することが、パラメータ値の特定の集合の中身から識別文字列を計算することを含み、第2の識別子を決定することが、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部の中身から識別文字列を計算することを含む、請求項3に記載の方法。
第1の識別子を決定することが、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、前記ジェネリックコンピュータプログラムの関数プロトタイプ、及び前記ジェネリックコンピュータプログラムの第1のインスタンスに関するプロジェクトスコープのうちの1又は2以上の連結を形成することを含む、請求項3に記載の方法。
第1の識別子を決定することが、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、前記ジェネリックコンピュータプログラムの関数プロトタイプ、及び前記ジェネリックコンピュータプログラムの第1のインスタンスに関するプロジェクトスコープのうちの1又は2以上にデータマッピング関数を適用することを含む、請求項3に記載の方法。
パラメータの第1のクラスが、ジェネリックコンピュータプログラムの論理的な動作に影響を与えるパラメータを含み、パラメータの第2のクラスが、前記ジェネリックコンピュータプログラムの前記論理的な動作に影響を与えないパラメータを含む、請求項1に記載の方法。
ジェネリックコンピュータプログラムが、データ処理動作を表すノードと、前記データ処理動作の間のデータ要素のフローを表す前記ノードの間のリンクとを含むデータフローグラフとして規定される、請求項1に記載の方法。
パラメータのそれぞれに関して、解析が、パラメータを自動的に分類することか、又は前記パラメータに関するユーザによって定義された分類を受け入れることかのどちらかを含む、請求項1に記載の方法。
パラメータを自動的に分類することが、最初に前記パラメータをパラメータの第1のクラスに属するものとして分類することと、ジェネリックコンピュータプログラムのインスタンスの複数の実行の際の前記パラメータのいくつかの一意の値を決定することと、前記パラメータの前記いくつかの一意の値が所定の閾値を超える場合に前記パラメータをパラメータの第2のクラスに属するものとして再分類することとを含む、請求項11に記載の方法。
パラメータを自動的に分類することが、最初に前記パラメータをパラメータの第1のクラスに属するものとして分類することと、ジェネリックコンピュータプログラムのインスタンスの複数の実行の際の前記パラメータの値の変化が前記ジェネリックコンピュータプログラムに関連するデータ系統に影響を与えるか否かを決定することと、前記パラメータの値の変化が前記データ系統に影響を与えない場合に前記パラメータをパラメータの第2のクラスに属するものとして再分類することとを含む、請求項11に記載の方法。
ジェネリックコンピュータプログラムの第1のインスタンスの実行に関連するログエントリとパラメータ値の特定の集合との間の関連付けを形成するステップをさらに含む、請求項1に記載の方法。
ジェネリックコンピュータプログラムの第1のインスタンスの実行に関連するログエントリが、実行コマンドへの引数として与えられた1又は2以上のパラメータ値を含む、前記ジェネリックコンピュータプログラムをインスタンス化するために使用された前記実行コマンドのログエントリを含む、請求項1に記載の方法。
ジェネリックコンピュータプログラムの第1のインスタンスの実行に関連するログエントリが、前記第1のインスタンスが実行されたプロジェクトの指示、前記第1のインスタンスに関する内部パラメータの指示、並びに前記第1のインスタンスによって使用された環境設定、グローバル変数、及び構成変数の指示のうちの1又は2以上をさらに含む、請求項15に記載の方法。
データ系統のレポートを形成するために、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体と、前記複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体とを処理するステップをさらに含み、パラメータ値の前記複数の集合全体が、前記ジェネリックコンピュータプログラムに関するパラメータ値の増強された複数の集合を含み、前記複数のジェネリックコンピュータプログラムの前記少なくとも一部のインスタンスの実行に関連する前記複数のログエントリ全体が、パラメータ値の特定の集合との関連付けを含め、前記ジェネリックコンピュータプログラムの前記第1のインスタンスの実行の前記ログエントリを含む、請求項11に記載の方法。
データ系統のレポートを形成することが、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体のうちのパラメータ値のそれぞれの集合に関して、
パラメータ値の集合に対応するジェネリックコンピュータプログラムのインスタンスの実行に関連するすべてのログエントリを特定するために前記複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体を処理し、前記ジェネリックコンピュータプログラムのインスタンスの実行に関連する特定されたログエントリから前記ジェネリックコンピュータプログラムのインスタンス化の最も新しい時間を特定することと、
前記ジェネリックコンピュータプログラムのインスタンス化の前記最も新しい時間に基づいて前記データ系統のレポートにパラメータの前記集合を含めるべきかどうかを決定することとを含む、請求項17に記載の方法。
ジェネリックコンピュータプログラムのインスタンス化の最も新しい時間に基づいてデータ系統のレポートにパラメータの集合を含めるべきかどうかを決定することが、インスタンス化の前記最も新しい時間を所定の時間間隔と比較し、前記ジェネリックコンピュータプログラムのインスタンス化の前記最も新しい時間が前記所定の時間間隔以内である場合に前記データ系統のレポートにパラメータの前記集合を含めることを含む、請求項18に記載の方法。
データ系統のレポートを形成することが、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体のうちのパラメータ値のそれぞれの集合に関して、
パラメータ値の集合に対応するジェネリックコンピュータプログラムのインスタンスの実行に関連するいくつかのログエントリを決定するために前記複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体を処理することと、
前記ジェネリックコンピュータプログラムのインスタンスの実行に関連する前記いくつかのログエントリに基づいて前記データ系統のレポートにパラメータの集合を含めるべきかどうかを決定することとを含む、請求項17に記載の方法。
パラメータ値の特定の集合に関する識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較が、
パラメータ値の前記特定の集合及びジェネリックコンピュータプログラムの識別子に基づいて第1の識別子を決定することと、
パラメータ値の前記前から存在する集合の前記少なくとも一部のパラメータ値のそれぞれの前から存在する集合に関して1つずつ複数の第2の識別子を決定することと、
前記第1の識別子を前記複数の第2の識別子のうちのそれぞれの第2の識別子と比較して、前記第1の識別子及び前記第2の識別子のいずれかが一致するかどうかを決定することとを含む、請求項24に記載の方法。
パラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すべきかどうかを決定するステップが、第2の識別子のうちのいずれも第1の識別子と一致しない場合にパラメータ値の前記特定の集合をパラメータ値の前記複数の前から存在する集合に追加すると決定することを含む、請求項25に記載の方法。
第1の識別子を決定することが、パラメータ値の特定の集合の中身から識別文字列を計算することを含み、第2の識別子を決定することが、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部の中身から識別文字列を計算することを含む、請求項25に記載の方法。
第1の識別子を決定することが、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、前記ジェネリックコンピュータプログラムの関数プロトタイプ、及び前記ジェネリックコンピュータプログラムの実行可能なインスタンスに関するプロジェクトスコープのうちの1又は2以上の連結を形成することを含む、請求項25に記載の方法。
第1の識別子を決定することが、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、前記ジェネリックコンピュータプログラムの関数プロトタイプ、及び前記ジェネリックコンピュータプログラムの実行可能なインスタンスに関するプロジェクトスコープのうちの1又は2以上にデータマッピング関数を適用することを含む、請求項25に記載の方法。
前記ジェネリックコンピュータプログラムに関連する1又は2以上のパラメータのそれぞれをパラメータの第1のクラス又はパラメータの第2のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析するステップをさらに含む、請求項24に記載の方法。
パラメータの第1のクラスが、ジェネリックコンピュータプログラムの論理的な動作に影響を与えるパラメータを含み、パラメータの第2のクラスが、前記ジェネリックコンピュータプログラムの前記論理的な動作に影響を与えないパラメータを含む、請求項31に記載の方法。
【発明の概要】
【課題を解決するための手段】
【0004】
一態様においては、概して、パラメータ値の集合を管理して、パラメータ値のそれらの集合を使用してインスタンス化されたジェネリック(generic)コンピュータプログラムのインスタンスの間の関係を反映する系統情報が、より正確で完全なデータ系統のレポートの生成を可能にする。
【0005】
別の態様においては、概して、パラメータ値の集合を管理するための方法が、ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取るステップと、ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理するステップであって、ジェネリックコンピュータプログラムのそれぞれのインスタンスが、1又は2以上のパラメータ値に関連付けられる、ステップとを含む。処理するステップは、ジェネリックコンピュータプログラムに関連する1又は2以上のパラメータのそれぞれをパラメータの第1のクラス又はパラメータの第2のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析することと、パラメータ値の特定の集合を形成するためにジェネリックコンピュータプログラムの第1のインスタンスの実行に関連するログエントリを処理することであって、ログエントリに現れる第1のクラスのメンバーとして分類された全てのパラメータの値を特定の集合に含めること、及びログエントリに現れる第2のクラスのメンバーとして分類されたパラメータの値を特定の集合から除外することを含む、処理することと、パラメータ値の特定の集合に関する第1の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することとを含む。
【0006】
態様は、以下の特徴のうちの1又は2以上を含み得る。
【0007】
ログエントリを処理するステップは、パラメータがジェネリックコンピュータプログラムに関連するデータ系統に影響を与えるか否かに基づいてパラメータを分類することを含む。
【0008】
パラメータ値の特定の集合に関する第1の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較は、パラメータ値の特定の集合及びジェネリックコンピュータプログラムの識別子に基づいて第1の識別子を決定することと、パラメータ値の集合の少なくとも一部のパラメータ値のそれぞれの集合に関して1つずつ複数の第2の識別子を決定することと、第1の識別子を複数の第2の識別子のうちのそれぞれの第2の識別子と比較して、第1の識別子及び第2の識別子のいずれかが一致するかどうかを決定することとを含む。
【0009】
パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することは、第2の識別子のうちのいずれも第1の識別子と一致しない場合にパラメータ値の特定の集合をパラメータ値の複数の集合に追加すると決定することを含む。
【0010】
第1の識別子を決定することは、パラメータ値の特定の集合の中身から識別文字列を計算することを含み、第2の識別子を決定することは、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部の中身から識別文字列を計算することを含む。
【0011】
第1の識別子を決定することは、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、ジェネリックコンピュータプログラムの関数プロトタイプ、及びジェネリックコンピュータプログラムの第1のインスタンスに関するプロジェクトスコープ(project scope)のうちの1又は2以上の連結を形成することを含む。
【0012】
第1の識別子を決定することは、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、ジェネリックコンピュータプログラムの関数プロトタイプ、及びジェネリックコンピュータプログラムの第1のインスタンスに関するプロジェクトスコープのうちの1又は2以上にデータマッピング関数を適用することを含む。
【0013】
データマッピング関数は、ハッシュ関数を含む。
【0014】
パラメータの第1のクラスは、ジェネリックコンピュータプログラムの論理的な動作に影響を与えるパラメータを含み、パラメータの第2のクラスは、ジェネリックコンピュータプログラムの論理的な動作に影響を与えないパラメータを含む。
【0015】
ジェネリックコンピュータプログラムは、データ処理動作を表すノードと、データ処理動作の間のデータ要素のフローを表すノードの間のリンクとを含むデータフローグラフとして規定される。
【0016】
パラメータのそれぞれに関して、解析は、パラメータを自動的に分類することか、又はパラメータに関するユーザによって定義された分類を受け入れることかのどちらかを含む。
【0017】
パラメータを自動的に分類することは、最初にパラメータをパラメータの第1のクラスに属するものとして分類することと、ジェネリックコンピュータプログラムのインスタンスの複数の実行の際のパラメータのいくつかの一意の値を決定することと、パラメータのいくつかの一意の値が所定の閾値を超える場合にパラメータをパラメータの第2のクラスに属するものとして再分類することとを含む。
【0018】
パラメータを自動的に分類することは、最初にパラメータをパラメータの第1のクラスに属するものとして分類することと、ジェネリックコンピュータプログラムのインスタンスの複数の実行の際のパラメータの値の変化がジェネリックコンピュータプログラムに関連するデータ系統に影響を与えるか否かを決定することと、パラメータの値の変化がデータ系統に影響を与えない場合にパラメータをパラメータの第2のクラスに属するものとして再分類することとを含む。
【0019】
方法は、ジェネリックコンピュータプログラムの第1のインスタンスの実行に関連するログエントリとパラメータ値の特定の集合との間の関連付けを形成するステップをさらに含む。
【0020】
ジェネリックコンピュータプログラムの第1のインスタンスの実行に関連するログエントリは、実行コマンドへの引数として与えられた1又は2以上のパラメータ値を含む、ジェネリックコンピュータプログラムをインスタンス化するために使用された実行コマンドのログエントリを含む。
【0021】
ジェネリックコンピュータプログラムの第1のインスタンスの実行に関連するログエントリは、第1のインスタンスが実行されたプロジェクトの指示、第1のインスタンスに関する内部パラメータの指示、並びに第1のインスタンスによって使用された環境設定、グローバル変数、及び構成変数の指示のうちの1又は2以上をさらに含む。
【0022】
方法は、データ系統のレポートを形成するために、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体と、複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体とを処理するステップをさらに含み、パラメータ値の複数の集合全体は、ジェネリックコンピュータプログラムに関するパラメータ値の増強された複数の集合を含み、複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体は、パラメータ値の特定の集合との関連付けを含め、ジェネリックコンピュータプログラムの第1のインスタンスの実行のログエントリを含む。
【0023】
データ系統のレポートを形成することは、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体のうちのパラメータ値のそれぞれの集合に関して、パラメータ値の集合に対応するジェネリックコンピュータプログラムのインスタンスの実行に関連するすべてのログエントリを特定するために複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体を処理し、ジェネリックコンピュータプログラムのインスタンスの実行に関連する特定されたログエントリからジェネリックコンピュータプログラムのインスタンス化の最も新しい時間を特定することと、ジェネリックコンピュータプログラムのインスタンス化の最も新しい時間に基づいてデータ系統のレポートにパラメータの集合を含めるべきかどうかを決定することとを含む。
【0024】
ジェネリックコンピュータプログラムのインスタンス化の最も新しい時間に基づいてデータ系統のレポートにパラメータの集合を含めるべきかどうかを決定することは、インスタンス化の最も新しい時間を所定の時間間隔と比較し、ジェネリックコンピュータプログラムのインスタンス化の最も新しい時間が所定の時間間隔以内である場合にデータ系統のレポートにパラメータの集合を含めることを含む。
【0025】
データ系統のレポートを形成することは、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体のうちのパラメータ値のそれぞれの集合に関して、パラメータ値の集合に対応するジェネリックコンピュータプログラムのインスタンスの実行に関連するいくつかのログエントリを決定するために複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体を処理することと、ジェネリックコンピュータプログラムのインスタンスの実行に関連するいくつかのログエントリに基づいてデータ系統のレポートにパラメータの集合を含めるべきかどうかを決定することとを含む。
【0026】
別の態様においては、概して、ソフトウェアが、パラメータ値の集合を管理するために、コンピュータ可読媒体に非一時的形態で記憶され、ソフトウェアは、コンピューティングシステムに、ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取ることと、ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理することであって、ジェネリックコンピュータプログラムのそれぞれのインスタンスが、1又は2以上のパラメータ値に関連付けられ、処理することに基づいてパラメータ値の複数の集合を増強する、処理することとを行わせるための命令を含む。処理することは、ジェネリックコンピュータプログラムに関連する1又は2以上のパラメータのそれぞれをパラメータの第1のクラス又はパラメータの第2のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析することと、パラメータ値の特定の集合を形成するためにジェネリックコンピュータプログラムの第1のインスタンスの実行に関連するログエントリを処理することであって、ログエントリに現れる第1のクラスのメンバーとして分類されたパラメータの値を特定の集合に含めること、及びログエントリに現れる第2のクラスのメンバーとして分類されたパラメータの値を特定の集合から除外することを含む、処理することと、パラメータ値の特定の集合に関する第1の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することとを含む。
【0027】
別の態様においては、概して、パラメータ値の集合を管理するためのコンピューティングシステムが、ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取るための入力デバイス又はポートと、ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理するための少なくとも1つのプロセッサであって、ジェネリックコンピュータプログラムのそれぞれのインスタンスが、1又は2以上のパラメータ値に関連付けられる、少なくとも1つのプロセッサとを含む。処理することは、ジェネリックコンピュータプログラムに関連する1又は2以上のパラメータのそれぞれをパラメータの第1のクラス又はパラメータの第2のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析することと、パラメータ値の特定の集合を形成するためにジェネリックコンピュータプログラムの第1のインスタンスの実行に関連するログエントリを処理することであって、ログエントリに現れる第1のクラスのメンバーとして分類されたパラメータの値を特定の集合に含めること、及びログエントリに現れる第2のクラスのメンバーとして分類されたパラメータの値を特定の集合から除外することを含む、処理することと、パラメータ値の特定の集合に関する第1の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することとを含む。
【0028】
別の態様においては、概して、パラメータ値の集合を管理するためのコンピューティングシステムが、ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取るための手段と、ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理するための手段であって、ジェネリックコンピュータプログラムのそれぞれのインスタンスが、1又は2以上のパラメータ値に関連付けられる、手段とを含む。処理することは、ジェネリックコンピュータプログラムに関連する1又は2以上のパラメータのそれぞれをパラメータの第1のクラス又はパラメータの第2のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析することと、パラメータ値の特定の集合を形成するためにジェネリックコンピュータプログラムの第1のインスタンスの実行に関連するログエントリを処理することであって、ログエントリに現れる第1のクラスのメンバーとして分類されたパラメータの値を特定の集合に含めること、及びログエントリに現れる第2のクラスのメンバーとして分類されたパラメータの値を特定の集合から除外することを含む、処理することと、パラメータ値の特定の集合に関する第1の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することとを含む。
【0029】
別の態様においては、概して、パラメータ値の集合を管理するための方法が、ジェネリックコンピュータプログラムを受け取るステップと、パラメータ値の第1の集合を受け取るステップと、パラメータ値の第1の集合に従ってジェネリックコンピュータプログラムをインスタンス化することによってジェネリックコンピュータプログラムの実行可能なインスタンスを生じさせるステップと、1又は2以上のデータセットからのデータを受け取るステップと、受け取られたデータの少なくとも一部を処理するためにジェネリックコンピュータプログラムの実行可能なインスタンスを実行するステップと、ジェネリックコンピュータプログラムの実行可能なインスタンスに関するログエントリを生じさせるステップであって、ログエントリが、パラメータ値の第1の集合のうちのパラメータ値の少なくとも一部を含む、ステップと、ログエントリを記憶するステップと、ログエントリを受け取るステップと、パラメータ値の特定の集合を形成するためにログエントリを処理するステップであって、ログエントリからパラメータ値の第1の集合のうちのパラメータ値の少なくとも一部を抽出し、抽出されたパラメータ値からパラメータ値の特定の集合を形成することを含む、ステップと、パラメータ値の特定の集合に関する第1の識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すべきかどうかを決定するステップとを含む。
【0030】
態様は、以下の特徴のうちの1又は2以上を含み得る。
【0031】
パラメータ値の特定の集合に関する識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較は、パラメータ値の特定の集合及びジェネリックコンピュータプログラムの識別子に基づいて第1の識別子を決定することと、パラメータ値の前から存在する集合の少なくとも一部のパラメータ値のそれぞれの前から存在する集合に関して1つずつ複数の第2の識別子を決定することと、第1の識別子を複数の第2の識別子のうちのそれぞれの第2の識別子と比較して、第1の識別子及び第2の識別子のいずれかが一致するかどうかを決定することとを含む。
【0032】
パラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すべきかどうかを決定することは、第2の識別子のうちのいずれも第1の識別子と一致しない場合にパラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すると決定することを含む。
【0033】
第1の識別子を決定することは、パラメータ値の特定の集合の中身から識別文字列を計算することを含み、第2の識別子を決定することは、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部の中身から識別文字列を計算することを含む。
【0034】
第1の識別子を決定することは、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、ジェネリックコンピュータプログラムの関数プロトタイプ、及びジェネリックコンピュータプログラムの実行可能なインスタンスに関するプロジェクトスコープのうちの1又は2以上の連結を形成することを含む。
【0035】
第1の識別子を決定することは、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、ジェネリックコンピュータプログラムの関数プロトタイプ、及びジェネリックコンピュータプログラムの実行可能なインスタンスに関するプロジェクトスコープのうちの1又は2以上にデータマッピング関数を適用することを含む。
【0036】
データマッピング関数は、ハッシュ関数を含む。
【0037】
方法は、ジェネリックコンピュータプログラムに関連する1又は2以上のパラメータのそれぞれをパラメータの第1のクラス又はパラメータの第2のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析するステップをさらに含む。
【0038】
パラメータ値の特定の集合を形成するためにログエントリを処理するステップは、ログエントリに現れる第1のクラスのメンバーとして分類された抽出されたパラメータ値を特定の集合に含めること、及びログエントリに現れる第2のクラスのメンバーとして分類された抽出されたパラメータ値を特定の集合から除外することをさらに含む。
【0039】
パラメータの第1のクラスは、ジェネリックコンピュータプログラムの論理的な動作に影響を与えるパラメータを含み、パラメータの第2のクラスは、ジェネリックコンピュータプログラムの論理的な動作に影響を与えないパラメータを含む。
【0040】
別の態様においては、概して、ソフトウェアが、パラメータ値の集合を管理するために、コンピュータ可読媒体に非一時的形態で記憶され、ソフトウェアは、コンピューティングシステムに、ジェネリックコンピュータプログラムを受け取ることと、パラメータ値の第1の集合を受け取ることと、パラメータ値の第1の集合に従ってジェネリックコンピュータプログラムをインスタンス化することによってジェネリックコンピュータプログラムの実行可能なインスタンスを生じさせることと、1又は2以上のデータセットからのデータを受け取ることと、受け取られたデータの少なくとも一部を処理するためにジェネリックコンピュータプログラムの実行可能なインスタンスを実行することと、ジェネリックコンピュータプログラムの実行可能なインスタンスに関するログエントリを生じさせることであって、ログエントリが、パラメータ値の第1の集合のうちのパラメータ値の少なくとも一部を含む、生じさせることと、ログエントリを記憶することと、ログエントリを受け取ることと、パラメータ値の特定の集合を形成するためにログエントリを処理することであって、ログエントリからパラメータ値の第1の集合のうちのパラメータ値の少なくとも一部を抽出し、抽出されたパラメータ値からパラメータ値の特定の集合を形成することを含む、処理することと、パラメータ値の特定の集合に関する第1の識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すべきかどうかを決定することとを行わせるための命令を含む。
【0041】
別の態様においては、概して、パラメータ値の集合を管理するためのシステムが、第1のコンピューティングシステムであって、ジェネリックコンピュータプログラム、パラメータ値の第1の集合、及び1又は2以上のデータセットからのデータを受け取るための第1の入力デバイス又はポート、1又は2以上のプロセッサの第1の集合であって、パラメータ値の第1の集合に従ってジェネリックコンピュータプログラムをインスタンス化することによってジェネリックコンピュータプログラムの実行可能なインスタンスを生じさせること、受け取られたデータの少なくとも一部を処理するためにジェネリックコンピュータプログラムの実行可能なインスタンスを実行すること、ジェネリックコンピュータプログラムの実行可能なインスタンスに関するログエントリを生じさせることであって、ログエントリが、パラメータ値の第1の集合のうちのパラメータ値の少なくとも一部を含む、生じさせることを行うように構成された、1又は2以上のプロセッサの第1の集合、ログエントリをストレージデバイスに記憶するための第1の出力デバイス又はポートを含む、第1のコンピューティングシステム、第2のコンピューティングシステムであって、ログエントリを受け取るための第2の入力デバイス又はポート、1又は2以上のプロセッサの第2の集合であって、パラメータ値の特定の集合を形成するためにログエントリを処理することであって、ログエントリからパラメータ値の第1の集合のうちのパラメータ値の少なくとも一部を抽出し、抽出されたパラメータ値からパラメータ値の特定の集合を形成することを含む、処理すること、及びパラメータ値の特定の集合に関する第1の識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すべきかどうかを決定することを行うように構成された、1又は2以上のプロセッサの第2の集合を含む、第2のコンピューティングシステムを含む。
【0042】
態様は、以下の利点のうちの1又は2以上を含む可能性がある。
【0043】
本明細書において説明される手法を使用してパラメータの集合を発見し、発見されたパラメータの集合を使用してパラメータの集合の既存の集合を増強することによって、既存のパラメータの集合の増強された集合を使用して生じさせられたデータ系統のレポートが、データ処理システムの真のデータ系統をより正確に表す。特に、前に見落とされたであろうデータ処理システムに関するデータ系統の部分が、データ系統のレポートに含められる。
【0044】
一部の例においては、パラメータの集合発見手法の結果が、コンピュータプログラムのインスタンスの実行のログエントリを増強する(つまり、発見されたパラメータの集合についての情報によってログエントリを増強する)ためにやはり使用され得る。増強されたログエントリは、コンピュータプログラム及び/又はデータセットの間の論理的なつながりが物理的なつながりに対応することを確認するために有利に使用され得る。この確認の結果は、ユーザに提示されるデータ系統がコンピュータプログラム並びにそれらのコンピュータプログラムの入力及び出力の間の正しい系統の関係を示すことを保証する。
【0045】
本発明のその他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかになるであろう。
【発明を実施するための形態】
【0047】
図1は、本明細書において説明されるパラメータの集合発見技術が使用され得るデータ処理システム100の例を示す。システムは、一部の実施形態において、(データ処理構成要素又はデータセットを表す)頂点間の(作業要素(work element)、すなわち、データのフローを表す)有向リンクによって接続された頂点を含むデータフローグラフ117としてアプリケーションを開発するためのシステムである開発環境118を含む。例えば、そのような環境は、参照により本明細書に組み込まれる「Managing Parameters for Graph-Based Applications」と題された米国特許出願公開第2007/0011668号明細書により詳細に説明されている。そのようなグラフに基づく計算を実行するためのシステムは、参照により本明細書に組み込まれる「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」と題された米国特許第5,966,072号明細書に説明されている。このシステムによって作成されるデータフローグラフ117は、プロセス間で情報を移動するため及びプロセスに関する実行の順序を定義するためにグラフの構成要素によって表される個々のプロセスに情報を出し入れするための方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信の方法を選択するアルゴリズムを含む(例えば、グラフのリンクに従った通信パスは、TCP/IP若しくはUNIXドメインソケットを使用するか、又はプロセス間でデータを渡すために共有メモリを使用する可能性がある)。開発環境118を使用して開発者120によって作成されたデータフローグラフ117は、システム100のその他のモジュールによるその後の使用のために、開発環境118によってアクセスされ得るデータストレージシステム116に記憶され得る。
【0048】
実行環境104は、パラメータ解決モジュール106及び実行モジュール112を含む。実行環境104は、例えば、UNIXオペレーティングシステムのバージョンなどの好適なオペレーティングシステムの制御下の1又は2以上の多目的コンピュータでホストされる可能性がある。例えば、実行環境104は、ローカルの(例えば、対称型マルチプロセッシング(SMP,symmetric multi-processing)コンピュータなどのマルチプロセッサシステム)又はローカルに分散された(例えば、クラスタ若しくは超並列処理(MPP,massively parallel processing)システムとして接続された複数のプロセッサか、或いは遠隔の又は遠隔に分散された(例えば、ローカルエリアネットワーク(LAN,local area network)及び/若しくは広域ネットワーク(WAN,wide-area network)を介して接続された複数のプロセッサ)か、或いはこれらの任意の組合せかのいずれかの複数の中央演算処理装置(CPU,central processing unit)或いはプロセッサコアを用いるコンピュータシステムの構成を含むマルチノード並列コンピューティング環境を含む可能性がある。
【0049】
パラメータ解決モジュール106は、データストレージシステム116からデータフローグラフ117の規定を受け取り、実行モジュール112によって実行するためにデータフローグラフ(複数可)117を準備するために(下でより詳細に説明されるように)データフローグラフ117に関するパラメータを解決する。実行モジュール112は、パラメータ解決モジュール106から準備されたデータフローグラフ117を受け取り、それらのデータフローグラフ117を使用してデータソース102からのデータを処理し、出力データ114を生じさせる。出力データ114は、実行環境104によってアクセスされ得るデータソース102若しくはデータストレージシステム116に戻して記憶されるか、又はその他の方法で使用される可能性がある。概して、データソース102は、ストレージデバイス、又はオンラインデータストリームへの接続などのデータの1又は2以上のソースを含む可能性があり、それらの1又は2以上のソースのそれぞれは、さまざまなフォーマット(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブフォーマット)のいずれかでデータを記憶又は提供し得る。
【0050】
データソース102を提供するストレージデバイスは、実行環境104のローカルにあり、例えば、実行環境104をホストするコンピュータに接続されたストレージ媒体(例えば、ハードドライブ108)に記憶される可能性があり、又は実行環境104のリモートにあり、例えば、(例えば、クラウドコンピューティングインフラストラクチャによって提供される)リモート接続を介して実行環境104をホストするコンピュータと通信するリモートシステム(例えば、メインフレーム110)でホストされる可能性がある。
【0051】
システム100は、企業ユーザ121(例えば、データ設計者又はビジネスユーザ)によってアクセスされ得るメタデータ環境モジュール119も含む。メタデータ環境モジュール119は、データフローグラフ117(又はそれらのデータフローグラフ117を特徴付けるメタデータ並びにそれらのデータフローグラフ117が参照する入力及び出力データセット)を処理してデータフローグラフ117に関するデータ系統を生じさせるデータ系統モジュール115を含む。企業ユーザ121は、データフローグラフ117の検証及び遵守の検査などの理由でデータ系統を見る可能性がある。特定のデータアイテム(例えば、データセット、又はデータセット内のフィールド)についてのデータ系統情報は、データ処理システムによって実行される処理から生じる依存関係に基づき、本明細書において使用される用語「データ系統」は、概して、その他の関連するデータアイテムと、それらのデータアイテムを消費するか又は生じさせる処理エンティティとを含む集合を指す。データ系統のレポート(データ系統図とも呼ばれる)は、ノードがデータアイテム及び処理エンティティを表し、リンクがそれらの間の依存関係を表すグラフの形態のデータ系統の図式的表現を含む可能性がある。データ系統のレポートを生じさせ、表示することができる一部のシステムは、上流端のデータの根本的なソースから下流端において生成される最終データまでエンドツーエンドのデータ系統を自動的に提示することができる。特定のデータアイテムから上流のパス上のノードは、そのデータアイテムに関する「ディペンデンシ(dependency)」と呼ばれることがあり、特定のデータアイテムから下流のパス上のノードは、そのデータアイテムに関する「インパクト(impact)」と呼ばれることがある。「データ系統」は上流のディペンデンシのみを指すために使用されることがあるが、本明細書において使用されるとき、「データ系統」は、特定の文脈に応じて上流のディペンデンシ及び/又は下流のインパクトのどちらか又は両方を指す可能性がある。
【0052】
1 データフローグラフの概要
図2を参照すると、
図1の開発環境118を使用して生じさせられたデータフローグラフ217の例が、gather.mpと命名された第1の部分グラフ202と、process.mpと命名された第2の部分グラフ204とを含む。
【0053】
第1の部分グラフ202は、第1の論理データセットDS1 206及び第2の論理データセットDS2 208を入力として受け取り、第1の及び第2の論理データセット206、208からのデータを処理し、処理の結果を第3の論理データセットDS3 210に書き込む。第2の部分グラフ204は、(たまたま第3の論理データセット210と同じ物理ファイルを指す)第4の論理データセットDS4 212を入力として受け取り、第4の論理データセット212からのデータを処理し、処理の結果をテーブル214に書き込む。
【0054】
4つの論理データセット206、208、210、212のそれぞれは、ランタイムで物理ファイルへのパスに解決するパラメータ表記されたパスに関連付けられる。特に、第1の論理データセット206は、パラメータ表記されたパス/${FEED}/inv_${DATE}.datを使用して特定され、第2の論理データセット208は、パラメータ表記されたパス/${FEED}/cust_${DATE}.datを使用して特定され、第3の論理データセット210は、パラメータ表記されたパス/trans_${DATE}.datを使用して特定され、第4の論理データセット212は、パラメータ表記されたパス/trans_${DATE}.datを使用して特定される。
【0055】
第1の部分グラフ202は、2つのパラメータP1 = FEED及びP2 = DATEを引数として受け取り、下でより詳細に説明されるように、パラメータを使用して、パラメータ表記されたパス内のFEED及びDATEプレースホルダを受け取られたFEED及びDATEパラメータ値で置き換えることによって、パスを、第1の論理データセット206、第2の論理データセット208、及び第3の論理データセット210のそれぞれの物理的位置に解決する。さらに、第1の部分グラフ202は、DATEパラメータの「静的解析」値を含む。下でより詳細に説明されるように、DATEパラメータの静的解析値は、データフローグラフ217の静的解析中に(つまり、データフローグラフ217のデータ系統が決定されるときに)パラメータ値として使用されるプレースホルダの値である。
【0056】
同様に、第2の部分グラフ104は、単一のパラメータP1 = DATEを受け取り、そのパラメータを使用して、第4の論理データセット212に関するパラメータ表記されたパス内のDATEプレースホルダを受け取られたDATEパラメータの値で置き換えることによって、パスを、第4の論理データセット212の物理的位置に解決する。さらに、第2の部分グラフ204は、DATEパラメータの「静的解析」値を含む。下でより詳細に説明されるように、DATEパラメータの静的解析値は、データフローグラフ217の静的解析中に(つまり、データフローグラフ217のデータ系統が決定されるときに)パラメータ値として使用されるプレースホルダの値である。
【0057】
データフローグラフ217及びその部分グラフの動作はそれが受け取るパラメータに依存するので、データフローグラフ及びその部分グラフは、「ジェネリック」データフローグラフ又は「ジェネリック」コンピュータプログラムと呼ばれることがある。
【0058】
1.1 パラメータ
概して、上述のパラメータは、「設計時」パラメータか又は「ランタイム」パラメータかのどちらかとして指定される可能性がある。上述のようにパス解決のために使用されることに加えて、設計時パラメータは、それらのパラメータの関連するデータフローグラフの論理的な動作に影響を与える。対称的に、ランタイムパラメータは、ジョブ毎にグラフに供給され、グラフの論理的な動作に影響を与えない。一部の例において、データフローグラフの論理的な動作は、グラフの機能とグラフによって利用される論理データセットとの両方を指す。
【0059】
図2において、FEEDパラメータは、gather.mp部分グラフの論理的な動作に影響を与える設計時パラメータである。例えば、FEEDパラメータの1つの値に関して、第1の部分グラフ202内のソート構成要素216が、そのソート構成要素216が受け取るデータを昇順にソートする可能性がある一方、FEEDパラメータの別の異なる値は、ソート構成要素216にデータを降順にソートさせる可能性がある。一部の例において、設計時パラメータを含むデータフローグラフは、そのデータフローグラフの論理的な動作が設計時パラメータの供給された値に基づいて変わるので、「ジェネリックグラフ」と呼ばれる。
【0060】
DATEパラメータは、部分グラフ202の論理的な動作に影響を与えず、ジョブ毎に供給されるランタイムパラメータである。
【0061】
1.2 パラメータの集合
一部の例においては、データフローグラフに関するパラメータのよく使用される集合は、ディスクに保存され、容易に再利用され得る「パラメータの集合」(「pset」と呼ばれることがある)として記憶される。例えば、
図2において、第1の部分グラフ202は、その部分グラフ202に関連する3つのpset、PSET_mexico218、PSET_canada220、及びPSET_usa222を有する。PSET_mexico218は、よく使用されるFEEDパラメータ値「mexico」と、今日の日付を返す関数であるよく使用されるDATEパラメータ値「today()」とを含む。PSET_canada220は、よく使用されるFEEDパラメータ値「canada」と、よく使用されるDATEパラメータ値「today()」とを含む。PSET_usa222は、よく使用されるFEEDパラメータ値「usa」と、よく使用されるDATEパラメータ値「today()」とを含む。
【0062】
同様に、第2の部分グラフ204は、その部分グラフ204に関連する単一のpset、PSET223を有する。PSET223は、今日の日付を返す関数であるよく使用されるDATEパラメータ値「today()」を含む。
【0063】
2 パラメータ解決モジュール
一部の例においては、データフローグラフ117が実行モジュール112によって実行される前に、
図1のパラメータ解決モジュール106が、データフローグラフ117(並びにそれに関連する部分グラフ202、204)に関連する1又は2以上のpsetを特定し、1又は2以上のpset内のいくつかの一意の設計時パラメータを決定する。所与のデータフローグラフに関するそれぞれの一意の設計時パラメータに関して、パラメータ解決モジュール106は、データフローグラフの別々の実行可能なインスタンスをインスタンス化する。例えば、
図3を参照すると、
図2のデータフローグラフ217に関して、第1の部分グラフ202、gather.mpの3つのインスタンスがインスタンス化され(PSET_mexico−>gather.mp202a、PSET_canada−>gather.mp202b、PSET_usa−>gather.mp202c)、各インスタンスは、
図2のpsetの3つの一意のフィードパラメータ、すなわちmexico、canada、usaのうちの異なる1つに従って構成される。第2の部分グラフ204はいかなる設計時パラメータも含まない単一のpset223のみに関連付けられるので、第2の部分グラフ204の単一のインスタンス(process.mp204a)のみが、実行時にインスタンス化される。
【0064】
部分グラフ202、204の適切なインスタンスがパラメータ解決モジュール106によってインスタンス化されると、パラメータ解決モジュール106は、データセットに関するパラメータ表記されたパス内のパラメータ値のプレースホルダをpsetからの実際のパラメータ値で置き換え、パスをデータセットの物理的位置に解決する。例えば、第1の部分グラフ202のPSET_mexico−>gather.mpインスタンス202aに関して、第1のデータセット206に関するパスは、FEEDパラメータ値が「mexico」であり、DATEパラメータ値が「031014」であるので、/mexico/inv_031014に解決される。
【0065】
パラメータ解決モジュール106が、データフローグラフ217の部分グラフ202、204を含むデータフローグラフ217をインスタンス化し、物理パスをデータフローグラフ217のデータセットに解決すると、データフローグラフ217は、実行モジュール112によって実行するために準備される。実行中、第1の部分グラフ202の3つのインスタンス202a、202b、202cは、それらのインスタンスのそれぞれの入力データセットからデータを読み、データを処理し、処理されたデータを/trans_031014.dat物理ファイルに記憶する。第2の部分グラフ202のインスタンス204aに関する入力データセット(例えば、DS4 212)は第1の部分グラフの出力データセットと同じ物理ファイルに解決するので、/trans_031014.dat物理ファイルは、process.mpのインスタンスによって読まれ、それから処理され、テーブル214に記憶される。
【0066】
3 データ系統モジュール
図4を参照すると、一部の例においては、データフローグラフ217を実行するのではなく、
図1のデータ設計者又はビジネスユーザ121は、データがデータフローグラフ217を通り抜けるときのそのデータの系統を調べることを必要とする可能性がある。そのようにするために、
図1のデータ系統モジュール115は、データフローグラフ217を解析して、データ設計者又はビジネスユーザ121に対して提示するためのデータ系統のレポートを生じさせるように構成される。
【0067】
一部の例においては、データフローグラフ217に関するデータ系統を決定する際の第1のステップとして、データ系統モジュール115は、データフローグラフ217の個々の部分グラフ202、204を特定する。特定された部分グラフ202、204のそれぞれに関して、データ系統モジュール115は、部分グラフ202、204に関連する1又は2以上のpset218、220、222、223を特定し、それから、部分グラフ202、204に関する1又は2以上のpset218、220、222、223内のいくつかの一意の設計時パラメータを決定する。それぞれの一意の設計時パラメータに関して、パラメータ解決モジュールは、部分グラフ202、204の別々のインスタンスをインスタンス化する。
【0068】
一部の例において、データ系統モジュール115は、実際の物理ファイル及びそれらの物理ファイルが記憶するデータはデータ系統の解析と無関係であるという仮定の下で動作する。このため、データセットの物理的位置を解決するために使用されるいかなるランタイムパラメータ値も必要なく、プレースホルダの値によって置き換えられ得る。上述のように、部分グラフに関連するそれぞれのランタイムパラメータに関して、対応するプレースホルダの静的解析パラメータ値が部分グラフに含まれる。例えば、
図2においては、両方のデータフローグラフ202、204がDATEランタイムパラメータを含むので、それらのデータフローグラフ202、204は、両方とも、プレースホルダの静的解析パラメータ値「MMDDYY」も含む。
【0069】
データ系統モジュール115がデータフローグラフ217を解析してデータ系統を決定するとき、データフローグラフ内のDATEパラメータのすべてのインスタンスが、プレースホルダの値「MMDDYY」によって置き換えられ、
図4に示されるように、一時的データセットオブジェクト452を生成する。それから、さまざまな部分グラフのインスタンスと一時的データセットオブジェクトとの間の相互接続が特定され、データ設計者又はビジネスユーザにデータ系統として提示される。例えば、第1の部分グラフ202のインスタンス202a、202b、202cの解析は、第1の部分グラフ202のインスタンスのすべてが/trans_MMDDYY.datデータセットオブジェクトによって表されるデータセットにデータを書き込むことを示す。そして、解析は、第2のデータフローグラフ204のインスタンス204aが/trans_MMDDYY.datデータセットオブジェクトによって表されるデータセットから読み取ることを示す。この情報に基づいて、データフローグラフ217のデータ系統は、第1の部分グラフ202のインスタンス202a、202b、202cの出力が第2の部分グラフ204のインスタンス204aの入力に供給されることを示す。
【0070】
4 論理pset発見及び生成方法
一部の例においては、所与のデータフローグラフが、前に記憶されたpsetからではなく実行コマンドに与えられる引数としてパラメータ値を受け取る実行コマンドを使用して実行される。上述の方法は記憶されたpsetのみを使用してデータ系統を決定するので、データフローグラフを実行するための実行コマンドに与えられる引数に由来するパラメータ値に関連するpsetは、データ系統内に表されない。これは、不完全な又は誤ったデータ系統が企業の設計者又は監査人に提供される結果をもたらす可能性がある。
【0071】
図5は、データフローグラフのインスタンスの実行に関連するログ内で特定されたパラメータの集合に基づいて生成された論理パラメータの集合(pset)によってデータフローグラフに関する既存の論理psetのリポジトリを増強するための方法を示す流れ図である。一部の例において、
図5において説明される方法は、
図1のデータ系統モジュール115によって実施される。
【0072】
4.1 グラフパラメータ
初めに、データフローグラフの一例(例えば、
図1の第1の部分グラフ202)は、2つのパラメータ(P
1及びP
2)を含み、これらのパラメータのそれぞれは、「設計時」パラメータ又は「ランタイム」パラメータのどちらかとして指定され得る。上述のように、設計時パラメータは、グラフの論理的な動作に影響を与える(例えば、グラフによって実行される変換を変え得る)パラメータである一方、ランタイムパラメータは、ジョブ毎に変わり(例えば、日付)、グラフの論理的な動作に影響を与えないパラメータである。
【0073】
4.2 パラメータの分類
グラフ202は、グラフ202のパラメータを解析してパラメータ分類結果426を生じさせるパラメータ分類ステップ424に提供される。パラメータ分類結果426内で、各パラメータは、設計時パラメータ又はランタイムパラメータのどちらかとして分類される。流れ図に示された例示的な場合、P
1は、設計時パラメータとして分類され、P
2は、ランタイムパラメータとして分類される。
【0074】
一部の例において、データフローグラフに関するパラメータは、設計時パラメータ又はランタイムパラメータのどちらかであるものとして(例えば、ユーザによって)予め分類される。(例えば、レガシーデータフローグラフに関する)その他の例において、データフローグラフに関するパラメータは、設計時パラメータ又はランタイムパラメータのどちらかであるものとして予め分類されない。そのような場合、パラメータ分類ステップ424は、すべてのパラメータが設計時パラメータであると仮定する可能性がある。後の再分類ステップにおいては、所与のパラメータがログエントリの集合(例えば、下で説明されるジョブログデータストア(job log data store))内に(例えば、所与の閾値を超える)多数の一意の値を有すると決定される場合、所与のパラメータはランタイムパラメータとして再分類され得る。代替的に、再分類は、データ系統感度解析(data lineage sensitivity analysis)に基づく可能性がある。特に、パラメータがデータフローグラフ内のデータ系統(すなわち、データフローグラフ内のデータセット又は構成要素のインパクト又はディペンデンシ)を変えることなくさまざまな異なる値をとり得る場合、パラメータはランタイムパラメータとして分類され得る。例えば、グラフ内のデータセット(例えば、
図3のDS1、DS2、DS3)の関連するレコードフォーマット又はその他の特徴がパラメータのさまざまな値によって影響を受けない場合、そのパラメータは、ランタイムパラメータとして再分類される。すべての内部のインパクト及びディペンデンシを解決することを含むより包括的なデータ系統感度解析、並びにデータセットのレコードフォーマットに関連するインパクト及びディペンデンシだけを解決することを含むより制限されたデータ系統感度解析などのこのデータ系統感度解析の変更形態が、使用され得る。
【0075】
(例えば、レガシーデータフローグラフに関する)一部の例において、パラメータは、設計時部分とランタイム部分との両方を含む可能性がある。例えば、ファイル名パラメータ「/mexico/inv_031014.dat」は、設計時部分(すなわち、「mexico」)及びランタイム部分(すなわち、「031014」)を含むのでハイブリッドパラメータである可能性がある。そのような例においては、ユーザが、ハイブリッドパラメータからそれぞれの設計時パラメータ及びランタイムパラメータを抽出し、分類するためにパラメータ分類ステップ424によって使用される正規表現又は何らかのその他の種類の文字列解析規則を与える可能性がある。
【0076】
4.3 ジョブログデータストア
方法は、それぞれがデータフローグラフ202のインスタンスの実行に関連する情報を含むいくつかのジョブログエントリ(job log entry)429を含むジョブログデータストア428を利用する。情報の中でもとりわけ、ジョブログエントリの少なくとも一部は、データフローグラフ202をインスタンス化するために使用された実行コマンドのレコードを含む。所与のジョブログエントリに関する実行コマンドは、実行コマンドに引数として与えられたグラフ名及びパラメータ値を含む。概して、ジョブログデータストア428のジョブログエントリの少なくとも一部は、いかなるパラメータの集合にもアクセスすることなくデータフローグラフをインスタンス化するが、その代わりに、実行コマンドに与えられる引数としてパラメータ値を受け取る。
【0077】
4.4 処理ループ
ジョブログデータストア428及びパラメータ分類結果426は、処理ループ430に与えられ、処理ループ430は、ジョブログデータストア428のそれぞれのジョブログエントリ429に関して、グラフ実行コマンドに関する新しい論理psetを生じさせ、新しい論理psetが既存の論理psetのリポジトリ448内に既に存在するかどうかを決定し、新しい論理psetがまだ存在しない場合、新しい論理psetをリポジトリ448に追加する。
【0078】
4.4.1 初期コマンドライン論理pset構築
処理ループ430内では、パラメータ分類結果426及びジョブログデータストア428からのジョブログエントリJ
n432が、論理pset構築ステップ434に与えられ、論理pset構築ステップ434は、パラメータ分類結果426に従ってジョブログエントリ432を解析して論理pset436を生じさせる。そのようにする際に、論理pset構築ステップ434は、ジョブログエントリ432に含まれるグラフ実行コマンドを解析して、グラフ実行コマンドへの引数として含まれるパラメータ値を抽出する。論理pset構築ステップ434は、ジョブログエントリ432に含まれるプロジェクトスコープも抽出する。一部の例において、プロジェクトスコープは、データフローグラフが実行されているプロジェクトの指示、データフローグラフに関する内部パラメータの指示、並びにデータフローグラフによって使用された環境設定、グローバル変数、及び構成変数の指示を含む。
【0079】
論理pset構築ステップ434は、抽出されたプロジェクトスコープを論理pset436に自動的に含める。そして、論理pset構築ステップ434は、それぞれの抽出されたパラメータ値をパラメータ分類結果426内の対応するパラメータとマッチングする。抽出されたパラメータ値がパラメータ分類結果426内の設計時パラメータに対応すると論理pset構築ステップ434が決定する場合、論理pset構築ステップ434は、抽出された設計時パラメータの値を論理pset436に含める。抽出されたパラメータ値がパラメータ分類結果426内のランタイムパラメータに対応すると論理pset構築ステップ434が決定する場合、抽出されたパラメータ値は、論理pset436に含められない。
【0080】
4.4.2 pset署名文字列計算
論理pset436は、pset署名文字列計算ステップ442に与えられ、pset署名文字列計算ステップ442は、論理pset436内のプロジェクトスコープ及びパラメータ値に基づいて論理pset署名文字列444を計算する。一部の例において、pset署名文字列444は、論理pset436に関するプロジェクトスコープ、論理pset436内のパラメータの名前/値ペア、及び論理pset436に関連するデータフローグラフのプロトタイプをシリアル化することによって計算される。その他の例において、pset署名文字列444は、論理pset436にハッシュ関数又は何らかのその他のデータマッピングアルゴリズムを適用することによって計算される。
【0081】
4.4.3 pset署名文字列検索
pset署名文字列444は、既存の論理psetのリポジトリ448内のすべての既存の論理psetのpset署名文字列と一緒にpset署名検索ステップ446に与えられる。既存の論理psetのそれぞれに関して、既存の論理psetのpset署名文字列が、pset署名文字列444と比較される。pset署名文字列444が既存の論理psetのpset署名文字列のうちの少なくとも1つに一致する場合、グラフ432の実行コマンドのインスタンス化のための論理psetは既存の論理psetのリポジトリ448内に既に存在するので、何も行われる必要がない。
【0082】
一部の例において、既存の論理psetのリポジトリ448内のすべての既存の論理psetのpset署名文字列は、既存の論理psetと一緒にリポジトリ448に記憶される。その他の例において、既存の論理psetに関する署名文字列は、オンザフライで、必要に応じて計算される。
【0083】
4.4.4 新しい論理psetの追加
そうではなく、既存の論理psetの署名文字列のいずれもpsetの署名文字列444に一致しない場合、論理pset436及びその論理pset436の署名文字列444は、新しい論理pset追加ステップ450によって既存の論理psetのリポジトリ448に新しい論理psetとして追加される。
【0084】
4.5 例
図6及び
図7を参照すると、
図2の第1の部分グラフ202に適用される
図4の論理pset発見及び生成方法の例示的な動作が提示される。
図2の第1の部分グラフ202は、2つのパラメータP1 = FEED及びP2 = DATEを含む。第1の部分グラフ202は、パラメータが「設計時」パラメータ又は「ランタイム」パラメータのどちらかとして分類され、パラメータ分類結果426を生じさせるパラメータ分類ステップ424に与えられる。パラメータ分類結果426は、P1(FEED)パラメータが設計時パラメータであり、P2(DATE)パラメータがランタイムパラメータであることを示す。
【0085】
パラメータ分類結果426及びジョブログデータストア428が、論理pset構築ステップ434に与えられる。
図6の例において、ジョブログデータストア428は、第1の部分グラフ202(すなわち、gather.mp)のインスタンスの実行に関連する情報を含む4つのジョブログエントリを含む。それぞれのジョブログエントリは、DATEパラメータ及びFEEDパラメータに関する値を引数として受け取った実行コマンドを含む。
【0086】
論理pset構築ステップ434は、ジョブログデータストア428のジョブログエントリのそれぞれに関して異なる論理pset436を生成する。P1(FEED)パラメータが設計時パラメータであるので、実行コマンドに引数として与えられたそのP1(FEED)パラメータの値(例えば、mexico、usa、canada、又はhong kong)は、論理pset436のそれぞれに関して含められる。P2(DATE)パラメータがランタイムパラメータであるので、実行コマンドに引数として与えられたそのP2(DATE)パラメータの値は、論理pset436に含められない。論理pset436のそれぞれは、第1の部分グラフ202のその論理pset436の対応するインスタンスに関するプロジェクトスコープを含む。
【0087】
図7を参照すると、論理pset436は、論理pset436のそれぞれに関して異なる論理pset署名文字列444を計算するpset署名文字列計算ステップ442に与えられる。
【0088】
論理pset署名文字列444と、既存のpsetのリポジトリ448内の既存のpsetに関する論理pset署名文字列の集合447とが、検索ステップ446に与えられる。
図2においてそうだったように、第1の部分グラフ202に関連する3つの既存のpset、すなわち、mexico FEEDパラメータに関する既存のpset、usa FEEDパラメータに関する既存のpset、及びcanada FEEDパラメータに関する既存のpsetが存在する。したがって、既存のpsetに関する論理pset署名文字列444の集合447は、第1の部分グラフ202に関連する既存のpsetのそれぞれに関する文字列を含む。
【0089】
検索ステップ446は、既存のpsetに関する論理pset署名文字列の集合447内の論理pset署名文字列444のそれぞれの存在を検索する。この例において、検索ステップ446によって生じさせられた結果は、既存のpsetに関する論理pset署名文字列の集合447に含まれない論理pset署名文字列のみがFEEDパラメータ値「hong kong」を有する論理psetに関連する論理pset署名文字列であることである。
【0090】
検索ステップ446の結果と、「hong kong」フィードパラメータを含む論理pset436とが、論理pset追加ステップ450に与えられ、論理pset追加ステップ450は、FEEDパラメータ「hong kong」を含む論理psetと、その論理psetの対応する論理pset署名文字列444とを既存の論理psetのリポジトリ448に追加する。
【0091】
新しい論理psetをリポジトリに追加することによって、以前のデータ系統の結果において見落とされたであろう第1の部分グラフ202の「hong kong」インスタンスが、データ系統の結果に表される。
【0092】
上記の例においては、ランタイムパラメータに関する静的解析値がデータフローグラフ自体に記憶されるものとして説明されているが、一部の例においては、ランタイムパラメータに関する静的解析値は、データフローグラフに関連する1又は2以上のpsetに保有される可能性があることが留意される。
【0093】
一部の例において、特定の設計時パラメータ値は、静的解析時に存在するとは限らないソースから(例えば、データベースから)導出される。しかし、一部の例においては、ジョブログデータストアに記憶されたジョブログエントリが、その特定のジョブに関する解決されたすべてのパラメータに関する値を含む。静的解析時には、記憶されたパラメータ値が、静的解析時に存在しないソースから導出されるパラメータ値の代わりに使用され得る。
【0094】
一部の例において、ジョブログデータストアのジョブログエントリは、データフローグラフに関するすべての解決されたパラメータ、データフローグラフによって読み書きされたすべてのファイルのログ、及び性能追跡情報を含む。一部の例において、ジョブログデータストアのジョブログエントリは、
図4の方法によって発見される任意の論理パラメータの集合によって増強される。一部の例において、発見された論理パラメータの集合によってジョブログデータストアのジョブログエントリを増強することは、ジョブログエントリと発見された論理パラメータの集合との間の関連付けを形成することを含む。ジョブログデータストアの増強されたジョブログエントリは、さまざまな形態の情報をデータ設計者又はビジネスユーザに提供するために利用され得る。一部の例において、増強されたジョブログエントリは、論理的に接続されるデータフローグラフが物理的にも接続されることを保証するために解析され得る。一部の例において、増強されたジョブログエントリは、物理データセットがどの論理データセットのインスタンスに対応するかを決定するために解析され得る。一部の例において、増強されたジョブログエントリは、同じ物理ファイル名を有するが、異なる静的解析パラメータに関連付けられるデータセットを特定するために解析され得る。そのような例においては、不整合が、手動で修復するためにユーザに提示される可能性があり、又は自動的に修復される可能性がある。一部の例において、データ系統のレポートは、不整合の指示と、不整合が自動的に修正されたか否かとを含む可能性がある。
【0095】
一部の例において、増強されたジョブログエントリは、頻度及び/又は新しさによってデータ系統のレポートをフィルタリングするためにデータ系統モジュールによって使用され得る。例えば、メタデータ環境モジュールは、実行モジュールによってもはや実行されないいくつかのデータフローグラフ及びpsetを保有する可能性がある。そのようなデータフローグラフ及びpsetは、万が一後で必要とされる場合に備えて適所に残される可能性がある。しかし、実行されないデータフローグラフ及びpsetは、データ系統のレポートを不必要に乱雑にする可能性がある。乱雑さを減らすために、増強されたジョブログエントリは、どのデータフローグラフ及び/若しくはpsetがまれにしか使用されず並びに/又は最近使用されていないかを決定するために解析され得る。頻度及び新しさの情報に基づいて、まれにしか実行されず、最近実行されていないデータフローグラフ及びpset(例えば、過去1年間実行されなかったデータフローグラフ)は、企業ユーザに提示する前にデータ系統のレポートから除去される可能性がある。
【0096】
一部の例においては、所与のデータフローグラフに関する論理pset(例えば、FEED = USAを含むpset)が存在する可能性があるが、データフローグラフを呼び出す1又は2以上のジョブは、既存のpsetを利用する代わりにデータフローグラフにパラメータ値を直接与えることによってそのようにする。そのような場合、ジョブと(例えばジョブに関連する署名を介して)ジョブによってアクセスされた論理psetとの間で保有される関連付けが、ジョブログエントリをそれらのジョブログエントリの関連する論理psetに基づいてグループ分けするために使用され得る。グループ分けに基づいて、既存のpsetを利用する代わりにグラフを直接呼び出すことによってインスタンス化されるジョブが、論理pset及びその論理psetのパラメータに関連するものとして特定され得る。
【0097】
一部の例において、データフローグラフに関するそれぞれのジョブログエントリは、情報の中でもとりわけ、ジョブログエントリに関連付けられるデータフローグラフの実行のためのすべての解決されたパラメータ値のリストを含む。いくつかのジョブログエントリがたまると、ジョブログエントリに含まれる解決されたパラメータ値が、データフローグラフのさまざまな「設計時インスタンス」を特定するために比較され得る。例えば、ジョブログエントリ内の特定の解決されたパラメータが、ジョブログエントリのすべての中のほんのいくつかの値によって表される可能性がある一方、特定のその他の解決されたパラメータは、ジョブログエントリのすべての中の多くの異なる値によって表される可能性がある。ジョブログエントリ内のほんのいくつかの値によって表される解決されたパラメータは、おそらくは「設計時」パラメータであり、ジョブログエントリ内の多くの異なる値によって表されるその他の解決されたパラメータは、おそらくは「ランタイムパラメータ」である。「設計時パラメータ」の一意の組合せを共有するデータフローグラフのインスタンスは、一緒にグループ化され、すべてデータフローグラフの「設計時インスタンス」であると考えられる。データ系統モジュールは、データフローグラフの異なる設計時インスタンスをデータ系統のレポートに含める。
【0098】
5 重複論理データセット発見及び軽減方法
5.1 概要
概して、所与のデータフローグラフに関する入力及び出力データセット(例えば、データのデータベース又はテーブル)は、データフローグラフ内の論理データセットとして規定される。一部の例において、それぞれの論理データセットは、論理ファイル名などの識別子に関連付けられる。
【0099】
データフローグラフは、実行される前に、それぞれの論理データセットを対応する物理データセット(例えば、ディスク上のファイル)に解決することを含め、実行のために準備される。一部の例において、それぞれの物理データセットは、物理ファイル名(例えば、summary.dat)などの識別子に関連付けられる。パラメータ解決プロセスは、たとえ論理データセットの論理ファイル名が対応する物理データセットの物理ファイル名と異なるとしても、論理データセットをその論理データセットの対応する物理データセットにうまく解決することができる。
【0100】
データ系統のレポートが2又は3以上の部分グラフを含むデータフローグラフに関して決定されるとき、部分グラフの間の系統の関係が、2又は3以上の部分グラフの入力及び出力論理データセットの論理ファイル名に従って少なくとも部分的に決定される。このため、系統の関係の正しさは、所与の物理データセットを参照する2又は3以上のいかなる入力及び出力論理データセットも同じ論理ファイル名を共有することを必要とする。さらに言えば、第1の部分グラフが所与の物理データセットに書き込み、その後、第2の部分グラフが所与の物理データセットから読み取るが、第1の部分グラフの出力論理データセット及び第2の部分グラフの入力論理データセットの論理ファイル名が一致しない場合、2つの部分グラフの間で系統の関係は特定されない。一部の例において、同じ物理データセットに解決するが、一致しない論理ファイル名を有する2つの論理データセットは、「重複論理データセット」と呼ばれる。
【0101】
下で詳細に説明されるように、データフローグラフ内の重複論理データセットは、特定され、ユーザに提示され得る。そのとき、ユーザは、いくつかの方法で重複論理データセットに対処することを選択し得る。
【0102】
5.2 重複論理データセットのない例
図8を参照すると、
図1の開発環境118を使用して生じさせられたデータフローグラフ817の例が、gather.mpと命名された第1の部分グラフ802と、process.mpと命名された第2の部分グラフ804とを含む。
【0103】
第1の部分グラフ802は、論理ファイル名「Acct_1.dat」を有する第1の論理データセットD
L1 806及び論理ファイル名「Acct_2.dat」を有する第2の論理データセットD
L2 808を入力として受け取る。第1の部分グラフ802は、第1の及び第2の論理データセット806、808からのデータを処理し、論理ファイル名「Acct_summ.dat」を有する第3の論理データセットD
L3 810に処理の結果を書き込む。第2の部分グラフ804は、論理ファイル名「Acct_summ.dat」を有する第3の論理データセットD
L3 810を入力として受け取り、第3の論理データセット810からのデータを処理し、処理の結果をテーブル814に書き込む。第1の部分グラフ802と第2の部分グラフ804との両方によって使用される第3の論理データセット810は、部分グラフ802、804の両方において同じ論理ファイル名を有することに留意されたい。
【0104】
図9を参照すると、データフローグラフ817が実行前に解決されるとき、論理データセットは、それらの論理データセットの対応する物理データセットに解決される。例えば、第1の論理データセット806は、物理ファイル名「Acct_1.dat」を有する第1の物理データセットD
P1 814に解決され、第2の論理データセット808は、物理ファイル名「Acct_2.dat」を有する第2の物理データセットD
P2 816に解決され、第3の論理データセット810は、物理ファイル名「summary.dat」を有する第3の物理データセットD
P3 818に解決される。
【0105】
図10を参照すると、データフローグラフに関するデータ系統のレポート1017が、第1の部分グラフ1002、第2の部分グラフ1004、第1の論理データセット1006、第2の論理データセット1008、及び第3の論理データセット1010を含む。データ系統のレポート1017は、第1の論理データセット1006と第1の部分グラフ1002の入力との間の第1の系統の関係1018、第2の論理データセット1008と第1の部分グラフ1002の入力との間の第2の系統の関係1020、第1の部分グラフ1002の出力と第3の論理データセット1010との間の第3の系統の関係1022、及び第3の論理データセット1010と第2の部分グラフ1004との間の第4の系統の関係1024も含む。この場合、同じ論理ファイル名(すなわち、「Acct_summ.dat」)を有する同じ論理データセット(すなわち、第3の論理データセットD
L3 810)が第1の部分グラフ802の出力及び第2の部分グラフ804の入力に存在するので、データ系統のレポート1017は正しいことに留意されたい。
【0106】
5.3 重複論理データセットがある例
図11を参照すると、
図1の開発環境118を使用して生じさせられたデータフローグラフ1117の別の例が、gather.mpと命名された第1の部分グラフ1102及びprocess.mpと命名された第2の部分グラフ1104を含む。
【0107】
第1の部分グラフ1102は、論理ファイル名「Acct_1.dat」を有する第1の論理データセットD
L1 1106及び論理ファイル名「Acct_2.dat」を有する第2の論理データセットD
L2 1108を入力として受け取る。第1の部分グラフ1102は、第1の及び第2の論理データセット1106、1108からのデータを処理し、論理ファイル名「Acct_summ.dat」を有する第3の論理データセットD
L3 1110に処理の結果を書き込む。第2の部分グラフ1104は、論理ファイル名「Acct−summ.dat」を有する第4の論理データセットD
L4 1111の入力を入力として受け取り、第4の論理データセット1111からのデータを処理し、処理の結果をテーブル814に書き込む。第3の論理データセット1110の論理ファイル名(すなわち、「Acct_summ.dat」)は、第4の論理データセット1111の論理ファイル名(すなわち、「Acct−summ.dat」)とは異なることに留意されたい。
【0108】
図12を参照すると、データフローグラフ1117が実行前に解決されるとき、論理データセットは、それらの論理データセットの対応する物理データセットに解決される。例えば、第1の論理データセット1106は、物理ファイル名「Acct_1.dat」を有する第1の物理データセットD
P1 1114に解決され、第2の論理データセット1108は、物理ファイル名「Acct_2.dat」を有する第2の物理データセットD
P2 1116に解決され、第3の論理データセット1110と第4の論理データセット1111との両方は、物理ファイル名「summary.dat」を有する第3の物理データセットD
P3 1218に解決される。第3の論理データセット1110及び第4の論理データセット1111は、それぞれ同じ物理データセット(すなわち、第3の物理データセット1218)を指すので重複論理データセットであることに留意されたい。
【0109】
図13を参照すると、データフローグラフに関するデータ系統のレポート1317が、第1の部分グラフ1102、第2の部分グラフ1104、第1の論理データセット1106、第2の論理データセット1108、第3の論理データセット1110、及び第4の論理データセット1111を含む。データ系統のレポート1317は、第1の論理データセット1106と第1の部分グラフ1102の入力との間の第1の系統の関係1318、第2の論理データセット1108と第1の部分グラフ1102の入力との間の第2の系統の関係1320、第1の部分グラフ1002の出力と第3の論理データセット1110との間の第3の系統の関係1322、及び第4の論理データセット1111と第2の部分グラフ1104との間の第4の系統の関係1324も含む。
【0110】
この場合、異なる論理ファイル名を有する2つの異なる論理データセット(すなわち、第3の論理データセット1110及び第4の論理データセット1111)が同じ物理データセット(すなわち、第3の物理データセット1218)を参照するので、データ系統のレポート1317は正しくないことに留意されたい。特に、論理ファイル名「Acct_summ.dat」を有する第3の論理データセットD
L3 1110が、第1の部分グラフ1102の出力に存在し、論理ファイル名「Acct−summ.dat」を有する第4の論理データセット1111が、第2の部分グラフ1104の入力に存在する。データ系統のレポート1317は、第3の論理データセット1110及び第4の論理データセット1111を、互いにいかなる系統の関係もない別々のデータセットとして表す。したがって、データ系統のレポート1317は、第3の論理データセット1110と第4の論理データセット1111との間のデータ系統の断絶を誤って含む。
【0111】
5.4 重複論理データセットの発見
一部の例において、データフローグラフ内の重複論理データセットは、データフローグラフの実行によって生じさせられたランタイムアーチファクト(artifact)(例えば、
図5のジョブログ429)を解析することによって発見され得る。特に、データフローグラフが実行されるたびに、ジョブログが生じさせられる。
【0112】
ジョブログは、グラフインスタンス名と、グラフ内のそれぞれのデータセット構成要素に関して、そのデータセット構成要素がアクセスした物理データセット及びアクセスの種類(読み取り又は書き込み)とを含むデータフローグラフの実行に関連する情報を含む。グラフインスタンスは、それぞれのデータセット構成要素の論理データセット名を決定するために調べられ得る。グラフインスタンス及びデータセット構成要素名に対するマッチングによって、システムは、論理データセット名を物理データセット名にマッピングすることができる。
【0113】
重複論理データセットを特定するために、マッピングの第1の論理データセットがマッピングの第2の論理データセットと異なる論理データセットから物理データセットへのマッピングを特定するためにジョブログが解析される。第1の論理データセット及び第2の論理データセットが異なる論理データセットから物理データセットへのマッピングは、重複論理データセットとして分類される。
【0114】
特定された重複論理データセットは、重複論理データセットを訂正すべきか否かを判断するユーザに提示されるか、又は自動的に軽減されるかのどちらかである。
【0115】
5.4.1 重複論理データセット発見の例
再び
図12を参照すると、解決されたデータフローグラフ1117が実行されるとき、データフローグラフの実行に関するジョブログが生じさせられる。ジョブログは、第1の部分グラフ1102と第2の部分グラフ1104との間のフローに対応する単一の論理データセットから物理データセットへのマッピングを含む。論理データセットから物理データセットへのマッピングは、第1の部分グラフ1104の出力の第3の論理データセットD
L3 1110に関する識別子、第2の部分グラフ1106の入力の第4の論理データセットD
L4 1111に関する識別子、及び第3の物理データセット1218に関する識別子を含む。
【0116】
第3の論理データセット1110及び第4の論理データセット1111は、同じ物理データセット(すなわち、第3の物理データセット1218)を指す異なる論理データセット(例えば、異なる論理ファイル名を有する論理データセット)であるので、重複論理データセットとして分類される。
【0117】
上述の簡単な例は単一のジョブログからの重複論理データセットの単一のペアの特定を含むが、上述の重複論理データセット発見手法を含むデータ処理システムの実際の実施形態においては、重複論理データセットの多数のペアが、多数のジョブログを使用して特定される可能性がある。
【0118】
5.5 重複論理データセットの軽減
上述のように、重複論理データセットは、データ系統のレポート内の断絶をもたらす可能性がある。重複論理データセットが特定されると、重複論理データセットを消去するか又はデータ系統のレポートに対するそれらの重複論理データセットの影響を軽減するためにいくつかの異なる手法が使われ得る。一部の例において、特定された重複論理データセットは、例えば、スプレッドシートの形態でユーザに提示される。そのとき、ユーザは、(例えば、所与のデータフローグラフにおいて、所与の物理データセットが単一の論理データセットによってのみ参照されることを保証することによって)重複論理データセットを消去するために重複論理データセットを含むデータフローグラフを編集することができる。その他の例において、ユーザは、等価であるものとして重複論理データセットのペアに印を付ける可能性がある。このようにして、ユーザは、データフローグラフにいかなる変更を行うことも要求されない。さらにその他の例において、重複論理データセットのペアは、等価であるものとして自動的に印を付けられる可能性がある。
【0119】
重複論理データセットのペアが等価であるものとして印を付けられるとき、データ系統のレポート内で等価性を表示するいくつかの手法が存在する。1つの手法においては、データ系統のレポート内で、重複論理データセットのペアが参照する物理データセットが重複論理データセットに接続されて示される。例えば、
図14を参照すると、第3の物理データセットD
P3 1218がデータ系統のレポート1317に含まれる。第3の論理データセットD
L3 1110と第4の論理データセットD
L4 1111は、系列の関係1450及び1452によって第3の物理データセット1218に接続されるものとして示される。
【0120】
別の手法においては、重複論理データセットのペアの論理データセットが、系統の関係によってデータ系統のレポート内で互いに接続されて示される。例えば、
図15を参照すると、データ系統のレポート1317内で、第3の論理データセットD
L3 1110は、系統の関係1550によって第4の論理データセットD
L4 1111に接続されるものとして示される。
【0121】
別の手法においては、重複論理データセットのペアが、データ系統のレポート内で組み合わされた論理データセットによって表される。例えば、
図16を参照すると、重複論理データセットのペアが、データ系統のレポート1317内で組み合わされた論理データセットD
LR1654によって表される。
【0122】
別の手法においては、重複論理データセットのペアのうちの一方の論理データセットが、データ系統の重複レポート内で論理データセットのペアを表すために選択される。例えば、
図17を参照すると、第4の論理データセットD
L4 1111が、データ系統のレポート1317内で重複論理データセットのペアを表す。
【0123】
別の手法においては、重複論理データセットのペアと、重複論理データセットのペアの組み合わされた論理データセットの表現とが、データ系統のレポートに含まれる。重複論理データセットのペアと組み合わされた論理データセットの表現との間の系統の関係の一意の構成が、データ系統グラフ内に示される。例えば、
図18を参照すると、データ系統のレポート1317は、重複論理データセットのペアの組み合わされた論理データセットの表現D
LR1854、第3の論理データセットD
L3 1110、及び第4の論理データセットD
L4 1111を含む。組み合わされた論理データセット1854は、第1の部分グラフ1102及び第2の部分グラフ1104と直接的な系統の関係を有するものとして示される。また、組み合わされた論理データセット1845は、第3の論理データセット1110を介した第1の部分グラフ1102との間接的な系統の関係を有し、第4の論理データセット1111を介した第2の部分グラフ1104との間接的な系統の関係を有するものとして示される。
【0124】
別の手法においては、重複論理データセットのペアの論理データセットが、データ系統のレポートに含まれる。重複論理データセットのペアの論理データセットの間の系統の関係の一意の構成が、データ系統グラフ内に示される。例えば、
図19を参照すると、データ系統のレポート1317は、第3の論理データセットD
L3 1110及び第4の論理データセットD
L4 1111を含む。第4の論理データセット1111は、第1の部分グラフ1102及び第2の部分グラフ1104と直接的な系統の関係を有するものとして示される。第3の論理データセットD
L3 1110は、第1の部分グラフ1102との直接的な系統の関係を有し、第4の論理データセット1111を介した第2の部分グラフ1104との間接的な系統の関係を有するものとして示される。
【0125】
一部の例において、上述の軽減手法は、データ系統のレポート内で、破線、太線、又は軽減手法がデータ系統のレポートに適用されたことがデータ系統のレポートのユーザに対して明瞭であるその他の代替的な方法で示される。
【0126】
上述の重複論理データセット発見及び軽減手法が第1の構成要素が物理データセットに書き込み、別の構成要素がその物理データセットから読み取る筋書きを用いて説明されているが、その他の筋書きが重複論理データセットをもたらし得ることが留意される。例えば、重複論理データセットのペアが、同じ物理データセットから読み取る2つの異なる論理データセットから生じる可能性がある。同様に、重複論理データセットのペアが、同じ物理データセットに書き込む2つの異なる論理データセットから生じる可能性がある。
【0127】
上述の手法が、2009年2月26日に出願した米国特許出願第12/393,765号明細書、2011年10月25日に出願した米国特許出願第13/281,039号明細書、及び2014年7月24日に出願した米国仮出願第62/028,485号明細書においてより詳細に説明されているようにデータ系統情報を管理し、提示するための及びデータセットオブジェクトを管理するためのさまざまなその他の手法の特徴を組み込む可能性があり、これらの出願のすべては、参照により本明細書に組み込まれる。
【0128】
上述の手法は、例えば、好適なソフトウェア命令を実行するプログラミング可能なコンピューティングシステムを用いて実装される可能性があり、又はフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)などの好適なハードウェアで、若しくは何らかの混成の形態で実装される可能性がある。例えば、プログラミングされる手法において、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを用いて出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャである可能性がある)1又は2以上のプログラミングされた又はプログラミング可能なコンピューティングシステムで実行される1又は2以上のコンピュータプログラムの手順を含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
【0129】
ソフトウェアは、CD−ROM又は(例えば、多目的若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な)その他のコンピュータ可読媒体などの有形の非一時的媒体で提供されるか、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される(例えば、伝搬信号に符号化される)可能性がある。処理の一部又はすべては、専用のコンピュータで、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA)若しくは専用の特定用途向け集積回路(ASIC,application-specific integrated circuit)などの専用のハードウェアを用いて実行される可能性がある。処理は、ソフトウェアによって規定された計算の異なる部分が異なる計算要素によって実行される分散された方法で実装される可能性がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実行するためにストレージデバイスの媒体がコンピュータによって読み取られるときにコンピュータを構成し、動作させるために、多目的又は専用のプログラミング可能なコンピュータによってアクセスされ得るストレージデバイスのコンピュータ可読ストレージ媒体(例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体)に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として実装されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された処理ステップのうちの1又は2以上を実行するために特定の予め定義された方法でコンピュータを動作させる。
【0130】
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の特許請求の範囲によって定義される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、添付の特許請求の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順序に依存しない可能性があり、したがって、説明された順序とは異なる順序で実行される可能性がある。