特許第6237050号(P6237050)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 沖電気工業株式会社の特許一覧

特許6237050データベースシステム、データベース更新方法及びデータベース更新プログラム
<>
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000002
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000003
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000004
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000005
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000006
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000007
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000008
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000009
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000010
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000011
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000012
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000013
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000014
  • 特許6237050-データベースシステム、データベース更新方法及びデータベース更新プログラム 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6237050
(24)【登録日】2017年11月10日
(45)【発行日】2017年11月29日
(54)【発明の名称】データベースシステム、データベース更新方法及びデータベース更新プログラム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20171120BHJP
【FI】
   G06F12/00 533J
   G06F12/00 510B
【請求項の数】6
【全頁数】19
(21)【出願番号】特願2013-198772(P2013-198772)
(22)【出願日】2013年9月25日
(65)【公開番号】特開2015-64777(P2015-64777A)
(43)【公開日】2015年4月9日
【審査請求日】2016年5月17日
(73)【特許権者】
【識別番号】000000295
【氏名又は名称】沖電気工業株式会社
(74)【代理人】
【識別番号】100090620
【弁理士】
【氏名又は名称】工藤 宣幸
(74)【代理人】
【識別番号】100161861
【弁理士】
【氏名又は名称】若林 裕介
(74)【代理人】
【識別番号】100180275
【弁理士】
【氏名又は名称】吉田 倫太郎
(72)【発明者】
【氏名】阿部 哲也
【審査官】 大桃 由紀雄
(56)【参考文献】
【文献】 特開2009−122935(JP,A)
【文献】 特開2002−132561(JP,A)
【文献】 特開2002−244908(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
継続的にデータ更新が行なわれている第1のデータベースサーバと、データ更新がなされていない第2のデータベースサーバとの間のデータ差分の整合を行うデータベースシステムにおいて、
データ差分が生じ得る基準日時情報以降に、上記第1のデータベースサーバにおいて更新されたデータのうち、所定の差分抽出条件情報に基づいて、削除差分、更新差分及び追加差分を抽出する差分抽出手段と、
上記差分抽出手段により抽出されたデータ差分に基づき、第2のデータベースサーバに対して、削除整合処理、更新整合処理、追加整合処理の順でデータ更新を行ない、上記第2のデータベースサーバに記録されるデータを上記第1のデータベースサーバに記録されるデータと一致させるデータ整合処理手段と
を備え
上記差分抽出手段は、追加差分について、少なくとも上記第1のデータベースサーバ及び上記第2のデータベースサーバに同一キーのレコードが存在しないレコードを第1の追加差分として抽出し、少なくとも上記第1のデータベースサーバ及び上記第2のデータベースサーバに同一キーのレコードが存在するレコードを第2の追加差分として抽出し、
上記データ整合処理手段が、上記第1の追加差分に対して追加整合処理を行い、上記第2の追加差分に対して更新整合処理を行う
ことを特徴とするデータベースシステム。
【請求項2】
上記差分抽出手段が、上記第2のデータベースサーバにおける障害発生時の日時情報を上記基準日時情報として設定するものであることを特徴とする請求項1に記載のデータベースシステム。
【請求項3】
上記差分抽出手段が、上記第1のデータベースサーバ及び上記第2のデータベースサーバへのデータ更新に係るコミットプロトコルの移行時の日時情報を上記基準日時情報として設定するものであることを特徴とする請求項1に記載のデータベースシステム。
【請求項4】
上記第1のデータベースサーバ及び上記第2のデータベースサーバに記録されるデータのレコードには、作成日時情報及び更新日時情報が付されることを特徴とする請求項1〜のいずれかに記載のデータベースシステム。
【請求項5】
継続的にデータ更新が行なわれている第1のデータベースサーバと、データ更新がなされていない第2のデータベースサーバとの間のデータ差分の整合を行うデータベース更新方法において、
差分抽出手段が、データ差分が生じ得る基準日時情報以降に、上記第1のデータベースサーバにおいて更新されたデータのうち、所定の差分抽出条件情報に基づいて、削除差分、更新差分及び追加差分を抽出する差分抽出工程と、
データ整合処理手段が、上記差分抽出手段により抽出されたデータ差分に基づき、第2のデータベースサーバに対して、削除整合処理、更新整合処理、追加整合処理の順でデータ更新を行ない、上記第2のデータベースサーバに記録されるデータを上記第1のデータベースサーバに記録されるデータと一致させるデータ整合処理工程と
を有し、
上記差分抽出手段は、追加差分について、少なくとも上記第1のデータベースサーバ及び上記第2のデータベースサーバに同一キーのレコードが存在しないレコードを第1の追加差分として抽出し、少なくとも上記第1のデータベースサーバ及び上記第2のデータベースサーバに同一キーのレコードが存在するレコードを第2の追加差分として抽出し、
上記データ整合処理手段が、上記第1の追加差分に対して追加整合処理を行い、上記第2の追加差分に対して更新整合処理を行う
ことを特徴とするデータベース更新方法。
【請求項6】
継続的にデータ更新が行なわれている第1のデータベースサーバと、データ更新がなされていない第2のデータベースサーバとの間のデータ差分の整合を行うデータベース更新プログラムにおいて、
コンピュータを、
データ差分が生じ得る基準日時情報以降に、上記第1のデータベースサーバにおいて更新されたデータのうち、所定の差分抽出条件情報に基づいて、削除差分、更新差分及び追加差分を抽出する差分抽出手段と、
上記差分抽出手段により抽出されたデータ差分に基づき、第2のデータベースサーバに対して、削除整合処理、更新整合処理、追加整合処理の順でデータ更新を行ない、上記第2のデータベースサーバに記録されるデータを上記第1のデータベースサーバに記録されるデータと一致させるデータ整合処理手段と
して機能させ
上記差分抽出手段は、追加差分について、少なくとも上記第1のデータベースサーバ及び上記第2のデータベースサーバに同一キーのレコードが存在しないレコードを第1の追加差分として抽出し、少なくとも上記第1のデータベースサーバ及び上記第2のデータベースサーバに同一キーのレコードが存在するレコードを第2の追加差分として抽出し、
上記データ整合処理手段が、上記第1の追加差分に対して追加整合処理を行い、上記第2の追加差分に対して更新整合処理を行う
ことを特徴とするデータベース更新プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベースシステム、データベース更新方法及びデータベース更新プログラムに関し、例えば、冗長化されたデータベースサーバにおいて発生した差分データを整合するデータベースシステム、データベース更新方法及びデータベースプログラムに適用し得るものである。
【背景技術】
【0002】
従来、データベース分散トランザクション環境下において、分散されたデータベース間のデータ整合性を保つために、データベースサーバとデータベースクライントとの間で二相コミットプロトコルに従ったデータ更新が行なわれる場合がある。
【0003】
しかし、二相コミットは、全てのデータベースサーバがコミット可能な状態であることが必要となる。そのため、一部のデータベースサーバが停止している場合には、二相コミットによるデータ更新を実行することができない事態が生じ得る。
【0004】
特許文献1には、二相コミットによるデータ更新を実行できない場合に、一相コミットプロトコルに従って更新されたデータを、冗長化された他のデータベースに整合することが開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−122935号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した特許文献1の記載技術は、冗長化された複数のデータベースサーバ間でデータの差分が生じている場合にデータの整合性を図る詳細な方式や手順については明らかでない。
【0007】
例えば、更新時刻情報に基づいて、あるデータベースサーバ(以下、DBサーバ)上のデータを、他方のDBサーバに整合する場合、差分データの整合を無条件で実施すると、エラーの発生や冗長な処理で整合に時間が掛かるため、非効率な処理で実施する可能性が生じ得る。
【0008】
そのため、データベースサーバ間のデータ整合処理において、最適化された条件及び整合実施順序により、差分データの整合を最適化することができるデータベースシステム、データベース更新方法及びデータベース更新プログラムが求められている。
【課題を解決するための手段】
【0009】
かかる課題を解決するために、第1の本発明は、継続的にデータ更新が行なわれている第1のデータベースサーバと、データ更新がなされていない第2のデータベースサーバとの間のデータ差分の整合を行うデータベースシステムにおいて、(1)データ差分が生じ得る基準日時情報以降に、第1のデータベースサーバにおいて更新されたデータのうち、所定の差分抽出条件情報に基づいて、削除差分、更新差分及び追加差分を抽出する差分抽出手段と、(2)差分抽出手段により抽出されたデータ差分に基づき、第2のデータベースサーバに対して、削除整合処理、更新整合処理、追加整合処理の順でデータ更新を行ない、第2のデータベースサーバに記録されるデータを第1のデータベースサーバに記録されるデータと一致させるデータ整合処理手段とを備え、差分抽出手段は、追加差分について、少なくとも第1のデータベースサーバ及び第2のデータベースサーバに同一キーのレコードが存在しないレコードを第1の追加差分として抽出し、少なくとも上記第1のデータベースサーバ及び第2のデータベースサーバに同一キーのレコードが存在するレコードを第2の追加差分として抽出し、データ整合処理手段が、第1の追加差分に対して追加整合処理を行い、第2の追加差分に対して更新整合処理を行うことを特徴とするデータベースシステムである。
【0010】
第2の本発明は、継続的にデータ更新が行なわれている第1のデータベースサーバと、データ更新がなされていない第2のデータベースサーバとの間のデータ差分の整合を行うデータベース更新方法において、(1)差分抽出手段が、データ差分が生じ得る基準日時情報以降に、第1のデータベースサーバにおいて更新されたデータのうち、所定の差分抽出条件情報に基づいて、削除差分、更新差分及び追加差分を抽出する差分抽出工程と、(2)データ整合処理手段が、上記差分抽出手段により抽出されたデータ差分に基づき、第2のデータベースサーバに対して、削除整合処理、更新整合処理、追加整合処理の順でデータ更新を行ない、第2のデータベースサーバに記録されるデータを第1のデータベースサーバに記録されるデータと一致させるデータ整合処理工程とを有し、差分抽出手段は、追加差分について、少なくとも第1のデータベースサーバ及び第2のデータベースサーバに同一キーのレコードが存在しないレコードを第1の追加差分として抽出し、少なくとも上記第1のデータベースサーバ及び第2のデータベースサーバに同一キーのレコードが存在するレコードを第2の追加差分として抽出し、データ整合処理手段が、第1の追加差分に対して追加整合処理を行い、第2の追加差分に対して更新整合処理を行うことを特徴とするデータベース更新方法である。
【0011】
第3の本発明は、継続的にデータ更新が行なわれている第1のデータベースサーバと、データ更新がなされていない第2のデータベースサーバとの間のデータ差分の整合を行うデータベース更新プログラムにおいて、コンピュータを、(1)データ差分が生じ得る基準日時情報以降に、第1のデータベースサーバにおいて更新されたデータのうち、所定の差分抽出条件情報に基づいて、削除差分、更新差分及び追加差分を抽出する差分抽出手段と、(2)差分抽出手段により抽出されたデータ差分に基づき、第2のデータベースサーバに対して、削除整合処理、更新整合処理、追加整合処理の順でデータ更新を行ない、第2のデータベースサーバに記録されるデータを第1のデータベースサーバに記録されるデータと一致させるデータ整合処理手段として機能させ、差分抽出手段は、追加差分について、少なくとも第1のデータベースサーバ及び第2のデータベースサーバに同一キーのレコードが存在しないレコードを第1の追加差分として抽出し、少なくとも上記第1のデータベースサーバ及び第2のデータベースサーバに同一キーのレコードが存在するレコードを第2の追加差分として抽出し、データ整合処理手段が、第1の追加差分に対して追加整合処理を行い、第2の追加差分に対して更新整合処理を行うことを特徴とするデータベース更新プログラムである。
【発明の効果】
【0012】
本発明によれば、データベースサーバ間のデータ整合処理において、最適化された条件及び整合実施順序により、差分データの整合を最適化することができる。
【図面の簡単な説明】
【0013】
図1】実施形態に係るデータベースシステムの全体構成を示すブロック図である。
図2】実施形態に係るデータベースクライアント10、データベースサーバに対する状態ポーリング動作示すシーケンス図である。
図3】実施形態に係るデータベースシステムにおいて、二相コミットの実施ができない場合のトランザクション処理の動作を示すシーケンス図である。
図4】実施形態に係るデータベースシステムにおけるデータ整合の対象とするデータ差分の種類を説明する説明図である。
図5】実施形態に係るデータベースシステムにおけるデータ整合処理を示すフローチャートである。
図6】実施形態に係るデータベースシステムにおけるデータ差分抽出条件を説明する説明図である。
図7】実施形態に係る削除整合処理のSQL表記のイメージである。
図8】実施形態に係るデータ差分抽出条件の変形例を説明する説明図である。
図9】実施形態に係る更新整合処理のSQL表記のイメージである。
図10】実施形態に係る追加整合処理のSQL表記のイメージである。
図11】実施形態に係るデータベースシステム1においてデータ整合処理の際の各データベースサーバ上のレコード状態を説明する説明図である。
図12】実施形態に係るデータベースシステム1において削除整合処理の際の各データベースサーバ上のレコード状態を説明する説明図である。
図13】実施形態に係るデータベースシステム1において更新整合処理の際の各データベースサーバ上のレコード状態を説明する説明図である。
図14】実施形態に係るデータベースシステム1において追加整合処理の際の各データベースサーバ上のレコード状態を説明する説明図である。
【発明を実施するための形態】
【0014】
(A)主たる実施形態
以下、本発明のデータベースシステム、データベース更新方法及びデータベース更新プログラムの実施形態を、図面を参照しながら詳細に説明する。
【0015】
(A−1)実施形態の構成
図1は、この実施形態に係るデータベースシステム1の全体構成を示すブロック図である。
【0016】
図1において、この実施形態に係るデータベースシステム1は、ネットワークNに接続可能な、データベースクライアント10、2台のデータベースサーバ20(20−1、20−2)を有する。
【0017】
なお、以下では、必要に応じて、データベースサーバ20−1をDBサーバ#1、データベースサーバ20−2をDBサーバ#2と表記して説明する。
【0018】
データベースシステム1は、データベースクライアント10から、データベースサーバ20−1、20−2にデータベースのデータ更新や参照などのトランザクションが与えられ、処理が行われる分散トランザクション環境である。
【0019】
データベースクライアント10は、データベースサーバ20−1、20−2にデータベースに係るトランザクションを与えるものである。図1では、データベースクライアント10が1個の構成となっているが、その数は限定されないものである。データベースクライアント10は、パーソナルコンピュータ等の情報処理装置(1台に限定されず、複数台を分散処理し得るようにしたものであっても良い。)上に、実施形態のデータベースクライアントプログラム(固定データを含む)をインストールすることにより、構築されるものである。
【0020】
データベースサーバ20(20−1、20−2)は、データベースクライアント10から与えられたトランザクションの処理を行うものであり、DBMS21(21−1、21−2)、データベースファイルシステム22(22−1、22−2)を有している。データベースサーバ20−1、20−2は、パーソナルコンピュータなどの情報処理装置(1台に限定されず、複数台を分散処理し得るようにしたものであっても良い。)上に、実施形態のデータベース提供プログラム(固定データを含む)やデータベース更新プログラムをインストールすることにより、構築されるものであるが、機能的には図1のように表すことができる。
【0021】
DBMS21−1、21−2は、データベース管理システム(Data Base Management System)の機能を担っており、例えば、データベースクライアント10からトランザクションを受け取り、データベースファイルシステム22−1、22−2を制御するなどして受け取ったトランザクションの処理を行うものである。
【0022】
データベースファイルシステム22(22−1、22−2)は、データベースサーバ20(20−1、20−2)において、データベースのデータを記憶する機能などを担っており、例えば、DBMS21(21−1、21−2)の制御に基づいて記憶しているデータの更新を行うものである。また、データベースファイルシステム22(22−1、22−2)は、データ記憶部221(221−1、221−2)、フラグ管理部222(222−1、222−2)、データ整合部51(51−1、51−2)を有している。
【0023】
データ記憶部221−1、221−2は、データベースサーバ20−1、20−2において、データベースサービスに利用するデータを格納する機能を担っており、メモリデータベースやキャッシュメモリを使用している場合はそれが該当する。
【0024】
フラグ管理部222(222−1、222−2)は、データベースのデータ更新において、二相コミットにより行われるか否かについて管理するものであり、二相コミットフラグ223(223−1、223−2)を有している。
【0025】
フラグ管理部222−1、222−2は、当該データベースサーバ20−1、20−2において、データベースのデータ更新が、二相コミットにより行われるか否かを示す二相コミットフラグ223−1、223−2を管理するものである。例えば、二相コミットフラグ223−1、223−2の内容が「ON」に設定されていた場合には、通常通りデータベースのデータ更新が二相コミットプロトコルに従って行われ、「OFF」に設定されていた場合には、二相コミットプロトコルではなく一相コミットプロトコルに従ってデータ更新が行われることを示している。
【0026】
なお、二相コミットフラグ223−1、223−2に登録される内容は、クライアントライブラリ11が、二相コミットを実施出来ないことを認識できれば良く、例えば、プログラムのメモリ上のフラグやロックファイル、データベース内への状態書き込みなどを用いても良い。また、二相コミットフラグ223−1、223−2の内容は、クライアントライブラリ11が、二相コミットを実施できないことを認識できれば良いので、「ON/OFF」などのフラグによる表示ではなく、例えば、「二相コミットプロトコル/一相コミットプロトコル」などの表示であっても良く、その表示方式は限定されないものである。
【0027】
また、二相コミットフラグ223−1、223−2の内容は、データベースクライアント10のクライアントライブラリ11により読み込まれ、クライアントライブラリ11では、データベースのデータ更新に関するトランザクションについて、二相コミットフラグ223−1、223−2の内容に応じて、データベースファイルシステム22−1、22−2へ送信するトランザクションの内容を変化させる。
【0028】
データ整合部51−1、51−2は、データベースサーバ間でデータ差分が生じ得る所定の基点時刻情報(基準日時情報とも呼ぶ。)tを設定し、その基点時刻情報tを基点として、データベースサーバ間で生じ得る、その種類に応じてデータ差分を抽出し、所定の手順に従ってデータ整合を行うものである。つまり、データ整合部51−1、51−2は、差分抽出機能とデータ整合機能とを有する。なお、データ整合部52−1、52−2による差分抽出方法及びデータ整合方法については、動作の項で詳細に説明する。
【0029】
ここで、基点時刻情報tは、データベースサーバ間で差分データが発生し得る時刻とすることができる。例えば、二相コミットから一相コミットに移行した時点の時刻とすることができる。また例えば、基点時刻情報tは、いずれかのデータベースサーバにおいて障害やメンテナンス等により停止する場合に、その障害発生時の時刻としたり、メンテナンスによる停止時の時刻等としたりすることができる。
【0030】
クライアントライブラリ11では、二相コミットプロトコルによりデータ更新ができなくなり、いずれかのデータベースサーバ20の二相コミットフラグ223がOFFに設定された場合には、全てのデータベースサーバ20から二相コミットフラグ223の読み込みを試行し、二相コミットフラグ223がOFFに設定されたデータベースサーバにだけデータ更新のトランザクションを送信して一相コミットによりデータ更新を行うようにしても良い。
【0031】
例えば、データベースサーバ20−2が保守作業などにより停止中に、データベースサーバ20−1において、二相コミットフラグ223−2の内容が「OFF」に設定されていた場合には、クライアントライブラリ11は、二相コミットフラグ223−1の内容を読み込むと、データベースサーバ20−1にだけデータベース更新のトランザクションを送信し、データベースサーバ20−1ではそのトランザクションによりデータベースのデータ更新を行う。
【0032】
クライアントライブラリ11が、二相コミットフラグ223−1、223−2の内容を読み込む契機としては、例えば、クライアントライブラリ11が、データベースサーバ20−1、20−2にデータベース接続(DBMS21−1、21−2と接続)する際に読み込むようにしても良いし、また例えば、定期的又はトランザクションの発生ごとに読み込むようにしても良いし、さらに例えば、二相コミットできなかった場合に読み込むようにしても良い。また、クライアントライブラリ11が、それぞれのデータベースサーバ20−1、20−2に動作の正常性について問い合わせ(以下、「状態ポーリング」という)を行う際に読み込んでも良い。状態ポーリングについては、後述する動作説明において詳述する。
【0033】
二相コミットフラグ223−1、223−2内容については、例えば、保守運用作業者などのオペレータが手動で書き換えを行っても良いし、図1において図示は省略しているが、データベースサーバ20−1、20−2の内部又は外部に配置された監視装置により、データベースサーバの動作状況を監視し、データベースサーバの動作状況に応じて、フラグ管理部222−1、フラグ管理部222−2が書き換えるようにしても良い。例えば、データベースサーバ20−2が故障などにより停止した場合に、監視装置により検知し、監視装置がその旨をデータベースサーバ20−1のフラグ管理部222−1に通知し、フラグ管理部222−1が二相コミットフラグ223−1の内容を「OFF」に書き換えるようにしても良い。また例えば、クライアントライブラリ11が、データベースサーバ20−1、20−2の動作状況を監視し、その動作状態に応じて、フラグ管理部222−1、222−2に、二相コミットフラグ223−1、223−2の内容更新を要求するようにしても良い。
【0034】
(A−2)第1の実施形態の動作
次に、以上のような構成を有する第1の実施形態のデータベースシステム1におけるデータ更新の動作を説明する。
【0035】
(A−2−1)状態ポーリングについて
まず、データベースクライアント10が、データベースサーバ20−1、20−2の状態について問い合わせを行う状態ポーリングの動作の例について説明する。
【0036】
図2は、データベースクライアント10が、データベースサーバ20−2に対して状態ポーリングを行った動作の例について示したシーケンス図である。
【0037】
図2では、データベースクライアント10が、データベースサーバ20−2に状態ポーリングを行った場合について示しているが、データベースサーバ20−1であっても同様であるので説明を省略する。
【0038】
まず、データベースクライアント10のクライアントライブラリ11から、データベースサーバ20−2に対して、ネットワーク上での疎通確認(例えば、PING)が実施される(S101)。例えば、データベースクライアント10から、データベースサーバ20−2に対して、ネットワーク上での疎通確認をするための信号が送信され、その応答がデータベースサーバ20−2からあった場合には通信可と判定される(S102)。
【0039】
上述のステップS101によりデータベースサーバ20−2との疎通が確認された場合には、データベースクライアント10(クライアントライブラリ11)から、データベースサーバ20−2のDBMS21−2にデータベース接続が実施され(S103)、DBMS21−2から接続応答があると(S104)データベースサーバ20−2においてデータベース機能が正常に動作していることが確認される(S104)。
【0040】
上述のステップS102によりデータベースサーバ20−2のデータベースとしての正常性が確認された場合は、データベースクライアント10(クライアントライブラリ11)は、データベースファイルシステム22−2へのアクセスの正常性と判断し、データベースファイルシステム22−2にアクセスする(S105)。そして、データベースファイルシステム22−2は、アクセス結果をデータベースクライアント10(クライアントライブラリ11)に送信し、二相コミットフラグ223−2の内容が読込まれる(S106)。
【0041】
(A−2−2)トランザクション(データベース更新)処理
図1の構成では、通常であればデータベースクライアント10(クライアントライブラリ11)から、データベースサービスにおけるデータ更新の要求が、データベースサーバ20−1、20−2に対して送信され、二相コミットプロトコルにより、データベースファイルシステム22−1、22−2のデータが更新される。
【0042】
次に、データベースシステム1において、二相コミットの実施ができない場合のトランザクション処理の動作について説明する。
【0043】
図3は、データベースシステム1において、二相コミットの実施ができない場合のトランザクション処理の動作について説明したシーケンス図である。また、図3においては、データベースサーバ20−2が、例えば、障害発生等により停止しており、データベースサーバ20−1の二相コミットフラグ223−1には「OFF」が設定されているものとする。
【0044】
まず、データベースクライアント10のクライアントライブラリ11により、データベースサーバ20−1に対して上述の図2に示す状態ポーリングの問い合わせが実施される。ここでは、上述の通りデータベースサーバ20−2は停止しているので、ネットワーク上の疎通も取ることができず、上述のステップS101及びS102の時点で終了し、クライアントライブラリ11では、データベースサーバ20−2との接続は不可であったという結果となる(S201)。
【0045】
クライアントライブラリ11では、データベースサーバ20−1に対しても、上述の図2に示す状態ポーリングの問い合わせが実施され、二相コミットフラグ223−1の内容が読込まれる(S202)。
【0046】
二相コミットフラグ223−1の内容が読込まれると、データベースクライアント10では、データベースサーバ20−1の二相コミットフラグ223−1の内容が「OFF」となっているため、データベースのデータ更新は、データベースサーバ20−1に対して一相コミットプロトコルにより行うと決定される(S203)。
【0047】
そして、データベースクライアント10からは、データベースサーバ20−2へのコミットは要求されず、データベースサーバ20−1に対してのみコミットが要求され(S204)、データベースサーバ20−1においてデータが更新される(S205)。
【0048】
(A−2−3)差分データの整合処理
次に、この実施形態に係るデータベースシステム1におけるデータベースサーバ間で生じる差分データの整合処理について図面を参照しながら詳細に説明する。
【0049】
ここでは、データベースサーバ20−2に障害が発生して動作が停止した場合を例示する。
【0050】
データベースサーバ20−2が一旦停止してしまうと、データベースサーバ20−1とデータベースサーバ20−2との間で差分データが生じることになるため、停止状態にあるデータベースサーバ20−2をそのまま起動させて復帰させることができない。
【0051】
このとき、データベースサーバ20−2に障害が発生した場合に、データベース更新のコミットプロトコルを二相コミットから一相コミットに変更し、データベースサーバ20−1に対してのみデータ更新を行うようにする。
【0052】
そして、データベースサーバ20−2が運転を停止し、その後、データベースサーバ20−2が運転を再開した後に、データベースサーバ20−1とデータベースサーバ20−2との間でデータ整合を行う必要がある。
【0053】
図4は、この実施形態に係るデータベースシステム1におけるデータ整合の対象とするデータ差分の種類を説明する説明図である。なお、図4では、説明を容易にするために、データベースサーバ20−2が停止しており、データベースサーバ20−1が一相コミットによるデータ更新がなされている場合を想定したものである。
【0054】
図4に示すように、データ整合対象となるデータ差分は、大別して、「追加差分」、「更新差分」、「削除差分」がある。
【0055】
「追加差分」とは、一相コミットによるデータ更新を行うデータベースサーバ(ここでは、データベースサーバ20−1)に新たにレコードが追加されたときに生じ得る差分をいう。ここでは、レコードの追加態様に応じて、「追加差分」を「追加差分A」と「追加差分B」とに分別する。「追加差分A」は、データベースサーバ20−1に追加されたレコードであって、停止状態のデータベースサーバ20−2に存在しないキーで、データベースサーバ20−1側に登録されたレコードが追加された差分をいう。「追加差分B」は、データベースサーバ20−1に追加されたレコードであって、データベースサーバ20−2にも存在するキーで、登録されたレコードの差分をいう。例えば、データベースサーバ20−1側で一旦削除され、同一キーで登録された新たなレコードが追加されたものである。
【0056】
「更新差分」とは、一相コミットによるデータ更新を行うデータベースサーバ(ここでは、データベースサーバ20−1)が更新したレコードの差分をいう。例えば、両方のデータベースサーバ20−1及び20−2にレコードが存在し、データベースサーバ20−1で任意のカラムに更新されているレコードの差分である。
【0057】
「削除差分」とは、一相コミットによるデータ更新を行うデータベースサーバ(ここでは、データベースサーバ20−1)が削除したレコードの差分をいう。例えば、データベースサーバ20−1上で削除されたことにより、データベースサーバ20−1に存在しないレコードで、かつ、データベースサーバ20−2に存在するレコードの差分である。
【0058】
図5は、この実施形態に係るデータベースシステム1におけるデータ整合処理を示すフローチャートである。
【0059】
まず、データベースサーバ20−1において、データ整合部51−1は、基点時刻情報tを設定する(S301)。
【0060】
この実施形態では、二相コミットから一相コミットに移行した時点からデータ差分が発生し得るため、二相コミットから一相コミットに移行した時点を基点時刻情報tとするものとする。
【0061】
ここで、データベースサーバ20−1、20−2に記憶されるレコードには、日時情報が付される。この日時情報は、レコードが生成(すなわち、登録)された日時情報(以下、生成日時情報とも呼ぶ。)と、レコードが更新された事項情報(以下、更新日時情報とも呼ぶ。)を有する。なお、新規登録されたレコードには、同一の日時を示す生成日時情報及び更新日時情報が設定される。また、既に登録されているレコードが更新されたときには、その更新された日時が更新日時情報として設定される。
【0062】
データベースサーバ20−1では、基点時刻情報tが保持されているため、データ整合部51−1、51−2は、データ差分を抽出基点時刻情報tと、レコードの生成日時情報及び更新日時情報とを比較することにより、所定のデータ差分抽出条件に従って、データベースサーバ20−1内に記憶されるデータの中からデータ差分の抽出し、整合カテゴリを決定する(S302)。
【0063】
図6は、この実施形態に係るデータベースシステム1におけるデータ差分抽出条件を説明する説明図である。
【0064】
図6に示すように、データ差分抽出条件は差分の種類毎に定義されており、データ整合部51−1、51−2は、データ差分抽出条件に合致するデータ差分を検索する。これにより、データ差分の種類に応じたデータ差分を抽出することができる。また、図6のデータ差分抽出条件には、各条件に合致するデータ差分に対して、どのように整合するかを示す整合カテゴリが定義されている。
【0065】
「追加差分A」については、データベースサーバ20−2に同一キーのレコードが存在せず、かつ、データベースサーバ20−1の更新日時情報が基点時刻情報t以降のレコードとする。例えば、レコードの追加時は、生成日時情報=更新日時情報>基点時刻情報tであり、またレコードの追加後に更新されたレコードは、更新日時情報>生成日時情報>tであるため、いずれの日時情報が条件に入っているものとする。データ整合部51−1、51−2は、この条件に合致するデータ差分を、整合カテゴリ「追加整合」とする。
【0066】
「追加差分B」については、データベースサーバ20−1、データベースサーバ20−2共に、同一キーのレコードが存在し、かつ、データベースサーバ20−1の生成日時情報/更新日時情報がt以降のレコードとする。データ整合部51−1、51−2は、この条件に合致するデータ差分を、整合カテゴリ「更新整合」とする。
【0067】
「更新差分」については、データベースサーバ20−1、データベースサーバ20−2条に生成日時情報が一致している同一キーのレコードが存在し、かつ、データベースサーバ20−1の更新日時情報がt以降のレコードとする。データ整合部51−1、51−2は、この条件に合致するデータ差分を、整合カテゴリ「更新整合」とする。
【0068】
「削除差分」については、データベースサーバ20−1にレコードが存在せず、かつ、データベースサーバ20−2に同一キーのレコードが存在する。一相コミット条件下で、データベースサーバ20−2のデータが全く操作されないのであれば、生成日時情報、更新日時情報の条件は不要となる。データ整合部51−1、51−2は、この条件に合致するデータ差分を、整合カテゴリ「削除整合」とする。
【0069】
次に、データ整合部51−1、51−2は、整合カテゴリ「削除整合」に属するデータ差分についてデータ整合を行う(S303)。つまり、データ整合部51−1、51−2は、削除整合を行うことにより、データベースサーバ20−2側の対象データを削除する。削除対象データの抽出は、図6のデータ差分抽出条件によって決定されたデータ差分に対して行なわれる。
【0070】
削除整合を最初に実施する理由は、データベースサーバ20−2側のデータ量を予め削減できる可能性がためである。データ量の削減は、追加差分のデータ整合時処理のフォーマンスに影響するからである。
【0071】
削除整合の処理をRDBMS(リレーショナルデータベース管理システム)のSQLで表記すると図7に示すような表記となる。図7は、削除整合処理のSQL表記のイメージである。
【0072】
データ整合部51−1及び51−2は、図7(A)のSQLによって、抽出されたレコードに対して、図7(B)を繰り返すことで、削除対象データをデータベースサーバ20−2から削除する。
【0073】
次に、データ整合部51−1、51−2は、整合カテゴリ「更新整合」に属するデータ差分についてデータ整合を行う(S305)。更新差分の整合では、図6のデータ差分抽出条件に従って「更新整合」となっている「追加差分B」、及び、「更新差分」が対象データとするところが特徴的である。
【0074】
これは、「追加差分B」は、両方のデータベースサーバ20−1及び20−2に同一キーのレコードが存在しているため、キーカラム以外の全カラムの整合を実施すればよいからである。また、「更新差分」は、元々、両方のデータベースサーバ20−1及び20−2に同一キーのレコードが存在しており、生成日時情報に変化はないが、キーカラム以外の全力ラムの整合、つまりデータベースサーバ20−1上の情報でデータベースサーバ20−2側のレコードを上書きすることに問題が発生しないからである。
【0075】
データベースの性能については、一般的に、更新処理時間<追加処理時間、および、更新処理時間<削除処理時間が成り立つ。そのため、「追加差分B」を実際には更新差分として扱い、「追加差分B」を更新整合することにより、整合処理性能の向上に効果があると考えられる。
【0076】
これにより、更新整合を行う際の実際のデータ抽出条件は、図8の通りに見直しすることができる。
【0077】
図8は、実施形態に係るデータ差分抽出条件の変形例を説明する説明図である。図8では、「追加差分B」及び「更新差分」については、データベースサーバ20−1、データベースサーバ20−2共に、同一キーのレコードが存在し、かつ、データベースサーバ20−1の更新日時情報がt以降のレコード、かつ、データベースサーバ20−1の更新日時情報が、データベースサーバ20−2の更新日時情報以降のレコードとするように見直している。データ整合部51−1、51−2は、この条件に合致するデータ差分を、整合カテゴリ「更新整合」とする。
【0078】
また、更新整合処理が、削除整合の次の2番目の手順で実施される理由は、追加差分の整合により、データベースサーバ20−2側のレコード件数を増加させないためである。更新差分の整合は、両データベースサーバ20−1及び20−2に存在するレコードが対象となるが、このレコードを検索する際のデータベースの全体量は少ない方がパフォーマンスは良いはずだからである。
【0079】
更新整合の処理をRDBMSのSQLで表記すると図9に示すような表記となる。図9は、更新整合処理のSQL表記のイメージである。
【0080】
データ整合部51−2は、図9(A)のSQLによって、データベースサーバ20−1側からキーカラム以外の全カラム情報を取得する。データベースサーバ20−2において、データ整合部51−2が、データベースサーバ20−2のレコードに対して、図9(B)を繰り返すことで、更新対象データを更新する。
【0081】
最後に、データ整合部51−1、51−2は、整合カテゴリ「追加整合」に属するデータ差分についてデータ整合を行う(S306)。追加差分の整合は、図6のデータ差分抽出条件により抽出した「追加差分A」をデータ対象とする。
【0082】
更新整合の処理をRDBMSのSQLで表記すると図10に示すような表記となる。図10は、追加整合処理のSQL表記のイメージである。
【0083】
データ整合部51−1及び51−2は、図10(A)のSQLによって、抽出されたレコードに対して、図10(B)を繰り返すことで、追加対象データをデータベースサーバ20−2に追加する。
【0084】
次に、図11図14を用いて、具体的なデータ例を参照しながら、この実施形態に係るデータベースシステム1におけるデータ整合処理を説明する。
【0085】
図11から図14では、説明便宜上、「生成日時情報」を「生成日」と表記し、「更新日時情報」を「更新日」と表記している。また、二相エミットから一相エミットに移行した日時情報が「2013/6/30」であり、基点時刻情報tが「2013/6/30」とする。
【0086】
図11は、データベースサーバ20−1において一相コミットが実施されて、データベースサーバ20−1及び20−2の間に差分データが発生した状態を示している。
【0087】
図11において、停止状態にあったデータベースサーバ20−2には、「生成日:2013/6/1」及び「更新日:2013/6/1」のデータA、「生成日:2013/6/1」及び「更新日:2013/6/20」のデータB、「生成日:2013/6/1」及び「更新日:2013/6/1」のデータC、「生成日:2013/6/1」及び「更新日:2013/6/1」のデータD、「生成日:2013/6/1」及び「更新日:2013/6/1」のデータEが登録されている。
【0088】
一方、一相コミットによりデータ更新が継続されていたデータベースサーバ20−1には、「生成日:2013/6/1」及び「更新日:2013/6/1」のデータA、「生成日:2013/6/1」及び「更新日:2013/6/20」のデータB、「生成日:2013/6/1」及び「更新日:2013/7/1」のデータD、「生成日:2013/7/2」及び「更新日:2013/7/2」のデータE、「生成日:2013/7/3」及び「更新日:2013/7/3」のデータFが登録されている。そのため、図11の例の場合、データC、D、E、Fが差分となる。
【0089】
まず、削除差分の整合が実施される。このとき、図11において、データベースサーバ20−1にレコードが存在せず、かつ、データベースサーバ20−2に同一キーのレコードとして「データC」が存在する。そのため、「データC」が「削除差分」として抽出される。
【0090】
従って、データベースサーバ20−2では、図12に示すように、データ整合部51−2が、「データC」をデータベースサーバ20−2から削除する。
【0091】
次に、更新差分の整合が実施される。図11において、データベースサーバ20−1、データベースサーバ20−2共に、同一キーのレコードが存在し、かつ、データベースサーバ20−1の生成日時情報/更新日時情報が基点時刻情報t「2013/6/30」以降のレコードとして「データE」がある。そのため、「データE」が「追加差分B」として抽出される。
【0092】
また、図11において、データベースサーバ20−1、データベースサーバ20−2に生成日時情報が一致している同一キーのレコードが存在し、かつ、データベースサーバ20−1の更新日時情報が基点時刻情報t「2013/6/30」以降のレコードとして「データD」がある。そのため、「データD」が「更新差分」として抽出される。
【0093】
従って、データベースサーバ20−2では、図13に示すように、データ整合部51−2が、「データE」及び「データD」について整合する。
【0094】
最後に、追加差分のデータ整合が実施される。図11において、データベースサーバ20−2に同一キーのレコードが存在せず、かつ、データベースサーバ20−1の更新日時情報が基点時刻情報t「2013/6/30」以降のレコードとして「データF」がある。そのため、「データF」が「追加差分A」として抽出される。
【0095】
従って、データベースサーバ20−2では、図14に示すように、データ整合部51−2が、「データF」を追加する。
【0096】
(A−3)実施形態の効果
以上のように、この実施形態によれば、データベースサーバ間のデータ整合処理において、最適化された条件及び、整合実施順序により、最適なデータ整合を実現することができる。
【0097】
また、例えば、「追加差分B」に該当するデータがある場合、実施順序が「追加整合」→「削除整合」とする場合に、データベースサーバ20−2側に旧い同一キーのレコードが存在するため、二重登録エラーが発生する場合が生じ得る。このような処理は、整合処理中に発生したエラーについて、アプリケーションがエラー分析、リアクション決定等を実施すると、整合処理そのものに時間を要する事になるため、非効率といえる。
【0098】
これに対して、この実施形態によれば、「追加差分B」に該当するデータがある場合、データベースサーバ20−2側のレコードを「削除整合」で一旦削除した後、「追加整合」で再度登録する処理方式としている。この実施形態は、上記のようなデータ矛盾が発生しない順序により整合を実施しているため、動作説明においてもエラーが現れず、効率的なデータ整合を図ることができる。
【0099】
(B)他の実施形態
上述した実施形態においても、本発明の種々の変形実施形態を言及したが、本発明は、以下の変形実施形態にも適用できる。
【0100】
上述した実施形態では、冗長化されたデータベースサーバ、つまりACT/ACT運用の環境を例示した。しかし、ACT/ACT運用に限定されるものではなく、例えば、ACT/SBY環境において定期的に差分のデータのみを転送する機能としても利用できる。これは、例えばACT系データベースサーバから、定期的に全データをexport、SBY系データベースにimportを実施し、データのバックアップを保守する作業については、毎回全データをexportするために要する時間は、差分のみを転送する時間よりも大きいと考えられるためである。
【0101】
上述した実施形態では、データベースシステムにおいて、2台のデータベースサーバが配置された場合について示したが、3台以上のデータベースサーバを配置しても良く、その台数は限定されないものである。
【0102】
上述した実施形態においては、データベースシステムにおいて、通常時は二相コミットメントに従ってデータ更新を行い、いずれかのデータベースサーバの故障時には、一相コミットメントに従ったデータ更新をするようにしていたが、通常時は三相コミットメントによりデータ更新を行うデータベースシステムに適用しても良い。
【0103】
上述した実施形態では、データ整合部が、データベースサーバに搭載される場合を例示したが、例えば、データベースクライアントやデータベースサーバを更に制御する他の制御装置に設けるようにしても良い。
【符号の説明】
【0104】
1…データベースシステム、
10…データベースクライアント、11…クライアントライブラリ、
20、20−1、20−2…データベースサーバ、21、21−1、21−2…DBMS、22、22−1、22−2…データベースファイルシステム、221、221−1、221−2…データ記憶部、222、222−1、222−2…フラグ管理部、223、223−1、223−2…二相コミットメントフラグ、51−1、51−2…データ整合部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14