JP2004133598A - 複数データベースの二重化制御プログラム - Google Patents
複数データベースの二重化制御プログラム Download PDFInfo
- Publication number
- JP2004133598A JP2004133598A JP2002296179A JP2002296179A JP2004133598A JP 2004133598 A JP2004133598 A JP 2004133598A JP 2002296179 A JP2002296179 A JP 2002296179A JP 2002296179 A JP2002296179 A JP 2002296179A JP 2004133598 A JP2004133598 A JP 2004133598A
- Authority
- JP
- Japan
- Prior art keywords
- data
- processing unit
- update
- control processing
- database
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】複数データベースの二重化システムにおいて、トランザクション単位のデータ更新処理と異常時のリカバリ処理をミラーデータベース側のシステムで保証して、マスタデータベース側の更新データをリアルタイムに転送可能とする二重化制御技術を提供する。
【解決手段】マスタデータベース側で、トランザクション処理を実行し、トランザクション処理の更新データをミラーデータベースに反映するための制御情報を生成し、トランザクション処理が完了する前に、ミラーデータベースへ前記更新データと前記制御情報を含むデータを送信し、ミラーデータベース側で、マスタデータベースから更新データおよびトランザクション処理の更新データをミラーデータベースに反映するための制御情報を受信し、制御情報に基づいてトランザクション単位に前記更新データを組み立て、ミラーデータベースへの更新データをトランザクション単位に反映する。
【選択図】 図1
【解決手段】マスタデータベース側で、トランザクション処理を実行し、トランザクション処理の更新データをミラーデータベースに反映するための制御情報を生成し、トランザクション処理が完了する前に、ミラーデータベースへ前記更新データと前記制御情報を含むデータを送信し、ミラーデータベース側で、マスタデータベースから更新データおよびトランザクション処理の更新データをミラーデータベースに反映するための制御情報を受信し、制御情報に基づいてトランザクション単位に前記更新データを組み立て、ミラーデータベースへの更新データをトランザクション単位に反映する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は基幹サーバ上にある複数のマスタデータベースのミラーデータベースを他サーバ上に展開し、基幹サーバ上と同等の参照系業務の運用を可能とする複数データベースのリアルタイム二重化制御システム(リアルタイムDBリプリケーションシステム)に関する。
【0002】
【従来の技術】
近年、インターネットの利用者はかなりの勢いで増加し、ウェブサーバをはじめとするネットワークサービスへのアクセスも急激に増加している。その中で、著名なサーバへのアクセスはすでに一台のサーバマシンで処理することが困難になってきている。そこで、多くのアクセスが集中する著名なサーバでは、同一の機能を有する別のサーバ(ミラーサーバ)を設けて負荷分散を図っている。
【0003】
ここで、サーバのコンテンツは日々更新されるが、元のサーバ(マスタサーバ)のファイルが更新された場合には、ミラーサーバの対応するファイルも同期させて更新(ミラーリング)する必要がある。
【0004】
しかし、一般にマスターサーバ上のファイルの更新周期と、ミラーリングが行われる周期は一致しないため、マスターサーバ上では更新され、追加されたファイルがミラーサーバ上では更新されていない期間が存在するという問題が生じる。
【0005】
これに対して、ミラーサーバを含む全サーバの内容を高速に同期させることができるとともに、同期に伴う負荷を減らすことができるミラーサーバの同期方法が提案されている。
【0006】
【特許文献1】
特開平11−154110号公報
【0007】
【発明が解決しようとする課題】
このような従来技術においては、以下に示す問題が生じている。1トランザクションで複数のデータベースに対して、大量のデータ更新が行われた場合、トランザクションの完了を待ってから大量の更新データをネットワークを介して送信することになるため、マスタデータベースのデータ更新完了日時とミラーデータベースへの更新データ反映日時との時間差が更新データ量が多いほど大きくなる。
【0008】
また、更新データ量の小さいトランザクションが大量に発生した場合、更新データを送信するための通信回数が多くなり、ネットワークの負荷が高くなる。
また、ミラーデータベースへの更新処理回数も多くなりCPU負荷も高くなる。
【0009】
また、ネットワークの過負荷、ミラーデータベース更新側システムの異常(過負荷やシステムダウンなどによるREIPL(Re−Initial Program Loader)など)などで更新データが大量(マスタデータベースのデータ量より大)に滞留した場合、マスタデータベースとミラーデータベースの内容が一致するまで、長い時間がかかる。
【0010】
また、複数のミラーデータベースを同時に参照するアプリケーションにおいて、トランザクション単位の整合性がとれた状態か否かをチェックする処理を開発する必要がある。
また、トランザクション単位に順番にデータ反映処理(DB間のコード変換、DB反映処理)を行う方式では、トランザクションの数分、コード変換処理およびDB反映処理を起動する必要があるため、小さなデータを更新するトランザクションが大量に発生した場合、CPU負荷が高くなる。
【0011】
さらに、個々のデータベース単位に更新データを反映しているため、多くのデータベースの更新が同時に発生した場合、処理プロセスがCPU能力以上に起動され処理効率が悪くなる問題が発生する。
【0012】
本発明は、このような従来技術の問題に鑑みてなされたものである。すなわち、本発明が解決しようとする課題は、複数データベースの二重化システムにおいて、トランザクション単位のデータ更新処理と異常時のリカバリ処理をミラーデータベース側のシステムで保証して、マスタデータベース側の更新データをリアルタイムに転送可能とする二重化制御技術を提供することである。
【0013】
【課題を解決するための手段】
本発明は、上記課題を解決するために以下の手段を採用した。
【0014】
本発明に係る二重化制御技術は、トランザクション処理による複数の第1データベースへの複数の更新データを、複数の第2データベースに反映する二重化制御システムにおいて、前記第1データベース側でコンピュータにより実行されるプログラムであって、トランザクション処理を実行するステップと、前記トランザクション処理の更新データを前記第2データベースに反映するための制御情報を生成するステップと、前記トランザクション処理が完了する前に、前記第2データベースへ前記更新データと前記制御情報を含むデータを送信するステップとを実行させることを特徴とする。
【0015】
ここで、例えば第1データベースはマスタデータベースであり、第2データベースは、そのマスタデータベースに対応するミラーデータベースである。
【0016】
このようにすると、トランザクションで複数のデータベースに対し、大量のデータ更新が実行された場合、トランザクションの完了を待たずにマスタデータベースの更新処理と並行して、更新データを送信することができる。そのため、ミラーデータベースへ更新データを反映するときの遅延時間を短縮できる。
【0017】
また、本発明に係る二重化制御技術は、前記データが送信待ちである場合、前記データを送信する前に、複数の前記更新データを結合するステップを実行させる。
【0018】
このようにすると、更新データ量の小さいトランザクションを複数まとめて送信することができる。そのため、通信制御の負荷軽減と、ミラーデータベースへの一括反映が可能となる。
【0019】
また、本発明に係る二重化制御技術は、送信待ちの前記データが大量に滞留した場合、前記データの送信を中断するステップと、第1データベース上の全データを一括して送信するステップとを実行させる。
【0020】
このようにすると、更新データを送信して個々に反映する場合と比較して、最新のミラーデータベースへ更新するまでの更新時間の短縮が可能となる。
【0021】
また、本発明に係る二重化制御技術は、複数の第1データベースへの更新データを、複数の第2データベースに反映する二重化制御システムにおいて、前記第2データベース側でコンピュータにより実行されるプログラムであって、前記第1データベースから前記更新データおよび前記トランザクション処理の更新データを前記第2データベースに反映するための制御情報を受信するステップと、前記制御情報に基づいてトランザクション単位に前記更新データを組み立てるステップと、前記第2データベースへの前記更新データをトランザクション単位に反映するステップとを実行させる。
【0022】
また、本発明に係る二重化制御技術は、トランザクション単位で前記第2データベースの排他制御を開始するステップと、前記第2データベースの更新が完了した後に、前記排他制御を解除するステップとを実行させる。
【0023】
このようにすると、例えば複数のミラーデータベースを同時に参照する複数のアプリケーションにおいて、整合性がとれたデータをトランザクション単位で参照できる。
【0024】
また、本発明に係る二重化制御技術は、前記第2データベースへの更新処理を複数のプロセスで平行して行うステップを実行させる。
【0025】
このようにすると、滞留している複数のトランザクションの更新データをまとめて処理することができる。そのため、例えばコード変換処理やデータベース更新処理のCPU負荷を軽減することができるともに、更新データの反映時間を短縮することができる。
【0026】
さらに、本発明に係る二重化制御技術は、第2データベース数と同数のプロセスを実行できない場合、各プロセスの更新データの量が均等に近づくように、それぞれのプロセスが処理するデータベースを割り当てるステップを実行させる。
【0027】
このようにすると、データの更新時間の短縮とトランザクション単位の更新を保証するためのミラーデータベースの排他処理における同時待ち時間を短縮することができる。
【0028】
また、本発明はコンピュータに以上のいずれかの機能を実現させるプログラムを読み取り可能な記憶媒体に記憶したものであってもよい。
【0029】
【発明の実施の形態】
以下に図面を参照にして、本発明の好適な実施の形態を説明する。
<好適な実施の形態>
以下、図1から図16に基づいて本発明の好適な実施の形態に係る複数データベースの二重化制御システムについて説明する。図1は二重化制御のシステム構成を示す図であり、図2は業務アプリケーションの処理フローを示す図であり、図3はデータベース制御の処理フローを示す図であり、図4はデータベース制御処理における指示データの構成図であり、図5および図6は二重化データ採取・編集制御の処理フローを示す図であり、図7および図8は二重化データ採取・編集制御処理における指示データの構成図であり、図9は二重化データ送信制御の処理フローを示す図であり、図10は二重化データ送信制御処理の指示データ構成図であり、図11はマスタデータベース更新側のネットワーク制御の処理フローを示す図であり、図12はミラーデータベース更新側のネットワーク制御の処理フローを示す図であり、図13は二重化データ送信・組立制御の処理フローを示す図であり、図14は二重化データ送信・組立制御処理の指示データの構成図であり、図15は二重化データ反映制御の処理フローを示す図であり、図16はデータベース更新の処理フローを示す図である。
<二重化制御のシステム構成>
図1を参照して、複数データベースの二重化制御システムのシステム構成を説明する。
【0030】
本システムは、ネットワークを介して接続されるマスターデータベース更新システムとミラーデータベース更新システムとから構成される。
【0031】
マスターデータベース更新システムは、業務アプリケーション部1と、DB制御処理部2と、リアルタイム二重化制御処理部3と、ネットワーク制御処理部4とを含む。そして、さらにリアルタイム二重化制御処理部3では、処理1として、二重化データ採取・編集制御処理が実行され、処理2として、二重化データ採取・編集制御処理が実行される。
【0032】
ミラーデータベース更新システムは、ネットワーク制御処理部5と、二重化データ送信制御処理部6とを含む。そして、さらにリアルタイム二重化処理部6では、処理3として、二重化データ受信・組立制御処理が実行され、処理4として、二重化データ反映制御処理が実行され、処理5として、DB更新処理が実行される。
【0033】
業務アプリケーション部1は、既存のユーザ作成プログラムであり、各業務の処理でマスタデータベース7(図1のマスタDB1からDBn)を更新する。
【0034】
そして、DB制御処理部2は、各システムが提供するデータベース7を更新するプログラムであり、データベース7の更新が発生した場合、更新データを二重化データ採取・編集制御処理部31に通知する機能を持つ。
【0035】
そして、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32は、複数データベースのリアルタイム二重化制御を実現するための新規プログラムを含む処理部である。これらは、以下で詳しく説明する。
【0036】
そして、マスタデータベース更新システムとミラーデータベース更新システム上のネットワーク制御処理部4,5は、ネットワーク(LANなど)を介してデータの受け渡しを行う各々のシステム(データベース更新システムおよびミラーデータベース更新システム)が標準に提供する通信プログラムを有する処理部である。
【0037】
そして、二重化データ受信・組立制御処理部33、二重化データ反映制御処理部34とDB更新制御処理部35は、複数データベースのリアルタイム二重化制御を実現するためのプログラムを有する処理部である。これらは、以下で詳しく説明する。
【0038】
次に、それぞれの処理部における処理について、図2から図16を参照にして説明する。
<業務アプリケーションの処理フロー>
図2は、業務アプリケーション部1が実行するデータベース更新処理部分を抽出したフローチャートである。また、業務アプリケーション処理は、既存のユーザ作成プログラムで実行され、各業務の処理でマスタデータベース7を更新する。
【0039】
最初に、業務アプリケーション部1はトランザクション開始処理を実行する(S201)。
【0040】
そして、業務アプリケーション部1はDB制御処理部2にトランザクションスタート指示を通知して、データベース制御処理を起動させる(S202)。なお、DB制御処理部2については、図3で詳しく説明する。
【0041】
次に、業務アプリケーション部1は、DB1についてマスタデータベース更新処理を実行する(S203)。
【0042】
そして、業務アプリケーション部1は、DB制御処理部2にDB1の更新指示を通知して、データベース制御処理を起動させる(S204)。
【0043】
以下、DB1からDBnで示される各々のデータベースに関して、マスタデータベース更新処理を実行し(S205)、データベース制御処理を起動させ(S206)、同様の処理を繰り返す。
【0044】
そして、業務アプリケーション部1はトランザクション終了処理を実行する(S207)。
【0045】
最後に、業務アプリケーション部1はデータベース制御処理部2にトランザクションエンド指示を通知して、データベース制御処理を起動させて(S208)処理を終了する。
<データベース制御の処理フロー>
次に、業務アプリケーション処理部1によって起動させられたデータベース制御処理について説明する。
【0046】
図3は、DB制御処理のフローチャートである。このデータベース制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムによって実行される。このプログラムをDB制御処理部2と呼ぶ。
【0047】
DB制御処理部2は、業務アプリケーション部1より依頼された各々の処理が実行される前に、依頼された要求の制御情報やDB更新データをコピーし、二重化データ採取・編集制御処理部31に通知する処理を実行する。
【0048】
最初に、DB制御処理部2は業務アプリケーション部1により依頼された要求がトランザクションスタートであるか否かを判定する(S301)。
【0049】
ここで、DB制御処理部2は、業務アプリケーション部1による要求がトランザクションスタート指示であると判定した場合には、図4に示すトランザクションスタート指示の情報を作成する(S302)。
【0050】
そして、DB制御処理部2は、二重化データ採取・編集処理部31を起動する(S303)。次に、DB制御処理部2は、二重化データ採取・編集処理部31にトランザクション開始処理を実行させる(S304)。
【0051】
一方S301で、DB制御処理部2は、業務アプリケーション部1により依頼された要求がトランザクションスタートでないと判定した場合には、業務アプリケーション部1による要求がDB更新指示であるか否かを判定する(S305)。
【0052】
ここで、DB制御処理部2は、業務アプリケーション部1による要求がDB更新指示であると判定した場合には、図4に示すDB更新指示の情報を作成する(S306)
そして、DB制御処理部2は、二重化データ採取・編集処理部31を起動する(S307)。それから、DB制御処理部2は、二重化データ採取・編集処理部31にマスタDB更新処理を実行させる(S308)。ただし、このマスタDB更新処理は既存の処理である。
【0053】
一方S305で、DB制御処理部2は、業務アプリケーション部1により依頼された要求がDB更新指示でないと判定した場合には、業務アプリケーション部1による要求がトランザクションエンドであるか否かを判定する(S309)。
【0054】
ここで、DB制御処理部2は、業務アプリケーション部1による要求がトランザクションエンドであると判定した場合には、図4に示すトランザクションエンド指示の情報を作成する(S310)。
【0055】
そして、DB制御処理部2は、二重化データ採取・編集処理部31を起動する(S311)。次に、DB制御処理部2は、二重化データ採取・編集処理部31にトランザクション終了処理を実行させる(S312)。
【0056】
一方S309で、DB制御処理部2は、業務アプリケーション部1により依頼された要求がトランザクションエンドでないと判定した場合には、業務アプリケーション部1による要求が異常発生であるか否かを判定する(S313)。
【0057】
ここで、DB制御処理部2は、業務アプリケーション部1による要求が異常発生であると判定した場合には、図4に示す異常終了指示の情報を作成する(S314)。
【0058】
そして、DB制御処理部2は、二重化データ採取・編集処理部31を起動する(S315)。次に、DB制御処理部2は、二重化データ採取・編集処理部31にマスタDB復旧処理を実行させる(S316)。
【0059】
一方S313で、DB制御処理部2は、業務アプリケーション部1により依頼された要求が異常発生でないと判定した場合には、処理を終了する。
【0060】
ここで、図4を参照して、データベース制御処理における各々の指示データの構成について説明する。
【0061】
トランザクションスタート指示のデータは、制御情報フィールドとデータ長とその他の情報フィールドから構成される。このデータは、二重化データ採取・編集制御処理部31にトランザクションの開始を指示する。制御情報フィールドは8ビットで表され、先頭を1とする。トランザクションスタート指示のデータにおいて、制御情報フィールドの他のビットはXで表され、いわゆる「don’t care」である。データ長フィールドはその後に続くデータの長さを表し、ここではnnとする。その他の情報フィールドは、業務アプリケーション名、ミラーDB更新システムの情報などのデータを含む。なお、ミラーDB更新システムの情報は、複数のシステムに反映する場合には複数のシステムの情報を含む。
【0062】
DB更新指示データは、制御情報、テーブル名長、更新テーブルの名前、データ長とDB更新データの各フィールドから構成される。このデータは二重化データ採取・編集制御処理部31にデータベースの更新を指示する。制御情報フィールドは8ビットで表され、5ビット目を1とする。テーブル名長フィールドはその後に続く更新テーブルの名前のデータ長を表し、ここではttとする。更新テーブルとはデータベース上の更新されたテーブルをいう。データ長フィールドはその後に続くDB更新データの長さを表し、ここではnnとする。
【0063】
トランザクションエンド指示データは、トランザクション処理の終了を指示するため制御情報のみを含む。そのためデータ長は0である。制御情報フィールドは8ビットで表され、2ビット目を1とする。
【0064】
異常終了指示データは、二重化データ採取・編集制御処理部31に異常終了を通知するため制御情報のみを含む。そのためデータ長は0である。制御情報フィールドは8ビットで表され、8ビット目を1とする。
<二重化データ採取・編集制御の処理フロー>
図5及び図6は、二重化データ採取・編集制御処理のフローチャートである。この二重化データ採取・編集制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムによって実行される。このプログラムを二重化データ採取・編集制御処理部31と呼ぶ。
【0065】
まず図5を参照して、二重化データ採取・編集制御処理について説明する。
【0066】
最初に、二重化データ採取・編集制御処理部31はDB制御処理部2により依頼された要求がトランザクションスタートであるか否かを判定する(S501)。ここで、二重化データ採取・編集制御処理部31は、DB制御処理部2による要求がトランザクションスタート指示であると判定した場合には、図7に示すトランザクション制御情報を制御表に設定する(S502)。そして、二重化データ採取・編集制御処理部31は処理を終了する。
【0067】
一方S501で、二重化データ採取・編集制御処理部31は、DB制御処理部2により依頼された要求がトランザクションスタートでないと判定した場合には、DB制御処理部2による要求がDB更新指示であるか否かを判定する(S503)。
【0068】
ここで、二重化データ採取・編集制御処理部31は、DB制御処理部2による要求がDB更新指示であると判定した場合には、図7に示すような制御表に設定されているトランザクション制御情報を付加してDB更新要求を作成して(S504)、処理を図6のBに進める。
【0069】
一方S503で、二重化データ採取・編集制御処理部31は、DB制御処理部2により依頼された要求がDB更新指示でないと判定した場合には、DB制御処理部2による要求がトランザクションエンド指示であるか否かを判定する(S505)。
【0070】
ここで、二重化データ採取・編集制御処理部31は、DB制御処理部2による要求がトランザクションエンド指示であると判定した場合には、図7に示すトランザクションエンド要求を作成し(S506)、処理を図6のBに進める。
【0071】
一方S505で、二重化データ採取・編集制御処理部31は、DB制御処理部2により依頼された要求がトランザクションエンド指示でないと判定した場合には、DB制御処理部2による要求が異常発生であるか否かを判定する(S507)。
【0072】
ここで、二重化データ採取・編集制御処理部31は、DB制御処理部2による要求が異常発生であると判定した場合には、異常発生通知(トランザクションキャンセル通知)を作成し(S508)、処理を図6のBに進める。
【0073】
一方S505で、二重化データ採取・編集制御処理部31は、DB制御処理部2により依頼された要求が異常発生でないと判定した場合には、DB制御処理部2による要求がDB反映完了通知であるか否かを判定する(S509)。
【0074】
ここで、二重化データ採取・編集制御処理部31は、DB制御処理部2による要求がDB反映完了通知であると判定した場合には、送信が完了したデータをログファイルから削除し(S510)、処理を図6のCに進める。
【0075】
次に図6を参照して、二重化データ採取・編集制御処理を引き続き説明する。
【0076】
図6のBの処理は、DB更新要求(S504)、トランザクションエンド要求(S506)、および異常発生通知要求(S508)が作成された後に実行される。
【0077】
まず、二重化データ採取・編集制御処理部31は、作成した上記要求を保留キューの最後へキューイングし(S601)、ログファイルに格納する(S602)。この要求のキューイングについては、図7で説明する。
【0078】
次に、二重化データ採取・編集制御処理部31は送信可能状態か否かを判定する(S603)。このS603の処理は、送信が完了したデータをログファイルから削除した(S510)後にも実行される。なお、送信可能状態か否かの判定方法については、図7の*10に示すシステムの共有メモリの値をチェックして判定する。
【0079】
ここで、二重化データ採取・編集制御処理部31は、送信不可であると判定した場合には、処理を終了する。
【0080】
一方、二重化データ採取・編集制御処理部31は、送信可能であると判定した場合には、保留データが複数存在するか否かを判定する(S604)。ここで、二重化データ採取・編集制御処理部31は、保留データが複数存在しないと判定した場合には、二重化データ送信制御部32を起動し、ネットワーク制御部4に送信要求を依頼する(S607)。そして、二重化データ採取・編集制御処理部31は、処理をS608に進める。
【0081】
一方S604で、二重化データ採取・編集制御処理部31は、保留データが複数存在すると判定した場合には、保留データ長が保留可能最大長(β)より長いか否かを判定する(S605)。ここで、二重化データ採取・編集制御処理部31は、保留データ長が保留可能最大長(β)より長いと判定した場合、リアルタイム二重化処理の終了と再開処理を実施し(S609)、処理を終了する。
【0082】
このS609の処理は、更新データが所定値を越えたとき、更新データの送信を中断し、マスタデータベースの全データを一括して送信し、ミラーデータベースを再度作り直す処理である。
【0083】
まず、二重化データ採取・編集制御処理部31は、ミラーデータベース更新システムに二重化処理の中断を通知する。この通知を受けて、ミラーデータベース更新システムでは、ミラーデータベースのデータが削除される。
【0084】
次に、二重化データ採取・編集制御処理部31は、マスタデータベースの更新データを一括して抽出し、ミラーデータベース更新システムに送信する。
【0085】
そして、ミラーデータベース更新システムでは、一括して送信された更新データに基づいて、ミラーデータベースは再度作成される。
【0086】
その後、二重化データ採取・編集制御処理部31は、ミラーデータベース更新システムに二重化処理の再開を通知し、二重化処理を再開する。すなわち、二重化データ採取・編集制御処理部31は、リアルタイム二重化処理の終了と再開処理を終了する。
【0087】
一方S605で、二重化データ採取・編集制御処理部31は、保留データ長が保留可能最大長(β)より長くないと判定した場合、
二重化データ採取・編集制御処理部31は、要求(DB更新要求、トランザクションエンド要求、あるいは異常発生通知要求)をキューより取り出し最大送信データ長(α)の要求に組み立て直す(S606)。
【0088】
そして、二重化データ採取・編集制御処理部31は、二重化データ送信制御部32を起動し、ネットワーク制御部4に送信要求を依頼する(S607)。
【0089】
その後、二重化データ採取・編集制御処理部31は、保留データがまだ存在するか否かを判定する(S608)。この処理は、S604の処理で、二重化データ採取・編集制御処理部31が保留データは複数存在しないと判定して、ネットワーク制御部4に送信要求を依頼した(S607)後にも実行される。
【0090】
ここで、二重化データ採取・編集制御処理部31は、制御表の中に保留キューが存在しないと判定した場合には、処理を終了する。
【0091】
一方、二重化データ採取・編集制御処理部31は、制御表の中に保留キューがまだ存在すると判定した場合には、処理をS603に戻し、保留データが存在しなくなるまで繰り返す。
【0092】
図7の*5に示す制御表には、トランザクション情報として、保留キューの先頭と最後、業務アプリケーションの情報、相手システムの情報が設定される。すなわち、それぞれの情報のデータは、メモリなどの記憶領域に格納されており、制御表にはそのアドレス情報が含まれる。
【0093】
また、この制御表はトランザクションスタート指示を受けて設定され、ログファイル上に格納される。なお、複数のミラーデータベースを作成する場合には相手システム情報フィールドをさらに追加する。
【0094】
ここで業務アプリケーションの情報とは、アプリケーション名など更新したデータベース側のアプリケーションの情報をさす。
【0095】
また相手システムの情報とは、システム名や最大送信データなどミラーデータベース側のシステム情報をさす。
【0096】
DB更新要求データは、業務アプリケーション情報、相手システム情報、制御情報、テーブル名長、更新テーブルの名前、データ長、更新データから構成される。この要求データは、二重化データ採取・編集部31がDB制御処理部2からの指示に従って、図7の*5の制御表を参照して作成する。ここで業務アプリケーション情報と相手システムは、ログファイル上に格納される制御表を参照して作成される。また、相手システム情報フィールドは、複数のミラーデータベースを作成する場合には追加される。
【0097】
トランザクションエンド要求データは、業務アプリケーション情報、相手システム情報、制御情報から構成される。二重化データ採取・編集制御処理部31は、DB制御処理部2からトランザクションエンド指示を受けて、制御表よりトランザクション情報をコピーし、トランザクションエンド要求データを作成する。
【0098】
異常発生通知要求データは、業務アプリケーション情報、相手システム情報、制御情報から構成される。二重化データ採取・編集制御処理部31は、DB制御処理部2から異常発生通知を指示を受けて、トランザクションをキャンセルすると共に、制御表よりトランザクション情報をコピーし、トランザクションエンド要求データを作成する。
【0099】
次に、図7を参照して、制御表への保留キューのキューイングを説明する。
【0100】
それぞれの要求は、制御表の保留キューの最後にキューイングされる。このとき、キューが空の場合には、そのままその要求を保留キューから取り出す。一方、キューが空でない、つまりキューに他の要求がある場合には、保留キューの最後にキューイングする。この処理は、図5での各要求(DB更新要求、トランザクションエンド要求、および異常発生要求)を作成した後、S601で実行される処理である。
【0101】
図8を参照して、二重化データ採取・編集制御処理部31が図6のS603の処理で実行する送信可能状態の判定方法について説明する。
【0102】
二重化データ採取・編集制御処理部31は、共有メモリの値で送信可能状態を判定する。この共有メモリは二重化データ採取・編集制御処理部31と二重化データ送信制御処理32との間でアクセスすることができる。
【0103】
本実施の形態においては、送信可な場合の共有メモリの値を「1」とし、送信不可な場合の共有メモリの値を「0」とする。なお、送信可能状態の初期値は「1」、すなわち送信可である。
【0104】
また、この送信可能状態は二重化データ送信制御部32によって設定される。
【0105】
次に、保留キューからの各要求の取り出し方について説明する。この処理は図6のS606において実行される処理である。
【0106】
まず、保留キューが空の場合には、二重化データ採取・編集制御処理部31は無条件に要求を取り出す。
【0107】
一方、保留キューが空でない、つまり保留キューに他の要求が存在する場合には、二重化データ採取・編集制御処理部31は、各要求のデータ長を調べ、最大送信データ長(α)以下となる要求を複数まとめて取り出す。
【0108】
このため複数の要求が待たされていた場合、最大送信データ長となるように複数のデータを組み立てて送信することが可能となる。
<二重化データ送信制御の処理フロー>
図9は、二重化データ送信制御処理のフローチャートである。この二重化データ送信制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムである。このプログラムを二重化データ送信制御処理部32と呼ぶ。
【0109】
二重化データ送信制御処理部32は、二重化データ採取・編集制御処理部31が依頼した各要求の送信をネットワーク制御部4に依頼する。
【0110】
また、ネットワーク制御部4が通知した各通知(送信完了、DB反映完了通知)を二重化データ採取・編集制御処理部31に通知する。
【0111】
最初に、二重化データ送信制御処理部32は依頼された要求が送信要求であるか否かを判定する(S901)。ここで、送信要求とは、二重化データ採取・編集制御処理部31からのDB更新要求、トランザクションエンド要求、異常発生通知要求のうちのいずれかをさす。
【0112】
ここで、二重化データ送信制御処理部32は、要求が送信要求であると判定した場合には、ネットワーク制御処理部4を起動し、送信を依頼する(S902)。
【0113】
そして、二重化データ送信制御処理部32は、ネットワーク制御処理部4が送信可能か否かを判定する(S903)。
【0114】
ここで、二重化データ送信制御処理部32は、ネットワーク制御処理部4が送信可能であると判定した場合には、処理を終了する。
【0115】
一方S903で、二重化データ送信制御処理部32は、ネットワーク制御処理部4が送信可能でないと判定した場合には、送信不可状態を設定して(S904)、処理を終了する。すなわち、ネットワーク制御処理部4への送信依頼が上限値に達したとして、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32との間でアクセスできる共有メモリ上の制御表に図10に示すような送信不可を設定して制御を終了する。
【0116】
一方S901で、二重化データ送信制御処理部32は、要求が送信要求でないと判定した場合には、受信情報が送信完了通知であるか否かを判定する(S905)。
【0117】
ここで、二重化データ送信制御処理部32は、受信情報が送信完了通知であると判定した場合には、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32との間の共有メモリ上の制御表に送信可状態を設定し(S906)、二重化データ採取・編集制御処理を起動する(S907)。
【0118】
一方S905で、二重化データ送信制御処理部32は、受信情報が送信完了通知でないと判定した場合には、受信情報がDB反映完了通知であるか否かを判定する(S908)。
【0119】
ここで、二重化データ送信制御処理部32は、受信情報がDB反映完了通知であると判定した場合には、図10に示すDB反映完了通知を作成し(S909)、制御をS907の処理に進める。
【0120】
一方S908で、二重化データ送信制御処理部32は、受信情報がDB反映完了通知でないと判定した場合には、受信情報が送信不可通知であるか否かを判定する(S910)。
【0121】
ここで、二重化データ送信制御部32は、受信情報が送信不可通知であると判定した場合には、送信不可状態を設定する(S904)。すなわち、ネットワークに異常が発生したとして、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32との間でアクセスできる共有メモリ上の制御表(図7の*5)に図10に示すような送信不可を設定する。
【0122】
そして、二重化データ送信制御処理部32は、受信情報が送信可通知であるか否かを判定する(S911)。
【0123】
ここで、二重化データ送信制御処理部32は、受信情報が送信可通知であると判定した場合には、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32との間でアクセスできる共有メモリ上の制御表に送信可状態を設定する(S906)。すなわち、ネットワークが復旧したとして、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32との間でアクセスできる共有メモリ上の制御表に図10に示すような送信可を設定する。
【0124】
そして、二重化データ採取・編集制御処理を起動する(S907)。
【0125】
一方S911で、二重化データ送信制御処理部32は、受信情報が送信可通知でないと判定した場合には、処理を終了する。
【0126】
次に、図10を参照して、二重化データ送信制御処理における通知データについて説明する。
【0127】
送信完了通知は、二重化データ受信・組立制御処理部63が二重化データ採取・編集制御処理部31にネットワークを介して送信する通知であり、ミラーデータベース更新システムへの更新データの送信が完了したことを示す。
【0128】
DB反映完了通知は、ミラーデータベース更新システムが更新データの反映処理が完了したことを示す通知である。
【0129】
送信不可通知は、送信依頼が上限値に達したり、ネットワークに異常が発生したりしたときなどに設定される。この通知はミラーデータベース更新システムへの更新データの送信が不可状態であることを示す。
【0130】
送信可通知は、ネットワークに異常が発生した後、復旧できたときなどに設定される。この通知はミラーデータベース更新システムへの更新データの送信が可能状態であることを示す。
【0131】
DB反映完了通知は、ミラーデータベース更新システムから受信した通知がDB反映完了通知であることを受けて、二重化データ採取・編集制御処理部31にミラーデータベース更新システムのDB反映処理が完了したことを示すための通知である。
<ネットワーク制御の処理フロー>
図11および図12を参照して、マスタデータベース更新側システムとミラーデータベース更新側システムのネットワーク制御処理部4,5について説明する。
【0132】
ネットワーク制御処理部4,5は、ネットワーク(LANなど)を介してデータの受け渡しを行うため各々のシステム(データベース更新システムおよびミラーデータベース更新システム)が標準に提供する通信プログラムである
まず図11を参照して、マスタデータベース更新側システムにおけるネットワーク制御処理部4について説明する。
【0133】
ネットワーク制御処理4は、二重化データ送信制御部32から依頼されたデータをネットワーク経由で相手システム(ミラーデータベース更新側システムのネットワーク制御処理5)に送信する。
【0134】
また、ネットワーク制御処理4は、相手システム(ミラーデータベース更新側システムのネットワーク制御処理5)から受信したデータを二重化データ送信制御処理部32に通知する。この相手システムから受信するデータは、相手システムの受信通知と相手側DBへの反映完了を通知するためのデータである。
【0135】
さらに、ネットワーク制御処理4は、ネットワーク異常またはネットワーク復旧を二重化データ送信制御処理部32に通知する。
次に図12を参照して、ミラーデータベース更新側システムにおけるネットワーク制御処理部5について説明する。
【0136】
ネットワーク制御処理5は、相手システム(マスタデータベース更新側システムのネットワーク制御処理部5)から受信したデータを二重化データ受信・組立制御処理部63に通知する。この相手システムから受信するデータは、トランザクションスタートデータ、DB更新データ、およびトランザクションエンドデータである。
【0137】
また、ネットワーク制御処理5は、DB更新データを受信したことをネットワーク経由で相手システム(マスタデータベース更新側システムのネットワーク制御処理4)に通知する。
【0138】
さらに、ネットワーク制御処理5は、二重化データ組立制御処理部63から依頼されたデータをネットワーク経由で相手システム(マスタデータベース更新側システムのネットワーク制御処理4)に送信する。この依頼データはDB反映が完了したことを通知するためのデータである。
<二重化データ送信・組立制御の処理フロー>
図13は、二重化データ受信・組立制御処理のフローチャートである。この二重化データ受信・組立制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムである。このプログラムを二重化データ受信・組立制御処理部63と呼ぶ。
【0139】
最初に、二重化データ受信・組立制御処理部63は受信した情報が異常発生通知であるか否かを判定する(S1301)。
【0140】
ここで、二重化データ受信・組立制御処理部63は、受信した情報が異常発生であると判定した場合には、組立処理中のデータを破棄する(S1302)。そして、二重化データ受信・組立制御処理部63は、処理を終了する。
【0141】
一方S1301で、二重化データ受信・組立制御処理部63は、受信した情報が異常発生でないと判定した場合には、トランザクションスタートであるか否かを判定する(S1303)。
【0142】
ここで、二重化データ受信・組立制御処理部63は、受信した情報がトランザクションスタートであると判定した場合には、図14の*17に示すデータ組立処理環境を設定する(S1304)。すなわち、二重化データ受信・組立制御処理部36は、トランザクション単位の組立を行う環境を設定する。このデータ組立用の制御キューについては図14で詳しく説明する。
【0143】
一方S1303で、二重化データ受信・組立制御処理部63は、受信した情報がトランザクションスタートでないと判定した場合には、受信した情報がDB更新データであるか否かを判定する(S1305)。
【0144】
ここで、二重化データ受信・組立制御処理部63は、受信した情報がDB更新データであると判定した場合には、データ組立処理を実施し、図14の*17に示す組立キューにキュイングする(S1306)。
【0145】
一方S1305で、二重化データ受信・組立制御処理部63は、受信した情報がDB更新データでないと判定した場合には、受信した情報がトランザクションエンドであるか否かを判定する(S1307)。
【0146】
ここで、二重化データ受信・組立制御処理部63は、受信した情報がトランザクションエンドであると判定した場合には、図4に示す組立キューのデータを結合し、保留キューにキューイングする(S1308)。
【0147】
そして、二重化データ受信・組立制御処理部63は、DB更新処理中であるか否かを判定する(S1309)。
【0148】
ここで、DB更新処理中であると判定した場合には、処理を終了する。
【0149】
一方S1309で、二重化データ受信・組立制御処理部63は、DB更新処理中ではないと判定した場合には、保留キューにキューイングし、データベースの反映を待機させ、処理をS1314に進める。
【0150】
そして、二重化データ受信・組立制御処理部63は保留データを取り出す。このとき、保留データが複数ある場合には、組み立て最大サイズ(γ)に達するまで、複数のトランザクションのデータを結合する(S1314)。
【0151】
そして、二重化データ受信・組立制御処理部63は、二重化データ反映制御処理部64を起動させ、データの反映を依頼する(S1315)。そして、二重化データ受信・組立制御処理部63は処理を終了する。
【0152】
一方S1307で、二重化データ受信・組立制御処理部63は、受信した情報がトランザクションエンドでないと判定した場合には、受信した情報がDB更新処理完了通知であるか否かを判定する(S1310)。
【0153】
ここで、二重化データ受信・組立制御処理部63は、受信した情報がDB更新処理完了通知でないと判定した場合には、処理を終了する。
【0154】
一方S1310で、二重化データ受信・組立制御処理部63は、受信した情報がDB更新処理完了通知であると判定した場合には、DB反映完了通知を作成する(S1311)。
【0155】
そして、二重化データ受信・組立制御処理部63は、ネットワーク制御処理部5を起動し、送信を依頼する(S1312)。
【0156】
また、データ組立用の制御キューを作成して、保留キューにデータがあるか否かを判定する(S1313)。
【0157】
ここで、保留キューにデータがないと判定した場合には、二重化データ受信・組立制御処理部63は処理を終了する。
【0158】
一方S1313で、保留キューにデータがあると判定した場合には、二重化データ受信・組立制御処理部63は保留データを取り出す。このとき、保留データが複数ある場合には、組み立て最大サイズ(γ)に達するまで、複数のトランザクションのデータを結合する(S1314)。
【0159】
そして、二重化データ受信・組立制御処理部63は、二重化データ反映制御処理部64を起動させ、データの反映を依頼する(S1315)。そして、二重化データ受信・組立制御処理部63は処理を終了する。
【0160】
図14を参照して、データ組立用の制御キューの作成を説明する。
二重化データ受信・組立制御処理部63は、トランザクションスタート通知を受けて、更新データの組立処理環境を設定する。すなわち、二重化データ受信・組立制御処理部63は、トランザクションスタート通知により図14の*17の制御キューを作成する。
【0161】
この制御キューは組立キューの先頭と最後、保留キューの先頭と最後、相手システム情報などから構成される。
【0162】
この組立キューはトランザクションエンド通知を受信するまでの間の一時待ち状態のキューである。そして、組立キューのデータはトランザクションエンド通知を受信することにより結合される。この結合されたデータはトランザクション単位の更新データとなり、保留キューへ移動される。
【0163】
また、保留キューはトランザクション単位に組み立てられた更新データが待ち状態のキューである。
<二重化データ反映制御の処理フロー>
図15は、二重化データ反映制御処理のフローチャートである。この二重化データ反映制御処理は複数データベースのリアルタイム二重化制御を実現するプログラムにより実行される。このプログラムを二重化データ反映制御処理部46と呼ぶ。
【0164】
最初に、二重化データ反映制御処理部64は、受信した情報がDB更新データの反映依頼であるか否かを判定する(S1501)。
【0165】
ここで、二重化データ反映制御処理部64は、受信した情報がDB更新データの反映依頼であると判定した場合には、DB更新データ数がDB更新処理の起動リミットを越えたか否かを判定する(S1502)。すなわち、二重化データ反映制御処理部64は、更新データに含まれるDBの数を調べる。そして、更新データの反映依頼を受けたDBの数がDB更新処理部64の起動リミット以下か否かを判定する。
【0166】
ここで、DB更新データ数がDB更新処理の起動リミットを越えた場合には、データ長の大きい順にDB更新データを並び替え(S1503)、1番小さいデータと2番目に小さいデータを結合する(S1504)。そして、S1502に戻って、DB更新データ数がDB更新処理の起動リミットを越えるまで処理を繰り返す。
【0167】
一方S1502で、二重化データ反映制御処理部64は、DB更新データ数がDB更新処理の起動リミットを越えてないと判定した場合には、DB更新データを1つ取り出す(S1505)。そして、DB更新処理部65を起動させる(S1506)。
【0168】
そして、DB更新データはまだあるか否かを判定する(S1507)。判定の結果、DB更新データがなければ、二重化データ反映制御処理部64は処理を終了する。一方判定の結果、DB更新データがまだ存在するならば、二重化データ反映制御処理部64は処理をS1505に戻して、DB更新データがなくなるまで繰り返す。
【0169】
一方S1501で、二重化データ反映制御処理部64は、DB更新データの反映依頼でない判定した場合には、DB更新処理の完了通知であるか否かを判定する(S1508)。
【0170】
ここで、受信した情報がDB更新処理の完了通知である場合には、二重化データ反映制御処理部64は、全てのDB更新処理が完了したか否かを判定する(S1509)。
【0171】
ここで、二重化データ反映制御処理部64は、全てのDB更新処理が完了したと判定した場合には、更新するDBの排他制御を解除する(S1510)。すなわち、トランザクション単位で複数データベースの更新処理の完了の同期を取るため、該当DBすべての排他処理は、全てのプロセスが完了して解除する。
【0172】
そして、二重化データ反映制御処理部64はDB更新処理完了通知を作成する(S1511)。それから、二重化データ反映制御処理部64は、二重化データ受信・組立制御処理部63を起動し(S1512)、処理を終了する。
【0173】
一方S1508で、二重化データ反映制御処理部64は、DB更新処理の完了通知でない判定した場合には、処理を終了する。
【0174】
またS1509で、二重化データ反映制御処理部64は、全てのDB更新処理が完了したと判定した場合には、処理を終了する。
<データベース更新の処理フロー>
図16は、DB更新処理のフローチャートである。このDB更新処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムにより実行される。このプログラムをDB更新処理部65と呼ぶ。なお、この処理は複数起動することができる。また、DB更新処理を起動する数は、システムの能力に依存するため、この処理能力はチューニング可能とする。
【0175】
また、DB更新処理部65は二重化データ反映制御処理部64により起動され、データベース毎にデータを取り出しコード変換とDBの更新処理を実行する。
【0176】
最初に、二重化データ反映制御処理部64はDB更新データを1つ取り出し(S1601)、コード変換処理を実行する(S1602)。
【0177】
そして、二重化データ反映制御処理部64は、更新するDBの排他制御を開始する(S1603)。なお、トランザクション単位で複数データベースの更新処理の完了の同期を取るため、該当DBすべての排他処理は、全てのプロセスが完了するまで解除しない。
【0178】
そして、二重化データ反映制御処理部64は、DB更新を実行する(S1604)。
【0179】
まず、二重化データ反映制御処理部64は、DB更新データはまだあるか否かを判定する(S1605)。
【0180】
ここで、二重化データ反映制御処理部64は、DB更新データはまだあると判定した場合には、S1601に戻ってDB更新データがなくなるまで処理を繰り返す。
【0181】
一方S1605で、DB更新データがないと判定した場合には、DB更新処理完了通知を作成する(S1606)。そして、二重化データ反映制御処理部64は、二重化データ反映制御処理部64を起動させ(S1607)、処理を終了する。
<コンピュータ読み取り可能な記憶媒体>
上記実施の形態のいずれかの処理をコンピュータに実行させるプログラムをコンピュータが読み取り可能な記憶媒体に記憶することができる。そして、コンピュータに、この記憶媒体のプログラムを読み込ませて実行させることにより、上記実施の形態に示した二重化処理の機能を提供させることができる。
【0182】
ここで、コンピュータが読み取り可能な記憶媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータから読み取ることができる記憶媒体をいう。このような記憶媒体のうちコンピュータから取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、DAT、8mmテープ、メモリカード等がある。
【0183】
また、コンピュータに固定された記録媒体としてハードディスクやROM(リード・オンリー・メモリ)等がある。
【0184】
なお、上記実施の形態は本発明の範囲をなんら限定するものではなく、当業者が理解できる範囲において適宜、各種の変形の態様があり得る。
<その他>
さらに、本実施の形態は以下の発明を開示する。
【0185】
(付記1)トランザクション処理による複数の第1データベースへの複数の更新データを、複数の第2データベースに反映する二重化制御システムにおいて、前記第1データベース側でコンピュータにより実行されるプログラムであって、
トランザクション処理を実行するステップと、
前記トランザクション処理の更新データを前記第2データベースに反映するための制御情報を生成するステップと、
前記トランザクション処理が完了する前に、前記第2データベースへ前記更新データと前記制御情報を含むデータを送信するステップとを実行させるプログラム。
【0186】
(付記2)更新処理の途中で異常が発生した場合、第1データベースを更新前の状態に復旧するステップと、
第2データベースに異常を通知するステップとを実行させる付記1に記載のプログラム。
【0187】
(付記3)前記データが送信待ちである場合、前記データを送信する前に、複数の前記更新データを結合するステップを実行させる付記2に記載のプログラム。
【0188】
(付記4)送信待ちの前記データが大量に滞留した場合、前記データの送信を中断するステップと、
第1データベース上の全データを一括して送信するステップとを実行させる付記3に記載のプログラム。
【0189】
(付記5)複数の第1データベースへの更新データを、複数の第2データベースに反映する二重化制御システムにおいて、前記第2データベース側でコンピュータにより実行されるプログラムであって、
前記第1データベースから前記更新データおよび前記トランザクション処理の更新データを前記第2データベースに反映するための制御情報を受信するステップと、
前記制御情報に基づいてトランザクション単位に前記更新データを組み立てるステップと、
前記第2データベースへの前記更新データをトランザクション単位に反映するステップとを実行させるプログラム。
【0190】
(付記6)前記第2データベースへの前記更新データをトランザクション単位に反映する前記ステップは、
前記複数の第1データベース毎に前記データを取り出すステップと、
コード変換処理を実行するステップとをさらに実行させる付記5記載のプログラム。
【0191】
(付記7)トランザクション単位で前記第2データベースの排他制御を開始するステップと、
前記第2データベースの更新が完了した後に、前記排他制御を解除するステップとを実行させる付記6に記載のプログラム。
【0192】
(付記8)前記更新データが処理待ちである場合、前記更新データを結合するステップと、
前記結合した更新データを一括して処理するステップとを実行させる付記7に記載のプログラム。
【0193】
(付記9)前記第2データベースへの更新処理を複数のプロセスで平行して行うステップを実行させる付記8に記載のプログラム。
【0194】
(付記10)第2データベース数と同数のプロセスを実行できない場合、各プロセスの更新データの量が均等に近づくように、それぞれのプロセスが処理するデータベースを割り当てるステップを実行させる付記9に記載のプログラム。
【0195】
【発明の効果】
以上で説明したように、本発明は、複数データベースの二重化システムにおいて、トランザクション単位のデータ更新処理と異常時のリカバリ処理をミラーデータベース側のシステムで保証して、マスタデータベース側の更新データをリアルタイムに転送可能とする二重化制御技術を提供することができる。
【図面の簡単な説明】
【図1】二重化制御のシステム構成を示す図である。
【図2】業務アプリケーションの処理フローを示す図である。
【図3】データベース制御の処理フローを示す図である。
【図4】データベース制御処理における指示データの構成図である。
【図5】二重化データ採取・編集制御の処理フローを示す図である。
【図6】二重化データ採取・編集制御の処理フローを示す図である。
【図7】二重化データ採取・編集制御処理における指示データの構成図である。
【図8】二重化データ採取・編集制御処理における指示データの構成図である。
【図9】二重化データ送信制御の処理フローを示す図である。
【図10】二重化データ送信制御処理の指示データ構成図である。
【図11】ネットワーク制御(マスタデータベース更新側)の処理フローを示す図である。
【図12】ネットワーク制御(ミラーデータベース更新側)の処理フローを示す図である。
【図13】二重化データ送信・組立制御の処理フローを示す図である。
【図14】二重化データ送信・組立制御処理の指示データの構成図である。
【図15】二重化データ反映制御の処理フローを示す図である。
【図16】データベース更新の処理フローを示す図である。
【符号の説明】
1…業務アプリケーション部
2…DB制御処理部
3…マスタデータベース更新側システムのリアルタイム二重化処理部
31…二重化データ採取・編集制御処理部
32…二重化データ送信制御処理部
4…マスタデータベース更新側システムのネットワーク制御処理部
5…ミラーデータベース更新側システムのネットワーク制御処理部
6…ミラーデータベース更新側システムのリアルタイム二重化処理部
63…二重化データ受信・組立制御処理部
64…二重化データ反映制御処理部
65…DB更新処理部
7…マスターデータベース
8…ミラーデータベース
【発明の属する技術分野】
本発明は基幹サーバ上にある複数のマスタデータベースのミラーデータベースを他サーバ上に展開し、基幹サーバ上と同等の参照系業務の運用を可能とする複数データベースのリアルタイム二重化制御システム(リアルタイムDBリプリケーションシステム)に関する。
【0002】
【従来の技術】
近年、インターネットの利用者はかなりの勢いで増加し、ウェブサーバをはじめとするネットワークサービスへのアクセスも急激に増加している。その中で、著名なサーバへのアクセスはすでに一台のサーバマシンで処理することが困難になってきている。そこで、多くのアクセスが集中する著名なサーバでは、同一の機能を有する別のサーバ(ミラーサーバ)を設けて負荷分散を図っている。
【0003】
ここで、サーバのコンテンツは日々更新されるが、元のサーバ(マスタサーバ)のファイルが更新された場合には、ミラーサーバの対応するファイルも同期させて更新(ミラーリング)する必要がある。
【0004】
しかし、一般にマスターサーバ上のファイルの更新周期と、ミラーリングが行われる周期は一致しないため、マスターサーバ上では更新され、追加されたファイルがミラーサーバ上では更新されていない期間が存在するという問題が生じる。
【0005】
これに対して、ミラーサーバを含む全サーバの内容を高速に同期させることができるとともに、同期に伴う負荷を減らすことができるミラーサーバの同期方法が提案されている。
【0006】
【特許文献1】
特開平11−154110号公報
【0007】
【発明が解決しようとする課題】
このような従来技術においては、以下に示す問題が生じている。1トランザクションで複数のデータベースに対して、大量のデータ更新が行われた場合、トランザクションの完了を待ってから大量の更新データをネットワークを介して送信することになるため、マスタデータベースのデータ更新完了日時とミラーデータベースへの更新データ反映日時との時間差が更新データ量が多いほど大きくなる。
【0008】
また、更新データ量の小さいトランザクションが大量に発生した場合、更新データを送信するための通信回数が多くなり、ネットワークの負荷が高くなる。
また、ミラーデータベースへの更新処理回数も多くなりCPU負荷も高くなる。
【0009】
また、ネットワークの過負荷、ミラーデータベース更新側システムの異常(過負荷やシステムダウンなどによるREIPL(Re−Initial Program Loader)など)などで更新データが大量(マスタデータベースのデータ量より大)に滞留した場合、マスタデータベースとミラーデータベースの内容が一致するまで、長い時間がかかる。
【0010】
また、複数のミラーデータベースを同時に参照するアプリケーションにおいて、トランザクション単位の整合性がとれた状態か否かをチェックする処理を開発する必要がある。
また、トランザクション単位に順番にデータ反映処理(DB間のコード変換、DB反映処理)を行う方式では、トランザクションの数分、コード変換処理およびDB反映処理を起動する必要があるため、小さなデータを更新するトランザクションが大量に発生した場合、CPU負荷が高くなる。
【0011】
さらに、個々のデータベース単位に更新データを反映しているため、多くのデータベースの更新が同時に発生した場合、処理プロセスがCPU能力以上に起動され処理効率が悪くなる問題が発生する。
【0012】
本発明は、このような従来技術の問題に鑑みてなされたものである。すなわち、本発明が解決しようとする課題は、複数データベースの二重化システムにおいて、トランザクション単位のデータ更新処理と異常時のリカバリ処理をミラーデータベース側のシステムで保証して、マスタデータベース側の更新データをリアルタイムに転送可能とする二重化制御技術を提供することである。
【0013】
【課題を解決するための手段】
本発明は、上記課題を解決するために以下の手段を採用した。
【0014】
本発明に係る二重化制御技術は、トランザクション処理による複数の第1データベースへの複数の更新データを、複数の第2データベースに反映する二重化制御システムにおいて、前記第1データベース側でコンピュータにより実行されるプログラムであって、トランザクション処理を実行するステップと、前記トランザクション処理の更新データを前記第2データベースに反映するための制御情報を生成するステップと、前記トランザクション処理が完了する前に、前記第2データベースへ前記更新データと前記制御情報を含むデータを送信するステップとを実行させることを特徴とする。
【0015】
ここで、例えば第1データベースはマスタデータベースであり、第2データベースは、そのマスタデータベースに対応するミラーデータベースである。
【0016】
このようにすると、トランザクションで複数のデータベースに対し、大量のデータ更新が実行された場合、トランザクションの完了を待たずにマスタデータベースの更新処理と並行して、更新データを送信することができる。そのため、ミラーデータベースへ更新データを反映するときの遅延時間を短縮できる。
【0017】
また、本発明に係る二重化制御技術は、前記データが送信待ちである場合、前記データを送信する前に、複数の前記更新データを結合するステップを実行させる。
【0018】
このようにすると、更新データ量の小さいトランザクションを複数まとめて送信することができる。そのため、通信制御の負荷軽減と、ミラーデータベースへの一括反映が可能となる。
【0019】
また、本発明に係る二重化制御技術は、送信待ちの前記データが大量に滞留した場合、前記データの送信を中断するステップと、第1データベース上の全データを一括して送信するステップとを実行させる。
【0020】
このようにすると、更新データを送信して個々に反映する場合と比較して、最新のミラーデータベースへ更新するまでの更新時間の短縮が可能となる。
【0021】
また、本発明に係る二重化制御技術は、複数の第1データベースへの更新データを、複数の第2データベースに反映する二重化制御システムにおいて、前記第2データベース側でコンピュータにより実行されるプログラムであって、前記第1データベースから前記更新データおよび前記トランザクション処理の更新データを前記第2データベースに反映するための制御情報を受信するステップと、前記制御情報に基づいてトランザクション単位に前記更新データを組み立てるステップと、前記第2データベースへの前記更新データをトランザクション単位に反映するステップとを実行させる。
【0022】
また、本発明に係る二重化制御技術は、トランザクション単位で前記第2データベースの排他制御を開始するステップと、前記第2データベースの更新が完了した後に、前記排他制御を解除するステップとを実行させる。
【0023】
このようにすると、例えば複数のミラーデータベースを同時に参照する複数のアプリケーションにおいて、整合性がとれたデータをトランザクション単位で参照できる。
【0024】
また、本発明に係る二重化制御技術は、前記第2データベースへの更新処理を複数のプロセスで平行して行うステップを実行させる。
【0025】
このようにすると、滞留している複数のトランザクションの更新データをまとめて処理することができる。そのため、例えばコード変換処理やデータベース更新処理のCPU負荷を軽減することができるともに、更新データの反映時間を短縮することができる。
【0026】
さらに、本発明に係る二重化制御技術は、第2データベース数と同数のプロセスを実行できない場合、各プロセスの更新データの量が均等に近づくように、それぞれのプロセスが処理するデータベースを割り当てるステップを実行させる。
【0027】
このようにすると、データの更新時間の短縮とトランザクション単位の更新を保証するためのミラーデータベースの排他処理における同時待ち時間を短縮することができる。
【0028】
また、本発明はコンピュータに以上のいずれかの機能を実現させるプログラムを読み取り可能な記憶媒体に記憶したものであってもよい。
【0029】
【発明の実施の形態】
以下に図面を参照にして、本発明の好適な実施の形態を説明する。
<好適な実施の形態>
以下、図1から図16に基づいて本発明の好適な実施の形態に係る複数データベースの二重化制御システムについて説明する。図1は二重化制御のシステム構成を示す図であり、図2は業務アプリケーションの処理フローを示す図であり、図3はデータベース制御の処理フローを示す図であり、図4はデータベース制御処理における指示データの構成図であり、図5および図6は二重化データ採取・編集制御の処理フローを示す図であり、図7および図8は二重化データ採取・編集制御処理における指示データの構成図であり、図9は二重化データ送信制御の処理フローを示す図であり、図10は二重化データ送信制御処理の指示データ構成図であり、図11はマスタデータベース更新側のネットワーク制御の処理フローを示す図であり、図12はミラーデータベース更新側のネットワーク制御の処理フローを示す図であり、図13は二重化データ送信・組立制御の処理フローを示す図であり、図14は二重化データ送信・組立制御処理の指示データの構成図であり、図15は二重化データ反映制御の処理フローを示す図であり、図16はデータベース更新の処理フローを示す図である。
<二重化制御のシステム構成>
図1を参照して、複数データベースの二重化制御システムのシステム構成を説明する。
【0030】
本システムは、ネットワークを介して接続されるマスターデータベース更新システムとミラーデータベース更新システムとから構成される。
【0031】
マスターデータベース更新システムは、業務アプリケーション部1と、DB制御処理部2と、リアルタイム二重化制御処理部3と、ネットワーク制御処理部4とを含む。そして、さらにリアルタイム二重化制御処理部3では、処理1として、二重化データ採取・編集制御処理が実行され、処理2として、二重化データ採取・編集制御処理が実行される。
【0032】
ミラーデータベース更新システムは、ネットワーク制御処理部5と、二重化データ送信制御処理部6とを含む。そして、さらにリアルタイム二重化処理部6では、処理3として、二重化データ受信・組立制御処理が実行され、処理4として、二重化データ反映制御処理が実行され、処理5として、DB更新処理が実行される。
【0033】
業務アプリケーション部1は、既存のユーザ作成プログラムであり、各業務の処理でマスタデータベース7(図1のマスタDB1からDBn)を更新する。
【0034】
そして、DB制御処理部2は、各システムが提供するデータベース7を更新するプログラムであり、データベース7の更新が発生した場合、更新データを二重化データ採取・編集制御処理部31に通知する機能を持つ。
【0035】
そして、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32は、複数データベースのリアルタイム二重化制御を実現するための新規プログラムを含む処理部である。これらは、以下で詳しく説明する。
【0036】
そして、マスタデータベース更新システムとミラーデータベース更新システム上のネットワーク制御処理部4,5は、ネットワーク(LANなど)を介してデータの受け渡しを行う各々のシステム(データベース更新システムおよびミラーデータベース更新システム)が標準に提供する通信プログラムを有する処理部である。
【0037】
そして、二重化データ受信・組立制御処理部33、二重化データ反映制御処理部34とDB更新制御処理部35は、複数データベースのリアルタイム二重化制御を実現するためのプログラムを有する処理部である。これらは、以下で詳しく説明する。
【0038】
次に、それぞれの処理部における処理について、図2から図16を参照にして説明する。
<業務アプリケーションの処理フロー>
図2は、業務アプリケーション部1が実行するデータベース更新処理部分を抽出したフローチャートである。また、業務アプリケーション処理は、既存のユーザ作成プログラムで実行され、各業務の処理でマスタデータベース7を更新する。
【0039】
最初に、業務アプリケーション部1はトランザクション開始処理を実行する(S201)。
【0040】
そして、業務アプリケーション部1はDB制御処理部2にトランザクションスタート指示を通知して、データベース制御処理を起動させる(S202)。なお、DB制御処理部2については、図3で詳しく説明する。
【0041】
次に、業務アプリケーション部1は、DB1についてマスタデータベース更新処理を実行する(S203)。
【0042】
そして、業務アプリケーション部1は、DB制御処理部2にDB1の更新指示を通知して、データベース制御処理を起動させる(S204)。
【0043】
以下、DB1からDBnで示される各々のデータベースに関して、マスタデータベース更新処理を実行し(S205)、データベース制御処理を起動させ(S206)、同様の処理を繰り返す。
【0044】
そして、業務アプリケーション部1はトランザクション終了処理を実行する(S207)。
【0045】
最後に、業務アプリケーション部1はデータベース制御処理部2にトランザクションエンド指示を通知して、データベース制御処理を起動させて(S208)処理を終了する。
<データベース制御の処理フロー>
次に、業務アプリケーション処理部1によって起動させられたデータベース制御処理について説明する。
【0046】
図3は、DB制御処理のフローチャートである。このデータベース制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムによって実行される。このプログラムをDB制御処理部2と呼ぶ。
【0047】
DB制御処理部2は、業務アプリケーション部1より依頼された各々の処理が実行される前に、依頼された要求の制御情報やDB更新データをコピーし、二重化データ採取・編集制御処理部31に通知する処理を実行する。
【0048】
最初に、DB制御処理部2は業務アプリケーション部1により依頼された要求がトランザクションスタートであるか否かを判定する(S301)。
【0049】
ここで、DB制御処理部2は、業務アプリケーション部1による要求がトランザクションスタート指示であると判定した場合には、図4に示すトランザクションスタート指示の情報を作成する(S302)。
【0050】
そして、DB制御処理部2は、二重化データ採取・編集処理部31を起動する(S303)。次に、DB制御処理部2は、二重化データ採取・編集処理部31にトランザクション開始処理を実行させる(S304)。
【0051】
一方S301で、DB制御処理部2は、業務アプリケーション部1により依頼された要求がトランザクションスタートでないと判定した場合には、業務アプリケーション部1による要求がDB更新指示であるか否かを判定する(S305)。
【0052】
ここで、DB制御処理部2は、業務アプリケーション部1による要求がDB更新指示であると判定した場合には、図4に示すDB更新指示の情報を作成する(S306)
そして、DB制御処理部2は、二重化データ採取・編集処理部31を起動する(S307)。それから、DB制御処理部2は、二重化データ採取・編集処理部31にマスタDB更新処理を実行させる(S308)。ただし、このマスタDB更新処理は既存の処理である。
【0053】
一方S305で、DB制御処理部2は、業務アプリケーション部1により依頼された要求がDB更新指示でないと判定した場合には、業務アプリケーション部1による要求がトランザクションエンドであるか否かを判定する(S309)。
【0054】
ここで、DB制御処理部2は、業務アプリケーション部1による要求がトランザクションエンドであると判定した場合には、図4に示すトランザクションエンド指示の情報を作成する(S310)。
【0055】
そして、DB制御処理部2は、二重化データ採取・編集処理部31を起動する(S311)。次に、DB制御処理部2は、二重化データ採取・編集処理部31にトランザクション終了処理を実行させる(S312)。
【0056】
一方S309で、DB制御処理部2は、業務アプリケーション部1により依頼された要求がトランザクションエンドでないと判定した場合には、業務アプリケーション部1による要求が異常発生であるか否かを判定する(S313)。
【0057】
ここで、DB制御処理部2は、業務アプリケーション部1による要求が異常発生であると判定した場合には、図4に示す異常終了指示の情報を作成する(S314)。
【0058】
そして、DB制御処理部2は、二重化データ採取・編集処理部31を起動する(S315)。次に、DB制御処理部2は、二重化データ採取・編集処理部31にマスタDB復旧処理を実行させる(S316)。
【0059】
一方S313で、DB制御処理部2は、業務アプリケーション部1により依頼された要求が異常発生でないと判定した場合には、処理を終了する。
【0060】
ここで、図4を参照して、データベース制御処理における各々の指示データの構成について説明する。
【0061】
トランザクションスタート指示のデータは、制御情報フィールドとデータ長とその他の情報フィールドから構成される。このデータは、二重化データ採取・編集制御処理部31にトランザクションの開始を指示する。制御情報フィールドは8ビットで表され、先頭を1とする。トランザクションスタート指示のデータにおいて、制御情報フィールドの他のビットはXで表され、いわゆる「don’t care」である。データ長フィールドはその後に続くデータの長さを表し、ここではnnとする。その他の情報フィールドは、業務アプリケーション名、ミラーDB更新システムの情報などのデータを含む。なお、ミラーDB更新システムの情報は、複数のシステムに反映する場合には複数のシステムの情報を含む。
【0062】
DB更新指示データは、制御情報、テーブル名長、更新テーブルの名前、データ長とDB更新データの各フィールドから構成される。このデータは二重化データ採取・編集制御処理部31にデータベースの更新を指示する。制御情報フィールドは8ビットで表され、5ビット目を1とする。テーブル名長フィールドはその後に続く更新テーブルの名前のデータ長を表し、ここではttとする。更新テーブルとはデータベース上の更新されたテーブルをいう。データ長フィールドはその後に続くDB更新データの長さを表し、ここではnnとする。
【0063】
トランザクションエンド指示データは、トランザクション処理の終了を指示するため制御情報のみを含む。そのためデータ長は0である。制御情報フィールドは8ビットで表され、2ビット目を1とする。
【0064】
異常終了指示データは、二重化データ採取・編集制御処理部31に異常終了を通知するため制御情報のみを含む。そのためデータ長は0である。制御情報フィールドは8ビットで表され、8ビット目を1とする。
<二重化データ採取・編集制御の処理フロー>
図5及び図6は、二重化データ採取・編集制御処理のフローチャートである。この二重化データ採取・編集制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムによって実行される。このプログラムを二重化データ採取・編集制御処理部31と呼ぶ。
【0065】
まず図5を参照して、二重化データ採取・編集制御処理について説明する。
【0066】
最初に、二重化データ採取・編集制御処理部31はDB制御処理部2により依頼された要求がトランザクションスタートであるか否かを判定する(S501)。ここで、二重化データ採取・編集制御処理部31は、DB制御処理部2による要求がトランザクションスタート指示であると判定した場合には、図7に示すトランザクション制御情報を制御表に設定する(S502)。そして、二重化データ採取・編集制御処理部31は処理を終了する。
【0067】
一方S501で、二重化データ採取・編集制御処理部31は、DB制御処理部2により依頼された要求がトランザクションスタートでないと判定した場合には、DB制御処理部2による要求がDB更新指示であるか否かを判定する(S503)。
【0068】
ここで、二重化データ採取・編集制御処理部31は、DB制御処理部2による要求がDB更新指示であると判定した場合には、図7に示すような制御表に設定されているトランザクション制御情報を付加してDB更新要求を作成して(S504)、処理を図6のBに進める。
【0069】
一方S503で、二重化データ採取・編集制御処理部31は、DB制御処理部2により依頼された要求がDB更新指示でないと判定した場合には、DB制御処理部2による要求がトランザクションエンド指示であるか否かを判定する(S505)。
【0070】
ここで、二重化データ採取・編集制御処理部31は、DB制御処理部2による要求がトランザクションエンド指示であると判定した場合には、図7に示すトランザクションエンド要求を作成し(S506)、処理を図6のBに進める。
【0071】
一方S505で、二重化データ採取・編集制御処理部31は、DB制御処理部2により依頼された要求がトランザクションエンド指示でないと判定した場合には、DB制御処理部2による要求が異常発生であるか否かを判定する(S507)。
【0072】
ここで、二重化データ採取・編集制御処理部31は、DB制御処理部2による要求が異常発生であると判定した場合には、異常発生通知(トランザクションキャンセル通知)を作成し(S508)、処理を図6のBに進める。
【0073】
一方S505で、二重化データ採取・編集制御処理部31は、DB制御処理部2により依頼された要求が異常発生でないと判定した場合には、DB制御処理部2による要求がDB反映完了通知であるか否かを判定する(S509)。
【0074】
ここで、二重化データ採取・編集制御処理部31は、DB制御処理部2による要求がDB反映完了通知であると判定した場合には、送信が完了したデータをログファイルから削除し(S510)、処理を図6のCに進める。
【0075】
次に図6を参照して、二重化データ採取・編集制御処理を引き続き説明する。
【0076】
図6のBの処理は、DB更新要求(S504)、トランザクションエンド要求(S506)、および異常発生通知要求(S508)が作成された後に実行される。
【0077】
まず、二重化データ採取・編集制御処理部31は、作成した上記要求を保留キューの最後へキューイングし(S601)、ログファイルに格納する(S602)。この要求のキューイングについては、図7で説明する。
【0078】
次に、二重化データ採取・編集制御処理部31は送信可能状態か否かを判定する(S603)。このS603の処理は、送信が完了したデータをログファイルから削除した(S510)後にも実行される。なお、送信可能状態か否かの判定方法については、図7の*10に示すシステムの共有メモリの値をチェックして判定する。
【0079】
ここで、二重化データ採取・編集制御処理部31は、送信不可であると判定した場合には、処理を終了する。
【0080】
一方、二重化データ採取・編集制御処理部31は、送信可能であると判定した場合には、保留データが複数存在するか否かを判定する(S604)。ここで、二重化データ採取・編集制御処理部31は、保留データが複数存在しないと判定した場合には、二重化データ送信制御部32を起動し、ネットワーク制御部4に送信要求を依頼する(S607)。そして、二重化データ採取・編集制御処理部31は、処理をS608に進める。
【0081】
一方S604で、二重化データ採取・編集制御処理部31は、保留データが複数存在すると判定した場合には、保留データ長が保留可能最大長(β)より長いか否かを判定する(S605)。ここで、二重化データ採取・編集制御処理部31は、保留データ長が保留可能最大長(β)より長いと判定した場合、リアルタイム二重化処理の終了と再開処理を実施し(S609)、処理を終了する。
【0082】
このS609の処理は、更新データが所定値を越えたとき、更新データの送信を中断し、マスタデータベースの全データを一括して送信し、ミラーデータベースを再度作り直す処理である。
【0083】
まず、二重化データ採取・編集制御処理部31は、ミラーデータベース更新システムに二重化処理の中断を通知する。この通知を受けて、ミラーデータベース更新システムでは、ミラーデータベースのデータが削除される。
【0084】
次に、二重化データ採取・編集制御処理部31は、マスタデータベースの更新データを一括して抽出し、ミラーデータベース更新システムに送信する。
【0085】
そして、ミラーデータベース更新システムでは、一括して送信された更新データに基づいて、ミラーデータベースは再度作成される。
【0086】
その後、二重化データ採取・編集制御処理部31は、ミラーデータベース更新システムに二重化処理の再開を通知し、二重化処理を再開する。すなわち、二重化データ採取・編集制御処理部31は、リアルタイム二重化処理の終了と再開処理を終了する。
【0087】
一方S605で、二重化データ採取・編集制御処理部31は、保留データ長が保留可能最大長(β)より長くないと判定した場合、
二重化データ採取・編集制御処理部31は、要求(DB更新要求、トランザクションエンド要求、あるいは異常発生通知要求)をキューより取り出し最大送信データ長(α)の要求に組み立て直す(S606)。
【0088】
そして、二重化データ採取・編集制御処理部31は、二重化データ送信制御部32を起動し、ネットワーク制御部4に送信要求を依頼する(S607)。
【0089】
その後、二重化データ採取・編集制御処理部31は、保留データがまだ存在するか否かを判定する(S608)。この処理は、S604の処理で、二重化データ採取・編集制御処理部31が保留データは複数存在しないと判定して、ネットワーク制御部4に送信要求を依頼した(S607)後にも実行される。
【0090】
ここで、二重化データ採取・編集制御処理部31は、制御表の中に保留キューが存在しないと判定した場合には、処理を終了する。
【0091】
一方、二重化データ採取・編集制御処理部31は、制御表の中に保留キューがまだ存在すると判定した場合には、処理をS603に戻し、保留データが存在しなくなるまで繰り返す。
【0092】
図7の*5に示す制御表には、トランザクション情報として、保留キューの先頭と最後、業務アプリケーションの情報、相手システムの情報が設定される。すなわち、それぞれの情報のデータは、メモリなどの記憶領域に格納されており、制御表にはそのアドレス情報が含まれる。
【0093】
また、この制御表はトランザクションスタート指示を受けて設定され、ログファイル上に格納される。なお、複数のミラーデータベースを作成する場合には相手システム情報フィールドをさらに追加する。
【0094】
ここで業務アプリケーションの情報とは、アプリケーション名など更新したデータベース側のアプリケーションの情報をさす。
【0095】
また相手システムの情報とは、システム名や最大送信データなどミラーデータベース側のシステム情報をさす。
【0096】
DB更新要求データは、業務アプリケーション情報、相手システム情報、制御情報、テーブル名長、更新テーブルの名前、データ長、更新データから構成される。この要求データは、二重化データ採取・編集部31がDB制御処理部2からの指示に従って、図7の*5の制御表を参照して作成する。ここで業務アプリケーション情報と相手システムは、ログファイル上に格納される制御表を参照して作成される。また、相手システム情報フィールドは、複数のミラーデータベースを作成する場合には追加される。
【0097】
トランザクションエンド要求データは、業務アプリケーション情報、相手システム情報、制御情報から構成される。二重化データ採取・編集制御処理部31は、DB制御処理部2からトランザクションエンド指示を受けて、制御表よりトランザクション情報をコピーし、トランザクションエンド要求データを作成する。
【0098】
異常発生通知要求データは、業務アプリケーション情報、相手システム情報、制御情報から構成される。二重化データ採取・編集制御処理部31は、DB制御処理部2から異常発生通知を指示を受けて、トランザクションをキャンセルすると共に、制御表よりトランザクション情報をコピーし、トランザクションエンド要求データを作成する。
【0099】
次に、図7を参照して、制御表への保留キューのキューイングを説明する。
【0100】
それぞれの要求は、制御表の保留キューの最後にキューイングされる。このとき、キューが空の場合には、そのままその要求を保留キューから取り出す。一方、キューが空でない、つまりキューに他の要求がある場合には、保留キューの最後にキューイングする。この処理は、図5での各要求(DB更新要求、トランザクションエンド要求、および異常発生要求)を作成した後、S601で実行される処理である。
【0101】
図8を参照して、二重化データ採取・編集制御処理部31が図6のS603の処理で実行する送信可能状態の判定方法について説明する。
【0102】
二重化データ採取・編集制御処理部31は、共有メモリの値で送信可能状態を判定する。この共有メモリは二重化データ採取・編集制御処理部31と二重化データ送信制御処理32との間でアクセスすることができる。
【0103】
本実施の形態においては、送信可な場合の共有メモリの値を「1」とし、送信不可な場合の共有メモリの値を「0」とする。なお、送信可能状態の初期値は「1」、すなわち送信可である。
【0104】
また、この送信可能状態は二重化データ送信制御部32によって設定される。
【0105】
次に、保留キューからの各要求の取り出し方について説明する。この処理は図6のS606において実行される処理である。
【0106】
まず、保留キューが空の場合には、二重化データ採取・編集制御処理部31は無条件に要求を取り出す。
【0107】
一方、保留キューが空でない、つまり保留キューに他の要求が存在する場合には、二重化データ採取・編集制御処理部31は、各要求のデータ長を調べ、最大送信データ長(α)以下となる要求を複数まとめて取り出す。
【0108】
このため複数の要求が待たされていた場合、最大送信データ長となるように複数のデータを組み立てて送信することが可能となる。
<二重化データ送信制御の処理フロー>
図9は、二重化データ送信制御処理のフローチャートである。この二重化データ送信制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムである。このプログラムを二重化データ送信制御処理部32と呼ぶ。
【0109】
二重化データ送信制御処理部32は、二重化データ採取・編集制御処理部31が依頼した各要求の送信をネットワーク制御部4に依頼する。
【0110】
また、ネットワーク制御部4が通知した各通知(送信完了、DB反映完了通知)を二重化データ採取・編集制御処理部31に通知する。
【0111】
最初に、二重化データ送信制御処理部32は依頼された要求が送信要求であるか否かを判定する(S901)。ここで、送信要求とは、二重化データ採取・編集制御処理部31からのDB更新要求、トランザクションエンド要求、異常発生通知要求のうちのいずれかをさす。
【0112】
ここで、二重化データ送信制御処理部32は、要求が送信要求であると判定した場合には、ネットワーク制御処理部4を起動し、送信を依頼する(S902)。
【0113】
そして、二重化データ送信制御処理部32は、ネットワーク制御処理部4が送信可能か否かを判定する(S903)。
【0114】
ここで、二重化データ送信制御処理部32は、ネットワーク制御処理部4が送信可能であると判定した場合には、処理を終了する。
【0115】
一方S903で、二重化データ送信制御処理部32は、ネットワーク制御処理部4が送信可能でないと判定した場合には、送信不可状態を設定して(S904)、処理を終了する。すなわち、ネットワーク制御処理部4への送信依頼が上限値に達したとして、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32との間でアクセスできる共有メモリ上の制御表に図10に示すような送信不可を設定して制御を終了する。
【0116】
一方S901で、二重化データ送信制御処理部32は、要求が送信要求でないと判定した場合には、受信情報が送信完了通知であるか否かを判定する(S905)。
【0117】
ここで、二重化データ送信制御処理部32は、受信情報が送信完了通知であると判定した場合には、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32との間の共有メモリ上の制御表に送信可状態を設定し(S906)、二重化データ採取・編集制御処理を起動する(S907)。
【0118】
一方S905で、二重化データ送信制御処理部32は、受信情報が送信完了通知でないと判定した場合には、受信情報がDB反映完了通知であるか否かを判定する(S908)。
【0119】
ここで、二重化データ送信制御処理部32は、受信情報がDB反映完了通知であると判定した場合には、図10に示すDB反映完了通知を作成し(S909)、制御をS907の処理に進める。
【0120】
一方S908で、二重化データ送信制御処理部32は、受信情報がDB反映完了通知でないと判定した場合には、受信情報が送信不可通知であるか否かを判定する(S910)。
【0121】
ここで、二重化データ送信制御部32は、受信情報が送信不可通知であると判定した場合には、送信不可状態を設定する(S904)。すなわち、ネットワークに異常が発生したとして、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32との間でアクセスできる共有メモリ上の制御表(図7の*5)に図10に示すような送信不可を設定する。
【0122】
そして、二重化データ送信制御処理部32は、受信情報が送信可通知であるか否かを判定する(S911)。
【0123】
ここで、二重化データ送信制御処理部32は、受信情報が送信可通知であると判定した場合には、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32との間でアクセスできる共有メモリ上の制御表に送信可状態を設定する(S906)。すなわち、ネットワークが復旧したとして、二重化データ採取・編集制御処理部31と二重化データ送信制御処理部32との間でアクセスできる共有メモリ上の制御表に図10に示すような送信可を設定する。
【0124】
そして、二重化データ採取・編集制御処理を起動する(S907)。
【0125】
一方S911で、二重化データ送信制御処理部32は、受信情報が送信可通知でないと判定した場合には、処理を終了する。
【0126】
次に、図10を参照して、二重化データ送信制御処理における通知データについて説明する。
【0127】
送信完了通知は、二重化データ受信・組立制御処理部63が二重化データ採取・編集制御処理部31にネットワークを介して送信する通知であり、ミラーデータベース更新システムへの更新データの送信が完了したことを示す。
【0128】
DB反映完了通知は、ミラーデータベース更新システムが更新データの反映処理が完了したことを示す通知である。
【0129】
送信不可通知は、送信依頼が上限値に達したり、ネットワークに異常が発生したりしたときなどに設定される。この通知はミラーデータベース更新システムへの更新データの送信が不可状態であることを示す。
【0130】
送信可通知は、ネットワークに異常が発生した後、復旧できたときなどに設定される。この通知はミラーデータベース更新システムへの更新データの送信が可能状態であることを示す。
【0131】
DB反映完了通知は、ミラーデータベース更新システムから受信した通知がDB反映完了通知であることを受けて、二重化データ採取・編集制御処理部31にミラーデータベース更新システムのDB反映処理が完了したことを示すための通知である。
<ネットワーク制御の処理フロー>
図11および図12を参照して、マスタデータベース更新側システムとミラーデータベース更新側システムのネットワーク制御処理部4,5について説明する。
【0132】
ネットワーク制御処理部4,5は、ネットワーク(LANなど)を介してデータの受け渡しを行うため各々のシステム(データベース更新システムおよびミラーデータベース更新システム)が標準に提供する通信プログラムである
まず図11を参照して、マスタデータベース更新側システムにおけるネットワーク制御処理部4について説明する。
【0133】
ネットワーク制御処理4は、二重化データ送信制御部32から依頼されたデータをネットワーク経由で相手システム(ミラーデータベース更新側システムのネットワーク制御処理5)に送信する。
【0134】
また、ネットワーク制御処理4は、相手システム(ミラーデータベース更新側システムのネットワーク制御処理5)から受信したデータを二重化データ送信制御処理部32に通知する。この相手システムから受信するデータは、相手システムの受信通知と相手側DBへの反映完了を通知するためのデータである。
【0135】
さらに、ネットワーク制御処理4は、ネットワーク異常またはネットワーク復旧を二重化データ送信制御処理部32に通知する。
次に図12を参照して、ミラーデータベース更新側システムにおけるネットワーク制御処理部5について説明する。
【0136】
ネットワーク制御処理5は、相手システム(マスタデータベース更新側システムのネットワーク制御処理部5)から受信したデータを二重化データ受信・組立制御処理部63に通知する。この相手システムから受信するデータは、トランザクションスタートデータ、DB更新データ、およびトランザクションエンドデータである。
【0137】
また、ネットワーク制御処理5は、DB更新データを受信したことをネットワーク経由で相手システム(マスタデータベース更新側システムのネットワーク制御処理4)に通知する。
【0138】
さらに、ネットワーク制御処理5は、二重化データ組立制御処理部63から依頼されたデータをネットワーク経由で相手システム(マスタデータベース更新側システムのネットワーク制御処理4)に送信する。この依頼データはDB反映が完了したことを通知するためのデータである。
<二重化データ送信・組立制御の処理フロー>
図13は、二重化データ受信・組立制御処理のフローチャートである。この二重化データ受信・組立制御処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムである。このプログラムを二重化データ受信・組立制御処理部63と呼ぶ。
【0139】
最初に、二重化データ受信・組立制御処理部63は受信した情報が異常発生通知であるか否かを判定する(S1301)。
【0140】
ここで、二重化データ受信・組立制御処理部63は、受信した情報が異常発生であると判定した場合には、組立処理中のデータを破棄する(S1302)。そして、二重化データ受信・組立制御処理部63は、処理を終了する。
【0141】
一方S1301で、二重化データ受信・組立制御処理部63は、受信した情報が異常発生でないと判定した場合には、トランザクションスタートであるか否かを判定する(S1303)。
【0142】
ここで、二重化データ受信・組立制御処理部63は、受信した情報がトランザクションスタートであると判定した場合には、図14の*17に示すデータ組立処理環境を設定する(S1304)。すなわち、二重化データ受信・組立制御処理部36は、トランザクション単位の組立を行う環境を設定する。このデータ組立用の制御キューについては図14で詳しく説明する。
【0143】
一方S1303で、二重化データ受信・組立制御処理部63は、受信した情報がトランザクションスタートでないと判定した場合には、受信した情報がDB更新データであるか否かを判定する(S1305)。
【0144】
ここで、二重化データ受信・組立制御処理部63は、受信した情報がDB更新データであると判定した場合には、データ組立処理を実施し、図14の*17に示す組立キューにキュイングする(S1306)。
【0145】
一方S1305で、二重化データ受信・組立制御処理部63は、受信した情報がDB更新データでないと判定した場合には、受信した情報がトランザクションエンドであるか否かを判定する(S1307)。
【0146】
ここで、二重化データ受信・組立制御処理部63は、受信した情報がトランザクションエンドであると判定した場合には、図4に示す組立キューのデータを結合し、保留キューにキューイングする(S1308)。
【0147】
そして、二重化データ受信・組立制御処理部63は、DB更新処理中であるか否かを判定する(S1309)。
【0148】
ここで、DB更新処理中であると判定した場合には、処理を終了する。
【0149】
一方S1309で、二重化データ受信・組立制御処理部63は、DB更新処理中ではないと判定した場合には、保留キューにキューイングし、データベースの反映を待機させ、処理をS1314に進める。
【0150】
そして、二重化データ受信・組立制御処理部63は保留データを取り出す。このとき、保留データが複数ある場合には、組み立て最大サイズ(γ)に達するまで、複数のトランザクションのデータを結合する(S1314)。
【0151】
そして、二重化データ受信・組立制御処理部63は、二重化データ反映制御処理部64を起動させ、データの反映を依頼する(S1315)。そして、二重化データ受信・組立制御処理部63は処理を終了する。
【0152】
一方S1307で、二重化データ受信・組立制御処理部63は、受信した情報がトランザクションエンドでないと判定した場合には、受信した情報がDB更新処理完了通知であるか否かを判定する(S1310)。
【0153】
ここで、二重化データ受信・組立制御処理部63は、受信した情報がDB更新処理完了通知でないと判定した場合には、処理を終了する。
【0154】
一方S1310で、二重化データ受信・組立制御処理部63は、受信した情報がDB更新処理完了通知であると判定した場合には、DB反映完了通知を作成する(S1311)。
【0155】
そして、二重化データ受信・組立制御処理部63は、ネットワーク制御処理部5を起動し、送信を依頼する(S1312)。
【0156】
また、データ組立用の制御キューを作成して、保留キューにデータがあるか否かを判定する(S1313)。
【0157】
ここで、保留キューにデータがないと判定した場合には、二重化データ受信・組立制御処理部63は処理を終了する。
【0158】
一方S1313で、保留キューにデータがあると判定した場合には、二重化データ受信・組立制御処理部63は保留データを取り出す。このとき、保留データが複数ある場合には、組み立て最大サイズ(γ)に達するまで、複数のトランザクションのデータを結合する(S1314)。
【0159】
そして、二重化データ受信・組立制御処理部63は、二重化データ反映制御処理部64を起動させ、データの反映を依頼する(S1315)。そして、二重化データ受信・組立制御処理部63は処理を終了する。
【0160】
図14を参照して、データ組立用の制御キューの作成を説明する。
二重化データ受信・組立制御処理部63は、トランザクションスタート通知を受けて、更新データの組立処理環境を設定する。すなわち、二重化データ受信・組立制御処理部63は、トランザクションスタート通知により図14の*17の制御キューを作成する。
【0161】
この制御キューは組立キューの先頭と最後、保留キューの先頭と最後、相手システム情報などから構成される。
【0162】
この組立キューはトランザクションエンド通知を受信するまでの間の一時待ち状態のキューである。そして、組立キューのデータはトランザクションエンド通知を受信することにより結合される。この結合されたデータはトランザクション単位の更新データとなり、保留キューへ移動される。
【0163】
また、保留キューはトランザクション単位に組み立てられた更新データが待ち状態のキューである。
<二重化データ反映制御の処理フロー>
図15は、二重化データ反映制御処理のフローチャートである。この二重化データ反映制御処理は複数データベースのリアルタイム二重化制御を実現するプログラムにより実行される。このプログラムを二重化データ反映制御処理部46と呼ぶ。
【0164】
最初に、二重化データ反映制御処理部64は、受信した情報がDB更新データの反映依頼であるか否かを判定する(S1501)。
【0165】
ここで、二重化データ反映制御処理部64は、受信した情報がDB更新データの反映依頼であると判定した場合には、DB更新データ数がDB更新処理の起動リミットを越えたか否かを判定する(S1502)。すなわち、二重化データ反映制御処理部64は、更新データに含まれるDBの数を調べる。そして、更新データの反映依頼を受けたDBの数がDB更新処理部64の起動リミット以下か否かを判定する。
【0166】
ここで、DB更新データ数がDB更新処理の起動リミットを越えた場合には、データ長の大きい順にDB更新データを並び替え(S1503)、1番小さいデータと2番目に小さいデータを結合する(S1504)。そして、S1502に戻って、DB更新データ数がDB更新処理の起動リミットを越えるまで処理を繰り返す。
【0167】
一方S1502で、二重化データ反映制御処理部64は、DB更新データ数がDB更新処理の起動リミットを越えてないと判定した場合には、DB更新データを1つ取り出す(S1505)。そして、DB更新処理部65を起動させる(S1506)。
【0168】
そして、DB更新データはまだあるか否かを判定する(S1507)。判定の結果、DB更新データがなければ、二重化データ反映制御処理部64は処理を終了する。一方判定の結果、DB更新データがまだ存在するならば、二重化データ反映制御処理部64は処理をS1505に戻して、DB更新データがなくなるまで繰り返す。
【0169】
一方S1501で、二重化データ反映制御処理部64は、DB更新データの反映依頼でない判定した場合には、DB更新処理の完了通知であるか否かを判定する(S1508)。
【0170】
ここで、受信した情報がDB更新処理の完了通知である場合には、二重化データ反映制御処理部64は、全てのDB更新処理が完了したか否かを判定する(S1509)。
【0171】
ここで、二重化データ反映制御処理部64は、全てのDB更新処理が完了したと判定した場合には、更新するDBの排他制御を解除する(S1510)。すなわち、トランザクション単位で複数データベースの更新処理の完了の同期を取るため、該当DBすべての排他処理は、全てのプロセスが完了して解除する。
【0172】
そして、二重化データ反映制御処理部64はDB更新処理完了通知を作成する(S1511)。それから、二重化データ反映制御処理部64は、二重化データ受信・組立制御処理部63を起動し(S1512)、処理を終了する。
【0173】
一方S1508で、二重化データ反映制御処理部64は、DB更新処理の完了通知でない判定した場合には、処理を終了する。
【0174】
またS1509で、二重化データ反映制御処理部64は、全てのDB更新処理が完了したと判定した場合には、処理を終了する。
<データベース更新の処理フロー>
図16は、DB更新処理のフローチャートである。このDB更新処理は複数データベースのリアルタイム二重化制御を実現するためのプログラムにより実行される。このプログラムをDB更新処理部65と呼ぶ。なお、この処理は複数起動することができる。また、DB更新処理を起動する数は、システムの能力に依存するため、この処理能力はチューニング可能とする。
【0175】
また、DB更新処理部65は二重化データ反映制御処理部64により起動され、データベース毎にデータを取り出しコード変換とDBの更新処理を実行する。
【0176】
最初に、二重化データ反映制御処理部64はDB更新データを1つ取り出し(S1601)、コード変換処理を実行する(S1602)。
【0177】
そして、二重化データ反映制御処理部64は、更新するDBの排他制御を開始する(S1603)。なお、トランザクション単位で複数データベースの更新処理の完了の同期を取るため、該当DBすべての排他処理は、全てのプロセスが完了するまで解除しない。
【0178】
そして、二重化データ反映制御処理部64は、DB更新を実行する(S1604)。
【0179】
まず、二重化データ反映制御処理部64は、DB更新データはまだあるか否かを判定する(S1605)。
【0180】
ここで、二重化データ反映制御処理部64は、DB更新データはまだあると判定した場合には、S1601に戻ってDB更新データがなくなるまで処理を繰り返す。
【0181】
一方S1605で、DB更新データがないと判定した場合には、DB更新処理完了通知を作成する(S1606)。そして、二重化データ反映制御処理部64は、二重化データ反映制御処理部64を起動させ(S1607)、処理を終了する。
<コンピュータ読み取り可能な記憶媒体>
上記実施の形態のいずれかの処理をコンピュータに実行させるプログラムをコンピュータが読み取り可能な記憶媒体に記憶することができる。そして、コンピュータに、この記憶媒体のプログラムを読み込ませて実行させることにより、上記実施の形態に示した二重化処理の機能を提供させることができる。
【0182】
ここで、コンピュータが読み取り可能な記憶媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータから読み取ることができる記憶媒体をいう。このような記憶媒体のうちコンピュータから取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、DAT、8mmテープ、メモリカード等がある。
【0183】
また、コンピュータに固定された記録媒体としてハードディスクやROM(リード・オンリー・メモリ)等がある。
【0184】
なお、上記実施の形態は本発明の範囲をなんら限定するものではなく、当業者が理解できる範囲において適宜、各種の変形の態様があり得る。
<その他>
さらに、本実施の形態は以下の発明を開示する。
【0185】
(付記1)トランザクション処理による複数の第1データベースへの複数の更新データを、複数の第2データベースに反映する二重化制御システムにおいて、前記第1データベース側でコンピュータにより実行されるプログラムであって、
トランザクション処理を実行するステップと、
前記トランザクション処理の更新データを前記第2データベースに反映するための制御情報を生成するステップと、
前記トランザクション処理が完了する前に、前記第2データベースへ前記更新データと前記制御情報を含むデータを送信するステップとを実行させるプログラム。
【0186】
(付記2)更新処理の途中で異常が発生した場合、第1データベースを更新前の状態に復旧するステップと、
第2データベースに異常を通知するステップとを実行させる付記1に記載のプログラム。
【0187】
(付記3)前記データが送信待ちである場合、前記データを送信する前に、複数の前記更新データを結合するステップを実行させる付記2に記載のプログラム。
【0188】
(付記4)送信待ちの前記データが大量に滞留した場合、前記データの送信を中断するステップと、
第1データベース上の全データを一括して送信するステップとを実行させる付記3に記載のプログラム。
【0189】
(付記5)複数の第1データベースへの更新データを、複数の第2データベースに反映する二重化制御システムにおいて、前記第2データベース側でコンピュータにより実行されるプログラムであって、
前記第1データベースから前記更新データおよび前記トランザクション処理の更新データを前記第2データベースに反映するための制御情報を受信するステップと、
前記制御情報に基づいてトランザクション単位に前記更新データを組み立てるステップと、
前記第2データベースへの前記更新データをトランザクション単位に反映するステップとを実行させるプログラム。
【0190】
(付記6)前記第2データベースへの前記更新データをトランザクション単位に反映する前記ステップは、
前記複数の第1データベース毎に前記データを取り出すステップと、
コード変換処理を実行するステップとをさらに実行させる付記5記載のプログラム。
【0191】
(付記7)トランザクション単位で前記第2データベースの排他制御を開始するステップと、
前記第2データベースの更新が完了した後に、前記排他制御を解除するステップとを実行させる付記6に記載のプログラム。
【0192】
(付記8)前記更新データが処理待ちである場合、前記更新データを結合するステップと、
前記結合した更新データを一括して処理するステップとを実行させる付記7に記載のプログラム。
【0193】
(付記9)前記第2データベースへの更新処理を複数のプロセスで平行して行うステップを実行させる付記8に記載のプログラム。
【0194】
(付記10)第2データベース数と同数のプロセスを実行できない場合、各プロセスの更新データの量が均等に近づくように、それぞれのプロセスが処理するデータベースを割り当てるステップを実行させる付記9に記載のプログラム。
【0195】
【発明の効果】
以上で説明したように、本発明は、複数データベースの二重化システムにおいて、トランザクション単位のデータ更新処理と異常時のリカバリ処理をミラーデータベース側のシステムで保証して、マスタデータベース側の更新データをリアルタイムに転送可能とする二重化制御技術を提供することができる。
【図面の簡単な説明】
【図1】二重化制御のシステム構成を示す図である。
【図2】業務アプリケーションの処理フローを示す図である。
【図3】データベース制御の処理フローを示す図である。
【図4】データベース制御処理における指示データの構成図である。
【図5】二重化データ採取・編集制御の処理フローを示す図である。
【図6】二重化データ採取・編集制御の処理フローを示す図である。
【図7】二重化データ採取・編集制御処理における指示データの構成図である。
【図8】二重化データ採取・編集制御処理における指示データの構成図である。
【図9】二重化データ送信制御の処理フローを示す図である。
【図10】二重化データ送信制御処理の指示データ構成図である。
【図11】ネットワーク制御(マスタデータベース更新側)の処理フローを示す図である。
【図12】ネットワーク制御(ミラーデータベース更新側)の処理フローを示す図である。
【図13】二重化データ送信・組立制御の処理フローを示す図である。
【図14】二重化データ送信・組立制御処理の指示データの構成図である。
【図15】二重化データ反映制御の処理フローを示す図である。
【図16】データベース更新の処理フローを示す図である。
【符号の説明】
1…業務アプリケーション部
2…DB制御処理部
3…マスタデータベース更新側システムのリアルタイム二重化処理部
31…二重化データ採取・編集制御処理部
32…二重化データ送信制御処理部
4…マスタデータベース更新側システムのネットワーク制御処理部
5…ミラーデータベース更新側システムのネットワーク制御処理部
6…ミラーデータベース更新側システムのリアルタイム二重化処理部
63…二重化データ受信・組立制御処理部
64…二重化データ反映制御処理部
65…DB更新処理部
7…マスターデータベース
8…ミラーデータベース
Claims (5)
- トランザクション処理による複数の第1データベースへの複数の更新データを、複数の第2データベースに反映する二重化制御システムにおいて、前記第1データベース側でコンピュータにより実行されるプログラムであって、
トランザクション処理を実行するステップと、
前記トランザクション処理の更新データを前記第2データベースに反映するための制御情報を生成するステップと、
前記トランザクション処理が完了する前に、前記第2データベースへ前記更新データと前記制御情報を含むデータを送信するステップとを実行させるプログラム。 - 前記データが送信待ちである場合、前記データを送信する前に、複数の前記更新データを結合するステップを実行させる請求項1に記載のプログラム。
- 送信待ちの前記データが大量に滞留した場合、前記データの送信を中断するステップと、
第1データベース上の全データを一括して送信するステップとを実行させる請求項2に記載のプログラム。 - 複数の第1データベースへの更新データを、複数の第2データベースに反映する二重化制御システムにおいて、前記第2データベース側でコンピュータにより実行されるプログラムであって、
前記第1データベースから前記更新データおよび前記トランザクション処理の更新データを前記第2データベースに反映するための制御情報を受信するステップと、
前記制御情報に基づいてトランザクション単位に前記更新データを組み立てるステップと、
前記第2データベースへの前記更新データをトランザクション単位に反映するステップとを実行させるプログラム。 - トランザクション単位で前記第2データベースの排他制御を開始するステップと、
前記第2データベースの更新が完了した後に、前記排他制御を解除するステップとを実行させる請求項4に記載のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002296179A JP2004133598A (ja) | 2002-10-09 | 2002-10-09 | 複数データベースの二重化制御プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002296179A JP2004133598A (ja) | 2002-10-09 | 2002-10-09 | 複数データベースの二重化制御プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004133598A true JP2004133598A (ja) | 2004-04-30 |
Family
ID=32286226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002296179A Withdrawn JP2004133598A (ja) | 2002-10-09 | 2002-10-09 | 複数データベースの二重化制御プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004133598A (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006040094A (ja) * | 2004-07-29 | 2006-02-09 | Ns Solutions Corp | データ処理装置、データ処理システム、データ処理方法及びそのプログラム |
CN100369038C (zh) * | 2005-02-24 | 2008-02-13 | 中兴通讯股份有限公司 | 一种实时数据库事务操作的实现方法 |
JP2008276553A (ja) * | 2007-04-27 | 2008-11-13 | Mitsubishi Electric Corp | データベース等価システムおよびデータベース等価方法 |
JP2010257284A (ja) * | 2009-04-27 | 2010-11-11 | Hitachi Ltd | データ処理方法、計算機、及びデータ処理プログラム |
JP2011134931A (ja) * | 2009-12-25 | 2011-07-07 | Jeol Ltd | 半導体検査装置のレシピ設定支援方法及び装置 |
JP2013069323A (ja) * | 2009-09-15 | 2013-04-18 | Chicago Mercantile Exchange Inc | フォールトトレラント動作をする金融取引所用突き合わせサーバ |
JP2014191497A (ja) * | 2013-03-26 | 2014-10-06 | Fujitsu Ltd | 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム |
JP2014229089A (ja) * | 2013-05-23 | 2014-12-08 | 株式会社日立製作所 | 通信装置及び通信装置における系の切り替え方法 |
US9710196B2 (en) | 2014-02-20 | 2017-07-18 | Fujitsu Limited | Method of storing data, storage system, and storage apparatus |
JP2021099606A (ja) * | 2019-12-20 | 2021-07-01 | 日本電気株式会社 | 複製データ制御装置、複製データ制御システム、複製データ制御方法および複製データ制御プログラム |
JP2022029428A (ja) * | 2020-08-04 | 2022-02-17 | 株式会社三菱Ufj銀行 | システム及びプログラム |
-
2002
- 2002-10-09 JP JP2002296179A patent/JP2004133598A/ja not_active Withdrawn
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006040094A (ja) * | 2004-07-29 | 2006-02-09 | Ns Solutions Corp | データ処理装置、データ処理システム、データ処理方法及びそのプログラム |
JP4555624B2 (ja) * | 2004-07-29 | 2010-10-06 | 新日鉄ソリューションズ株式会社 | データ処理システム、データ処理方法及びそのプログラム |
CN100369038C (zh) * | 2005-02-24 | 2008-02-13 | 中兴通讯股份有限公司 | 一种实时数据库事务操作的实现方法 |
JP2008276553A (ja) * | 2007-04-27 | 2008-11-13 | Mitsubishi Electric Corp | データベース等価システムおよびデータベース等価方法 |
JP2010257284A (ja) * | 2009-04-27 | 2010-11-11 | Hitachi Ltd | データ処理方法、計算機、及びデータ処理プログラム |
JP2013069323A (ja) * | 2009-09-15 | 2013-04-18 | Chicago Mercantile Exchange Inc | フォールトトレラント動作をする金融取引所用突き合わせサーバ |
JP2011134931A (ja) * | 2009-12-25 | 2011-07-07 | Jeol Ltd | 半導体検査装置のレシピ設定支援方法及び装置 |
JP2014191497A (ja) * | 2013-03-26 | 2014-10-06 | Fujitsu Ltd | 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム |
JP2014229089A (ja) * | 2013-05-23 | 2014-12-08 | 株式会社日立製作所 | 通信装置及び通信装置における系の切り替え方法 |
US9710196B2 (en) | 2014-02-20 | 2017-07-18 | Fujitsu Limited | Method of storing data, storage system, and storage apparatus |
JP2021099606A (ja) * | 2019-12-20 | 2021-07-01 | 日本電気株式会社 | 複製データ制御装置、複製データ制御システム、複製データ制御方法および複製データ制御プログラム |
JP2022029428A (ja) * | 2020-08-04 | 2022-02-17 | 株式会社三菱Ufj銀行 | システム及びプログラム |
JP7308887B2 (ja) | 2020-08-04 | 2023-07-14 | 株式会社三菱Ufj銀行 | システム及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5657440A (en) | Asynchronous remote data copying using subsystem to subsystem communication | |
US7139885B2 (en) | Method and apparatus for managing storage based replication | |
JP5411250B2 (ja) | 冗長データ記憶システムへの指示に従ってのデータ配置 | |
JP5192226B2 (ja) | 待機系計算機の追加方法、計算機及び計算機システム | |
US20190129976A1 (en) | Apparatus for controlling synchronization of metadata on network and method for the same | |
WO2018049983A1 (zh) | 数据同步方法、系统、同步获取方法及装置 | |
JP2005196683A (ja) | 情報処理システム、情報処理装置、及び情報処理システムの制御方法 | |
KR100956637B1 (ko) | 분산파일 시스템에서의 비동기식 데이터 복제 방법 및 그에따른 분산파일 시스템 | |
US20110066595A1 (en) | Database server, replication server and method for replicating data of a database server by at least one replication server | |
US8266400B2 (en) | Computer system remote copying system and computer system | |
JP2005228217A (ja) | ディスクアレイ装置及びディスクアレイ装置の制御方法 | |
JP2005242403A (ja) | 計算機システム | |
TW200428227A (en) | Use of virtual targets for preparing and servicing requests for server-free data transfer operations | |
JP2007249776A (ja) | データベース複製プログラム、データベース複製装置およびデータベース複製方法 | |
JP2004133598A (ja) | 複数データベースの二重化制御プログラム | |
WO2022048622A1 (zh) | 数据迁移方法、装置、设备、分布式系统及存储介质 | |
JP4429763B2 (ja) | 情報処理装置の制御方法、情報処理装置、及びストレージ装置の制御方法 | |
JP2011138225A (ja) | クラスタシステム、情報処理装置、制御方法、及びプログラム | |
US7117329B2 (en) | Method of managing generation of backup data and storage control device used therefor | |
JP2013065120A (ja) | 負荷分散システム、データアクセス装置、及び負荷分散方法 | |
JP2008071092A (ja) | サーバ装置、クライアント装置、サーバベースコンピューティングシステムおよびプログラム | |
US9846555B2 (en) | Storage system and method of creating backup of storage system | |
JP4998010B2 (ja) | データベースシステム管理、データベースシステム、プログラム及び処理装置 | |
KR102137217B1 (ko) | 비대칭 파일 시스템의 데이터 복제 방법 | |
JP4434838B2 (ja) | 分散データ等価方法とシステム、およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060110 |