(58)【調査した分野】(Int.Cl.,DB名)
複数の記憶装置を有する第1の情報処理装置と、前記複数の記憶装置への更新処理の結果が反映される複数の記憶装置を有する第2の情報処理装置と、を備える情報処理システムであって、
前記第1の情報処理装置は、
1以上の記憶装置に対する1まとまりで管理される更新処理を実行するときに、更新される記憶装置ごとの更新差分データを含む更新処理データに、前記更新処理の識別情報と前記更新処理で更新される記憶装置の一覧とを含む制御情報を付加する手段と、
前記制御情報が付加された更新処理データを前記第2の情報処理装置に転送する手段と、を有し、
前記第2の情報処理装置は、
前記第1の情報処理装置から前記制御情報を付加されて転送された更新処理データ中の更新差分データを前記第1の情報処理装置の1以上の記憶装置に対応する前記第2の情報処理装置の1以上の記憶装置にそれぞれ反映する1以上の反映手段と、
前記1以上の反映手段のうちの、第1の反映手段が前記更新処理データ中の先頭の更新差分データを前記第2の情報処理装置の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記第1の情報処理装置の更新処理で更新された記憶装置に対応する前記第2の情報処理装置の記憶装置に排他を設定する排他設定手段と、
前記1以上の反映手段のうちの、第2の反映手段が前記更新処理データ中の最後の更新差分データを前記第2の情報処理装置の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記第1の情報処理装置の更新処理で更新された記憶装置に対応する前記第2の情報処理装置の記憶装置の排他を解除する排他解除手段と、
を有する情報処理システム。
他の情報処理装置の有する複数の記憶装置への更新処理の結果が反映される複数の記憶装置を有する情報処理装置であって、前記他の情報処理装置から制御情報を付加されて転送された更新処理データ中の更新差分データを前記他の情報処理装置の1以上の記憶装置に対応する前記情報処理装置の1以上の記憶装置にそれぞれ反映する1以上の反映手段と、
前記1以上の反映手段のうちの、第1の反映手段が前記更新処理データ中の先頭の更新差分データを前記情報処理装置の対応する記憶装置に反映するときに、前記制御情報に含まれる他の情報処理装置の有する記憶装置の一覧が示す前記他の情報処理装置の更新処理で更新された記憶装置に対応する前記情報処理装置の記憶装置に排他を設定する排他設定手段と、
前記1以上の反映手段のうちの、第2の反映手段が前記更新処理データ中の最後の更新差分データを前記情報処理装置の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記他の情報処理装置の更新処理で更新された記憶装置に対応する前記情報処理装置の記憶装置の排他を解除する排他解除手段と、
を備える情報処理装置。
複数の記憶装置を有する第1の情報処理装置と、前記複数の記憶装置への更新処理の結果が反映される複数の記憶装置を有する第2の情報処理装置と、を備える情報処理システムの情報処理方法であって、
前記第1の情報処理装置のコンピュータが、
1以上の記憶装置に対する1まとまりで管理される更新処理を実行するときに、更新される記憶装置ごとの更新差分データを含む更新処理データに、前記更新処理の識別情報と前記更新処理で更新される記憶装置の一覧とを含む制御情報を付加する手順と、
前記制御情報が付加された更新処理データを前記第2の情報処理装置に転送する手順と、を実行し、
前記第2の情報処理装置のコンピュータが、
前記第1の情報処理装置から前記制御情報を付加されて転送された更新処理データ中の更新差分データを前記第1の情報処理装置の1以上の記憶装置に対応する前記第2の情報処理装置の1以上の記憶装置にそれぞれ反映する1以上の反映手順と、
前記1以上の反映手順のうちの、第1の反映手順が前記更新処理データ中の先頭の更新差分データを前記第2の情報処理装置の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記第1の情報処理装置の更新処理で更新された記憶装置に対応する前記第2の情報処理装置の記憶装置に排他を設定する排他設定手順と、
前記1以上の反映手順のうちの、第2の反映手順が前記更新処理データ中の最後の更新差分データを前記第2の情報処理装置の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記第1の情報処理装置の更新処理で更新された記憶装置に対応する前記第2の情報処理装置の記憶装置の排他を解除する排他解除手順と、
を実行する情報処理方法。
【発明を実施するための形態】
【0016】
以下、図面を参照して、一実施形態に係る情報処理システムについて説明する。以下の実施形態の構成は例示であり、情報処理システムは実施形態の構成には限定されない。
【0017】
以下、
図1から
図18の図面に基づいて、情報処理システムを説明する。なお、以下の説明では、データベース(Data Base)を“DB”と称し、複製されたデータベースを“
レプリカDB”と称する。レプリカDBには、複数のDBが含まれる。また、DB更新時の更新差分データを“ジャーナル”と称し、更新差分データを取得してファイル化したものを“ジャーナルファイル”と称する。ジャーナルファイルには複数のジャーナルが含まれる。
【0018】
<比較例1>
先ず、比較例1に係る
図1、2の図面に基づいて、複製された複数のDB間の整合性について説明する。比較例1に係る情報処理システムは、複数のDBを利用する主計算機とレプリカDBを利用する副計算機とを含む計算機システムであり、主計算機は1つのトランザクション(transaction)で複数のDBを更新する。
図1は、DB更新時のジャーナ
ルを1つのジャーナルファイルに纏めて取得し、レプリカDBに反映する形態の例示である。
図2は、DB更新時のジャーナルを複数のジャーナルファイルに分散して取得し、レプリカDBに反映する形態の例示である。
【0019】
図1の計算機システム100aにおいて、黒丸の記号はDB102a(図中ではDB1)のジャーナルAを表し、白丸の記号はDB103a(図中ではDB2)のジャーナルBを表している。各DBのジャーナルは、1つのトランザクションにより更新される。主計算機101aは、それぞれのジャーナルを1つのジャーナルファイル104aに纏めて取得し、副計算機101bに転送する。なお、主計算機101aと副計算機101bとの間のデータ転送手段は、取得したジャーナルファイルの転送が可能であれば、転送手段に限定されない。例えば、データ転送手段として、取得した更新差分データをファイル単位に
一括して転送するファイル転送手段、更新差分データを逐次に転送するメッセージキュー手段等が例示できる。また、データ転送手段は、主計算機101aと副計算機101b間のファイルの同値性を保証するミラーリングディスク手段であってもよい。
【0020】
副計算機101bでは、転送されたジャーナルファイル104bの個別のジャーナルを、主計算機と同じように1つのトランザクションとしてまとめてレプリカDBに反映することで、レプリカDBに含まれる複数のDB間の整合性が保証される。つまり、DB102aに対応するレプリカDB102bでは黒丸の記号で示されるジャーナルAが、DB103aに対応するレプリカDB103bでは白丸の記号で示されるジャーナルBが、1つのトランザクションにより更新される。このため、レプリカDBでは、トランザクション完了後のレプリカDB間のデータには不整合は生じない。
【0021】
図2の計算機システム100bにおいて、主計算機101aはDB更新時のジャーナルをDB単位のジャーナルファイル105a(図中ではジャーナルファイル1とも記載)、ジャーナルファイル106a(図中ではジャーナルファイル2とも記載)に分散して取得する。DB102a(図中ではDB1)の黒丸の記号で示されるジャーナルAはジャーナルファイル105aに、DB103a(図中ではDB2)の白丸の記号で示されるジャーナルBはジャーナルファイル106aに、それぞれ分散して取得される。なお、主計算機101aでは、
図1に例示の計算機システム100aと同様に、各DBのジャーナルは1つのトランザクションで更新される。
【0022】
主計算機101aで取得されたDB単位の各ジャーナルファイルは、それぞれにデータ転送手段を介して副計算機101bに転送される。
図2の副計算機101bのジャーナルファイル105b(図中ではジャーナルファイル1とも記載)、ジャーナルファイル106b(図中ではジャーナルファイル2とも記載)は、ある時点での、各ジャーナルファイルの到達状態を示している。
【0023】
図2において、主計算機101aから転送されたジャーナルファイル105aは副計算機101bに到達しているので、ジャーナルファイル105bにはDB102aの黒丸の記号で示されるジャーナルAが含まれている。一方、主計算機101aから転送されたジャーナルファイル106aは、図示の状態では副計算機101bに未到達のため、ジャーナルファイル106bにはDB103aの白丸の記号で示されるジャーナルBは含まれていない。
【0024】
このように、ジャーナルファイルを複数に分散して転送させた場合、副計算機101bに到達したジャーナルファイル間には、ジャーナルファイルの転送間隔、データサイズ、通信回線の状態等により、時間的な差を生じてしまう。その結果、副計算機101bに転送されたジャーナルファイルの間には、副計算機101bに到達順位が発生することとなる。
【0025】
副計算機101bにおいて、分散されて転送された各ジャーナルファイルは、それぞれに対応するレプリカDBを対象として、並行して更新処理が実行される。つまり、副計算機101bでは、ジャーナルファイル間に到達順位が発生した状態で、レプリカDBが更新されることとなる。
図2の例では、DB102aに対応するレプリカDB102bにはジャーナルファイル105bの黒丸の記号で示されるジャーナルAは反映される。しかし、DB103aに対応するレプリカDB103bにはジャーナルファイル106bは未到達のため、白丸の記号で示されるジャーナルBを反映することはできない。
【0026】
このように、到達順位が発生した状態でレプリカDBの更新が行われると、一方のDBにはジャーナルは反映され、他方のDBにはジャーナルは未だ反映されないといった、レ
プリカDB間の不整合を生じてしまうこととなる。
図2の例では、ジャーナルファイル105aの後にジャーナルファイル106aが到達するケースであるが、ジャーナルファイル106aの後にジャーナルファイル105aが到達するケースも生じ得る。
【0027】
図2の、レプリカDB間に不整合が生じた状態では、例えば、副計算機101bの参照業務は実行できず、参照業務の動作を実行するにはDB103aに対応するレプリカDB103bへの白丸の記号で示されるジャーナルBの更新完了を待つことになる。副計算機101bでは、レプリカDBへの分散されたジャーナルの反映が全て完了する迄の期間は、参照業務を動作させることができず、副計算機101bを有効に活用することができない。このため、
図2に例示の計算機システム100bでは、ジャーナルファイルを分散し、ジャーナルファイルの処理に係るI/O負荷を軽減させたのにも拘らず、副計算機側の業務レスポンスの低下を招いてしまうという問題があった。
【0028】
次の実施例1で説明する、本実施形態の情報処理システムは、複数のDBに係る更新差分データを複数のジャーナルファイルに分散して取得し、それぞれを副計算機に転送し、副計算機にて並行してレプリカDBに反映する場合であっても、レプリカDB間の整合性を保証する。
【0029】
<実施例1>
図3に、本実施形態の情報処理システムを例示する。本実施例1で説明する、本実施形態の情報処理システムは、
図2に例示の比較例1と同様に、複数のDBを利用する主計算機とレプリカDBを利用する副計算機とを含む計算機システムとして説明する。
【0030】
〔システム説明〕
図3に例示の計算機システム10は、DB12(図中ではDB1),DB13(図中ではDB2)を備える主計算機11と、DB22(図中ではDB1),DB23(図中ではDB2)を備える副計算機21とを含む情報処理システムの一例である。なお、
図3においては、主計算機11のDB12、DB13は、“DB1”及び“DB2”と表記され、副計算機21のDB22,DB23は、“DB1”及び“DB2”として表記される。
【0031】
主計算機11が複数の記憶装置を有する第1の情報処理装置の一例であり、副計算機21が複数の記憶装置への更新処理の結果が反映される複数の記憶装置を有する第2の情報処理装置の一例である。
【0032】
主計算機11と副計算機21とは、図示しない接続手段により接続される。なお、接続手段には、インターネット等の公衆ネットワーク、携帯電話網等の無線ネットワーク、LAN(Local Area Network)等が含まれる。
【0033】
図3に例示の計算機システム10において、DB12、DB13は、業務中の主計算機11が参照し、或いは管理するデータの格納先として利用するデータベースである。また、DB22、DB23は、業務中の副計算機21が参照し、或いは管理するデータの格納先として利用するデータベースである。各DBは、ソリッドステートドライブ装置、ハードディスクドライブ装置等の外部記憶装置を含む。
【0034】
図3に例示の計算機システム10において、副計算機21の備えるDB22は、主計算機21のDB12のレプリカDBであり、同様に、DB23はDB13のレプリカDBである。なお、主計算機11の備えるDB12,DB13、及び、副計算機の備えるDB21,DB22は、例えば、さらに複数のDB群を含むとしてもよい。
【0035】
図3に例示の主計算機11は、1つのトランザクションで複数のDBを更新する。DB
12,DB13間の更新に係る整合性は、主計算機11で実行されるトランザクションで保証される。主計算機11は、DB更新時の更新差分データであるジャーナルをDB単位で分散して取得する。つまり、DB12の更新差分データは、1つのジャーナルファイル16(図中ではジャーナルファイル1とも記載)に累積して取得され、DB13の更新差分データは、1つのジャーナルファイル17(図中ではジャーナルファイル2とも記載)に累積して取得される。
【0036】
主計算機11により分散されて取得されたそれぞれのジャーナルファイルは、所定のデータ転送手段を介して、並行して副計算機21に転送される。副計算機21に転送されたジャーナルファイル16はDB12のレプリカDBであるDB22に反映され、ジャーナルファイル17はDB13のレプリカDBであるDB23に反映される。なお、副計算機21におけるジャーナルの反映は、並行して実行される。
【0037】
なお、主計算機11と副計算機21との間のデータ転送手段は、取得したジャーナルファイルの転送が可能であれば、転送手段に限定されない。データ転送手段として、例えば、取得した更新差分データをファイル単位に一括して転送するファイル転送手段、更新差分データを逐次に転送するメッセージキュー手段等が例示できる。また、データ転送手段は、主計算機11と副計算機21間のファイルの同値性を保証するミラーリングディスク手段であってもよい。
【0038】
主計算機11,副計算機21は、例えば、
図4に例示の、コンピュータとしての情報処理装置90によって実現される。
図4は、情報処理装置90のハードウェアの構成の例示である。図例の情報処理装置90は、接続バスB1によって相互に接続されたCPU(Central Processing Unit)91、主記憶部92、補助記憶部93、通信部94を有する。
【0039】
情報処理装置90は、CPU91が補助記憶部93に記憶されたプログラムを主記憶部92の作業領域に実行可能に展開し、プログラムの実行を通じて周辺機器の制御を行う。これにより、情報処理装置90は、所定の目的に合致した機能手段を実現することができる。主記憶部92及び補助記憶部93は、コンピュータである情報処理装置90が読み取り可能な記録媒体である。
【0040】
CPU91は、情報処理装置90全体の制御を行う中央処理演算装置である。CPU91は、補助記憶部93に格納されたプログラムに従って処理を行う。主記憶部92は、CPU91がプログラムやデータをキャッシュしたり、作業領域を展開したりする記憶媒体である。主記憶部92は、例えば、RAM(Random Access Memory)やROM(Read Only Memory)を含む。
【0041】
補助記憶部93は、各種のプログラム及び各種のデータを読み書き自在に記録媒体に格納する。補助記憶部93は外部記憶装置とも呼ばれる。補助記憶部93には、オペレーティングシステム(Operating System :OS)、各種プログラム、各種テーブル等が格納される。OSは、通信部94を介して接続される外部装置等とのデータの受け渡しを行う通信インターフェースプログラムを含む。外部装置等には、例えば、ネットワーク等で接続された、他の情報処理装置、外部記憶装置が含まれる。なお、補助記憶部93は、例えば、ネットワーク上のコンピュータ群であるクラウドの一部であってもよい。
【0042】
通信部94は、例えば、ネットワーク等とのインターフェースである。主計算機11と副計算機12との間のジャーナルファイルの送受は通信部94を介してインターフェースされる。
【0043】
補助記憶部93は、例えば、EPROM(Erasable Programmable ROM)、ソリッドス
テートドライブ装置、ハードディスクドライブ(HDD、Hard Disc Drive)装置等であ
る。また、補助記憶部93としては、例えば、CDドライブ装置、DVDドライブ装置、BDドライブ装置等が提示できる。記録媒体としては、例えば、不揮発性半導体メモリ(フラッシュメモリ)を含むシリコンディスク、ハードディスク、CD、DVD、BD、USB(Universal Serial Bus)メモリ等がある。
【0044】
図3に例示の情報処理装置90は、例えば、ユーザ等からの操作指示等を受け付ける入力部を備えるものとしてもよい。このような、入力部として、キーボード、ポインティングデバイス等といった入力デバイスを例示できる。また、情報処理装置90は、CPU91で処理されるデータや主記憶部92に記憶されるデータを出力する出力部を備えるものとしてもよい。このような、出力部として、CRT(Cathode Ray Tube)ディスプレイ、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、EL(Electroluminescence)パネル、有機ELパネル、プリンタといった出力デバイスを例示できる。
【0045】
主計算機11としての情報処理装置90は、CPU91が補助記憶部93に記憶されているOS、各種プログラムや各種データを主記憶部92に読み出して実行することにより、対象プログラムの実行と共に、
図3に例示のジャーナル取得装置14を実現する。
【0046】
また、主計算機11としての情報処理装置90は、ジャーナル取得装置14が参照し、或いは管理するデータの格納先として、トラン順序番号管理ファイル15を有する。トラン順序番号管理ファイル15は、例えば、補助記憶部93に含まれる。
【0047】
副計算機21としての情報処理装置90は、CPU91が補助記憶部93に記憶されているOS、各種プログラムや各種データを主記憶部92に読み出して実行することにより、対象プログラムの実行と共に、
図3に例示の反映装置24、排他装置25を実現する。
【0048】
また、副計算機11としての情報処理装置90は、排他装置25が参照し、或いは管理するデータの格納先として、反映状況管理ファイル26を有する。反映状況管理ファイル26は、例えば、補助記憶部93に含まれる。
【0049】
(主計算機)
ジャーナル取得装置14は、1つのトランザクションで更新される各DBのジャーナルを取得する。ジャーナル取得装置14は、各DBのジャーナルに、(1)トランザクション順序番号、(2)更新DB名一覧、(3)トランザクション分散数といった制御情報を付加し、各DBのジャーナルを取得する。ジャーナル取得装置14により付加された制御情報は、例えば、各ジャーナルの先頭部に挿入される。
【0050】
ジャーナル取得装置14が付与する、(1)トランザクション順序番号は、トランザクションの終了順に割り当てる番号情報である。また、(2)更新DB名一覧は、トランザクションで更新されたDB名の一覧情報である。ここで、DB名はDBを一意に特定する識別情報であり、例えば、主計算機11により付与される。(3)トランザクション分散数は、1つのトランザクションで更新された各DBのジャーナルの分散数を示す情報である。なお、ジャーナル取得装置14で割り当てられたトランザクション順序番号は、トラン順序番号管理ファイル15にて管理される。
【0051】
図5A、5Bに、所定の制御情報が付加されたジャーナルを例示する。
図5A,5Bのジャーナルは、
図3に例示の“トラン3”で更新されたジャーナル例である。
図5Aは、ジャーナルファイル16に累積されるDB12のジャーナル例であり、
図5Bは、ジャーナルファイル17に累積されるDB13のジャーナル例である。
【0052】
図5Aでは、トランザクション順序番号(図中ではトラン順序番号),更新DB名一覧,トランザクション分散数(図中ではトラン分割数)といった制御情報が、更新対象のDBから取得されたジャーナルの先頭部に挿入されている。なお、対象となるDBから取得されるジャーナルは、少なくとも更新DB名,データ更新に係る更新差分データを含む。図例では、“トラン順序番号”に“3”,“更新DB名一覧”に“DB1,DB2”,“トラン分割数”に“2”が例示されている。
図5Bにおいても、
図5Aで説明した情報が同様に挿入されている。
【0053】
図3の例では、主計算機11の“トランX”が1つのトランザクションを表し、小黒点を結ぶ実線の長さが更新に係るトランザクションの相対的な期間を示している。
図3に例示の主計算機1において、“トラン1”ではDB12を更新し、DB12の更新に係るジャーナルAは黒丸の記号で示されている。同様に、“トラン2”ではDB13を更新し、DB13の更新に係るジャーナルPは三角の記号で示されている。また、“トラン3”ではDB12,DB13を更新し、DB12の更新に係るジャーナルBは黒い矩形の記号,DB13の更新に係るジャーナルQは白い矩形の記号で示されている。また、“トラン4”もDB12,DB13を更新し、DB12の更新に係るジャーナルCは黒い星印の記号,DB13の更新に係るジャーナルRは白い星印の記号で示されている。
図3の主計算機11に例示のトランザクションは、“トラン1”,“トラン2”,“トラン3”,“トラン4”の順序で終了する。
【0054】
本実施形態のジャーナル取得装置14は、それぞれのトランザクションで更新されたジャーナル毎に、上述の(1)から(3)の制御情報を付加して取得する。例えば、“トラン1”で更新されたジャーナルには、制御情報として、トランザクション順序番号に“1”、更新DB名一覧に“DB1”、トランザクション分散数に“1”が付加される。また、例えば、“トラン3”で更新されたジャーナルには、制御情報として、トランザクション順序番号に“3”、更新DB名一覧に“DB1、DB2”、トランザクション分散数に“2”が付加される。
【0055】
このように、本実施形態の主計算機11では、ジャーナル取得装置14により、所定の制御情報が付加され、ジャーナルが取得される。取得されたジャーナルは、DB単位のジャーナルファイルに纏められる。この結果、ジャーナルファイル16には、トランザクションの終了順にDB12の更新に係るジャーナルが時系列順に並び、ジャーナルファイル17には、トランザクションの終了順にDB13の更新に係るジャーナルが時系列順に並ぶこととなる。
【0056】
(副計算機)
反映装置24は、データ転送手段を介して転送された各ジャーナルファイルのジャーナルをレプリカDBに反映する。反映装置24は、各ジャーナルファイルに纏められたジャーナル毎の制御情報を取得し、レプリカDB間のジャーナル更新に係る所定の排他処理要求を排他装置に要求する。
【0057】
排他装置25は、更新時のジャーナルをレプリカDBに反映する際の、レプリカDB全体での排他開始処理/排他解消処理を行う。また、排他装置25は、複数のジャーナルファイルに分散されたトランザクションの実行順を保証する処理を行う。
【0058】
なお、レプリカDB全体に対するジャーナルの反映状況は、反映状況管理ファイル26で管理される。また、本実施形態の反映装置24,排他装置25によって実行されるDB22及びDB23へのジャーナル反映処理は並行して実行される。
【0059】
図3の例では、副計算機21の“トランX(Xは1,2,3,4)”がレプリカDBに
反映する1つのトランザクションを表し、小黒点を結ぶ実線の長さが更新に係るトランザクションの相対的な期間を示している。なお、図例で“反映1”は、ジャーナルファイル16に纏められたDB12のジャーナルを反映する処理を表し、“反映2”は、ジャーナルファイル17に纏められたDB13のジャーナルを反映する処理を表している。ジャーナルファイル16に纏められたDB12のジャーナルを反映する処理は、DB12のレプリカDBであるDB22を対象として実行される。また、ジャーナルファイル17に纏められたDB13のジャーナルを反映する処理は、DB13のレプリカDBであるDB23を対象として実行される。
【0060】
本実施形態の副計算機21は、反映装置24,排他装置25により、主計算機11で実行されたトランザクションとの整合性を保証するよう、機能する。本実施形態の副計算機21では、反映装置24,排他装置25により、比較例1の
図2に例示する形態で発生する、レプリカDB間のトランザクションの不整合を解消する。
【0061】
なお、比較例1の
図2に例示する形態で発生する、レプリカDB間のトランザクションの不整合には、次の2つのケースが想定される。1つ目のケースは、主計算機11から副計算機21に転送された各ジャーナルファイルに含まれるジャーナルの出現順とレプリカDBへの更新反映順が同じ場合に生ずる不整合である。2つ目のケースは、主計算機11から副計算機21に転送された各ジャーナルファイルに含まれるジャーナルの出現順とレプリカDBへの更新反映順が異なる場合に生ずる不整合である。以下、ケース1、ケース2のそれぞれに応じて、本実施形態の副計算機21の機能を説明する。
【0062】
(ケース1)
図6に、比較例1の
図2に例示する形態で発生する、レプリカDB間のトランザクションの不整合を説明する図を例示する。
図6は、主計算機11から副計算機21に転送された各ジャーナルファイルに含まれるジャーナルの出現順とレプリカDBへの更新反映順が同じ場合に生ずるレプリカDB間のトランザクションの不整合のケースを例示する。
図6中の、主計算機11の“トランX”と各DBにおけるジャーナルの関係は、
図3の主計算機11で説明した通りである。また、
図6中の、副計算機21の“反映X”と“ジャーナルファイルX”との関係は、
図3の副計算機21で説明した通りである。なお、以下の説明において
図7から9についても上述の
図6の関係と同様である。
【0063】
図6に例示の主計算機11の“トラン3”では、1つのトランザクションでDB12及びDB13が更新される。主計算機11の“トラン3”で更新された各DBのジャーナルは、DB単位のジャーナルファイルに分散されて副計算機21に転送される。副計算機21では、DB単位で分散されたジャーナルファイルを並行してレプリカDBに反映する。しかし、比較例1の
図2に例示する形態では、分散されたジャーナルファイル毎に更新処理が行われるため、“反映1”で更新される黒の矩形の記号で示されるジャーナルB、及び“反映2”で更新される白の矩形の記号で示されるジャーナルQが揃って更新される保証はない。
【0064】
例えば、
図6に示すように、“反映1”で“トラン3”の反映が終了し、レプリカDBであるDB22へのジャーナルBが更新されたとしても、“反映2”の“トラン3”は終了せず、DB23へのジャーナルQが反映されていない状態が生じ得る。このように、比較例1の
図2に例示する形態では、副計算機21は、“反映1”の“トラン3”の終了契機でレプリカDBを参照できる。このため、副計算機21が参照するデータは、DB22では“トラン3”を反映したデータ、DB23では“トラン2”を反映したデータを参照することとなる。例えば、DB22が「販売DB」,DB23が「在庫DB」の場合、「販売DB」の販売数は増えているが「在庫DB」の在庫数は減っていないというレプリカDB間の不整合を生じてしまう。
【0065】
本実施形態の計算機システム10の副計算機21では、反映装置24,排他装置25により、並行して実行されるレプリカDB間のジャーナル更新に係るトランザクションの整合性を保証する。本実施形態の副計算機21では、各ジャーナルに付加された制御情報に基づいて複数のジャーナルファイルに分散されたトランザクションについて、レプリカDB間の整合性を保証する。
【0066】
図7は、本実施形態の副計算機21におけるトランザクションのレプリカDB間の整合性を説明する図である。主計算機11のDB12のジャーナルファイル16には、トランザクションの終了順に、各トランザクションで更新されたジャーナルが時系列順に並んでいる。
図7のジャーナルファイル16では、“トラン1”のジャーナルA,“トラン3”のジャーナルB,“トラン4”のジャーナルCが並ぶ。同様に、副計算機12のDB13のジャーナルファイル17には、“トラン2”のジャーナルP,“トラン3”のジャーナルQ,“トラン4”のジャーナルRが、トランザクションの終了順に並ぶ。
【0067】
図7の“反映1”に示すように、ジャーナルファイル16の各ジャーナルは、副計算機21で実行されるトランザクションの排他制御の機能により、ジャーナルA、ジャーナルB、ジャーナルCの順に更新されることとなる。同一のDBを利用するトランザクションは、2つのトランザクション間で対象となるDBが競合するため、トランザクションの排他制御により、後行の処理は先行の処理の終了待ち(排他待ち)となるためである。つまり、
図7の“反映1”では、“トラン3”は“トラン1”の終了待ちとなり、“トラン4”は“トラン2”の終了待ちとなる。この結果、副計算機21での“反映1”の更新処理では、ジャーナルファイル16に纏められたジャーナル順が保証される。同様に、
図7の“反映2”に示すように、ジャーナルファイル17の各ジャーナルは、副計算機21で実行されるトランザクションの排他制御の機能により、ジャーナルP、ジャーナルQ、ジャーナルRの順に更新される。
【0068】
本実施形態の副計算機21では、複数のレプリカDBを対象とする更新反映のトランザクションでは、レプリカDB間の排他制御を実行する。具体的には、
図7の“トラン3”では、先行する“反映1”のトランザクションの開始で更新対象のDB22,23を排他し、後行の“反映2”のトランザクションの終了で排他した更新対象のDB22,23の排他を解消する。このようなレプリカDB間の排他制御を行うことにより、
図7中に示す“排他区間”経過後にレプリカDBが参照されることとなり、
図6で説明したレプリカDB間の不整合は回避される。つまり、本実施形態の副計算機21の参照するDB22ではジャーナルBが,DB23ではジャーナルQが反映されているため、複数のジャーナルファイルに分散されたトランザクションの整合性は保証される。
【0069】
(ケース2)
図8に、比較例1の
図2に例示する形態で発生する、レプリカDB間のトランザクションの不整合を説明する図を例示する。
図8は、主計算機11から副計算機21に転送された各ジャーナルファイルに含まれるジャーナルの出現順とレプリカDBへの更新反映順が異なる場合に生ずるレプリカDB間のトランザクションの不整合のケースを例示する。
【0070】
図8に例示の主計算機11の、“トラン1”と“トラン2”との関係では、“トラン1”の更新後に“トラン2”が更新される。“トラン1”で更新されたDB12のジャーナルはジャーナルファイル16、“トラン2”で更新されたDB13のジャーナルはジャーナルファイル17に分散されて副計算機21に転送される。副計算機21に分散して転送されたジャーナルファイル16,17は、並行してレプリカDBに反映される。
【0071】
しかし、比較例1の
図2に例示する形態では、分散されたジャーナルファイル毎に更新
処理が行われるため、“反映1”のジャーナルAの更新後に“反映2”のジャーナルPが更新される保証はない。例えば、
図8に示すように、“反映2”で“トラン2”の更新が終了し、レプリカDBであるDB23へジャーナルPが反映された後に、“反映1”で“トラン1”の更新が終了し、レプリカDBであるDB22へのジャーナルAが反映される状態も生じ得る。
【0072】
比較例1の
図2に例示する形態では、副計算機21は、“反映2”の“トラン2”の終了契機でレプリカDBを参照できる。このため、副計算機21が参照するデータは、DB22では反映されたデータがない“反映データなし”の状態、DB23では“トラン2”を反映したデータを参照することとなる。例えば、「商品DB」と「在庫DB」を想定すると、“トラン1”で「在庫DB」の在庫数を「0」にし、「商品DB」の該当商品を削除した場合、商品は削除されているにも関わらず、在庫が存在するという状態となる。副計算機21が参照するレプリカDB間には不整合が生じてしまう。
【0073】
本実施形態の副計算機21では、各ジャーナルに付加された制御情報に基づいて複数のジャーナルファイルに分散されたトランザクションの終了順序について、レプリカDB間での整合性を保証する。
【0074】
図9は、本実施形態の副計算機21における、トランザクションの終了順序についてのレプリカDB間での整合性を説明する図である。
図9のジャーナルファイル16では、“トラン1”のジャーナルA,“トラン3”のジャーナルB,“トラン4”のジャーナルCが並ぶ。同様に、DB13のジャーナルファイル17には、“トラン2”のジャーナルP,“トラン3”のジャーナルQ,“トラン4”のジャーナルRが、トランザクションの終了順に並ぶ。
【0075】
図9の“反映1”では、ジャーナルファイル16の各ジャーナルは、副計算機21で実行されるトランザクションの排他制御の機能により、ジャーナルA、ジャーナルB、ジャーナルCの順に更新される。同様に、
図9の“反映2”では、ジャーナルファイル17の各ジャーナルは、副計算機21で実行されるトランザクションの排他制御の機能により、ジャーナルP、ジャーナルQ、ジャーナルRの順に更新される。
【0076】
本実施形態の副計算機21では、主計算機11のトランザクションの終了順序と同じ順序で、ジャーナルファイルに分散されたトランザクションを反映させる。
図9に例示する、“反映1”の“トラン1”と“反映2”の“トラン2”との関係では、“トラン2”の更新処理が先行する。本実施形態の副計算機21では、更新処理が先行する“トラン2”では、トランザクションの終了順序が早い“反映1”の“トラン1”の更新処理に係るトランザクションの終了待ちを行う。つまり、レプリカDB間で更新処理が先行する“トラン2”では、“トラン1”のジャーナル反映の終了後に“トラン2”のジャーナル反映を終了させる。
【0077】
このように、副計算機21は、レプリカDB間において、更新反映に係るトランザクションの終了順番待ち制御を行うことにより、レプリカDB間の整合性を保証できる。本実施形態の副計算機21では、“反映2”の“トラン2”の終了契機でレプリカDB参照しても、
図8で説明したレプリカDB間の不整合が生ずることはない。副計算機21の、“反映2”の“トラン2”の終了契機で参照するDB22にはジャーナルAが,DB23にはジャーナルPが反映される。本実施形態の副計算機21では、複数のジャーナルファイルに分散されたトランザクションの終了順序について、レプリカDB間での整合性を保証できる。
【0078】
なお、上述したケース2において、
図9に例示する主計算機11の“トラン2”を1つ
のトランザクションによりDB12,DB13を更新するとした場合、副計算機21の更新反映のトランザクションではデッドロックが生じる虞がある。
【0079】
主計算機11の“トラン2”で、DB12,DB13を更新する場合、ジャーナルファイル17のジャーナル順には変更はない。しかし、ジャーナルファイル16には“トラン1”,“トラン2”,“トラン3”,“トラン4”の順でDB12に対するジャーナルが並ぶこととなる。従って、
図9のように“反映2”で“トラン2”が先行する場合、“トラン2”は複数のレプリカDBを更新対象とするため、DB間の排他制御を実行する。つまり、“反映2”の“トラン2”の開始で、“反映1”の“トラン2”の更新対象となるDB22は排他されることとなる。
【0080】
“反映2”の“トラン2”の開始で排他されたDB22では、“反映1”の“トラン1”が、“反映2”または“反映1”による“トラン2”の排他解消待ちの状態となる。一方、“反映2”の“トラン2”では、トンザクションの終了順序が早い“反映1”の“トラン1”の、トランザクション終了を待つ状態となるため、デッドロック状態が生じる虞がある。
【0081】
本実施形態の副計算機21では、先行して実行される更新反映のトランザクションが複数のレプリカDBを対象とし、且つ、他のトランザクションの終了待ちを行う場合であっても、デッドロックを防止するよう機能する。
【0082】
具体的には、本実施形態の副計算機21は、レプリカDB間で先行する“反映2”の“トラン2”の終了の際に、“反映1”の排他解消待ちの有無を確認する。そして、副計算機21は、“反映1”の排他解消待ちのトランザクションが、主計算機11での終了順序が早いトランザクションの場合、“反映2”の“トラン2”に係るトランザクションをキャンセルし、ロールバックさせる。本実施形態の副計算機21は、“反映2”の“トラン2”に係るトランザクションのロールバックと共に、“反映1”の排他解消待ちを解消でき、“反映1”の“トラン1”の処理動作を開始できる。このように、本実施形態の副計算機21は、レプリカDB間で生じるデッドロックを防止できる。
【0083】
〔処理フロー〕
(計算機システム)
以下、
図10から
図18を参照し、本実施形態の計算機システム10の処理を説明する。
図10A、
図10Bは、計算機システム10の処理のフローチャートの例示である。
図10Aに例示の処理は、計算機システム10の主計算機11によって実行される。
図10Bに例示の処理は、計算機システム10の副計算機21によって実行される。主計算機11は、例えば、主記憶部92に実行可能に展開されたコンピュータプログラムにより、
図10Aに例示の処理を実行する。同様に、副計算機21は、例えば、主記憶部92に展開されたコンピュータプログラムにより、
図10Bに例示の処理を実行する。
【0084】
図10Aに例示のフローチャートにおいて、S1−S3の処理は、計算機システム10の業務が終わるまでの間、繰り返して実行される。S1−S3の処理は、主計算機11で実行される。
【0085】
先ず、業務処理を実行する主計算機11のアプリケーションは、業務中の副計算機21が参照し、或いは管理するデータの格納先として利用するDBに更新が発生すると、データベースシステムに対して各DBの更新を要求する(S1)。データベースシステムは、DB12(
図10Aのディスクマークの中では“DB1”),DB13(
図10Aのディスクマークの中では“DB2”)を含む。例えば、データベースシステムを管理するDBMS(DataBase Management System)は、主計算機11からの更新要求を受け付け、1つ
のトランザクションでDBを更新する。更新対象のDBが複数に存在する場合では、DBMSは1つのトランザクションで、対象となる複数のDBを更新する。そして、DB更新に係るトランザクションの終了を契機として、ジャーナル取得装置14に対して更新対象DBの更新差分データ(ジャーナル)の取得を要求する(S2)。
【0086】
S3では、ジャーナル取得装置14は、所定の制御情報をジャーナルに付加し(S33−S35)、更新に係るジャーナルを取得する(S36)。ジャーナルに付加される制御情報には、トランザクション順序番号,更新DB名一覧,トランザクション分割数が含まれる。なお、トランザクション順序番号は、トラン順序番号管理ファイル15にて管理される(S32)。S3の詳細な処理については
図11により後述する。
【0087】
本実施形態のジャーナル取得装置14は、取得したジャーナルをDB単位のジャーナルファイルに分散して取得する。本実施形態では、DB12のジャーナルはジャーナルファイル16(図中ではジャーナルファイル1とも記載)に纏めて取得され、DB13のジャーナルはジャーナルファイル17(図中ではジャーナルファイル2とも記載)に累積して取得される。なお、ジャーナルファイルは、DBがDBグループ(DB群)の場合では、DBグループ単位でジャーナルを累積するとしてもよい。ジャーナル取得装置14で、DB単位に分散されて累積されたジャーナルファイル16,17は、データ転送手段を介して副計算機21に転送される。
【0088】
図10Bに例示のフローチャートにより、計算機システム10の副計算機21は、転送されたジャーナルファイルに基づいて、レプリカDBに対するジャーナルの反映処理を実行する。副計算機21で実行される反映処理は、複数に分散されたジャーナルファイルに基づき、対象となるレプリカDBに対して並行して行われる。
図10Bに例示の処理は、例えば、主計算機11から転送されたジャーナルファイルの到達を契機として実行される。
【0089】
なお、
図10Bにおいて、ジャーナルファイルはDB単位(或いは、DB群単位)に分散して転送されるため、反映装置24で実行される反映処理をジャーナルファイル毎に対応付けて例示する。
図10Bの例では、反映装置24で実行されるジャーナルファイル16(図中ではジャーナルファイル1)の反映処理を“ジャーナルファイル1用”として表す。同様に、
図10Bの例では、反映装置24で実行されるジャーナルファイル17(図中ではジャーナルファイル2)の反映処理を“ジャーナルファイル2用”として表す。
【0090】
図10Bに例示するフローチャートでは、“ジャーナルファイル2用”で実行される反映処理は、“ジャーナルファイル1用”で実行される反映処理と同様である。従って、以下の説明では、反映装置24で実行される反映処理を、“ジャーナルファイル1用”の処理例で説明するとし、適宜、“ジャーナルファイル2用”の処理を説明する。
【0091】
図10Bに例示のフローチャートにおいて、S4−S5の処理は、計算機システム10の主計算機11からジャーナルファイルが転送される間、繰り返して実行される。
図10Bに例示のフローチャートにおいて、S4の処理は反映装置24で実行され、S5の処理は排他装置25で実行される。
【0092】
図10Bに例示のS41では、例えば、反映装置24の“ジャーナルファイル1用”の反映処理は、分散されて転送されたジャーナルファイル16の到達を契機としてジャーナルの読みを行う。反映装置24の“ジャーナルファイル1用”の反映処理は、ジャーナルファイル16から、主計算機11のDB12を対象として処理されたジャーナルを取得する。ジャーナルファイル16には、複数のジャーナルが、主計算機11で実行された更新に係るトランザクションの終了順に累積されている。
【0093】
同様に、S41の、反映装置24の“ジャーナルファイル2用”の反映処理では、分散されて転送されたジャーナルファイル17の到達を契機としてジャーナルの読み込みを行う。反映装置24の“ジャーナルファイル2用”の反映処理は、ジャーナルファイル17から、主計算機11のDB13を対象として処理されたジャーナルを取得する。ジャーナルファイル17には、複数のジャーナルが、主計算機11で実行された更新に係るトランザクションの終了順に累積されている。
【0094】
なお、転送されたジャーナルファイルが複数の場合、反映装置24の“ジャーナルファイル1用”の反映処理,ジャーナルファイル2用”の反映処理は並行して実行される。
【0095】
次に、反映装置24の“ジャーナルファイル1用”の反映処理は、S41で読み込まれたジャーナルに基づいて、排他装置25に対してトランザクション開始処理(図中ではトラン開始)を要求する(S42)。そして、反映装置24の“ジャーナルファイル1用”の反映処理は、対象となるレプリカDBへのジャーナル反映処理を行う(S43)。次に、反映装置24の“ジャーナルファイル1用”の反映処理は、ジャーナル反映処理の対象となるレプリカDB間の整合性を確保するため、排他装置25に対して所定の処理要求を実行する(S44−S46)。排他装置25に対する所定の処理要求は、例えば、ジャーナル反映処理の対象となるレプリカDBのデッドロック検査処理(S44),トランザクション終了順検査処理(S45、図中ではトラン終了順検査)である。また、排他装置25に対する所定の処理要求は、例えば、処理中のジャーナルに対するトランザクション終了処理(S46、図中ではトラン終了)である。反映装置24の詳細な処理については
図12により後述する。
【0096】
図10Bに例示のフローチャートにおいて、排他装置25のS5の処理は、反映装置24からの要求を契機として実行される。S51では、排他装置25は、反映装置24のS42の要求により、トランザクション開始処理(図中では、トラン開始)を実行する。トランザクション開始処理では、排他装置25は、反映処理のトランザクションの開始に伴い、レプリカDB間の整合性を保証するため、ジャーナルに付加された制御情報に基づいて、反映状況管理ファイル26の格納値の初期設定を行う。また、排他装置25は、複数のジャーナルファイルに分散されたトランザクションのレプリカDB間の整合性を保証するため、各レプリカDBに対するジャーナル反映処理の排他制御を行う。S51の排他制御では、例えば、反映状況管理ファイル26に格納された管理テーブルの格納値に基づいて、反映処理の排他設定,排他解除が実行される。S51のトランザクション開始処理の詳細については
図13により後述する。
【0097】
図5C、5D、5Eに、反映状況管理ファイル26に格納される管理テーブルを例示する。
図5Cは、主計算機11で実行されたDB更新処理に係るトランザクションの終了順序を保証するための情報が格納される管理テーブル例である。
図5Cに例示の管理テーブルは、「反映完了トラン順序番号」フィールドを含む。
図5Cに例示の管理テーブルには、例えば、排他装置25のS54のトランザクション終了処理で反映処理が完了したトランザクションの順序番号が「反映完了トラン順序番号」に格納される。
図5Cに格納されるトランザクションの順序番号は、反映処理中のジャーナルのトランザクション順序番号である。
図5Cに例示の管理テーブルには、反映処理の完了毎に、対象となるジャーナルのトランザクション順序番号が「反映完了トラン順序番号」に格納される。
【0098】
図5Dは、複数のジャーナルファイルに分散されたトランザクション間の排他を保持し続けるための情報が格納される管理テーブル例である。
図5Dに例示の管理テーブルは、反映装置24で実行される、ジャーナルファイルの反映処理毎のレコードを有する。
図5Dに例示の管理テーブルは、「反映中トラン順序番号」,「トラン分割数」のフィールド
を有し、「トラン分割数」フィールドは「完了数」,「全体数」のフィールドを有する。「反映中トラン順序番号」フィールドには、現在反映中のトラン順序番号が格納される。「トラン分割数」の「全体数」フィールドには、複数のジャーナルファイルに分散されたトランザクションの分散数が格納される。「トラン分割数」の「完了数」フィールドには、複数のジャーナルファイルに分散されたトランザクションの中で、反映処理が完了した数値が格納される。
【0099】
図5Eは、トランザクション間のデッドロックを回避するための情報と、排他処理で実行待ちとなったトランザクションの順番待ち状態を解消する情報が格納される管理テーブル例である。
図5Eに例示の管理テーブルは、反映装置24で実行される、ジャーナルファイルの反映処理毎のレコードを有する。
図5Eに例示の管理テーブルは、「反映装置名」,「反映中トラン順序番号」,「DB使用中反映装置名」のフィールドを有する。「反映装置名」フィールドには、分散されたジャーナルファイル毎の反映装置名が格納される。図例では、「反映装置名」として、“ジャーナルファイル1用”、“ジャーナルファイル2用”が格納される。「反映中トラン順序番号」フィールドには、現在反映中のトラン順序番号が格納される。「DB使用中反映装置名」フィールドには、「反映装置名」に格納された反映装置の反映処理で対象となるDBを使用している反映装置名が格納される。つまり、排他待ちをしている反映装置名が格納される。
【0100】
図10Bに例示のフローチャートに戻り、S52では、排他装置25は、反映装置24のS44の要求により、デッドロック検査処理(図中では、デッドロック検査)を実行する。排他装置25は、反映状況管理ファイル26に格納された情報に基づいて、実行中の反映処理に係るトランザクションに関するデッドロック検査処理を実行する。S52のデッドロック検査処理の詳細については
図14により後述する。
【0101】
S53では、排他装置25は、反映装置24のS45の要求により、トランザクション終了順検査処理(図中では、トラン終了順検査)を実行する。排他装置25は、主計算機11におけるトランザクション終了順序を保証するため、反映状況管理ファイル26の格納された情報に基づいて、反映処理中のトランザクションの終了順序の検査処理を実行する。S53のトランザクション終了順検査処理の詳細については
図15により後述する。
【0102】
S54では、排他装置25は、反映装置24のS46の要求により、トランザクション終了処理(図中では、トラン終了)を実行する。排他装置25は、反映状況管理ファイル26の格納された情報に基づいて、反映処理中のトランザクションの終了処理を実行する。S54のトランザクション終了処置の詳細については
図16により後述する。
【0103】
(主計算機)
図11に、ジャーナル取得装置14(
図10AのS3)の詳細なフローチャートを例示する。
図11に例示のS3の処理は、例えば、トランザクションの終了毎に実行される。
図11に例示のフローチャートにおいて、主計算機11のジャーナル取得装置14は、1つのトランザクションで更新された更新差分データをDB単位に分割して取得する(S31)。ジャーナル取得装置14は、例えば、取得したDB毎のジャーナルを主計算機11の主記憶部92の所定の領域に一時的に格納し、S32に移行する。
【0104】
例えば、S31の処理により、
図3の“トラン1”では、DB12のトランザクションで更新されたジャーナルが取得される。また、
図3の“トラン3”では、DB12で更新されたジャーナルと、DB13で更新されたジャーナルが取得される。
【0105】
S32では、ジャーナル取得装置14は、トラン順序番号管理ファイル15に格納されたトランザクション順序番号(図中では、トラン順序番号)のカウントアップを実行する
。ジャーナル取得装置14は、トラン順序番号管理ファイル15に格納されたトランザクション順序番号の格納値を取得し、主記憶部92の所定の領域に一時的に格納する。また、ジャーナル取得装置14は、取得した格納値を“1”つインクリメントし、トラン順序番号管理ファイル15に格納し、S33に移行する。
【0106】
例えば、S32の処理において、
図3の“トラン1”では、ジャーナル取得装置14は、トラン順序番号管理ファイル15に格納されたトランザクション順序番号である“1”を取得し、主記憶部92の所定の領域に一時的に格納する。そして、ジャーナル取得装置14は、取得したトランザクション順序番号を“1”つインクリメントした“2”を、トラン順序番号管理ファイル15に格納する。そして、次の“トラン2”では、“トラン1”でカウントアップされたトランザクション順序番号である“2”が読み込まれる。つまり、“トランX”のS32でカウントアップされたトランザクション順序番号である“X+1”が、次のトランザクションのS32の処理で読み込まれることとなる。
【0107】
ここで、ジャーナル取得装置14により付番されるトランザクション順序番号は更新処理の終了順を示す順序番号の一例である。
【0108】
S33では、ジャーナル取得装置14は、S32で取得したトランザクション順序番号をS31で取得したジャーナルに設定し、S34に移行する。S34では、ジャーナル取得装置14は、S31で取得したジャーナルから更新DB名を抽出して更新DB名一覧に付加し、付加した更新DB名一覧をS31で取得したジャーナルに設定し、S35に移行する。S35では、ジャーナル取得装置14は、ジャーナルファイルの分散数をS31で取得したジャーナルに設定する。ジャーナルファイルの分散数は、トラン分割数としてS31で取得したジャーナルに設定される。つまり、ジャーナル取得装置14は、当該処理中のトランザクションが、幾つのジャーナルファイルに分散されて取得されるかを示す情報としてのトラン分割数を、S31で取得したジャーナルに設定する。なお、S33−S35の処理は、並行して実行されてもよい。
【0109】
例えば、S33−35の処理により、
図3の“トラン1”では、トランザクション順序番号として“1”,更新DB名一覧として“DB1”,ジャーナルファイルの分散数として“1”が、S31で取得されたジャーナルに付加される。また、
図3の“トラン3”では、トランザクション順序番号として“3”,更新DB名一覧として“DB1、DB2”,ジャーナルファイルの分散数として“2”が、S31で取得されたジャーナルに付加される。
【0110】
S36では、ジャーナル取得装置14は、DB単位で分散されたジャーナルを、対応するジャーナルファイルに取得する。ジャーナル取得装置14は、S31−S35の処理により所定の制御情報が付加されたジャーナルを、対応するジャーナルファイルに累積して取得する。
【0111】
以上の処理により、本実施形態の主計算機11では、ジャーナル毎に所定の制御情報が付加されたジャーナルを、DB単位のジャーナルファイルに、トランザクションの終了順に累積して取得できる。
図3の例では、DB12に対応するジャーナルファイル16には、“トラン1”,“トラン3”,“トラン4”のジャーナルが、トランザクションの終了順に累積される。また、DB13に対応するジャーナルファイル17には、“トラン2”,“トラン3”,“トラン4”のジャーナルが、トランザクションの終了順に累積される。
【0112】
ここで、ジャーナル取得装置14で実行されるS33−S36の処理は、1以上の記憶装置に対する1まとまりで管理される更新処理を実行するときに、更新される記憶装置ご
との更新差分データを含む更新処理データに、前記更新処理の識別情報と前記更新処理で更新される記憶装置の一覧とを含む制御情報を付加する手順、ステップの一例である。また、主計算機11のCPU91等は、1以上の記憶装置に対する1まとまりで管理される更新処理を実行するときに、更新される記憶装置ごとの更新差分データを含む更新処理データに、前記更新処理の識別情報と前記更新処理で更新される記憶装置の一覧とを含む制御情報を付加する手段の一例として、S33−S36の処理を実行する。
【0113】
(副計算機:反映装置)
図12に、反映装置24(
図10BのS4)の詳細なフローチャートを例示する。
図12に例示のS4の処理は、例えば、ジャーナルファイル毎に並行して実行される。
図12に例示のフローチャートにおいて、S41では、副計算機21の反映装置24は、例えば、ジャーナルファイル16の到達を契機としてジャーナルファイル16に累積されたジャーナルの読込みを行う。また、S41では、副計算機21の反映装置24は、例えば、ジャーナルファイル17の到達を契機としてジャーナルファイル17に累積されたジャーナルの読込みを行う。反映装置24は、例えば、読み込んだジャーナルを副計算機21の主記憶部92の所定の領域に一時的に格納し、S42に移行する。
【0114】
S42では、反映装置24は、S41で読み込んだジャーナルに基づいて、排他装置25に対するトランザクション開始要求を行う。S42において、反映装置24は、例えば、S41で読み込まれたジャーナルのトランザクション順序番号,更新DB名一覧,トランザクション分散数,反映装置名を排他装置25に通知するとしてもよい。なお、反映装置名は、例えば、
図10Bに例示する“ジャーナルファイル1用”であり、反映装置24において、ジャーナルファイルに対応付けられた反映処理を一意に識別する識別情報である。また、S42の排他装置25に対するトランザクション開始要求は、反映装置名とトランザクション開始要求を通知するとしてもよい。排他装置25では、通知されたトランザクション開始要求と反映装置名から、S41で格納されたジャーナルを参照し、トランザクション順序番号,更新DB名一覧,トランザクション分散数を取得するとしてもよい。
【0115】
S42でトランザクション開始要求を受けた排他装置25は、S42の要求を契機として、S51のトラン開始処理を実行する。排他装置25で実行されるS51のトラン開始処理は、レプリカDB間の整合性を保証するため、ジャーナルに付加された制御情報に基づいて、反映状況管理ファイル26の格納値の初期設定を行う。また、S51のトラン開始処理は、例えば、反映状況管理ファイル26に格納された管理テーブルの格納値に基づいて、各レプリカDBに対するジャーナル反映処理の排他制御を行う。
【0116】
S43では、反映装置24は、S41で読み込んだジャーナルの反映処理を実行する。反映装置24は、例えば、ジャーナルに含まれる更新DB名に対応するレプリカDBに対し、ジャーナルに含まれた更新差分データに基づいて反映処理を実行する。例えば、本実施形態では、ジャーナルファイル16の反映処理はDB22を対象とし、ジャーナルファイル17の反映処理はDB23を対象として実行される。
【0117】
S44では、反映装置24は、排他装置25に対し、反映処理中のトランザクションに関するデッドロック検査処理を要求する。S44において、反映装置24は、例えば、S41で読み込まれたジャーナルのトランザクション順序番号,反映装置名を排他装置25に通知するとしてもよい。また、反映装置24は、排他装置25に対して反映装置名とデッドロック検査処理要求を通知し、排他装置25にてS41で格納されたジャーナルを参照し、トランザクション順序番号を取得するとしてもよい。
【0118】
S44でデッドロック検査処理を受けた排他装置25は、S44の要求を契機として、
S52のデッドロック検査処理を実行する。S52のデッドロック検査処理では、排他装置25は、反映状況管理ファイル26に格納された情報に基づいて、実行中の反映処理に係るトランザクションに関するデッドロック検査処理を実行する。
【0119】
反映装置24は、デッドロック検査処理より、反映処理中のトランザクションのリトライを必要とする場合(S441、YES)には、反映処理中のトランザクションをキャンセル(S442)し、S42に移行する。S42に移行した反映処理24では、S442でキャンセルしたトランザクションについて再び反映処理が開始される。一方、反映装置24は、デッドロック検査処理より、反映処理中のトランザクションのリトライを必要としない場合(S441、NO)には、S45に移行する。
【0120】
本実施形態の副計算機21では、S44,S441,S442の処理を行うことにより、反映処理中のトランザクションの終了前にデッドロックを検査できるため、ケース2で述べた、反映処理中のトランザクションによるデッドロックを防止できる。
【0121】
S45では、反映装置24は、排他装置25に対し、反映処理中のトランザクションに関するトランザクション終了順序検査処理を要求する。S45において、反映装置24は、例えば、S41で読み込まれたジャーナルのトランザクション順序番号,反映装置名を排他装置25に通知するとしてもよい。また、反映装置24は、排他装置25に対して反映装置名とトランザクション終了順検査処理要求を通知し、排他装置25にてS41で格納されたジャーナルを参照し、トランザクション順序番号を取得するとしてもよい。
【0122】
S45でトランザクション終了順序検査処理を受けた排他装置25は、S45の要求を契機として、S53のトランザクション終了順序検査処理を実行する。S53のトランザクション終了順序検査処理では、排他装置25は、反映状況管理ファイル26に格納された情報に基づいて、主計算機11におけるトランザクション終了順序を保証するための、反映処理中のトランザクションの終了順序の検査処理を実行する。
【0123】
本実施形態の副計算機21では、S45の処理を行うことにより、反映処理中のトランザクションに関する、主計算機11のトランザクション終了順序を検査できるため、ケース2で述べたレプリカDB間の不整合を防止できる。
【0124】
S46では、反映装置24は、排他装置25に対し、反映処理中のトランザクションのトランザクション終了処理を要求し、S41に移行する。S46において、反映装置24は、例えば、S41で読み込まれたジャーナルのトランザクション順序番号,反映装置名を排他装置25に通知するとしてもよい。また、反映装置24は、排他装置25に対して反映装置名とトランザクション終了処理要求を通知し、排他装置25にてS41で格納されたジャーナルを参照し、トランザクション順序番号を取得するとしてもよい。
【0125】
S46でトランザクション終了処理を受けた排他装置25は、S46の要求を契機として、S54のトランザクション終了処理を実行する。S54のトランザクション終了処理では、排他装置25は、反映状況管理ファイル26に格納された情報に基づいて、反映処理中のトランザクションの終了処理を実行する。
【0126】
なお、S41に移行した反映装置24は、次のジャーナルをジャーナルファイルから読み込み、新たなトランザクションでS42−S46の反映処理を実行する。この結果、本実施形態の副計算機21では、
図3の“反映1”に例示のように、ジャーナルファイル16に累積されたジャーナルA、ジャーナルB、ジャーナルCを累積順に、対象となるDB22に反映できる。また、本実施形態の副計算機21では、
図3の“反映2”に例示のように、ジャーナルファイル17に累積されたジャーナルP、ジャーナルQ、ジャーナルR
を累積順に、対象となるDB23に反映できる。
【0127】
ここで、反映装置24で実行されるS41−S46の処理は、前記他の情報処理装置から制御情報を付加されて転送された更新処理データ中の更新差分データを前記他の情報処理装置の1以上の記憶装置に対応する前記情報処理装置の1以上の記憶装置にそれぞれ反映する1以上の反映手順、ステップの一例である。また、副計算機21のCPU91等は、前記他の情報処理装置から制御情報を付加されて転送された更新処理データ中の更新差分データを前記他の情報処理装置の1以上の記憶装置に対応する前記情報処理装置の1以上の記憶装置にそれぞれ反映する1以上の反映手段の一例として、S41−S46の処理を実行する。
【0128】
(副計算機:排他装置)
図13に、排他装置25(
図10BのS5)のS51の詳細なフローチャートを例示する。
図13に例示のS51の処理は、例えば、反映装置24のS42のトランザクション開始処理要求を契機として実行される。なお、
図13に例示のフローチャートにおいて、トランザクション開始処理要求で通知されたトランザクション順序番号を(A),更新DB名一覧を(B),トランザクション分散数を(C),反映装置名を(D)として説明する。
【0129】
先ず、S511では、排他装置25は、反映状況管理ファイル26に格納された管理テーブルを参照し、トランザクション開始要求で通知されたトランザクション順序番号(A)が未設定であることを判断する。排他装置25は、例えば、
図5Dに例示する管理テーブルの「反映中トラン順序番号」の反映装置名(D)に対応するレコードの格納値(b1)を取得する。また、排他装置25は、例えば、
図5Eに例示する管理テーブルの反映装置名(D)に対応するレコードの「反映中トラン順序番号」の格納値(b2)を取得する。排他装置25は、取得した格納値(b1),(b2)とトランザクション開始要求で通知されたトランザクション順序番号(A)との比較を行うことで、トランザクション順序番号(A)の未設定を判断する。
【0130】
S511では、排他装置25は、トランザクション順序番号(A)が未設定である場合(S511,YES)にはS512に移行し、トランザクション順序番号(A)が設定されている場合(S511,NO)にはS51の処理を終了する。
【0131】
S512−S513では、排他装置25は、反映状況管理ファイル26の初期設定を行う。例えば、排他装置25は、トランザクション順序番号(A)を、
図5Dに例示する管理テーブルの反映装置名(D)に対応するレコードの「反映中トラン順序番号」に格納する。また、排他装置25は、例えば、トランザクション順序番号(A)を、
図5Eに例示する管理テーブルの反映装置名(D)に対応するレコードの「反映中トラン順序番号」に格納する(S512)。そして、排他装置25は、トランザクション分散数(C)を、
図5Dに例示する管理テーブルの、反映装置名(D)に対応するレコードの「トラン分割数」の「全体数」に格納する(S513)。
【0132】
S512の処理により、
図5Dに例示する管理テーブルの反映装置名(D)に対応するレコードの「反映中トラン順序番号」の格納値(b1)には、トランザクション順序番号(A)が設定される。また、S512の処理により、
図5Eに例示する管理テーブルの反映装置名(D)に対応するレコードの「反映中トラン順序番号」の格納値(b2)には、トランザクション順序番号(A)が設定される。そして、S513の処理により、
図5Dに例示する管理テーブルの、反映装置名(D)に対応するレコードの「トラン分割数」の「全体数」の格納値(d)には、トランザクション分散数(C)が設定される。
【0133】
S514−S517では、排他装置25は、トランザクション開始処理要求を行った反映処理の排他設定,排他解除を実行する。S514では、排他装置25は、更新DB名一覧(B)の全DBが使用可能か否かを判断する。つまり、反映処理が複数のジャーナルファイルに分散されている場合では、
図6に例示するケース1の、レプリカDB間の不整合が発生し得る。S514では、複数のジャーナルファイルに分散されたトランザクションの整合性を保証するため、先行する反映処理による排他が既に行われているか否かを判断する。
【0134】
S514では、排他装置25は、反映処理の対象となる更新DB名一覧(B)の全てのDBが未だ排他されていない場合(S514,YES)には、S515に移行し、更新DB名一覧(B)の全てのDBの排他を設定し、S51の処理を終了する。S514−S515の処理により、複数のジャーナルファイルに分散されたトランザクションの、先行する反映処理では、反映処理に係る全てのDB(更新DB一覧(B)の全てのDB)を排他できる。このため、後行の反映処理では、先行する反映処理の終了による排他解消を待って後行の反映処理を行うことができる。
【0135】
一方、排他装置25は、反映処理の対象となる更新DB名一覧(B)のいずれかのDBが排他されている場合(S514,NO)には、S516に移行し、先行するトランザクションに対する排他解消待ちを設定する。S516では、排他装置25は、反映状況管理ファイル26の
図5Eに例示する管理テーブルに、排他待ちの相手となる(当該反映処理が反映しようとしたDBを使用している)反映装置名を設定する。
【0136】
例えば、排他装置25は、
図5Eに例示する管理テーブルの、反映装置名(D)に対応するレコードの「DB使用中反映装置名」に排他待ちの相手となる反映装置名を格納する。S516の処理により、
図5Eに例示する管理テーブルの、反映装置名(D)に対応するレコードの「DB使用中反映装置名」の格納値(e)には、排他待ちの相手となる反映装置名が設定される。
図10Bの例では、例えば、“ジャーナルファイル1用”のレコードの「DB使用中反映装置名」の格納値(e)には、先行する反映処理中の“ジャーナルファイル2用”が反映装置名として格納される。同様に、“ジャーナルファイル1用”が先行する場合では、後行の“ジャーナルファイル2用”のレコードの「DB使用中反映装置名」の格納値(e)に、先行する“ジャーナルファイル1用” が反映装置名として格
納される。
【0137】
S517では、排他装置25は先行する反映装置による排他解消待ちを行う。S517の排他解消は、後述のトラン終了処理のS543により行われる。S517では、排他装置25は、先行する反映装置のトラン終了処理のS543の排他解消を受け、S514に移行し、排他解消待ちとなっていた反映処理の初期設定を実行する。
【0138】
ここで、排他装置25で実行されるS515の処理は、排他設定手順、排他設定ステップの一例である。また、副計算機21のCPU91等は、排他設定手段の一例として、S515の処理を実行する。
【0139】
また、排他装置25で実行されるS517の処理は、排他解除手順、排他解除ステップの一例である。また、副計算機21のCPU91等は、排他解除手段の一例として、S517の処理を実行する。
【0140】
次に、
図14により、排他装置25(
図10BのS5)のS52のデッドロック検査処理の詳細を説明する。
図14に、S52の詳細なフローチャートを例示する。
図14に例示のS52の処理は、例えば、反映装置24のS44のデッドロック検査処理要求を契機として実行される。なお、
図14に例示のフローチャートにおいて、デッドロック検査処
理要求で通知されたトランザクション順序番号を(A),反映装置名を(D)として説明する。
【0141】
先ず、S521では、排他装置25は、反映状況管理ファイル26のデッドロック解消とトラン順番待ち解消のための管理テーブルを参照し、反映装置名(D)を排他解消待ちの相手先とする反映装置名に対応するレコードを取得する。排他装置25は、例えば、
図5Eに例示する管理テーブルの、反映装置名が(D)以外のレコードの「DB使用中反映装置名」のカラムを反映装置名(D)で検索し、反映装置名(D)を排他待ち相手とする反映装置名のレコードを取得する。
【0142】
S522では、反映装置25は、S521で取得した反映装置名のレコードの「反映中トラン順序番号」の格納値(b2)とトランザクション順序番号(A)との比較を行い、(b2)と(A)との大小を判断する。反映装置25は、S521で取得したレコードに「反映中トラン順序番号」の格納値(b2)がトランザクション順序番号(A)より小さいものがない場合(S522,NO)には、S52の処理を終了する。
【0143】
一方、反映装置25は、「反映中トラン順序番号」の格納値(b2)がトランザクション順序番号(A)より大きい場合(S522,YES)には、デッドロックを防止するためのS523−S524の処理を実行する。
【0144】
S523では、排他装置25は、デッドロック検査処理要求を行った反映装置名(D)への通知情報を設定する。排他装置25は、例えば、反映装置名(D)に対する通知情報として、反映処理中のトランザクションに係る処理をキャンセルし、S41の再実行を設定する。S523で設定された通知情報は、例えば、副計算機21の主記憶部92の所定の領域に一時的に格納される。
【0145】
S524では、排他装置25は、反映装置名(D)で処理中のトランザクション順序番号(A)をキャンセルするための処理を行う。排他装置25は、例えば、S51で設定された管理テーブルへの設定値をクリアする。反映装置25は、例えば、
図5Dに例示の管理テーブルの、反映装置名(D)に対応するレコードの格納値(b1)、(c)、(d)をクリアする。また、反映装置25は、例えば、
図5Eに例示の管理テーブルの、反映装置名(D)に対応するレコードの格納値(b2)、(e)をクリアする。
【0146】
排他装置25は、S52の処理の終了と共に、S523で設定した通知情報を反映装置名(D)に通知する。排他装置25から通知情報を受けた反映装置名(D)では、例えば、S441−S442を実行し、処理中のトランザクション順序番号(A)に係る反映処理を再実行する。
【0147】
ここで、排他装置25で実行されるS522の処理は、比較手順、比較ステップの一例である。また、副計算機21のCPU91等は、比較手段の一例として、S522の処理を実行する。
【0148】
また、排他装置25で実行されるS523の処理、及び、反映装置24で実行されるS441−S442の処理は、前記比較手順(ステップ)による比較の結果、前記反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号よりも排他解消待ち更新処理データの順序番号が先順の場合に、前記後順更新処理データを記憶装置に反映する処理を取り消す手順、ステップの一例である。また、副計算機21のCPU91等は、前記比較手段による比較の結果、前記反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号よりも排他解消待ち更新処理データの順序番号が先順の場合に、前記後順更新処理データを記憶装置に反映する処理を取り消す手段の一例として、S523,S
441−S442の処理を実行する。
【0149】
次に、
図15により、排他装置25(
図10BのS5)のS53のトランザクション終了順検査処理の詳細を説明する。
図15に、S53の詳細なフローチャートを例示する。
図15に例示のS53の処理は、例えば、反映装置24のS45のトランザクション終了順検査処理要求を契機として実行される。なお、
図15に例示のフローチャートにおいて、トランザクション終了順検査処理要求で通知されたトランザクション順序番号を(A),反映装置名を(D)として説明する。
【0150】
先ず、S531では、排他装置25は、反映装置名(D)のトランザクション順序番号(A)が、先行して完了した反映処理のトランザクション順序番号と連番であるか否かを判断する。排他装置25は、例えば、
図5Cに例示の管理テーブルの、「反映完了トラン順序番号」の格納値(a)を取得する。なお、「反映完了トラン順序番号」の格納値(a)には、先行して完了したトランザクションの順序番号が格納される。
【0151】
排他装置25は、例えば、トランザクション順序番号(A)と「反映完了トラン順序番号」の格納値(a)とが連続した昇順の関係にある場合(S531、YES)にはS53の処理を終了する。例えば、連続した昇順の関係として、トランザクション順序番号(A)が“3”、「反映完了トラン順序番号」の格納値(a)が“2”の場合を例示できる。なお、排他装置25は、「反映完了トラン順序番号」の格納値(a)が未設定であり、トランザクション順序番号(A)が“1”の場合には、連続した昇順の関係と判断する。
【0152】
一方、排他装置25は、例えば、トランザクション順序番号(A)と「反映完了トラン順序番号」の格納値(a)とが連続した昇順の関係にない場合(S531、NO)にはS532に移行する。例えば、排他装置25は、「反映完了トラン順序番号」の格納値(a)が未設定であり、トランザクション順序番号(A)が“1”以外の場合には、連続した昇順の関係にないと判断する。
【0153】
S532では、排他装置25は、トランザクション順序番号(A)の反映処理に係るトランザクションを先順トランザクションの順番待ちとする。例えば、排他装置25は、トランザクション順序番号(A)が“2”、「反映完了トラン順序番号」の格納値(a)が未設定の場合、トランザクション順序番号“2”の反映処理を、先行するトランザクション順序番号“1”の反映処理の終了待ちとする。
図8に例示するケース2の、複数のジャーナルファイルに分散されたジャーナルの出現順とレプリカDBへの反映順とが異なるケースで生じるレプリカDB間の不整合を防止するためである。
【0154】
なお、S532の先順トランザクションの順番待ちは、後述のトラン終了処理(
図16)のS547により行われる。排他装置25は、先行するトラン終了処理のS547の先順トランザクションの順番待ち解消を受け、トランザクション順序番号(A)のS53の処理を終了する。例えば、排他装置25は、先行するトランザクション順序番号“1”のS547の先順トランザクションの順番待ち解消を受け、先順トランザクションの順番待ちとなっていたトランザクション順序番号“2”のトランザクション終了順検査処理を終了する。
【0155】
ここで、排他装置25で実行されるS531の処理は、検査手順、検査ステップの一例である。また、副計算機21のCPU91等は、検査手段の一例として、S531の処理を実行する。
【0156】
また、排他装置25で実行されるS532の処理は、順序制御手順、順序制御ステップの一例である。また、副計算機21のCPU91等は、順序制御手段の一例として、S5
32の処理を実行する。
【0157】
次に、
図16により、排他装置25(
図10BのS5)のS54のトランザクション終了処理の詳細を説明する。
図16に、S54の詳細なフローチャートを例示する。
図16に例示のS54の処理は、例えば、反映装置24のS46のトランザクション終了処理要求を契機として実行される。なお、
図16に例示のフローチャートにおいて、トランザクション終了処理要求で通知されたトランザクション順序番号を(A),反映装置名を(D)として説明する。
【0158】
先ず、S541では、例えば、排他装置25は、トランザクション順序番号(A)により、
図5Dに例示の管理テーブルで反映装置名(D)に対応するレコードの「反映中トラン順序番号」の格納値(b1)を検索する。そして反映装置25は、トランザクション順序番号(A)と一致した「反映中トラン順序番号」の格納値(b1)のレコードを取得する。そして、排他装置25は、同レコードの「トラン分割数」の「完了数」の格納値(c)をカウントアップする。
【0159】
S542では、排他装置25は、S541でカウントアップした「完了数」の格納値(c)と同レコードの「全体数」の格納値(d)との比較を行い、両者の一致を判断する。排他装置25は、カウントアップした「完了数」の格納値(c)と同レコードの「全体数」の格納値(d)とが一致しない場合(S542、NO)には、S543−S547の処理を行わずS54の処理を終了する。
【0160】
一方、排他装置25は、カウントアップした「完了数」の格納値(c)と同レコードの「全体数」の格納値(d)とが一致する場合(S542、YES)には、S543−S547の処理を実行する。S543−S547の処理では、排他解消及び先順トランザクションの順番待ち解消が実行される。
【0161】
S543では、排他装置25は、
図13に例示のS517で排他解消待ちとした反映処理に係るトランザクションの排他解消待ちを解消する。S543の処理により、複数のジャーナルファイルに分散されて排他解消待ちとなった反映処理に係るトランザクション開始処理は再開される。
【0162】
S544では、排他装置25は、S541で検索した
図5Dに例示の管理テーブルの、反映装置名(D)に対応するレコードの各種格納値である(b1)、(c)、(d)をクリアする。また並行して、
図5Eに例示の管理テーブルの、反映装置名(D)に対応するレコードの各種格納値である(b2)、(e)をクリアする。
【0163】
S545では、反映装置25は、反映状況管理ファイル26に格納された
図5Cに例示の管理テーブルの、「反映完了トラン順序番号」の格納値(a)をカウントアップする。例えば、反映装置25は、「反映完了トラン順序番号」の格納値(a)が“1”の場合には、“2”にカウントアップし、「反映完了トラン順序番号」の格納値(a)が未設定の場合には、“1”にカウントアップする。つまり、S545の処理でカウントアップされた「反映完了トラン順序番号」の格納値(a)は、処理中のトランザクション順序番号(A)に一致する。
【0164】
S546では、排他装置25は、反映状況管理ファイル26を参照し、反映装置名(D)のトランザクション順序番号(A)のトランザクション終了待ちとなる反映処理の有無を判断する。排他装置25は、例えば、
図5Eに例示の管理テーブルを参照し、反映装置名(D)以外の反映装置名に対応するレコードを取得する。そして、排他装置25は、トランザクション順序番号(A)と、取得したレコードの「反映中トラン順序番号」の格納
値(b2)との関係が、連続した昇順の関係にあるかを判断する。例えば、連続した昇順の関係として、トランザクション順序番号(A)が“1”、「反映中トラン順序番号」の格納値(b2)が“2”の場合を例示できる。
【0165】
排他装置25は、トランザクション順序番号(A)と、取得したレコードの「反映中トラン順序番号」の格納値(b2)との関係が、連続した昇順の関係にある場合(S546、YES)にはS547に移行する。一方、排他装置25は、トランザクション順序番号(A)と、取得したレコードの「反映中トラン順序番号」の格納値(b2)との関係が、連続した昇順の関係にない場合(S546、NO)には、S54のトラン終了処理を終了する。
【0166】
S547では、排他装置25は、
図15に例示のS532でトランザクションの終了順待ちとした反映処理に係るトランザクションの先順トランザクションの順番待ちを解消する。S547の処理により、複数のジャーナルファイルに分散されてトランザクションの終了順序待ちとなった反映処理に係るトランザクション終了順検査処理は再開される。
【0167】
(タイムチャート:ケース1)
次に、
図7に例示のケース1の形態における、レプリカDBへの反映処理のタイムチャートを説明する。
図17に、
図7に例示のケース1の形態における、レプリカDBへの反映処理のタイムチャートを例示する。
図17において、横軸方向は、反映処理における時間経過を表す。そして、図例の“反映1”は、例えば、“ジャーナルファイル1用”の反映装置で実行される反映処理を表し、“反映2”は、例えば、“ジャーナルファイル2用”の反映装置で実行される反映処理を表す。各反映処理に係るトランザクションは“トランX”として表される。“反映1”の各“トランX”の反映処理完了により、“DB1”にはジャーナルA、ジャーナルB、ジャーナルCがそれぞれ反映される。また、“反映2”の各“トランX”の反映処理完了により、“DB2”にはジャーナルP、ジャーナルQ、ジャーナルRがそれぞれ反映される。例えば、“DB1”は副計算機21のDB22に対応し、“DB2”は副計算機21のDB23に対応する。なお、“反映1”と“反映2”は並行して実行される。
【0168】
先ず、“反映1”の“トラン1”では、“トラン1”の反映処理に係るトラン開始処理(S41→S51)で反映処理対象の“DB1”は排他(S515)され、トラン終了処理(S46→S54)で反映処理対象の“DB1”の排他は解消される。“トラン1”の反映処理に係るトラン開始処理からトラン終了処理が完了する迄の期間は“トラン1”の排他区間である。“トラン1”の排他区間では、副計算機21のレプリカDBに対する参照処理は排他される。なお、“トラン1”のトラン終了処理の完了後には、“DB1”に対するジャーナルAが更新される。副計算機21は、例えば、“トラン1”の反映処理の完了を契機として割込み処理を実行することにより、レプリカDBである“DB1”を参照できる。
【0169】
“反映2”の“トラン2”についても同様の反映処理が実行され、“トラン2”の排他区間では、副計算機21の“DB2”の参照処理は排他される。“トラン2”のトラン終了処理の完了後には、“DB2”に対するジャーナルPが更新される。副計算機21は、例えば、“トラン2”の反映処理の完了を契機として割込み処理を実行することにより、レプリカDBである“DB2”を参照できる。
【0170】
図17に例示の“トラン2”の排他区間では、“DB2”は排他(S515)されるため、“反映1”の“トラン3”は“反映2”の“トラン2”の排他解消待ち(S514、NO→S516→S517)となる。つまり、“反映1”の“トラン3”のトラン開始処理は、先行する“反映2”の“トラン2”のS543による排他解消後に実行されるため
、レプリカDB間のトランザクション終了順序は保証される。
【0171】
次に、複数のジャーナルファイルに分散された“トラン3”を説明する。
図17に例示の“トラン3”のトラン開始処理は、“反映2”の“トラン2”の排他解消後に実行される。先行する“反映1”の“トラン3”の排他処理(S515)により、“DB1”及び“DB2”は排他される。そして、後行の“反映2”の“トラン3”のトラン開始処理は、先行する“反映1”の“トラン3”のS543による排他解消後に実行される。このため、“反映1”の“トラン3”の開始処理から“反映2”の“トラン3”のトラン終了処理迄の期間が“トラン3”の排他区間となる。従って、“トラン3”の排他区間では、“DB1”及び“DB2”に対する反映処理は実行できないため、ジャーナルを反映するトランザクションが開始されることはない。また、“トラン3”の排他区間の間では、副計算機21のレプリカDBである“DB1”及び“DB2”を参照する処理は制限されることとなる。副計算機21のレプリカDBに対する参照処理は、ジャーナルB,ジャーナルQが反映された後に実行されるため、ケース1で説明した、レプリカDB間に発生する不整合は発生することはない。
【0172】
(タイムチャート:ケース2)
次に、
図9に例示のケース2の形態における、レプリカDBへの反映処理のタイムチャートを説明する。
図18に、
図9に例示のケース1の形態における、レプリカDBへの反映処理のタイムチャートを例示する。
図18における横軸方向は、反映処理における時間経過を表し、“反映X”,“DBX”,“トランX”等は、
図17と同様である。
【0173】
ケース2の形態では、レプリカDBに発生する不整合は、分散されたジャーナルファイルに含まれるジャーナルの出現順とレプリカDBへの更新反映順が異なることに起因する。このため、
図18の例では、“反映2”の“トラン2”は“反映1”の“トラン1”に先行して実行される。
【0174】
先ず、先行する“反映2”の“トラン2”では、“トラン2”のトラン開始処理(S41→S51)により、反映対象の“DB2”が排他される。そして、“反映2”の“トラン2”では、トラン終了順検査処理(S45→S53)が実行される。“トラン2”のトラン終了順検査処理では、トランザクション順序番号(A)は“2”であり、
図5Cに例示の「反映完了トラン順序番号」は未設定の状態である(S531、NO)から、S532の排他解消待ちが実行される。つまり、先行する“反映2”の“トラン2”は、後行の“反映1”の“トラン1”のトラン終了処理(S46→S54)の実行待ちとなる。従って、“トラン2”の“DB2”への排他は継続されるため、例えば、副計算機21の“DB2”に対する参照処理は実行されることはない。
【0175】
先行する“反映2”の“トラン2”の排他解消待ちの間に、後行の“反映1”の“トラン1”のトラン開始処理(S41→S51)が実行され、反映対象の“DB1”が排他される。そして、後行の“反映1”の“トラン1”のトラン終了処理(S46→S54)が実行される。後行の“反映1”の“トラン1”のトラン終了処理では、トランザクション順序番号は“1”であり、“反映2”に対応する「反映中トラン順序番号」の格納値(b2)は“2”のため、S546−S547の処理が実行される。この結果、先行する“反映2”の“トラン2”のトラン終了順検査処理で排他解消待ちとなっていた反映処理の排他は解消され、“トラン2”のトラン終了順検査処理は終了する。
【0176】
その後、“反映1”の“トラン1”が完了し、“DB1”へのジャーナルAは反映される。この時点で、“トラン1”の排他区間は終了するため、副計算機21は割込み処理等を実行することにより、ジャーナルAが反映された“DB1”を参照することができる。
図18に例示するように、“トラン1”の排他区間が終了しても、“トラン2”の排他区
間は継続されているため、副計算機21は“DB2”を参照することはできない。つまり、ケース2のレプリカDB間の不整合は発生することはない。
【0177】
その後、先行の“反映2”の“トラン2”が完了し、“DB2”へのジャーナルPは反映される。そして、“トラン2”の完了と共に“トラン2”の排他区間は終了する。この時点で、副計算機21の参照できる“DB2”では、ジャーナルPの反映が完了している。つまり、本実施形態の計算機システム10は、分散されたジャーナルファイルに含まれるジャーナルの出現順とレプリカDBへの更新反映順が異なる場合でも、主計算機21のトランザクションの終了順序を保証できる。
【0178】
なお、ケース2で説明したように、“反映2”で先行する“トラン2”が、複数のジャーナルファイルに分散する場合、デッドロック状態となる虞がある。本実施形態の計算機システム10では、“反映2”で先行する“トラン2”が、複数のジャーナルファイルに分散する場合であってもデッドロックを事前に解消することができる。
【0179】
例えば、
図18の例において、複数のジャーナルファイルに分散された“反映2”の“トラン2”トラン開始処理では、対象となる全DB(“DB1”、“DB2”)を排他(S515)する。後行の“反映1”の“トラン1”では、対象となる“DB1”が先行する“反映2”の“トラン2”により排他されているため、“トラン1”のトラン開始処理では、S516−S517の処理が実行される。つまり、“反映1”の“トラン1”では、
図5Eに例示の「DB使用中反映装置名」の格納値(e)に“反映2”の反映装置名を格納し、排他解消待ち(S517)となる。
【0180】
その後、“反映2”の“トラン2”の、デッドロック検査処理(S44→S52)では、S522−S524の処-理が実行される。つまり、“反映2”の“トラン2”のトラ
ンザクション順序番号(A)は“2”であり、“反映1”の“トラン1”の「反映中トラン順序番号」の格納値(b2)は“1”である。このため、S522−S524の処理では、“反映2”の“トラン2”をキャンセルし、トラン開始処理に戻るよう通知処理が実行される。この結果、通知処理を受けた“反映2”の“トラン2”では、実行中の“トラン2”がキャンセル(S441−S442)されることとなり、“DB1”の排他は解消される。後行の“反映1”の“トラン1”では、“DB1”の排他解消を契機として“トラン1”のトラン開始処理が実行される。
【0181】
このように、本実施形態の計算機システム10では、デッドロックが発生する虞が生じても、事前にデッドロック状態となる反映処理(“反映2”の“トラン2”)をキャンセルできる。このため、“反映2”で先行する“トラン2”が、複数のジャーナルファイルに分散する場合であってもデッドロック状態を回避できる。
【0182】
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【0183】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体とし
てハードディスクやROM等がある。
【0184】
《その他》
以上の実施形態は、さらに以下の付記と呼ぶ態様を含む。以下の各付記に含まれる構成要素は、他の付記に含まれる構成と組み合わせることができる。
【0185】
(付記1)
複数の記憶装置を有する第1の情報処理装置と、前記複数の記憶装置への更新処理の結果が反映される複数の記憶装置を有する第2の情報処理装置と、を備える情報処理システムであって、
前記第1の情報処理装置は、
1以上の記憶装置に対する1まとまりで管理される更新処理を実行するときに、更新される記憶装置ごとの更新差分データを含む更新処理データに、前記更新処理の識別情報と前記更新処理で更新される記憶装置の一覧とを含む制御情報を付加する手段と、
前記制御情報が付加された更新処理データを前記第2の情報処理装置に転送する手段と、を有し、
前記第2の情報処理装置は、
前記第1の情報処理装置から前記制御情報を付加されて転送された更新処理データ中の更新差分データを前記第1の情報処理装置の1以上の記憶装置に対応する前記第2の情報処理装置の1以上の記憶装置にそれぞれ反映する1以上の反映手段と、
前記1以上の反映手段のうちの、第1の反映手段が前記更新処理データ中の先頭の更新差分データを前記第2の情報処理装置の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記第1の情報処理装置の更新処理で更新された記憶装置に対応する前記第2の情報処理装置の記憶装置に排他を設定する排他設定手段と、
前記1以上の反映手段のうちの、第2の反映手段が前記更新処理データ中の最後の更新差分データを前記第2の情報処理の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記第1の情報処理装置の更新処理で更新された記憶装置に対応する前記第2の情報処理装置の記憶装置の排他を解除する排他解除手段と、
を有する情報処理システム。
【0186】
(付記2)
前記識別情報は、更新処理の終了順を示す順序番号であり、
前記第2の情報処理装置は、
複数の更新処理データを記憶装置へ反映する処理が前記順序番号順になされるか否かを検査する検査手段と、
前記順序番号が後順の更新処理データを対応する記憶装置へ反映する処理の終了を、前記順序番号が先順の更新処理データを反映する処理の終了まで順序待ちにする順序制御手段と、をさらに有する付記1記載の情報処理システム。
【0187】
(付記3)
排他された記憶装置の排他が解除されるまで排他解消待ちにある排他解消待ちにある排他解消待ち反映装置が排他解消後に反映する排他解消待ち更新処理データの順序番号と、前記反映手段が反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号とを比較する比較手段と、
前記比較手段による比較の結果、前記反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号よりも排他解消待ち更新処理データの順序番号が先順の場合に、前記後順更新処理データを記憶装置に反映する処理を取り消す手段と、
を備える付記2に記載の情報処理システム。
【0188】
(付記4)
複数の記憶装置を有する情報処理装置であって、
1以上の記憶装置に対する1まとまりで管理される更新処理を実行するときに、更新される記憶装置ごとの更新差分データを含む更新処理データに、前記更新処理の識別情報と前記更新処理で更新される記憶装置の一覧とを含む制御情報を付加する手段、
を備える情報処理装置。
【0189】
(付記5)
前記識別情報は、更新処理の終了順を示す順序番号である、付記4に記載の情報処理装置。
【0190】
(付記6)
他の情報処理装置の有する複数の記憶装置への更新処理の結果が反映される複数の記憶装置を有する情報処理装置であって、
前記他の情報処理装置から制御情報を付加されて転送された更新処理データ中の更新差分データを前記他の情報処理装置の1以上の記憶装置に対応する前記情報処理装置の1以上の記憶装置にそれぞれ反映する1以上の反映手段と、
前記1以上の反映手段のうちの、第1の反映手段が前記更新処理データ中の先頭の更新差分データを前記情報処理装置の対応する記憶装置に反映するときに、前記制御情報に含まれる他の情報処理装置の有する記憶装置の一覧が示す前記他の情報処理装置の更新処理で更新された記憶装置に対応する前記情報処理装置の記憶装置に排他を設定する排他設定手段と、
前記1以上の反映手段のうちの、第2の反映手段が前記更新処理データ中の最後の更新差分データを前記情報処理の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記他の情報処理装置の更新処理で更新された記憶装置に対応する前記情報処理装置の記憶装置の排他を解除する排他解除手段と、
を備える情報処理装置。
【0191】
(付記7)
前記制御情報は、更新処理の終了順を示す順序番号を含み、
複数の更新処理データを記憶装置へ反映する処理が前記順序番号順になされるか否かを検査する検査手段と、
前記順序番号が後順の更新処理データを対応する記憶装置へ反映する処理の終了を、前記順序番号が先順の更新処理データを反映する処理の終了まで順序待ちにする順序制御手段と、をさらに備える付記6に記載の情報処理装置。
【0192】
(付記8)
排他された記憶装置の排他が解除されるまで排他解消待ちにある排他解消待ちにある排他解消待ち反映装置が排他解消後に反映する排他解消待ち更新処理データの順序番号と、前記反映手段が反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号とを比較する比較手段と、
前記比較手段による比較の結果、前記反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号よりも排他解消待ち更新処理データの順序番号が先順の場合に、前記後順更新処理データを記憶装置に反映する処理を取り消す手段と、をさらに備える付記7に記載の情報処理装置。
【0193】
(付記9)
複数の記憶装置を有する第1の情報処理装置と、前記複数の記憶装置への更新処理の結果が反映される複数の記憶装置を有する第2の情報処理装置と、を備える情報処理システムの情報処理方法であって、
前記第1の情報処理装置のコンピュータが、
1以上の記憶装置に対する1まとまりで管理される更新処理を実行するときに、更新される記憶装置ごとの更新差分データを含む更新処理データに、前記更新処理の識別情報と前記更新処理で更新される記憶装置の一覧とを含む制御情報を付加する手順と、
前記制御情報が付加された更新処理データを前記第2の情報処理装置に転送する手順と、を実行し、
前記第2の情報処理装置のコンピュータが、
前記第1の情報処理装置から前記制御情報を付加されて転送された更新処理データ中の更新差分データを前記第1の情報処理装置の1以上の記憶装置に対応する前記第2の情報処理装置の1以上の記憶装置にそれぞれ反映する1以上の反映手順と、
前記1以上の反映手順のうちの、第1の反映手順が前記更新処理データ中の先頭の更新差分データを前記第2の情報処理装置の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記第1の情報処理装置の更新処理で更新された記憶装置に対応する前記第2の情報処理装置の記憶装置に排他を設定する排他設定手順と、
前記1以上の反映手順のうちの、第2の反映手順が前記更新処理データ中の最後の更新差分データを前記第2の情報処理の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記第1の情報処理装置の更新処理で更新された記憶装置に対応する前記第2の情報処理装置の記憶装置の排他を解除する排他解除手順と、
を実行する情報処理方法。
【0194】
(付記10)
前記識別情報は、更新処理の終了順を示す順序番号であり、
前記第2の情報処理装置のコンピュータが、
複数の更新処理データを記憶装置へ反映する処理が前記順序番号順になされるか否かを検査する検査手順と、
前記順序番号が後順の更新処理データを対応する記憶装置へ反映する処理の終了を、前記順序番号が先順の更新処理データを反映する処理の終了まで順序待ちにする順序制御手順と、をさらに実行する付記9に記載の情報処理方法。
【0195】
(付記11)
前記第2の情報処理装置のコンピュータが、
排他された記憶装置の排他が解除されるまで排他解消待ちにある排他解消待ちにある排他解消待ち反映装置が排他解消後に反映する排他解消待ち更新処理データの順序番号と、前記反映手順が反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号とを比較する比較手順と、
前記比較手順による比較の結果、前記反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号よりも排他解消待ち更新処理データの順序番号が先順の場合に、前記後順更新処理データを記憶装置に反映する処理を取り消す手順と、をさらに実行する付記10に記載の情報処理方法。
【0196】
(付記12)
複数の記憶装置を有する情報処理装置のコンピュータが、
1以上の記憶装置に対する1まとまりで管理される更新処理を実行するときに、更新される記憶装置ごとの更新差分データを含む更新処理データに、前記更新処理の識別情報と前記更新処理で更新される記憶装置の一覧とを含む制御情報を付加する手順、
を実行する情報処理方法。
【0197】
(付記13)
前記識別情報は、更新処理の終了順を示す順序番号である、付記12に記載の情報処理方法。
【0198】
(付記14)
他の情報処理装置の有する複数の記憶装置への更新処理の結果が反映される複数の記憶装置を有する情報処理装置のコンピュータが、
前記他の情報処理装置から制御情報を付加されて転送された更新処理データ中の更新差分データを前記他の情報処理装置の1以上の記憶装置に対応する前記情報処理装置の1以上の記憶装置にそれぞれ反映する1以上の反映手順と、
前記1以上の反映手順のうちの、第1の反映手順が前記更新処理データ中の先頭の更新差分データを前記情報処理装置の対応する記憶装置に反映するときに、前記制御情報に含まれる他の情報処理装置の有する記憶装置の一覧が示す前記他の情報処理装置の更新処理で更新された記憶装置に対応する前記情報処理装置の記憶装置に排他を設定する排他設定手順と、
前記1以上の反映手順のうちの、第2の反映手順が前記更新処理データ中の最後の更新差分データを前記情報処理の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記他の情報処理装置の更新処理で更新された記憶装置に対応する前記情報処理装置の記憶装置の排他を解除する排他解除手順と、
を実行する情報処理方法。
【0199】
(付記15)
前記制御情報は、更新処理の終了順を示す順序番号を含み、
複数の更新処理データを記憶装置へ反映する処理が前記順序番号順になされるか否かを検査する検査手順と、
前記順序番号が後順の更新処理データを対応する記憶装置へ反映する処理の終了を、前記順序番号が先順の更新処理データを反映する処理の終了まで順序待ちにする順序制御手順と、
をさらに実行する付記14に記載の情報処理方法。
【0200】
(付記16)
排他された記憶装置の排他が解除されるまで排他解消待ちにある排他解消待ちにある排他解消待ち反映装置が排他解消後に反映する排他解消待ち更新処理データの順序番号と、前記反映手段が反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号とを比較する比較手順と、
前記比較手順による比較の結果、前記反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号よりも排他解消待ち更新処理データの順序番号が先順の場合に、前記後順更新処理データを記憶装置に反映する処理を取り消す手順と、
をさらに実行する付記15に記載の情報処理方法。
【0201】
(付記17)
複数の記憶装置を有する情報処理装置のコンピュータに、
1以上の記憶装置に対する1まとまりで管理される更新処理を実行するときに、更新される記憶装置ごとの更新差分データを含む更新処理データに、前記更新処理の識別情報と前記更新処理で更新される記憶装置の一覧とを含む制御情報を付加するステップ、
を実行させる情報処理プログラム。
【0202】
(付記18)
前記識別情報は、更新処理の終了順を示す順序番号である、付記17に記載の情報処理プログラム。
【0203】
(付記19)
他の情報処理装置の有する複数の記憶装置への更新処理の結果が反映される複数の記憶装置を有する情報処理装置のコンピュータに、
前記他の情報処理装置から制御情報を付加されて転送された更新処理データ中の更新差分データを前記他の情報処理装置の1以上の記憶装置に対応する前記情報処理装置の1以上の記憶装置にそれぞれ反映する1以上の反映ステップと、
前記1以上の反映ステップのうちの、第1の反映ステップが前記更新処理データ中の先頭の更新差分データを前記情報処理装置の対応する記憶装置に反映するときに、前記制御情報に含まれる他の情報処理装置の有する記憶装置の一覧が示す前記他の情報処理装置の更新処理で更新された記憶装置に対応する前記情報処理装置の記憶装置に排他を設定する排他設定ステップと、
前記1以上の反映ステップのうちの、第2の反映ステップが前記更新処理データ中の最後の更新差分データを前記情報処理の対応する記憶装置に反映するときに、前記記憶装置の一覧が示す前記他の情報処理装置の更新処理で更新された記憶装置に対応する前記情報処理装置の記憶装置の排他を解除する排他解除ステップと、
を実行させる情報処理プログラム。
【0204】
(付記20)
前記制御情報は、更新処理の終了順を示す順序番号を含み、
複数の更新処理データを記憶装置へ反映する処理が前記順序番号順になされるか否かを検査する検査ステップと、
前記順序番号が後順の更新処理データを対応する記憶装置へ反映する処理の終了を、前記順序番号が先順の更新処理データを反映する処理の終了まで順序待ちにする順序制御ステップと、
をさらに実行させる付記19に記載の情報処理プログラム。
【0205】
(付記21)
排他された記憶装置の排他が解除されるまで排他解消待ちにある排他解消待ちにある排他解消待ち反映装置が排他解消後に反映する排他解消待ち更新処理データの順序番号と、前記反映手段が反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号とを比較する比較ステップと、
前記比較手順による比較の結果、前記反映する処理の終了が順序待ちにされた後順の更新処理データの順序番号よりも排他解消待ち更新処理データの順序番号が先順の場合に、前記後順更新処理データを記憶装置に反映する処理を取り消すステップと、
をさらに実行させる付記20に記載の情報処理プログラム。