JP2016081169A - 情報処理装置、データ処理システム、データ処理管理プログラム、及び、データ処理管理方法 - Google Patents

情報処理装置、データ処理システム、データ処理管理プログラム、及び、データ処理管理方法 Download PDF

Info

Publication number
JP2016081169A
JP2016081169A JP2014209829A JP2014209829A JP2016081169A JP 2016081169 A JP2016081169 A JP 2016081169A JP 2014209829 A JP2014209829 A JP 2014209829A JP 2014209829 A JP2014209829 A JP 2014209829A JP 2016081169 A JP2016081169 A JP 2016081169A
Authority
JP
Japan
Prior art keywords
processing
data processing
data
transaction
completion notice
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014209829A
Other languages
English (en)
Inventor
真澄 伊藤
Masumi Ito
真澄 伊藤
智弘 川崎
Toshihiro Kawasaki
智弘 川崎
俊男 武田
Toshio Takeda
俊男 武田
山崎 純一
Junichi Yamazaki
純一 山崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014209829A priority Critical patent/JP2016081169A/ja
Priority to US14/875,331 priority patent/US20160105508A1/en
Publication of JP2016081169A publication Critical patent/JP2016081169A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】複数のデータ処理装置間でデータがレプリケートされるシステムにおいて、他のデータ処理装置の処理実行完了を待たずに、他の処理を実行するデータ処理装置を提供する。【解決手段】検知部5は、第1の処理の完了を検知する。通知部6は、検知に応じて、自処理装置内または他のデータ処理装置2のデータ処理管理手段4それぞれに対し、第1の処理の処理開始時刻を含む第1の処理完了予告を通知する。判定部7は、他のデータ処理管理手段4それぞれからの第1の処理完了予告に対する応答内容に基づき、第1の処理の確定可否を判定する。送信部8は、第2の処理完了予告を受信した場合、第2の処理完了予告から特定される処理開始時刻より前に開始された処理それぞれが、第2の処理対象データを処理対象としているか否か、および、第2の処理完了予告を送付した処理手段3の性能情報に基づき、第2の処理完了予告に対する応答を生成し送信する。【選択図】図4

Description

本発明は、情報処理装置、データ処理システム、データ処理管理プログラム、及び、データ処理管理方法に関する。
東日本大震災以降、災害時の業務継続要件から、Wide Area Network(WAN)を経由してデータをレプリケーションする技術(以下、WANレプリケーション技術と記す)が重要性を増している。WANレプリケーション技術について、データセンター(DC)での運用形態には、例えば「Active/Mirror」型と「Active/Active」型がある。このうち、DC資源の有効活用の観点から、マルチマスタで多拠点間をレプリケーションする「Active/Active」型へとトレンドが移りつつある。
WANレプリケーション技術は、例えばDataBase(DB)サーバ間、キャッシュサーバ間といった同種製品内に閉じて機能が提供されることが多い。また、DBサーバとキャッシュサーバのどちらか一方がマスタとなり他方がスレーブとなる一方向レプリケーションが行われる場合が多い。
しかし、Online Transaction Processing(OLTP)処理結果のマスタとしてのキャッシュサーバと、Online Analytical Processing(OLAP)等の目的で利用される過去からの蓄積データのマスタであるDBサーバとでは、マスタデータとしての特性が異なっている。このため、DBアプリケーションとキャッシュアプリケーションの両者を備えたシステムの使用者からは、キャッシュサーバとDBサーバの双方をマスタとして扱いたいという要望が挙がっている。この場合、キャッシュサーバとDBサーバ間は双方向レプリケーションとなる。
同一のDC内、及び異なるDC間で、データの同期を取るための手順として、トランザクションをDBサーバとキャッシュサーバそれぞれに対して実行した後、コンフリクトが存在しないかを検証してから確定するという手順が考えられる。
特開平5−197604号公報 特開平9−16453号公報
しかしながら、DBサーバとキャッシュサーバは、処理速度の差が大きい。例えば、DBサーバの処理速度はミリ秒オーダーであり、キャッシュサーバの処理速度はマイクロ秒オーダーである。キャッシュサーバの処理が終了した時点において、DBサーバの処理が実行中である場合、キャッシュサーバは、DBサーバの処理が終了するのを待ってからコンフリクトが存在しないかを確認し、その後に処理の確定を行うこととなる。このため、処理速度の速いキャッシュサーバの処理性能が、処理速度の遅いDBサーバの処理性能に引きずられることとなる。
そこで、1つの側面では、本発明は、複数のデータ処理装置間で連動してデータを更新するシステムにおいて、他のデータ処理装置における処理実行完了を待たずに他の処理を実行するデータ処理装置を提供することを目的とする。
一態様による情報処理装置は、データ処理手段と、データ処理手段に対応づけられて動作するデータ処理管理手段を有するデータ処理装置を複数備え、各データ処理装置のデータ処理手段が連動してデータの更新を行うデータ処理システムにおける、第1のデータ処理装置である。データ処理管理手段は、検知部、通知部、判定部、及び送信部を含む。検知部は、対応するデータ処理手段への第1の処理要求に対する第1の処理の完了を検知する。通知部は、検知部による検知に応じて、第1のデータ処理装置内または他のデータ処理装置の他のデータ処理管理手段それぞれに対し、第1の処理の処理開始時刻、および、処理対象データに関する情報を含む第1の処理完了予告を通知する。判定部は、他のデータ処理管理手段それぞれからの第1の処理完了予告に対する応答内容に基づき、第1の処理の確定可否を判定する。送信部は、他のデータ処理管理手段のいずれかから第2の処理完了予告を受信した場合は、対応するデータ処理手段において、第2の処理完了予告から特定される処理開始時刻より前に対応するデータ処理手段で開始された処理それぞれが、第2の処理完了予告から特定される処理対象データを処理対象としているか否か、および、第1のデータ処理装置が有する第2の処理完了予告を送付したデータ処理管理手段に対応する処理手段の性能情報に基づき、第2の処理完了予告に対する応答を生成し送信する。
一側面によれば、複数のデータ処理装置間で連動してデータを更新するシステムにおいて、他のデータ処理装置における処理実行完了を待たずに他の処理を実行するデータ処理装置を提供することができる。
DC間でキャッシュ層のみをWANレプリケーションするモデルの処理の流れの一例を示す。 DC間でキャッシュ層とDB層をWANレプリケーションするモデルの処理の流れの一例を示す。 比較例3の処理の流れの一例を示す。 実施形態に係るデータ処理システムの構成の一例を示す。 実施形態に係るデータ処理システムの構成と処理の流れの一例(その1)を示す。 実施形態に係るデータ処理システムの構成と処理の流れの一例(その2)を示す。 実施形態に係るデータ処理システムの構成と処理の流れの一例(その3)を示す。 実施形態に係るデータ処理システムの構成と処理の流れの一例(その4)を示す。 RPA間の処理のやり取りの一例を時系列で示す。 第1のパターンの処理の流れを示す。 第2のパターンの処理の流れを示す。 第3のパターンの処理の流れを示す。 第4のパターンの処理の流れを示す。 第1−1のパターンの処理の流れを示す。 第1−2のパターンの処理の流れを示す。 実施形態の処理の流れの一例を示す。 実施形態に係るデータ処理装置の構成の一例を示す。 トランザクション管理情報の構成の一例を示す。 性能情報の構成の一例を示す。 予告管理情報の構成の一例を示す。 実施形態に係るデータ処理装置の第1のトランザクションについての処理の詳細を図解したフローチャートの一例(その1)である。 実施形態に係るデータ処理装置の第1のトランザクションについての処理の詳細を図解したフローチャートの一例(その2)である。 実施形態に係るデータ処理装置の第2のトランザクションについての処理の詳細を図解したフローチャートの一例(その1)である。 実施形態に係るデータ処理装置の第2のトランザクションについての処理の詳細を図解したフローチャートの一例(その2)である。 制御部によるアクセス制御の処理の詳細を図解したフローチャートの一例である。 データ処理装置のハードウェア構成の一例を示す。 実施形態に係るデータ処理システムの構成の一例を示す
DBサーバとキャッシュサーバの双方をマスタとし、Active/Activeで運用されるデータセンタ間をレプリケーションする手法として、以下の比較例1と比較例2の技術がある。
比較例1は、DC間でキャッシュ層のみをWANレプリケーションするモデルである。図1は、DC間でキャッシュ層のみをWANレプリケーションするモデルの処理の流れの一例を示す。図1では、キャッシュサーバ(A〜C)間でのレプリケーションが行われているため、キャッシュサーバ(A〜C)のうちの何れかのデータが更新された場合、自動的にその他のキャッシュサーバのデータも更新される。その結果、常にキャッシュサーバ(A〜C)間では同期が取れた状態となる。
図1においてS11〜S16は、アプリケーションサーバ(以下、APサーバと記す)BからキャッシュサーバAのデータに対する更新が発生した場合の、処理の流れを示している。APサーバBによりキャッシュサーバAのデータが更新される(S11)と、キャッシュサーバ(A〜C)の間でレプリケーションによる同期が行われる(S12、S13)。その後、所定のタイミングで、各DC内のキャッシュサーバとDBサーバ間でデータの同期処理が行われる(S14〜S16)。S21〜S26は、APサーバAからDBサーバAのデータに対する更新が発生した場合の、処理の流れを示している。APサーバAによりDBサーバAのデータが更新される(S21)と、所定のタイミングでDBサーバAとキャッシュサーバAとの間でデータの同期処理が行われる(S22)。そしてキャッシュサーバ(A〜C)の間でレプリケーションによる同期が行われる(S23、S24)。その後、所定のタイミングで、各DC内のキャッシュサーバとDBサーバ間でデータの同期処理が行われる(S25、S26)。
図1において、DBサーバのデータは、そのDBサーバが属するDC内の何れかのサーバから更新され、他のDCに属するサーバから直接更新されることはない。この場合DC間では、キャッシュサーバ間のトランザクションの整合性は保障されるが、キャッシュサーバとDBサーバとの間や、DBサーバ間のデータの整合性は保障されない。
比較例2は、DC間でキャッシュ層とDB層をそれぞれWANレプリケーションするモデルである。図2は、DC間でキャッシュ層とDB層をWANレプリケーションするモデルの処理の流れの一例を示す。図2では、キャッシュサーバ(A〜C)間、DBサーバ(A〜C)間でそれぞれレプリケーションが行われている。そのため、キャッシュサーバ(A〜C)のうちの何れかのデータが更新された場合、自動的にその他のキャッシュサーバのデータも更新され、常にキャッシュサーバ(A〜C)間では同期が取れた状態となる。また、DBサーバ(A〜C)のうちの何れかのデータが更新された場合、自動的にその他のDBサーバのデータも更新され、常にDBサーバ(A〜C)間では同期が取れた状態となる。
図2においてS31〜S36は、APサーバBからキャッシュサーバAのデータに対する更新が発生した場合の、処理の流れを示している。APサーバBによりキャッシュサーバAのデータが更新される(S31)と、キャッシュサーバA〜Cの間でレプリケーションによる同期が行われる(S32、S33)。その後、所定のタイミングで、キャッシュサーバAとDBサーバAの間でデータの同期処理が行われ(S34)、DBサーバ(A〜C)の間でレプリケーションによる同期が行われる(S35、S36)。S41〜S46は、APサーバAからDBサーバAのデータに対する更新が発生した場合の、処理の流れを示している。APサーバAによりDBサーバAのデータが更新される(S41)と、DBサーバ(A〜C)の間でレプリケーションによる同期が行われる(S42、S43)。その後、所定のタイミングで、キャッシュサーバAとDBサーバAの間でデータの同期処理が行われ(S44)、キャッシュサーバA〜Cの間でレプリケーションによる同期が行われる(S45、S46)。
図2の例の場合、DC間では、キャッシュサーバ間、DBサーバ間のトランザクションの整合性は保障されるが、キャッシュサーバとDBサーバとの間のデータ整合性は保障されない。
以上のように、比較例1と比較例2のいずれの場合も、キャッシュサーバとDBサーバとの間のデータの整合性は保証されない。このため比較例1と比較例2の技術では、キャッシュサーバとDBサーバの両者をマスタとした場合、同じデータにキャッシュサーバ側からアクセスする場合とDBサーバ側からアクセスする場合で結果が異なってしまうことがある。
キャッシュサーバとDBサーバの間のデータの整合性を保証するレプリケーション技術として、分散トランザクションを使ったレプリケーションを行う比較例3の技術がある。
比較例3では、トランザクションの処理がDBサーバとキャッシュサーバのそれぞれに対して実行された後、コンフリクトが存在しないかの検証が行われてからトランザクションが確定される。これにより、キャッシュサーバとDBサーバの間のデータの整合性が保証される。
図3は、比較例3の処理の流れの一例を示す。図3において、APサーバ1aとAPサーバ1bは、それぞれ、キャッシュサーバとDBサーバに対して、トランザクションの処理を実行している。APサーバ1aは、キャッシュサーバに対して先に処理を実行し、その後DBサーバに対して処理を実行している。一方、APサーバ1bは、DBサーバに対して先に処理を実行し、その後キャッシュサーバに対して処理を実行している。また、APサーバ1aと、APサーバ1bのトランザクションで扱われるリソースはR1とR2であり、同じリソースである。APサーバ1a、1bはともに、キャッシュサーバとDBサーバの両方に対するトランザクションの処理が終了してから、処理の確定(コミット)が可能か否かを問い合わせる処理完了予告を送信している。処理の確定が可能か否かは、2つのトランザクション間でコンフリクトが発生しているか否か、及び、コンフリクトが発生しているトランザクションのうち先に処理が開始されたトランザクションか否かに基づいて決定される。
図3に示すように、APサーバ1aは、キャッシュサーバに対して処理完了予告を送信すると、その応答として、コミットが可能であることを示す応答を受信する。これは、キャッシュサーバでは、APサーバ1aの処理がAPサーバ1bの処理よりも先に実行されているためである。同様に、APサーバ1bは、DBサーバに対して処理完了予告を送信すると、その応答として、コミットが可能であることを示す応答を受信する。一方、APサーバ1aは、DBサーバに対して処理完了予告を送信すると、その応答として、コミットが不可能であることを示す応答を受信する。これは、DBサーバでは、APサーバ1bの処理がAPサーバ1aの処理よりも先に実行されているからである。同様にAPサーバ1bは、キャッシュサーバに対して処理完了予告を送信すると、その応答として、コミットが不可能であることを示す応答を受信する。
比較例3では、キャッシュサーバ及びDBサーバの両方から処理の確定が可能であることを示す応答を受信した場合に、両方のサーバの処理を確定することで、データの整合性を保証している。しかしながら図3のように、APサーバ1a、1bともに、キャッシュサーバ及びDBサーバに対する処理完了予告のうち、何れかのサーバから応答として、処理の確定が不可能であることを示す応答を受信する場合がある。この場合、APサーバ1a、1bともに、トランザクションのロールバックを実行することとなる。
また、図3では、APサーバ1a、1bは、キャッシュサーバとDBサーバの両方に対する処理が終了してから、処理完了予告を送信している。よって、キャッシュサーバのトランザクションのコンフリクト検出が、DBサーバの処理性能に引きずられて遅延してしまう。これは、システムをスケールアウトしてもインメモリキャッシュのスループットが伸びない原因となる。また、シーケンシャルなトランザクション制御の結果、両APサーバ1a、1bのトランザクションのロールバックが発生しやすい状況となり、処理確定のために何度もロールバックが発生する可能性がある。さらに、APサーバからの各トランザクション命令(処理開始、処理完了予告、コミットまたはロールバック)が同期的であるため、レプリケーション対象となるデータ処理装置の数の増加に従って、トランザクションの完了までにかかる合計時間が線形に増加する。
実施形態に係るデータ処理システムの構成について説明する。図4は、実施形態に係るデータ処理システムの構成の一例を示す。
図4において、データ処理システム1は、データ処理手段(3a〜3c)と、データ処理手段に対応づけられて動作するデータ処理管理手段(4a〜4c)を有するデータ処理装置(2a〜2c)を複数備える。そして、各データ処理装置(2a〜2c)のデータ処理手段(3a〜3c)は連動してデータの更新を行う。図4の説明においては、データ処理システム1に含まれる複数のデータ処理装置(2a〜2c)のうち、データ処理装置2aを第1のデータ処理装置として着目し説明を行うが、データ処理装置2b、2cの構成についてもデータ処理装置2aと同様である。また、データ処理システム1に含まれるデータ処理装置の数は、3つに限定されない。また、データ処理システムは、複数のデータセンタを含み、各々のデータセンタに複数のデータ処理装置を含む構成としてもよい。
第1のデータ処理装置2aのデータ処理管理手段4aは、検知部5、通知部6、判定部7、送信部8、確定通知送信部9、及び制御部10を含む。
検知部5は、対応するデータ処理手段3aへの第1の処理要求に対する第1の処理の完了を検知する。
通知部6は、検知部5による検知に応じて、第1のデータ処理装置2a内または他のデータ処理装置(2b〜2c)の他のデータ処理管理手段(4b〜4c)それぞれに対し、第1の処理の処理開始時刻、および、処理対象データに関する情報を含む第1の処理完了予告を通知する。
判定部7は、他のデータ処理管理手段(4b〜4c)それぞれからの第1の処理完了予告に対する応答内容に基づき、第1の処理の確定可否を判定する。
送信部8は、他のデータ処理管理手段(4b〜4c)のいずれかから第2の処理完了予告を受信した場合、以下の処理を実行する。すなわち送信部8は、対応するデータ処理手段3aにおいて、第2の処理完了予告から特定される処理開始時刻より前に対応するデータ処理手段3aで開始された処理それぞれが、第2の処理完了予告から特定される処理対象データを処理対象としているか否か、および、第1のデータ処理装置2aが有する第2の処理完了予告を送付したデータ処理管理手段に対応する処理手段の性能情報に基づき、第2の処理完了予告に対する応答を生成し送信する。
これにより、実施形態では、複数のデータ処理装置間でデータがレプリケートされるシステムにおいて、最初に処理が開始された処理を確定し、かつ、処理性能に応じた応答が行われる。そのため、他のデータ処理装置のデータ処理手段における処理実行完了を待たずに、他の処理を実行することができる。これにより、処理の確定可否の判定のタイミングが、他のデータ処理装置の処理性能に引きずられることを防ぐことができる。その結果、各データ処理装置及びデータ処理システム全体のトランザクションに対する処理性能を向上させることができる。
また、通知部6は、第1の処理完了予告を通知する際に、マルチキャスト通信を利用する。マルチキャスト通信を利用することで、複数のデータ処理装置を同時に管理して処理完了予告の送信タイミングを合わせることができる。
また、判定部7はさらに、他のデータ処理管理手段(4b〜4c)より、第1の応答を受信した場合、第1の処理の処理対象データを第1の処理の開始前の状態に戻すように対応するデータ処理手段3aを制御する。第1の応答とはすなわち、第1の処理完了予告から特定される第1の処理の処理開始時刻より前に、他のデータ処理装置(2b〜2c)において開始された処理のいずれかが、第1の処理完了予告から特定される処理対象データを処理対象としていることを示す通知である。これにより、データ処理装置間でデータの不整合が生じることを防ぐことができる。
また、判定部7はさらに、他のデータ処理管理手段(4b〜4c)より、第2の応答を受信した場合、処理対象データを第1の処理の開始前の状態に戻し、第3の処理を実行した後に、第1の処理を再実行するように対応するデータ処理手段3aを制御する。ここで、第3の処理は、第2の処理の処理対象データとは異なるデータを処理対象とする処理である。また、第2の応答は、第1の処理完了予告から特定される第1の処理の処理開始時刻より前に、他のデータ処理装置(2b〜2c)において開始された処理のいずれかが、第1の処理完了予告から特定される処理対象データを処理対象としていることを示す。さらに第2の応答は、対応するデータ処理手段3aの性能が、他のデータ処理装置(2b〜2c)内のデータ処理手段の性能以上であることを示す。
処理性能が低い他のデータ処理手段により第2の処理が行われている間に、第2の処理の処理対象データとは異なるデータを扱う第3の処理を、対応するデータ処理手段3aが実行することで、処理効率を高めることができる。また、これにより、ロールバックが発生する可能性を低減できる。
確定通知送信部9は、判定部7により第1の処理が確定可能であると判定された場合、第1の処理の確定処理を行うようにデータ処理手段を制御し、他のデータ処理管理手段(4b〜4c)に対して、第1の処理が確定されたことを示す確定通知を送信する。
制御部10は、対応するデータ処理手段3aにおいて、第2の処理完了予告から特定される処理開始時刻より前に開始された処理のそれぞれが、第2の処理完了予告から特定される処理対象データを処理対象としていない場合、以下の処理を行う。すなわち制御部10は、第2の処理完了予告に対する応答を送信した後に第2の処理完了予告から特定される処理対象データに対するアクセス要求が発生すると、第2の処理に対応する確定通知を受信して第2の処理の確定処理を実行した後にアクセスするように対応するデータ処理手段3aを制御する。
制御部10による制御により、第2の処理完了予告に対する応答を送信してから、第2の処理の確定処理を実行するまでの間に、第2の処理完了予告から特定される処理対象データに対する他のアクセスを防ぐことができる。これにより、データ処理装置間でデータの不整合が生じることを防ぐことができる。
実施形態に係るデータ処理システムの全体の構成と処理の流れについて説明する。図5〜図8は、実施形態に係るデータ処理システムの構成と処理の流れの一例(その1〜その4)を示す。図5〜図8は、データ処理システムの処理の変化を時系列順に示している。
実施形態において、データ処理装置でトランザクションの処理が終了した場合、他のデータ処理装置に対して確定処理(コミット)が実行可能であるかの問い合わせが行われ、その応答結果に応じて、コミットまたはロールバックが行われる。以下の説明では、コミットが実行可能であるかの問い合わせを、処理完了予告と記す。
図5において、データ処理システムは、複数のDC(DC51a〜51c)を含む。各DC間は通信ネットワークを介して接続される。各DCは、APサーバ52(a〜f)、DBサーバ53(a〜c)、キャッシュサーバ54(a〜c)を含む。APサーバ52、DBサーバ53、キャッシュサーバ54は、互いに通信ネットワークまたはバス等を介して接続される。
データ処理システムにおいて、DBサーバ53、及びキャッシュサーバ54では、複数のDC間でレプリケーションが行われる。以下の説明では、レプリケーション対象となるデータ処理装置をレプリケーションポイント(RP)と記す場合がある。RPは、具体的にはDBサーバ53及びキャッシュサーバ54である。各RPには、マルチキャストを送受信する常駐エージェントであるソフトウェア(RPA)55(a〜f)が動作する。マルチキャストでは、例えば高信頼User Datagram Protocol(UDP)(RUDP)等の所定のプロトコルが使用される。高信頼UDPは、到達パケットの順序組み立て、再送要求、重複パケット破棄、及びACKnowledgement(ACK)応答に対応する。RPは、データ処理装置2の一例である。RPAは、データ処理管理手段4の一例である。
RPはそれぞれ非同期にトランザクションを開始する。図5において、RPA55aはリソースR1に対するトランザクションTx(R1)を実行している。ここで図面及び以下の説明では、RPで実行されるトランザクションを「Txs(処理対象データ)」(sは正の整数)の形式で記載する場合がある。処理対象データは、対応するトランザクションで更新またはアクセスされるデータを示す。リソースR1に対するトランザクションは、Tx1(R1)と記載される。図5においては、さらにRPA55c、RPA55e、RPA55fにおいてそれぞれ、Tx2(R2)、Tx3(R3)、Tx4(R4)が実行されている。
トランザクションの処理が終了すると、RPはトランザクションのコミットの実行前に、RPA経由で処理完了予告をマルチキャストする。図6では、Tx1(R1)のトランザクションの処理が終了し、RPA55aは、Tx1(R1)のコミット(またはロールバック)が行われる直前に、処理完了予告を他のRPA(55b〜55f)にマルチキャストしている。
処理完了予告を受信した各RPAは、所定の条件に応じて、処理完了予告に対する応答を生成し、処理完了予告の送信元のRPAに送信する。後ほど詳しく説明するが、処理完了予告に対する応答は、OK応答、PENDING応答、RETRY応答の3種類が存在する。判定のための所定の条件についても後ほど説明する。図7では、処理完了予告を受信したRPA(55b〜55f)は、処理完了予告に対する応答を生成しRPA55aに送信している。図7の例では、コミットが可能であることを示すOK応答が生成されて送信される。
次に処理完了予告の送信元のRPAは、処理完了予告に対する応答を受信し、その応答結果に応じて、トランザクションをコミットするかロールバックするかを決定する。そしてこの決定に応じてRPAは、トランザクションのコミットまたはロールバックを実行するように制御する。さらにRPAは、ロールバックを実行する場合には、ロールバック後にトランザクションのリトライを即時実施するか遅延させるかを応答結果に応じて決定する。この決定に応じてRPAは、ロールバック後の処理を制御する。図7では、処理完了予告に対するOK応答を受信したRPA55aは、Tx1(R1)をコミットすると決定し、Tx1(R1)のコミットを実行するように制御している。
トランザクションのコミットまたはロールバックの完了後、RPAは、コミット通知またはロールバック通知を他のRPAにマルチキャストする。コミット通知を受信するとRPAは、コミット通知の送信元と整合性がとれるように、データを更新するように制御する。図8において、RPA55aは、Tx1(R1)のコミットが完了すると、コミット通知を各RPA(55b〜55f)に送信している。そして、コミット通知を受信したRPA(55b〜55f)は、Tx1(R1)に対応するデータの更新を行っている。
図9は、図5〜図8のRPA間の処理のやり取りを時系列で示す。
ここで、図9及び以下で説明する図10〜図15で用いられる記号の意味を説明する。Rr(rは正の整数)は、リソースRrに対するアクセスが発生したことを示す。TxB、TxP、TxC、TxR、TxS、TxRmは、それぞれ、トランザクションの開始時点、処理完了予告を送信する時点、コミットの実行時点、ロールバックの実行時点、処理の一時停止時点、処理の再開時点を示す。
図9において、RPA1は、Tx1において、リソースR1へのアクセスを行い、TxPで示される時点においてトランザクションの処理が終了すると、処理完了予告をマルチキャストしている。処理完了予告を受信した各RPA(55b〜55f)は、応答を生成してRPA55aに送信している。RPA55aは応答を受信するとトランザクションのコミットを行い、コミット通知を他のRPA(55b〜55f)に送信している。
上記の図5〜図9では、RPA55aのトランザクションTx1が、他のRPA(55b〜55f)で実行されているどのトランザクション(Tx2〜Tx5)よりも先に開始されている。この場合、RPA55aからの処理完了予告に対する応答として、各RPA(55b〜55f)は、コミットの実行が可能であることを示すOK応答を生成し、RPA55aに送信する。しかしながら、例えば、Tx1と同じリソースR1にアクセスするTx5が、Tx1よりも前に開始されている場合には、RPA55cは、コミットの実行が不可能であることを示すRETRY応答またはPENDING応答を生成して送信することとなる。そしてこの応答を受信したRPA55aは、Tx1のロールバックを実行することとなる。このように実施形態では、処理の流れは、トランザクションの処理対象のリソース、及びトランザクションの開始時刻に応じて変化する。さらに、実施形態における処理の流れは、各RPAが稼動するデータ処理装置のトランザクション処理性能に応じても変化する。
以下、実施形態のデータ処理システムにおけるトランザクションの処理の流れのパターンを説明する。処理の流れのパターンは、第1〜第4の4つのパターンが存在する。ここでは処理完了予告を送信するRPAと、その処理完了予告を受信するRPAの2つのRPAの関係に着目し、図10〜図13を参照して処理の流れのパターンを説明する。
第1のパターンは、着目する2つのRPAで実行されるトランザクション内で扱われるリソースが異なる場合の処理のパターンである。扱われるリソースが異なるため、2つのトランザクション間でコンフリクトは発生しない。このため双方のトランザクションは、他のトランザクションの処理に関係なくコミットが可能である。図10は、第1のパターンの処理の流れを示す。
図10において、RPA1は処理完了予告を先に送信するRPAであり、RPA2は処理完了予告を受信するRPAである。RPA1で実行されるトランザクションTx1では、リソースR1、R2に対するアクセスが発生し、RPA2で実行されるトランザクションTx2では、リソースR3に対するアクセスが発生している。従って、Tx1とTx2で扱うリソースは異なっている。この場合、RPA1から処理完了予告を受信したRPA2は、コミットの実行が可能であることを示すOK応答を生成しRPA1に送信する。OK応答を受信するとRPA1は、Tx1のコミットを実行し、コミット通知をRPA2に送信する。RPA2はコミット通知を受信すると、Tx1の内容を反映する。
第2〜第4のパターンは、いずれも、2つのトランザクション内で扱われるリソースのうちで共通するものが存在する場合の処理のパターンである。このうち第2のパターンは、処理完了予告を送信するトランザクションが先行トランザクションである場合の処理のパターンである。本実施形態では、着目する2つのトランザクションのうち、処理開始時刻が前であるトランザクションを先行トランザクションと記し、処理開始時刻が後であるトランザクションを後行トランザクションと記す。
図11は、第2のパターンの処理の流れを示す。図11において、RPA1で実行されるトランザクションTx1では、リソースR1、R2に対するアクセスが発生し、RPA2で実行されるトランザクションTx2では、リソースR2に対するアクセスが発生している。従って、Tx1とTx2で扱うリソースのうち、R2は共通している。また、Tx1の開始時刻はTx2よりも前である。
第2のパターンでは、2つのトランザクションで扱われるリソースに同じものが存在するため、Tx1とTx2の間でコンフリクトが発生する。この場合、先行トランザクションであるTx1に対して優先的にコミットが実行され、後行トランザクションであるTx2に対してはロールバックが実行される。
RPA2はRPA1から処理完了予告を受信すると、Tx1のコミットの実行が可能であることを示すOK応答を作成して、RPA1に送信するとともに、Tx2をロールバックする。OK応答を送信した時点からTx1のコミット完了までの時間は短時間で済むと考えられるため、RPA2は、RPA1のコミットが完了したことを示すコミット通知を待ってから、Tx2を再度実行する。
第2のパターンでは、具体的には、RPA1から処理完了予告を受信したRPA2は、OK応答を生成しRPA1に送信するとともに、Tx2をロールバックする。Tx2のロールバック後、RPA2は、Tx1のコミット通知を受信するまでTx2に関する処理を停止する。一方RPA1は、OK応答を受信するとTx1のコミットを実行し、コミット通知をRPA2に送信する。RPA2はコミット通知を受信すると、Tx1の内容を反映し、Tx2を再度実行する。
第3と第4のパターンは、いずれも、2つのトランザクション内で扱われるリソースのうちで共通するものが存在し、且つ、処理完了予告を送信するトランザクションが後行トランザクションである場合の処理のパターンである。このうち第3のパターンは、後行トランザクションを実行するデータ処理装置のトランザクション処理性能が、先行トランザクションを実行するデータ処理装置のトランザクション処理性能以下である場合の処理のパターンである。
図12は、第3のパターンの処理の流れを示す。図12において、RPA1で実行されるトランザクションTx1では、リソースR1、R2に対するアクセスが発生し、RPA2で実行されるトランザクションTx2では、リソースR2、R3、R4に対するアクセスが発生している。従って、Tx1とTx2で扱うリソースのうち、R2は共通している。また、Tx1の開始時刻はTx2よりも後である。さらに、RPA1が動作するデータ処理装置のトランザクション処理性能はRPA2が動作するデータ処理装置のトランザクション処理性能以下である。
第3のパターンでは、第2のパターンと同様に、2つのトランザクションで扱われるリソースに同じものが存在するため、Tx1とTx2の間でコンフリクトが発生する。この場合、後行トランザクションであるTx1に対してはロールバックが実行され、先行トランザクションであるTx2に対して優先的にコミットが実行される。
RPA2はRPA1から処理完了予告を受信すると、Tx1の即時リトライを指示するRETRY応答を作成して、RPA1に送信する。ここで即時リトライを指示する理由は、RPA1のトランザクション処理性能はRPA2と同等以下であるため、RPA1のトランザクションのリトライで再度コンフリクトする可能性が低いからである。これはすなわち、RPA1がリトライを行うときには、コンフリクトしているRPA2のトランザクションが既に完了していることが期待できるためである。これにより、再度Tx1を実行した場合に、再びコンフリクトが発生する可能性を低減することができる。尚、RETRY応答は、Tx1のコミットが不可能であることを示すものであるともいえる。
RETRY応答を受け取ったRPA1は、Tx1をロールバックする。尚、RPA2のトランザクション処理性能はRPA1のトランザクション処理性能よりも高いため、RETRY応答を受信した時点からTx2のコミット完了までの時間は、RPA1の他のトランザクション処理時間と比較して短時間で済むと考えられる。そこでRPA1は、RPA2のコミットが完了したことを示すコミット通知を待ってから、Tx1を再度実行する。
第3のパターンでは、具体的には、RPA1から処理完了予告を受信したRPA2は、Tx2の処理を継続しつつ、RETRY応答を生成しRPA1に送信する。RETRY応答を受信するとRPA1は、Tx1のロールバックを実行し、RPA2からTx2のコミット通知を受信するまでTx1に関する処理を停止する。RPA2はTx2の処理が完了次第、処理完了予告をRPA1に送信する。そしてRPA2はRPA1からOK応答を受信すると、Tx2のコミットを実行し、コミット通知をRPA1に送信する。RPA1はコミット通知を受信すると、Tx2の内容を反映し、その後、Tx1を再度実行しなおす。
第4のパターンは、上述したように、2つのトランザクション内で扱われるリソースのうちで共通するものが存在し、且つ、処理完了予告を送信するトランザクションが後行トランザクションである場合の処理のパターンである。そしてさらに第4のパターンは、後行トランザクションを実行するデータ処理装置のトランザクション処理性能が、先行トランザクションを実行するデータ処理装置のトランザクション処理性能より高い場合の処理のパターンである。
図13は、第4のパターンの処理の流れを示す。図13において、RPA1で実行されるトランザクションTx1では、リソースR1、R2に対するアクセスが発生し、RPA2で実行されるトランザクションTx2では、リソースR2、R3、R4に対するアクセスが発生している。従って、Tx1とTx2で扱うリソースのうち、R2は共通している。また、Tx1の開始時刻はTx2よりも後である。さらに、RPA1が動作するデータ処理装置のトランザクション処理性能はRPA2が動作するデータ処理装置のトランザクション処理性能より高い。
第4のパターンでは、第3のパターンと同様に、2つのトランザクションで扱われるリソースに同じものが存在するため、Tx1とTx2の間でコンフリクトが発生する。この場合、後行トランザクションであるTx1に対してはロールバックが実行され、先行トランザクションであるTx2に対して優先的にコミットが実行される。
RPA2はRPA1から処理完了予告を受信すると、PENDING応答を作成して、RPA1に送信する。PENDING応答は、Tx1の処理をペンディングし、他のリソースを扱うトランザクションを実行した後に、Tx1のリトライを行うように指示する内容を含む応答である。ここでTx1の処理のペンディングを指示する理由は、RPA1のトランザクション処理性能はRPA2より高いため、Tx1を即時リトライしてもTx2が完了していない可能性が高く、コンフリクトが発生し続ける可能性が高いと考えられるからである。尚、PENDING応答は、Tx1のコミットが不可能であることを示すものであるともいえる。
PENDING応答を受け取ったRPA1は、Tx1をロールバックする。ここで、RPA2はRPA1よりもトランザクション処理性能が低く、Tx2のコミット完了までの時間は、RPA1の他のトランザクション処理時間と比較して、長い時間がかかる可能性が高いと考えられる。Tx2が完了するまでにかかる時間で、処理可能な他のトランザクションを処理することで、RPA1の処理効率を高めることができる。そこでRPA1は、Tx1のロールバックを実行後、Tx1の処理をペンディングし、他のリソースを扱うトランザクションを実行する。その後、RPA1は、RPA2のコミットが完了したことを示すコミット通知を待ってから、Tx1を再度実行する。
第4のパターンでは、具体的には、RPA1から処理完了予告を受信したRPA2は、Tx2の処理を継続しつつ、PENDING応答を生成しRPA1に送信する。このPENDING応答を受信するとRPA1は、Tx1のロールバックを実行し、RPA2からTx2のコミット通知を受信するまでTx1に関する処理を停止する。Tx1をロールバックした後、RPA1はTx2で扱われたリソースを扱わないトランザクションTx3を先に処理する。一方、RPA2はTx2の処理が終了し次第、処理完了予告をRPA1に送信する。そしてRPA2は、処理完了予告に対するOK応答をRPA1から受信すると、Tx2のコミットを実行し、コミット通知をRPA1に送信する。RPA1はコミット通知を受信すると、Tx2の内容を反映し、Tx1を再度実行しなおす。
第1のパターンは、さらに、OK応答を送信したトランザクションにおいて、応答送信後に扱われるリソースに応じて、第1−1のパターンと、第1−2のパターンの2つに分類される。
OK応答を送信したトランザクションTx2においては、OK応答送信後に、処理完了予告の送信元のトランザクションTx1で扱われたリソースに対してアクセスが発生する可能性がある。このようなアクセスが、Tx1のコミット通知の受信後のTx1の内容の反映前に実行されると、不整合が生じる可能性がある。よって実施形態では、このようなアクセスが発生した場合と、そうでない場合とで処理を分ける。以下の説明では、コミット通知とロールバック通知をまとめて処理確定通知と記す場合がある。
第1−1のパターンは、Tx1に対するOK応答の生成時からTx1の処理確定通知を受信する前までの間に、Tx2において、Tx1で扱われたリソースと同じリソースに対するアクセスが発生しない場合の処理のパターンである。ここで以下の説明では、処理確定通知を受信する前とは、処理確定通知がコミット通知の場合には、厳密には、受信した処理確定通知に基づいたトランザクションの反映処理が実行される前までを指す。
図14は、第1−1のパターンの処理の流れを示す。図14において、RPA1で実行されるトランザクションTx1では、リソースR1、R2に対するアクセスが発生している。そしてRPA2で実行されるトランザクションTx2では、処理完了予告を受信する前までにリソースR3に対するアクセスが発生し、コミット通知を受信した後に、リソースR2、R4に対するアクセスが発生している。ここでは、コミット通知を受信したと同時にRPA2によるTx1の内容の反映も行われるものとする。よって処理完了予告を受信した時点では、Tx1とTx2で扱うリソースは異なっている。また、OK応答の送信後からコミット通知を受信する前までの間に、Tx2では、Tx1内で扱われたリソースと同じリソースに対するアクセスが発生していない。
この場合、RPA2がTx1の処理完了予告を受信した時点では、トランザクションTx1とコンフリクトするトランザクションは存在しないため、RPA2はOK応答を生成し、RPA1に送信する。OK応答を受信したRPA1は、Tx1のコミットを実行し、RPA2にコミット通知を送信する。コミット通知を受信したRPA2は、Tx1に対応するリソースの更新を行う。その後Tx2では、リソースR2、R4に対するアクセスが発生する。このR2、R4に対するアクセスは、Tx1に基づくリソースの反映後であるため、そのまま、リソースR2、R4に対するアクセスを行う。ここで、RPA2がアクセスするリソースR2が、RPA1のトランザクションTx1で更新済みのR2であることが保障される。
第1−2のパターンは、Tx1に対するOK応答の生成時からTx1の処理確定通知を受信する前までの間に、Tx2において、Tx1で扱われたリソースと同じリソースに対するアクセスが発生する場合の処理のパターンである。
図15は、第1−2のパターンの処理の流れを示す。図15では、OK応答が送信されるまでのTx1とTx2の間の処理は、第1−1のパターンと同様となっている。しかしOK応答を送信してからコミット通知を受信するまでの間に、Tx2では、Tx1で扱われたリソースR2に対するアクセスが発生している。
この場合、そのままR2にアクセスすると不整合が生じる可能性があるため、RPA2は、R2に対するアクセスの直前でTx2を一時停止する。そしてRPA2は、RPA1からTx1のコミット通知を受信した後にTx1に基づくリソースの更新を行ってから、Tx2を再開し、更新済みのR2にアクセスする。このように制御することで、OK応答の生成時からTx1の処理確定通知を受信する前までの間に発生したTx1で扱われたリソースに対するアクセスにより、データの不整合が発生することを防ぐことができる。
図16は、実施形態の処理の流れの一例を示す。図16において、APサーバ1bは、DBサーバに対して、トランザクションの処理を実行している。APサーバ1aは、APサーバ1bのトランザクションの開始後に、キャッシュサーバに対してトランザクションの処理を実行している。また、APサーバ1aと、APサーバ1bのトランザクションで扱われるリソースはR1とR2であり、同じリソースである。
図3とは異なり、APサーバ1a、1bはともに、キャッシュサーバとDBサーバのうち一方に対するトランザクションの処理が終了する毎に、各トランザクションの処理の確定が可能か否かを問い合わせる処理完了予告を送信している。
図16に示すように、キャッシュサーバは、APサーバ1aからのトランザクションが終了すると、処理完了予告をDBサーバに送信している。図16の例の場合、同じリソースR1、R2を扱うDBサーバのトランザクションが先に開始されているため、その応答としてDBサーバから処理の確定が不可能であることを示す応答を受信している。尚、キャッシュサーバはDBサーバよりもトランザクションの処理性能が高いため、ここでは、PENDING応答が返信されている。PENDING応答を受信すると、キャッシュサーバはトランザクションをロールバックする。このように、実施形態では、キャッシュサーバのトランザクションのコンフリクト検出が、DBサーバの処理性能に引きずられて遅延することを防ぐことができる。尚、図16においては、DBサーバの処理完了予告の送信等の処理は省略して記載している。
次に、実施形態に係るデータ処理装置の構成の詳細について説明する。図17は、実施形態に係るデータ処理装置の構成の一例を示す。
図17において、データ処理装置60は、処理部61、リソース記憶部62、制御情報記憶部63、及び管理部64を含む。
データ処理装置60は、データ処理装置2の一例である。処理部61は、データ処理手段3の一例である。管理部64は、データ処理管理手段4の一例である。
処理部61は、トランザクションの処理要求を受信し、受信した処理要求に応じたトランザクションの処理を実行する。
リソース記憶部62は、リソースを記憶する。リソースは、トランザクションで扱われ処理部61によりアクセスされるデータである。
制御情報記憶部63は、トランザクション管理情報、予告管理情報、及び、性能情報を記憶する。トランザクション管理情報は、データ処理装置で実行中のトランザクションと、実行中のトランザクションでアクセスされるリソースを管理するための情報である。予告管理情報は、データ処理装置が受信した処理完了予告についての情報であって、対応するコミット通知またはロールバック通知を未受信の処理完了予告を管理するための情報である。性能情報は、データ処理システム内の全てのデータ処理装置のトランザクションの処理性能を示す情報である。
管理部64は、検知部65、予告通知部66、判定部67、結果通知部68、応答部69、制御部70、及び通知受信部71を含む。ここで管理部64が実行する処理は、自装置で処理が実行されたトランザクション(以下、第1のトランザクションと記す)に関する処理と、他装置で処理が実行されたトランザクション(以下、第2のトランザクションと記す)に関する処理の2つがある。検知部65、予告通知部66、判定部67、及び結果通知部68は、第1のトランザクションに関するものである。応答部69、制御部70、及び通知受信部71は、第2のトランザクションに関するものである。
検知部65は検知部5の一例である。予告通知部66は通知部6の一例である。判定部67は判定部7の一例である。応答部69は送信部8の一例である。結果通知部68は確定通知送信部9の一例である。制御部70は制御部10の一例である。
検知部65は、処理部61による第1のトランザクションの処理の終了を検知する。
予告通知部66は、検知部65が第1のトランザクションの処理の終了を検知した場合に、処理完了予告を他のデータ処理装置の管理部64にマルチキャストで送信する。処理完了予告は、第1のトランザクションの識別情報、第1のトランザクションの開始時刻、第1のトランザクションでアクセスされた処理対象データの識別情報、及び、第1のトランザクションでアクセスされた処理対象データの更新前後の差分情報を含む。
判定部67は、予告通知部66が通知した処理完了予告に対する他のデータ処理装置からの応答に基づいて、第1のトランザクションをコミットするかロールバックするかを判定する。そして判定部67は、判定結果に応じて第1のトランザクションをコミットまたはロールバックするように処理部61を制御する。
結果通知部68は、第1のトランザクションがコミットされたまたはロールバックされたことを示す処理確定通知を他のデータ処理装置にマルチキャストで通知する。すなわち、第1のトランザクションがコミットされた場合、結果通知部68は、第1のトランザクションがコミットされたことを示すコミット通知を送信する。第1のトランザクションがロールバックされた場合、結果通知部68は、第1のトランザクションがロールバックされたことを示すロールバック通知を送信する。
応答部69は、他のデータ処理装置から、他のデータ処理装置で実行された第2のトランザクションに対応する処理完了予告を受信する。すると応答部69は、受信した処理完了予告、トランザクション管理情報、及び性能情報に基づいて、その処理完了予告に対する応答を生成する。応答の生成の詳細については後ほど説明する。そして応答部69は、生成した応答を、第2のトランザクションに対応する処理完了予告の送信元にユニキャストで送信する。
制御部70は、データ処理装置で実行されるトランザクションの状況に応じて、トランザクション管理情報の更新を行う。また、制御部70は、処理完了予告の受信状況とその処理完了予告に対する応答の種類、及び、処理確定通知の受信状況に応じて、予告管理情報の更新を行う。また制御部70は、第2のトランザクションに対応する処理完了予告に対する応答を送信してから、第2のトランザクションに対応する処理確定通知を受信するまでの間に、第2のトランザクションでアクセスされたものと同じリソースに対するアクセスを制御する。アクセスの制御については、制御部70は予告管理情報に基づいて行う。アクセスの制御の詳細については後ほど説明する。
通知受信部71は、他のデータ処理装置から、第2のトランザクションのコミット通知またはロールバック通知を受信する。コミット通知を受信した場合、通知受信部71は、第2のトランザクションの処理完了予告の内容に基づいてリソースを更新(コミット)するように処理部61を制御する。すなわち通知受信部71は、第2のトランザクションで更新されたリソースの更新後の状態を、自装置の対応するリソースに反映するように処理部61を制御する。
次に、応答部69による処理完了予告に対する応答の生成について説明する。上述したように実施形態において応答の種類は、OK応答、RETRY応答、PENDING応答の3種類がある。OK応答は、第2のトランザクションのコミットが可能であることを示す応答である。RETRY応答は、第2のトランザクションのコミットが不可能であることを示し、処理完了予告の送信元に対して、第2のトランザクションのロールバック後の即時リトライを指示する内容を含む応答である。PENDING応答は、第2のトランザクションのコミットが不可能であることを示し、処理完了予告の送信元に対して、第2のトランザクションのロールバックとリトライ開始までの間に他のトランザクションの実行を指示する内容を含む応答である。このような3種類の応答の生成は、処理完了予告、トランザクション管理情報、及び性能情報に基づいて行われる。先ず、トランザクション管理情報と性能情報について説明する。
トランザクション管理情報は、データ処理装置で実行中のトランザクションについての管理情報である。図18は、トランザクション管理情報の構成の一例を示す。図18においてトランザクション管理情報は、「トランザクションID」、「開始時刻」、及び「リソース」のデータ項目を含む。「トランザクションID」、「開始時刻」、及び「リソース」のデータ項目は、レコード毎に対応付けて記憶される。「トランザクションID」は、データ処理装置で実行中のトランザクションを一意に識別するための識別情報を示す。「開始時刻」は、トランザクションIDで示されるトランザクションの開始時刻を示す。「リソース」は、トランザクションIDで示されるトランザクションでアクセスされるリソースの識別情報を示す。尚、一つのトランザクションでアクセスされるリソースは複数であってもよい。
トランザクション管理情報は、制御部70により管理される。すなわち制御部70は、処理部61によりトランザクションが開始されると、開始されたトランザクションについての情報を、トランザクション管理情報に記録する。また制御部70は、処理部61によりトランザクションがコミットまたはロールバックされると、そのトランザクションについての情報を、トランザクション管理情報から削除する。
性能情報は、データ処理システム内の全てのデータ処理装置のトランザクションの処理性能を示す情報である。図19は、性能情報の構成の一例を示す。図19において性能情報は、「装置ID」及び「性能値」のデータ項目を含み、「装置ID」及び「性能値」はレコード毎に対応付けて記憶される。「装置ID」は、データ処理システムに含まれるデータ処理装置を一意に識別するための識別情報を示す。「性能値」は、「装置ID」で示されるデータ処理装置の処理部61のトランザクションの処理性能の値を示す。
次に応答部69による応答の生成処理の具体的な動作について説明する。応答部69は、他のデータ処理装置から第2のトランザクションに対応する処理完了予告を受信すると、先ず、第2のトランザクションで扱われるリソースと同じリソースを扱う実行中のトランザクションが存在するかを判定する。この判定は、受信した処理完了予告とトランザクション管理情報を用いて行われる。
第2のトランザクションで扱われるリソースと同じリソースを扱う実行中のトランザクションが存在しない場合は、第2のトランザクションと実行中のトランザクションとの間にコンフリクトが起こらない。従ってこの場合、応答部69は、第2のトランザクションのコミットが可能であることを示すOK応答を生成して、処理完了予告の送信元に返信する。尚この動作は、上記パターン1に対応する動作である。
第2のトランザクションで扱われるリソースと同じリソースを扱う実行中のトランザクションが存在する場合は、第2のトランザクションと実行中のトランザクションとの間にコンフリクトが発生する。この場合データ処理システムでは、データの不整合の発生を防ぐために、コンフリクトが発生する2つのトランザクションのうち、開始時刻が遅いほうのトランザクションでロールバックが行われるように制御される。このために先ず、応答部69は、第2のトランザクションと、第2のトランザクションで扱われるリソースと同じリソースを扱う実行中のトランザクションとの処理開始時刻を比較して、処理開始時刻の遅いトランザクションを特定する。具体的には応答部69は、処理完了予告から第2のトランザクションの処理開始時刻を取得し、トランザクション管理情報から第2のトランザクションで扱われるリソースと同じリソースを扱う実行中のトランザクションの処理開始時刻を取得する。そして、取得した2つのトランザクションの開始時刻を比較することによって、応答部69は処理開始時刻の遅いトランザクションを特定する。
応答部69は、処理開始時刻の遅いトランザクションは自装置で実行中のトランザクションであると判定すると、OK応答を生成して、処理完了予告の送信元に返信する。そして応答部69は、自装置で実行中のトランザクションのロールバックを行い、第2のトランザクションのコミット通知またはロールバック通知を受信してから、ロールバックしたトランザクションをリトライする。尚この動作は、上記パターン2に対応する動作である。
一方、応答部69は、処理開始時刻の遅いトランザクションは第2のトランザクションであると判定すると、第2のトランザクションのコミットが不可能であることを示すRETRY応答、もしくは、PENDING応答を生成して、送信する。尚、この場合、自装置で実行中のトランザクションの処理は継続して行われる。
ここで、RETRY応答とPENDING応答のどちらを生成するかは、自装置と、第2のトランザクションを実行した他のデータ処理装置との間のトランザクション処理性能の大小に基づいて判定される。具体的に応答部69は、性能情報を参照して、自装置の処理部61と、第2のトランザクションを実行したデータ処理装置の処理部61のトランザクション処理性能を比較する。自装置の処理性能が第2のトランザクションを実行したデータ処理装置に対して同等以上の場合、応答部69は、第2のトランザクションの即時リトライを指示するRETRY応答を生成して処理完了予告の送信元へ返信する。尚、応答部69は、RETRY応答に、コンフリクトしたトランザクションの識別情報を含ませて生成する。このように即時リトライを指示する理由は、処理性能が高い自装置によって実行されるトランザクションは、短い時間で処理が完了する可能性が高く、即時リトライ時に再びコンフリクトが発生する可能性が低いためである。尚この動作は、上記パターン3に対応する動作である。
一方、自装置の処理性能が第2のトランザクションを実行したデータ処理装置に対して低い場合、応答部69は、PENDING応答を生成して処理完了予告の送信元へ返信する。PENDING応答は、処理完了予告の送信元に対して、第2のトランザクションのロールバックとリトライ開始までの間に他のトランザクションの実行を指示する内容を含む応答である。このように指示する理由は、処理性能が低い自装置によって実行されるトランザクションは、処理が完了するまでに長い時間がかかる可能性が高く、ロールバック後に即時リトライをした場合に再びコンフリクトが発生する可能性が高いためである。よってロールバックとリトライ開始の間で他のリソースを扱うトランザクションを実行することにより、トランザクションの処理効率を向上させることができる。尚この動作は、上記パターン4に対応する動作である。
具体的には応答部69は、PENDING応答に、コンフリクトしたトランザクションの識別情報と、コンフリクトしたリソースの識別情報を含ませて生成する。PENDING応答を受信したデータ処理装置は、PENDING応答に含まれるリソースの識別情報に基づいて、コンフリクトしたリソースとは異なるリソースを扱うトランザクションを特定して、そのトランザクションを実行する。
次に制御部70によるアクセス制御について詳細に説明する。アクセスの制御については、制御部70は予告管理情報に基づいて行う。先ず予告管理情報の詳細について説明する。
図20は、予告管理情報の構成の一例を示す。予告管理情報は、「処理完了予告ID」、及び「リソース」のデータ項目をレコード毎に対応付けて記憶する。「処理完了予告ID」は、自装置が受信した処理完了予告の識別情報を示す。「リソース」は、処理完了予告に対応するトランザクションで扱われたリソースの識別情報を示す。
予告管理情報は、制御部70により管理される。すなわち制御部70は、応答部69が処理完了予告を受信すると、受信された処理完了予告についての情報を、予告管理情報に記録する。また制御部70は、他のデータ処理装置からコミット通知またはロールバック通知を受信すると、それらの通知に対応する処理完了予告についての情報を、予告管理情報から削除する。
制御部70によるアクセス制御は、第2のトランザクションの処理完了予告に対するOK応答を送信してから、第2のトランザクションのコミット通知またはロールバック通知を受信するまでの間で行われる。この間、制御部70は、第2のトランザクションで扱われたリソースに対するアクセスを一時的に制限する。すなわち制御部70は、第2のトランザクションで扱われたリソースに対するアクセスが発生したトランザクションの処理を一時停止するように処理部61を制御する。第2のトランザクションで扱われたリソースに対するアクセスが発生したか否かは、予告管理情報を用いて判定される。そして、第2のトランザクションのコミット通知またはロールバック通知を受信した後に、制御部70は、アクセスの制限を解除し、一時停止していたトランザクションの処理を再開するように処理部61を制御する。このようにすることで、OK応答の送信後に発生する不整合を防ぐことができる。尚この動作は、上記パターン1−2に対応する動作である。尚、コミット通知受信後またはロールバック通知受信後に、第2のトランザクションで扱われたリソースに対するアクセスが発生した場合には、制御部70はアクセス制御を行わない。
図21及び図22は、実施形態に係るデータ処理装置の第1のトランザクションについての処理の詳細を図解したフローチャートの一例(その1、その2)である。
図21において、先ず処理部61は、第1のトランザクションの処理要求を受信する(S101)。次に制御部70は、トランザクション管理情報に、第1のトランザクションについての情報を記録する(S102)。
次に処理部61は、第1のトランザクションの処理を実行する(S103)。S103では、後ほど図25を参照して説明するアクセス制御に関する処理が行われる。次に検知部65は、第1のトランザクションの処理の終了を検知する(S104)。
次に予告通知部66は、第1のトランザクションに対応する処理完了予告を生成して、他のデータ処理装置にマルチキャストで送信する(S105)。次に判定部67は、他のデータ処理装置から、S105で送信した処理完了予告に対する応答を受信する(S106)。
次に判定部67は、S106で受信した応答がOK応答か否かを判定する(S107)。S106で受信した応答がOK応答でないと判定された場合(S107でNo)、処理は、図22のS113に遷移する。一方、S106で受信した応答がOK応答であると判定された場合(S107でYes)、判定部67は、処理部61を制御することにより第1のトランザクションのコミットを実行する(S108)。ここで、コミットが異常終了した場合には、処理部61は第1のトランザクションをロールバックする。
次に結果通知部68は、処理部61により実行されたコミットが正常終了したか否かを判定する(S109)。処理部61により実行されたコミットが正常終了したと判定した場合(S109でYes)、結果通知部68はコミット通知を他のデータ処理装置に送信する(S110)。一方、処理部61により実行されたコミットが異常終了したと判定した場合(S109でNo)、結果通知部68はロールバック通知(図面ではRB通知と記す)を他のデータ処理装置に送信する(S111)。
次に制御部70は、トランザクション管理情報から、第1のトランザクションについての情報を削除する(S112)。そして処理は終了する。
S107で応答がOK応答でないと判定した場合(S107でNo)、判定部67は、S106で受信した応答がRETRY応答か否かを判定する(図22のS113)。S106で受信した応答がRETRY応答でないと判定された場合(S113でNo)、すなわち、受信した応答がPENDING応答であると判定された場合、処理は、S117に遷移する。一方、S106で受信した応答がRETRY応答であると判定された場合(S113でYes)、処理部61は、第1のトランザクションのロールバックを実行する(S114)。ここで、RETRY応答に含まれる、第1のトランザクションとコンフリクトしたトランザクションの識別情報は第3のトランザクションを示すものとして説明する。
次に制御部70は、トランザクション管理情報から、第1のトランザクションについての情報を削除する(S115)。次に制御部70は、他のデータ処理装置から、第3のトランザクションについてのコミットまたはロールバック通知を受信したか否かを判定する(S116)。第3のトランザクションについてのコミットまたはロールバック通知を受信していないと判定した場合(S116でNo)、制御部70はS116の処理を繰り返す。一方、第3のトランザクションについてのコミットまたはロールバック通知を受信したと判定された場合(S116でYes)、処理は図21のS102に遷移し、再度S102からの第1のトランザクションについての処理が実行される。
S113で応答がRETRY応答でないと判定された場合(S113でNo)、すなわち、応答はPENDING応答であると判定された場合、処理部61は、第1のトランザクションのロールバックを実行する(S117)。ここで、PENDING応答に含まれる、第1のトランザクションとコンフリクトしたトランザクションの識別情報は第3のトランザクション示すものとして説明する。
次に制御部70は、トランザクション管理情報から、第1のトランザクションについての情報を削除する(S118)。
次に制御部70は、第3のトランザクションでアクセスされるリソースを扱わない他のトランザクションを実行するように制御する(S119)。具体的には制御部70は、PENDING応答から、第3のトランザクションで扱われるリソースの識別情報を取得する。そして制御部70は、取得した識別情報で示されるリソースを扱わないトランザクションを実行するように処理部61を制御する。
次に制御部70は、他のデータ処理装置から、第3のトランザクションについてのコミットまたはロールバック通知を受信したか否かを判定する(S120)。第3のトランザクションについてのコミットまたはロールバック通知を受信していないと判定された場合(S120でNo)、処理はS119に遷移する。一方、第3のトランザクションについてのコミットまたはロールバック通知を受信したと判定された場合(S120でYes)、処理は図21のS102に遷移し、再度S102からの第1のトランザクションについての処理が実行される。
図23及び図24は、実施形態に係るデータ処理装置の第2のトランザクションについての処理の詳細を図解したフローチャートの一例(その1、その2)である。
図23において先ず、応答部69は、他のデータ処理装置から、第2のトランザクションについての処理完了予告を受信する(S201)。
次に応答部69は、第2のトランザクションで扱われるリソースと同じリソースを扱う実行中のトランザクションが存在するかを判定する(S202)。具体的には応答部69は、処理完了予告から、第2のトランザクションでアクセスされた処理対象データの識別情報を取得する。そして応答部69はトランザクション管理情報を参照し、「リソース」が処理完了予告から取得した識別情報と一致するレコードが存在するか否かを判定する。以下の図の説明においては、第2のトランザクションで扱われるリソースと同じリソースを扱う実行中のトランザクションを、該当トランザクションと記す。
該当トランザクションが存在しないと判定した場合(S202でNo)、応答部69はOK応答を生成し、処理完了予告の送信元のデータ処理装置にユニキャストで送信する(S203)。OK応答は、第2のトランザクションのコミットが可能であることを示す情報を含む。
次に制御部70は、予告管理情報に第2のトランザクションについての情報を記録する(S204)。そして処理は図24のS218に遷移する。
S202で該当トランザクションが存在すると判定した場合(S202でYes)、応答部69は、第2のトランザクションよりも前に開始された該当トランザクションが存在するか否かを判定する(S205)。具体的には応答部69は、処理完了予告から、第2のトランザクションの開始時刻を示す情報を取得する。そして応答部69はトランザクション管理情報を参照し、該当トランザクションのレコードであって、「開始時刻」が処理完了予告から取得した開始時刻より前の時刻であるレコードが存在するか否かを判定する。
第2のトランザクションよりも前に開始された該当トランザクションが存在すると判定された場合(S205でYes)、処理は図24のS215に遷移する。一方、第2のトランザクションよりも前に開始された該当トランザクションが存在しないと判定した場合(S205でNo)、応答部69はOK応答を生成し、処理完了予告の送信元のデータ処理装置にユニキャストで送信する(S206)。
次に制御部70は、予告管理情報に第2のトランザクションについての情報を記録する(S207)。
次に制御部70は、処理部61を制御して、該当トランザクションをロールバックする(S208)。次に制御部70は、該当トランザクションについての情報を、トランザクション管理情報から削除する(S209)。
次に通知受信部71は、他のデータ処理装置から第2のトランザクションに対応するコミット通知またはロールバック通知を受信する(S210)。そして通知受信部71は、受信した通知がコミット通知かロールバック通知かを判定する(S211)。
コミット通知を受信しなかったと判定された場合(S211でNo)、すなわち、ロールバック通知を受信したと判定された場合、処理はS213に遷移する。一方、コミット通知を受信したと判定された場合(S211でYes)、通知受信部71は、S201で受信した処理完了予告の内容に基づいてリソースを更新するように処理部61を制御する(S212)。すなわち通知受信部71は、第2のトランザクションで更新されたリソースの更新後の状態を、自装置の対応するリソースに反映するように処理部61を制御する。
次に制御部70は、予告管理情報から、第2のトランザクションについての情報を削除する(S213)。次に制御部70は、S207でロールバックした該当トランザクションを再実行するように制御する(S214)。そして処理は終了する。
S205で第2のトランザクションよりも前に開始された該当トランザクションが存在すると判定した場合(S205でYes)、応答部69は以下の処理を行う。すなわち応答部69は、自装置の処理部61のトランザクション処理性能が、第2のトランザクションを実行したデータ処理装置の処理部61トランザクション処理性能を下回るか否かを判定する(図24のS215)。自装置のトランザクション処理性能が、第2のトランザクションを実行したデータ処理装置の性能以上であると判定した場合(S215でNo)、応答部69はRETRY応答を生成し、処理完了予告の送信元のデータ処理装置にユニキャストで送信する(S216)。そして処理はS218に遷移する。一方、自装置のトランザクション処理性能が、第2のトランザクションを実行したデータ処理装置のトランザクション処理性能を下回ると判定した場合(S215でYes)、応答部69は以下の処理を行う。すなわち応答部69は、PENDING応答を生成し、処理完了予告の送信元のデータ処理装置にユニキャストで送信する(S217)。ここで、S216、S217の後も該当トランザクションに関する処理は継続して実行される。
次に通知受信部71は、他のデータ処理装置から第2のトランザクションに対応するコミット通知またはロールバック通知を受信する(S218)。そして通知受信部71は、受信した通知がコミット通知かロールバック通知かを判定する(S219)。
コミット通知を受信しなかったと判定された場合(S219でNo)、すなわち、ロールバック通知を受信したと判定された場合、処理はS221に遷移する。一方、コミット通知を受信したと判定された場合(S219でYes)、通知受信部71は、S201で受信した処理完了予告の内容に基づいてリソースを更新するように処理部61を制御する(S220)。すなわち通知受信部71は、第2のトランザクションで更新されたリソースの更新後の状態を、自装置の対応するリソースに反映するように処理部61を制御する。
次に制御部70は、予告管理情報に第2のトランザクションについての情報が存在する場合には、第2のトランザクションについての情報を削除する(S221)。そして処理は終了する。
図25は、制御部70によるアクセス制御の処理の詳細を図解したフローチャートの一例である。この処理は図21のS103において、実行される処理である。図25の説明では、第2のトランザクションに関する処理である、図23及び図24のS203〜S220、及び、S206からS212の処理の実行中に、所定のトランザクション(第1のトランザクションとして説明する)が実行される場合について説明する。
図25において先ず、制御部70は、第1のトランザクションのアクセス対象のリソース(以下、アクセス対象リソースと記す)が、第2のトランザクションで扱われたリソースか否かを判定する(S301)。具体的には制御部70は、予告管理情報を参照して、アクセス対象リソースと「リソース」が同じであるレコードが存在するか否かを判定する。
アクセス対象リソースが、第2のトランザクションで扱われたリソースでないと判定された場合(S301でNo)、処理はS303に遷移する。
一方、アクセス対象リソースが、第2のトランザクションで扱われたリソースと同じであると判定された場合(S301でYes)、制御部70は以下の処理を行う。すなわち制御部70は、第2のトランザクションに対応するコミット通知またはロールバック通知を受信したか否かを判定する(S302)。具体的には制御部70は、予告管理情報を参照し、アクセス対象リソースと「リソース」が同じである予告管理情報のレコードが存在するか否かを判定する。
第2のトランザクションに対応するコミット通知またはロールバック通知のいずれも受信していないと判定した場合(S302でNo)、制御部70は再度S302を実行する。
第2のトランザクションに対応するコミット通知またはロールバック通知を受信したと判定した場合(S302でYes)、制御部70は、第1のトランザクションにおいてアクセス対象リソースに対するアクセスを行うように処理部61を制御する(S303)。そして処理は終了する。
次に、データ処理装置60のハードウェア構成の一例を説明する。図26は、実施形態に係るデータ処理装置のハードウェア構成の一例を示す。
図26において、データ処理装置60は、Central Processing Unit(CPU)81、メモリ82、記憶装置83、読取装置84、及び通信インターフェース85を含む。CPU81、メモリ82、記憶装置83、読取装置84、及び通信インターフェース85はバスを介して接続される。
CPU81は、メモリ82を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、処理部61及び管理部64の一部または全部の機能を提供する。
メモリ82は、例えば半導体メモリであり、Random Access Memory(RAM)領域およびRead Only Memory(ROM)領域を含んで構成される。記憶装置83は、例えばハードディスクである。なお、記憶装置83は、Solid State Drive(SSD)やフラッシュメモリ等の半導体メモリであってもよい。また、記憶装置83は、外部記録装置であってもよい。データ処理装置60がキャッシュサーバの場合、メモリ82はリソース記憶部62、制御情報記憶部63の一部または全部の機能を提供する。データ処理装置60がDBサーバの場合、メモリ82は制御情報記憶部63の一部または全部の機能を提供し、記憶装置83はリソース記憶部62の機能の一部または全部を提供する。尚、データ処理装置60がキャッシュサーバの場合、データは全てメモリ82上で管理されてもよいし、SSDやフラッシュメモリ等で管理されてもよい。ここで、キャッシュサーバとDBサーバの処理部61の性能差が発生する主な要因の一つは、キャッシュサーバのデータは通常インメモリ上で管理され、DBサーバのデータは通常オンディスク上で管理されるためである。
読取装置84は、CPU81の指示に従って着脱可能記憶媒体90にアクセスする。着脱可能記憶媒体90は、たとえば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD−ROM、DVD等)などにより実現される。尚、読取装置84はデータ処理装置60に含まれなくてもよい。
通信インターフェース85は、CPU81の指示に従ってネットワークを介して、他のデータ処理装置、及びトランザクションの要求元の装置(例えばAPサーバ)と通信する。
実施形態のプログラムは、例えば、下記の形態でデータ処理装置60に提供される。
(1)記憶装置83に予めインストールされている。
(2)着脱可能記憶媒体90により提供される。
(3)プログラムサーバ(図示せず)から通信インターフェース85を介して提供される。
さらに、実施形態のデータ処理装置60の一部は、ハードウェアで実現してもよい。或いは、実施形態のデータ処理装置60は、ソフトウェアおよびハードウェアの組み合わせで実現してもよい。
尚、複数のデータ処理装置60の機能のそれぞれを仮想サーバ等で実行し、一つの情報処理装置内で実行してもよい。
図4のデータ処理装置2は、1マシンにつき1プロセスの構成に限定されず、複数のサーバ群をまとめた論理的な単位としてもよい。すなわち、データ処理装置2(2a〜2c)の一部又は全ては、データ処理手段3の機能を提供する1または複数の情報処理装置と、データ処理管理手段4の機能を提供する情報処理装置とを含むシステムとしてもよい。このような構成の一例を以下で説明する。図27は、実施形態に係るデータ処理システムの構成の一例を示す。
図27において、データ処理システムは、DC1とDC2を含む。DC1とDC2は、WAN等の通信ネットワーク等を介して接続される。各DCは、APサーバ91(91a〜91b、91c〜91d)、DBサーバ群92(92a、92b)、及びキャッシュサーバ群93(93a、93b)を含む。各DC内のAPサーバ91、DBサーバ群92、及びキャッシュサーバ群93は、Local Area Network(LAN)等の通信ネットワーク等を介して接続される。ここではDC1について説明するが、DC2についてもDC1と同様である。
APサーバ91は、キャッシュサーバ群92またはDBサーバ群93へアクセスするアプリケーションを実行する。
DBサーバ群92は、DBサーバ群92全体で、図17のデータ処理装置60の1つに対応する機能を提供する。DBサーバ群92は、処理部61及びリソース記憶部62の機能を提供する1または複数のDBサーバ94(94a)と、制御情報記憶部63及び管理部64の機能を提供するRPAサーバ95(95a)とを含む。
キャッシュサーバ群93は、キャッシュサーバ群93全体で、図17のデータ処理装置60の1つに対応する機能を提供する。処理部61及びリソース記憶部62の機能を提供する1または複数のキャッシュサーバ96(96a〜96d)と、制御情報記憶部63及び管理部64の機能を提供するRPAサーバ97(97a)とを含む。キャッシュサーバ96は、インメモリデータベースとして動作してもよい。例えばキャッシュサーバ96において、リソース記憶部62及びAPサーバとのトランザクションに関するデータは全てメインメモリ上で管理されてもよい。また、リソース記憶部62のデータを複製して、それらを複数のキャッシュサーバ96に分散させて記憶する構成としてもよい。尚、キャッシュサーバ96は、図27に示すように、APサーバ91からの接続を受け付けてトランザクションを実行するアクティブ側のキャッシュサーバ96a、96bと、アクティブ側のデータのミラーリングを行うミラー側のキャッシュサーバ96c、96dとが含まれてもよい。
DBサーバ94、RPAサーバ95、キャッシュサーバ96、及びRPAサーバ97のそれぞれのハードウェア構成は、図26に示したものと同様である。ただし、DBサーバ94において、CPU81は処理部61の機能を提供し、記憶装置83はリソース記憶部62の機能を提供する。また、キャッシュサーバ96において、CPU81は処理部61の機能を提供し、メモリ82はリソース記憶部62の機能を提供する。また、RPAサーバ95、97において、CPU81は管理部64の機能を提供し、メモリ82は制御情報記憶部63の機能を提供する。
尚、DBサーバ94、RPAサーバ95、キャッシュサーバ96、及びRPAサーバ97の一部または全ては、仮想サーバで実現してもよい。また、DBサーバ群92のRPAサーバ95の機能(制御情報記憶部63及び管理部64の機能)は、同一DC内の任意のDBサーバ94により提供される構成としてもよい。この場合は、RPAサーバ95は同一DC内になくてもよい。さらに、キャッシュサーバ群93のRPAサーバ97の機能(制御情報記憶部63及び管理部64の機能)は、同一DC内の任意のキャッシュサーバ96により提供される構成としてもよい。この場合、RPAサーバ97は同一DC内になくてもよい。
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
尚、説明のため、実施形態では、データ処理装置の例としてDBサーバとキャッシュサーバを例に説明したが、データ処理装置は所定の機能を提供する情報処理装置としてもよい。例えば、DBサーバに限らず任意のSystem of Record(SOR)に対しても同じアプローチを適用できる。また、キャッシュ間、SOR間は同一の製品で構成されていなくてもよく、別製品間でも同じアプローチを適用可能である。
1 データ処理システム
2 データ処理装置
3 データ処理手段
4 データ処理管理手段
5 検知部
6 通知部
7 判定部
8 送信部
9 確定通知送信部
10 制御部
60 データ処理装置
61 処理部
62 リソース記憶部
63 制御情報記憶部
64 管理部
65 検知部
66 予告通知部
67 判定部
68 結果通知部
69 応答部
70 制御部
71 通知受信部
81 CPU
82 メモリ
83 記憶装置
84 読取装置
85 通信インターフェース
90 着脱可能記憶媒体

Claims (8)

  1. データ処理手段と、前記データ処理手段に対応づけられて動作するデータ処理管理手段を有するデータ処理装置を複数備え、各データ処理装置の前記データ処理手段が連動してデータの更新を行うデータ処理システムにおける、第1のデータ処理装置である情報処理装置であって、
    前記データ処理管理手段は、
    対応するデータ処理手段への第1の処理要求に対する第1の処理の完了を検知する検知部と、
    前記検知に応じて、前記第1のデータ処理装置内または他のデータ処理装置の他のデータ処理管理手段それぞれに対し、前記第1の処理の処理開始時刻、および、処理対象データに関する情報を含む第1の処理完了予告を通知する通知部と、
    前記他のデータ処理管理手段それぞれからの前記第1の処理完了予告に対する応答内容に基づき、前記第1の処理の確定可否を判定する判定部と、
    前記他のデータ処理管理手段のいずれかから第2の処理完了予告を受信した場合は、対応するデータ処理手段において、前記第2の処理完了予告から特定される処理開始時刻より前に前記対応するデータ処理手段で開始された処理それぞれが、前記第2の処理完了予告から特定される処理対象データを処理対象としているか否か、および、前記第1のデータ処理装置が有する前記第2の処理完了予告を送付したデータ処理管理手段に対応する処理手段の性能情報に基づき、前記第2の処理完了予告に対する応答を生成し送信する送信部と、
    を有することを特徴とする情報処理装置。
  2. 前記通知部は、前記第1の処理完了予告を通知する際に、マルチキャスト通信を利用する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記他のデータ処理管理手段より、前記第1の処理完了予告から特定される前記第1の処理の処理開始時刻より前に、前記他のデータ処理装置において開始された処理のいずれかが、前記第1の処理完了予告から特定される処理対象データを処理対象としていることが通知された場合、前記判定部は、さらに、該処理対象データを前記第1の処理の開始前の状態に戻すように前記対応するデータ処理手段を制御する
    ことを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記他のデータ処理管理手段より、前記第1の処理完了予告から特定される前記第1の処理の処理開始時刻より前に、前記他のデータ処理装置において開始された処理のいずれかが、前記第1の処理完了予告から特定される処理対象データを処理対象としており、前記対応するデータ処理手段の性能が、前記他のデータ処理装置内のデータ処理手段の性能以上であることが通知された場合、前記判定部は、さらに、前記処理対象データを前記第1の処理の開始前の状態に戻し、前記第2の処理の処理対象データとは異なるデータを処理対象とする第3の処理を実行した後に、前記第1の処理を再実行するように前記対応するデータ処理手段を制御する
    ことを特徴とする請求項3に記載の情報処理装置。
  5. 前記データ処理管理手段は、さらに、
    前記第1の処理が確定可能であると判定された場合、前記第1の処理の確定処理を行うように前記データ処理手段を制御し、前記他のデータ処理管理手段に対して、前記第1の処理が確定されたことを示す確定通知を送信する確定通知送信部と、
    前記対応するデータ処理手段において、前記第2の処理完了予告から特定される処理開始時刻より前に開始された処理のそれぞれが、前記第2の処理完了予告から特定される処理対象データを処理対象としていない場合、前記第2の処理完了予告に対する応答を送信した後に前記第2の処理完了予告から特定される処理対象データに対するアクセス要求が発生すると、前記第2の処理に対応する前記確定通知を受信して前記第2の処理の確定処理を実行した後にアクセスするように前記対応するデータ処理手段を制御する制御部と、
    を有することを特徴とする請求項1〜4のうちいずれか1項に記載の情報処理装置。
  6. データ処理手段と、前記データ処理手段に対応づけられて動作するデータ処理管理手段を有するデータ処理装置を複数備え、各データ処理装置の前記データ処理手段が連動してデータの更新を行うデータ処理システムであって、
    第1のデータ処理装置の第1のデータ処理管理手段は、
    前記第1のデータ処理管理手段に対応する第1のデータ処理手段への第1の処理要求に対する第1の処理の完了を検知し、
    前記検知に応じて、前記第1のデータ処理装置内または他のデータ処理装置の他のデータ処理管理手段それぞれに対し、前記第1の処理の処理開始時刻、および、処理対象データに関する情報を含む第1の処理完了予告を通知し、
    前記他のデータ処理管理手段それぞれからの前記第1の処理完了予告に対する応答内容に基づき、前記第1の処理の確定可否を判定し、
    第2のデータ処理装置の第2のデータ処理管理手段は、
    前記第1のデータ処理管理手段から前記第1の処理完了予告を受信した場合は、前記第2のデータ処理管理手段に対応する第2のデータ処理手段において、前記第1の処理完了予告から特定される処理開始時刻より前に前記第2のデータ処理手段で開始された処理それぞれが、前記第1の処理完了予告から特定される処理対象データを処理対象としているか否か、および、前記第2のデータ処理装置が有する前記第1のデータ処理手段の性能情報に基づき、前記第1の処理完了予告に対する応答を生成し送信する
    ことを特徴とする情報処理システム。
  7. データ処理手段と、前記データ処理手段に対応づけられて動作するデータ処理管理プログラムを有するデータ処理装置を複数備え、各データ処理装置の前記データ処理手段が連動してデータの更新を行うデータ処理システムにおける、第1のデータ処理装置で実行されるデータ処理管理プログラムであって、
    対応するデータ処理手段への第1の処理要求に対する第1の処理の完了を検知し、
    前記検知に応じて、前記第1のデータ処理装置内または他のデータ処理装置の他のデータ処理管理プログラムそれぞれに対し、前記第1の処理の処理開始時刻、および、処理対象データに関する情報を含む第1の処理完了予告を通知し、
    前記他のデータ処理管理プログラムそれぞれからの前記第1の処理完了予告に対する応答内容に基づき、前記第1の処理の確定可否を判定し、
    前記他のデータ処理管理プログラムのいずれかから第2の処理完了予告を受信した場合は、対応するデータ処理手段において、前記第2の処理完了予告から特定される処理開始時刻より前に前記対応するデータ処理手段で開始された処理それぞれが、前記第2の処理完了予告から特定される処理対象データを処理対象としているか否か、および、前記第1のデータ処理装置が有する前記第2の処理完了予告を送付したデータ処理管理プログラムに対応する処理手段の性能情報に基づき、前記第2の処理完了予告に対する応答を生成し送信する
    処理をコンピュータに実行させることを特徴とするデータ処理管理プログラム。
  8. データ処理手段と、前記データ処理手段に対応づけられて動作するデータ処理管理手段を有するデータ処理装置を複数備え、各データ処理装置の前記データ処理手段が連動してデータの更新を行うデータ処理システムにおける、第1のデータ処理装置で実行されるデータ処理管理方法であって、
    前記データ処理管理手段は、
    対応するデータ処理手段への第1の処理要求に対する第1の処理の完了を検知し、
    前記検知に応じて、前記第1のデータ処理装置内または他のデータ処理装置の他のデータ処理管理プログラムそれぞれに対し、前記第1の処理の処理開始時刻、および、処理対象データに関する情報を含む第1の処理完了予告を通知し、
    前記他のデータ処理管理プログラムそれぞれからの前記第1の処理完了予告に対する応答内容に基づき、前記第1の処理の確定可否を判定し、
    前記他のデータ処理管理プログラムのいずれかから第2の処理完了予告を受信した場合は、対応するデータ処理手段において、前記第2の処理完了予告から特定される処理開始時刻より前に前記対応するデータ処理手段で開始された処理それぞれが、前記第2の処理完了予告から特定される処理対象データを処理対象としているか否か、および、前記第1のデータ処理装置が有する前記第2の処理完了予告を送付したデータ処理管理プログラムに対応する処理手段の性能情報に基づき、前記第2の処理完了予告に対する応答を生成し送信する
    処理を実行することを特徴とするデータ処理管理方法。
