JP5744187B2 - データ統合のためのスキーマコントラクト - Google Patents

データ統合のためのスキーマコントラクト Download PDF

Info

Publication number
JP5744187B2
JP5744187B2 JP2013512257A JP2013512257A JP5744187B2 JP 5744187 B2 JP5744187 B2 JP 5744187B2 JP 2013512257 A JP2013512257 A JP 2013512257A JP 2013512257 A JP2013512257 A JP 2013512257A JP 5744187 B2 JP5744187 B2 JP 5744187B2
Authority
JP
Japan
Prior art keywords
data
input
column
columns
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013512257A
Other languages
English (en)
Other versions
JP2013533995A5 (ja
JP2013533995A (ja
Inventor
キャロル マシュー
キャロル マシュー
ノア デービッド
ノア デービッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2013533995A publication Critical patent/JP2013533995A/ja
Publication of JP2013533995A5 publication Critical patent/JP2013533995A5/ja
Application granted granted Critical
Publication of JP5744187B2 publication Critical patent/JP5744187B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

本発明は、データ統合のためのスキーマコントラクトに関する。
リレーショナルデータベースには、典型的には1つまたは複数のテーブルが含まれる。各テーブルには1つまたは複数のレコードが含まれ、テーブルの各レコードには1つまたは複数のフィールドが含まれる。テーブルのレコードは行と呼ばれ、フィールドは列と呼ばれる。各列は、各レコードのフィールド内のデータの型、サイズ、もしくは他のプロパティを記述する関連メタデータを有する。スキーマには、各テーブルの列毎のメタデータに加えて、ソートフィールド、キーなど、各テーブルの他の仕様が含まれる。
抽出・変換・ロードシステム(ETL)は、コンピュータベースのシステムであり、特定のデータソースからデータを抽出し、そのデータを変形して所望の状態に変換し、そして変形されたデータを特定の送り先にロードする。ETLシステムは様々な環境において使用することができる。例えば、異種システムが第1のフォーマット、スキーマ、もしくは配置で、あるデータを格納し、システムの他の部分では異なるフォーマット、スキーマ、もしくは配置を使用することができる。ETLシステムを使用して2つのサブシステムを統合することができる。変形には、再フォーマット、ソート、フィルタリング、データ列の結合、もしくは他の型の修正などの操作を含んで良い。ETLシステムの入力データおよび出力データはそれぞれスキーマを有する。出力スキーマは、入力スキーマと同じでも異なっても良い。
ETLに採用される入力および出力のスキーマは、典型的には固定である。スキーマにおいて変更に対応するために、開発者はスキーマを所望の通りに修正することができる。スキーマの一部をETLにより動的に処理することができるシステムもある。しかし、動的な処理により、データフローの実行が非効率になることがある。例えば、メモリブロックは特定のデータフローにおいては最適ではない場合がある。
この要約は、以下の「発明を実施するための形態」でさらに述べる概念を選択して簡略化した形式で紹介するために提供するものである。この要約は、請求の主題の重要な特徴もしくは主要な特徴を確認することを意図しておらず、請求の主題の範囲を制限するものとして使用されることも意図していない。
簡潔には、システム、方法およびコンポーネント(構成要素)が、入力ソースからデータを抽出し、該データを変換し、変換されたデータを出力先にロードすることを円滑にするべく動作する。一実施形態において、スキーマコントラクト(スキーマ規約)には入力データ列型のセットを検証し、かつ、それらを実際の型のセットに変換するために使用される制約が含まれる。一実施形態において、スキーマコントラクトにおけるデータマッピングにより、入力データ列をデータ統合コンポーネントにより使用されるデータ列にマッピングすることが可能とされる。
一実施形態において、データマッピングにより、オプション列もしくは1つまたは複数の列のセットの指定が可能とされる。入力列は、種々の方法で配置され、データ統合コンポーネントにより使用されるデータ列にマッピングされて良い。入力列は、配置、名前、もしくは型定義が可変とされて良い。
システムにより、スキーマコントラクトは、各入力データソースの列型の指定が異なる、異なる入力データソースで再利用可能とされる。一例の相違点には、入力列に対する型定義の変形がある。例えば、異なるソースからの対応する列が他のソースとは異なる文字列長を有することがある。
一実施形態において、各データフローのデータを受け取る前に、列型のセットが生成され、各列型は、データフローに関連するそれぞれの入力データ列に対応する。該生成は、スキーマコントラクトの制約のセットおよび入力データ列に対応するメタデータに基づいて良い。
前述および関連する目的の達成のため、システムの特定の例示の態様が、以下の記載および添付の図面と関連して本明細書において記載される。しかし、これらの態様は、本発明の原理が採用されて良い種々の方法の内のほんの一部を示すものであり、本発明が全てのそのような態様およびその等価物を含むことが意図される。本発明の他の利点および新規な特徴は、以下の本発明の詳細な説明から、図面と関連して考察すれば明らかになるであろう。
本発明の非制限的かつ非包括的な実施形態が以下の図面を参照して記載される。図面において、特に指定しない限り、種々の図面を通して同様の参照番号が同様の部分を参照する。
本発明の理解を支援するために、以下の発明を実施するための形態が参照され、添付の図面に関連して読まれる。
本明細書に記載される機構を展開させることができるデータ統合環境のブロック図である。 本明細書に記載される機構を展開させることができる一例のデータ統合システムのブロック図である。 抽出、変換およびロードシステムを実装することができる一例のシステムを例示するブロック図である。 データ統合システムにおいて柔軟性のある制約指定を円滑にするための処理の一例の実施形態を例示するフロー図である。 制約指定を含むパッケージを生成するための処理の一例の実施形態を例示するフロー図である。 制約指定を含むパッケージを実行するための処理の一例の実施形態を例示するフロー図である。 データフローを実行するための処理の一例の実施形態を例示するフロー図である。 実際のデータ型のランタイム検証を実行するための一例の処理を例示するフロー図である。 制約指定と物理的な入力ソースとの間のマッピングの例を例示する図である。 制約指定と物理的な入力ソースとの間のマッピングの例を例示する図である。 コンピュータ装置の一実施形態を示すブロック図であり、本明細書に記載される機能を実行するために使用することができるコンピュータ装置の選択されたコンポーネントを例示する。
ここで、本発明の例示の実施形態について、以下に図面を参照してより全体的に説明するが、これはその一部を形成するものであり、本発明を実践することができる特定の実施形態を実例として示すものである。しかし、本発明は多くの他の形式で具現化されて良く、本明細書に記載される実施形態に限定されるものと解釈されるべきではない。むしろ、これらの実施形態は、本開示を徹底かつ完全にするために、また、本発明の範囲を当業者に完全に伝達するために、提供される。とりわけ、本発明は方法もしくは装置として具現化されて良い。従って、本発明は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態、もしくはソフトウェアとハードウェアの態様が組み合わせられた実施形態の形式をとることができる。従って、以下の詳細な説明は制限的な意味で捉えられることはない。
明細書および請求項を通して、以下の用語は、文脈において特に明確に指示されない限り、本明細書において明示的に関連付けられる意味を持つ。「一実施形態において」というフレーズは、本明細書において使用される時、必ずしも以前の実施形態を参照するとは限らないが参照することもある。さらに、「別の実施形態において」というフレーズは、本明細書において使用される時、必ずしも異なる実施形態を参照するとは限らないが参照することもある。従って、本発明の種々の実施形態は、本発明の範囲および精神から逸脱することなく容易に組み合わされて良い。同様に、「一実装において」というフレーズは、本明細書において使用される時、必ずしも同一の実装を参照するとは限らないが参照することもあり、種々の実装の技術が組み合わされて良い。
加えて、用語「もしくは」は、本明細書において使用される時、文脈において特に明確に指示されない限り、包括的な「OR」演算子であり、用語「および/または」と等価である。用語「に基づき」は排他的ではなく、文脈において特に明確に指示されない限り、記載されない追加的な要因に基づくことが許容される。加えて、明細書を通して、「1つの」「一つの」および「その」は、複数を参照することも意味する。「において」には、「の中に」および「の上に」の意味が含まれる。
本明細書において記載されるコンポーネントは、種々のデータ構造を有する種々のコンピュータ可読媒体から実行されて良い。コンポーネントは、ローカルもしくはリモートの処理を介して、1つまたは複数のデータパケット(例えば、1つのコンポーネントからのデータであって、該1つのコンポーネントはローカルシステム、分散システム、もしくはインターネットなどのネットワーク上の信号を介した他のシステム、における別のコンポーネントと対話する)を有する信号に従うなどして通信を行うことができる。ソフトウェアコンポーネントは、例えば、非一時的なコンピュータ可読記憶媒体上に記憶させることができ、該記憶媒体には、本発明の実施形態に従う、特定用途向け集積回路(ASIC)、CD(compact disk)、DVD(デジタル多用途ディスク:digital versatile disk)、RAM(random access memory)、ROM(read only memory)、フロッピーディスク、ハードディスク、EEPROM(electrically erasable programmable ROM)、フラッシュメモリ、もしくはメモリスティックが含まれるがこれに限定されない。
用語「コンピュータ可読媒体」には、本明細書において使用される時、非一時的な記憶媒体と通信媒体の両方が含まれる。通信媒体は典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、もしくは、搬送波もしくは他の転送機構などの変調データ信号内の他のデータを具現化し、任意の情報配信媒体を含む。制限ではなく例として、通信媒体には、有線ネットワークおよび直接有線接続などの有線媒体、ならびに、音響、ラジオ、赤外線および他の無線媒体などの無線媒体が含まれる。
図1は、本明細書に記載される機構を展開させることができる一例のデータ統合環境100のブロック図である。実施形態は様々な環境において展開されて良く、環境100はそのような例を提供する。環境100は大きなデータ統合環境の一部であっても良い。
図示されるように、環境100には入力データソース102が含まれる。データソース102には、1つまたは複数のファイル、データベース、メモリ構造、ネットワーク資源、データストリーム等、もしくはその組み合わせが含まれて良い。データソース102は、抽出・変換・ロードシステム(ETL)104への入力として機能する。ETL104は、データソース102からデータを受け取り、データに対して種々の操作を行い、データ出力106を提供する。データ出力106は、ファイル、データベース等において具現化されるようなデータソース102の品質を有しても良い。
データソース102は、種々のテーブルのプロパティおよびテーブルに含まれる列のプロパティを提供する入力スキーマを有することができる。データ出力106は、種々のテーブルのプロパティおよびテーブルに含まれる列のプロパティ、より具体的には、ETL104により出力される列のプロパティを提供する出力スキーマを有することができる。ETL104には、入力データの1つまたは複数の変換をそのデータを送り先に提供する前に実行する操作の順番が含まれて良い。従って、データは、進む順番もしくは変換される順番に各入力ソースからETLを通って流れると言うことができる。
出力スキーマを入力スキーマと異ならせる変換も行うことができる。一例の変換では、2つの文字列の列を連結させて第3の列を生成することができる。入力スキーマでは、それぞれ長さが30の文字列を有する2つの列であるという指定を含んで良い。出力スキーマでは、これら2つの列を、長さが60の文字列を有する1つの列と置き換えることができる。別の例の変換では、テーブルの行をソートして、入力スキーマと等価である列毎のスキーマを得ることができる。入力スキーマと出力スキーマとの間で多数の構成および関係が可能である。
図2は、本明細書に記載される機構を展開させることができる一例のデータ統合システム200のブロック図である。システム200には、環境100の態様がさらに詳細に例示される。
図示されるように、システム200には、3つの型の入力ソース、すなわち、ファイル202、データベース204および他のソース205が含まれる。これら3つの型の入力ソースは環境100の入力データソース102を表すことができる。システム200はETLシステムの3つのコンポーネントをさらに例示する。ソースコンポーネント208、変換コンポーネント214および送り先コンポーネント220は、ETL104のコンポーネントとすることができる。一構成において、ソースコンポーネント208は、入力ソースからデータを抽出し、変換コンポーネント214はソースコンポーネント208から受け取ったデータを修正、要約もしくは処理することができ、送り先コンポーネント220は、出力データをファイル224、データベース226もしくは他の送り先データ228などの出力データソーソースにロードすることができる。ETLシステムは、本明細書においてデータ統合システムとも呼ばれる。ソースコンポーネント208、変換コンポーネント214および送り先コンポーネント220はデータ統合コンポーネントと呼ばれる。
図示される例示のシステム200において、ソースコンポーネント208、変換コンポーネント214および送り先コンポーネント220のそれぞれが、それ自身の入力インターフェースおよび出力インターフェースを有する。これらが、対応するインターフェースもしくはデータと接続されてデータソース102とデータ出力106との間のデータフローを形成する。図示されるように、外部列インターフェース206はソースコンポーネント208に入力を提供し、ファイル202、データベース204もしくは他のソース205からデータを受け取る。ソースコンポーネント208の出力インターフェース210は、変換コンポーネント214の入力インターフェース212に接続する。変換コンポーネント214の出力インターフェース216は、送り先コンポーネント220の入力インターフェース218に接続する。外部列222は、出力ソース、すなわちファイル224、データベース226もしくは他の送り先データ228に接続する送り先コンポーネント220の出力とすることができる。
ソースコンポーネント208、変換コンポーネント214および送り先コンポーネント220はパイプラインを形成することができ、それにおいてデータは、データソースから受け取られ、これらのコンポーネントそれぞれにより処理され、データ出力に対して出力される。パイプラン内での操作は並行して行われても良い。例えば、送り先コンポーネント220が変換コンポーネント214から受け取ったデータを処理しているのと同時に、変換コンポーネント214がソースコンポーネント208から受け取ったデータを処理していて良く、一方で、ソースコンポーネント208はデータソースから受け取った新しいデータを並行して処理する。図2には単純な構成が示されるが、ソースコンポーネント208、変換コンポーネント214もしくは送り先コンポーネント220の追加のインスタンスをETLシステムに追加して、より複雑なシステムを構成することもできる。
いくつかの構成において、ソースコンポーネント、変換コンポーネントもしくは送り先コンポーネントが、他のコンポーネントの機能を実行しても良い。例えば、変換コンポーネントが、外部ソースからデータをインポートしてメモリ内のデータとの合成を行い、ソースコンポーネントと変換コンポーネントの組み合わせとして機能しても良い。別の例において、変換コンポーネントが外部の送り先にデータの書き込みを行っても良い。いくつかの構成において、ソースコンポーネント、変換コンポーネントもしくは送り先コンポーネントは、複数の入力もしくは複数の送り先を有することができる。これを使用して、例えば、入力を組み合わせること、もしくは入力を複数の出力に分割することができる。
図3は、図1のETL104などのETLを実装することができる一例のデータ統合システム300を例示するブロック図である。図3は、適切なシステム構成の単なる一例であり、本発明の使用もしくは機能性の範囲について何ら制限を示唆することは意図されない。従って、本明細書に記載される機構の範囲もしくは精神から逸脱することなく、種々のシステム構成を採用することができる。
システム300のコンポーネントは、1つまたは複数のコンピュータ装置間に分散させて良く、コンピュータ装置のそれぞれが他の装置との通信を、IP、TCP/IP、UDP、HTTP、SSL、TLS、FTP、SMTP、WAP、Bluetooth(登録商標)、WLANなどの1つまたは複数の種々の有線もしくは無線の通信プロトコルを採用することにより行うことができる。
コンピュータ装置は専用もしくは汎用のコンピュータ装置であって良い。コンピュータ装置の例には、メインフレーム、サーバ、ブレードサーバ、パーソナルコンピュータ、携帯型コンピュータ、通信装置、家庭用電化製品、等が含まれる。図9では、システム300もしくはその一部を実装するために使用することができるコンピュータ装置の一例の実施形態を例示する。
図3には、ユーザ302が点線で示され、ユーザ302がシステム300の一部ではないが、システムと対話することができることが示される。一実施形態において、ユーザ302はスキーマコントラクト304で1つまたは複数の制約をシステム300に与える。スキーマコントラクトには制約のセットを含んで良く、追加のデータを含むこともできる。制約はそれ自身が型の指定であって良い。いくつかの実施形態において、制約を汎用の型の指定とすることができる。例えば、文字列の制約では、種々の型もしくは長さを持つ文字列の型を受け入れることができる。整数の制約では、種々の整数の型を受け入れることができる。一実施形態において、スキーマコントラクトには、入力データ列を1つまたは複数のデータ統合コンポーネントで使用される仕様にマッチさせるためのデータのマッピングが含まれる。
データマッピングにより可変数の列を処理する方法を指定することができる。例えば、制約により、任意の型の1つまたは複数の列、もしくは任意の型のゼロもしくは1以上の列を指定することができる。別の例の制約により、文字列の1つまたは複数の列を指定することができる。制約により、型の制約およびデフォルト値と共に、1つのオプション列を指定することができる。オプション入力列が省略される場合、デフォルトの値および型の制約をデータフローに挿入させることができる。
いくつかのデータマッピングにより、指定を提供して入力列とデータ統合コンポーネントにより処理される列との間のマッピングを可能にし、一方で、列の意味情報が保存される。例えば、マッピング機構では、名前で列を指定することができる。対応する列が、データ統合コンポーネントが想定するのとは、他の列に対して異なる位置にある場合、該列を列名指定によりマッピングすることができる。いくつかの実施形態において、名前指定は、ワイルドカードの文字もしくは入力列名をマッチさせるための他の機構を使用することなどにより法則化されて良い。例えば、制約により、「AB*」という名前の1つまたは複数の文字列の列を指定し、文字「AB」で始まる列にマッピングさせることができる。
一実装において、内部マップが物理的な列の参照と内部参照との間の対応を提供することができる。システムのコンポーネントが変更されても等価の列が提供される場合、マッピング機構により、各列の自動的な再マッピングが円滑にされる。一実施形態において、システムは、想定される列と実際の入力列との意味上の前後関係をユーザに提示し、ユーザが1つまたは複数の列に対する列マッピングを示すことを可能にする。図9は列マッピングの例を提供する。
スキーマコントラクト304での制約は、任意の数の形式に存在し、種々の方法で生成されて良い。一実施形態において、スキーマ処理部306が、図1の入力データソース102に対応する入力ソース322からメタデータ323を受け取る。入力ソース322およびメタデータ323は点線で示され、システム300の外部にあって良いが、システムへの入力として提供される。メタデータ323には、入力ソース322から受け取った実際の型のデータを含んで良い。スキーマ処理部306は、実際の型からの制約の指定を円滑にすることができる。一実施形態において、スキーマ処理部306は、各列の実際の型を示し、ユーザ302が実際の型をスキーマコントラクト304での制約の型と置き換えることを可能にすることができる。
一実施形態において、スキーマ処理部306は、メタデータ323から派生しかつシステムに有効であろう制約を判定する処理を実行して良い。スキーマ処理部306は、例えば、下流のコンポーネントの入力を検査し、実際の型をより一般的な制約にし得ることを判定する。例えば、下流の入力では、長さが50の一般的文字列の列に対する指定を示すことができる。対応する実際の型は、長さが30のユニコード文字列を指定することができる。スキーマ処理部306は、実際の型が一般的文字列の制約に変更されて良いと判定することができる。スキーマ処理部306は、示された制約の型をユーザ302に対して提示し、示された型の受諾もしくは変更を円滑にすることができる。制約は、その特定性を変更することができる。制約の例には、長さ50の文字列、文字列、任意の仮数部の数、任意の型、オプション列、もしくは1つまたは複数の列、がある。
一実施形態において、スキーマ処理部306は、スキーマコントラクト304での制約を分析して、下流のコンポーネントの入力もしくは出力のインターフェースに基づき、制約が有効であるかどうかを判定することができる。一実施形態において、各データ統合コンポーネントは、入力の制約指定を用いて構成されて良い。一実施形態において、データ統合コンポーネントの入力制約指定が、データフロー用の対応する制約を受け入れることが可能であるかどうかを判定することにより、検証が実行されて良い。例えば、下流のコンポーネントがデータフロー用の入力として整数型を指定する場合、数値型の制約の型は無効とみなされる場合がある。一実施形態において、ETLの各データ統合コンポーネントは、スキーマ処理部306がその入力もしくは出力のインターフェースにクエリを行うことを可能にするインターフェースを実装しても良い。一実施形態において、コンポーネントインターフェースは、1つまたは複数の対応する入力データ型に基づき出力されるデータ型を提供することができる。出力データ型は、下流のデータ統合コンポーネントの後に続くクエリにおいて使用されて良い。この情報を使用して、スキーマコントラクト304での制約のそれぞれの型を検証することができる。
一実施形態において、スキーマ処理部306は、警告メッセージもしくはエラーメッセージをユーザ302に与えて、無効の型もしくは無効の可能性のある型の指定を示すことができる。従って、ユーザ302により任意の数の反復が行われてスキーマコントラクト304での制約が作成される。
例示の実施形態において、スキーマ処理部306は、スキーマコントラクト304をパッケージ308に変換することができる。一実施形態において、パッケージ308は、拡張マークアップ言語(XML)ファイルとすることができるが、種々の他のフォーマットを使用しても良い。一実施形態において、パッケージ308はオブジェクトモデルの形態を成して良い。一実施形態において、第1のフォーマットにはXMLなどを使用して良く、これは次にオブジェクトモデルなどの第2のフォーマットに変換される。
パッケージには、制御フロー指定および1つまたは複数のデータフロー指定を含むことができる。制御フローの要素には、構造を提供する1つまたは複数のコンテナ、機能性を提供するタスク、コンテナとタスクを連結して順序付けされた制御フローを作成する優先順位制約が含まれて良い。制御フロータスクは、データを抽出し、変換を適用し、データをロードする、データフローを定義かつ実行することできる。
図示されるように、一例のシステム300において、パッケージ308は別のソースから受け取られて良い。例えば、XMLファイルは、スキーマ処理部306による円滑化なしで、別の処理により生成されシステム300に提供されても良い。いくつかの実装では、パッケージ308を内部もしくは外部の処理から受け取ることが許可されて良い。
一実施形態において、パッケージ処理部310は、パッケージ308を受け取り、ランタイム時の使用のための形式に変換することができる。パッケージ処理部310は、パッケージ308内に含まれるスキーマに対してデザイン検証を行うことができる。一実装において、この検証は、スキーマ処理部306により行われるデザイン検証に略類似して良い。いくつかの構成において、スキーマ処理部306のデザイン検証は、パッケージ308が別のソースから受け取られるような構成では省略されても良い。従って、パッケージ処理部310のデザイン検証は、いくつかの検証を繰り返しても良いし、もしくは、前回行われなかった検証を実行しても良い。なお、スキーマ処理部306およびパッケージ処理部310は、本検討のために別個のコンポーネントとして例示されるが、1つまたは複数のコンポーネントに少なくとも部分的に組み合わせられて実装されるものがあっても良い。
一実施形態において,パッケージ処理部310がパッケージ308の実行を開始することができる。これには、ワークフローとは別の1つまたは複数のタスクの実行が含まれて良い。例えば、パッケージ308に対応するタスクには、1つまたは複数の電子メールもしくは他のメッセージを指定された受信者に送信すること、1つまたは複数のファイルをFTPもしくは別のプロトコルを介して転送すること、指定スクリプトの実行、もしくは、他の動作が含まれて良い。一実装において、パッケージ処理部310はワークフロー処理を開始することができる。ワークフロー処理には制約コンパイラ312の実行が含まれて良い。
一実施形態において、制約コンパイラ312は、パッケージ308内で指定された制約を受け取り、入力ソース322から受け取られるメタデータ323に基づき、該制約を実際の列型314に変換する。メタデータ323には、対応するデータの実際の型が含まれて良い。一実装において、制約コンパイラ312は、パッケージ308において指定された列の制約のランタイム検証を実行することができ、種々のデータ統合コンポーネントが対応する型を処理するべく構成されるかどうかを判定する。制約が有効である場合、制約コンパイラ312は、メタデータ323およびパッケージ308に基づき実際の列型314を生成することができる。一実装において、実際の列型314はパッケージ308内に含まれて良いが、いくつかの実装においてはパッケージ308とは別個であって良い。
一例として、変換コンポーネント214等のデータ統合コンポーネントは、ユニコード文字列30という実際の型指定を有する第1の列と、ユニコード文字列40という実際の型指定を有する第2の列とを含むデータフローを受け取ることができる。変換コンポーネント214は、文字列入力を指定する制約を有することができる。システムでは、変換コンポーネントが、2つの列を連結する操作に基づく、ユニコード文字列70という出力型指定を有することが判定されてよい。
実際の列型314には、入力ソース322から受け取られる各入力型の型指定が含まれる。一実施形態において、制約コンパイラ312は各データ統合コンポーネントに対する各入力列の実際の列型を判定して良く、かつ、この情報を実際の列型314内に含んで良い。従って、外部列206、入力インターフェース212、もしくは入力インターフェース218に対応する入力列指定が、判定されかつ含有されて良い。
第1の入力ソース322に基づく本明細書に記載されるようなシステムにより作成されるパッケージ308を使用して、第2の入力ソース322を処理することができることに留意されたい。第2の入力ソース322は、第1の入力ソース322とは異なる型を有する列を有しても良い。第2の入力ソース322を実行する時、実際の列型314は同一のものでも、第1の入力ソース322を処理する際に生成される実際の列型とは異なるものでも良い。
一実施形態において、計画生成部316は、実際の列型314を含むパッケージ308を受け取ること、かつ、パッケージ308および実際の列型314に基づく実行計画318を生成することができる。実行計画318には、テーブルサイズ、割り当てられるメモリブロック、採用するスレッドの数とスレッド間の関係、呼び出す処理と処理のタイミング、ワークフローの1つまたは複数のグラフ、もしくは他のそのようなデータ、の指定が含有されて良い。実行計画318は、ワークフロー実行のための青写真として機能することができる。実行計画318は、任意の1つまたは複数のデータ統合コンポーネントにより使用されて良い。一実装において、実行計画318は入力ソース322からデータを受け取る前に生成される。実行計画318はワークフローの実行中、固定のままとして良い。実行計画を固定にすることにより、性能を向上させ、リソース使用を低減させ、もしくは他の利益を与える操作効率が得られる。
一実施形態において、パイプライン実行部320は、実行計画318を受け取り、かつメモリ326、スレッド328、データ構造、オブジェクト、などのソースを割り当てることができる。パイプライン実行部320は、ソースコンポーネント208、変換コンポーネント214、もしくは送り先コンポーネント220等の種々のコンポーネントによるワークフローの実行を開始もしくは管理することができる。出力324はパイプライの実行により作成されて良い。出力324にはデータ出力106が含まれて良い。出力324には、ステータスデータ、メッセージなど、ユーザに対して提示されるデータもが含まれて良い。一実施形態において、各データ統合コンポーネントは本明細書において記載される機構を円滑にするインターフェースを実装する。具体的には、データ統合コンポーネントは、実行用の実際の型の1つまたは複数の列を指定する方法の呼び出しを受けて良い。出力列に対する変更を追跡して下流のコンポーネントへ伝播させても良い。
図4は、データ統合システムにおいてスキーマコントラクトを円滑にするための処理400の一例の実施形態を例示するフロー図である。一実施形態において、処理400の動作の内少なくともいくつかが、図3のシステム300のコンポーネントにより実行される。
処理400の内の例示される部分は、ブロック402にて開始させることができ、ここでパッケージが生成される。パッケージには1つまたは複数の柔軟性のある制約もしくはマッピングデータが含まれる。パッケージ308は、そのようなパッケージの一例である。ブロック402の動作は、図5とそれに関連する考察においてにさらに詳細に例示され考察される。処理はループ404に向かって流れ、ループ404では入力ソースの各セットと対応する実行が繰り返される。本明細書で検討されるように、本明細書において記載される機構によって生成されるパッケージは、1つまたは複数の異なる列型を含む異なるメタデータを有する1つまたは複数のセットの入力ソースと共に再使用されて良い。ループ404の各繰り返しは、データ統合の実行および対応する入力ソースのセットに相当する。例示される実施形態では、ループ404はブロック406−408を含み、ブロック410で終了する。
処理はブロック406に進んで良く、入力データソースの新しいセットを取り出す。処理はブロック408に進んで良く、現在のパッケージを実行する。図6では、パッケージを実行するための処理の一例の実施形態を例示する。
処理はブロック410に進み、システム構成もしくはユーザによる動作の制御に基づき、選択的にループ404の別の繰り返しを実行することができる。ループ404を出ると、処理は完了ブロック412に進み、終了しても呼び出しプログラムに戻っても良い。
図5は、制約指定もしくはマッピングデータを含む、図3のパッケージ308などのパッケージを生成するための処理500の一例の実施形態を例示するフロー図である。処理500もしくはその変形は、図4のブロック402の動作の内の少なくともいくつかを実行することができる。処理500の例示される部分はブロック502にて開始されて良く、システムがスキーマコントラクトの生成を円滑にする。本明細書で検討されるように、スキーマ処理部306などのシステムコンポーネントは、入力ソースからメタデータを取り出す動作、メタデータを分析する動作、および、ユーザが実際のスキーマを制約のセットに変換することを可能にする動作などを実行することができる。これには、少なくともいくつかの型指定を、対応する制約指定に自動的に修正することが含まれる。このことには指定をユーザに対して提示すること、および指定を修正するコマンドを受け取ること、が含まれて良い。
処理はブロック504に進んで良く、スキーマコントラクトと、ソースコンポーネント208、変換コンポーネント214および送り先コンポーネント220などのデータ統合システムコンポーネントの構造とに基づき、デザイン検証を実行し得る。処理はブロック506に進んで良く、デザイン検証に基づき、警告もしくはエラーメッセージを選択的に発行する。
矢印507で例示されるように、いくつかの実施形態において、処理はブロック502に戻って、制約生成の円滑化を追加的に実行して良い。ブロック502、504および506は、繰り返し処理の一部とすることができ、ユーザが1つまたは複数の制約もしくはマッピングデータを生成および修正する。
処理はブロック506からブロック508に進んで良く、データフロー指定をパッケージに保存する。データフロー指定には1つまたは複数の制約指定もしくはマッピングデータが含まれる。処理は完了ブロック510に進み、終了もしくは処理400などの呼び出しプログラムに戻っても良い。
図6は、制約指定もしくはマッピングデータを含むパッケージを実行するための処理600の一例の実施形態を例示するフロー図である。処理600もしくはその変形は、図4のブロック408の動作の内の少なくともいくつかを実行することができる。処理600の例示される部分はブロック602にて開始されて良く、パッケージの実行を開始し得る。これには、スクリプト等の実行など、パッケージ内に指定されるような種々の動作の開始が含まれる。処理はブロック604に進んで良く、パッケージのデザイン検証を実行し得る。図6には示さないが、一実施形態において、エラーが見つかった場合、処理は終了してもユーザにコマンドの入力を促しても良い。
処理はループ606に進んで良く、ループ606ではパッケージ内で指定される各データフローが繰り返される。パッケージには、1つまたは複数のデータフロー指定が含まれて良い。一部のデータフローの実行は、構成およびシステム能力に依存して、並行して実行され得る。また、あるデータフローは、他のデータフローに依存して順次実行され得る。さらにまた、あるデータフローについて、同時実行と順次実行との組み合わせもあり得る。ループ606は順次ループとして示されるが、ループ606の複数の繰り返しが少なくとも部分的に並行して実行されて良いことを理解されたい。各繰り返しにおいて、対応するデータフローが現在のデータフローとして参照される。
処理はブロック608に進んで良く、現在のデータフローを実行し得る。図7は、データフローを実行するための処理の一例の実施形態を例示する。処理はブロック610に進み、システム構成もしくはユーザによる動作の制御に基づき、選択的にループ606の別の繰り返しを実行することができる。ループ606を出ると、処理は完了ブロック612に進み、終了もしくは処理500などの呼び出しプログラムに戻っても良い。
図7は、データフローを実行するための処理700の一例の実施形態を例示するフロー図である。処理700もしくはその変形は、図6のブロック608の動作の内の少なくともいくつかを実行することができる。一実施形態において、処理700の動作の少なくとも一部は、図3のパイプライン実行部320に実行もしくは管理されて良い。処理700の例示される部分はブロック702にて開始されて良く、図3のメタデータ323などの外部のメタデータを、入力ソース322などのデータソースから取り出す。このメタデータには、データソースからの各列内のデータの実際の型が含まれて良い。
処理はブロック704に進んで良く、現在のデータフローに対応する実際の型が検証され、実際のデータ型が生成される。一実施形態において、実際の型のランタイム検証を実行する処理は、各入力型を検証し対応する出力型を指定するデータフローを受け取る各データ統合コンポーネントに、クエリを行って良い。そして、対応する出力型が、次の下流のデータ統合コンポーネントへの入力として提供されて良い。検証が成功した場合、ブロック704の動作では、各データ統合コンポーネントの入力用の実際の列型を生成することができる。従って、実際の列型は、メタデータもしくはコンポーネントクエリ処理からの応答に基づき判定されて良い。図8では、ランタイム時のデータフローの検証および実際の列型の生成の一例の処理を例示する。
処理はブロック708に進み、実際の列型に基づき実行計画を生成する。いくつかの実施形態において、実行計画では、割り当てられるメモリブロックのサイズ、操作の順番、配置する実行スレッドの数、実行スレッド間の処理の分散、割り当てられるまたは割り当てが解除される他のリソース、もしくはデータフロー実行の一部として実行される他の動作、を指定することができる。実行計画は、後続する実行のための青写真として機能する。一実施形態において、実際の列型の生成および実行計画の生成を含むブロック704および708の動作は、対応するデータフローのデータを受け取る前に実行される。
処理はブロック710に進んで良く、データフローの実行が行われる。これには入力データソースからのデータの検索、メモリの割り当て、スレッド、もしくは他のリソース、種々の処理のスケジューリングと実行など、が含まれてもよい。処理は完了ブロック712に進み、終了もしくは処理600などの呼び出しプログラムに戻っても良い。
図8は、ランタイム時の実際のデータ型の生成と検証を実行する一例の処理800を例示するフロー図である。処理800もしくはその変形は、図7のブロック704の動作の内の少なくともいくつかを実行することができる。処理800の例示される部分はブロック802にて開始されて良く、データフローのレイアウトを取り出す。データフローのレイアウトでは、データフローを構成するコンポーネントの順番、に加えて他の情報を指定することができる。
処理はブロック804に進んで良く、現在の入力ソースに対応する実際のデータ型を取り出す。これらデータ型は、例えば、図3のメタデータ323の一部として受け取られて良い。処理はループ806に進んで良く、データフローの各データ統合コンポーネントがデータフローの順番でループされる。ループ806は、ブロック808−812を含み、ブロック814により終了される。各繰り返しのデータ統合コンポーネントが現在のコンポーネントとして参照される。繰り返しの順番および現在のコンポーネントは、ブロック802にて取り出されるデータフローのレイアウトに基づくもので良い。
処理はブロック808に進んで良く、1つまたは複数の入力型が現在のコンポーネントに提供される。例えば、現在のコンポーネントが2つのデータ列を受け取ると、システムは、コンポーネントに各データ列の実際のデータ型を提供することができる。処理はブロック810に進んで良く、現在のコンポーネントが、実際の入力データ型をその構成に基づき検証することができる。コンポーネントが入力データ型を正確に処理できない場合、コンポーネントは無効のステータスを返す。図示されないが、いくつかの実装において、無効のステータスが返される場合、ループ806を終了して処理を終了させて良い。
処理はブロック812に進んで良く、1つまたは複数の出力データ型を現在のコンポーネントから取り出し得る。現在のコンポーネントは、入力型に基づく任意の出力型を判定し、これらの出力型を返すことができる。本明細書で検討されるように、出力列の数は入力列の数と異なって良い。返された出力型は、ループ806の後続の繰り返しにおける入力型として提供されて良く、ループ806には、1つまたは複数のこれらの出力型を入力型として受け取る後続のコンポーネントを有する。
一実装において、データフローの各データ統合コンポーネントは、1つまたは複数の入力型を受け取り1つまたは複数の出力型に加えて検証ステータスを返す方法を含むインターフェースを実装して良い。従って、ブロック808、810および812の動作では、いくつかの実装においてこのインターフェースを採用することができる。種々の実装において、他のインターフェースもしくは機構を使用して、ブロック808−812の動作を実行すること、および、データ統合コンポーネントとパイプライン実行部320との間の対話を制御することができる。
処理はブロック814に進み、システム構成、各検証のステータス、もしくはユーザによる動作の制御に基づき、ループ806の別の繰り返しを選択的に実行して良い。ループ806は、データフローの各下流のコンポーネントで繰り返されて良い。ループ806が終了すると、処理は完了ブロック816に進み、処理700などの呼び出しプログラムに戻っても良い。
ランタイム検証の一例において、変換コンポーネントは、2つの入力文字列の列を受け取り、連結された文字列を出力するべく構成されて良い。連結された文字列の列の長さは入力列の長さに依存する。入力文字列の列のそれぞれは、指定された長さを持たない文字列型の制約を有することもできる。この変換コンポーネントから入力を受け取る送り先コンポーネントは、60文字を超えない文字列を受け取るべく指定されて良い。制約コンパイラ312によるランタイム検証は、第1の入力文字列が実際の長さ40を持ち、第2の入力文字列が実際の長さ15を持つ、ことを示すメタデータを受け取ることができる。変換コンポーネントは、入力型が有効であること、および出力列型が長さ55の文字列であることを示すことができる。下流のデータ統合コンポーネントに対する後続のクエリでは、入力列が長さ55の文字列型であることを示すことができる。
同じ例を用いて、同じ制約を使用する別のソース入力が、第1の入力文字列の列が長さ40であり、第2の入力文字列の列が長さ30であることを示すメタデータを提供する場合がある。変換コンポーネントは、結合された長さがその制限である60を超えているため、入力列の結合が無効であることを示し得る。ユーザはシステムを再構成しても良く、もしくは、所望の通りに修正を行っても良い。従って、デザイン型指定の柔軟性により、入力ソース型の変形が可能とされるが、その結果いくつかの構成に対してはランタイム時に無効となることもある。
図9Aおよび9Bでは、制約指定と物理的な入力ソースとの間のマッピング900の例が示される。これらの例では、本明細書において記載されるマッピングおよびコンパイル機構が例示される。
テーブル904は、例示のデータ統合コンポーネントに対する制約指定を示す。指定には、3つの列参照「入力1」「入力2」および「入力3」が含まれ、それぞれ整数型、文字列型、長さ100以上の文字列型、というデータ型の制約を有する。テーブル902は、入力データソースの3つの列に対する実際のデータ型を示す。3つの列「ID」「名前」および「記述」は、データ統合コンポーネントの列参照「入力1」「入力2」および「入力3」、にそれぞれマッピングされる。矢印930は一例のマッピングを示す。入力列のデータ型はデータ統合コンポーネントの制約に対して有効である。
テーブル906は、入力データソースの修正後の実際のデータ型を示す。修正は、入力データソースにおける変更、入力データソースとして異なるデータソースを使用すること、データフローにおける中間での変更、もしくは環境における別の変更、が要因となる。テーブル902と比較すると、テーブル906では、「カテゴリ」という追加の列が、「記述」という列の前の第3の位置に挿入されている。
テーブル908は、テーブル904と同一の制約指定を示す。矢印932は、テーブル908の列参照とテーブル906の列参照との間のマッピングを示す。図示されるように、列「入力3」は、テーブル902とテーブル904との間の元のマッピングと同様に、引き続き列「記述」にマッピングされる。本明細書で検討されるように、列名の使用、内部マップ、もしくはユーザからの指定などの、堅牢なマッピング機構では、入力データソース列の変更後に、システムが正確な列マッピングを維持することを可能とすることができる。
テーブル910は、入力データにおける別の変更を示す。テーブル902の入力データと比較すると、テーブル910の入力データには、テーブル906と同様に追加の列「カテゴリ」が含まれる。矢印934は、矢印932で例示されるのと同様に、元のマッピングが保持されることを示す。テーブル910にはさらに、列「名前」の実際の型における変更を示す。テーブル910において、データ型はVarChar型(40)であり、長さが40であることが示される。テーブル902において、「名前」のデータ型はVarChar型(30)である。従って、このフィールドのサイズは大きくなっている。テーブル912で図示されるように、データ統合コンポーネントの対応する列に対する制約は、「任意の文字列型」であり、VarChar型(30)の列を受け入れることができる。このように、制約の使用によって図示されるように、入力データ型における少なくともいくつかの変更が可能とされる。
図9Bでは、マッピング機構の別の例を示す。テーブル916に示すように、データ統合コンポーネントには、「入力1」「入力2」および「入力3」の列参照が含まれ、それぞれ整数型、文字列型、長さ100以上の文字列型というデータ型の制約を有する。列参照「入力4」は、デフォルト値がNULLの「任意の日付型」という対応する制約を有する。別の列参照「入力5」は対応する制約「*」を有する。
一実施形態において、制約では、列が選択的であり、従って入力ソースから省略されて良いことを指定することができる。制約では、デフォルト値を指定して、列が省略される構成で使用されるようにすることができる。テーブル916の「入力4」に対する制約はそのような指定の一例を提供することであるが、種々の実装でデフォルトの列もしくはデフォルト値を指定する他のフォーマットもしくは方法が使用されて良い。
一実施形態において、データ統合コンポーネントは、1つまたは複数の新しい列(本明細書においてプロトタイプ列と呼ばれる)を追加するための機構を提供することができる。一実装において、1つまたは複数のプロトタイプ列はアスタリスクで指定されるが、指定の機構は異なって良い。実際のデータ型を検証する時、およびデータフローをコンパイルする時、実際の型が挿入されることにより、実際の列のセットがプロトタイプ列に対応しても良く。矢印936で示されるように、図9Bの例において、プロトタイプ列「入力5」は列「カテゴリ」および「ジャスティフィケーション」にマッピングされる。
テーブル916は、テーブル912に示すように、入力データソースのデータ型に基づきテーブル914の制約をコンパイルした結果生成することができる実際の列型の一例を示す。一実装において、コンパイルは図3の制約コンパイラ312により実行もしくは制御されて良い。
図示されるように、テーブル914の各列の制約は、テーブル916内の実際のデータ型を持つ1つまたは複数の列を有する。列「入力1」はLONG型の実際のデータ型を持ち、列「入力2」はVarChar型(40)の実際のデータ型を持ち、列「入力3」はWVarChar型(120)の実際のデータ型を持つ。これらのデータ型のそれぞれが、テーブル912に示すような入力ソースからの対応するデータ型とマッチする。
指定された実際の列「入力4」は、テーブル914の制約で指定されるように、値がNULLのDateTime型の実際の型を持つ。この値は、入力データソースから対応する列が省略されたため、与えられる。入力データソースが対応する列を有する環境においては、列の値が入力として受け取られる。
「入力5」のプロトタイプ列の制約は2つの列指定に変換され、対応する入力列をマッチさせる。従って、「入力5a」が、テーブル912の「カテゴリ」列から受け取られたVarChar型(20)の実際の型を受け取り、「入力5b」が、「ジャスティフィケーション」列から受け取られたChar型(80)の実際の型を受け取る。
異なる入力ソースに基づくコンパイルされた実際の型のセットが大幅に変化し得ることに留意されたい。図3に示し本明細書で検討されるように、コンパイルされた列型を使用して、実行計画を生成し、各パイプラインを効率的な方法で実行することができる。
図10は、コンピュータ装置1000の一実施形態を示すブロック図であり、システム300を実装するため、もしくは処理400、500、600、700もしくは800を含む本明細書に記載される機能を実行するために使用することができるコンピュータ装置の内の選択されたコンポーネントが例示される。コンピュータ装置1000には、図示されるものよりも多くのコンポーネントが含まれて良く、もしくは、例示されるもの全てよりも少なく含まれても良い。コンピュータ装置1000は、スタンドアロンのコンピュータ装置、もしくは1つまたは複数のブレードを搭載する筺体内のブレードなどの統合システムの一部であって良い。
図示されるように、コンピュータ装置1000には1つまたは複数のプロセッサ1002が含まれ、該プロセッサは種々のコンピュータプログラムの命令を実行するための動作を行う。一構成において、各プロセッサ1002には、1つまたは複数の中央処理装置、1つまたは複数のプロセッサコア、1つまたは複数のASIC、キャッシュメモリ、もしくは他のハードウェア処理コンポーネントおよび関連するプログラム論理が含まれて良い。図示されるように、コンピュータ装置1000には、オペレーティングシステム1004が含まれる。オペレーティングシステム1004は、汎用もしくは専用のオペレーティングシステムとすることができる。ワシントン州レドモンドのマイクロソフト社によるWindows(登録商標)ファミリーのオペレーティングシステムは、コンピュータ装置1000上で実行可能なオペレーティングシステムの一例である。
メモリ・記憶装置1006には、様々な型の非一時的コンピュータ記憶媒体の内の1つまたは複数が含まれて良く、非一時的コンピュータ記憶媒体には、揮発性もしくは不揮発性のメモリ、RAM、ROM、ソリッドステートメモリ、ディスクドライブ、光記憶装置、もしくは、デジタル情報の記憶に使用可能な任意の他の媒体が含まれる。
メモリ・記憶装置1006には、本明細書に記載される1つまたは複数のコンポーネントもしくは他のコンポーネントが格納されて良い。一実施形態において、メモリ・記憶装置1006には、システム300のソフトウェアコンポーネントもしくはその一部が格納される。メモリ・記憶装置1006には、入力ソース322、メタデータ323もしくはその一部が記憶されて良い。これらのコンポーネントの内の任意の1つまたは複数が、RAM、不揮発性メモリ、もしくはRAMと不揮発性メモリとの間の異なる場所へ、オペレーティングシステム1004もしくは他のコンポーネントにより移動されて良い。
コンピュータ装置1000には、プログラムコードもしくは他の情報をユーザに対して表示することを円滑にする映像表示アダプタ1012が含まれて良い。図10には図示されないが、コンピュータ装置1000には、基本入出力システム(BIOS)および関連するコンポーネントが含まれて良い。コンピュータ装置1000にはまた、ネットワークとの通信を行うためのネットワークインターフェースユニット1010が含まれて良い。システム200もしくは300のソフトウェアコンポーネントは、一時的媒体およびネットワークインターフェースユニット1010を介して受け取られて良い。コンピュータ装置1000には、1つまたは複数の表示モニタ1014が含まれて良い。コンピュータ装置1000の実施形態には、キーボード、ポインティング装置、音声コンポーネント、マイク、音声認識コンポーネント、もしくは他の入力/出力機構などの1つまたは複数の入力装置1016が含まれて良い。
図4から8のフローチャート例示の各ブロック、およびフローチャート例示のブロックの組み合わせを、ソフトウェア命令により実装されることが可能であることは理解されるであろう。これらのプログラム命令が、マシンを形成するプロセッサに提供されることで、命令がプロセッサ上で実行されて、フローチャートブロック(単数または複数)内で指定される動作を実装するための手段が作成される。ソフトウェア命令はプロセッサにより実行されて、フローチャートブロック(単数または複数)内で指定される動作を実装するためのステップを提供することができる。加えて、フローチャート例示内の1つまたは複数のブロックもしくはブロックの組み合わせはまた、他のブロックもしくはブロックの組み合わせと同時に実行させることも、もしくは、本発明の範囲もしくは精神から逸脱することなく、例示されるものとは異なる順番で実行させることもできる。
上記の仕様、例およびデータは、本発明の構成の製造および使用に関する完結的な説明を提供する。本発明の多くの実施形態は本発明の精神および範囲から逸脱することなく行うことが可能であるので、本発明は以下に添付される請求項に帰する。

Claims (21)

  1. 入力ソースからの入力データ列の入力セットを出力データ列の出力セットに変換するコンピュータで実行される方法であって、
    a)前記入力セットに対応する1つまたは複数の制約から成るスキーマコントラクトを受け取るステップであって、前記スキーマコントラクトがプロトタイプ列の指定を含み、前記プロトタイプ列は可変数の出力データ列を指定する場所指定子で特定され、前記スキーマコントラクトは出力データ列の出力セットに少なくとも1つの新しい列のセットを追加するように構成されているステップと、
    b)前記入力データ列のセットを記述するメタデータを受け取るステップであって、前記メタデータが各入力データ列に対応する型定義を含む、ステップと、
    c)前記入力セットの1つまたは複数のデータフローを表すデータフロー構成データを受け取るステップと、
    d)前記データフロー構成データにより指定される各データフローを実行するステップと、
    e)各データフローのデータを受け取る前に、列型のセットを生成するステップであって、各列型が、前記メタデータおよび前記制約のセットに基づき、データフローに関連するそれぞれの入力データ列に対応する、ステップと
    を含むことを特徴とする方法。
  2. 前記スキーマコントラクトが、前記入力データ列の内の1つまたは複数の列と前記スキーマコントラクトの関連する制約との間のマッピングを記述するデータを含み、前記マッピングを採用して、入力データ列のそれぞれをデータ統合コンポーネントの入力指定にマッチさせるステップをさらに含むことを特徴とする請求項1に記載のコンピュータで実行される方法。
  3. インターフェースを採用して、入力列の型定義に基づき出力列の型定義について、1つまたは複数のデータ統合コンポーネントにクエリを行うステップをさらに含むことを特徴とする請求項1に記載のコンピュータで実行される方法。
  4. インターフェースを採用して、入力列の型定義に基づき出力列の型定義について、1つまたは複数のデータ統合コンポーネントの1つまたは複数のクエリを行うステップと、前記1つまたは複数のクエリに基づき前記スキーマコントラクトが有効であるかどうかを判定するステップと、をさらに含むことを特徴とする請求項1に記載のコンピュータで実行される方法。
  5. 前記列型のセットに基づき1つまたは複数のメモリブロックを割り当てるステップと、前記入力ソースからデータを受け取るステップと、前記入力ソースからのデータを前記1つまたは複数のメモリブロックに記憶するステップと、をさらに含むことを特徴とする請求項1に記載のコンピュータで実行される方法。
  6. a)別の入力ソースから入力データ列の別のセットを受け取るステップと、
    b)前記入力データ列の他のセットを記述する他のメタデータを受け取るステップであって、前記他のメタデータが前記入力データ列のセットに関連する対応する列の型定義とは異なる1つまたは複数の列の型定義を含む、ステップと、
    c)前記スキーマコントラクトに基づき、前記他の入力ソースに対応する列型の別のセットを生成するステップと
    をさらに含むことを特徴とする請求項1に記載のコンピュータで実行される方法。
  7. 前記スキーマコントラクトがオプション列と前記オプション列に対応するデフォルト値との指定を含み、前記方法が、前記オプション列がデータ列の入力セットから省略された場合に、前記デフォルト値に対応するデータを用いて列を生成するステップをさらに含むことを特徴とする請求項1に記載のコンピュータで実行される方法。
  8. 前記スキーマコントラクトが可変数の列を表すプロトタイプ列の指定を含み、
    前記方法が、
    a)前記プロトタイプ列に対応するデータ列の入力セットの1つまたは複数の列を判定するステップと、
    b)1つまたは複数の判定された列内の列の数を判定するステップと、
    c)前記判定された1つまたは複数の列を入力としてデータ統合コンポーネントに提供するステップと
    をさらに含むことを特徴とする請求項1に記載のコンピュータで実行される方法。
  9. a)前記スキーマコントラクトの1つまたは複数の制約のデザイン検証を行うステップと、
    b)各データフローを実行する前に、各入力データ列に対応する型定義のランタイム検証を行うステップと
    をさらに含むことを特徴とする請求項1に記載のコンピュータで実行される方法。
  10. 入力データから出力データへの変換を円滑にするためのコンピュータ・システムであって、
    a)1つまたは複数のデータ統合コンポーネントであって、各データ統合コンポーネントが、入力データ列を受け取るよう、および、前記入力データ列に基づき出力データ列を生成するよう構成される、データ統合コンポーネントと、
    b)1つまたは複数の制約および列マッピングデータを含むスキーマコントラクトを受け取るよう、および、前記スキーマコントラクトを検証するよう構成されるスキーマ処理部であって、前記スキーマコントラクトがプロトタイプ列の指定を含み、前記プロトタイプ列は可変数の出力データ列を指定する場所指定子で特定され、前記スキーマコントラクトは出力データ列の出力セットに少なくとも1つの新しい列のセットを追加するように構成されているスキーマ処理部と、
    c)前記1つまたは複数の制約を受け取るよう、データ列を記述するメタデータを入力ソースから受け取るよう、および、前記1つまたは複数のデータ統合コンポーネントにより使用するための実際の列型のセットを生成して前記入力データ列を変換するよう構成される制約コンパイラと
    を備え、
    前記システムは、第1のセットの入力データを変換し、および第2のセットの入力データを変換するためのスキーマコントラクトを採用するよう構成され、前記第1のセットの入力データおよび前記第2のセットの入力データはそれぞれが、他方の入力列型の指定とは異なる入力列型の指定のそれぞれのセットを有する
    ことを特徴とするコンピュータ・システム。
  11. 前記第1のセットの入力データが第1の数のデータ列を持ち、第2のセットの入力データが第1の数のデータ列とは異なる第2の数のデータ列を持つことを特徴とする請求項10に記載のコンピュータ・システム。
  12. 前記制約コンパイラが、列マッピングデータを採用して前記入力データ列を実際の列型のセットにマッチさせるよう構成されることを特徴とする請求項10に記載のコンピュータ・システム。
  13. 前記制約コンパイラが前記スキーマコントラクトを検証する手段を備えることを特徴とする請求項10に記載のコンピュータ・システム。
  14. 前記制約コンパイラが、前記データ統合コンポーネントにクエリを行うことによりスキーマコントラクトを検証するよう構成されることを特徴とする請求項10に記載のコンピュータ・システム。
  15. 前記制約コンパイラが、
    a)前記プロトタイプ列に対応するデータ列の入力セットの1つまたは複数の列を判定し、
    b)1つまたは複数の判定された列内の列の数を判定し、
    c)前記判定された1つまたは複数の列を入力としてデータ統合コンポーネントに提供する、
    よう更に構成されることを特徴とする請求項10に記載のコンピュータ・システム。
  16. 入力データから出力データへの変換を円滑にするためのコンピュータプログラム命令を含むコンピュータプログラムであって、前記プログラム命令は1つまたは複数のプロセッサにより実行可能であり、
    a)1つまたは複数の列の制約のセットを受け取るステップと、
    b)入力列のセットを記述するメタデータを入力ソースから受け取るステップであって、前記入力列のセットは少なくとも1つのプロトタイプ列を含み、前記プロトタイプ列は可変数の出力データ列を指定する場所指定子で特定され、出力データ列の出力セットに少なくとも1つの新しい列のセットを追加するように構成されているステップと、
    c)前記メタデータを前記列の制約に基づき検証するステップと、
    d)前記メタデータを前記列の制約に基づき実際の列型のセットに変換するステップと
    e)前記実際の列型を1つまたは複数のデータ統合コンポーネントに提供して前記入力ソースから受け取ったデータの変換を円滑にするステップと
    を含む動作を実行する
    ことを特徴とするコンピュータプログラム。
  17. 列マッピングデータを受け取るステップと、前記メタデータを実際の列型のセットに変換するステップとをさらに含み、前記変換するステップが前記列マッピングデータに基づき前記入力列のセットのそれぞれを対応する実際の列型にマッピングするステップを含むことを特徴とする請求項16に記載のコンピュータプログラム。
  18. 前記1つまたは複数のデータ統合コンポーネントが別の入力ソースから受け取られた他のデータを変換することを可能にするステップをさらに含み、前記他のデータは前記入力列のセットとは型が異なる入力列の別のセットを有することを特徴とする請求項16に記載のコンピュータプログラム。
  19. 第1のデータ統合コンポーネントの出力データ型を前記メタデータに基づき判定するステップと、前記出力データ型と第2のデータ統合コンポーネントの入力データ型とに基づき、前記メタデータと前記制約のセットとの有効性を判定するステップとをさらに含むことを特徴とする請求項16に記載のコンピュータプログラム。
  20. 前記メタデータを前記列の制約に基づき実際の列型のセットに変換するステップが、
    a)前記プロトタイプ列に対応するデータ列の入力セットの1つまたは複数の列を判定し、
    b)1つまたは複数の判定された列内の列の数を判定し、
    c)前記判定された1つまたは複数の列を入力としてデータ統合コンポーネントに提供する、
    ことを更に含むことを特徴とする請求項16に記載のコンピュータプログラム。
  21. 請求項16〜20のいずれか一項に記載のコンピュータプログラムを記録したコンピュータ可読記憶媒体。
