(57)【要約】  データベースマネジメントシステム（ＤＢＭＳ）におけるデータ複製方法を開示する。データ複製方法は、マスターデータベースのトランザクションログを介して複製ログを生成して配布システムに送信するステップと、複製ログを配布するスレーブホストを判断して該当するスレーブホストに複製ログを配布するステップと、スレーブデータベースに複製ログを反映するステップとを含む。【選択図】図２
2010527087.tif 000002
【特許請求の範囲】
【請求項１】
データベースマネジメントシステム（ＤＢＭＳ）におけるデータ複製方法であって、
マスターデータベースのトランザクションログを介して複製ログを生成して配布システムに送信するステップと、
前記複製ログの配布先のスレーブホストを判断して該当する前記スレーブホストに前記複製ログを配布するステップと、
前記複製ログをスレーブデータベースに反映するステップと
を含むことを特徴とするデータ複製方法。
【請求項２】
前記複製ログは、前記マスターデータベースの変更箇所を含み、
前記複製ログの生成は、
マスターホストに含まれる複製サーバで前記トランザクションログを分析して前記変更箇所からなる前記複製ログを生成するステップと、
前記複製ログを前記複製サーバから前記配布システムに含まれる複製エージェントに送信するステップと
を含むことを特徴とする請求項１に記載のデータ複製方法。
【請求項３】
前記複製サーバは、１つ以上の複製エージェントから受信する前記トランザクションログに対する送信リクエストを処理する処理装置であり、前記送信リクエストを処理する第１スレッドおよび前記トランザクションログを前記マスターデータベースを介して確認する第２スレッドを含むことを特徴とする請求項２に記載のデータ複製方法。
【請求項４】
前記複製サーバは、トランザクション単位で複数の複製ログが生成される場合、複数のバッファを用いて前記複製ログを一時的に格納し、一時的に格納した複製ログを該当する配布システムの複製エージェントに送信することを特徴とする請求項２に記載のデータ複製方法。
【請求項５】
前記配布システムは配布データベースおよび複製エージェントを含み、
前記スレーブホストにおける前記判断は、
前記複製エージェントで前記複製ログを受信して一時的に格納するステップと、
前記複製エージェントで前記配布データベースを用いて前記複製ログを配布する前記スレーブホストを確認するステップと、
前記複製エージェントから前記複製ログを該当する前記スレーブホストに送信するステップと
を含むことを特徴とする請求項１に記載のデータ複製方法。
【請求項６】
前記配布データベースは、マスターホストおよびスレーブホストの配置情報を含むことを特徴とする請求項５に記載のデータ複製方法。
【請求項７】
前記複製エージェントは、前記複製ログを複数受信する場合、前記複数受信した複製ログをそれぞれ一時的に格納した後に該当するスレーブホストに配布することを特徴とする請求項５に記載のデータ複製方法。
【請求項８】
前記スレーブホストにおける前記判断は、
前記複製エージェントで前記複製ログに対する追跡ログを生成するステップをさらに含み、
前記追跡ログは、前記スレーブホストに含まれるスレーブデータベース別に最後に適用された前記複製ログに対するログ順番号を含むことを特徴とする請求項５に記載のデータ複製方法。
【請求項９】
前記スレーブホストにおける前記判断は、
前記複製エージェントで前記複製ログに対するエラーログを生成するステップをさらに含み、
前記エラーログは、前記複製エージェントの複製実行中に発生するすべてのエラーを記録することを特徴とする請求項５に記載のデータ複製方法。
【請求項１０】
前記トランザクションログは、前記マスターデータベースに発生したすべての変更箇所についてのログであり、
更新作業を中止するために以前のデータイメージを保管するアンドゥログと、
更新作業を再実行するために更新以後のデータイメージを保管するリドゥログ
とを含み、
前記複製ログは、前記リドゥログを含むことを特徴とする請求項１に記載のデータ複製方法。
【請求項１１】
前記マスターデータベースは、複製の対象となる複製元データベースであり、すべてのデータベース操作が許容され、
前記スレーブデータベースは、前記複製の複製先データベースであり、前記マスターデータベースの変更箇所を反映することを特徴とする請求項１に記載のデータ複製方法。
【請求項１２】
前記マスターデータベースのスキーマに対する変更箇所を前記配布システムを介して前記スレーブデータベースに反映するステップと、
前記マスターデータベースのインデックス、トリガ、またはユーザアカウントのうちの少なくとも１つについての変更箇所を前記配布システムに含まれる配布データベースに反映するステップと
をさらに含み、
前記配布システムは、前記マスターホストに障害が発生したとき、他のマスターホストとして動作するスレーブホストに前記インデックス、前記トリガ、または前記ユーザアカウントのうちの少なくとも１つを反映させることを特徴とする請求項１に記載のデータ複製方法。
【請求項１３】
前記マスターデータベースを含むマスターホストおよび前記スレーブホストは、ユーザの要求に応じてＮ対Ｍの比率で構成され、
前記マスターホストおよび前記スレーブホストの間に１つ以上の前記配布システムを介して非同期複製が実行されることを特徴とする請求項１に記載のデータ複製方法。
【請求項１４】
請求項１から１３のいずれかに記載のデータ複製方法を実行させるためのプログラムを記録したことを特徴とするコンピュータで読み込み可能な記録媒体。
【請求項１５】
データベースマネジメントシステム（ＤＢＭＳ）におけるデータ複製システムであって、
マスターデータベースのトランザクションログを介して複製ログを生成して配布システムに送信するマスターホストと、
前記複製ログの配布先のスレーブホストを判断して該当する前記スレーブホストに前記複製ログを配布する前記配布システムと、
前記複製ログを受信してスレーブデータベースに反映する前記スレーブホストと
を備えることを特徴とするデータ複製システム。
【請求項１６】
前記複製ログは、前記マスターデータベースの変更箇所を含み、
前記マスターホストは、
複製対象となる複製元データベースであるマスターデータベースと、
前記マスターデータベースの前記トランザクションログを分析して前記変更箇所からなる前記複製ログを生成し、前記配布システムに送信する複製サーバと
を含むことを特徴とする請求項１５に記載のデータ複製システム
【請求項１７】
前記複製サーバは、１つ以上の複製エージェントから受信される前記トランザクションログに対する送信リクエストを処理することを特徴とする請求項１６に記載のデータ複製システム。
【請求項１８】
前記配布システムは、
マスターホストおよびスレーブホストの配置情報を含む配布データベースと、
前記複製ログを用いてデータの複製を実行する複製エージェントと
を含むことを特徴とする請求項１５に記載のデータ複製システム。
【請求項１９】
前記複製エージェントは、
前記マスターホストから受信された前記複製ログを受信して一時的に格納する格納部と、
前記配布データベースを用いて前記複製ログを配布するスレーブホストを確認するスレーブホスト確認部と、
前記複製ログを該当する前記スレーブホストに送信する送信部と
を含むことを特徴とする請求項１８に記載のデータ複製システム。
【請求項２０】
前記マスターホストは、
前記マスターデータベースのスキーマに対する変更箇所を前記配布システムを介して前記スレーブデータベースに反映する第１変更箇所反映部と、
前記マスターデータベースのインデックス、トリガ、またはユーザアカウントのうちの少なくとも１つに対する変更箇所を前記配布システムが含む配布データベースに反映する第２変更箇所反映部と
をさらに含むことを特徴とする請求項１５に記載のデータ複製システム。
【請求項２１】
前記トランザクションログは、前記マスターデータベースに発生したすべての変更箇所についてのログであり、
更新作業を中止するために以前のデータイメージを保管するアンドゥログと、
更新作業を再実行するために更新以後のデータイメージを保管するリドゥログ
とを含み、
前記複製ログは、前記リドゥログを含むことを特徴とする請求項１５に記載のデータ複製システム。
【請求項２２】
前記マスターホストおよび前記スレーブホストは、ユーザの要求に応じてＮ対Ｍの比率で構成され、
前記マスターホストおよび前記スレーブホストの間に１つ以上の前記配布システムを介して非同期複製が実行されることを特徴とする請求項１５に記載のデータ複製システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースマネジメントシステム（ＤＢＭＳ、Ｄａｔａｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）におけるデータ複製方法およびシステムに関する。
【背景技術】
【０００２】
データベース複製（データベースレプリケーション、ｄａｔａｂａｓｅ  ｒｅｐｌｉｃａｔｉｏｎ）は、１つのデータベースに格納されたオブジェクトを物理的に分離した他のデータベースにコピーし、２つ以上のデータベースサーバで使用できるようにする分散データベース技術の１つである。この複製技術は、同じオブジェクトを用いるアプリケーションプログラムへのアクセスを複数のデータベースサーバに分散させることにより、性能を高めたり、複製されたデータベースサーバを他のアプリケーションで使用できるようにし、それにより同時に異なる運用要件を満たすことができる。また、運用中のデータベースサーバに障害が発生した場合、複製データベースサーバに迅速に切り替えることができ、システムの信頼性を著しく向上させることができる。
【０００３】
上述した複製技術は、１つのデータベースサーバだけではアプリケーションプログラムが要求する性能を満たし難いときに活用することもできる。例えば、読み込み操作を同じデータを有する複数のデータベースサーバに分散させることにより、システム全体としての性能を向上させることができる。
【０００４】
図１は、従来技術における負荷分散用複製システムの構造を説明するための一例である。一般的なデータ複製の場合、マスターデータベース（ｍａｓｔｅｒ  ｄａｔａｂａｓｅ）は読み込み／書き込み操作を許可するが、スレーブデータベース（ｓｌａｖｅ  ｄａｔａｂａｓｅ）は読み込み操作のみを許可するため、データ複製を用いた性能向上効果は、書き込み操作については限定的である一方、読み込み操作については性能が劇的に向上する。したがって、ブログ、掲示板、ニュースその他のインターネットサービスで使われる多くのアプリケーションが、上述の一般的なデータ複製に含まれうる。すなわち、ウェブサービス１０１において、データは、書き込み操作によってマスターデータベース１０２に格納され、マスターデータベース１０２の変更箇所は、スレーブデータベース１０３〜１０５に複製技術によって反映される。また、データは、読み込み操作によって提供されるが、このとき、書き込み操作と比べて読み込み操作の発生頻度が極めて高いというウェブサービス１０１の特性を考慮して、データをスレーブデータベース１０３〜１０５を介して提供することができる。
【０００５】
このように、複製技術を用いれば、データベースに加重される負荷を分散させることができるだけでなく、マスターデータベースを含むマスターホスト（ｍａｓｔｅｒ  ｈｏｓｔ）に障害が発生した場合に、スレーブホスト（ｓｌａｖｅ  ｈｏｓｔ）のうちの１つをマスターホストに切り替えることにより、システムの信頼性を向上することができる。
【０００６】
しかしながら、従来の複製技術には、スキーマの変更がスレーブデータベースに複製されず、スレーブデータベースを介した変更詳細の自動抽出が不可能であり、マスターホスト対スレーブホストのＮ対Ｍの比率のような複製環境を、ユーザが所望する構造で構成することができないといったいくつかの問題点がある。また、データベース単位でしか複製対象を指定することができないという問題点があり、複製遅延時間を測定することができず、オリジナルと複製との間のデータ同期化状態も確認することができないという問題点がある。また、複製進行状況を点検してマスタートランザクション保管ログ（ｍａｓｔｅｒ  ｔｒａｎｓａｃｔｉｏｎ  ａｒｃｈｉｖａｌ  ｌｏｇ）を確実に削除する、ということができない問題点もある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、上述したような従来技術の問題点を解決するために、データベースマネジメントシステム（ＤＢＭＳ）におけるデータ複製方法およびシステムに関する新しい技術を提供する。
【課題を解決するための手段】
【０００８】
本発明は、マスターデータベース、スレーブデータベース、および配布システムを介してデータベースに加重される負荷を分散させることができ、マスターデータベースを含むマスターホストに障害が発生した場合に、スレーブホストのうちの１つをマスターホストに切り替えることで障害に効果的に対応することができ、また、同時に更新されたデータについて定期的な収集が必要な場合であっても、スレーブデータベースに対する変更内容のみを迅速に収集することができるデータ複製方法およびシステムを提供する。
【０００９】
また、本発明は、マスターホストのマスターデータベースでスキーマが変更される場合、この変更をスレーブホストのスレーブデータベースに複製することができ、マスターホストとスレーブホストとのＮ対Ｍの比率のような複製環境を、ユーザが所望する構造で構成することが可能なデータ複製方法およびシステムを提供する。
【００１０】
本発明の一実施形態に係るデータベースマネジメントシステム（ＤＢＭＳ）におけるデータ複製方法は、マスターホストでマスターデータベースのトランザクションログを介して複製ログを生成し、生成した複製ログを配布システム（ｄｉｓｔｒｉｂｕｔｏｒ）に送信するステップと、前記配布システムで前記複製ログを配布するスレーブホストを判断し、該当するスレーブホストに前記複製ログを配布するステップと、複製ログをスレーブデータベースに反映するステップとを含む。
【００１１】
この場合、前記複製ログは、前記マスターデータベースの変更箇所を含むようにしてもよく、複製ログを生成するステップには、前記マスターホストが含む複製サーバ（ｒｅｐｌｉｃａｔｉｏｎ  ｓｅｒｖｅｒ）で前記トランザクションログを分析して前記変更箇所からなる前記複製ログを生成するステップと、前記複製ログを前記複製サーバから前記配布システムに含まれる複製エージェント（ｒｅｐｌｉｃａｔｉｏｎ  ａｇｅｎｔ）へと送信するステップとを含んでもよい。
【００１２】
また、前記複製サーバは、１つ以上の複製エージェントから受信する前記トランザクションログの送信リクエストを処理する処理装置として動作してもよく、前記送信リクエストを処理する第１スレッド（ｔｈｒｅａｄ）およびトランザクションログを前記マスターデータベースを介して確認する第２スレッドを含んでもよい。
【００１３】
また、前記複製サーバは、複数の複製ログがトランザクション単位で生成されたときに、複数のバッファを用いて複製ログを一時的に格納し、一時的に格納した複製ログを該当配布システムの複製エージェントへと送信してもよい。
【００１４】
また、前記データ複製方法は、前記マスターデータベースのスキーマに対する変更箇所を前記配布システムを介して前記スレーブデータベースに反映するステップと、前記マスターデータベースのインデックス、トリガ、またはユーザアカウントのうちの少なくとも１つに対する変更箇所を前記配布システムが含む配布データベースに反映するステップとをさらに含んでもよい。この場合に、前記配布システムは、前記マスターホストに障害が発生したときにはマスターホストとして動作するスレーブホストに前記インデックス、前記トリガ、または前記ユーザアカウントのうちの少なくとも１つを反映させてもよい。
【００１５】
本発明の他の実施形態において、ＤＢＭＳにおけるデータ複製システムは、マスターデータベースのトランザクションログを介して複製ログを生成して配布システムに送信するマスターホストと、前記複製ログを配布するスレーブホストを判断して該当するスレーブホストに前記複製ログを配布する配布システムと、前記複製ログを受信してスレーブデータベースに反映するスレーブホストとを備える。
【００１６】
ここで、前記複製ログは、前記マスターデータベースの変更箇所を含んでもよく、前記マスターホストは、複製対象となる複製元データベースであるマスターデータベースおよび前記マスターデータベースの前記トランザクションログを分析して前記変更箇所で構成された前記複製ログを生成して前記配布システムに送信する複製サーバ（ｒｅｐｌｉｃａｔｉｏｎ  ｓｅｒｖｅｒ）を含んでもよい。
【発明の効果】
【００１７】
本発明によれば、マスターデータベース、スレーブデータベース、および配布システムを介してデータベースに加重される負荷を分散させることができ、マスターデータベースを含むマスターホストに障害が発生する場合にも、スレーブホストのうちの１つをマスターホストとして交代することで障害に効果的に対応することができ、同時に更新されたデータに対する定期的な収集が必要な場合であっても、スレーブデータベースに対する変更内容のみを迅速に収集することができる。
【００１８】
本発明によれば、マスターホストのマスターデータベースでスキーマが変更される場合、その変更をスレーブホストのスレーブデータベースに複製することができ、マスターホストとスレーブホストとのＮ対Ｍの比率のような複製環境を、ユーザが所望する構造で構成することができる。
【図面の簡単な説明】
【００１９】
【図１】従来技術における負荷分散用複製システムの構造を説明するための一例である。
【図２】本発明に係るデータ複製システムの概略図である。
【図３】本発明の一実施形態に係るＤＢＭＳにおけるデータ複製方法を示すフローチャートである。
【図４】本発明の一実施形態に係るマスターホストで複製ログを生成して配布システムに送信する方法を説明するためのフローチャートである。
【図５】本発明の一実施形態に係るトランザクションログおよび複製ログを説明するための一例である。
【図６】本発明の一実施形態に係る配布システムが複製ログを配布する方法を説明するためのフローチャートである。
【図７】本発明に係る各データベースオブジェクトの複製方法を説明するための一例である。
【図８】本発明の他の実施形態に係るデータ複製システムの内部構成を説明するためのブロック図である。
【図９】本発明に係る複製サーバおよび複製エージェントの構造を説明するための一例である。
【図１０】本発明に係る複製サーバおよび複製エージェントの構造を説明するための他の例である。
【発明を実施するための形態】
【００２０】
以下、添付の図面に記載された例を参照しながら、本発明に係る実施形態を詳細に説明する。明細書中、同じ参照符号は同じ部材を示す。実施形態は図面を参照しつつ本発明の理解のために以下で説明される。
【００２１】
図２は、本発明に係るデータ複製システム２００を概括的に説明するための図である。
【００２２】
データ複製システム２００は、マスターホスト２０１と、配布システム２０２と、スレーブホスト２０３とを含む。このとき、マスターホスト２０１、配布システム２０２、およびスレーブホスト２０３は、マスターホスト２０１とスレーブホスト２０３の比率がＮ対Ｍといった、ユーザが所望する構造で構成されるようにするため、それぞれを複数のホストで構成してもよいが、図２では、データ複製システム２００を概括的に説明するために、それぞれが１つのホストで構成された場合を説明する。
【００２３】
マスターホスト２０１に含まれるマスターデータベース２０４は、複製対象となる複製元データベースであり、読み込みや書き込みといったさまざまな操作を許可してもよい。一方、スレーブホスト２０３に含まれるスレーブデータベース２０５は、複製元データベースの複製先となるデータベースであり、読み込み操作のみを許可することができる。これは、書き込み操作、すなわち、データのアップロードよりも、読み込み操作、すなわち、データのダウンロードがより頻繁に発生しやすいという特性を有するウェブサービスなどにおいて、読み込み操作に対する負荷を分散させるためである。従って、複数のスレーブデータベースで読み込み操作を分散して実行することができる。
【００２４】
まず、複製が設定されると、マスターホスト２０１に含まれる複製サーバ２０６は、複製と関連する情報のみで構成された複製ログ２０８を生成するためにマスターデータベース２０４のトランザクションログ２０７を読み込み、生成された複製ログを配布システム２０２に含まれる複製エージェント２０９に送信する。このとき、配布システム２０２は、マスターホスト２０１またはスレーブホスト２０３内に設定することもでき、可用性を十分に保証するために別のホストに設定することもできる。
【００２５】
複製エージェント２０９は、配布システム２０２に含まれる配布データベース２１０を読み込み、マスターホスト２０１、より詳しくは複製サーバ２０６から受信した複製ログ２０８をどのスレーブホスト２０３にどのように複製するかを判断する。このとき、配布データベース２１０は、複製構成に関するすべてのメタデータを管理するデータベースとして作動してもよく、複製エージェント２０９がマスターホスト２０１とスレーブホスト２０３の配置情報を含むことを可能にする。
【００２６】
すなわち、複製エージェント２０９は、複製サーバ２０６から受信した複製ログ２０８を、バッファのようなストレージデバイスに一時的に格納し、配布データベース２１０に指定されたスレーブホスト２０３に含まれるスレーブデータベース２０５に複製ログ２０８を配布してもよく、これにより、複製ログ２０８、すなわち、マスターデータベース２０４の変更箇所がスレーブデータベース２０５に反映されるようにできる。この過程において、複製エージェント２０９は、各スレーブデータベースにおけるデータの反映状態を追跡するために追跡ログ２１１を管理し、複製ログ２０８の配布中に発生したすべてのエラーをエラーログ２１２に格納する。
【００２７】
このように、データ複製システム２００は、マスターデータベース２０４の変更箇所を各スレーブデータベース２０５に複製することができる。このような複製については、図３〜１０を参照しながらより詳細に説明する。
【００２８】
図３は、本発明の一実施形態に係るＤＢＭＳにおけるデータ複製方法を示すフローチャートである。
【００２９】
ステップＳ３０１で、マスターホストは、マスターデータベースのトランザクションログを介して複製ログを生成し、配布システムに送信する。このとき、複製ログは、マスターデータベースの変更箇所を含んでもよく、マスターホストは、複製ログ、すなわち変更箇所をマスターホストに含まれる複製サーバを介して配布システムに送信してもよい。また、マスターデータベースは、複製の対象となる複製元データベースであり、すべてのデータベース操作を許可することができる。
【００３０】
このような、複製ログを配布システムに送信するステップＳ３０１については、図４を参照しながらより詳細に説明する。
【００３１】
データを複製する技法としては、（１）マスターデータベースのデータを更新する作業と（２）スレーブデータベースのデータを同じように更新する作業とを１つのトランザクションとして処理してデータの整合性を保証する同期複製（ｓｙｎｃｈｒｏｎｏｕｓ  ｒｅｐｌｉｃａｔｉｏｎ）と、上記の（１）と（２）の作業を互いに分離して実行する非同期複製（ａｓｙｎｃｈｒｏｎｏｕｓ  ｒｅｐｌｉｃａｔｉｏｎ）とがある。
【００３２】
このとき、同期複製は、１つのシステムに発生した障害がシステム全体へと影響しうるという問題があり、可用性の側面において有用性が低下する恐れがある。例えば、スレーブシステムの障害によってマスターシステムまでサービス運営が中断する可能性が発生する。一方、非同期複製の場合、マスターデータベースのトランザクションログを活用して非同期でスレーブデータベースに変更箇所を反映することにより、複製で構成されたサーバ間の従属性を最小化し、たとえスレーブシステムに障害が発生してもマスターシステムには影響を与えない。
【００３３】
すなわち、本発明に係るデータ複製方法およびシステムでは、トランザクションログを用いた非同期複製方法によって複製機能を提供することにより、データの整合性の保証及び最大限の可用性を確保することができ、この目的のためにマスターホストとスレーブホストとの間の中継システムとして配布システムを用いてもよい。
【００３４】
また、このような非同期複製のためのトランザクションログは、マスターデータベースに発生したすべての変更箇所を包含する、１つ以上のトランザクションで構成されてもよく、更新作業を中止するために以前のデータイメージを保管するアンドゥ（ｕｎｄｏ）ログおよび更新以後のデータイメージを保管するリドゥ（ｒｅｄｏ）ログを含んでもよい。複製ログはリドゥログのみを含んでもよい。より詳細には、複製ログは、複数のトランザクションを順に処理するために、リドゥログで分類される１つのトランザクションを含んでもよい。トランザクションログおよび複製ログについては、図５を参照しながらより詳細に説明する。
【００３５】
ステップＳ３０２で、配布システムは、複製ログを配布するスレーブホストを判断し、当該スレーブホストに複製ログを配布する。このとき、配布システムは、複製ログを配布するスレーブホストを判断するために、配布データベースおよび複製エージェントを含むことができる。これにより、上述した非同期複製における整合性および可用性が保証されうる。上述の配布データベースおよび複製エージェントを介して複製ログを配布するステップＳ３０２については、図６を参照しながらより詳細に説明する。
【００３６】
ステップＳ３０３で、スレーブホストは、複製ログを受信してスレーブデータベースに反映する。このとき、当該スレーブデータベースは、複製先となるデータベースであり、マスターデータベースの変更箇所を反映することができる。このように、マスターデータベースとスレーブデータベースは互いに同期化され、マスターデータベースを介してデータのアップロードを行い、スレーブデータベースを介してダウンロードを行う、というように作業を分散して実行してもよく、これにより読み込み操作に対する負荷を減らすことができる。
【００３７】
ステップＳ３０４で、データ複製システムは、マスターデータベースのスキーマに対する変更箇所を配布システムを介してスレーブデータベースに反映する。スレーブデータベースは、柔軟性のために、マスターデータベースとは独立したスキーマを定義することができる。すなわち、マスターデータベースから複製されたクラス以外の別個のクラス、インデックス、トリガ、またはユーザアカウントのうちの少なくとも１つを生成することができ、追加で生成されたクラスに対しては書き込み操作も可能となる。例えば、マスターデータベースからクラス１およびクラス２が複製される一方で、スレーブデータベースに独立にクラス３およびクラス４を定義して運用してもよい。
【００３８】
ステップＳ３０５で、データ複製システムは、マスターデータベースのインデックス、トリガ、またはユーザアカウントのうちの少なくとも１つに対する変更箇所を、配布システムに含まれる配布データベースに反映する。この場合に、配布システムは、マスターホストに障害が発生したとき、マスターホストに切り替えて動作するスレーブホストへとインデックス、トリガ、またはユーザアカウントのうちの少なくとも１つを反映させることができる。このように、スキーマ、インデックス、トリガ、またはユーザアカウントに対するスレーブデータベースへの反映については、図７を参照しながらより詳細に説明する。
【００３９】
上述のマスターホストおよびスレーブホストは、ユーザの要求に応じてＮ対Ｍの比率で構成することができ、マスターホストおよびスレーブホストの間に設けた１つ以上の配布システムを介して非同期複製を実行することができる。マスターホストおよびスレーブホストの構成については、図９および１０を参照しながらより詳細に説明する。
【００４０】
図４は、本発明の一実施形態に係るマスターホストで複製ログを生成して配布システムに送信する方法を説明するためのフローチャートである。図４に示すように、ステップＳ４０１およびステップＳ４０２は、図３におけるステップＳ３０１に含まれてもよい。
【００４１】
ステップＳ４０１で、マスターホストに含まれる複製サーバは、トランザクションログを分析して変更箇所で構成された複製ログを生成する。このとき、複製サーバは、１つ以上の複製エージェントから受信したトランザクションログの送信リクエストを処理する処理装置として動作してもよく、送信リクエストを処理する第１スレッド（ｔｈｒｅａｄ）およびトランザクションログをマスターデータベースを介して確認する第２スレッドを含むことができる。
【００４２】
また、複製サーバは、複数の複製ログがトランザクション単位で生成されたときに、複数のバッファを用いて複製ログを一時的に格納し、一時的に格納した複製ログを該当配布システムの複製エージェントへと送信してもよい。すなわち、複製ログは、１つのトランザクション、すなわちトランザクション単位を含んでもよく、複製サーバは、複数のトランザクションにおける順序を維持して複製処理を行ってもよい。複数のバッファを用いたトランザクションについては、図５を参照しながら詳細に説明する。
【００４３】
ここで、複製エージェントは、実際に複製を実行するプロセスであり、配布システムに含まれる。複製サーバは、マスターホストのマスターデータベースのトランザクションログについての送信リクエストに応じてトランザクションログを確認してもよく、これにより複製ログを生成してもよい。
【００４４】
ステップＳ４０２で、複製サーバは、複製ログを配布システムに含まれる複製エージェントに送信する。当該複製ログはマスターデータベースの変更箇所を含み、複製サーバは複製ログを複製エージェントに送信してもよく、これにより複製エージェントがマスターデータベースとスレーブデータベース間でデータの複製を実行することができる。
【００４５】
図５は、本発明の一実施形態に係るトランザクションログおよび複製ログを説明するための一例である。
【００４６】
トランザクションログは、データベースサーバのすべての変更箇所、すなわち、更新作業を記録するファイルである。マスターホストは、同時に複数のトランザクションを処理する一方で、障害が起きたときでもアンドゥおよびリドゥログを作成してもよい。このとき、上述したように、アンドゥログは、更新作業を中止するために以前のデータイメージを保管するログであり、リドゥログは、更新作業を再実行するために更新以後のデータイメージを保管するログである。マスターデータベースでは、同時に複数のトランザクションが活動状態（ａｃｔｉｖｅ  ｓｔａｔｅ）にある。例えば、図５に示すように、トランザクション「Ｔ１」〜「Ｔ３」に対して、図面符号５０１〜５０９のような更新作業が発生することがある。ここで、データ複製システムは、更新作業を記録したトランザクションログを読み取ってリドゥログのみを抽出し、トランザクションがコミット（ｃｏｍｍｉｔ）した順序と同じ順序でスレーブデータベースに反映することができる。
【００４７】
ここで、コミットとは、分散トランザクション処理（ＤＴＰ）で１つのトランザクションに含まれる操作がすべて実行され、これによるデータベースの更新内容が作業領域、例えば、記憶装置に記録され、トランザクションの適用が完了したと判断される時点でその完了を要求する動作を表す。また、このような時点をコミット時点という。コミットが実行されると、更新データが実際に磁気ディスクのような記憶装置に記録され、関連したロックが解除され、更新された内容へと他のトランザクションからアクセスすることができる。
【００４８】
このとき、アボート（ａｂｏｒｔ、中止）されたトランザクションは、スレーブデータベースに反映されない。すなわち、上述した例において、トランザクション「Ｔ１」および「Ｔ３」のみがスレーブデータベースに反映され、図面符号５０８のように、アボートされたトランザクションであるトランザクション「Ｔ２」はスレーブデータベースに反映されない。
【００４９】
上述の状況において、同時に複数のクライアントがトランザクションをリクエストし、マスターホストで処理したが、トランザクションの順序を保証するために、１つのスレッドは、トランザクションを適用する作業を、スレーブデータベースごとに順次に反映する。このとき、マスターホストに含まれる複製サーバおよび配布システムに含まれる複製エージェントは、バッファを介して複数のトランザクションを一時的に格納し、トランザクションの順序を維持しながら複製を実行することができる。
【００５０】
図６は、本発明の一実施形態に係る配布システムが複製ログを配布する方法を説明するためのフローチャートである。ここで、図６に示すように、ステップＳ６０１〜ステップＳ６０５は、図３のステップＳ３０２に含まれて実行されてもよい。このとき、配布システムは、配布データベースおよび複製エージェントを含んでもよい。
【００５１】
ステップＳ６０１で、複製エージェントは複製ログを受信し、受信した複製ログを一時的に格納する。このとき、上述したように、複製エージェントは、複製ログが複数受信される場合、複製ログをそれぞれバッファに格納した後に該当するスレーブホストに配布することができる。
【００５２】
ステップＳ６０２で、複製エージェントは、配布データベースを用いて複製ログを配布するスレーブホストを確認する。このとき、配布データベースは、マスターホストおよびスレーブホストの配置情報を含んでもよい。
【００５３】
ステップＳ６０３で、複製エージェントは、複製エージェントから複製ログを該当するスレーブホストに送信する。すなわち、複製エージェントは、複製ログを一時的にバッファに格納し、複製ログの送信先のスレーブホストのスレーブデータベースを確認し、それからスレーブホストに複製ログを送信してもよい。
【００５４】
ステップＳ６０４で、複製エージェントは、複製ログに対する追跡ログを生成する。このとき、追跡ログは、各スレーブホストに含まれるそれぞれのスレーブデータベースごとに最終的に適用された複製ログに対するログ順番号（ｌｏｇ  ｓｅｒｉａｌ  ｎｕｍｂｅｒ）を含むことができる。
【００５５】
ステップＳ６０５で、複製エージェントは、複製ログについてエラーログを生成する。ここで、エラーログは、複製エージェントの複製実行中に発生するすべてのエラーを記録することができる。
【００５６】
図７は、本発明に係る各データベースオブジェクトの複製方法を説明するための一例である。ここで、図７に示すように、マスターホスト７０１のマスターデータベースに含まれるステート情報とスキーマ情報についての変更箇所は、配布システム７０２を介してリアルタイムでスレーブホスト７０３に反映される。インデックス、トリガ、またはユーザアカウントの場合には、スレーブデータベースの独立性のために、配布システム７０２に含まれる配布データベースにのみ変更箇所が記録されてスレーブデータベースには記録されない構造である。このとき、インスタンスは、それぞれのトランザクションを意味することができる。
【００５７】
このような構造において、マスターデータベースシステムに障害が発生してスレーブデータベースをマスターデータベースに切り替える場合、配布データベースに最後に記録されたインデックス、トリガ、またはユーザアカウントが自動でスレーブデータベースに反映されてもよい。このとき、複製対象オブジェクトを識別するために主キー（ｐｒｉｍａｒｙ  ｋｅｙ）を用いる場合、複製がなされるデータは、マスターデータベースが含むテーブルのうちで主キーが設定されたテーブルのみを含むことができる。
【００５８】
図８は、本発明の他の実施形態に係るデータ複製システムの内部構成を説明するためのブロック図である。図８に示すように、データ複製システム８００は、マスターホスト８１０と、配布システム８２０と、スレーブホスト８３０とを含んでもよい。
【００５９】
マスターホスト８１０は、マスターデータベース８１１および複製サーバ８１２を含んでもよく、マスターデータベース８１１のトランザクションログを介して複製ログを生成して配布システムに送信してもよい。このとき、マスターデータベース８１１は、複製対象となる複製元データベースとすることができ、複製サーバ８１２は、マスターデータベース８１１のトランザクションログを分析して変更箇所で構成された複製ログを生成し、この複製ログを配布システムに送信することができる。
【００６０】
ここで、トランザクションログは、複数のトランザクションが記録されたログ、すなわち、マスターデータベースで生成されたすべての変更箇所であり、更新作業を中止するために以前のデータイメージを保管するアンドゥログおよび更新作業を再実行するために更新以後のデータイメージを保管するリドゥログを含むことができ、この場合、複製ログは、リドゥログを含むことができる。この場合、複製ログは、リドゥログのみを含んでもよい。より詳細には、複製ログは、複数のトランザクションを順に処理するために、リドゥログで分類される１つのトランザクションを含んでもよい。
【００６１】
また、複製サーバ８１２は、１つ以上の複製エージェントから受信されるトランザクションログに対する送信リクエストを処理する処理装置とすることができ、この処理装置は、送信リクエストを処理する第１スレッドおよびトランザクションログをマスターデータベースを介して確認する第２スレッドを含むことができる。すなわち、マスターホスト８１０は、複製サーバ８１２を用いることにより、マスターデータベース８１１の変更箇所であるトランザクションログを介して複製ログを生成して配布システム８２０に送信することができる。
【００６２】
加えて、マスターホスト８１０は、マスターデータベース８１１のスキーマに対する変更箇所をスレーブホスト８３０が含むスレーブデータベース８３１に反映するための第１変更箇所反映部（図示せず）と、マスターデータベース８１１のインデックス、トリガ、またはユーザアカウントのうちの少なくとも１つに対する変更箇所を配布システムが含む配布データベースに反映するための第２変更箇所反映部（図示せず）とを含んでもよい。
【００６３】
配布システム８２０は、配布データベース８２１および複製エージェント８２２を含んでもよい。配布システム８２０は、複製ログを配布するスレーブホストを判断して該当するスレーブホスト８３０に複製ログを配布することができる。このとき、配布データベース８２１は、マスターホスト８１０およびスレーブホスト８３０の配置情報を含むことができ、複製エージェント８２２は、複製ログを用いてデータの複製を実行することができる。
【００６４】
ここで、複製エージェント８２２は、マスターホストから受信された複製ログを受信して一時的に格納する格納部８２２ａと、配布データベースを用いて複製ログを配布するスレーブホストを確認するスレーブホスト確認部８２２ｂと、複製ログを該当するスレーブホストに送信する送信部８２２ｃとを含んでもよい。これにより、マスターデータベース８１１の変更箇所をスレーブホスト８３０に反映させることができる。
【００６５】
また、複製エージェント８２２は、複製ログについての追跡ログおよびエラーログを生成してもよい。このとき、追跡ログには、各スレーブホストが含むスレーブデータベース別に最終適用された複製ログに対するログ順番号を含んでもよく、エラーログには、複製エージェントの複製実行中に発生するすべてのエラーを記録してもよい。
【００６６】
加えて、配布システム８２０は、マスターホスト８１０に障害が発生したとき、他のマスターホストとして動作するスレーブホスト８３０にインデックス、トリガ、またはユーザアカウントのうちの少なくとも１つを反映させてもよい。
【００６７】
スレーブホスト８３０は、スレーブデータベース８３１を含んでもよく、複製ログを受信してスレーブデータベース８３１に反映してもよい。このとき、スレーブデータベース８３１、すなわち、複製先は、マスターデータベース８１１のデータが複製されるデータベースであり、マスターデータベース８１１の変更箇所を反映することができる。これにより、マスターデータベース８１１とスレーブデータベース８３１は互いに同期化され、マスターデータベース８１１及びスレーブデータベース８３１を介してデータのアップロード及びダウンロードを分散して実行することができ、読み込み操作に対する負荷を減らすことができる。
【００６８】
図９は、本発明に係る複製サーバ９１１および複製エージェントの構造を説明するための一例である。すなわち、図９では、マスターホストとスレーブホストが１対Ｎの比率で連結した構造を参照しながら複製サーバおよび複製エージェントの構造を説明する。
【００６９】
マスターホスト９１０は、複製サーバ９１１およびマスターデータベース９１２を含んでもよく、複製サーバ９１１は、マスターデータベース９１２に含まれるトランザクションログ９１３を介して複製ログを生成し、バッファ９１４に格納し、配布システム９２０に送信してもよい。
【００７０】
すなわち、複製サーバ９１１は、１つ以上の複製エージェントから受信されるトランザクションログに対する送信リクエストを処理する処理装置であり、送信リクエストを処理する第１スレッドおよびトランザクションログをマスターデータベースを介して確認する第２スレッドを含むことができ、トランザクションログを介して生成された複製ログを格納するためのバッファ９１４を含むことができる。
【００７１】
このとき、複製ログは、トランザクションログ９１３を構成する複数のトランザクションのうちの１つのトランザクション意味するため、複製ログはトランザクションの順序に従って配布システム９２０に送信されてもよい。
【００７２】
配布システム９２０は、複製エージェント９２１および配布データベース９２２を含んでもよく、複製エージェント９２１は、複製サーバ９１１から受信した複製ログをローカルディスク９２３に格納する前に、まず、バッファ９２４に一時的に格納する。
【００７３】
すなわち、複製エージェント９２１は、複製サーバ９１１から送信された複製ログ、すなわち、マスターデータベース９１２のトランザクションをローカルディスク９２３に格納し、これを分析し、分析した複製ログをスレーブデータベース９３１〜９３３に反映する処理装置である。複製エージェント９２１は、複製ログを受信してバッファ９２４に格納する第１スレッドと、バッファ９２４に格納された複製ログをローカルディスク９２３に格納する第２スレッドと、複製ログをスレーブホストに送信することによってスレーブデータベース９３１〜９３３にマスターデータベース９１２の変更箇所を反映する第３スレッドとをスレーブホストに送信してもよい。
【００７４】
図１０は、本発明に係る複製サーバおよび複製エージェントの構造を説明するための他の例である。すなわち、図１０では、マスターホストとスレーブホストとがＮ対Ｍの比率で連結した構造の一例として２対６の比率で連結した構造を参照しながら複製サーバおよび複製エージェントの構造を説明する。
【００７５】
マスターホスト１０１０、１０２０のそれぞれに含まれる複製サーバ１０１１、１０２１は、マスターデータベース１０１２、１０２２の変更箇所である複製ログ、すなわち、それぞれのトランザクションをバッファ１０１３、１０２３、１０２４を介して順に所定の配布システム１０３０、１０４０に送信することができる。
【００７６】
配布システム１０３０、１０４０に含まれる複製エージェントは、複製ログを受信して処理する。例えば、配布システム１０３０に含まれる複製エージェント１０３１は、複製サーバ１０１１から受信した複製ログをバッファ１０３２で一時的に格納し、それからローカルディスク１０３３に格納することができる。また、複製エージェントは複製サーバ１０２１から受信した複製ログをバッファ１０３４に一時的に格納し、それからローカルディスク１０３５に格納することができる。これらのバッファ１０３２、１０３４を、複製ログ、すなわち、トランザクションを順次に処理するために用いてもよい。
【００７７】
このように、配布システム１０３０、１０４０に送信された複製ログは、該当するスレーブホストのスレーブデータベース１０５０に反映され、それによりマスターデータベース１０１２、１０２２の変更箇所が反映される。
【００７８】
上述した本発明に係る実施形態におけるデータ複製方法は、コンピュータにより実現される多様な動作を実行するためのプログラム命令を含むコンピュータで読取可能な媒体に記録されてもよい。当該記録媒体は、プログラム命令、データファイル、データ構造なども単独または組み合わせて含んでもよい。記録媒体およびプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知であり使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、フロプティカルディスクのような磁気−光媒体、およびＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例としては、コンパイラによって生成されるような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行され得る高級言語コードを含む。上述のハードウェア装置は本発明の上述の実施形態の動作をするために、１つ以上のソフトウェアモジュールとして動作するよう設定されてもよい。
【００７９】
上述したように、本発明のいくつかの実施形態を参照して説明したが、本発明はこれに限定されるものではない。該当の技術分野において熟練した当業者にとっては、特許請求の範囲に記載された本発明の思想および領域から逸脱しない範囲内で、本発明を多様に修正および変更させることができることを理解することができるであろう。
【符号の説明】
【００８０】
８００：データ複製システム
８１０：マスターホスト
８１１：マスターデータベース
８１２：複製サーバ
８２０：配布システム
８２１：配布データベース
８２２：複製エージェント
８３０：スレーブホスト
８３１：スレーブデータベース
【図１】
2010527087.tif 000003
【図２】
2010527087.tif 000004
【図３】
2010527087.tif 000005
【図４】
2010527087.tif 000006
【図５】
2010527087.tif 000007
【図６】
2010527087.tif 000008
【図７】
2010527087.tif 000009
【図８】
2010527087.tif 000010
【図９】
2010527087.tif 000011
【図１０】
2010527087.tif 000012
【国際調査報告】
2010527087.tif 000013
2010527087.tif 000014