(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
以下に、本発明を実施するための好ましい形態について図面を参照して詳細に説明する。ただし、以下に述べる実施形態は本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【0013】
[第一の実施形態]第一の実施形態について図面を参照して詳細に説明する。
図1は、第一の実施形態における情報処理システム10の構成を示すブロック図である。
図1を参照すると、情報処理システム10は、第一のデータベース1と、ログ反映手段2と、制御情報記憶部3とを備えている。
【0014】
[構成の説明]
図1を参照すると、第一のデータベース1は、通信路5を介して他のデータベース11と接続されている。ログ反映手段2は、通信路5を介して受信した、他のデータベース11内のデータの更新内容を表す更新ログについて、以下の第一の制御と第二の制御を行う。具体的には、第一の制御は、更新ログのうち、第一の更新ログを第一のデータベース1内の第一のデータに反映させ、第一のデータを表す制御情報を制御情報記憶部3に記憶させるものである。また、第二の制御は、更新ログのうち、第二の更新ログが第一のデータに対する更新ログか否かを制御情報に基づいて判断し、第一のデータと異なるデータの更新ログである場合に、第二の更新ログを第一のデータベース1に反映させるものである。
【0015】
[動作の説明]次に、
図1を参照して情報処理システム10の動作を説明する。初めに、ログ反映手段2は、通信路5を介して、他のデータベース内のデータの更新内容を表す更新ログを受信する。次に、ログ反映手段2は、以下に示す第一の制御と第二の制御を行う。
【0016】
まず、ログ反映手段2は、更新ログのうち、第一の更新ログを第一のデータベース1内の第一のデータに反映させ、第一のデータを表す制御情報を制御情報記憶部3に記憶させる第一の制御を行う。
【0017】
次に、ログ反映手段2は、更新ログのうち、第二の更新ログが第一のデータに対する更新ログか否かを制御情報に基づいて判断し、第一のデータと異なるデータの更新ログである場合に第二の更新ログを第一のデータベース1に反映させる第二の制御を行う。
【0018】
ここでは、第一の制御を行ったあとに第二の制御を行う場合を説明したが、第一、第二の制御は順不同に行うことができる。例えば、第一の更新ログと第二の更新ログが、いずれも第一のデータベース1内の第一のデータに対する更新ログであり、第二の制御を第一の制御の前に行う場合を想定する。この場合、ログ反映手段2が第二の制御を行う際、第一のデータを表す制御情報が制御情報記憶部3に記憶されていないため、第二の更新ログは第一のデータベース1に反映される。また、第一、第二の制御のいずれかを連続して行ってもよい。
【0019】
[効果の説明]本実施形態の情報処理システムによれば、第一の更新ログによって新しい更新内容となったデータベース内のデータに対して、後から処理する第二の更新ログが、該データに関するより古い更新内容であるかどうかを制御情報によって判断できるため、より古い更新内容が後から反映されることがない。また、後から処理する第二の更新ログは、一時保留にされずに処理されるため、レプリケーション全体のスループットが高まる。
【0020】
図1及び上述の説明では第一のデータベース1を一つ有する情報処理システム10として説明した。しかし、
図2のように、第一のデータベース1を複数有する構成としてもよい(
図2において、二つ目のデータベースを第二のデータベース1´として示している)。
図2の構成の場合、ログ反映手段2は第一のデータベース1及び第二のデータベース1´の両方に対し、第一の制御と第二の制御を行う。この構成をとることにより、システムの耐障害性をより高めることができる。
【0021】
加えて、情報処理システム10は、
図13に示すように制御情報削除手段4をさらに備えてもよい。制御情報削除手段4は、制御情報記憶部3に所定期間記憶された制御情報を削除する。
【0022】
より具体的には、上述の動作の説明において、ログ反映手段2の第二の制御の後に、制御情報削除手段4は、制御情報記憶部3に所定期間記憶された制御情報を削除する。ここでは、第二の制御の後、制御情報削除手段4によって制御情報が削除されるとして説明したが、以下のように、処理順は前後しうる。
【0023】
まず、他のデータベース11側の処理順において、第一の更新ログが第二の更新ログより後の更新である場合、第一の更新ログに関する制御情報の削除は、ログ反映手段2の第二の制御の後に行われる(第一のケース)。一方、第一の更新ログが第二の更新ログより前の更新である場合は、制御情報削除手段4による制御情報の削除の後、ログ反映手段2の第二の制御が行われる(第二のケース)。
【0024】
つまり、第一及び第二の更新ログが共に第一のデータ(例えば、同一のレコード)に対する更新である場合、第一のケースの場合は第二のログが第一のデータに対する更新ログであると判断され、第一のデータベース1に反映されない。一方第二のケースの場合、第一のデータに関する制御情報が無いため、第二の更新ログは、第一のデータベース1に反映される。
【0025】
情報処理システム10が制御情報削除手段をさらに備えることで、同一のレプリカデータベースに対し、複数の同期方法によるレプリケーションを行う際に、更新ログが一時保留にされずに都度処理されるため、レプリケーション全体のスループットを高めることできる。
【0026】
[第二の実施形態]次に、第一の実施形態における情報処理システム10の構成例として、情報処理システム200´を説明する。第二の実施形態では、情報処理システム200´と、第一の実施形態における他のデータベース11に相当する、マスタデータベース111を備える情報処理システム200´´とを備えるレプリケーションシステム200として説明する。
【0027】
図3乃至
図5を参照して、レプリケーションシステム200の構成及び動作を説明する。
図3は、第二の実施形態におけるレプリケーションシステム200の構成を示すブロック図である。
図4は、第二の実施形態における同期型レプリケーションの処理を示すフローチャートである。また、
図5は、第二の実施形態における非同期型レプリケーションの処理を示すフローチャートである。
【0028】
第二の実施形態におけるレプリケーションシステム200では、第一の実施形態における第一の更新ログは同期型レプリケーションで更新される更新ログ、第二の更新ログは非同期型レプリケーションで更新される更新ログと対応する。更新は1トランザクションごとに処理される。また、レプリケーションシステム200では、マスタデータベース111の更新方法を、更新ごとに同期型・非同期型レプリケーションを選択することができる。また、第二の実施形態におけるレプリケーションの更新単位はレコードである。
【0029】
[構成の説明]以下、
図3を参照してレプリケーションシステム200の構成を説明する。
図3を参照すると、レプリケーションシステム200は、情報処理システム200´及び情報処理システム200´´を含む。
【0030】
情報処理システム200´´は、第一の実施形態における他のデータベース11としてマスタデータベース111と、アプリケーション112上の更新ログ生成手段112aと、更新ログ格納手段113aと、第一の実施形態における通信路として更新ログ送信手段105aとを備える。更新ログ格納手段113aは、情報処理システム200´へ送信するまで第二の更新ログを格納する。
【0031】
情報処理システム200´は、第一の実施形態における第一のデータベース1としてレプリカデータベース101と、第一の実施形態におけるログ反映手段2及び制御情報削除手段4として制御手段102と、を備えている。また、情報処理システム200´は、第一の実施形態における制御情報記憶部3として非同期更新制御表103aを記憶した記憶部103と、第一の実施形態における通信路5として更新ログ受信手段105bを備えている。さらに、情報処理システム200´は、ログ反映手段2が第二の制御を行うまで受信した第二の更新ログを格納する更新ログ格納手段113bを備える。
【0032】
次に、情報処理システム200´´の構成をさらに詳細に説明する。情報処理システム200´´において、アプリケーション112は、マスタデータベース111を参照および更新するプログラムである。アプリケーション112は、情報処理システム200´´に対し1つ以上存在する。アプリケーション112は更新ログ生成手段112aを有している。マスタデータベース111の更新の1トランザクション単位で、アプリケーション112は同期型レプリケーションを行うか非同期型レプリケーションを行うかを選択し、更新ログ生成手段112aによって更新ログを生成する。
【0033】
更新ログ生成手段112aは、同期型レプリケーションで更新する更新ログを生成したときに、非同期更新制御表103aの特定の制御情報の削除を示す更新内容を、非同期型レプリケーションで更新する更新ログとして、更新ログ格納手段113aに格納する。更新ログ格納手段113aは、更新ログ生成手段112aがマスタデータベース111更新時に生成した更新ログを格納する。生成される更新ログには、更新対象のレコードを特定する情報である更新対象のユーザ表名と更新対象レコードのキー名、さらに更新内容が1組以上含まれているものとする。
【0034】
図6を参照すると、更新ログは、更新の発生順序、更新対象のレコードを特定する情報、レコードイメージ等を含む。更新順序を表す情報は、マスタデータベース111への非同期型レプリケーションにより更新する情報である。更新順序を表す情報は、更新ログ格納時に更新ログに付加される。更新順序を制御する方法として、更新順に通番を付加することができるが、更新順序が制御できれば他の手段でもよい。
【0035】
図3を参照すると、更新ログ送信手段105aは、情報処理システム200´の更新ログ受信手段105bに接続されている。更新ログ送信手段105aは、更新ログ格納手段113aに格納された更新ログを非同期に読み込んで、情報処理システム200´の更新ログ受信手段105bへ更新ログを送信する。
【0036】
次に、情報処理システム200´の構成をさらに詳細に説明する。レプリカデータベース101は、マスタデータベース111の更新のレプリケーション先となるデータベースである。
【0037】
制御手段102は、レプリカデータベース101と更新ログ格納手段113b、及び非同期更新制御表103bと接続している。制御手段102は、レプリカデータベース101に更新ログを反映する。制御手段102は、更新ログ格納手段113bを参照し、レプリカデータベース101に反映していない更新ログをレプリカデータベース101へ反映する。その際、更新ログに付加された更新順序に従って、更新ログをレプリカデータベース101へ反映する。
【0038】
制御手段102は、同期型レプリケーションを行う更新の場合、更新ログ格納手段113bを介さず、更新ログ生成手段112aから直接更新ログを受け取り、レプリカデータベース201へ反映する。
【0039】
制御手段102は、更新ログ格納手段113bから更新ログを取得すると、非同期更新制御表103aを参照し、更新ログをレプリカデータベース101に反映すべきか否かを判断する。
【0040】
図7を参照すると、非同期更新制御表103aは、制御対象ユーザ表と制御対象キーとからなる。制御対象ユーザ表は、制御情報であって、その更新ログに含まれる更新対象ユーザ表名である。制御対象キーは、制御情報であって、更新対象レコードのキー名である。制御対象ユーザ表及び制御対象キーは、同期型レプリケーションでレプリカデータベース101に更新ログが反映されたときに、制御手段102によって非同期更新制御表103aに登録される。制御対象キーはユーザ表内のレコードを一意に決定するものである。同期型レプリケーションの非同期型レプリケーションに対する使用タイミングに依存して、同一のユーザ表の同一のキーに対応する制御情報が2つ以上登録される場合がある。
【0041】
例えば、連続して2つの更新ログが同期型レプリケーションによって更新される場合、さらにこの二つの更新ログに関する同期型レプリケーションが、非同期型レプリケーションで更新されかつ古い更新である更新ログより先に更新されるときに、非同期更新制御表103aに制御情報が2つ登録される。
【0042】
図3を参照すると、制御手段102は、更新ログ格納手段113bから取得した更新ログの更新内容が示す制御対象ユーザ表及び制御対象キーが非同期更新制御表103aに登録された制御対象ユーザ表及び制御対象キーに一致する場合、その更新ログを破棄する。また、制御手段102は、更新ログ格納手段113bから取得した更新ログの更新内容が、非同期更新制御表103aの特定の制御情報の削除を示す内容である場合、該当する制御情報を削除する。
【0043】
更新ログ受信手段105bは、更新ログ送信手段105aから受信した更新ログを更新ログ格納手段113bに格納する。更新ログ格納手段113bにおいて、更新ログは、更新ログ格納手段113aへ格納されたときに付加された更新順序に従って更新ログが格納される。
【0044】
[動作の説明]次に、レプリケーションシステムの動作を、マスタデータベース111の更新から、レプリカデータベース101の更新まで、
図3、4、及び5を参照して説明する。
図4は、第二の実施形態における同期型レプリケーションの処理を示したフローチャートである。
図5は、第二の実施形態における非同期型レプリケーションの処理を示したフローチャートである。
【0045】
まず、情報処理システム200´´におけるアプリケーション112の動作について説明する。アプリケーション112は、ユーザが同期型レプリケーション若しくは非同期型レプリケーションを選択することにより、又は、更新される情報の種別に応じて、同期型レプリケーション若しくは非同期型レプリケーションを選択する。
【0046】
アプリケーション112がマスタデータベース111の1トランザクション単位の更新について非同期型レプリケーションを選択すると、更新ログ生成手段112aは更新ログを生成する。生成された更新ログは、更新ログ格納手段113aに格納される。
【0047】
次に生じたマスタデータベース111の更新について、同期型レプリケーションが選択されると、アプリケーション112は更新ログ生成手段112aによって同期型レプリケーションで更新する更新ログを生成する。このとき、更新ログ生成手段112aは、非同期更新制御表103aの特定の制御情報の削除を示す更新内容を、非同期型レプリケーションで更新する更新ログとして、更新ログ格納手段113aに格納する。ここで特定の制御情報とは、前述の同期型レプリケーションで更新する更新ログがレプリカデータベース101に反映されたときに、制御手段102によって非同期更新制御表103aに登録される制御情報である。
【0048】
次に、情報処理システム200´におけるレプリケーション動作について図面を参照して説明する。アプリケーション112において、非同期型レプリケーションを指定したデータベース更新の後に、同期型レプリケーションを選択した更新を行う時点から説明を開始する。
【0049】
図4を参照すると、マスタデータベース111の更新時に、アプリケーション112は同期型レプリケーションを選択してマスタデータベース111を更新する。マスタデータベース111の更新がコミットされたときに、更新ログ生成手段112aは更新単位であるトランザクション内の全ての更新の更新ログを生成する(step1)。
【0050】
同期型レプリケーションの処理を説明する。ここで、レコード更新内容がレコード内の一部の更新であった場合でも、更新ログには該当レコードのデータ全体を更新ログの更新内容に格納する。これは、同期型レプリケーション処理で該当レコードを更新する際は、非同期型レプリケーションで更新される、未反映であるより古い更新の更新ログの更新内容も含まれるようにすることで、レコードのデータを最新にするためである。ただし、下記(1)〜(3)のいずれかの場合は、レコードのデータ全体を取得しなおす必要はない。
(1)常に更新対象レコードのレコード全体を格納して更新ログを生成している場合。
(2)レコード追加の場合。(必ず更新内容にレコード全体のデータを含むため)
(3)レコード削除の場合。(該当レコードのキーがわかれば十分であるため)
更新ログ生成手段112aは、更新ログ生成後、生成した更新ログを制御手段102に送信する(step2)。
【0051】
制御手段102は、更新ログ生成手段112aから更新ログを受信すると(step3)、受信した更新ログをレプリカデータベース101へ反映する(step4)。制御手段102は、今回更新したユーザ表名とキー名の組み合わせからなる制御情報を非同期更新制御表103aに登録する(step5)。
図8を参照すると、制御手段102は、ユーザ表がテーブルAのキー1のレコードに対する更新を反映した場合、非同期更新制御表103aに当該表の3行目に示されるとおりの制御情報を追加する。
図6において、制御手段102は、非同期更新制御表103aへの登録完了後、更新ログ生成手段112へ処理完了の応答を送信する(step6)。更新ログ生成手段112は、制御手段102から処理完了の応答を受信すると(step7)、非同期更新制御表103aに今回登録した制御情報を削除するための削除情報を、更新ログと同様の形式で更新ログ格納手段113aに格納する(step8)。
【0052】
図6を参照すると、例えば、通番21まで更新ログが更新ログ格納手段113aに格納されている状態で、ユーザ表がテーブルAのキー1のレコードに対する更新ログを同期型レプリケーションによって処理した場合、
図4の通番22の通りの更新ログを格納する。削除情報を含む更新ログの格納が完了したら、マスタデータベース111の更新処理が完了する。
【0053】
図6を参照すると、step4において、制御手段102が更新ログを反映する際に、非同期型レプリケーションの更新を追い抜いてレプリカデータベース101を更新する。このため、レコード追加やレコード削除について、非同期型レプリケーションでの処理を選択していた場合に、マスタデータベース111で行った更新を、非同期型レプリケーションの更新を追い抜いてレプリカデータベース101へ反映できない可能性がある。例えば、非同期型レプリケーションで登録したレコード追加の更新ログを追い抜いて、同期型で同レコードを更新した場合である。このような場合でも正常にレプリケーション処理を行うため、同期型レプリケーションにおける更新ログ反映処理では、下記(1)〜(3)の通りの対応をする。
(1)更新ログがレコード追加の場合に、既にレコードがある場合は、レコード更新する。
(少なくとも非同期型レプリケーションの更新ログの「レコード削除」を追い抜いているので、上書きすれば同じ結果が得られる)
(2)更新ログがレコード更新の場合に、レコードが存在しないとき、レコード追加する。
(少なくとも非同期型レプリケーションの更新ログの「レコード追加」を追い抜いているので、レコードを追加し、さらに更新内容を反映させれば同じ結果が得られる)
(3)更新ログがレコード削除の場合に、既にレコードが存在しないとき、何もしない。
(少なくとも非同期型レプリケーションの更新ログの「レコード追加」を追い抜いているので、何もせず、非同期更新制御表103aに制御情報を書いておくのみでよい。)
次に、非同期型レプリケーションの処理を説明する。
図5を参照すると、制御手段102は、定期的に更新ログ格納手段113bを参照し、レプリカデータベース101に反映していない更新ログが存在している場合、そのうちの最も古い更新ログを取得する(step1)。制御手段102は、更新ログを取得したとき、更新ログに格納された更新内容全てに対して、次の通りの処理を行う。
【0054】
まず、制御手段102は、更新内容が非同期更新制御表103aの制御情報の削除を示しているか否かを確認する(step2−1)。制御情報の削除を示していない場合(step2−1がNoの場合)は、非同期型レプリケーションを指定されて生成された更新ログである。次に、制御手段102は、処理対象のユーザ表とキーを取得して非同期更新制御表103aに該当する制御情報が存在するか否かを確認する(step3)。
【0055】
該当する制御情報が非同期更新制御表103aに1件も存在しなかった場合(step3−1がNoの場合)、制御手段102は、その更新内容をレプリカデータベース101へ反映する(step4)。制御手段102は、非同期更新制御表103aに該当する制御情報が存在した場合(step3−1がYesの場合)、その更新内容をレプリカデータベース101に反映させない。これは、その更新内容がマスタデータベース111で発生した、より新しいトランザクションであって、同じレコードに対して同期型レプリケーションを指定した更新が発生し、その同期型レプリケーション処理が既にレプリカデータベース101へ反映された状態であるためである。つまり、同期型レプリケーション処理が非同期型レプリケーション処理を追い抜いている状態である。そのため、この更新内容はレプリカデータベース101に反映する必要はない。制御手段102は、反映させなかった更新内容を破棄、または削除等処理する。
【0056】
更新内容が非同期更新制御表103aの制御情報削除を示している場合(step2−1がYesの場合)、該当する制御情報を1件削除する(step5)。制御情報を削除した結果、非同期更新制御表103aに制御情報が1件もなくなった場合、同期型レプリケーション処理が非同期型レプリケーション処理を追い抜いている状態が解消されたことを示している。
【0057】
処理の具体例として、更新ログ格納手段113aが
図6の状態で、通番20の更新ログを反映する前に通番22に相当する同期型レプリケーションが処理された場合を考える。通番22に相当する同期型レプリケーション処理で、非同期更新制御表103aにテーブルAのキー1の制御情報が登録される。そのため、通番20の更新ログを制御手段102が取得したとき、非同期更新制御表103aに該当する制御情報が存在するため、通番20の更新ログは反映されない。通番22の更新ログを制御手段102が取得した際、更新内容が非同期更新制御表103aの制御情報の削除であるため、非同期更新制御表103aからテーブルAのキー1のレコードを削除する。テーブルAのキー1のレコードの制御情報が削除されたため、新たにこのレコードの制御情報が登録されるまでに発生したテーブルAのキー1のレコードの更新ログはレプリカデータベース101に反映される。
【0058】
上述したように、制御手段102が非同期更新制御表103aを用いたレプリケーション処理の制御を行うことで、同期型レプリケーション処理に基づく更新が非同期型レプリケーション処理に基づく更新を追い抜いた後で、非同期型レプリケーション処理が同期型レプリケーション処理の更新を上書きしてしまう事象が発生しなくなる。これにより、更新単位で同期型か非同期型かを選択してレプリケーションを行うことが可能になる。
【0059】
なお、同期型レプリケーション処理で非同期更新制御表103aに登録した制御情報を削除する前に、同一のユーザ表およびキーに対して同期型レプリケーション処理を実施した場合、既に制御情報が登録されているかどうかにかかわらず、同一の制御情報を登録する。例えば、
図7の1行目と2行目のテーブルBキー3の制御情報がこの状態の例である。この場合、該当する全ての制御情報が削除された時点で、同期型レプリケーション処理の追い抜きがなくなったことになる。
【0060】
ここで、非同期型レプリケーションと同期型レプリケーションが混在した場合の反映処理で、レプリカデータベース201内のユーザ表のレコードと非同期更新制御表209の制御情報がどのように遷移するかを、
図8の具体例を基に説明する。
図8は、第二の実施形態におけるレプリカデータベースへの反映処理を説明する図である。
【0061】
図8の各表は左から更新ログ格納手段113b、非同期更新制御表103a、テーブルA(レプリカデータベース101上のユーザ表)を表している。更新ログ格納手段113b内の通番に取り消し線が入っている更新ログは、制御手段102で処理が完了している更新ログを表している。
【0062】
まず、
図8の(1)のとおりに更新ログ格納手段113bに通番33まで更新ログが登録されており、レプリカデータベース101へは通番31までの更新が反映済みである状態とする。この状態から、同期型レプリケーションを指定して、テーブルAのキー1のレコードの値を“Z1”に更新した場合に、非同期更新制御表113bおよびテーブルAがどのように更新されるかについて説明する。
【0063】
図8の(1)の状態では更新ログ格納手段113bの通番31の更新ログまで反映されているため、レプリカデータベース101上のテーブルAのキー1の値は“X1”となっている。また、非同期更新制御表103aには制御情報は無い。この状態で、更新ログ生成手段112aが同期型レプリケーションを指定し、次に制御手段102がマスタデータベース101上のテーブルAのキー1の値を“Z1”に更新すると、更新完了時には、
図8(2)の通り、レプリカデータベース101上のテーブルAのキー1の値は“Z1”になり、非同期更新制御表103aにはユーザ表としてテーブルA、制御対象キーとしてキー1の制御情報が登録され、更新ログ格納手段113aには通番34として、非同期更新制御表103aのテーブルAキー1の制御情報を削除するための更新ログが格納される。
【0064】
その後、制御手段102が通番32の更新ログを読み込むと、この更新ログはテーブルAキー2に対する更新ログであり、非同期更新制御表103aには該当する制御情報が登録されていないので、この更新ログはレプリカデータベース101のテーブルAに反映される。次に通番33の更新ログを読み込むと、この更新ログはテーブルAキー1に対する更新ログであり、非同期更新制御表103aには該当する制御情報が登録されているため、この更新内容はレプリカデータベース101のテーブルAには反映されず破棄される。通番33まで処理が完了した時点で、
図8の(4)の状態になる。
【0065】
その後、通番34の更新ログを読み込むと、非同期更新制御表103aのテーブルAキー1の制御情報を削除する内容であるため、該当する制御情報を削除する。これにより
図8(4)の状態となる。テーブルAのキー1のレコードの制御情報が削除されたため、新たにこのレコードの制御情報が登録されるまでに発生したテーブルAのキー1のレコードの更新ログはレプリカデータベース101に反映される。
【0066】
[効果の説明]本実施形態のレプリケーションシステムにおいて、マスタデータベース111への任意の更新に対して、同期型または非同期型レプリケーションのどちらでレプリカデータベース101へレプリケーションするかを、更新単位で選択することができる。これにより、例えば次のようなデータベースシステムを構築することが可能である。
【0067】
本実施形態における発明を適用したデータベースシステムでは、通常のイベントのトランザクションでは、非同期型レプリケーションでマスタデータベースを更新することでトランザクションのスループット低下を抑えられる。一方、重要なイベントのトランザクションが発生した場合に同期型レプリケーションでマスタデータベースを更新することで、重要なイベントのトランザクションは確実にレプリカデータベースに反映させて、確実なバックアップを取ることが可能である。
【0068】
また、レコードを追加してからレコードを最終データ状態に更新するまで、途中経過を随時更新していくようなデータを扱うデータベースシステムにおいて、レコード追加時と最終データ状態への更新時には同期型レプリケーションを使用し、途中経過の更新は非同期型レプリケーションを使用することで、レコード追加と最終データ更新のタイミングでのマスタデータベースとレプリカデータベースのデータ遅延状況を抑え、途中経過更新時はスループット低下を抑えることが可能である。
【0069】
[第三の実施形態]次に、本発明を航空管制システムに適用した例を説明する。
図9は第一の実施形態における他のデータベース11から第一のデータベース1にレプリケーションされる表及びデータの例である。
【0070】
本航空管制システムは、飛行中の航空機の位置情報を逐次更新するシステムである。
図9を参照すると、本システムは、データベース内の表に、各航空機と対応する主キーと、特定の地点を通過した時刻を示す通過時刻と、取得した位置情報とを列として持つ。
【0071】
本システムでは、位置情報の更新は非同期型レプリケーション、通過時刻の更新は同期型レプリケーションで行われる。位置情報の更新は以下の点で非同期型レプリケーションによる更新が適しているといえる。第一に、位置情報の更新は大量に発生する点、第二に、一部の位置情報のデータが欠損しても、すぐに新しい更新がなされる点である。一方、特定位置の通過時刻は特定位置を通過した時にのみ更新されるデータであるため、同期型レプリケーションで更新される。このように、同一レコード内で、データの更新頻度や重要度が異なるカラムがある場合に、本発明が適用できる。
【0072】
[第四の実施形態]次に、第一の実施形態における情報処理システム10の変形例として、
図10に示す情報処理システム200´´、200´´´を説明する。第四の実施形態では、1つのレプリカデータベースを備える情報処理システムを複数(2つ)有する点で、第一、第二の実施形態と構成が異なる。
図10、11は、第四の実施形態におけるレプリケーションシステム200の構成を示すブロック図である。ここで、情報処理システム200´及び200´´は第二の実施形態と同様であり、情報処理システム200´´´は、マスタデータベース111の2つめのレプリカデータベース101´を備える。
【0073】
まず、第四の実施形態と第二の実施形態との構成における差異を説明する。
図10を参照すると、更新ログ送信手段105aは更新ログ受信手段105bと更新ログ受信手段105cの両方に更新ログを送信する。レプリカデータベース101´が、同期型・非同期型レプリケーションを併用して更新される場合は、
図10のように、情報処理システム200´、200´´は同様の構成となる。一方、レプリカデータベース101´が、レプリカデータベース101ことなり、非同期型レプリケーションのみで更新される場合、
図11を参照すると、情報処理システムに200´´´に、非同期更新制御表が無い構成となる。
【0074】
次に、第四の実施形態と第二の実施形態との動作における差異を説明する。レプリカデータベース101´も同期型・非同期型レプリケーションを併用して更新される場合、同期型レプリケーション処理における処理完了応答を受信する際に、制御手段102および制御手段102´の両方から処理完了の応答を受信してから、次の処理を行う。一方、レプリカデータベース101´が非同期型レプリケーションのみで更新される場合は、まずレプリカデータベース101を同期的に更新する際に、同じ更新内容を非同期型レプリケーションで処理する更新ログとして登録する。その際、制御情報の削除を含む更新ログの前に、前述の更新ログを登録する。レプリカデータベース101には、同期型レプリケーションと同じ更新内容の非同期型レプリケーションの更新ログが届くため、制御情報による制御が必要である。この場合、レプリカデータベース101´の制御手段102´は、制御情報の削除を含む更新ログに対する処理は何も行わない。
【0075】
このようにレプリカデータベースを増やすことで、システムの耐障害性がさらに向上する。なお、レプリカデータベースをさらに増やした場合も、同じ要領で各種手段および表を合わせて増やすことで対応が可能である。
【0076】
次に、2つめのレプリカデータベースに対しては全て非同期型レプリケーションを行う場合について説明する。同期型レプリケーションを行う必要のある更新であっても、1つのレプリカデータベースに対してレプリケーションできていれば十分であるといったシステムを構築する場合に有効である。同期型レプリケーション処理の際に、同期型レプリケーションを行うレプリカデータベースの更新ログ反映手段だけから処理完了応答を受け取ればいいので、全てのレプリカデータベースに対して同期型レプリケーションを行う場合に比べて、スループットが向上する。
【0077】
2つめのレプリカデータベースに対しては全て非同期型レプリケーションを行う場合の構成例を
図11に示す。2つめのバックアップシステムである情報処理システム200´´´のレプリカデータベース101´に対してレプリケーション処理を行う手段として、更新ログ受信手段105bと同様の処理を行う更新ログ受信手段105cと、更新ログ格納手段113bと同様に更新ログを格納するための更新ログ格納手段113cと、制御手段102と同様の処理を行う制御手段102´を配置する。レプリカデータベース101´に対しては非同期型レプリケーションしか行わないため、非同期更新制御表は必要ない。
【0078】
この構成において、実施例から下記の点を変更することで、両方のレプリカデータベースに対してレプリケーションを行うことができる。
【0079】
同期型レプリケーション処理において、
図4のstep8で示している、更新ログ生成手段112aが非同期更新制御表103aの制御情報を削除するための更新ログを更新ログ格納手段113bに格納するときに、同期型レプリケーション処理対象の更新ログも合わせて格納する。これにより、同期型レプリケーションを選択した際の更新内容を、非同期型レプリケーションによってレプリカデータベース101に反映することができる。ただし更新ログを格納する際は、制御手段102が制御情報の削除処理の更新内容を最後に読み込むような順番となるように更新内容を格納する。これにより、制御手段102で同期型レプリケーションを行った更新が二重に反映されないようにする。
【0080】
同期型レプリケーション処理を行わない制御手段102´は、非同期更新制御表が存在しないので、非同期更新制御表に関する処理は行わない。つまり、更新ログから非同期更新制御表の制御情報削除の更新内容を取得すると、それに対する処理は何も行わない。また、更新ログ反映時は非同期更新制御表に制御情報がないとみなして、全ての更新ログを反映する。
【0081】
これにより、1つ目のレプリカデータベースでは同期型レプリケーションと非同期型レプリケーションが選択でき、2つ目のレプリカデータベースでは非同期レプリケーションのみ行うような構成をとることができる。
【0082】
[その他の実施形態]上記の実施形態では、更新単位である1トランザクションごとに同期型、非同期型レプリケーションを切り替えられる例を説明した。しかし、以下のように、1トランザクション内で同期型、非同期型レプリケーションを併用することは可能であり、上述した実施形態と同様の効果を得ることが可能である。
【0083】
以下、第二の実施形態の構成を例に
図3を参照して説明する。1トランザクション内の複数の更新において、同期型レプリケーションを指定された更新は同期型レプリケーションで処理する。また、非同期型レプリケーションを指定された更新は、非同期型レプリケーションで処理する。ここで、同期型レプリケーションで処理する場合、非同期更新制御表103aの削除情報を有する更新ログは、後の非同期型レプリケーションの更新ログに含めることも可能である。
【0084】
ただし、1トランザクション内に同期型レプリケーションの更新と非同期型レプリケーションの更新が混在している場合、以下の問題が生じる。すなわち、非同期型レプリケーションの更新がレプリカデータベース101へ反映されるまでは、レプリカデータベース101で原子性(Atomicity)が保たれない状態となる。このため、原子が保たれない状態を許容できるような場合に限り、本実施形態を適用することができる。
【0085】
また、トランザクションごとに更新ログを生成する都合上、同期型レプリケーション後から非同期型レプリケーションの更新を行う場合には、同期型レプリケーション処理の完了待ちが発生する。具体的には、まず、同期型の更新を含む更新ログが制御手段102に送信され、レプリカデータベース101への反映が完了し、更新ログ生成手段112aに反映した旨の通知がなされる。次に、更新ログ生成手段112aは、前述の同期型の更新に関する制御情報を削除する削除情報と非同期型の更新の内容とを含む更新ログを更新ログ格納手段113aに登録する。
【0086】
このため、レプリカデータベース101の更新確定を待たないため早く処理が完了できるという非同期型レプリケーションのメリットが損なわれてしまう。このため、特別な理由がない限りは、1トランザクション内の更新は同期型か非同期型かどちらか一方に統一することが望ましい。
【0087】
上記の実施形態では、同期型及び非同期型レプリケーションを組み合わせた場合について説明したが、同期型及び準同期型レプリケーションを組み合わせた場合でも、本発明を適用することができる。ここで準同期型レプリケーションでは、
図3を参照すると、更新ログが更新ログ格納手段113bに格納されたことを確認し、次の更新処理に移る。更新ログ格納手段113bに格納された更新ログは、非同期でレプリカデータベース101に反映される。
【0088】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
[付記1]第二のシステムだけのクレーム
第一のデータベースと、
ログ反映手段と、
制御情報記憶部と、を備え、
前記ログ反映手段は、通信路を介して受信した他のデータベース内のデータの更新内容を表す更新ログのうち、第一の更新ログを前記第一のデータベース内の第一のデータに反映させ、かつ前記第一のデータを表す制御情報を制御情報記憶部に記憶させる第一の制御と、前記更新ログのうち、第二の更新ログの更新内容が前記第一のデータに対する更新内容か否かを前記制御情報に基づいて判断し、前記第一のデータと異なるデータの更新内容である場合に前記第二の更新ログの更新内容を前記第一のデータベースに反映させる第二の制御とを行う、情報処理システム。
[付記2]
付記1に記載の情報処理システムにおいて、
制御情報削除手段をさらに備え、
前記制御情報削除手段は、前記制御情報記憶部に所定期間記憶された前記制御情報を削除する、情報処理システム。
[付記3]
付記1または2に記載の情報処理システムであって、
前記第一の更新ログは同期型レプリケーションによって反映される更新ログであり、前記第二の更新ログは、非同期型または準同期型レプリケーションによって反映される更新ログである、情報処理システム。
[付記4]
付記3に記載の情報処理システムであって、
前記制御情報削除手段は、第三の更新ログを読み込んで、前記制御情報を削除する処理を実行し、
前記第三の更新ログは、前記第一の更新ログに伴って生じ、非同期型または準同期型レプリケーションによって反映される更新ログである、情報処理システム。
[付記5]
付記1から4のいずれかに記載の情報システムであって、
前記ログ反映手段は、前記第二の更新ログの更新内容が前記第一のデータに対する更新ログであると判断した場合、前記第二の更新ログの更新内容を破棄する、情報処理システム。
[付記6]
付記1から5のいずれかに記載の情報処理システムであって、
前記ログ反映手段は、前記第二の更新ログを更新ログ記憶部から読みだし、前記第二の制御を行う、情報処理システム。
[付記7]
付記6に記載の情報処理システムであって、
前記第二の更新ログは、更新ログ受信手段によって受信され、前記更新ログ記憶部に出力される、情報処理システム。
[付記8]
付記1から6のいずれかに記載の情報処理システムであって、
前記第一のログ及び前記第二のログはレコードイメージを含む、情報処理システム。
[付記9]
付記1から8のいずれかに記載の情報処理システムであって、
前記ログ反映手段が複数のデータベースに対し、前記第一の制御及び前記第二の制御を行う、情報処理システム。
[付記10]
付記1から8のいずれかに記載の情報処理システムであって、
前記第一のデータベースと、前記ログ反映手段と、前記制御情報記憶部と、前記制御情報削除手段と、の組が複数ある、情報処理システム。
[付記11]方法
第一のデータベースを第二のデータベースへレプリケーションするレプリケーションシステムにおいて、
前記第一のデータベースの第一の更新を受信し、前記第一の更新を前記第二のデータベースに適用し、前記第一の更新が適用された第一のデータを示す制御情報を制御情報記憶部に記憶させる第一のステップと、
前記第一のデータベースの第二の更新を受信し、前記第二の更新を更新情報記憶部に記憶させ、前記第二の更新の更新内容が前記第一のデータに対する更新か否かを前記制御情報に基づいて判断する第二のステップと、
を有する情報処理方法。
[付記12]
前記制御情報が、前記制御情報記憶部に所定期間記憶された後削除される第三のステップをさらに有する、付記11記載の情報処理方法。
[付記13]
前記第二のステップにおいて、前記制御手段が前記第二の更新の更新内容が前記制御情報に示される前記データに対する更新であると判断すると、前記第二の更新の更新内容を破棄する、付記11または12に記載の情報処理方法。
[付記14]
前記第三のステップにおいて、前記第一の更新ログの発生に伴って生成される前記制御情報を削除する処理を受信し、実行する、付記11から13のいずれかに記載の情報処理方法。
[付記15]
第一の制御手段と、前記第一の制御手段によって更新される第一のデータベースと、前記第一の制御手段によって前記第一のデータベースの更新内容を表す更新ログが記憶される第一の更新情報記憶部と、を有する第一のシステムと、
第二の制御手段と、前記更新ログが記憶され、前記第二の制御手段が前記更新ログを読み込む第二の更新情報記憶部と、前記第二の更新情報記憶部から読み込んだ前記更新ログに基づいて、または前記第一のデータベースが同期的に更新された際に前記第一の制御手段から受信した前記更新ログに基づいて、前記第二の制御手段によって更新される第二のデータベースと、前記第二のデータベースが同期的に更新された際に、前記第二のデータベース内の同期的に更新されたデータが前記第二の制御手段によって記憶される同期更新記憶部と、を有する第二のシステムと、を備え、
前記第二の更新情報記憶部は非同期的に前記更新ログを取得し、前記第二の制御手段は、前記第二の更新情報記憶部から読み込んだ前記更新ログの更新内容に基づいて前記第二のデータベースを更新する際に、前記同期更新記憶部の前記同期的に更新されたデータを参照し、更新の要否を判断する、情報処理システム。
【0089】
但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。