(58)【調査した分野】(Int.Cl.,DB名)
1又は2以上のノードの第1の組が、正規化されたレコードを生じさせるために実施される計算の一部を表すノードと、前記正規化されたレコードを含むデータストアに記憶されたデータ要素を表すノードと、第1の非正規化されたレコード及び第2の非正規化されたレコードを生じさせるために実施される前記計算の一部を表すノードとを含む、請求項3に記載の方法。
第1の複数のノードをタグ識別子の異なる値に関連付けることが、第1のノードを前記タグ識別子の第1の値に関連付け、第2のノードを前記タグ識別子の前記第1の値とは異なる前記タグ識別子の第2の値に関連付けることを含み、
第2の複数のノードを前記タグ識別子の異なる値に関連付けることが、第3のノードを前記タグ識別子の前記第1の値に関連付け、第4のノードを前記タグ識別子の前記第2の値に関連付けることを含む、請求項2に記載の方法。
データ系統を決定することが、1又は2以上のノードの第1の組をトラバースし、前記1又は2以上のノードの第1の組がタグ識別子に関連付けられないと決定することに応じて1又は2以上のノードの前記第1の組を前記データ系統に追加することをさらに含む、請求項7に記載の方法。
タグ識別子に関連付けられ、前記タグ識別子の複数の可能なタグ値の第1のサブセットの少なくとも1つのタグ値に関連付けられない複数のノードの第1のサブセットを決定するために、前記複数のノードのうちのノードをトラバースする前に前記複数のノードを分析するステップをさらに含む、請求項6に記載の方法。
データ系統にトラバースされるノードを追加すべきか又は前記データ系統から前記トラバースされるノードを除外すべきかを決定することが、前記トラバースされるノードが複数のノードの第1のサブセットに含まれるかどうかを決定することを含む、請求項11に記載の方法。
データ系統にトラバースされるノードを追加すべきかどうかを決定することが、前記トラバースされるノードが複数のノードの第1のサブセットに含まれない場合に前記データ系統に前記トラバースされるノードを追加し、前記トラバースされるノードが前記複数のノードの前記第1のサブセットに含まれる場合に前記データ系統から前記トラバースされるノードを除外することを含む、請求項12に記載の方法。
ノードの入れ子にされた階層のより低いレベルのノードに関連するタグ識別子及びタグ値の前記タグ識別子に関連するサブセットが、ノードの前記入れ子にされた階層のより高いレベルのノードに関連するタグ識別子及びタグ値の前記タグ識別子に関連するサブセットを上回る優先度を与えられる、請求項14に記載の方法。
第1の系統のパスに沿ってノードをトラバースすることが、第3のノードから始まる前記ノードを有向リンクの方向と反対の方向にトラバースすることを含む、請求項6に記載の方法。
有向グラフの仕様を生じさせるステップであって、複数のノードのうちの1又は2以上が計算を表し、前記複数のノードのうちの1又は2以上が計算の実行中に受け取られるか又は計算によって生成されるデータ要素を表し、有向リンクが計算とデータ要素との間の系統の関係を表す、前記ステップをさらに含む、請求項1に記載の方法。
第3のノードに関するデータ系統を決定するために前記第3のノードから有向リンクの複数の系統のパスに沿ってノードをトラバースするステップであって、前記データ系統を決定することが、それぞれのトラバースされるノードに関して、前記トラバースされるノードに関連するいずれかのタグ識別子又はタグ値に少なくとも部分的に基づいて、前記データ系統に前記トラバースされるノードを追加すべきか又は前記データ系統から前記トラバースされるノードを除外すべきかを決定することを含む、前記ステップをさらに含む、請求項6に記載の方法。
【発明の概要】
【課題を解決するための手段】
【0005】
一態様においては、概して、コンピューティングシステムにおいて系統情報を管理するための方法が、計算を表す複数のノード(nodes)、及び計算の実行中に受け取られるか又は計算によって生成されるデータ要素(data elements)を表す複数のノード、及び計算とデータ要素との間の系統の関係を表すノード間の有向リンク(directed links)を含む有向グラフ(directed graph)の仕様をデータストレージシステム(data storage system)に記憶するステップと、データ系統の表現を求める要求を処理するための情報にノードを関連付けるために仕様を少なくとも1つのプロセッサを使用して処理するステップとを含む。前記処理するステップは、データストア(data store)に記憶されているデータ要素を正規化すること(normalizing)及びデータストアから取り出されているデータ要素を非正規化すること(de-normalizing)に対応する有向グラフの1又は2以上のノードの第1の組(set)を特定することであって、データ要素を正規化することが、複数のデータ要素に対応するレコードを少なくとも1つのフィールドに関して共通のフォーマットを有する複数のレコードに変換することを含み、データ要素を非正規化することが、少なくとも1つのフィールドに関して共通のフォーマットを有する複数のレコードを複数のデータ要素に対応する単一のレコードに変換することを含む、前記特定することと、第1の系統の関係を表す第1の有向リンクによって1又は2以上のノードの第1の組に接続された第1の複数のノード及び第2の系統の関係を表す第2の有向リンクによって1又は2以上のノードの第1の組に接続された第2の複数のノードを複数の可能なタグ値(tag values)を有する少なくとも1つのタグ識別子(tag identifier)に関連付けることであって、可能なタグ値の数が、少なくとも、正規化されているデータ要素の数と同じだけ大きく、非正規化されたレコード内の異なるデータ要素を表すノードが、タグ識別子の異なる値に関連付けられる、前記関連付けることとを含む。
【0006】
態様は、以下の特徴のうちの1又は2以上を含み得る。
【0007】
1又は2以上のノードの第1の組のうちの1又は2以上によって実施される計算は、第1の複数のノードのうちの第1のノードに関連付けられた第1のフィールドを含む第1のレコード及び第1の複数のノードのうちの第2のノードに関連付けられた第2のフィールドを含む第2のレコードを受信することであって、第1のフィールドが、第1のタイプの値を記憶し、第2のフィールドが、第1のタイプの値を記憶する、前記受信することと、第1のフィールドからの値及び第2のフィールドからの値を記憶する第3のフィールド、並びに第1のフィールド又は第2のフィールドのどちらかを特定する値を記憶する第4のフィールドを含む正規化されたレコードを生じさせることと、正規化されたレコードをデータストアに記憶することとを含む。
【0008】
1又は2以上のノードの第1の組のうちの1又は2以上によって実施される計算は、データストアから正規化されたレコードを取り出すことと、第2の複数のノードのうちの第3のノードに関連付けられた第5のフィールドを含む第1の非正規化されたレコード、及び第2の複数のノードのうちの第4のノードに関連付けられた第6のフィールドを含む第2の非正規化されたレコードを、第4のフィールド内の値に少なくとも部分的に基づいて生じさせることであって、第5のフィールドが、第3のフィールドからの第1のタイプの値を記憶し、第6のフィールドが、第3のフィールドからの第1のタイプの値を記憶する、前記生じさせることとを含む。
【0009】
1又は2以上のノードの第1の組は、正規化されたレコードを生じさせるために実施される計算の一部を表すノードと、正規化されたレコードを含むデータストアに記憶されたデータ要素を表すノードと、第1の非正規化されたレコード及び第2の非正規化されたレコードを生じさせるために実施される計算の一部を表すノードとを含む。
【0010】
第1の複数のノードをタグ識別子の異なる値に関連付けることは、第1のノードをタグ識別子の第1の値に関連付け、第2のノードをタグ識別子の第1の値とは異なるタグ識別子の第2の値に関連付けることを含み、第2の複数のノードをタグ識別子の異なる値に関連付けることは、第3のノードをタグ識別子の第1の値に関連付け、第4のノードをタグ識別子の第2の値に関連付けることを含む。
【0011】
前記方法は、第3のノードに関するデータ系統の表現を求める要求を少なくとも1つのプロセッサを使用して処理するステップであって、第3のノードと少なくとも1つのタグ識別子との間の関連付けを決定し、タグ識別子の複数の可能なタグ値のうちの少なくとも1つ且つ全数未満の第1のサブセットを決定することであって、第1のサブセットが、タグ識別子の第1の値を含む、前記決定することと、第3のノードに関するデータ系統を決定するために第3のノードから有向リンクの第1の系統のパスに沿ってノードをトラバースする(traverse)ことであって、データ系統を決定することが、それぞれのトラバースされるノードに関して、トラバースされるノードに関連付けられたいずれかのタグ識別子又はタグ値に少なくとも部分的に基づいて、データ系統にトラバースされるノードを追加すべきか又はデータ系統からトラバースされるノードを除外すべきかを決定することを含む、前記トラバースすることとを含む、前記処理するステップをさらに含む。
【0012】
データ系統を決定することは、第1の系統のパス上の第1のノードをトラバースすることと、第1のノードがタグ識別子に関連付けられ、第1のサブセットに含まれるタグ識別子の第1の値に関連付けられると決定することに応じて第1のノードをデータ系統に追加することと、第2の系統のパス上の第2のノードをトラバースすることを含む、第3のノードに関するデータ系統を決定するために第3のノードから有向リンクの第2の系統のパスに沿ってノードをトラバースすることと、第2のノードがタグ識別子に関連付けられ、第1のサブセットに含まれるいかなるタグ識別子にも関連付けられないと決定することに応じて第2のノードをデータ系統から除外することとを含む。
【0013】
データ系統を決定することは、1又は2以上のノードの第1の組をトラバースし、1又は2以上のノードの第1の組がタグ識別子に関連付けられないと決定することに応じて1又は2以上のノードの第1の組をデータ系統に追加することをさらに含む。
【0014】
データ系統を決定することは、それぞれのトラバースされるノードに関して、トラバースされるノードがタグ識別子に関連付けられないか、若しくはトラバースされるノードがタグ識別子に関連付けられ、第1のサブセットの少なくとも1つのタグ値に関連付けられる場合にデータ系統にトラバースされるノードを追加すること、又はトラバースされるノードがタグ識別子に関連付けられ、タグ識別子の複数の可能なタグ値の第1のサブセットの少なくとも1つのタグ値に関連付けられない場合にデータ系統からトラバースされるノードを除外することを含む。
【0015】
前記方法は、データ系統からトラバースされるノードを除外すると、第1の系統のパスのトラバースを終了するステップをさらに含む。
【0016】
前記方法は、タグ識別子に関連付けられ、タグ識別子の複数の可能なタグ値の第1のサブセットの少なくとも1つのタグ値に関連付けられない複数のノードの第1のサブセットを決定するために、複数のノードのうちのノードをトラバースする前に複数のノードを分析するステップをさらに含む。
【0017】
データ系統にトラバースされるノードを追加すべきか又はデータ系統からトラバースされるノードを除外すべきかを決定することは、前記トラバースされるノードが複数のノードの第1のサブセットに含まれるかどうかを決定することを含む。
【0018】
データ系統にトラバースされるノードを追加すべきかどうかを決定することは、前記トラバースされるノードが複数のノードの第1のサブセットに含まれない場合にデータ系統に前記トラバースされるノードを追加し、前記トラバースされるノードが複数のノードの第1のサブセットに含まれる場合にデータ系統から前記トラバースされるノードを除外することを含む。
【0019】
複数のノードの少なくとも一部のノードが、複数のノードのその他のノードの中に入れ子にされる(nested)。
【0020】
ノードの入れ子にされた階層のより低いレベルのノードに関連するタグ識別子及びタグ値のタグ識別子に関連するサブセットが、ノードの入れ子にされた階層のより高いレベルのノードに関連するタグ識別子及びタグ値のタグ識別子に関連するサブセットを上回る優先度を与えられる。
【0021】
第1の系統のパスに沿ってノードをトラバースすることは、第3のノードから始まるノードを有向リンクの方向と反対の方向にトラバースすることを含む。
【0022】
前記方法は、有向グラフの仕様を生じさせるステップであって、複数のノードのうちの1又は2以上が計算を表し、複数のノードのうちの1又は2以上が計算の実行中に受け取られるか又は計算によって生成されるデータ要素を表し、有向リンクが計算とデータ要素との間の系統の関係を表す、前記ステップをさらに含む。
【0023】
複数のノードのうちの1又は2以上は、複数のノードのうちの1又は2以上のその他のノードのグループ分けを表す。
【0024】
タグ識別子の複数の可能なタグ値の第1のサブセットは、第3のノードに関連付けられる1又は2以上のタグ値からなる。
【0025】
タグ識別子の複数の可能なタグ値の第1のサブセットは、ユーザ入力から受け取られる1又は2以上のタグ値からなる。
【0026】
前記方法は、第3のノードに関するデータ系統を決定するために第3のノードから有向リンクの複数の系統のパスに沿ってノードをトラバースするステップであって、データ系統を決定することが、それぞれのトラバースされるノードに関して、トラバースされるノードに関連するいずれかのタグ識別子又はタグ値に少なくとも部分的に基づいて、データ系統に前記トラバースされるノードを追加すべきか又はデータ系統から前記トラバースされるノードを除外すべきかを決定することを含む、前記ステップをさらに含む。
【0027】
前記方法は、デフォルトでデータ系統に第3のノードを追加するステップをさらに含む。
【0028】
別の態様においては、概して、コンピューティングシステムにおいて系統情報を管理するためのソフトウェアが、コンピュータ可読媒体に記憶される。ソフトウェアは、コンピューティングシステムに、計算を表す複数のノード、及び計算の実行中に受け取られるか又は計算によって生成されるデータ要素を表す複数のノード、及び計算とデータ要素との間の系統の関係を表すノード間の有向リンクを含む有向グラフの仕様をデータストレージシステムに記憶することと、データ系統の表現を求める要求を処理するための情報にノードを関連付けるために仕様を少なくとも1つのプロセッサを使用して処理することとを行わせるための命令を含む。処理することは、データストアに記憶されているデータ要素を正規化すること及びデータストアから取り出されているデータ要素を非正規化することに対応する有向グラフの1又は2以上のノードの第1の組を特定することであって、データ要素を正規化することが、複数のデータ要素に対応するレコードを少なくとも1つのフィールドに関して共通のフォーマットを有する複数のレコードに変換することを含み、データ要素を非正規化することが、少なくとも1つのフィールドに関して共通のフォーマットを有する複数のレコードを複数のデータ要素に対応する単一のレコードに変換することを含む、前記特定することと、第1の系統の関係を表す第1の有向リンクによって1又は2以上のノードの第1の組に接続された第1の複数のノード及び第2の系統の関係を表す第2の有向リンクによって1又は2以上のノードの第1の組に接続された第2の複数のノードを複数の可能なタグ値を有する少なくとも1つのタグ識別子に関連付けることであって、可能なタグ値の数が、少なくとも、正規化されているデータ要素の数と同じだけ大きく、非正規化されたレコード内の異なるデータ要素を表すノードが、タグ識別子の異なる値に関連付けられる、前記関連付けることとを含む。
【0029】
別の態様においては、概して、系統情報を管理するためのコンピューティングシステムが、計算を表す複数のノード、及び計算の実行中に受け取られるか又は計算によって生成されるデータ要素を表す複数のノード、及び計算とデータ要素との間の系統の関係を表すノード間の有向リンクを含む有向グラフの仕様を記憶するデータストレージシステムと、データ系統の表現を求める要求を処理するための情報にノードを関連付けるために仕様を処理するように構成された少なくとも1つのプロセッサとを含む。前記処理することは、データストアに記憶されているデータ要素を正規化すること及びデータストアから取り出されているデータ要素を非正規化することに対応する有向グラフの1又は2以上のノードの第1の組を特定することであって、データ要素を正規化することが、複数のデータ要素に対応するレコードを少なくとも1つのフィールドに関して共通のフォーマットを有する複数のレコードに変換することを含み、データ要素を非正規化することが、少なくとも1つのフィールドに関して共通のフォーマットを有する複数のレコードを複数のデータ要素に対応する単一のレコードに変換することを含む、前記特定することと、第1の系統の関係を表す第1の有向リンクによって1又は2以上のノードの第1の組に接続された第1の複数のノード及び第2の系統の関係を表す第2の有向リンクによって1又は2以上のノードの第1の組に接続された第2の複数のノードを複数の可能なタグ値を有する少なくとも1つのタグ識別子に関連付けることであって、可能なタグ値の数が、少なくとも、正規化されているデータ要素の数と同じだけ大きく、非正規化されたレコード内の異なるデータ要素を表すノードが、タグ識別子の異なる値に関連付けられる、前記関連付けることとを含む。
【0030】
別の態様においては、概して、系統情報を管理するためのコンピューティングシステムが、計算を表す複数のノード、及び計算の実行中に受け取られるか又は計算によって生成されるデータ要素を表す複数のノード、及び計算とデータ要素との間の系統の関係を表すノード間の有向リンクを含む有向グラフの仕様を記憶するための手段と、データ系統の表現を求める要求を処理するための情報にノードを関連付けるために仕様を処理するための手段とを含む。前記処理することは、データストアに記憶されているデータ要素を正規化すること及びデータストアから取り出されているデータ要素を非正規化することに対応する有向グラフの1又は2以上のノードの第1の組を特定することであって、データ要素を正規化することが、複数のデータ要素に対応するレコードを少なくとも1つのフィールドに関して共通のフォーマットを有する複数のレコードに変換することを含み、データ要素を非正規化することが、少なくとも1つのフィールドに関して共通のフォーマットを有する複数のレコードを複数のデータ要素に対応する単一のレコードに変換することを含む、前記特定することと、第1の系統の関係を表す第1の有向リンクによって1又は2以上のノードの第1の組に接続された第1の複数のノード及び第2の系統の関係を表す第2の有向リンクによって1又は2以上のノードの第1の組に接続された第2の複数のノードを複数の可能なタグ値を有する少なくとも1つのタグ識別子に関連付けることであって、可能なタグ値の数が、少なくとも、正規化されているデータ要素の数と同じだけ大きく、非正規化されたレコード内の異なるデータ要素を表すノードが、タグ識別子の異なる値に関連付けられる、前記関連付けることとを含む。
【0031】
態様は、以下の利点のうちの1又は2以上を含む可能性がある。
【0032】
いくつかの包括的な態様においては、本明細書において説明される手法が、ユーザが系統タグの形態の追加的な情報によってノードを拡張した系統図に適用され得る。フィルタリングによって選択されたオブジェクトに隣接するか又はフィルタリングによって選択されたオブジェクトの直接の系統又はインパクトパス内のオブジェクトだけに系統を制限することなく特定のユーザ定義の次元(dimension)が目標にされ得るように系統図をフィルタリングするために、系統タグが使用される。
【0033】
本明細書において説明される手法は、その他の技術(例えば、単純なフィルタリング又は系統要約(Lineage Summarization))よりも選択的な方法で複雑性を減らすために使用され得る。例えば、一部の系統図の複雑性の1つの原因は、正規化及び非正規化動作を実行するノードであり、系統タグの使用は、本明細書においてより詳細に説明されるように、そのような系統図の複雑性を減らすのに役立つ可能性がある。
【0034】
前記手法は、それぞれが列挙値(enumerated values)の独自の組を有する異なる種類のタグをユーザが定義することを可能にすることによって選択性を実現する。それぞれの種類のタグは、独自の独立したフィルタリングの次元として働く。また、タグは、正規化及び非正規化を実行するノードなどに関する系統図の構成に基づいて自動的に定義され得る。
【0035】
一部の例においては、どのノードをフィルタリングされたデータ系統図に含め、どのノードをフィルタリングされたデータ系統図から除外すべきかを選択するためのアルゴリズムが、系統図のノードを歩き(walk)、(タグに関連付けられたすべてのノードの)遭遇したタグをアクティブなタグの組と比較することによって何を実行すべきかを決定する。
【0036】
利点の中でもとりわけ、本明細書において説明される手法は、図を、アクティブなタグを有するアイテムの上流及び下流のノードに単純に制限しない。その代わりに、タグのないノードも、図の中に残る。したがって、前記手法は、列挙型の組(an enumerated set)の望ましくないメンバーの上流又は下流にあるノードの極めて正確な削除を可能にする。有利なことに、この選択性は、単純なフィルタリング又は系統要約(例えば、データ若しくは過剰に詰め込まれたオブジェクト(overloaded object)の正規化/非正規化)によって解決され得ない問題を解決する能力を提供する。
【0037】
データ処理システムの複雑さが増したので、データ系統図も次第に複雑になっており、単一のビューの中にそれぞれのアイコンによって表される多くのノード(例えば、集合的に「ノード」と呼ばれるデータノード及びデータ変換ノード)を提示する。データ系統図においてユーザに対して提示されるノードの数が増えるにつれて、データ系統図は理解するのが難しくなる可能性がある。
【0038】
一部の例において、データ処理グラフは、多くの部分的に重なり合うデータ系統のパスを含み、概して、ユーザは、それらのデータ系統のパスのうちの数個に関心がある。例えば、データ処理グラフの上流の部分においては、例えば、地理的領域に基づいてデータを処理する多くの異なるシステムが存在する可能性がある。データ処理グラフの中間の部分においては、グラフの上流の部分からのデータが、グループ分けされ、グラフの下流の部分においては、グループ分けされたデータが、処理される。ユーザは、単一の地理的領域に関する系統のパスを分析することに関心がある可能性がある。
【0039】
本明細書において説明される手法は、所与のデータ処理システム内で、互いに関連する特定のノードはユーザが見ることに関心がある同じノードであることが多いという認識を利用する。本明細書において説明される手法においては、互いに関連するノードの組が、系統タグを使用して関連付けられる。そのとき、ノードは、ユーザが見ることに関心のあるノードのみを含むフィルタリングされたデータ系統図をユーザが生じさせることを可能にするために、系統タグに基づいてフィルタリングされ得る。
【0040】
本発明のその他の特徴及び利点は、以下の説明及び請求項から明らかになるであろう。
【発明を実施するための形態】
【0042】
図1は、系統タグに基づくデータ系統フィルタリング技術が使用され得るデータ処理システム10の例を示す。システム10は、ストレージデバイス(storage devices)、又はオンラインデータストリーム(online data streams)への接続などのデータの1又は2以上のソースを含み得るデータソース12を含み、それらの1又は2以上のソースのそれぞれは、さまざまなフォーマット(例えば、データベーステーブル(database tables)、スプレッドシートファイル(spreadsheet files)、フラットテキストファイル(flat text files)、又はメインフレーム(mainframe)によって使用されるネイティブフォーマット(native format))のいずれかでデータを記憶又は提供し得る。実行環境14は、実行モジュール13を含む。実行環境14は、例えば、UNIXオペレーティングシステムのバージョンなどの好適なオペレーティングシステムの制御下の1又は2以上の多目的コンピュータ(general-purpose computers)上でホストされる可能性がある。例えば、実行環境14は、ローカルの(例えば、対称型マルチプロセッシング(SMP,symmetric multi-processing)コンピュータなどのマルチプロセッサシステム)又はローカルに分散された(例えば、クラスタ若しくは超並列処理(MPP,massively parallel processing)システムとして接続された複数のプロセッサか、或いは遠隔の又は遠隔に分散された(例えば、ローカルエリアネットワーク(LAN,local area network)及び/若しくは広域ネットワーク(WAN,wide-area network)を介して接続された複数のプロセッサ)か、或いはこれらの任意の組合せかのいずれかの複数の中央演算処理装置(CPU,central processing unit)或いはプロセッサコアを用いるコンピュータシステムの構成を含むマルチノード並列コンピューティング環境(multi-node parallel computing environment)を含む可能性がある。
【0043】
データソース12を提供するストレージデバイスは、実行環境14のローカルにあり、例えば、実行環境14をホストするコンピュータに接続されたストレージ媒体(例えば、ハードドライブ18)に記憶される可能性があり、又は実行環境14のリモートにあり、例えば、(例えば、クラウドコンピューティングインフラストラクチャによって提供される)リモート接続を介して実行環境14をホストするコンピュータと通信するリモートシステム(例えば、メインフレーム20)上でホストされる可能性がある。
【0044】
システム10は、開発者30がデータ処理コンピュータプログラム27(例えば、データフローグラフ)を規定し、実行環境14によってアクセスされ得るデータストレージシステム26にプログラムを記憶することができる開発環境28を含む。実行モジュール13は、コンピュータプログラム27に従ってデータソースからのデータを処理して出力データ24を生じさせる。出力データ24は、データソース12若しくはデータストレージシステム26に戻して記憶されるか、又はそれ以外の方法で使用される可能性がある。開発環境28は、一部の実施形態において、(データ処理構成要素又はデータセットを表す)頂点間の(作業要素(work element)、すなわち、データのフローを表す)有向リンクによって接続された頂点を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。例えば、そのような環境は、参照により本明細書に組み込まれる「Managing Parameters for Graph-Based Applications」(グラフに基づくアプリケーションのパラメーター管理)と題された米国特許出願公開第2007/0011668号明細書により詳細に説明されている。そのようなグラフに基づく計算を実行するためのシステムは、参照により本明細書に組み込まれる「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」(グラフとして表現される計算の実行)と題された米国特許第5,966,072号明細書に説明されている。このシステムによって作成されるデータフローグラフは、プロセス間で情報を移動するため及びプロセスに関する実行の順序を定義するためにグラフの構成要素によって表される個々のプロセスに情報を出し入れするための方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信の方法を選択するアルゴリズムを含む(例えば、グラフのリンクに従った通信系統のパスは、TCP/IP若しくはUNIXドメインソケットを使用するか、又はプロセス間でデータを渡すために共有メモリを使用する可能性がある)。
【0045】
システム10は、ユーザ31(例えば、企業ユーザ又はデータ設計者)がデータ系統図を要求し、見ることができる企業環境29を含む。データ系統図を生じさせるために、企業環境29は、コンピュータプログラム27の異なる部分に対応する計算を表すデータ変換ノード(例えば、異なるデータフローグラフ又はデータフローグラフ内の異なる構成要素)を特徴付けるメタデータ(metadata)と、データ系統図を生じさせるためにコンピュータプログラム27によってアクセスされるか又は生じさせられるデータノード(例えば、データソース12からのデータセット又は出力データ24に対応するデータセット)を特徴付けるメタデータとを含むシステムメタデータを分析するデータ系統モジュール25を含む。
【0046】
一部の例において、データ変換ノード及び/又はデータノードを特徴付けるメタデータは、(「系統タグ」と呼ばれることがある)データ系統タグを含む。極めて広く、各系統タグは、タグ識別子と、いくつかの可能なタグ値とを有する。例えば、1つの例示的な系統タグは、タグ識別子「Region」及び可能なタグ値「U.S.,U.K.,Mexico,Canada」を有する可能性がある。
【0047】
コンピュータプログラム27のノード(すなわち、データ変換ノード及び/又はデータノード)の少なくとも一部は、1又は2以上の系統タグ及び系統タグの可能なタグ値のサブセットに関連付けられ、サブセットは、1又は2以上の系統タグの可能なタグ値のうちの少なくとも1つ且つ全数未満を含む。
【0048】
図2aを参照すると、コンピュータプログラム27に関する例示的なエンドツーエンドのデータ系統
図100は、いくつかのデータノード102、いくつかのデータ変換ノード104、及びいくつかのコンテナノード106を含み、これらのすべてのノードは、有向リンク108によって相互接続される。
【0049】
特に、
図100は、第1のデータ変換ノード110、第2のデータ変換ノード112、第3のデータ変換ノード114、第4のデータ変換ノード116、第5のデータ変換ノード118、第6のデータ変換ノード120、第7のデータ変換ノード122、第8のデータ変換ノード124、第9のデータ変換ノード126、第10のデータ変換ノード128、第11のデータ変換ノード130、第12のデータ変換ノード132、及び第13のデータ変換ノード134を含む。
図100は、第1のデータノード136及び第2のデータノード138を含む。
図100は、第1のコンテナノード140、第2のコンテナノード142、第3のコンテナノード144、及び第4のコンテナノード146を含む。
【0050】
第1のデータ変換ノード110は、「Region」系統タグに関連付けられる。この例において、「Region」系統タグは、3つの可能なタグ値「US,CA,MEX」を有する。第1の変換ノード110は、「US」を含む「Region」系統タグの可能なタグ値のサブセットに関連付けられる。第3のデータ変換ノード114は、「Region」系統タグと、「MEX」を含む「Region」系統タグの可能なタグ値のサブセットとに関連付けられる。第4のデータ変換ノード116は、「Region」系統タグと、「US」を含む「Region」系統タグの可能なタグ値のサブセットとに関連付けられる。第5のデータ変換ノード118は、「Region」系統タグと、「CA」を含む「Region」系統タグの可能なタグ値のサブセットとに関連付けられる。第6のデータ変換ノード120は、「Region」系統タグと、「US」を含む「Region」系統タグの可能なタグ値のサブセットとに関連付けられる。
【0051】
第7のデータ変換ノード122は、「Region」系統タグと、「CA」を含む「Region」系統タグの可能なタグ値のサブセットとに関連付けられる。第8のデータ変換ノード124は、「Region」系統タグと、「MEX」を含む「Region」系統タグの可能なタグ値のサブセットとに関連付けられる。第9のデータ変換ノード126は、「Region」系統タグと、「US」を含む「Region」系統タグの可能なタグ値のサブセットとに関連付けられる。第13のデータ変換ノード134は、「Region」系統タグと、「CA」を含む「Region」系統タグの可能なタグ値のサブセットとに関連付けられる。
【0052】
第1のデータノード136は、「Region」系統タグと、「US,MEX」を含む「Region」系統タグの可能なタグ値のサブセットとに関連付けられる。第2のデータノード138は、「Region」系統タグと、「CA」を含む「Region」系統タグの可能なタグ値のサブセットとに関連付けられる。
【0053】
1 フィルタリングされたデータ系統の生成
一部の例において、
図2aのエンドツーエンドのデータ系統
図100は、フィルタリングされたデータ系統図を生じさせるためにデータ系統モジュール25によって処理される。
図2bを参照すると、フィルタリングされたデータ系統
図201の一例は、「Region」系統タグ及び「US」系統タグ値に従ってフィルタリングされるエンドツーエンドのデータ系統
図100のバージョンである。図に見られるように、フィルタリングされたデータ系統
図201は、「Region」系統タグ識別子に関連付けられ、「CA」のみ又は「MEX」のみを含む系統タグ値を有するノードがデータ系統から除外されるので
図2aのエンドツーエンドのデータ系統
図100に比べて大幅に簡素化される。
【0054】
図3〜12を参照して以下で詳細に説明されるように、
図12の第1のフィルタリングされたデータ系統
図200などのフィルタリングされたデータ系統図に至るために、ユーザは、ノードを選択し、ノードに関するフィルタリングされたデータ系統を決定するようにデータ系統モジュール25に命令する。データ系統モジュール25は、まず、選択されたノードと1又は2以上のタグ識別子との間の関連付けを決定する。選択されたノードに関連する各タグ識別子に関して、データ系統モジュール25は、タグ識別子の可能なタグ値のうちのどのタグ値が選択されたノードに関連付けられるかを決定する。概して、ユーザは、選択されたノードに関連付けられるべき任意の数のタグ値を選択し得る。選択されたタグ値は、単一のタグ値(例えば、
図2bの例と同様に「US」)又は複数のタグ値(例えば、
図12の例と同様に「US」及び「MEX」)などの可能なタグ値のサブセットを表す可能性がある。概して、タグ識別子に関連する可能なタグ値の全数未満の一部のある数のタグ値が、選択される。
【0055】
それから、データ系統モジュール25は、選択されたノードから始まる1又は2以上の系統のパスをトラバースして、選択されたノードに関するフィルタリングされたデータ系統を決定する。概して、それぞれの系統のパスは、有向リンクによって接続された1又は2以上のノードを含む。データ系統モジュール25は、1又は2以上のノードをトラバースするとき、1又は2以上のトラバースされるノードに関連するすべてのタグ識別子又はタグ値に基づいて、フィルタリングされたデータ系統にノードを追加すべきか又はフィルタリングされたデータ系統からノードを除外すべきかを判断する。
【0056】
図3を参照すると、一部の例において、データ系統モジュール25が系統のパスをトラバースするとき、系統のパスに沿ったノードがフィルタリングされたデータ系統図に含めるためにマークされる(marked)べきか又はフィルタリングされたデータ系統図から除外するためにマークされるべきかを決定するためにフィルタリングアルゴリズム300が使用される。
【0057】
特に、データ系統モジュール25が系統のパス上の訪問先ノード350に至るとき、訪問先ノード350及び選択されたノード352が、フィルタリングアルゴリズム300に与えられる。
【0058】
フィルタリングアルゴリズム300の第1のステップ354において、訪問先ノード350に関連するいずれかの系統タグ識別子が選択されたノード352に関連する系統タグ識別子に一致するかどうかを決定するためのテストが実施される。系統タグ識別子のいずれも一致しない場合、アルゴリズムは、第2のステップ356に進み、第2のステップ356において、訪問先ノード350は、フィルタリングされたデータ系統図に含めるためにマークされる。訪問先ノード350と選択されたノード352との両方に関連する1又は2以上系統タグ識別子が一致する場合、アルゴリズムは、第3のステップ358に進む。
【0059】
第3のステップ358において、それぞれの特定された一致する系統タグ識別子に関して、系統タグ識別子に関する訪問先ノード350に関連する1又は2以上の系統タグ値が、系統タグ識別子に関する選択されたノード352に関連する1又は2以上の系統タグ値に一致するかどうかを決定するためのテストが実施される。系統タグ識別子に関する訪問先ノード350に関連する1又は2以上の系統タグ値が系統タグ識別子に関する選択されたノード352に関連する1又は2以上の系統タグ値に一致する場合、アルゴリズムは、第2のステップ356に進み、第2のステップ356において、訪問先ノード350は、フィルタリングされたデータ系統図に含めるためにマークされる。
【0060】
或いは、系統タグ識別子に関する訪問先ノード350に関連する系統タグ値のうちのいずれも系統タグ識別子に関する選択されたノード352に関連する系統タグ値のうちのいずれとも一致しない場合、アルゴリズムは、第4のステップ360に進み、第4のステップ360において、訪問先ノード350は、フィルタリングされたデータ系統図から除外するためにマークされる。
【0061】
一部の例において、フィルタリングアルゴリズム400は、データ系統モジュール25がエンドツーエンドのデータ系統内の系統のパスをトラバースするときに実施される。その他の例においては、ノードがデータ系統の計算のために選択されると、いずれの系統のパスがトラバースされるよりも前に、選択されたノード以外のエンドツーエンドのデータ系統内のすべてのノードにフィルタリングアルゴリズムが適用される。フィルタリングアルゴリズム300がフィルタリングされたデータ系統図から除外するためにマークするすべてのノードは、「ブラックリスト」に追加される。それから、データ系統モジュール25は、選択されたノードから始まる系統のパスをトラバースする。データ系統モジュール25によって訪問される各ノードにおいて、データ系統モジュール25は、ブラックリストを検索して、訪問先ノードがブラックリストに載っているかどうかを決定する。訪問先ノードがブラックリストに載っている場合、系統のパスのトラバーサル(traversal)は、終了され、訪問先ノードは、フィルタリングされたデータ系統に含められない。
【0062】
図4を参照すると、ユーザは、フィルタリングされたデータ系統の生成のために
図2aのエンドツーエンドのデータ系統
図100の第1のデータノード136を選択済みである。上述のように、第1のデータノード136は、「Region」系統タグ識別子に関連付けられ、「US,MEX」を含み、系統タグ値「CA」を含まない「Region」系統タグ識別子の可能なタグ値のサブセットに関連付けられる。
【0063】
「Region」系統タグ識別子の「CA」系統タグ値は第1のデータノード136に関連する系統タグ値のサブセットに含まれないので、データ系統モジュール25は、「Region」系統タグ識別子に関連付けられ、且つ「CA」のみを含むタグ値のサブセットを有するノードをデータ系統から除外するように構成される。
【0064】
一部の例においては、第1のデータノード136の選択を受け取った後、データ系統モジュール25は、エンドツーエンドのデータ系統
図100を処理して、ブラックリストを生じさせる。上述のように、ブラックリストは、第1のデータノード136以外のすべてのノードを調べて、「Region」系統タグ識別子に関連し、「CA」のみを含むタグ値のサブセットを有するノードを特定することによって生じさせられる。
図4のエンドツーエンドのデータ系統にフィルタリングアルゴリズム300を適用することは、第5のデータ変換ノード118、第7のデータ変換ノード122、第13のデータ変換ノード134、及び第2のデータノード138がブラックリストに追加される結果をもたらす。
図4において、ブラックリストに追加されるノードは、斜線のパターンによって塗りつぶされる。
【0065】
ブラックリストが生じさせられると、第1のデータノード136から始まる系統のパス(つまり、有向リンク108によって接続されたノード)のそれぞれは、エンドツーエンドの系統
図100の端のノードが訪問されるか、又はブラックリストのノードが訪問されるかのどちらかまでトラバースされる。エンドツーエンドのデータ系統
図100の端のノードが到達される場合、ノードにつながり、ノードを含む系統のパス全体が、フィルタリングされたデータ系統に含められる。ブラックリストのノードが到達される場合、系統のパスのトラバーサルが、終了され、ブラックリストのノードにつながっているがそのノードを含まない系統のパスが、フィルタリングされたデータ系統に含められる。
【0066】
図5を参照すると、第1のデータノード136と第9のデータ変換ノード126との間の第1の系統のパスが、データ系統モジュール25によってトラバースされる。第1のデータノード136がユーザによって選択されたので、第1のデータノード136は、デフォルトでフィルタリングされたデータ系統に含めるためにマークされる。そして、第1のデータノード136と第10のデータ変換ノード128との間の有向リンク108が、トラバースされる。それから、ブラックリストが第10のデータ変換ノード128を含むかどうかを決定するために、ブラックリストが検索される。第10のデータ変換ノード128は、ブラックリストに載っていないので、フィルタリングされたデータ系統に含めるためにマークされる。それから、第10のデータ変換ノード128と第9のデータ変換ノード126との間の有向リンク108が、トラバースされる。そして、ブラックリストが第9のデータ変換ノード126を含むかどうかを決定するために、ブラックリストが検索される。第9のデータ変換ノード126は、ブラックリストに載っていないので、フィルタリングされたデータ系統に含めるためにマークされる。第9のデータ変換ノード126はエンドツーエンドの系統
図100の端にあるので、第1の系統のパスのトラバーサルは完了している。
【0067】
図6を参照すると、第1のデータノード136と第1のデータ変換ノード110との間に延びる第2の系統のパスが、データ系統モジュール25によってトラバースされる。第1のデータノード136と第10のデータ変換ノード128との間の有向リンク108は既にトラバースされたので、データ系統モジュール25は、第10のデータ変換ノード128と第4のデータ変換ノード116との間の有向リンク108をトラバースすることによってそのデータ系統モジュール25のトラバーサルを始める。
【0068】
系統モジュール25が第4のデータ変換ノード116に到達するとき、ブラックリストが第4のデータ変換ノード116を含むかどうかを決定するために、ブラックリストが検索される。第4のデータ変換ノード116は、ブラックリストに載っていないので、フィルタリングされたデータ系統に含めるためにマークされる。第4のデータ変換ノード116は、第1のコンテナノード140に入れ子にされる第2のコンテナノード142に含まれることに留意されたい。第1のコンテナノード140も第2のコンテナノード142も、いかなる系統タグ識別子にも関連付けられず、したがって、どちらも、ブラックリストに含まれない。第2の系統のパスは第1のコンテナノード140及び第2のコンテナノード142の境界をトラバースし、どちらのコンテナノードもブラックリスト内にないので、第1のコンテナノード140と第2のコンテナノード142との両方が、フィルタリングされたデータ系統に含めるためにマークされる。一部の例において、コンテナノードが系統タグ識別子及び値によってマークされる場合、そのコンテナノードの子孫ノード(すなわち、子ノード及びそのまた子)のすべては、同じ系統タグ識別子及び値によってマークされることに留意されたい。したがって、ブラックリストは、最も低いレベルのノードに基づいて構築される可能性がある。
【0069】
それから、データ系統モジュール25は、第4のデータ変換ノード116と第1のデータ変換ノード110との間の有向リンク108をトラバースする。系統モジュール25が第1のデータ変換ノード110に到達するとき、ブラックリストが第1のデータ変換ノード110を含むかどうかを決定するために、ブラックリストが検索される。第1のデータ変換ノード110は、ブラックリストに載っていないので、フィルタリングされたデータ系統に含めるためにマークされる。第1のデータ変換ノード110はエンドツーエンドの系統
図100の端にあるので、第2の系統のパスのトラバーサルは完了している。
【0070】
図7を参照すると、第1のデータノード136と第1のデータ変換ノード110との間に延びる第3の系統のパスが、データ系統モジュール25によってトラバースされる。やはり、第1のデータノード136と第10のデータ変換ノード128との間の有向リンク108は既にトラバースされたので、データ系統モジュール25は、第10のデータ変換ノード128と第6のデータ変換ノード120との間の有向リンク108をトラバースすることによってそのデータ系統モジュール25のトラバーサルを始める。
【0071】
系統モジュール25が第6のデータ変換ノード120に到達するとき、ブラックリストが第6のデータ変換ノード120を含むかどうかを決定するために、ブラックリストが検索される。第6のデータ変換ノード120は、ブラックリストに載っていないので、フィルタリングされたデータ系統に含めるためにマークされる。第6のデータ変換ノード120は、第1のコンテナノード140に入れ子にされる第3のコンテナノード144に含まれることに留意されたい。第1のコンテナノード140も第3のコンテナノード144も、いかなる系統タグ識別子にも関連付けられず、したがって、どちらも、ブラックリストに含まれない。第2の系統のパスは第1のコンテナノード140及び第3のコンテナノード144の境界をトラバースし、どちらのコンテナノードもブラックリスト内にないので、第1のコンテナノード140と第3のコンテナノード144との両方が、フィルタリングされたデータ系統に含めるためにマークされる。
【0072】
それから、データ系統モジュール25は、第6のデータ変換ノード120と第1のデータ変換ノード110との間の有向リンク108をトラバースする。系統モジュール25が第1のデータ変換ノード110に到達するとき、ブラックリストが第1のデータ変換ノード110を含むかどうかを決定するために、ブラックリストが検索される。第1のデータ変換ノード110は、ブラックリストに載っていないので、フィルタリングされたデータ系統に含めるためにマークされる。第1のデータ変換ノード110は系統
図100の端にあるので、第3の系統のパスのトラバーサルは完了している。
【0073】
図8を参照すると、第1のデータノード136と第2のデータ変換ノード112との間に延びる第4の系統のパスが、データ系統モジュール25によってトラバースされる。第1のデータノード136と第10のデータ変換ノード128との間の有向リンク108は既にトラバースされたので、データ系統モジュール25は、第10のデータ変換ノード128と第5のデータ変換ノード118との間の有向リンク108をトラバースすることによってそのデータ系統モジュール25のトラバーサルを始める。
【0074】
系統モジュール25が第5のデータ変換ノード118に到達するとき、ブラックリストが第5のデータ変換ノード118を含むかどうかを決定するために、ブラックリストが検索される。第5のデータ変換ノード118は、ブラックリストに載っているので、フィルタリングされたデータ系統から除外される。第5のデータ変換ノード118がブラックリストに載っていると決定されたので、第4の系統のパスのトラバーサルが、終了される。
【0075】
図9を参照すると、第1のデータノード136と第3のデータ変換ノード114との間に延びる第5の系統のパスが、データ系統モジュール25によってトラバースされる。第1のデータノード136と第10のデータ変換ノード128との間の有向リンク108は既にトラバースされたので、データ系統モジュール25は、第10のデータ変換ノード128と第8のデータ変換ノード124との間の有向リンク108をトラバースすることによってそのデータ系統モジュール25のトラバーサルを始める。
【0076】
系統モジュール25が第8のデータ変換ノード124に到達するとき、ブラックリストが第8のデータ変換ノード124を含むかどうかを決定するために、ブラックリストが検索される。第8のデータ変換ノード124は、ブラックリストに載っていないので、フィルタリングされたデータ系統に含めるためにマークされる。第8のデータ変換ノード124は、第1のコンテナノード140に入れ子にされる第4のコンテナノード146に含まれることに留意されたい。第1のコンテナノード140及び第4のコンテナノード146のどちらも、いかなる系統タグ識別子にも関連付けられず、したがって、どちらも、ブラックリストに含まれない。第5の系統のパスは第1のコンテナノード140及び第4のコンテナノード146の境界をトラバースし、どちらのコンテナノードもブラックリスト内にないので、第1のコンテナノード140と第4のコンテナノード146との両方が、フィルタリングされたデータ系統に含めるためにマークされる。
【0077】
それから、データ系統モジュール25は、第8のデータ変換ノード124と第3のデータ変換ノード114との間の有向リンクをトラバースする。系統モジュール25が第3のデータ変換ノード114に到達するとき、ブラックリストが第3のデータ変換ノード114を含むかどうかを決定するために、ブラックリストが検索される。第3のデータ変換ノード114は、ブラックリストに載っていないので、フィルタリングされたデータ系統に含めるためにマークされる。第3のデータ変換ノード114は系統
図100の端にあるので、第5の系統のパスのトラバーサルは完了している。
【0078】
図10を参照すると、第1のデータノード136と第2のデータ変換ノード112との間に延びる第6の系統のパスが、データ系統モジュール25によってトラバースされる。第1のデータノード136と第10のデータ変換ノード128との間の有向リンク108は既にトラバースされたので、データ系統モジュール25は、第10のデータ変換ノード128と第11のデータ変換ノード130との間の有向リンク108をトラバースすることによってそのデータ系統モジュール25のトラバーサルを始める。
【0079】
系統モジュール25が第11のデータ変換ノード130に到達するとき、ブラックリストが第11のデータ変換ノード130を含むかどうかを決定するために、ブラックリストが検索される。第11のデータ変換ノード130は、ブラックリストに載っていないので、フィルタリングされたデータ系統に含めるためにマークされる。
【0080】
それから、データ系統モジュール25は、第11のデータ変換ノード130と第7のデータ変換ノード122との間の有向リンクをトラバースする。系統モジュール25が第7のデータ変換ノード122に到達するとき、ブラックリストが第7のデータ変換ノード122を含むかどうかを決定するために、ブラックリストが検索される。第7のデータ変換ノード122は、ブラックリストに載っているので、フィルタリングされたデータ系統から除外される。第7のデータ変換ノード122がブラックリストに載っていると決定されたので、第6の系統のパスのトラバーサルが、終了される。
【0081】
図11を参照すると、第12のデータ変換構成要素132、第13のデータ変換構成要素134、及び第2のデータノード138は、第1のデータノード136から始まる系統のパス上にないので、デフォルトでフィルタリングされたデータ系統から除外される。
【0082】
第2のデータ変換ノード112は、有向リンクのいずれのトラバーサル中にも到達されず、したがって、フィルタリングされたデータ系統から除外されることに留意されたい。
【0083】
図12を参照すると、第1のデータノード136から始まるすべての系統のパスがトラバースされると、フィルタリングされたデータ系統に含めるためにマークされていないすべてのノードが、エンドツーエンドのデータ系統
図100から削除され、フィルタリングされたデータ系統
図200をもたらす。フィルタリングされたデータ系統
図200は、「Region」系統タグ識別子に関連し、「CA」のみを含む系統タグ値を有するノードを除外することに留意されたい。
【0084】
2 正規化/非正規化
図13を参照すると、コンピュータプログラム27の単純で例示的なエンドツーエンドのデータ系統
図1300が、入力フォーム1360、正規化データ変換ノード1362、データノード1364、非正規化データ変換ノード1366、及びレポートフォーム1368を含む。入力フォーム1360及びレポートフォーム1368は、より高いレベルのデータ要素内に入れ子にされた異なるデータ要素に対応する複数のデータノードをそれぞれがそれ自体の中に含むデータノードである。この例において、入れ子にされたデータ要素は、各フォームのレコード内の異なるフィールドを表す。
【0085】
正規化データ変換ノード1362は、データノード1354によって表されるデータストアに記憶されているデータ要素を正規化する正規化動作を実施し、非正規化データ変換ノード1366は、データノード1354によって表されるデータストアから取り出されているデータ要素を非正規化する非正規化動作を実施する。正規化動作の「正規化」及び非正規化動作の「非正規化」の特定の実施形態は、変わり得るが、概して、以下の特徴を有する。データ要素を正規化することは、複数のデータ要素に対応するレコードを少なくとも1つのフィールドに関して共通のフォーマットを有する複数のレコードに変換することを含む。データ要素を非正規化することは、少なくとも1つのフィールドに関して共通のフォーマットを有する複数のレコードを複数のデータ要素に対応する単一のレコードに変換することを含む。以下は、データ系統
図1300に関連するそのような動作の例である。
【0086】
入力フォーム1360は、モバイル電話番号を含む第1のフィールド1370、職場の電話番号を含む第2のフィールド1372、及び家庭の電話番号を含む第3のフィールド1374を含む。動作中、正規化データ変換ノード1362は、入力フォーム1360を受け取り、入力フォーム1360に含まれる電話番号をデータノード1364に記憶するのに好適な正規化された形態に変換する。一部の例において、正規化データ変換ノード1362は、入力フォーム1360に含まれる電話番号を[Phone Number Type,Phone Number]の形態に変換し、Phone Numberは、3つの値、すなわち、Mobile、Work、及びHomeを有する列挙データタイプである。本明細書に記載の態様に関連して、データ要素タイプ及びデータ要素値を有するデータ要素をデータ要素タイプフィールド及びデータ要素値フィールドを含むデータ構造に変換する上述のプロセスが、データ要素の「正規化」と呼ばれる。正規化された電話番号は、後で使用するためにデータノード1364に記憶される。
【0087】
非正規化データ変換ノード1366は、データノード1364から正規化された電話番号を読み、正規化された電話番号を非正規化してそれらの電話番号の元の形態に戻す。本明細書に記載の態様に関連して、正規化されたデータ構造をデータ要素タイプ及びデータ要素値を有するデータ要素に変換して戻す上述のプロセスが、データ要素の「非正規化」と呼ばれる。そして、非正規化データ変換ノード1366は、モバイル電話番号を、モバイル電話番号を記憶するためのレポートフォーム1368の第4のフィールド1376、職場の電話番号を記憶するためのレポートフォーム1368の第5のフィールド1378、及び家庭の電話番号を記憶するためのレポートフォーム1368の第6のフィールド1380に書き込む。
【0088】
上述の正規化/非正規化プロセスは、正規化された列挙データタイプへのデータアイテムの変換及び正規化された列挙データタイプからのデータアイテムの変換が原因で、通常のデータ系統計算システムを扱うことが難しい可能性がある。例えば、ユーザがレポートフォーム1368の第4のフィールド1376のモバイル電話番号に関するデータ系統図を必要とする場合、通常の方法で生じさせられたデータ系統図は、レポートフォーム1368の第4のフィールド1376のモバイル電話番号、非正規化データ変換ノード1366、データノード1364、正規化データ変換ノード1362、及び入力フォーム1368の第1のフィールド1370を含む。
【0089】
通常の方法で生じさせられたデータ系統図は、入力フォーム1360の第2のフィールド1372の職場の電話番号及び入力フォーム1360の第3のフィールド1374の家庭の電話番号も含む。そのような通常のデータ系統図は、第2のフィールド1372の職場の電話番号及び第3のフィールド1374の家庭の電話番号が実際にはレポートフォーム1368の第4のフィールド1376のモバイル電話番号に関するデータ系統の一部ではないので正しくない。
【0090】
図14を参照すると、正しくないデータ系統図の生成を防止するために、エンドツーエンドのデータ系統
図1300内の(基本的にデータノードである)さまざまなフィールドが、系統タグ識別子「Phone Num」及び可能な系統タグ値「Mobile」、「Work」、及び「Home」を有する系統タグによってタグ付けされる(tagged)。特に、第1のフィールド1370は、「Phone Num」系統タグ識別子及び「Mobile」だけを含む可能な系統タグ値のサブセットを有する系統タグによってタグ付けされる。第2のフィールド1372は、「Phone Num」系統タグ識別子及び「Work」だけを含む可能な系統タグ値のサブセットを有する系統タグによってタグ付けされる。第3のフィールド1374は、「Phone Num」系統タグ識別子及び「Home」だけを含む可能な系統タグ値のサブセットを有する系統タグによってタグ付けされる。
【0091】
第4のフィールド1376は、「Phone Num」系統タグ識別子及び「Mobile」だけを含む可能な系統タグ値のサブセットを有する系統タグによってタグ付けされる。第5のフィールド1378は、「Phone Num」系統タグ識別子及び「Work」だけを含む可能な系統タグ値のサブセットを有する系統タグによってタグ付けされる。第6のフィールド1380は、「Phone Num」系統タグ識別子及び「Home」だけを含む可能な系統タグ値のサブセットを有する系統タグによってタグ付けされる。
【0092】
図15を参照すると、ユーザがフィルタリングされたデータ系統図の生成のためにモバイル電話番号を含む第4のフィールド1376を選択するとき、データ系統モジュール25は、まず、第4のフィールド1376と1又は2以上の系統タグ識別子との間の関連付けを決定する。この場合、第4のフィールド1376は、「Phone Num」系統タグ識別子に関連付けられる。それから、データ系統モジュール25は、「Phone Num」タグ識別子の可能なタグ値のうちのどのタグ値が第4のフィールド1376に関連付けられるかを決定する。この場合、「Mobile」タグ値は、第4のフィールド1376に関連する唯一のタグ値である。
【0093】
そして、データ系統モジュール25は、エンドツーエンドのデータ系統
図1300を処理して、ブラックリストを生じさせる。上述のように、ブラックリストは、選択された第4のフィールド1376以外のエンドツーエンドのデータ系統
図1300内のすべてのノード及びフィールドを調べて、「Phone Num」系統タグ識別子に関連し、「Work」及び/又は「Home」だけを含むタグ値のサブセットを有するノード及びフィールドを特定することによって生じさせられる。エンドツーエンドのデータ系統
図1300に
図3のフィルタリングアルゴリズム300を適用することは、第2のフィールド1372、第3のフィールド1374、第5のフィールド1378、及び第6のフィールド1380がブラックリストに追加される結果をもたらす。
図15において、ブラックリストに追加されるデータ系統のフィールドは、斜線のパターンによって塗りつぶされる。
【0094】
図16を参照すると、データ系統モジュール25は、そのとき、第4のフィールド1376から始まるすべての系統のパスをトラバースして、どのノード及びフィールドがフィルタリングされたデータ系統に含められ、フィルタリングされたデータ系統から除外されるのかを決定する。図に見られるように、「Work」及び「Home」系統タグ値のみによってタグ付けされたフィールドは、データ系統モジュール25によってフィルタリングされたデータ系統から除外するためにマークされ、一方、「Mobile」系統タグ値のみによってタグ付けされたフィールドは、フィルタリングされたデータ系統に含めるためにマークされる。
【0095】
図17を参照すると、第4のフィールド1376から始まるすべての系統のパスがトラバースされると、フィルタリングされたデータ系統に含めるためにマークされていないすべてのノード及びフィールドが、エンドツーエンドのデータ系統
図1300から削除され、フィルタリングされたデータ系統
図1700をもたらす。通常の系統生成技術によってフィルタリングされたデータ系統図に誤って含められる第2のフィールド1327及び第3のフィールド1374が、フィルタリングされたデータ系統
図1700からは除外されることに留意されたい。
【0096】
3 代替形態
上の系統タグに基づくフィルタリングの例のデータ系統図のノードは特定の順序でトラバースされるが、トラバーサルの多くの異なる順序が使用され得ることに留意すべきである。例えば、トラバーサルの幅優先順序又はトラバーサルの深さ優先順序が、使用され得る。
【0097】
上の系統タグに基づくフィルタリングの例においては、最初のノードが選択され、最初のノードに関連する系統タグ及び系統タグ値が系統図をフィルタリングするために使用される。しかし、一部の例においては、ユーザが、最初のノードを選択し、データ系統モジュールが、データ系統図をトラバースして、最初のノードに関する完全なデータ系統を決定し、完全なデータ系統をフィルタリングするために使用され得るすべての系統タグ及び系統タグ値を発見する。そして、最初のノードに関する完全なデータ系統が、発見された系統タグ及び系統タグ値と一緒にユーザに提示される。それから、ユーザは、発見された1又は2以上系統タグ及び系統タグ値をフィルタリングパラメータとして選択することによって完全なデータ系統をフィルタリングすることができる。その他の例においては、データ系統モジュールがデータ系統図をトラバースするとき、到達された系統タグ及び系統タグ値のリストが、保守される。そして、図の第1の部分をトラバースする間にリストに追加される系統タグ及び系統タグ値の一部又はすべてが、図の第2の部分をフィルタリングするために、図の第2の上流部分をトラバースする間に使用される可能性がある。
【0098】
上述の手法は、概してデータ系統図の生成に関するが、インパクト分析図を生じさせるためにも使用され得る。
【0099】
一部の例においては、系統の階層内の異なるレベルの2又は3以上のノード(例えば、コンテナノード及びコンテナノード内のデータ変換ノード)に関連する系統タグが、衝突する可能性がある。一部の例においては、系統の階層内の最も低いレベルのノードが、系統タグとして選択される。
【0100】
上述の例においては、データ変換ノードが、矢印によって表されるフローによって互いに直接接続されるものとして示されている。しかし、一部の例においては、第1の構成要素の出力を第2の構成要素の入力に接続するフローが、第1の構成要素から出るデータによって書き込まれ、第2の構成要素の入力によって読まれるデータストレージ要素を暗黙的に含む可能性があることに留意すべきである。
【0101】
4 実施形態
上述のデータ系統生成手法は、好適なソフトウェアを実行するコンピューティングシステムを用いて履行され得る。例えば、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを用いて出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャである可能性がある)1又は2以上のプログラミングされた又はプログラミング可能なコンピューティングシステム上で実行される1又は2以上のコンピュータプログラムのプロシージャを含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして履行され得る。
【0102】
ソフトウェアは、CD−ROM又は(例えば、多目的若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な)その他のコンピュータ可読媒体などの有形の非一時的媒体上に提供されるか、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される(例えば、伝搬信号に符号化される)可能性がある。処理の一部又はすべては、専用のコンピュータ上で、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)若しくは専用の特定用途向け集積回路(ASIC,application-specific integrated circuit)などの専用のハードウェアを使用して実施される可能性がある。処理は、ソフトウェアによって規定された計算の異なる部分が異なるコンピューティング要素によって実施される分散された方法で履行される可能性がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実施するためにストレージデバイスの媒体がコンピュータによって読み取られるときにコンピュータを構成し、動作させるために、多目的又は専用のプログラミング可能なコンピュータによってアクセスされ得るストレージデバイスのコンピュータ可読ストレージ媒体(例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体)に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として履行されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された1又は2以上処理ステップを実施するために特定の予め定義された方法でコンピュータを動作させる。
【0103】
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の請求項の範囲によって画定される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、添付の請求項の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順序に依存しない可能性があり、したがって、説明された順序とは異なる順序で実施される可能性がある。