(57)【特許請求の範囲】
【請求項１】
データを保持するデータベース部を備え、データベースクライアント端末の要求に基づいて上記データベース部のデータの更新を行うデータベース提供装置において、
当該データベース提供装置のデータベース部のデータを更新する際のコミットメントプロトコルとして、第１のコミットメントプロトコル又は第２のコミットメントプロトコルのいずれかを適用することを示すプロトコル情報を保持するプロトコル情報保持手段と、
上記データベースクライアント端末の要求に応じて、上記プロトコル情報保持手段に保持されているプロトコル情報を、上記データベースクライアント端末に与えるプロトコル情報提供手段と、
上記データベースクライアント端末からの、上記プロトコル情報保持手段に保持されているプロトコル情報が示すコミットメントプロトコルに従ったデータ更新の要求に応じて、データベース部のデータを更新するデータ更新手段と
を有することを特徴とするデータベース提供装置。
【請求項２】
上記データベース部は、単位データと共に、その単位データを更新したデータ更新時刻の情報を記憶し、
上記プロトコル情報保持手段は、保持するプロトコル情報が、上記第２のコミットメントプロトコルを示す内容に更新された場合には、プロトコル情報と共に、プロトコル情報更新時刻もあわせて保持する
ことを特徴とする請求項１に記載のデータベース提供装置。
【請求項３】
上記プロトコル情報保持手段に保持されているプロトコル情報が、上記第２のコミットメントプロトコルを示す内容から上記第１のコミットメントプロトコルを示す内容に更新されたときに、当該データベース提供装置のデータベース部が保持する単位データのうち、データ更新時刻として、上記プロトコル情報更新時刻以降の時刻が設定された単位データを抽出する単位データ抽出手段と、
外部のデータベース提供装置の備えるデータベース部のデータを、当該データベース提供装置の備えるデータベース部のデータに一致させるために、上記データ抽出手段により抽出された単位データを、上記外部のデータベース提供装置に与えるデータ提供手段と
をさらに有することを特徴とする請求項２に記載のデータベース提供装置。
【請求項４】
当該データベース提供装置のデータベース部が保持するデータと、外部のデータベース提供装置が備えるデータベース部が保持するデータとの差分データに係る単位データが、上記外部のデータベース提供装置から与えられると、上記差分データに係る単位データに基づいて、当該データベース提供装置のデータベース部が保持するデータを、上記外部のデータベース提供装置のデータベース部が保持するデータに一致させるデータ一致化手段をさらに有することを特徴とする請求項２又は３に記載のデータベース提供装置。
【請求項５】
上記第１のコミットメントプロトコルは二相コミットメントプロトコル又は三相コミットメントプロトコルであり、上記第２のコミットメントプロトコルは一相コミットメントプロトコルであることを特徴とする請求項１〜４のいずれかに記載のデータベース提供装置。
【請求項６】
データを保持するデータベース部をそれぞれ備える複数のデータベース提供装置に、データベース部のデータの更新要求を行うデータベースクライアント端末において、
上記複数のデータベース提供装置のそれぞれが保持している、当該データベース提供装置がデータベース部のデータの更新に用いるコミットメントプロトコルを示すプロトコル情報を、上記複数のデータベース提供装置のそれぞれから読込むプロトコル情報取得手段と、
上記複数のデータベース提供装置の全てから第１のコミットメントプロトコルを示す内容のプロトコル情報が得られた場合には、第１のコミットメントプロトコルに従って上記複数のデータベース提供装置にデータ更新の要求を行い、上記複数のデータベース提供装置のうちいずれかから第２のコミットメントプロトコルを示すプロトコル情報が得られた場合には、そのデータベース提供装置にだけ第２のコミットメントプロトコルに従ったデータ更新要求を行うデータ更新要求手段と
を有することを特徴とするデータベースクライアント端末。
【請求項７】
データベースクライアント端末と、複数のデータベース提供装置とを備え、上記複数のデータベース提供装置は、データを保持するデータベース部をそれぞれ有し、上記データベースクライアント端末からの要求に応じて、それぞれのデータベース部に保持されているデータを更新するデータベースシステムにおいて、
上記複数のデータベース提供装置のそれぞれに、請求項１に記載のデータベース提供装置を適用すると共に、
上記データベースクライアント端末に、請求項６に記載のデータベースクライアント端末を適用した
ことを特徴とするデータベースシステム。
【請求項８】
データを保持するデータベース部を備え、データベースクライアント端末の要求に基づいて上記データベース部のデータの更新を行うデータベース提供装置に搭載されたコンピュータを、
当該データベース提供装置のデータベース部のデータを更新する際のコミットメントプロトコルとして、第１のコミットメントプロトコル又は第２のコミットメントプロトコルのいずれかを適用することを示すプロトコル情報を保持するプロトコル情報保持手段と、
上記データベースクライアント端末の要求に応じて、上記プロトコル情報保持手段に保持されているプロトコル情報を、上記データベースクライアント端末に与えるプロトコル情報提供手段と、
上記データベースクライアント端末からの、上記プロトコル情報保持手段に保持されているプロトコル情報が示すコミットメントプロトコルに従ったデータ更新の要求に応じて、データベース部のデータを更新するデータ更新手段と
して機能させることを特徴とするデータベース提供プログラム。
【請求項９】
データを保持するデータベース部をそれぞれ備える複数のデータベース提供装置に、データベース部のデータの更新要求を行うデータベースクライアント端末に搭載されたコンピュータを、
上記複数のデータベース提供装置のそれぞれが保持している、当該データベース提供装置がデータベース部のデータの更新に用いるコミットメントプロトコルを示すプロトコル情報を、上記複数のデータベース提供装置のそれぞれから読込むプロトコル情報取得手段と、
上記複数のデータベース提供装置の全てから第１のコミットメントプロトコルを示す内容のプロトコル情報が得られた場合には、第１のコミットメントプロトコルに従って上記複数のデータベース提供装置にデータ更新の要求を行い、上記複数のデータベース提供装置のうちいずれかから第２のコミットメントプロトコルを示すプロトコル情報が得られた場合には、そのデータベース提供装置にだけ第２のコミットメントプロトコルに従ったデータ更新要求を行うデータ更新要求手段と
して機能させることを特徴とするデータベースクライアントプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース提供装置、データベースクライアント端末、データベースシステム、データベース提供プログラム及びデータベースクライアントプログラムに関し、例えば、データベース分散トランザクション環境におけるデータベースシステムに適用し得る。
【背景技術】
【０００２】
従来のデータベース分散トランザクション環境下でのデータ更新においては、分散されたデータベース間のデータの整合性を保つため、データ更新の際には、データベースサーバとデータベースクライアントとの間で二相コミットメントのプロトコルに従ったデータ更新が行われる場合がある。データベース分散トランザクション環境下での二相コミットメントでは、全データベースサーバがコミット可能な状態である場合にのみ、二相コミットメン卜が可能となり、二相コミットメントのトランザクションが完結することにより、コミットデータをデータとして利用可能としている（非特許文献１参照）。
【非特許文献１】小泉  修著、「図解でわかるデータベースのすべて」、２００７年３月日本実業出版社発行
【特許文献１】特開２００７−８８９３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来のデータベース分散トランザクション環境下では、メンテナンスあるいは故障により、ある一部のデータベースサーバが停止し、そのサーバから二相コミットメントの許可を得られない場合には、トランザクションを完結することが出来ず、旧データの利用が継続されることとなる。また、この時データベースクライアントは、トランザクションを完結するまで待機するか、トランザクションを失敗として扱う事となり、データベースサービスとして満足のいくものではなかった。なお、上述のような問題は、三相コミットメント（非特許文献１参照）においても発生する場合がある。
【０００４】
そのため、データベースサーバ（データベース提供装置）とデータベースクライアント（データベースクライアント端末）の間で、二相コミットメントプロトコル又は三相コミットメントプロトコルに従ったデータ更新ができない場合でも、データ更新をすることができる、データベース提供装置、データベースクライアント端末、データベースシステム、データベース提供プログラム及びデータベースクライアントプログラムが望まれている。
【課題を解決するための手段】
【０００５】
第１の本発明のデータベース提供装置は、（１）データを保持するデータベース部を備え、データベースクライアント端末の要求に基づいて上記データベース部のデータの更新を行うデータベース提供装置において、（２）当該データベース提供装置のデータベース部のデータを更新する際のコミットメントプロトコルとして、第１のコミットメントプロトコル又は第２のコミットメントプロトコルのいずれかを適用することを示すプロトコル情報を保持するプロトコル情報保持手段と、（３）上記データベースクライアント端末の要求に応じて、上記プロトコル情報保持手段に保持されているプロトコル情報を、上記データベースクライアント端末に与えるプロトコル情報提供手段と、（４）上記データベースクライアント端末からの、上記プロトコル情報保持手段に保持されているプロトコル情報が示すコミットメントプロトコルに従ったデータ更新の要求に応じて、データベース部のデータを更新するデータ更新手段とを有することを特徴とする。
【０００６】
第２の本発明のデータベースクライアント端末は、（１）データを保持するデータベース部をそれぞれ備える複数のデータベース提供装置に、データベース部のデータの更新要求を行うデータベースクライアント端末において、（２）上記複数のデータベース提供装置のそれぞれが保持している、当該データベース提供装置がデータベース部のデータの更新に用いるコミットメントプロトコルを示すプロトコル情報を、上記複数のデータベース提供装置のそれぞれから読込むプロトコル情報取得手段と、（３）上記複数のデータベース提供装置の全てから第１のコミットメントプロトコルを示す内容のプロトコル情報が得られた場合には、第１のコミットメントプロトコルに従って上記複数のデータベース提供装置にデータ更新の要求を行い、上記複数のデータベース提供装置のうちいずれかから、第２のコミットメントプロトコルを示すプロトコル情報が得られた場合には、そのデータベース提供装置にだけ第２のコミットメントプロトコルに従ったデータ更新要求を行うデータ更新要求手段を有することを特徴とする。
【０００７】
第３の本発明のデータベースシステムは、（１）データベースクライアント端末と、複数のデータベース提供装置とを備え、上記複数のデータベース提供装置は、データを保持するデータベース部をそれぞれ有し、上記データベースクライアント端末からの要求に応じて、それぞれのデータベース部に保持されているデータを更新するデータベースシステムにおいて、（２）上記複数のデータベース提供装置のそれぞれに、第１の本発明のデータベース提供装置を適用すると共に、（３）上記データベースクライアント端末に、第２の本発明のデータベースクライアント端末を適用したことを特徴とする。
【０００８】
第４の本発明のデータベース提供プログラムは、（１）データを保持するデータベース部を備え、データベースクライアント端末の要求に基づいて上記データベース部のデータの更新を行うデータベース提供装置に搭載されたコンピュータを、（２）当該データベース提供装置のデータベース部のデータを更新する際のコミットメントプロトコルとして、第１のコミットメントプロトコル又は第２のコミットメントプロトコルのいずれかを適用することを示すプロトコル情報を保持するプロトコル情報保持手段と、（３）上記データベースクライアント端末の要求に応じて、上記プロトコル情報保持手段に保持されているプロトコル情報を、上記データベースクライアント端末に与えるプロトコル情報提供手段と、（４）上記データベースクライアント端末からの、上記プロトコル情報保持手段に保持されているプロトコル情報が示すコミットメントプロトコルに従ったデータ更新の要求に応じて、データベース部のデータを更新するデータ更新手段として機能させることを特徴とする
【０００９】
第５の本発明のデータベースクライアントプログラムは、（１）データを保持するデータベース部をそれぞれ備える複数のデータベース提供装置に、データベース部のデータの更新要求を行うデータベースクライアント端末に搭載されたコンピュータを、（２）上記複数のデータベース提供装置のそれぞれが保持している、当該データベース提供装置がデータベース部のデータの更新に用いるコミットメントプロトコルを示すプロトコル情報を、上記複数のデータベース提供装置のそれぞれから読込むプロトコル情報取得手段と、（３）上記複数のデータベース提供装置の全てから第１のコミットメントプロトコルを示す内容のプロトコル情報が得られた場合には、第１のコミットメントプロトコルに従って上記複数のデータベース提供装置にデータ更新の要求を行い、上記複数のデータベース提供装置のうちいずれかから、第２のコミットメントプロトコルを示すプロトコル情報が得られた場合には、そのデータベース提供装置にだけ第２のコミットメントプロトコルに従ったデータ更新要求を行うデータ更新要求手段して機能させることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、データベースシステムにおいて、データベース提供装置とデータベースクライアント端末の間で、二相コミットメントプロトコル又は三相コミットメントプロトコルに従ったデータ更新ができない場合でも、データ更新をすることができる。
【発明を実施するための最良の形態】
【００１１】
（Ａ）第１の実施形態
以下、本発明によるデータベース提供装置、データベースクライアント端末、データベースシステム、データベース提供プログラム及びデータベースクライアントプログラムの第１の実施形態を、図面を参照しながら詳述する。なお、この実施形態のデータベース提供装置は、データベースサーバである。
【００１２】
（Ａ−１）第１の実施形態の構成
図１は、この実施形態のデータベースシステム１の全体構成を示すブロック図である。
【００１３】
データベースシステム１は、データベースクライアント１０、２つのデータベースサーバ２０（２０−１、２０−２）を有している。また、データベースクライアント１０、データベースサーバ２０−１、２０−２は、それぞれネットワークＮに接続しているものとする。
【００１４】
データベースシステム１は、データベースクライアント１０から、データベースサーバ２０−１、２０−２にデータベースのデータ更新や参照などのトランザクションが与えられ、処理が行われる分散トランザクション環境である。
【００１５】
データベースクライアント１０は、データベースサーバ２０−１、２０−２にデータベースに係るトランザクションを与えるものである。図１においては、データベースクライアント１０は１つの構成となっているが、その数は限定されないものである。データベースクライアント１０は、パソコンなどの情報処理装置（１台に限定されず、複数台を分散処理し得るようにしたものであっても良い。）上に、実施形態のデータベースクライアントプログラム（固定データを含む）をインストールすることにより、構築されるものである。
【００１６】
データベースサーバ２０（２０−１、２０−２）は、データベースクライアント１０から与えられたトランザクションの処理を行うものであり、ＤＢＭＳ２１（２１−１、２１−２）、データベースファイルシステム２２（２２−１、２２−２）を有している。データベースサーバ２０−１、２０−２は、パソコンなどの情報処理装置（１台に限定されず、複数台を分散処理し得るようにしたものであっても良い。）上に、実施形態のデータベース提供プログラム（固定データを含む）をインストールすることにより、構築されるものであるが、機能的には図１のように表すことができる。
【００１７】
ＤＢＭＳ２１−１、２１−２は、データベース管理システム（Ｄａｔａ  Ｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）の機能を担っており、例えば、データベースクライアント１０からトランザクションを受け取り、データベースファイルシステム２２−１、２２−２を制御するなどして受け取ったトランザクションの処理を行うものである。
【００１８】
データベースファイルシステム２２（２２−１、２２−２）は、データベースサーバ２０（２０−１、２０−２）において、データベースのデータを記憶する機能などを担っており、例えば、ＤＢＭＳ２１（２１−１、２１−２）の制御に基づいて記憶しているデータの更新を行うものである。データベースファイルシステム２２（２２−１、２２−２）は、データ記憶部２２１（２２１−１、２２１−２）、フラグ管理部２２２（２２２−１、２２２−２）を有している。
【００１９】
データ記憶部２２１−１、２２１−２は、データベースサーバ２０−１、２０−２において、データベースサービスに利用するデータを格納する機能を担っており、メモリデータベースやキャッシュメモリを使用している場合はそれが該当する。
【００２０】
フラグ管理部２２２（２２２−１、２２２−２）は、データベースのデータ更新において、二相コミットメントにより行われるか否かについて管理するものであり、二相コミットメントフラグ２２３（２２３−１、２２３−２）を有している。
【００２１】
フラグ管理部２２２−１、２２２−２は、当該データベースサーバ２０−１、２０−２において、データベースのデータ更新が、二相コミットメントにより行われるか否かを示す二相コミットメントフラグ２２３−１、２２３−２を管理するものである。二相コミットメントフラグ２２３−１、２２３−２の内容が「ＯＮ」に設定されていた場合には、通常通りデータベースのデータ更新が二相コミットメントにより行われ、「ＯＦＦ」に設定されていた場合には、二相コミットメントではなく一相コミットメントによりデータ更新が行われることを示している。
【００２２】
なお、二相コミットメントフラグ２２３−１、２２３−２に登録される内容は、クライアントライブラリ１１が、二相コミットメントを実施出来ない事を認識できれば良く、プログラムのメモリ上のフラグやロックファイル、データベース内への状態書き込みなどを用いても良い。また、二相コミットメントフラグ２２３−１、２２３−２の内容は、クライアントライブラリ１１が、二相コミットメントを実施出来ない事を認識できれば良いので、「ＯＮ／ＯＦＦ」などのフラグによる表示ではなく、「二相コミットメントプロトコル／一相コミットメントプロトコル」などの表示であっても良く、その表示方式は限定されないものである。
【００２３】
また、二相コミットメントフラグ２２３−１、２２３−２の内容は、データベースクライアント１０のクライアントライブラリ１１により読込まれ、クライアントライブラリ１１では、データベースのデータ更新に関するトランザクションについて、二相コミットメントフラグ２２３−１、２２３−２の内容に応じて、データベースファイルシステム２２−１、２２−２へ送信するトランザクションの内容を変化させる。
【００２４】
クライアントライブラリ１１では、二相コミットメントプロトコルによりデータ更新ができなくなり、いずれかのデータベースサーバ２０の二相コミットメントフラグ２２３がＯＦＦに設定された場合には、全てのデータベースサーバ２０から二相コミットメントフラグ２２３の読込みを試行し、二相コミットメントフラグ２２３がＯＦＦに設定されたデータベースサーバにだけデータ更新のトランザクションを送信して一相コミットメントによりデータ更新を行うようにしても良い。例えば、データベースサーバ２０−１が保守作業などにより停止中に、データベースサーバ２０−２において、二相コミットメントフラグ２２３−２の内容が「ＯＦＦ」に設定されていた場合には、クライアントライブラリ１１は、二相コミットメントフラグ２２３−２の内容を読込むと、データベースサーバ２０−２にだけデータベース更新のトランザクションを送信し、データベースサーバ２０−２ではそのトランザクションによりデータベースのデータ更新を行う。
【００２５】
クライアントライブラリ１１が、二相コミットメントフラグ２２３−１、２２３−２の内容を読込む契機としては、例えば、クライアントライブラリ１１が、データベースサーバ２０−１、２０−２にデータベース接続（ＤＢＭＳ２１−１、２１−２と接続）する際に読込むようにしても良いし、定期的又はトランザクションの発生ごとに読込むようにしても良いし、二相コミットできなかった場合に読込むようにしても良い。また、クライアントライブラリ１１が、それぞれのデータベースサーバ２０−１、２０−２に動作の正常性について問い合わせ（以下、「状態ポーリング」という）を行う際に読込んでも良い。状態ポーリングについては、後述する動作説明において詳述する。
【００２６】
二相コミットメントフラグ２２３−１、２２３−２内容については、例えば、保守運用作業者などのオペレータが手動で書き換えを行っても良いし、図１において図示は省略しているが、データベースサーバ２０−１、２０−２の内部又は外部に配置された監視装置により、データベースサーバの動作状況を監視し、データベースサーバの動作状況に応じて、フラグ管理部２２２−１、フラグ管理部２２２−２が書き換えるようにしても良い。例えば、データベースサーバ２０−１が故障などにより停止した場合に、監視装置により検知し、監視装置がその旨をデータベースサーバ２０−２のフラグ管理部２２２−２に通知し、フラグ管理部２２２−２が二相コミットメントフラグ２２３−２の内容を「ＯＦＦ」に書き換えるようにしても良い。また、例えば、クライアントライブラリ１１が、データベースサーバ２０−１、２０−２の動作状況を監視し、その動作状態に応じて、フラグ管理部２２２−１、２２２−２に、二相コミットメントフラグ２２３−１、２２３−２の内容更新を要求するようにしても良い。
【００２７】
（Ａ−２）第１の実施形態の動作
次に、以上のような構成を有する第１の実施形態のデータベースシステムにおけるデータ更新の動作を説明する。
【００２８】
（Ａ−２−１）状態ポーリングについて
まず、データベースクライアント１０が、データベースサーバ２０−１、２０−２の状態について問い合わせを行う状態ポーリングの動作の例について説明する。
【００２９】
図２は、データベースクライアント１０が、データベースサーバ２０−２に対して状態ポーリングを行った動作の例について示したシーケンス図である。
【００３０】
図２では、データベースクライアント１０が、データベースサーバ２０−２に状態ポーリングを行った場合について示しているが、データベースサーバ２０−１であっても同様であるので説明を省略する。
【００３１】
まず、データベースクライアント１０のクライアントライブラリ１１から、データベースサーバ２０−２に対して、ネットワーク上での疎通確認（例えば、ＰＩＮＧ）が実施される。例えば、データベースクライアント１０から、データベースサーバ２０−２に対して、ネットワーク上での疎通確認をするための信号が送信され、その応答がデータベースサーバ２０−２からあった場合には通信可と判定される（Ｓ１０１）。
【００３２】
上述のステップＳ１０１によりデータベースサーバ２０−２との疎通が確認された場合には、データベースクライアント１０（クライアントライブラリ１１）から、データベースサーバ２０−２のＤＢＭＳ２１−２にデータベース接続が実施され、データベースサーバ２０−２においてデータベース機能が正常に動作していることが確認される（Ｓ１０２）。
【００３３】
上述のステップＳ１０２によりデータベースサーバ２０−２のデータベースとしての正常性が確認された場合は、データベースクライアント１０（クライアントライブラリ１１）では、データベースファイルシステム２２−１へのアクセスの正常性として、二相コミットメントフラグ２２３−２の内容が読込まれる（Ｓ１０３）。
【００３４】
（Ａ−２−２）トランザクション（データベース更新）処理
図１の構成では、通常であればデータベースクライアント１０（クライアントライブラリ１１）から、データベースサービスにおけるデータ更新の要求が、データベースサーバ２０−１、２０−２に対して送信され、二相コミットメントにより、データベースファイルシステム２２−１、２２−２のデータが更新される。
【００３５】
次に、データベースシステム１において、二相コミットメントの実施が出来ない場合のトランザクション処理の動作について説明する。
【００３６】
図３は、データベースシステム１において、二相コミットメントの実施が出来ない場合のトランザクション処理の動作について説明したシーケンス図である。また、図３においては、データベースサーバ２０−１をメンテナンス目的で停止しており、データベースサーバ２０−２の二相コミットメントフラグ２２３−２には「ＯＦＦ」が設定されているものとする。
【００３７】
まず、データベースクライアント１０のクライアントライブラリ１１により、データベースサーバ２０−１に対して上述の図２に示す状態ポーリングの問い合わせが実施される。ここでは、上述の通りデータベースサーバ２０−１は停止しているので、ネットワーク上の疎通も取ることができず、上述のステップＳ１０１の時点で終了し、クライアントライブラリ１１では、データベースサーバ２０−１との接続は不可であったという結果となる（Ｓ２０１）。
【００３８】
そして、クライアントライブラリ１１では、データベースサーバ２０−２に対しても、上述の図２に示す状態ポーリングの問い合わせが実施され、二相コミットメントフラグ２２３−２の内容が読込まれる（Ｓ２０２）。
【００３９】
そして、二相コミットメントフラグ２２３−２の内容が読込まれると、データベースクライアント１０では、データベースサーバ２０−２の二相コミットメントフラグ２２３−２の内容は「ＯＦＦ」となっているため、データベースのデータ更新は、データベースサーバ２０−２に対して一相コミットメントにより行うと決定される（Ｓ２０３）。
【００４０】
そして、データベースクライアント１０からは、データベースサーバ２０−１へのコミットは要求されず、データベースサーバ２０−２に対してのみコミットが要求され（Ｓ２０４）、データベースサーバ２０−２においてデータが更新される（Ｓ２０５）。
【００４１】
（Ａ−３）第１の実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
【００４２】
上述の図１に示すような、データベースの分散トランザクション環境下において、一方のデータベースサーバの停止により、二相コミットメントが実施できない場合においても、一相コミットメントとしてトランザクションを完結することができ、即座に更新データを利用し、データベースサービスを継続することができる。本発明は、例えば、電話の加入者データベースのように、契約加入者の１回の電話につき１レコード更新を実施するような環境や、Ｗｅｂサービス環境においてユーザのブラウザ上の操作がデータベース更新アクセスに繋がるような環境など、トラヒックの多い環境でのサービスの継続性が求められるシステムに適用して好適なものである。
【００４３】
また、二相コミットメントフラグ２２３の状態に応じて、クライアントライブラリ１１が二相コミットメントを実施するか、運用継続側のデータベースサーバ２０−２に対して一相コミットメントを実施するかを判断することにより、データベースサーバ２０−１、２０−２においては、一相コミットメントの場合であっても、通常時（二相コミットメントの場合）のデータベース更新処理と何ら変わらないという効果を奏する。
【００４４】
（Ｂ）第２の実施形態
以下、本発明によるデータベース提供装置、データベースクライアント端末、データベースシステム、データベース提供プログラム及びデータベースクライアントプログラム
の第２の実施形態を、図面を参照しながら詳述する。なお、この実施形態のデータベース提供装置は、データベースサーバである。
【００４５】
（Ｂ−１）第２の実施形態の構成
第１の実施形態のデータベースシステム１では、二相コミットメントフラグ２２３−１又は２２３−２が、「ＯＦＦ」に設定された状態においてデータベースサービスを継続した場合には、データベースファイルシステム２２−１、２２−２のデータには差分が生じることとなる。例えば、上述の図３のシーケンス図に示す動作が終了した後、すなわち、データベースファイルシステム２２−１が運転を停止し、データベースサーバ２０−２でのみデータ更新が行われた結果、データベースファイルシステム２２−１、２２−２のデータに差分がある場合、データベースサーバ２０−１を停止状態から起動状態とし、そのままデータベースシステム１のデータベースサービスに復帰させることはできない。これは、二相コミットメント方式における、データレプリケーションの条件といえるからである。データベースサーバ２０−１を復帰させる場合には、運用が継続されたデータベースサーバ２０−２のデータベースファイルシステム２２−２のデータを基に、データの整合、すなわち、データベースサーバ２０−２のデータベースファイルシステム２２−２の同一のデータを、データベースサーバ２０−１のデータベースファイルシステム２２−１に設定する必要がある。
【００４６】
第２の実施形態のデータベースシステム１Ａは、上述のような第１の実施形態における不都合を鑑みて、データベースサーバ２０−１、２０−２の間でデータの整合を取るための機能を追加したものである。以下、第２の実施形態について、第１の実施形態との差異を説明する。
【００４７】
図４は、この実施形態のデータベースシステム１Ａの全体構成を示すブロック図である。
【００４８】
データベースシステム１Ａは、データベースクライアント１０、クライアントライブラリ１１、データベースサーバ２０Ａ−１、２０Ａ−２を有している。データベースクライアント１０は、第１の実施形態のものと同様であるので説明を省略する。
【００４９】
データベースサーバ２０Ａ−１、２０Ａ−２は、ＤＢＭＳ２１−１、２１−２、データベースファイルシステム２２Ａ−１、２２Ａ−２を有している。ＤＢＭＳ２１−１、２１−２は第１の実施形態のものと同様であるので説明を省略する。
【００５０】
データベースファイルシステム２２Ａ−１、２２Ａ−２は、それぞれデータ記憶部２２１Ａ−１、２２１Ａ−２、フラグ管理部２２２Ａ−１、２２２Ａ−２、二相コミットメントフラグ２２３Ａ−１、２２３Ａ−２を有している。データベースファイルシステム２２Ａ−１、２２Ａ−２は、データ記憶部２２１Ａ−１、２２１Ａ−２、及び、二相コミットメントフラグ２２３Ａ−１、２２３Ａ−２に記憶する情報の内容及び形式が、第１の実施形態のものと異なっている。
【００５１】
図５は、データ記憶部２２１Ａ−１、２２１Ａ−２に記憶するデータレコード３００の構成を示した説明図である。
【００５２】
データレコード３００は、データベースにおいてデータを記憶する単位であり、データ記憶部２２１Ａ−１、２２１Ａ−２には、図５に示すデータレコード３００が複数記憶されている。
【００５３】
データ格納領域３０１は、データベースにおいて必要となるデータ項目を設定する領域であり、データ項目数などに制限はない。レコード生成時タイムスタンプ３０２は、データベースにおいてデータレコードとして追加された時をタイムスタンプとして記録する。
【００５４】
レコード更新時タイムスタンプ３０３は、該当するデータレコード３００が更新される度に更新時をタイムスタンプとして記録する。すなわち、レコード更新時タイムスタンプ３０３は、該当データレコード３００の最終更新時間となる。
【００５５】
二相コミットメントフラグ２２３Ａ−１、２２３Ａ−２では、「ＯＮ」から「ＯＦＦ」に設定された場合には、「ＯＮ」から「ＯＦＦ」に設定が変更された時刻もタイムスタンプとして併せて記憶する点で、第１の実施形態の二相コミットメントフラグ２２３−１、２２３−２と異なっている。この時刻は、二相コミットメントフラグ２２３Ａ−１、２２３Ａ−２の内容が、さらに「ＯＦＦ」から「ＯＮ」に設定変更された場合に、他方のデータベースサーバとのデータの整合を取る場合の基準時として利用される。上述のデータ整合については、オペレータが手動で実施しても良い。なお、他方のデータベースサーバとのデータ整合の詳細については後述する動作説明において説明する。
【００５６】
また、データベースファイルシステム２２Ａ−１、２２Ａ−２の間でのデータ整合に掛かる時間を短縮するために、データ記憶部２２１Ａ−１、２２１Ａ−２のバックアップファイルを取得し、予め他方のデータベースサーバに設定することにより、データの差分を最小限にした上で、データ整合の動作を実施しても良い。
【００５７】
（Ｂ−２）第２の実施形態の動作
次に、以上のような構成を有する第１の実施形態のデータベースシステム１Ａにおけるデータ整合の動作を説明する。
【００５８】
図６は、データベースサーバ２０Ａ−１が運転を停止し、その後運転を再開した後にデータベースサーバ２０Ａ−２とデータの整合を取る動作について示したフローチャートである。
【００５９】
図６では、前提として上述の図３のシーケンス図に示す動作が終了した後、すなわち、データベースファイルシステム２２Ａ−１が運転を停止し、データベースサーバ２０Ａ−２で二相コミットメントフラグ２２３Ａ−２が「ＯＦＦ」に設定され、データベースサーバ２０Ａ−２でのみデータ更新が行われた結果、データベースファイルシステム２２Ａ−１、２２Ａ−２のデータに差分があるものとする。
【００６０】
まず、データベースサーバ２０Ａ−２において二相コミットメントフラグ２２３Ａ−２の内容が「ＯＦＦ」から「ＯＮ」に切り替わると、運用継続側のデータベースサーバ２０Ａ−２により、データ整合処理が開始される（Ｓ３０１）。なお、データ整合中の間は、クライアントライブラリ１１からは、運用継続側に対する一相コミットメントとして、データベースサービスを継続しても良い。
【００６１】
データ整合は、データベースファイルシステム２２Ａ−２により、二相コミットメントフラグ２２３Ａ−２が「ＯＦＦ」のタイムスタンプ以降に更新されたデータが、レコード更新時タイムスタンプ３０３を基に抽出される。そして、抽出されたデータレコードが、データベースサーバ２０Ａ−２から、データベースサーバ２０Ａ−１に送信され、データベースサーバ２０Ａ−２において、データベースファイルシステム２２Ａ−１により、データ記憶部２２１Ａ−１の内容が更新され、データ整合が実施される（Ｓ３０２）。データベースサーバ２０Ａ−２におけるデータ整合は、データ記憶部２２１Ａ−２において対応するデータレコードを、データベースサーバ２０Ａ−１から与えられたデータレコードに置換えることにより行っても良い。
【００６２】
最終的にデータを整合する数秒間のデータベースサーバ２０Ａ−１、２０Ａ−２でのデータ更新の規制を終えた後、二相コミットメントが可能な通常の状態となり、データベースサーバ２０Ａ−１がデータベースサービスに復帰する（Ｓ３０３）。
【００６３】
次に、データベースファイルシステム２２Ａ−１、２２Ａ−２の間でのデータ整合に掛かる時間を短縮するために、上述の図６に示す処理が行われる前に、運用継続側のデータベースサーバ２０Ａ−２（データ記憶部２２１Ａ−２）のバックアップファイルを取得し、データベースサーバ２０Ａ−１（データ記憶部２２１Ａ−１）に設定する場合の動作について説明する。
【００６４】
図７は、データ整合の前に、バックアップファイルを取得・設定する動作について示したフローチャートである。
【００６５】
まず、運用継続側のデータベースサーバ２０Ａ−２のデータベースファイルシステム２２Ａ−２において、バックアップファイルが生成される（Ｓ４０１）。このバックアップは、オペレータにより手動で行っても良いし、データベースファイルシステム２２Ａ−２において、所定のタイミングで実施されるようにしても良い。例えば、データベースサーバ２０Ａ−１が停止している間に、所定の間隔で実施するようにしても良い。このバックアップファイルの生成は、二相コミットメントフラグ２２３Ａ−２を「ＯＮ」に切り替える時間に近いほど、運用継続側との差分が少なくなる。
【００６６】
次に、データベースサーバ２０Ａ−２において生成されたバックアップファイルが、データベースサーバ２０Ａ−１に転送され、データベースファイルシステム２２Ａ−１（データ記憶部２２１Ａ−１）に設定される（Ｓ４０２）。この設定は、オペレータにより手動で行っても良いし、上述のＳ４０１におけるバックアップ取得の後、データベースファイルシステム２２Ａ−２、２２Ａ−１により実施するようにしても良い。上述のステップＳ４０２の終了時点でのデータベースサーバ２０Ａ−１、データベースサーバ２０Ａ−２間のデータ差分は、上述のステップＳ４０１においてバックアップファイルを生成した時点以降に一相コミットメントが実施された更新データのみとなり、以降上述の図６に示すデータ整合の動作により、データベースサーバ２０Ａ−１、データベースサーバ２０Ａ−２間のデータは完全に一致することとなる。
【００６７】
（Ｂ−３）第２の実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
【００６８】
第２の実施例において、データ整合を実施する際、データ更新時のタイムスタンプを基に整合対象となるレコードデータを抽出することに関しては、一相コミットメントによるデータベースサービス継続時のデータ更新量に左右されることなく、データ差分を蓄積することができる。また、これにより、従来の差分表によるデータ更新差分の蓄積（特許文献１参照）では、通常のデータ更新に加え、差分表に対するアクセス処理により、トランザクションのターンアラウンドタイムが増加する可能性があったが、本発明ではその問題を回避することができる。
【００６９】
また、二相コミットメントによりデータ更新ができない場合であっても、通常時のレコードデータ構成となんら変わらないことから、バックアップファイルによりデータ整合時間の短縮を図ることが可能となる。これにより、データ整合時におけるデータ整合処理速度に対し、一相コミットメントのトランザクション量が過大である場合に、データ整合が収束できない状況に陥る、という問題を回避することができる。
【００７０】
（Ｃ）他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【００７１】
（Ｃ−１）上記の各実施形態では、データベースシステムにおいて、２台のデータベースサーバが配置された場合について示したが、３台以上のデータベースサーバを配置しても良く、その台数は限定されないものである。
【００７２】
（Ｃ−２）上記の各実施形態においては、データベースシステムにおいて、通常時は二相コミットメントに従ってデータ更新を行い、いずれかのデータベースサーバの故障時には、一相コミットメントに従ったデータ更新をするようにしていたが、通常時は三相コミットメントによりデータ更新を行うデータベースシステムに適用しても良い。
【図面の簡単な説明】
【００７３】
【図１】第１の実施形態に係る情報処理システムの全体構成を示すブロック図である。
【図２】第１の実施形態に係るデータベースクライアントが、データベースサーバに対して状態ポーリングを行う動作の例について示したシーケンス図である。
【図３】第１の実施形態に係る情報処理システムにおいて、二相コミットメントの実施が出来ない場合のトランザクション処理の動作について説明したシーケンス図である。
【図４】第２の実施形態に係る情報処理システムの全体構成を示すブロック図である。
【図５】第２の実施形態に係るデータ記憶部に記憶するデータレコードの構成の例を示した説明図である。
【図６】第２の実施形態に係る、一方のデータベースサーバが運転を停止し、その後運転を再開した後に、他方のデータベースサーバとデータの整合を取る動作について示したフローチャートである。
【図７】第２の実施形態に係る、データベースサーバ間のデータ整合の前に、バックアップファイルを取得・設定する動作について示したフローチャートである。
【符号の説明】
【００７４】
データベースシステム１、１０…データベースクライアント、１１…クライアントライブラリ、２０、２０−１、２０−２…データベースサーバ、２１、２１−１、２１−２…ＤＢＭＳ、２２、２２−１、２２−２…データベースファイルシステム、２２１、２２１−１、２２１−２…データ記憶部、２２２、２２２−１、２２２−２…フラグ管理部、２２３、２２３−１、２２３−２…二相コミットメントフラグ。
【図１】
0004885825.tif 000002
【図２】
0004885825.tif 000003
【図３】
0004885825.tif 000004
【図４】
0004885825.tif 000005
【図５】
0004885825.tif 000006
【図６】
0004885825.tif 000007
【図７】
0004885825.tif 000008