JP2003058404A - 分散データベースの同時実行制御システム - Google Patents
分散データベースの同時実行制御システムInfo
- Publication number
- JP2003058404A JP2003058404A JP2001243396A JP2001243396A JP2003058404A JP 2003058404 A JP2003058404 A JP 2003058404A JP 2001243396 A JP2001243396 A JP 2001243396A JP 2001243396 A JP2001243396 A JP 2001243396A JP 2003058404 A JP2003058404 A JP 2003058404A
- Authority
- JP
- Japan
- Prior art keywords
- data
- site
- update
- transaction
- active program
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 claims description 42
- 230000008569 process Effects 0.000 claims description 21
- 230000002860 competitive effect Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 33
- 238000004891 communication Methods 0.000 abstract description 15
- 238000013500 data storage Methods 0.000 description 22
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 206010000210 abortion Diseases 0.000 description 3
- 239000000470 constituent Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【課題】 高い頑健性と、少ない通信量および遅延量を
実現する。 【解決手段】 同じデータを複数のデータベースサーバ
に冗長に配置して構成される分散データベースの同時実
行制御システムにおいて、各データベースサーバは、競
合演算操作の対象となるデータを指定するデータ指定情
報と、当該競合演算操作の内容を記述した操作情報と、
各データベースサーバにおいて該当するデータ指定情報
に関する該当する操作情報の競合演算操作が既に完了し
ているか否かを指定する操作完了情報とを有するトーク
ン構造体を、データベースサーバ間で巡回させ、受け取
った当該トークン構造体の有するデータ指定情報、操作
情報、および操作完了情報に応じたデータベース管理処
理を、自動的に起動するアクティブ起動手段を備える。
実現する。 【解決手段】 同じデータを複数のデータベースサーバ
に冗長に配置して構成される分散データベースの同時実
行制御システムにおいて、各データベースサーバは、競
合演算操作の対象となるデータを指定するデータ指定情
報と、当該競合演算操作の内容を記述した操作情報と、
各データベースサーバにおいて該当するデータ指定情報
に関する該当する操作情報の競合演算操作が既に完了し
ているか否かを指定する操作完了情報とを有するトーク
ン構造体を、データベースサーバ間で巡回させ、受け取
った当該トークン構造体の有するデータ指定情報、操作
情報、および操作完了情報に応じたデータベース管理処
理を、自動的に起動するアクティブ起動手段を備える。
Description
【0001】
【発明の属する技術分野】本発明は分散データベースの
同時実行制御システムに関するものである。
同時実行制御システムに関するものである。
【0002】
【従来の技術】文献名:A.Goshinski, "Distributed
Operating Systems - The Logical Design" , A
ddison Wesley 信頼性向上、可用性向上、アクセス時間短縮、スループ
ット向上を目的として、データの複製を複数のサイトに
置く分散データベースがよく利用される。
Operating Systems - The Logical Design" , A
ddison Wesley 信頼性向上、可用性向上、アクセス時間短縮、スループ
ット向上を目的として、データの複製を複数のサイトに
置く分散データベースがよく利用される。
【0003】従来、このような分散データベースに対し
て複数のトランザクションが並行して更新を行なう可能
性がある場合に、一貫性のある更新を行なう方式とし
て、次の(1)〜(4)の方式がある。
て複数のトランザクションが並行して更新を行なう可能
性がある場合に、一貫性のある更新を行なう方式とし
て、次の(1)〜(4)の方式がある。
【0004】(1)全コピーロック方式
この方式では、全てのデータベースサイトのロックに成
功したトランザクションがデータの更新を行なう。実際
にはそのサイトのデータベース管理システム(以下、
「DBMS」と略す)が全てのサイトのデータの更新を
行なうことになる。
功したトランザクションがデータの更新を行なう。実際
にはそのサイトのデータベース管理システム(以下、
「DBMS」と略す)が全てのサイトのデータの更新を
行なうことになる。
【0005】全てのデータベースサイトのロックに成功
できなかったトランザクション、すなわち、1つでもロ
ックに失敗したトランザクションは、ロックを異常終了
(アボート)する。
できなかったトランザクション、すなわち、1つでもロ
ックに失敗したトランザクションは、ロックを異常終了
(アボート)する。
【0006】(2)多数決ロック方式
この方式では、過半数のデータベースサイトのロックに
成功したトランザクションがデータの更新を行なう。実
際にはそのサイトのDBMSが全てのサイトの更新を行
なうことになる。同一の重みで過半数を求めるのではな
く、重み付けを行なって投票する方法もある。
成功したトランザクションがデータの更新を行なう。実
際にはそのサイトのDBMSが全てのサイトの更新を行
なうことになる。同一の重みで過半数を求めるのではな
く、重み付けを行なって投票する方法もある。
【0007】この方式でも、前記全コピーロック方式と
同様、1つでもロックに失敗したトランザクションはロ
ックをアボートする。
同様、1つでもロックに失敗したトランザクションはロ
ックをアボートする。
【0008】(3)プライマリコピー方式
この方式では、1つのデータに対してプライマリとなる
データベースサイトを固定し、ロックはプライマリデー
タに対してのみ行なう。そして、ロックに成功したら、
そのサイトのDBMSが全てのサイトの更新を行なう。
データベースサイトを固定し、ロックはプライマリデー
タに対してのみ行なう。そして、ロックに成功したら、
そのサイトのDBMSが全てのサイトの更新を行なう。
【0009】(4)トークンパッシング
この方式では、図2に示すように、関連するサイト1〜
6で論理的なリングを構成し、トークンをあるサイトの
DBMSから別のサイトのDBMSへ渡す(例えば、サ
イト1からサイト2へ渡す)。トークンを渡されたDB
MSは自サイトのトランザクションで更新待ちになって
いるものがあるか調べ、あれば更新を行なう。トークン
の存在は、更新権の存在を意味する。
6で論理的なリングを構成し、トークンをあるサイトの
DBMSから別のサイトのDBMSへ渡す(例えば、サ
イト1からサイト2へ渡す)。トークンを渡されたDB
MSは自サイトのトランザクションで更新待ちになって
いるものがあるか調べ、あれば更新を行なう。トークン
の存在は、更新権の存在を意味する。
【0010】当該(4)の方式では、図3に示すよう
に、例えばサイト5で、あるデータの更新が行われた場
合には、他の全サイトの当該データに対してもトークン
を受け取ったときにそれと同じ内容の更新を実行するこ
とにより、データの一貫性を保持することができる。
に、例えばサイト5で、あるデータの更新が行われた場
合には、他の全サイトの当該データに対してもトークン
を受け取ったときにそれと同じ内容の更新を実行するこ
とにより、データの一貫性を保持することができる。
【0011】
【発明が解決しようとする課題】しかし、以上述べたい
ずれの方式であっても頑健性と少ない通信量、遅延量を
同時に満足することはできない。
ずれの方式であっても頑健性と少ない通信量、遅延量を
同時に満足することはできない。
【0012】すなわち、(1)、(2)の方式では必要
な数のロックに成功するまでに多くの通信量を要する
上、ロックに失敗した場合アボートし、ロックをやり直
さなければならない。
な数のロックに成功するまでに多くの通信量を要する
上、ロックに失敗した場合アボートし、ロックをやり直
さなければならない。
【0013】また、(3)の方式は単純であるが、プラ
イマリデータのあるサイトに障害があれば全システムの
停止につながるという意味で脆弱である。またアクセス
が集中しやすく、効率面でも問題である。
イマリデータのあるサイトに障害があれば全システムの
停止につながるという意味で脆弱である。またアクセス
が集中しやすく、効率面でも問題である。
【0014】さらに、(4)の方式は、通信量は比較的
少ないが、更新するときは更新が終了するまで他のサイ
トヘトークンを渡さないため、遅延が大きい。
少ないが、更新するときは更新が終了するまで他のサイ
トヘトークンを渡さないため、遅延が大きい。
【0015】また、どの方式も更新時に、更新を始める
サイトに負荷が集中するという問題がある。
サイトに負荷が集中するという問題がある。
【0016】
【課題を解決するための手段】かかる課題を解決するた
めに、本発明では、同じデータを複数のデータベースサ
ーバに冗長に配置して構成される分散データベースの同
時実行制御システムにおいて、(1)各データベースサ
ーバは、競合演算操作の対象となるデータを指定するデ
ータ指定情報と、(2)当該競合演算操作の内容を記述
した操作情報と、(3)各データベースサーバにおいて
該当するデータ指定情報に関する該当する操作情報の競
合演算操作が既に完了しているか否かを指定する操作完
了情報とを有するトークン構造体を、データベースサー
バ間で巡回させ、(4)受け取った当該トークン構造体
の有するデータ指定情報、操作情報、および操作完了情
報に応じたデータベース管理処理を、自動的に起動する
アクティブ起動手段を備えることを特徴とする。
めに、本発明では、同じデータを複数のデータベースサ
ーバに冗長に配置して構成される分散データベースの同
時実行制御システムにおいて、(1)各データベースサ
ーバは、競合演算操作の対象となるデータを指定するデ
ータ指定情報と、(2)当該競合演算操作の内容を記述
した操作情報と、(3)各データベースサーバにおいて
該当するデータ指定情報に関する該当する操作情報の競
合演算操作が既に完了しているか否かを指定する操作完
了情報とを有するトークン構造体を、データベースサー
バ間で巡回させ、(4)受け取った当該トークン構造体
の有するデータ指定情報、操作情報、および操作完了情
報に応じたデータベース管理処理を、自動的に起動する
アクティブ起動手段を備えることを特徴とする。
【0017】
【発明の実施の形態】(A)実施形態
以下、本発明にかかる分散データベースの同時実行制御
システムを、各データベースサーバのDBMSがリレー
ショナルモデルを提供する場合を例に、実施形態につい
て説明する。
システムを、各データベースサーバのDBMSがリレー
ショナルモデルを提供する場合を例に、実施形態につい
て説明する。
【0018】(A−1)第1の実施形態の構成
本実施形態の同時実行制御システムの論理的な全体構成
例は、図2と同様で、サイト間で論理的なリング状のネ
ットワークを構成するものであってよい。なお、1サイ
ト内に複数のデータベースサーバが存在することも可能
であるため、サイトとデータベースサーバは必ずしも1
対1に対応しないが、ここでは、1つのサイト内にはた
だ1つのデータベースサーバが存在するものとする。
例は、図2と同様で、サイト間で論理的なリング状のネ
ットワークを構成するものであってよい。なお、1サイ
ト内に複数のデータベースサーバが存在することも可能
であるため、サイトとデータベースサーバは必ずしも1
対1に対応しないが、ここでは、1つのサイト内にはた
だ1つのデータベースサーバが存在するものとする。
【0019】各サイト内のデータベースサーバは、実質
的に同じ構成のDBMS10を有している。当該DBM
S10の主要部の構成例は、図1に示す通りである。
的に同じ構成のDBMS10を有している。当該DBM
S10の主要部の構成例は、図1に示す通りである。
【0020】(A−1−1)DBMSの構成例
区1において、当該DBMS10は、データ格納部11
と、アクティブプログラム実行環境部12と、トランザ
クション制御部14と、アクティブプログラム実行制御
部13と、通信制御部15とを備えている。
と、アクティブプログラム実行環境部12と、トランザ
クション制御部14と、アクティブプログラム実行制御
部13と、通信制御部15とを備えている。
【0021】このうちデータ格納部11は実際のデータ
を格納する物理的なデータベースである。リレーショナ
ルモデルに対応する本実施形態の場合、当該データ格納
部11は関係データベースなので、格納されるデータの
データ構造は2次元のテーブル(すなわち、関係表)の
形態を有している。また、各サイトにおけるデータ格納
部11は、同じ論理データベースの断片であってよい。
断片は、論理データベースの関係表を、射影、制約によ
って分割することにより生成され得る。
を格納する物理的なデータベースである。リレーショナ
ルモデルに対応する本実施形態の場合、当該データ格納
部11は関係データベースなので、格納されるデータの
データ構造は2次元のテーブル(すなわち、関係表)の
形態を有している。また、各サイトにおけるデータ格納
部11は、同じ論理データベースの断片であってよい。
断片は、論理データベースの関係表を、射影、制約によ
って分割することにより生成され得る。
【0022】当該データ格納部11が格納しているデー
タのすべてが、必ずしも他のサイトのデータ格納部にも
冗長に格納されている必要はないが、分散データベース
である以上、少なくとも一部のデータは冗長に格納して
おく必要がある。スループットの向上、信頼性の向上、
可用性の向上などの分散データベースの利点は、同一の
データを複数のコンピュータ(すなわちデータベースサ
ーバ)に冗長に格納することによってはじめて得られる
ものである。
タのすべてが、必ずしも他のサイトのデータ格納部にも
冗長に格納されている必要はないが、分散データベース
である以上、少なくとも一部のデータは冗長に格納して
おく必要がある。スループットの向上、信頼性の向上、
可用性の向上などの分散データベースの利点は、同一の
データを複数のコンピュータ(すなわちデータベースサ
ーバ)に冗長に格納することによってはじめて得られる
ものである。
【0023】また、前記通信制御部15は、複数のクラ
イアントを接続している。そのうちの1つであるクライ
アント16は、ユーザU1の要求に応じてアプリケーシ
ョンAL1を起動する部分である。当該アプリケーショ
ンAL1が、DBMS10に対し、データ格納部11が
格納しているデータに対するデータ操作要求(データの
検索や更新などの要求)を行う。
イアントを接続している。そのうちの1つであるクライ
アント16は、ユーザU1の要求に応じてアプリケーシ
ョンAL1を起動する部分である。当該アプリケーショ
ンAL1が、DBMS10に対し、データ格納部11が
格納しているデータに対するデータ操作要求(データの
検索や更新などの要求)を行う。
【0024】当該通信制御部15はまた、クライアント
だけでなく、他のサイト(当該DBMS10がサイト4
のDBMSであるとすると、例えば、サイト1など)の
DBMSとのあいだで、後述するアクティブプログラム
AP1を送受し、巡回させる機能も備えている。簡単の
ためにリングを構成するサイトの数を4つとし、4→1
→2→3→4→…の転送を繰り返すことによって当該ア
クティブプログラムAP1を巡回させるものとすると、
サイト4のDBMS10は、サイト3のDBMSからア
クティブプログラムAP1を受信し、サイト1のDBM
Sに対してアクティブプログラムAP1を送信すること
となる。
だけでなく、他のサイト(当該DBMS10がサイト4
のDBMSであるとすると、例えば、サイト1など)の
DBMSとのあいだで、後述するアクティブプログラム
AP1を送受し、巡回させる機能も備えている。簡単の
ためにリングを構成するサイトの数を4つとし、4→1
→2→3→4→…の転送を繰り返すことによって当該ア
クティブプログラムAP1を巡回させるものとすると、
サイト4のDBMS10は、サイト3のDBMSからア
クティブプログラムAP1を受信し、サイト1のDBM
Sに対してアクティブプログラムAP1を送信すること
となる。
【0025】次に、トランザクション制御部14はクラ
イアント16からのデータ操作要求にしたがいトランザ
クションを実行する部分である。ここで、トランザクシ
ョンとは、クライアント16からのデータ操作要求に応
じて実行される1または複数の操作演算の系列である。
操作演算には、書込み演算や読出し演算などが含まれ
る。
イアント16からのデータ操作要求にしたがいトランザ
クションを実行する部分である。ここで、トランザクシ
ョンとは、クライアント16からのデータ操作要求に応
じて実行される1または複数の操作演算の系列である。
操作演算には、書込み演算や読出し演算などが含まれ
る。
【0026】クライアントは前記断片がどのように生成
されたか、あるいは、各データが各サイトのデータ格納
部(11)内に冗長に格納されているか否かとは独立に
前記論理データベースを操作し、データ操作を実行でき
る必要があるため、前記論理データベースに対して行わ
れるクライアントからのデータ操作要求は、自動的に、
各断片(各サイトのデータ格納部11)に対するトラン
ザクションに変換される。
されたか、あるいは、各データが各サイトのデータ格納
部(11)内に冗長に格納されているか否かとは独立に
前記論理データベースを操作し、データ操作を実行でき
る必要があるため、前記論理データベースに対して行わ
れるクライアントからのデータ操作要求は、自動的に、
各断片(各サイトのデータ格納部11)に対するトラン
ザクションに変換される。
【0027】分散データベースでは、複数のトランザク
ションが並列実行(交互実行)されるため、並列実行の
正当性を担保する必要がある。トランザクションの正当
な並列実行とは、並列実行せずに直列実行を行った場
合、すなわち、第1のトランザクションの全演算を実行
し終えたあとで、第2のトランザクションの演算の実行
を開始し、当該第2のトランザクションの全演算を実行
し終えたあとで、第3のトランザクションの演算の実行
を開始し、…というように、同時には単独のトランザク
ションだけを実行した場合の最終的なデータの状態と、
当該並列実行を行ったあとの最終的なデータの状態とが
完全に同じになる並列実行である。このような並列実行
の正当性のことを、直列可能性という。
ションが並列実行(交互実行)されるため、並列実行の
正当性を担保する必要がある。トランザクションの正当
な並列実行とは、並列実行せずに直列実行を行った場
合、すなわち、第1のトランザクションの全演算を実行
し終えたあとで、第2のトランザクションの演算の実行
を開始し、当該第2のトランザクションの全演算を実行
し終えたあとで、第3のトランザクションの演算の実行
を開始し、…というように、同時には単独のトランザク
ションだけを実行した場合の最終的なデータの状態と、
当該並列実行を行ったあとの最終的なデータの状態とが
完全に同じになる並列実行である。このような並列実行
の正当性のことを、直列可能性という。
【0028】トランザクションを構成する読出し演算を
実行してもデータの内容に変化は生じないため読出し演
算相互間では競合関係(排他的な関係)は発生しない
が、書込み演算相互間、あるいは読出し演算と書込み演
算の間では、競合関係が発生し得る。直列可能性を確保
するためには、このような競合関係にある演算の実行順
序を一定に維持する必要がある。
実行してもデータの内容に変化は生じないため読出し演
算相互間では競合関係(排他的な関係)は発生しない
が、書込み演算相互間、あるいは読出し演算と書込み演
算の間では、競合関係が発生し得る。直列可能性を確保
するためには、このような競合関係にある演算の実行順
序を一定に維持する必要がある。
【0029】次に、アクティブプログラム実行制御部1
3は、通信制御部15から受け取った前記アクティブプ
ログラムAP1をアクティブプログラム実行環境部12
に渡し、当該アクティブプログラム実行環境部12で自
動的に起動させるなどの実行制御を行なう部分である。
3は、通信制御部15から受け取った前記アクティブプ
ログラムAP1をアクティブプログラム実行環境部12
に渡し、当該アクティブプログラム実行環境部12で自
動的に起動させるなどの実行制御を行なう部分である。
【0030】一般にアクティブプログラムとは、ノード
からノードヘ伝搬しながら、あるタスクを果たすソフト
ウェアプログラムを指す。伝搬するプログラムのサイズ
を小さくし、共通で使われるモジュールの保守性をよく
するために各サイトにプレインズトールするプログラム
モジュールが用意されるのが普通である。プログラムモ
ジュールがプレインズトールされている場合、アクティ
ブプログラムはサイトにプレインズトールされたプログ
ラムモジュールを参照して実行される。プレインズトー
ルするプログラムはプログラムモジュール用のサーバか
らダウンロードするなどしてインストールされる。当該
プログラムモジュールはアクティブプログラム実行環境
部12の構成要素となる。
からノードヘ伝搬しながら、あるタスクを果たすソフト
ウェアプログラムを指す。伝搬するプログラムのサイズ
を小さくし、共通で使われるモジュールの保守性をよく
するために各サイトにプレインズトールするプログラム
モジュールが用意されるのが普通である。プログラムモ
ジュールがプレインズトールされている場合、アクティ
ブプログラムはサイトにプレインズトールされたプログ
ラムモジュールを参照して実行される。プレインズトー
ルするプログラムはプログラムモジュール用のサーバか
らダウンロードするなどしてインストールされる。当該
プログラムモジュールはアクティブプログラム実行環境
部12の構成要素となる。
【0031】アクティブプログラムAP1は、図4に示
す宛先リストと、図5に示す更新内容キューを備え、さ
らに、前記プログラムモジュールと連携して当該更新内
容キュー等に対応した処理を実行するためのコード(例
えば、中間コード状態のコードでもよい)を備えてい
る。
す宛先リストと、図5に示す更新内容キューを備え、さ
らに、前記プログラムモジュールと連携して当該更新内
容キュー等に対応した処理を実行するためのコード(例
えば、中間コード状態のコードでもよい)を備えてい
る。
【0032】更新内容キューは、広義の更新(すなわ
ち、データの変更、挿入、削除)の内容を示したキュー
である。また更新内容キューに対応した処理とは、更新
内容キューに応じて実行されるデータ格納部11に対す
る読出し演算、書込み演算、削除演算などである。な
お、削除演算は、削除するデータのサイズやDBMS1
0の実装によっては、物理的に書込み演算(無効を意味
するビットパターンの書込み等)に等しい操作となる可
能性も高い。
ち、データの変更、挿入、削除)の内容を示したキュー
である。また更新内容キューに対応した処理とは、更新
内容キューに応じて実行されるデータ格納部11に対す
る読出し演算、書込み演算、削除演算などである。な
お、削除演算は、削除するデータのサイズやDBMS1
0の実装によっては、物理的に書込み演算(無効を意味
するビットパターンの書込み等)に等しい操作となる可
能性も高い。
【0033】更新内容キューの実現には様々な方法が考
えられるが、一般的には、リスト構造を利用して論理的
に実現するのが普通である。
えられるが、一般的には、リスト構造を利用して論理的
に実現するのが普通である。
【0034】図4において、サイト番号1〜4は、各サ
イト(すなわち、各データベースサーバ)を識別するた
めの番号であり、アドレスは各サイトのアドレスであ
る。図示の例では、一例として、IPアドレスの10進
表現をドット表記したものを示している。当該アドレス
(例えば、172.18.209.171)は、アクテ
ィブプログラムAP1をサイト1〜4間で巡回するため
に、自サイトから送信すべきサイトのアドレスを認識す
るのに利用することができる。
イト(すなわち、各データベースサーバ)を識別するた
めの番号であり、アドレスは各サイトのアドレスであ
る。図示の例では、一例として、IPアドレスの10進
表現をドット表記したものを示している。当該アドレス
(例えば、172.18.209.171)は、アクテ
ィブプログラムAP1をサイト1〜4間で巡回するため
に、自サイトから送信すべきサイトのアドレスを認識す
るのに利用することができる。
【0035】また、図5において、データ項目A、B、
Dは、演算の対象となるデータであって、サイト1〜4
のうち少なくとも2つのサイトで冗長に持っている可能
性のあるデータを指定する部分である。ここでは、デー
タ格納部11が格納しているデータを変化させる書込み
演算と削除演算によって実行される更新の対象になるデ
ータ項目だけを示している。
Dは、演算の対象となるデータであって、サイト1〜4
のうち少なくとも2つのサイトで冗長に持っている可能
性のあるデータを指定する部分である。ここでは、デー
タ格納部11が格納しているデータを変化させる書込み
演算と削除演算によって実行される更新の対象になるデ
ータ項目だけを示している。
【0036】図5に示す更新内容キューのなかの更新内
容は、更新後の各データの内容を示した部分である。
容は、更新後の各データの内容を示した部分である。
【0037】また、更新内容の右側にある4×4の更新
状態マトリックスLGは、各サイト1〜4において各デ
ータ項目の更新が終了したか否か、すなわち更新状態を
示す部分で、各サイトにおけるログ情報をまとめたもの
に相当する。更新状態マトリックスLGのなかで、更新
状態1は更新終了を示し、更新状態0は未更新を示す。
状態マトリックスLGは、各サイト1〜4において各デ
ータ項目の更新が終了したか否か、すなわち更新状態を
示す部分で、各サイトにおけるログ情報をまとめたもの
に相当する。更新状態マトリックスLGのなかで、更新
状態1は更新終了を示し、更新状態0は未更新を示す。
【0038】したがって、上述した巡回の順序(4→1
→2→3→4→…)と当該更新状態マトリックスLGの
内容を対比すると、データ項目A、更新内容1、更新状
態1110のタプルTU1は、サイト1のトランザクシ
ョンの構成要素である書込み演算に起因して生成された
タプルであり、サイト1の次にアクティブプログラムA
P1を受け取るサイト2、その次に受け取るサイト3で
はすでに対応する更新が終了して更新状態が1となって
いるものの、アクティブプログラムAP1を受け取った
ばかりのサイト4ではまだ、その更新が終了していない
ために更新状態が0である。
→2→3→4→…)と当該更新状態マトリックスLGの
内容を対比すると、データ項目A、更新内容1、更新状
態1110のタプルTU1は、サイト1のトランザクシ
ョンの構成要素である書込み演算に起因して生成された
タプルであり、サイト1の次にアクティブプログラムA
P1を受け取るサイト2、その次に受け取るサイト3で
はすでに対応する更新が終了して更新状態が1となって
いるものの、アクティブプログラムAP1を受け取った
ばかりのサイト4ではまだ、その更新が終了していない
ために更新状態が0である。
【0039】他のタプルTU2〜TU4についても同様
で、タプルTU2はサイト2のトランザクションの構成
要素である書込み演算に起因して生成されたタプルであ
り、タプルTU3はサイト3のトランザクションの構成
要素である書込み演算に起因して生成されたタプルであ
り、タプルTU4はサイト4のトランザクションの構成
要素である削除演算(書込み演算)に起因して生成され
たタプルであることがわかる。
で、タプルTU2はサイト2のトランザクションの構成
要素である書込み演算に起因して生成されたタプルであ
り、タプルTU3はサイト3のトランザクションの構成
要素である書込み演算に起因して生成されたタプルであ
り、タプルTU4はサイト4のトランザクションの構成
要素である削除演算(書込み演算)に起因して生成され
たタプルであることがわかる。
【0040】そして、すべてのサイト1〜4における更
新が終了したデータに対応するタプルは、当該更新内容
キューから削除される。例えば、図示の状態で、タプル
TU1のなかの更新状態は、1110となっているが、
サイト4によって当該更新が終了して、更新状態が11
11となると、当該データAに関する更新内容1の更新
につき、サイト1〜4間で、データの一貫性が確保され
たことになるので、当該タプルTU1は、更新状態マト
リックスLGの対応する行(図示の状態で1110の
行)も含めて削除されることになる。
新が終了したデータに対応するタプルは、当該更新内容
キューから削除される。例えば、図示の状態で、タプル
TU1のなかの更新状態は、1110となっているが、
サイト4によって当該更新が終了して、更新状態が11
11となると、当該データAに関する更新内容1の更新
につき、サイト1〜4間で、データの一貫性が確保され
たことになるので、当該タプルTU1は、更新状態マト
リックスLGの対応する行(図示の状態で1110の
行)も含めて削除されることになる。
【0041】なお、後述する図6のフローチャートの内
容を考慮すると、アクティブプログラムAP1が存在し
ているサイト(ここでは、サイト4)における更新は、
それ以前のサイトにおける更新に対するデータの一貫性
を持たせる処理のあとで実行されるため、本実施形態の
更新内容キューは図5に示したような状態を取ることは
実際にはあり得ない(タプルTU4におけるサイト4の
更新状態が1となる前に、タプルTU1〜TU3のサイ
ト4における更新状態が1となるため)。
容を考慮すると、アクティブプログラムAP1が存在し
ているサイト(ここでは、サイト4)における更新は、
それ以前のサイトにおける更新に対するデータの一貫性
を持たせる処理のあとで実行されるため、本実施形態の
更新内容キューは図5に示したような状態を取ることは
実際にはあり得ない(タプルTU4におけるサイト4の
更新状態が1となる前に、タプルTU1〜TU3のサイ
ト4における更新状態が1となるため)。
【0042】また、読出し演算によって得られたデータ
の内容などは、1つのトランザクションが正常終了(コ
ミット)したときにまとめてクライアント16上のアプ
リケーションAL1に返すようにするとよい。
の内容などは、1つのトランザクションが正常終了(コ
ミット)したときにまとめてクライアント16上のアプ
リケーションAL1に返すようにするとよい。
【0043】以下、上記のような構成を有する本実施形
態の動作について、図6、図7のフローチャートを参照
しながら説明する。
態の動作について、図6、図7のフローチャートを参照
しながら説明する。
【0044】図6のフローチャートは、P1〜P5の各
ステップから構成されており、図7のフローチャート
は、P11〜P15の各ステップから構成されている。
ステップから構成されており、図7のフローチャート
は、P11〜P15の各ステップから構成されている。
【0045】(A−2)第1の実施形態の動作図6は、
前記アクティブプログラムAP1が実行する処理を示し
たフローチャートであり、図7は、アクティブプログラ
ムAP1受信時のDBMS10の処理を示すフローチャ
ートである。両者は、まったく同一の処理を、異なる観
点からみたものである。
前記アクティブプログラムAP1が実行する処理を示し
たフローチャートであり、図7は、アクティブプログラ
ムAP1受信時のDBMS10の処理を示すフローチャ
ートである。両者は、まったく同一の処理を、異なる観
点からみたものである。
【0046】図6および図7において、アクティブプロ
グラムAP1は、その内部で保持する図4の宛先リスト
に従い、次のサイトヘ自ら移動する(P1)。ただし、
この移動は、アクティブプログラム実行環境部12や通
信制御部15の支援があって実現されるものであること
は当然である(サイト3におけるP15)。
グラムAP1は、その内部で保持する図4の宛先リスト
に従い、次のサイトヘ自ら移動する(P1)。ただし、
この移動は、アクティブプログラム実行環境部12や通
信制御部15の支援があって実現されるものであること
は当然である(サイト3におけるP15)。
【0047】ここでは、この移動により、アクティブプ
ログラムAP1が、サイト3のDBMSから、図1に示
すサイト4のDBMS10へ到達したものとする。DB
MS10に到達したアクティブプログラムAP1は、通
信制御部15を介してアクティブプログラム実行環境部
12に転送され、当該アクティブプログラム実行環境部
12において自動的に起動される(P11、P12)。
ログラムAP1が、サイト3のDBMSから、図1に示
すサイト4のDBMS10へ到達したものとする。DB
MS10に到達したアクティブプログラムAP1は、通
信制御部15を介してアクティブプログラム実行環境部
12に転送され、当該アクティブプログラム実行環境部
12において自動的に起動される(P11、P12)。
【0048】これにより、アクティブプログラムAP1
は、内部で保持する更新内容キューを参照し、キューの
先頭から順に更新データを取り出し、DBMS10に対
して該当するデータの更新を要求し、DBMS10側の
トランザクション制御部14ではこの要求に応える(P
13)。図5の状態では、タプルTU1がキューの先頭
にあたるため、TU1、TU2、TU3の順番でデータ
の更新が要求されることになる。
は、内部で保持する更新内容キューを参照し、キューの
先頭から順に更新データを取り出し、DBMS10に対
して該当するデータの更新を要求し、DBMS10側の
トランザクション制御部14ではこの要求に応える(P
13)。図5の状態では、タプルTU1がキューの先頭
にあたるため、TU1、TU2、TU3の順番でデータ
の更新が要求されることになる。
【0049】必ずしも該当するデータをサイト4のDB
MS10が管理している(すなわち、データ格納部11
に格納している)わけではないので、非存在エラーが発
生するかもしれないが、非存在エラーが発生した場合に
は、擬似正常終了とし、当該タプルに対応する更新が正
常に終了した場合と同様に、更新状態を1にする。非存
在エラーが発生したときに更新状態を1としなけれぱ、
アクティブプログラムAP1が巡回を繰り返すことによ
って、更新内容キューのサイズが際限なく大きくなって
しまう等の不都合が生じるからである。
MS10が管理している(すなわち、データ格納部11
に格納している)わけではないので、非存在エラーが発
生するかもしれないが、非存在エラーが発生した場合に
は、擬似正常終了とし、当該タプルに対応する更新が正
常に終了した場合と同様に、更新状態を1にする。非存
在エラーが発生したときに更新状態を1としなけれぱ、
アクティブプログラムAP1が巡回を繰り返すことによ
って、更新内容キューのサイズが際限なく大きくなって
しまう等の不都合が生じるからである。
【0050】例えば、図5に示すデータA、Dはサイト
4のDBMS10が管理しているものの、データBにつ
いては管理していない場合には、ステップP2で、アク
ティブプログラム実行環境部12から、まず最初にタプ
ルTU1に対応して、データAを1に上書きする更新要
求が行われて、その更新が実行されタプルTU1の更新
状態が1111となったところで、当該タプルTU1は
削除する。
4のDBMS10が管理しているものの、データBにつ
いては管理していない場合には、ステップP2で、アク
ティブプログラム実行環境部12から、まず最初にタプ
ルTU1に対応して、データAを1に上書きする更新要
求が行われて、その更新が実行されタプルTU1の更新
状態が1111となったところで、当該タプルTU1は
削除する。
【0051】次に、ステップP3は、まだ更新すべきタ
プルTU2が存在するためYes側に分岐して、当該タ
プルTU2に対応する更新要求が行われ(P2)、その
更新が実行されると、該当する更新状態を0から1に変
化させる。これによりタプルTU2の更新状態はそれま
での0110から0111に変化するが、まだサイト1
による更新が終了していないために当該タプルTU2は
削除されない。
プルTU2が存在するためYes側に分岐して、当該タ
プルTU2に対応する更新要求が行われ(P2)、その
更新が実行されると、該当する更新状態を0から1に変
化させる。これによりタプルTU2の更新状態はそれま
での0110から0111に変化するが、まだサイト1
による更新が終了していないために当該タプルTU2は
削除されない。
【0052】このあとのステップP3でも、タプルTU
3に対応する更新を行うために再度Yes側に分岐し、
その更新を実行後、該当する更新状態は1になされる。
3に対応する更新を行うために再度Yes側に分岐し、
その更新を実行後、該当する更新状態は1になされる。
【0053】当該タプルTU3以降にはタプルは存在し
ない(タプルTU4はこの時点ではまだ生成されていな
い)ため、今度は、ステップP3はNo側に分岐して処
理はステップP4に進む。
ない(タプルTU4はこの時点ではまだ生成されていな
い)ため、今度は、ステップP3はNo側に分岐して処
理はステップP4に進む。
【0054】ステップP4ではそのサイト(ここでは、
サイト4)からのデータ更新要求があるか否かが検査さ
れ、無ければNo側に分岐して次の巡回先サイトである
サイト1へ、アクティブプログラムAP1が送信され、
有ればYes側に分岐してステップP5の処理が行われ
る。
サイト4)からのデータ更新要求があるか否かが検査さ
れ、無ければNo側に分岐して次の巡回先サイトである
サイト1へ、アクティブプログラムAP1が送信され、
有ればYes側に分岐してステップP5の処理が行われ
る。
【0055】図5では、当該サイト4で、データDの削
除(書込み演算)を含むトランザクションが前記クライ
アント16上のアプリケーションAL1から供給されて
いるケースに対応する。
除(書込み演算)を含むトランザクションが前記クライ
アント16上のアプリケーションAL1から供給されて
いるケースに対応する。
【0056】もしも当該データDがサイト4のDBMS
10が搭載するデータ格納部11だけにしか存在せず、
他のサイト1〜3のデータ格納部には存在しないことが
予め判明している場合には、当該データDの削除を行っ
たとしても、それに応じて当該タプルTU4を更新内容
キューに入れる必要はない。
10が搭載するデータ格納部11だけにしか存在せず、
他のサイト1〜3のデータ格納部には存在しないことが
予め判明している場合には、当該データDの削除を行っ
たとしても、それに応じて当該タプルTU4を更新内容
キューに入れる必要はない。
【0057】ただしここでは、当該データDがサイト4
以外のDBMSが搭載するデータ格納部にも存在するこ
とが判明しているか、判明していないとしても、少なく
とも存在する可能性が0でないものとして、ステップP
5で、当該タプルTU4を更新内容キューの最後尾に格
納している。図5の状態では、すでにサイト4における
データDの削除は終了しているため、タプルTU4の更
新状態は、0001である。
以外のDBMSが搭載するデータ格納部にも存在するこ
とが判明しているか、判明していないとしても、少なく
とも存在する可能性が0でないものとして、ステップP
5で、当該タプルTU4を更新内容キューの最後尾に格
納している。図5の状態では、すでにサイト4における
データDの削除は終了しているため、タプルTU4の更
新状態は、0001である。
【0058】サイト4の当該データDの削除を含むトラ
ンザクションに、当該削除以外の操作演算が含まれてい
る場合には、その操作演算の数だけ、タプルTU4の下
に後続のタプルが連続生成されることになる。そしてこ
の時点では、これらタプルの更新状態は、タプルTU4
と同じ0001である。
ンザクションに、当該削除以外の操作演算が含まれてい
る場合には、その操作演算の数だけ、タプルTU4の下
に後続のタプルが連続生成されることになる。そしてこ
の時点では、これらタプルの更新状態は、タプルTU4
と同じ0001である。
【0059】ただしこのケースでは当該トランザクショ
ンに含まれている操作演算は1つだけで、当該タプルT
U4に対応する更新以外には、更新内容キューに入れる
べき更新に対応するクライアント(16など)からの更
新要求はないため、処理は前記ステップP1に進む。
ンに含まれている操作演算は1つだけで、当該タプルT
U4に対応する更新以外には、更新内容キューに入れる
べき更新に対応するクライアント(16など)からの更
新要求はないため、処理は前記ステップP1に進む。
【0060】ステップP1によってサイト4からアクテ
ィブプログラムAP1を受け取るサイト1や、それ以降
に受け取るサイト2、サイト3などでも、図6、図7の
フローチャートにしたがって以上と同様な処理が行われ
得る。
ィブプログラムAP1を受け取るサイト1や、それ以降
に受け取るサイト2、サイト3などでも、図6、図7の
フローチャートにしたがって以上と同様な処理が行われ
得る。
【0061】アクティブプログラムAP1を巡回するサ
イトの順番が一定なので、以上の処理によって、上述し
た直列可能性が確保できることは明白である。
イトの順番が一定なので、以上の処理によって、上述し
た直列可能性が確保できることは明白である。
【0062】一方、各DBMSは自サイトのクライアン
トからのトランザクション処理を行なう。トランザクシ
ョンは2相ロックを使って実行される。2相ロックで
は、前記競合関係にある演算の処理に先立って全ての必
要なデータのロックを行ない、処理の最後に全てのロッ
クしたデータをアンロックする。
トからのトランザクション処理を行なう。トランザクシ
ョンは2相ロックを使って実行される。2相ロックで
は、前記競合関係にある演算の処理に先立って全ての必
要なデータのロックを行ない、処理の最後に全てのロッ
クしたデータをアンロックする。
【0063】トランザクションはアクティブプログラム
AP1を受信していないときにロックが必要となると、
当該トランザクション処理はブロックしておき、アクテ
ィブプログラムAP1を受信したときに図7の処理を行
なう。
AP1を受信していないときにロックが必要となると、
当該トランザクション処理はブロックしておき、アクテ
ィブプログラムAP1を受信したときに図7の処理を行
なう。
【0064】ブロックしていたトランザクション処理
は、図7のステップP14で、最後まで実行される。必
要なロックはアクティブプログラムAP1の受信時点で
全て得られるからである。当該トランザクション処理が
データの更新を伴うときは、自サイトのデータ更新を行
なってから、アクティブプログラムAP1に対し、自サ
イトからのデータ更新要求を送る。これにより、アクテ
ィブプログラムAP1の内部の更新内容キューには、当
該データ更新要求に対応した1または複数の新たなタプ
ルが生成されることとなる。
は、図7のステップP14で、最後まで実行される。必
要なロックはアクティブプログラムAP1の受信時点で
全て得られるからである。当該トランザクション処理が
データの更新を伴うときは、自サイトのデータ更新を行
なってから、アクティブプログラムAP1に対し、自サ
イトからのデータ更新要求を送る。これにより、アクテ
ィブプログラムAP1の内部の更新内容キューには、当
該データ更新要求に対応した1または複数の新たなタプ
ルが生成されることとなる。
【0065】図5の更新内容キューでは、各タプルTU
1〜TU4のそれぞれを1つのトランザクションに対応
するものとみることができるが、その場合、各トランザ
クションは1つの操作演算しか含まれていない簡単なも
のである。1トランザクション中に複数の操作演算が含
まれたもう少し複雑な例を想定すると、例えば、次のよ
うなトランザクションTR1〜TR4があり得る。な
お、あるサイトがクライアントから受け取ったデータ操
作要求に対応するトランザクションの処理は、これらト
ランザクションTR1〜TR4の各サイトにおける処理
と並行に実行される。
1〜TU4のそれぞれを1つのトランザクションに対応
するものとみることができるが、その場合、各トランザ
クションは1つの操作演算しか含まれていない簡単なも
のである。1トランザクション中に複数の操作演算が含
まれたもう少し複雑な例を想定すると、例えば、次のよ
うなトランザクションTR1〜TR4があり得る。な
お、あるサイトがクライアントから受け取ったデータ操
作要求に対応するトランザクションの処理は、これらト
ランザクションTR1〜TR4の各サイトにおける処理
と並行に実行される。
【0066】ここでは、データA、B、Cは全てのサイ
ト1〜4が冗長に保持するものとしている。
ト1〜4が冗長に保持するものとしている。
【0067】
サイト1:データAのロック。データAの更新。データAのアンロック。
…TR1
サイト2:データA、Bのロック。データA,Bの更新。データA、Bの
アンロック …TR2
サイト3:データCの読み取り。データAのロック。データAの更新。デ
ータAのアンロック …TR3
サイト4:データB、Cのロック。データB,Cの更新。データB、Cの
アンロック。 …TR4
サイト1がクライアントから受け取るトランザクション
TR1では、データAの更新操作WA1が行われ、サイ
ト2がクライアントから受け取るトランザクションTR
2では、データAの更新操作WA2とデータBの更新操
作WB1が行われ、サイト3がクライアントから受け取
るトランザクションTR3では、データCの読み取り操
作RC1と、データAの更新操作WA3が行われ、サイ
ト4がクライアントから受け取るトランザクションTR
4には、データBの更新操作WB2とデータCの更新操
作WC1が行われる。
TR1では、データAの更新操作WA1が行われ、サイ
ト2がクライアントから受け取るトランザクションTR
2では、データAの更新操作WA2とデータBの更新操
作WB1が行われ、サイト3がクライアントから受け取
るトランザクションTR3では、データCの読み取り操
作RC1と、データAの更新操作WA3が行われ、サイ
ト4がクライアントから受け取るトランザクションTR
4には、データBの更新操作WB2とデータCの更新操
作WC1が行われる。
【0068】アクティブプログラムAP1はサイト1→
2→3→4→1…の順に巡回するとする(以下の時刻t
1〜t7は等間隔な時間の区切りを表すものではなく、
アクティブプログラムAP1が移動した時点を表す)。
また、以下に記述した処理は、主として、前記ステップ
P2、P3、P13、P14における処理の内容を示
す。
2→3→4→1…の順に巡回するとする(以下の時刻t
1〜t7は等間隔な時間の区切りを表すものではなく、
アクティブプログラムAP1が移動した時点を表す)。
また、以下に記述した処理は、主として、前記ステップ
P2、P3、P13、P14における処理の内容を示
す。
【0069】時刻t1:アクティブプログラムAP1は
サイト1へ移動する。サイト1はデータAに対し更新操
作WA1を実行する。このとき、更新内容キューの最後
尾に、当該更新操作WA1に対応するタプルを追加す
る。
サイト1へ移動する。サイト1はデータAに対し更新操
作WA1を実行する。このとき、更新内容キューの最後
尾に、当該更新操作WA1に対応するタプルを追加す
る。
【0070】サイト3ではデータCの読み取りが他の演
算とのあいだに前記競合関係を持たなければ、ロックは
必要ないため、この時点でデータCの読み取り操作RC
1を実行して、トランザクションTR3の一部を実行す
ることが可能である。
算とのあいだに前記競合関係を持たなければ、ロックは
必要ないため、この時点でデータCの読み取り操作RC
1を実行して、トランザクションTR3の一部を実行す
ることが可能である。
【0071】また、ここでは、データA、B、Cは全て
のサイト1〜4が冗長に保持するものとの前提を置いて
いるが、一般的な分散データベースにはこのような前提
を置くことはできず、データCの有効な検索結果を得る
ためには他のサイトの検索も必要である。例えば、サイ
ト3のデータ格納部にはデータCが存在せず、他のサイ
ト(例えば、サイト1)のデータ格納部に存在している
可能性もあるからである。
のサイト1〜4が冗長に保持するものとの前提を置いて
いるが、一般的な分散データベースにはこのような前提
を置くことはできず、データCの有効な検索結果を得る
ためには他のサイトの検索も必要である。例えば、サイ
ト3のデータ格納部にはデータCが存在せず、他のサイ
ト(例えば、サイト1)のデータ格納部に存在している
可能性もあるからである。
【0072】トランザクションTR1〜TR4中のデー
タCの読み取り操作RC1以外の処理(操作)はすべ
て、排他的な関係にあり、ロックが必要であるため、ア
クティブプログラムAP1が受信されるまでブロックさ
れる。
タCの読み取り操作RC1以外の処理(操作)はすべ
て、排他的な関係にあり、ロックが必要であるため、ア
クティブプログラムAP1が受信されるまでブロックさ
れる。
【0073】時刻t2:アクティブプログラムAP1は
サイト2へ移動する。サイト2のトランザクション制御
部14はアクティブプログラムAP1からの要求に従
い、前記更新操作WA1に応じてデータAを更新したの
ち、ブロックしていた処理を再開し、データAの更新操
作WA2と、データBの更新操作WB1とを実行する。
このとき、更新内容キューの最後尾に、当該更新操作W
A2とWB1の内容に対応するタプルが、この順番で追
加される。
サイト2へ移動する。サイト2のトランザクション制御
部14はアクティブプログラムAP1からの要求に従
い、前記更新操作WA1に応じてデータAを更新したの
ち、ブロックしていた処理を再開し、データAの更新操
作WA2と、データBの更新操作WB1とを実行する。
このとき、更新内容キューの最後尾に、当該更新操作W
A2とWB1の内容に対応するタプルが、この順番で追
加される。
【0074】時刻t3:当該更新内容キューを収容した
アクティブプログラムAP1はサイト3へ移動する。
アクティブプログラムAP1はサイト3へ移動する。
【0075】サイト3はアクティブプログラムAP1か
らの要求に従い、サイト1によるデータAの更新操作W
A1、サイト2によるデータAの更新操作WA2,サイ
ト2によるデータBの更新操作WB1を行った後、ブロ
ックしていた処理を再開して、データAに対し更新操作
WA3を実行する。
らの要求に従い、サイト1によるデータAの更新操作W
A1、サイト2によるデータAの更新操作WA2,サイ
ト2によるデータBの更新操作WB1を行った後、ブロ
ックしていた処理を再開して、データAに対し更新操作
WA3を実行する。
【0076】読み取り操作RC1ではデータCの内容に
変化は生じないものの、データCの実体がサイト3のデ
ータ格納部に存在しないことも有り得るため、必要に応
じて、当該サイト3では、更新操作WA3に対応したタ
プルだけでなく、当該読み取り操作RC1に対応するタ
プルを更新内容キューの最後尾に入れてもよい。その場
合、順番は、トランザクションTR3に対応して、読み
取り操作RC1、更新操作WA3の順番になる。
変化は生じないものの、データCの実体がサイト3のデ
ータ格納部に存在しないことも有り得るため、必要に応
じて、当該サイト3では、更新操作WA3に対応したタ
プルだけでなく、当該読み取り操作RC1に対応するタ
プルを更新内容キューの最後尾に入れてもよい。その場
合、順番は、トランザクションTR3に対応して、読み
取り操作RC1、更新操作WA3の順番になる。
【0077】データCの実体を格納しているデータ格納
部を持つサイトで、読み取り操作RC1に応じた有効な
データCが得られた場合には、そのデータCの内容は、
別途、サイト3まで送信されることとなる。
部を持つサイトで、読み取り操作RC1に応じた有効な
データCが得られた場合には、そのデータCの内容は、
別途、サイト3まで送信されることとなる。
【0078】時刻t4:当該更新操作WA1の更新内容
キューを収容したアクティブプログラムAP1はサイト
4へ移動する。サイト4はアクティブプログラムAP1
からの要求に従い、サイト1によるデータAの更新操作
WA1、サイト2によるデータA,Bの更新操作WA
2、WB1、サイト3によるデータAの更新操作WA3
を行った後、ブロックしていた処理を再開して、データ
Bの更新操作WB2とデータCの更新操作WC1を実行
する。そして、当該更新操作WB2とWC1に対応する
タプルが、この順番で、更新内容キューの最後尾に追加
される。
キューを収容したアクティブプログラムAP1はサイト
4へ移動する。サイト4はアクティブプログラムAP1
からの要求に従い、サイト1によるデータAの更新操作
WA1、サイト2によるデータA,Bの更新操作WA
2、WB1、サイト3によるデータAの更新操作WA3
を行った後、ブロックしていた処理を再開して、データ
Bの更新操作WB2とデータCの更新操作WC1を実行
する。そして、当該更新操作WB2とWC1に対応する
タプルが、この順番で、更新内容キューの最後尾に追加
される。
【0079】当該サイト4の処理によって、サイト1に
よるデータAの更新操作WA1は全てのサイト1〜4で
反映され、更新操作WA1に関するデータAの一頁性が
確保されたので、当該更新操作WA1に対応するタプル
(キューの先頭のタプル)は更新内容キューから除去す
る。
よるデータAの更新操作WA1は全てのサイト1〜4で
反映され、更新操作WA1に関するデータAの一頁性が
確保されたので、当該更新操作WA1に対応するタプル
(キューの先頭のタプル)は更新内容キューから除去す
る。
【0080】時刻t5:当該タプルの除去を受け、前記
更新操作WB2とWC1に対応するタプルの追加を受け
た更新内容キューを収容したアクティブプログラムAP
1は、再ぴサイト1へ移動する。
更新操作WB2とWC1に対応するタプルの追加を受け
た更新内容キューを収容したアクティブプログラムAP
1は、再ぴサイト1へ移動する。
【0081】サイト1はアクティブプログラムAP1か
らの要求に従い、サイト2によるデータA,Bの更新操
作WA2、WB1、サイト3によるデータAの更新操作
WA3、サイト4によるデータB,Cの更新操作WB
2、WC1を行う。このサイト2による処理で、サイト
2による更新操作WA2、WB1は全てのサイト1〜4
で反映され、更新操作WA2、WB1に関するデータA
とデータBの一貫性が確保されたので、更新操作WA
2、WB1に対応するタプル(この時点で、キューの先
頭にあるタプル)を、更新内容キューから除去する。
らの要求に従い、サイト2によるデータA,Bの更新操
作WA2、WB1、サイト3によるデータAの更新操作
WA3、サイト4によるデータB,Cの更新操作WB
2、WC1を行う。このサイト2による処理で、サイト
2による更新操作WA2、WB1は全てのサイト1〜4
で反映され、更新操作WA2、WB1に関するデータA
とデータBの一貫性が確保されたので、更新操作WA
2、WB1に対応するタプル(この時点で、キューの先
頭にあるタプル)を、更新内容キューから除去する。
【0082】もしもこの時点で、当該サイト1のクライ
アントからトランザクションTR1につづく新たなトラ
ンザクションの要求があれば、そのトランザクションに
対応する処理を実行し、新たなタプルを更新内容キュー
の最後尾に追加することとなるが、ここでは、新たなト
ランザクションの要求は無かったものとする。
アントからトランザクションTR1につづく新たなトラ
ンザクションの要求があれば、そのトランザクションに
対応する処理を実行し、新たなタプルを更新内容キュー
の最後尾に追加することとなるが、ここでは、新たなト
ランザクションの要求は無かったものとする。
【0083】時刻t6:当該2タプルの除去を受けた更
新内容キューを収容したアクティブプログラムAP1
は、サイト2に対する2度目(2巡目)の移動を実行す
る。
新内容キューを収容したアクティブプログラムAP1
は、サイト2に対する2度目(2巡目)の移動を実行す
る。
【0084】サイト2はアクティブプログラムAP1か
らの要求に従い、サイト3によるデータAの更新操作W
A3、サイト4によるデータB,Cの更新操作WB2、
WC1を行う。これによりサイト3によるデータAの更
新操作WA3は全てのサイト1〜4で反映され、更新操
作WA3に関するデータAの一貫性が確保されたので、
更新操作WA3に対応するタプルを更新内容キューから
除去する。
らの要求に従い、サイト3によるデータAの更新操作W
A3、サイト4によるデータB,Cの更新操作WB2、
WC1を行う。これによりサイト3によるデータAの更
新操作WA3は全てのサイト1〜4で反映され、更新操
作WA3に関するデータAの一貫性が確保されたので、
更新操作WA3に対応するタプルを更新内容キューから
除去する。
【0085】もしもこの時点で、当該サイト2のクライ
アントからトランザクションTR2につづく新たなトラ
ンザクションの要求があれば、そのトランザクションに
対応する処理を実行し、新たなタプルを更新内容キュー
の最後尾に追加することとなるが、ここでも、新たなト
ランザクションの要求は無かったものとする。
アントからトランザクションTR2につづく新たなトラ
ンザクションの要求があれば、そのトランザクションに
対応する処理を実行し、新たなタプルを更新内容キュー
の最後尾に追加することとなるが、ここでも、新たなト
ランザクションの要求は無かったものとする。
【0086】時刻t7:アクティブプログラムAP1は
サイト3へ移動する。
サイト3へ移動する。
【0087】サイト3はアクティブプログラムAP1か
らの要求に従い、サイト4によるデータB,Cの更新操
作WB2、WC1を行う。これによりサイト4によるデ
ータB,Cの更新操作WB2、WC1は全てのサイト1
〜4で反映され、更新操作WB2、WC1に関するデー
タB,Cの一貫性が確保されたので、更新操作WB2、
WC1に対応するタプルを更新内容キューから除去す
る。
らの要求に従い、サイト4によるデータB,Cの更新操
作WB2、WC1を行う。これによりサイト4によるデ
ータB,Cの更新操作WB2、WC1は全てのサイト1
〜4で反映され、更新操作WB2、WC1に関するデー
タB,Cの一貫性が確保されたので、更新操作WB2、
WC1に対応するタプルを更新内容キューから除去す
る。
【0088】もしもこの時点で、当該サイト3のクライ
アントからトランザクションTR3につづく新たなトラ
ンザクションの要求があれば、そのトランザクションに
対応する処理を実行し、新たなタプルを更新内容キュー
の最後尾に追加することとなるが、ここでも、新たなト
ランザクションの要求は無かったものとする。
アントからトランザクションTR3につづく新たなトラ
ンザクションの要求があれば、そのトランザクションに
対応する処理を実行し、新たなタプルを更新内容キュー
の最後尾に追加することとなるが、ここでも、新たなト
ランザクションの要求は無かったものとする。
【0089】この場合、当該時刻t7までの処理で、ア
クティブプログラムAP1の更新内容キューは空になる
が、この後も、いつでも新たなトランザクションの要求
に対応できるように、アクティブプログラムAP1はサ
イト1〜4を巡回し続ける。
クティブプログラムAP1の更新内容キューは空になる
が、この後も、いつでも新たなトランザクションの要求
に対応できるように、アクティブプログラムAP1はサ
イト1〜4を巡回し続ける。
【0090】以上の実行手順により、更新に関するトラ
ンザクション実行の直列化順序は、サイト1→サイト2
→サイト3→サイト4のようになり、冗長に格納してい
る全データにつきデータベース(データ格納部11)の
一貫性が維持される。
ンザクション実行の直列化順序は、サイト1→サイト2
→サイト3→サイト4のようになり、冗長に格納してい
る全データにつきデータベース(データ格納部11)の
一貫性が維持される。
【0091】なお、以上の説明では、サイト間では1→
2→3→4…の順番でアクティブプログラムAP1を巡
回させたが、サイトの順番などは必要に応じて動的に変
更することが可能である。例えば、サイト2に障害が発
生した場合にはサイト1からサイト3へ送信し、以降
は、復旧するまでサイト2を除外してアクティブプログ
ラムAP1を巡回させることも可能である。
2→3→4…の順番でアクティブプログラムAP1を巡
回させたが、サイトの順番などは必要に応じて動的に変
更することが可能である。例えば、サイト2に障害が発
生した場合にはサイト1からサイト3へ送信し、以降
は、復旧するまでサイト2を除外してアクティブプログ
ラムAP1を巡回させることも可能である。
【0092】また、最初にアクティブプログラムAP1
の巡回を始めるサイトは、例えば、全サイトを管理する
管理センタを設け、当該管理センタからの指示で決定す
るようにしてもよい。
の巡回を始めるサイトは、例えば、全サイトを管理する
管理センタを設け、当該管理センタからの指示で決定す
るようにしてもよい。
【0093】なお、本実施形態では、同じデータをでき
るだけ多くのサイトで冗長に格納するようにすれば、い
くつかのサイトに障害が発生した場合でも、そのデータ
に対する操作を続行することができる可能性が高まる。
るだけ多くのサイトで冗長に格納するようにすれば、い
くつかのサイトに障害が発生した場合でも、そのデータ
に対する操作を続行することができる可能性が高まる。
【0094】(A−3)第1の実施形態の効果
以上のように本実施形態によれば、1つのサイトに対す
る更新要求と更新自体を並行して行なうことと、複数の
更新をまとめて行なうこと、更新自体に遠隔通信を必要
としないこと等により、通信量および更新に伴う遅延量
が削減できる。更新はアクティブプログラム内で直列化
するので、一貫性も保たれる。
る更新要求と更新自体を並行して行なうことと、複数の
更新をまとめて行なうこと、更新自体に遠隔通信を必要
としないこと等により、通信量および更新に伴う遅延量
が削減できる。更新はアクティブプログラム内で直列化
するので、一貫性も保たれる。
【0095】また本実施形態では、上述したプライマリ
コピー方式のように各データに対する特別なサイトを設
けず、一部のサイトに障害が発生した場合でも、分散デ
ータベース全体としては障害発生前とほぼ同等な性能を
維持することが可能で、頑健性の点でも優れている。
コピー方式のように各データに対する特別なサイトを設
けず、一部のサイトに障害が発生した場合でも、分散デ
ータベース全体としては障害発生前とほぼ同等な性能を
維持することが可能で、頑健性の点でも優れている。
【0096】さらに、本実施形態によれば、更新時にも
更新を始める1つのサイトに負荷が集中することがない
ので、負荷が軽減できる。
更新を始める1つのサイトに負荷が集中することがない
ので、負荷が軽減できる。
【0097】(B)第2の実施形態
以下では、本実施形態が第1の実施形態と相違する点に
ついてのみ説明する。第1の実施形態はトランザクショ
ンが終了するまでアクティブプログラムAP1を占有す
るので並列実行の操作単位を決めるロックの粒度が粗
く、一貫性は保存されるが、同時実行性は低い。
ついてのみ説明する。第1の実施形態はトランザクショ
ンが終了するまでアクティブプログラムAP1を占有す
るので並列実行の操作単位を決めるロックの粒度が粗
く、一貫性は保存されるが、同時実行性は低い。
【0098】本実施形態は、ロックの粒度をより細かく
して、同時実行性を高くすることによりスループットを
高めることを特徴とする。
して、同時実行性を高くすることによりスループットを
高めることを特徴とする。
【0099】(B−1)第2の実施形態の構成および動
作 本実施形態の分散データベース管理システムの主要部の
構成例は図1と同じである。
作 本実施形態の分散データベース管理システムの主要部の
構成例は図1と同じである。
【0100】ただし本実施形態で使用するアクティブプ
ログラムAP1は、図3に示した宛先リスト、図5に示
した更新内容キューに加えて、図8に示すロックリスト
を保持する点が相違する。
ログラムAP1は、図3に示した宛先リスト、図5に示
した更新内容キューに加えて、図8に示すロックリスト
を保持する点が相違する。
【0101】図8において、ロックリストは、ロックを
行ったサイト番号と現在ロックしているデータ項目から
成るリストである。アクティブプログラムAP1を保持
する巡回先のサイトは、ロックリストにないデータ項目
に対してのみロックをかけることができるが、アクティ
ブプログラムAP1を保持しないサイトはどのデータ項
目に対してもロックをかけることは許されない。
行ったサイト番号と現在ロックしているデータ項目から
成るリストである。アクティブプログラムAP1を保持
する巡回先のサイトは、ロックリストにないデータ項目
に対してのみロックをかけることができるが、アクティ
ブプログラムAP1を保持しないサイトはどのデータ項
目に対してもロックをかけることは許されない。
【0102】図示の状態では、サイト1がデータAをロ
ックし、サイト2がデータBとCをロックしている。た
だしロックは、本来サイト単位ではなくトランザクショ
ン単位に実行するものであるので、ここで行われるデー
タAのロックは、サイト1がクライアントから受け取っ
たあるデータ操作要求に対応するトランザクションのた
めのロックであり、データBとCのロックは、サイト2
がクライアントから受け取ったあるデータ操作要求に対
応するトランザクションのためのロックである。もちろ
ん、サイト2が行ったデータBのロックと、データCの
ロックが、別個のトランザクションのためのロックであ
ってもかまわない。
ックし、サイト2がデータBとCをロックしている。た
だしロックは、本来サイト単位ではなくトランザクショ
ン単位に実行するものであるので、ここで行われるデー
タAのロックは、サイト1がクライアントから受け取っ
たあるデータ操作要求に対応するトランザクションのた
めのロックであり、データBとCのロックは、サイト2
がクライアントから受け取ったあるデータ操作要求に対
応するトランザクションのためのロックである。もちろ
ん、サイト2が行ったデータBのロックと、データCの
ロックが、別個のトランザクションのためのロックであ
ってもかまわない。
【0103】次に、図9および図10を用いて、本実施
形態の動作について説明する。
形態の動作について説明する。
【0104】図9は、アクティブプログラムAP1の動
作を示すフローチャートであり、図10は、アクティブ
プログラムAP1受信時のDBMSの動作を示すフロー
チャートである。図9のフローチャートはP21〜P2
8の各ステップから構成されており、図10のフローチ
ャートはP31〜P38の各ステップから構成されてい
る。
作を示すフローチャートであり、図10は、アクティブ
プログラムAP1受信時のDBMSの動作を示すフロー
チャートである。図9のフローチャートはP21〜P2
8の各ステップから構成されており、図10のフローチ
ャートはP31〜P38の各ステップから構成されてい
る。
【0105】図9および図10において、アクティブプ
ログラムAP1内部で保持する宛先リストに従い、アク
ティブプログラムAP1が次のサイトヘ白ら移動する
(P21)。ただし、この移動は、アクティブプログラ
ム実行環境部12や通信制御部15の支援があって実現
されるものであることは当然である(P38)。
ログラムAP1内部で保持する宛先リストに従い、アク
ティブプログラムAP1が次のサイトヘ白ら移動する
(P21)。ただし、この移動は、アクティブプログラ
ム実行環境部12や通信制御部15の支援があって実現
されるものであることは当然である(P38)。
【0106】次に、アクティブプログラムAP1内部で
保持する更新内容キューを参照し、キューの先頭から順
に更新データを取り出し、移動先のサイトのDBMS1
0に対して該データの更新を要求する(P22)。この
要求は、アクティブプログラム実行環境部12が、受け
取ったアクティブプログラムAP1を自動的に起動する
ことによって実行される。
保持する更新内容キューを参照し、キューの先頭から順
に更新データを取り出し、移動先のサイトのDBMS1
0に対して該データの更新を要求する(P22)。この
要求は、アクティブプログラム実行環境部12が、受け
取ったアクティブプログラムAP1を自動的に起動する
ことによって実行される。
【0107】非存在エラーが発生した場合に擬似正常終
了として更新状態を1とし、すべてのサイトの更新状態
が1となったタプルは、更新内容キューから除去する点
や、これらの操作が更新内容キューに未処理のタプルが
なくなるまで繰り返される点などは、第1の実施形態と
同様である(P23、P33)。
了として更新状態を1とし、すべてのサイトの更新状態
が1となったタプルは、更新内容キューから除去する点
や、これらの操作が更新内容キューに未処理のタプルが
なくなるまで繰り返される点などは、第1の実施形態と
同様である(P23、P33)。
【0108】このあとステップP24、P34におい
て、アクティブプログラムAP1は、巡回先のサイトの
DBMS10に対して、データロック要求があるか問い
合わせ、あれば処理はステップP25,P35側へ分岐
し、なければ処理はステップP27、P37側へ分岐す
る。このときデータロックの必要性を判定し、必要な場
合にデータロック要求を出力するのは、当該DBMS1
0のトランザクション制御部14である。
て、アクティブプログラムAP1は、巡回先のサイトの
DBMS10に対して、データロック要求があるか問い
合わせ、あれば処理はステップP25,P35側へ分岐
し、なければ処理はステップP27、P37側へ分岐す
る。このときデータロックの必要性を判定し、必要な場
合にデータロック要求を出力するのは、当該DBMS1
0のトランザクション制御部14である。
【0109】ステップP25、P35では、アクティブ
プログラムAP1は、DBMS10からロックするデー
タの情報を受け取り、前記ロックリストに基づいてロッ
ク可能性を判定する。要求のあったデータ項目が既にロ
ックリストにあれば、ロック不可能と判定して、エラー
を返し、処理はステップP27、P37側へ分岐する
が、ロック可能である場合にはステップP26、P36
側へ分岐する。
プログラムAP1は、DBMS10からロックするデー
タの情報を受け取り、前記ロックリストに基づいてロッ
ク可能性を判定する。要求のあったデータ項目が既にロ
ックリストにあれば、ロック不可能と判定して、エラー
を返し、処理はステップP27、P37側へ分岐する
が、ロック可能である場合にはステップP26、P36
側へ分岐する。
【0110】ステップP26では、アクティブプログラ
ムAP1が、要求のあったデータ項目をロックリストに
サイト番号と共に追加し、ステップP36では、トラン
ザクション制御部14がそれまで対象データのロックが
得られないためにブロックしていたトランザクションの
演算操作を再開する。
ムAP1が、要求のあったデータ項目をロックリストに
サイト番号と共に追加し、ステップP36では、トラン
ザクション制御部14がそれまで対象データのロックが
得られないためにブロックしていたトランザクションの
演算操作を再開する。
【0111】ステップP26、P36につづいて、ステ
ップP25やP35がNo側に分岐した場合と同じ前記
ステップP37に進む。
ップP25やP35がNo側に分岐した場合と同じ前記
ステップP37に進む。
【0112】ステップP27、P37では、DBMS1
0から既にそのサイトでのみ更新が完了したデータのデ
ータ項目と更新内容を受け取り、更新内容キューの末尾
につなげる(P28)が、そのサイトでのみ更新が完了
したデータがなければ、ステップP37では何も行われ
ない。
0から既にそのサイトでのみ更新が完了したデータのデ
ータ項目と更新内容を受け取り、更新内容キューの末尾
につなげる(P28)が、そのサイトでのみ更新が完了
したデータがなければ、ステップP37では何も行われ
ない。
【0113】いずれにしても、当該ステップP27また
はP28、あるいはP37の次には、前記宛先リストに
したがって、アクティブプログラムAP1が次の巡回先
のサイトに移動することになる。そしてその巡回先のサ
イトでも、以上と同様な処理が繰り返される。
はP28、あるいはP37の次には、前記宛先リストに
したがって、アクティブプログラムAP1が次の巡回先
のサイトに移動することになる。そしてその巡回先のサ
イトでも、以上と同様な処理が繰り返される。
【0114】なお、各DBMSが自サイトのクライアン
トからのトランザクション処理を行なう際に、ロックを
用いる点や、あるサイトがクライアントから受け取った
データ操作要求に対応するトランザクションの処理が、
前記トランザクションTR1〜TR4などの各サイトに
おける処理と並行に実行される点なども、第1の実施形
態と同じである。
トからのトランザクション処理を行なう際に、ロックを
用いる点や、あるサイトがクライアントから受け取った
データ操作要求に対応するトランザクションの処理が、
前記トランザクションTR1〜TR4などの各サイトに
おける処理と並行に実行される点なども、第1の実施形
態と同じである。
【0115】次に、アクティブプログラムAP1はサイ
ト1→2→3→4→1…の順に巡回し、データA,B,
Cは全てのサイト1〜4が冗長に保持するものとする第
1の実施形態と同じ前提で、第1の実施形態と同じ次の
トランザクションTR1〜TR4を処理するものとす
る。
ト1→2→3→4→1…の順に巡回し、データA,B,
Cは全てのサイト1〜4が冗長に保持するものとする第
1の実施形態と同じ前提で、第1の実施形態と同じ次の
トランザクションTR1〜TR4を処理するものとす
る。
【0116】
サイト1:データAのロック。データAの更新。データAのアンロック。
【0117】
…TR1
サイト2:データA、Bのロック。データA,Bの更新。データA、Bの
アンロック。 …TR2
サイト3:データCの読み取り。データAのロック。データAの更新。デ
ータAのアンロック。…TR3
サイト4:データB、Cのロック。データB,Cの更新。データB、Cの
アンロック。 …TR4
サイト1がクライアントから受け取るトランザクション
TR1では、データAの更新操作WA1が行われ、サイ
ト2がクライアントから受け取るトランザクションTR
2では、データAの更新操作WA2とデータBの更新操
作WB1が行われ、サイト3がクライアントから受け取
るトランザクションTR3では、データCの読み取り操
作RC1と、データAの更新操作WA3が行われ、サイ
ト4がクライアントから受け取るトランザクションTR
4には、データBの更新操作WB2とデータCの更新操
作WC1が行われる。
TR1では、データAの更新操作WA1が行われ、サイ
ト2がクライアントから受け取るトランザクションTR
2では、データAの更新操作WA2とデータBの更新操
作WB1が行われ、サイト3がクライアントから受け取
るトランザクションTR3では、データCの読み取り操
作RC1と、データAの更新操作WA3が行われ、サイ
ト4がクライアントから受け取るトランザクションTR
4には、データBの更新操作WB2とデータCの更新操
作WC1が行われる。
【0118】この条件の下、最初の前記時刻t1でアク
ティブプログラムAP1はサイト1へ移動する。このと
き図7のロックリストは空であるものとすると、サイト
1が前記更新操作WA1を行うためにデータAのロック
をアクティブプログラムAP1に要求すると、成功する
ので、当該ロックに対応するトランザクションTR1を
開始する。
ティブプログラムAP1はサイト1へ移動する。このと
き図7のロックリストは空であるものとすると、サイト
1が前記更新操作WA1を行うためにデータAのロック
をアクティブプログラムAP1に要求すると、成功する
ので、当該ロックに対応するトランザクションTR1を
開始する。
【0119】このとき同時に、サイト3でもロックの不
要なデータCの読み取り操作RC1を行い得る点や、他
のサイトではロックが必要なため処理をブロックする点
なども、第1の実施形態と同様である。
要なデータCの読み取り操作RC1を行い得る点や、他
のサイトではロックが必要なため処理をブロックする点
なども、第1の実施形態と同様である。
【0120】また、時刻t2でアクティブプログラムA
P1がサイト2へ移動したとき、サイト2は前記更新操
作WA2とWB1を行うためにデータA,Bのロックを
アクティブプログラムAP1に要求するが、データAは
既にロックされているので、失敗通知を受信する。した
がってトランザクションTR2はブロックしたままであ
る。
P1がサイト2へ移動したとき、サイト2は前記更新操
作WA2とWB1を行うためにデータA,Bのロックを
アクティブプログラムAP1に要求するが、データAは
既にロックされているので、失敗通知を受信する。した
がってトランザクションTR2はブロックしたままであ
る。
【0121】このとき、データBだけをロックすること
は可能であるが、ロックは行わない。データAより先に
データBのロック要求に成功していても、データBのロ
ックはアボートする。ここで、データBのロックだけを
行うとサイト内、あるいはサイト間でデッドロックが発
生する可能性が高くなる等の不都合があるため、1つの
トランザクションの実行に必要な一連のロックは一括し
て獲得し、一括獲得できない場合には、一部だけの獲得
は行わないようにするのが効率的である。
は可能であるが、ロックは行わない。データAより先に
データBのロック要求に成功していても、データBのロ
ックはアボートする。ここで、データBのロックだけを
行うとサイト内、あるいはサイト間でデッドロックが発
生する可能性が高くなる等の不都合があるため、1つの
トランザクションの実行に必要な一連のロックは一括し
て獲得し、一括獲得できない場合には、一部だけの獲得
は行わないようにするのが効率的である。
【0122】時刻t3でアクティブプログラムAP1が
サイト3へ移動すると、サイト3は前記トランザクショ
ンTR3の更新操作WA3を行うためにデータAのロッ
クをアクティブプログラムAP1に要求するが、ロック
リスト上で、データAは既にロックされているため、失
敗通知を受信する。したがって当該トランザクションT
R3はブロックされたままである。
サイト3へ移動すると、サイト3は前記トランザクショ
ンTR3の更新操作WA3を行うためにデータAのロッ
クをアクティブプログラムAP1に要求するが、ロック
リスト上で、データAは既にロックされているため、失
敗通知を受信する。したがって当該トランザクションT
R3はブロックされたままである。
【0123】次に、時刻t4でアクティブプログラムA
P1がサイト4へ移動すると、サイト4はトランザクシ
ョンTR4の更新操作WB2、WC1を行うためにデー
タB,CのロックをアクティブプログラムAP1に要求
し、成功するので、当該トランザクションTR4を開始
する。
P1がサイト4へ移動すると、サイト4はトランザクシ
ョンTR4の更新操作WB2、WC1を行うためにデー
タB,CのロックをアクティブプログラムAP1に要求
し、成功するので、当該トランザクションTR4を開始
する。
【0124】このあと時刻t5でアクティブプログラム
AP1は再びサイト1へ移動する。ここからは、アクテ
ィブプログラムAP1の2巡回目の処理である。
AP1は再びサイト1へ移動する。ここからは、アクテ
ィブプログラムAP1の2巡回目の処理である。
【0125】サイト1はトランザクションTR1を完了
しており、ローカルでのデータAの更新を終えている。
しており、ローカルでのデータAの更新を終えている。
【0126】そこで、サイト1はデータAの更新内容を
アクティブプログラムAP1の更新内容キューに追加す
る。同時にデータAのロックをロックリストから除去す
る。なお、この時点で、前記トランザクションTR1以
外の新たなトランザクションがサイト1のクライアント
からのデータ操作要求に対応して生成され得るが、ここ
では、簡単のために、新たなトランザクションの生成は
行われないものとする。この点は、以降の巡回先のサイ
トでも同様である。
アクティブプログラムAP1の更新内容キューに追加す
る。同時にデータAのロックをロックリストから除去す
る。なお、この時点で、前記トランザクションTR1以
外の新たなトランザクションがサイト1のクライアント
からのデータ操作要求に対応して生成され得るが、ここ
では、簡単のために、新たなトランザクションの生成は
行われないものとする。この点は、以降の巡回先のサイ
トでも同様である。
【0127】時刻t6でアクティブプログラムAP1は
サイト2へ移動する。
サイト2へ移動する。
【0128】サイト2はアクティブプログラムAP1か
らの要求に従い、前記トランザクションTR1の更新操
作WA1に応じてデータAを更新した後、データA,B
のロックをアクティブプログラムAP1に要求するが、
データBは既にロックされているので、失敗通知を受信
する。データAのロックだけは成功するが、データBの
ロックに失敗したために、データAのロックはアボート
する。
らの要求に従い、前記トランザクションTR1の更新操
作WA1に応じてデータAを更新した後、データA,B
のロックをアクティブプログラムAP1に要求するが、
データBは既にロックされているので、失敗通知を受信
する。データAのロックだけは成功するが、データBの
ロックに失敗したために、データAのロックはアボート
する。
【0129】時刻t7でアクティブプログラムAP1は
サイト3へ移動する。
サイト3へ移動する。
【0130】サイト3はアクティブプログラムAP1か
らの要求に従い、前記トランザクションTRAの更新操
作WA1に応じてデータAを更新する。さらにサイト3
は、トランザクションTR3を実行するためデータAの
ロックをアクティブプログラムAP1に要求する。前回
とはロックリストの内容が変化しているため、今回は、
当該ロックに成功し、トランザクションTR3を開始す
る。
らの要求に従い、前記トランザクションTRAの更新操
作WA1に応じてデータAを更新する。さらにサイト3
は、トランザクションTR3を実行するためデータAの
ロックをアクティブプログラムAP1に要求する。前回
とはロックリストの内容が変化しているため、今回は、
当該ロックに成功し、トランザクションTR3を開始す
る。
【0131】次に、時刻t8でアクティブプログラムA
P1はサイト4へ移動する。
P1はサイト4へ移動する。
【0132】サイト4はアクティブプログラムAP1か
らの要求に従い、前記トランザクションTR1の更新操
作WA1に応じてデータAを更新する。この更新によ
り、サイト1によるデータAの更新操作WA1は全ての
サイトのデータ格納部に反映されたので、当該更新操作
WA1に対応するタプルは、更新内容キューから除去す
る。
らの要求に従い、前記トランザクションTR1の更新操
作WA1に応じてデータAを更新する。この更新によ
り、サイト1によるデータAの更新操作WA1は全ての
サイトのデータ格納部に反映されたので、当該更新操作
WA1に対応するタプルは、更新内容キューから除去す
る。
【0133】また、この時点ではすでに、サイト4はト
ランザクションTR4を完了しており、ローカルでのデ
ータB,Cの更新操作WB2、WC1を終えている。
ランザクションTR4を完了しており、ローカルでのデ
ータB,Cの更新操作WB2、WC1を終えている。
【0134】そこで、サイト4は更新操作WB2、WC
1の内容をアクティブプログラムAP1の更新内容キュ
ーに追加する。同時にデータB,Cのロックをロックリ
ストから除去する。
1の内容をアクティブプログラムAP1の更新内容キュ
ーに追加する。同時にデータB,Cのロックをロックリ
ストから除去する。
【0135】時刻t9でアクティブプログラムAP1が
サイト1に対する3回目の移動を行うと、サイト1はア
クティブプログラムAP1からの要求に従い、トランザ
クションTR4の更新操作WB2、WC1に応じて、デ
ータB,Cを更新する。ここからは、アクティブプログ
ラムAP1の3巡回目の処理である。
サイト1に対する3回目の移動を行うと、サイト1はア
クティブプログラムAP1からの要求に従い、トランザ
クションTR4の更新操作WB2、WC1に応じて、デ
ータB,Cを更新する。ここからは、アクティブプログ
ラムAP1の3巡回目の処理である。
【0136】次に、時刻t10でアクティブプログラム
AP1がサイト2へ移動すると、サイト2はアクティブ
プログラムAP1からの要求に従い、トランザクション
TR4の更新操作WB2、WC1に応じてデータB,C
を更新する。
AP1がサイト2へ移動すると、サイト2はアクティブ
プログラムAP1からの要求に従い、トランザクション
TR4の更新操作WB2、WC1に応じてデータB,C
を更新する。
【0137】さらにサイト2はトランザクションTR2
を実行するため、データA,Bのロックをアクティブプ
ログラムAP1に要求するが、データAは既にロックさ
れているので、失敗通知を受信する。データBのロック
は成功してもアボートする。
を実行するため、データA,Bのロックをアクティブプ
ログラムAP1に要求するが、データAは既にロックさ
れているので、失敗通知を受信する。データBのロック
は成功してもアボートする。
【0138】時刻t11でアクティブプログラムAP1
はサイト3へ移動する。
はサイト3へ移動する。
【0139】サイト3はアクティブプログラムAP1か
らの要求に従い、トランザクションTR4の更新操作W
B2、WC1に対応してデータB,Cを更新する。これ
により、サイト4による更新操作WB2、WC1の内容
は、全てのサイトで反映されたので、更新南容キューか
ら除去する。
らの要求に従い、トランザクションTR4の更新操作W
B2、WC1に対応してデータB,Cを更新する。これ
により、サイト4による更新操作WB2、WC1の内容
は、全てのサイトで反映されたので、更新南容キューか
ら除去する。
【0140】この時点ではすでに、サイト3は自身がク
ライアントから受け取ったデータ操作要求に対応するト
ランザクションTR3を完了しており、更新操作WA3
に対応したローカルでのデータAの更新を終えている。
ライアントから受け取ったデータ操作要求に対応するト
ランザクションTR3を完了しており、更新操作WA3
に対応したローカルでのデータAの更新を終えている。
【0141】そこで、サイト3は当該更新操作WA3に
対応したデータAの更新内容をアクティブプログラムA
P1の更新内容キューに追加する。同時にデータAのロ
ックをロックリストから除去する。
対応したデータAの更新内容をアクティブプログラムA
P1の更新内容キューに追加する。同時にデータAのロ
ックをロックリストから除去する。
【0142】処理t12でアクティブプログラムAP1
がサイト4へ移動すると、サイト4はアクティブプログ
ラムAP1からの要求に従い、トランザクションTR3
の更新操作WA3に応じてデータAを更新する。
がサイト4へ移動すると、サイト4はアクティブプログ
ラムAP1からの要求に従い、トランザクションTR3
の更新操作WA3に応じてデータAを更新する。
【0143】処理t13でアクティブプログラムAP1
がサイト1へ移動すと、4巡回目の処理がはじまる。
がサイト1へ移動すと、4巡回目の処理がはじまる。
【0144】サイト1はアクティブプログラムAP1か
らの要求に従い、トランザクションTR3の更新操作W
A3に応じてデータAを更新する。
らの要求に従い、トランザクションTR3の更新操作W
A3に応じてデータAを更新する。
【0145】なお、更新操作の内容がデータの単なる上
書きである場合には、同じデータAに対する更新操作
は、WA1、WA2、WA3のそれぞれを実行しなくて
も、データAの最後の値(ここではWA3の結果)を最
初の値に上書きするだけでデータの一貫性を確保するこ
とも可能であるが、一般的にはそうではないし、できる
だけ早期に一貫性を確保することも必要なので、各更新
操作ごとに、一貫性を確保する更新操作を行っている。
一例としては、データAの値が整数値で、WA1、WA
2、WA3がそれぞれインクリメントを示す場合など
は、最後の更新操作だけを行うと、最終的なデータの値
が異なるものとなってしまう。
書きである場合には、同じデータAに対する更新操作
は、WA1、WA2、WA3のそれぞれを実行しなくて
も、データAの最後の値(ここではWA3の結果)を最
初の値に上書きするだけでデータの一貫性を確保するこ
とも可能であるが、一般的にはそうではないし、できる
だけ早期に一貫性を確保することも必要なので、各更新
操作ごとに、一貫性を確保する更新操作を行っている。
一例としては、データAの値が整数値で、WA1、WA
2、WA3がそれぞれインクリメントを示す場合など
は、最後の更新操作だけを行うと、最終的なデータの値
が異なるものとなってしまう。
【0146】次に、時刻t14でアクティブプログラム
AP1がサイト2へ移動すると、サイト2はアクティブ
プログラムAP1からの要求に従い、トランザクション
TR3の更新操作WA3に応じてデータAを更新する。
これにより、当該更新操作WA3の内容は全てのサイト
に反映されたので、当該更新操作WA3に対応するタプ
ルが更新内容キューから除去される。このとき更新内容
キューは空になる。
AP1がサイト2へ移動すると、サイト2はアクティブ
プログラムAP1からの要求に従い、トランザクション
TR3の更新操作WA3に応じてデータAを更新する。
これにより、当該更新操作WA3の内容は全てのサイト
に反映されたので、当該更新操作WA3に対応するタプ
ルが更新内容キューから除去される。このとき更新内容
キューは空になる。
【0147】当該サイト2では、前記トランザクション
TR2が未処理のまま残っているため、このとき、サイ
ト2はトランザクションTR2の更新操作WA2とWB
1を行うためにデータA,Bのロックをアクティブプロ
グラムAP1に要求する。この要求は、両方とも成功
し、トランザクションTR2を開始する。
TR2が未処理のまま残っているため、このとき、サイ
ト2はトランザクションTR2の更新操作WA2とWB
1を行うためにデータA,Bのロックをアクティブプロ
グラムAP1に要求する。この要求は、両方とも成功
し、トランザクションTR2を開始する。
【0148】時刻t15でアクティブプログラムAP1
はサイト3へ移動するが、サイト3では何もしない。
はサイト3へ移動するが、サイト3では何もしない。
【0149】同様に、時刻t16でサイト4へ移動した
ときも、時刻t17でサイト1へ移動したときも、アク
ティブプログラムAP1は何も新たな処理を実行しな
い。
ときも、時刻t17でサイト1へ移動したときも、アク
ティブプログラムAP1は何も新たな処理を実行しな
い。
【0150】時刻t18でアクティブプログラムAP1
がサイト2へ移動すると、この時点までにサイト2では
前記トランザクションTR2を完了しており、更新操作
WA2、WB1に応じて、ローカルのデータA,Bの更
新を終えている。
がサイト2へ移動すると、この時点までにサイト2では
前記トランザクションTR2を完了しており、更新操作
WA2、WB1に応じて、ローカルのデータA,Bの更
新を終えている。
【0151】そこでサイト2は、更新操作WA2、WB
1に応じたデータA,Bの更新内容をアクティブプログ
ラムAP1の更新内容キューに追加する。同時にデータ
A,Bのロックをロックリストから除去する。
1に応じたデータA,Bの更新内容をアクティブプログ
ラムAP1の更新内容キューに追加する。同時にデータ
A,Bのロックをロックリストから除去する。
【0152】時刻t19でアクティブプログラムAP1
がサイト3へ移動すると、サイト3はアクティブプログ
ラムAP1からの要求に従い、トランザクションTR2
の更新操作WA2、WB1に応じてデータA,Bを更新
して、データA,Bの一貫性を確保する。
がサイト3へ移動すると、サイト3はアクティブプログ
ラムAP1からの要求に従い、トランザクションTR2
の更新操作WA2、WB1に応じてデータA,Bを更新
して、データA,Bの一貫性を確保する。
【0153】以降の各時刻でも同様に、時刻t20では
サイト4で、時刻t21ではサイト1で、アクティブプ
ログラムAP1は、トランザクションTR2の更新操作
WA2,WB1に応じてデータA,Bを更新して、デー
タの一貫性を確保する。
サイト4で、時刻t21ではサイト1で、アクティブプ
ログラムAP1は、トランザクションTR2の更新操作
WA2,WB1に応じてデータA,Bを更新して、デー
タの一貫性を確保する。
【0154】時刻t21におけるサイト1の更新で、ト
ランザクションTR2の更新操作WA2、WB1の内容
は全てのサイトで反映されたので、更新内容キューから
除去する。これでアクティブプログラムAP1の更新内
容キューは空になるが、この後もアクティブプログラム
AP1はサイト1〜4を巡回し続け、新たなトランザク
ションの発生に対応する。
ランザクションTR2の更新操作WA2、WB1の内容
は全てのサイトで反映されたので、更新内容キューから
除去する。これでアクティブプログラムAP1の更新内
容キューは空になるが、この後もアクティブプログラム
AP1はサイト1〜4を巡回し続け、新たなトランザク
ションの発生に対応する。
【0155】以上の実行手順により、更新に関するトラ
ンザクション実行の直列化順序は、サイト1→サイト4
→サイト3→サイト2のようになり、データベースの一
貫性が維持される。
ンザクション実行の直列化順序は、サイト1→サイト4
→サイト3→サイト2のようになり、データベースの一
貫性が維持される。
【0156】本実施形態の場合、第1の実施形態に比べ
て全てのトランザクションTR1〜TR4が終了し、更
新操作に応じたデータの一貫性が確保されるまでのアク
ティブプログラムAP1の巡回数は多くなるが、各サイ
トにおけるトランザクション処理とアクティブプログラ
ムAP1の巡回、データの更新は並行して処理されるの
で、同時実行性は高まり、スループットも高くなる。
て全てのトランザクションTR1〜TR4が終了し、更
新操作に応じたデータの一貫性が確保されるまでのアク
ティブプログラムAP1の巡回数は多くなるが、各サイ
トにおけるトランザクション処理とアクティブプログラ
ムAP1の巡回、データの更新は並行して処理されるの
で、同時実行性は高まり、スループットも高くなる。
【0157】(B−2)第2の実施形態の効果
以上のように本実施形態によれば、第1の実施形態の効
果とほぼ同等な効果を得ることができる。
果とほぼ同等な効果を得ることができる。
【0158】加えて、本実施形態では、ロックの粒度が
細かくなり同時実行性が向上するため、スループットを
高めることが可能である。
細かくなり同時実行性が向上するため、スループットを
高めることが可能である。
【0159】(C)他の実施形態
上記第1、第2の実施形態では、リレーショナルモデル
を例に説明したが、本発明は、リレーショナルモデル以
外にも適用可能である。例えば、階層型、ネットワーク
型、オブジェクト型などのデータベース管理システムを
用いてもよい。
を例に説明したが、本発明は、リレーショナルモデル以
外にも適用可能である。例えば、階層型、ネットワーク
型、オブジェクト型などのデータベース管理システムを
用いてもよい。
【0160】また、データベースの代わりに、ファイル
のリプリケーション(Replication)が分散しており、
更新要求をそれぞれのサイトで並行して受け付けるとき
にも、本発明が適用できる。
のリプリケーション(Replication)が分散しており、
更新要求をそれぞれのサイトで並行して受け付けるとき
にも、本発明が適用できる。
【0161】さらに、前記更新内容キューで、同じデー
タ項目に対して複数回の更新が存在するとき、最適化し
て1回で更新することも可能である。
タ項目に対して複数回の更新が存在するとき、最適化し
て1回で更新することも可能である。
【0162】なお、上記第2の実施形態で、ロックする
単位はデータ単位としたが、データ群単位、表単位、表
群単位でロックすることも容易に実現できる。
単位はデータ単位としたが、データ群単位、表単位、表
群単位でロックすることも容易に実現できる。
【0163】また、上記第1および第2の実施形態で
は、2相ロック方式を用いたが、読出し演算まで図5に
示す更新内容キューに格納し、1つのトランザクション
に含まれる全操作演算は連続して更新内容キューに入れ
るようにした場合には、各DBMS内における競合する
データに対するデータ操作のスケジュールは完全に固定
され当該更新内容キューによって厳密に規定されるた
め、いわゆる時刻印順化(timestamp algorithm)方式
に類似した方式となる。この場合、データ操作要求をク
ライアントから受け取ったサイトも含め、すべてのサイ
トは、当該スケジュールにしたがってトランザクション
を進めることになるから、ロックは不要であり、デッド
ロックは発生しない。
は、2相ロック方式を用いたが、読出し演算まで図5に
示す更新内容キューに格納し、1つのトランザクション
に含まれる全操作演算は連続して更新内容キューに入れ
るようにした場合には、各DBMS内における競合する
データに対するデータ操作のスケジュールは完全に固定
され当該更新内容キューによって厳密に規定されるた
め、いわゆる時刻印順化(timestamp algorithm)方式
に類似した方式となる。この場合、データ操作要求をク
ライアントから受け取ったサイトも含め、すべてのサイ
トは、当該スケジュールにしたがってトランザクション
を進めることになるから、ロックは不要であり、デッド
ロックは発生しない。
【0164】
【発明の効果】以上に説明したように、本発明によれ
ば、高い頑健性と、少ない通信量および遅延量を実現す
ることが可能である。
ば、高い頑健性と、少ない通信量および遅延量を実現す
ることが可能である。
【図1】第1および第2の実施形態にかかる同時実行制
御システムで使用するDBMSの主要部の構成例を示す
概略図である。
御システムで使用するDBMSの主要部の構成例を示す
概略図である。
【図2】サイトによって構成されるリングの全体構成例
を示す概略図である。
を示す概略図である。
【図3】サイトによって構成されるリングの動作説明図
である。
である。
【図4】第1および第2の実施形態で使用する宛先リス
トの構成例を示す概略図である。
トの構成例を示す概略図である。
【図5】第1および第2の実施形態で使用する更新内容
キューの構成例を示す概略図である。
キューの構成例を示す概略図である。
【図6】第1の実施形態のアクティブプログラムの動作
を示すフローチャートである。
を示すフローチャートである。
【図7】第1の実施形態のDBMSの動作を示すフロー
チャートである。
チャートである。
【図8】第2の実施形態で使用するロックリストの構成
例を示す概略図である。
例を示す概略図である。
【図9】第2の実施形態のアクティブプログラムの動作
を示すフローチャートである。
を示すフローチャートである。
【図10】第2の実施形態のDBMSの動作を示すフロ
ーチャートである。
ーチャートである。
1〜4…サイト、10…DBMS,11…データ格納
部、12…アクティブプログラム実行環境部、13…ア
クティブプログラム実行制御部、14…トランザクショ
ン制御部、15…通信制御部、16…クライアント。
部、12…アクティブプログラム実行環境部、13…ア
クティブプログラム実行制御部、14…トランザクショ
ン制御部、15…通信制御部、16…クライアント。
Claims (3)
- 【請求項1】 同じデータを複数のデータベースサーバ
に冗長に配置して構成される分散データベースの同時実
行制御システムにおいて、 各データベースサーバは、 競合演算操作の対象となるデータを指定するデータ指定
情報と、 当該競合演算操作の内容を記述した操作情報と、 各データベースサーバにおいて該当するデータ指定情報
に関する該当する操作情報の競合演算操作が既に完了し
ているか否かを指定する操作完了情報とを有するトーク
ン構造体を、データベースサーバ間で巡回させ、 受け取った当該トークン構造体の有するデータ指定情
報、操作情報、および操作完了情報に応じたデータベー
ス管理処理を、自動的に起動するアクティブ起動手段を
備えることを特徴とする分散データベースの同時実行制
御システム。 - 【請求項2】 請求項1の分散データベースの同時実行
制御システムにおいて、 前記トークン構造体は、 前記巡回を支援するため、各データベースサーバを指定
する少なくとも宛先アドレス情報を有することを特徴と
する分散データベースの同時実行制御システム。 - 【請求項3】 請求項1または2の分散データベースの
同時実行制御システムにおいて、 前記トークン構造体は、 各データベースサーバが既にロックしているデータを示
すロック済みデータ情報を有することを特徴とする分散
データベースの同時実行制御システム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001243396A JP2003058404A (ja) | 2001-08-10 | 2001-08-10 | 分散データベースの同時実行制御システム |
US10/214,707 US20030041227A1 (en) | 2001-08-10 | 2002-08-09 | Distributed database system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001243396A JP2003058404A (ja) | 2001-08-10 | 2001-08-10 | 分散データベースの同時実行制御システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2003058404A true JP2003058404A (ja) | 2003-02-28 |
Family
ID=19073499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001243396A Abandoned JP2003058404A (ja) | 2001-08-10 | 2001-08-10 | 分散データベースの同時実行制御システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20030041227A1 (ja) |
JP (1) | JP2003058404A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007200086A (ja) * | 2006-01-27 | 2007-08-09 | Nec Corp | データ複製システムおよびデータ複製方法 |
JP2010129088A (ja) * | 2008-11-25 | 2010-06-10 | Internatl Business Mach Corp <Ibm> | 分散データ・レプリカを利用する情報サービスのデータ保全性及びデータ精度を管理するための方法、装置及びコンピュータ・プログラム |
JP2010262590A (ja) * | 2009-05-11 | 2010-11-18 | Nec Corp | サーバ、サーバの制御方法、データ分散更新システム、及びデータ分散更新プログラム |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7849098B1 (en) * | 2004-02-06 | 2010-12-07 | Vmware, Inc. | Providing multiple concurrent access to a file system |
US8560747B1 (en) | 2007-02-16 | 2013-10-15 | Vmware, Inc. | Associating heartbeat data with access to shared resources of a computer system |
US10776206B1 (en) | 2004-02-06 | 2020-09-15 | Vmware, Inc. | Distributed transaction system |
US8700585B2 (en) * | 2004-02-06 | 2014-04-15 | Vmware, Inc. | Optimistic locking method and system for committing transactions on a file system |
US20110179082A1 (en) * | 2004-02-06 | 2011-07-21 | Vmware, Inc. | Managing concurrent file system accesses by multiple servers using locks |
US8543781B2 (en) | 2004-02-06 | 2013-09-24 | Vmware, Inc. | Hybrid locking using network and on-disk based schemes |
JP4041518B2 (ja) * | 2005-03-10 | 2008-01-30 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | サーバシステム、サーバ装置およびその方法 |
JP2009048443A (ja) * | 2007-08-21 | 2009-03-05 | Hitachi Ltd | 情報更新方法及び情報更新システム |
US9015126B2 (en) | 2010-05-22 | 2015-04-21 | Nokia Corporation | Method and apparatus for eventually consistent delete in a distributed data store |
EP2824576B1 (en) | 2012-03-08 | 2018-11-21 | Murakumo Corporation | Method for managing database |
US10803015B2 (en) | 2013-08-06 | 2020-10-13 | Walmart Apollo, Llc | Caching system and method |
US10419572B2 (en) | 2013-08-06 | 2019-09-17 | Walmart Apollo, Llc | Caching system and method |
US9336265B2 (en) * | 2013-08-06 | 2016-05-10 | Wal-Mart Stores, Inc. | System and method for processing web service transactions using timestamp data |
US10116762B2 (en) | 2013-08-06 | 2018-10-30 | Walmart Apollo, Llc | System and method for storing and processing web service requests |
US10025873B2 (en) | 2014-04-18 | 2018-07-17 | Walmart Apollo, Llc | System and method for storing and processing database requests |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5893911A (en) * | 1996-04-17 | 1999-04-13 | Neon Software, Inc. | Method for defining and applying rules for message distribution for transaction processing in a distributed application |
-
2001
- 2001-08-10 JP JP2001243396A patent/JP2003058404A/ja not_active Abandoned
-
2002
- 2002-08-09 US US10/214,707 patent/US20030041227A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007200086A (ja) * | 2006-01-27 | 2007-08-09 | Nec Corp | データ複製システムおよびデータ複製方法 |
JP2010129088A (ja) * | 2008-11-25 | 2010-06-10 | Internatl Business Mach Corp <Ibm> | 分散データ・レプリカを利用する情報サービスのデータ保全性及びデータ精度を管理するための方法、装置及びコンピュータ・プログラム |
JP2010262590A (ja) * | 2009-05-11 | 2010-11-18 | Nec Corp | サーバ、サーバの制御方法、データ分散更新システム、及びデータ分散更新プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20030041227A1 (en) | 2003-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2003058404A (ja) | 分散データベースの同時実行制御システム | |
CN111338766B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
Levandoski et al. | Deuteronomy: Transaction support for cloud data | |
US10503699B2 (en) | Metadata synchronization in a distrubuted database | |
Kemme et al. | Using optimistic atomic broadcast in transaction processing systems | |
US8170997B2 (en) | Unbundled storage transaction services | |
US5452445A (en) | Two-pass multi-version read consistency | |
US6012059A (en) | Method and apparatus for replicated transaction consistency | |
Rahm | Empirical performance evaluation of concurrency and coherency control protocols for database sharing systems | |
EP1840766B1 (en) | Systems and methods for a distributed in-memory database and distributed cache | |
US20130110767A1 (en) | Online Transaction Processing | |
US7996360B2 (en) | Coordinating updates to replicated data | |
Kemme et al. | Database replication: a tale of research across communities | |
EP1840768A2 (en) | Systems and method for a distributed in-memory database | |
Thomasian | Distributed optimistic concurrency control methods for high-performance transaction processing | |
KR101296778B1 (ko) | NoSQL 데이터베이스를 위한 결과적 트랜잭션 처리 방법 | |
JP2004531005A (ja) | データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化 | |
WO2022170979A1 (zh) | 日志执行方法、装置、计算机设备及存储介质 | |
Lu et al. | {NCC}: Natural Concurrency Control for Strictly Serializable Datastores by Avoiding the {Timestamp-Inversion} Pitfall | |
Thomasian et al. | A new distributed optimistic concurrency control method and a comparison of its performance with two-phase locking | |
Komiya et al. | Mobile agent model for transaction processing on distributed objects | |
CN113448976B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
Lai et al. | Knock out 2pc with practicality intact: a high-performance and general distributed transaction protocol | |
CN115495495A (zh) | 事务处理方法、分布式数据库系统、集群及介质 | |
Fan et al. | ALOHA-KV: high performance read-only and write-only distributed transactions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060731 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20070702 |