JP2013512257A 2010-05-27 2011-05-26 データ統合のためのスキーマコントラクト Expired - Fee Related JP5744187B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/788,310 2010-05-27
US12/788,310 US8799299B2 (en) 2010-05-27 2010-05-27 Schema contracts for data integration
PCT/US2011/038227 WO2011150271A2 (en) 2010-05-27 2011-05-26 Schema contracts for data integration

Publications (3)

Publication Number Publication Date
JP2013533995A JP2013533995A (ja) 2013-08-29
JP2013533995A5 JP2013533995A5 (ja) 2014-07-03
JP5744187B2 true JP5744187B2 (ja) 2015-07-01

Family

ID=45004839

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013512257A Expired - Fee Related JP5744187B2 (ja) 2010-05-27 2011-05-26 データ統合のためのスキーマコントラクト

Country Status (6)

Country Link
US (1) US8799299B2 (ja)
EP (1) EP2577519A4 (ja)
JP (1) JP5744187B2 (ja)
CN (1) CN102298607B (ja)
AU (1) AU2011258098B2 (ja)
WO (1) WO2011150271A2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5601066B2 (ja) * 2010-07-23 2014-10-08 富士通株式会社 情報統合プログラム、装置及び方法
US8484255B2 (en) * 2010-12-03 2013-07-09 Sap Ag Automatic conversion of multidimentional schema entities
US9053576B2 (en) * 2010-12-21 2015-06-09 International Business Machines Corporation Identifying reroutable data columns in an ETL process
US8930330B1 (en) * 2011-06-27 2015-01-06 Amazon Technologies, Inc. Validation of log formats
US8572122B2 (en) * 2011-12-29 2013-10-29 Sap Ag Data schema and language
US8583631B1 (en) * 2013-01-31 2013-11-12 Splunk Inc. Metadata tracking for a pipelined search language (data modeling for fields)
US9323793B2 (en) 2013-03-13 2016-04-26 International Business Machines Corporation Control data driven modifications and generation of new schema during runtime operations
US9892134B2 (en) 2013-03-13 2018-02-13 International Business Machines Corporation Output driven generation of a combined schema from a plurality of input data schemas
US9104707B1 (en) * 2013-03-14 2015-08-11 Amazon Technologies, Inc. Iterative generation of partial column schema
US9372913B2 (en) 2013-05-30 2016-06-21 ClearStory Data Inc. Apparatus and method for harmonizing data along inferred hierarchical dimensions
CN103336843B (zh) * 2013-07-18 2017-02-15 山东中创软件工程股份有限公司 一种数据集成方法及装置
CN104601358B (zh) * 2013-11-01 2019-01-04 中兴通讯股份有限公司 一种实现采集***与分析***间的匹配方法及装置
US9881032B2 (en) 2014-06-13 2018-01-30 Business Objects Software Limited Personal objects using data specification language
CN104361086A (zh) * 2014-11-14 2015-02-18 国电南瑞科技股份有限公司 一种计量资产全寿命周期管理***数据集成方法
US9916140B2 (en) 2015-03-23 2018-03-13 International Business Machines Corporation Method of generating end-to-end web application from tooling
CN105354616A (zh) * 2015-12-18 2016-02-24 国电南瑞科技股份有限公司 一种电力计量资产数据处理装置及其在线处理方法
EP3475884B1 (en) * 2016-08-22 2023-12-27 Oracle International Corporation System and method for automated mapping of data types for use with dataflow environments
US10650048B2 (en) * 2016-09-09 2020-05-12 Baidu Usa Llc Managing complex service dependencies in a data integration system
US10459774B2 (en) * 2016-10-31 2019-10-29 General Electric Company Self-aware and self-registering software and analytics platform components
US10481874B2 (en) * 2016-10-31 2019-11-19 General Electric Company System architecture for secure and rapid development, deployment and management of analytics and software systems
US10545984B2 (en) * 2017-05-23 2020-01-28 Sap Se Abstract default column type in tables
CN107451175B (zh) * 2017-05-23 2020-01-31 创新先进技术有限公司 一种基于区块链的数据处理方法及设备
US20190332697A1 (en) * 2018-04-26 2019-10-31 Hewlett-Packard Development Company, L.P. Database schema validations
US11232139B2 (en) 2018-06-29 2022-01-25 Lucid Software, Inc. Custom interactions with visualizations
US11870847B2 (en) * 2019-01-21 2024-01-09 EMC IP Holding Company LLC Decentralized data flow valuation and deployment
SG11202108731TA (en) 2019-02-22 2021-09-29 Lucid Software Inc Reversible data transforms
US11100173B2 (en) * 2019-06-18 2021-08-24 Lucid Software, Inc. Autolayout of visualizations based on graph data
US11263105B2 (en) 2019-11-26 2022-03-01 Lucid Software, Inc. Visualization tool for components within a cloud infrastructure
US11169671B2 (en) 2019-11-26 2021-11-09 Lucid Software, Inc. Alteration of a source data visualization based on user input

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263492B1 (en) 1997-06-06 2001-07-17 Microsoft Corporation Run time object layout model with object type that differs from the derived object type in the class structure at design time and the ability to store the optimized run time object layout model
US7885981B2 (en) * 2000-10-31 2011-02-08 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
US20030105732A1 (en) 2000-11-17 2003-06-05 Kagalwala Raxit A. Database schema for structure query language (SQL) server
JP2003099298A (ja) * 2001-09-21 2003-04-04 Nippon Telegr & Teleph Corp <Ntt> データ変換方法およびデータ変換装置
US7000238B2 (en) 2001-10-10 2006-02-14 Borland Software Corporation Development system providing extensible remoting architecture
JP2003177948A (ja) * 2001-12-07 2003-06-27 Fujitsu Ltd データの変換・流通を行うデータ管理機構
US20040003341A1 (en) * 2002-06-20 2004-01-01 Koninklijke Philips Electronics N.V. Method and apparatus for processing electronic forms for use with resource constrained devices
JP2004030221A (ja) * 2002-06-26 2004-01-29 Hitachi Ltd 変更対象テーブル自動検出方法
US20040083199A1 (en) * 2002-08-07 2004-04-29 Govindugari Diwakar R. Method and architecture for data transformation, normalization, profiling, cleansing and validation
US20040158567A1 (en) * 2003-02-12 2004-08-12 International Business Machines Corporation Constraint driven schema association
US7546226B1 (en) 2003-03-12 2009-06-09 Microsoft Corporation Architecture for automating analytical view of business applications
US20050102303A1 (en) * 2003-11-12 2005-05-12 International Business Machines Corporation Computer-implemented method, system and program product for mapping a user data schema to a mining model schema
US6976029B2 (en) * 2004-02-10 2005-12-13 Microsoft Corporation System and method for providing user defined types in a database system
JP4473026B2 (ja) * 2004-03-31 2010-06-02 三菱電機株式会社 データ交換計算機
US7805341B2 (en) * 2004-04-13 2010-09-28 Microsoft Corporation Extraction, transformation and loading designer module of a computerized financial system
US7581204B2 (en) 2004-06-01 2009-08-25 Sap Ag Dynamic contexts
US20050278653A1 (en) 2004-06-10 2005-12-15 Martin Scholz Automatic selection of user interface controls
US20060259456A1 (en) * 2005-05-10 2006-11-16 Alexander Falk System for describing text file formats in a flexible, reusable way to facilitate text file transformations
US7634515B2 (en) * 2005-05-13 2009-12-15 Microsoft Corporation Data model and schema evolution
US8275810B2 (en) * 2005-07-05 2012-09-25 Oracle International Corporation Making and using abstract XML representations of data dictionary metadata
US7849049B2 (en) * 2005-07-05 2010-12-07 Clarabridge, Inc. Schema and ETL tools for structured and unstructured data
US20070074155A1 (en) * 2005-09-23 2007-03-29 Business Objects, S.A. Apparatus and method for data profile based construction of an extraction, transform, load (etl) task
US7571175B2 (en) 2005-09-23 2009-08-04 Sap Ag Transformation directives in datatype definitions
US7509655B2 (en) 2006-08-30 2009-03-24 Microsoft Corporation Integration of workflow and rules
JP2008108144A (ja) * 2006-10-26 2008-05-08 Hitachi Ltd 情報処理方法、情報処理装置、およびプログラム
US7774301B2 (en) * 2006-12-21 2010-08-10 International Business Machines Corporation Use of federation services and transformation services to perform extract, transform, and load (ETL) of unstructured information and associated metadata
US8768978B2 (en) * 2007-07-30 2014-07-01 Hewlett-Packard Development Company, L.P. Single-operation on-line schema evolution
US8103704B2 (en) * 2007-07-31 2012-01-24 ePrentise, LLC Method for database consolidation and database separation
US20090043778A1 (en) 2007-08-08 2009-02-12 Microsoft Corporation Generating etl packages from template
US20090055439A1 (en) * 2007-08-24 2009-02-26 Ketera Technologies, Inc. Flexible Dimension Approach In A Data Warehouse
US20100017395A1 (en) * 2008-07-16 2010-01-21 Sapphire Information Systems Ltd. Apparatus and methods for transforming relational queries into multi-dimensional queries
US8180810B2 (en) * 2008-08-21 2012-05-15 International Business Machines Corporation Interactive generation of integrated schemas
US8209341B2 (en) * 2008-09-30 2012-06-26 International Business Machines Corporation Configurable transformation macro
US8700560B2 (en) * 2008-10-17 2014-04-15 Business Objects S.A. Populating a multi-relational enterprise social network with disparate source data
CN101477547B (zh) * 2009-01-20 2011-05-11 中国测绘科学研究院 一种基于规则的空间数据整合方法