JP2014209829A 2014-10-14 2014-10-14 情報処理装置、データ処理システム、データ処理管理プログラム、及び、データ処理管理方法 Pending JP2016081169A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014209829A JP2016081169A (ja) 2014-10-14 2014-10-14 情報処理装置、データ処理システム、データ処理管理プログラム、及び、データ処理管理方法
US14/875,331 US20160105508A1 (en) 2014-10-14 2015-10-05 Information processing apparatus, data processing system and data processing management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014209829A JP2016081169A (ja) 2014-10-14 2014-10-14 情報処理装置、データ処理システム、データ処理管理プログラム、及び、データ処理管理方法

Publications (1)

Publication Number Publication Date
JP2016081169A true JP2016081169A (ja) 2016-05-16

Family

ID=55656298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014209829A Pending JP2016081169A (ja) 2014-10-14 2014-10-14 情報処理装置、データ処理システム、データ処理管理プログラム、及び、データ処理管理方法

Country Status (2)

Country Link
US (1) US20160105508A1 (ja)
JP (1) JP2016081169A (ja)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2256514B (en) * 1991-05-21 1994-11-16 Digital Equipment Corp Commitment ordering for guaranteeing serializability across distributed transactions
US5872969A (en) * 1995-06-23 1999-02-16 International Business Machines Corporation System and method for efficiently synchronizing cache and persistent data in an object oriented transaction processing system
US6011908A (en) * 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
US7620661B2 (en) * 2005-10-27 2009-11-17 International Business Machines Corporation Method for improving the performance of database loggers using agent coordination
US8856209B2 (en) * 2007-05-31 2014-10-07 Tymphany Hong Kong Limited Systems and methods for synchronization in a networked environment
JP5115555B2 (ja) * 2007-06-20 2013-01-09 富士通株式会社 演算処理装置
JP4595029B2 (ja) * 2007-06-20 2010-12-08 富士通株式会社 キャッシュメモリ装置、演算処理装置及びその制御方法
CN101222772B (zh) * 2008-01-23 2010-06-09 西安西电捷通无线网络通信有限公司 一种基于id的无线多跳网络认证接入方法
US8301593B2 (en) * 2008-06-12 2012-10-30 Gravic, Inc. Mixed mode synchronous and asynchronous replication system
US7962458B2 (en) * 2008-06-12 2011-06-14 Gravic, Inc. Method for replicating explicit locks in a data replication engine
JP2012018449A (ja) * 2010-07-06 2012-01-26 Fujitsu Ltd スナップショット取得処理プログラム、スナップショット取得処理方法、スナップショット・パティシパント・コンピュータ、スナップショット・コーディネータ・コンピュータ
US20130339964A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Replaying of work across cluster of database servers
US8873589B2 (en) * 2012-09-04 2014-10-28 Khalifa University Of Science, Technology And Research Methods and devices for clock synchronization

