(57)【要約】      （修正有）【課題】データベース間の同期をより高速化することのできるデータベースシステムを提供する。【解決手段】マスターデータベースを有するマスター装置とレプリカデータベースを有するレプリカ装置から成るマスタースレーブ型のデータベースシステムであって、マスター装置は、クライアントからクエリを受信し、クエリをコンパイルし非決定的な値を決定する処理を含む第１エンジンプログラムを生成し、マスターデータベースを更新する。一方、第１エンジンプログラムで決定した値を用いた第２エンジンプログラムを生成し、レプリカ装置に送信する。レプリカ装置は、マスター装置から受け取った第２エンジンプログラムを実行してレプリカデータベースファイルを更新処理する。【選択図】図２
2014215680.tif 000002
【特許請求の範囲】
【請求項１】
マスターデータベースを有するマスター装置とレプリカデータベースを有するレプリカ装置から成るマスタースレーブ型のデータベースシステムであって、
前記マスター装置は、
クライアントからクエリを受信するクエリ受信部と、
前記クエリ受信部が受信したクエリを受け取り、クエリをコンパイルし非決定的な値を決定する処理を含む第１エンジンプログラムを生成するコンパイラ層処理部と、
前記コンパイラ層処理部から第１エンジンプログラムを受け取り、前記第１エンジンプログラムで決定した値を用いた第２エンジンプログラムを生成するとともに、前記第１エンジンプログラムを実行してマスターデータベースファイルを更新処理する第１エンジン層処理部と、
前記第２エンジンプログラム、前記第１エンジンプログラムで決定した値を記録する第１レプリケーションデータ管理部と、
前記各部から取得したデータを所定の通信手順に従って前記レプリカ装置に送信するための信号を生成して送信するとともに、前記レプリカ装置から受信した信号をデータに変換して前記各部に送信する第１データ送受信部とを備え、
前記レプリカ装置は、
前記マスター装置から受け取った前記第２エンジンプログラムを格納する第２レプリケーションデータ管理部と、
前記第２エンジンプログラムを実行してレプリカデータベースファイルを更新処理する第２エンジン層処理部と、
前記各部から取得したデータを所定の通信手順に従って前記マスター装置に送信するための信号を生成して送信するとともに、前記マスター装置から受信した信号をデータに変換して前記各部に送信する第２データ送受信部とを備える
データベースシステム。
【請求項２】
前記クエリ受信部は、クライアントからネットワークを経由して送信されたクエリを受信する請求項１記載のデータベースシステム。
【請求項３】
前記第１エンジン層処理部は、
クエリの前記第１エンジンプログラムを実行するとともに、前記第２エンジンプログラムを生成するエンジンプログラム実行部と、
前記第２エンジンプログラムを前記レプリカ装置に送信するレプリケーション実行部を有している請求項１又は請求項２記載のデータベースシステム。
【請求項４】
前記第１エンジンプログラムにおいて非決定的な値を決定する処理で決定したデータは、前記第１レプリケーションデータ管理部に記録される請求項３記載のデータベースシステム。
【請求項５】
前記第２エンジンプログラムは、決定したデータと共に前記第１レプリケーションデータ管理部に記録される請求項４記載のデータベースシステム。
【請求項６】
前記レプリケーション実行部は、更新処理を終え不要となった前記第２エンジンプログラムを前記第１レプリケーションデータ管理部から削除する請求項５記載のデータベースシステム。
【請求項７】
前記マスター装置は、クエリを処理し、物理コピーによるページャ層レプリケーション処理を行うページャ層処理部を備え、
前記レプリカ装置は、物理コピーによるページャ層レプリケーション処理を行うページャ層処理部を備える請求項３乃至請求項６のいずれか１項に記載のデータベースシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベースシステムに関する。
【背景技術】
【０００２】
災害時などでハードディスクの故障によるデータ損失を防ぐために、遠隔地にリアルタイムにバックアップを確保することが注目されている。通常のバックアップでは、一定時間を経たデータ復旧が行えるが、障害発生時にもダウンタイムなく復旧し、データが更新される度に、リアルタイムで別サーバへ更新データを複製するレプリケーションが注目されている。
【０００３】
レプリケーションでは、別サーバを同じネットワーク内、もしくは遠隔地に設置して、リアルタイムでデータをコピーする。
【０００４】
そのため、データベースを高速に同期することが求められ、サーバ間の通信内容が重要である。
【０００５】
しかし、従来の技術では同期の高速化に問題があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２７７３４８号公報
【特許文献２】特開２００６−１４６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、データベース間の同期をより高速化することのできるデータベースシステムを提供することである。
【課題を解決するための手段】
【０００８】
実施形態のデータベースシステムは、マスターデータベースを有するマスター装置とレプリカデータベースを有するレプリカ装置から成るマスタースレーブ型のデータベースシステムであって、
前記マスター装置は、
クライアントからクエリを受信するクエリ受信部と、
前記クエリ受信部が受信したクエリを受け取り、クエリをコンパイルし非決定的な値を決定する処理を含む第１エンジンプログラムを生成するコンパイラ層処理部と、
前記コンパイラ層処理部から第１エンジンプログラムを受け取り、前記第１エンジンプログラムで決定した値を用いた第２エンジンプログラムを生成するとともに、前記第１エンジンプログラムを実行してマスターデータベースファイルを更新処理する第１エンジン層処理部と、
前記第２エンジンプログラム、前記第１エンジンプログラムで決定した値を記録する第１レプリケーションデータ管理部と、
前記各部から取得したデータを所定の通信手順に従って前記レプリカ装置に送信するための信号を生成して送信するとともに、前記レプリカ装置から受信した信号をデータに変換して前記各部に送信する第１データ送受信部とを備え、
前記レプリカ装置は、
前記マスター装置から受け取った前記第２エンジンプログラムを格納する第２レプリケーションデータ管理部と、
前記第２エンジンプログラムを実行してレプリカデータベースファイルを更新処理する第２エンジン層処理部と、
前記各部から取得したデータを所定の通信手順に従って前記マスター装置に送信するための信号を生成して送信するとともに、前記マスター装置から受信した信号をデータに変換して前記各部に送信する第２データ送受信部とを備える。
【図面の簡単な説明】
【０００９】
【図１】マスタースレーブ型のデータベースシステムの一例を示す図である。
【図２】本発明の実施形態に係るマスター装置の概略構成を示すブロック図である。
【図３】本発明の実施形態に係るレプリカ装置の概略構成を示すブロック図である。
【図４】エンジンプログラムの一例を示す図である。
【図５】マスター装置におけるエンジン層処理部でのレプリケーション処理の流れを示すフローチャートである。
【図６】レプリカ装置におけるエンジン層処理部でのレプリケーション処理の流れを示すフローチャートである。
【図７】エンジン層処理部でのレプリケーション実行時のマスター装置とレプリカ装置とのデータ送受信の例を示すシーケンス図である。
【発明を実施するための形態】
【００１０】
以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１１】
まず、本実施形態で用いる主要な用語について説明する。
【００１２】
「レプリケーション」とは、あるデータベースとまったく同じ内容の複製（レプリカ）を別のコンピュータ上に作成し、内容を同期させる機能をいう。データベース単位以外にも、必要な部分のみのレプリケーションが可能である。設定されたタイミングで同期が行われる。
【００１３】
「エンジンプログラム」とは、クエリをコンパイルして生成されるものであって、SQL実行エンジンで実行されるプログラムをいう。
【００１４】
「非決定的なクエリ」とは、実行時に定まる関数を含んだクエリをいう。例えば、SQLのデータ操作言語で、データを関係に追加する命令であるINSERTや、現在時刻を求める関数であって、関数が呼び出された瞬間の時刻を返す命令であるSYSDATEを含むクエリがある。
【００１５】
「マスタースレーブ型レプリケーション」とは、すべてのサーバがマスターでありスレーブである構成をとるマルチマスター型レプリケーションとは異なり、マスター１台に対して、スレーブ複数台の構成で、実際のデータベースへの書き込み処理（更新処理）は、バックにあるマスターサーバ側で処理され、データベースの読み込み処理は、フロントのスレーブサーバで処理する。したがって、スレーブデータベースは検索用途に限定される。
【００１６】
図１は、マスタースレーブ型のデータベースシステムの一例を示す図である。図１に示すように、データベースシステム１は、１又は複数のクライアント３０と、マスター装置１０と、１又は複数のレプリカ装置２０で構成され、クライアント３０とマスター装置１０は例えばネットワーク４０を介して接続されている。また、マスター装置１０とレプリカ装置２０は通信可能に接続されている。
【００１７】
クライアント３０は、データベースシステム１のデータベース機能を利用する端末装置である。クライアント３０からのデータベースの変更はマスター装置１０にのみ可能である。マスター装置１０とレプリカ装置２０とは、マスタースレーブ型の関係になっている。
【００１８】
マスター装置１０はマスターデータベースを有し、レプリカ装置２０はレプリカデータベースを有している。マスターデータベースの更新に応じて、マスター装置１０は、レプリカ装置２０にレプリカデータベースをマスターデータベースに同期させる。
【００１９】
データベースシステム１において、マスター装置１０がクライアント３０からのトランザクション（セットで実行されるべき１つ以上の更新処理の集まり）の開始を示すＢＥＧＩＮコマンドを受信したときが同期処理の開始である。マスター装置１０が該トランザクションを確定して該トランザクションの終了を示すＣＯＭＭＩＴコマンドをクライアント３０から受信し、該コマンドに応じてマスターデータベース及びレプリカデータベースの両方のデータベースファイルの更新が完了したとき、同期処理の終了となる。尚、トランザクションの処理を終了させるコマンドとして、他には処理を取り消すＲＯＬＬＢＡＣＫがある。
【００２０】
クライアント３０は、汎用のコンピュータ（例えばパーソナルコンピュータ（ＰＣ）等）と、同コンピュータ上で動作するソフトウェアとを用いて実現される。コンピュータとしては、タブレット端末や移動体通信端末等も含む。
【００２１】
マスター装置１０は、汎用のコンピュータ（例えばパーソナルコンピュータ（ＰＣ）等）と、同コンピュータ上で動作するソフトウェアとを用いて実現される。コンピュータとしては、ＣＡＤ（Computer Aided Design）やＣＡＥ（Computer Aided Engineering）に好適なエンジニアリングワークステーション（ＥＷＳ）等も含む。
【００２２】
本実施形態においては、マスター装置１０及びレプリカ装置２０のいずれにおいても、エンジン層処理部でレプリケーション処理を実行する機能を有する。
【００２３】
図２は、本発明の実施形態に係るマスター装置の概略構成を示すブロック図である。
【００２４】
図２に示すように、本実施形態に係るマスター装置１０は、主として、クエリ受信部１００、コンパイラ層処理部１１０、エンジン層処理部１２０、ページャ層処理部１３０、レプリケーションデータ管理部１４０、データ送受信部１５０、データベース部１６０から構成されている。
【００２５】
クエリ受信部１００は、ネットワーク４０を経由してクライアント３０に接続されるとともに、コンパイラ層処理部１１０に接続している。コンパイラ層処理部１１０は、エンジン層処理部１２０に接続している。エンジン層処理部１２０は、ページャ層処理部１３０に接続している。ページャ層処理部１３０は、データベース部１６０に接続している。エンジン層処理部１２０は、レプリケーションデータ管理部１４０及びデータ送受信部１５０に接続している。データ送受信部１５０は、直接又はネットワーク（図示しない）を介して各レプリカ装置２０に接続している。
【００２６】
クエリ受信部１００は、クライアント３０からネットワーク４０を経由して送信されたクエリを受信する。クエリ受信部１００は、受信したクエリをコンパイラ層処理部１１０に送る。
【００２７】
コンパイラ層処理部１１０は、クエリ受信部１００が受信したクエリを受け取り、コンパイラ層におけるクエリの処理を行う。コンパイラ層処理部１１０は、コンパイラ部１１１を有している。
【００２８】
コンパイラ部１１１は、クエリをパースしてコンパイルし、第１エンジンプログラムを生成する。クエリ、第１エンジンプログラムは、レプリケーションデータ管理部１４０に記録させる。
【００２９】
第1エンジンプログラムは、マスター装置１０が実行するプログラムであってＳＱＬをコンパイルしたものである。
【００３０】
エンジン層処理部１２０は、コンパイラ部１１１から第１エンジンプログラムを受け取り、第１エンジンプログラムを実行する。詳細は後述する。
【００３１】
エンジン層処理部１２０は、エンジンプログラム実行部１２１とレプリケーション実行部１２２を有している。エンジンプログラム実行部１２１は、いわばＳＱＬ実行エンジンであって、データベースファイルに書き込むためのデータを生成し、書込み命令の発行等を行う。具体的には、エンジンプログラム実行部１２１は、クエリの第１エンジンプログラムを実行し、データベース部１６０のマスターデータベースファイルを更新する。さらに、エンジンプログラム実行部１２１は第２エンジンプログラムを生成する。第２エンジンプログラムは、ＳＱＬをコンパイルしたものでレプリカ装置２０が実行するプログラムである。第２エンジンプログラムは、第１エンジンプログラム中の不要なコードを間引いている。すなわち、第１エンジンプログラムでは非決定的な値を決定する処理を含んでおり、非決定的な値が決定後にその決定した値を用いて第２エンジンプログラムが生成される。第２エンジンプログラムは、決定したデータと共にレプリケーションデータ管理部１４０に記録される。
【００３２】
レプリケーション実行部１２２は、レプリケーションデータ管理部１４０に記録された第２エンジンプログラムを、後述するように、マスター装置１０がＣＯＭＭＩＴコマンドをクライアント３０から受信したタイミングでレプリカ装置２０に送信する。また、レプリケーション実行部１２２は、更新処理を終え不要となった第２エンジンプログラムをレプリケーションデータ管理部１４０から削除する。
【００３３】
ページャ層処理部１３０は、ページャ層でのクエリの処理を行う。
【００３４】
レプリケーションデータ管理部１４０は、第２エンジンプログラムや、第１エンジンプログラムで決定した値を記録する。
【００３５】
データ送受信部１５０は、各部から取得したデータを所定の通信手順に従ってレプリカ装置２０に送信するための信号を生成して送信する。また、データ送受信部は、レプリカ装置２０から受信した信号をデータに変換して各部に送信する。
【００３６】
データベース部１６０は、データを一定のルールで蓄積し、必要に応じて取り出して提供する。データベース部１６０は、マスターデータベースとなるマスターデータベースファイルを記憶している。尚、データベース部１６０は、必ずしもマスター装置１０内に設けられている必要はなく、マスター装置１０に接続された別の装置内に設けてもよい。
【００３７】
図３は、本発明の実施形態に係るレプリカ装置の概略構成を示すブロック図である。図３に示すように、本実施形態に係るレプリカ装置２０は、主として、エンジン層処理部２１０、ページャ層処理部２２０、レプリケーションデータ管理部２３０、データ送受信部２４０、データベース部２５０から構成されている。レプリカ装置２０は、クライアント３０からのクエリはマスター装置１０で既にコンパイルされているので、コンパイル部を備えていない。
【００３８】
レプリカ装置２０の各部の機能は、マスター装置１０の各部の機能と基本的には同様である。
【００３９】
エンジン層処理部２１０は、マスター装置１０から第２エンジンプログラムを受け取り、この第２エンジンプログラムを実行する。
【００４０】
ページャ層処理部２２０は、データベース部２５０に対してデータの入出力を行うものである。
【００４１】
レプリケーションデータ管理部２３０は、第２エンジンプログラムを格納するものである。
【００４２】
データ送受信部２４０は、各部から取得したデータを所定の通信手順に従ってマスター装置１０に送信するための信号を生成して送信するとともに、マスター装置１０から受信した信号をデータに変換して各部に送信する。
【００４３】
データベース部２５０は、データを一定のルールで蓄積し、必要に応じて取り出し可能で、レプリカデータベースとなるレプリカデータベースファイルを記憶する。
【００４４】
＜エンジンプログラム＞
図４は、エンジンプログラムの一例を示す図である。図４に示す例では、次のクエリを処理するものである。
【００４５】
INSERT  INTO  ttt VALUES (random(), ‘ABCDE’);
このクエリは、テーブル名tttにVALUES 句の値、すなわちrandom()の値を挿入するものである。
【００４６】
係るクエリをコンパイルすると、図４（ａ）に示す第１エンジンプログラムがコンパイラ部１１１で生成され、図４（ｂ）に示す第２エンジンプログラムがエンジンプログラム実行部１２１で生成される。
【００４７】
第１エンジンプログラムのFunctionステップでrandom()の値が決定し、MakeRecordステップでデータが生成される。決定したデータは、レプリケーションデータ管理部１４０に記録される。
【００４８】
一方、レプリカ装置２０が受信する第２エンジンプログラムでは、非決定的な関数の値が決定しており、INSERT文による処理は１回の実行で１行を挿入するもので、レプリカ装置２０では、１処理ずつ実行される。
【００４９】
＜エンジン層処理部でのレプリケーション＞
次に、以上のように構成されたデータベースシステムのエンジン層処理部でのレプリケーションについて説明する。
【００５０】
マスター装置１０において、エンジン層処理部１２０でレプリケーションを実行すると判定された場合に、エンジン層レプリケーション処理が実行される。
【００５１】
図５は、マスター装置におけるエンジン層処理部でのレプリケーション処理の流れを示すフローチャートである。
【００５２】
まず、コンパイラ層処理部１１０は、クライアント３０からクエリを受け付ける（ステップＳ５１）。次に、コンパイラ層処理部１１０のコンパイラ部１１１は、クエリをコンパイルする（ステップＳ５２）。
【００５３】
次に、エンジン層処理部１２０での処理に移行し、クエリがＣＯＭＭＩＴコマンドか否かを判定する（ステップＳ５３）。レプリカの更新は、トランザクション（BEGINからCOMMITの間）単位で行われ、COMMITがくるまでは、それまでの（INSERT文などの）各第２エンジンプログラムをレプリケーションデータ管理部２３０に記憶しておく。
【００５４】
ステップＳ５３でＹｅｓであれば、レプリケーション実行部１２２は、レプリケーションデータ管理部１４０に記録されている第２エンジンプログラムをレプリカ装置２０へ送信する（ステップＳ５４）。
【００５５】
一方、クエリがＣＯＭＭＩＴコマンドでなければ（ステップＳ５３でＮｏ）、クエリがトランザクションを取り消すＲＯＬＬＢＡＣＫコマンドか否かを判定する（ステップＳ５７）。
【００５６】
ＲＯＬＬＢＡＣＫコマンドであれば（ステップＳ５７でＹｅｓ）、次に、レプリケーション実行部１２２は、これまで記録した第２エンジンプログラムをレプリケーションデータ管理部１４０から削除する（ステップＳ５５）。
【００５７】
次いで、エンジンプログラム実行部１２１がクエリの第１エンジンプログラムを実行し、データベース部１６０のマスターデータベースファイルを更新する（ステップＳ５６）。
【００５８】
ステップＳ５７の判定でＲＯＬＬＢＡＣＫコマンドでなければ（ステップＳ５７でＮｏ）、エンジンプログラム実行部１２１は、クエリの第１エンジンプログラムを実行しつつ、第２エンジンプログラムをレプリケーションデータ管理部１４０に記録する（ステップＳ５８）。
【００５９】
ステップＳ５６の処理後あるいはステップＳ５８の処理後は、クライアント３０から次のクエリを受け付けるべく、ステップＳ５１に戻る。
【００６０】
図６は、レプリカ装置におけるエンジン層処理部でのレプリケーション処理の流れを示すフローチャートである。
【００６１】
レプリケーション実行部２１２が、マスター装置１０から第２エンジンプログラムを受信し、レプリケーションデータ管理部２３０に記録する（ステップＳ６１）。
【００６２】
次に、エンジンプログラム実行部２１１が第２エンジンプログラムを実行し、データベース部２５０のレプリカデータベースファイルを更新する（ステップＳ６２）。
【００６３】
以上のステップＳ６１〜Ｓ６２をクエリ数分だけ繰り返す。
【００６４】
図７は、エンジン層処理部でのレプリケーション実行時のマスター装置とレプリカ装置とのデータ送受信の例を示すシーケンス図である。
【００６５】
クライアント３０からトランザクション開始文であるＢＥＧＩＮコマンドがマスター装置１０に送信される（ステップＳ７０１）。すると、コンパイラ層処理部１１０はレプリカ装置２０にＢＥＧＩＮコマンドを送信する（ステップＳ７０２）。この送信に要する時間はｔｓｅｎｄである。
【００６６】
ＢＥＧＩＮコマンドを受信したレプリカ装置２０は、ＢＥＧＩＮコマンドを処理（ステップＳ７０３）し、トランザクションを開始する。
【００６７】
コンパイラ層処理部１１０もＢＥＧＩＮコマンドを処理し、トランザクションを開始する（ステップＳ７０４）。
【００６８】
ＢＥＧＩＮコマンドを処理したレプリカ装置２０は、ＢＥＧＩＮコマンドを処理したことをマスター装置１０に通知する（ステップＳ７０５）。この送信に要する時間はｔｓｅｎｄである。
【００６９】
次に、クライアント３０からＩＮＳＥＲＴ１コマンドがマスター装置１０に送信される（ステップＳ７０６）。
【００７０】
コンパイラ層処理部１１０は、ＩＮＳＥＲＴ１コマンドをコンパイルし、第１エンジンプログラムを生成する（ステップＳ７０７）。エンジン層処理部１２０は、第１エンジンプログラムを実行しつつ、第２エンジンプログラムを生成し、レプリケーションデータ管理部１４０に記憶させる（ステップＳ７０８）。ＩＮＳＥＲＴ１が非決定的なクエリである場合には、エンジン層処理部１２０は非決定的な関数の値が決定した値を用いて第２エンジンプログラムを生成する。
【００７１】
さらに、クライアント３０からＩＮＳＥＲＴ２コマンドがマスター装置１０に送信される（ステップＳ７０９）。上記ＩＮＳＥＲＴ１と同様に、コンパイラ層処理部１１０は、ＩＮＳＥＲＴ２コマンドをコンパイル（ステップＳ７１０）し、エンジン層処理部１２０は、第１エンジンプログラムを実行しつつ、第２エンジンプログラムを生成し、レプリケーションデータ管理部１４０に記憶させる（ステップＳ７１１）。ＩＮＳＥＲＴ２が非決定的なクエリである場合には、エンジン層処理部１２０は非決定的な関数の値が決定した値を用いて第２エンジンプログラムを生成する。
【００７２】
次に、クライアント３０からマスター装置１０にＣＯＭＭＩＴコマンドが送信される（ステップＳ７１２）。
【００７３】
コンパイラ層処理部１１０は、レプリケーションデータ管理部１４０に記憶された第２エンジンプログラムを、データ送受信部１５０を介してレプリカ装置２０に送信する（ステップＳ７１３）。ここでは、第２エンジンプログラムは、ＩＮＳＥＲＴクエリを予めコンパイルしたものである。この第２エンジンプログラムの送信に要する時間はｔｄａｔａである。
【００７４】
レプリカ装置２０は、マスター装置１０から第２エンジンプログラムを受信すると、ＩＮＳＥＲＴクエリをコンパイルすることを要しないので直ちにＩＮＳＥＲＴコマンドの処理を行う（ステップＳ７１４）。レプリカ装置２０のエンジン層処理部２１０においてＩＮＳＥＲＴコマンドの処理に要する時間は、ＩＮＳＥＲＴコマンドのエンジン層処理部２１０で処理に要する時間をｔｅｎｇｉｎｅとし、処理されたクエリ数をｎとすると、ｔｅｎｇｉｎｅ×ｎである。
【００７５】
レプリカ装置２０は、ＩＮＳＥＲＴコマンドの処理を終了すると、マスター装置１０に処理終了を通知する（ステップＳ７１５）。この通知送信に要する時間はｔｓｅｎｄである。
【００７６】
レプリカ装置２０から処理終了の通知を受けたマスター装置１０のエンジン層処理部１２０は、レプリカ装置２０にＣＯＭＭＩＴコマンドを送信する（ステップＳ７１６）。このＣＯＭＭＩＴコマンドの送信に要する時間はｔｓｅｎｄである。
【００７７】
次に、エンジン層処理部１２０は、ＣＯＭＭＩＴコマンドを処理して（ステップＳ７１８）、クライアント３０とマスター装置１０間でのトランザクションは終了する。
【００７８】
一方、レプリカ装置２０もＣＯＭＭＩＴコマンドを処理して（ステップＳ７１７）、マスター装置１０とレプリカ装置２０間でのトランザクションは終了する。
【００７９】
次に、レプリカ装置２０は、エンジン層処理部１２０に適用完了の通知を送信する（ステップＳ７１９）。この通知送信に要する時間はｔｓｅｎｄである。
【００８０】
以上で、エンジン層処理部１２０でのレプリケーション処理は終了する。
【００８１】
係るエンジン層処理部１２０，２１０でのレプリケーション処理において、レプリケーションのために追加で必要となる時間は、ｔｓｅｎｄ＋ｔｄａｔａ＋ｔｅｎｇｉｎｅ×ｎとなる。第２エンジンプログラムの送信に要する時間は、決定された値の大きさに依存するがさほど増えることはない。
【００８２】
以上説明したように、本実施形態によれば、レプリカ装置におけるコンパイルを省略することができるのでレプリケーション処理の高速化が図られる。
【００８３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８４】
１・・・データベースシステム
１０・・・マスター装置
２０・・・レプリカ装置
３０・・・クライアント
４０・・・ネットワーク
１００・・・クエリ受信部
１１０・・・コンパイラ層処理部
１１１・・・コンパイラ部
１２０、２１０・・・エンジン層処理部
１２１、２１１・・・エンジンプログラム実行部
１２２、２１２・・・レプリケーション実行部
１３０、２２０・・・ページャ層処理部
１４０、２３０・・・レプリケーションデータ管理部
１５０、２４０・・・データ送受信部
１６０、２５０・・・データベース部
【図２】
2014215680.tif 000003
【図３】
2014215680.tif 000004
【図４】
2014215680.tif 000005
【図５】
2014215680.tif 000006
【図６】
2014215680.tif 000007
【図７】
2014215680.tif 000008
【図１】
2014215680.tif 000009