Also Published As

Publication number Publication date
AU2011258098A1 (en) 2012-12-13
AU2011258098B2 (en) 2014-06-26
EP2577519A4 (en) 2016-06-15
US8799299B2 (en) 2014-08-05
CN102298607B (zh) 2016-08-17
US20110295865A1 (en) 2011-12-01
WO2011150271A3 (en) 2012-03-15
CN102298607A (zh) 2011-12-28
WO2011150271A2 (en) 2011-12-01
JP2013533995A (ja) 2013-08-29
EP2577519A2 (en) 2013-04-10

Similar Documents

Publication Publication Date Title
JP5744187B2 (ja) データ統合のためのスキーマコントラクト
US11106440B2 (en) Source code translation
US10521427B2 (en) Managing data queries
JP5197688B2 (ja) 統合環境生成器
US11593369B2 (en) Managing data queries
US9552335B2 (en) Expedited techniques for generating string manipulation programs
US7860863B2 (en) Optimization model for processing hierarchical data in stream systems
US9424003B1 (en) Schema-less system output object parser and code generator
US8140596B2 (en) System and method for the derivation and application of sub-iteration contexts in a transformation operation in a data integration system
CN104020994B (zh) 基于流***的流过程定义装置和流过程定义方法
US7941460B2 (en) Compilation model for processing hierarchical data in stream systems
US20190188049A1 (en) Apparatus and method to select services for executing a user program based on a code pattern included therein
US11514009B2 (en) Method and systems for mapping object oriented/functional languages to database languages
WO2015019504A1 (ja) 検証方法、検証装置および検証プログラム
US20110179397A1 (en) Systems and methods for metamodel transformation
US20110296373A1 (en) Command line shell command generation based on schema
CN114879978A (zh) 软件包依赖关系的处理方法、计算设备及可读存储介质
WO2011090032A1 (ja) 並列処理プログラム生成方法、並列処理プログラム生成プログラム、及び並列処理プログラム生成装置
US20120192011A1 (en) Data processing apparatus that performs test validation and computer-readable storage medium
CN116018581A (zh) 变换计算机程序的操作以供在数据库处执行
JP4120879B2 (ja) プログラム生成システム及び方法とそのプログラム
Wei et al. Efficient service variant analysis with Markov updates in Monte Carlo tree search (Short Paper)
JP2012221166A (ja) 計算機、分散並列処理プログラム生成方法、及び、プログラム

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130703

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130717

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140514

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150310

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150330

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150428

R150 Certificate of patent or registration of utility model

Ref document number: 5744187

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees