JP2013218635A - レプリケーション実行装置 - Google Patents

レプリケーション実行装置 Download PDF

Info

Publication number
JP2013218635A
JP2013218635A JP2012090973A JP2012090973A JP2013218635A JP 2013218635 A JP2013218635 A JP 2013218635A JP 2012090973 A JP2012090973 A JP 2012090973A JP 2012090973 A JP2012090973 A JP 2012090973A JP 2013218635 A JP2013218635 A JP 2013218635A
Authority
JP
Japan
Prior art keywords
query
database
replication
processing
replica
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.)
Granted
Application number
JP2012090973A
Other languages
English (en)
Other versions
JP6000608B2 (ja
Inventor
Taiga Katayama
大河 片山
Kei Yamaji
圭 山地
Mototaka Kanematsu
基孝 金松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2012090973A priority Critical patent/JP6000608B2/ja
Publication of JP2013218635A publication Critical patent/JP2013218635A/ja
Application granted granted Critical
Publication of JP6000608B2 publication Critical patent/JP6000608B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】2つのレプリケーション実現方法から適した実現方法を選択し実行することによって、データベースの高速同期を実現する。
【解決手段】記憶手段は、変更されたページ数を含む変更ページ情報を記憶し、第1処理手段はコンパイラ層におけるクエリの処理を行い、当該クエリを記憶手段に記憶させ、第2処理手段はページャー層におけるクエリの処理を行い、変更ページ情報を記憶手段に記憶させ、第1実行手段は、記憶されたクエリに基づいて、マスターDBの変更をレプリカDBに反映させるクエリを複製DBに送信し、第2実行手段は、変更ページ情報に基づいて、変更されたページのデータを複製DBに送信し、判定手段は、変更されたページ数と所定の値に基づいて、第1実行手段及び第2実行手段のどちらに同期をさせるかを判定する。
【選択図】図2

Description

本明細書に記載の実施の形態は、レプリケーション実行装置に関する。
近年、災害時などでハードディスクの故障によるデータ損失を防ぐために、遠隔地にリアルタイムにバックアップをとりたいという要求が高まっており、
データベースを高速に同期することが求められるようになった。データベースの高速同期を実現するためには、サーバ間の通信内容が重要である。
従来のデータベースの高速同期実現技術では、物理コピーにおいて、データを圧縮して送信するとともに、0(ゼロ)クリアして圧縮率を高める方式などが提案されていた。
特開2007−233543号公報
しかし、従来の技術では変更ページが多いと、圧縮計算する範囲が大きくなる、またDELETEは0クリアする処理も必要となり、同期の高速化に問題があった。
本発明は、変更ページ数、クエリの種類等に応じて、2つのレプリケーション実現方法から適した実現方法を選択し実行することによって、変更ページの量やクエリの種類にかかわらず、データベースの高速同期を実現することを目的とする。
一の実施の形態によれば、レプリケーション実行装置が提案される。レプリケーション実行装置は、記憶手段と、第1処理手段と、第2処理手段と、第1実行手段と、第2実行手段と、判定手段を有する。
記憶手段は、クライアントから受信したクエリ、及びクエリを処理することによりマスターデータベースの変更されたページに関する情報であって、変更されたページ数を含む変更ページ情報を記憶する。
第1処理手段はクライアントから受信したクエリについて、コンパイラ層におけるクエリの処理を行うとともに、当該クエリを前記記憶手段に記憶させる。
第2処理手段はクライアントから受信したクエリについて、ページャー層におけるクエリの処理を行うとともに、当該クエリを処理することによりマスターデータベースの変更されたページに関する情報である変更ページ情報を前記記憶手段に記憶させる。
第1実行手段は、前記記憶手段に記憶されたクエリに基づいて、マスターデータベースの変更をレプリカデータベースに反映させるクエリを複製データベース装置に送信し、前記クエリを複製データベース装置に実行させレプリカデータベースをマスターデータベースに同期させる。
第2実行手段は、前記記憶手段に記憶された変更ページ情報に基づいて、マスターデータベースの変更されたページのデータを複製データベース装置に送信し、複製データベース装置に変更されたページのデータをレプリカデータベースに反映させることにより、レプリカデータベースをマスターデータベースに同期させる。
判定手段は、前記変更されたページ数と所定の値との比較結果に基づいて、前記第1実行手段及び第2実行手段のどちらにレプリカデータベースをマスターデータベースに同期させるのかを判定する。
別の実施の形態によれば、レプリケーション実行装置が提案される。レプリケーション実行装置は、記憶手段と、第1処理手段と、第2処理手段と、第1実行手段と、第2実行手段と、判定手段を有する。
記憶手段は、クライアントから受信したクエリ、及びクエリを処理することによりマスターデータベースの変更されたページに関する情報である変更ページ情報を記憶する。
第1処理手段は、クライアントから受信したクエリについて、コンパイラ層におけるクエリの処理を行うとともに、当該クエリを前記記憶手段に記憶させる。
第2処理手段は、クライアントから受信したクエリについて、ページャー層におけるクエリの処理を行うとともに、当該クエリを処理することによりマスターデータベースの変更されたページに関する情報である変更ページ情報を前記記憶手段に記憶させる。
第1実行手段は、前記記憶手段に記憶されたクエリに基づいて、マスターデータベースの変更をレプリカデータベースに反映させるクエリを複製データベース装置に送信し、前記クエリを複製データベース装置に実行させてレプリカデータベースをマスターデータベースに同期させる。
第2実行手段は、前記記憶手段に記憶された変更ページ情報に基づいて、マスターデータベースの変更されたページのデータを複製データベース装置に送信し、複製データベース装置に変更されたページのデータをレプリカデータベースに反映させることにより、レプリカデータベースをマスターデータベースに同期させる。
判定手段は、クライアントから受信した前記クエリの種類に基づいて、前記第1実行手段及び第2実行手段のどちらにレプリカデータベースをマスターデータベースに同期させるのかを判定する。
さらに別の実施の形態によれば、レプリケーション実行装置が提案される。レプリケーション実行装置は、記憶手段と、第1処理手段と、第2処理手段と、第1実行手段と、第2実行手段と、判定手段を有する。
記憶手段は、クライアントから受信したクエリ、及びクエリを処理することによりマスターデータベースの変更されたページに関する情報である変更ページ情報を記憶する。
第1処理手段は、クライアントから受信したクエリについて、コンパイラ層におけるクエリの処理を行うとともに、当該クエリを前記記憶手段に記憶させる。
第2処理手段は、クライアントから受信したクエリについて、ページャー層におけるクエリの処理を行うとともに、当該クエリを処理することによりマスターデータベースの変更されたページに関する情報である変更ページ情報を前記記憶手段に記憶させる。
第1実行手段は、前記記憶手段に記憶されたクエリに基づいて、マスターデータベースの変更をレプリカデータベースに反映させるクエリを複製データベース装置に送信し、前記クエリを複製データベース装置に実行させてレプリカデータベースをマスターデータベースに同期させる。
第2実行手段は、前記記憶手段に記憶された変更ページ情報に基づいて、マスターデータベースの変更されたページのデータを複製データベース装置に送信し、複製データベース装置に変更されたページのデータをレプリカデータベースに反映させることにより、レプリカデータベースをマスターデータベースに同期させる。
判定手段は、クライアントから受信した前記クエリによるレコードの変更が連続的であるか否かに基づいて、前記第1実行手段及び第2実行手段のどちらにレプリカデータベースをマスターデータベースに同期させるのかを判定する。
本装置を含むデータベースシステムの例を示した図 本装置の構成例を示すブロック図 装置の主たる動作であるレプリケーション処理を示すフローチャート 第1の実施の形態における方法選択及びタイミング判定処理の例を示すフローチャート 一つの同期処理となる一連のクエリの例を示す図 図5に示した一連のクエリの例とは別の例を示す図 クエリ処理時のコンパイラ層処理部の動作例を示したフローチャート レプリケーション実行時のコンパイラ層処理部の動作例を示したフローチャート レプリケーション実行時の本装置レプリカDB装置とのデータ送受信の例を示すシーケンス図 クエリ処理時のページャー層処理部の動作例を示したフローチャート レプリケーション実行時のページャー層処理部の動作例を示したフローチャート ページャー層処理部によるレプリケーション実行時の本装置とレプリカDB装置とのデータ送受信の例を示すシーケンス図 第2の実施の形態にかかる本装置の動作例を示すフローチャート 第2の実施の形態における方法選択及びタイミング判定処理の例を示すフローチャート 一連のクエリの例を示す図 クライアントから本装置に送信される一連のクエリの例を示す図
以下、図面を参照して本発明の実施の形態に係るレプリケーション実行装置を説明する。
[0.用語の定義]
(1)レプリケーション
「レプリケーション」とは、あるデータベースとまったく同じ内容の複製(レプリカデータベース(以下、DBと略す)装置)を別のコンピュータ上に作成し、内容を同期させる機能をいう。
(2)ページ
「ページ」とは、ファイルからデータを読み書きする単位をいう。あるデータにアクセスするとき、そのデータを含むページを取得して、ページ内の任意のデータにアクセスする。
(3)SQLパーサの結果
「SQLパーサの結果」とは、クエリをコンパイルして生成されるものをいい、SQL実行エンジンで実行されるプログラムである。
(4)非決定的なクエリ
「非決定的なクエリ」とは、実行時に定まる関数を含んだクエリをいう。例えば、SYSDATE()システム日付、RAND()ランダム関数、UUID()汎用一意識別子、などである。
(例)INSERT INTO ttt VALUES(SYSDATE())
[A.第1の実施の形態]
[A.1.装置の構成例]
[A.1.1.データベースシステムの構成例]
まず、第1の実施の形態にかかるレプリケーション実行装置(以下、「本装置」と呼ぶ)を含むデータベースシステムの例を説明する。図1は本装置を含むデータベースシステムの例を示した図である。データベースシステム1は、1又は複数のクライアント30と、クライアント30とネットワーク40を経由して接続される本装置10と、本装置10と通信可能に接続されている1又は複数の複製データベース装置(「レプリカDB装置」とも呼ぶ)20とを有するシステムである。
クライアント30は、データベースシステム1のデータベース機能を利用する端末装置である。クライアント30からのデータベースの変更は、マスターである本装置10にのみ可能である。本装置10(マスター)と複製データベース装置20(スレーブ)とは、マスタースレーブ型の関係になっている。
本装置10はマスターデータベースを有している。複製データベース装置20はそれぞれレプリカデータベースを有している。マスターデータベースの更新に応じて、本装置10は複製データベース装置20にレプリカデータベースをマスターデータベースに同期させる。
クライアント30は、本装置10と通信可能な情報処理装置であって、例えばコンピュータ、移動体通信端末、携帯電話機、タブレット型PC、ネットワーク家電などの情報処理装置である。この情報処理装置は、演算処理装置(CPU)、主メモリ(RAM)、読出し専用メモリ(ROM)、入出力装置(I/O)、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。
複製データベース装置20は本装置10と通信可能な情報処理装置であって、例えばコンピュータ、ワークステーション、サーバなどの情報処理装置である。この情報処理装置は、演算処理装置(CPU)、主メモリ(RAM)、読出し専用メモリ(ROM)、入出力装置(I/O)、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。
ネットワーク40は2以上の情報処理装置間でのデータ送受信を可能とする通信網などである。複数の通信網がゲートウエイ等によって接続されて構成される通信網もここでいう「ネットワーク」に含む。なお、図1に示した例は、クライアント30と本装置10がネットワーク40によって接続され、本装置10と複製データベース装置20とはネットワーク40とは別の通信回線により接続される態様を図示しているが、このような接続形態に限定される趣旨ではなく、本装置10と複製データベース装置20の接続はどのようなネットワーク(ネットワーク40とは別でも可)、通信回線によって接続されても本実施の形態は成立する。
データベースシステム1において、本装置10がクライアント30からトランザクションの開始を示すBEGINコマンドを受信したときが同期処理の開始であり、本装置10がこのトランザクションの終了を示すCOMMITコマンドをクライアント30から受信し、このCOMMITコマンドに応じてマスターデータベースおよびレプリカデータベースの両方のDBファイルの更新が完了したとき、同期処理の終了となる。
[A.1.2.レプリケーション実行装置の構成例]
次に、本装置10の構成例について説明する。本装置10は、例えばコンピュータ、ワークステーションなどの情報処理装置によって実現される装置である。この情報処理装置は、演算処理装置(CPU)、主メモリ(RAM)、読出し専用メモリ(ROM)、入出力装置(I/O)、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。
本装置10は、レプリケーションを実行する装置である。より詳しくは本装置10は主たるデータベースとまったく同じ内容の複製(レプリカDB装置)のデータベースを別のコンピュータ上に作成させ、複製のデータベースの内容を主たるデータベースの内容に同期させる機能を有する装置である。
図2に本装置10の構成例を示すブロック図を掲げる。本装置10は、クエリ受信部100と、コンパイラ層処理部110と、ページャー層処理部120と、レプリケーションデータ管理部130と、データベース部150と、データ送受信部140とを有する。
クエリ受信部100は、ネットワーク40を経由してクライアント30に接続される。また、クエリ受信部100はコンパイラ層処理部110に接続している。
コンパイラ層処理部110はページャー層処理部120に接続されており、ページャー層処理部120はデータベース部150に接続されている。また、コンパイラ層処理部110及びページャー層処理部120はともにレプリケーションデータ管理部130及びデータ送受信部140に接続されている。データ送受信部140は各複製データベース装置20に直接又はネットワークを経由して各複製データベース装置20に接続されている。
コンパイラ層処理部110は、レプリケーション方法選択部160とコンパイラ層レプリケーション実行部170を有している。
ページャー層処理部120はページャー層レプリケーション実行部180を有している。
なお、レプリケーションデータ管理部130は各実施の形態の記憶手段に相当し、コンパイラ層処理部110は各実施の形態の第1処理手段に相当し、ページャー層処理部120は各実施の形態の第2処理手段に相当し、コンパイラ層レプリケーション実行部170は各実施の形態の第1実行手段に相当し、ページャー層レプリケーション実行部180は各実施の形態の第2実行手段に相当し、レプリケーション方法選択部160は各実施の形態の判定手段に相当する。
なお、これら構成要素は本装置10の機能を機能ごとにまとめてブロックとして捉えたものであり、本装置10が各構成要素に対応するモジュール、装置、回路、部品などの物理的構成要素を備えていることを意味するわけではない。
ここで「接続されている」とは、データ、情報、命令などの送受信、授受が可能な状態になっていることをいい、配線で連結されているような物理的な接続に限られる意味ではない。
[A.1.3.構成要素の説明]
次に、図2に示した本装置10の構成要素について説明する。
クエリ受信部100は、クライアント30からネットワーク40を経由して送信されたクエリを受信する機能を有する。クエリ受信部100は、受信したクエリをコンパイラ層処理部110に送る。
コンパイラ層処理部110は、コンパイラ層におけるクエリの処理を行う機能と、論理コピーによるレプリケーション実現方法(以下、「コンパイラ層レプリケーション処理」という)を行う機能を有する。コンパイラ層におけるデータベースの更新は、クエリをパースしてSQL実行エンジンで実行するプログラムを作成し、そのSQLパーサの結果(プログラム)を実行するものである。コンパイラ層処理部110は、クライアント30から受信したSQL文をレプリカDB装置20に送信し、レプリカDB装置20にこのSQL文を実行させることにより、データベースの同期を実現する。コンパイラ層レプリケーション処理の利点は、もう一方のページャー層レプリケーション処理(後述)に比べて、本装置10とレプリカDB装置20間で送受信するデータ量が小さいという点にある。一方、コンパイラ層レプリケーション処理では、非決定的なクエリに対応するための処理が別途必要となり、他の手法に比べてレプリカDB装置20での計算量が多く、コンパイル・実行は、マスターとレプリカDB装置20で二度やるというデメリットがある。
コンパイラ層処理部110は、レプリケーション方法選択部160とコンパイラ層レプリケーション実行部170とを有する。
レプリケーション方法選択部160は、クエリ受信部100から取得したクエリに基づいて、2種類のレプリケーション処理からいずれか一方を選択し、その選択に応じてコンパイラ層レプリケーション実行部170又はページャー層レプリケーション実行部180のいずれかにレプリケーションの実行を命令する機能を有する。
コンパイラ層レプリケーション実行部170は、レプリケーション方法選択部160がコンパイラ層レプリケーション処理を選択した場合、コンパイラ層におけるデータベースの更新を実行する機能を有する。
ページャー層処理部120は物理コピーによるレプリケーション実現方法(以下、「ページャー層レプリケーション処理」という)を行う機能を有する。ページャー層におけるデータベースの更新は、DBファイルにページ単位でアクセスして更新する。ページャー層処理部120はマスターデータベースのDBファイルで、変更されたページのデータをレプリカDB装置20に送信し、レプリカDB装置20はレプリカデータベースのDBファイルにおいて変更されたページを書き換える。ページャー層レプリケーション処理では、レプリカDB装置20はコンパイルおよび実行を省略できるため、処理時間を短縮することが可能であるが、対象となるページ全体のデータがレプリカDB装置20に送信されるため、当該ページに含まれる、変更のないデータも送信することになるため、ページ内の変更箇所が少ないほど不要なデータの送信が発生するというデメリットがある。そのため、多くのページを書き換えるUPDATE,DELETEのようなクエリを処理するには適さない場合がある。
ページャー層処理部120は、ページャー層でのクエリの処理を行う機能を有する。ページャー層処理部120はページャー層レプリケーション実行部180を有する。
ページャー層レプリケーション実行部180は、レプリケーション方法選択部160がページャー層レプリケーション処理を選択した場合、ページャー層におけるデータベースの更新を実行する機能を有する。
レプリケーションデータ管理部130は、レプリケーション方法選択部160によるレプリケーション方法選択の際に必要なデータを管理する機能を有する。なお、本実施の形態における「レプリケーション方法選択の際に必要なデータ」とは、マスターデータベースのDBファイルの変更されたページに関する情報である変更ページ情報である。変更ページ情報には変更されたページの数が含まれる。
データベース部150は、データを一定のルールで蓄積し、必要に応じて取り出し提供する機能を有する。データベース部150はマスターデータベースとなるDBファイル(マスターDBファイル)を記憶している。なお、データベース部150は必ずしも本装置10内に設けられている必要はなく、本装置10とネットワーク等で接続された別の装置内に設けられていても、もちろんかまわない。
データ送受信部140は、各部から取得したデータを所定の通信手順に従って複製データベース装置20に送信するための信号を生成し送信するとともに、複製データベース装置20から受信した信号をデータに変換して各部に渡す機能を有する。
[A.2.本装置の動作例]
次に、第1の実施の形態にかかる本装置10の動作例について図3を参照しながら説明する。図3は本装置10の主たる動作であるレプリケーション処理を示すフローチャートである。
本装置10、より詳しくはクエリ受信部100がクライアント30からクエリを受信すると、クエリ受信部100は受信したクエリをコンパイラ層処理部110に渡す。
クエリを取得したコンパイラ層処理部110、より詳しくはレプリケーション方法選択部160は、方法選択及びタイミング判定処理を行う(S101)。「方法選択及びタイミング判定処理」は、コンパイラ層レプリケーション処理とページャー層レプリケーション処理のいずれを選択するか、及びレプリケーションを実行するタイミングが到来しているか、について判定を行い判定結果を出力する処理である。第1の実施の形態における方法選択及びタイミング判定処理の内容については後述する。
次に、レプリケーション方法選択部160は、ステップS101の処理でコンパイラ層レプリケーション処理を実行すると決定した場合(S102、Yes)、レプリケーション方法選択部160はコンパイラ層レプリケーション実行部170にコンパイラ層レプリケーション処理の実行を命令し、コンパイラ層レプリケーション実行部170はデータ送受信部140を経由してレプリカDB装置20にクエリを送信する(S103)。クエリを受信したレプリカDB装置20は、マスターデータベースであるデータベース部150のマスターDBファイルとの同期を実現するように、そのレプリカDB装置20が有するレプリカデータベースのDBファイルをクエリの内容に応じて更新する(図略)。更新を完了したレプリカDB装置20は、本装置10に適用完了メッセージを送信する(図略)。
ステップS103の後、コンパイラ層処理部110は前記クエリに基づく実行計画を実行(Engine層、Pager層での処理)し、データベース部150のマスターDBファイルをクエリの内容に応じて更新する(S105)。
その後本装置10、より詳しくはコンパイラ層処理部110はレプリカDB装置20からの適用完了メッセージの受信を待ち受け、適用完了メッセージ受信を確認する(S106)と、前述のステップS101に戻り、クライアント30からの新たなクエリの受信に備える。
一方、ステップS102において、レプリケーション方法選択アルゴリズムの実行の結果ページャー層レプリケーション処理を実行すると決定された場合(S102、No)、レプリケーション方法選択部160はページャー層処理部120、より詳しくはページャー層レプリケーション実行部180にページャー層レプリケーション処理の実行を命令し、ページャー層レプリケーション実行部180はデータ送受信部140を経由してレプリカDB装置20にマスターデータベースにおいて更新されたページである更新ページを送信する(S104)。更新ページを受信したレプリカDB装置20は、マスターデータベースとの同期を実現するように、そのレプリカDB装置20が有するレプリカデータベースのDBファイルに更新ページの内容を書き込み(図略)、データベースの更新を行う。更新を完了したレプリカDB装置20は、本装置10に適用完了メッセージを送信する(図略)。その後前述のステップS105に進み、実行計画を実行する(S105)。
以上で、本装置10の主たる動作例であるレプリケーション処理の説明を終了する。
[A.2.2.方法選択及びタイミング判定処理の例]
前述の方法選択及びタイミング判定処理(S101)の内容について図4を参照しながら述べる。図4は第1の実施の形態における方法選択及びタイミング判定処理の例を示すフローチャートである。
方法選択及びタイミング判定処理において、コンパイラ層処理部110、より詳しくはレプリケーション方法選択部160は初期化処理を実行する(S201)。初期化処理では、変更ページ数を格納する変数m、変更ページ番号を格納する配列p[]、変更されたレコード番号を格納する配列rをクリアする。
次に、コンパイラ層処理部110、より詳しくはレプリケーション方法選択部160はクエリ受信部100からクエリを受け付ける(S202)。
次にコンパイラ層処理部110、より詳しくはレプリケーション方法選択部160は直近のステップS202において受け付けたクエリがトランザクションの終了を示すCOMMITか否かを判定する(S203)。クエリがCOMMITでないと判定した場合(S203、No)、コンパイラ層処理部110は当該クエリを実行するとともにクエリの実行結果に合わせて各変数r、p、mの値を更新する(S204)。その後ステップS202に戻り新たなクエリの受付を待つ。
一方、ステップS203において、クエリがCOMMITであると判定した場合(S203、Yes)、コンパイラ層処理部110、より詳しくはレプリケーション方法選択部160は、変更ページ数を格納する変数mが値Mを超えているか否かを判定する(S205)。値Mはコンパイラ層レプリケーション処理がページャー層レプリケーション処理より有利となる変更ページ数であって、あらかじめユーザや設計者によって設定されたり、プログラム等によって自動的、半自動的に設定される値である。例えば、値Mは、クエリの処理時間やデータの通信時間をもとに設定されてもよい。
値Mを決定する手法の一例を述べる。

上記式1において、左辺はページャー層レプリケーション処理に要する時間であり、右辺はコンパイラ層レプリケーション処理に要する時間である。
但し、
tpage:1ページあたりの送受信時間
tsend:クエリ送信時間
tselect:SELECT処理時間
tupdate:更新系クエリ処理時間
tdata:クエリ送信時間
n:クエリ数
m:ページ数
式1を変形して以下の式2を得る。

上記式2の左辺の各要素に値を入れて得られるmの値をMとする。
図4に戻り、方法選択及びタイミング判定処理の説明を続ける。
ステップS205において変更ページ数を格納する変数mが値Mを超えていないと判定した場合(S205、No)、コンパイラ層処理部110、より詳しくはレプリケーション方法選択部160は、ページャー層レプリケーション処理を選択し、これを実行することを示す情報(例えば、ページャー層レプリケーション処理実行フラグ)を記憶する。その後方法選択及びタイミング判定処理を終了する。
一方、ステップS205において変更ページ数を格納する変数mが値Mを超えていると判定した場合(S205、Yes)、コンパイラ層処理部110、より詳しくはレプリケーション方法選択部160は、コンパイラ層レプリケーション処理を選択し、これを実行することを示す情報(例えば、コンパイラ層レプリケーション処理実行フラグ)を記憶する。その後方法選択及びタイミング判定処理を終了する。
[A.2.2.1.レプリケーションのために追加で必要となる時間]
次に、本実施の形態におけるレプリケーションのために追加で必要となる時間について説明する。更新ページが少ない場合の例として、図5に一つの同期処理となる一連のクエリの例を示す。この同期処理では変更されるページは1ページである。
従来の同期手法ではページャー層を使用して同期処理を行い、同じく本実施の形態でもページャー層レプリケーション処理により同期処理を行う。
ページャー層レプリケーション処理の場合の追加必要時間をt_P_needとすると
t_P_need = tpage× m + tsend × 2
である
但し、上記式において
tpage:1ページ当たりの送受信時間
m:変更されたページ数
tsend:クエリ(COMMIT)の送信時間
である。
なお、図5に示す一連のクエリをコンパイラ層レプリケーション処理により同期処理する場合の追加必要時間をt_c_needとすると、
t_c_need= tsend× 5 + tdata + (tselect + tupdate) × n
但し、上記式において
tsend:クエリの送信時間
tselect:SELECT処理時間
tupdate:更新系クエリ処理時間
tdata:クエリ送信時間
n:クエリ数
である。
次に、更新ページが多数である場合の例として、図5に示した一連のクエリの例とは別の例を図6に示す。このクエリによる同期処理における変更ページ数は100ページである。
従来手法ではこのクエリをページャー層レプリケーション処理により処理することになる。その場合のページャー層レプリケーション処理の場合の追加必要時間をt_P_needとすると
t_P_need = tpage× m + tsend × 2 =200.40
である
但し、上記式において
tpage:1ページ当たりの送受信時間=2.00
m:変更されたページ数=100
tsend:クエリ(COMMIT)の送信時間=0.20
とした。
一方、第1の実施の形態では、この一連のクエリをコンパイラ層レプリケーション処理により同期処理する。この場合の追加必要時間をt_c_need
t_c_need= tsend× 5 + tdata + (tselect + tupdate) × n=47.20
但し、上記式において
tsend:クエリの送信時間=0.20
tselect:SELECT処理時間=0.10
tupdate:更新系クエリ処理時間=0.36
tdata:クエリ送信時間=0.20
n:クエリ数=100
である。
上述の例に示すように、従来手法に比べて第1の実施の形態は追加必要時間を大きく短縮することができる。
[A.2.3.コンパイラ層処理部の動作例]
本装置10のコンパイラ層処理部110の動作例(コンパイラ層レプリケーション処理)について説明する。
[A.2.3.1.クエリ処理時の動作例]
図7にクエリ処理時のコンパイラ層処理部110の動作例を示したフローチャートを掲げる。クエリ処理は、コンパイラ層処理部110は受け付けたクエリを処理し(S301)、その後クエリ処理を終了する。
[A.2.3.2.レプリケーション実行時の動作例]
次に、レプリケーション実行時のコンパイラ層処理部110、より詳しくはコンパイラ層レプリケーション実行部170の動作例を示したフローチャートを図8に掲げる。レプリケーション実行時において、コンパイラ層処理部110より詳しくはコンパイラ層レプリケーション実行部170はまず、記憶されたクエリ情報から送信用データを生成する(S401)。コンパイラ層処理部110より詳しくはコンパイラ層レプリケーション実行部170は、コンパイラ層レプリケーション処理の実行においてクエリをレプリカDB装置20に送信し、そのレプリカDB装置20にこのクエリを実行させるのであるが、クエリが非決定的なクエリである場合には、マスターである本装置10がクエリを受け取った時点では値が決定していないため、そのままレプリカDB装置20にクエリを送信できない。そのため、マスターである本装置10がクエリを実行し、またクエリをレプリケーションデータ管理部130に記憶させる。本装置10はCOMMIT処理時にレプリケーションデータ管理部130に記憶された変更されたレコードをSELECTし、決定した値を取得し、その結果をもとにINSERT(あるいはUPDATE)クエリを作成して、レプリカDB装置20に伝送する(S402)。
また、コンパイラ層処理部110は受け付けたクエリを処理する(S403)。
次にコンパイラ層処理部110、より詳しくはコンパイラ層レプリケーション実行部170はステップS402において送信したデータをレプリカDB装置20が適用完了したことを示す適用完了通知を待ち、適用完了通知を受信する(S404)とレプリケーション時の処理を終了する。
[A.2.3.3.レプリケーション実行時の具体例]
コンパイラ層処理部110のレプリケーション実行時の、マスターである本装置とレプリカDB装置20とのデータ送受信の例を図9に示す。
クライアント30からBEGINが本装置10に送信される(S501)。すると本装置10、より詳しくはコンパイラ層処理部110はレプリカDB装置にBEGINを送信する(S502)。この送信に要する時間はtsendである。BEGINを受信したレプリカDB装置20はBEGINを処理し(S503)、トランザクションを開始する。本装置10、より詳しくはコンパイラ層処理部110もBEGINを処理し、トランザクションを開始する(S504)。
BEGINを処理したレプリカDB装置20は本装置10にBEGINを処理したことを通知する(S505)。この送信に要する時間はtsendである。
次に、クライアント30からINSERTが本装置10に送信される(S506)。本装置10、より詳しくはコンパイラ層処理部110はINSERTを処理する(S507)。ここではINSERTが非決定的クエリであるものとする。そのため、本装置10、より詳しくはコンパイラ層処理部110はこのクエリINSERTを実行して(S507)、変更されたレコードをレプリケーションデータ管理部130に記憶させる。
次にさらに新たなINSERTがクライアント30から本装置10に送信されたものとする(S508)。本装置10、より詳しくはコンパイラ層処理部110はこのクエリINSERTを実行して、変更されたレコードをレプリケーションデータ管理部130に記憶させる(S509)。
次にCOMMITがクライアント30から本装置10に送信されたものとする(S510)。本装置10、より詳しくはコンパイラ層処理部110はレプリケーションデータ管理部130に記憶された変更されたレコードのそれぞれについてSELECTの処理を行い(S511)決定した値を取得する。このSELECT処理に要する時間をtselectとすると、ステップS511に要する時間はtselect×nである(nはSELECT処理で処理されたクエリ数)。次にその結果をもとにINSERT(あるいはUPDATE)クエリを作成してレプリカDB装置20に送信する(S512)。このデータ送信に要する時間はtdataである。
ステップS512で送信されたクエリを受信すると、レプリカDB装置20はそれぞれのクエリ(この例ではINSERT)を処理する(S513)。この例ではステップS506、S508に対応する2つのINSERTがレプリカDB装置20でも処理されることになる。そのため、ステップS513で要する時間はtupdate×nである。但し、tupdateは更新系クエリ処理時間、nは処理されたクエリ数である。
ステップS513を終了すると、レプリカDB装置20は本装置10に処理終了を通知する(S514)。この通知送信に要する時間はtsendである。
この通知を受信した本装置10、より詳しくはコンパイラ層処理部110はステップS510で受信したCOMMITに応じて、レプリカDB装置20にCOMMITを送信する(S515)。このCOMMIT送信に要する時間はtsendである。
次に本装置10、より詳しくはコンパイラ層処理部110はCOMMITの処理を行う(S517)。これでクライアント30と本装置10間でのトランザクションは終了する。
一方、レプリカDB装置20もCOMMITの処理を行う(S516)。これで本装置10とレプリカDB装置20間でのトランザクションも終了する。次にレプリカDB装置20は本装置10、より詳しくはコンパイラ層処理部110に適用完了の通知を送信する(S518)。この通知送信に要する時間はtsendである。以上でコンパイラ層レプリケーション処理におけるレプリケーション処理は終了する。
このレプリケーション処理において、レプリケーションのために追加で必要となる時間は
tsend×5+ tdata+(tselect+ tupdate)×n
となる。
[A.2.4.ページャー層処理部の動作例]
次に、本装置10のページャー層処理部120の動作例(ページャー層レプリケーション処理)について説明する。
[A.2.4.1.クエリ処理時の動作例]
図10にクエリ処理時のページャー層処理部120の動作例を示したフローチャートを掲げる。クエリ処理において、ページャー層処理部120は受け付けたクエリに基づいて該当ページを変更する(S601)。次に、ページャー層処理部120はページャー層で処理するクエリか否かを判定する(S602)。ページャー層で処理するクエリでないと判定した場合(S602,No)、ページャー層処理部120はクエリ処理をそのまま終了する。一方、ページャー層で処理するクエリであると判定した場合(S602,Yes)、ページャー層処理部120は変更ページ情報をレプリケーションデータ管理部130に記憶させ(S603)、クエリ処理を終了する。
[A.2.4.2.レプリケーション実行時の動作例]
次に、レプリケーション実行時のページャー層処理部120の動作例を示したフローチャートを図11に掲げる。ページャー層レプリケーション処理では、本装置10は変更されたページをレプリカDB装置20に送信し、レプリカDB装置20が変更されたページにより直接DBファイルを上書きする。非決定的なクエリについては、本装置10がページを変更する時点で値が決定しているため、非決定的なクエリについて対応方法を採る必要はない。コミット時、マスターである本装置10がページ単位で書き込みする際に、そのページ内容をレプリカDB装置20に伝送する。
レプリケーション実行時において、本装置10、より詳しくはページャー層処理部120はレプリケーションデータ管理部130に記憶された変更ページ情報から送信用データを生成する(S701)。本装置10、より詳しくはページャー層処理部120は送信用データをレプリカDB装置20に送信する(S702)。
また、ページャー層処理部120は受け付けたクエリを処理する(S703)。
次にページャー層処理部120は、レプリカDB装置20が適用完了したことを示す適用完了通知を待ち、適用完了通知を受信する(S704)。適用完了通知を受信すると、本装置10、より詳しくはページャー層処理部120はレプリケーション時の処理を終了する。
[A.2.4.3.レプリケーション実行時の具体例]
ページャー層処理部120によるレプリケーション実行時の、マスターである本装置10とレプリカDB装置20とのデータ送受信の例を図12に示す。
まずクライアント30からBEGINが本装置10に送信される(S801)。すると本装置10、より詳しくはページャー層処理部120はBEGINを処理し、トランザクションを開始する(S802)。
次に、クライアント30からINSERTが本装置10に送信される(S803)。本装置10、より詳しくはページャー層処理部120はINSERTを処理し、このクエリINSERTを実行して変更されたページを示す情報(変更レコード情報)をレプリケーションデータ管理部130に記憶させる(S804)。
次にさらに新たなINSERTがクライアント30から本装置10に送信されたものとする(S805)。本装置10、より詳しくはページャー層処理部120はこのクエリINSERTを実行して、変更ページ情報をレプリケーションデータ管理部130に記憶させる(S806)。
次にCOMMITがクライアント30から本装置10に送信されたものとする(S807)。 本装置10、より詳しくはページャー層処理部120はレプリケーションデータ管理部130に記憶された変更ページ情報に基づいて、変更されたページのデータをレプリカDB装置20に送信する(S808)。1ページ当たりデータ送信に要する時間はtpageとすると、ステップS08に要する時間はtpage×m(但し、mは送信されるページ数)である。
ステップS813で送信された変更されたページのデータを受信すると、レプリカDB装置20は受信確認通知を本装置10に送信する(S809)。
この受信確認通知を受信した本装置10、より詳しくはページャー層処理部120はステップS807で受信したCOMMITに応じて、レプリカDB装置20にCOMMITを送信する(S810)。このCOMMIT送信に要する時間はtsendである。
次に本装置10、より詳しくはページャー層処理部120はCOMMITの処理を行う(S811)。これでクライアント30と本装置10間でのトランザクションは終了する。
一方、レプリカDB装置20もCOMMITの処理を行う(S812)。これで本装置10とレプリカDB装置20間でのトランザクションも終了する。次にレプリカDB装置20は本装置10、より詳しくはページャー層処理部120に適用完了の通知を送信する(S813)。この通知送信に要する時間はtsendである。以上でページャー層レプリケーション処理におけるレプリケーション処理は終了する。
この例に示すページャー層レプリケーション処理において、レプリケーションのために追加で必要となる時間は
tpage×m + tsend×2
となる。
[B.第2の実施の形態]
次に第2の実施の形態について説明する。第1の実施の形態が変更されたページ数mに基づいて、レプリケーション方法選択を行うのに対して、第2の実施の形態はクエリの種類によってレプリケーション方法選択を行う点で異なる。
[B.1.装置の構成例]
第2の実施の形態にかかる本装置10、本装置10を含むデータベースシステム1の構成、構成要素の機能については、第1の実施の形態と同様であるのでそれらの説明は省略する。
[B.2.装置の動作例]
次に、第2の実施の形態にかかる本装置10の主たる動作であるレプリケーション処理の例について図13を参照しながら説明する。図13は第2の実施の形態にかかる本装置10の動作例を示すフローチャートである。
本装置10、より詳しくはクエリ受信部100がクライアント30からクエリを受信すると、クエリ受信部100は受信したクエリをコンパイラ層処理部110に渡す(S901)。
クエリを取得したコンパイラ層処理部110、より詳しくはレプリケーション方法選択部160は、方法選択及びタイミング判定処理を行う(S902)。「方法選択及びタイミング判定処理」は、コンパイラ層レプリケーション処理とページャー層レプリケーション処理のいずれを選択するか、及びレプリケーションを実行するタイミングが到来しているか、について判定を行い判定結果を出力する処理である。第2の実施の形態における方法選択及びタイミング判定処理の内容については後述する。
次に、コンパイラ層処理部110、より詳しくはレプリケーション方法選択部160は、前述のステップS901で受け付けたクエリが更新系クエリか否かを判定する(S903)。当該クエリが更新系クエリではないと判定した場合(S903、No)、コンパイラ層処理部110が当該クエリに応じて生成された実行計画を実行する(S910)。その後前述のステップS901に戻り、新たなクエリの受信に備える。
一方、ステップS903において当該クエリが更新系クエリであると判定した場合(S903、Yes)、コンパイラ層処理部110、より詳しくはレプリケーション方法選択部160はレプリケーション実行タイミングが成立しているか否かを判定する(S904)。レプリケーション実行タイミングが成立していないと判定した場合(S904、No)、コンパイラ層処理部110が当該クエリに応じて生成された実行計画を実行する(S910)。その後前述のステップS901に戻り、新たなクエリの受信に備える。
一方、ステップS904においてレプリケーション実行タイミングが成立していると判定した場合(S904、Yes)であって、ステップS901の処理においてコンパイラ層レプリケーション処理を実行すると決定されている場合(S905、Yes)、コンパイラ層処理部110、より詳しくはレプリケーション方法選択部160はコンパイラ層レプリケーション実行部170に同期の実行を命令し、コンパイラ層レプリケーション実行部170はデータ送受信部140を経由してレプリカDB装置20にレプリケーションデータ管理部130に記憶されているクエリを送信する(S906)。クエリを受信したレプリカDB装置20は、マスターデータベースである本装置10データベース部150のDBファイルとの同期を実現するように、そのレプリカDB装置20が有しているレプリカデータベースのDBファイルをクエリの内容に応じて更新する(図略)。更新を完了したレプリカDB装置20は、本装置10に適用完了メッセージを送信する(図略)。
次に、コンパイラ層処理部110は実行計画を実行(Engine層、Pager層での処理)し、データベース部150のDBファイルをクエリの内容に応じて更新する(S908)。その後レプリカDB装置20からの適用完了メッセージの受信を待ち受け、適用完了メッセージ受信を確認する(S909)と、前述のステップS901に戻り、クライアント30からの新たなクエリの受信に備える。
一方、ステップS905において、コンパイラ層レプリケーション処理ではない、すなわちページャー層レプリケーション処理を実行すると決定されている場合(S905、No)、レプリケーション方法選択部160はページャー層レプリケーション実行部180にページャー層レプリケーション処理の実行を命令し、ページャー層レプリケーション実行部180はデータ送受信部140を経由してレプリカDB装置20に更新ページのデータを送信する(S907)。更新ページのデータはレプリケーションデータ管理部130に記憶されている情報に基づいて選択される。更新ページのデータを受信したレプリカDB装置20は、マスターデータベースとの同期を実現するように、そのレプリカDB装置20が有するレプリカデータベースのDBファイルに更新ページの内容を書き込み(図略)、データベースの更新を行う。更新を完了したレプリカDB装置20は、本装置10に適用完了メッセージを送信する(図略)。その後前述のステップS908に進む。
以上で、第2の実施の形態にかかる本装置10の動作例であるレプリケーション処理の説明を終了する。
[B.2.2.方法選択及びタイミング判定処理の例]
第2の実施の形態における方法選択及びタイミング判定処理(図13、S902参照)の内容について図14を参照しながら述べる。図14は第2の実施の形態における方法選択及びタイミング判定処理の例を示すフローチャートである。
方法選択及びタイミング判定処理において、まずコンパイラ層処理部110、より詳しくはレプリケーション方法選択部160は、ステップS901(図13参照)で受け付けたクエリの種類を判定する(S1001)。具体例をあげると、クエリの種類に応じた値を変数t’に格納する。例えば以下のような対応関係で変数t’に値を格納する:
INSERT:1
UPDATE or DELETE:2
COMMIT:3
SELECT:4
次に、レプリケーション方法選択部160は当該クエリがCOMMITであるか、又は従前のクエリと同じ種類であるか否かを判定する(S1002)。当該クエリがSELECTであるか、又は従前のクエリと同じ種類であると判定した場合(S1002、Yes)、レプリケーション方法選択部160はそのまま方法選択及びタイミング判定処理を終了する。レプリケーション実行タイミングでないからである。
一方、ステップS1002において当該クエリがSELECTでなく、且つ従前のクエリと同じ種類でないと判定した場合(S1002、No)、レプリケーション方法選択部160は、当該クエリの直前に受信したクエリの種類を判定する(S1003)。
当該クエリの直前に受信したクエリの種類がINSERTであると判定した場合(S1003,”1”)、レプリケーション方法選択部160は、ページャー層レプリケーション処理を選択する(S1004)。その後、直前のクエリの種類を示す変数tに当該クエリ(S1001で判定したもの)の種類を示す変数t’の値を代入し(S1006)、その後方法選択及びタイミング判定処理を終了する。レプリケーション実行タイミングであるからである。
当該クエリの直前に受信したクエリの種類がUPDATE又はDELETEであると判定した場合(S1003,”2”)、レプリケーション方法選択部160は、コンパイラ層レプリケーション処理を選択する(S1005)。その後、直前のクエリの種類を示す変数tに当該クエリ(S1001で判定したもの)の種類を示す変数t’の値を代入し(S1006)、その後方法選択及びタイミング判定処理を終了する。レプリケーション実行タイミングであるからである。
当該クエリの直前に受信したクエリの種類がCOMMIT又はSELECTであると判定した場合(S1003,”3”、”4”)、直前のクエリの種類を示す変数tに当該クエリ(S1001で判定したもの)の種類を示す変数t’の値を代入し(S1006)、その後方法選択及びタイミング判定処理を終了する。レプリケーション実行タイミングであるからである。
[レプリケーションのために追加で必要となる時間]
次に、本実施の形態におけるレプリケーションのために追加で必要となる時間について説明する。更新ページが多数である場合の例として、一連のクエリの例を図15に示す。このクエリに応じた同期処理における変更ページ数は100+1ページである。
従来手法ではこのクエリをページャー層レプリケーション処理により処理することになる。その場合のページャー層同期処理の場合の追加必要時間をt_P_needとすると
t_P_need = tpage× m + tsend × 2 =202.40
である
但し、上記式において
tpage:1ページ当たりの送受信時間=2.00
m:変更されたページ数=100+1
tsend:クエリ(COMMIT)の送信時間=0.20
とした。
一方、第2の実施の形態では、この一連のクエリのINSERT部分はページャー層レプリケーション処理により、UPDATE部分はコンパイラ層レプリケーション処理により同期処理する。この場合の追加必要時間をt_#2_need
t_#2_need= t_p_need+ t_c_need=2.20+47.20=49.40
t_p_need= tpage× m + tsend × 2 =2.20
但し、上記式において
tpage:1ページ当たりの送受信時間=2.00
m:変更されたページ数=0
tsend:クエリ(COMMIT)の送信時間=0.20
t_c_need= tsend× 5 + tdata + (tselect + tupdate) × n=47,20
但し、上記式において
tsend:クエリの送信時間=0.20
tselect:SELECT処理時間=0.10
tupdate:更新系クエリ処理時間=0.36
tdata:クエリ送信時間=0.20
n:クエリ数=100
である。
上述の例に示すように、第2の実施の形態は従来手法に比べて追加必要時間を大きく短縮することができる。
[B.3.具体例]
図16に、クライアント30から本装置10に送信される一連のクエリの例を示す。クエリはBEGINからCOMMITまでの9つのクエリからなり、図に示す1から9の順に送信されるものとする。
本装置10は4のINSERTから5のDELETEにクエリの種類が変わるタイミングで、2から4までの3つのINSERTについてページャー層レプリケーション処理を実行する。
次に、5のDELETEから8のUPDATEについて、9のCOMMITを受け付けたタイミングでコンパイラ層レプリケーション処理を実行する。
[C.第3の実施の形態]
次に第3の実施の形態を説明する。第2の実施の形態がクエリの種類に基づいて、コンパイラ層レプリケーション処理とページャー層レプリケーション処理のいずれかを選択してレプリケーションを実行するのに対して、第3の実施の形態はレコードの変更が連続的か離散的(非連続的)かによりコンパイラ層レプリケーション方法とページャー層レプリケーション処理のいずれかを選択してレプリケーションを実行する点で異なっている。
[C.1.装置の構成]
第3の実施の形態にかかる本装置10の構成は、第1の実施の形態、第2の実施の形態と同様なので、詳細な説明は省略する。
[C.2.装置の動作]
第3の実施の形態にかかる本装置10の動作は、基本的に第2の実施の形態のそれと同様であるが、方法選択及びタイミング判定処理において、レコードの変更が連続的か離散的かによりコンパイラ層レプリケーション処理とページャー層レプリケーション処理のいずれかを選択する処理を行う。その他の処理については第2の実施の形態と同様であるので、それらの説明は省略する。
[C.1.1.方法選択及びタイミング判定処理の例]
以下、第3の実施の形態における方法選択及びタイミング判定処理の例を説明する。第3の実施の形態における方法選択及びタイミング判定処理(S302)の内容について図14を参照しながら述べる。図14は第2の実施の形態における方法選択及びタイミング判定処理の例を示すフローチャートであるが、第3の実施の形態においても同様の処理の流れであるので図14を参照しながら説明する。
方法選択及びタイミング判定処理において、まずコンパイラ層処理部110、より詳しくはレプリケーション方法選択部160は、ステップS901(図13参照)で受け付けたクエリの種類を判定する(S1001)。具体例をあげると、クエリの種類に応じた値を変数t’に格納する。例えば以下のような対応関係で変数t’に値を格納する:
レコードの変更(アクセス)が連続的なクエリ:1
レコードの変更(アクセス)が非連続なクエリ:2
COMMIT:3
SELECT:4
ここでレコードの変更(アクセス)が連続的なクエリか、レコードの変更(アクセス)が非連続的なクエリであるかは、以下の基準で判定する。
1.そのクエリが全件更新、全件削除を行う場合、或いはそのクエリがrowidに対してのみ条件があってそれがrowidの範囲を指定する条件(例えば、演算子「<」,「>」を用いる場合)である場合は、レコードの変更(アクセス)が連続的なクエリと判定する。例えば
INSERT INTO ...
UPDATE ... WHERE rowid <100
のような場合、レコードの変更(アクセス)が連続的なクエリと判定する。
2.上記1以外のクエリ(COMMIT,SELECTを除く)はレコードの変更(アクセス)が非連続的なクエリであると判定する。例えば
DELETE ...
UPDATE ... WHERE name='aiueo'
という連続するクエリの場合、「UPDATE ... WHERE name='aiueo'」は非連続的なクエリであると判定する(「Delete ...」は連続的なクエリと判定する)。
なお、連続的か非連続的かを判定する基準は、以下のものとしてもよい。
(1)ページに対する変更量が一定以上だと、連続であると判定する。
(2)さらに、変更されたかどうかを記憶させておいて、その分布を参照して連続的か、非連続的かを判断するようにしても本実施の形態は成立する。
次に、レプリケーション方法選択部160は当該クエリがSELECTであるか、又は従前のクエリと同じ種類であるか否かを判定する(S1002)。当該クエリがSELECTであるか、又は従前のクエリと同じ種類であると判定した場合(S1002、Yes)、レプリケーション方法選択部160はそのまま方法選択及びタイミング判定処理を終了する。
一方、ステップS1002において当該クエリがSELECTでなく、且つ従前のクエリと同じ種類でないと判定した場合(S1002、No)、レプリケーション方法選択部160は、当該クエリの直前に受信したクエリの種類を判定する(S1003)。
ステップS1003において当該クエリの直前に受信したクエリの種類がレコードの変更(アクセス)が連続的なクエリであると判定した場合(S1003,”1”)、レプリケーション方法選択部160は、ページャー層レプリケーション処理を選択する(S1004)。その後、直前のクエリの種類を示す変数tに当該クエリ(S1001で判定したもの)の種類を示す変数t’の値を代入し(S1006)、その後方法選択及びタイミング判定処理を終了する。
ステップS1003において当該クエリの直前に受信したクエリの種類がレコードの変更(アクセス)が非連続なクエリであると判定した場合(S1003,”2”)、レプリケーション方法選択部160は、コンパイラ層レプリケーション処理を選択する(S1005)。その後、直前のクエリの種類を示す変数tに当該クエリ(S1001で判定したもの)の種類を示す変数t’の値を代入し(S1006)、その後方法選択及びタイミング判定処理を終了する。
ステップS1003において当該クエリの直前に受信したクエリの種類がCOMMIT又はSELECTであると判定した場合(S1003,”3”、”4”)、直前のクエリの種類を示す変数tに当該クエリ(S1001で判定したもの)の種類を示す変数t’の値を代入し(S1006)、その後方法選択及びタイミング判定処理を終了する。
以上で第3の実施の形態における方法選択及びタイミング判定処理の例の説明を終了する。
[D.変形例]
第2の実施の形態、第3の実施の形態では、レプリケーション方法が切り替わったタイミングで本装置10からレプリカDB装置20にデータを送信し、レプリケーションを実行する構成としたが、レプリケーション方法の切り替りを待たずにクエリ受信ごとに、選択したレプリケーション方法でレプリケーションを実行する構成としても、第2の実施の形態、第3の実施の形態は成立する。
[E.まとめ、その他]
以上、本発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加、組み合わせ等が可能である。
1・・・データベースシステム; 10・・・レプリケーション実行装置(本装置); 20・・・レプリカデータベース装置; 30・・・クライアント; 100・・・クエリ受信部; 110・・・コンパイラ層処理部; 120・・・ページャー層処理部; 130・・・レプリケーションデータ管理部; 160・・・レプリケーション方法選択部; 170・・・コンパイラ層レプリケーション実行部; 180・・・ページャー層レプリケーション実行部

Claims (3)

  1. クライアントから受信したクエリ、及びクエリを処理することによりマスターデータベースの変更されたページに関する情報であって、変更されたページ数を含む変更ページ情報を記憶する記憶手段と、
    クライアントから受信したクエリについて、コンパイラ層におけるクエリの処理を行うとともに、当該クエリを前記記憶手段に記憶させる第1処理手段と、
    クライアントから受信したクエリについて、ページャー層におけるクエリの処理を行うとともに、当該クエリを処理することによりマスターデータベースの変更されたページに関する情報である変更ページ情報を前記記憶手段に記憶させる第2処理手段と、
    前記記憶手段に記憶されたクエリに基づいて、マスターデータベースの変更をレプリカデータベースに反映させるクエリを複製データベース装置に送信し、前記クエリを複製データベース装置に実行させレプリカデータベースをマスターデータベースに同期させる第1実行手段と、
    前記記憶手段に記憶された変更ページ情報に基づいて、マスターデータベースの変更されたページのデータを複製データベース装置に送信し、複製データベース装置に変更されたページのデータをレプリカデータベースに反映させることにより、レプリカデータベースをマスターデータベースに同期させる第2実行手段と、
    前記変更されたページ数と所定の値との比較結果に基づいて、前記第1実行手段及び第2実行手段のどちらにレプリカデータベースをマスターデータベースに同期させるのかを判定する判定手段と
    を有するレプリケーション実行装置。
  2. クライアントから受信したクエリ、及びクエリを処理することによりマスターデータベースの変更されたページに関する情報である変更ページ情報を記憶する記憶手段と、
    クライアントから受信したクエリについて、コンパイラ層におけるクエリの処理を行うとともに、当該クエリを前記記憶手段に記憶させる第1処理手段と、
    クライアントから受信したクエリについて、ページャー層におけるクエリの処理を行うとともに、当該クエリを処理することによりマスターデータベースの変更されたページに関する情報である変更ページ情報を前記記憶手段に記憶させる第2処理手段と、
    前記記憶手段に記憶されたクエリに基づいて、マスターデータベースの変更をレプリカデータベースに反映させるクエリを複製データベース装置に送信し、前記クエリを複製データベース装置に実行させてレプリカデータベースをマスターデータベースに同期させる第1実行手段と、
    前記記憶手段に記憶された変更ページ情報に基づいて、マスターデータベースの変更されたページのデータを複製データベース装置に送信し、複製データベース装置に変更されたページのデータをレプリカデータベースに反映させることにより、レプリカデータベースをマスターデータベースに同期させる第2実行手段と、
    クライアントから受信した前記クエリの種類に基づいて、前記第1実行手段及び第2実行手段のどちらにレプリカデータベースをマスターデータベースに同期させるのかを判定する判定手段と
    を有するレプリケーション実行装置。
  3. クライアントから受信したクエリ、及びクエリを処理することによりマスターデータベースの変更されたページに関する情報である変更ページ情報を記憶する記憶手段と、
    クライアントから受信したクエリについて、コンパイラ層におけるクエリの処理を行うとともに、当該クエリを前記記憶手段に記憶させる第1処理手段と、
    クライアントから受信したクエリについて、ページャー層におけるクエリの処理を行うとともに、当該クエリを処理することによりマスターデータベースの変更されたページに関する情報である変更ページ情報を前記記憶手段に記憶させる第2処理手段と、
    前記記憶手段に記憶されたクエリに基づいて、マスターデータベースの変更をレプリカデータベースに反映させるクエリを複製データベース装置に送信し、前記クエリを複製データベース装置に実行させてレプリカデータベースをマスターデータベースに同期させる第1実行手段と、
    前記記憶手段に記憶された変更ページ情報に基づいて、マスターデータベースの変更されたページのデータを複製データベース装置に送信し、複製データベース装置に変更されたページのデータをレプリカデータベースに反映させることにより、レプリカデータベースをマスターデータベースに同期させる第2実行手段と、
    クライアントから受信した前記クエリによるレコードの変更が連続的であるか否かに基づいて、前記第1実行手段及び第2実行手段のどちらにレプリカデータベースをマスターデータベースに同期させるのかを判定する判定手段と
    を有するレプリケーション実行装置。
JP2012090973A 2012-04-12 2012-04-12 レプリケーション実行装置 Active JP6000608B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012090973A JP6000608B2 (ja) 2012-04-12 2012-04-12 レプリケーション実行装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012090973A JP6000608B2 (ja) 2012-04-12 2012-04-12 レプリケーション実行装置

Publications (2)

Publication Number Publication Date
JP2013218635A true JP2013218635A (ja) 2013-10-24
JP6000608B2 JP6000608B2 (ja) 2016-09-28

Family

ID=49590627

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012090973A Active JP6000608B2 (ja) 2012-04-12 2012-04-12 レプリケーション実行装置

Country Status (1)

Country Link
JP (1) JP6000608B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018101217A (ja) * 2016-12-19 2018-06-28 株式会社東芝 データベースシステムおよびデータ処理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784728A (ja) * 1993-09-20 1995-03-31 Fujitsu Ltd データ処理システムのバックアップ制御装置及び方法
JP2004295540A (ja) * 2003-03-27 2004-10-21 Hitachi Ltd トランザクション同期方法、データベースシステム及びデータベース装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784728A (ja) * 1993-09-20 1995-03-31 Fujitsu Ltd データ処理システムのバックアップ制御装置及び方法
JP2004295540A (ja) * 2003-03-27 2004-10-21 Hitachi Ltd トランザクション同期方法、データベースシステム及びデータベース装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018101217A (ja) * 2016-12-19 2018-06-28 株式会社東芝 データベースシステムおよびデータ処理方法

Also Published As

Publication number Publication date
JP6000608B2 (ja) 2016-09-28

Similar Documents

Publication Publication Date Title
US9934242B2 (en) Replication of data between mirrored data sites
JP6130890B2 (ja) データ同期化
KR102441997B1 (ko) 네트워크에서 메타데이터의 동기화를 제어하는 장치 및 그 방법
CN103207867A (zh) 处理数据块的方法、发起恢复操作的方法和节点
CN106605217B (zh) 用于将应用从一个站点移动到另一站点的方法和系统
AU2019381980A1 (en) Taking snapshots of blockchain data
JP4136615B2 (ja) データベースシステム及びデータベースのアクセス方法
CN105593839B (zh) 分布式灾难恢复文件同步服务器系统
JP2010277467A (ja) 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム
EP3769219A2 (en) Taking snapshots of blockchain data
JP4998010B2 (ja) データベースシステム管理、データベースシステム、プログラム及び処理装置
JP6461101B2 (ja) データベースシステム、情報処理装置、方法およびプログラム
JP6000608B2 (ja) レプリケーション実行装置
CN111522688B (zh) 分布式系统的数据备份方法及装置
JP5685213B2 (ja) 差分レプリケーションシステム、マスターデータベース装置、及びスレーブデータベース装置
KR101748913B1 (ko) 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템
JP2019509579A (ja) 情報処理システム
KR101298852B1 (ko) 파일 복원 방법 및 이를 위한 시스템
CN113032477A (zh) 基于gtid的长距离数据同步方法、装置及计算设备
JP6043687B2 (ja) サーバ/クライアントシステム
CN118368296B (zh) 一种跨数据中心的应用数据实时同步方法、装置和系统
JP2013250948A (ja) ファイル格納システム及びファイル格納方法
JP5449471B2 (ja) 共有データに対する更新処理の同期処理方法、データ共有システムおよびデータ共有プログラム
JP6036690B2 (ja) 分散実行システム及び分散プログラム実行方法
JP2009048443A (ja) 情報更新方法及び情報更新システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151208

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160831

R151 Written notification of patent or utility model registration

Ref document number: 6000608

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151