以下、本発明の実施の形態について、図を用いて説明する。
実施の形態1.
図1は、本実施の形態に係る同義カラム検出装置100の構成例を示すブロック図である。
第1のデータベースを構成するテーブルにてそれぞれデータを格納する複数のカラムを第1カラム群とし、第2のデータベースを構成するテーブルにてそれぞれデータを格納する複数のカラムを第2カラム群としたとき、同義カラム検出装置100は、第1カラム群と第2カラム群との各々から、第1カラム群と第2カラム群との間で共通するデータを格納するカラムを同義カラムとして検出する。なお、第1カラム群と第2カラム群との間で共通するデータとは、第1カラム群と第2カラム群との両方において同じ管理対象(例えば、備品点検の担当者)の同じ情報(例えば、氏名)を表すデータのことをいい、値(例えば、山田太郎)まで同じであることは要しないものとする。
図1において、同義カラム検出装置100は、同義カラム判定部199を備える。同義カラム判定部199は、属性特徴抽出部1010、評価対象選定部1020、同義カラム類似評価部1030、データベース操作履歴評価部1040、同義判定部1050を有する。
同義カラム検出装置100は、さらに、同義情報閲覧部1060、データベース接続情報登録部1120、データベース定義取得部1121、データ取得部1130、データベース操作履歴取得部1140、記憶領域1150、同義情報格納部1200を備える。なお、データベース定義取得部1121は、属性情報入力部の一例である。データ取得部1130は、データ入力部の一例である。データベース操作履歴取得部1140は、履歴情報入力部の一例である。
図示していないが、同義カラム検出装置100は、さらに、処理装置、記憶装置、入力装置、出力装置等のハードウェアを備える。ハードウェアは同義カラム検出装置100の各部によって利用される。処理装置は、例えば同義カラム検出装置100が稼動するコンピュータ(計算機)のCPU(Central・Processing・Unit)であり、同義カラム検出装置100の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置は、例えばメモリあるいはHDD(Hard・Disk・Drive)であり、上記のデータや情報を記憶するために利用される。記憶領域1150、同義情報格納部1200は、記憶装置に実装される。入力装置は、例えばキーボードやマウス、あるいは、通信モジュールであり、上記のデータや情報を入力あるいは受信するために利用される。出力装置は、例えば通信モジュール、あるいは、表示装置であり、上記のデータや情報を出力あるいは送信するために利用される。
同義カラム検出装置100は、さらに、図2に示すような1つ以上のシステム300に備えられたデータベース301(DB)(例えば、リレーショナルデータベース)とネットワーク400を介して接続するデータベース接続部1122を備える。データベース接続情報登録部1120、データベース定義取得部1121、データ取得部1130、データベース操作履歴取得部1140は、データベース接続部1122を介して、1つ以上の異なるシステム300が備えるデータベース301内のカラム、テーブル、及び、スキーマに関する情報を取得する。同義カラム検出装置100は、この情報を利用して、同じ事象を管理するために必要な特定情報を格納する複数のカラム間の関係を検出する。つまり、1つ以上のシステム300に備えられたデータベース301のうち、任意の1つ以上のデータベースの組、2組を前述した第1のデータベース及び第2のデータベースとしたとき、同義カラム検出装置100は、第1のデータベースの第1カラム群と第2のデータベースの第2カラム群との各々から同義カラムを検出する。なお、図2に示すシステム300は、一部又は全部が単一のシステム300で複数のデータベース301を備えるように構成されていてもよい。
データベース接続情報登録部1120は、同義カラム検出装置100が検出対象とするデータベース301への接続情報の入力を入力装置によりユーザから受け付け、記憶領域1150内の接続情報管理部1153に格納する。なお、記憶領域1150は、前述したように、記憶装置により実現されるデータ格納領域である。
データベース定義取得部1121は、前述した第1カラム群に含まれる各カラムの属性を示す第1属性情報と、前述した第2カラム群に含まれる各カラムの属性を示す第2属性情報とを入力装置により入力する。そして、データベース定義取得部1121は、第1属性情報と第2属性情報とを属性情報1160として記憶装置に記憶する。
具体的には、データベース定義取得部1121は、図2に示すようにデータベース301を備えた1つ以上のシステム300から当該データベース301の構成を定義するデータベース定義情報1190を入力装置により取得する。そして、データベース定義取得部1121は、取得したデータベース定義情報1190を記憶領域1150に格納する。そして、データベース定義取得部1121は、記憶領域1150に格納したデータベース定義情報1090に含まれる、各カラムの型やサイズといった属性を示す情報を属性情報1160として記憶領域1150に格納する。なお、同義カラム検出装置100が、システム300とネットワーク400を介して接続していない等の場合は、DDL(Data・Definition・Language)等、データベース定義を記述したファイル及びその他記憶媒体を通して、データベース定義取得部1121がデータベース定義情報1090を取得するようにしてもよい。
データ取得部1130は、前述した第1カラム群に含まれる各カラムに格納された第1データ群と前述した第2カラム群に含まれる各カラムに格納された第2データ群とを入力装置により入力する。そして、データ取得部1130は、第1データ群と第2データ群とを評価用インスタンスデータ1170として記憶装置に記憶する。
具体的には、データ取得部1130は、図2に示すデータベース接続部1122を介してネットワーク400に接続されたシステム300が備えるデータベース301に格納されたインスタンスデータ1100を入力装置により取得し、記憶領域1150内に評価用インスタンスデータ1170として格納する。ここで、インスタンスデータ1100は、データベース定義情報1090にて定義されたデータベース301のテーブルに格納されるレコードを意味する。なお、システム300とデータベース接続部1122がネットワーク400を介して接続していない等の場合は、データ取得部1130が、インスタンスデータ1100をファイルやその他媒体を介して取得することがあってもよい。
データベース操作履歴取得部1140は、第1のデータベースに対するクエリの発行履歴を示す第1履歴情報と第2のデータベースに対するクエリの発行履歴を示す第2履歴情報とを入力装置により入力する。そして、データベース操作履歴取得部1140は、第1履歴情報と第2履歴情報とをデータベース操作履歴1180として記憶装置に記憶する。
具体的には、データベース操作履歴取得部1140は、システム300が備えるデータベース301に対する操作の履歴を記録したデータベース操作履歴1110を入力装置により取得し、記憶領域1150内にデータベース操作履歴1180として格納する。ここで、データベース操作履歴1110は、データベース301に対するクエリの発行履歴として、例えばSQL文法により記述された、少なくともInsert文、Update文により表記された操作履歴を含む。また、データベース操作履歴1110は、システム300が出力する情報、あるいは、システム300が備えるデータベース301が出力する情報、システム300が他システム300とネットワーク400を介して連携する際に利用するODBC(Open・DataBase・Connectivity)ドライバやJDBC(登録商標)(Java(登録商標)・DataBase・Connectivity)ドライバ等のインタフェースが出力する情報等を含んでもよい。
同義カラム判定部199は、データベース定義取得部1121により入力された第1属性情報と第2属性情報とを処理装置により比較する。具体的には、同義カラム判定部199は、第1カラム群に含まれるカラムと第2カラム群に含まれるカラムとの組み合わせごとに、第1属性情報で示された属性と第2属性情報で示された属性との類似度を処理装置により算出する。また、同義カラム判定部199は、データ取得部1130により入力された第1データ群と第2データ群とを処理装置により比較する。具体的には、同義カラム判定部199は、第1カラム群に含まれるカラムと第2カラム群に含まれるカラムとの組み合わせごとに、第1データ群と第2データ群との類似度を処理装置により算出する。そして、同義カラム判定部199は、算出した類似度が所定の閾値以上となる組み合わせの各カラムを同義カラムの候補とする。このとき、第1属性情報で示された属性と第2属性情報で示された属性との類似度と、第1データ群と第2データ群との類似度との両方を利用することが望ましいが、いずれか一方の類似度のみを利用してもよい。即ち、同義カラム判定部199は、第1属性情報と第2属性情報との比較結果と、第1データ群と第2データ群との比較結果との少なくともいずれかに基づき、第1カラム群と第2カラム群との各々から、同義カラムの候補を抽出する。
第1カラム群から抽出した同義カラムの候補である第1候補と第2カラム群から抽出した同義カラムの候補である第2候補とが1つずつである場合、同義カラム判定部199は、第1候補と第2候補との各々が同義カラムに該当するカラムであると判定する。即ち、この場合、同義カラム判定部199は、第1候補と第2候補との組み合わせを同義カラムの組み合わせであると判定する。一方、第1候補と第2候補とがそれぞれ2つ以上ある場合、同義カラム判定部199は、データベース操作履歴取得部1140により入力された第1履歴情報と第2履歴情報とを処理装置により分析して、分析結果に基づき、第1候補と第2候補との各々から、同義カラムに該当するカラムを判定する。即ち、この場合、同義カラム判定部199は、第1候補と第2候補とのうち、どのカラムとどのカラムとの組み合わせが同義カラムの組み合わせであるかを判定する。上記分析結果は、具体的には、第1履歴情報で示されたクエリの発行履歴に、第1候補に含まれる各カラムが出現する順序のパターンと、第2履歴情報で示されたクエリの発行履歴に、第2候補に含まれる各カラムが出現する順序のパターンとを同義カラム判定部199が分析した結果である。
上記のような同義カラム判定部199において、属性特徴抽出部1010は、データベース定義取得部1121がシステム300のデータベース定義情報1090を取得して属性情報1160を記憶領域1150に格納した際、属性情報1160に含まれる、各カラムの型やサイズといった属性を抽出する処理を処理装置により行う。また、属性特徴抽出部1010は、データ取得部1130がインスタンスデータ1100を取得して評価用インスタンスデータ1170を記憶領域1150に格納した際、評価用インスタンスデータ1170から各カラムに格納されたデータの特徴を抽出する処理を処理装置により行う。属性特徴抽出部1010は、これらの処理をデータベース定義取得部1121及びデータ取得部1130が記憶領域1150に格納した全ての属性情報1160、評価用インスタンスデータ1170に対して実施し、抽出した属性及び特徴をまとめて図3に示すような属性特徴一覧表1151を処理装置により作成する。属性特徴抽出部1010は、作成した属性特徴一覧表1151を記憶領域1150に格納する。
図3に示す属性特徴一覧表1151において、複数のシステム300がそれぞれ備えるデータベース301のテーブルのカラムごとに、カラムの属性及び当該カラムに格納されるデータの特徴を示す情報が格納される。「カラムID(識別子)」には、各カラムを一意に識別するIDが格納される。「カラム名」には、対象カラム(「カラムID」に対応するカラム)の名称が格納される。「データソースID」には、対象カラムを含むデータベース301にアクセスするためにデータベース接続部1122により提供されるインタフェース、即ち、データソースを一意に識別するIDが格納される。「型」、「文字列長」には、対象カラムに格納されるデータの型、長さが格納される。「主キー」、「外部キー」には、対象カラムが主キーであるか否か、外部キーであるか否かが格納される。「制約」、「Path」には、対象カラムの制約、パスが格納される。「最大値」、「最小値」、「平均値」、「分散」には、対象カラムに格納されているデータの最大値、最小値、平均値、分散が格納される。「最小刻み」には、対象カラムに格納されているデータ間の差の最小値が格納される。「値種類数」、「最頻値割合」、「最頻値代表」には、対象カラムに格納されているデータの値の種類数、最頻値の割合、最頻値の代表が格納される。「ドメインナレッジ」には、ユーザから任意に入力されて記憶領域1150内のドメインナレッジ管理部1154に格納される、特定カラムに対する固有情報が格納される。具体的には、特定カラムを更新する場合に、必ず同時に更新される他カラムの情報等が格納される。
なお、属性特徴抽出部1010は、上記のように、データベース定義取得部1121、データ取得部1130により属性情報1160、評価用インスタンスデータ1170が記憶領域1150に格納される度に、属性特徴一覧表1151の情報を更新するのではなく、別のタイミングで属性特徴一覧表1151を更新してもよい。また、属性特徴抽出部1010は、処理装置を利用する他の処理と並列に属性特徴一覧表1151を更新する処理(属性特徴抽出処理)を実行するものであってもよい。例えば、記憶領域1150に属性特徴一覧表1151への処理が終了していないデータが特定数溜まった場合に属性特徴抽出部1010を起動するようにしてもよい。あるいは、特定時間間隔で属性特徴抽出部1010が未処理の属性情報1160あるいは評価用インスタンスデータ1170に対する属性特徴抽出処理を実施するようにしてもよい。
評価対象選定部1020は、同義カラム類似評価部1030、データベース操作履歴評価部1040が処理対象とするデータベース301のスキーマ、テーブル、カラムを選定する。このとき、評価対象選定部1020は、ユーザが明示的に判定対象とする1つ以上のカラム、あるいは、当該カラムが含まれた1つ以上のテーブル、あるいは、当該カラムが含まれた1つ以上のスキーマの指定入力を入力装置により受け付ける。
同義カラム類似評価部1030は、評価対象選定部1020によって指定されたカラムにおいて、1つ以上の他のカラムの中で同じ情報を格納するカラムであると特定するため、当該カラムの類似度を処理装置により算出する。そして、同義カラム類似評価部1030は、算出した類似度を記憶領域1150内の類似評価値管理部1152に格納する。
データベース操作履歴評価部1040は、データベース操作履歴取得部1140によって記憶領域1150に格納されたデータベース操作履歴1180を対象にカラムが更新された時間的順序関係を用いて複数カラム間の類似度を処理装置により算出する。そして、データベース操作履歴評価部1040は、算出した類似度を記憶領域1150内の類似評価値管理部1152に格納する。
同義判定部1050は、同義カラム類似評価部1030及びデータベース操作履歴評価部1040が算出した類似度を基に同義カラムを処理装置により判定する。同義判定部1050は、判定結果を同義情報1210として同義情報格納部1200に格納する。
同義情報閲覧部1060は、同義情報格納部1200に格納された同義情報1210を出力装置によりユーザに提示する。
図4は、同義カラム検出装置100のハードウェア構成の一例を示す図である。
図4において、同義カラム検出装置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を備えている。CPU911は、処理装置の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、LCD901、キーボード902、マウス903、FDD904、CDD905、プリンタ906、HDD920と接続され、これらのハードウェアデバイスを制御する。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、インターネットは、ネットワーク400の一例である。
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により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
次に、同義カラム検出装置100の動作(本実施の形態に係る同義カラム検出方法、本実施の形態に係る同義カラム検出プログラムの処理手順)について説明する。
図5は、同義カラム検出装置100において、同義カラム検出対象のシステム300をユーザが登録する際の処理フローを示すフローチャートである。
図5において、まず、データベース接続情報登録部1120は、ユーザから、同義カラム検出装置100の処理対象となるデータベース301への接続情報(即ち、データベース接続情報)の登録を入力装置により受け付ける(S001)。データベース301への接続情報は、データベースサーバのIP(Internet・Protocol)アドレスあるいはホスト名等、ネットワーク400上でデータベースサーバを特定する情報、データベース301への検索及びシステム情報取得権限を有したデータベースユーザ名、接続に必要なパスワード、接続するスキーマ名、接続識別子等、DBMS(DataBase・Management・System)固有の情報を含む。データベース接続情報の登録において、データベース接続情報登録部1120は、図6に示すような接続情報管理部1153の表に取得したデータベース接続情報を格納する。
図6に示す接続情報管理部1153の表において、前述したデータソースごとに、データベース301への接続情報が格納される。「データソースID」には、データソースを一意に識別するIDが格納される。「IPアドレス」、「ホスト名」には、前述したデータベースサーバのIPアドレス、ホスト名が格納される。「ユーザ名」、「パスワード」、「スキーマ名」、「接続識別子」には、前述したデータベースユーザ名、パスワード、スキーマ名、接続識別子が格納される。「テクノロジ」には、DBMSの名称が格納される。
データベース定義取得部1121は、接続情報管理部1153に格納されたデータベース接続情報を基に、例えばODBCやJDBCのようにデータベース301に接続するためのインタフェースを介してオンラインでデータベース定義情報1090を入力装置により取得し、記憶領域1150に属性情報1160として格納する(S002)。このとき、データベース定義取得部1121は、取得した各カラムに対して同義カラム検出装置100内でユニークにカラムを特定するIDを各カラムに設定する。同義カラム検出装置100において、カラムに対する操作及びカラムに関する情報を取得する場合には、ここで設定したIDを利用する。
データベース定義取得部1121は、属性情報1160を、例えば図7に示すようなXML(eXtensible・Markup・Language)で表記するツリー構造で管理する。属性特徴抽出部1010は、S002でデータベース定義取得部1121が取得した型や文字列長、キーの値、Pathを属性特徴一覧表1151に格納する。このとき、属性特徴抽出部1010は、属性情報1160に対するポインタを属性特徴一覧表1151に格納してもよい。
データ取得部1130は、接続情報管理部1153に格納されたデータベース接続情報を用いて、インスタンスデータ1100を入力装置により取得し、記憶領域1150に評価用インスタンスデータ1170として格納する(S003)。このとき、データ取得部1130は、データベース301に対するインスタンスデータ1100を取得するためのSQL文を属性情報1160から処理装置により生成し、データベース301から必要なインスタンスデータ1100を検索取得し、評価用インスタンスデータ1170として格納する。データベース301に多量のインスタンスデータ1100が格納されている場合には、データ取得部1130は、データベース301に対するSQL文の実行結果に対するフェッチ処理を乱数値に基づき実施する等、一定数のインスタンスデータ1100のみを取得する。
属性特徴抽出部1010は、評価用インスタンスデータ1170に対して、属性特徴一覧表1151にて管理する情報を算出する。このとき、属性特徴抽出部1010は、最大値や最小値等を、既知の算出方式により取得する(S004)。
属性特徴抽出部1010は、登録されたデータベース301に定義された全てのカラムに対する、属性特徴一覧表1151にて管理する情報を算出、取得するまでS004の処理を繰り返す(S005)。
図8は、同義カラム検出装置100における評価対象選定部1020、同義カラム類似評価部1030、データベース操作履歴評価部1040、同義判定部1050の処理フローを示すフローチャートである。
図8において、評価対象選定部1020は、同義カラム検出装置100の属性情報1160に登録されたデータベース301より同義カラムの評価対象を選択する操作をユーザから入力装置により受け付ける(S101)。この操作において、ユーザは同義カラム検出の対象とする検出元と検出先のそれぞれについて、1つ以上のカラム、1つ以上のテーブル、あるいは、1つ以上のスキーマを選択する。即ち、ユーザは前述した第1カラム群と第2カラム群とを選択する。
ここでは、検出元と検出先にテーブルが指定された場合について、記述する。つまり、以下では、第1のデータベースを構成するテーブルのうち、検出元として選択されたテーブルにてそれぞれデータを格納する複数のカラムを第1カラム群とする。第2のデータベースを構成するテーブルのうち、検出先として選択されたテーブルにてそれぞれデータを格納する複数のカラムを第2カラム群とする。そして、このときに、同義カラム検出装置100が、第1カラム群と第2カラム群との各々から同義カラムを検出する例について説明する。
同義カラム類似評価部1030は、S101にて選択された検出元カラムと検出先カラムの属性情報1160及び評価用インスタンスデータ1170を基に類似度を処理装置により算出する(S102)。
図9にS102の処理フローを示す。
図9において、同義カラム類似評価部1030は、図7に示す属性情報1160又は図3に示す属性特徴一覧表1151より検出元テーブルにおいて類似度を算出する対象となる検出元カラムのIDを取得する(S201)。
同義カラム類似評価部1030は、図7に示す属性情報1160又は図3に示す属性特徴一覧表1151より検出先テーブルにおいて類似度を算出する対象となる検出先カラムのIDを取得する(S202)。
同義カラム類似評価部1030は、S201,S202で取得した各カラムのIDと図3の属性特徴一覧表1151を用いて属性情報判定を処理装置により行う(S203)。このときS203の処理は、S202にて取得したカラムIDごとに並列処理にて実施してもよい。
図10にS203の処理フローを示す。
図10において、同義カラム類似評価部1030は、S203では、検出元カラムと検出先カラムの属性情報を基にした類似判定処理を行う。ここでは、類似判定処理の例としてカラム名判定(S2031)、データ型判定(S2032)、パス判定(S2033)、制約判定(S2034)、サイズ判定(S2035)について記述するが、同義カラム類似評価部1030は、属性特徴一覧表1151に格納されている他の情報を用いた類似判定処理を実施してもよい。また、カラム名判定(S2031)、データ型判定(S2032)、パス判定(S2033)、制約判定(S2034)、サイズ判定(S2035)はそれぞれ並列処理にて実施してもよい。
カラム名判定処理として、同義カラム類似評価部1030は、検出元カラムと検出先カラムのカラムIDを基に属性特徴一覧表1151より各カラム名を取得し、2つのカラム間のカラム名を基に類似度を処理装置により算出する(S2031)。このとき、同義カラム類似評価部1030は、カラム名における類義語変換等を、予め記憶領域1150等に記憶された類語辞書を用いて行う。
同義カラム類似評価部1030は、カラム名の類似度を、完全一致、部分一致、レーベンシュタイン距離等の指標を基に算出する。また、プレフィックスやサフィックス等の指定がドメインナレッジに含まれる場合には、同義カラム類似評価部1030は、プレフィックスやサフィックスを除外したカラム名を基に検出元カラムと検出先カラムのカラム名に対する文字列比較を行い、一致する文字数に応じて、類似度を0〜100の範囲で数値化し、判定結果として出力する。
データ型判定処理として、同義カラム類似評価部1030は、データベース301に定義されたカラムの型が一致しているか否かを処理装置により判定する(S2032)。
ベンダーごとにデータベース301の型名は異なる場合がある。このときは、同義カラム類似評価部1030は、同義カラム検出装置100上での共通型にそれぞれを変換する等の処理を行い、類似度比較を行う。データ型の比較は、型の一致、不一致のみの比較であり、類似度は100又は0が返却される。
パス判定処理として、同義カラム類似評価部1030は、カラム名に加えてテーブル名、スキーマ名を含めた類似度判定を処理装置により行う。例えば、同義カラム類似評価部1030は、[スキーマ名]+[.(ドット)]+[テーブル名]+[.(ドット)]+[カラム名]等でパスを表記し、カラム名判定処理と同様に文字列比較を行う(S2033)。
制約判定処理として、同義カラム類似評価部1030は、各カラムに定義されたデータベース301における主キーや外部キー等のキー制約、NOT・NULLやUNIQUE等の入力制約が検出元カラムと検出先カラムで一致しているか否かを処理装置により判定する。判定結果は、制約の一致数と各制約に対する重み付け関数の積により0〜100の範囲で算出することとするが、その他集計手法によって各制約の一致不一致を集約してもよい(S2034)。
サイズ判定処理として、同義カラム類似評価部1030は、各カラムに定義された文字列長(バイト数)の差分を処理装置により比較する。同義カラム類似評価部1030は、判定結果を、バイト数の差分値を基に0〜100の範囲で算出する(S2035)。
同義カラム類似評価部1030は、図11に示すような類似度表を検出元カラムごとに処理装置により作成し、カラム名判定処理、データ型判定処理、パス判定処理、制約判定処理、サイズ判定処理にて算出した類似度を、検出先カラムIDの各列に類似度判定結果として格納する(S2036)。ここでは、類似度が0に近いほど、類似していないことを示し、類似度が100に近いほど、類似していることを示すものとするが、逆でもよい。また、下限値は0以外の値でもよいし、上限値は100以外の値でもよい。
図9において、同義カラム類似評価部1030は、インスタンス情報判定として、属性特徴一覧表1151に格納される検出元カラムと検出先カラムの最大値や最小値、平均値、分散等の値のそれぞれに対する距離を処理装置により算出する。同義カラム類似評価部1030は、距離と閾値とを比較し、比較結果を類似度として図11に示す表に格納する(S204)。
同義カラム類似評価部1030は、例えば、以下のような算出式を用いて類似度を算出するものとするが、他の算出式を用いてもよい。
上式において、aは検出元カラムの値、bは検出先カラムの値である。同義カラム類似評価部1030は、最大値に対するdist(a,b)、平均値に対するdist(a,b)のようにインスタンス情報(属性特徴一覧表1151にて示される評価用インスタンスデータ1170の特徴)のそれぞれについて距離を算出する。
同義カラム類似評価部1030は、全ての検出元カラムと検出先カラムの組に対する、図11に示す表を作成した(S205,S206)後、類似度の集約を処理装置により行う(S207)。類似度集約として、同義カラム類似評価部1030は、図11に示す類似度表の各値を集計し、集約類似度として判定する。同義カラム類似評価部1030は、例えば、集約類似度=Σwisiといった集計式を用いて集約類似度を算出するものとするが、他の集計式を用いてもよい。なお、上式において、wiは、i番目の項目についての類似度に対する重みを表し、siは図11に示すi番目の項目についての類似度算出時の指標(即ち、それぞれの特徴について算出された類似度)を表す。集計方法としては、このほかに全てのアルゴリズムの類似度から最大となる類似度をカラム間の類似度として判定する最大値集計や、全てのアルゴリズムの類似度から類似度の平均を求める平均値集約等がある。同義カラム類似評価部1030は、集約した類似度を図12に示すような類似度評価表に格納する。
図8において、同義カラム類似評価部1030は、類似度集計値(集約類似度)を基に、同義カラムとしてユーザに提示する検出元カラムと検出先カラムのペアを処理装置により選定する(S104)。このとき、同義カラム類似評価部1030は、記憶領域1150等に予め記憶された任意の閾値より集約類似度が高いカラムの組を同義カラムの組として検出する。閾値より集約類似度が高いカラムの組がなければ(S103)、S101に戻る。なお、同義カラム類似評価部1030は、集約類似度の最も大きいカラムの組を検出元カラムに対する同義カラムの組として検出してもよい。この場合、集約類似度が同じカラムの組があれば、同義カラム類似評価部1030は、複数の同義カラムの組を検出することになる。
同義カラム類似評価部1030は、検出した同義カラムのペアを、記憶領域1150等に格納される正解リストに追加する(S105)。このとき、正解リストに追加されたカラムの属性特徴一覧表1151のドメインナレッジに同時に更新される他カラムが登録されている場合には、同義カラム類似評価部1030は、当該カラム間の類似度を評価する。そして、同義カラム類似評価部1030は、データベース操作履歴1180から、当該カラムが更新された際に指定された値を取得して比較し、同一値に更新されている場合には、当該カラムも正解リストに追加する。
S104において、ある検出元カラムにおいて複数の同義カラムの組が検出された場合、データベース操作履歴評価部1040は、データベース操作履歴1180を基に同義カラム判定を処理装置により行う(S106)。このとき、データベース操作履歴評価部1040は、例えば、検出元カラム1,2(前述した第1候補に相当)と検出先カラムa,b(前述した第2候補に相当)とによってできるカラムの組み合わせ(1とa、1とb、2とa、2とbの4通り)についての集約類似度の値(計4つ)が全て同じ値、あるいは、同じ範囲内に収まった値であるといった場合に、それらの検出元カラム及び検出先カラムをS106の実施対象とする。即ち、検出元テーブル内の2つのカラムと検出先テーブル内の2つのカラムが相互に同義であるとの判定結果が検出された場合に、データベース操作履歴評価部1040が動作する。この場合、通常のデータベース設計において、全く同じ事象を管理するカラムを同一テーブル内に2つ以上定義しないため、検出元と検出先それぞれ1つずつを含むカラムの組を同義カラムの組(2組)として検出する必要がある。
図13にS106の処理フローを示す。
データベース操作履歴評価部1040は、データベース操作履歴1180に格納された対象システム300のデータベース301の操作履歴から、S104にて同義カラム候補として検出されたカラムが含まれる操作履歴を読み込む(S1061)。このとき、データベース操作履歴評価部1040は、同義カラム候補が含まれる操作履歴を、データベース操作履歴1180に格納される履歴ファイルに対する検出元及び検出先スキーマ名、テーブル名、カラム名による全文検索処理等の既出の方式を用いて指定する。
データベース操作履歴評価部1040は、検出元カラム1を含む更新処理(Insert文やUpdate文)と検出元カラム2を含む更新処理の組が時系列順に出現する頻度を(検出元カラム1→検出元カラム2)、(検出元カラム2→検出元カラム1)のそれぞれの順序対について検出元テーブルの操作履歴にて処理装置により探索する(S1062)。このとき、S1062が対象とするデータベース操作履歴1180は、各システム300の業務単位で整理されているものとする。データベース操作履歴1180を業務単位で整理する方法としては、業務システムの伝票番号等、業務フローを特定するためのキー値を利用する等の既出の方法を用いる。
S1062にて、データベース操作履歴評価部1040は、検出元カラム1を含む更新処理(Insert文、Update文)と検出元カラム2を含む更新処理において、更新処理のSet句に該当するカラムが出現したときの値格納部の情報(Set句で設定される当該カラムの更新値)を保持しておくものとする。
データベース操作履歴評価部1040は、検出先カラムa,bを含むデータベース操作履歴1180においても同様の処理を行う(S1064)。
全てのデータベース操作履歴に対する処理が終了した(S1063,S1064)後、同義判定部1050は、検出元カラムと検出先カラムの順序対の発生頻度を基に同義カラム判定を処理装置により行う(S1066)。具体的には、同義判定部1050は、検出元カラムが含まれるデータベース操作履歴1180における順序対の出現頻度と検出先カラムが含まれるデータベース操作履歴1180における順序対の出現頻度を比較し、出現頻度の高い順序対における前順序カラム同士、後順序カラム同士を同義カラムとして検出する。例えば、(検出元カラム1→検出元カラム2)の順序対の出現頻度が(検出元カラム2→検出元カラム1)の順序対の出現頻度より多く、(検出先カラムb→検出先カラムa)の順序対の出現頻度が(検出先カラムa→検出先カラムb)の順序対の出現頻度より多かったとする。この場合、同義判定部1050は、検出元カラム1と検出先カラムbとが同義カラムであり、また、検出元カラム2と検出先カラムaとが同義カラムであると判定する。
本実施の形態では、第1候補と第2候補とが2つずつある場合、データベース操作履歴取得部1140により入力された第1履歴情報で示されたクエリの発行履歴に、第1候補の一方のカラムが先に他方のカラムが後に出現するパターン(例えば、検出元カラム1→検出元カラム2)と一方のカラムが後に他方のカラムが先に出現するパターン(例えば、検出元カラム2→検出元カラム1)とのうち、より多いパターンを第1パターンとする。また、データベース操作履歴取得部1140により入力された第2履歴情報で示されたクエリの発行履歴に、第2候補の一方のカラムが先に他方のカラムが後に出現するパターン(例えば、検出先カラムa→検出先カラムb)と一方のカラムが後に他方のカラムが先に出現するパターン(例えば、検出先カラムb→検出先カラムa)とのうち、より多いパターンを第2パターンとする。このとき、同義判定部1050は、上記のように、第1パターンで先に出現するカラムと第2パターンで先に出現するカラムとが同義カラムであると判定する。また、同義判定部1050は、第1パターンで後に出現するカラムと第2パターンで後に出現するカラムとが同義カラムであると判定する。なお、ここでは、第1候補と第2候補とが2つずつある場合について説明したが、第1候補と第2候補とが3つずつあるいはそれ以上ある場合であっても、同様の処理が可能である。例えば、第1候補と第2候補とが3つずつあるとき、第1パターン(この場合は出現頻度が最も高いパターン)で1番目、2番目、3番目に出現するカラムと、第2パターン(この場合は出現頻度が最も高いパターン)で1番目、2番目、3番目に出現するカラムとを、順番に対応付けて同義カラムであると判定することができる(同義カラムの組が3つできることになる)。
なお、異なる判定方式として、同義判定部1050は、S1062,S1064実施時に保持した更新処理の値格納部の値が一致するカラムの組を同義カラムとして検出してもよい。
S1066にて、同義判定部1050は、さらに、検出元カラムと検出先カラムの順序対の出現パターンの相関値を時系列相関値として処理装置により計算する。
図8において、同義判定部1050は、計算した時系列相関値が予め定められた閾値以上であれば(S107)、検出した同義カラムの組を正解リストに追加する(S105)。なお、同義判定部1050は、時系列相関値に関わらず(あるいは時系列相関値の計算を省略して)、検出した同義カラムの組を正解リストに追加してもよい。
全ての検出元カラムに対する同義カラム判定が終了した(S108)後、同義判定部1050は、正解リストを同義情報1210として同義情報格納部1200に格納する。なお、正解リストは、検出元カラムを特定するカラム名、テーブル名、スキーマ名等の情報と検出先カラムを特定するカラム名、テーブル名、スキーマ名等の情報で構成されており、例えば格納形式は各々をコンマで区切った形式(CSV)である。
同義情報閲覧部1060は、同義情報格納部1200に格納された同義情報1210をユーザに対し出力装置により出力する(S109)。これにより、ユーザは、正解リストの内容を確認して同義カラムを特定することができるため、システム300の統合等のデータモデル設計作業等を効率よく行える。なお、同義情報閲覧部1060は、ユーザから正解リストの修正等の入力を入力装置により受け付け、入力された情報に基づき、同義情報格納部1200に格納された同義情報1210を更新してもよい。
上述したように、本実施の形態では、データベースの属性情報やインスタンスデータではカラムの類似度を特定することができない場合であっても、カラム間の時系列関連情報を含むデータベース操作履歴に対する更新順序関係を評価することで同義カラムの検出精度を向上させることができる。つまり、本実施の形態によれば、カラムの属性情報やデータベースに格納されたインスタンスデータの内容が全く同じ傾向を示す異義カラムであっても、カラムの更新順序を評価することで従来手法では誤検出していた事象を正しく判定することが可能となる。
以上説明したように、本実施の形態に係る同義カラム検出装置(方式)は、データベース定義情報を取得するデータベース定義取得部と、データベースの格納データを取得するデータ取得部と、データベースを操作した履歴を取得するデータベース操作履歴取得部を備える。また、同義カラム検出装置は、取得したデータベース定義情報から各カラムの属性特徴を抽出する属性特徴抽出部と、複数カラムの属性特徴あるいは格納データを比較する同義カラム類似評価部と、取得したデータベース操作履歴から異なるテーブルを構成するカラム間のデータベース操作履歴を比較するデータベース操作履歴評価部と、同義カラム評価結果を閲覧するための同義情報閲覧部を備える。さらに、同義カラム検出装置は、カラム属性と格納データとデータベース操作履歴に対する対象カラムの順序対出現の割合を評価することにより同義カラムであるか否かを判定する同義判定部を具備する。
さらに、同義カラム検出装置は、検出元データベースのカラム及び検出先データベースのカラムの全ての組に対するカラムの各属性情報及び格納データに対する判定結果を一時格納する類似評価値管理部を備える。同義カラム類似評価部は、検出先カラムごとに検出元カラムに対する類似度評価値を比較し、予め定義した比較幅以内の類似度評価値を検出する。データベース操作履歴評価部は、比較幅以内の類似度評価値を示す検出元カラムが検出された場合に当該カラムのデータ操作履歴に対して当該カラムの順序付き出現割合を算出する。
データベース操作履歴評価部は、さらに各データベースの操作履歴に対して、更新処理の実行順序対を検出する際に、カラム名に加えて、更新時に指定される値が一致する組を検出してもよい。
さらに、同義カラム検出装置は、2つ以上のカラムの組を最小単位として管理するドメインナレッジ管理部を備える。データベース操作履歴評価部は、2つ以上のカラム組を最小単位として順序対を検出する。同義カラム類似評価部は、カラムの組に含まれるいずれかのカラムが同義であると判定された場合に、他方のカラムの類似度を加算してもよい。
さらに、同義カラム検出装置は、同義カラムの判定対象をユーザが選定する評価対象選定部を備える。
さらに、同義カラム検出装置は、複数システムにおける表記のゆれを記載した類語辞書を備える。同義カラム類似評価部は、カラム名等文字列一致を評価する際に当該類義辞書を利用してもよい。
同義情報閲覧部は、同義カラムの検出結果に対して、ユーザによる変更を受け付け、同義判定結果をユーザが修正可能としてもよい。
実施の形態2.
本実施の形態について、主に実施の形態1との差異を説明する。
実施の形態1では、同義カラム検出結果をユーザに閲覧させ、必要に応じて編集可能とした。これに加えて本実施の形態では、同義カラム検出装置100が、ユーザ管理を行うとともに、ユーザによる同義カラム検出対象の選定及び同義カラム検出結果に対する閲覧、編集の機能を提供するGUI(Graphical・User・Interface)を備える。
図14は、本実施の形態に係る同義カラム検出装置100の構成例を示すブロック図である。
図14において、同義カラム検出装置100は、実施の形態1と同様の構成要素に加えて、同義情報管理部1070、同義情報設定部1080を備える。
同義情報管理部1070は、同義カラム検出装置100を利用するユーザに対するアクセス管理を処理装置により行う。同義情報管理部1070は、ユーザ情報1220として同義情報格納部1200にユーザ名、パスワードを登録し、属性情報1160や評価用インスタンスデータ1170等、記憶領域1150に格納する情報への参照権限、変更権限を管理する。そのほか、同義情報管理部1070は、同義情報格納部1200の同義カラム検出結果が格納された同義情報1210に対する参照権限、変更権限を管理する。
同義情報設定部1080は、同義判定部1050が出力した同義情報1210に対して、ユーザによる編集の操作を入力装置により受け付ける。より具体的には、同義情報設定部1080は、同義情報1210に格納された検出元カラムと検出先カラムの組を削除する、あるいは、新たな検出元カラムと検出先カラムの情報を追加するといった操作を、出力装置により出力した画面上でGUIを介して受け付ける。
図15にGUIの構成例を示す。
属性情報表示部201は、属性情報1160に格納される、同義カラム検出装置100に登録されたデータベース301の定義構造をツリー形式でユーザに提示する機能を備える。
検出元カラム表示部202は、ユーザが属性情報表示部201に表示されたスキーマ名やテーブル名、カラム名の表記をドラッグアンドドロップする等の方法により、検出元カラムについて、対象カラム選定(図8のS101)の処理を実施する機能を備える。
検出先カラム表示部203は、検出元カラム表示部202と同様に検出先カラムの指定処理を実施する機能を備える。
同義カラム関連表示部204は、同義判定部1050が検出した検出元カラムと検出先カラムの関連をテーブル単位やスキーマ単位で一括して表示する機能を備える。
同義定義表示部205は、同義カラム類似評価部1030が同義カラム間での大文字小文字変換やコードと数値の変換等の処理を行う際、ユーザが変換内容を編集する機能を備える。
本実施の形態によれば、同義カラム検出装置が多数のシステムに接続されている場合に、1つのシステムが備えるデータベースの情報が、権限のない他システムのユーザからアクセスされることを回避できる。また、同義カラム検出装置に格納された属性情報の一覧表示や同義カラムの判定結果の一括表示等ができるため、同義カラム検出装置に登録されたデータベースを一元管理することが可能となる。
以上説明したように、本実施の形態に係る同義カラム検出装置(方式)は、同義カラムの検出結果を閲覧あるいは編集可能なユーザを特定する同義情報設定部と、閲覧あるいは編集可能なユーザを管理する同義情報管理部を備える。同義情報設定部は、特定のユーザにのみ同義カラムの検出結果を公開する。
実施の形態3.
本実施の形態について、主に実施の形態1との差異を説明する。
実施の形態1では、データベース操作履歴1180を同義カラム類似評価部1030でのみ利用したが、本実施の形態では、アプリケーションによってデータが同期されていたシステム300間での同義カラムを検出するといった用途に対しても、データベース操作履歴1180を活用する。
図16は、本実施の形態に係る同義カラム検出装置100の構成例を示すブロック図である。
図16において、同義カラム検出装置100は、実施の形態1と同様の構成要素のうち、評価対象選定部1020に代えて、検出候補選定部1290を備える。
検出候補選定部1290は、データベース操作履歴1180として記憶領域1150に格納されている、データベース操作履歴取得部1140により入力された第1履歴情報と第2履歴情報とを処理装置により比較し、比較結果に基づき、前述した第1カラム群と前述した第2カラム群との各々から、同義カラムの候補を抽出する。
実施の形態1では、同義カラムの検出元と検出先の双方をユーザが指定する。本実施の形態では、前述したように、異なるシステム300間でのデータの同期がアプリケーションによって実現されている場合に、同期設計を変更する場合等において、検出候補選定部1290が、データベース操作履歴1180から自動的に同義カラム検出の対象を選定する。より具体的には、度重なる改修やシステム拡張を繰り返し構築されてきたシステム300において、システム300間のデータ連携を洗い出すといった場合への適用を想定する。
検出候補選定部1290の処理フローを図17に示す。
図17において、検出候補選定部1290は、データベース操作履歴取得部1140により記憶領域1150に格納されたデータベース操作履歴1180に出現するスキーマ名、テーブル名、カラム名を取得する(S1071)。
検出候補選定部1290は、取得したスキーマ名、テーブル名、カラム名を基に属性情報1160を処理装置により探索し、スキーマ名、テーブル名、カラム名が一致するカラムのIDを取得する(S1072)。
検出候補選定部1290は、S1071,S1072を検出元システムが出力したデータベース操作履歴1180(前述した第1履歴情報に相当)と検出先システムが出力したデータベース操作履歴1180(前述した第2履歴情報に相当)に対して実施した後、同義カラム類似評価部1030へ取得したカラムIDを入力する(S1073)。同義カラム類似評価部1030は、検出候補選定部1290から入力されたカラムIDに対応するカラムのみを処理対象として、前述した図8のS102の処理を実行する。
本実施の形態によれば、実施の形態1と同様の効果に加えて、同義カラム検出の対象となるカラムをユーザが指定することが困難な場合であってもデータベース操作履歴より同義カラムを格納するカラムの候補集合を属性情報に登録された全カラムから絞り込み、誤った同義カラムの検出を抑制するとともに、判定対象となる候補カラムを削減することから処理時間を短縮できるという効果が得られる。
以上説明したように、本実施の形態に係る同義カラム検出装置(方式)は、データベース操作履歴に出現するスキーマ、テーブル、あるいは、カラム以外を評価対象から除外する検出候補選定部を備える。
以上、本発明の実施の形態について説明したが、これらのうち、2つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、1つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、2つ以上の実施の形態を部分的に組み合わせて実施しても構わない。