以下、本発明の実施の形態について、図を用いて説明する。
実施の形態1.
図1は、本実施の形態に係るデータ連携支援装置100の構成を示すブロック図である。
図1において、データ連携支援装置100は、複数のテーブルを有するデータベースのデータ連携を支援する装置である。データ連携支援装置100により支援されるデータ連携は、データベースの異なるインスタンス間のデータ連携であってもよいし、同じインスタンスの異なるスキーマ間のデータ連携であってもよいし、同じスキーマの異なるテーブル間のデータ連携であってもよい。
データ連携支援装置100は、情報記憶部101、テーブル選択部102、カラム特定部103、テーブル抽出部104、テーブル結合部105、推奨判断部106を備える。
図1には示していないが、データ連携支援装置100は、処理装置、記憶装置、入力装置、出力装置等のハードウェアを備える。ハードウェアはデータ連携支援装置100の各部によって利用される。例えば、処理装置は、データ連携支援装置100の各部でデータ又は情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置は、そのデータ又は情報を記憶するために利用される。入力装置は、そのデータ又は情報を入力するために利用される。出力装置は、そのデータ又は情報を出力するために利用される。
情報記憶部101は、連携元情報111、連携先情報112、参照関係情報113、入力情報114を、記憶装置を利用して記憶する。
連携元情報111は、データ連携の連携元となるデータベース(即ち、連携元データベース)の複数のテーブル(即ち、連携元テーブル)を定義する情報である。連携元情報111には、連携元データベースの主キー情報及び属性情報が含まれる。連携元データベースの主キー情報とは、複数の連携元テーブルのそれぞれに含まれる複数のカラムのそれぞれが主キーになっているかどうかを示す情報である。連携元データベースの属性情報とは、複数の連携元テーブルのそれぞれに含まれる複数のカラムのそれぞれに格納されるデータの属性(例えば、カラム名、データ型)を示す情報である。
連携先情報112は、データ連携の連携先となるデータベース(即ち、連携先データベース)の複数のテーブル(即ち、連携先テーブル)を、前述したデータ連携関係が既に与えられた範囲内で定義する情報である。1つの連携先テーブルの各カラムに格納するデータを、どのテーブル(即ち、連携元テーブル、他の連携先テーブル、あるいは、これらのテーブルの組み合わせ)のカラムから抽出すればよいかが既に決まっている場合、その連携先テーブルは、データ連携関係が既に与えられた連携先テーブルとなる。連携先情報112には、連携先データベースの主キー情報及び属性情報のうち、データ連携関係が既に与えられた連携先テーブルの主キー情報及び属性情報が含まれる。連携先データベースの主キー情報とは、複数の連携先テーブルのそれぞれに含まれる複数のカラムのそれぞれが主キーになっているかどうかを示す情報である。連携先データベースの属性情報とは、複数の連携先テーブルのそれぞれに含まれる複数のカラムのそれぞれに格納されるデータの属性(例えば、カラム名、データ型)を示す情報である。
参照関係情報113は、テーブル間の参照関係を示す情報である。本実施の形態では、テーブル間の参照整合性制約だけでなく、意味的な参照関係も「参照関係」とみなすものとする。2つのテーブルのうち一方のテーブルに含まれるカラムが他方のテーブルに含まれるカラムに対応しており、当該一方のテーブルのカラムが外部キーに設定されている場合、参照整合性制約があることになる。2つのテーブルのうち一方のテーブルに含まれるカラムが他方のテーブルに含まれるカラムに対応しているが、当該一方のテーブルのカラムが外部キーに設定されていない場合、意味的な参照関係があることになる。参照関係情報113は、任意の方法で作成することができる。
入力情報114は、クライアント装置200(例えば、パーソナルコンピュータ)のユーザにより手動で作成されるか、あるいは、クライアント装置200で実行されるクライアントプログラムにより自動的に作成される。入力情報114は、クライアント装置200から入力装置を介して入力される。入力情報114は、データ連携関係が未だ与えられていない連携先テーブル(即ち、目標テーブル)を定義する情報である。入力情報114には、目標テーブルの主キー情報及び属性情報が含まれる。
テーブル選択部102は、情報記憶部101に記憶された入力情報114を読み取る。テーブル選択部102は、読み取った入力情報114により定義された目標テーブルを選択する。本実施の形態では、目標テーブルに含まれる複数のカラムのうち、2つ以上のカラムが主キーになっているものとする。よって、テーブル選択部102は、連携元データベース及び連携先データベースの複数のテーブルから、主キーになっている2つ以上のカラムを含みデータ連携の連携先となる1つのテーブルを選択することになる。
カラム特定部103は、テーブル選択部102により読み取られた入力情報114に含まれる主キー情報に基づき、テーブル選択部102により選択された目標テーブルに含まれる複数のカラムから、主キーになっているカラム(即ち、前述した2つ以上のカラム)を特定する。
テーブル抽出部104は、情報記憶部101に記憶された連携元情報111と連携先情報112と参照関係情報113とを読み取る。テーブル抽出部104は、読み取った連携元情報111及び連携先情報112に含まれる主キー情報及び属性情報と、読み取った参照関係情報113とに基づき、連携元データベース及び連携先データベースの複数のテーブルのうちテーブル選択部102により選択された目標テーブル以外のテーブルから、以下の(1)及び(2)の条件を満たす2つ以上のテーブルの組み合わせを抽出する。
(1)当該2つ以上のテーブルが参照関係によって結ばれている。例えば、3つのテーブルのうち1つ目のテーブルが2つ目のテーブルを参照し、当該2つ目のテーブルが3つ目のテーブルを参照しているとき、当該3つのテーブルは参照関係によって結ばれていることになる。
(2)カラム特定部103により特定されたカラムと対応するカラムが当該2つ以上のテーブルに分かれて各テーブルの主キーとして存在する。例えば、2つのカラムがカラム特定部103により特定され、2つのテーブルの一方に、当該2つのカラムの一方と類似するカラムが主キーとして存在し、当該2つのテーブルの他方に、当該2つのカラムの他方と類似するカラムが主キーとして存在しているとき、当該2つのカラムと対応するカラムが当該2つのテーブルに分かれて各テーブルの主キーとして存在していることになる。
テーブル結合部105は、テーブル抽出部104により抽出された組み合わせに含まれるテーブルを結合して1つのテーブル(即ち、仮想テーブル)を作成する。
推奨判断部106は、テーブル選択部102により選択された目標テーブルとテーブル結合部105により作成された仮想テーブルとのスキーママッチングを行う。推奨判断部106は、そのスキーママッチングの結果に基づき、テーブル抽出部104により抽出された組み合わせを、テーブル選択部102により選択された目標テーブルのデータ連携に利用することを推奨すべきかどうか判断する。「推奨すべき」場合、推奨判断部106は、テーブル抽出部104により抽出された組み合わせを、テーブル選択部102により選択された目標テーブルのデータ連携に利用することを推奨する推奨情報161を、出力装置を介してクライアント装置200へ出力する。「推奨すべきでない」場合、推奨判断部106は、テーブル選択部102により選択された目標テーブルのデータ連携に利用できるテーブルがない旨、あるいは、テーブル抽出部104により抽出された組み合わせを、テーブル選択部102により選択された目標テーブルのデータ連携に利用することを推奨しない旨を示す情報を、出力装置を介してクライアント装置200へ出力する。
本実施の形態において、テーブル抽出部104により2つ以上の組み合わせが抽出された場合、テーブル結合部105は、テーブル抽出部104により抽出された組み合わせごとに、組み合わせに含まれるテーブルを結合して仮想テーブルを作成する。推奨判断部106は、テーブル抽出部104により抽出された組み合わせごとに、テーブル選択部102により選択された目標テーブルとテーブル結合部105により作成された仮想テーブルとのスキーママッチングを行う。推奨判断部106は、そのスキーママッチングの結果に基づき、テーブル抽出部104により抽出された組み合わせのうち1つの組み合わせを、テーブル選択部102により選択された目標テーブルのデータ連携に利用することを推奨する推奨情報161を出力する。
本実施の形態において、推奨判断部106は、テーブル抽出部104により抽出された組み合わせを、テーブル選択部102により選択された目標テーブルのデータ連携に利用することを推奨する場合、テーブル選択部102により選択された目標テーブルに含まれる複数のカラムから、テーブル結合部105により作成された仮想テーブルに、対応するカラムが存在しないカラムを抽出する。推奨判断部106は、そのようなカラムを抽出した場合、連携元データベース及び連携先データベースの複数のテーブルのうちテーブル選択部102により選択された目標テーブル以外のテーブルから、抽出したカラムと対応するカラムを含み、テーブル結合部105により作成された仮想テーブルに結合可能なテーブルを検出する。具体的には、推奨判断部106は、情報記憶部101に記憶された連携元情報111と連携先情報112とを読み取る。推奨判断部106は、読み取った連携元情報111及び連携先情報112に含まれる主キー情報及び属性情報に基づき、連携元データベース及び連携先データベースの複数のテーブルのうちテーブル選択部102により選択された目標テーブル以外のテーブルから、抽出したカラムと対応するカラムを含むテーブルを検出する。推奨判断部106は、そのようなテーブルを検出した場合、検出したテーブルとテーブル結合部105により作成された仮想テーブルとが結合できるかどうか判断する。「結合できる」場合、推奨判断部106は、検出したテーブルを、テーブル抽出部104により抽出された組み合わせに追加した上で、推奨情報161を出力する。「結合できない」場合、推奨判断部106は、検出したテーブルを無視して、推奨情報161を出力する。即ち、推奨判断部106は、抽出したカラムと対応するカラムを含み、テーブル結合部105により作成された仮想テーブルに結合可能なテーブルを検出した場合、検出したテーブルとテーブル抽出部104により抽出されたテーブルとの組み合わせを、テーブル選択部102により選択された目標テーブルのデータ連携に利用することを推奨する推奨情報161を出力する。
本実施の形態において、推奨判断部106のスキーママッチングを行う部分には、従来のスキーママッチング技術を実装することができる。
前述したように、本実施の形態では、入力情報114により定義された目標テーブルに含まれる複数のカラムのうち、2つ以上のカラムが主キーになっている。目標テーブルに含まれる複数のカラムのうち、1つのカラムのみが主キーになっている場合、その目標テーブルについては、任意の方法を用いてデータ連携関係を抽出することができる。
以下では、データ連携支援装置100の動作(即ち、本実施の形態に係るデータ連携支援方法)の例を説明する。
図2は、入力情報114の例を示す表である。
図2において、入力情報114には、カラム名、データ型、主/外部キーの情報(即ち、属性情報及び主キー情報)が含まれる。前述したように、入力情報114は、目標テーブルを定義する情報である。例えば、入力情報114では、目標テーブルの「会社コード」、「注文詳細ID」、「注文ID」カラムが主キーであることが示されている。
図2に示した入力情報114がクライアント装置200によって入力され、情報記憶部101に記憶されると、テーブル選択部102は、その入力情報114を読み取る。テーブル選択部102は、読み取った入力情報114により定義された目標テーブルを選択する。
図3は、入力情報114と参照関係情報113とが合成された情報の例を示す表である。
図3において、入力情報114に含まれる主/外部キーの情報は、目標テーブルの参照関係情報113でもある。前述したように、参照関係情報113は、テーブル間の参照関係を示す情報である。例えば、参照関係情報113では、目標テーブルの主キーである「会社コード」、「注文詳細ID」、「注文ID」カラムが外部キーでもあることが示されている。参照関係情報113では、「店舗ID」、「商品コード」、「ブランドID」カラムも外部キーであることが示されている。
図3で黒塗りされている項目は、外部キーの参照先のテーブルに、対応するカラムが存在するカラムである。例えば、「店舗ID」カラムの参照先のテーブルには、「店舗名」、「店舗住所」、「店長_社員ID」、「店長名」カラムに対応するカラムが存在する。
参照関係情報113は、前述したように、任意の方法で作成することができる。例えば、カラム特定部103に、参照関係情報113を作成する機能を実装することができる。その場合、カラム特定部103は、図2に示した入力情報114に基づき、テーブル選択部102により選択された目標テーブルに含まれる複数のカラムのそれぞれについて、他のテーブルのカラムを参照できるかどうか判断する。例えば、カラム特定部103は、目標テーブルと他のテーブルとのスキーママッチングを行う。スキーママッチングの結果、「店舗ID」カラムと対応するカラムを主キーとして含み、かつ、「店舗名」、「店舗住所」、「店長_社員ID」、「店長名」カラムと対応するカラムを非主キーとして含むテーブルが抽出されると、カラム特定部103は、「店舗ID」、「店舗名」、「店舗住所」、「店長_社員ID」、「店長名」カラムについて、参照関係情報113を作成又は更新する。参照関係情報113では、「店舗ID」カラムが外部キーに設定される。参照関係情報113では、「店舗名」、「店舗住所」、「店長_社員ID」、「店長名」カラムが「店舗ID」カラムに紐付けられる。
図4は、データ連携支援装置100の動作の例を示すフローチャートである。図5は、連携元情報111と参照関係情報113とが合成された情報と、後述する暫定仮想テーブル情報301との例を示す表である。
ステップS11において、カラム特定部103は、入力情報114に含まれる主/外部キーの情報(即ち、目標テーブルの主キー情報)を参照する。カラム特定部103は、参照した情報に基づき、テーブル選択部102により選択された目標テーブルの主キーになっているカラムを特定する。カラム特定部103は、特定したカラムの一覧を示すキー項目情報302を生成する。
例えば、カラム特定部103は、図3に示した入力情報114に含まれる主/外部キーの情報から、図5に示すようなキー項目情報302を生成する。キー項目情報302では、目標テーブルの「会社コード」、「注文詳細ID」、「注文ID」カラムが主キーであることが示されている。
ステップS12において、テーブル抽出部104は、情報記憶部101から連携元情報111と連携先情報112と参照関係情報113とを取得する。また、テーブル抽出部104は、カラム特定部103からキー項目情報302を取得する。
例えば、テーブル抽出部104は、図5に示すような連携元情報111と参照関係情報113とが合成された情報を取得する。連携元情報111は、図3に示した入力情報114と同様の形式で、各連携元テーブルを定義する情報である。参照関係情報113は、図3に示した参照関係情報113と同様の形式で、テーブル間の参照関係を示す情報である。注文テーブルの連携元情報111では、注文テーブルの「注文ID」カラムが主キーであることが示されている。注文テーブルの参照関係情報113では、注文テーブルの「会社コード」カラムが外部キーであることが示されている。注文テーブルの参照関係情報113には、注文テーブルの「会社コード」カラムが会社テーブルの「会社コード」カラムを参照することを示す参照関係レコード303が含まれている。会社テーブルの連携元情報111では、会社テーブルの「会社コード」カラムが主キーであることが示されている。会社テーブルの参照関係情報113では、会社テーブルに外部キーがないことが示されている。注文詳細テーブルの連携元情報111では、注文詳細テーブルの「注文詳細ID」、「注文ID」カラムが主キーであることが示されている。注文詳細テーブルの参照関係情報113では、注文詳細テーブルの「注文ID」、「店舗ID」カラムが外部キーであることが示されている。注文詳細テーブルの参照関係情報113には、注文詳細テーブルの「注文ID」カラムが注文テーブルの「注文ID」カラムを参照することを示す参照関係レコード304が含まれている。
ステップS13において、テーブル抽出部104は、ステップS12で取得した連携元情報111と連携先情報112とキー項目情報302とを参照して、目標テーブルの主キーになっているカラムの全て又は一部と対応するカラムが含まれるテーブルを選択する。テーブル抽出部104は、選択したテーブルを現時点の仮想テーブルとみなす。
例えば、テーブル抽出部104は、キー項目情報302で示されている「注文ID」カラムと、注文テーブルの連携元情報111で示されている「注文ID」カラムとが類似すると判定し、注文テーブルを選択する。テーブル抽出部104は、注文テーブルを現時点の仮想テーブルとみなす。この例では、注文テーブルは、連携元テーブルの1つであるが、目標テーブルとは異なる連携先テーブルの1つであってもよい。
ステップS14において、テーブル抽出部104は、ステップS12で取得した連携元情報111と連携先情報112とキー項目情報302とを参照して、目標テーブルの主キーになっているカラムのうち、現時点の仮想テーブルに含まれていないカラムがあるかどうか判定する。テーブル抽出部104は、現時点の仮想テーブルに含まれていないカラムがあれば、ステップS15に進む。テーブル抽出部104は、目標テーブルの主キーになっているカラムの全てが現時点の仮想テーブルに含まれていれば、ステップS17に進む。
例えば、テーブル抽出部104は、キー項目情報302で示されている「会社コード」、「注文詳細ID」カラムが現時点の仮想テーブルに含まれていないと判定する。
ステップS15において、テーブル抽出部104は、ステップS12で取得した連携元情報111と連携先情報112と参照関係情報113とキー項目情報302とを参照して、ステップS13で選択したテーブルと直接あるいは間接的に(即ち、他の選択済のテーブルを介して)参照関係によって結ばれており、かつ、現時点の仮想テーブルに含まれていないカラムと対応するカラムが含まれるテーブルがあるかどうか判定する。テーブル抽出部104は、そのようなテーブルがあれば、そのテーブルを選択し、ステップS16に進む。テーブル抽出部104は、そのようなテーブルがなければ、現時点の仮想テーブルをキャンセルして、ステップS18に進む。
例えば、テーブル抽出部104は、参照関係レコード303で注文テーブルの参照先として示されている会社テーブルの連携元情報111を参照する。テーブル抽出部104は、キー項目情報302で示されている「会社コード」カラムと、会社テーブルの連携元情報111で示されている「会社コード」カラムとが類似すると判定し、会社テーブルを選択する。この例では、会社テーブルは、連携元テーブルの1つであるが、目標テーブルとは異なる連携先テーブルの1つであってもよい。
ステップS16において、テーブル結合部105は、現時点の仮想テーブルとステップS15で選択されたテーブルとを結合して1つのテーブルを作成する。テーブル結合部105は、作成したテーブルを現時点の仮想テーブルとみなし(即ち、現時点の仮想テーブルを更新し)、ステップS14に戻る。
例えば、テーブル結合部105は、注文テーブルである現時点の仮想テーブルと会社テーブルとを結合して、新たに現時点の仮想テーブルを作成する。その後のステップS14において、テーブル抽出部104は、キー項目情報302で示されている「注文詳細ID」カラムが現時点の仮想テーブルに含まれていないと判定する。ステップS15において、テーブル抽出部104は、参照関係レコード304で注文テーブルの参照元として示されている注文詳細テーブルの連携元情報111を参照する。テーブル抽出部104は、キー項目情報302で示されている「注文詳細ID」カラムと、注文詳細テーブルの連携元情報111で示されている「注文詳細ID」カラムとが類似すると判定し、注文詳細テーブルを選択する。ステップS16において、テーブル結合部105は、注文テーブルと会社テーブルとを結合して得られた現時点の仮想テーブルと注文詳細テーブルとを結合して、新たに現時点の仮想テーブルを作成する。さらに、その後のステップS14において、テーブル抽出部104は、キー項目情報302で示されているカラムの全てが現時点の仮想テーブルに含まれていると判定し、ステップS17に進む。
ステップS17において、テーブル結合部105は、暫定仮想テーブル情報301を作成する。暫定仮想テーブル情報301は、現時点の仮想テーブルを定義する情報である。暫定仮想テーブル情報301には、仮想テーブルの主キー情報と属性情報と参照関係情報が含まれる。仮想テーブルの主キー情報とは、仮想テーブルに含まれる複数のカラムのそれぞれが主キーになっているかどうかを示す情報である。仮想テーブルの主キー情報は、目標テーブルの主キー情報と一致していなければならない。仮想テーブルの属性情報とは、仮想テーブルに含まれる複数のカラムのそれぞれに格納されるデータの属性(例えば、カラム名、データ型)を示す情報である。仮想テーブルの参照関係情報とは、仮想テーブルと他のテーブルとの間の参照関係を示す情報である。
例えば、テーブル結合部105は、図5に示すような暫定仮想テーブル情報301を作成する。暫定仮想テーブル情報301は、図5に示した連携元情報111と参照関係情報113とが合成された情報と同様の形式で、仮想テーブルを定義する情報である。暫定仮想テーブル情報301では、仮想テーブルの「会社コード」、「注文詳細ID」、「注文ID」カラムが主キーであることが示されている。暫定仮想テーブル情報301では、仮想テーブルの「注文ID」カラムが外部キーであることが示されている。
ステップS18において、テーブル抽出部104は、ステップS13で選択したテーブルを含むテーブルの組み合わせの全てについて、ステップS14〜S17の処理が完了したかどうか判定する。テーブル抽出部104は、処理が完了していれば、ステップS19に進む。テーブル抽出部104は、処理が完了していなければ、ステップS13で選択したテーブルを新たに現時点の仮想テーブルとみなし、ステップS14に戻る。テーブル結合部105は、ステップS17の処理が実行される度に、新たに(即ち、仮想テーブルごとに)暫定仮想テーブル情報301を作成する。
ステップS19において、テーブル抽出部104は、ステップS13で他に選択可能なテーブルがあるかどうか判定する。テーブル抽出部104は、そのようなテーブルがあれば、ステップS13に戻る。テーブル抽出部104は、そのようなテーブルがなければ、処理を終了する。
以下では、スコープという概念について説明する。
図5の例では、結合されるテーブル群が同一データベース(即ち、同一インスタンス)の同一スキーマに属することを想定している。しかし、通常、データ連携は複数のシステム間で行われる。そのため、異なるスキーマ間の参照関係、あるいは、異なるデータベース間の参照関係も考慮する必要がある。
図6は、連携元情報111と参照関係情報113とが合成された情報の別の例を示す表である。
図6の例では、図5の例と同様のテーブルが複数のスキーマ、あるいは、複数のデータベースに分かれて存在している。DB−1というデータベースのスキーマAには、図5の例と同様の注文テーブル及び注文詳細テーブルが存在する。同じデータベースのスキーマBには、図5の例と同様の会社テーブルが存在する。DB−2という別のデータベースのスキーマ1には、別の会社テーブルが存在する。
注文テーブルの参照関係情報113には、注文テーブルの「会社コード」カラムがDB−1のスキーマBに属する会社テーブルの「会社コード」カラムを参照することを示す参照関係レコード303が含まれている。注文テーブルの参照関係情報113には、さらに、注文テーブルの「会社コード」カラムがDB−2のスキーマ1に属する会社テーブルの「会社コード」カラムを参照することを示す参照関係レコード305が含まれている。
参照関係レコード303,304,305には、スコープに関する情報が含まれている。ステップS15において、テーブル抽出部104は、この情報に基づいて、テーブルを抽出する。即ち、テーブル抽出部104は、選択済のテーブルとの参照関係を有するテーブルを、そのテーブルが選択済のテーブルと同一スキーマ内に存在するのか、同一データベース内に存在するのか、異なるデータベースに属するのかを区別しながら、抽出する。
図7は、連携元情報111と参照関係情報113とが合成された情報と、暫定仮想テーブル情報301との別の例を示す表である。
ステップS15において、テーブル抽出部104は、参照関係レコード305で注文テーブルの参照先として示されている別のデータベースに属する会社テーブルの連携元情報111を参照することができる。テーブル抽出部104は、キー項目情報302で示されている「会社コード」カラムと、DB−2のスキーマ1に属する会社テーブルの連携元情報111で示されている「会社コード」カラムとが類似すると判定し、この会社テーブルを選択する。
ステップS17において、テーブル結合部105は、図5に示した暫定仮想テーブル情報301とは別に、図7に示すような暫定仮想テーブル情報301を作成することができる。図7の例における仮想テーブルは、図5の例における仮想テーブルと比べて、「ブランドID」カラムが追加されている。図3に示した入力情報114では、目標テーブルに「ブランドID」カラムが含まれることが示されている。よって、図7の例における仮想テーブルは、図5の例における仮想テーブルと比べて、目標テーブルに対応するカラム数が多いという点で優っている。
ステップS15では、スコープ(例えば、同一データベース内、同一スキーマ内)が指定されてもよい。その場合、テーブル抽出部104は、指定されたスコープ内でテーブルを抽出する。
図4の動作により、目標テーブルと主キーのカラムが類似する複数の仮想テーブルが作成された場合、これら複数の仮想テーブルの中で、目標テーブルとなるべく多くの非主キーのカラムが類似する仮想テーブルがデータ連携に適している。そのような仮想テーブルを検出するために、スキーママッチング技術を利用することができる。
図8は、図4の動作の後におけるデータ連携支援装置100の動作の例を示すフローチャートである。図9は、仮想テーブルと目標テーブルとのスキーママッチングを示す概念図である。
ステップS21において、推奨判断部106は、情報記憶部101から入力情報114と、ステップS17で作成された暫定仮想テーブル情報301とを取得する。
例えば、推奨判断部106は、図9に示すように、図3に示した情報(即ち、入力情報114と参照関係情報113とが合成された情報)と、図7に示した暫定仮想テーブル情報301とを取得する。
ステップS22において、推奨判断部106は、ステップS21で取得した入力情報114により定義された目標テーブルと、ステップS21で取得した暫定仮想テーブル情報301により定義された仮想テーブルとのスキーママッチングを行う。目標テーブルと仮想テーブルとの間で主キーは可能な限り一致している。そのため、非主キーのカラムの類似性が確認される。カラムの類似性を判断するために、既存のスキーママッチング技術が活用できる。
例えば、推奨判断部106は、図3に示した情報により定義された目標テーブルと、図7に示した暫定仮想テーブル情報301により定義された仮想テーブルとのスキーママッチングを行う。前述したように、図3で黒塗りされている項目は、他のテーブルを参照すれば取得できるカラムである。よって、これらのカラムについてのスキーママッチングの結果は無視される。あるいは、これらのカラムについてはスキーママッチングが省略される。
ステップS23において、推奨判断部106は、ステップS22で行ったスキーママッチングの結果(即ち、マッチングスコア)を集計し、仮想テーブルのいずれのカラムが、目標テーブルの非主キーのカラムと類似するか判断する。
例えば、推奨判断部106は、スキーママッチングの結果に基づき、仮想テーブルの「顧客コード」、「店舗ID」、「ブランドID」カラムが、それぞれ目標テーブルの同名のカラムと類似すると判断する。
図4の動作により複数の仮想テーブルが作成されている場合は、ステップS21〜S23の処理が仮想テーブルごとに実行される。
図10は、図8の動作の後におけるデータ連携支援装置100の動作の例を示すフローチャートである。図11は、連携元テーブルと目標テーブルとのスキーママッチングを示す概念図である。図12は、連携元テーブルと仮想テーブルとのスキーママッチングを示す概念図である。
ステップS31において、推奨判断部106は、情報記憶部101から連携元情報111と連携先情報112と参照関係情報113とを取得する。
例えば、推奨判断部106は、図11に示すような連携元情報111と参照関係情報113とが合成された情報を取得する。注文テーブルの連携元情報111では、社員テーブルの「社員ID」カラムが主キーであることが示されている。社員テーブルの参照関係情報113では、社員テーブルに外部キーがないことが示されている。ディスカウントテーブルの連携元情報111では、ディスカウントテーブルの「注文詳細ID」、「注文ID」カラムが主キーであることが示されている。ディスカウントテーブルの参照関係情報113では、ディスカウントテーブルの「注文ID」、「店舗ID」、「商品コード」カラムが外部キーであることが示されている。
ステップS32において、推奨判断部106は、ステップS21で取得した入力情報114により定義された目標テーブルに含まれる複数のカラムから、ステップS21で取得した暫定仮想テーブル情報301により定義された仮想テーブルに、対応するカラムが存在しないカラムを抽出する。即ち、推奨判断部106は、目標テーブルの非主キーのカラムのうち、ステップS23で仮想テーブルのカラムと類似すると判断したカラム以外のカラムを抽出する。
図11で黒塗りされている項目は、主キーになっているカラムと、外部キーの参照先のテーブルと仮想テーブルとのいずれかに、対応するカラムが存在するカラムである。
ステップS33において、推奨判断部106は、ステップS32で抽出したカラムと、ステップS31で取得した情報により定義された連携元テーブル及び連携先テーブルとのスキーママッチングを行う。
例えば、推奨判断部106は、図3に示した情報により定義された目標テーブルと、図11に示した情報により定義された社員テーブル及びディスカウントテーブルとのスキーママッチングを行う。前述したように、図11で黒塗りされている項目は、主キーのカラム、あるいは、他のテーブルを参照すれば取得できるカラムである。よって、これらのカラムについてのスキーママッチングの結果は無視される。あるいは、これらのカラムについてはスキーママッチングが省略される。
ステップS34において、推奨判断部106は、ステップS33で行ったスキーママッチングの結果(即ち、マッチングスコア)を集計し、いずれかの連携元テーブル又はいずれかの連携先テーブルのいずれのカラムが、目標テーブルの残りのカラムと類似するか判断する。
例えば、推奨判断部106は、スキーママッチングの結果に基づき、社員テーブルの「社員名」カラムが、目標テーブルの「担当営業」カラムと類似すると判断する。推奨判断部106は、ディスカウントテーブルの「ディスカウント」、「商品コード」カラムが、目標テーブルの同名のカラムと類似すると判断する。
ステップS35において、推奨判断部106は、ステップS34で目標テーブルの残りのカラムと類似すると判断したカラムを含む連携元テーブル又は連携先テーブルと、ステップS21で取得した暫定仮想テーブル情報301により定義された仮想テーブルとのスキーママッチングを行う。
例えば、推奨判断部106は、図12に示すように、図11に示した情報により定義された社員テーブル及びディスカウントテーブルと、図9に示した暫定仮想テーブル情報301により定義された仮想テーブルとのスキーママッチングを行う。
ステップS36において、推奨判断部106は、ステップS35で行ったスキーママッチングの結果(即ち、マッチングスコア)を集計し、ステップS34で目標テーブルの残りのカラムと類似すると判断したカラムを含む連携元テーブル又は連携先テーブルと、ステップS21で取得した暫定仮想テーブル情報301により定義された仮想テーブルとが結合できるかどうか判断する。推奨判断部106は、両テーブルが結合できる場合、ステップS37に進む。推奨判断部106は、両テーブルが結合できない場合、ステップS21で取得した暫定仮想テーブル情報301により定義された仮想テーブルを最終的な仮想テーブルとみなし、ステップS38に進む。ただし、推奨判断部106は、最終的な仮想テーブルから、対応するカラムが目標テーブルにないカラムを除外する。
ステップS37において、推奨判断部106は、ステップS34で目標テーブルの残りのカラムと類似すると判断したカラムを含む連携元テーブル又は連携先テーブルと、ステップS21で取得した暫定仮想テーブル情報301により定義された仮想テーブルとを結合して1つのテーブルを作成する。推奨判断部106は、作成したテーブルを最終的な仮想テーブルとみなし、ステップS38に進む。ただし、推奨判断部106は、最終的な仮想テーブルから、対応するカラムが目標テーブルにないカラムを除外する。
例えば、推奨判断部106は、図12に示した暫定仮想テーブル情報301により定義された仮想テーブルと、図12に示した情報により定義された社員テーブル及びディスカウントテーブルとを結合して、最終的な仮想テーブルを作成する。
ステップS38において、推奨判断部106は、最終的な仮想テーブルの基になったテーブルの組み合わせを、目標テーブルのデータ連携に利用することを推奨する推奨情報161を、出力装置を介してクライアント装置200へ出力する。
図4の動作により複数の仮想テーブルが作成されている場合は、ステップS31〜S37の処理が仮想テーブルごとに実行される。ステップS38において、推奨判断部106は、仮想テーブルごとに、目標テーブルと最終的な仮想テーブルとのスキーママッチングを行う。推奨判断部106は、そのスキーママッチングのスコアが最も高い(又はそのスキーママッチングのスコアが上位n番目(n>1)までの)最終的な仮想テーブルを選択する。推奨判断部106は、選択した最終的な仮想テーブルの基になったテーブルの組み合わせを、目標テーブルのデータ連携に利用することを推奨する推奨情報161を、出力装置を介してクライアント装置200へ出力する。
目標テーブルの一部のカラムと対応するカラムが最終的な仮想テーブルに含まれないことがある。即ち、目標テーブルが既存のテーブルのみを利用したデータ連携では実現できないことがある。そのような場合、仮想テーブルと連携元テーブルを結合するための情報を関連テーブルとして手動で作成することが考えられる。この場合、どのような関連テーブルを作成すればよいか調査する必要があるが、推奨情報161をクライアント装置200へ提供することにより、調査量の削減に寄与することができる。
本実施の形態では、データ連携関係の自動推奨にあたってレコードデータが必須ではなく、テーブル定義情報等のメタデータのみあればよい。そのため、データ連携関係を探索するシステムの範囲を広く設定できる。その結果として、システム全体を考慮したデータ連携関係の全体最適解を見つけ出すことが可能となる。つまり、本実施の形態によれば、データ連携において、連携先となるテーブルのカラムに格納するデータを、どのテーブルのカラムから抽出すればよいかを、効率よく、的確に判断することができる。
本実施の形態では、システム全体という広いスコープでデータ連携関係を探索することができるため、検出漏れを最小限にできるという効果が得られる。
データ連携関係の自動推奨では、探索スコープが狭くなると、本来連携元とすべきテーブルが排除される可能性がある。本来連携元とすべきテーブルのコピーあるいは変形を連携元として誤検出してしまう可能性がある。そのような誤検出があると、定義したデータ連携関係において、本来連携元とすべきテーブルからそのコピーあるいは変形を作成する別のデータ連携処理との依存関係が生じてしまう。本実施の形態によれば、そのように本来必要のないデータ連携関係が定義されてしまう事態(即ち、部分最適解)を回避することができる
本実施の形態では、データ連携関係の自動推奨という目的に固有の要件である、連携先テーブルのレコードレイアウトを連携元テーブル群から結合操作等により再現できるという要件に対応するために、仮想テーブルを作成して、仮想テーブルと連携先テーブルに対してスキーママッチング技術を適用する。このため、データ連携に使用できない対応関係は自動的に出力から省かれる。本実施の形態では、通常のスキーママッチング技術で大量に発生するデータ連携関係の候補の中からデータ連携に使用できるカラム間の対応関係のみを抽出して提供する。このため、自動推奨結果が人間により確認される際に、人間の作業量が大幅に削減される。
さらに、本実施の形態では、スコープを広げるだけではなく、データベーススキーマ内、データベース内、データベース外のように複数のスコープを明示的に分けて、それぞれについて仮想テーブルを作成する。このため、データ連携関係の候補をスコープ別に確認することが可能である。例えば、データベーススキーマ内では取得することができないデータ項目についてデータベース外までスコープを広げると取得できることが確認できる。よって、データベース外とのデータ連携コストとデータベーススキーマ内のデータ連携コストとを比較しながら、状況に応じたデータ連携関係を定義することが可能となる。
図13は、本実施の形態に係るデータ連携支援装置100のハードウェア構成の一例を示す図である。
図13において、データ連携支援装置100は、コンピュータであり、LCD901(Liquid・Crystal・Display)、キーボード902(K/B)、マウス903、FDD904(Flexible・Disk・Drive)、CDD905(Compact・Disc・Drive)、プリンタ906といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。LCD901の代わりに、CRT(Cathode・Ray・Tube)、あるいは、その他の表示装置が用いられてもよい。マウス903の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
データ連携支援装置100は、プログラムを実行するCPU911(Central・Processing・Unit)を備えている。CPU911は、処理装置の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、LCD901、キーボード902、マウス903、FDD904、CDD905、プリンタ906、HDD920(Hard・Disk・Drive)と接続され、これらのハードウェアデバイスを制御する。HDD920の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、HDD920は、不揮発性メモリの一例である。これらは、記憶装置の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905は、入力装置の一例である。また、通信ボード915、LCD901、プリンタ906は、出力装置の一例である。
通信ボード915は、LAN(Local・Area・Network)等に接続されている。通信ボード915は、LANに限らず、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークといったWAN(Wide・Area・Network)、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。
HDD920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。プログラム群923には、本発明の実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、CPU911により読み出され実行される。ファイル群924には、本発明の実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、RAM914やHDD920等の記録媒体に記憶される。RAM914やHDD920等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理(動作)に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
本発明の実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、RAM914等のメモリ、FDD904のフレキシブルディスク(FD)、CDD905のコンパクトディスク(CD)、HDD920の磁気ディスク、光ディスク、DVD(Digital・Versatile・Disc)、あるいは、その他の記録媒体に記録される。また、データや信号は、バス912、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
本発明の実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。即ち、プログラムは、本発明の実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本発明の実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
以上、本発明の実施の形態について説明したが、本発明は、この実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。