(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-30
(45)【発行日】2024-02-07
(54)【発明の名称】情報処理装置、情報処理システム、及び情報処理プログラム
(51)【国際特許分類】
G06F 16/178 20190101AFI20240131BHJP
G06F 16/11 20190101ALI20240131BHJP
【FI】
G06F16/178
G06F16/11
(21)【出願番号】P 2020074859
(22)【出願日】2020-04-20
【審査請求日】2023-01-12
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100087480
【氏名又は名称】片山 修平
(72)【発明者】
【氏名】秋山 隆
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】特開昭63-195746(JP,A)
【文献】特開2012-155634(JP,A)
【文献】特開平05-225019(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10-16/188
(57)【特許請求の範囲】
【請求項1】
第1のデータベースの複数のレコードの各々を複数のサーバが操作した後の該レコードのデータと、前記操作が行われた順序を示す識別子とを対応付けて記憶した、複数の前記サーバごとに設けられた複数の第2のデータベースから、第1の期間に記憶された前記データを取得するデータ取得部と、
取得した前記データを、前記識別子が示す順に第3のデータベースに格納するデータ格納部と、
を有
し、
前記データ格納部は、同一の前記レコードの前記データが複数の前記第2のデータベースに存在する場合に、同一の前記レコードの前記データのうちで、最後に操作された前記レコードの前記データのみを前記第3のデータベースに格納することを特徴とする情報処理装置。
【請求項2】
前記第2のデータベースは、前記識別子、前記データ、前記操作の内容、及び前記操作をする前の前記レコードのデータの各々を対応付けて記憶し、
前記データ格納部は、
取得した前記データと、該データに対応する前記操作の内容と、該データに対応する前記操作をする前の前記データと、複数の前記操作の間で許容される状態遷移とに基づいて、最後に操作された前記レコードを特定することを特徴とする請求項
1に記載の情報処理装置。
【請求項3】
情報処理装置と複数のサーバとを備えた情報処理システムであって、
複数の前記サーバの各々は、
第1のデータベースのレコードを操作する操作部と、
複数の前記サーバの各々に対応した複数の第2のデータベースのうちで自装置に対応する前記第2のデータベースに、前記操作をした後の前記レコードのデータを、前記操作を行った順序を示す識別子に対応付けて格納する第1のデータ格納部とを有し、
前記情報処理装置は、
複数の前記第2のデータベースの各々から、第1の期間に記憶された前記データを取得するデータ取得部と、
取得した前記データを、前記識別子が示す順に第3のデータベースに格納する第2のデータ格納部とを有
し、
前記第2のデータ格納部は、同一の前記レコードの前記データが複数の前記第2のデータベースに存在する場合に、同一の前記レコードの前記データのうちで、最後に操作された前記レコードの前記データのみを前記第3のデータベースに格納する、
ことを特徴とする情報処理システム。
【請求項4】
コンピュータに、
第1のデータベースの複数のレコードの各々を複数のサーバが操作した後の該レコードのデータと、前記操作が行われた順序を示す識別子とを対応付けて記憶した、複数の前記サーバごとに設けられた複数の第2のデータベースから、第1の期間に記憶された前記データを取得し、
取得した前記データを、前記識別子が示す順に第3のデータベースに格納
し、
同一の前記レコードにおける前記データが複数の前記第2のデータベースに存在する場合に、同一の前記レコードの前記データのうちで、最後に操作された前記レコードに対応する前記データのみを前記第3のデータベースに格納する、
処理を実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理システム、及び情報処理プログラムに関する。
【背景技術】
【0002】
データベースを参照する際の負荷分散等を実現するために、当該データベースの内容を複製したデータベースを作成することがある。この場合、複製元のデータベースはマスタDB(database)と呼ばれ、複製先のデータベースはレプリカDBと呼ばれる。
【0003】
データベースを参照するクライアント端末が複数存在する場合、マスタDBだけでなくレプリカDBにも各クライアント端末が参照することによりマスタDBの負荷分散を実現できる。
【0004】
しかし、レプリカDBを利用するシステムにおいては、マスタDBからレプリカDBを複製するときのレスポンスタイムを短くするという点で改善の余地がある。
【先行技術文献】
【特許文献】
【0005】
【文献】特開平11-167510号公報
【文献】特開平10-49416号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
一側面によれば、レスポンスタイムを短くすることを目的とする。
【課題を解決するための手段】
【0007】
一側面によれば、第1のデータベースの複数のレコードの各々を複数のサーバが操作した後の該レコードのデータと、前記操作が行われた順序を示す識別子とを対応付けて記憶した、複数の前記サーバごとに設けられた複数の第2のデータベースから、第1の期間に記憶された前記データを取得するデータ取得部と、取得した前記データを、前記識別子が示す順に第3のデータベースに格納するデータ格納部と、を有し、前記データ格納部は、同一の前記レコードの前記データが複数の前記第2のデータベースに存在する場合に、同一の前記レコードの前記データのうちで、最後に操作された前記レコードの前記データのみを前記第3のデータベースに格納することを特徴とする情報処理装置が提供される。
【発明の効果】
【0008】
一側面によれば、レスポンスタイムの低下を抑制することができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、検討に使用したシステムの構成図である。
【
図2】
図2は、検討に使用したシステムにおける処理の流れを示す模式図である。
【
図3】
図3は、検討に使用したシステムにおける処理の流れを示す模式図である。
【
図5】
図5は、本実施形態に係る情報処理システムのシステム構成図である。
【
図6】
図6は、本実施形態に係るディスク装置の模式図である。
【
図7】
図7は、本実施形態におけるマスタDBの内容を示す模式図である。
【
図8】
図8(a)は、本実施形態に係る第1の採番DBの内容について示す模式図であり、
図8(b)は、本実施形態に係るチェックポイントDBの内容について示す模式図である。
【
図9】
図9は、本実施形態に係る第1の差分DBの内容について示す模式図である。
【
図10】
図10は、本実施形態に係る情報処理システムの処理の流れを示す模式図である。
【
図11】
図11は、本実施形態において、マスタDBの同一レコードに対する複数の操作の間で許容される状態遷移を示す模式図である。
【
図12】
図12は、本実施形態において、操作間の遷移の具体例を示す模式図である。
【
図13】
図13は、本実施形態において、操作間の状態遷移を利用してレプリカDBの一貫性を保つ方法を示す模式図である。
【
図14】
図14は、本実施形態に係る第1のサーバの機能構成図である。
【
図15】
図15は、本実施形態に係るレプリカDB作成サーバの機能構成図である。
【
図16】
図16は、本実施形態に係る主キー一覧の模式図である。
【
図17】
図17は、本実施形態に係る第1のサーバの処理を示すフローチャートである。
【
図18】
図18は、本実施形態において、各サーバが各採番DBと各差分の各々にアクセスする際の模式図である。
【
図19】
図19は、チェックポイントDBを操作するときに本実施形態に係るレプリカDB作成サーバが行う情報処理方法のフローチャートである。
【
図20】
図20は、レプリカDBを作成するときに本実施形態に係るレプリカDB作成サーバが行う情報処理方法のフローチャート(その1)である。
【
図21】
図21は、レプリカDBを作成するときに本実施形態に係るレプリカDB作成サーバが行う情報処理方法のフローチャート(その2)である。
【
図22】
図22は、本実施形態に係る第1のサーバと第2のサーバの各々のハードウェア構成図である。
【
図23】
図23は、本実施形態に係るレプリカDB作成サーバのハードウェア構成図である。
【発明を実施するための形態】
【0010】
本実施形態の説明に先立ち、本願発明者が検討した事項について説明する。
【0011】
図1は、検討に使用したシステムの構成図である。
このシステム1は、マスタDBからレプリカDBを複製するシステムであって、業務サーバ2、ディスク装置3、レプリカDB作成サーバ4、及びクライアント端末5を有する。これらの各装置は、インターネット等のネットワーク6を介して相互に接続される。
【0012】
このうち、業務サーバ2は、クライアント端末5の要求に応じてディスク装置3のデータベースの更新や挿入等の操作を行うサーバである。ここでは、業務サーバ2は、業務用のアプリケーションプログラムである業務アプリ7と、ディスク装置3のデータベースを管理するDB管理アプリ8とを実行する。
【0013】
また、ディスク装置3は、マスタDB、採番DB、差分DB、及びレプリカDBを記憶したストレージ装置である。
【0014】
マスタDBは、各クライアント端末5が参照するデータベースである。また、採番DBは、マスタDBのレコードに対して削除、挿入、及び更新等の操作があった場合に、レコードの操作の順序を示す番号を格納するデータベースである。
【0015】
更に、差分DBは、マスタDBのレコードが操作された場合に、操作後のレコードのデータを格納するデータベースである。また、レプリカDBは、マスタDBのレコードを複製したレコードを格納されるデータベースである。
【0016】
そして、レプリカDB作成サーバ4はレプリカDBを作成するサーバである。また、クライアント端末5は、システム1の利用者が操作するPC(Personal Computer)等の計算機である。
【0017】
次に、このシステム1における処理の流れについて説明する。
【0018】
図2は、システム1における処理の流れを示す模式図である。
【0019】
まず、クライアント端末5が、業務サーバ2に対してマスタDBの操作を依頼する(P1)。その操作としては、レコードの削除、挿入、及び更新のいずれかがある。
【0020】
次いで、業務サーバ2の業務アプリ7が、トランザクションTS1においてDB管理アプリ8に対してマスタDBの操作を依頼し、DB管理アプリ8がマスタDBのレコードのデータを操作する(P2)。ここでは、操作後の当該レコードのデータが「A」であるとする。また、以下では操作が行われた後のデータのことを単に操作後データとも呼ぶ。
【0021】
次に、DB管理アプリ8に実装されているトリガを利用して、業務アプリ7が、マスタDBのレコードの操作後データが「A」であることを検知する(P3)。
【0022】
次いで、業務アプリ7が、DB管理アプリ8に対して採番DBの最新の通番を1だけカウントアップするように要求し、カウントアップ後の通番をDB管理アプリ8を介して取得する(P4)。ここでは、採番DBの最新の通番が「0」であり、それを1だけカウントアップした通番「1」を業務アプリ7が取得する。
【0023】
続いて、業務アプリ7が、DB管理アプリ8を介して、操作後データ「A」と通番「1」とを対応付けて差分DBに格納する(P5)。
【0024】
次いで、クライアント端末5が、業務サーバ2に対して再びマスタDBの操作を依頼する(P6)。
【0025】
次に、業務アプリ7が、今度はトランザクションTS2においてDB管理アプリ8に対してマスタDBの操作を依頼し、DB管理アプリ8がマスタDBのレコードのデータを操作する(P7)。この例では、当該レコードの操作後データが「B」であるとする。
【0026】
次に、DB管理アプリ8に実装されているトリガを利用して、業務アプリ7が、マスタDBのレコードの操作後データが「B」であることを検知する(P8)。
【0027】
次いで、業務アプリ7が、DB管理アプリ8に対して採番DBの最新の通番を1だけカウントアップするように要求し、カウントアップ後の通番をDB管理アプリ8を介して取得する(P9)。この例では、採番DBの最新の通番は「1」となっているため、それを1だけカウントアップした通番「2」を業務アプリ7が取得することになる。
【0028】
続いて、業務アプリ7が、DB管理アプリ8を介して、操作後データ「B」と通番「2」とを対応付けて差分DBに格納する(P10)。
【0029】
次に、レプリカDB作成サーバ4が、差分DBに格納されている操作後データを通番が小さい順に読み込み、それをレプリカDBに格納する(P11)。この例では、レプリカDB作成サーバ4は、最初に通番が「1」の操作後データ「A」をレプリカDBに格納し、次に通番が「2」の操作後データ「B」をレプリカDBに格納する。その後、レプリカDB作成サーバ4は、レプリカDBに格納した操作後データを差分DBから削除する。
以上により、このシステム1の基本処理を終える。
【0030】
このシステム1によれば、業務サーバ2が、マスタDBのレコードの操作後データを通番と対応付けて差分DBに格納し(P5、P10)、レプリカDB作成サーバ4が操作後データを通番順にレプリカDBに格納する(P11)。これにより、レプリカDBの内容がマスタDBの内容と同一となり、マスタDBを複製したレプリカDBを得ることができる。そのため、クライアント端末5が、マスタDBに代えてレプリカDBを参照することが可能となり、マスタDBにアクセスが集中するのを防止できる。
【0031】
ところで、
図2においては一つの業務サーバ2がディスク装置3にアクセスする例を説明したが、場合によっては複数の業務サーバ2がディスク装置3にアクセスするシステムも考えられる。例えば、複数の業務サーバ2とディスク装置3の各々を異なる地域や国に分散して配置することにより、ある地域の業務サーバ2に障害が発生しても他の地域の業務サーバ2でシステム1を継続して利用できるようにする場合がある。
【0032】
図3は、この場合のシステム1における処理の流れを示す模式図である。
【0033】
この場合は、まず、クライアント端末5が、複数の業務サーバ2のうちの一つに対してマスタDBの操作を依頼する(P21)。
【0034】
次いで、当該業務サーバ2の業務アプリ7が、トランザクションTS1においてDB管理アプリ8に対してマスタDBの操作を依頼し、DB管理アプリ8がマスタDBのレコードを操作する(P22)。ここでは、当該レコードの操作後データが「A」であるとする。
【0035】
次に、DB管理アプリ8に実装されているトリガを利用して、業務アプリ7が、マスタDBのレコードの操作後データが「A」であることを検知する(P23)。
【0036】
次いで、業務アプリ7が、DB管理アプリ8に対して採番DBの最新の通番を1だけカウントアップするように要求し、カウントアップ後の通番をDB管理アプリ8を介して取得する(P24)。
図2の例と同様に、ここでは採番DBの最新の通番が「0」であり、それを1だけカウントアップした通番「1」を業務アプリ7が取得する。
【0037】
続いて、業務アプリ7が、DB管理アプリ8を介して、操作後データ「A」と通番「1」とを対応付けて差分DBに格納する(P25)。
【0038】
次に、上記とは別の業務サーバ2に対し、クライアント端末5がマスタDBの操作を依頼する(P26)。
【0039】
続いて、その依頼を受けた業務サーバ2の業務アプリ7が、トランザクションTS2において自装置のDB管理アプリ8に対してマスタDBの操作を依頼し、DB管理アプリ8がマスタDBのレコードを操作する(P27)。
図2の例と同様に、この例でも当該レコードの操作後データが「B」であるとする。
【0040】
そして、DB管理アプリ8に実装されているトリガを利用して、業務アプリ7が、マスタDBのレコードの操作後データが「B」であることを検知する(P28)。
【0041】
次いで、業務アプリ7が、DB管理アプリ8に対して採番DBの最新の通番を1だけカウントアップするように要求し、カウントアップ後の通番をDB管理アプリ8を介して取得する(P29)。ここでは採番DBの最新の通番は「1」となっているため、それを1だけカウントアップした通番「2」を業務アプリ7が取得する。
【0042】
続いて、業務アプリ7が、DB管理アプリ8を介して、操作後データ「B」と通番「2」とを対応付けて差分DBに格納する(P30)。
【0043】
次に、レプリカDB作成サーバ4が、差分DBに格納されている操作後データを通番が小さい順に読み込み、それをレプリカDBに格納する(P31)。
【0044】
以上により、業務サーバ2が複数存在する場合のシステム1の基本処理を終える。この場合も、各業務サーバ2が、レコードの操作後データと採番DBの通番とを対応付けて差分DBに格納することにより、マスタDBと同一内容のレプリカDBをレプリカDB作成サーバ4が作成できる。
【0045】
しかし、このように複数の業務サーバ2が採番DBと差分DBにアクセスする場合には、採番DBと差分DBの各々の一貫性を保証するために、DB管理アプリ8がアクセスの排他制御を行う必要がある。
【0046】
図4は、その排他制御の模式図である。
図4に示すように、この例では、採番DBの一貫性を保証するために、一つの業務サーバ2が前述のステップP24を実行した後に、他の業務サーバ2が前述のステップP29を行う必要がある。
【0047】
同様に、差分DBの一貫性を保証するために、一つの業務サーバ2が前述のステップP25を実行した後に、他の業務サーバ2が前述のステップP30を行う必要がある。
【0048】
このように採番DBと差分DBの各々へのアクセスを排他的に行うと、例えばステップP24を実行してからステップP30が終了するまでのレスポンスタイムT0が長くなる。特に、業務サーバ2の台数が多くなるとレスポンスタイムT0の長時間化が顕著となる。
【0049】
(本実施形態)
図5は、本実施形態に係る情報処理システムのシステム構成図である。
【0050】
この情報処理システム20は、マスタDBからレプリカDBを複製するシステムであって、第1及び第2のサーバ21、22、ディスク装置23、レプリカDB作成サーバ24、及びクライアント端末25を有する。これらの各装置は、インターネット等のネットワーク26を介して相互に接続される。
【0051】
このうち、第1のサーバ21と第2のサーバ22は、クライアント端末25の要求に応じてディスク装置23のデータベースに対してレコードの挿入、削除、及び更新のいずれかの操作を行うサーバである。
【0052】
また、ディスク装置23は、マスタDBやレプリカDB等の各種のデータベースを記憶したHDD(Hard Disk Drive)やSSD(Solid State Drive)等のストレージ装置である。そして、レプリカDB作成サーバ24は、情報処理装置の一例であって、ディスク装置23にレプリカDBを作成するサーバである。更に、クライアント端末25は、情報処理システム20の利用者が操作するPC等の計算機である。
【0053】
次に、ディスク装置23に記憶されている各種のデータベースについて説明する。
【0054】
図6は、ディスク装置23の模式図である。
図6に示すように、ディスク装置23は、第1の採番DB31、第2の採番DB32、第1の差分DB41、第2の差分DB42、マスタDB43、チェックポイントDB44、及びレプリカDB45を記憶する。
【0055】
このうち、マスタDB43は複製元のデータベースであり、レプリカDB45は複製先のデータベースである。
【0056】
また、第1の採番DB31と第1の差分DB41は、第1のサーバ21に対応付けられたデータベースであり、各サーバ21、22のうちで第1のサーバ21のみがアクセス可能である。
【0057】
一方、第2の採番DB32と第2の差分DB42は、第2のサーバ22に対応付けられたデータベースであり、各サーバ21、22のうちで第2のサーバ22のみがアクセス可能である。
【0058】
なお、第1の差分DB41と第2の差分DB42は、いずれも第2のデータベースの一例である。そして、第1の採番DB31と第2の採番DB32は、いずれも第5のデータベースの一例である。
【0059】
また、チェックポイントDB44は、第4のデータベースの一例であって、予め定められたチェック期間内における各差分DB41、42の内容を取得するときに使用するデータベースである。
【0060】
次に、マスタDB43、第1及び第2の採番DB31、32、第1及び第2の差分DB41、42、及びチェックポイントDB44の各々の内容について説明する。
【0061】
図7は、マスタDB43の内容を示す模式図である。
図7の例では、表名が「社員名簿」、「得意先名簿」、及び「支店一覧」の三つのデータベースがマスタDBに格納される。これらのデータベースの各々には、一行分のデータであるレコード43aが複数格納される。なお、マスタDB43に格納されるデータベースの個数はこれに限定されず、一つのデータベースのみがマスタDB43に格納されてもよいし、四つ以上のデータベースがマスタDB43に格納されてもよい。
【0062】
複数のレコード43aのうちの一つを一意に識別する主キーはデータベースごとに異なる。例えば、表名が「社員番号」の主キーは属性「社員番号」である。また、表名が「得意先名簿」の主キーは属性「得意先名」である。そして、表名が「支店一覧」の主キーは属性「支店番号」である。
【0063】
図8(a)は、第1の採番DB31の内容について示す模式図である。
【0064】
図8(a)に示すように、第1の採番DB31は、属性として通番のみを備えたデータベースである。通番は、第1のサーバ21がマスタDB43の操作を行った順序を識別する識別子の一例である。ここでは、その通番子として整数を採用する。
【0065】
これと同様に、第2の採番DB32も属性として通番のみを有するデータベースである。例えば、第2の採番DB32には、第2のサーバ22がマスタDB43の操作を行った順序を識別する識別子として整数値の通番が格納される。
【0066】
図8(b)は、チェックポイントDB44の内容について示す模式図である。
【0067】
図8(b)に示すように、チェックポイントDB44は、表名が「チェックポイント」のデータベースである。そのチェックポイントDB44には、予め定められたチェック期間CTごとに更新される属性「チェックポイント」として文字列「CKPT」のみが格納される。チェック期間CTの長さは特に限定されないが、ここでは1分程度とする。また、チェック期間CTは、第1の期間の一例である。
【0068】
図9は、第1の差分DB41の内容について示す模式図である。
【0069】
図9に示すように、第1の差分DB41は、「通番」、「データ種」、「表名」、「主キー」、「操作内容」、「操作前データ」、及び「操作後データ」の各属性を対応付けた複数の差分レコード49を記憶する。
【0070】
このうち、「通番」は、第1の採番DB31における「通番」である。また、「データ種」は、マスタDB43とチェックポイントDB44のどちらの操作後データが第1の差分DB41に格納されているのかを特定する文字列である。例えば、マスタDB43の操作後データの場合には文字列「DB」が「データ種」に格納される。また、チェックポイントDB44の操作後データの場合には文字列「CKPT」が「データ種」に格納される。
【0071】
「表名」は、マスタDB43とチェックポイントDB44のいずれかに記憶されているデータベースの表名である。
【0072】
「主キー」は、マスタDB43の複数の属性のうちで、レコード43aを一意に特定できる属性である。なお、チェックポイントDB44に対応した差分レコード49の「主キー」には文字列「CKPT」が格納される。
【0073】
「操作内容」は、第1のサーバ21がマスタDB43に対して行った操作の内容である。例えば、「更新」、「削除」、及び「挿入」が「操作内容」となる。なお、第1のサーバ21がチェックポイントDB44に対して行う操作は常に挿入であるため、チェックポイントDB44に対応した「操作内容」には「挿入」となる。
【0074】
そして、「操作前データ」は、マスタDB43とチェックポイントDB44の各々を第1のサーバ21が操作する前にこれらのデータベースに格納されているデータである。一方、「操作後データ」は、マスタDB43とチェックポイントDB44の各々を第1のサーバ21が操作した後にこれらのデータに格納されているデータである。
【0075】
チェックポイントDB44の内容は常に文字列「CKPT」であるため、「操作前データ」と「操作後データ」はどちらも「CKPT」となる。
【0076】
なお、第2の差分DB42も、上記した第1の差分DB41と同じ属性を対応つけた差分レコード49を記憶する。その属性のうち、「通番」には、第2の採番DB32の「通番」が格納される。そして、「操作前データ」には、マスタDB43とチェックポイントDB44の各々を第2のサーバ22が操作する前にこれらのデータベースに格納されているデータが格納される。更に、「操作後データ」には、マスタDB43とチェックポイントDB44の各々を第2のサーバ22が操作した後にこれらのデータに格納されているデータが格納される。
【0077】
次に、この情報処理システム20においてマスタDB43の内容をレプリカDB45に複製するときの処理の流れについて説明する。
【0078】
図10は、情報処理システム20の処理の流れを示す模式図である。
【0079】
本実施形態では、第1のサーバ21と第2のサーバ22の各々がディスク装置23にアクセスするときに、アクセスの排他制御を行わずに以下のようにしてマスタDB43の内容をレプリカDB45に複製する。
【0080】
まず、第1のサーバ21が、マスタDB43の操作を依頼する通知をクライアント端末25(
図5参照)から受け付け、それを契機としてマスタDB43のレコード43aを操作する(P41)。
【0081】
次に、第1のサーバ21が、トリガを利用することにより、マスタDBを操作した後のレコード43aの操作後データを取得する(P42)。ここでは操作後データが「A」であるとする。
【0082】
次いで、第1のサーバ21が、第1の採番DB31の最新の通番を1だけカウントアップし、カウントアップ後の通番を取得する(P43)。この例では、第1の採番DB31の最新の通番が「0」であり、それを1だけカウントアップした通番「1」を第1のサーバ21が取得する。
【0083】
続いて、第1のサーバ21が、操作後データ「A」と通番「1」とを対応付けた差分レコード49を第1の差分DB41に格納する(P44)。なお、
図10においては、
図9の「操作後データ」と「通番」以外の差分レコード49の属性は省略している。
【0084】
その後、上記と同様にして第1のサーバ21がマスタDB43の操作を行い、操作後データと通番とを対応付けた差分レコード49を第1の差分DB41に格納する(P45~P47)。一例として、第1のサーバ21は、操作後データ「B」、「C」、「D」をそれぞれ通番「2」、「3」、「4」と対応付けた差分レコード49を第1の差分DB41に格納する。
【0085】
そして、上記のステップP41~P47と非同期に、第2のサーバ22がマスタDB43、第2の採番DB32、及び第2の差分DB42にアクセスする(P48~P53)。
【0086】
例えば、第2のサーバ22は、マスタDB43の操作を依頼する通知をクライアント端末25(
図5参照)から受け付け、それを契機としてマスタDB43のレコード43aを操作する(P48)。
【0087】
次に、第2のサーバ22が、トリガを利用することにより、マスタDBの操作後データを取得する(P49)。この例では操作後データが「X」であるとする。
【0088】
続いて、第1のサーバ21が、第2の採番DB32の最新の通番を1だけカウントアップし、カウントアップ後の通番を取得する(P50)。この例では、第2の採番DB32の最新の通番が「4」であり、それを1だけカウントアップした通番「5」を第2のサーバ22が取得する。
【0089】
なお、第2の採番DB32における通番は、第2のサーバ22がマスタDB43の操作を行った順序を識別する整数であって、第1の採番DB31における通番とは独立している。そのため、第2の採番DB32の通番「5」と、第1の採番DB31の通番「1」との先後は任意であり、通番「5」が通番「1」よりも先であってもよいし、通番「5」が通番「1」よりも後であってもよい。これについては他の通番についても同様である。
【0090】
そして、第2のサーバ22が、操作後データ「X」と通番「5」とを対応付けた差分レコード49を第2の差分DB42に格納する(P51)。
【0091】
その後、上記と同様にして第2のサーバ22がマスタDB43の操作を行い、差分レコード49を第2の差分DB42に格納する(P52~P53)。例えば、第2のサーバ22は、操作後データ「Y」、「Z」をそれぞれ通番「6」、「7」と対応付けた差分レコード49を第2の差分DB42に格納する。
【0092】
次いで、レプリカDB作成サーバ24が、チェックポイントDB44を操作することにより、文字列「CKPT」をチェックポイントDB44に挿入する(P54)。レプリカDB作成サーバ24がチェックポイントDB44を操作するのは、予め定められたチェック期間CTに一回のみである。よって、レプリカDB作成サーバ24は、チェック期間CTごとに定期的に文字列「CKPT」をチェックポイントDB44に挿入することになる。
【0093】
なお、
図8(b)に示したように、この操作の前にもチェックポイントDB44には文字列「CKPT」が格納されているため、この操作の前後でチェックポイントDB44の内容は変わらない。
【0094】
次に、レプリカDB作成サーバ24が、トリガを利用することにより、チェックポイントDB44に挿入された文字列「CKPT」を取得する(P55)。
【0095】
続いて、レプリカDB作成サーバ24が、第1の採番DB31を参照して、該第1の採番DB31における最新の通番を1だけカウントアップした通番を特定する(P56)。この例では、第1の採番DB31における最新の通番は「4」であるため、これを1だけカウントアップした通番「5」をレプリカDB作成サーバ24が特定する。その通番「5」は、第1の差分DB41におけるチェック期間CTの終点を示す終点識別子の一例である。
【0096】
次に、レプリカDB作成サーバ24が、その通番「5」と文字列「CKPT」とを対応付けて第1の差分DB41に格納する(P57)。
【0097】
続いて、レプリカDB作成サーバ24が、第2の採番DB32を参照して、該第2の採番DB32における最新の通番を1だけカウントアップした通番を特定する(P58)。ここでは、第2の採番DB32における最新の通番は「7」であるため、これを1だけカウントアップした通番「8」をレプリカDB作成サーバ24が特定する。その通番「8」は、第2の差分DB42におけるチェック期間CTの終点を示す終点識別子の一例である。
【0098】
そして、レプリカDB作成サーバ24が、その通番「8」と文字列「CKPT」とを対応付けて第2の差分DB42に格納する(P59)。
【0099】
次いで、レプリカDB作成サーバ24が、第1の差分DB41を参照して、文字列「CKPT」と対応付けられた通番「5」を特定する(P60)。
【0100】
そして、レプリカDB作成サーバ24が、通番「5」よりも順序が先の通番を含む全ての差分レコード49を第1の差分DB41から取得し、通番が小さい順に操作後データをレプリカDB45に格納する(P61)。
【0101】
この例では、通番「5」よりも先の通番「1」~「4」に対応付けられた操作後データ「A」~「D」を含む差分レコード49をレプリカDB作成サーバ24が取得する。そして、レプリカDB作成サーバ24が、これらの操作後データを「A」、「B」、「C」、「D」の順にレプリカDB45に格納する。
【0102】
その後に、レプリカDB作成サーバ24が、通番「5」よりも順序が先の通番を含む差分レコード49を第1の差分DB41から削除する。この例では、レプリカDB作成サーバ24は、操作後データ「A」~「D」を含む差分レコード49を第1の差分DB41から削除する。
【0103】
同様に、レプリカDB作成サーバ24が、第2の差分DB42を参照して、文字列「CKPT」と対応付けられた通番「8」を特定する(P62)。
【0104】
そして、レプリカDB作成サーバ24が、特定した通番「8」よりも順序が先の通番を含む全ての差分レコード49を第2の差分DB42から取得し、通番が小さい順に各操作後データをレプリカDB45に格納する(P63)。
【0105】
ここでは、通番「8」よりも先の通番「5」~「7」に対応付けられた操作後データ「X」~「Z」を含む差分レコード49をレプリカDB作成サーバ24が取得する。そして、レプリカDB作成サーバ24が、これらの操作後データを「X」、「Y」、「Z」の順にレプリカDB45に格納する。
【0106】
その後に、レプリカDB作成サーバ24が、通番「8」よりも順序が先の通番を含む差分レコード49を第2の差分DB42から削除する。この例では、レプリカDB作成サーバ24は、操作後データ「X」~「Z」を含む差分レコード49を第2の差分DB42から削除する。
【0107】
以上により、情報処理システム20における基本処理を終える。
【0108】
これによれば、第1及び第2のサーバ21、22ごとに第1及び第2の採番DB31、32と第1及び第2の差分DB41、42を設け、かつレプリカDB作成サーバ24が操作後データを通番順にレプリカDB45に格納する。そのため、各採番DB31、32と各差分DB41、42への各サーバ21、22のアクセスに対して排他制御をしなくても、レプリカDBにおける操作後データの一貫性を保証できる。
【0109】
なお、P57ではレプリカDB作成サーバ24が第1の差分DB41にアクセスしているため、このタイミングではレプリカDB作成サーバ24と第1のサーバ21の各々の第1の差分DB41へのアクセスを排他的に行うことになる。但し、P57が実行されるのはチェック期間CTに一回のみなので、これにより情報処理システム20のレスポンスタイムが大きく悪化することはない。
【0110】
また、この例では、各サーバ21、22とは別にレプリカDB作成サーバ24を設けたが、第1のサーバ21と第2のサーバ22のいずれかにレプリカDB作成サーバ24の機能を持たせてもよい。この場合は、例えば、第1のサーバ21が前述のP54~P63の処理を行うことになる。
【0111】
ところで、第1の採番DB31の通番「1」~「4」は、第1のサーバ21がマスタDB43を操作した順番を示す。そのため、上記のように通番通りに操作後データ「A」~「D」をレプリカDB45に格納することにより、第1のサーバ21が操作したレコードの一貫性は保たれる。
【0112】
但し、第1の採番DB31と第2の採番DB32のそれぞれの通番では時間的な先後を特定できないため、これらの通番のみでは第1のサーバ21と第2のサーバ22の各々がマスタDB43を操作した順番を特定できない。例えば、第1の採番DB31の通番「3」は第2の採番DB32の通番「5」よりも小さいが、通番「3」に対する操作が通番「5」に対する操作よりも先に行われたとは限らない。
【0113】
そのため、第1のサーバ21と第2のサーバ22がマスタDB43の同一のレコード43aを操作した場合には、レプリカDB45に通番順に操作後データを格納してもレプリカDB45の一貫性が保たれない。
【0114】
その場合には、以下のようにして同一のレコード43aに対する複数の操作の間で許容される状態遷移に基づいて最後に操作されたレコード43aの操作後データを特定し、当該操作後データをレプリカDB45に格納する。
【0115】
図11は、マスタDB43の同一レコード43aに対する複数の操作の間で許容される状態遷移を示す模式図である。
【0116】
この状態遷移50は、マスタDB43の一貫性を保つために許容される操作の状態遷移である。
【0117】
図11に示されるように、複数の操作の間で許容されるのは(1)~(5)の遷移のみである。このうち、(1)は、あるレコード43aに対して「挿入」を行った後に、そのレコード43aの「更新」を行う遷移である。また、(2)は、あるレコード43aを「更新」した後に、そのレコード43aの「更新」を再び行う遷移である。
【0118】
(3)は、あるレコード43aの「更新」をした後に、そのレコード43aを「削除」する遷移である。(4)は、あるレコード43aを「挿入」した後に、そのレコード43aを「削除」する遷移である。
【0119】
そして、(5)は、あるレコード43aを「削除」した後に、そのレコード43aを再び「挿入」する遷移である。
【0120】
図12は、操作間の遷移の具体例を示す模式図である。
なお、
図12においては、各操作をした後の差分レコード49も併記してある。
【0121】
この例では、(1)の遷移において、挿入されたレコード43aのデータが「A」から「B」に更新される。また、(2)の遷移において、レコード43aのデータが「B」から「C」に更新される。
【0122】
そして、(3)の遷移においては、データが「B」に更新されたレコード43aが削除される。更に、(4)の遷移においては、データとして「A」が挿入されたレコード43aが削除される。
【0123】
また、(5)の遷移においては、削除されたレコード43aのデータを「A」にし、再びそのレコード43aを挿入する。
【0124】
このように複数の操作の間で許容される状態遷移を利用すると、各サーバ21、22がマスタDB43の同一のレコード43aを操作した場合であっても、以下のようにレプリカDB45の一貫性を保つことができる。
【0125】
図13は、操作間の状態遷移を利用してレプリカDB45の一貫性を保つ方法を示す模式図である。
【0126】
ここでは、第1のサーバ21と第2のサーバ22の各々が、マスタDB43の同一のレコード43aに対し、「Aを挿入」→「Bに更新」→「Cに更新」という三つの操作をこの順に行った場合を例にして説明する。例えば、「Aを挿入」と「Bに更新」を第1のサーバ21が行い、「Cに更新」を第2のサーバ22が行ったものとする。また、各サーバ21、22が操作する前の当該レコード43aの初期値は空であるとする。
【0127】
この場合は、まず、レプリカDB作成サーバ24が、第1の差分DB41と第2の差分DB42の各々の差分レコード49の中に、マスタDB43の同一のレコード43aに対応したものがあるかを判定する。
【0128】
ここで、同一のレコード43aに対応した差分レコード49があると判定された場合には、レプリカDB作成サーバ24は、レプリカDB45の当該レコード43aを自装置の記憶部に退避させる(P71)。この例では、レプリカDB作成サーバ24は、初期値が空のレコード43aを記憶部に退避させる。
【0129】
次に、レプリカDB作成サーバ24が、第1の差分DB41と第2の差分DB42の各々の差分レコード49と状態遷移50とに基づいて、最後に操作されたレコード43aを特定する(P72)
【0130】
この例では、三つの差分レコード49の各々の「操作内容」は「挿入」、「更新」、「更新」である。状態遷移50によれば、これらの操作間で許容される遷移は、(1)の「挿入」→「更新」の遷移と、(2)の「更新」→「更新」の遷移の二つである。そして、これら二つの遷移が可能なのは、「挿入」→「更新」→「更新」という遷移のみである。
【0131】
最後の二つの「更新」を行った順序は、差分レコード49の「操作前データ」と「操作後データ」から判断できる。例えば、二つの「更新」のうちの一方の「操作後データ」が他方の「操作前データ」に一致すれば、二つの「更新」がこの順に行われたことになる。
図13の例では、最初に「Bに更新」が行われ、その後に「Aに更新」が行われたことになる。
【0132】
以上により、最後に行われた操作は、「B」から「C」への更新であることが特定できる。
【0133】
その後、レプリカDB作成サーバ24は、上記のようにして最後に操作されたレコード43aに対応する操作後データのみをレプリカDB45に格納する(P73)。
【0134】
これにより、各サーバ21、22がマスタDB43の同一のレコード43aに対して操作を行った場合でも、最後の操作における操作後データのみがレプリカDB45に格納されるため、レプリカDB45の一貫性を保つことができる。
【0135】
なお、このように状態遷移50を利用せずに、レコード43aを操作した時刻を示すタイムスタンプを各サーバ21、22が差分レコード49に付与することも考えられる。この場合は、レプリカDB作成サーバ24は、タイムスタンプ順に差分レコード49を並べ替えることにより、最後に操作されたレコード43aに対応する差分レコード49を特定することになる。しかし、各サーバ21、22が計測する時刻を正確に合わせるのは困難であるため、この方法では並べ替えた後の差分レコード49の順序が時刻順になる保障がない。
【0136】
これに対し、この例のように状態遷移50を利用すれば時刻順に差分レコード49を正しく並べ替えることができ、最後の差分レコード49を正しく求めることができる。
【0137】
次に、情報処理システム20の各装置の機能構成について説明する。
【0138】
図14は、第1のサーバ21の機能構成図である。
図14に示すように、第1のサーバ21は、通信部51と制御部52とを有する。
【0139】
このうち、通信部51は、第1のサーバ21をネットワーク26に接続するための通信インターフェースである。
【0140】
一方、制御部52は、第1のサーバ21の各部を制御する処理部であって、受付部53、操作部54、通番取得部55、及びデータ格納部56を備える。
【0141】
受付部53は、マスタDB43の操作を要求する操作要求をクライアント端末25から受け付ける処理部である。また、操作部54は、マスタDB43のレコード43aに対し、挿入、更新、及び削除等の操作を行う処理部である。
【0142】
そして、通番取得部55は、第1の採番DB31から最新の通番を取得する処理部である。更に、データ格納部56は、操作部54が操作したレコード43aの操作後データと、通番取得部55が取得した通番とを対応付けて第1の差分DB41に格納する処理部である。
【0143】
なお、第2のサーバ22も上記と同様の機能構成を有する。例えば、第2のサーバ22の通信部51は、該第2のサーバ22をネットワーク26に接続する。また、第2のサーバ22の通番取得部55は、第2の採番DB32から通番を取得する。そして、第2のサーバ22のデータ格納部56は、レコード43aの操作後データと通番とを対応付けて第2の差分DB42に格納する。
【0144】
図15は、レプリカDB作成サーバ24の機能構成図である。
【0145】
図15に示すように、レプリカDB作成サーバ24は、通信部61、記憶部62、及び制御部63を有する。
【0146】
このうち、通信部61は、レプリカDB作成サーバ24をネットワーク26に接続するための通信インターフェースである。
一方、記憶部62は、主キー一覧80を記憶する。
図16は、主キー一覧80の模式図である。
【0147】
主キー一覧80は、第1のサーバ21と第2のサーバ22の両方から操作が行われたマスタDB43のレコード43aを特定するための情報である。ここでは、各サーバ21、22の両方から操作されたレコード43aの「表名」と「主キー」とが対応付けられて主キー一覧80に格納される。
【0148】
例えば、表名が「社員名簿」のデータベースを考える。このデータベースの主キーは「社員番号」である。この場合は、マスタDB43に格納されている表名が「社員名簿」のデータベースのレコード43aのうち、「社員番号」が「1234」で特定されるレコードを、第1のサーバ21と第2のサーバ22の両方が操作したということになる。
再び
図15を参照する。
【0149】
制御部63は、レプリカDB作成サーバ24の各部を制御する処理部である。この例では、制御部63は、データ取得部67、通番取得部68、操作部69、検知部70、特定部71、及び通番格納部72を有する。更に、制御部63は、データ格納部73、削除部74、生成部75、及び判定部76を有する。
【0150】
このうち、データ取得部67は、第1の差分DB41と第2の差分DB42の各々から差分レコード49を取得する処理部である。また、通番取得部68は、第1の採番DB31と第2の採番DB32の各々から最新の通番を取得する処理部である。
【0151】
操作部69は、チェック期間CTごとにチェックポイントDB44を操作することにより、チェックポイントDB44に文字列「CKPT」を定期的に挿入する処理部である。この例では、操作部69は、チェック期間CTごとにチェックポイントDB44に文字列「CKPT」を挿入する。
【0152】
そして、検知部70は、チェック期間CT内にチェックポイントDBが操作されたことを検知する処理部である。一例として、検知部70は、操作部69がチェックポイントDB44に文字列「CKPT」を挿入したときに、トリガを利用してチェックポイントDB44が操作されたことを検知する。
【0153】
特定部71は、検知部70が上記の操作を検知したときに、第1の採番DB31と第2の採番DB32の各々を参照して、各採番DB31、32における最新の通番に1を加えた通番を特定する処理部である。
図10の例では、特定部71は、第1の採番DB31における最新の通番「4」に1を加えた通番「5」を特定する。これと共に、特定部71は、第2の採番DB32における最新の通番「7」に1を加えた通番「8」を特定する。
【0154】
通番格納部72は、識別子格納部の一例であって、特定部71が特定した通番を、チェック期間CTの終点を示す終点識別子として各差分DB41、42に格納する処理部である。
図10の例では、通番格納部72は、第1の差分DB41に終点識別子として通番「5」を文字列「CKPT」と対応付けて格納し、第2の差分DB42に終点識別子として通番「8」を文字列「CKPT」と対応付けて格納する。
【0155】
データ格納部73は、データ取得部67が取得した差分レコード49に含まれる操作後データを通番順にレプリカDB45に格納する処理部である。
【0156】
削除部74は、データ取得部67が差分レコード49を取得した後に、終点識別子よりも順序が先の通番を含む差分レコード49を各差分DB41、42の各々から削除する処理部である。例えば、
図10の場合には、削除部74は、第1の差分DB41において終点識別子「5」よりも先の「1」~「4」の通番を含む差分レコード49を該第1の差分DB41から削除する。同様に、削除部74は、第2の差分DB42において終点識別子「8」よりも先の「5」~「7」の通番を含む差分レコード49を該第2の差分DB42から削除する。
【0157】
生成部75は、前述の主キー一覧80を記憶部62に生成する処理部である。そして、判定部76は、主キー一覧80を参照することにより、データ取得部67が取得した差分レコード49の中に、第1のサーバ21と第2のサーバ22の両方が操作したレコード43aに係るものが存在するかを判定する。
【0158】
なお、この例では、第1及び第2のサーバ21、22とは別にレプリカDB作成サーバ24を設けたが、前述のようにレプリカDB作成サーバ24の機能を各サーバ21、22のいずれかに持たせてもよい。例えば、第1のサーバ21の制御部52にレプリカDB作成サーバ24の制御部63の機能を持たせ、かつ、第1のサーバ21にレプリカDB作成サーバ24の記憶部62の機能を持たせてもよい。
【0159】
次に、本実施形態に係る情報処理方法について説明する。
図17は、第1のサーバ21の処理を示すフローチャートである。
【0160】
まず、第1のサーバ21の受付部53が、マスタDB43の操作を要求する操作要求をクライアント端末25から受け付ける(ステップP31)。
【0161】
次いで、操作部54が、操作要求に応じてマスタDB43のレコード43aを操作する(ステップS32)。例えば、操作要求がレコード43aの更新を要求している場合には、操作部54は当該レコード43aを更新する。
【0162】
次に、通番取得部55が、例えばトリガを利用してレコード43aが操作されたことを検知し、これを契機として第1の採番DB31から最新の通番を取得する(ステップS33)。
【0163】
その後、データ格納部56が、トリガによって検知されたレコード43aの操作後データと、ステップS33で取得した通番とを対応付けた差分レコード49を第1の差分DB41に格納する(ステップS34)。
【0164】
この際、データ格納部56は、
図9のように「データ種」、「表名」、「主キー」、「操作内容」、及び「操作前データ」も通番と対応付けて第1の差分DB41に格納する。
【0165】
この例では、「データ種」には、マスタDB43を操作したことを示す文字列「DB」が格納される。また、「表名」には、「社員名簿」等のように操作が行われたデータベースの表名が格納される。更に、「主キー」には、操作が行われたレコード43aを一意に特定する属性が格納される。上記の「社員名簿」の場合には属性「社員番号」が主キーとなる。そして、「操作内容」は、レコード43aに対して行われた操作を示す「挿入」、「更新」、及び「削除」のいずれかが格納される。また、「操作前データ」には、操作前におけるレコード43aのデータが格納される。
【0166】
この後は、第1のサーバ21の業務が終わるまでステップS31~S34を繰り返す。
【0167】
また、第2のサーバ22も同様にして上記のステップS31~S34を実行する。
【0168】
図18は、
図17のフローチャートに従って各サーバ21、22が各採番DB31、32と各差分DB41、42の各々にアクセスする際の模式図である。
【0169】
図18に示すように、本実施形態では、第1のサーバ21がアクセスする第1の採番DB31と第1の差分DB41の各々を、第2のサーバ22がアクセスする第2の採番DB32と第2の差分DB42の各々と別にした。そのため、第1のサーバ21が第1の採番DB31にアクセスするステップS33と、第2のサーバ22が第2の採番DB32にアクセスするステップS33とを排他的に行わなくても、各採番DB31、32の一貫性が保たれる。同様に、各サーバ21、22のそれぞれのステップS34を排他的に行わなくても各差分DB41、42の一貫性が保たれる。
【0170】
その結果、第1のサーバ21がステップS33を実行してから第2のサーバ22がステップS34を終えるまでのレスポンスタイムT
1を、
図4のレスポンスタイムT
0よりも短くすることができる。
【0171】
次に、レプリカDB作成サーバ24が行う情報処理方法について説明する。レプリカDB作成サーバ24が行う情報処理方法は、チェックポイントDB44を操作する処理と、レプリカDB45を作成する処理とがある。
【0172】
最初に、チェックポイントDB44を操作する場合の情報処理方法について説明する。
【0173】
図19は、チェックポイントDB44を操作するときにレプリカDB作成サーバ24が行う情報処理方法のフローチャートである。
【0174】
まず、操作部69が、チェックポイントDB44を操作することにより、チェックポイントDB44に文字列「CKPT」を挿入する(ステップS35)。
【0175】
次いで、チェックポイントDB44の操作があったことを検知部70が検知し、これを契機として特定部71が各採番DB31、32における最新の通番に1を加えた通番を特定する(ステップS36)。
【0176】
そして、通番格納部72が、特定部71が特定した通番を、チェック期間CTの終点を示す終点識別子として各差分DB41、42に格納する(ステップS37)。このとき、通番格納部72は、
図10のP57と同様に、終点識別子と文字列「CKPT」とを対応付けて各差分DB41、42に格納する。
【0177】
この後は、チェック期間CTに1回の周期でステップS35~S37を繰り返す。
【0178】
以上により、チェックポイントDB44を操作するときにレプリカDB作成サーバ24が行う情報処理方法の基本処理を終える。
【0179】
次に、レプリカDB45を作成する場合の情報処理方法について説明する。
図20及び
図21は、レプリカDB45を作成するときにレプリカDB作成サーバ24が行う情報処理方法のフローチャートである。
【0180】
この情報処理方法は、レプリカDB作成サーバ24が後述の情報処理プログラムを実行することにより行われ、管理者が当該情報処理プログラムを起動することにより開始する。
【0181】
まず、検知部70が、チェックポイントDB44に対する操作があるかを検知する(ステップS41)。例えば、検知部70は、操作部69がチェックポイントDB44に文字列「CKPT」を挿入したときにチェックポイントDB44が操作されたことを検知する。
【0182】
ここで、操作がない場合(ステップS41:否定)にはステップS42に移る。ステップS42ではレプリカDB作成サーバ24が一定の時間だけ待機した後に再びステップS41に戻る。
【0183】
一方、操作がある場合(ステップS41:肯定)にはステップS43に移る。
【0184】
ステップS43においては、第1の採番DB31における最新の通番に1を加えた終点識別子を特定部71が特定する。ステップS43は、各採番DB31、32の数だけ繰り返される。よって、ステップS43においては、特定部71は、第2の採番DB32における最新の通番に1を加えた終点識別子も特定する。
【0185】
次に、生成部75が、各差分DB41、42の各々から終点識別子よりも順序が先の差分レコード49を取得し、これらの差分レコード49から主キー一覧80を記憶部62に生成する(ステップS44)。例えば、生成部75は、第1の差分DB41の複数の差分レコード49のうちで、「主キー」と「表名」が第2の差分DB42の差分レコード49におけるのと同じレコードを特定する。そして、生成部75は、特定した差分レコード49の「主キー」、「表名」、及び「操作前データ」を記憶部62の主キー一覧80に格納する。
【0186】
これにより、
図13のP71と同様に、第1のサーバ21と第2のサーバ22の両方から操作されたレコード43aに対応した差分レコード49が記憶部62に退避されることになる。
【0187】
次いで、データ取得部67が、終点識別子よりも順序が先の差分レコード49を、第1の差分DB41から通番順に取得する(ステップS45)。ステップS45は各差分DB41、42ごとに行われる。よって、データ取得部67は、第2の差分DB42にある差分レコード49についても同様に取得する。
【0188】
更に、この例では、チェック期間CTに一度だけ行われるチェックポイントDB44に対する操作があった場合(ステップS41:肯定)にステップS45が実行される。これにより、データ取得部67は、終点識別子よりも順序が先の差分レコード49を、チェック期間において操作されたレコード43aに対応した差分レコード49として取得することになる。
【0189】
次に、判定部76が、ステップS45で取得した差分レコード49の「表名」と「主キー」が主キー一覧80にあるかを判定する(ステップS46)。ここで、ないと判定された場合(ステップS46:否定)にはステップS47に移る。
【0190】
ステップS47においては、データ格納部73が、ステップS45で取得した差分レコード49に含まれる操作後データをレプリカDB45に格納する。ステップS45~S47は、ステップS43で取得した終点識別子よりも順序が先の差分レコード49に対して通番順に行われる。これにより、データ格納部73は、通番順に操作後データをレプリカDB45に格納することになる。
【0191】
一方、ステップS46で差分レコード49の「表名」と「主キー」が主キー一覧80にあると判定された場合(ステップS46:肯定)は、該差分レコード49に対応するレコード43aが各サーバ21、22から操作されたことになる。この場合には、
図13に例示したように、当該レコード43aに対する複数の操作のうちで最後の操作に対応した差分レコード49の操作後データのみをレプリカDB45に格納する必要があるため、ステップS47をスキップする。
【0192】
次に、判定部76が、記憶部62に主キー一覧80があるかどうかを判定する(ステップS48)。
【0193】
ここで、主キー一覧80があると判定された場合(ステップS48:肯定)は、第1のサーバ21と第2のサーバ22の両方から操作が行われたマスタDB43のレコード43aが存在することになる。この場合には、
図13を参照して説明したように、最後に操作されたレコード43aに対応する差分レコード49を状態遷移50に基づいて以下のように特定する。
【0194】
まず、データ取得部67が、各差分DB41、DB42にある複数の差分レコード49のうち、「表名」と「主キー」が主キー一覧80に存在する差分レコード49を各差分DB41、42から取得する(ステップS49)。このようにして取得した複数の差分レコード49の各々には、同一のレコード43aを各サーバ21、22が操作したときの操作後データが格納されている。
【0195】
次に、データ格納部73が、複数の差分レコード49の各々を、
図11の状態遷移50を利用して操作順に並べ替えることにより、最後に操作されたレコード43aに対応した差分レコード49を特定する(ステップS50)。一例として、データ格納部73は、複数の差分レコード49の「操作内容」、「操作前データ」、及び「操作後データ」の各々が状態遷移50と整合するように差分レコード49を並べ替える。そして、データ格納部73は、その並びの最後にある差分レコード49を、最後に操作されたレコード43aに対応した差分レコード49であると特定する。
【0196】
図13を参照して説明したように、このように状態遷移50を利用して差分レコード49を並べ替えることにより、タイムスタンプを利用しなくても最後の差分レコード49を正確に求めることができる。
【0197】
次に、データ格納部73が、ステップS49で取得した複数の差分レコード49のうちで、ステップS50で特定した最後の差分レコード49の操作後データのみをレプリカDB45に格納する(ステップS51)。
【0198】
次いで、生成部75が、記憶部62から主キー一覧80を削除する(ステップS52)。なお、前述のステップS48で記憶部62に主キー一覧80がないと判定された場合にも主キー一覧80を削除する。
【0199】
続いて、削除部74が、終点識別子よりも順序が先の通番を含む差分レコード49を各差分DB41、42の各々から削除する(ステップS53)。
図10の例では、削除部74は、第1の差分DB41における終点識別子である「5」よりも先の通番「1」~「4」を含む差分レコード49を削除する。また、削除部74は、第2の差分DB42における終点識別子である「8」よりも先の通番「5」~「7」を含む差分レコード49を削除する。
【0200】
次いで、判定部76が、管理者から情報処理プログラムの実行を終了する指示があったかを判定する(ステップS54)。ここで、指示がない場合(ステップS54:否定)にはステップS41に戻る。
【0201】
一方、指示があった場合(ステップS54:肯定)には処理を終える。
【0202】
以上により、レプリカDB作成サーバ24が行う情報処理方法の基本処理が終了する。
【0203】
上記した本実施形態によれば、
図18に示したように、第1及び第2のサーバ21、22ごとに第1及び第2の採番DB31、32を設ける。そして、本実施形態では各サーバ21、22ごとに第1及び第2の差分DB41、42を設けため、レスポンスタイムT
1を短くすることができる。
【0204】
しかも、
図20のステップS47において、データ格納部73が通番順に操作後データをレプリカDB45に格納する。これにより、操作が行われた順に操作後データがレプリカDB45に格納されるため、レプリカDB45の一貫性を保証できる。
【0205】
更に、同一レコード43aについての差分レコード49が各差分DB41、42にある場合には、ステップS51において、データ格納部73が、最後に操作された差分レコード49の操作後データのみをレプリカDB45に格納する。そのため、第1のサーバ21と第2のサーバ22の両方が同一のレコード43aを操作した場合であっても、レプリカDB45の一貫性を保つことができる。
【0206】
更に、操作部69がチェック期間CTごとにチェックポイントDB44を操作するため、チェック期間CTごとにステップS41でYESと判定されてステップS47が実行される。その結果、ステップS47において、データ格納部73が、チェック期間CTにおいて操作されたレコード43aの操作後データを一括してレプリカDB45に格納できる。
【0207】
(ハードウェア構成)
図22は、本実施形態に係る第1のサーバ21と第2のサーバ22の各々のハードウェア構成図である。
【0208】
図22に示すように、各サーバ21、22は、記憶装置21a、メモリ21b、プロセッサ21c、及び通信インターフェース21dを有する。これらの各部は、バス21gにより相互に接続される。
【0209】
このうち、記憶装置21aは、HDDやSSD等の不揮発性のストレージであって、本実施形態に係る各サーバ21、22用の情報処理プログラム100を記憶する。
【0210】
なお、情報処理プログラム100をコンピュータが読み取り可能な記録媒体90に記録させておき、プロセッサ21cに記録媒体90の情報処理プログラム100を読み取らせるようにしてもよい。
【0211】
そのような記録媒体90としては、例えばCD-ROM(Compact Disc - Read Only Memory)、DVD(Digital Versatile Disc)、及びUSB(Universal Serial Bus)メモリ等の物理的な可搬型記録媒体がある。また、フラッシュメモリ等の半導体メモリやハードディスクドライブを記録媒体90として使用してもよい。これらの記録媒体90は、物理的な形態を持たない搬送波のような一時的な媒体ではない。
【0212】
更に、公衆回線、インターネット、及びLAN(Local Area Network)等に接続された装置に情報処理プログラム100を記憶させてもよい。その場合は、プロセッサ21cがその情報処理プログラム100を読み出して実行すればよい。
【0213】
一方、メモリ21bは、DRAM(Dynamic Random Access Memory)等のようにデータを一時的に記憶するハードウェアであって、その上に情報処理プログラム100が展開される。
【0214】
プロセッサ21cは、CPU(Central Processing Unit)やGPU(Graphical Processing Unit)等のハードウェアであって、メモリ21bと協働して情報処理プログラム100を実行する。
【0215】
このようにメモリ21bとプロセッサ21cとが協働して情報処理プログラム100を実行することにより
図14の制御部52が実現される。その制御部52には、受付部53、操作部54、通番取得部55、及びデータ格納部56の各処理部が含まれる。
【0216】
更に、通信インターフェース21dは、各サーバ21、22をネットワーク26(
図5参照)に接続するためのNIC(Network Interface Card)等の通信インターフェースである。その通信インターフェース21dにより、
図14の通信部51が実現される。
【0217】
図23は、本実施形態に係るレプリカDB作成サーバ24のハードウェア構成図である。
【0218】
図23に示すように、レプリカDB作成サーバ24は、記憶装置24a、メモリ24b、プロセッサ24c、及び通信インターフェース24dを有する。これらの各部は、バス24gにより相互に接続される。
【0219】
このうち、記憶装置24aは、HDDやSSD等の不揮発性のストレージであって、本実施形態に係るレプリカDB作成サーバ24用の情報処理プログラム101を記憶する。
【0220】
なお、情報処理プログラム101をコンピュータが読み取り可能な記録媒体90に記録させておき、プロセッサ21cに記録媒体90の情報処理プログラム101を読み取らせるようにしてもよい。
【0221】
更に、公衆回線、インターネット、及びLAN等に接続された装置に情報処理プログラム100を記憶させてもよい。その場合は、プロセッサ24cがその情報処理プログラム101を読み出して実行すればよい。
【0222】
一方、メモリ24bは、DRAM等のようにデータを一時的に記憶するハードウェアであって、その上に情報処理プログラム101が展開される。
【0223】
プロセッサ24cは、レプリカDB作成サーバ24の各部を制御するCPUやGPU等のハードウェアである。また、プロセッサ24cは、メモリ24bと協働して情報処理プログラム101を実行する。
【0224】
このようにメモリ24bとプロセッサ24cとが協働して情報処理プログラム101を実行することにより
図15の制御部63が実現される。その制御部63には、データ取得部67、通番取得部68、操作部69、検知部70、特定部71、通番格納部72、データ格納部73、削除部74、生成部75、及び判定部76の各部が含まれる。
【0225】
また、
図15の記憶部62は、記憶装置24aとメモリ24bによって実現される。
【0226】
更に、通信インターフェース24dは、レプリカDB作成サーバ24をネットワーク26(
図5参照)に接続するためのNIC等の通信インターフェースである。その通信インターフェース24dにより、
図15の通信部61が実現される。
【0227】
以上説明した各実施形態に関し、更に以下の付記を開示する。
(付記1) 第1のデータベースの複数のレコードの各々を複数のサーバが操作した後の該レコードのデータと、前記操作が行われた順序を示す識別子とを対応付けて記憶した、複数の前記サーバごとに設けられた複数の第2のデータベースから、第1の期間に記憶された前記データを取得するデータ取得部と、
取得した前記データを、前記識別子が示す順に第3のデータベースに格納するデータ格納部と、
を有することを特徴とする情報処理装置。
(付記2) 前記データ格納部は、同一の前記レコードの前記データが複数の前記第2のデータベースに存在する場合に、同一の前記レコードの前記データのうちで、最後に操作された前記レコードの前記データのみを前記第3のデータベースに格納することを特徴とする付記1に記載の情報処理装置。
(付記3) 前記第2のデータベースは、前記識別子、前記データ、前記操作の内容、及び前記操作をする前の前記レコードのデータの各々を対応付けて記憶し、
前記データ格納部は、
取得した前記データと、該データに対応する前記操作の内容と、該データに対応する前記操作をする前の前記データと、複数の前記操作の間で許容される状態遷移とに基づいて、最後に操作された前記レコードを特定することを特徴とする付記2に記載の情報処理装置。
(付記4) 前記第1の期間に第4のデータベースが操作されたことを検知する検知部と、
前記検知部が前記操作を検知したときに、前記識別子を複数の前記サーバごとに記憶した複数の第5のデータベースを参照して、各々の前記第5のデータベースにおける最新の前記識別子に1を加えた前記識別子を特定する特定部と、
特定した前記識別子に対応した前記サーバに対応付けられた前記第2のデータベースに、該識別子を、前記第1の期間の終点を示す終点識別子として格納する識別子格納部と、
前記データ取得部が前記データを取得した後に、前記終点識別子よりも順序が先の前記識別子と対応付けられた前記データを、複数の前記第2のデータベースの各々から削除する削除部とを更に有し、
前記データ取得部は、
前記第2のデータベースにおいて前記終点識別子よりも順序が先の前記データを、前記第1の期間における前記データとして取得することを特徴とする付記1に記載の情報処理装置。
(付記5) 前記第1の期間ごとに前記第4のデータベースを操作する操作部を更に有することを特徴とする付記4に記載の情報処理装置。
(付記6) 情報処理装置と複数のサーバとを備えた情報処理システムであって、
複数の前記サーバの各々は、
第1のデータベースのレコードを操作する操作部と、
複数の前記サーバの各々に対応した複数の第2のデータベースのうちで自装置に対応する前記第2のデータベースに、前記操作をした後の前記レコードのデータを、前記操作を行った順序を示す識別子に対応付けて格納する第1のデータ格納部とを有し、
前記情報処理装置は、
複数の前記第2のデータベースの各々から、第1の期間に記憶された前記データを取得するデータ取得部と、
取得した前記データを、前記識別子が示す順に第3のデータベースに格納する第2のデータ格納部とを有する、
ことを特徴とする情報処理システム。
(付記7) 前記第2のデータ格納部は、同一の前記レコードにおける前記データが複数の前記第2のデータベースに存在する場合に、同一の前記レコードの前記データのうちで、最後に操作された前記レコードに対応する前記データのみを前記第3のデータベースに格納することを特徴とする付記6に記載の情報処理システム。
(付記8) 前記第1のデータ格納部は、前記第2のデータベースに、前記識別子、前記データ、前記操作の内容、及び前記操作をする前の前記レコードのデータの各々を対応付けて格納し、
前記第2のデータ格納部は、
取得した前記データと、該データに対応する前記操作の内容と、該データに対応する前記操作をする前の前記データと、複数の前記操作の間で許容される状態遷移とに基づいて、最後に操作された前記レコードを特定することを特徴とする付記7に記載の情報処理システム。
(付記9) コンピュータに、
第1のデータベースの複数のレコードの各々を複数のサーバが操作した後の該レコードのデータと、前記操作が行われた順序を示す識別子とを対応付けて記憶した、複数の前記サーバごとに設けられた複数の第2のデータベースから、第1の期間に記憶された前記データを取得し、
取得した前記データを、前記識別子が示す順に第3のデータベースに格納する、
処理を実行させるための情報処理プログラム。
(付記10) 前記コンピュータに、
同一の前記レコードにおける前記データが複数の前記第2のデータベースに存在する場合に、同一の前記レコードの前記データのうちで、最後に操作された前記レコードに対応する前記データのみを前記第3のデータベースに格納する、
処理を実行させるための付記9に記載の情報処理プログラム。
(付記11) 前記第2のデータベースは、前記識別子、前記データ、前記操作の内容、及び前記操作をする前の前記レコードのデータの各々を対応付けて記憶し、
前記コンピュータに、
取得した前記データと、該データに対応する前記操作の内容と、該データに対応する前記操作をする前の前記データと、複数の前記操作の間で許容される状態遷移とに基づいて、最後に操作された前記レコードを特定する、
処理を実行させるための付記10に記載の情報処理プログラム。
【符号の説明】
【0228】
1…システム、2…業務サーバ、3…ディスク装置、4…レプリカDB作成サーバ、5…クライアント端末、6…ネットワーク、7…業務アプリ、8…DB管理アプリ、20…情報処理システム、21…第1のサーバ、22…第2のサーバ、23…ディスク装置、24…レプリカDB作成サーバ、25…クライアント端末、26…ネットワーク、31…第1の採番DB、32…第2の採番DB、41…第1の差分DB、42…第2の差分DB、43…マスタDB、43a…レコード、44…チェックポイントDB、45…レプリカDB、49…差分レコード、51…通信部、52…制御部、53…受付部、54…操作部、55…通番取得部、56…データ格納部、61…通信部、62…記憶部、63…制御部、67…データ取得部、68…通番取得部、69…操作部、70…検知部、71…特定部、72…通番格納部、73…データ格納部、74…削除部、75…生成部、76…判定部、80…主キー一覧、CT…チェック期間。