JP2020107204A - テーブル比較装置およびテーブル比較方法 - Google Patents
テーブル比較装置およびテーブル比較方法 Download PDFInfo
- Publication number
- JP2020107204A JP2020107204A JP2018247301A JP2018247301A JP2020107204A JP 2020107204 A JP2020107204 A JP 2020107204A JP 2018247301 A JP2018247301 A JP 2018247301A JP 2018247301 A JP2018247301 A JP 2018247301A JP 2020107204 A JP2020107204 A JP 2020107204A
- Authority
- JP
- Japan
- Prior art keywords
- row
- primary key
- value
- same
- tables
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】テーブル比較において、複数テーブルの主キーの値が相互に一致しない場合にも、わずかな計算コストで、データの比較を容易に行えるようにする。【解決手段】テーブル比較装置は、各レコードを、主キーの値に従って整列する。そして、i(i=1〜テーブルCの最終行までループ)行目のテーブルCの主キーの値と、テーブルA、テーブルBの主キーの値が全て同一でないときには、i行目のテーブルCの主キーの値と、i+1行目以降のテーブルA,テーブルBの主キーの値と比較する。同一なものがあるときには、i行目以降のテーブルCのレコードを一段下げ、存在しないときには、i行目以降のテーブルA,テーブルBのレコードを同時に一段下げる。次に、一つのテーブルを基準として、その他のテーブルの中で、同一行に整列し、同一のカラム名のテーブルデータの相違データを検索し、強調表示する。【選択図】 図9
Description
本発明は、テーブル比較装置およびテーブル比較方法に係り、特に、主キーを有するレコードからなる複数のテーブルのデータ検証に用いて好適なテーブル比較装置およびテーブル比較方法に関する。
本発明に関連する技術としては、特許文献1がある。特許文献1に開示された技術は、インフラストラクチャが、その設計仕様通りに構築されているが否かを検証する作業の効率化を向上させるための設定パラメータチェックプログラムに関するものであり、設計書から抽出した設定パラメータをそれぞれスプレッドシート上で整列し、互いに異なる部分をスプレッドシート上で強調表示するものである。これにより、インフラ構築者は、OSやミドルウェアが設計書の記載どおりに設定されているかを容易に把握することができ、検証作業効率の向上に資するものとしている。
大量のデータを蓄積、検索することを可能とするデータベースで扱われるテーブルは、RDB(Relational DataBase)でのテーブルモデルのように、項目(カラム)を定義し、その項目に関するデータセットをレコードとして捉え、レコードを一意的に特定するために項目の一部を主キーとして定義する。このようなテーブルの使用形態は、一般に業務の目的に応じて複数のサーバ上にデータベースを構築し、そのデータベースの中に複数のテーブルを作成して利用される。そして、コンピュータ上で管理されるデータベースシステムのテーブルのデータは、通常、電子データとして記憶装置に格納されており、表示装置上に出力したり、必要ならば、紙等へ一覧として出力することもできる。
一方、業務が大規模になり、データベースで扱うテーブルの数が多くなって、項目の数も多くなると、テーブルに記載された情報の正当性の検証に労力がかかることになる。このようなテーブルに記載された情報の正当性の検証する業務の例としては、検索結果の正しさを確認する場合や、監査等のために外部機関へ情報を提示する場合がある。
検索結果の正しさを確認する業務の例としては、精密機器等の組み立て型産業における使用部品の目視点検が挙げられる。特に、医療機器など安全が求められる分野では、最終製品に使用すべき部品を間違いなく使用していることを確認する必要があり、多数の部品および取引先を設計通りに正しく利用していることを確認する業務が生じている。また監査対応の例としては、不良を一つも認めることができない医薬品・医療機器製造分野のシステム開発におけるコンピュータ化システムバリデーション(Computerized System Validation)という法規制が挙げられる。この法規制により、医薬品・医療機器の開発において導入されるシステムには、正しく設計、開発、導入、運用されていることを文書として示すことが求められている。
上記のような業務において単純な比較であれば一覧化して表示することは容易である。例えば、テーブルXの主キーの値がa,b,c,d、テーブルYの主キーの値もa,b,c,dであるとき、いずれかの主キーに基づいて、一覧を作成することは簡単といえる。しかしながら、組み立て型産業など多くの産業分野においては国内や海外に拠点が複数存在することが多く、それぞれの拠点で開発したサーバ上のデータベースに格納されているデータの範囲や内容を同一とすることは困難となる。また秘密保持の観点から意図的にデータを連携しないこともあり、各拠点で保有する情報量は同一とはならない。このとき各テーブルに存在する主キーの値は様々となり、単純な比較ができないため一覧化して表示することが困難となる。例えば、テーブルXの主キーがa,c,d、テーブルYの主キーがa,b,dであるとき、いずれかの主キーをもとに一覧を作成することができず、主キーの抜けを考慮することが必要となる。
入力テーブルと出力テーブルの比較や手入力情報と自動入力情報の比較など、複数のテーブルを比較することは通常起こりうることであるが、各テーブルの構成の違いにより、同様に主キーが過不足なく一致することはまれである。そのため、主キーの違いを考慮した検索技術および表示技術の開発が広く求められているといえる。
上記特許文献1のようなチェックプログラムでは、設計書と実際の設定値の差異を可視化する点においては、優れた処理を実現している。しかしながら、上記従来技術では、複数のテーブルに存在する主キーの値が過不足なく一致することがまれである場合については考慮されておらず、そのような場合においては、主キーの値の抜けを考慮しながら一覧化することができない。すなわち、主キーの値について、相互に漏れがある場合、対応関係がずれてしまい適切に比較することが困難となる。
また、比較処理においては、データ量が増大することで処理コストも増大するが、そのことへの対応も図られていない。とくに3テーブル以上になると組み合わせの総数も爆発的に増加することから単純な文字列比較だけでは現実的な時間内で対応することが困難な状況となる可能性がある。
本発明の目的は、複数テーブルの主キーの値が相互に一致しない場合にも、わずかな計算コストで、データの比較を容易に行うことができるテーブル比較装置およびテーブル比較方法を提供することにある。
本発明のテーブル比較装置の構成は、好ましくは、行と列のマトリックスにより定義されたテーブルであって、列方向に主キーを含む複数のカラム、行方向のデータとしてレコードにより定義されたm個(m≧2の整数)のテーブルを相互に比較するテーブル比較装置であって、入力テーブル整形処理部と、コンペア処理部と、相違テーブル検索部とを有し、入力テーブル整形処理部は、テーブル1,…,テーブルjの各レコードを、主キーの値に従って、整列し、テーブル1,…,テーブルjを一つのテーブルとして結合して、結合テーブルを作成し、コンペア処理部は、i行目のテーブルjの主キーの値と、i行目のテーブル1,…テーブルj−1の主キーの値が全て同一であるか否かを判定し、i行目のテーブルjの主キーの値と、i行目のテーブル1,…,テーブルj−1の主キーの値が全て同一でないものが存在するとき、i行目のテーブルjの主キーの値と、i+1行目以降のテーブル1,…,テーブルj−1のいずれかの主キーの値が同一であるかを判定し、i行目のテーブルjの主キーの値と、i+1行目以降のテーブル1,…,テーブルj−1のいずれかの主キーの値が同一であるときには、i行目以降のテーブルjのレコードを一段下げ、i行目のテーブルjの主キーの値と、i+1行目以降のテーブル1,…,テーブルj−1のいずれかの主キーの値が同一であるときには、i行目以降のテーブルjのカラムに該当するレコードを一段下げ、テーブル1,…,テーブルj−1のi+1行目以降に、主キーが同一であるものが存在しないときには、i行目以降のテーブル1,…,テーブルj−1のカラムに該当するレコードを同時に一段下げる処理を行い、コンペア処理部は、上記処理をj=2からj=mまで順次jを1インクリメントして、繰り返し行い、相違テーブル検索部は、m個のテーブルから一つのテーブルを基準として、その他のテーブルの中で、同一行に整列し、同一のカラム名のテーブルデータの相違データを検索するようにしたものである。
本発明によれば、複数テーブルの主キーの値が相互に一致しない場合にも、わずかな計算コストで、データの比較を容易に行うことができるテーブル比較装置およびテーブル比較方法を提供することにある。
以下、本発明に係る一実施形態を、図1ないし図13Bを用いて説明する。
先ず、図1を用いて一実施形態に係る情報処理システムの全体構成を説明する。
図1は、テーブル比較装置を用いた情報処理システムの全体構成図である。
図1は、テーブル比較装置を用いた情報処理システムの全体構成図である。
本実施形態の情報処理システムは、医療機器メーカが管理機構である本社10と、国内に国内組立拠点20、海外に海外開発拠点30を有していることを想定する。本実施形態の情報処理システムは、図1に示されるように、本社10に設置されたDBサーバ12、国内組立拠点20に設置されたDBサーバ22、海外開発拠点30に設置されたDBサーバ32、テーブル比較装置100がネットワーク5により接続された形態である。
このようなシステム構成の下で、本社10に設置されたDBサーバ12が部品の仕様を記述したマスターテーブルであるテーブルA10tを、国内組立拠点20に設置されたDBサーバ22がその部品の組立時のデータが記載されたテーブルB20tを、海外開発拠点30に設置されたDBサーバ32がその部品の開発時のデータが記載されたテーブル30tを、それぞれネットワーク5を介して、テーブル比較装置100に出力する。そして、テーブル比較装置100は、それらのテーブルA〜テーブルCに基づいて、比較用のテーブルD100tを作成し、それをプリンタや表示装置に出力する。図では示していないが、テーブル比較装置100は、本社10、国内組立拠点20、海外開発拠点30のいずれに設置されてもよいし、別の研究所などに設置して、部品の研究開発や生産工程の管理に活用されてもよい。
テーブル比較装置100は、入力テーブル整形部110、コンペア処理部120、相違データ検索部130、表示部140の各機能部からなる。入力テーブル整形部110は、入力されたテーブルを整形し、結合により一つのテーブルにまとめることにより、比較可能な状態にする機能部である。コンペア処理部120は、結合されたテーブルにおいて、一行ごとに主キーの値が揃うように整列する機能部である。相違データ検索部130は、ベースとなるテーブルのデータとその他のテーブルのデータを比較し、相違する箇所を検索する機能部である。表示部140は、比較の結果をテーブルとして表示する機能部である。
次に、図2を用いてテーブル比較装置のハードウェア・ソフトウェア構成について説明する。
図2は、テーブル比較装置のハードウェア・ソフトウェア構成図である。
図2は、テーブル比較装置のハードウェア・ソフトウェア構成図である。
テーブル比較装置100のハードウェア構成としては、例えば、図2に示されるパーソナルコンピュータのような一般的な情報処理装置で実現される。
テーブル比較装置100は、CPU(Central Processing Unit)202、主記憶装置204、ネットワークI/F206、表示I/F208、入出力I/F210、補助記憶I/F212が、バスにより結合された形態になっている。
CPU202は、テーブル比較装置100の各部を制御し、主記憶装置204に必要なプログラムをロードして実行する。
主記憶装置204は、通常、RAMなどの揮発メモリで構成され、CPU202が実行するプログラム、参照するデータが記憶される。
ネットワークI/F206は、テーブル比較装置100とネットワーク5と接続するためのインタフェースである。
表示I/F208は、LCD(Liquid Crystal Display)などの表示装置220を接続するためのインタフェースである。
入出力I/F210は、入出力装置を接続するためのインタフェースである。図2の例では、キーボード230とポインティングデバイスのマウス232、プリンタ240が接続されている。
補助記憶I/F212は、HDD(Hard Disk Drive)250やSSD(Solid State Drive)などの補助記憶装置を接続するためのインタフェースである。
HDD250は、大容量の記憶容量を有しており、本実施形態を実行するためのプログラムが格納されている。テーブル比較装置100には、入力テーブル整形プログラム260、コンペア処理プログラム261、相違データ検索プログラム262、表示プログラム263がインストールされている。
入力テーブル整形プログラム260、コンペア処理プログラム261、相違データ検索プログラム262、表示プログラム263は、それぞれ入力テーブル整形部110、コンペア処理部120、相違データ検索部130、表示部140の機能を実行するプログラムである。
次に、図3ないし図13Bを用いてテーブル比較装置が行う処理について説明する。
先ず、図3を用いて、テーブル比較装置がテーブル比較を行い、相違データを分かりやすい形式で表示する一連の処理の概要を説明する。
図3は、テーブル比較装置がテーブル比較を行い、相違データを分かりやすい形式で表示する一連の処理の概要を示すフローチャートである。
図3は、テーブル比較装置がテーブル比較を行い、相違データを分かりやすい形式で表示する一連の処理の概要を示すフローチャートである。
テーブル比較装置100の入力テーブル整形部110は、入力されてきたテーブルに対して、入力テーブル整形処理を行う(S01)。テーブルは、行と列のマトリックスにより定義されたテーブルである。入力されるテーブルの指定は、図には示さなかったが、ユーザが図2に示した表示装置220に表示される指定画面を参照して、キーボード230やマウス232を使用して行うことができる。入力テーブル整形処理では、入力されたテーブルの主キーの値に基づいて、主キーの値が昇順または降順になるようにレコードをソートする。次に、主キーの値に対して、ハッシュ計算を行い、そのハッシュ値を有するカラムをそれぞれのレコードに付け加えて、最後に比較するテーブルの全てのカラムを結合して、一つのテーブルとする。なお、入力テーブル整形処理の具体例と、ハッシュ計算の詳細は、後に説明する。
次に、テーブル比較装置100のコンペア処理部120は、コンペア処理を行う(S02)。コンペア処理は、入力テーブル整形処理により結合されたテーブルの入力されたテーブルの部分の各々のカラムの値を比較して、見やすい形式にする処理である。コンペア処理の詳細と、具体例については、後に説明する。
次に、テーブル比較装置100の相違データ検索部130は、コンペア処理が行われたテーブルに対して、相違データ検索処理を行い、ベースとなるテーブルの部分に対して、他のテーブルの部分の相違するデータを検索する(S03)。
次に、テーブル比較装置100の表示部140は、相違データ検索処理が行われたテーブルに対して、相違データの部分を強調表示した表示データを作成し、表示装置220などに出力して、表示を行う(S04)。なお、相違データの部分を強調表示した表示データの具体例は、後に説明する。
次に、図4および図5を用いて、本実施形態におけるハッシュ計算の一例を説明する。
図4は、ハッシュ計算の一例を示す図である。
図5は、各コード体系におけるハッシュの適用対象とされるコードの取りうる値を示す表である。
図4は、ハッシュ計算の一例を示す図である。
図5は、各コード体系におけるハッシュの適用対象とされるコードの取りうる値を示す表である。
本実施形態のハッシュ計算は、主キーの値の文字列比較を高速化するために行われるものである。そのため、主キーのデータ形式が数値型ではなく、文字型で文字コードにより表現されている場合に有効である。例えば、日本語の文字コードは、16進数表記において、各バイトで後半4ビットの方が前半4ビットよりも取りうる値のバリエーションが多い。本手法は、そのことに着目したハッシュ計算方法である。本ハッシュ計算を使うことによって、以降の比較ロジックにおいて文字列比較に要する処理コストを低減することができる。
本実施形態のハッシュ計算は、図4に示されるように、主キーがNバイトのときには、ハッシュ値=[1バイト目の後半4ビット]×160+[2バイト目の後半4ビット]×161+[3バイト目の後半4ビット]×162+…+[Nバイト目の後半4ビット]16N−1で表される。ただし、これは一例であり、ハッシュ計算の方法は、ハッシュ値が異なれば、主キーの値が異なっていることを保障できるものであればよい。
なお、後半4ビットのバリエーションの多さに着目した計算方法は日本語だけでなく、その他の言語に対しても有効である。各言語のUTF−8とSJISのコード体系におけるバリエーションを示すと図5のようになる。この表の表記は、例えば、UTF−8の日本語における1バイト目前半のコード表記は、1通り(16進数で表すとE)であり、1バイト目後半のコード表記は、7通り(16進数で表すと3から9の値)であることを示している。この表から分かるように、日本語以外の言語においても文字コードの特性上、後半4ビットの取りうる範囲が大きい。この特徴に着目することで衝突の少ない(特性のよい)ハッシュ値を得ることができる。
次に、図6を用いて入力テーブル整形処理におけるテーブル操作の具体例について説明する。
図6は、入力テーブル整形処理におけるテーブル操作の具体例を示す図である。
図6は、入力テーブル整形処理におけるテーブル操作の具体例を示す図である。
本実施形態では、図6に示される5行3列のテーブルA、5行2列のテーブルB、5行2列のテーブルCを入力とする例を説明する(図6の(1−I))。各テーブルの1カラム目は、主キーの値が格納されているものとする。先ず、入力テーブル整形処理S01では、各テーブルの主キーの値により、ソートして整列する。図6の例では、昇順にソートしている。そして、図4により示した方法により、各テーブルの主キーのハッシュ値を求めて、主キーのカラムの左側に新たにハッシュ値を表すカラム(Hash)を作成し、その値を代入する((1−II))。
そして、ソートされ、ハッシュ値のカラムが追加された各テーブルをまとめて、一つのテーブルDとする。以下では、テーブルDのテーブルAに該当する部分のカラム(テーブルDの1カラム目の「Hash」、2カラム目の「主キー」、3カラム目の「データ1」、4カラム目の「データ2」、5カラム目の「データ3」)を、「テーブルAのカラム」ということにする。「テーブルBのカラム」、「テーブルCのカラム」の定義も同様である。
次に、図7ないし図8Bを用いてテーブルが二つの場合のコンペア処理の処理について説明する。
図7は、テーブルが二つの場合のコンペア処理の一例を示すフローチャートである。
図8A、図8Bは、テーブルA、テーブルBでのコンペア処理におけるテーブル操作の具体例を示す図である。
図7は、テーブルが二つの場合のコンペア処理の一例を示すフローチャートである。
図8A、図8Bは、テーブルA、テーブルBでのコンペア処理におけるテーブル操作の具体例を示す図である。
コンペア処理の説明も、入力テーブル整形処理で採り上げたテーブルA、テーブルB、テーブルCを例に採って説明する。
最初は、テーブルAとテーブルBについて、コンペア処理を行う。
テーブル比較装置100のコンペア処理部120は、テーブルBのi=1行目から最終行まで、一行ごとに、iを1インクリメントしながら、S201〜S205の処理を実行する(S200〜S206)。
先ず、i行目のテーブルBのハッシュ値と、テーブルAのハッシュ値が同一であるか否かを比較し(S201)、i行目のハッシュ値が同一であるときには(S201:YES)、S202に行き、同一でないときには(S201:NO)、S203に行く。
i行目のハッシュ値が同一であるときには、i行目のテーブルBの主キーの値と、i行目のテーブルAの主キーの値が同一であるか否かを判定し(S202)、同一であるときには(S202:YES)、S206に行き、そうでないときには(S202:NO)、S203に行く。
i行目のハッシュ値が同一でないとき、または、i行目のテーブルBの主キーの値と、i行目のテーブルAの主キーの値が同一でないときには、次に、i行目のテーブルBの主キーの値と、i+1行目以降のテーブルAの主キーの値が同一であるか(すなわち、i+1行目以降のテーブルAのレコードに、主キーの値が、i行目のテーブルBの主キーの値と同一であるものが存在するか)(S203)、テーブルAのi+1行目以降に、主キーが同一であるものが存在するとき(S203:YES)、S204に行き、同一であるものが存在しないときには(S203:NO)、S205に行く。
これは、ハッシュ値が異なる場合では、確実に主キーの値も異なることになるので、主キーの値の比較を行わないと言う趣旨である。
テーブルAのi+1行目以降に、主キーが同一であるものが存在するときには、i行目以降のテーブルBのレコードを一段下げる操作を行う(S204)。
テーブルAのi+1行目以降に、主キーが同一であるものが存在しないときには、i行目以降のテーブルAのレコードを一段下げる操作を行う(S205)。ただし、iの値が、テーブルAの最終行の行数を超えているときには、なにもしない。
このS201〜S205の処理を、テーブルBのi=1から最終段まで繰り返すことにより、テーブルAと主キーの値とテーブルBと主キーの値が一致したテーブルを得ることができる。
次に、図8A、図8Bを用いてテーブルA、テーブルBでのコンペア処理におけるテーブル操作の具体例について説明する。
テーブルBのi=1のとき、テーブルAとテーブルBの主キーの値、ハッシュ値は、共に一致しているので、S201→S202の流れで、S204、S205の処理は実行されずに(なにも行わずに)、次のループに行く((2−I))。
次に、iをインクリメントし、テーブルBのi=2のときに、テーブルBの主キー「K4」のハッシュ値と、テーブルAの主キー「K2」のハッシュ値は、一致しないので(S201:NO)、2行目のテーブルBの主キーの値「K4」と、3行目以降のテーブルAの主キーの値が同一であるか否かを判定する(S203)。
テーブルAの4行目が主キーの値が「K4」であるので(S203:YES)、2行目以降のテーブルBのレコードを一段下げる(S204)((2−II))。
次に、iをインクリメントし、テーブルBのi=3のときに、テーブルBの主キー「K4」のハッシュ値と、テーブルAの主キー「K3」のハッシュ値は、一致しないので(S201:NO)、3行目のテーブルBの主キーの値「K4」と、4行目以降のテーブルAの主キーの値が同一であるか否かを判定する(S203)。
テーブルAの4行目が主キーの値「K4」であるので(S203:YES)、3行目以降のテーブルBのレコードを一段下げる(S204)((2−III))。この段階で、テーブルAとテーブルBの主キーの値「K4」のレコードが揃った(同じ段のレコードになった)ことになる。
次に、iをインクリメントし、テーブルBのi=4のときに、テーブルBの主キーの値、ハッシュ値、テーブルAの主キーの値、ハッシュ値は、共に一致しているので、S201→S202の流れで、S204、S205の処理は実行されずに(なにも行わずに)、次のループに行く((2−III))。
次に、iをインクリメントし、テーブルBのi=5のときに、テーブルBの主キー「K5」のハッシュ値と、テーブルAの主キー「K6」のハッシュ値は、一致しないので(S201:NO)、5行目のテーブルBの主キーの値「K5」と、6行目以降のテーブルAの主キーの値が同一であるか否かを判定する(S203)。
テーブルAの6行目以降には、レコードがないので(S203:NO)、5行目以降のテーブルAのレコードを一段下げる(S205)((2−IV))。この段階で、テーブルBの主キー「K5」に対して、テーブルAの主キーには対応する値がないため、空白行がくる。
次に、iをインクリメントし、テーブルBのi=6のときに、テーブルBの主キーの値、ハッシュ値、テーブルAの主キーの値、ハッシュ値は、共に一致しているので、S201→S202の流れで、S204、S205の処理は実行されずに(なにも行わずに)、次のループに行く((2−IV))。
次に、iをインクリメントし、テーブルBのi=7のときに、テーブルAのハッシュ値は、空白で(S201:NO)、7行目のテーブルBの主キーに対し、8行目以降のテーブルAの主キーは存在しないので同一になることはなく(S203:NO)、8行目以降のテーブルAを一段下げる(S205)。ただしテーブルAの8行目以降にデータは無いので、(2−IV)のままである。テーブルBの最終行に達したので、ループを抜け処理を終了する。
次に、図9ないし図10Cを用いてテーブルが三つの場合のコンペア処理の処理について説明する。
図9は、テーブルが三つの場合のコンペア処理の一例を示すフローチャートである。
図10A、図10B、図10Cは、テーブルA、テーブルB、テーブルCでのコンペア処理におけるテーブル操作の具体例を示す図である。
図9は、テーブルが三つの場合のコンペア処理の一例を示すフローチャートである。
図10A、図10B、図10Cは、テーブルA、テーブルB、テーブルCでのコンペア処理におけるテーブル操作の具体例を示す図である。
テーブルが三つの場合は、図7、図8A、図8Bに示したように、テーブルA、テーブルBでのコンペア処理が完了していることが前提である。
テーブル比較装置100のコンペア処理部120は、テーブルCのi=1行目から最終行まで、一行ごとに、iを1インクリメントしながら、S301〜S305の処理を実行する(S300〜S306)。
先ず、i行目のテーブルC、テーブルAのハッシュ値またはテーブルBのハッシュ値が同一であるか否かを比較し(S301)、i行目のハッシュ値が同一であるときには(S301:YES)、S302に行き、同一でないときには(S301:NO)、S303に行く。
i行目のハッシュ値が同一であるときには、i行目のテーブルCの主キーの値と、i行目のテーブルBの主キーの値、または、i行目のテーブルAの主キーの値が同一であるか否かを判定し(S302)、同一であるときには(S302:YES)、S306に行き、そうでないときには(S302:NO)、S303に行く。
i行目のハッシュ値が同一でないとき、または、i行目のハッシュ値が同一であり、かつ、i行目のテーブルCの主キーの値と、i行目のテーブルBの主キーの値と、i行目のテーブルAの主キーの値が全て同一でないときには、次に、i行目のテーブルCの主キーの値と、i+1行目以降のテーブルAの主キーの値またはテーブルBの主キーの値が同一であるか(すなわち、i+1行目以降のテーブルAのレコードまたはi+1行目以降のテーブルBのレコードに、主キーの値が、i行目のテーブルCの主キーの値と同一であるものが存在するか)否かを判定し(S303)、テーブルAまたはテーブルBのi+1行目以降に、主キーが同一であるものが存在するときには(S303:YES)、S304に行き、同一であるものが存在しないときには(S303:NO)、S305に行く。
テーブルAまたはテーブルBのi+1行目以降に、主キーが同一であるものが存在するときには、i行目以降のテーブルCのレコードを一段下げる操作を行う(S304)。
テーブルAのi+1行目以降に、主キーが同一であるものが存在しないときには、i行目以降のテーブルAのレコード、および、テーブルBのレコードを同時に一段下げる操作を行う(S305)。ただし、iの値が、テーブルAの最終行の行数とテーブルBの最終行の行数の大きい方を超えているときには、なにもしない。
このS301〜S305の処理を、テーブルCのi=1から最終段まで繰り返すことにより、テーブルA、テーブルBと主キーの値とテーブルCと主キーの値が一致したテーブルを得ることができる。
次に、図10A、図10B、図10Cを用いてテーブルA、テーブルB、テーブルCでのコンペア処理におけるテーブル操作の具体例について説明する。
テーブルBのi=1のとき、テーブルA、テーブルB、テーブルCのハッシュ値、主キーの値は、共に一致しているので、S301→S302の流れで、S304、S305の処理は実行されずに(なにも行わずに)。次のループに行く((3−I))。
次に、iをインクリメントし、テーブルCのi=2のときに、テーブルCの主キー「K3」のハッシュ値と、テーブルAの主キー「K2」のハッシュ値は一致しないので(S301:NO)、2行目のテーブルCの主キーの値「K3」と、3行目以降のテーブルAの主キーの値またはテーブルBの主キーの値が同一であるか否かを判定する(S303)。
テーブルAの3行目が主キーの値が「K3」であるので(S303:YES)、2行目以降のテーブルCのレコードを一段下げる(S305)((3−II))。
次に、iをインクリメントし、テーブルCのi=3のときに、テーブルA、テーブルCのハッシュ値、主キーの値は、共に一致しているので、S301→S302の流れで、S304、S305の処理は実行されずに(なにも行わずに)。次のループに行く((3−II))。ここで、テーブルBの主キーの値が空白であることに留意する。テーブルAとテーブルBのコンペア処理は終了しているが、(3−II)の状態のように、Aの主キーの値とテーブルBの主キーの値のいずれかが空白で、異なることはありうる。
次に、iをインクリメントし、テーブルCのi=4の主キー「K8」は、テーブルAの主キー、テーブルBの主キーにないので、4行目以降のテーブルAおよびテーブルBのレコードを一段下げる(S305)((3−III))。
次に、iをインクリメントし、テーブルCのi=5の主キー「K9」は、テーブルAの主キー、テーブルBの主キーにないので、5行目以降のテーブルAおよびテーブルBのレコードを一段下げ(S305)、続いて、テーブルCのi=6の主キー「K10」は、テーブルAの主キー、テーブルBの主キーにないので、6行目以降のテーブルAおよびテーブルBのレコードを一段下げる(S305)((3−IV))。
これで、テーブルCの最終行の処理は、終了したので、ループを抜け、処理を終了する。
次に、図11を用いてテーブルがm個(m≧2)の場合のコンペア処理について説明する。
図11は、テーブルがm個ある場合のコンペア処理の一例を示すフローチャートである。
図11は、テーブルがm個ある場合のコンペア処理の一例を示すフローチャートである。
ここでは、テーブルj(j=1,…,m)のテーブルがあるものとする。
テーブル比較装置100のコンペア処理部120は、テーブルjについて、jを1インクリメントしながら、j=2,…,mまで、S400〜S406の処理を繰り返す(S10〜S12)。
テーブルjのi=1行目から最終行まで、一行ごとに、iを1インクリメントしながら、S401〜S405の処理を実行する(S400〜S406)。
先ず、i行目のテーブルjのハッシュ値と、テーブル1,…,テーブルj−1のハッシュ値のいずれかが同一であるか否かを比較し(S401)、i行目のハッシュ値が同一であるときには(S401:YES)、S402に行き、同一でないときには(S401:NO)、S403に行く。
i行目のハッシュ値が同一でないときには、i行目のテーブルjの主キーの値と、i行目のテーブル1,…テーブルj−1の主キーの値のいずれかが同一であるか否かを判定し(S402)、同一であるときには(S402:YES)、S406に行き、そうでないときには(S402:NO)、S403に行く。
i行目のハッシュ値が同一であり、i行目のテーブルjの主キーの値と、i行目のテーブル1,…テーブルj−1の主キーの値が全て同一でないときには、次に、i行目のテーブルjの主キーの値と、i+1行目以降のテーブル1,…,テーブルj−1のいずれかの主キーの値が同一であるか(すなわち、i+1行目以降のテーブル1,…,テーブルj−1のいずれかのレコードに、主キーの値が、i行目のテーブルjの主キーの値と同一であるものが存在するか)を判定し(S403)、テーブル1,…,テーブルj−1のi+1行目以降に、主キーが同一であるものが存在するときには(S403:YES)、S404に行き、同一であるものが存在しないときには(S403:NO)、S405に行く。
テーブル1,…,テーブルj−1のi+1行目以降に、主キーが同一であるものが存在するとき、i行目以降のテーブルjのレコードを一段下げる操作を行う(S404)。
テーブル1,…,テーブルj−1のi+1行目以降に、主キーが同一であるものが存在しないときには、i行目以降のテーブル1,…,テーブルj−1のレコードを同時に一段下げる操作を行う(S405)。ただし、iの値が、テーブル1,…,テーブルj−1の最終行の行数の一番大きいものを超えているときには、なにもしない。
このS401〜S405の処理を、テーブルjのi=1から最終段まで繰り返すことにより、テーブル1,…,テーブルj−1と主キーの値とテーブルjと主キーの値が一致したテーブルを得ることができる。
そして、テーブルj(j=2…,m)まで繰り返すことにより、最終的に、テーブル1からテーブルmまでのm個のテーブルの主キーの値が一致したテーブルを得ることができる。
次に、図12を用いてテーブルが三つの場合のテーブルの相違データを表わす画面について説明する。
図12は、テーブルが三つの場合の相違データを表わす画面を示す図である。
図12は、テーブルが三つの場合の相違データを表わす画面を示す図である。
ここでは、図6で示した入力テーブル整形処理、図9、図10A〜図10Cで示したコンペア処理で例に採ったテーブルA、テーブルB、テーブルCからテーブルDを結果として出力する場合を説明する。
テーブル比較装置100の相違データ検索部130は、コンペア処理の結果出力されるテーブルDについて、相違箇所を検索する。ここでは、テーブルAがマスターテーブルであり、このテーブルAをベースに相違するデータ(同じカラム名を有するカラムで異なった値を持つデータ)を検索し、ユーザに提示するものとする。そして、テーブル比較装置100の表示部140は、相違データ検索部130の見つけた相違箇所をハイライト、背景色の色を変える、文字色を変える、ブリンクなどの手段により、強調表示することにより、ユーザに相違箇所を把握しやすい形で、画面表示や印刷表示を行う。強調表示は、その他、視覚に捉えられるものであればよい。これにより、ユーザは、テーブルが多数にわたり、主キーの値が互いに異なったテーブルでも、データの相違を迅速に把握することが可能になる。
ユーザが相違箇所を見つけるときには、同一の値の主キーの位置が行単位で揃っていることにより、各行のレコードをサーチして確認すればよいので、極めて容易に相違箇所を発見することができる。また、相違データを強調表示しているので、さらに、迅速に相違箇所を把握することができる。
次に、図13A、図13Bを用いて、図1の情報システムにおいて、テーブル比較装置が出力するテーブルの一例の相違データの表わす画面について説明する。
図13Aは、図1の情報システムにおいて、入力されたテーブルに基づいて、入力テーブル整形処理を行ったテーブルの一例を示す図である。
図13Bは、図1の情報システムにおいて、テーブル比較装置が出力するテーブルの一例の相違データの表わす画面を示す図である。
例えば、組み立て型産業では拠点ごとに有する管理情報の差から、部品表において管理対象となる項目が異なることがある。整合性を確認するには、目視により1件ずつ確認していくことが確実であるが対象も多く現実的ではない。またデータベース検索により一致を確認することはできるが、一覧として視覚的に確認できるわけではなく、実際のデータ把握作業としては認識しにくいものであった。それに対し、本実施形態のテーブル比較装置が出力するテーブルでは、主キーをずらしながら、一行単位で一致させており、図13A、図13Bに示されるように、一覧で視覚的に主キーやレコードの過不足や誤りを確認することができる。
以上説明してきたように、本実施形態のテーブル比較装置は、互いの主キーに抜けがある複数テーブルにおいて、コンペア処理により、主キーを自動で一致させ、主キーの漏れや、相互のデータ誤りを確実に検知し、注意すべき箇所を視覚情報として提供する。
とくに、文字列の比較を行う処理(主キーを検索するとき)においては、予め、文字コードの特性(後半4ビットの取りうるバリエーションが多いという点)に着目したハッシュ計算を用いて算出したハッシュ値による比較を行う。これにより、むだな文字列比較を少なくし、効率的な処理を実現している。
以上のように、本実施形態のテーブル比較装置によれば、比較するテーブルと、比較されるテーブル間で主キーの値に違いが存在しても、主キーの値の抜けを考慮しながら整列し比較をすることが可能となる。一般的に3テーブル以上になると、主キーの値の不一致の取りうる場合の組み合わせが爆発的に増加し、複雑度が高く人手による評価は極めて困難となるが、本実施形態では、3テーブル以上で、主キーの値の組合せ数が多い場合にも、容易に比較可能になる。
10…本社、20…国内組立拠点、30…海外開発拠点、
12,22,32…DBサーバ、
100…テーブル比較装置、110…入力テーブル整形部、120…コンペア処理部、130…相違データ検索部、140…表示部
12,22,32…DBサーバ、
100…テーブル比較装置、110…入力テーブル整形部、120…コンペア処理部、130…相違データ検索部、140…表示部
Claims (8)
- 行と列のマトリックスにより定義されたテーブルであって、列方向に主キーを含む複数のカラム、行方向のデータとしてレコードにより定義されたm個(m≧2の整数)のテーブルを相互に比較するテーブル比較装置であって、
入力テーブル整形処理部と、
コンペア処理部と、
相違テーブル検索部とを有し、
前記入力テーブル整形処理部は、
テーブル1,…,テーブルjの各レコードを、主キーの値に従って、整列し、
テーブル1,…,テーブルjを一つのテーブルとして結合して、結合テーブルを作成し、
前記コンペア処理部は、
i行目のテーブルjの主キーの値と、i行目のテーブル1,…,テーブルj−1の主キーの値のいずれが同一であるか否かを判定する処理と、
i行目のテーブルjの主キーの値と、i行目のテーブル1,…,テーブルj−1の主キーの値が全て同一でないときには、i行目のテーブルjの主キーの値と、i+1行目以降のテーブル1,…,テーブルj−1のいずれかの主キーの値が同一であるかを判定する処理と、
i行目のテーブルjの主キーの値と、i+1行目以降のテーブル1,…,テーブルj−1のいずれかの主キーの値が同一であるときには、i行目以降のテーブルjのカラムに該当するデータを一段下げる処理と、
テーブル1,…,テーブルj−1のi+1行目以降に、主キーが同一であるものが存在しないときには、i行目以降のテーブル1,…,テーブルj−1のカラムに該当するデータを同時に一段下げる処理とを、j=2からj=mまで順次jを1インクリメントして、繰り返し行い、
前記相違テーブル検索部は、
前記m個のテーブルから一つのテーブルを基準として、その他のテーブルの中で、同一行に整列し、同一のカラム名のテーブルデータの相違データを検索することを特徴とするテーブル比較装置。 - さらに、表示部を有し、
前記表示部は、前記m個のテーブルから一つのテーブルを基準として、前記相違テーブル検索部が検索した相違データを強調表示することを特徴とする請求項1記載のテーブル比較装置。 - 前記入力テーブル整形処理部は、
各レコードの主キーの値から、それぞれハッシュ値を生成し、
前記コンペア処理部は、
i行目のテーブルjのハッシュ値と、テーブル1,…,テーブルj−1のハッシュ値のいずれかが同一であるか否かを比較し、i行目のハッシュ値が同一であるときにのみ、
i行目のテーブルjの主キーの値と、i行目のテーブル1,…テーブルj−1の主キーの値が全て同一であるか否かを判定することを特徴とする請求項1記載のテーブル比較装置。 - 前記入力テーブル整形処理部は、
各レコードの主キーの値に割当てられる各バイトの後半4ビットの値から、それぞれハッシュ値を生成することを特徴とする請求項1記載のテーブル比較装置。 - 情報処理装置により、行と列のマトリックスにより定義されたテーブルであって、列方向に主キーを含む複数のカラム、行方向のデータとしてレコードにより定義されたm個(m≧2の整数)のテーブルを相互に比較するテーブル比較方法であって、
前記情報処理装置は、
入力テーブル整形処理部と、
コンペア処理部と、
相違テーブル検索部とを有し、
前記入力テーブル整形処理部が、テーブル1,…,テーブルjの各レコードを、主キーの値に従って、整列するステップと、
前記入力テーブル整形処理部が、テーブル1,…,テーブルjを一つのテーブルとして結合して、結合テーブルを作成するステップと、
前記コンペア処理部が、以下の(1)〜(4)を、j=2からj=mまで順次jを1インクリメントして、繰り返し行うステップと、
(1)i行目のテーブルjの主キーの値と、i行目のテーブル1,…,テーブルj−1の主キーの値のいずれかが同一であるか否かを判定するステップ、
(2)i行目のテーブルjの主キーの値と、i行目のテーブル1,…テーブルj−1の主キーの値が全て同一でないときには、i行目のテーブルjの主キーの値と、i+1行目以降のテーブル1,…,テーブルj−1のいずれかの主キーの値が同一であるかを判定するステップ、
(3)i行目のテーブルjの主キーの値と、i+1行目以降のテーブル1,…,テーブルj−1のいずれかの主キーの値が同一であるときには、i行目以降のテーブルjのカラムに該当するデータを一段下げるステップ、
(4)テーブル1,…,テーブルj−1のi+1行目以降に、主キーが同一であるものが存在しないときには、i行目以降のテーブル1,…,テーブルj−1のカラムに該当するデータを同時に一段下げるステップ、
前記相違テーブル検索部が、前記m個のテーブルから一つのテーブルを基準として、その他のテーブルの中で、同一行に整列し、同一のカラム名のテーブルデータの相違データを検索するステップとを有することを特徴とするテーブル比較方法。 - さらに、前記情報処理装置は、表示部を有し、
前記表示部が、前記m個のテーブルから一つのテーブルを基準として、前記相違テーブル検索部が検索した相違データを強調表示するステップを有することを特徴とする請求項5記載のテーブル比較方法。 - さらに、前記入力テーブル整形処理部が、
各レコードの主キーの値から、それぞれハッシュ値を生成するステップと、
前記コンペア処理部は、
i行目のテーブルjのハッシュ値と、テーブル1,…,テーブルj−1のハッシュ値のいずれかが同一であるか否かを比較し、i行目のハッシュ値が同一であるときにのみ、
i行目のテーブルjの主キーの値と、i行目のテーブル1,…テーブルj−1の主キーの値が全て同一であるか否かを判定することを特徴とする請求項5記載のテーブル比較方法。 - 前記入力テーブル整形処理部は、
各レコードの主キーの値に割当てられる各バイトの後半4ビットの値から、それぞれハッシュ値を生成することを特徴とする請求項5記載のテーブル比較方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018247301A JP2020107204A (ja) | 2018-12-28 | 2018-12-28 | テーブル比較装置およびテーブル比較方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018247301A JP2020107204A (ja) | 2018-12-28 | 2018-12-28 | テーブル比較装置およびテーブル比較方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020107204A true JP2020107204A (ja) | 2020-07-09 |
Family
ID=71450893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018247301A Pending JP2020107204A (ja) | 2018-12-28 | 2018-12-28 | テーブル比較装置およびテーブル比較方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020107204A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113177044A (zh) * | 2021-04-08 | 2021-07-27 | 武汉达梦数据库股份有限公司 | 一种基于数据库b树快速对比数据的方法和装置 |
-
2018
- 2018-12-28 JP JP2018247301A patent/JP2020107204A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113177044A (zh) * | 2021-04-08 | 2021-07-27 | 武汉达梦数据库股份有限公司 | 一种基于数据库b树快速对比数据的方法和装置 |
CN113177044B (zh) * | 2021-04-08 | 2022-05-27 | 武汉达梦数据库股份有限公司 | 一种基于数据库b树快速对比数据的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9195952B2 (en) | Systems and methods for contextual mapping utilized in business process controls | |
CN116992006B (zh) | 一种大语言模型驱动的链式自然语言交互方法与系统 | |
CN111400354B (zh) | 基于mes系统的机床制造bom存储查询及树形结构构建方法 | |
US8898635B2 (en) | System and method for automatic impact variable analysis and field expansion in mainframe systems | |
JP2008134705A (ja) | データ処理方法及びデータ分析装置 | |
JP2020107204A (ja) | テーブル比較装置およびテーブル比較方法 | |
EP3999917B1 (en) | Method and system for generating a digital representation of asset information in a cloud computing environment | |
US11928421B2 (en) | Technical document error detection | |
WO2004038582A1 (ja) | データ処理方法およびデータ処理プログラム | |
CN113505069B (zh) | 一种测试数据分析方法及系统 | |
CN112269806B (zh) | 数据查询方法、装置、设备以及计算机存储介质 | |
CN114238326A (zh) | 数据批量对比方法、装置、设备及存储介质 | |
JP5316170B2 (ja) | 財務分析支援プログラム、財務分析支援装置および財務分析支援方法 | |
JP4728073B2 (ja) | データベース変更点検索方法および装置 | |
US20160070698A1 (en) | Database Management System Tools for An Automated Work to Stage Process | |
JP5984629B2 (ja) | マスタファイル差分自動出力装置 | |
CN112035364A (zh) | 功能测试结果评估方法及装置 | |
JP2014149613A (ja) | 項目間関連解析装置 | |
CN113010611A (zh) | 一种自动生成关系型数据库表间关系的方法和系统 | |
JP6665637B2 (ja) | プログラム作成支援システム | |
JP2001265580A (ja) | レビュー支援システム及びそれに用いるレビュー支援方法 | |
WO2024095715A1 (ja) | 環境負荷評価装置および方法 | |
JP2020027368A (ja) | 解析装置 | |
CN115826928B (zh) | 程序生成方法、系统、电子设备及计算机可读存储介质 | |
JP2020057281A (ja) | プラント機器情報管理システム |