Also Published As

Publication number Publication date
US20160105508A1 (en) 2016-04-14

Similar Documents

Publication Publication Date Title
CN109951331B (zh) 用于发送信息的方法、装置和计算集群
US7900085B2 (en) Backup coordinator for distributed transactions
US7937482B1 (en) Scalable consensus protocol
CN102265277B (zh) 数据存储系统的操作方法和装置
US20170154091A1 (en) Conditional master election in distributed databases
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
WO2018107772A1 (zh) 写入请求处理方法、装置及设备
CN109189595A (zh) 基于服务器的事件处理方法、装置、设备及介质
US9424145B2 (en) Ensuring the same completion status for transactions after recovery in a synchronous replication environment
WO2002088946A2 (en) Resource action in clustered computer system incorporating prepare operation
US20120011100A1 (en) Snapshot acquisition processing technique
JPWO2013018808A1 (ja) 分散ストレージシステムおよび方法
US10862856B2 (en) Distributed components in computing clusters
EP3019960A2 (en) Replication of data between mirrored data sites
JP7549137B2 (ja) トランザクション処理方法、システム、装置、機器、及びプログラム
WO2020025049A1 (zh) 数据同步的方法、装置、数据库主机及存储介质
US9424301B2 (en) System and method for negotiated takeover of storage objects
TW200805079A (en) Consolidating session information for a cluster of sessions in a coupled session environment
US20140108484A1 (en) Method and system for optimizing distributed transactions
US20180024896A1 (en) Information processing system, information processing apparatus, and information processing method
CN110659303A (zh) 一种数据库节点的读写控制方法及装置
CN116954816A (zh) 容器集群控制方法、装置、设备及计算机存储介质
CN113254536A (zh) 数据库事务处理方法、系统、电子设备及存储介质
US20140149994A1 (en) Parallel computer and control method thereof
CN114006946B (zh) 同质资源请求的处理方法、装置、设备及存储介质