(57)【要約】  第１のデータベース（１１）に対して行なわれる更新処理にかかる第１更新データ（４１−１）を取得し、予め設定された変換定義情報（４２）に基づいて、前記第１更新データ（４１−１）を第２のデータベース（２１）の形式に対応した第２更新データ（４１−２）に変換し、前記第１更新データ（４１−１）と、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定し、決定されたロック範囲に基づいて、前記第１及び第２のデータベース（１１，２１）をロックし、前記第１及び第２更新データ（４１−１，４１−２）を用いて、前記第１及び第２のデータベース（１１，２１）をそれぞれ更新する。
2012108015.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得するステップと、
予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換するステップと、
前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定するステップと、
決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックするステップと、
前記第１及び第２更新データを用いて、前記第１及び第２のデータベースをそれぞれ更新するステップと、をそなえることを特徴とする、データ同期方法。
【請求項２】
前記第１及び第２のデータベースをロックするステップが、
前記ロック範囲に基づいて、前記第１及び第２のデータベースのロック状態が設定されたロック管理情報から、前記第１及び第２のデータベースにおける前記ロック範囲がロック済みであるか否かを判定するステップと、
前記ロック範囲がロック済みではないと判定された場合に、前記ロック管理情報において、前記更新処理にかかるロック範囲がロックされていることを示すロック獲得情報を設定するステップと、をそなえることを特徴とする、請求項１記載のデータ同期方法。
【請求項３】
前記第１及び第２のデータベースをロックするステップが、
前記ロック範囲がロック済みであると判定された場合に、前記ロック管理情報において、前記更新処理にかかるロック範囲がロック待ち状態であることを示す待ち情報を設定するステップをそなえることを特徴とする、請求項２記載のデータ同期方法。
【請求項４】
前記ロック管理情報は、前記第１及び第２のデータベースに共通する前記更新処理にかかる行を特定するロックキーを含み、
前記第１更新データを前記第２更新データに変換するステップが、前記更新処理にかかるロックキーを生成するステップをそなえ、
前記ロック範囲がロック済みであるか否かを判定するステップが、生成された前記更新処理にかかるロックキーと同一のロックキーが前記ロック管理情報に含まれるか否かを判定し、前記更新処理にかかるロックキーが前記ロック管理情報に含まれないと判定された場合に、前記ロック範囲がロック済みではないと判定することを特徴とする、請求項３記載のデータ同期方法。
【請求項５】
前記ロック範囲がロック済みであるか否かを判定するステップが、前記更新処理にかかるロックキーが前記ロック管理情報に含まれると判定された場合に、前記ロック管理情報に含まれるロックキーに対応したロック範囲と、前記更新処理にかかるロック範囲との間に共通した範囲があるか否かを判定し、共通した範囲がないと判定された場合に、前記ロック範囲がロック済みではないと判定する一方、共通した範囲があると判定された場合に、前記ロック範囲がロック済みであると判定することを特徴とする、請求項４記載のデータ同期方法。
【請求項６】
前記第１のデータベースと前記第２のデータベースとは、互いに異なる種類のデータベースであり、
前記第１及び第２のデータベースをロックするステップが、前記第１のデータベースのロックキーと前記第２のデータベースのロックキーとの間の対応関係、及び前記第１更新データのロック範囲と前記第２更新データのロック範囲との間の対応関係、をそれぞれ示す情報に基づいて、前記ロック管理情報を参照することを特徴とする、請求項４又は請求項５記載のデータ同期方法。
【請求項７】
前記第１及び第２のデータベースがそれぞれ更新された後に、前記第１及び第２のデータベースのロックを解放するステップと、
ロックの解放後に、待ち情報が設定された更新処理にかかるロック範囲がロック済みであるか否かを判定するステップと、
前記ロック範囲がロック済みではないと判定された場合に、前記ロック管理情報において、前記更新処理にかかる待ち情報を削除するとともに、前記更新処理にかかるロック獲得情報を設定するステップと、をそなえることを特徴とする、請求項３〜６のいずれか１項記載のデータ同期方法。
【請求項８】
前記ロック範囲を決定するステップが、前記第１及び第２のデータベースにおけるテーブルの列を最小単位として、前記ロック範囲を決定することを特徴とする、請求項１〜７のいずれか１項記載のデータ同期方法。
【請求項９】
前記ロック範囲を決定するステップが、
前記更新処理による更新前のデータと、前記更新後のデータとに基づいて、更新差分データを生成するステップと、
前記更新差分データに基づいて、前記更新処理によって更新される範囲を判定し、ロック範囲を決定するステップと、をそなえることを特徴とする、請求項１〜８のいずれか１項記載のデータ同期方法。
【請求項１０】
前記第１更新データを変換するステップが、前記変換定義情報に基づいて、前記更新処理が行なわれる第１のデータベース以外のデータ同期対象のデータベース毎に行なわれ、
前記データベースをロックするステップが、データ同期対象の全てのデータベースをロックするとともに、
前記データベースを更新するステップが、前記第１更新データ又は変換された更新データを用いて前記データ同期対象の全てのデータベースをそれぞれ更新することを特徴とする、請求項１〜９のいずれか１項記載のデータ同期方法。
【請求項１１】
前記第１更新データを前記第２更新データに変換するステップと、前記ロック範囲を決定するステップとが、並行して行なわれ、前記第１及び第２のデータベースをロックするステップが、前記第１更新データを前記第２更新データに変換するステップ及び前記ロック範囲を決定するステップの完了後に行なわれることを特徴とする、請求項１〜１０のいずれか１項記載のデータ同期方法。
【請求項１２】
前記第１のデータベースは、第１ＯＳ（Operating System）に備えられ、
前記第２のデータベースは、第２ＯＳに備えられ、
前記第１及び第２ＯＳは、１のシステム上で動作するとともに、
前記第１及び第２のデータベースをそれぞれ更新するステップは、前記第２ＯＳに、前記第１及び第２ＯＳからアクセス可能な共用メモリを介して、前記第２更新データを出力することを特徴とする、請求項１〜１１のいずれか１項記載のデータ同期方法。
【請求項１３】
前記第１及び第２ＯＳは、仮想ＯＳであり、
前記システムは、仮想マシンであることを特徴とする、請求項１２記載のデータ同期方法。
【請求項１４】
第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得し、
予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換し、
前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定し、
決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックし、
前記第１及び第２更新データを用いて、前記第１及び第２のデータベースをそれぞれ更新する、
処理をコンピュータに実行させることを特徴とする、データ同期プログラム。
【請求項１５】
前記第１及び第２のデータベースをロックする処理は、
前記ロック範囲に基づいて、前記第１及び第２のデータベースのロック状態が設定されたロック管理情報から、前記第１及び第２のデータベースにおける前記ロック範囲がロック済みであるか否かを判定し、
前記ロック範囲がロック済みではないと判定された場合に、前記ロック管理情報において、前記更新処理にかかるロック範囲がロックされていることを示すロック獲得情報を設定する、
処理をコンピュータに実行させることを特徴とする、請求項１４記載のデータ同期プログラム。
【請求項１６】
前記第１及び第２のデータベースをロックする処理は、
前記ロック範囲がロック済みであると判定された場合に、前記ロック管理情報において、前記更新処理にかかるロック範囲がロック待ち状態であることを示す待ち情報を設定する、
処理をコンピュータに実行させることを特徴とする、請求項１５記載のデータ同期プログラム。
【請求項１７】
前記ロック管理情報は、前記第１及び第２のデータベースに共通する前記更新処理にかかる行を特定するロックキーを含み、
前記第１更新データを前記第２更新データに変換する処理が、前記更新処理にかかるロックキーを生成するとともに、
前記ロック範囲がロック済みであるか否かを判定する処理が、生成された前記更新処理にかかるロックキーと同一のロックキーが前記ロック管理情報に含まれるか否かを判定し、前記更新処理にかかるロックキーが前記ロック管理情報に含まれないと判定された場合に、前記ロック範囲がロック済みではないと判定することを特徴とする、請求項１６記載のデータ同期プログラム。
【請求項１８】
前記第１及び第２のデータベースがそれぞれ更新された後に、前記第１及び第２のデータベースのロックを解放し、
ロックの解放後に、待ち情報が設定された更新処理にかかるロック範囲がロック済みであるか否かを判定し、
前記ロック範囲がロック済みではないと判定された場合に、前記ロック管理情報において、前記更新処理にかかる待ち情報を削除するとともに、前記更新処理にかかるロック獲得情報を設定する、
処理をコンピュータに実行させることを特徴とする、請求項１６又は請求項１７記載のデータ同期プログラム。
【請求項１９】
前記ロック範囲を決定する処理が、前記第１及び第２のデータベースにおけるテーブルの列を最小単位として、前記ロック範囲を決定することを特徴とする、請求項１４〜１８のいずれか１項記載のデータ同期プログラム。
【請求項２０】
第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得して、予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換するデータ変換部と、
前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定するロック範囲決定部と、
ロック範囲決定部により決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックするとともに、前記第１及び第２のデータベースに対して、それぞれ前記第１更新データ及び前記データ変換部により変換された前記第２更新データを用いた更新を指示するロック制御部とをそなえることを特徴とする、データ同期制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、データ同期方法、データ同期プログラム、及びデータ同期制御装置に関する。
【背景技術】
【０００２】
基幹系システムや各種サービスを提供するシステム等、１以上の情報処理装置により構成される情報処理システムでは、扱われる情報の収集、管理のために、状況に応じて種々のデータベースが用いられている。
データベースとしては、例えば、Ｏｒａｃｌｅ（登録商標）、ＳＱＬ  Ｓｅｒｖｅｒ（登録商標）、ＭｙＳＱＬ、及びＰｏｓｔｇｒｅＳＱＬ等のＳＱＬベースのデータベースや、ＳｙｍｆｏＷＡＲＥ（登録商標）、ＰｏｗｅｒＲＷ＋、及びＰｅｒｖａｓｉｖｅ．  ＳＱＬ（登録商標）等のＲｅａｄ／Ｗｒｉｔｅインタフェースのデータベース等が挙げられる。【０００３】
システム内で２以上のデータベースを用いる場合に使用されるこれらのデータベースは、データベース間の同期等の観点から、構造（種類）が同一のものに統一されることが理想である。しかしながら、例えば以下の状況下等においては、互いに異なる種類のデータベースであり、互いに異なるデータ構造を持つデータベースが混在して使用される場合がある。【０００４】
（ａ）業務統合などで、異なる業務で用いていた互いに異なる構造を持つデータベースをそれぞれ引き続き使用し、データのみの整合性を合わせて運用する場合。
（ｂ）構造（種類）が同一のデータベースへの将来的な統合を控え、過渡的な対処として、互いに異なる構造を持つデータベースを並行して使い続ける場合。
（ｃ）使用しているデータベースのライセンス料が高く、新たに並行して導入するデータベースとして、使用しているものとは構造（種類）が異なる安価なデータベースを採用する場合。【０００５】
（ｄ）データベースが持つ機能に差があり、１種類のデータベースに統合できない場合。
上記（ａ）〜（ｄ）に示すような場合、互いに異なる構造を持つデータベースのデータを同期させるために、例えば、図１７〜図１９に示す第１〜第３のいずれかの手法を用いることができる。【０００６】
以下の例においては、仮想マシン１００において、第１ＤＢＭＳ（Database Management System）１１１を備える第１仮想ＯＳ（Operating System）１１０と、第２ＤＢＭＳ１２１を備える第２仮想ＯＳ１２０とが実行される場合の、第１ＤＢＭＳ１１１と第２ＤＢＭＳ１２１とのデータを同期する例を示す。
図１７は、第１仮想ＯＳ１１０のアプリケーション１１３が第２仮想ＯＳ１２０のデータベースにアクセスしてデータの同期を行なう第１手法を示す図であり、図１８は、データベースが備えるトリガー機能により、データを同期する第２手法を示す図である。また、図１９は、データベースが備えるレプリケーション機能により、データを同期する第３手法を示す図である。【０００７】
ここで、図１７〜図１９に示すように、仮想マシン１００は、情報処理システム上で動作し、第１仮想ＯＳ１１０及び第２仮想ＯＳ１２０を実行する。また、仮想マシン１００は、第１仮想ＯＳ１１０及び第２仮想ＯＳ１２０に対する、情報処理システムのＣＰＵ（Central Processing Unit）やメモリ等のリソースの割り当て等の管理を行なう。
仮想マシン１００としてはハイパーバイザ等が挙げられる。【０００８】
第１仮想ＯＳ１１０は、第１ＤＢＭＳ１１１と、通信部１１２とを備え、第２仮想ＯＳ１２０は、第２ＤＢＭＳ１２１と、通信部１２２とを備える。第１ＤＢＭＳ１１１、第２ＤＢＭＳ１２１は、それぞれ第１仮想ＯＳ１１０、第２仮想ＯＳ１２０で管理されるデータベースである。本例においては、第１ＤＢＭＳ１１１と、第２ＤＢＭＳ１２１とは、互いに異なる種類のデータベースであり、互いに異なるデータ構造を持つ。【０００９】
また、第１仮想ＯＳ１１０と第２仮想ＯＳ１２０とは、通信部１１２及び１２２により、ネットワークを介して相互に通信可能である。
以下、図１７〜図１９を参照しながら、アプリケーション１１３又は１１４により第１ＤＢＭＳ１１１が更新される場合の、第１ＤＢＭＳ１１１と第２ＤＢＭＳ１２１とのデータ同期の手法について説明する。【００１０】
第１手法では、図１７に示す例では、互いに異なる構造を持つデータベースのデータを自動的に同期させるため、データベースにアクセスする全てのプログラムに対して変更が加えられた場合を示す。
例えば、第１仮想ＯＳ１１０上で実行されるアプリケーション１１３が、第１ＤＢＭＳ１１１のみにアクセスするものであった場合、第１ＤＢＭＳ１１１及び第２ＤＢＭＳ１２１の双方にアクセスするように、アプリケーション１１３に変更が加えられる。【００１１】
アプリケーション１１３に対する変更により、図１７に示す（１）〜（４）の順序で、アプリケーション１１３による第２ＤＢＭＳ１２１へのデータの同期が行なわれる。
すなわち、アプリケーション１１３は、第１ＤＢＭＳ１１１に変更を加えるとともに（１）、当該変更にかかるデータを通信部１１２に出力する（２）。通信部１１２は、アプリケーション１１３から入力されたデータをネットワーク経由で第２仮想ＯＳ１２０の通信部１２２に送信する（３）。最後に、通信部１２２は、通信部１１２から受信したデータを、第２ＤＢＭＳ１２１に反映（更新）し（４）、仮想マシン１００におけるデータの同期処理が完了する。【００１２】
なお、図１７に示す（２）において通信部１１２に入力されるデータは、アプリケーション１１３によって、第１ＤＢＭＳ１１１の形式に対応したデータから第２ＤＢＭＳ１２１の形式に対応したデータへ変換されたものである。
第２手法においては、図１８に例示するように、互いに異なる構造を持つデータベースのデータを同期させるため、データベースが備えるトリガー機能を用いて、相手先データベースにデータを整合させて同期させる。【００１３】
トリガー機能とは、データベースに対する何らかのアクション、例えば更新操作などをトリガーとして、所定の処理が実行される機能である。
仮想マシン１００では、このトリガー機能１１５が用いられ、図１８に示す（１）〜（１０）の順序で、第２ＤＢＭＳ１２１へのデータの同期が行なわれる。
すなわち、アプリケーション１１４が第１ＤＢＭＳ１１１に変更を加えると（１）、第１ＤＢＭＳ１１１はトリガー機能１１５を起動する（２）。そして、トリガー機能１１５は、当該変更にかかるデータをデータ変換部１１６に入力する（３）。データ変換部（４）は、第１ＤＢＭＳ１１１の形式に対応したデータをネットワーク通信用のデータへ変換し、変換したデータを通信部１１２へ出力する（４）。【００１４】
次いで、通信部１１２は、入力されたデータをネットワーク経由で第２仮想ＯＳ１２０の通信部１２２に送信し（５）、通信部１２２は、通信部１１２から受信したデータを、データ変換部１２６へ出力する（６）。そして、データ変換部１２６は、入力されたネットワーク通信用のデータを第２ＤＢＭＳ１２１の形式に対応したデータへ変換し、変換したデータを第２ＤＢＭＳ１２１に反映（更新）する（７）。【００１５】
第２ＤＢＭＳ１２１の更新が完了すると、通信部１２２は、更新完了の通知をネットワーク経由で第１仮想ＯＳ１１０の通信部１１２に送信する（８）。更新完了の通知は、通信部１１２及びトリガー機能１１５を経由して（９）、アプリケーション１１４に通知され（１０）、仮想マシン１００におけるデータの同期処理が完了する。
第３手法においては、図１９に例示するように、互いに異なる構造を持つデータベースのデータを同期させるため、データベースが備えるレプリケーション機能を用いて、データを同期させる。【００１６】
レプリケーション機能とは、１箇所のデータベースで行なわれた更新データや操作を蓄積して記憶しておき、一定時間毎、又は更新量が一定量貯まった場合等の何らかのタイミングで、蓄積された更新データ等を別サイトへ送信し、別サイトのデータベースへ更新させる機能である。
仮想マシン１００では、このレプリケーション機能により、図１９に示す（１）〜（６）の順序で、第２ＤＢＭＳ１２１へのデータの同期が行なわれる。【００１７】
すなわち、アプリケーション１１４が第１ＤＢＭＳ１１１に変更を加えると（１）、第１ＤＢＭＳ１１１は、当該更新にかかる更新データや操作を蓄積し（２）、自身のデータベースの更新が完了した旨をアプリケーション１１４に通知する（３）。次いで、一定時間毎、又は更新量が一定量貯まった場合等の何らかのタイミングで、データ同期部１１８は、蓄積した更新データ１１７を通信部１１２に出力する（４）。【００１８】
そして、通信部１１２は、入力された更新データ１１７をネットワーク経由で第２仮想ＯＳ１２０の通信部１２２に送信する（５）。最後に、通信部１２２は、通信部１１２から受信したデータを、データ同期部１２８による変換処理等を介して、第２ＤＢＭＳ１２１に反映（更新）し（６）、仮想マシン１００におけるデータの同期処理が完了する。
ここで、図１９における符号１１７は、蓄積した更新データを示す。また、データ同期部１１８及び１２８は、上述したレプリケーション機能の実行処理を行なう。【００１９】
また、上述した第２及び第３手法では、通信部１１２及び１２２間の通信は、ネットワーク経由で行なわれる場合が多い。従って、第１仮想ＯＳ１１０と第２仮想ＯＳ１２０とは、互いに異なる情報処理装置のリソースを使用して実行されても良い。
なお、互いに同一の構造を持つデータベースのデータを同期させる技術としては、例えば、２つの電子計算機からアクセス可能な共用メモリに、それぞれのＤＢＭＳ用の共用バッファを設ける技術等が知られている。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開平５−３１３９８５号公報
【特許文献２】特開平８−９５８４１号公報
【特許文献３】特開平１１−３０６０６１号公報
【特許文献４】特開２００９−１５５３４号公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
上述した第１〜第３のデータ同期手法では、それぞれ以下のような問題がある。
（ｉ）第１手法では、データベースにアクセスする全てのプログラムに対して変更を行なうため、プログラムの変更に多くの工数が発生する。またプログラムの保守性も低下し、以後の保守工数増加の要因となる。
（ii）第２手法では、データ更新時、更新データがネットワーク経由で更新先のデータベースに反映される場合が多い。ネットワーク経由による更新先のデータベース、例えば第２ＤＢＭＳ１２１へのデータの同期には、更新元データベース、例えば第１ＤＢＭＳ１１１に対するデータバスを通じたデータの更新に比べて時間がかかる。従って、双方のデータベースにおけるデータのロック区間にアクセスすることができない時間、つまりロック区間がロックされる時間が長くなり、データベースの共用度が低下する。【００２２】
なお、データベースのロックとは、データベースのデータを更新する場合に、他のアプリケーション等から更新対象の範囲へのアクセスを禁止するために行なう排他制御であり、ロック区間とは、行（Row）等、更新対象の範囲である。
（iii）第３手法では、ＤＢＭＳの提供元や種類が異なると、レプリケーション機能に差異が生じ、データベース間のデータ同期に、レプリケーション機能を使用することができない場合がある。また、データの同期は、更新元のデータベース（例えば第１ＤＢＭＳ１１１）への更新から遅延して更新先のデータベース（例えば第２ＤＢＭＳ１２１）への更新が行なわれるため、元のデータベースへのデータ更新後、システム使用者が更新先のデータベースを参照しても、更新後のデータが反映されていない場合がある。【００２３】
（iv）第２及び第３手法では、トリガー機能及びレプリケーション機能は、いずれもネットワークを経由して更新先のデータベースとデータ同期を行なうため、データ漏洩のリスクが高い。さらに、ネットワークが一時的に使用できない場合、データの同期を行なうことができず、またネットワーク復旧後にデータを同期させようとすると、ネットワークへのアクセスが集中し、ネットワーク負荷が非常に高くなるという問題がある。【００２４】
（ｖ）また、データの同期に際し、例えば以下の（ｖ−ｉ）及び（ｖ−ii）に示す問題により、よりデータベースの共用度を向上させる技術が望まれる。
（ｖ−ｉ）更新元のデータベースで更新されるデータについて、互いに異なる構造を持つ更新先のデータベースとデータ同期を行なう場合、これら複数のデータベースのロック区間を統一しようとすると、１つのデータベースにロック区間を設定する場合に比べて、ロック区間が長くなってしまう。【００２５】
例えば、更新元のデータベースのロック区間がテーブル内の１行分であった場合、更新先のデータベースに設定するロック区間は、更新元のデータベースのロック区間の全ての列（Column）が含まれるように設定される。更新元のデータベースと更新先のデータベースとは互いに異なる構造を持つため、更新元のデータベースのロック区間に含まれる項目が、更新先のデータベースの複数のテーブルに分散している場合がある。このとき、更新先のデータベースでは、複数のテーブル内の更新対象の行をロック区間に設定するため、ロック区間が長くなってしまう。【００２６】
（ｖ−ii）セキュリティ向上のため、データベースのテーブルを直接参照せず、必要な列のみをビュー（View）によって参照することがある。ビューによってあるテーブル内の列を参照する場合、例えば他のアプリケーション等により、ビューで参照していない列に対する更新が発生すると、更新が発生した行がロックされ、ビュー経由のアクセスが行なえないという問題がある。【００２７】
上述の点に鑑み、本件の目的の１つは、互いに異なる種類のデータベース間でデータを同期させる際に、同期させるデータをデータベース間でより簡易に変換することである。
また、本件の目的の１つは、互いに異なる種類のデータベース間でデータを同期させる際に、データベースのロックによるアプリケーションへの影響を抑えることである。
さらに、本件の目的の１つは、互いに異なる種類のデータベース間でデータを同期させる際の、データ漏洩のリスクを低減することである。【００２８】
また、本件の目的の１つは、互いに異なる種類のデータベース間でデータを同期させる際の、データベース間のタイムラグを低減することである。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００２９】
本件のデータ同期方法は、第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得するステップと、予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換するステップと、前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定するステップと、決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックするステップと、前記第１及び第２更新データを用いて、前記第１及び第２のデータベースをそれぞれ更新するステップと、をそなえるものである。【００３０】
また、本件のデータ同期プログラムは、第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得し、予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換し、前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定し、決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックし、前記第１及び第２更新データを用いて、前記第１及び第２のデータベースをそれぞれ更新する、処理をコンピュータに実行させるものである。【００３１】
さらに、本件のデータ同期制御装置は、第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得して、予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換するデータ変換部と、前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定するロック範囲決定部と、ロック範囲決定部により決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックするとともに、前記第１及び第２のデータベースに対して、それぞれ前記第１更新データ及び前記データ変換部により変換された前記第２更新データを用いた更新を指示するロック制御部とをそなえるものである。
【発明の効果】
【００３２】
開示の技術によれば、互いに異なる種類のデータベース間でデータを同期させる際に、同期させるデータをデータベース間でより簡易に変換することができる。
また、互いに異なる種類のデータベース間でデータを同期させる際に、データベースのロックによるアプリケーションへの影響を抑えることができる。
さらに、互いに異なる種類のデータベース間でデータを同期させる際の、データ漏洩のリスクを低減することができる。【００３３】
また、互いに異なる種類のデータベース間でデータを同期させる際の、データベース間のタイムラグを低減することができる。
【図面の簡単な説明】
【００３４】
【図１】本実施形態の一例としての仮想マシンの構成例を示す図である。
【図２】本実施形態の一例としての仮想マシンによるデータ同期の処理を説明するための図である。
【図３】本実施形態の一例としての変換定義ファイルの構成例を示す図である。
【図４】本実施形態の一例としてのデータベースにおける数値データの内部表現形式を示す図である。
【図５】本実施形態の一例としてのデータ変換処理部によるデータ変換処理を説明するための図である。
【図６】本実施形態の一例としてのロック管理テーブルの構成例を示す図である。
【図７】本実施形態の一例としてのロック管理テーブルにおける列パターンを説明するための図である。
【図８】本実施形態の一例としての仮想マシンによるデータ同期の処理を説明するためのシーケンス図である。
【図９】本実施形態の一例としてのデータ更新部の処理を説明するためのフローチャートである。
【図１０】本実施形態の一例としての更新データ制御部のデータ変換及びロック獲得の処理を説明するためのフローチャートである。
【図１１】本実施形態の一例としてのデータ変換処理部のデータ変換の処理を説明するためのフローチャートである。
【図１２】本実施形態の一例としてのロック粒度判定処理部のロック範囲決定の処理を説明するためのフローチャートである。
【図１３】本実施形態の一例としてのロック制御処理部によるロック獲得の処理を説明するためのフローチャートである。
【図１４】本実施形態の一例としての更新データ制御部のロック解放の処理を説明するためのフローチャートである。
【図１５】本実施形態の一例としてのロック制御処理部によるロック解放の処理を説明するためのフローチャートである。
【図１６】本実施形態の一例としての非同期反映部の処理を説明するためのフローチャートである。
【図１７】従来のデータ同期手法一例としての第１手法を示す図である。
【図１８】従来のデータ同期手法一例としての第２手法を示す図である。
【図１９】従来のデータ同期手法一例としての第３手法を示す図である。
【発明を実施するための形態】
【００３５】
以下、図面を参照して本発明の実施の形態を説明する。
〔１〕一実施形態
〔１−１〕一実施形態の構成
図１は、本実施形態の一例としての仮想マシン１の構成例を示す図である。
仮想マシン１は、実際のハードウェア構成によらない仮想的なコンピュータであり、仮想マシン１上で複数の仮想ＯＳを実行するとともに、複数の仮想ＯＳに対する各種リソースの割り当て等の管理を行なうものである。仮想マシン１としては、ハイパーバイザ等が挙げられる。
【００３６】
なお、本実施形態においては、仮想マシン１が、１以上の情報処理装置により構成される情報処理システム上で動作し、情報処理システムのＣＰＵやメモリ等のリソースを使用する場合について例示する。
また、本実施形態においては、仮想マシン１は、第１仮想ＯＳ１０、第２仮想ＯＳ２０、及び更新データ制御部３０を備え、これらを実行するとともに、情報処理システムのメモリの一部を共有メモリ４０として使用する。さらに、仮想マシン１は、第１仮想ＯＳ１０、第２仮想ＯＳ２０及び更新データ制御部３０に対して、情報処理システムのリソースの割り当て等の管理を行なう。
【００３７】
第１仮想ＯＳ１０及び第２仮想ＯＳ２０は、それぞれ仮想マシン１が提供するカーネルにより、情報処理装置のハードウェアや、個々のメモリにアクセスすることができる。
第１仮想ＯＳ１０は、第１ＤＢＭＳ１１と、データ更新部１２と、非同期反映部１３と、アプリケーション１４とを備える。また、第２仮想ＯＳ２０は、第２ＤＢＭＳ２１と、データ更新部２２と、非同期反映部２３と、アプリケーション２４とを備える。
【００３８】
第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１は、それぞれ第１仮想ＯＳ１０及び第２仮想ＯＳ２０で管理されるデータベースである。本実施形態においては、第１ＤＢＭＳ１１と、第２ＤＢＭＳ２１とは、互いに異なる種類のデータベースであり、互いに異なるデータ構造を持つ。なお、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１は、データを行及び列のマトリクス状に管理する。データベース内のデータが更新される際には、更新対象の行が指定され、指定された行内の更新対象の領域が更新される。
【００３９】
また、仮想マシン１は、第１仮想ＯＳ１０、第２仮想ＯＳ２０でそれぞれ管理される第１ＤＢＭＳ１１、第２ＤＢＭＳ２１について、後述する手法によりデータの同期を行なう。
図２は、本実施形態の一例としての仮想マシン１によるデータ同期の処理を説明するための図である。図２に示す例では、仮想マシン１による第１ＤＢＭＳ１１及び第２ＤＢＭＳ１２間のデータ同期の処理を、第１仮想ＯＳ１０のアプリケーション１４が第１ＤＢＭＳ１１に対する更新を行なう場合を例に挙げて説明する。
【００４０】
アプリケーション１４は、第１仮想ＯＳ１０上で動作する任意のアプリケーションであり、第１ＤＢＭＳ１１に対してデータの変更や参照等のアクセスを行なう。
また、アプリケーション１４は、第１ＤＢＭＳ１１に対してデータの変更、追加、削除等の更新を行なう場合、データ更新部１２に対して更新処理要求（更新要求）を出力する。
【００４１】
データ更新部１２は、アプリケーション１４からデータベースの更新処理要求を入力されると、第１ＤＢＭＳ１１に対するデータの更新を行なう。つまり、データ更新部１２は、第１ＤＢＭＳ１１の更新時にアプリケーション１４から呼び出されるものであり、アプリケーション１４は、データ更新部１２を経由して第１ＤＢＭＳ１１を更新する。
ここで、データ更新部１２は、第１ＤＢＭＳ１１と第２ＤＢＭＳ２１との間でデータの同期を行なうために、第１ＤＢＭＳ１１に対する更新を、第２ＤＢＭＳ２１が更新されるタイミングと同時に行なう。
【００４２】
具体的には、データ更新部１２は、アプリケーション１４からデータベースの更新処理要求を入力されると、アプリケーション１４からアクセス可能なメモリ等から、更新前データ及び更新データ（第１更新データ）４１−１を取得する。
ここで、更新前データは、第１ＤＢＭＳ１１に対して行なわれる更新処理にかかる更新前のデータである。また、更新データ４１−１は、第１ＤＢＭＳに対して行なわれる更新処理にかかる更新後のデータ（更新後データ）であり、第１ＤＢＭＳ１１のデータ構造に対応した形式（第１ＤＢＭＳ形式）のデータである。
【００４３】
そして、データ更新部１２は、取得した更新前データ及び更新データ４１−１から更新差分データを生成するとともに、更新差分データ及び更新データ４１−１を、後述する変換指示及びロック獲得指示とともに更新データ制御部３０に出力する。
データ更新部１２による更新差分データの生成は、例えば、更新前データと更新後データ４１−１とを比較し、更新される箇所（例えば更新される列）の情報を抽出することにより行なわれる。生成される更新差分データには、更新される箇所を示す情報が含まれる。なお、更新差分データには、更新される箇所の更新データが含まれてもよい。
【００４４】
なお、このデータ更新部１２により出力される更新差分データは、データそのものでも良く、また、これらのデータが格納された場所のアドレス等、更新差分データを特定するための情報であっても良い。以下、これらをまとめて、単に「更新差分データ」という。
また、同様に、データ更新部１２により出力される更新データ４１−１は、データそのものでも良く、また、これらのデータが格納された場所のアドレス等、更新データ４１−１を特定するための情報であっても良い。以下、これらをまとめて、単に「更新データ４１−１」という。
【００４５】
つまり、データ更新部１２は、更新差分データ及び更新データ４１−１をデータ更新部１２に出力する代わりに、若しくは加えて、例えば後述する共有メモリ４０上に更新差分データ及び更新データ４１−１を格納し、これらのデータを格納したアドレスを出力しても良い。
以下、更新データ制御部３０に対して変換指示及びロック獲得指示を出力したデータ更新部１２又は２２を、要求元（指示元）のデータ更新部１２又は２２、又は単に要求元（指示元）という。
【００４６】
更新データ制御部３０では、要求元の更新データ４１−１が、要求元以外のデータ同期対象である第２ＤＢＭＳ２１の形式に対応した第２ＤＢＭＳ形式の更新データ（第２更新データ）４１−２に変換される。また、更新データ制御部３０では、後述の如くデータベースのロック範囲が決定され、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１がロックされ、要求元であるデータ更新部１２へロック獲得通知（反映指示）が出力される。
【００４７】
データ更新部１２は、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１のロック獲得通知（反映指示）が更新データ制御部３０から入力されると、第１ＤＢＭＳ１１に対して更新を行なう。また、データ更新部１２は、更新データ制御部３０に対して、ロックした第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１のロック解放指示を出力する。
上述の如く、データ同期対象のデータベースである第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１のロック獲得指示及びロック解放指示は、データ同期の要求元、つまり図２に示す例では仮想ＯＳ１０のデータ更新部１２によって発行される。
【００４８】
非同期反映部１３は、第２仮想ＯＳ２０等の他の仮想ＯＳが要求元となったデータ同期が発生した場合に、第１ＤＢＭＳ形式の更新データ４１−１を第１ＤＢＭＳ１１に対して反映（更新）する。
つまり、非同期反映部１３は、他の仮想ＯＳからのデータベースの更新処理要求によって、反映指示と他の仮想ＯＳのＤＢＭＳ形式の更新データから第１ＤＢＭＳ形式に変換された更新データ４１−１とが、更新データ制御部３０から入力された場合に動作する。また、非同期反映部１３による上述した処理は、データ更新部１２やアプリケーション１４とは非同期で行なわれる。
【００４９】
なお、非同期反映部１３は、共有メモリ４０上に格納された更新データ４１−１のアドレスを、更新データ制御部３０から入力されても良い。この場合、非同期反映部１３は、入力されたアドレスにアクセスすることにより、更新データ４１−１を取得する。
以下、更新データを示す符号としては、更新データ４１−１及び４１−２のうちの１つを特定する必要があるときには符号４１−１、４１−２を用いるが、任意の更新データを指すときには符号４１を用いる。なお、更新データ４１には、上述の如く、データ更新部１２又は２２から出力されたもの、すなわち要求元の更新データと、更新データ制御部３０によって変換されたもの、すなわち要求元以外の同期対象のＤＢＭＳ形式に変換された更新データとが含まれる。
【００５０】
なお、図２に示す例では、第１仮想ＯＳ１０が要求元となったデータ同期が発生しているため、非同期反映部１３による処理は行なわれない。
データ更新部２２、非同期更新部２３、及びアプリケーション２４は、上述したデータ更新部１２、非同期更新部１３、及びアプリケーション１４とそれぞれ同様の機能を備える。
【００５１】
すなわち、アプリケーション２４は、第２仮想ＯＳ２０上で動作する任意のアプリケーションであり、第２ＤＢＭＳ２１に対してデータの変更や参照等のアクセスを行なう。
また、アプリケーション２４は、第２ＤＢＭＳ２１に対してデータの変更、追加、削除等の更新を行なう場合、データ更新部１２に対して更新処理要求（更新要求）を出力する。
【００５２】
データ更新部２２は、データ更新部１２と同様に、アプリケーション２４から第２ＤＢＭＳ２１の更新処理要求を入力されると、更新処理にかかる更新前データ及び更新データ４１−２を取得する。そして、データ更新部２２は、更新前データ及び更新データ４１−２から更新差分データを生成し、更新データ４１−２及び更新差分データを、変換指示及びロック獲得指示とともに更新データ制御部３０に出力する。
【００５３】
また、データ更新部２２は、更新データ処理部３０から反映指示を入力されると、第２ＤＢＭＳ２１に対して更新を行なうとともに、更新データ制御部３０に対して、ロック解放指示を出力する。
非同期反映部２３は、他の仮想ＯＳ（図２に示す例では第１仮想ＯＳ１０）からのデータベースの更新処理要求によって、反映指示と他の仮想ＯＳのＤＢＭＳ形式の更新データから第２ＤＢＭＳ形式に変換された更新データ４１−２とが、更新データ制御部３０から入力された場合に動作する。
【００５４】
すなわち、図２に示す例においては、データ同期の要求元である第１仮想ＯＳ１０とは異なる、第２仮想ＯＳ２０の非同期反映部２３は、更新データ制御部３０からの反映指示に基づいて、更新データ４１−２を第２ＤＢＭＳ２１へ反映（更新）する。
つまり、第２仮想ＯＳ２０の非同期反映部２３は、他の仮想ＯＳ（第１仮想ＯＳ１０）が要求元となったデータ同期の際に動作する。このとき、非同期反映部２３は、第２ＤＢＭＳ形式の更新データ４１−２及び反映指示を更新データ制御部３０から入力されると、更新データ４１−２を第２ＤＢＭＳ２１へ反映する。
【００５５】
なお、上述の如く、非同期反映部２３は、共有メモリ４０上に格納された更新データ４１−２のアドレスを、更新データ制御部３０から入力されても良く、この場合、入力されたアドレスにアクセスすることにより、更新データ４１−２を取得する。
また、非同期反映部２３に対する反映指示は、データ更新部１２に対する反映指示と同時若しくはほぼ同時に更新データ制御部３０から出力される。
【００５６】
なお、第２仮想ＯＳ２０のアプリケーション２４が第２ＤＢＭＳ２１に対する更新を行なう際には、図２を用いて上述した説明における、第１仮想ＯＳ１０と第２仮想ＯＳ２０とを入れ替えることで、仮想マシン１によるデータ同期の処理を実現することができる。
なお、上述の如く、データ同期の要求元以外の仮想ＯＳにおけるアプリケーション及びデータ更新部では、要求元によるデータ同期に伴う処理は行なわれず、指示待ちの状態となる。すなわち、図２に示す例においては、データ同期の要求元である第１仮想ＯＳ１０とは異なる、第２仮想ＯＳ２０のアプリケーション２４及びデータ更新部２２では、第１仮想ＯＳ１０によるデータ同期に伴う処理は行なわれず、指示待ちの状態となる。
【００５７】
一方、上述の如く、データ同期の要求元の仮想ＯＳにおける非同期反映部では、要求元によるデータ同期に伴う処理は行なわれず、指示待ちの状態となる。すなわち、図２に示す例においては、第１仮想ＯＳ１０が要求元となったデータ同期が発生しているため、非同期反映部１３による処理は行なわれず、指示待ちの状態となる。
更新データ制御部３０は、仮想マシン１に配置され、複数の仮想ＯＳ、すなわち第１仮想ＯＳ１０及び第２仮想ＯＳ２０のデータ更新部１２及び２２からアクセスされる。更新データ制御部３０は、データ更新部１２又は２２から入力された要求に対する処理を行ない、結果をデータ更新部１２及び２２に通知する。
【００５８】
更新データ制御部３０は、データ変換処理部３１と、ロック粒度判定処理部３２と、ロック制御処理部３３とを備える。
データ変換処理部３１は、要求元のデータ更新部１２又は２２から変換指示と更新データ４１とを入力されると、事前に定義された変換定義ファイル４２に基づいて、更新データ４１のデータ変換を行なう。
【００５９】
つまり、データ変換処理部３１は、予め設定された変換定義ファイル４２に基づいて、要求元のＤＢＭＳの形式に対応する更新データ４１を、要求元のＤＢＭＳ以外の全てのＤＢＭＳに対して、各形式に対応した更新データ４１に変換する処理を行なう。
図２に示す例においては、データ変換処理部３１は、第１ＤＢＭＳ１１の形式に対応する第１更新データ４１−１を、第２ＤＢＭＳ２１の形式に対応した第２更新データ（変換後データ）４１−２に変換する処理を行なう。
【００６０】
また、データ変換処理部３１は、要求元のデータ更新部１２又は２２により入力された更新データ４１と、データ変換処理部３１によって変換された更新データ４１とを共有メモリ４０に格納する。なお、上述の如く、要求元のデータ更新部１２又は２２により要求元の更新データ４１が共有メモリ４０に格納される場合には、データ変換処理部３１は、変換した更新データ４１のみを共有メモリ４０に格納しても良い。
【００６１】
なお、データ変換処理部３１による変換結果は、変換指示の要求元のデータ更新部１２又は２２へ通知される。
また、データ変換処理部３１は、データ変換が完了すると、更新データ４１に基づいて、データベース内のテーブルにおける更新データ４１が含まれる行を示す後述するロックキーを生成する。
【００６２】
ロック粒度判定処理部３２は、更新対象のデータベースの領域をロックするロック粒度（ロック範囲）を決定する。
なお、ロック粒度（ロック範囲）とは、データベースのデータが更新される際に排他制御が行なわれる範囲である。本実施形態においては、ロック範囲は、ロック粒度判定処理部３２により、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１におけるテーブルの列を最小単位として決定される。つまり、ロック範囲は、更新処理にかかる更新対象の行の中で、更新が行なわれる１以上の列を全て含む範囲である。
【００６３】
具体的には、ロック粒度判定処理部３２は、要求元の更新前データと更新データ４１とに基づいて、ロック範囲を決定する。つまり、ロック粒度判定処理部３２は、更新前データ及び更新後データ４１に基づいて生成された更新差分データから、更新処理によって更新される範囲を判定し、当該範囲をロック範囲に決定する。
図２に示す例においては、ロック粒度判定処理部３２によるロック範囲の決定は、更新前データ及び更新後データ４１−１に基づいて生成された更新差分データに基づいて行なわれる。
【００６４】
上述の如く、更新差分データには、更新される箇所（列）を示す情報が含まれるため、ロック粒度判定処理部３２は、更新される箇所を示す情報に基づいて、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１において更新される列（項目）を判定する。
そして、ロック粒度判定処理部３２は、更新されると判定した列（項目）を全て含む範囲をロック範囲に決定する。
【００６５】
ここで、ロック粒度判定処理部３２により生成されるロック範囲は、例えば、図７に示すような列パターンで表される。
列パターンとは、後述するロック制御処理部３３によりロックされる対象の列を“１”、非対象の列を“０”としたビット列である。
例えば、図７に示すように、データベース内の１行に８列存在し、ロック粒度判定処理部３２により１列目、３列目、８列目がロック範囲に決定された場合、列パターンは“１０１００００１”となる。
【００６６】
図７に示すような列パターンで表されるロック範囲について、更新データ制御部３０によるロックが行なわれることにより、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１では、更新対象の行の中で、更新データ４１により更新される列についてのみ排他制御が行なわれる。
すなわち、従来は行単位で排他制御が行なわれていたが、ロック粒度判定処理部３２による列を最小単位としたロック範囲の決定により、更新対象の行及びロック範囲内の１列により特定される領域単位で排他制御を行なうことができる。従って、更新対象の行の中で更新されない範囲の列については、排他制御が行なわれずに済み、データベースの共用度の向上が実現できる。
【００６７】
以下、更新対象の行及びロック範囲内の１列により特定される領域を、ブロックという。すなわち、本実施形態においては、データベースにおける１行×１列のブロック単位でロック範囲が決定され、１以上のブロックにより、排他制御が行なわれる領域を特定することができる。
ロック制御処理部３３は、要求元のデータ更新部１２又は２２により入力されたロック獲得指示と、ロック粒度判定処理部３２によって決定されたロック粒度とに基づいて、データ同期対象である第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１をロックする。
【００６８】
具体的には、ロック制御処理部３３は、データ更新部１２又は２２から入力されたロック獲得指示及び更新データ４１と、ロック粒度判定処理部３２によって決定されたロック範囲とに基づいて、後述するロック管理テーブル４３における、更新対象のロック範囲のロック状態を確認する。
ロック管理テーブル４３には、データベース内のテーブルにおける更新データ４１が含まれる行を示すロックキーが格納されている。ロック制御処理部３３は、ロック管理テーブル４３に格納されたロックキーとロック範囲とに基づいて、ロック粒度判定処理部３２により決定された更新対象のロック範囲がロック可能であるか、又はロック済みであるか否かを確認する。
【００６９】
なお、ロック制御処理部３３による、更新対象のロック範囲のロック状態の具体的な確認処理については、後述する。
ロック範囲が他のスレッドによってロックされていない場合は、ロック制御処理部３３は、当該ロック範囲でロックを行ない、要求元のデータ更新部１２又は２２に対して、ロック獲得通知、つまり更新データ４１の反映指示を行なう。また、ロック制御処理部３３は、要求元とは異なる仮想ＯＳのデータ更新部１２又は２２に対して、データ変換処理部３１によって変換された更新データ４１の反映指示を行なう。
【００７０】
なお、ロック制御処理部３３によるロック範囲のロックは、ロック管理テーブル４３に対して、更新処理にかかるロック範囲がロック獲得状態であることを示すロック獲得情報を設定することにより行なわれる。ロック獲得情報には、更新対象のロックキーとロック範囲とが含まれる。
一方、ロック範囲が他のスレッドによってロックされている場合、すなわちロック範囲がロック済み資源であった場合、ロック制御処理部３３は、ロックされているロック範囲が解放されるまで待ち合せを行なう。この待ち合わせは、ロック制御処理部３３が、ロック管理テーブル４３に対して、更新処理にかかるロック範囲がロック待ち状態であることを示す待ち情報を、待ち合わせ中の要求として設定（登録）することにより行なわれる。
【００７１】
また、ロック制御処理部３３は、要求元のデータ更新部１２又は２２からロックの解放指示を入力されると、ロック管理テーブル４３における該当するロック範囲のロックを解放する。
なお、ロック制御処理部３３によるロック解放に伴い、待ち合わせ中の要求についてロック範囲のロックが獲得可能となった場合、当該待ち合わせ中の要求は、要求元で予め設定された優先度に従って待ち状態が解除され、再度ロック獲得指示として処理される。具体的には、複数の待ち合わせ中の要求についてロック範囲のロックが獲得可能となった場合、例えば、最も高い優先度が設定された待ち合わせ中の要求の待ち状態が解除され、再度ロック獲得指示として処理される。
【００７２】
なお、待ち合わせ中の要求の優先度が同一である場合は、待ち状態の登録が行なわれた先後関係など、仮想マシン１により決定される所定の条件等に応じて、いずれかの要求の待ち状態が解除される。
待ち状態が解除され、再度ロック獲得指示として処理される待ち合わせ中の要求にかかる更新対象のロック範囲は、上述したロック制御処理部３３によってロックされる。
【００７３】
なお、上述したデータ変換処理部３１及びロック粒度判定処理部３２によるそれぞれの処理は、いずれかの処理が先に、つまりシーケンシャルに行なわれても良いし、それぞれの処理が並行して行なわれても良い。いずれの場合でも、ロック制御処理部３３による処理は、データ変換処理部３１及びロック粒度判定処理部３２によるそれぞれの処理が完了した後に実行される。
【００７４】
また、ここまで、要求元のデータ更新部１２又は２２が更新差分データを生成するものとして説明したが、これに限定されるものではなく、更新差分データの生成は、ロック粒度判定処理部３２によって行なわれても良い。この場合、ロック粒度判定処理部３２は、要求元のデータ更新部１２又は２２から更新前データ及び更新データ４１を入力されて、更新差分データを生成する。
【００７５】
また、図２に示す例では、更新データ４１及び変換指示、更新差分データ、及びロック獲得指示がいずれもデータ変換処理部３１に入力されているが、これに限定されるものではない。例えば、変換指示がデータ変換処理部３１に、ロック獲得指示がロック制御処理部３３に、それぞれ入力されても良い。その際、データ変換処理部３１には、変換指示とともに変更データ４１が入力される。また、ロック粒度判定処理部３２には、更新差分データ、又はロック粒度判定処理部３２で更新差分データが生成される場合には変換前データ及び変換データ４１が入力される。
【００７６】
さらに、この更新データ制御部３０により扱われる更新差分データ、更新データ４１、ロック範囲等のデータは、データそのものでも良く、また、これらのデータが格納された場所（例えば共有メモリ４０）のアドレス等、これらのデータを特定するための情報であっても良い。
また、上述の如く、更新データ制御部３０により、更新データ４１の反映指示が入力されると、データ更新部１２及び非同期反映部２３、又はデータ更新部２２及び非同期反映部１３は、対応する第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１に対して、更新データ４１の反映（更新）を行なう。
【００７７】
このとき、データ更新部１２及び非同期反映部２３、又はデータ更新部２２及び非同期反映部１３は、アプリケーション１４又は２４からの更新要求に応じた処理により更新データ４１の反映を行なう。更新データ４１の反映処理の態様としては、例えば、対応する第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１内の更新処理にかかるロックキーで特定される行に対する、更新データ４１による変更、追加又は削除が挙げられる。
【００７８】
以下、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１に対して更新データ４１の反映を行なうデータ更新部１２及び非同期反映部２３、又はデータ更新部２２及び非同期反映部１３を、まとめて更新部という。
更新データ４１の変更では、更新部は、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１における更新対象の領域、つまり、更新対象の行及びロック範囲の列により特定される領域（１以上のブロック）に対して、ロック範囲に対応する更新データ４１内のデータを、例えば上書きする。
【００７９】
更新データ４１の追加では、更新部は、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１における更新対象の領域、つまりブロックに対して、更新データ４１を追加する。なお、更新データ４１の追加により新たな行が追加される場合には、ロック粒度判定処理部３２によるロック範囲の決定及びロック制御処理部３３によるロック獲得処理は、行なわないこととしても良い。
【００８０】
更新データ４１に基づく削除では、更新部は、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１における更新対象の領域、つまりブロックに格納されたデータの削除を行なう。なお、この削除に用いられる更新データ４１には、更新処理により削除される対象の領域、つまりロック範囲に決定される領域に、例えば“Ｎｕｌｌ”、若しくは削除対象であることを示す任意の文字列等が設定される。
【００８１】
また、この削除において、更新対象の行全体を削除する場合、ロック範囲には、更新対象の行の中の全ての列が含まれる。つまり、更新対象の行にかかる更新データ４１には、全ての列に、例えば“Ｎｕｌｌ”、若しくは削除対象であることを示す任意の文字列等が設定される。或いは、更新対象の行にかかる更新データ４１には、更新対象の行にかかる全ての列が削除対象であることを示す情報が設定されても良い。そして、ロック粒度判定処理部３２により、更新データ４１（更新差分データ）に基づいて、全ての列がロック範囲に決定される。
【００８２】
なお、上述した更新データ４１の反映処理の態様は、一例であり、例えば置換や移動等、既知の種々の処理を含むことができる。更新部は、例えば置換や移動等の処理については、上述した変更、追加及び削除の処理のうちの１以上の組み合わせにより行なっても良く、ＤＢＭＳが備える機能を用いて行なっても良い。
共有メモリ４０は、第１仮想ＯＳ１０及び第２仮想ＯＳ２０から同時にアクセス可能なメモリである。
【００８３】
なお、共有メモリ４０としては、ＲＡＭ（Random Access Memory）等が挙げられるが、ＲＡＭ等に替えて、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の記憶装置を用いても良い。
共有メモリ４０は、第１ＤＢＭＳ１１の形式に対応した更新データ４１−１及び第２ＤＢＭＳ２１の形式に対応した更新データ４１−２をそれぞれ格納する。また、共有メモリ４０は、変換定義ファイル（変換定義情報）４２と、ロック管理テーブル（ロック管理情報）４３とを格納する。
【００８４】
本実施形態においては、更新データ制御部３０は、共有メモリ４０上に格納されたデータや変換定義ファイル、ロック管理テーブル４３等を用いて、上述した処理を行なう。
以下、変換定義ファイル４２及びロック管理テーブル４３の構成について説明する。
〔１−１−１〕変換定義ファイルの構成
図３は、本実施形態の一例としての変換定義ファイル４２の構成例を示す図である。また、図４は、本実施形態の一例としてのデータベースにおける数値データの内部表現形式を示す図であり、数値の“１２３．４５”を、文字列表現（UTF-16）、文字列表現（Shift-JIS）、及びCOBOL表現で表したものである。
【００８５】
図５は、本実施形態の一例としてのデータ変換処理部３１によるデータ変換処理を説明するための図である。なお、図５に示す例では、更新対象である更新データ４１として、１列目に文字データ、２列目に数字データ、３列目に混在データを含むものとする。
図３に示すように、変換定義ファイル４２には、更新データ制御部３０にアクセスしているＯＳを示すＯＳ識別子と、データベースの種類を示すＤＢ識別子（ＤＢ種別）と、各ＤＢ識別子に対応したデータ特性とが含まれる。
【００８６】
ここで、図３に示す例では、データ特性には、文字データのコード系、後方空白の扱い、数値データの内部表現形式、並びに文字データと数値データとが含まれる混在データの列名及び混在データの扱いを示す情報、などが含まれる。
文字データのコード系は、データベースで用いられるUTF-16やShift-JISなどのコード系を示す。
【００８７】
後方空白の扱いは、データベースにおける文字列の操作時に、文字列長が格納先の列長に満たない場合、不足する部分について、文字のコード系で指定されたコードによる空白を設定するか否かを示す。
数値データの内部表現形式は、図４に示すように、文字列表現やCOBOL表現などのデータベース内部での数値データの表現形式を示す。
【００８８】
なお、COBOL表現で表されたデータには、小数点の位置は含まれず、最終バイトの上位４ビットには、“ｃ”（正）又は“ｄ”（負）の符号が設定される。
混在データの列名及び取り扱いは、図３に示す“ＲＯＷ０３”のような列名、及び混在データを文字データ又は数値データのいずれのデータとして取り扱うかを示す。なお、列名は、混在データの列番号など列を特定することができるものであれば良い。また、データベースに複数のテーブルが含まれる場合には、混在データの列名とともに、当該列が存在するテーブル名が設定されても良い。
【００８９】
データ変換処理部３１は、変換定義ファイル４２を参照し、変換対象、つまり要求元の更新データ４１にかかるＯＳ識別子及びＤＢ識別子に基づいて、変換先、つまり要求元以外のデータベースの各形式に対応する変換方法を決定する。
例えば、図３及び図５に示すように、データ変換処理部３１は、変換定義ファイル４２を参照し、変換対象、つまり要求元のＯＳ識別子“Ｗｉｎ００１”における更新データ４１に基づいて、変換先のＯＳ識別子“Ｗｉｎ００２”に対応する形式に変換するための変換方法を決定する。なお、変換方法の決定とは、要求元の更新データ４１を変換先の形式に変換するための変換プログラム等の決定をいう。
【００９０】
そして、データ変換処理部３１は、決定した変換方法に従って変換を行なう。
具体的には、データ変換処理部３１は、図５に示すように、要求元の更新データ４１のうちの１列目の文字データをUTF-16からShift-JISに変換し、２列目の数値データを文字列表現（UTF-16）からCOBOL表現に変換し、３列目の混在データを文字データから数値データに変換する。なお、３列目の混在データの変換は、変換定義ファイル４２において指定されたデータ属性に変換されるため、例えば文字データであれば、図３に示す文字データのコード系に基づいて変換され、数値データであれば、内部表現形式に基づいて変換される。
【００９１】
〔１−１−２〕ロック管理テーブルの構成
図６は、本実施形態の一例としてのロック管理テーブル４３の構成例を示す図であり、図７は、本実施形態の一例としてのロック管理テーブル４３における列パターンを説明するための図である。
図６に示す例においては、仮想マシン１によりデータ同期される各ＤＢＭＳ内のテーブルは、互いに同じスキーマ名、テーブル名を持ち、同じロックキーでテーブル内の行を一意に決定することができるものとする。
【００９２】
なお、上述の如く、本実施形態においては、第１ＤＢＭＳ１１と、第２ＤＢＭＳ２１とは、互いに異なる構造を持つデータベースである。この場合、例えば、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１におけるスキーマ名、テーブル名、ロックキー等の対応関係を示すテーブル（情報）を、共有メモリ４０に備えることができる。具体的には、この対応関係を示すテーブルには、第１ＤＢＭＳ１１のロックキーと第２ＤＢＭＳ２１のロックキーとの間の対応関係、及び第１更新データ４１−１のロック範囲と第２更新データ４１−２のロック範囲との間の対応関係などの情報が格納される。
【００９３】
この対応関係を示すテーブルにより、更新データ制御部３０から参照する際の第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１内のテーブル等の名称を、同じものとすることができる。
上述のように、ロック制御処理部３３は、ロック管理テーブル４３により、同期対象の全てのＤＢＭＳ、つまり本実施形態においては第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１に対するデータベースのロックを制御することができる。
【００９４】
ロック管理テーブル４３には、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１のロック状態が設定される。
図６に示すように、ロック管理テーブル４３には、スキーマ名テーブルと、テーブル名テーブルと、ロックキーテーブルと、獲得列パターンテーブルと、獲得スレッドＩＤテーブルと、待ちスレッドＩＤテーブルと、待ち列パターンテーブルとが含まれる。
【００９５】
スキーマ名テーブルには、ロック制御処理部３３により獲得されたデータ、つまり更新処理にかかるロック範囲が含まれるスキーマ名が設定される。同じスキーマ名を持つロック範囲が全て解放された場合、全てのロック範囲が解放されたスキーマ名は、このスキーマ名テーブルから削除される。
テーブル名テーブルには、ロック制御処理部３３により獲得されたデータ、つまり更新処理にかかるロック範囲が含まれるテーブル名が設定される。同じテーブル名を持つロック範囲が全て解放された場合、全てのロック範囲が解放されたテーブル名は、このテーブル名テーブルから削除される。
【００９６】
ロックキーテーブルには、ロック制御処理部３３により獲得されたデータ、つまり更新処理にかかるロック範囲が含まれる行を一意に決定するロックキーが設定される。同じロックキーを持つロック範囲が全て解放された場合、全てのロック範囲が解放されたロックキーは、このロックキーテーブルから削除される。
獲得列パターンテーブルには、スキーマ名、テーブル名、ロックキーの各テーブルによって特定される行において、ロック制御処理部３３により獲得されている列パターンが設定される。獲得列パターンは、列パターンを持つデータ、つまりロック範囲が解放された場合に削除される。
【００９７】
獲得列パターンは、上述した列パターンの如く、例えばロック制御処理部３３による獲得対象列を“１”、非獲得対象列を“０”としたビット列であり、１行×ｍ列（ｍは１行を形成する列数）のビット列である。
例えば、図７に示すように、データベース内の１行に８列存在し、ロック粒度判定処理部３２により１列目、３列目、８列目がロック範囲に決定された場合、獲得列パターンは“１０１００００１”となる。
【００９８】
獲得スレッドＩＤテーブルには、獲得列パターンテーブルに格納された、ロック制御処理部３３により獲得されている列パターンを持つ獲得スレッドＩＤが設定される。獲得スレッドＩＤは、列パターンを持つロック範囲が解放された場合に削除される。
なお、獲得スレッドＩＤとは、ロック獲得指示の要求元のＯＳ識別子と、スレッドＩＤとを組み合わせた識別子（獲得識別子）である。
【００９９】
待ちスレッドＩＤテーブルには、獲得列パターンテーブルに格納された列パターンの獲得を待機中（待ち合わせ中）のスレッドのＩＤが、待ちスレッドＩＤとして設定される。待ちスレッドＩＤは、待ち状態が解除された場合に削除される。
なお、待ちスレッドＩＤとは、ロック獲得指示の要求元のＯＳ識別子と、スレッドＩＤとを組み合わせた識別子（獲得識別子）である。
【０１００】
待ち列パターンテーブルには、待ちスレッドＩＤテーブルに格納された待ち合わせ中の待ちスレッドＩＤにおける、ロック範囲、つまり処理対象の列パターンが設定される。待ち列パターンは、待ち状態が解除された場合に削除される。
ロック制御処理部３３は、上述したロック管理テーブル４３に基づいて、更新処理にかかるロック範囲についてロックが獲得可能か否かを判断する。
【０１０１】
具体的には、ロック制御処理部３３は、ロック範囲、つまり処理対象の列パターンと、獲得列パターンテーブル内の全ての獲得列パターンとの列毎のＡＮＤを取り、ＡＮＤの結果、全ての列が“０”であればロック範囲のロックが獲得可能であると判断する。一方、ロック制御処理部３３は、ＡＮＤの結果、“０”以外の列があればロック範囲のロックが獲得不可能であると判断し、上述した待ち合わせの処理を行なう。
【０１０２】
そして、ロック制御処理部３３は、ロックが獲得可能であると判断すると、指示元のＯＳ識別子、ロックキー、獲得列パターン、及びスレッドＩＤを、ロック獲得情報としてロック管理テーブル４３に設定する。
一方、ロック制御処理部３３は、ロックが獲得不可能であると判断すると、待ち列パターン、及び待ちスレッドＩＤを、更新処理にかかるロック範囲がロック待ち状態であることを示す待ち情報としてロック管理テーブル４３に設定する。
【０１０３】
また、データ更新部１２又は２２より、ロック解放指示を入力されると、ロック制御処理部３３は、ロック解放指示にかかるロック範囲をロック獲得列パターンから削除するとともに、ロック範囲の解放によりロックの獲得が可能な待ち列パターンがあるかを判定する。そして、ロック獲得可能な待ち列パターンがあった場合、ロック制御処理部３３は、当該待ち列パターンにかかる指示元ＯＳ識別子やロック範囲について、新たなロック獲得指示として処理する。
【０１０４】
なお、待ち列パターンによっては、複数の獲得列パターンが解放されないと、更新処理にかかるロック範囲のロックを獲得することができない場合がある。この場合、ロック制御処理部３３は、この待ちスレッドＩＤ及び待ち列パターンを、これら複数の獲得列パターンの獲得スレッドＩＤにそれぞれ対応付けて登録を行なう。そして、ロック制御処理部３３は、複数の獲得列パターンにおけるロックが解放されたものについて、待ち列パターンにかかるロック範囲の一部についてロックを獲得させる。このように、待ち列パターンにかかるロック範囲について分割してロックを獲得させ、待ち列パターンにかかるロック範囲の全てについてロックが獲得できたときに、ロック制御処理部３３は、当該待ち列パターンにかかる反映指示を出力する。
【０１０５】
上述のように、ロック制御処理部３３は、１つのロック管理テーブル４３、つまり１つのロック管理機構により、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１の複数のデータベースのロックを制御することができる。
上述のことから、更新データ制御部３０と共有メモリ４０とは、第１仮想ＯＳ１０及び第２仮想ＯＳ２０間のデータベースの同期制御を行なうデータ同期制御装置として機能するといえる。
【０１０６】
〔１−２〕一実施形態の動作
次に、上述の如く構成された仮想マシン１によるデータ同期処理を、図８に示すシーケンス図を参照しながら説明するとともに、仮想マシン１の各部の詳細な処理については、図９〜図１５に示すフローチャートを参照しながら説明する。
図８は、本実施形態の一例としての仮想マシン１によるデータ同期の処理を説明するためのシーケンス図である。
【０１０７】
図９は、本実施形態の一例としてのデータ更新部１２又は２２の処理を説明するためのフローチャートであり、図１０は、更新データ制御部３０のデータ変換及びロック獲得の処理を説明するためのフローチャートである。
また、図１１は、本実施形態の一例としてのデータ変換処理部３１のデータ変換の処理を説明するためのフローチャートであり、図１２は、ロック粒度判定処理部３２のロック範囲決定の処理を説明するためのフローチャートである。
【０１０８】
さらに、図１３は、本実施形態の一例としてのロック制御処理部３３によるロック獲得の処理を説明するためのフローチャートであり、図１４は、更新データ制御部３０のロック解放の処理を説明するためのフローチャートである。
また、図１５は、本実施形態の一例としてのロック制御処理部３３によるロック解放の処理を説明するためのフローチャートであり、図１６は、非同期反映部１３又は２３の処理を説明するためのフローチャートである。
【０１０９】
以下、第１仮想ＯＳ１０のアプリケーション１４が第１ＤＢＭＳ１１に対する更新を行なう場合の仮想マシン１による処理について説明する。
はじめに、図８に示すように、第１仮想ＯＳ１０のアプリケーション１４による第１ＤＢＭＳ１１への更新処理の要求が発生し、当該要求がデータ更新部１２へ出力される（ステップＴ１）。
【０１１０】
更新要求が入力されると、図９に示す如く、データ更新部１２により、アプリケーション１４から第１ＤＢＭＳ１１に対して行なわれる更新処理にかかる更新前データ及び更新後データ４１−１が取得される（ステップＳ１）。なお、更新前データ及び更新後データ４１−１は、アプリケーション１４によりアクセス可能なメモリ上に格納されているため、データ更新部１２は、アプリケーション１４経由で当該メモリ上から更新前データ及び更新後データ４１−１を取得する。
【０１１１】
そして、データ更新部１２により、更新前データ及び更新後データ４１−１から更新差分データが作成される（ステップＳ２，Ｔ２）。
次いで、データ更新部１２により、更新後データ４１−１及び更新差分データと、変換指示及びロック獲得指示とが、更新データ制御部３０へ出力される（ステップＳ３，Ｔ３）。データ更新部１２は、上記各データ及び各指示を更新データ制御部３０へ出力すると、更新データ制御部３０における処理（図１０のステップＳ１１〜Ｓ２３）が完了し、更新データ制御部３０から応答が入力されるまで、待ち合わせを行なう（ステップＳ４）。
【０１１２】
更新データ制御部３０では、図１０に示す如く、データ更新部１２から変換指示及びロック獲得指示を入力されると（ステップＳ１１）、データ変換処理部３１が指示待ちであるか否かが判断される（ステップＳ１２）。
データ変換処理部３１が指示待ちである場合（ステップＳ１２のＹｅｓルート）、更新データ制御部３０により、変換指示とともに、更新後データ４１−１、並びに指示元のＯＳ識別子及びＤＢ識別子がデータ変換処理部３１に入力され、データ変換処理部３１が起動される（ステップＳ１４）。データ変換処理部３１では、変換指示に対する所定の処理（ステップＴ４及び後述する図１１のステップＳ３１〜Ｓ３７）が実行される。
【０１１３】
一方、データ変換処理部３１が他の処理を行なっている場合等、指示待ちではない場合（ステップＳ１２のＮｏルート）、更新データ制御部３０により、データ変換処理部３１が指示待ちになるまで待ち合わせが行なわれ（ステップＳ１３）、指示待ちになった場合にステップＳ１４に移行する。
また、更新データ制御部３０では、データ更新部１２から変換指示及びロック獲得指示を入力されると（ステップＳ１１）、ロック粒度判定処理部３２が指示待ちであるか否かが判断される（ステップＳ１５）。
【０１１４】
ロック粒度判定処理部３２が指示待ちである場合（ステップＳ１５のＹｅｓルート）、更新データ制御部３０により、更新差分データがロック粒度判定処理部３２に入力され、ロック粒度判定処理部３２が起動される（ステップＳ１７）。ロック粒度判定処理部３２では、ロック粒度（ロック範囲）の決定にかかる所定の処理（ステップＴ５及び後述する図１２のステップＳ４１〜Ｓ４３）が実行される。
【０１１５】
一方、ロック粒度判定処理部３２が他の処理を行なっている場合等、指示待ちではない場合（ステップＳ１５のＮｏルート）、更新データ制御部３０により、ロック粒度判定処理部３２が指示待ちになるまで待ち合わせが行なわれ（ステップＳ１６）、指示待ちになった場合にステップＳ１７に移行する。
なお、上述したステップＳ１２〜Ｓ１４の処理と、ステップＳ１５〜Ｓ１７の処理とは、並行して行なわれても良いし、いずれかの処理が先に実行されても良い。
【０１１６】
更新データ制御部３０では、図１０に示すように、ステップＳ１２〜Ｓ１４、及びステップＳ１５〜Ｓ１７の両方の処理が完了するまで待ち合わせが行なわれる（ステップＳ１８）。
ここで、上述したステップＳ１４における、データ変換処理部３１の動作について説明する。
【０１１７】
データ変換処理部３１では、図１１に示す如く、更新データ制御部３０により、更新後データ４１−１、並びに指示元のＯＳ識別子及びＤＢ識別子が入力データとして入力される（ステップＳ３１）。
そして、データ変換処理部３１により、予め設定された変換定義ファイル４２が参照され、指示元のＯＳ識別子及びＤＢ識別子に対応する変換方法が決定される（ステップＳ３２，図３参照）。
【０１１８】
次いで、データ変換処理部３１により、ステップＳ３２で決定された変換方法に従って、更新後データ（更新データ）４１−１が第２ＤＢＭＳ２１の形式に対応した更新データ（変換後データ）４１−２に変換される（ステップＳ３３，Ｔ４）。
なお、データ変換処理部３１では、ステップＳ３３において、データ同期対象の他のＤＢＭＳの種別数分、つまりデータ同期対象の他のＤＢＭＳの種別毎に、更新データ４１−１が変換される。また、データ変換処理部３１では、変換定義ファイル４２中のデータ表現形式が異なる部分を、データ同期対象の他のＤＢＭＳの種別に対応した形式に変換される。つまり、更新データ４１−１の項目（列）のデータ表現形式と、データ同期対象の他のＤＢＭＳにおける項目（列）のデータ表現形式とが異なる場合等に、データ変換処理部３１により、更新データ４１−１の該当項目（列）の変換が行なわれる。
【０１１９】
更新データ４１−１の変換が完了すると、データ変換処理部３１により、エラー判定が行なわれる（ステップＳ３４）。エラー判定では、変換定義ファイル４２の異常や更新データ４１の異常、ハードウェア異常等の原因、或いはその他の原因による変換エラーの有無が確認される。
エラー判定の結果、変換エラーが無い場合（ステップＳ３４のＮｏルート）、データ変換処理部３１により、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１における更新データ４１が含まれる行を特定するロックキーが生成される（ステップＳ３５）。
【０１２０】
一方、エラー判定の結果、変換エラーがあった場合（ステップＳ３４のＹｅｓルート）、データ変換処理部３１により、変換エラーに基づいてエラー情報が設定される（ステップＳ３６）。
そして、データ変換処理部３１により、更新データ制御部３０に対して処理完了が通知され、データ変換処理部３１は、指示待ち状態に移行する（ステップＳ３７）。なお、変換エラーがあり、ステップＳ３６においてエラー情報が設定された場合には、更新データ制御部３０に対して、処理完了通知とともにエラー情報が通知される。
【０１２１】
次いで、上述した図１０に示すステップＳ１７における、ロック粒度判定処理部３２の動作について説明する。
ロック粒度判定処理部３２では、図１２に示す如く、更新データ制御部３０により、更新差分データが入力データとして入力される（ステップＳ４１）。
そして、ロック粒度判定処理部３２により、更新差分データから、変更のあった行のうちのロック対象となる列、つまりロック範囲が決定される（ステップＳ４２，Ｔ５）。
【０１２２】
最後に、データ変換処理部３１により、ロック範囲が設定され、更新データ制御部３０に対して、処理完了通知とともに設定されたロック範囲が通知される。そして、データ変換処理部３１は、指示待ち状態に移行する（ステップＳ４３）。
更新データ制御部３０では、上述したデータ変換処理部３１及びロック粒度判定処理部３２の両方の処理が完了すると、すなわち両方の処理完了の通知が入力されると、図１０に示す如く、ロック制御処理部３３が指示待ちであるか否かが判断される（ステップＳ１９）。
【０１２３】
ロック制御処理部３３が指示待ちである場合（ステップＳ１９のＹｅｓルート）、更新データ制御部３０により、ロック獲得指示とともに、変換後データ４１−１、及びロック範囲がロック制御処理部３３に入力され、ロック制御処理部３３が起動される（ステップＳ２１）。ロック制御処理部３３では、ロック獲得指示に対する所定の処理（ステップＴ６，Ｔ７及びＴ１１、並びに後述する図１３のステップＳ５１〜Ｓ６２）が実行される。
【０１２４】
一方、ロック制御処理部３３が他の処理を行なっている場合等、指示待ちではない場合（ステップＳ１９のＮｏルート）、更新データ制御部３０により、ロック制御処理部３３が指示待ちになるまで待ち合わせが行なわれ（ステップＳ２０）、指示待ちになった場合にステップＳ２１に移行する。
またここで、上述したステップＳ２１における、ロック制御処理部３３の動作について説明する。
【０１２５】
ロック獲得指示が入力されたロック制御処理部３３では、図１３に示す如く、変換後データ４１−２及びロック粒度判定処理部３２で決定されたロック範囲が入力データとして入力される（ステップＳ５１）。
そして、ロック制御処理部３３により、ロック管理テーブル４３が参照され、データ変換処理部３１により生成された更新処理にかかるロックキーと同一のロックキーがロック管理テーブル４３に含まれるか否かが判定される（ステップＳ５２，Ｓ５３）。
【０１２６】
更新処理にかかるロックキーと同一のロックキーがロック管理テーブル４３に含まれないと判定された場合（ステップＳ５３のＮｏルート）、ロック制御処理部３３により、更新処理にかかる変換データ４１のロック範囲は、“ロック未”の状態、つまりロックされていない状態であると判断される（ステップＳ５４）。
そして、ロック制御処理部３３により、更新処理にかかる更新データ４１−２のロックキー、獲得列パターンで示されるロック範囲、指示元のＯＳ識別子及びスレッドＩＤが、ロック管理テーブル４３に設定される（ステップＳ５５，図６参照）。すなわち、ステップＳ５５においてロック制御処理部３３により、更新処理にかかるロック範囲がロックされていることを示す上述した情報が、ロック獲得情報としてロック管理テーブル４３に設定される。
【０１２７】
更新処理にかかるロック範囲がロックされると、ロック制御処理部３３により、更新データ４１−２について第２ＤＢＭＳ２１への反映指示が設定される（ステップＳ５６）。
最後に、ロック制御処理部３３により、更新データ制御部３０に対して、処理完了通知とともに変換後データ４１−２及び設定された反映指示が通知される。そして、ロック制御処理部３３は、指示待ち状態に移行する（ステップＳ５７）。
【０１２８】
一方、ステップＳ５３において、更新処理にかかるロックキーと同一のロックキーがロック管理テーブル４３に含まれると判定された場合（ステップＳ５３のＹｅｓルート）、ロック制御処理部３３により、ロック管理テーブル４３内の獲得されたロック範囲と、変換後データ４１−２にかかるロック範囲とに重なりがあるか否かが判定される（ステップＳ５８，Ｓ５９）。
【０１２９】
すなわち、ステップＳ５８，Ｓ５９では、ロック制御処理部３３により、ロック管理テーブル４３に含まれるロックキーに対応したロック範囲と、更新処理にかかるロック範囲との間に共通した範囲があるか否かが判定される。この判定は、例えば、上述したように、更新処理にかかるロック範囲、つまり処理対象の列パターンと、獲得列パターンテーブル内の全ての獲得列パターンとの列毎のＡＮＤを取ることにより行なわれる。
【０１３０】
獲得されたロック範囲と、変換後データ４１−２にかかるロック範囲とに重なりがないと判定された場合（ステップＳ５９のＮｏルート）、ロック制御処理部３３により、更新処理にかかるロック範囲は、“ロック未”の状態であると判断され、上述したステップＳ５４の処理に移行する。
一方、獲得されたロック範囲と、更新データ４１にかかるロック範囲とに重なりがあると判定された場合（ステップＳ５９のＹｅｓルート）、ロック制御処理部３３により、更新処理にかかる変換データ４１のロック範囲は、“ロック済”の状態、つまり既にロックされている状態であると判断される（ステップＳ６０）。
【０１３１】
そして、ロック制御処理部３３により、更新処理にかかる第１及び第２のデータベースのロック、つまり更新処理にかかるロック範囲がロック待ち状態であることを示す待ち情報が、ロック管理テーブル４３に設定される（ステップＳ６１，Ｔ１１）。
すなわち、ステップＳ６１においてロック制御処理部３３により、待ち列パターンで示されるロック範囲及び待ちスレッドＩＤが、ロック管理テーブル４３内のロック獲得待ちの獲得スレッドＩＤに対応付けて設定される（図６参照）。
【０１３２】
また、ロック制御処理部３３により、更新処理にかかるロック範囲のロックが獲得できなかったことを示すエラー情報が設定され（ステップＳ６２）、ステップＳ５７に移行する。なお、ロック制御処理部３３により、ステップＳ６２においてエラー情報が設定された場合、更新データ制御部３０に対して通知される処理完了通知には、更新データ４１−２及び反映指示に替えてエラー情報が付加される。
【０１３３】
更新データ制御部３０では、上述したロック制御処理部３３の処理が完了すると、すなわち処理完了の通知が入力されると、図１０に示す如く、エラーの有無が判定され、復帰情報が作成される（ステップＳ２２）。
ここで、更新データ制御部３０によるエラーの有無の判定は、データ変換処理部３１やロック制御処理部３３から入力された処理完了通知に、エラー情報が付加されているか否かによって行なわれる。
【０１３４】
また、復帰情報は、指示元の第１仮想ＯＳ１０又は／及び同期対象の第２仮想ＯＳ２０への通知情報であり、更新データ４１の各ＤＢＭＳへの反映指示や、各処理部３１〜３３からのデータ変換及びロック獲得の通知、エラー情報が入力された場合に通知するエラー情報などが含まれる。
なお、変換定義ファイル４２の異常によりデータ変換処理部３１において変換が行なわれなかった等、更新処理が継続できないエラーが発生した場合には、復帰情報に所定のメッセージ等が設定されても良い。また、ロック制御処理部３３において、更新処理にかかるロック範囲のロックが獲得できず待ち情報となった場合等、更新処理が一時的に停止するエラーが発生した場合にも、復帰情報に所定のメッセージ等が設定されても良い。
【０１３５】
そして、更新データ制御部３０により、指示元の第１仮想ＯＳ１０又は／及び同期対象の第２仮想ＯＳ２０に対して、復帰情報が出力され、これらのＯＳの待ち合わせ状態又は指示待ち状態が解除される（ステップＳ２３，Ｔ７）。つまり、指示元の第１仮想ＯＳ１０への更新データ４１−１の反映指示と、同期対象の第２仮想ＯＳ２０への変換後データ４１−２の反映指示とが、同じ若しくはほぼ同じタイミングで出力される。
【０１３６】
復帰情報（反映指示）の入力により待ち合わせ状態が解除されたデータ更新部１２では、図９に示す如く、復帰情報にエラー情報が含まれているか否かが判定される（ステップＳ５）。
エラー判定の結果、エラー情報が含まれていない場合（ステップＳ５のＮｏルート）、データ更新部１２により、自身のＯＳ、つまり第１仮想ＯＳ１０内の第１ＤＢＭＳ１１に対して、更新データ４１−１を用いて更新が行なわれる（ステップＳ６，Ｔ８）。
【０１３７】
そして、データ更新部１２により、更新データ制御部３０に対して、更新処理にかかるロック範囲についてロック解放指示が出力され（ステップＳ７，Ｔ１０）、更新データ制御部３０においてロック解放指示に対する処理（ステップＴ１２並びに後述する図１４及び図１５のステップＳ６３〜Ｓ７４）が実行される。
その後、データ更新部１２により、アプリケーション１４に対して更新処理の完了が通知され、アプリケーション１４の処理が復帰し（ステップＳ８）、データ更新部１２の処理が終了する。
【０１３８】
一方、ステップＳ５におけるエラー判定の結果、エラー情報が含まれている場合（ステップＳ５のＹｅｓルート）、データ更新部１２により、更新処理の実行結果にエラー情報が設定され（ステップＳ９）、実行結果がアプリケーション１４に出力され、ステップＳ８の処理に移行する。
また、復帰情報（反映指示）の入力により指示待ち状態が解除された第２仮想ＯＳ２０の非同期反映部２３では、図１６に示す如く、更新データ制御部３０からの更新データ（変換後データ）４１−２が入力データとして入力される（ステップＳ８１）。
【０１３９】
なお、非同期反映部２３は、例えば、更新データ制御部３０から、変換後データ４１−２が格納された共有メモリ４０のアドレスを入力され、入力されたアドレスにアクセスすることにより、変換後データ４１−２を取得することができる。
そして、非同期反映部２３により、自身のＯＳ、つまり第２仮想ＯＳ２０内の第２ＤＢＭＳ２１に対して、更新データ４１−２を用いて更新が行なわれる（ステップＳ８２，Ｔ９）。
【０１４０】
第２ＤＢＭＳ２１への更新データ４１−２の更新が完了すると、非同期反映部２３は指示待ち状態に移行し（ステップＳ８３）、非同期反映部２３の処理が終了する。
次に、図９に示す上述したステップＳ７における、ロック解放指示に対する更新データ制御部３０の動作について説明する。
更新データ制御部３０では、図１４に示す如く、データ更新部１２からロック解放指示を入力されると（ステップＳ６３）、ロック制御処理部３３が指示待ちであるか否かが判断される（ステップＳ６４）。
【０１４１】
ロック制御処理部３３が指示待ちである場合（ステップＳ６４のＹｅｓルート）、更新データ制御部３０により、ロック解放指示とともに、ロック解放指示にかかるロックキー、指示元のＯＳ識別子及びスレッドＩＤがロック制御処理部３３に入力され、ロック制御処理部３３が起動される（ステップＳ６６）。ロック制御処理部３３では、ロック解放指示に対する所定の処理（ステップＴ１２及び後述する図１５のステップＳ６９〜Ｓ７４）が実行される。
【０１４２】
一方、ロック制御処理部３３が他の処理を行なっている場合等、指示待ちではない場合（ステップＳ６４のＮｏルート）、更新データ制御部３０により、ロック制御処理部３３が指示待ちになるまで待ち合わせが行なわれ（ステップＳ６５）、指示待ちになった場合にステップＳ６６に移行する。
次に、上述したステップＳ６６における、ロック制御処理部３３の動作について説明する。
【０１４３】
ロック解放指示が入力されたロック制御処理部３３では、図１５に示す如く、ロックキー、指示元のＯＳ識別子及びスレッドＩＤが入力データとして入力される（ステップＳ６９）。
そして、ロック制御処理部３３により、ロック管理テーブル４３が参照され、ロック獲得状態にある、上述した入力データ（ロックキー、指示元のＯＳ識別子及びスレッドＩＤ）にかかるロック範囲（獲得列パターン）が削除される。なお、このとき、ロック制御処理部３３により、削除したロック範囲の列パターンが記憶される（ステップＳ７０）。
【０１４４】
次いで、ロック制御処理部３３により、ロック獲得待ち状態の指示の中に、削除されたロック範囲によりロックの獲得が可能なものがあるか否かが判定される（ステップＳ７１）。なお、ロック獲得待ち状態の指示は、ロック管理テーブル４３内に設定されている待ちスレッドＩＤ及び待ち列パターンによって示される（図６参照）。
ロック獲得待ち状態の指示の中に、ロックの獲得が可能なものがあると判定された場合（ステップＳ７２のＹｅｓルート）、ロック制御処理部３３により、ロック獲得可能な指示について、再度、ロック制御処理部３３による上述したロック獲得の処理が行なわれる（ステップＳ７３）。つまり、ロック制御処理部３３により、ロック獲得可能な指示について、再度、ロック獲得指示、変換データ４１−２、及びロック範囲を入力データとして、上述したステップＳ５１〜Ｓ６２の処理が実行される。
【０１４５】
次いで、ロック制御処理部３３により、更新データ制御部３０に対して、処理の完了が通知される。そして、ロック制御処理部３３は、指示待ち状態に移行する（ステップＳ７４）。
また、ロック獲得待ち状態の指示の中に、ロックの獲得が可能なものがないと判定された場合（ステップＳ７２のＮｏルート）にも、ロック制御処理部３３は、ステップＳ７４の指示待ち状態に移行する。
【０１４６】
更新データ制御部３０では、上述したロック制御処理部３３の処理が完了すると、すなわち処理完了の通知が入力されると、図１４に示す如く、エラーの有無が判定され、復帰情報が作成される（ステップＳ６７）。
ここで、更新データ制御部３０によるエラーの有無の判定は、ロック制御処理部３３から入力された処理完了通知に、エラー情報が付加されているか否かによって行なわれる。
【０１４７】
また、復帰情報は、指示元の第１仮想ＯＳ１０への通知情報であり、エラー情報が入力された場合に通知するエラー情報などが含まれる。
そして、更新データ制御部３０により、指示元の第１仮想ＯＳ１０に対して復帰情報が出力され、第１仮想ＯＳ１０の処理が復帰し（ステップＳ６８）、更新データ制御部３０の処理が終了する。
【０１４８】
上述のように、本実施形態の一例としての更新データ制御部３０によれば、データ変換処理部３１により、第１ＤＢＭＳ１１に対して行なわれる更新処理にかかる第１更新データ４１−１が取得される。また、データ変換処理部３１により、予め設定された変換定義ファイル（変換定義情報）４２に基づいて、第１更新データ４１−１が第２ＤＢＭＳ２１の形式に対応した第２更新データ４２−２に変換される。
【０１４９】
これにより、互いに異なる構造を持つ第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１間で更新データ４１を同期させる際に、アプリケーション１４は従来のまま、更新データ制御部３０を備えるだけで、同期させる更新データ４１を第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１巻で変換することができる。つまり、更新データ制御部３０により、アプリケーション１４や第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１は従来のまま、互いに異なる構造を持つ第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１間で更新データ４１のみを同期させることができる。
【０１５０】
従って、更新データ制御部３０により、アプリケーション１４のプログラムの変更にかかる保守工数増加を抑えることができ、図１７に示す場合より簡易に、同期させる更新データ４１を第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１間で変換することができる。
また、本実施形態の一例としての更新データ制御部３０によれば、ロック粒度判定処理部３２により、第１更新データ４１−１と、更新処理が行なわれる前の更新前データとに基づいて、ロック範囲が決定される。このとき、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１におけるテーブルの列を最小単位として、ロック範囲が決定される。また、ロック制御処理部３３により、ロック粒度判定処理部３２により決定されたロック範囲に基づいて、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１がロックされる。
【０１５１】
これにより、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１間で更新データ４１を同期させる際に、従来の行単位よりも小さい、１行×１列のブロック単位で、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１のロック範囲を決定することができる。従って、更新対象の行及びロック範囲内の列により特定される領域（１以上のブロック）によってロック範囲が決定されるため、ロック範囲を最小限に抑えることができる。
【０１５２】
また、例えば、ビューによってあるテーブル内の１以上のブロックを参照する場合、他のアプリケーション等により、ビューで参照していないブロックに対する更新が発生しても、更新が発生した１以上のブロックのみがロック範囲としてロックされるため、ビュー経由の参照に対する影響を抑えることができる。すなわち、データベースの同一資源に対する同時更新・アクセスの発生を最小限に抑えることができる。
【０１５３】
さらに、何らかの原因により、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１のロック範囲がロックされる時間が長引いた場合でも、行単位より細かなブロック単位でロックが行なわれるため、ロックによりデータベース上で排他制御が行なわれる範囲を最小限に抑えることができる。すなわち、１つのデータベースのロック状態を、他のデータベースのロック状態と一致させて排他制御させることができる。従って、データベース資源の共用度を向上させることができる。
【０１５４】
また、本実施形態の一例としての更新データ制御部３０によれば、ロック制御処理部３３により、ロック粒度判定処理部３２により決定されたロック範囲に基づいて、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１がロックされる。そして、ロック制御処理部３３により、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１が備えられるそれぞれのＯＳに対して、それぞれ第１更新データ４１−１及び第２更新データ４１−２を用いた更新が指示される。このとき、ロック制御処理部３３により、第２仮想ＯＳ２０に、第１仮想ＯＳ１０及び第２仮想ＯＳ２０からアクセス可能な共用メモリ４０を介して、第２更新データ４１−２が出力される。
【０１５５】
これにより、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１、つまり複数の異なる種類のデータベースについて、１つのロック管理機構でデータ同期の制御を行なうことができる。また、本実施形態におけるデータ同期は、共有メモリを介して行なうことができるため、図１８及び図１９を用いて説明したネットワーク経由のデータ同期と比べて、データ漏洩のリスクを大幅に低減することができる。
【０１５６】
また、上述の如く、本実施形態におけるデータ同期は、共有メモリを介して行なわれるため、ネットワークが一時的に使用できない場合等、ネットワークに関する障害や遅延の影響を受けずに、複数のデータベース間で確実にデータ同期を行なうことができる。
さらに、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１、つまり複数の異なる種類のデータベース間において、リアルタイムで更新データ４１の自動同期（更新）を行なうことが可能となる。従って、データ同期が共有メモリを介して行なわれることにより、図１８及び図１９を用いて説明したネットワーク経由のデータ同期と比べて、更新データ４１の反映にかかるデータベース間のタイムラグを大幅に低減することができる。
【０１５７】
〔２〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、かかる特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、本実施形態においては、仮想マシン１が共有メモリ４０と、共有メモリ４０にアクセス可能な第１仮想ＯＳ１０及び第２仮想ＯＳ２０を備える構成について述べているが、これに限定されるものではない。例えば１以上の情報処理装置（装置）により構成される情報処理システム（システム）が、共用メモリ４０と、共有メモリ４０にアクセス可能な複数のＯＳを備える構成でもよい。
【０１５８】
また、本実施形態においては、第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１の２つのデータベース間のデータ同期について述べているが、これに限定されるものではない。例えば、データ同期対象のＤＢＭＳが３つ以上ある場合、更新処理にかかる更新データの変換は、データ変換処理部３１により、更新処理が行なわれるＤＢＭＳ以外のデータ同期対象のデータベース毎に行なわれても良い。また、データ同期対象の更新処理にかかるロック範囲のロックは、ロック制御処理部３３により、データ同期対象の全てのＤＢＭＳについて行なわれても良い。さらに、ＤＢＭＳの更新は、ロック制御処理部３３により、更新データ又は変換された更新データを用いてデータ同期対象の全てのデータベースがそれぞれ更新されても良い。
【０１５９】
さらに、上述した図９に示すステップＳ２の処理は、図１２に示すステップＳ４１の処理において実行されても良い。つまり、データ更新部１２は、図９に示すステップＳ２において更新差分データを作成せず、ステップＳ３における更新差分データの出力に替えて更新前データを出力しても良い。このとき、図１０に示すステップＳ１７では、更新データ制御部３０は、更新差分データに替えて更新前データ及び更新後データ４１−１とともに、ロック粒度判定処理部３２を起動すれば良い。また、ロック粒度判定処理部３２は、図１２に示すステップＳ４１において、更新前データ及び更新後データ４１−１を入力データとして入力されるとともに、更新前データ及び更新後データ４１−１から更新差分データを生成すれば良い。
【０１６０】
なお、データ更新部１２及び２２、非同期反映部１３及び２３、更新データ制御部３０、データ変換処理部３１、ロック粒度判定処理部３２、並びにロック制御処理部３３としての機能を実現するためのプログラム（データ同期プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしても良い。
【０１６１】
データ更新部１２及び２２、非同期反映部１３及び２３、更新データ制御部３０、データ変換処理部３１、ロック粒度判定処理部３２、並びにロック制御処理部３３としての機能を実現する際には、内部記憶装置（本実施形態では情報処理装置，情報処理システムが備えるメモリ又はＨＤＤ等のＩ／Ｏ装置）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態では情報処理装置，情報処理システムが備えるＣＰＵ）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしても良い。
【０１６２】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。また、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、情報処理装置，情報処理システムがコンピュータとしての機能を有しているのである。
【符号の説明】
【０１６３】
１，１００    仮想マシン
１０，１１０    第１仮想ＯＳ
１１，１１１    第１ＤＢＭＳ，第１のデータベース
１２，２２    データ更新部
１３，２３    非同期反映部
１４，２４，１１３，１１４    アプリケーション
２０，１２０    第２仮想ＯＳ
２１，１２１    第２ＤＢＭＳ，第２のデータベース
３０    更新データ制御部
３１    データ変換処理部（データ変換部）
３２    ロック粒度判定処理部（ロック範囲決定部）
３３    ロック制御処理部（ロック制御部）
４０    共用メモリ
４１−１    更新データ（第１更新データ，更新後データ，第１ＤＢＭＳ形式データ）
４１−２    更新データ（第２更新データ，変換後データ，第２ＤＢＭＳ形式データ）
４２    変換定義ファイル
４３    ロック管理テーブル
１１２，１２２    通信部
１１５    トリガー機能
１１６，１２６    データ変換部
１１７    更新データ
１１８，１２８    データ同期部
【図１】
2012108015.tif 000003
【図２】
2012108015.tif 000004
【図３】
2012108015.tif 000005
【図４】
2012108015.tif 000006
【図５】
2012108015.tif 000007
【図６】
2012108015.tif 000008
【図７】
2012108015.tif 000009
【図８】
2012108015.tif 000010
【図９】
2012108015.tif 000011
【図１０】
2012108015.tif 000012
【図１１】
2012108015.tif 000013
【図１２】
2012108015.tif 000014
【図１３】
2012108015.tif 000015
【図１４】
2012108015.tif 000016
【図１５】
2012108015.tif 000017
【図１６】
2012108015.tif 000018
【図１７】
2012108015.tif 000019
【図１８】
2012108015.tif 000020
【図１９】
2012108015.tif 000021
【手続補正書】
【提出日】平成25年8月19日(2013.8.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得するステップと、
予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換するステップと、
前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定するステップと、
決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックするステップと、
前記第１及び第２更新データを用いて、前記第１及び第２のデータベースをそれぞれ更新するステップと、をそなえることを特徴とする、データ同期方法。
【請求項２】
前記第１及び第２のデータベースをロックするステップが、
前記ロック範囲に基づいて、前記第１及び第２のデータベースのロック状態が設定されたロック管理情報から、前記第１及び第２のデータベースにおける前記ロック範囲がロック済みであるか否かを判定するステップと、
前記ロック範囲がロック済みではないと判定された場合に、前記ロック管理情報において、前記更新処理にかかるロック範囲がロックされていることを示すロック獲得情報を設定するステップと、をそなえることを特徴とする、請求項１記載のデータ同期方法。
【請求項３】
前記第１及び第２のデータベースをロックするステップが、
前記ロック範囲がロック済みであると判定された場合に、前記ロック管理情報において、前記更新処理にかかるロック範囲がロック待ち状態であることを示す待ち情報を設定するステップをそなえることを特徴とする、請求項２記載のデータ同期方法。
【請求項４】
前記第１及び第２のデータベースがそれぞれ更新された後に、前記第１及び第２のデータベースのロックを解放するステップと、
ロックの解放後に、待ち情報が設定された更新処理にかかるロック範囲がロック済みであるか否かを判定するステップと、
前記ロック範囲がロック済みではないと判定された場合に、前記ロック管理情報において、前記更新処理にかかる待ち情報を削除するとともに、前記更新処理にかかるロック獲得情報を設定するステップと、をそなえることを特徴とする、請求項３記載のデータ同期方法。
【請求項５】
前記ロック範囲を決定するステップが、前記第１及び第２のデータベースにおけるテーブルの列を最小単位として、前記ロック範囲を決定することを特徴とする、請求項１〜４のいずれか１項記載のデータ同期方法。
【請求項６】
第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得し、
予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換し、
前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定し、
決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックし、
前記第１及び第２更新データを用いて、前記第１及び第２のデータベースをそれぞれ更新する、
処理をコンピュータに実行させることを特徴とする、データ同期プログラム。
【請求項７】
第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得して、予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換するデータ変換部と、
前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定するロック範囲決定部と、
ロック範囲決定部により決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックするとともに、前記第１及び第２のデータベースに対して、それぞれ前記第１更新データ及び前記データ変換部により変換された前記第２更新データを用いた更新を指示するロック制御部とをそなえることを特徴とする、データ同期制御装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
トリガー機能とは、データベースに対する何らかのアクション、例えば更新操作などをトリガーとして、所定の処理が実行される機能である。
仮想マシン１００では、このトリガー機能１１５が用いられ、図１８に示す（１）〜（１０）の順序で、第２ＤＢＭＳ１２１へのデータの同期が行なわれる。
すなわち、アプリケーション１１４が第１ＤＢＭＳ１１１に変更を加えると（１）、第１ＤＢＭＳ１１１はトリガー機能１１５を起動する（２）。そして、トリガー機能１１５は、当該変更にかかるデータをデータ変換部１１６に入力する（３）。データ変換部１１６は、第１ＤＢＭＳ１１１の形式に対応したデータをネットワーク通信用のデータへ変換し、変換したデータを通信部１１２へ出力する（４）。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５０
【補正方法】変更
【補正の内容】
【００５０】
なお、図２に示す例では、第１仮想ＯＳ１０が要求元となったデータ同期が発生しているため、非同期反映部１３による処理は行なわれない。
データ更新部２２、非同期反映部２３、及びアプリケーション２４は、上述したデータ更新部１２、非同期反映部１３、及びアプリケーション１４とそれぞれ同様の機能を備える。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
すなわち、アプリケーション２４は、第２仮想ＯＳ２０上で動作する任意のアプリケーションであり、第２ＤＢＭＳ２１に対してデータの変更や参照等のアクセスを行なう。
また、アプリケーション２４は、第２ＤＢＭＳ２１に対してデータの変更、追加、削除等の更新を行なう場合、データ更新部２２に対して更新処理要求（更新要求）を出力する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００５３
【補正方法】変更
【補正の内容】
【００５３】
また、データ更新部２２は、更新データ制御部３０から反映指示を入力されると、第２ＤＢＭＳ２１に対して更新を行なうとともに、更新データ制御部３０に対して、ロック解放指示を出力する。
非同期反映部２３は、他の仮想ＯＳ（図２に示す例では第１仮想ＯＳ１０）からのデータベースの更新処理要求によって、反映指示と他の仮想ＯＳのＤＢＭＳ形式の更新データから第２ＤＢＭＳ形式に変換された更新データ４１−２とが、更新データ制御部３０から入力された場合に動作する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１４９
【補正方法】変更
【補正の内容】
【０１４９】
これにより、互いに異なる構造を持つ第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１間で更新データ４１を同期させる際に、アプリケーション１４は従来のまま、更新データ制御部３０を備えるだけで、同期させる更新データ４１を第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１間で変換することができる。つまり、更新データ制御部３０により、アプリケーション１４や第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１は従来のまま、互いに異なる構造を持つ第１ＤＢＭＳ１１及び第２ＤＢＭＳ２１間で更新データ４１のみを同期させることができる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１６２
【補正方法】変更
【補正の内容】
【０１６２】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。また、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、情報処理装置，情報処理システムがコンピュータとしての機能を有しているのである。
〔３〕付記
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得するステップと、
予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換するステップと、
前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定するステップと、
決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックするステップと、
前記第１及び第２更新データを用いて、前記第１及び第２のデータベースをそれぞれ更新するステップと、をそなえることを特徴とする、データ同期方法。
（付記２）
前記第１及び第２のデータベースをロックするステップが、
前記ロック範囲に基づいて、前記第１及び第２のデータベースのロック状態が設定されたロック管理情報から、前記第１及び第２のデータベースにおける前記ロック範囲がロック済みであるか否かを判定するステップと、
前記ロック範囲がロック済みではないと判定された場合に、前記ロック管理情報において、前記更新処理にかかるロック範囲がロックされていることを示すロック獲得情報を設定するステップと、をそなえることを特徴とする、付記１記載のデータ同期方法。
（付記３）
前記第１及び第２のデータベースをロックするステップが、
前記ロック範囲がロック済みであると判定された場合に、前記ロック管理情報において、前記更新処理にかかるロック範囲がロック待ち状態であることを示す待ち情報を設定するステップをそなえることを特徴とする、付記２記載のデータ同期方法。
（付記４）
前記ロック管理情報は、前記第１及び第２のデータベースに共通する前記更新処理にかかる行を特定するロックキーを含み、
前記第１更新データを前記第２更新データに変換するステップが、前記更新処理にかかるロックキーを生成するステップをそなえ、
前記ロック範囲がロック済みであるか否かを判定するステップが、生成された前記更新処理にかかるロックキーと同一のロックキーが前記ロック管理情報に含まれるか否かを判定し、前記更新処理にかかるロックキーが前記ロック管理情報に含まれないと判定された場合に、前記ロック範囲がロック済みではないと判定することを特徴とする、付記３記載のデータ同期方法。
（付記５）
前記ロック範囲がロック済みであるか否かを判定するステップが、前記更新処理にかかるロックキーが前記ロック管理情報に含まれると判定された場合に、前記ロック管理情報に含まれるロックキーに対応したロック範囲と、前記更新処理にかかるロック範囲との間に共通した範囲があるか否かを判定し、共通した範囲がないと判定された場合に、前記ロック範囲がロック済みではないと判定する一方、共通した範囲があると判定された場合に、前記ロック範囲がロック済みであると判定することを特徴とする、付記４記載のデータ同期方法。
（付記６）
前記第１のデータベースと前記第２のデータベースとは、互いに異なる種類のデータベースであり、
前記第１及び第２のデータベースをロックするステップが、前記第１のデータベースのロックキーと前記第２のデータベースのロックキーとの間の対応関係、及び前記第１更新データのロック範囲と前記第２更新データのロック範囲との間の対応関係、をそれぞれ示す情報に基づいて、前記ロック管理情報を参照することを特徴とする、付記４又は付記５記載のデータ同期方法。
（付記７）
前記第１及び第２のデータベースがそれぞれ更新された後に、前記第１及び第２のデータベースのロックを解放するステップと、
ロックの解放後に、待ち情報が設定された更新処理にかかるロック範囲がロック済みであるか否かを判定するステップと、
前記ロック範囲がロック済みではないと判定された場合に、前記ロック管理情報において、前記更新処理にかかる待ち情報を削除するとともに、前記更新処理にかかるロック獲得情報を設定するステップと、をそなえることを特徴とする、付記３〜６のいずれか１項記載のデータ同期方法。
（付記８）
前記ロック範囲を決定するステップが、前記第１及び第２のデータベースにおけるテーブルの列を最小単位として、前記ロック範囲を決定することを特徴とする、付記１〜７のいずれか１項記載のデータ同期方法。
（付記９）
前記ロック範囲を決定するステップが、
前記更新処理による更新前のデータと、前記更新後のデータとに基づいて、更新差分データを生成するステップと、
前記更新差分データに基づいて、前記更新処理によって更新される範囲を判定し、ロック範囲を決定するステップと、をそなえることを特徴とする、付記１〜８のいずれか１項記載のデータ同期方法。
（付記１０）
前記第１更新データを変換するステップが、前記変換定義情報に基づいて、前記更新処理が行なわれる第１のデータベース以外のデータ同期対象のデータベース毎に行なわれ、
前記データベースをロックするステップが、データ同期対象の全てのデータベースをロックするとともに、
前記データベースを更新するステップが、前記第１更新データ又は変換された更新データを用いて前記データ同期対象の全てのデータベースをそれぞれ更新することを特徴とする、付記１〜９のいずれか１項記載のデータ同期方法。
（付記１１）
前記第１更新データを前記第２更新データに変換するステップと、前記ロック範囲を決定するステップとが、並行して行なわれ、前記第１及び第２のデータベースをロックするステップが、前記第１更新データを前記第２更新データに変換するステップ及び前記ロック範囲を決定するステップの完了後に行なわれることを特徴とする、付記１〜１０のいずれか１項記載のデータ同期方法。
（付記１２）
前記第１のデータベースは、第１ＯＳ（Operating System）に備えられ、
前記第２のデータベースは、第２ＯＳに備えられ、
前記第１及び第２ＯＳは、１のシステム上で動作するとともに、
前記第１及び第２のデータベースをそれぞれ更新するステップは、前記第２ＯＳに、前記第１及び第２ＯＳからアクセス可能な共用メモリを介して、前記第２更新データを出力することを特徴とする、付記１〜１１のいずれか１項記載のデータ同期方法。
（付記１３）
前記第１及び第２ＯＳは、仮想ＯＳであり、
前記システムは、仮想マシンであることを特徴とする、付記１２記載のデータ同期方法。
（付記１４）
第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得し、
予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換し、
前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定し、
決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックし、
前記第１及び第２更新データを用いて、前記第１及び第２のデータベースをそれぞれ更新する、
処理をコンピュータに実行させることを特徴とする、データ同期プログラム。
（付記１５）
前記第１及び第２のデータベースをロックする処理は、
前記ロック範囲に基づいて、前記第１及び第２のデータベースのロック状態が設定されたロック管理情報から、前記第１及び第２のデータベースにおける前記ロック範囲がロック済みであるか否かを判定し、
前記ロック範囲がロック済みではないと判定された場合に、前記ロック管理情報において、前記更新処理にかかるロック範囲がロックされていることを示すロック獲得情報を設定する、
処理をコンピュータに実行させることを特徴とする、付記１４記載のデータ同期プログラム。
（付記１６）
前記第１及び第２のデータベースをロックする処理は、
前記ロック範囲がロック済みであると判定された場合に、前記ロック管理情報において、前記更新処理にかかるロック範囲がロック待ち状態であることを示す待ち情報を設定する、
処理をコンピュータに実行させることを特徴とする、付記１５記載のデータ同期プログラム。
（付記１７）
前記ロック管理情報は、前記第１及び第２のデータベースに共通する前記更新処理にかかる行を特定するロックキーを含み、
前記第１更新データを前記第２更新データに変換する処理が、前記更新処理にかかるロックキーを生成するとともに、
前記ロック範囲がロック済みであるか否かを判定する処理が、生成された前記更新処理にかかるロックキーと同一のロックキーが前記ロック管理情報に含まれるか否かを判定し、前記更新処理にかかるロックキーが前記ロック管理情報に含まれないと判定された場合に、前記ロック範囲がロック済みではないと判定することを特徴とする、付記１６記載のデータ同期プログラム。
（付記１８）
前記第１及び第２のデータベースがそれぞれ更新された後に、前記第１及び第２のデータベースのロックを解放し、
ロックの解放後に、待ち情報が設定された更新処理にかかるロック範囲がロック済みであるか否かを判定し、
前記ロック範囲がロック済みではないと判定された場合に、前記ロック管理情報において、前記更新処理にかかる待ち情報を削除するとともに、前記更新処理にかかるロック獲得情報を設定する、
処理をコンピュータに実行させることを特徴とする、付記１６又は付記１７記載のデータ同期プログラム。
（付記１９）
前記ロック範囲を決定する処理が、前記第１及び第２のデータベースにおけるテーブルの列を最小単位として、前記ロック範囲を決定することを特徴とする、付記１４〜１８のいずれか１項記載のデータ同期プログラム。
（付記２０）
第１のデータベースに対して行なわれる更新処理にかかる第１更新データを取得して、予め設定された変換定義情報に基づいて、前記第１更新データを第２のデータベースの形式に対応した第２更新データに変換するデータ変換部と、
前記第１更新データと、前記更新処理が行なわれる前の更新前データとに基づいて、ロック範囲を決定するロック範囲決定部と、
ロック範囲決定部により決定されたロック範囲に基づいて、前記第１及び第２のデータベースをロックするとともに、前記第１及び第２のデータベースに対して、それぞれ前記第１更新データ及び前記データ変換部により変換された前記第２更新データを用いた更新を指示するロック制御部とをそなえることを特徴とする、データ同期制御装置。
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2012108015.tif 000022
【手続補正９】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2012108015.tif 000023
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2012108015.tif 000024
【手続補正１１】
【補正対象書類名】図面
【補正対象項目名】図１３
【補正方法】変更
【補正の内容】
【図１３】
2012108015.tif 000025
【国際調査報告】
2012108015.tif 000026
2012108015.tif 000027
2012108015.tif 000028
2012108015.tif 000029