(57)【要約】入力ソースからデータを抽出し、該データを変換し、変換されたデータを出力先にロードするためのシステムおよび方法である。制約を含むスキーマコントラクトを使用して、入力データ列型のセットを検証し、それらを実際の型のセットに変換する。スキーマコントラクトにおけるデータマッピングにより、入力データ列をデータ統合コンポーネントにより使用されるデータ列にマッピングすることが可能とされる。制約およびデータマッピングにより、異なるセットの入力データ列型を持つデータのセットの変換における柔軟性が提供され、一方、データフロー実行時に使用される固定したセットの型が提供される。柔軟性により、オプション列、１つまたは複数の列のセット、列の可変的な配置、および各列の型定義の変形、が可能とされ得る。
2013533995.tif 000002
【特許請求の範囲】
【請求項１】
入力ソースからの入力データ列の入力セットを出力データ列の出力セットに変換するコンピュータベースの方法であって、
ａ）前記入力セットに対応する１つまたは複数の制約から成るスキーマコントラクトを受け取るステップと、
ｂ）前記入力データ列のセットを記述するメタデータを受け取るステップであって、前記メタデータが各入力データ列に対応する型定義を含む、ステップと、
ｃ）前記入力セットの１つまたは複数のデータフローを表すデータフロー構成データを受け取るステップと、
ｄ）前記データフロー構成データにより指定される各データフローを実行するステップと、
ｅ）各データフローのデータを受け取る前に、列型のセットを生成するステップであって、各列型が、前記メタデータおよび前記制約のセットに基づき、データフローに関連するそれぞれの入力データ列に対応する、ステップと
を含むことを特徴とする方法。
【請求項２】
前記スキーマコントラクトが、前記入力データ列の内の１つまたは複数の列と前記スキーマコントラクトの関連する制約との間のマッピングを記述するデータを含み、前記マッピングを採用して、入力データ列のそれぞれをデータ統合コンポーネントの入力指定にマッチさせるステップをさらに含むことを特徴とする請求項１に記載のコンピュータベースの方法。
【請求項３】
インターフェースを採用して、入力列の型定義に基づき出力列の型定義について、１つまたは複数のデータ統合コンポーネントにクエリを行うステップをさらに含むことを特徴とする請求項１に記載のコンピュータベースの方法。
【請求項４】
インターフェースを採用して、入力列の型定義に基づき出力列の型定義について、１つまたは複数のデータ統合コンポーネントの１つまたは複数のクエリを行うステップと、前記１つまたは複数のクエリに基づき前記スキーマコントラクトが有効であるかどうかを判定するステップと、をさらに含むことを特徴とする請求項１に記載のコンピュータベースの方法。
【請求項５】
前記列型のセットに基づき１つまたは複数のメモリブロックを割り当てるステップと、前記入力ソースからデータを受け取るステップと、前記入力ソースからのデータを前記１つまたは複数のメモリブロックに記憶するステップと、をさらに含むことを特徴とする請求項１に記載のコンピュータベースの方法。
【請求項６】
ａ）別の入力ソースから入力データ列の別のセットを受け取るステップと、
ｂ）前記データ列の他のセットを記述する他のメタデータを受け取るステップであって、前記他のメタデータが前記入力データ列のセットに関連する対応する列の型定義とは異なる１つまたは複数の列の型定義を含む、ステップと、
ｃ）前記スキーマコントラクトに基づき、前記他の入力ソースに対応する列型の別のセットを生成するステップと
をさらに含むことを特徴とする請求項１に記載のコンピュータベースの方法。
【請求項７】
前記スキーマコントラクトがオプション列と前記オプション列に対応するデフォルト値との指定を含み、前記方法が、前記オプション列がデータ列の入力セットから省略された場合に、前記デフォルト値に対応するデータを用いて列を生成するステップをさらに含むことを特徴とする請求項１に記載のコンピュータベースの方法。
【請求項８】
前記スキーマコントラクトが可変数の列を表すプロトタイプ列の指定を含み、
前記方法が、
ａ）前記プロトタイプ列に対応するデータ列の入力セットの１つまたは複数の列を判定するステップと、
ｂ）１つまたは複数の判定された列内の列の数を判定するステップと、
ｃ）前記判定された１つまたは複数の列を入力としてデータ統合コンポーネントに提供するステップと
をさらに含むことを特徴とする請求項１に記載のコンピュータベースの方法。
【請求項９】
ａ）前記スキーマコントラクトの１つまたは複数の制約のデザイン検証を行うステップと、
ｂ）各データフローを実行する前に、各入力データ列に対応する型定義のランタイム検証を行うステップと
をさらに含むことを特徴とする請求項１に記載のコンピュータベースの方法。
【請求項１０】
入力データから出力データへの変換を円滑にするためのコンピュータベースのシステムであって、
ａ）１つまたは複数のデータ統合コンポーネントであって、各データ統合コンポーネントが、入力データ列を受け取るよう、および、前記入力データ列に基づき出力データ列を生成するよう構成される、データ統合コンポーネントと、
ｂ）１つまたは複数の制約および列マッピングデータを含むスキーマコントラクトを受け取るよう、および、前記スキーマコントラクトを検証するよう構成されるスキーマ処理部と、
ｃ）前記１つまたは複数の制約を受け取るよう、データ列を記述するメタデータを入力ソースから受け取るよう、および、前記１つまたは複数のデータ統合コンポーネントにより使用するための実際の列型のセットを生成して前記入力データ列を変換するよう構成される制約コンパイラと
を備え、
前記システムは、第１のセットの入力データを変換し、および第２のセットの入力データを変換するためのスキーマコントラクトを採用するよう構成され、前記第１のセットの入力データおよび前記第２のセットの入力データはそれぞれが、他方の入力列型の指定とは異なる入力列型の指定のそれぞれのセットを有する
ことを特徴とするコンピュータベースのシステム。
【請求項１１】
前記第１のセットの入力データが第１の数のデータ列を持ち、第２のセットの入力データが第１の数のデータ列とは異なる第２の数のデータ列を持つことを特徴とする請求項１０に記載のコンピュータベースのシステム。
【請求項１２】
前記制約コンパイラが、列マッピングデータを採用して前記入力データ列を実際の列型のセットにマッチさせるよう構成されることを特徴とする請求項１０に記載のコンピュータベースのシステム。
【請求項１３】
前記制約コンパイラが前記スキーマコントラクトを検証する手段を備えることを特徴とする請求項１０に記載のコンピュータベースのシステム。
【請求項１４】
前記制約コンパイラが、前記データ統合コンポーネントにクエリを行うことによりスキーマコントラクトを検証するよう構成されることを特徴とする請求項１０に記載のコンピュータベースのシステム。
【請求項１５】
入力データから出力データへの変換を円滑にするためのコンピュータプログラム命令を含むコンピュータ可読記憶媒体であって、前記プログラム命令は１つまたは複数のプロセッサにより実行可能であり、
ａ）１つまたは複数の列の制約のセットを受け取るステップと、
ｂ）入力列のセットを記述するメタデータを入力ソースから受け取るステップと、
ｃ）前記メタデータを前記列の制約に基づき検証するステップと、
ｄ）前記メタデータを前記列の制約に基づき実際の列型のセットに変換するステップと
ｅ）前記実際の列型を１つまたは複数のデータ統合コンポーネントに提供して前記入力ソースから受け取ったデータの変換を円滑にするステップと
を含む動作を実行する
ことを特徴とするコンピュータ可読記憶媒体。
【請求項１６】
列マッピングデータを受け取るステップと、前記メタデータを実際の列型のセットに変換するステップとをさらに含み、前記変換するステップが前記列マッピングデータに基づき前記入力列のセットのそれぞれを対応する実際の列型にマッピングするステップを含むことを特徴とする請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記１つまたは複数のデータ統合コンポーネントが別の入力ソースから受け取られた他のデータを変換することを可能にするステップをさらに含み、前記他のデータは前記入力列のセットとは型が異なる入力列の別のセットを有することを特徴とする請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１８】
第１のデータ統合コンポーネントの出力データ型を前記メタデータに基づき判定するステップと、前記出力データ型と第２のデータ統合コンポーネントの入力データ型とに基づき、前記メタデータと前記制約のセットとの有効性を判定するステップとをさらに含むことを特徴とする請求項１５に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ統合のためのスキーマコントラクトに関する。
【背景技術】
【０００２】
リレーショナルデータベースには、典型的には１つまたは複数のテーブルが含まれる。各テーブルには１つまたは複数のレコードが含まれ、テーブルの各レコードには１つまたは複数のフィールドが含まれる。テーブルのレコードは行と呼ばれ、フィールドは列と呼ばれる。各列は、各レコードのフィールド内のデータの型、サイズ、もしくは他のプロパティを記述する関連メタデータを有する。スキーマには、各テーブルの列毎のメタデータに加えて、ソートフィールド、キーなど、各テーブルの他の仕様が含まれる。
【０００３】
抽出・変換・ロードシステム（ＥＴＬ）は、コンピュータベースのシステムであり、特定のデータソースからデータを抽出し、そのデータを変形して所望の状態に変換し、そして変形されたデータを特定の送り先にロードする。ＥＴＬシステムは様々な環境において使用することができる。例えば、異種システムが第１のフォーマット、スキーマ、もしくは配置で、あるデータを格納し、システムの他の部分では異なるフォーマット、スキーマ、もしくは配置を使用することができる。ＥＴＬシステムを使用して２つのサブシステムを統合することができる。変形には、再フォーマット、ソート、フィルタリング、データ列の結合、もしくは他の型の修正などの操作を含んで良い。ＥＴＬシステムの入力データおよび出力データはそれぞれスキーマを有する。出力スキーマは、入力スキーマと同じでも異なっても良い。
【０００４】
ＥＴＬに採用される入力および出力のスキーマは、典型的には固定である。スキーマにおいて変更に対応するために、開発者はスキーマを所望の通りに修正することができる。スキーマの一部をＥＴＬにより動的に処理することができるシステムもある。しかし、動的な処理により、データフローの実行が非効率になることがある。例えば、メモリブロックは特定のデータフローにおいては最適ではない場合がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
この要約は、以下の「発明を実施するための形態」でさらに述べる概念を選択して簡略化した形式で紹介するために提供するものである。この要約は、請求の主題の重要な特徴もしくは主要な特徴を確認することを意図しておらず、請求の主題の範囲を制限するものとして使用されることも意図していない。
【０００６】
簡潔には、システム、方法およびコンポーネント（構成要素）が、入力ソースからデータを抽出し、該データを変換し、変換されたデータを出力先にロードすることを円滑にするべく動作する。一実施形態において、スキーマコントラクト（スキーマ規約）には入力データ列型のセットを検証し、かつ、それらを実際の型のセットに変換するために使用される制約が含まれる。一実施形態において、スキーマコントラクトにおけるデータマッピングにより、入力データ列をデータ統合コンポーネントにより使用されるデータ列にマッピングすることが可能とされる。
【０００７】
一実施形態において、データマッピングにより、オプション列もしくは１つまたは複数の列のセットの指定が可能とされる。入力列は、種々の方法で配置され、データ統合コンポーネントにより使用されるデータ列にマッピングされて良い。入力列は、配置、名前、もしくは型定義が可変とされて良い。
【０００８】
システムにより、スキーマコントラクトは、各入力データソースの列型の指定が異なる、異なる入力データソースで再利用可能とされる。一例の相違点には、入力列に対する型定義の変形がある。例えば、異なるソースからの対応する列が他のソースとは異なる文字列長を有することがある。
【０００９】
一実施形態において、各データフローのデータを受け取る前に、列型のセットが生成され、各列型は、データフローに関連するそれぞれの入力データ列に対応する。該生成は、スキーマコントラクトの制約のセットおよび入力データ列に対応するメタデータに基づいて良い。
【００１０】
前述および関連する目的の達成のため、システムの特定の例示の態様が、以下の記載および添付の図面と関連して本明細書において記載される。しかし、これらの態様は、本発明の原理が採用されて良い種々の方法の内のほんの一部を示すものであり、本発明が全てのそのような態様およびその等価物を含むことが意図される。本発明の他の利点および新規な特徴は、以下の本発明の詳細な説明から、図面と関連して考察すれば明らかになるであろう。
【図面の簡単な説明】
【００１１】
本発明の非制限的かつ非包括的な実施形態が以下の図面を参照して記載される。図面において、特に指定しない限り、種々の図面を通して同様の参照番号が同様の部分を参照する。
【００１２】
本発明の理解を支援するために、以下の発明を実施するための形態が参照され、添付の図面に関連して読まれる。
【００１３】
【図１】本明細書に記載される機構を展開させることができるデータ統合環境のブロック図である。
【図２】本明細書に記載される機構を展開させることができる一例のデータ統合システムのブロック図である。
【図３】抽出、変換およびロードシステムを実装することができる一例のシステムを例示するブロック図である。
【図４】データ統合システムにおいて柔軟性のある制約指定を円滑にするための処理の一例の実施形態を例示するフロー図である。
【図５】制約指定を含むパッケージを生成するための処理の一例の実施形態を例示するフロー図である。
【図６】制約指定を含むパッケージを実行するための処理の一例の実施形態を例示するフロー図である。
【図７】データフローを実行するための処理の一例の実施形態を例示するフロー図である。
【図８】実際のデータ型のランタイム検証を実行するための一例の処理を例示するフロー図である。
【図９Ａ】制約指定と物理的な入力ソースとの間のマッピングの例を例示する図である。
【図９Ｂ】制約指定と物理的な入力ソースとの間のマッピングの例を例示する図である。
【図１０】コンピュータ装置の一実施形態を示すブロック図であり、本明細書に記載される機能を実行するために使用することができるコンピュータ装置の選択されたコンポーネントを例示する。
【発明を実施するための形態】
【００１４】
ここで、本発明の例示の実施形態について、以下に図面を参照してより全体的に説明するが、これはその一部を形成するものであり、本発明を実践することができる特定の実施形態を実例として示すものである。しかし、本発明は多くの他の形式で具現化されて良く、本明細書に記載される実施形態に限定されるものと解釈されるべきではない。むしろ、これらの実施形態は、本開示を徹底かつ完全にするために、また、本発明の範囲を当業者に完全に伝達するために、提供される。とりわけ、本発明は方法もしくは装置として具現化されて良い。従って、本発明は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態、もしくはソフトウェアとハードウェアの態様が組み合わせられた実施形態の形式をとることができる。従って、以下の詳細な説明は制限的な意味で捉えられることはない。
【００１５】
明細書および請求項を通して、以下の用語は、文脈において特に明確に指示されない限り、本明細書において明示的に関連付けられる意味を持つ。「一実施形態において」というフレーズは、本明細書において使用される時、必ずしも以前の実施形態を参照するとは限らないが参照することもある。さらに、「別の実施形態において」というフレーズは、本明細書において使用される時、必ずしも異なる実施形態を参照するとは限らないが参照することもある。従って、本発明の種々の実施形態は、本発明の範囲および精神から逸脱することなく容易に組み合わされて良い。同様に、「一実装において」というフレーズは、本明細書において使用される時、必ずしも同一の実装を参照するとは限らないが参照することもあり、種々の実装の技術が組み合わされて良い。
【００１６】
加えて、用語「もしくは」は、本明細書において使用される時、文脈において特に明確に指示されない限り、包括的な「ＯＲ」演算子であり、用語「および／または」と等価である。用語「に基づき」は排他的ではなく、文脈において特に明確に指示されない限り、記載されない追加的な要因に基づくことが許容される。加えて、明細書を通して、「１つの」「一つの」および「その」は、複数を参照することも意味する。「において」には、「の中に」および「の上に」の意味が含まれる。
【００１７】
本明細書において記載されるコンポーネントは、種々のデータ構造を有する種々のコンピュータ可読媒体から実行されて良い。コンポーネントは、ローカルもしくはリモートの処理を介して、１つまたは複数のデータパケット（例えば、１つのコンポーネントからのデータであって、該１つのコンポーネントはローカルシステム、分散システム、もしくはインターネットなどのネットワーク上の信号を介した他のシステム、における別のコンポーネントと対話する）を有する信号に従うなどして通信を行うことができる。ソフトウェアコンポーネントは、例えば、非一時的なコンピュータ可読記憶媒体上に記憶させることができ、該記憶媒体には、本発明の実施形態に従う、特定用途向け集積回路（ＡＳＩＣ）、ＣＤ（ｃｏｍｐａｃｔ  ｄｉｓｋ）、ＤＶＤ（デジタル多用途ディスク：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、フロッピーディスク、ハードディスク、ＥＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、もしくはメモリスティックが含まれるがこれに限定されない。
【００１８】
用語「コンピュータ可読媒体」には、本明細書において使用される時、非一時的な記憶媒体と通信媒体の両方が含まれる。通信媒体は典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、もしくは、搬送波もしくは他の転送機構などの変調データ信号内の他のデータを具現化し、任意の情報配信媒体を含む。制限ではなく例として、通信媒体には、有線ネットワークおよび直接有線接続などの有線媒体、ならびに、音響、ラジオ、赤外線および他の無線媒体などの無線媒体が含まれる。
【００１９】
図１は、本明細書に記載される機構を展開させることができる一例のデータ統合環境１００のブロック図である。実施形態は様々な環境において展開されて良く、環境１００はそのような例を提供する。環境１００は大きなデータ統合環境の一部であっても良い。
【００２０】
図示されるように、環境１００には入力データソース１０２が含まれる。データソース１０２には、１つまたは複数のファイル、データベース、メモリ構造、ネットワーク資源、データストリーム等、もしくはその組み合わせが含まれて良い。データソース１０２は、抽出・変換・ロードシステム（ＥＴＬ）１０４への入力として機能する。ＥＴＬ１０４は、データソース１０２からデータを受け取り、データに対して種々の操作を行い、データ出力１０６を提供する。データ出力１０６は、ファイル、データベース等において具現化されるようなデータソース１０２の品質を有しても良い。
【００２１】
データソース１０２は、種々のテーブルのプロパティおよびテーブルに含まれる列のプロパティを提供する入力スキーマを有することができる。データ出力１０６は、種々のテーブルのプロパティおよびテーブルに含まれる列のプロパティ、より具体的には、ＥＴＬ１０４により出力される列のプロパティを提供する出力スキーマを有することができる。ＥＴＬ１０４には、入力データの１つまたは複数の変換をそのデータを送り先に提供する前に実行する操作の順番が含まれて良い。従って、データは、進む順番もしくは変換される順番に各入力ソースからＥＴＬを通って流れると言うことができる。 
【００２２】
出力スキーマを入力スキーマと異ならせる変換も行うことができる。一例の変換では、２つの文字列の列を連結させて第３の列を生成することができる。入力スキーマでは、それぞれ長さが３０の文字列を有する２つの列であるという指定を含んで良い。出力スキーマでは、これら２つの列を、長さが６０の文字列を有する１つの列と置き換えることができる。別の例の変換では、テーブルの行をソートして、入力スキーマと等価である列毎のスキーマを得ることができる。入力スキーマと出力スキーマとの間で多数の構成および関係が可能である。
【００２３】
図２は、本明細書に記載される機構を展開させることができる一例のデータ統合システム２００のブロック図である。システム２００には、環境１００の態様がさらに詳細に例示される。
【００２４】
図示されるように、システム２００には、３つの型の入力ソース、すなわち、ファイル２０２、データベース２０４および他のソース２０５が含まれる。これら３つの型の入力ソースは環境１００の入力データソース１０２を表すことができる。システム２００はＥＴＬシステムの３つのコンポーネントをさらに例示する。ソースコンポーネント２０８、変換コンポーネント２１４および送り先コンポーネント２２０は、ＥＴＬ１０４のコンポーネントとすることができる。一構成において、ソースコンポーネント２０８は、入力ソースからデータを抽出し、変換コンポーネント２１４はソースコンポーネント２０８から受け取ったデータを修正、要約もしくは処理することができ、送り先コンポーネント２２０は、出力データをファイル２２４、データベース２２６もしくは他の送り先データ２２８などの出力データソーソースにロードすることができる。ＥＴＬシステムは、本明細書においてデータ統合システムとも呼ばれる。ソースコンポーネント２０８、変換コンポーネント２１４および送り先コンポーネント２２０はデータ統合コンポーネントと呼ばれる。
【００２５】
図示される例示のシステム２００において、ソースコンポーネント２０８、変換コンポーネント２１４および送り先コンポーネント２２０のそれぞれが、それ自身の入力インターフェースおよび出力インターフェースを有する。これらが、対応するインターフェースもしくはデータと接続されてデータソース１０２とデータ出力１０６との間のデータフローを形成する。図示されるように、外部列インターフェース２０６はソースコンポーネント２０８に入力を提供し、ファイル２０２、データベース２０４もしくは他のソース２０５からデータを受け取る。ソースコンポーネント２０８の出力インターフェース２１０は、変換コンポーネント２１４の入力インターフェース２１２に接続する。変換コンポーネント２１４の出力インターフェース２１６は、送り先コンポーネント２２０の入力インターフェース２１８に接続する。外部列２２２は、出力ソース、すなわちファイル２２４、データベース２２６もしくは他の送り先データ２２８に接続する送り先コンポーネント２２０の出力とすることができる。
【００２６】
ソースコンポーネント２０８、変換コンポーネント２１４および送り先コンポーネント２２０はパイプラインを形成することができ、それにおいてデータは、データソースから受け取られ、これらのコンポーネントそれぞれにより処理され、データ出力に対して出力される。パイプラン内での操作は並行して行われても良い。例えば、送り先コンポーネント２２０が変換コンポーネント２１４から受け取ったデータを処理しているのと同時に、変換コンポーネント２１４がソースコンポーネント２０８から受け取ったデータを処理していて良く、一方で、ソースコンポーネント２０８はデータソースから受け取った新しいデータを並行して処理する。図２には単純な構成が示されるが、ソースコンポーネント２０８、変換コンポーネント２１４もしくは送り先コンポーネント２２０の追加のインスタンスをＥＴＬシステムに追加して、より複雑なシステムを構成することもできる。
【００２７】
いくつかの構成において、ソースコンポーネント、変換コンポーネントもしくは送り先コンポーネントが、他のコンポーネントの機能を実行しても良い。例えば、変換コンポーネントが、外部ソースからデータをインポートしてメモリ内のデータとの合成を行い、ソースコンポーネントと変換コンポーネントの組み合わせとして機能しても良い。別の例において、変換コンポーネントが外部の送り先にデータの書き込みを行っても良い。いくつかの構成において、ソースコンポーネント、変換コンポーネントもしくは送り先コンポーネントは、複数の入力もしくは複数の送り先を有することができる。これを使用して、例えば、入力を組み合わせること、もしくは入力を複数の出力に分割することができる。
【００２８】
図３は、図１のＥＴＬ１０４などのＥＴＬを実装することができる一例のデータ統合システム３００を例示するブロック図である。図３は、適切なシステム構成の単なる一例であり、本発明の使用もしくは機能性の範囲について何ら制限を示唆することは意図されない。従って、本明細書に記載される機構の範囲もしくは精神から逸脱することなく、種々のシステム構成を採用することができる。
【００２９】
システム３００のコンポーネントは、１つまたは複数のコンピュータ装置間に分散させて良く、コンピュータ装置のそれぞれが他の装置との通信を、ＩＰ、ＴＣＰ／ＩＰ、ＵＤＰ、ＨＴＴＰ、ＳＳＬ、ＴＬＳ、ＦＴＰ、ＳＭＴＰ、ＷＡＰ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＷＬＡＮなどの１つまたは複数の種々の有線もしくは無線の通信プロトコルを採用することにより行うことができる。
【００３０】
コンピュータ装置は専用もしくは汎用のコンピュータ装置であって良い。コンピュータ装置の例には、メインフレーム、サーバ、ブレードサーバ、パーソナルコンピュータ、携帯型コンピュータ、通信装置、家庭用電化製品、等が含まれる。図９では、システム３００もしくはその一部を実装するために使用することができるコンピュータ装置の一例の実施形態を例示する。
【００３１】
図３には、ユーザ３０２が点線で示され、ユーザ３０２がシステム３００の一部ではないが、システムと対話することができることが示される。一実施形態において、ユーザ３０２はスキーマコントラクト３０４で１つまたは複数の制約をシステム３００に与える。スキーマコントラクトには制約のセットを含んで良く、追加のデータを含むこともできる。制約はそれ自身が型の指定であって良い。いくつかの実施形態において、制約を汎用の型の指定とすることができる。例えば、文字列の制約では、種々の型もしくは長さを持つ文字列の型を受け入れることができる。整数の制約では、種々の整数の型を受け入れることができる。一実施形態において、スキーマコントラクトには、入力データ列を１つまたは複数のデータ統合コンポーネントで使用される仕様にマッチさせるためのデータのマッピングが含まれる。
【００３２】
データマッピングにより可変数の列を処理する方法を指定することができる。例えば、制約により、任意の型の１つまたは複数の列、もしくは任意の型のゼロもしくは１以上の列を指定することができる。別の例の制約により、文字列の１つまたは複数の列を指定することができる。制約により、型の制約およびデフォルト値と共に、１つのオプション列を指定することができる。オプション入力列が省略される場合、デフォルトの値および型の制約をデータフローに挿入させることができる。
【００３３】
いくつかのデータマッピングにより、指定を提供して入力列とデータ統合コンポーネントにより処理される列との間のマッピングを可能にし、一方で、列の意味情報が保存される。例えば、マッピング機構では、名前で列を指定することができる。対応する列が、データ統合コンポーネントが想定するのとは、他の列に対して異なる位置にある場合、該列を列名指定によりマッピングすることができる。いくつかの実施形態において、名前指定は、ワイルドカードの文字もしくは入力列名をマッチさせるための他の機構を使用することなどにより法則化されて良い。例えば、制約により、「ＡＢ*」という名前の１つまたは複数の文字列の列を指定し、文字「ＡＢ」で始まる列にマッピングさせることができる。
【００３４】
一実装において、内部マップが物理的な列の参照と内部参照との間の対応を提供することができる。システムのコンポーネントが変更されても等価の列が提供される場合、マッピング機構により、各列の自動的な再マッピングが円滑にされる。一実施形態において、システムは、想定される列と実際の入力列との意味上の前後関係をユーザに提示し、ユーザが１つまたは複数の列に対する列マッピングを示すことを可能にする。図９は列マッピングの例を提供する。
【００３５】
スキーマコントラクト３０４での制約は、任意の数の形式に存在し、種々の方法で生成されて良い。一実施形態において、スキーマ処理部３０６が、図１の入力データソース１０２に対応する入力ソース３２２からメタデータ３２３を受け取る。入力ソース３２２およびメタデータ３２３は点線で示され、システム３００の外部にあって良いが、システムへの入力として提供される。メタデータ３２３には、入力ソース３２２から受け取った実際の型のデータを含んで良い。スキーマ処理部３０６は、実際の型からの制約の指定を円滑にすることができる。一実施形態において、スキーマ処理部３０６は、各列の実際の型を示し、ユーザ３０２が実際の型をスキーマコントラクト３０４での制約の型と置き換えることを可能にすることができる。
【００３６】
一実施形態において、スキーマ処理部３０６は、メタデータ３２３から派生しかつシステムに有効であろう制約を判定する処理を実行して良い。スキーマ処理部３０６は、例えば、下流のコンポーネントの入力を検査し、実際の型をより一般的な制約にし得ることを判定する。例えば、下流の入力では、長さが５０の一般的文字列の列に対する指定を示すことができる。対応する実際の型は、長さが３０のユニコード文字列を指定することができる。スキーマ処理部３０６は、実際の型が一般的文字列の制約に変更されて良いと判定することができる。スキーマ処理部３０６は、示された制約の型をユーザ３０２に対して提示し、示された型の受諾もしくは変更を円滑にすることができる。制約は、その特定性を変更することができる。制約の例には、長さ５０の文字列、文字列、任意の仮数部の数、任意の型、オプション列、もしくは１つまたは複数の列、がある。
【００３７】
一実施形態において、スキーマ処理部３０６は、スキーマコントラクト３０４での制約を分析して、下流のコンポーネントの入力もしくは出力のインターフェースに基づき、制約が有効であるかどうかを判定することができる。一実施形態において、各データ統合コンポーネントは、入力の制約指定を用いて構成されて良い。一実施形態において、データ統合コンポーネントの入力制約指定が、データフロー用の対応する制約を受け入れることが可能であるかどうかを判定することにより、検証が実行されて良い。例えば、下流のコンポーネントがデータフロー用の入力として整数型を指定する場合、数値型の制約の型は無効とみなされる場合がある。一実施形態において、ＥＴＬの各データ統合コンポーネントは、スキーマ処理部３０６がその入力もしくは出力のインターフェースにクエリを行うことを可能にするインターフェースを実装しても良い。一実施形態において、コンポーネントインターフェースは、１つまたは複数の対応する入力データ型に基づき出力されるデータ型を提供することができる。出力データ型は、下流のデータ統合コンポーネントの後に続くクエリにおいて使用されて良い。この情報を使用して、スキーマコントラクト３０４での制約のそれぞれの型を検証することができる。
【００３８】
一実施形態において、スキーマ処理部３０６は、警告メッセージもしくはエラーメッセージをユーザ３０２に与えて、無効の型もしくは無効の可能性のある型の指定を示すことができる。従って、ユーザ３０２により任意の数の反復が行われてスキーマコントラクト３０４での制約が作成される。
【００３９】
例示の実施形態において、スキーマ処理部３０６は、スキーマコントラクト３０４をパッケージ３０８に変換することができる。一実施形態において、パッケージ３０８は、拡張マークアップ言語（ＸＭＬ）ファイルとすることができるが、種々の他のフォーマットを使用しても良い。一実施形態において、パッケージ３０８はオブジェクトモデルの形態を成して良い。一実施形態において、第１のフォーマットにはＸＭＬなどを使用して良く、これは次にオブジェクトモデルなどの第２のフォーマットに変換される。
【００４０】
パッケージには、制御フロー指定および１つまたは複数のデータフロー指定を含むことができる。制御フローの要素には、構造を提供する１つまたは複数のコンテナ、機能性を提供するタスク、コンテナとタスクを連結して順序付けされた制御フローを作成する優先順位制約が含まれて良い。制御フロータスクは、データを抽出し、変換を適用し、データをロードする、データフローを定義かつ実行することできる。
【００４１】
図示されるように、一例のシステム３００において、パッケージ３０８は別のソースから受け取られて良い。例えば、ＸＭＬファイルは、スキーマ処理部３０６による円滑化なしで、別の処理により生成されシステム３００に提供されても良い。いくつかの実装では、パッケージ３０８を内部もしくは外部の処理から受け取ることが許可されて良い。
【００４２】
一実施形態において、パッケージ処理部３１０は、パッケージ３０８を受け取り、ランタイム時の使用のための形式に変換することができる。パッケージ処理部３１０は、パッケージ３０８内に含まれるスキーマに対してデザイン検証を行うことができる。一実装において、この検証は、スキーマ処理部３０６により行われるデザイン検証に略類似して良い。いくつかの構成において、スキーマ処理部３０６のデザイン検証は、パッケージ３０８が別のソースから受け取られるような構成では省略されても良い。従って、パッケージ処理部３１０のデザイン検証は、いくつかの検証を繰り返しても良いし、もしくは、前回行われなかった検証を実行しても良い。なお、スキーマ処理部３０６およびパッケージ処理部３１０は、本検討のために別個のコンポーネントとして例示されるが、１つまたは複数のコンポーネントに少なくとも部分的に組み合わせられて実装されるものがあっても良い。
【００４３】
一実施形態において，パッケージ処理部３１０がパッケージ３０８の実行を開始することができる。これには、ワークフローとは別の１つまたは複数のタスクの実行が含まれて良い。例えば、パッケージ３０８に対応するタスクには、１つまたは複数の電子メールもしくは他のメッセージを指定された受信者に送信すること、１つまたは複数のファイルをＦＴＰもしくは別のプロトコルを介して転送すること、指定スクリプトの実行、もしくは、他の動作が含まれて良い。一実装において、パッケージ処理部３１０はワークフロー処理を開始することができる。ワークフロー処理には制約コンパイラ３１２の実行が含まれて良い。
【００４４】
一実施形態において、制約コンパイラ３１２は、パッケージ３０８内で指定された制約を受け取り、入力ソース３２２から受け取られるメタデータ３２３に基づき、該制約を実際の列型３１４に変換する。メタデータ３２３には、対応するデータの実際の型が含まれて良い。一実装において、制約コンパイラ３１２は、パッケージ３０８において指定された列の制約のランタイム検証を実行することができ、種々のデータ統合コンポーネントが対応する型を処理するべく構成されるかどうかを判定する。制約が有効である場合、制約コンパイラ３１２は、メタデータ３２３およびパッケージ３０８に基づき実際の列型３１４を生成することができる。一実装において、実際の列型３１４はパッケージ３０８内に含まれて良いが、いくつかの実装においてはパッケージ３０８とは別個であって良い。
【００４５】
一例として、変換コンポーネント２１４等のデータ統合コンポーネントは、ユニコード文字列３０という実際の型指定を有する第１の列と、ユニコード文字列４０という実際の型指定を有する第２の列とを含むデータフローを受け取ることができる。変換コンポーネント２１４は、文字列入力を指定する制約を有することができる。システムでは、変換コンポーネントが、２つの列を連結する操作に基づく、ユニコード文字列７０という出力型指定を有することが判定されてよい。
【００４６】
実際の列型３１４には、入力ソース３２２から受け取られる各入力型の型指定が含まれる。一実施形態において、制約コンパイラ３１２は各データ統合コンポーネントに対する各入力列の実際の列型を判定して良く、かつ、この情報を実際の列型３１４内に含んで良い。従って、外部列２０６、入力インターフェース２１２、もしくは入力インターフェース２１８に対応する入力列指定が、判定されかつ含有されて良い。
【００４７】
第1の入力ソース３２２に基づく本明細書に記載されるようなシステムにより作成されるパッケージ３０８を使用して、第２の入力ソース３２２を処理することができることに留意されたい。第２の入力ソース３２２は、第１の入力ソース３２２とは異なる型を有する列を有しても良い。第２の入力ソース３２２を実行する時、実際の列型３１４は同一のものでも、第１の入力ソース３２２を処理する際に生成される実際の列型とは異なるものでも良い。
【００４８】
一実施形態において、計画生成部３１６は、実際の列型３１４を含むパッケージ３０８を受け取ること、かつ、パッケージ３０８および実際の列型３１４に基づく実行計画３１８を生成することができる。実行計画３１８には、テーブルサイズ、割り当てられるメモリブロック、採用するスレッドの数とスレッド間の関係、呼び出す処理と処理のタイミング、ワークフローの１つまたは複数のグラフ、もしくは他のそのようなデータ、の指定が含有されて良い。実行計画３１８は、ワークフロー実行のための青写真として機能することができる。実行計画３１８は、任意の１つまたは複数のデータ統合コンポーネントにより使用されて良い。一実装において、実行計画３１８は入力ソース３２２からデータを受け取る前に生成される。実行計画３１８はワークフローの実行中、固定のままとして良い。実行計画を固定にすることにより、性能を向上させ、リソース使用を低減させ、もしくは他の利益を与える操作効率が得られる。
【００４９】
一実施形態において、パイプライン実行部３２０は、実行計画３１８を受け取り、かつメモリ３２６、スレッド３２８、データ構造、オブジェクト、などのソースを割り当てることができる。パイプライン実行部３２０は、ソースコンポーネント２０８、変換コンポーネント２１４、もしくは送り先コンポーネント２２０等の種々のコンポーネントによるワークフローの実行を開始もしくは管理することができる。出力３２４はパイプライの実行により作成されて良い。出力３２４にはデータ出力１０６が含まれて良い。出力３２４には、ステータスデータ、メッセージなど、ユーザに対して提示されるデータもが含まれて良い。一実施形態において、各データ統合コンポーネントは本明細書において記載される機構を円滑にするインターフェースを実装する。具体的には、データ統合コンポーネントは、実行用の実際の型の１つまたは複数の列を指定する方法の呼び出しを受けて良い。出力列に対する変更を追跡して下流のコンポーネントへ伝播させても良い。
【００５０】
図４は、データ統合システムにおいてスキーマコントラクトを円滑にするための処理４００の一例の実施形態を例示するフロー図である。一実施形態において、処理４００の動作の内少なくともいくつかが、図３のシステム３００のコンポーネントにより実行される。
【００５１】
処理４００の内の例示される部分は、ブロック４０２にて開始させることができ、ここでパッケージが生成される。パッケージには１つまたは複数の柔軟性のある制約もしくはマッピングデータが含まれる。パッケージ３０８は、そのようなパッケージの一例である。ブロック４０２の動作は、図５とそれに関連する考察においてにさらに詳細に例示され考察される。処理はループ４０４に向かって流れ、ループ４０４では入力ソースの各セットと対応する実行が繰り返される。本明細書で検討されるように、本明細書において記載される機構によって生成されるパッケージは、１つまたは複数の異なる列型を含む異なるメタデータを有する１つまたは複数のセットの入力ソースと共に再使用されて良い。ループ４０４の各繰り返しは、データ統合の実行および対応する入力ソースのセットに相当する。例示される実施形態では、ループ４０４はブロック４０６−４０８を含み、ブロック４１０で終了する。
【００５２】
処理はブロック４０６に進んで良く、入力データソースの新しいセットを取り出す。処理はブロック４０８に進んで良く、現在のパッケージを実行する。図６では、パッケージを実行するための処理の一例の実施形態を例示する。
【００５３】
処理はブロック４１０に進み、システム構成もしくはユーザによる動作の制御に基づき、選択的にループ４０４の別の繰り返しを実行することができる。ループ４０４を出ると、処理は完了ブロック４１２に進み、終了しても呼び出しプログラムに戻っても良い。
【００５４】
図５は、制約指定もしくはマッピングデータを含む、図３のパッケージ３０８などのパッケージを生成するための処理５００の一例の実施形態を例示するフロー図である。処理５００もしくはその変形は、図４のブロック４０２の動作の内の少なくともいくつかを実行することができる。処理５００の例示される部分はブロック５０２にて開始されて良く、システムがスキーマコントラクトの生成を円滑にする。本明細書で検討されるように、スキーマ処理部３０６などのシステムコンポーネントは、入力ソースからメタデータを取り出す動作、メタデータを分析する動作、および、ユーザが実際のスキーマを制約のセットに変換することを可能にする動作などを実行することができる。これには、少なくともいくつかの型指定を、対応する制約指定に自動的に修正することが含まれる。このことには指定をユーザに対して提示すること、および指定を修正するコマンドを受け取ること、が含まれて良い。
【００５５】
処理はブロック５０４に進んで良く、スキーマコントラクトと、ソースコンポーネント２０８、変換コンポーネント２１４および送り先コンポーネント２２０などのデータ統合システムコンポーネントの構造とに基づき、デザイン検証を実行し得る。処理はブロック５０６に進んで良く、デザイン検証に基づき、警告もしくはエラーメッセージを選択的に発行する。
【００５６】
矢印５０７で例示されるように、いくつかの実施形態において、処理はブロック５０２に戻って、制約生成の円滑化を追加的に実行して良い。ブロック５０２、５０４および５０６は、繰り返し処理の一部とすることができ、ユーザが１つまたは複数の制約もしくはマッピングデータを生成および修正する。
【００５７】
処理はブロック５０６からブロック５０８に進んで良く、データフロー指定をパッケージに保存する。データフロー指定には１つまたは複数の制約指定もしくはマッピングデータが含まれる。処理は完了ブロック５１０に進み、終了もしくは処理４００などの呼び出しプログラムに戻っても良い。
【００５８】
図６は、制約指定もしくはマッピングデータを含むパッケージを実行するための処理６００の一例の実施形態を例示するフロー図である。処理６００もしくはその変形は、図４のブロック４０８の動作の内の少なくともいくつかを実行することができる。処理６００の例示される部分はブロック６０２にて開始されて良く、パッケージの実行を開始し得る。これには、スクリプト等の実行など、パッケージ内に指定されるような種々の動作の開始が含まれる。処理はブロック６０４に進んで良く、パッケージのデザイン検証を実行し得る。図６には示さないが、一実施形態において、エラーが見つかった場合、処理は終了してもユーザにコマンドの入力を促しても良い。
【００５９】
処理はループ６０６に進んで良く、ループ６０６ではパッケージ内で指定される各データフローが繰り返される。パッケージには、１つまたは複数のデータフロー指定が含まれて良い。一部のデータフローの実行は、構成およびシステム能力に依存して、並行して実行され得る。また、あるデータフローは、他のデータフローに依存して順次実行され得る。さらにまた、あるデータフローについて、同時実行と順次実行との組み合わせもあり得る。ループ６０６は順次ループとして示されるが、ループ６０６の複数の繰り返しが少なくとも部分的に並行して実行されて良いことを理解されたい。各繰り返しにおいて、対応するデータフローが現在のデータフローとして参照される。
【００６０】
処理はブロック６０８に進んで良く、現在のデータフローを実行し得る。図７は、データフローを実行するための処理の一例の実施形態を例示する。処理はブロック６１０に進み、システム構成もしくはユーザによる動作の制御に基づき、選択的にループ６０６の別の繰り返しを実行することができる。ループ６０６を出ると、処理は完了ブロック６１２に進み、終了もしくは処理５００などの呼び出しプログラムに戻っても良い。
【００６１】
図７は、データフローを実行するための処理７００の一例の実施形態を例示するフロー図である。処理７００もしくはその変形は、図６のブロック６０８の動作の内の少なくともいくつかを実行することができる。一実施形態において、処理７００の動作の少なくとも一部は、図３のパイプライン実行部３２０に実行もしくは管理されて良い。処理７００の例示される部分はブロック７０２にて開始されて良く、図３のメタデータ３２３などの外部のメタデータを、入力ソース３２２などのデータソースから取り出す。このメタデータには、データソースからの各列内のデータの実際の型が含まれて良い。
【００６２】
処理はブロック７０４に進んで良く、現在のデータフローに対応する実際の型が検証され、実際のデータ型が生成される。一実施形態において、実際の型のランタイム検証を実行する処理は、各入力型を検証し対応する出力型を指定するデータフローを受け取る各データ統合コンポーネントに、クエリを行って良い。そして、対応する出力型が、次の下流のデータ統合コンポーネントへの入力として提供されて良い。検証が成功した場合、ブロック７０４の動作では、各データ統合コンポーネントの入力用の実際の列型を生成することができる。従って、実際の列型は、メタデータもしくはコンポーネントクエリ処理からの応答に基づき判定されて良い。図８では、ランタイム時のデータフローの検証および実際の列型の生成の一例の処理を例示する。
【００６３】
処理はブロック７０８に進み、実際の列型に基づき実行計画を生成する。いくつかの実施形態において、実行計画では、割り当てられるメモリブロックのサイズ、操作の順番、配置する実行スレッドの数、実行スレッド間の処理の分散、割り当てられるまたは割り当てが解除される他のリソース、もしくはデータフロー実行の一部として実行される他の動作、を指定することができる。実行計画は、後続する実行のための青写真として機能する。一実施形態において、実際の列型の生成および実行計画の生成を含むブロック７０４および７０８の動作は、対応するデータフローのデータを受け取る前に実行される。
【００６４】
処理はブロック７１０に進んで良く、データフローの実行が行われる。これには入力データソースからのデータの検索、メモリの割り当て、スレッド、もしくは他のリソース、種々の処理のスケジューリングと実行など、が含まれてもよい。処理は完了ブロック７１２に進み、終了もしくは処理６００などの呼び出しプログラムに戻っても良い。
【００６５】
図８は、ランタイム時の実際のデータ型の生成と検証を実行する一例の処理８００を例示するフロー図である。処理８００もしくはその変形は、図７のブロック７０４の動作の内の少なくともいくつかを実行することができる。処理８００の例示される部分はブロック８０２にて開始されて良く、データフローのレイアウトを取り出す。データフローのレイアウトでは、データフローを構成するコンポーネントの順番、に加えて他の情報を指定することができる。
【００６６】
処理はブロック８０４に進んで良く、現在の入力ソースに対応する実際のデータ型を取り出す。これらデータ型は、例えば、図３のメタデータ３２３の一部として受け取られて良い。処理はループ８０６に進んで良く、データフローの各データ統合コンポーネントがデータフローの順番でループされる。ループ８０６は、ブロック８０８−８１２を含み、ブロック８１４により終了される。各繰り返しのデータ統合コンポーネントが現在のコンポーネントとして参照される。繰り返しの順番および現在のコンポーネントは、ブロック８０２にて取り出されるデータフローのレイアウトに基づくもので良い。
【００６７】
処理はブロック８０８に進んで良く、１つまたは複数の入力型が現在のコンポーネントに提供される。例えば、現在のコンポーネントが２つのデータ列を受け取ると、システムは、コンポーネントに各データ列の実際のデータ型を提供することができる。処理はブロック８１０に進んで良く、現在のコンポーネントが、実際の入力データ型をその構成に基づき検証することができる。コンポーネントが入力データ型を正確に処理できない場合、コンポーネントは無効のステータスを返す。図示されないが、いくつかの実装において、無効のステータスが返される場合、ループ８０６を終了して処理を終了させて良い。
【００６８】
処理はブロック８１２に進んで良く、１つまたは複数の出力データ型を現在のコンポーネントから取り出し得る。現在のコンポーネントは、入力型に基づく任意の出力型を判定し、これらの出力型を返すことができる。本明細書で検討されるように、出力列の数は入力列の数と異なって良い。返された出力型は、ループ８０６の後続の繰り返しにおける入力型として提供されて良く、ループ８０６には、１つまたは複数のこれらの出力型を入力型として受け取る後続のコンポーネントを有する。
【００６９】
一実装において、データフローの各データ統合コンポーネントは、１つまたは複数の入力型を受け取り１つまたは複数の出力型に加えて検証ステータスを返す方法を含むインターフェースを実装して良い。従って、ブロック８０８、８１０および８１２の動作では、いくつかの実装においてこのインターフェースを採用することができる。種々の実装において、他のインターフェースもしくは機構を使用して、ブロック８０８−８１２の動作を実行すること、および、データ統合コンポーネントとパイプライン実行部３２０との間の対話を制御することができる。
【００７０】
処理はブロック８１４に進み、システム構成、各検証のステータス、もしくはユーザによる動作の制御に基づき、ループ８０６の別の繰り返しを選択的に実行して良い。ループ８０６は、データフローの各下流のコンポーネントで繰り返されて良い。ループ８０６が終了すると、処理は完了ブロック８１６に進み、処理７００などの呼び出しプログラムに戻っても良い。
【００７１】
ランタイム検証の一例において、変換コンポーネントは、２つの入力文字列の列を受け取り、連結された文字列を出力するべく構成されて良い。連結された文字列の列の長さは入力列の長さに依存する。入力文字列の列のそれぞれは、指定された長さを持たない文字列型の制約を有することもできる。この変換コンポーネントから入力を受け取る送り先コンポーネントは、６０文字を超えない文字列を受け取るべく指定されて良い。制約コンパイラ３１２によるランタイム検証は、第１の入力文字列が実際の長さ４０を持ち、第２の入力文字列が実際の長さ１５を持つ、ことを示すメタデータを受け取ることができる。変換コンポーネントは、入力型が有効であること、および出力列型が長さ５５の文字列であることを示すことができる。下流のデータ統合コンポーネントに対する後続のクエリでは、入力列が長さ５５の文字列型であることを示すことができる。
【００７２】
同じ例を用いて、同じ制約を使用する別のソース入力が、第１の入力文字列の列が長さ４０であり、第２の入力文字列の列が長さ３０であることを示すメタデータを提供する場合がある。変換コンポーネントは、結合された長さがその制限である６０を超えているため、入力列の結合が無効であることを示し得る。ユーザはシステムを再構成しても良く、もしくは、所望の通りに修正を行っても良い。従って、デザイン型指定の柔軟性により、入力ソース型の変形が可能とされるが、その結果いくつかの構成に対してはランタイム時に無効となることもある。
【００７３】
図９Ａおよび９Ｂでは、制約指定と物理的な入力ソースとの間のマッピング９００の例が示される。これらの例では、本明細書において記載されるマッピングおよびコンパイル機構が例示される。
【００７４】
テーブル９０４は、例示のデータ統合コンポーネントに対する制約指定を示す。指定には、３つの列参照「入力１」「入力２」および「入力３」が含まれ、それぞれ整数型、文字列型、長さ１００以上の文字列型、というデータ型の制約を有する。テーブル９０２は、入力データソースの３つの列に対する実際のデータ型を示す。３つの列「ＩＤ」「名前」および「記述」は、データ統合コンポーネントの列参照「入力１」「入力２」および「入力３」、にそれぞれマッピングされる。矢印９３０は一例のマッピングを示す。入力列のデータ型はデータ統合コンポーネントの制約に対して有効である。
【００７５】
テーブル９０６は、入力データソースの修正後の実際のデータ型を示す。修正は、入力データソースにおける変更、入力データソースとして異なるデータソースを使用すること、データフローにおける中間での変更、もしくは環境における別の変更、が要因となる。テーブル９０２と比較すると、テーブル９０６では、「カテゴリ」という追加の列が、「記述」という列の前の第３の位置に挿入されている。
【００７６】
テーブル９０８は、テーブル９０４と同一の制約指定を示す。矢印９３２は、テーブル９０８の列参照とテーブル９０６の列参照との間のマッピングを示す。図示されるように、列「入力３」は、テーブル９０２とテーブル９０４との間の元のマッピングと同様に、引き続き列「記述」にマッピングされる。本明細書で検討されるように、列名の使用、内部マップ、もしくはユーザからの指定などの、堅牢なマッピング機構では、入力データソース列の変更後に、システムが正確な列マッピングを維持することを可能とすることができる。
【００７７】
テーブル９１０は、入力データにおける別の変更を示す。テーブル９０２の入力データと比較すると、テーブル９１０の入力データには、テーブル９０６と同様に追加の列「カテゴリ」が含まれる。矢印９３４は、矢印９３２で例示されるのと同様に、元のマッピングが保持されることを示す。テーブル９１０にはさらに、列「名前」の実際の型における変更を示す。テーブル９１０において、データ型はＶａｒＣｈａｒ型（４０）であり、長さが４０であることが示される。テーブル９０２において、「名前」のデータ型はＶａｒＣｈａｒ型（３０）である。従って、このフィールドのサイズは大きくなっている。テーブル９１２で図示されるように、データ統合コンポーネントの対応する列に対する制約は、「任意の文字列型」であり、ＶａｒＣｈａｒ型（３０）の列を受け入れることができる。このように、制約の使用によって図示されるように、入力データ型における少なくともいくつかの変更が可能とされる。
【００７８】
図９Ｂでは、マッピング機構の別の例を示す。テーブル９１６に示すように、データ統合コンポーネントには、「入力１」「入力２」および「入力３」の列参照が含まれ、それぞれ整数型、文字列型、長さ１００以上の文字列型というデータ型の制約を有する。列参照「入力４」は、デフォルト値がＮＵＬＬの「任意の日付型」という対応する制約を有する。別の列参照「入力５」は対応する制約「＊」を有する。
【００７９】
一実施形態において、制約では、列が選択的であり、従って入力ソースから省略されて良いことを指定することができる。制約では、デフォルト値を指定して、列が省略される構成で使用されるようにすることができる。テーブル９１６の「入力４」に対する制約はそのような指定の一例を提供することであるが、種々の実装でデフォルトの列もしくはデフォルト値を指定する他のフォーマットもしくは方法が使用されて良い。
【００８０】
一実施形態において、データ統合コンポーネントは、１つまたは複数の新しい列（本明細書においてプロトタイプ列と呼ばれる）を追加するための機構を提供することができる。一実装において、１つまたは複数のプロトタイプ列はアスタリスクで指定されるが、指定の機構は異なって良い。実際のデータ型を検証する時、およびデータフローをコンパイルする時、実際の型が挿入されることにより、実際の列のセットがプロトタイプ列に対応しても良く。矢印９３６で示されるように、図９Ｂの例において、プロトタイプ列「入力５」は列「カテゴリ」および「ジャスティフィケーション」にマッピングされる。
【００８１】
テーブル９１６は、テーブル９１２に示すように、入力データソースのデータ型に基づきテーブル９１４の制約をコンパイルした結果生成することができる実際の列型の一例を示す。一実装において、コンパイルは図３の制約コンパイラ３１２により実行もしくは制御されて良い。
【００８２】
図示されるように、テーブル９１４の各列の制約は、テーブル９１６内の実際のデータ型を持つ１つまたは複数の列を有する。列「入力１」はＬＯＮＧ型の実際のデータ型を持ち、列「入力２」はＶａｒＣｈａｒ型（４０）の実際のデータ型を持ち、列「入力３」はＷＶａｒＣｈａｒ型（１２０）の実際のデータ型を持つ。これらのデータ型のそれぞれが、テーブル９１２に示すような入力ソースからの対応するデータ型とマッチする。
【００８３】
指定された実際の列「入力４」は、テーブル９１４の制約で指定されるように、値がＮＵＬＬのＤａｔｅＴｉｍｅ型の実際の型を持つ。この値は、入力データソースから対応する列が省略されたため、与えられる。入力データソースが対応する列を有する環境においては、列の値が入力として受け取られる。
【００８４】
「入力５」のプロトタイプ列の制約は２つの列指定に変換され、対応する入力列をマッチさせる。従って、「入力５ａ」が、テーブル９１２の「カテゴリ」列から受け取られたＶａｒＣｈａｒ型（２０）の実際の型を受け取り、「入力５ｂ」が、「ジャスティフィケーション」列から受け取られたＣｈａｒ型（８０）の実際の型を受け取る。
【００８５】
異なる入力ソースに基づくコンパイルされた実際の型のセットが大幅に変化し得ることに留意されたい。図３に示し本明細書で検討されるように、コンパイルされた列型を使用して、実行計画を生成し、各パイプラインを効率的な方法で実行することができる。
【００８６】
図１０は、コンピュータ装置１０００の一実施形態を示すブロック図であり、システム３００を実装するため、もしくは処理４００、５００、６００、７００もしくは８００を含む本明細書に記載される機能を実行するために使用することができるコンピュータ装置の内の選択されたコンポーネントが例示される。コンピュータ装置１０００には、図示されるものよりも多くのコンポーネントが含まれて良く、もしくは、例示されるもの全てよりも少なく含まれても良い。コンピュータ装置１０００は、スタンドアロンのコンピュータ装置、もしくは１つまたは複数のブレードを搭載する筺体内のブレードなどの統合システムの一部であって良い。
【００８７】
図示されるように、コンピュータ装置１０００には１つまたは複数のプロセッサ１００２が含まれ、該プロセッサは種々のコンピュータプログラムの命令を実行するための動作を行う。一構成において、各プロセッサ１００２には、１つまたは複数の中央処理装置、１つまたは複数のプロセッサコア、１つまたは複数のＡＳＩＣ、キャッシュメモリ、もしくは他のハードウェア処理コンポーネントおよび関連するプログラム論理が含まれて良い。図示されるように、コンピュータ装置１０００には、オペレーティングシステム１００４が含まれる。オペレーティングシステム１００４は、汎用もしくは専用のオペレーティングシステムとすることができる。ワシントン州レドモンドのマイクロソフト社によるＷｉｎｄｏｗｓ（登録商標）ファミリーのオペレーティングシステムは、コンピュータ装置１０００上で実行可能なオペレーティングシステムの一例である。
【００８８】
メモリ・記憶装置１００６には、様々な型の非一時的コンピュータ記憶媒体の内の１つまたは複数が含まれて良く、非一時的コンピュータ記憶媒体には、揮発性もしくは不揮発性のメモリ、ＲＡＭ、ＲＯＭ、ソリッドステートメモリ、ディスクドライブ、光記憶装置、もしくは、デジタル情報の記憶に使用可能な任意の他の媒体が含まれる。
【００８９】
メモリ・記憶装置１００６には、本明細書に記載される１つまたは複数のコンポーネントもしくは他のコンポーネントが格納されて良い。一実施形態において、メモリ・記憶装置１００６には、システム３００のソフトウェアコンポーネントもしくはその一部が格納される。メモリ・記憶装置１００６には、入力ソース３２２、メタデータ３２３もしくはその一部が記憶されて良い。これらのコンポーネントの内の任意の１つまたは複数が、ＲＡＭ、不揮発性メモリ、もしくはＲＡＭと不揮発性メモリとの間の異なる場所へ、オペレーティングシステム１００４もしくは他のコンポーネントにより移動されて良い。
【００９０】
コンピュータ装置１０００には、プログラムコードもしくは他の情報をユーザに対して表示することを円滑にする映像表示アダプタ１０１２が含まれて良い。図１０には図示されないが、コンピュータ装置１０００には、基本入出力システム（ＢＩＯＳ）および関連するコンポーネントが含まれて良い。コンピュータ装置１０００にはまた、ネットワークとの通信を行うためのネットワークインターフェースユニット１０１０が含まれて良い。システム２００もしくは３００のソフトウェアコンポーネントは、一時的媒体およびネットワークインターフェースユニット１０１０を介して受け取られて良い。コンピュータ装置１０００には、１つまたは複数の表示モニタ１０１４が含まれて良い。コンピュータ装置１０００の実施形態には、キーボード、ポインティング装置、音声コンポーネント、マイク、音声認識コンポーネント、もしくは他の入力／出力機構などの１つまたは複数の入力装置１０１６が含まれて良い。
【００９１】
図４から８のフローチャート例示の各ブロック、およびフローチャート例示のブロックの組み合わせを、ソフトウェア命令により実装されることが可能であることは理解されるであろう。これらのプログラム命令が、マシンを形成するプロセッサに提供されることで、命令がプロセッサ上で実行されて、フローチャートブロック（単数または複数）内で指定される動作を実装するための手段が作成される。ソフトウェア命令はプロセッサにより実行されて、フローチャートブロック（単数または複数）内で指定される動作を実装するためのステップを提供することができる。加えて、フローチャート例示内の１つまたは複数のブロックもしくはブロックの組み合わせはまた、他のブロックもしくはブロックの組み合わせと同時に実行させることも、もしくは、本発明の範囲もしくは精神から逸脱することなく、例示されるものとは異なる順番で実行させることもできる。
【００９２】
上記の仕様、例およびデータは、本発明の構成の製造および使用に関する完結的な説明を提供する。本発明の多くの実施形態は本発明の精神および範囲から逸脱することなく行うことが可能であるので、本発明は以下に添付される請求項に帰する。
【図１】
2013533995.tif 000003
【図２】
2013533995.tif 000004
【図３】
2013533995.tif 000005
【図４】
2013533995.tif 000006
【図５】
2013533995.tif 000007
【図６】
2013533995.tif 000008
【図７】
2013533995.tif 000009
【図８】
2013533995.tif 000010
【図９Ａ】
2013533995.tif 000011
【図９Ｂ】
2013533995.tif 000012
【図１０】
2013533995.tif 000013
【国際調査報告】
2013533995.tif 000014
2013533995.tif 000015