(A)主たる実施形態
以下、本発明によるデータベースシステム、データ処理プログラム、及びデータ処理方法の一実施形態を、図面を参照しながら詳述する。
(A−1)実施形態の構成
図1は、この実施形態のデータベース(以下、「DB」とも呼ぶ)システム1の全体構成を示すブロック図である。
DBシステム1は、2つのDBサーバ10、20を有している。また、DBサーバ10、20は、それぞれネットワークNに接続しているものとする。
DBサーバ10、20は、図示しないDBクライアントから与えられたトランザクションの処理を行うものである。DBサーバ10、20は、PCなどの情報処理装置(1台に限定されず、複数台を分散処理し得るようにしたものであっても良い。)上に、プログラム(実施形態に係るデータ処理プログラムやデータベースのミドルウェアを含む)をインストールすることにより構築されるものであるが、機能的には図1のように表すことができる。なお、DBサーバ10、20は同じ構成としてもよいし、一部が異なる構成としてもよい。なお、DBシステム1を構成するDBサーバ20の台数は3台以上としてもよい。
この実施形態では、DBサーバ10がデータベースの移行元(移行前)となるDBサーバ(以下、「移行元DBサーバ」とも呼ぶ)であり、DBサーバ20がデータベースの移行先(移行後)となるDBサーバ(以下、「移行先DBサーバ」とも呼ぶ)であるものとして説明する。なお、DBシステム1において、データの移行元又は移行先となるDBサーバは限定されないものであり、任意の組み合わせを適用可能であるものとする。
次に、移行元DBサーバ10と移行先DBサーバ20の機能的な構成について説明する。図1に示すように、この実施形態では、移行元DBサーバ10と移行先DBサーバ20は、いずれも基本的な構成(大別された機能的構成)は同様なものとして図示することができる。例えば、ハードウェア更新等で、移行元DBサーバ10から移行先DBサーバ20にデータベース(データベースを構成する表)を移行する場合、通常は、移行先DBサーバ20の方が、OS、データベースミドルウェア等のソフトウェアがバージョンアップした状態となるが、基本的な構成(大別された機能的構成)としては同様の構成として図示される。
図1に示すように、DBサーバ10、20は、大別するとDBMS11、21、データ記憶部12、22、及びデータベース制御部13、23を有している。
DBサーバ10、20は、いずれもPCやワークステーション等のコンピュータに、OS(ミドルウェア)をインストール及びデータベースミドルウェアをインストールすることにより構築されたプラットフォーム上で実現されているものとする。DBサーバ10、20にインストールするOSやデータベースミドルウェアについては限定されないものであるが、この実施形態の例では、UNIX(登録商標)系のOS(例えば、種々のLINUX(登録商標)系OS)とORACLE(登録商標)データベースが適用されるものとして説明する。
DBMS11、21は、DB管理システム(Data Base Management System)の機能を担っており、例えば、図示しないDBクライアントやデータベース制御部13、23から要求(例えば、SQL(Structured Query Language)文で記述されたトランザクション)を受け取り、データ記憶部12、22のデータベース(表)を制御するなどして処理を行うものである。DBMS11、21は、例えば、種々のデータベースシステム(データベースミドルウェア)を用いて構築することができる。移行元DBサーバ10よりも、移行先DBサーバ20の方が新しく構築されたサーバの場合、移行先DBサーバ20のDBMS21で用いられるミドルウェア(データベースミドルウェア)は、移行元DBサーバ10で用いられるものと異なる場合(例えば、新しいバージョンのデータベースミドルウェアである場合)もあり得る。
データ記憶部12、22は、DBサーバ10、20において、データベースのデータを記憶する機能(データベース部の機能)などを担っており、例えば、DBMS11、21の制御に基づいて記憶しているデータの更新を行う。
データベース制御部13、23は、DBMS11、21(DBMS11、21のライブラリ)を用いてデータベース(例えば、データベースを構成する表)を制御する機能を担っている。特に、この実施形態では、データベース制御部13、23が、データベース移行の際のコンペア処理の制御を行うものとして説明する。
この実施形態では、データベース制御部13、23は、UNIX系OS上のシェルスクリプトを用いて構成されているものとして説明する。なお、データベース制御部13、23(データベース制御部13、23を構成する各構成要素)を実現する手段は、シェルスクリプトに限らず、任意の言語により記述されたプログラムがコンパイルされた実行可能ファイル(バイナリ形式の実行可能ファイル)であってもよい。
移行元DBサーバ10のデータベース制御部13には、データ出力処理部131及びデータ送信部132が含まれている。
データ出力処理部131は、DBMS11を制御して、DBMS11(データ記憶部12)上にセットアップされたデータベース(データベースを構成する表)の各データ(レコード)を読み出して、文字列データに変換して出力(例えば、テキストデータのファイルとして出力)する処理を行う。以下では、データ出力処理部131が出力するテキストデータのファイルを「移行元データファイル」と呼ぶものとする。データ出力処理部131は、例えば、特許文献1と同様の方式により移行元データファイルを出力する処理を行うようにしてもよい。
データ送信部132は、データ出力処理部131が出力した移行元データファイルを、移行先DBサーバ20側に送信(供給)する処理を行う。移行元DBサーバ10から移行先DBサーバ20に移行元データファイルを送信する手順や方式については限定されないものであり、例えば、FTP(File Transfer Protocol)や種々のネットワークファイルシステムを用いたファイルコピーにより実現するようにしてもよい。なお、データ出力処理部131が移行元データファイルを、直接移行先DBサーバ20に引き渡す処理を行う場合(例えば、移行先DBサーバ20のデータ記憶部22に書込む処理まで実行する場合)には、データ送信部132及び後述するデータ受信部231の構成は省略するようにしてもよい。
移行先DBサーバ20のデータベース制御部23には、データ受信部231、データセットアップ制御部232、データ出力処理部233、データ比較処理部234、及びカラム削除処理部235を有している。
データ受信部231は、移行元DBサーバ10のデータ送信部132が送信した移行元データファイルを受信する処理を行う。データ受信部231により受信された移行元データファイルは、データセットアップ制御部232及びデータ比較処理部234に引き渡される。なお、移行元DBサーバ10のデータ出力処理部131が移行元データファイルを、直接データセットアップ制御部232及びデータ比較処理部234に引き渡す処理を行う場合(例えば、移行先DBサーバ20のデータ記憶部22に書込む処理まで実行する場合)には、データ受信部231の構成は省略するようにしてもよい。
データセットアップ制御部232は、DBMS21を制御して、供給された移行元データファイルに基づくデータベース(データベースを構成する表)を、セットアップさせる処理(データ記憶部12上に表を生成して各データを登録させる処理)を行う。
このとき、データセットアップ制御部232は、移行元データファイル(テキストファイル)の先頭のデータ(レコード)から順に読み込んでDBMS21にセットアップ(登録)させる処理を行う。また、データセットアップ制御部232は、DBMS21に、データのセットアップを(登録)させる際に当該データの処理順序(すなわち、移行元データファイルにおいてデータが記述された順序)を示す順序番号(順序識別子)のカラム(以下、「順序番号カラム」とも呼ぶ)を追加させる処理を行う。この実施形態では、最初にセットアップされたデータ(移行元データファイルの先頭のデータ)の順序番号カラムの値を「1」とし、以後昇順に通し番号(シーケンス番号)が設定されるものとして説明する。
データ出力処理部233は、DBMS21(データ記憶部22)上に展開(セットアップ)されたデータベース(表)の各データ(レコード)を読み出して、文字列データに変換して出力(テキストデータファイルとして出力)する処理を行う。以下では、データ出力処理部233が出力するテキストデータのファイルを「移行先データファイル」と呼ぶものとする。このとき、データ出力処理部233は、データベース上から、順序番号カラムに示される順序でデータ(レコード)の読出しを行い、順序番号カラムを除外したデータ(順序番号カラム以外のカラムのデータ)を取得して、移行先データファイルに出力する処理を行う。すなわち、データ出力処理部233は、順序番号カラムに示される順序でデータの読み込み及び出力を行うことで、移行元データファイルと同じ順序で移行先データファイルへのデータ出力を行うことができる。データ出力処理部233は、順序番号カラムに示される順序でデータの読み込み及び出力を行うこと以外については、例えば、特許文献1と同様の処理により移行元データファイルの出力処理を行うことができる。
データ比較処理部234は、移行元データファイルと移行先データファイルの同一性を比較(テキストデータとしての同一性を比較)する処理を行う。言い換えると、データ比較処理部234は、移行元データファイルと移行先データファイルの同一性を比較結果に基づいて、移行元DBサーバ10のデータベース(移行元のデータベース)と、移行先DBサーバ20のデータベース(移行先のデータベース)との同一性を判断する。データ比較処理部234では、移行元データファイルと移行先データファイルを一行ずつ比較する処理を行うようにしてもよいが、diffコマンド等のUNIX上のコマンド処理により移行元データファイルと移行先データファイルのテキストファイルとしての同一性を比較するようにしてもよい。スクリプト等により、移行元データファイルと移行先データファイルのデータを一行ずつ比較する処理を行うようにしてもよいが、diffコマンドを用いたファイル全体の比較処理の方が高速に処理を行うことが可能となる。
データ比較処理部234では、移行元データファイルと移行先データファイルとがテキストデータとして同一(差分がない状態)であれば、移行元DBサーバ10のデータベース(移行元のデータベース)と、移行先DBサーバ20のデータベース(移行先のデータベース)とで全件のデータ(レコード)が同一の内容であると判断できる。
(A−2)実施形態の動作
次に、以上のような構成を有するDBシステム1の動作(実施形態のデータ処理方法)を説明する。
図2は、DBシステム1(移行元DBサーバ10、移行先DBサーバ20)においてデータベースの移行に伴ってコンペア処理を行う際の動作概要について示したフローチャートである。図3は、図2のフローチャートに従ってDBシステム1(移行元DBサーバ10、移行先DBサーバ20)が動作した場合の各データの遷移について示した説明図である。図2、図3では、移行元DBサーバ10で保持されている表A1のデータベースを、移行先DBサーバ20に移行して表A2をセットアップし、表A1と表A2のコンペア処理を行う際の動作について示している。
まず、移行先DBサーバ20のデータ出力処理部131が、DBMS11を制御して、DBMS11(データ記憶部12)上にセットアップ(登録)された表A1のデータベースの各データ(レコード)を読み出して、文字列データに変換し、移行元データファイルF1として出力する処理を行ったものとする(S101)。なお、データ出力処理部131が、表A1のデータを読み出す際の順序については限定されないものである。ここでは、表A1には主キーが設定されておらず、データ出力処理部131は、特に表A1から読み出すデータの順序については指定せずに(ソート条件を指定せずに)、表A1の全てのデータについて読出しを行ったものとして説明する。なお、DBMS11では、特に順序を指定せずに表A1のデータ全件について読出しが要求された場合、データ記憶部22上で表A1の各データが登録されている物理的な順序(物理アドレスに基づく順序)で読みだすようにしてもよい。また、表A1に主キーが設定されている場合には、データ出力処理部131は、当該主キーに基づいてデータの読出しを行うようにしてもよい。そして、ここでは、移行元DBサーバ10のデータ送信部132が、移行元データファイルF1を移行先DBサーバ20に送信し、移行先DBサーバ20のデータ受信部231で受信されたものとする。そして、データ受信部231により受信された移行元データファイルF1は、データ記憶部22に記憶されデータセットアップ制御部232及びデータ比較処理部234に引き渡される。
ここでは、図3に示すように、移行元DBサーバ10の表A1の各データ(レコード)は、3つのカラムC1〜C3により構成されているものとする。図3に示すように、表A1の先頭に配置されたデータD11(データ出力処理部131が出力する際に最初に読み出されるデータ)の内容は、「カラムC1:AAA、カラムC2:000、カラムC3:あいう」となっている。また、図3に示すように、表A1の先頭から2番目に配置されたデータD12(表A1から2番目に読み出されるデータ)は、「カラムC1:XXX、カラムC2:456、カラムC3:かきく」となっている。さらに、図3に示すように、表A1で先頭から3番目に配置されたD13(表A1から3番目に読み出されるデータ)は、「カラムC1:123、カラムC2:*+−、カラムC3:abc」となっている。
また、図3に示すように、移行元データファイルF1(ファイル名:data1.txt)では、表A1を構成する各データがそれぞれ1行で記述されており、各行では各カラムの間にスペースを空けた形式で記述されている。言い換えると、図3に示す移行元データファイルF1では、各データ(各レコード)の間が改行(改行コード)で区切られており、各行の各カラムの間がスペース(スペースのコード)で区切られた記述形式となっている。例えば、移行元データファイルF1において、データD11は「AAA 000 あいう」となっている。なお、移行元データファイルF1において、各データや各カラムを区切るコードの種類は限定されないものであり、例えば、各カラム間をカンマ(,)で区切る形式(いわゆるCSV(Comma−Separated Values)形式)やタブ(タブのコード)で区切る形式としてもよい。
次に、移行先DBサーバ20のデータセットアップ制御部232が、DBMS21を制御して、供給された移行元データファイルF1に基づいて「表A2」をセットアップする処理(データベースの登録処理)を実行させる(S102)。
このときデータセットアップ制御部232は、移行元データファイルF1の先頭のデータD11から順に読み込み、DBMS21を用いて表A2にセットアップさせる処理を行う。また、データセットアップ制御部232は、表A2に順序番号カラムC4を追加するようにDBMS21を制御し、各データの順序番号カラムC4に当該データの処理順序の番号(移行元データファイルF1における当該データの先頭からの配置順序の番号)を入力する。図2では、表A1のデータD11〜D13が、それぞれ、表A2のデータD21〜D23に対応するものとして図示している。また、図2に示すように、表A2のデータD21〜D23には、順序番号カラムC4が付加されている。データD21〜D23の順序番号カラムC4の値(番号)はそれぞれ1〜3となっている。
次に、移行先DBサーバ20のデータ出力処理部233が、表A2のデータベースの各データ(レコード)を読み出して、DBMS21を制御して、表A2の各データ(レコード)を、文字列データに変換し、移行先データファイルF2として出力する処理を行う(S103)。このとき、データ出力処理部233は、表A2のデータベースから、順序番号カラムC4に示される順序でデータ(順序番号カラムC4を除外したカラムのデータ)の読出しを行い、移行先データファイルF2に出力する処理を行う。
次に、データ比較処理部234は、移行元データファイルと移行先データファイルの同一性を比較(テキストデータとしての同一性を比較)する処理を行う(S104)。
次に、カラム削除処理部235は、DBMS21を制御して、表A2から順序番号カラムC4を除去する処理を行い(S105)、本フローチャートの処理を終了する。
次に、上述のステップS101〜S105のそれぞれの処理の詳細について説明する。
まず、ステップS101で、移行元DBサーバ10のデータ出力処理部131が行う処理の具体例について説明する。
移行元DBサーバ10の表A1からデータを抽出し移行元データファイルF1に出力する手順としては種々の手順(例えば、特許文献1の手順)を適用することができる。
データ出力処理部131は、表A1のデータ(レコード)を順次読込んで、読込んだ順序で移行元データファイルF1に出力する処理を行う。データ出力処理部131が行う処理は、例えば、図4に示すようなシェルスクリプトで実現することができる。
図4に示すシェルスクリプトでは、ORACLEデータベース上のコマンド「sqlplus」に、「get_data.sql」というファイル名のSQLファイルを適用している。なお、図4に示すシェルスクリプトにおける「ユーザ/パスワード」には、sqlplusコマンドを実行可能なユーザID及びパスワードが入力されることを示している。これは、以下に示すシェルスクリプトでも同様である。
表A1からデータを抽出(特に順序を指定せずに抽出)するためのSQL文は、単純には、図5に示すようなSELECT文を用いて実現することができる。そして、上述の図4のシェルスクリプトに適用するSQLファイル(get_data.sql)の内容としては、例えば、図6に示す内容のSQL文を適用することができる。
図6に示すSQLファイルのラインL101には、検索結果のメッセージを抑止する指定が記述されている。また、図6に示すSQLファイルのラインL102には、検索結果の行間のラベル表示を抑止する指定が記述されている。さらに、図6に示すSQLファイルのラインL103には、移行元データファイルF1(data1.txt)への出力を開始する処理が記述されている。さらにまた、図6に示すSQLファイルのラインL104には、表Aから全てのカラムのデータを出力(移行元データファイルF1に出力)する処理(SELECT文)が記述されている。また、図6に示すSQLファイルのラインL105には、移行元データファイルF1(data1.txt)への出力を終了する処理が記述されている。
データベース制御部13(データ出力処理部131)が、図6に示すSQLファイル(get_data.sql)を、図4のシェルスクリプトに組み込んで実行した場合、移行元データファイルF1(data1.txt)の内容は、図3に示す内容となる。図3では、各カラム間がスペースで区切られている。
移行元データファイルF1(data1.txt)において、各カラムの間をカンマ(,)で区切るように記述する場合(移行元データファイルF1をCSVファイルとした場合)、SQLファイル(get_data.sql)の内容は図7のような内容となる。図7では、ラインL104がラインL104Aに置き換わっていること以外は、上述の図6と同様の内容となっている。図7のラインL104Aでは、各カラムの間にカンマ(,)が入るようにSELECT文が記述されている。
そして、データベース制御部13(データ出力処理部131)が、図7に示すSQLファイル(get_data.sql)を、図4のシェルスクリプトに組み込んで実行した場合、移行元データファイルF1(data1.txt)の内容は、図8に示す内容となる。図8では、各カラム間がスペースで区切られた形式(CSV形式)となっている。
次に、ステップS102で、移行先DBサーバ20のデータセットアップ制御部232が行う処理の具体例について説明する。
データセットアップ制御部232が、移行元データファイルF1に基づいてデータセットアップを行う処理は、例えば、図9に示すようなシェルスクリプトで実現できる。
図9に示すシェルスクリプトでは、ORACLEデータベースのコマンド「sqlldr」を用いて、移行元データファイルF1(data1.txt)に基づく表A2(データベース)のセットアップを実行する例について示している。ORACLEデータベースでは、ファイルからデータを一括読み込みするためのコマンドとして「sqlldr」が実装されおり、このコマンドにより、簡単、且つ、高速にデータセットアップが可能となる。
sqlldrコマンドを起動する際には、制御ファイルを引き渡す必要があるため、図9の例では、コマンド「sqlldr」に、「load.ctl」という名前の制御ファイルを適用する例について示している。
この実施形態では、制御ファイル「load.ctl」の内容は、図10に示すような内容を適用することができる。
図10の制御ファイルは、供給されたデータ(CSV形式の移行元データファイルF1のデータ)を表A2にセットアップする内容となっている。
図10の制御ファイル「load.ctl」では、ラインL301で、移行後のデータベースとして表A2を指定している。また、図10の制御ファイル「load.ctl」では、ラインL302で読込データ(移行元データファイルF1のデータ)における各カラムがカンマ(,)で区切られた形式(CSV形式)であることを指定している。さらに、図10の制御ファイル「load.ctl」では、ラインL303で、移行後の表A2に、カラムC1〜C3(移行元データファイルF1のカラム)に加え、順序番号カラムC4を設定し、順序番号カラムC4にSEQUENCE(COUNT)を設定している。これにより、sqlldrコマンドでは、移行元のデータ(移行元データファイルF1)を先頭行から読み込んだ順に、順序番号カラムC4(1,2,3、…)を付与(処理順序に相当するシーケンス番号を付与)して、移行先の表A2に反映することができる。
移行先DBサーバ20にセットアップされる表A2には、順序番号カラムC4が定義されているが、これは、移行元データファイルF1(移行元のデータベースの表A)には無いカラムである。
これにより、移行先DBサーバ20の表A2では、この順序番号カラムC4を、検索や読み出しのソートキー(ソート条件)として利用することができる。例えば、移行先DBサーバ20では、SELECT文等で、表A2の読み出しを行う際に、SQLの「ORDER BY」句を用いることで、データ検索の出力順序を指定することができる。例えば、図11に示すように、表A2をSELECT文で読み出す際に、「ORDER BY カラムC4」と記述することにより、順序番号カラムC4をソートキー(ソート条件)とした読み出しを行うことができる。
次に、ステップS103で、移行先DBサーバ20のデータ出力処理部233が行う処理の具体例について説明する。
データベース制御部23(データ出力処理部233)が、表A2のデータを読込んで、移行先データファイルF2を出力する処理は、例えば、図12に示すようなシェルスクリプトで実現できる。
図12のシェルスクリプトでは、ORACLEデータベース上のコマンド「sqlplus」に、「get_after_data.sql」というファイル名のSQLファイルを適用することを示している。
図12のシェルスクリプトでは、「get_after_data.sql」は、表A2からデータを抽出するためのSQL文が記述されたSQLファイルである。表A2からデータを抽出するためのSQL文は、単純には、図11に示すようなSELECT文で構成することができる。そして、上述の図12のシェルスクリプトに適用するSQLファイル(get_after_data.sql)の内容は、例えば、図13の内容としてもよい。
図13に示すSQLファイルのラインL401には、検索結果のメッセージを抑止する指定について記述されている。また、図13に示すSQLファイルのラインL402には、検索結果の行間のラベル表示を抑止する指定について記述されている。さらに、図13に示すSQLファイルのラインL403には、移行先データファイルF2(data2.txt)への出力を開始する処理が記述されている。さらにまた、図13に示すSQLファイルのラインL404には、表A2のカラムC1〜C3のデータをカラムC4でソートされた順序で出力(移行先データファイルF2に出力)する処理(SELECT文)について記述されている。図13に示すSQLファイルのラインL405には、移行先データファイルF2(data2.txt)への出力を終了する処理が記述されている。
データベース制御部23(データ出力処理部233)が、図12に示すSQLファイル(get_after_data.sql)を、図12のシェルスクリプトに組み込んで実行した場合、移行先データファイルF2(data2.txt)の内容は、図3に示す内容となる。図3に示す移行先データファイルF2(data2.txt)では、各カラム間がスペースで区切られている。
移行先データファイルF2(data2.txt)において、各カラムの間をカンマ(,)で区切るように記述する場合(移行先データファイルF2をCSVファイルとした場合)、SQLファイル(get_after_data.sql)の内容は図14のような内容となる。図14では、ラインL404がL404Aに置き換わっていること以外は、上述の図13と同様の内容について示している。図14のラインL404Aでは、各カラムの間にカンマ(,)が入るようにSELECT文が記述されている。
そして、データベース制御部23(データ出力処理部233)が、図14に示すSQLファイル(get_after_data.sql)を、図12のシェルスクリプトに組み込んで実行した場合、移行先データファイルF2(data2.txt)の内容は、図15に示す内容となる。図15では、各カラム間がカンマ(,)で区切られた形式(CSV形式)となっている。
図3、図8、図15に示すように、移行元の表A1と移行先の表A2が実際に同一のデータの集合で構成されている場合、移行元DBサーバ10におけるデータ出力結果(移行元データファイルF1)と、移行先DBサーバ20におけるデータ出力結果(移行先データファイルF2)の内容は、全く同一の内容となることがわかる。
次に、ステップS104で、移行先DBサーバ20のデータ比較処理部234が行う処理の具体例について説明する。
データベース制御部23(データ比較処理部234)は、移行元データファイルF1と移行先データファイルF2の比較処理(差分の有無を抽出する処理)を行う。データ比較処理部234が行う比較処理としては、種々のファイル比較処理を適用することができる。この実施形態では、データ比較処理部234は、UNIX(Linux)上のdiffコマンドを用いて、移行元データファイルF1と移行先データファイルF2の比較処理(テキストデータとしての比較処理)を行う。
例えば、データ比較処理部234は、図16に示すようなシェルスクリプトにより、移行元データファイルF1(data1.txt)と移行先データファイルF2(data2.txt)の比較処理を行うようにしてもよい。例えば、図16に示すシェルスクリプトでは、diffコマンド(UNIX上のコマンド)により、移行元データファイルF1と移行先データファイルF2との差分の抽出を試み、差分があった場合には、その差分の内容が、所定の出力先のテキストデータファイル(result.txt)に出力される内容となっている。図16に示すシェルスクリプトでは、移行元データファイルF1と移行先データファイルF2に差分が無かった場合(同一だった場合)には出力先のテキストデータファイル(result.txt)にデータ(差分)が出力されない(データ量が増加しない)結果となり、移行元データファイルF1と移行先データファイルF2に差分が有った場合には出力先のテキストデータファイル(result.txt)にデータ(差分)が記録される(データ量が増加する)ことになる。ユーザや他のプロセスは、result.txtの発生の有無や容量の変動を監視することにより、移行元データファイルF1と移行先データファイルF2の比較結果(コンペア処理の結果)を認識することができる。
また、ステップS104では、diffコマンドにより、移行元データファイルF1と移行先データファイルF2との差分を抽出する前処理として、移行元データファイルF1又は移行先データファイルF2の一方について、他方のファイルと文字コードを統一する処理を行うことがのぞましい。例えば、移行元データファイルF1と移行先データファイルF2とで文字コード(特に全角文字の文字コード)の形式が異なる場合には、移行元データファイルF1の文字コードを移行先データファイルF2と同様の形式に変換してからdiffコマンドを適用するようにしてもよい。
次に、ステップS105で、移行先DBサーバ20のカラム削除処理部235が行う処理の具体例について説明する。
移行先DBサーバ20の表A2では、移行対象でない順序番号カラムC4が定義されているが、データのコンペア処理まで実施し、データの信頼性が確認できれば、順序番号カラムC4が不要のカラムとなる。そこで、移行先DBサーバ20のカラム削除処理部235は、データ比較処理部234の終了(同一性が確認された後)、図17に示すようなSQL文の処理実行(例えば、ORACLEデータベースにより当該SQL文を含むSQLファイルを実行する処理)を行うことで、表A2から順序番号カラムC4を削除させる処理を行う。これにより、移行前の表A1と、移行先の表A2は完全に一致(データベースとして一致)することになる。
(A−3)実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
この実施形態では、データセットアップ制御部232が、移行元データファイルF1に基づき、移行先DBサーバ20の表A2をセットアップする際、順序番号カラムC4(移行元データファイルF1から読込んだ順序番号)を付与している。また、データ出力処理部233が、移行先の表2Aからデータを読出しする際、順序番号カラムC4を抽出ソート条件として、データを読出して移行先データファイルF2を出力する。これにより、データ比較処理部234では、移行元データファイルと移行先データファイルとがテキストデータとして同一(差分がない状態)であれば、移行元DBサーバ10のデータベース(移行元のデータベース)と、移行先DBサーバ20のデータベース(移行先のデータベース)とで全件のデータ(レコード)が同一の内容であると判断できる。また、移行元データファイルF1と移行先データファイルF2とは単なるテキストデータであるため、データ比較処理部234ではdiffコマンドでこの2つのファイルを比較するだけで、簡単、且つ、高速にコンペア処理を実施し、データベースを移行する際の信頼性(表A1と表A2とがデータベースとして同一であることの信頼性)を確保することができる。diffコマンドでテキストデータの比較を行うだけであれば、データ量が大きい場合でも高速に処理(表のデータを1件ずつ検索して全てのカラムについて比較する処理と比較して高速に処理)することができる。
例えば図3では、表A1には、データD11、D12、D13の順に登録されている。しいて、表A2では、データD11に対応するデータD21、データD13に対応するデータD23、データD12に対応するD22の順で登録している。表A2から単純にSELECT文で表A2のデータを読み出して移行先データファイルF2を生成する場合、移行先データファイルF2にはデータD21、D23、D22の順序で出力されることになる。しかしながら、データ出力処理部233では、表A2から順序番号カラムC4でソートした順序で読みだすため、図3に示すように移行先データファイルF2にはデータD21、D22、D23の順序(移行元データファイルF1と同じ順序)でデータの出力が行われることになる。
(B)他の実施形態
本発明は、上記の実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
(B−1)上記の実施形態では、移行先DBサーバ20に表A2をセットアップし、コンペア処理後に順序番号カラムC4を削除する例について説明したが、移行先DBサーバ20の表A2をコンペア処理専用として利用し、コンペア処理後に表A2全部を削除又は表A2を放置するようにしてもよい。
(B−2)上記の実施形態では、本発明のデータ処理プログラムに、データベース制御部13(データ出力処理部131、データ送信部132)、及びデータセットアップ制御部232(データ受信部231、データセットアップ制御部232、データ出力処理部233、データ比較処理部234、及びカラム削除処理部235)が含まれるものとして説明した。しかし、本発明のデータ処理プログラムは、少なくとも、データ出力処理部131、データセットアップ制御部232、データ出力処理部233、及びデータ比較処理部234を含む構成要素(実体としてはシェルスクリプト群)で実現することが可能である。
また、この実施形態では、データ処理プログラムの構成要素として、データ送信部132とデータ受信部231が配置されているが、移行元データファイルF1をデータセットアップ制御部232及びデータ比較処理部234に引き渡す処理に支障がなければ、データ送信部132とデータ受信部231については削除(実施形態に係るデータ処理プログラムの構成要素から削除)するようにしてもよい。また、この実施形態では、データ処理プログラムの構成要素として、カラム削除処理部235が配置されているが、表A2から順序番号カラムC4を削除する必要がなければ、削除(実施形態に係るデータ処理プログラムの構成要素から削除)するようにしてもよい。
(B−3)上記の実施形態では、移行元DBサーバ10にデータ出力処理部131を配置し、移行先DBサーバ20に、データセットアップ制御部232、データ出力処理部233、データ比較処理部234、及びカラム削除処理部235を配置する構成としているが、これらの構成要素(実体としてはシェルスクリプト)を配置するコンピュータは限定されないものである。例えば、データ出力処理部131、データセットアップ制御部232、データ出力処理部233、データ比較処理部234、及びカラム削除処理部235を全て別の端末(シェルスクリプトが実行可能なPCやワークステーション)に配置して実行するようにしてもよいし、構成要素ごとに異なる端末を適用するようにしてもよい。以上のように、本発明のデータベースシステム、データ処理プログラム、及びデータ処理方法において、コンペア処理の分散処理方式については限定されないものである。