(57)【要約】【課題】マスタデータベースに対する更新の情報をレプリカデータベースに反映する場合に、ＤＢの整合性を確保し、リアルタイム性をもったスナップショット技術を提供する。【解決手段】甲機１１０のデータベース入力処理部３００は、マスタＤＢ３２０−１を更新するに際して一貫して排他的に占有すべきＤＢ範囲の占有をＤＢ管理テーブル３３０−１に登録し、このＤＢ範囲を示すＤＢ占有情報、ＤＢ更新情報及びこのＤＢ範囲の開放を示すＤＢ開放情報をトランザクションログに出力する。ＤＢ差分反映処理部３７０は、トランザクションログからこのＤＢ範囲に関するＤＢ更新情報を読み込んで中間ファイル３８０に保存した後に、このＤＢ範囲を排他状態にして保存されたＤＢ更新情報を一括してレプリカＤＢ３２０−２に反映する。【選択図】図１
2004334460.tif 000002
【特許請求の範囲】
【請求項１】
マスタデータベースに対して施された更新の情報をレプリカデータベースに反映するデータベースのスナップショット方法において、前記マスタデータベースを更新するに際して一貫して排他的に占有すべきデータベース範囲を占有し、占有された前記データベース範囲を示すデータベース占有情報、前記データベース範囲内に施された更新の内容を示すデータベース更新情報及び前記データベース範囲の開放を示すデータベース開放情報を時系列に第１の記憶手段に格納し、前記データベース占有情報、前記データベース更新情報及び前記データベース開放情報を転送した後に再び時系列に第２の記憶手段に格納し、前記第２の記憶手段から前記データベース占有情報を読み込んで管理情報として保存し、前記データベース更新情報を読み込み前記管理情報と対応づけて一時保存し、前記データベース開放情報を読み込んだとき前記レプリカデータベース上の前記データベース範囲を占有し、一時保存された前記データベース更新情報を前記レプリカデータベースに反映し、前記レプリカデータベース上の前記データベース範囲を開放することを特徴とするデータベースのスナップショット方法。
【請求項２】
前記第１の記憶手段に格納された前記データベース占有情報、前記データベース更新情報及び前記データベース開放情報を第１の計算機から第２の計算機へ転送することを特徴とする請求項１記載のデータベースのスナップショット方法。
【請求項３】
マスタデータベースに対して施された更新の情報をレプリカデータベースに反映するために前記マスタデータベースを保持する側のコンピュータに、
前記マスタデータベースを更新するに際して一貫して排他的に占有すべきデータベース範囲を占有する機能、占有された前記データベース範囲を示すデータベース占有情報、前記データベース範囲内に施された更新の内容を示すデータベース更新情報及び前記データベース範囲の開放を示すデータベース開放情報を時系列に記憶手段に格納する機能、および前記データベース占有情報、前記データベース更新情報及び前記データベース開放情報を前記レプリカデータベースを保持する他のコンピュータに転送する機能を実現させるためのプログラム。
【請求項４】
マスタデータベースを保持するマスタサイトのコンピュータと、前記マスタデータベースに対して施された更新の情報が反映されるレプリカデータベースを保持するレプリカサイトのコンピュータとを有するシステムのうちの前記レプリカサイトのコンピュータに、
前記マスタサイトのコンピュータから、前記マスタデータベースを更新するに際して一貫して排他的に占有されたデータベース範囲を示すデータベース占有情報、前記データベース範囲内に施された更新の内容を示すデータベース更新情報及び前記データベース範囲の開放を示すデータベース開放情報を受信して時系列に記憶手段に格納する機能、前記記憶手段から前記データベース占有情報を読み込んで管理情報として保存する機能、前記データベース更新情報を読み込み前記管理情報と対応づけて一時保存する機能、および前記データベース開放情報を読み込んだとき前記レプリカデータベース上の前記データベース範囲を占有し、一時保存された前記データベース更新情報を前記レプリカデータベースに反映し、前記レプリカデータベース上の前記データベース範囲を開放する機能を実現させるためのプログラム。
【請求項５】
マスタデータベースを保持するマスタサイトのコンピュータと、前記マスタデータベースに対して施された更新の情報が反映されるレプリカデータベースを保持するレプリカサイトのコンピュータとを有するシステムであって、
前記マスタサイトのコンピュータは、前記マスタデータベースを更新するに際して一貫して排他的に占有すべきデータベース範囲を占有する手段と、占有された前記データベース範囲を示すデータベース占有情報、前記データベース範囲内に施された更新の内容を示すデータベース更新情報及び前記データベース範囲の開放を示すデータベース開放情報を時系列に第１の記憶手段に格納する手段と、前記データベース占有情報、前記データベース更新情報及び前記データベース開放情報を前記レプリカデータベースを保持する他のコンピュータに転送する手段とを有し、
前記レプリカサイトのコンピュータは、前記マスタサイトのコンピュータから前記データベース占有情報、前記データベース更新情報及び前記データベース開放情報を受信して第２の記憶手段に格納する手段と、前記第２の記憶手段から前記データベース占有情報を読み込んで管理情報として保存する手段と、前記データベース更新情報を読み込み前記管理情報と対応づけて一時保存する手段と、前記データベース開放情報を読み込んだとき前記レプリカデータベース上の前記データベース範囲を占有し、一時保存された前記データベース更新情報を前記レプリカデータベースに反映し、前記レプリカデータベース上の前記データベース範囲を開放する手段とを有することを特徴とするデータベースのスナップショットを行うシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マスタデータベースに対して施された更新の情報をレプリカデータベースに反映するデータベースのスナップショット技術に関する。
【０００２】
【従来の技術】
従来のスナップショットの方式は、特開２００２−２８８０２７号公報（特許文献１）に開示されるように、クライアント機がマスタデータベースを保持し、サーバ機がレプリカデータベースを保持し、マスタデータベースに対する更新の情報をレプリカデータベースに反映することに主体がおかれていた。このデータベースのスナップショット処理は、クライアント機がマスタデータベースを更新するタイミングとは非同期に実行された。
【０００３】
【特許文献１】
特開２００２−２８８０２７号公報
【０００４】
【発明が解決しようとする課題】
マスタデータベースに対するデータ更新と同期してその更新情報をレプリカデータベースに反映すると、データベースとしての整合性が失われるおそれがある。例えばマスタデータベース内で互いに関連する複数のテーブルの中のレコードを順次更新し、その更新のタイミングに同期して更新情報を順次レプリカデータベースに反映するとする。その場合にレプリカデータベースを参照するユーザは、更新前のレコードと更新後のレコードとが混在したデータを受け取ることがあり得る。この不都合を回避するために、従来はマスタデータベースの更新処理を停止した後に、マスタデータベースの全体をレプリカデータベースにコピーし、マスタデータベースとレプリカデータベースの内容を同一にした後にレプリカデータベースをユーザに参照させるという方法をとっていた。しかしこの方法によれば、スナップショット処理の実行は、マスタデータベースの更新処理を停止できる時間帯に限られるので、リアルタイムに近いタイミングで更新情報をレプリカデータベースに反映するようなスナップショットの運用は望めない。
【０００５】
本発明の目的は、データベースの整合性を確保するとともにリアルタイム性をもったスナップショット技術を提供することにある。
【０００６】
【課題を解決するための手段】
本発明は、マスタデータベースを更新するに際して一貫して排他的に占有すべきデータベース範囲を占有した後に、このデータベース範囲を示すデータベース占有情報、データベース更新情報及びこのデータベース範囲の開放を示すデータベース開放情報を時系列に保存してレプリカサイトに転送し、レプリカサイトではこのデータベース範囲に関するデータベース更新情報をすべて取得した上でレプリカデータベース上の当該データベース範囲を占有し、一時保存されたデータベース更新情報を一括してレプリカデータベースに反映し、その後レプリカデータベース上のこのデータベース範囲を開放する技術を特徴とする。
【０００７】
【発明の実施の形態】
以下、本発明の実施形態について図面を用いて説明する。
【０００８】
図１は、本実施形態のシステムの構成を示す図である。システムは、マスタサイトの甲機１１０、レプリカサイトの乙機１２０及び端末群１００から構成される。甲機１１０は、マスタデータベース３２０−１を保持し、乙機１２０は、このデータベースのスナップショットを利用して作成されたレプリカデータベース３２０−２を保持する。端末群１００は、インターネット回線１３０を介して甲機１１０及び乙機１２０のデータベースにアクセスする。端末群１００は、甲機１１０のマスタデータベース３２０−１を参照又は更新する。また端末群１００は、マスタデータベース３２０−１へのアクセス集中を軽減する目的で乙機１２０のレプリカデータベース３２０−２を主として参照する。
【０００９】
甲機１１０は、ハードウェア的にはＣＰＵ、メモリ、外部記憶装置を備えるサーバ計算機であり、端末群１００及び乙機１２０との通信インタフェースとしてＬＡＮアダプタ１４０−１を備える。甲機１１０は、外部記憶装置上にマスタデータベース３２０−１を記憶し、またメモリ又は外部記憶装置上にＤＢ（データベース）管理テーブル３３０−１及びトランザクションログ３４０−１を格納する。管理テーブル３３０−１は、占有するデータベースの範囲を登録する。トランザクションログ３４０−１は、ＤＢ更新情報に加えてＤＢ占有情報及びＤＢ開放情報を格納する。甲機１１０のメモリは、ＤＢＭＳ（データベースマネージメントシステム）３１０−１、データベース入力処理部３００、トランザクション送信処理部３５０及びユーザアプリケーション処理部４００−１の各プログラムを格納し、ＣＰＵによって実行される。ＤＢＭＳ３１０−１は、マスタデータベース３２０−１へのアクセス要求を処理する。データベース入力処理部３００は、端末群１００からＤＢ更新を伴うトランザクションデータを受信し、ＤＢＭＳ３１０−１を介してマスタデータベース３２０−１の作成及び更新処理を行い、ＤＢ占有情報、ＤＢ更新情報及びＤＢ開放情報をトランザクションログ３４０−１に格納する。ユーザアプリケーション処理部４００−１は、ＤＢＭＳ３１０−１を介してマスタデータベース３２０−１の参照及び更新処理を行い、ＤＢ占有情報、ＤＢ更新情報及びＤＢ開放情報をトランザクションログ３４０−１に格納する。データベース入力処理部３００およびユーザアプリケーション処理部４００−１は、マスタデータベース３２０−１を参照又は更新する際に占有するＤＢ範囲をＤＢ管理テーブル３３０−１に登録し、登録したＤＢ範囲について互いに排他的にマスタデータベース３２０−１にアクセスする。トランザクション送信処理部３５０は、トランザクションログ３４０−１のログ情報を定間隔で乙機１２０へ送信する。
【００１０】
乙機１２０は、ハードウェア的にはＣＰＵ、メモリ、外部記憶装置を備えるサーバ計算機であり、端末群１００及び甲機１１０との通信インタフェースとしてＬＡＮアダプタ１４０−２を備える。乙機１２０は、外部記憶装置上にレプリカデータベース３２０−２を記憶し、またメモリ又は外部記憶装置上にＤＢ管理テーブル３３０−２、トランザクションログ３４０−２、中間ファイル３８０及びＤＢ更新管理テーブル３９０を格納する。ＤＢ管理テーブル３３０−２は、占有するデータベースの範囲を登録する。トランザクションログ３４０−２は、ＤＢ更新情報に加えてＤＢ占有情報及びＤＢ開放情報を格納する。中間ファイル３８０は、甲機１１０から送られレプリカデータベース３２０−２への反映が保留されているＤＢ更新情報を格納する。ＤＢ更新管理テーブル３９０は、保留されているＤＢ更新情報に対応するＤＢ占有情報を格納する。乙機１２０のメモリは、ＤＢＭＳ３１０−２、トランザクション受信処理部３６０、ユーザアプリケーション処理部４００−２及びデータベース差分反映処理部３７０の各プログラムを格納し、ＣＰＵによって実行される。ＤＢＭＳ３１０−２は、レプリカデータベース３２０−２へのアクセス要求を処理する。ユーザアプリケーション処理部４００−２は、ＤＢＭＳ３１０−２を介してレプリカデータベース３２０−２の主として参照処理を行う。トランザクション受信処理部３６０は、甲機１１０から受信したログ情報をトランザクションログ３４０−２に格納する。データベース差分反映処理部３７０は、トランザクションログ３４０−２からログ情報を読み込み、ＤＢ占有情報をＤＢ更新管理テーブル３９０に格納し、またＤＢ更新情報を中間ファイル３８０に保存する。またデータベース差分反映処理部３７０は、トランザクションログ３４０−２からＤＢ開放情報を読み込んだとき、中間ファイル３８０に保存されたＤＢ更新情報をレプリカデータベース３２０−２に反映する。データベース差分反映処理部３７０及びユーザアプリケーション処理部４００−２は、レプリカデータベース３２０−２を参照又は更新する際に占有するＤＢ範囲をＤＢ管理テーブル３３０−２に登録し、登録したＤＢ範囲について互いに排他的にレプリカデータベース３２０−２にアクセスする。
【００１１】
以下個別の構成要素を指すときには、ＤＢ管理テーブル３３０−１のように−以下の添字を付けて表し、共通の構成要素を指すときには、ＤＢ管理テーブル３３０のように添字を省略する。
【００１２】
図２は、ＤＢ管理テーブル３３０のデータ構成を示す図である。ＤＢ管理テーブル３３０は、ＤＢごとの占有／開放状態を管理するために設けられる。使用フラグは、そのＤＢが占有中か否かを示すフラグ、ＤＢ名称は占有の対象とするＤＢの名称である。開始レコードと最終レコードはそのＤＢ内の占有されているレコードの範囲を示すレコード番号である。更新中プログラムＩＤは、当該ＤＢのレコード範囲を占有しているプログラム識別子であり、ここでは、データベース入力処理部３００、ユーザアプリケーション処理部４００又はデータベース差分反映処理部３７０のＩＤが設定される。
【００１３】
図３は、トランザクションログ３４０のデータ構成を示す図である。トランザクションログ３４０は、ＤＢ占有情報、ＤＢ更新情報及びＤＢ開放情報から構成され、これらの情報が発生した順に時系列に配列される。ＤＢ占有情報は、ログケースＮｏ．、ＤＢ占有であることを示す識別子、更新中プログラムＩＤ、ＤＢ占有数および占有ＤＢ情報から成る。占有ＤＢ情報は、占有されるＤＢ群についての各ＤＢのＤＢ名とそのレコード範囲のリストを設定する。ここでＤＢ群とは、互いに関連するマスタデータベース３２０−１の範囲であって、１つの処理を実行する間一貫して排他的に占有されるべきマスタデータベース３２０−１の範囲をいう。ＤＢ更新はこのデータベース範囲のうちの一部又は全部のデータに対して施される。
【００１４】
ＤＢ更新情報は、更新レコードごとに設定される。各更新レコードは、占有されるデータベース範囲内のレコードである。各更新レコード情報は、ログケースＮｏ．、ＤＢ更新であることを示す識別子、ＤＢ名、レコードＮｏ．および更新情報の内容を設定する。ＤＢ開放情報は、ログケースＮｏ．、ＤＢ開放であることを示す識別子、更新中プログラムＩＤ、開放ＤＢ数および開放ＤＢ情報から成る。開放ＤＢ数及び開放ＤＢ情報は、それぞれ対となるＤＢ占有情報の占有ＤＢ数及び占有ＤＢ情報の内容と同じである。
【００１５】
図４は、データベース入力処理部３００の処理手順を示すフローチャートである。データベース入力処理部３００は、端末群１００から入力されたＤＢ更新データを取得し（ステップ３１）、関連するＤＢ群を決定し、入力データを編集加工してＤＢ更新レコードを作成する。次にデータベース入力処理部３００は、ＤＢ管理テーブル３３０−１を参照し、更新するＤＢを含む関連するＤＢ群のＤＢがユーザアプリケーション処理部４００−１によって占有中か否かを判定する（ステップ３２）。ユーザアプリケーション処理部４００−１がそのＤＢ群の少なくとも一部を占有中であれば（ステップ３３ＹＥＳ）、ユーザアプリケーション処理部４００−１が占有中のＤＢを開放するまで、すなわちＤＢ管理テーブル３３０−１上でそのＤＢが開放状態となるまで待つ（ステップ３４）。他処理がＤＢ更新中でなければ（ステップ３３ＮＯ）、ＤＢ管理テーブル３３０−１にＤＢ占有情報を登録する（ステップ３５）。これによって他処理から当該ＤＢ群へのアクセスを禁止する。次にデータベース入力処理部３００は、トランザクションログ３４０−１にＤＢ占有情報を出力する（ステップ３６）。
【００１６】
次にデータベース入力処理部３００は、ＤＢＭＳ３１０−１を介して更新ＤＢレコードによってマスタデータベース３２０−１の更新を行い（ステップ３７）、ＤＢＭＳ３１０−１のリータンコードによって正常に更新が行われたことを確認した後に、トランザクションログ３４０−１にＤＢ更新情報を出力する（ステップ３８）。次にデータベース入力処理部３００は、ＤＢ管理テーブル３３０−１の占有したＤＢ群を開放状態に変更する（ステップ３９）。これにより他処理からのそのＤＢ群へのアクセスが可能となる。次にトランザクションログ３４０−１にＤＢ開放情報を出力する（ステップ４０）。なおユーザアプリケーション処理部４００−１がマスタデータベース３２０−１を更新する際も上記処理手順をとるものとする。
【００１７】
トランザクション送信処理部３５０は、タイマーにより定間隔で起動され、トランザクションログ３４０−１に格納されるログ情報を乙機１２０へ送信する。トランザクション受信処理部３６０は、このログ情報を受信し、トランザクションログ３４０−２に格納する。トランザクション送信処理部３５０がトランザクション受信処理部３６０から受信完了通知を受信することをもってログ情報の送信が完了する。
【００１８】
図５は、ＤＢ更新管理テーブル３９０のデータ構成を示す図である。ＤＢ更新管理テーブル３９０は、甲機１１０から受信したＤＢ占有情報を格納する。そのデータ構成は、トランザクションログ３４０のＤＢ占有情報のデータ構成と同じである。中間ファイル３８０は、ＤＢ更新管理テーブル３９０の各ＤＢ占有情報に対応してそのＤＢ更新情報を格納する。
【００１９】
図６は、データベース差分反映処理部３７０の処理手順を示すフローチャートである。データベース差分反映処理部３７０は、トランザクションログ３４０−２からログ情報を読み込み（ステップ５１）、その種別を判定する（ステップ５２）。ログ情報がＤＢ占有情報であれば、それをＤＢ更新管理テーブル３９０に登録する（ステップ５３）。ただしすでに同一のＤＢ占有情報が登録されていないかチェックする。同一のＤＢ占有情報の再送などによって同一のＤＢ占有情報が登録されていれば、後のＤＢ占有情報を捨てる。ログ情報がＤＢ更新情報であれば、そのＤＢ占有情報に対応する中間ファイル３８０に保存する（ステップ５４）。ただしデータベース差分反映処理部３７０は、ＤＢ更新管理テーブル３９０のＤＢ占有情報を検索し、該当するＤＢ占有情報がある場合に限りそのＤＢ更新情報を対応する中間ファイル３８０に格納する。このようにしてＤＢ更新情報のレプリカベーデータベース３２０−２への反映は、ＤＢ開放情報を受け取るまで保留される。
【００２０】
ログ情報がＤＢ開放情報であれば、データベース差分反映処理部３７０は、ＤＢ管理テーブル３３０−２を参照し、当該ＤＢ群がユーザアプリケーション処理部４００−２によって占有中か否か判定する（ステップ５５）。ユーザアプリケーション処理部４００−２がそのＤＢ群の少なくとも一部を占有中であれば（ステップ５６ＹＥＳ）、ユーザアプリケーション処理部４００−２がそのＤＢを開放するまで、すなわちＤＢ管理テーブル３３０−２上でそのＤＢが開放状態となるまで待つ（ステップ５７）。
【００２１】
他処理がＤＢ更新中でなければ（ステップ５６ＮＯ）、データベース差分反映処理部３７０は、当該ＤＢ群についてＤＢ占有情報をＤＢ管理テーブル３３０−２に登録する（ステップ５８）。これによって他処理からの当該ＤＢ群へのアクセスを禁止する。次にデータベース差分反映処理部３７０は、該当する中間ファイル３８０に保存されている当該ＤＢ群のＤＢ更新情報によってレプリカベーデータベース３２０−２の更新を行い（ステップ５９）、ＤＢＭＳ３１０−２のリータンコードによって正常に更新が行われたことを確認した後に、ＤＢ管理テーブル３３０−２の占有したＤＢ群を開放状態に変更する（ステップ６０）。これにより他処理からのＤＢアクセスが可能となる。次にデータベース差分反映処理部３７０は、当該ＤＢ群に対応するＤＢ占有情報をＤＢ更新管理テーブル３９０から削除する。これによってマスタデータベース３２０−１の更新をレプリカデータベース３２０−２に反映する一連のスナップショット処理が完結する。
【００２２】
図７は、本実施形態のスナップショット処理の全体的な手順とデータの流れを説明する図である。マスタデータベース３２０−１のＤＢ１群及びＤＢ２群が更新されるに伴い、各々のＤＢ群についてＤＢ占有情報、ＤＢ更新情報及びＤＢ開放情報がトランザクションログ３４０−１に出力される。トランザクションログ３４０−１上のログ情報は、トランザクション送信処理部３５０によって一定間隔で乙機１２０へ送信される。トランザクション受信処理部３６０は、これらのログ情報を受信し、トランザクションログ３４０−２に格納する。データベース差分反映処理部３７０は、トランザクションログ３４０−２からログ情報を読み込み、各ＤＢ群についてＤＢ占有情報をＤＢ更新管理テーブル３９０に登録し、ＤＢ更新情報を中間ファイル３８０に保存する。データベース差分反映処理部３７０は、トランザクションログ３４０−２からＤＢ開放情報を読み込んだとき、中間ファイル３８０に保存されていたＤＢ更新情報をレプリカデータベース３２０−２に反映する。各ＤＢ群のＤＢ更新情報をレプリカデータベース３２０−２に反映している間、データベース差分反映処理部３７０は、他処理からそのＤＢ群へのアクセスを禁じる。またマスタデータベース３２０−１の更新時点から甲機１１０の処理時間、乙機１２０の処理時間及び通信時間の合計によって決まる時間差を置いてレプリカデータベース３２０−２が同一内容によって更新される。従ってマスタデータベース３２０−１とレプリカデータベース３２０−２の関連するＤＢは、整合がとれた形で同一データに更新される。また乙機１２０にアクセスする端末群１００は、ある時間差の待ちの後にマスタデータベース３２０−１と同一データにアクセス可能となる。
【００２３】
上記実施例では、マスタサイトにマスタデータベース３２０−１を設け、レプリカサイトにレプリカデータベース３２０−２を設けたが、同一のサーバ計算機にマスタデータベースとレプリカデータベースを設けてもよい。例えばサーバ計算機ＡにマスタデータベースＡとレプリカデータベースＢを設け、サーバ計算機ＢにマスタデータベースＢとレプリカデータベースＡを設けるような構成である。この場合には、各サーバ計算機は、中間ファイル３８０、ＤＢ更新管理テーブル３９０、トランザクション送信処理部３５０、トランザクション受信処理部３６０及びデータベース差分反映処理部３７０を必要とする。
【００２４】
【発明の効果】
以上述べたように本発明によれば、マスタサイトのデータベース更新処理を停止させることなくスナップショットを実行することが可能となり、データベースの整合性を確保するとともに、リアルタイム性をもったスナップショットを実現できる。
【図面の簡単な説明】
【図１】実施形態のシステムの構成図である。
【図２】実施形態のＤＢ管理テーブル３３０のデータ構成を示す図である。
【図３】実施形態のトランザクションログ３４０のデータ構成を示す図である。
【図４】実施形態のデータベース入力処理部３００の処理手順を示すフローチャートである。
【図５】実施形態のＤＢ更新管理テーブル３９０のデータ構成を示す図である。
【図６】実施形態のデータベース差分反映処理部３７０の処理手順を示すフローチャートである。
【図７】実施形態のスナップショット処理の全体的な手順とデータの流れを説明する図である。
【符号の説明】
３００：  データベース入力処理部、３２０−１：マスタデータベース、３２０−２：レプリカデータベース、３３０：ＤＢ管理テーブル、３４０：トランザクションログ、３７０：データベース差分反映処理部、３８０：中間ファイル、３９０：ＤＢ更新管理テーブル。
【図１】
2004334460.tif 000003
【図２】
2004334460.tif 000004
【図３】
2004334460.tif 000005
【図４】
2004334460.tif 000006
【図５】
2004334460.tif 000007
【図６】
2004334460.tif 000008
【図７】
2004334460.tif 000009